From: Pascale Noyret Date: Tue, 10 Jan 2012 14:25:12 +0000 (+0000) Subject: Modif V6_4_° X-Git-Tag: AdaoV0~18 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=cdd358f4041f957701ac10d86766a85baaef4f78;p=modules%2Feficas.git Modif V6_4_° --- diff --git a/Accas/A_ASSD.py b/Accas/A_ASSD.py index 9182b069..1e8cade5 100644 --- a/Accas/A_ASSD.py +++ b/Accas/A_ASSD.py @@ -28,10 +28,10 @@ from Noyau import N_GEOM from Noyau import N_FONCTION from Noyau import N_CO -# On ajoute la classe ASSD dans l'héritage multiple pour recréer -# une hiérarchie d'héritage identique à celle de Noyau -# pour faire en sorte que isinstance(o,ASSD) marche encore après -# dérivation +# On ajoute la classe ASSD dans l'heritage multiple pour recreer +# une hierarchie d'heritage identique a celle de Noyau +# pour faire en sorte que isinstance(o,ASSD) marche encore apres +# derivation class ASSD(I_ASSD.ASSD,N_ASSD.ASSD):pass #class LASSD(I_LASSD.LASSD,N_LASSD.LASSD):pass diff --git a/Accas/A_MEME_NOMBRE.py b/Accas/A_MEME_NOMBRE.py new file mode 100644 index 00000000..9574f3a2 --- /dev/null +++ b/Accas/A_MEME_NOMBRE.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +from Noyau import N_REGLE +from Validation import V_MEME_NOMBRE +from Ihm import I_REGLE + +class MEME_NOMBRE(V_MEME_NOMBRE.MEME_NOMBRE,I_REGLE.REGLE,N_REGLE.REGLE): + """ + La classe utilise l'initialiseur de REGLE. Il n'est pas + nécessaire d'expliciter son initialiseur car + V_MEME_NOMBRE.MEME_NOMBRE n'en a pas + """ diff --git a/Accas/__init__.py b/Accas/__init__.py index 4897f586..c26ee293 100644 --- a/Accas/__init__.py +++ b/Accas/__init__.py @@ -56,8 +56,9 @@ from A_MCLIST import MCList from A_MCBLOC import MCBLOC from A_MCSIMP import MCSIMP -# Les règles +# Les regles from A_AU_MOINS_UN import AU_MOINS_UN +from A_MEME_NOMBRE import MEME_NOMBRE from A_AU_PLUS_UN import AU_PLUS_UN from A_UN_PARMI import UN_PARMI from A_PRESENT_PRESENT import PRESENT_PRESENT @@ -79,8 +80,11 @@ from Noyau.N__F import _F from Noyau.N_Exception import AsException from Noyau.N_utils import AsType +from Noyau.N_utils import AsType +from Noyau.N_OPS import OPS, EMPTY_OPS +from Noyau.N_ASSD import not_checked -from A_VALIDATOR import OrVal,AndVal +from A_VALIDATOR import OrVal,AndVal,OnlyStr from A_VALIDATOR import OrdList,NoRepeat,LongStr,Compulsory from A_VALIDATOR import RangeVal, EnumVal, TypeVal, PairVal from A_VALIDATOR import CardVal, InstanceVal diff --git a/Accas/__init__NonAster.py b/Accas/__init__NonAster.py index 324ed712..d1c6f695 100644 --- a/Accas/__init__NonAster.py +++ b/Accas/__init__NonAster.py @@ -58,6 +58,7 @@ from A_MCSIMP import MCSIMP # Les règles from A_AU_MOINS_UN import AU_MOINS_UN +from A_MEME_NOMBRE import MEME_NOMBRE from A_AU_PLUS_UN import AU_PLUS_UN from A_UN_PARMI import UN_PARMI from A_PRESENT_PRESENT import PRESENT_PRESENT @@ -80,7 +81,7 @@ from Noyau.N__F import _F from Noyau.N_Exception import AsException from Noyau.N_utils import AsType -from A_VALIDATOR import OrVal,AndVal +from A_VALIDATOR import OrVal,AndVal,OnlyStr from A_VALIDATOR import OrdList,NoRepeat,LongStr,Compulsory from A_VALIDATOR import RangeVal, EnumVal, TypeVal, PairVal from A_VALIDATOR import CardVal, InstanceVal diff --git a/Aide/eficas_ASTER.adp b/Aide/eficas_ASTER.adp index e12922ce..f0444c59 100644 --- a/Aide/eficas_ASTER.adp +++ b/Aide/eficas_ASTER.adp @@ -1,5 +1,10 @@ - - + + Eficas Pour Aster + + + - + + diff --git a/Aster/Cata/cataSTA10/Cata_Utils/__init__.py b/Aster/Cata/cataSTA10/Cata_Utils/__init__.py new file mode 100644 index 00000000..17af639e --- /dev/null +++ b/Aster/Cata/cataSTA10/Cata_Utils/__init__.py @@ -0,0 +1,26 @@ +#@ MODIF __init__ Cata_Utils DATE 16/11/2009 AUTEUR COURTOIS M.COURTOIS +# -*- 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. +# ====================================================================== + +# +# Ce package ne doit contenir que les modules nécessaires au catalogue +# qui ne peuvent pas être dans Macro ou SD. +# Exemple : t_fonction permettant d'évaluer les fonctions dans le catalogue materiau. +# + diff --git a/Aster/Cata/cataSTA10/Cata_Utils/t_fonction.py b/Aster/Cata/cataSTA10/Cata_Utils/t_fonction.py new file mode 100644 index 00000000..82f41c3b --- /dev/null +++ b/Aster/Cata/cataSTA10/Cata_Utils/t_fonction.py @@ -0,0 +1,780 @@ +#@ MODIF t_fonction Cata_Utils DATE 22/03/2011 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +import copy +import types +from math import exp, log + +import numpy as NP +import numpy.fft as FFT + +from Noyau.N_types import is_float, is_float_or_int, is_complex, is_number, is_enum + + +# ----------------------------------------------------------------------------- +class FonctionError(Exception): pass + +class ParametreError(FonctionError): pass # probleme de NOM_PARA +class InterpolationError(FonctionError): pass +class ProlongementError(FonctionError): pass + +# ----------------------------------------------------------------------------- +def interp(typ_i,val,x1,x2,y1,y2,tol=1.e-6) : + """Interpolation linéaire/logarithmique entre un couple de valeurs + """ + if abs(val-x1) < tol : return y1 + if abs(val-x2) < tol : return y2 + if typ_i[0] == 'LOG' and (x1 <= 0. or x2 <= 0.): + raise InterpolationError("Interpolation LOG invalide sur l'intervalle [%g, %g]." % (x1, x2)) + if typ_i[1] == 'LOG' and (y1 <= 0. or y2 <= 0.): + raise InterpolationError("Interpolation LOG invalide sur les ordonnées [%g, %g]." % (y1, y2)) + if typ_i==['LIN','LIN']: return y1+(y2-y1)*(val-x1)/(x2-x1) + if typ_i==['LIN','LOG']: return exp(log(y1)+(val-x1)*(log(y2)-log(y1))/(x2-x1)) + if typ_i==['LOG','LOG']: return exp(log(y1)+(log(val)-log(x1))*(log(y2)-log(y1))/(log(x2)-log(x1))) + if typ_i==['LOG','LIN']: return y1+(log(val)-log(x1))*(y2-y1)/(log(x2)-log(x1)) + raise InterpolationError, "abscisse = %g, intervalle = [%g, %g]" % (val, x1, x2) + + +def is_ordo(liste): + if len(liste) > 1: + val = NP.array(liste, float) + return min(val[1:len(val)] - val[0:len(val)-1]) >= 0. + else: return True + +# ----------------------------------------------------------------------------- +class t_fonction : + """Classe pour fonctions réelles, équivalent au type aster = fonction_sdaster + """ + def __init__(self,vale_x,vale_y,para,nom='') : + """Création d'un objet fonction + - vale_x et vale_y sont des listes de réels de meme longueur + - para est un dictionnaire contenant les entrées PROL_DROITE, PROL_GAUCHE et INTERPOL (cf sd ASTER) + """ + self.nom=nom + pk=para.keys() + pk.sort() + if pk!=['INTERPOL','NOM_PARA','NOM_RESU','PROL_DROITE','PROL_GAUCHE'] : + raise FonctionError, 'fonction : parametres incorrects' + if para['INTERPOL'] not in [['NON','NON'],['LIN','LIN'],['LIN','LOG'],['LOG','LOG'],['LOG','LIN'],] : + raise FonctionError, 'fonction : parametre INTERPOL incorrect : %s' % para['INTERPOL'] + if para['PROL_DROITE'] not in ['EXCLU','CONSTANT','LINEAIRE'] : + raise FonctionError, 'fonction : parametre PROL_DROITE incorrect : %s' % para['PROL_DROITE'] + if para['PROL_GAUCHE'] not in ['EXCLU','CONSTANT','LINEAIRE'] : + raise FonctionError, 'fonction : parametre PROL_GAUCHE incorrect : %s' % para['PROL_GAUCHE'] + self.vale_x = NP.array(vale_x) + self.vale_y = NP.array(vale_y) + self.para = para + if len(self.vale_x)!=len(self.vale_y) : + raise FonctionError, 'fonction : longueur abscisse <> longueur ordonnées' + if not is_ordo(self.vale_x) : + raise FonctionError, 'fonction : abscisses non strictement croissantes' + + def __add__(self,other) : + """addition avec une autre fonction ou un nombre, par surcharge de l'opérateur + + """ + if isinstance(other,t_fonction): + para=copy.copy(self.para) + vale_x,para['PROL_GAUCHE'],para['PROL_DROITE']=self.homo_support(other) + fff=self.evalfonc(vale_x) + ggg=other.evalfonc(vale_x) + if isinstance(self,t_fonction_c): return t_fonction_c(vale_x,fff.vale_y+ggg.vale_y,para) + else : return t_fonction(vale_x,fff.vale_y+ggg.vale_y,para) + elif is_number(other): + if isinstance(self,t_fonction_c): return t_fonction_c(self.vale_x,self.vale_y+other,self.para) + else : return t_fonction(self.vale_x,self.vale_y+other,self.para) + else: raise FonctionError, 'fonctions : erreur de type dans __add__ : %s %s' % (self, type(other)) + + def __mul__(self,other) : + """multiplication avec une autre fonction ou un nombre, par surcharge de l'opérateur * + """ + if isinstance(other,t_fonction): + para=copy.copy(self.para) + vale_x,para['PROL_GAUCHE'],para['PROL_DROITE']=self.homo_support(other) + fff=self.evalfonc(vale_x) + ggg=other.evalfonc(vale_x) + if isinstance(self,t_fonction_c): return t_fonction_c(vale_x,fff.vale_y*ggg.vale_y,para) + else : return t_fonction(vale_x,fff.vale_y*ggg.vale_y,para) + elif is_float_or_int(other): + return t_fonction(self.vale_x,self.vale_y*other,self.para) + elif is_complex(other): + return t_fonction_c(self.vale_x,self.vale_y*other,self.para) + else: raise FonctionError, 'fonctions : erreur de type dans __mul__%s %s' % (self, type(other)) + + def __repr__(self) : + """affichage de la fonction en double colonne + """ + texte=[] + for i in range(len(self.vale_x)) : + texte.append('%f %f' % (self.vale_x[i],self.vale_y[i])) + return '\n'.join(texte) + + def __getitem__(self,other) : + """composition de deux fonction F[G]=FoG=F(G(x)) + """ + para=copy.copy(self.para) + if other.para['NOM_RESU'] != self.para['NOM_PARA'] : + raise ParametreError,'''composition de fonctions : NOM_RESU1 et NOM_PARA2 incohérents ''' + para['NOM_PARA']==other.para['NOM_PARA'] + return t_fonction(other.vale_x,map(self,other.vale_y),para) + + def __call__(self,val,tol=1.e-6): + """méthode pour évaluer f(x) + - tolérance, par défaut 1.e-6 en relatif sur la longueur de l'intervalle + - adjacent, pour capter les erreurs d'arrondi en cas de prolongement exclu + """ + i=NP.searchsorted(self.vale_x, val) + n=len(self.vale_x) + if n == 1: + # Utilisation abusive de la tolérance relative mais ce cas est particulier + if (val-self.vale_x[0]) < tol: + return self.vale_y[0] + elif val-self.vale_x[0] > 0: + if (self.para['PROL_DROITE']=='CONSTANT') or (self.para['PROL_DROITE']=='LINEAIRE'): + return self.vale_y[0] + else: raise ProlongementError, 'fonction évaluée hors du domaine de définition' + elif val-self.vale_x[0] < 0: + if (self.para['PROL_GAUCHE']=='CONSTANT') or (self.para['PROL_GAUCHE']=='LINEAIRE'): + return self.vale_y[0] + else: raise ProlongementError, 'fonction évaluée hors du domaine de définition' + + if i==0 : + if self.para['PROL_GAUCHE']=='EXCLU' : + eps_g=(val-self.vale_x[0] )/(self.vale_x[1] -self.vale_x[0]) + if abs(eps_g)<=tol : return self.vale_y[0] + else : raise ProlongementError, 'fonction évaluée hors du domaine de définition' + else : + if self.para['PROL_GAUCHE']=='CONSTANT' : return self.vale_y[0] + if self.para['PROL_GAUCHE']=='LINEAIRE' : return interp(self.para['INTERPOL'],val,self.vale_x[0], + self.vale_x[1], + self.vale_y[0], + self.vale_y[1]) + elif i==n : + if self.para['PROL_DROITE']=='EXCLU' : + eps_d=(val-self.vale_x[-1])/(self.vale_x[-1]-self.vale_x[-2]) + if abs(eps_d)<=tol : return self.vale_y[-1] + else : raise ProlongementError, 'fonction évaluée hors du domaine de définition' + else : + if self.para['PROL_DROITE']=='CONSTANT' : return self.vale_y[-1] + if self.para['PROL_DROITE']=='LINEAIRE' : return interp(self.para['INTERPOL'],val,self.vale_x[-1], + self.vale_x[-2], + self.vale_y[-1], + self.vale_y[-2]) + else : + return interp(self.para['INTERPOL'],val,self.vale_x[i-1], + self.vale_x[i], + self.vale_y[i-1], + self.vale_y[i]) + + def homo_support(self,other) : + """Renvoie le support d'abscisses homogénéisé entre self et other + i.e. si prolongement exclu, on retient plus grand min ou plus petit max, selon + si prolongement autorisé, on conserve les abscisses d'une fonction, extrapolantes + sur l'autre. + Pour les points intermédiaires : union et tri des valeurs des vale_x réunis. + """ + if other.vale_x[0]>self.vale_x[0]: + if other.para['PROL_GAUCHE']!='EXCLU' : f_g=self + else : f_g=other + else : + if self.para['PROL_GAUCHE'] !='EXCLU' : f_g=other + else : f_g=self + val_min =f_g.vale_x[0] + prol_gauche=f_g.para['PROL_GAUCHE'] + if self.vale_x[-1]>other.vale_x[-1]: + if other.para['PROL_DROITE']!='EXCLU' : f_d=self + else : f_d=other + else : + if self.para['PROL_DROITE'] !='EXCLU' : f_d=other + else : f_d=self + val_max =f_d.vale_x[-1] + prol_droite=f_d.para['PROL_DROITE'] + vale_x=NP.concatenate((self.vale_x,other.vale_x)) + vale_x=NP.clip(vale_x,val_min,val_max) + vale_x=NP.sort(list(set(vale_x))) + return vale_x, prol_gauche, prol_droite + + def cut(self,rinf,rsup,prec,crit='RELATIF',nom='') : + """Renvoie la fonction self dont on a 'coupé' les extrémités en x=rinf et x=rsup + pour la recherche de rinf et rsup dans la liste d'abscisses : + prec=precision crit='absolu' ou 'relatif' + """ + para=copy.copy(self.para) + para['PROL_GAUCHE']='EXCLU' + para['PROL_DROITE']='EXCLU' + if crit=='ABSOLU' : rinf_tab=NP.greater(abs(self.vale_x-rinf),prec) + elif crit=='RELATIF': rinf_tab=NP.greater(abs(self.vale_x-rinf),prec*rinf) + else : raise FonctionError, 'fonction : cut : critère absolu ou relatif' + if crit=='ABSOLU' : rsup_tab=NP.greater(abs(self.vale_x-rsup),prec) + elif crit=='RELATIF': rsup_tab=NP.greater(abs(self.vale_x-rsup),prec*rsup) + else : raise FonctionError, 'fonction : cut : critère absolu ou relatif' + if NP.alltrue(rinf_tab) : i=NP.searchsorted(self.vale_x,rinf) + else : i=rinf_tab.tolist().index(0)+1 + if NP.alltrue(rsup_tab) : j=NP.searchsorted(self.vale_x,rsup) + else : j=rsup_tab.tolist().index(0) + vale_x=NP.array([rinf,]+self.vale_x.tolist()[i:j]+[rsup,]) + vale_y=NP.array([self(rinf),]+self.vale_y.tolist()[i:j]+[self(rsup),]) + return t_fonction(vale_x,vale_y,para,nom) + + def cat(self,other,surcharge) : + """renvoie une fonction concaténée avec une autre, avec règles de surcharge + """ + para=copy.copy(self.para) + if self.para['INTERPOL']!=other.para['INTERPOL'] : raise FonctionError, 'concaténation de fonctions à interpolations différentes' + if NP.min(self.vale_x)1.e-2 : + raise FonctionError, 'fonction réelle : FFT : la fonction doit etre à pas constant' + n = get_len_puis2(self.vale_x) + if methode=='TRONCATURE' : + vale_y=self.vale_y[:2**n] + elif methode=='PROL_ZERO' : + vale_y=self.vale_y + if len(self.vale_y) > 2**n: + vale_y=NP.array(self.vale_y) + vale_y = NP.concatenate( (vale_y, NP.zeros(2**(n+1)-len(self.vale_x))) ) + elif methode=='COMPLET' : + vale_y=self.vale_y + vect=FFT.fft(vale_y) + pasfreq =1./(pas*(len(vect))) + vale_x =[pasfreq*i for i in range(len(vect))] + vale_y =vect + return t_fonction_c(vale_x,vale_y,para) + + +# ----------------------------------------------------------------------------- +class t_fonction_c(t_fonction) : + """Classe pour fonctions complexes, équivalent au type aster = fonction_c + """ + def __add__(self,other) : + """addition avec une autre fonction ou un nombre, par surcharge de l'opérateur + + """ + if isinstance(other,t_fonction_c): + para=copy.copy(self.para) + vale_x, para['PROL_GAUCHE'], para['PROL_DROITE'] = self.homo_support(other) + fff = self.evalfonc(vale_x) + ggg = other.evalfonc(vale_x) + res = t_fonction_c(vale_x, fff.vale_y + ggg.vale_y, para) + elif is_number(other): + res = t_fonction_c(self.vale_x, self.vale_y + other, self.para) + else: + raise FonctionError, 'fonctions : erreur de type dans __add__ : %s %s' % (self, type(other)) + return res + + def __mul__(self,other) : + """multiplication avec une autre fonction ou un nombre, par surcharge de l'opérateur * + """ + if isinstance(other,t_fonction_c): + para=copy.copy(self.para) + vale_x, para['PROL_GAUCHE'], para['PROL_DROITE'] = self.homo_support(other) + fff = self.evalfonc(vale_x) + ggg = other.evalfonc(vale_x) + res = t_fonction_c(vale_x, fff.vale_y * ggg.vale_y, self.para) + elif is_number(other): + res = t_fonction_c(self.vale_x, self.vale_y*other, self.para) + else: + raise FonctionError, 'fonctions : erreur de type dans __mul__%s %s' % (self, type(other)) + return res + + def tabul(self) : + """mise en forme de la fonction selon un vecteur unique (x1,yr1,yi1,x2,yr2,yr2,...) + """ + __tab=NP.array([self.vale_x,self.vale_y.real,self.vale_y.imag]) + return NP.ravel(NP.transpose(__tab)).tolist() + + def __repr__(self) : + """affichage de la fonction en double colonne + """ + texte=[] + for i in range(len(self.vale_x)) : + texte.append('%f %f + %f .j' % (self.vale_x[i],self.vale_y[i].real,self.vale_y[i].imag)) + return '\n'.join(texte) + + def fft(self,methode,syme) : + """renvoie la transformée de Fourier rapide FFT (sens inverse) + + Dans le cas syme == 'NON', on choisit de renvoyer + un vecteur de longueur 2N, ou N est la longueur du vecteur F de depart, + en faisant l'approximation que pour la vraie FFT, F(N+1) est fonction + de F(N) et F(N-1). + On effectue un prolongement a l'ordre 2 par continuite pour simplifier + l'analyse des pas de temps en post traitement + """ + para=copy.copy(self.para) + para['NOM_PARA']='INST' + if self.para['NOM_PARA']!='FREQ' : + raise ParametreError, 'fonction complexe : FFT : NOM_PARA=FREQ pour une transformée directe' + pas = self.vale_x[1]-self.vale_x[0] + for i in range(1,len(self.vale_x)) : + ecart = NP.abs(((self.vale_x[i]-self.vale_x[i-1])-pas)/pas) + if ecart>1.e-3 : + raise FonctionError, 'fonction complexe : FFT : la fonction doit etre à pas constant' + n = get_len_puis2(self.vale_x) + if syme=='OUI' : + vale_fonc=self.vale_y + else : + if methode=='PROL_ZERO' : + fonc_temp=self.vale_y + if len(self.vale_y) > 2**n: + fonc_temp = NP.concatenate( (self.vale_y, NP.zeros(2**(n+1)-len(self.vale_x))) ) + elif methode=='TRONCATURE' : + fonc_temp=self.vale_y[:2**n] + elif methode=='COMPLET' : + fonc_temp=self.vale_y + part1=fonc_temp.tolist() + + if NP.remainder(len(part1),2) == 0 : + # Si le nombre de point du spectre est pair, + # on prolonge en interpolant les 3 dernier points par un polynome de + # degre 2, en imposant une tangente horizontale au dernier point (celui + # dont on cherche l'ordonnee : + # on pose Y=a.w^2+b.w+C , ou Y est la partie reelle de la FFT, et + # w la frequence. On connait Y(N-1), Y(N), et on impose dY/dw(N+1)=0 + # pour la symetrie. On identifie a, b et c, pour calculer Y(N+1) + middle=[]; + middle.append((4*part1[-1].real-part1[len(part1)-2].real)/3); + part2=NP.conjugate(fonc_temp[1:len(part1)]) + part2=part2.tolist(); + part2.reverse(); + vale_fonc=NP.array(part1+middle+part2) + else : + # Si le dernier point est effectivement reel, on reconstruit theoriquement + if abs(part1[-1].imag) < abs(part1[-1].real*1e-6) : + part1[-1]=part1[-1].real + else : + # Sinon, on approxime comme dans le cas ou N est pair + part1[-1]=(4*part1[len(part1)-2].real-part1[len(part1)-3].real)/3 + part2=NP.conjugate(fonc_temp[1:len(part1)-1]) + part2=part2.tolist(); + part2.reverse(); + vale_fonc=NP.array(part1+part2) + + vect=FFT.ifft(vale_fonc) + vect=vect.real + pasfreq =1./(pas*(len(vect))) + vale_x =[pasfreq*i for i in range(len(vect))] + vale_y =vect + return t_fonction(vale_x,vale_y,para) + +# ----------------------------------------------------------------------------- +class t_nappe : + """Classe pour nappes, équivalent au type aster = nappe_sdaster + """ + def __init__(self,vale_para,l_fonc,para,nom='') : + """Création d'un objet nappe + - vale_para est la liste de valeur des parametres (mot clé PARA dans DEFI_NAPPE) + - para est un dictionnaire contenant les entrées PROL_DROITE, PROL_GAUCHE et INTERPOL (cf sd ASTER) + - l_fonc est la liste des fonctions, de cardinal égal à celui de vale_para + """ + self.nom = nom + pk=para.keys() + pk.sort() + if pk!=['INTERPOL','NOM_PARA','NOM_PARA_FONC','NOM_RESU','PROL_DROITE','PROL_GAUCHE'] : + raise FonctionError, 'nappe : parametres incorrects' + if para['INTERPOL'] not in ['NON', 'LIN', 'LOG', ['NON','NON'],['LIN','LIN'], + ['LIN','LOG'],['LOG','LOG'],['LOG','LIN'],] : + raise FonctionError, 'nappe : parametre INTERPOL incorrect : %s' % para['INTERPOL'] + if para['PROL_DROITE'] not in ['EXCLU','CONSTANT','LINEAIRE'] : + raise FonctionError, 'nappe : parametre PROL_DROITE incorrect : %s' % para['PROL_DROITE'] + if para['PROL_GAUCHE'] not in ['EXCLU','CONSTANT','LINEAIRE'] : + raise FonctionError, 'nappe : parametre PROL_GAUCHE incorrect : %s' % para['PROL_GAUCHE'] + self.vale_para = NP.array(vale_para) + if not is_enum(l_fonc): + raise FonctionError, 'nappe : la liste de fonctions fournie n est pas une liste' + if len(l_fonc)!=len(vale_para) : + raise FonctionError, 'nappe : nombre de fonctions différent du nombre de valeurs du paramètre' + for f in l_fonc : + if not isinstance(f,t_fonction) and not isinstance(f,t_fonction_c) : + raise FonctionError, 'nappe : les fonctions fournies ne sont pas du bon type' + self.l_fonc = l_fonc + self.para = para + + def __call__(self,val1,val2): + """méthode pour évaluer nappe(val1,val2) + """ + i=NP.searchsorted(self.vale_para,val1) + n=len(self.vale_para) + if i==0 : + if val1==self.vale_para[0] : return self.l_fonc[0](val2) + if val1 self.vale_para[-1] : + if self.para['PROL_DROITE']=='EXCLU' : raise ParametreError, 'nappe évaluée hors du domaine de définition' + if self.para['PROL_DROITE']=='CONSTANT' : return self.l_fonc[-1](val2) + if self.para['PROL_DROITE']=='LINEAIRE' : return interp(self.para['INTERPOL'],val1, + self.vale_para[-1], + self.vale_para[-2], + self.l_fonc[-1](val2), + self.l_fonc[-2](val2)) + else : + return interp(self.para['INTERPOL'],val1,self.vale_para[i-1], + self.vale_para[i], + self.l_fonc[i-1](val2), + self.l_fonc[i](val2)) + + def evalfonc(self, liste_val) : + """Renvoie la mm nappe dont les fonctions sont interpolées aux points définis + par la liste 'liste_val'. + """ + l_fonc = [] + for f in self.l_fonc: + f2 = f.evalfonc(liste_val) + l_fonc.append(f2) + return t_nappe(self.vale_para, l_fonc, self.para) + + def __add__(self,other) : + """addition avec une autre nappe ou un nombre, par surcharge de l'opérateur + + """ + l_fonc=[] + if isinstance(other,t_nappe): + if NP.all(self.vale_para != other.vale_para): + raise ParametreError, 'nappes à valeurs de paramètres différentes' + for i in range(len(self.l_fonc)) : l_fonc.append(self.l_fonc[i]+other.l_fonc[i]) + elif is_float_or_int(other): + for i in range(len(self.l_fonc)) : l_fonc.append(self.l_fonc[i]+other) + else: raise FonctionError, 't_nappe : erreur de type dans __add__ : %s %s' % (other, type(other)) + return t_nappe(self.vale_para,l_fonc,self.para) + + def __mul__(self,other) : + """multiplication avec une autre fonction ou un nombre, par surcharge de l'opérateur * + """ + l_fonc=[] + if isinstance(other,t_nappe): + if NP.all(self.vale_para != other.vale_para) : + raise ParametreError, 'nappes à valeurs de paramètres différentes' + for i in range(len(self.l_fonc)) : l_fonc.append(self.l_fonc[i]*other.l_fonc[i]) + elif is_float_or_int(other): + for i in range(len(self.l_fonc)) : l_fonc.append(self.l_fonc[i]*other) + else: raise FonctionError, 't_nappe : erreur de type dans __mul__ : %s %s' % (other, type(other)) + return t_nappe(self.vale_para,l_fonc,self.para) + + def __repr__(self) : + """affichage de la nappe en double colonne + """ + texte=[] + for i in range(len(self.vale_para)) : + texte.append('paramètre : %f' % self.vale_para[i]) + texte.append(repr(self.l_fonc[i])) + return '\n'.join(texte) + + def homo_support(self,other) : + """Renvoie la nappe self avec un support union de celui de self et de other + le support est la discrétisation vale_para et les discrétisations des fonctions + """ + if self==other: + return self + vale_para=self.vale_para.tolist()+other.vale_para.tolist() + vale_para=list(set(vale_para)) + vale_para.sort() + vale_para=NP.array(vale_para) + l_fonc=[] + for val in vale_para : + if val in self.vale_para: + l_fonc.append(self.l_fonc[NP.searchsorted(self.vale_para, val)]) + elif val in other.vale_para: + other_fonc=other.l_fonc[NP.searchsorted(other.vale_para, val)] + new_vale_x=other_fonc.vale_x + new_para =other_fonc.para + new_vale_y=[self(val,x) for x in new_vale_x] + if isinstance(other_fonc, t_fonction): + l_fonc.append(t_fonction(new_vale_x, new_vale_y, new_para)) + if isinstance(other_fonc, t_fonction_c): + l_fonc.append(t_fonction_c(new_vale_x, new_vale_y, new_para)) + else: + raise FonctionError, 'combinaison de nappes : incohérence' + return t_nappe(vale_para,l_fonc,self.para) + + def extreme(self) : + """renvoie un dictionnaire des valeurs d'ordonnées min et max + """ + val_min=min([min(fonc.vale_y) for fonc in self.l_fonc]) + val_max=max([max(fonc.vale_y) for fonc in self.l_fonc]) + vm={'min':[],'max':[]} + for i in range(len(self.vale_para)) : + for j in range(len(self.l_fonc[i].vale_y)) : + y = self.l_fonc[i].vale_y[j] + if y==val_min : vm['min'].append([y,self.l_fonc[i].vale_x[j],self.vale_para[i]]) + if y==val_max : vm['max'].append([y,self.l_fonc[i].vale_x[j],self.vale_para[i]]) + vm['min'].sort() + vm['max'].sort() + for item in vm['min'] : item.reverse() + for item in vm['max'] : item.reverse() + return vm + + +# ----------------------------------------------------------------------------- +def homo_support_nappe(l_f): + """Homogénéisation du support d'une liste de nappes. + Retourne une liste de nappes. + """ + if not is_enum(l_f): + l_f = [l_f,] + l_fres=[] + for f in l_f: + assert isinstance(f, t_nappe), 'Erreur : homo_support_nappe est réservé aux nappes !' + __ff=f + for g in l_f: + __ff=__ff.homo_support(g) + l_fres.append(__ff) + return l_fres + + +def func_union(func,l_f) : + """Retourne la fonction x : func(y0=l_f[0](x), y1=l_f[1](x), ...) + sur la liste d'abscisses union de celles de self et de other. + """ + para = copy.copy(l_f[0].para) + # Pour les prolongements et l'interpolation, c'est la première fonction qui prime + vale_x=[] + for f in l_f : + vale_x = vale_x + f.vale_x.tolist() + # on ote les abscisses doublons + vale_x = list(set(vale_x)) + vale_x.sort() + vale_x = NP.array(vale_x) + # interpolation des fonctions sur l'union des abscisses + vale_y = [map(f,vale_x) for f in l_f] + # applique la fonction + vale_y = map(func, *vale_y) + return t_fonction(vale_x, vale_y, para) + + +def enveloppe(l_f, crit): + """renvoie l'enveloppe supérieure ou inférieure de self et other. + """ + if crit.upper() == 'SUP': + env = func_union(max, l_f) + elif crit.upper() == 'INF': + env = func_union(min, l_f) + else: + raise FonctionError, 'enveloppe : le critère doit etre SUP ou INF !' + return env + + +def fractile(l_f, fract): + """renvoie l'enveloppe supérieure ou inférieure de self et other. + """ + para = copy.copy(l_f[0].para) + # Pour les prolongements et l'interpolation, c'est la première fonction qui prime + vale_x=[] + for f in l_f : + vale_x = vale_x + f.vale_x.tolist() + # on ote les abscisses doublons + vale_x = list(set(vale_x)) + vale_x.sort() + vale_x = NP.array(vale_x) + # + l_vale_y=[] + for f in l_f : + vale_y = map(f,vale_x) + l_vale_y.append(vale_y) + tab_val=NP.transpose(NP.array(l_vale_y)) + tab_val=tab_val.tolist() + for l in tab_val : l.sort() + vale_y=[] + if fract>=1. : + for l_val in tab_val : + vale_y.append(l_val[-1]) + else : + indice=int((len(tab_val[0])-1)*fract) + reste =(len(tab_val[0])-1)*fract-indice + for l_val in tab_val : + vale_y.append(l_val[indice]*(1-reste)+l_val[indice+1]*reste) + return t_fonction(vale_x, vale_y, para) + + +def get_len_puis2(tab_in): + """Retourne N, la plus grande puissance de 2 telle que 2**N <= len(tab_in) + """ + return int( log(len(tab_in)) / log(2.) ) + + diff --git a/Aster/Cata/cataSTA10/Macro/asse_elem_ssd_ops.py b/Aster/Cata/cataSTA10/Macro/asse_elem_ssd_ops.py new file mode 100644 index 00000000..fa9d4942 --- /dev/null +++ b/Aster/Cata/cataSTA10/Macro/asse_elem_ssd_ops.py @@ -0,0 +1,119 @@ +#@ MODIF asse_elem_ssd_ops Macro DATE 03/01/2011 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# ====================================================================== + +def asse_elem_ssd_ops(self, RESU_ASSE_SSD, SOUS_STRUC, LIAISON, VERIF, **args): + """ + Echainement des commandes : + DEFI_MODELE_GENE + NUME_DDL_GENE + ASSE_MATR_GENE + """ + + from Accas import _F + + # On importe les definitions des commandes a utiliser dans la macro + DEFI_MODELE_GENE = self.get_cmd('DEFI_MODELE_GENE') + NUME_DDL_GENE = self.get_cmd('NUME_DDL_GENE') + ASSE_MATR_GENE = self.get_cmd('ASSE_MATR_GENE') + + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + self.DeclareOut('modele', RESU_ASSE_SSD['MODELE']) + self.DeclareOut('nugene', RESU_ASSE_SSD['NUME_DDL_GENE']) + if RESU_ASSE_SSD['RIGI_GENE']: + self.DeclareOut('rigidite', RESU_ASSE_SSD['RIGI_GENE']) + if RESU_ASSE_SSD['MASS_GENE']: + self.DeclareOut('masse', RESU_ASSE_SSD['MASS_GENE']) + + modl_gene = {} + mcfact = [] + for i in range(len(SOUS_STRUC)): + arg_sstruc = {} + if SOUS_STRUC[i]['ANGL_NAUT'] : + arg_sstruc['ANGL_NAUT'] = SOUS_STRUC[i]['ANGL_NAUT'] + else: # on impose un angle nul + arg_sstruc['ANGL_NAUT'] = (0.,0.,0.,) + if SOUS_STRUC[i]['TRANS'] : + arg_sstruc['TRANS'] = SOUS_STRUC[i]['TRANS'] + else: # on impose une translation nulle + arg_sstruc['TRANS'] = (0.,0.,0.,) + mcfact.append( _F(NOM = SOUS_STRUC[i]['NOM'], + MACR_ELEM_DYNA = SOUS_STRUC[i]['MACR_ELEM_DYNA'], + **arg_sstruc)) + modl_gene['SOUS_STRUC'] = mcfact + + mcfact = [] + for i in range(len(LIAISON)): + arg_liaison = {} + if LIAISON[i]['GROUP_MA_MAIT_1'] : + arg_liaison['GROUP_MA_MAIT_1'] = LIAISON[i]['GROUP_MA_MAIT_1'] + if LIAISON[i]['MAILLE_MAIT_1'] : + arg_liaison['MAILLE_MAIT_1'] = LIAISON[i]['MAILLE_MAIT_1'] + if LIAISON[i]['GROUP_MA_MAIT_2'] : + arg_liaison['GROUP_MA_MAIT_2'] = LIAISON[i]['GROUP_MA_MAIT_2'] + if LIAISON[i]['MAILLE_MAIT_2'] : + arg_liaison['MAILLE_MAIT_2'] = LIAISON[i]['MAILLE_MAIT_2'] + if LIAISON[i]['OPTION'] : + arg_liaison['OPTION'] = LIAISON[i]['OPTION'] + if arg_liaison['OPTION'] == 'CLASSIQUE' and args['METHODE'] == 'ELIMINE': + print 'ALARME : methode ELIMINE non adaptee a OPTION : ', \ + arg_liaison['OPTION'] + mcfact.append( _F(SOUS_STRUC_1 = LIAISON[i]['SOUS_STRUC_1'], + INTERFACE_1 = LIAISON[i]['INTERFACE_1'], + SOUS_STRUC_2 = LIAISON[i]['SOUS_STRUC_2'], + INTERFACE_2 = LIAISON[i]['INTERFACE_2'], + **arg_liaison)) + modl_gene['LIAISON'] = mcfact + + if VERIF: + mcfact = [] + for i in range(len(VERIF)): + arg_verif = {} + if VERIF[i]['STOP_ERREUR'] : + arg_verif['STOP_ERREUR'] = VERIF[i]['STOP_ERREUR'] + if VERIF[i]['PRECISION'] : + arg_verif['PRECISION'] = VERIF[i]['PRECISION'] + if VERIF[i]['CRITERE'] : + arg_verif['CRITERE'] = VERIF[i]['CRITERE'] + mcfact.append( _F( **arg_verif)) + modl_gene['VERIF'] = mcfact + else: + modl_gene['VERIF'] = None + + modele = DEFI_MODELE_GENE( + SOUS_STRUC = modl_gene['SOUS_STRUC'], + LIAISON = modl_gene['LIAISON'], + VERIF = modl_gene['VERIF'], + ) + + nugene = NUME_DDL_GENE(MODELE_GENE = modele, + METHODE = args['METHODE'], + STOCKAGE = args['STOCKAGE'], + ) + + if RESU_ASSE_SSD['RIGI_GENE']: + rigidite = ASSE_MATR_GENE( NUME_DDL_GENE = nugene, + OPTION = 'RIGI_GENE') + if RESU_ASSE_SSD['MASS_GENE']: + masse = ASSE_MATR_GENE( NUME_DDL_GENE = nugene, + OPTION = 'MASS_GENE') + + return + diff --git a/Aster/Cata/cataSTA10/Macro/calc_essai_ops.py b/Aster/Cata/cataSTA10/Macro/calc_essai_ops.py index 749fa427..e2967d47 100644 --- a/Aster/Cata/cataSTA10/Macro/calc_essai_ops.py +++ b/Aster/Cata/cataSTA10/Macro/calc_essai_ops.py @@ -1,8 +1,8 @@ -#@ MODIF calc_essai_ops Macro DATE 28/01/2010 AUTEUR BODEL C.BODEL +#@ MODIF calc_essai_ops Macro DATE 14/12/2010 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG +# 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 @@ -21,31 +21,24 @@ ## \package calc_essai_ops Implémentation de la macro CALC_ESSAI # # Ce module contient la partie controle de la macro CALC_ESSAI -# l'implémetation de cette macro se trouve dans les modules -# meidee_help, meidee_mac, meidee_massamor, meidee_turbulent -# on utilise aussi une librairie de support -# pour la gestion de l'interface graphique dans meidee_iface +# les autres fichiers sources sont situes dans ../Calc_essai def calc_essai_ops( self, INTERACTIF = None, - #UNITE_FIMEN = None, UNITE_RESU = None, EXPANSION = None, - #MEIDEE_FLUDELA = None, - #MEIDEE_TURBULENT = None, IDENTIFICATION = None, MODIFSTRUCT = None, TRAITEMENTSIG = None, GROUP_NO_CAPTEURS = None, GROUP_NO_EXTERIEUR = None, - #RESU_FLUDELA = None, - #RESU_TURBULENT = None, RESU_IDENTIFICATION = None, RESU_MODIFSTRU = None, **args): + + from Calc_essai.cata_ce import CalcEssaiObjects import aster - from Meidee.meidee_cata import MeideeObjects ier = 0 # La macro compte pour 1 dans la numerotation des commandes @@ -75,60 +68,35 @@ def calc_essai_ops( self, "ComptTable" : 0, "TablesOut" : table_fonction} -## SUPRESSION (PROVISOIRE ?) DES ONGLETS IFS -## if not RESU_FLUDELA: -## RESU_FLUDELA = [] -## else: -## for res in RESU_FLUDELA: -## table.append(res['TABLE']) -## out_fludela = {"DeclareOut" : self.DeclareOut, -## "TypeTables" : 'TABLE', -## "ComptTable" : 0, -## "TablesOut" : table} -## -## if not RESU_TURBULENT: -## RESU_TURBULENT = [] -## else: -## for res in RESU_TURBULENT: -## table_fonction.append(res['FONCTION']) -## out_meideeturb = {"DeclareOut" : self.DeclareOut, -## "FoncOut" : table_fonction} # Mode interactif : ouverture d'une fenetre Tk if INTERACTIF == "OUI": aster.onFatalError('EXCEPTION') create_interactive_window(self, - #UNITE_FIMEN, - #out_fludela, - #out_meideeturb, out_identification, out_modifstru, ) else: - from Meidee.meidee_calcul import MessageBox - from Meidee.meidee_test import TestMeidee + from Calc_essai.ce_test import MessageBox + from Calc_essai.ce_test import TestCalcEssai mess = MessageBox(UNITE_RESU) mess.disp_mess("Mode non intéractif") - objects = MeideeObjects(self, mess) + objects = CalcEssaiObjects(self, mess) # importation des concepts aster existants de la memoire jeveux - TestMeidee(self, - mess, - #out_fludela, - #out_meideeturb, - out_identification, - out_modifstru, - objects, - EXPANSION, - #MEIDEE_FLUDELA, - #MEIDEE_TURBULENT, - IDENTIFICATION, - MODIFSTRUCT, - GROUP_NO_CAPTEURS, - GROUP_NO_EXTERIEUR - ) + TestCalcEssai(self, + mess, + out_identification, + out_modifstru, + objects, + EXPANSION, + IDENTIFICATION, + MODIFSTRUCT, + GROUP_NO_CAPTEURS, + GROUP_NO_EXTERIEUR + ) mess.close_file() aster.onFatalError(prev) @@ -136,28 +104,21 @@ def calc_essai_ops( self, -def create_tab_mess_widgets(tk): +def create_tab_mess_widgets(tk,tabskeys): """Construits les objects table et boîte à messages.""" try: from Pmw import PanedWidget except ImportError: PanedWidget = None - from Meidee.meidee_iface import MessageBoxInteractif, TabbedWindow + from Calc_essai.outils_ihm import MessageBoxInteractif, TabbedWindow tabsw = tk msgw = tk tk.rowconfigure(0, weight=2) tk.rowconfigure(1, weight=1) - tabs = TabbedWindow(tabsw, ["Expansion de modeles", - "Modification structurale", - #"MEIDEE mono-modal fludela", - #"MEIDEE mono-modal turbulent", - "Identification de chargement", - "Traitement du signal", - "Parametres de visualisation", - ]) + tabs = TabbedWindow(tabsw, tabskeys) tabs.grid(row=0, column=0, sticky='nsew') # pack(side='top',expand=1,fill='both') @@ -168,23 +129,6 @@ def create_tab_mess_widgets(tk): return tabs, mess -## SUPRESSION (PROVISOIRE ?) DES ONGLETS IFS -##def get_fimen_files(UNITE_FIMEN, FIMEN=None): -## """Fichiers fimen éventuels associés aux unités logiques en entrée""" -## # XXX FIMEN is not defined (should it be included in the macro) -## from Utilitai.UniteAster import UniteAster -## fichiers_fimen = [] -## print "FIMEN:", UNITE_FIMEN -## -## if UNITE_FIMEN: -## if type(FIMEN)==int: -## UNITE_FIMEN= [ UNITE_FIMEN ] -## for unit in UNITE_FIMEN: -## UL = UniteAster() -## fichiers_fimen.append( (unit, UL.Nom(unit)) ) -## -## return fichiers_fimen - class FermetureCallback: """Opérations à appliquer lors de la fermeture de la @@ -203,70 +147,60 @@ class FermetureCallback: def create_interactive_window(macro, - #UNITE_FIMEN, - #out_fludela, - #out_meideeturb, out_identification, out_modifstru, ): """Construit la fenêtre interactive comprenant une table pour - les 4 domaines de Meidee.""" + les 4 domaines de CALC_ESSAI.""" from Tkinter import Tk - from Meidee.meidee_cata import MeideeObjects - from Meidee.meidee_correlation import InterfaceCorrelation - from Meidee.meidee_modifstruct import InterfaceModifStruct - from Meidee.meidee_turbulent import InterfaceTurbulent - from Meidee.meidee_parametres import InterfaceParametres - from Meidee.meidee_calc_spec import InterfaceCalcSpec -## SUPRESSION (PROVISOIRE ?) DES ONGLETS IFS -## from Meidee.meidee_fludela import InterfaceFludela, InterfaceTurbMonomod + from Calc_essai.cata_ce import CalcEssaiObjects + from Calc_essai.ce_ihm_expansion import InterfaceCorrelation + from Calc_essai.ce_ihm_modifstruct import InterfaceModifStruct + from Calc_essai.ce_ihm_identification import InterfaceIdentification + from Calc_essai.ce_ihm_parametres import InterfaceParametres + from Calc_essai.ce_calc_spec import InterfaceCalcSpec # fenetre principale tk = Tk() - tk.rowconfigure(0, weight=1) - tk.columnconfigure(0,weight=1) tk.title("CALC_ESSAI") + tk.rowconfigure(0,weight=1) + tk.rowconfigure(1,weight=20) + tk.rowconfigure(2,weight=1) - tabs, mess = create_tab_mess_widgets(tk) + tabskeys = ["Expansion de modeles", + "Modification structurale", + "Identification de chargement", + "Traitement du signal", + "Parametres de visualisation" ] + + tabs, mess = create_tab_mess_widgets(tk, tabskeys) main = tabs.root() # importation des concepts aster de la memoire jeveux - objects = MeideeObjects(macro, mess) + objects = CalcEssaiObjects(macro, mess) tabs.set_objects(objects) param_visu = InterfaceParametres(main, mess) - iface = InterfaceCorrelation(main, objects, macro, mess, - param_visu) - imodifstruct = InterfaceModifStruct(main, objects, macro, - mess, out_modifstru, param_visu) - identification = InterfaceTurbulent(main, objects, mess, out_identification, param_visu) - + iface = InterfaceCorrelation(main, objects, macro, mess,param_visu) + imodifstruct = InterfaceModifStruct(main, objects, macro,mess, out_modifstru, param_visu) + identification = InterfaceIdentification(main, objects, mess, out_identification, param_visu) calc_spec= InterfaceCalcSpec(main,objects,mess,param_visu) -## SUPRESSION (PROVISOIRE ?) DES ONGLETS IFS -## fludelamonomod = InterfaceFludela(main, objects, -## get_fimen_files(UNITE_FIMEN), mess, out_fludela, param_visu) -## turbmonomod = InterfaceTurbMonomod(main, objects,get_fimen_files(UNITE_FIMEN) ,mess, out_meideeturb, param_visu) - - tabs.set_tab("Expansion de modeles", iface.main) - tabs.set_tab("Modification structurale", imodifstruct.main) - tabs.set_tab("Identification de chargement", identification) - tabs.set_tab("Traitement du signal", calc_spec) - tabs.set_tab("Parametres de visualisation", param_visu) -## SUPRESSION (PROVISOIRE ?) DES ONGLETS IFS -## tabs.set_tab("MEIDEE mono-modal fludela", fludelamonomod ) -## tabs.set_tab("MEIDEE mono-modal turbulent", turbmonomod ) - + tabs.set_tab(tabskeys[0], iface.main) + tabs.set_tab(tabskeys[1], imodifstruct.main) + tabs.set_tab(tabskeys[2], identification) + tabs.set_tab(tabskeys[3], calc_spec) + tabs.set_tab(tabskeys[4], param_visu) - tabs.set_current_tab("Expansion de modeles") + tabs.set_current_tab(tabskeys[4]) tk.protocol("WM_DELETE_WINDOW", FermetureCallback(tk, identification).apply) try: tk.mainloop() except : - print "MEIDEE : *ERREUR*" + print "CALC_ESSAI : *ERREUR*" diff --git a/Aster/Cata/cataSTA10/Macro/calc_europlexus_ops.py b/Aster/Cata/cataSTA10/Macro/calc_europlexus_ops.py index 95a09fff..7d2ac6d1 100644 --- a/Aster/Cata/cataSTA10/Macro/calc_europlexus_ops.py +++ b/Aster/Cata/cataSTA10/Macro/calc_europlexus_ops.py @@ -1,8 +1,8 @@ -#@ MODIF calc_europlexus_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF calc_europlexus_ops Macro DATE 15/02/2011 AUTEUR ASSIRE A.ASSIRE # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -113,10 +113,13 @@ def calc_europlexus_ops(self,MODELE,CARA_ELEM,CHAM_MATER,EXCIT,FONC_PARASOL=None from Utilitai.Utmess import UTMESS, MasquerAlarme, RetablirAlarme MasquerAlarme('MED_1') MasquerAlarme('MED_54') + MasquerAlarme('MED_77') + MasquerAlarme('MED_37') + # Ligne de commande d'Europlexus if args.has_key('LOGICIEL'): EXEC = args['LOGICIEL'] - else: EXEC = '/home/europlex/EPXD/EUROPLEXUS_GESTION/runepx_d' + else: EXEC = '/home/europlex/EPXD/bin/europlexus' if debug: print 'args_keys : %s'%args.keys() if args.has_key('PAS_NBRE_COURBE') : if debug: print 'PAS NBRE COURBE = ok (%s)'%args['PAS_NBRE_COURBE'] @@ -168,6 +171,8 @@ def calc_europlexus_ops(self,MODELE,CARA_ELEM,CHAM_MATER,EXCIT,FONC_PARASOL=None # Pour la gestion des alarmes RetablirAlarme('MED_1') RetablirAlarme('MED_54') + RetablirAlarme('MED_77') + RetablirAlarme('MED_37') return ier @@ -1815,7 +1820,7 @@ class EUROPLEXUS: # Dictionnaire permettant de traduire le champ epx en med au nom asscie dans aster # AA epx2aster = {'CONTRAINTE':'SIEF_ELGA','ECROUISSAGE':'VARI_ELGA'} - epx2aster = {'CONTRAINTE':'SIEF_ELGA','DEFORMATION':'EPSI_ELGA_DEPL','ECROUISSAGE':'VARI_ELGA'} + epx2aster = {'CONTRAINTE':'SIEF_ELGA','DEFORMATION':'EPSI_ELGA','ECROUISSAGE':'VARI_ELGA'} # AA : desactive pour le moment # # Enrichir la liste format_med par les champs aux pts de gauss @@ -1842,6 +1847,8 @@ class EUROPLEXUS: fort = 'fort.%i' %unite if os.path.isfile(fort) : os.remove(fort) + if not os.path.isfile(fichier_med): UTMESS('F','PLEXUS_14') + os.symlink(fichier_med,fort) # Regeneration des mots-cles EXCIT passés en argument de la macro @@ -1850,6 +1857,7 @@ class EUROPLEXUS: dExcit.append(j.cree_dict_valeurs(j.mc_liste)) for i in dExcit[-1].keys(): if dExcit[-1][i]==None : del dExcit[-1][i] + resu = LIRE_RESU(TYPE_RESU='EVOL_NOLI', # VERI_ELGA='NON', FORMAT='MED', @@ -2299,7 +2307,7 @@ class EUROPLEXUS: # resu = CREA_RESU(reuse=resu, # OPERATION = 'AFFE', # TYPE_RESU = 'EVOL_NOLI', - # NOM_CHAM = 'EPSI_ELGA_DEPL', + # NOM_CHAM = 'EPSI_ELGA', # AFFE = dicAffe2) resu = CREA_RESU(reuse=resu, OPERATION = 'AFFE', @@ -2316,7 +2324,11 @@ class EUROPLEXUS: def lancer_calcul(self,fichier_med='auto'): fichier_epx = self.nom_fichiers['COMMANDE'] - EXEC_LOGICIEL(LOGICIEL='cd %s ; unset TMPDIR ; %s -usetmpdir %s ; iret=$? ; cd %s ; echo "Code_Retour Europlexus : $iret" ; exit 0' % (self.pwd + self.REPE, self.EXEC, fichier_epx, self.pwd), +# EXEC_LOGICIEL(LOGICIEL='cd %s ; unset TMPDIR ; %s -usetmpdir %s ; iret=$? ; cd %s ; echo "Code_Retour Europlexus : $iret" ; exit 0' % (self.pwd + self.REPE, self.EXEC, fichier_epx, self.pwd), +# CODE_RETOUR_MAXI=-1, +# INFO=2) + + EXEC_LOGICIEL(LOGICIEL='cd %s ; unset TMPDIR ; unset PMI_RANK ; %s %s ; iret=$? ; cd %s ; echo "Code_Retour Europlexus : $iret" ; exit 0' % (self.pwd + self.REPE, self.EXEC, fichier_epx, self.pwd), CODE_RETOUR_MAXI=-1, INFO=2) diff --git a/Aster/Cata/cataSTA10/Macro/calc_fonction_ops.py b/Aster/Cata/cataSTA10/Macro/calc_fonction_ops.py index 6ad29724..baf97a61 100644 --- a/Aster/Cata/cataSTA10/Macro/calc_fonction_ops.py +++ b/Aster/Cata/cataSTA10/Macro/calc_fonction_ops.py @@ -1,8 +1,8 @@ -#@ MODIF calc_fonction_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF calc_fonction_ops Macro DATE 22/03/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -17,6 +17,7 @@ # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS import os import copy @@ -26,6 +27,7 @@ import traceback def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP, SPEC_OSCI,ABS,COMB,COMB_C,COMPOSE,EXTRACTION, ENVELOPPE,FRACTILE,ASSE,CORR_ACCE,PUISSANCE,INVERSE, + REGR_POLYNOMIALE, NOM_PARA,NOM_RESU,INTERPOL,PROL_DROITE, PROL_GAUCHE,NOM_PARA_FONC,INTERPOL_FONC,PROL_DROITE_FONC, PROL_GAUCHE_FONC,INFO,**args): @@ -33,6 +35,8 @@ def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP, Ecriture de la macro CALC_FONCTION """ ier=0 + import numpy as NP + from Cata_Utils.t_fonction import t_fonction, t_fonction_c, t_nappe, homo_support_nappe, \ FonctionError, ParametreError, InterpolationError, ProlongementError, enveloppe, fractile from Utilitai import liss_enveloppe @@ -301,7 +305,7 @@ def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP, # construction de la nappe vale_para = l_amor - para = { 'INTERPOL' : ['LIN','LOG'], + para = { 'INTERPOL' : ['LIN', 'LOG'], 'NOM_PARA_FONC' : 'FREQ', 'NOM_PARA' : 'AMOR', 'PROL_DROITE' : 'EXCLU', @@ -325,6 +329,7 @@ def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP, ### if (LISS_ENVELOP!= None): __ff=LISS_ENVELOP['NAPPE'].convert() + ctxt.f = __ff.nom sp_nappe=liss_enveloppe.nappe(listFreq=__ff.l_fonc[0].vale_x, listeTable=[f.vale_y for f in __ff.l_fonc], listAmor=__ff.vale_para, entete="") sp_lisse=liss_enveloppe.lissage(nappe=sp_nappe,fmin=LISS_ENVELOP['FREQ_MIN'],fmax=LISS_ENVELOP['FREQ_MAX'],elarg=LISS_ENVELOP['ELARG'],tole_liss=LISS_ENVELOP['TOLE_LISS']) para_fonc=__ff.l_fonc[0].para @@ -332,6 +337,26 @@ def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP, for val in sp_lisse.listTable: l_fonc.append(t_fonction(sp_lisse.listFreq,val,para_fonc)) __ex=t_nappe(vale_para=sp_lisse.listAmor,l_fonc=l_fonc,para=__ff.para) + ### + if (REGR_POLYNOMIALE != None): + __ff = REGR_POLYNOMIALE['FONCTION'].convert() + ctxt.f = __ff.nom + deg = REGR_POLYNOMIALE['DEGRE'] + coef = NP.polyfit(__ff.vale_x, __ff.vale_y, deg) + if coef is None: + raise FonctionError("La régression polynomiale n'a pas convergé.") + # interpolation sur une liste d'abscisses + absc = __ff.vale_x + if args['LIST_PARA'] is not None: + absc = args['LIST_PARA'].Valeurs() + vale = NP.polyval(coef, absc) + # paramètres + para = __ff.para.copy() + para['INTERPOL'] = ['LIN', 'LIN'] + __ex = t_fonction(absc, vale, para) + coef_as_str = os.linesep.join([' a[%d] = %f' % (i, ci) \ + for i, ci in enumerate(coef)]) + UTMESS('I', 'FONCT0_57', coef_as_str) except InterpolationError, msg: UTMESS('F', 'FONCT0_27', valk=(ctxt.f, str(msg))) @@ -348,11 +373,11 @@ def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP, if isinstance(__ex,t_fonction) or isinstance(__ex,t_fonction_c): para=__ex.para - if NOM_PARA !=None : para['NOM_PARA'] =NOM_PARA - if NOM_RESU !=None : para['NOM_RESU'] =NOM_RESU - if PROL_DROITE!=None : para['PROL_DROITE']=PROL_DROITE - if PROL_GAUCHE!=None : para['PROL_GAUCHE']=PROL_GAUCHE - if INTERPOL !=None : para['INTERPOL'] =INTERPOL + if NOM_PARA != None: para['NOM_PARA'] = NOM_PARA + if NOM_RESU != None: para['NOM_RESU'] = NOM_RESU + if PROL_DROITE != None: para['PROL_DROITE'] = PROL_DROITE + if PROL_GAUCHE != None: para['PROL_GAUCHE'] = PROL_GAUCHE + if INTERPOL != None: para['INTERPOL'] = INTERPOL if isinstance(__ex,t_fonction_c): para['VALE_C'] = __ex.tabul() elif isinstance(__ex,t_fonction) : para['VALE'] = __ex.tabul() C_out=DEFI_FONCTION(**para) @@ -361,17 +386,20 @@ def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP, for f in __ex.l_fonc : para=f.para def_fonc.append(_F(VALE =f.tabul(), - INTERPOL =f.para['INTERPOL'], - PROL_DROITE=f.para['PROL_DROITE'], - PROL_GAUCHE=f.para['PROL_GAUCHE'],)) + INTERPOL =INTERPOL_FONC or f.para['INTERPOL'], + PROL_DROITE=PROL_DROITE_FONC or f.para['PROL_DROITE'], + PROL_GAUCHE=PROL_GAUCHE_FONC or f.para['PROL_GAUCHE'],)) para=__ex.para - if NOM_PARA !=None : para['NOM_PARA'] =NOM_PARA - if NOM_RESU !=None : para['NOM_RESU'] =NOM_RESU - if PROL_DROITE !=None : para['PROL_DROITE']=PROL_DROITE - if PROL_GAUCHE !=None : para['PROL_GAUCHE']=PROL_GAUCHE - if NOM_PARA_FONC !=None : para['NOM_PARA_FONC'] =INTERPOL - if INTERPOL_FONC !=None : para['INTERPOL'] =INTERPOL - C_out=DEFI_NAPPE(PARA=__ex.vale_para.tolist(),DEFI_FONCTION=def_fonc,**para) + if NOM_PARA != None: para['NOM_PARA'] = NOM_PARA + if NOM_RESU != None: para['NOM_RESU'] = NOM_RESU + if PROL_DROITE != None: para['PROL_DROITE'] = PROL_DROITE + if PROL_GAUCHE != None: para['PROL_GAUCHE'] = PROL_GAUCHE + if NOM_PARA_FONC != None: para['NOM_PARA_FONC'] = NOM_PARA_FONC + if INTERPOL != None: para['INTERPOL'] = INTERPOL + print para + C_out=DEFI_NAPPE(PARA=__ex.vale_para.tolist(), + DEFI_FONCTION=def_fonc, + **para) if INFO > 1: IMPR_FONCTION(FORMAT='TABLEAU', UNITE=6, diff --git a/Aster/Cata/cataSTA10/Macro/calc_ifs_dnl_ops.py b/Aster/Cata/cataSTA10/Macro/calc_ifs_dnl_ops.py new file mode 100644 index 00000000..0794c6a2 --- /dev/null +++ b/Aster/Cata/cataSTA10/Macro/calc_ifs_dnl_ops.py @@ -0,0 +1,580 @@ +#@ MODIF calc_ifs_dnl_ops Macro DATE 14/02/2011 AUTEUR GREFFET N.GREFFET +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# MACRO DE COUPLAGE IFS AVEC SATURNE VIA YACS +# +import os +def calc_ifs_dnl_ops(self,GROUP_MA_IFS,NOM_CMP_IFS,UNITE_NOEUD,UNITE_ELEM,MODELE,ETAT_INIT,EXCIT,PAS_INIT,**args): + #=================================================================# + # Initialisations # + # --------------------------------------------------------------- # + """ + Corps de la macro CALC_IFS_DNL + """ + ier=0 + import aster + import os,string,types + from Accas import _F + from Utilitai.Table import Table + from Utilitai.Utmess import UTMESS + # from Cata.cata import * + from Cata.cata import EXTR_RESU, DEFI_LIST_ENTI, IMPR_RESU + from SD.sd_maillage import sd_maillage + # + self.set_icmd(1) + #=================================================================# + # Liste des commandes ASTER utilisees # + # --------------------------------------------------------------- # + AFFE_CHAR_MECA=self.get_cmd('AFFE_CHAR_MECA') + DEFI_GROUP =self.get_cmd('DEFI_GROUP') + DEFI_LIST_REEL=self.get_cmd('DEFI_LIST_REEL') + DYNA_NON_LINE=self.get_cmd('DYNA_NON_LINE') + LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE') + PROJ_CHAMP =self.get_cmd('PROJ_CHAMP') + # Operateurs specifiques pour IFS + IMPR_MAIL_YACS =self.get_cmd('IMPR_MAIL_YACS') + ENV_CINE_YACS=self.get_cmd('ENV_CINE_YACS') + MODI_CHAR_YACS =self.get_cmd('MODI_CHAR_YACS') + RECU_PARA_YACS =self.get_cmd('RECU_PARA_YACS') + #=================================================================# + # Gestion des mots cles specifiques a CALC_IFS_DNL # + # --------------------------------------------------------------- # + motscles = {} + poidsMocle = {} + grpRefeMocle = {} + grpProjMocle = {} + ifsCharMocle = {} + tmpListe = [] + ifsCharList = [] + poidsMocle ['VIS_A_VIS'] = [] + grpRefeMocle['CREA_GROUP_NO'] = [] + grpProjMocle['CREA_GROUP_NO'] = [] + ifsCharMocle['GROUP_NO'] = [] + + ifsCharTuple = (GROUP_MA_IFS,) + #print "ifsCharTuple=",ifsCharTuple + ifsCharList = GROUP_MA_IFS + #print "len(ifsCharList)=",len(ifsCharList) + prefix="_" + for j in range(len(ifsCharTuple)): + poidsDico = {} + poidsDico['GROUP_MA_1']= ifsCharTuple[j] + poidsDico['GROUP_NO_2']= 'GN'+str(j+1) + poidsMocle['VIS_A_VIS'].append(poidsDico) + + grpProjDico ={} + grpProjDico['GROUP_MA'] ='GM'+str(j+1) + grpProjDico['NOM'] ='GN'+str(j+1) + grpProjMocle['CREA_GROUP_NO'].append(grpProjDico) + + if (not(ifsCharTuple[j] in tmpListe)): + tmpListe.append(ifsCharTuple[j]) + grpRefeNode = prefix + ifsCharTuple[j] + # ifsCharTuple = ifsCharTuple[1:] + (grpRefeNode,) + + grpRefeDico = {} + grpRefeDico['GROUP_MA'] = ifsCharTuple[j] + grpRefeDico['NOM'] = grpRefeNode + grpRefeMocle['CREA_GROUP_NO'].append(grpRefeDico) + + for j in range(len(tmpListe)): + tmpListe[j] = prefix + tmpListe[j] + ifsCharMocle['GROUP_NO']=tuple(tmpListe) + + for j in range(len(NOM_CMP_IFS)): + if (NOM_CMP_IFS[j] == 'FX'): + ifsCharMocle['FX'] = 0.0 + elif (NOM_CMP_IFS[j] == 'FY'): + ifsCharMocle['FY'] = 0.0 + elif (NOM_CMP_IFS[j] == 'FZ'): + ifsCharMocle['FZ'] = 0.0 + else: + raise AsException("MOT-CLE NON PERMIS : ",NOM_CMP_IFS[j]) + + #=================================================================# + # Gestion des mots cles de DYNA_NON_LINE # + # --------------------------------------------------------------- # + motCleSimpTuple= ('MODELE', + 'CHAM_MATER', + 'MODE_STAT', + 'CARA_ELEM', + 'MASS_DIAG', + 'SENSIBILITE', + 'INFO', + 'TITRE') + +# 'COMP_INCR' =C_COMP_INCR() : dans motCleFactTuple ? + motCleFactTuple= ('EXCIT', + 'EXCIT_GENE', + 'SOUS_STRUC', + 'AMOR_MODAL', + 'PROJ_MODAL', + 'COMP_INCR', + 'COMP_ELAS', + 'ETAT_INIT', + 'SCHEMA_TEMPS', + 'NEWTON', + 'SOLVEUR', + 'RECH_LINEAIRE', + 'PILOTAGE', + 'CONVERGENCE', + 'OBSERVATION', + 'AFFICHAGE', + 'ARCHIVAGE', + 'CRIT_FLAMB', + 'MODE_VIBR') + + for i in range(len(motCleSimpTuple)): + cle = motCleSimpTuple[i] + if args.has_key(cle): + motscles[cle]=args[cle] + + for i in range(len(motCleFactTuple)): + cle = motCleFactTuple[i] + if args.has_key(cle): + if args[cle] != None : + dMotCle=[] + for j in args[cle]: + dMotCle.append(j.cree_dict_valeurs(j.mc_liste)) + for k in dMotCle[-1].keys(): + if dMotCle[-1][k]==None : del dMotCle[-1][k] + motscles[cle]=dMotCle + #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# + + #===============================# + # INITIALISATION DE LA SD MACRO # + # ----------------------------- # + self.DeclareOut('resdnl',self.sd) + + + #============================================================# + # GENERATION DES GROUPES DE NOEUDS SUR LE MAILLAGE STRUCTURE # + # ---------------------------------------------------------- # + ### on recupere le concept maillage + #print "MODELE=",MODELE + #print "MODELE.strip()=",MODELE.strip() + + iret,ibid,nom_ma = aster.dismoi('F','NOM_MAILLA',MODELE.nom,'MODELE') + _strucMesh = self.get_concept(nom_ma.strip()) + #print "MAILLAGE STRUCTURE=",_strucMesh + #print "DEFI_GROUP MAILLAGE STRUCTURE" + #print "grpRefeMocle=",grpRefeMocle + _strucMesh = DEFI_GROUP(reuse = _strucMesh, + MAILLAGE = _strucMesh, + **grpRefeMocle) + + #=============================================================================# + # RECUPERATION DU MAILLAGE COUPLE POUR LES DEPLACEMENTS (NOEUDS Code_Saturne) # !!! YACS COMMUNICATION !!! + # --------------------------------------------------------------------------- # + print "IMPR_MAIL_YACS MAILLAGE NOEUDS" + IMPR_MAIL_YACS(UNITE_MAILLAGE = UNITE_NOEUD,TYPE_MAILLAGE = 'SOMMET',), + print "LIRE_MAILLAGE MAILLAGE NOEUDS" + _fluidNodeMesh = LIRE_MAILLAGE(UNITE = UNITE_NOEUD) + print "DEFI_GROUP MAILLAGE NOEUDS" + #print "grpProjMocle=",grpProjMocle + _fluidNodeMesh = DEFI_GROUP(reuse = _fluidNodeMesh, + MAILLAGE = _fluidNodeMesh, + **grpProjMocle) + + #====================================================================================# + # RECUPERATION DU MAILLAGE COUPLE POUR LES FORCES (CENTRE DES ELEMENTS Code_Saturne) # !!! YACS COMMUNICATION !!! + # ---------------------------------------------------------------------------------- # + print "IMPR_MAIL_YACS MAILLAGE ELEMENTS" + IMPR_MAIL_YACS(UNITE_MAILLAGE = UNITE_ELEM,TYPE_MAILLAGE = 'MILIEU',) + print "LIRE_MAILLAGE MAILLAGE ELEMENTS" + _fluidElemMesh = LIRE_MAILLAGE(UNITE = UNITE_ELEM) + print "DEFI_GROUP MAILLAGE ELEMENTS" + #print "grpProjMocle=",grpProjMocle + _fluidElemMesh = DEFI_GROUP(reuse = _fluidElemMesh, + MAILLAGE = _fluidElemMesh, + **grpProjMocle) + + #==============================================# + # CALCUL DES PROJECTEURS POUR LES DEPLACEMENTS # + # ASTER -> CODE COUPLE # + # -------------------------------------------- # + print "PROJ_CHAMP MAILLAGE NOEUDS" + #print "MAILLAGE_1=",_strucMesh.nom + #print "MAILLAGE_2=",_fluidNodeMesh.nom + _fluidNodePoids = PROJ_CHAMP(PROJECTION = 'NON', + METHODE = 'COUPLAGE', + MAILLAGE_1 = _strucMesh, + MAILLAGE_2 = _fluidNodeMesh, + **poidsMocle) + + #========================================# + # CALCUL DES PROJECTEURS POUR LES FORCES # + # CODE COUPLE -> ASTER # + # -------------------------------------- # + print "PROJ_CHAMP MAILLAGE ELEMENTS" + #print "MAILLAGE_1=",_strucMesh + #print "MAILLAGE_2=",_fluidElemMesh + _fluidElemPoids = PROJ_CHAMP(PROJECTION = 'NON', + METHODE = 'COUPLAGE', + MAILLAGE_1 = _strucMesh, + MAILLAGE_2 = _fluidElemMesh, + **poidsMocle) + + #====================================================================================# + # CREATION DE LA CARTES DES FORCES NODALES AVEC UNE INITIALISATION DES FORCES A ZERO # + # ---------------------------------------------------------------------------------- # + print "AFFE_CHAR_MECA" + _ifsCharMeca = AFFE_CHAR_MECA(MODELE = MODELE, + FORCE_NODALE = _F(**ifsCharMocle),) + dExcit=[] + if (EXCIT != None): + for j in EXCIT : + dExcit.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dExcit[-1].keys(): + if dExcit[-1][i]==None : del dExcit[-1][i] + dExcit.append(_F(CHARGE=_ifsCharMeca),) + + #====================================# + # ENVOIE DU MAILLAGE INITIAL DEFORME # !!! YACS COMMUNICATION !!! + # ---------------------------------- # + dEtatInit=[] + dExtrInit={} + if (ETAT_INIT != None): + if (ETAT_INIT['DEPL'] != None): + dExtrInit['DEPL']=ETAT_INIT['DEPL'] + if (ETAT_INIT['VITE'] != None): + dExtrInit['VITE']=ETAT_INIT['VITE'] + if (ETAT_INIT['ACCE'] != None): + dExtrInit['ACCE']=ETAT_INIT['ACCE'] + for j in ETAT_INIT: + dEtatInit.append(j.cree_dict_valeurs(j.mc_liste)) + for i in dEtatInit[-1].keys(): + if dEtatInit[-1][i]==None : del dEtatInit[-1][i] + + #======================================# + # RECUPERATION DES DONNEES TEMPORELLES # !!! YACS COMMUNICATION !!! + # ------------------------------------ # + print "Appel initialisation" + + _timeStepAster = PAS_INIT + print "PAS=",_timeStepAster + _timeV = RECU_PARA_YACS(DONNEES = 'INITIALISATION', + PAS = _timeStepAster,) + #print "__timeValues=",_timeV.Valeurs() + _timeValues = _timeV.Valeurs() + _nbTimeStep = int(_timeValues[0]) + +# Ancien nommage +# _timeStep = _timeValues[1] +# _tInitial = _timeValues[2] +# _nbSsIterMax = int(_timeValues[3]) +# _impEnsight = int(_timeValues[4]) +# _PeriodImp = int(_timeValues[5]) +# _StartImp = int(_timeValues[6]) + _nbSsIterMax = int(_timeValues[1]) + _Epsilo = _timeValues[2] + _impEnsight = int(_timeValues[3]) + _PeriodImp = int(_timeValues[4]) + _tInitial = _timeValues[5] + _timeStep = _timeValues[6] + _StartImp = _tInitial + print '_nbTimeStep = ',_nbTimeStep + print '_timeStep = ',_timeStep + print '_tInitial = ',_tInitial + print '_nbSsIterMax = ',_nbSsIterMax + print '_impEnsight = ',_impEnsight + print '_PeriodImp = ',_PeriodImp + print '_StartImp = ',_StartImp + if (_nbSsIterMax == 0): + _nbSsIterMax = 1 + +# _endValue = int(_timeValues[7]) +# _nbTimeStep = _endValue + #print '_nbTimeStep 2 = ',_nbTimeStep + +# Compteur de pas : + _numpas = 1 +# Compteur pour le couplage : CP_ITERATION + _ntcast = 0 +# Compteur de sous-itearation + _SousIterations = 1 + + ticv=[None]*(_nbTimeStep+1) ; + endv=[None]*(_nbTimeStep+1) ; + + +# +# Envoi des donnees initiales si besoin est +# +# print "ENV_CINE_YACS 1" +# ENV_CINE_YACS(ETAT_INIT = dExtrInit, +# MATR_PROJECTION = _fluidNodePoids, +# NUME_ORDRE_YACS = _numpas, +# INST = _tInitial, +# PAS = _timeStep, +# **poidsMocle) +# print "RETOUR ENV_CINE_YACS 1" + + #=================================# + # 1ER PASSAGE POUR L'ETAT INITIAL # + # ------------------------------- # + + # ------------------------------------- # + # CALCUL NON LINEAIRE AVEC ETAT INITIAL # + # ------------------------------------- # + if (_numpas <= _nbTimeStep): + # ---------------------------------- # + # Affectation de l'instant de calcul # + # ---------------------------------- # + print "RECU_PARA_YACS 1" + _tStart = _tInitial + _pastps = RECU_PARA_YACS(DONNEES = 'PAS', + NUME_ORDRE_YACS = _numpas, + INST = _tStart, + PAS = _timeStepAster, + ) + _pastps0 = _pastps.Valeurs() + print "_pastps0[0]=", _pastps0[0] + _timeStep = _pastps0[0] + print "DEFI_LIST_REEL" + _tEnd = _tInitial+_timeStep + print "_tStart=",_tStart," ; _tEnd=",_tEnd + _liste=DEFI_LIST_REEL(DEBUT = _tStart, + INTERVALLE = _F(JUSQU_A = _tEnd, + NOMBRE = 1,),) +# _iter = 1 + _SousIterations = 0 + icv = 0 + while (_SousIterations < _nbSsIterMax): + + # Increment des sous-iterations + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + _SousIterations = _SousIterations + 1 + _ntcast = _ntcast + 1 + + # Reception des forces nodales et projection !!! YACS COMMUNICATION !!! + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + print "MODI_CHAR_YACS" + _ifsCharMeca = MODI_CHAR_YACS(reuse = _ifsCharMeca, + CHAR_MECA = _ifsCharMeca, + MATR_PROJECTION = _fluidElemPoids, + NOM_CMP_IFS = NOM_CMP_IFS, + NUME_ORDRE_YACS = _ntcast, + INST = _tStart, + PAS = _timeStep, + **poidsMocle) + + # Resolution non-lineaire + # ~~~~~~~~~~~~~~~~~~~~~~~ + print "DYNA_NON_LINE NUMPAS=",_numpas + #__rescur=DYNA_NON_LINE( + __rescur=DYNA_NON_LINE( + # ETAT_INIT = dEtatInit, + MODELE = MODELE, + INCREMENT = _F(LIST_INST=_liste,), + EXCIT = dExcit, + **motscles) + # test de convergence + # ~~~~~~~~~~~~~~~~~~~ + _ticv = RECU_PARA_YACS(DONNEES = 'CONVERGENCE', + NUME_ORDRE_YACS = _ntcast, + INST = _tEnd, + PAS = _timeStep,) + __icv = _ticv.Valeurs() + icv = int(__icv[0]) + print "Convergence=",icv + if (icv == 1 or _SousIterations == _nbSsIterMax ): + # Envoi des deplacements + # ~~~~~~~~~~~~~~~~~~~~~~ + print "ENV_CINE_YACS ",_numpas + ENV_CINE_YACS(RESULTAT = _F(RESU = __rescur, + #ENV_CINE_YACS(RESULTAT = _F(RESU = resdnl, + NUME_ORDRE = _numpas), + MATR_PROJECTION = _fluidNodePoids, + NUME_ORDRE_YACS = _ntcast, + INST = _tEnd, + PAS = _timeStep, + **poidsMocle) + + _SousIterations = _nbSsIterMax + print "EXTR_RESU" + resdnl=EXTR_RESU(RESULTAT=__rescur, + ARCHIVAGE=_F(NUME_ORDRE = (0,1),)) + #resdnl = __rescur + +# endv[0] = RECU_PARA_YACS(DONNEES='FIN', +# NUME_ORDRE_YACS = _iter, +# INST = _tEnd, +# PAS = _timeStep,) +# __endv = endv[0].Valeurs() +# _endValue = __endv[0] +# _nbTimeStep = _endValue +# print "FIN=",_endValue + _numpas = _numpas + 1 + + #===============================# + # CALCUL NON-LINEAIRE PAS A PAS # + # ----------------------------- # + while (_numpas <= _nbTimeStep): + + # ------------------ # + # Increment du temps # + # ------------------ # + _tStart = _tStart + _timeStep + _tyacs = _tStart + _timeStep + _pastps = RECU_PARA_YACS(DONNEES = 'PAS', + NUME_ORDRE_YACS = _numpas, + INST = _tyacs, + PAS = _timeStepAster, + ) + _pastps0 = _pastps.Valeurs() + print "_pastps0[0]=", _pastps0[0] + _timeStep = _pastps0[0] + _tEnd = _tStart + _timeStep + print "_tStart=",_tStart," ; _tEnd=",_tEnd + _liste=DEFI_LIST_REEL(DEBUT = _tStart, + INTERVALLE = _F(JUSQU_A = _tEnd, + NOMBRE = 1,),) +# _iter = _iter + 1 + _SousIterations = 0 + icv = 0 + while (_SousIterations < _nbSsIterMax): + + # Increment des sous-iterations + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + _SousIterations = _SousIterations + 1 + _ntcast = _ntcast + 1 + + # Reception des forces nodales et projection !!! YACS COMMUNICATION !!! + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + print "MODI_CHAR_YACS_BOUCLE" + _ifsCharMeca = MODI_CHAR_YACS(reuse = _ifsCharMeca, + CHAR_MECA = _ifsCharMeca, + MATR_PROJECTION = _fluidElemPoids, + NOM_CMP_IFS = NOM_CMP_IFS, + NUME_ORDRE_YACS = _ntcast, + INST = _tStart, + PAS = _timeStep, + **poidsMocle) + + # Resolution non-lineaire + # ~~~~~~~~~~~~~~~~~~~~~~~ + print "DYNA_NON_LINE_BOUCLE" + resdnl=DYNA_NON_LINE(reuse = resdnl, + MODELE = MODELE, + ETAT_INIT = _F(EVOL_NOLI = resdnl,), + INCREMENT = _F(LIST_INST = _liste,), + EXCIT = dExcit, + **motscles) + + + # test de convergence + # ~~~~~~~~~~~~~~~~~~~ + print "CONVERGENCE ",_SousIterations + #icv = cocas_fonctions.CONVERGENCE() + _ticv = RECU_PARA_YACS(DONNEES = 'CONVERGENCE', + NUME_ORDRE_YACS = _ntcast, + INST = _tEnd, + PAS = _timeStep,) + __icv = _ticv.Valeurs() + icv = int(__icv[0]) + print "Convergence=",icv + _ntcat = _ntcast + 1 + if (icv == 1 or _SousIterations == _nbSsIterMax ): + _SousIterations = _nbSsIterMax + # Envoi des deplacements !!! YACS COMMUNICATION !!! + # ~~~~~~~~~~~~~~~~~~~~~~ + print "ENV_CINE_YACS_BOUCLE" + ENV_CINE_YACS(RESULTAT = _F(RESU = resdnl, + NUME_ORDRE = _numpas), + MATR_PROJECTION = _fluidNodePoids, + NUME_ORDRE_YACS = _ntcast, + INST = _tEnd, + PAS = _timeStep, + **poidsMocle) + + else: + _list2=DEFI_LIST_ENTI(DEBUT=0, + INTERVALLE=_F(JUSQU_A = _numpas-1, + PAS = 1,),); + resdnl=EXTR_RESU(RESULTAT = resdnl, + ARCHIVAGE = _F(LIST_ORDRE = _list2,)) + +# endv[_iter] = RECU_PARA_YACS(DONNEES='FIN', +# NUME_ORDRE_YACS = _iter, +# INST = _tEnd, +# PAS = _timeStep,) +# __endv = endv[_iter].Valeurs() +# _endValue = __endv[0] +# _nbTimeStep = _endValue + _numpas = _numpas + 1 + + print "NUMPAS : ",_numpas,"nbTimeStep=",_nbTimeStep + + + + #========================================================================# + # Impression Ensight si demandee # + # (premier et dernier pas d'impression pour coherence avec Code_Saturne) # + # ---------------------------------------------------------------------- # + print "impression ensight : ",_impEnsight + if (_impEnsight == 1): + + impEnsiMocle = {} + impEnsiMocle['INTERVALLE'] = [] + + if (_nbTimeStep < _PeriodImp): + _StartImp = 0 + impEnsiDico = {} + impEnsiDico['JUSQU_A'] = _nbTimeStep + impEnsiDico['PAS'] = 1 + impEnsiMocle['INTERVALLE'].append(impEnsiDico) + elif (_nbTimeStep == _PeriodImp and _nbTimeStep == _StartImp): + _StartImp = 0 + impEnsiDico = {} + impEnsiDico['JUSQU_A'] = _nbTimeStep + impEnsiDico['PAS'] = 1 + impEnsiMocle['INTERVALLE'].append(impEnsiDico) + elif (_PeriodImp == -1): + if (_nbTimeStep == _StartImp): + _StartImp = 0 + impEnsiDico = {} + impEnsiDico['JUSQU_A'] = _nbTimeStep + impEnsiDico['PAS'] = 1 + impEnsiMocle['INTERVALLE'].append(impEnsiDico) + else: + impEnsiDico = {} + _reste = (_nbTimeStep-_StartImp) % _PeriodImp + impEnsiDico['JUSQU_A'] = _nbTimeStep - _reste + impEnsiDico['PAS'] = _PeriodImp + impEnsiMocle['INTERVALLE'].append(impEnsiDico) + if (_reste != 0): + impEnsiDico = {} + impEnsiDico['JUSQU_A'] = _nbTimeStep + impEnsiDico['PAS'] = _reste + impEnsiMocle['INTERVALLE'].append(impEnsiDico) + + print "Liste impEnsiMocle=", impEnsiMocle + _listImp=DEFI_LIST_ENTI(DEBUT = _StartImp, + **impEnsiMocle); + print "Liste impression=", _listImp + IMPR_RESU(FORMAT='ENSIGHT', + RESU=_F(MAILLAGE=_strucMesh, + RESULTAT=resdnl, + LIST_ORDRE=_listImp,),); + + return ier + diff --git a/Aster/Cata/cataSTA10/Macro/calc_miss_ops.py b/Aster/Cata/cataSTA10/Macro/calc_miss_ops.py index dae87e78..3eb5034c 100644 --- a/Aster/Cata/cataSTA10/Macro/calc_miss_ops.py +++ b/Aster/Cata/cataSTA10/Macro/calc_miss_ops.py @@ -1,15 +1,35 @@ -#@ AJOUT calc_miss_ops Macro +#@ MODIF calc_miss_ops Macro DATE 01/03/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS +import sys import os +import traceback -def calc_miss_ops(self, OPTION, **kwargs): +def calc_miss_ops(self, **kwargs): """Macro CALC_MISS : Préparation des données et exécution d'un calcul MISS3D """ - from Utilitai.Utmess import UTMESS, MessageError + import aster + from Utilitai.Utmess import UTMESS from Miss.miss_utils import MISS_PARAMETER from Miss.miss_calcul import CalculMissFactory @@ -21,15 +41,16 @@ def calc_miss_ops(self, OPTION, **kwargs): param = MISS_PARAMETER(initial_dir=os.getcwd(), **kwargs) # création de l'objet CALCUL_MISS_xxx - option_calcul = "TOUT" - if OPTION["TOUT"] != "OUI": - option_calcul = OPTION["MODULE"] - calcul = CalculMissFactory(option_calcul, self, param) + calcul = CalculMissFactory(self, param) try: calcul.prepare_donnees() calcul.execute() calcul.post_traitement() - except MessageError, err: + except aster.error, err: UTMESS('F', err.id_message, valk=err.valk, vali=err.vali, valr=err.valr) + except Exception, err: + trace = ''.join(traceback.format_tb(sys.exc_traceback)) + UTMESS('F', 'SUPERVIS2_5', valk=('CALC_MISS', trace, str(err))) + diff --git a/Aster/Cata/cataSTA10/Macro/calc_modal_ops.py b/Aster/Cata/cataSTA10/Macro/calc_modal_ops.py index 0a7a1bae..57ee83ed 100644 --- a/Aster/Cata/cataSTA10/Macro/calc_modal_ops.py +++ b/Aster/Cata/cataSTA10/Macro/calc_modal_ops.py @@ -1,4 +1,4 @@ -#@ MODIF calc_modal_ops Macro DATE 27/04/2009 AUTEUR NISTOR I.NISTOR +#@ MODIF calc_modal_ops Macro DATE 13/10/2010 AUTEUR BOITEAU O.BOITEAU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -21,7 +21,7 @@ def calc_modal_ops(self,MODELE,CHAM_MATER,CARA_ELEM,AMORTISSEMENT, - SOLVEUR,CHARGE,INST,METHODE,CALC_FREQ, MODE_RIGIDE, + CHARGE,INST,METHODE,CALC_FREQ, MODE_RIGIDE, VERI_MODE,INFO,**args): """ Ecriture de la macro CALC_MODAL @@ -58,12 +58,8 @@ def calc_modal_ops(self,MODELE,CHAM_MATER,CARA_ELEM,AMORTISSEMENT, RIGI_MECA=_a, MASS_MECA=_b,**motsclece) #on produit en local le concept NUME_DDL, il n'est pas visible pour l'utilisateur - - # Les mots cles simples sous SOLVEUR sont par defaut MULT_FRONT/METIS - methode=SOLVEUR['METHODE'] - renum=SOLVEUR['RENUM'] - _num=NUME_DDL(MATR_RIGI=_a,METHODE=methode,RENUM=renum,INFO=INFO) + _num=NUME_DDL(MATR_RIGI=_a,INFO=INFO) #assemblages des matrices _rigas=ASSE_MATRICE(MATR_ELEM=_a,NUME_DDL=_num) @@ -122,7 +118,6 @@ def calc_modal_ops(self,MODELE,CHAM_MATER,CARA_ELEM,AMORTISSEMENT, motscit['CALC_FREQ'] = _F(OPTION =CALC_FREQ['OPTION'], SEUIL_FREQ =CALC_FREQ['SEUIL_FREQ'], - NPREC_SOLVEUR =CALC_FREQ['NPREC_SOLVEUR'], NMAX_ITER_SHIFT =CALC_FREQ['NMAX_ITER_SHIFT'], PREC_SHIFT =CALC_FREQ['PREC_SHIFT'], APPROCHE =CALC_FREQ['APPROCHE'], diff --git a/Aster/Cata/cataSTA10/Macro/calc_mode_rotation_ops.py b/Aster/Cata/cataSTA10/Macro/calc_mode_rotation_ops.py index f5c598e8..d11b752f 100644 --- a/Aster/Cata/cataSTA10/Macro/calc_mode_rotation_ops.py +++ b/Aster/Cata/cataSTA10/Macro/calc_mode_rotation_ops.py @@ -1,4 +1,4 @@ -#@ MODIF calc_mode_rotation_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF calc_mode_rotation_ops Macro DATE 14/06/2010 AUTEUR COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== diff --git a/Aster/Cata/cataSTA10/Macro/calc_precont_ops.py b/Aster/Cata/cataSTA10/Macro/calc_precont_ops.py index 090b69e6..33d84765 100644 --- a/Aster/Cata/cataSTA10/Macro/calc_precont_ops.py +++ b/Aster/Cata/cataSTA10/Macro/calc_precont_ops.py @@ -1,8 +1,8 @@ -#@ MODIF calc_precont_ops Macro DATE 23/03/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF calc_precont_ops Macro DATE 21/03/2011 AUTEUR MICHEL S.MICHEL # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -23,8 +23,8 @@ def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT, CABLE_BP,CABLE_BP_INACTIF, - COMP_INCR,ETAT_INIT,NEWTON,RECH_LINEAIRE, - CONVERGENCE,INCREMENT,SOLVEUR, + COMP_INCR,ETAT_INIT,METHODE, + RECH_LINEAIRE,CONVERGENCE,INCREMENT,SOLVEUR, INFO,TITRE,**args): @@ -69,12 +69,24 @@ def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT, # 1.1 Recuperation de la liste d'instants, de l'instant initial et final # Creation de la nouvelle liste d'instants # ---------------------------------------------------------- - dIncrement=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste) - __prec = dIncrement['PRECISION'] + + +# import pdb ; pdb.set_trace() + __L0 = dIncrement['LIST_INST'] - __L1 = __L0.Valeurs() + from SD.co_listr8 import listr8_sdaster + from SD.co_list_inst import list_inst + + if type(__L0) == listr8_sdaster: + #cas où liste definie par DEFI_LIST_REEL + __L1 = __L0.Valeurs() + elif type(__L0) == list_inst: + # cas où liste definie par DEFI_LIST_INST + tmp = __L0.get_name().ljust(8) + '.LIST.' + 'DITR'.ljust(18) + __L1 = aster.getvectjev(tmp) + # Traitement de l'etat initial if ETAT_INIT: @@ -135,10 +147,18 @@ def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT, # 1.2 Recuperation des parametres pour STAT_NON_LINE # ------------------------------------------------------- + motscle4={} + motscle5={} - dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste) - for i in dNewton.keys(): - if dNewton[i]==None : del dNewton[i] + if METHODE=='IMPL_EX': + motscle4['IMPL_EX']=args['IMPL_EX'].List_F() + motscle5['IMPL_EX']=args['IMPL_EX'].List_F() + else: + motscle4['NEWTON']=args['NEWTON'].List_F() + motscle5['NEWTON']=args['NEWTON'].List_F() +# for j in dNewton.keys(): +# if dNewton[j]==None : del dNewton[j] + dConvergence=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste) for i in dConvergence.keys(): @@ -351,7 +371,7 @@ def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT, __EV1 = CALC_NO( reuse = __EV1, RESULTAT = __EV1, - GROUP_MA = __GROUP_MA_A, + # GROUP_MA = __GROUP_MA_A, OPTION = 'FORC_NODA' ) __REA = CREA_CHAMP ( @@ -394,7 +414,7 @@ def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT, dExcit1.append(_F(CHARGE = _F_CA, FONC_MULT=__FCT ),) - motscle4={} + if self.reuse: motscle4['reuse'] = self.reuse @@ -405,14 +425,14 @@ def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT, COMP_INCR=dComp_incr0, INCREMENT=dIncrement, ETAT_INIT = dEtatInit, - NEWTON =dNewton, + METHODE=METHODE, CONVERGENCE=dConvergence, RECH_LINEAIRE = dRech_lin, SOLVEUR = dSolveur, ARCHIVAGE = _F(INST = __TINT), INFO =INFO, TITRE = TITRE, - EXCIT = dExcit1, + EXCIT = dExcit1, **motscle4) # Recuperation du dernier numero d'ordre pour pouvoir l'écraser dans RES @@ -437,15 +457,19 @@ def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT, COMP_INCR=dComp_incr1, INCREMENT=_F(LIST_INST = __LST, PRECISION = __prec), - NEWTON =dNewton, + METHODE=METHODE, +# NEWTON =dNewton, +# IMPL_EX=dImplex, + RECH_LINEAIRE = dRech_lin, CONVERGENCE=dConvergence, SOLVEUR = dSolveur, - ARCHIVAGE = _F(NUME_INIT = __no, + ARCHIVAGE = _F( DETR_NUME_SUIV = 'OUI' ), INFO =INFO, TITRE = TITRE, EXCIT =dExcit2, + **motscle5 ) return ier diff --git a/Aster/Cata/cataSTA10/Macro/calc_table_ops.py b/Aster/Cata/cataSTA10/Macro/calc_table_ops.py index 842f7c5e..b221d7b5 100644 --- a/Aster/Cata/cataSTA10/Macro/calc_table_ops.py +++ b/Aster/Cata/cataSTA10/Macro/calc_table_ops.py @@ -1,4 +1,4 @@ -#@ MODIF calc_table_ops Macro DATE 26/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF calc_table_ops Macro DATE 24/08/2010 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -19,6 +19,7 @@ # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS +import os def calc_table_ops(self, TABLE, ACTION, INFO, **args): """ @@ -51,7 +52,6 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args): DETRUIRE = self.get_cmd('DETRUIRE') # 0. faut-il utiliser une table dérivée - form_sens='\n... SENSIBILITE AU PARAMETRE %s (SD COMP %s)' if args['SENSIBILITE']: ncomp = self.jdc.memo_sensi.get_nocomp(TABLE.nom, args['SENSIBILITE'].nom) sdtab = table_jeveux(ncomp) @@ -151,7 +151,8 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args): tab.fromfunction(occ['NOM_PARA'], occ['FORMULE']) if INFO == 2: vectval = getattr(tab, occ['NOM_PARA']).values() - aster.affiche('MESSAGE', 'Ajout de la colonne %s : %s' % (occ['NOM_PARA']+repr(vectval))+'\n') + aster.affiche('MESSAGE', 'Ajout de la colonne %s : %s' \ + % (occ['NOM_PARA'], repr(vectval))) #---------------------------------------------- # 8. Traitement de AJOUT @@ -170,13 +171,12 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args): dprod = tab.dict_CREA_TABLE() if INFO == 2: - echo_mess = [] - echo_mess.append( '@-'*30+'\n' ) - echo_mess.append( tab ) + echo_mess = [''] + echo_mess.append( repr(tab) ) from pprint import pformat echo_mess.append( pformat(dprod) ) - echo_mess.append( '@-'*30+'\n' ) - texte_final = ' '.join(echo_mess) + echo_mess.append('') + texte_final = os.linesep.join(echo_mess) aster.affiche('MESSAGE', texte_final) # surcharge par le titre fourni diff --git a/Aster/Cata/cataSTA10/Macro/crea_elem_ssd_ops.py b/Aster/Cata/cataSTA10/Macro/crea_elem_ssd_ops.py new file mode 100644 index 00000000..8b37f325 --- /dev/null +++ b/Aster/Cata/cataSTA10/Macro/crea_elem_ssd_ops.py @@ -0,0 +1,265 @@ +#@ MODIF crea_elem_ssd_ops Macro DATE 03/01/2011 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# ====================================================================== + +def crea_elem_ssd_ops(self, NUME_DDL, INTERFACE, BASE_MODALE, + CALC_FREQ, SOLVEUR, **args): + """ + Enchainement des commandes : + CALC_MATR_ELEM + ASSE_MATRICE + MODE_ITER_SIMULT + MODE_STATIQUE + DEFI_INTERF_DYNA + DEFI_BASE_MODALE + MACR_ELEM_DYNA + """ + + from Accas import _F + + # On met le mot cle NUME_DDL dans une variable locale pour le proteger + numeddl=NUME_DDL + + if numeddl: + self.DeclareOut('_nume_ddl', numeddl) + + # On importe les definitions des commandes a utiliser dans la macro + CALC_MATR_ELEM = self.get_cmd('CALC_MATR_ELEM') + NUME_DDL = self.get_cmd('NUME_DDL') + ASSE_MATRICE = self.get_cmd('ASSE_MATRICE') + EXTR_MODE = self.get_cmd('EXTR_MODE') + MODE_ITER_SIMULT = self.get_cmd('MODE_ITER_SIMULT') + MODE_STATIQUE = self.get_cmd('MODE_STATIQUE') + DEFI_INTERF_DYNA = self.get_cmd('DEFI_INTERF_DYNA') + DEFI_BASE_MODALE = self.get_cmd('DEFI_BASE_MODALE') + MACR_ELEM_DYNA = self.get_cmd('MACR_ELEM_DYNA') + + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + mSolveur = SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste) + # SYME ne fait pas partie des mots cles lies a SOLVEUR + # dans MODE_STATIQUE et DEFI_BASE_MODALE + for i in mSolveur.keys(): + if mSolveur[i] == None or i == 'SYME' : + del mSolveur[i] + + _kelem = CALC_MATR_ELEM(CHARGE = args['CHARGE'], + OPTION = 'RIGI_MECA', + CARA_ELEM = args['CARA_ELEM'], + MODELE = args['MODELE'], + CHAM_MATER = args['CHAM_MATER'],) + + __melem = CALC_MATR_ELEM(CHARGE = args['CHARGE'], + OPTION = 'MASS_MECA', + CARA_ELEM = args['CARA_ELEM'], + MODELE = args['MODELE'], + CHAM_MATER = args['CHAM_MATER'],) + + _nume_ddl = NUME_DDL(MATR_RIGI = _kelem, + METHODE = SOLVEUR[0]['METHODE'], + RENUM = SOLVEUR[0]['RENUM'],) + + _matrigi = ASSE_MATRICE(NUME_DDL = _nume_ddl, + MATR_ELEM = _kelem,) + + __mmass = ASSE_MATRICE(NUME_DDL = _nume_ddl, + MATR_ELEM = __melem,) + + # recuperation des options de MODE_ITER_SIMULT (equivalent CALC_MODAL) + motscit = {} + motscfa = {} + + if CALC_FREQ['OPTION'] == 'PLUS_PETITE': + nbande = 1 + + if CALC_FREQ['OPTION'] == 'CENTRE': + nbande = 1 + + if CALC_FREQ['OPTION'] == 'BANDE': + nbande = len(CALC_FREQ['FREQ'])-1 + + motfilt = {} + motfilt['FILTRE_MODE'] = [] + for i in range(nbande): + if CALC_FREQ['OPTION'] == 'PLUS_PETITE': + motscfa['NMAX_FREQ'] = CALC_FREQ['NMAX_FREQ'] + + if CALC_FREQ['OPTION'] == 'CENTRE': + motscfa['FREQ'] = CALC_FREQ['FREQ'] + if CALC_FREQ['AMOR_REDUIT']: + motscfa['AMOR_REDUIT'] = CALC_FREQ['AMOR_REDUIT'] + motscfa['NMAX_FREQ'] = CALC_FREQ['NMAX_FREQ'] + + if CALC_FREQ['OPTION'] == 'BANDE': + motscfa['FREQ'] = (CALC_FREQ['FREQ'][i], CALC_FREQ['FREQ'][i+1]) + + motscit['CALC_FREQ'] = _F(OPTION =CALC_FREQ['OPTION'], + APPROCHE =CALC_FREQ['APPROCHE'], + **motscfa) + + __modes = MODE_ITER_SIMULT(MATR_A = _matrigi, + MATR_B = __mmass, + INFO = args['INFO'], + **motscit) + + motfilt['FILTRE_MODE'].append(_F(MODE=__modes, + TOUT_ORDRE='OUI',),) + + _mode_meca = EXTR_MODE(**motfilt) + + if BASE_MODALE[0]['TYPE'] == 'RITZ': + mcfactc = [] + mcfactm = [] + mcfacti = [] + arg_no = [] + arg_grno = [] + for i in range(len(INTERFACE)): + if BASE_MODALE[0]['NMAX_MODE_INTF']: + if INTERFACE[i]['TYPE'] == 'CRAIGB': + if INTERFACE[i]['NOEUD'] : + if isinstance(INTERFACE[i]['NOEUD'],(list,tuple)): + for noeu in INTERFACE[i]['NOEUD']: + arg_no.append(noeu) + else: + arg_no.append(INTERFACE[i]['NOEUD']) + if INTERFACE[i]['GROUP_NO'] : + if isinstance(INTERFACE[i]['GROUP_NO'],(list,tuple)): + for grno in INTERFACE[i]['GROUP_NO']: + arg_grno.append(grno) + else: + arg_grno.append(INTERFACE[i]['GROUP_NO']) + else: + arg_int = {} + if INTERFACE[i]['NOEUD'] : + arg_int['NOEUD'] = INTERFACE[i]['NOEUD'] + if INTERFACE[i]['GROUP_NO'] : + arg_int['GROUP_NO'] = INTERFACE[i]['GROUP_NO'] + arg_int['TOUT_CMP'] = 'OUI' + if INTERFACE[i]['TYPE'] == 'CRAIGB': + mcfactc.append( _F(**arg_int)) + elif INTERFACE[i]['TYPE'] == 'MNEAL': + mcfactm.append( _F(**arg_int)) + modstatc = {} + modstatm = {} + modstati = {} + lmodint = [] + if mcfactc: + modstatc['MODE_STAT'] = mcfactc + _mode_intf = MODE_STATIQUE(MATR_RIGI = _matrigi, + SOLVEUR = mSolveur, + **modstatc) + lmodint.append(_mode_intf) + if mcfactm: + modstatm['FORCE_NODALE'] = mcfactm + _mode_intf = MODE_STATIQUE(MATR_RIGI = _matrigi, + SOLVEUR = mSolveur, + **modstatm) + lmodint.append(_mode_intf) + if BASE_MODALE[0]['NMAX_MODE_INTF']: + arg_int = {} + if arg_no: + arg_int['NOEUD'] = arg_no + if arg_grno: + arg_int['GROUP_NO'] = arg_grno + arg_int['NBMOD'] = BASE_MODALE[0]['NMAX_MODE_INTF'] + arg_int['TOUT_CMP'] = 'OUI' + mcfacti.append( _F(**arg_int)) + modstati['MODE_INTERF'] = mcfacti + _mode_intf = MODE_STATIQUE(MATR_RIGI = _matrigi, + MATR_MASS = __mmass, + SOLVEUR = mSolveur, + **modstati) + lmodint.append(_mode_intf) + + interface = {} + mcfact = [] + freqnew = None + ifreq = INTERFACE[0]['FREQ'] + for i in range(len(INTERFACE)): + arg_int = {} + if INTERFACE[i]['NOEUD'] : + arg_int['NOEUD'] = INTERFACE[i]['NOEUD'] + if INTERFACE[i]['GROUP_NO'] : + arg_int['GROUP_NO'] = INTERFACE[i]['GROUP_NO'] + mcfact.append( _F(NOM = INTERFACE[i]['NOM'], + TYPE = INTERFACE[i]['TYPE'], + **arg_int)) + ifreq_i = INTERFACE[i]['FREQ'] + if ifreq != ifreq_i: + freqnew = ifreq_i + if freqnew: + UTMESS('A','SOUSTRUC2_12',valr=freqnew) + ifreq = freqnew + interface['INTERFACE'] = mcfact + + if args['INFO']: + interface['INFO'] = args['INFO'] + if ifreq: + interface['FREQ'] = ifreq + + _interf = DEFI_INTERF_DYNA(NUME_DDL = _nume_ddl, + **interface) + + base = {} + if args['INFO']: + base['INFO'] = args['INFO'] + mcfact = [] + + if BASE_MODALE[0]['TYPE'] == 'CLASSIQUE': + arg_base = {} + type_base = 'CLASSIQUE' + arg_base['NMAX_MODE'] = CALC_FREQ[0]['NMAX_FREQ'] + mcfact.append(_F(INTERF_DYNA = _interf, + MODE_MECA = _mode_meca, + **arg_base)) + + if BASE_MODALE[0]['TYPE'] == 'RITZ': + type_base = 'RITZ' + # il faut deux occurrences du mot cle facteur RITZ + arg_base = {} + if CALC_FREQ[0]['OPTION'] == 'PLUS_PETITE' or \ + CALC_FREQ[0]['OPTION'] == 'CENTRE': + arg_base['NMAX_MODE'] = CALC_FREQ[0]['NMAX_FREQ'] + + mcfact.append(_F(MODE_MECA = _mode_meca, + **arg_base)) + + arg_base = {} + if len(lmodint) > 0: # MODE_INTF ou MODE_STATIQUE doit etre a la 2 occ + if BASE_MODALE[0]['NMAX_MODE_INTF']: + arg_base['NMAX_MODE'] = BASE_MODALE[0]['NMAX_MODE_INTF'] + mcfact.append(_F(MODE_INTF = _mode_intf, + **arg_base)) + + if type_base == 'CLASSIQUE': + base['CLASSIQUE'] = mcfact + elif type_base == 'RITZ': + base['RITZ'] = mcfact + base['INTERF_DYNA'] = _interf + base['NUME_REF'] = _nume_ddl + + _base_modale = DEFI_BASE_MODALE( **base) + + elem = {} + elem['MATR_RIGI'] = _matrigi + elem['MATR_MASS'] = __mmass + + self.DeclareOut('macr_elem', self.sd) + macr_elem = MACR_ELEM_DYNA(BASE_MODALE = _base_modale, + **elem) + + return + diff --git a/Aster/Cata/cataSTA10/Macro/creation_donnees_homard.py b/Aster/Cata/cataSTA10/Macro/creation_donnees_homard.py index ccc45840..e182159d 100644 --- a/Aster/Cata/cataSTA10/Macro/creation_donnees_homard.py +++ b/Aster/Cata/cataSTA10/Macro/creation_donnees_homard.py @@ -1,30 +1,30 @@ -#@ MODIF creation_donnees_homard Macro DATE 15/03/2010 AUTEUR GNICOLAS G.NICOLAS +#@ MODIF creation_donnees_homard Macro DATE 11/05/2011 AUTEUR SELLENET N.SELLENET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== # RESPONSABLE GNICOLAS G.NICOLAS """ Cette classe crée le fichier de configuration permettant de lancer HOMARD depuis Code_Aster. """ -__revision__ = "V1.5" +__revision__ = "V1.10" __all__ = [ ] - + import os import os.path from types import ListType, TupleType @@ -34,7 +34,7 @@ try: from Utilitai.Utmess import UTMESS except ImportError: def UTMESS(code, idmess, valk=(), vali=(), valr=()): - """Clone de utmess si on ne reussit pas é le charger + """Clone de utmess si on ne reussit pas e le charger """ fmt = '\n <%s> <%s> %s %s %s\n\n' print fmt % (code, idmess, valk, vali, valr) @@ -45,12 +45,12 @@ class creation_donnees_homard: Ce sont : . le fichier de configuration . le fichier des données dans le cas d'information - - Arguments (stockés en tant qu'attribut) : + + Arguments (stockes en tant qu'attribut) : . nom_macro : nom de la macro-commande qui appelle : 'MACR_ADAP_MAIL' pour une adaptation 'MACR_INFO_MAIL' pour une information sur un maillage - . mots_cles : mots-clés de la macro-commande + . mots_cles : mots-cles de la macro-commande . dico_configuration : dictionnaire des options Attributs : @@ -62,10 +62,10 @@ class creation_donnees_homard: """ # ------------------------------------------------------------------------------ def __init__(self, nom_macro, mots_cles, dico_configuration ) : - """Construction + valeurs par défaut des attributs + """Construction + valeurs par defaut des attributs """ # -# 1. Vérification de la macro qui appelle +# 1. Verification de la macro qui appelle # d_aux = {} d_aux["MACR_ADAP_MAIL"] = ( "ADAP", "ADAPTATION" ) @@ -76,7 +76,7 @@ class creation_donnees_homard: else : UTMESS("F", 'HOMARD0_1') # -# 2. Données générales de cette initialisation +# 2. Données generales de cette initialisation # #gn for mot_cle in mots_cles.keys() : #gn print "mots_cles[", mot_cle, "] = ", mots_cles[mot_cle] @@ -105,13 +105,13 @@ class creation_donnees_homard: # ------------------------------------------------------------------------------ def int_to_str2 (self, entier) : """ - Transforme un entier compris entre 0 et 99 en une chaine sur deux caractéres + Transforme un entier positif en une chaine d'au moins deux caracteres """ -# print "\nArguments a l'entree de", __name__, ":", entier +# print "\nArguments à l'entree de", __name__, ":", entier # - try: + if type(entier) == type(0) : la_chaine = '%02d' % entier - except TypeError: + else : la_chaine = None # return la_chaine @@ -124,14 +124,14 @@ class creation_donnees_homard: return # ------------------------------------------------------------------------------ def creation_configuration (self) : - """Crée les données nécessaires é la configuration + """Cree les données necessaires à la configuration """ # message_erreur = None # while message_erreur is None : # -# 1. Les chaines liées aux numéros d'itération +# 1. Les chaines liées aux numeros d'iteration # if self.mode_homard == "ADAP" : niter = self.dico_configuration["niter"] @@ -169,7 +169,7 @@ class creation_donnees_homard: # # 4. Le type de bilan : il faut convertir la donnée textuelle en un entier, # produit de nombres premiers. -# Si rien n'est demandé, on met 1. +# Si rien n'est demande, on met 1. # aux = 1 dico_aux = {} @@ -248,7 +248,7 @@ class creation_donnees_homard: self.critere_raffinement = (d_aux[mot_cle][0], aux) #gn print "... self.critere_raffinement = ", self.critere_raffinement # -# 7.3. L'éventuel seuil de déraffinement +# 7.3. L'éventuel seuil de deraffinement # if self.TypeDera == "libre" : d_aux = {} @@ -262,17 +262,29 @@ class creation_donnees_homard: self.critere_deraffinement = (d_aux[mot_cle][0], aux) #gn print "... self.critere_deraffinement = ", self.critere_deraffinement # -# 7.4. Les niveaux extremes +# 7.4. Les profondeurs extremes de raffinement/deraffinement # - for mot_cle in [ "NIVE_MIN", "NIVE_MAX" ] : + saux = " " + for mot_cle in [ "NIVE_MIN", "NIVE_MAX", "DIAM_MIN" ] : if self.mots_cles.has_key(mot_cle) : if self.mots_cles[mot_cle] is not None : if mot_cle == "NIVE_MIN" : aux = "NiveauMi" - else : + elif mot_cle == "NIVE_MAX" : aux = "NiveauMa" + else : + aux = "DiametMi" self.niveau.append((aux, self.mots_cles[mot_cle])) - if len(self.niveau) == 2 : + saux += aux +# + if ( "DiametMi" in saux ) : +#gn print self.mots_cles["DIAM_MIN"] + if self.mots_cles["DIAM_MIN"] < 0 : + message_erreur = "Le diametre mini doit etre strictement positif. "+\ + "La valeur "+str(self.mots_cles["DIAM_MIN"])+" est incorrecte." + break +# + if ( ( "NiveauMi" in saux ) and ( "NiveauMa" in saux ) ) : #gn print self.mots_cles["NIVE_MIN"] #gn print self.mots_cles["NIVE_MAX"] if self.mots_cles["NIVE_MIN"] >= self.mots_cles["NIVE_MAX"] : @@ -330,7 +342,7 @@ class creation_donnees_homard: return self.fic_homard_niter, self.fic_homard_niterp1 # ------------------------------------------------------------------------------ def ouvre_fichier (self, nomfic_local) : - """Ouvre en écriture un fichier aprés l'avoir éventuellement détruit + """Ouvre en ecriture un fichier apres l'avoir eventuellement detruit """ codret_partiel = [0] ### print nomfic_local @@ -352,7 +364,7 @@ class creation_donnees_homard: def ecrire_ligne_configuration_0 (self, commentaire) : """Ecrit une ligne de commentaires du fichier de configuration Arguments : - . commentaire : le commentaire é écrire + . commentaire : le commentaire e ecrire """ # ligne = "#\n" @@ -380,7 +392,7 @@ class creation_donnees_homard: """Ecrit une ligne du fichier de configuration dans le cas : motcle + valeur Arguments : . motcle : le mot-cle HOMARD a ecrire - . valeur : la valeur associee + . valeur : la valeur associée """ # ligne = motcle + " " + str(valeur) + "\n" @@ -392,7 +404,7 @@ class creation_donnees_homard: """Ecrit une ligne du fichier de configuration dans le cas : motcle + valeur1 + valeur2 Arguments : . motcle : le mot-cle HOMARD a ecrire - . valeur : la valeur associee + . valeur : la valeur associée """ # ligne = motcle + " " + str(valeur1) + " " + str(valeur2) + "\n" @@ -411,7 +423,7 @@ class creation_donnees_homard: # fichier, nomfic_global = self.ouvre_fichier(self.Nom_Fichier_Configuration) # -# 2. Généralités +# 2. Generalites # self.ecrire_ligne_configuration_0("Generalites") self.ecrire_ligne_configuration_2("ModeHOMA", self.ModeHOMA) @@ -430,7 +442,7 @@ class creation_donnees_homard: self.ecrire_ligne_configuration_2("CCNoMNP1", self.CCNoMNP1) self.ecrire_ligne_configuration_2("CCMaiNP1", self.dico_configuration["Fichier_HOMARD_vers_ASTER"]) # - self.ecrire_ligne_configuration_0("Le répertoire des fichiers de bilan") + self.ecrire_ligne_configuration_0("Le repertoire des fichiers de bilan") self.ecrire_ligne_configuration_2("RepeInfo", self.dico_configuration["Rep_Calc_HOMARD_global"]) # # 4. Les fichiers HOMARD @@ -439,10 +451,11 @@ class creation_donnees_homard: if self.mode_homard == "ADAP" : self.ecrire_ligne_configuration_3("HOMaiN__", "M_"+self.str_niter , self.fic_homard_niter ) self.ecrire_ligne_configuration_3("HOMaiNP1", "M_"+self.str_niterp1, self.fic_homard_niterp1) - aux = "oui" - else : - aux = "non" - self.ecrire_ligne_configuration_2("EcriFiHO", aux) + if ( self.dico_configuration["niter"] == 0 ) : + aux = "TOUT" + else : + aux = "NP1" + self.ecrire_ligne_configuration_2("EcriFiHO", aux) # # 5. Le pilotage de l'adaptation # @@ -465,16 +478,17 @@ class creation_donnees_homard: # self.ecrire_ligne_configuration_0("L'indicateur d'erreur") self.ecrire_ligne_configuration_2("CCIndica", self.dico_configuration["Fichier_ASTER_vers_HOMARD"]) - self.ecrire_ligne_configuration_2("CCNoChaI", self.dico_configuration["Indicateur"]["NOM_MED"]) - for saux in self.dico_configuration["Indicateur"]["COMPOSANTE"] : - self.ecrire_ligne_configuration_2("CCCoChaI", saux) + self.ecrire_ligne_configuration_2("CCNoChaI", self.dico_configuration["Indicateur"]["NOM_CHAM_MED"]) + if self.dico_configuration["Indicateur"].has_key("COMPOSANTE") : + for saux in self.dico_configuration["Indicateur"]["COMPOSANTE"] : + self.ecrire_ligne_configuration_2("CCCoChaI", saux) if self.dico_configuration["Indicateur"].has_key("NUME_ORDRE") : self.ecrire_ligne_configuration_2("CCNumOrI", self.dico_configuration["Indicateur"]["NUME_ORDRE"]) self.ecrire_ligne_configuration_2("CCNumPTI", self.dico_configuration["Indicateur"]["NUME_ORDRE"]) - if self.mots_cles.has_key("TYPE_VALEUR_INDICA") : - self.ecrire_ligne_configuration_2("CCUsCmpI", self.mots_cles["TYPE_VALEUR_INDICA"]) + if self.mots_cles.has_key("USAGE_CMP") : + self.ecrire_ligne_configuration_2("CCUsCmpI", self.mots_cles["USAGE_CMP"]) # -# 5.3. Les éventuelles zones de raffinement +# 5.3. Les eventuelles zones de raffinement # if self.dico_configuration.has_key("Zones_raffinement") : dico_zone = {} @@ -509,25 +523,25 @@ class creation_donnees_homard: iaux = 0 for zone in self.dico_configuration["Zones_raffinement"] : iaux = iaux + 1 - self.ecrire_ligne_configuration_0("Zone de raffinement numéro "+str(iaux)) + self.ecrire_ligne_configuration_0("Zone de raffinement numero "+str(iaux)) jaux = dico_zone[zone["TYPE"]] self.ecrire_ligne_configuration_3(dico_zone["TYPE"], iaux, jaux) for aux in l_aux : if zone.has_key(aux) : self.ecrire_ligne_configuration_3(dico_zone[aux], iaux, zone[aux]) # -# 5.4. Les niveaux extremes +# 5.4. Les profondeurs extremes de raffinement/deraffinement # for aux in self.niveau : self.ecrire_ligne_configuration_2(aux[0], aux[1]) # # 5.5. L'usage de l'indicateur # - if self.mots_cles.has_key("TYPE_OPER_INDICA") : - if self.mots_cles["TYPE_OPER_INDICA"] is not None : - self.ecrire_ligne_configuration_2("CCModeFI", self.mots_cles["TYPE_OPER_INDICA"]) + if self.mots_cles.has_key("USAGE_CHAMP") : + if self.mots_cles["USAGE_CHAMP"] is not None : + self.ecrire_ligne_configuration_2("CCModeFI", self.mots_cles["USAGE_CHAMP"]) # -# 5.6. Les éventuels groupes de filtrage du raffinement/deraffinement +# 5.6. Les eventuels groupes de filtrage du raffinement/deraffinement # for cle in ( "GROUP_MA", "GROUP_NO" ) : if self.mots_cles.has_key(cle) : @@ -544,40 +558,41 @@ class creation_donnees_homard: self.ecrire_ligne_configuration_2("ModDegre", self.ModDegre) self.ecrire_ligne_configuration_2("CreJoint", self.CreJoint) # -# 5.8. L'éventuel maillage annexe +# 5.8. L'eventuel maillage annexe # if self.CCMaiAnn is not None : - self.ecrire_ligne_configuration_0("Maillage d'autre degré") + self.ecrire_ligne_configuration_0("Maillage d'autre degre") self.ecrire_ligne_configuration_2("ModDegre", "oui") self.ecrire_ligne_configuration_2("CCNoMAnn", self.CCMaiAnn) self.ecrire_ligne_configuration_2("CCMaiAnn", self.dico_configuration["Fichier_HOMARD_vers_ASTER"]) # -# 6. Les éventuels champs à mettre à jour +# 6. Les eventuels champs a mettre a jour # if self.dico_configuration.has_key("Champs") : - self.ecrire_ligne_configuration_0("Champs à mettre à jour") + self.ecrire_ligne_configuration_0("Champs a mettre e jour") self.ecrire_ligne_configuration_2("CCSolN__", self.dico_configuration["Fichier_ASTER_vers_HOMARD"]) self.ecrire_ligne_configuration_2("CCSolNP1", self.dico_configuration["Fichier_HOMARD_vers_ASTER"]) iaux = 0 for maj_champ in self.dico_configuration["Champs"] : iaux = iaux + 1 - self.ecrire_ligne_configuration_0("Mise à jour du champ numéro "+str(iaux)) - self.ecrire_ligne_configuration_3("CCChaNom", iaux, maj_champ["NOM_MED"]) + self.ecrire_ligne_configuration_0("Mise a jour du champ numero "+str(iaux)) + self.ecrire_ligne_configuration_3("CCChaNom", iaux, maj_champ["NOM_CHAM_MED"]) + self.ecrire_ligne_configuration_3("CCChaTIn", iaux, maj_champ["TYPE_MAJ"]) if maj_champ.has_key("NUME_ORDRE") : self.ecrire_ligne_configuration_3("CCChaNuO", iaux, maj_champ["NUME_ORDRE"]) self.ecrire_ligne_configuration_3("CCChaPdT", iaux, maj_champ["NUME_ORDRE"]) elif maj_champ.has_key("INST") : self.ecrire_ligne_configuration_3("CCChaIns", iaux, maj_champ["INST"]) # -# 7. L'éventuel suivi de frontière +# 7. L'eventuel suivi de frontiere # SuivFron = 1 # -# 7.1. A partir d'un maillage de la frontière +# 7.1. A partir d'un maillage de la frontiere # if self.dico_configuration.has_key("NOM_MED_MAILLAGE_FRONTIERE") : SuivFron = SuivFron * 2 - self.ecrire_ligne_configuration_0("Maillage de frontière") + self.ecrire_ligne_configuration_0("Maillage de frontiere") self.ecrire_ligne_configuration_2("CCFronti", self.dico_configuration["Fichier_ASTER_vers_HOMARD"]) self.ecrire_ligne_configuration_2("CCNoMFro", self.dico_configuration["NOM_MED_MAILLAGE_FRONTIERE"]) if self.mots_cles.has_key("GROUP_MA_FRONT") : @@ -593,6 +608,7 @@ class creation_donnees_homard: if self.dico_configuration.has_key("Frontiere_analytique") : SuivFron = SuivFron * 3 dico_frontiere = {} + dico_frontiere["NOM"] = "FANom" dico_frontiere["RAYON"] = "FARayon" dico_frontiere["X_CENTRE"] = "FAXCen" dico_frontiere["Y_CENTRE"] = "FAYCen" @@ -601,32 +617,37 @@ class creation_donnees_homard: dico_frontiere["Y_AXE"] = "FAYAxe" dico_frontiere["Z_AXE"] = "FAZAxe" l_aux = dico_frontiere.keys() - dico_frontiere["GROUP_MA"] = "FAGroupe" + dico_frontiere["FGNomGro"] = "FGNomGro" + dico_frontiere["FGNomFro"] = "FGNomFro" dico_frontiere["TYPE"] = "FAType" dico_frontiere["CYLINDRE"] = 1 dico_frontiere["SPHERE"] = 2 iaux = 0 + kaux = 0 for frontiere in self.dico_configuration["Frontiere_analytique"] : + iaux += 1 + self.ecrire_ligne_configuration_0("Description de la frontiere analytique numero "+str(iaux)) + jaux = dico_frontiere[frontiere["TYPE"]] + self.ecrire_ligne_configuration_3(dico_frontiere["TYPE"], iaux, jaux) + for aux in l_aux : + if frontiere.has_key(aux) : + self.ecrire_ligne_configuration_3(dico_frontiere[aux], iaux, frontiere[aux]) + self.ecrire_ligne_configuration_0("Lien de la frontiere analytique numero "+str(iaux)+" avec les groupes") if not type(frontiere["GROUP_MA"]) in EnumTypes : lt_aux = [ frontiere["GROUP_MA"] ] else : lt_aux = frontiere["GROUP_MA"] for group_ma in lt_aux : - iaux = iaux + 1 - self.ecrire_ligne_configuration_0("Description de la frontiere analytique numero "+str(iaux)) - jaux = dico_frontiere[frontiere["TYPE"]] - self.ecrire_ligne_configuration_3(dico_frontiere["TYPE"], iaux, jaux) - self.ecrire_ligne_configuration_3(dico_frontiere["GROUP_MA"], iaux, group_ma) - for aux in l_aux : - if frontiere.has_key(aux) : - self.ecrire_ligne_configuration_3(dico_frontiere[aux], iaux, frontiere[aux]) + kaux += 1 + self.ecrire_ligne_configuration_3(dico_frontiere["FGNomGro"], kaux, group_ma) + self.ecrire_ligne_configuration_3(dico_frontiere["FGNomFro"], kaux, frontiere["NOM"]) # # 7.3. Activation de la fonction # if ( self.dico_configuration.has_key("NOM_MED_MAILLAGE_FRONTIERE") or self.dico_configuration.has_key("Frontiere_analytique") ) : self.ecrire_ligne_configuration_2("SuivFron", SuivFron) # -# 8. Options particuliéres +# 8. Options particulieres # self.ecrire_ligne_configuration_0("Autres options") if self.mots_cles.has_key("LANGUE") : @@ -635,7 +656,7 @@ class creation_donnees_homard: self.ecrire_ligne_configuration_2("MessInfo", self.MessInfo) if self.dico_configuration["version_perso"] : VERSION_HOMARD = self.dico_configuration["VERSION_HOMARD"] - self.ecrire_ligne_configuration_2("DicoOSGM", "$HOMARD_USER/"+VERSION_HOMARD+"/CONFIG/typobj.stu") + self.ecrire_ligne_configuration_2("DicoOSGM", "$HOMARD_USER/"+VERSION_HOMARD+"/src/CONFIG/typobj.stu") # # 9. L'usage des mailles incompatibles avec HOMARD # @@ -643,7 +664,7 @@ class creation_donnees_homard: self.ecrire_ligne_configuration_0("Les mailles incompatibles avec HOMARD") self.ecrire_ligne_configuration_2("TypeElem", self.mailles_incompatibles) # -# 10. L'éventuel complement +# 10. L'eventuel complement # if self.dico_configuration.has_key("fichier_conf_suppl") : nomfic = self.dico_configuration["fichier_conf_suppl"] @@ -668,7 +689,7 @@ class creation_donnees_homard: return # ------------------------------------------------------------------------------ def ecrire_fichier_donnees (self) : - """Ecrit le fichier des donnees dans le cas d'une demande d'information + """Ecrit le fichier des données dans le cas d'une demande d'information """ message_erreur = None # diff --git a/Aster/Cata/cataSTA10/Macro/defi_sol_miss_ops.py b/Aster/Cata/cataSTA10/Macro/defi_sol_miss_ops.py index 3a5b8c7f..235a92a2 100644 --- a/Aster/Cata/cataSTA10/Macro/defi_sol_miss_ops.py +++ b/Aster/Cata/cataSTA10/Macro/defi_sol_miss_ops.py @@ -1,5 +1,22 @@ -#@ AJOUT defi_sol_miss_ops Macro +#@ MODIF defi_sol_miss_ops Macro DATE 14/06/2010 AUTEUR COURTOIS M.COURTOIS # -*- 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. +# ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS import os diff --git a/Aster/Cata/cataSTA10/Macro/dyna_iss_vari_ops.py b/Aster/Cata/cataSTA10/Macro/dyna_iss_vari_ops.py index c85a589e..57edffc7 100644 --- a/Aster/Cata/cataSTA10/Macro/dyna_iss_vari_ops.py +++ b/Aster/Cata/cataSTA10/Macro/dyna_iss_vari_ops.py @@ -1,4 +1,4 @@ -#@ MODIF dyna_iss_vari_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF dyna_iss_vari_ops Macro DATE 08/12/2010 AUTEUR ZENTNER I.ZENTNER # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -17,11 +17,14 @@ # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== + +# RESPONSABLE ZENTNER I.ZENTNER import os -def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNITE_RESU_FORC, - NB_FREQ, PAS, UNITE_RESU_IMPE, TYPE, MATR_GENE , OPTION,INFO, +def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, UNITE_RESU_FORC, + UNITE_RESU_IMPE, TYPE, MATR_GENE ,INFO, +# NB_FREQ, FREQ_INIT, FREQ_PAS, FREQ_MAX, OPTION, **args): """ Macro DYNA_ISS_VARI @@ -29,37 +32,97 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT ier=0 import numpy as NP from numpy import linalg - import aster + from math import pi, ceil, sqrt, floor, log, tanh + import aster from Accas import _F from Utilitai.Table import Table from Utilitai.Utmess import UTMESS - + + #-------------------------------------------------------------------------------- def get_group_coord(group): """Retourne les coordonnees des noeuds du groupe 'group' """ l_ind = NP.array(coll_grno.get('%-8s' % group, [])) - 1 return NP.take(t_coordo, l_ind, axis=0) - - # On importe les definitions des commandes a utiliser dans la macro - + #-------------------------------------------------------------------------------- + # On importe les definitions des commandes a utiliser dans la macro + # COMB_MATR_ASSE = self.get_cmd('COMB_MATR_ASSE') LIRE_IMPE_MISS = self.get_cmd('LIRE_IMPE_MISS') LIRE_FORC_MISS = self.get_cmd('LIRE_FORC_MISS') COMB_MATR_ASSE = self.get_cmd('COMB_MATR_ASSE') - CREA_CHAMP = self.get_cmd('CREA_CHAMP') DYNA_LINE_HARM = self.get_cmd('DYNA_LINE_HARM') DETRUIRE= self.get_cmd('DETRUIRE') - + + DEFI_FONCTION = self.get_cmd('DEFI_FONCTION') + CALC_FONCTION = self.get_cmd('CALC_FONCTION') CREA_TABLE = self.get_cmd('CREA_TABLE') - + REST_SPEC_TEMP = self.get_cmd('REST_SPEC_TEMP') + DEFI_LIST_REEL=self.get_cmd('DEFI_LIST_REEL') + # Comptage commandes + declaration concept sortant self.set_icmd(1) - self.DeclareOut('tab_out', self.sd) - macro='DYNA_ISS_VARI' -#-------------------------------------------------------- + macro='DYNA_ISS_VARI' + # Type de résultat + fonc_acce = args['FONC_SIGNAL'] + if fonc_acce !=None: + TYPE_RESU='TRANS' + self.DeclareOut('dyha', self.sd) + else: + TYPE_RESU='SPEC' + self.DeclareOut('tab_out', self.sd) + +#-------------------------------------------------------------------------------- + # -------- DISCRETISATION frequentielle ou temporelle -------- + + if TYPE_RESU=='SPEC': + FREQ_INIT= args['FREQ_INIT'] + NB_FREQ = args['NB_FREQ'] + PAS= args['FREQ_PAS'] + OPTION=args['OPTION'] + + if TYPE_RESU=='TRANS': + tt, vale_s=fonc_acce.Valeurs() + DT=tt[1]-tt[0] + + __foint=CALC_FONCTION( +# __foncaf=CALC_FONCTION( + FFT=_F( FONCTION =fonc_acce , +# METHODE='COMPLET', + METHODE='PROL_ZERO', + ), ); + + vale_fre, vale_re, vale_im =__foint.Valeurs() + NB_FREQ2= len(vale_fre) + PAS=1./(NB_FREQ2*DT) + NB_FREQ= int(floor(len(vale_fre)/2)) #signal nombre impair (floor(N/2)) ou signal nombre pair avec REST_SPEC_TEMP (prend N/2 pour N pair) +# NB_FREQ= int(floor(len(vale_fre)/2)+1) # signal nombre pair: N/2+1 + OMF =1./(2.*DT) + FREQ_INIT=0.0 + + # liste des frequences complete + l_freq_sig=[] + for k in range(NB_FREQ): + freqk=FREQ_INIT+PAS*k + l_freq_sig.append(freqk) + + + FREQ_FIN = args['FREQ_MAX'] + if FREQ_FIN !=None : + assert (FREQ_FIN > (NB_FREQ-1)*PAS), 'FREQ_FIN = ' + str(FREQ_FIN) +' < frequence de coupure: augmenter FREQ_FIN' + PAS = args['FREQ_PAS'] + NB_FREQ = int(ceil(FREQ_FIN/ PAS))+1 + FREQ_INIT =0.0 + +# NB_FREQ=NB_FREQ2 + print '', NB_FREQ, PAS, FREQ_INIT, (NB_FREQ-1)*PAS + # if INFO==2: + # aster.affiche('MESSAGE','DISCRETISATION UTILISATEUR : NB_FREQ, PAS, FREQ_FIN'+str(NB_FREQ)+' ,'+str(PAS)+' ,'+ str(NB_FREQ-1)*PAS)) +#--------------------------------------------------------------------------------------- +# -------------------------------------------------------------------------------------- dgene = MATR_GENE[0].cree_dict_valeurs(MATR_GENE[0].mc_liste) if dgene['MATR_AMOR'] != None: aster.affiche('MESSAGE',' MATR_AMOR existe') @@ -71,9 +134,7 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT ), ); aster.affiche('MESSAGE',' MATR_AMOR pas donnee, on prend AMOR_REDUIT=0.0,') -# dint = INTERF[0].cree_dict_valeurs(INTERF[0].mc_liste) -# dcoh = MATR_COHE[0].cree_dict_valeurs(MATR_COHE[0].mc_liste) - + from SD.sd_maillage import sd_maillage from SD.sd_nume_ddl_gd import sd_nume_ddl_gd from SD.sd_nume_ddl_gene import sd_nume_ddl_gene @@ -86,11 +147,11 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT # MAILLAGE nom_bamo = v_refa_rigi[0] nume_ddl = aster.getvectjev(nom_bamo[0:8] + ' .REFD ' )[3] - nom_mail = aster.getvectjev( nume_ddl[0:19] + '.REFN ' )[0] + nom_mail = aster.getvectjev( nume_ddl[0:14] + '.NUME.REFN ' )[0] maillage = sd_maillage(nom_mail) # MODELE, DDLGENE nom_ddlgene = v_refa_rigi[1] - nom_modele = aster.getvectjev( nume_ddl[0:19] + '.LILI ' )[1] + nom_modele = aster.getvectjev( nume_ddl[0:14] + '.NUME.LILI ' )[1] resultat = self.get_concept(nom_bamo) nume_ddlgene = self.get_concept(nom_ddlgene) modele = self.get_concept(nom_modele[0:8]) @@ -111,14 +172,16 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT GROUP_NO_INTER=INTERF['GROUP_NO_INTERF'] noe_interf = get_group_coord(GROUP_NO_INTER) nbno, nbval = noe_interf.shape + + del nume_ddl, nom_mail, nom_modele if INFO==2: aster.affiche('MESSAGE','NBNO INTERFACE : '+str(nbno)) - # MODES - iret,nbmodt,kbid=aster.dismoi('F','NB_MODES_TOT',nom_bamo,'RESULTAT') - iret,nbmodd,kbid=aster.dismoi('F','NB_MODES_DYN',nom_bamo,'RESULTAT') - iret,nbmods,kbid=aster.dismoi('F','NB_MODES_STA',nom_bamo,'RESULTAT') + # MODES nbmodt2 = MATR_GENE['MATR_RIGI'].DESC.get()[1] + iret,nbmodd,kbid=aster.dismoi('F','NB_MODES_DYN', nom_bamo,'RESULTAT') + iret,nbmods,kbid=aster.dismoi('F','NB_MODES_STA', nom_bamo,'RESULTAT') + iret,nbmodt,kbid=aster.dismoi('F','NB_MODES_TOT',nom_bamo,'RESULTAT') if nbmodt2 != nbmodt: UTMESS('F','ALGORITH5_42') @@ -126,22 +189,47 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT texte = 'NOMBRE DE MODES: '+str(nbmodt)+' MODES DYNAMIQUES: '+str(nbmodd)+' MODES STATIQUES: '+str(nbmods) aster.affiche('MESSAGE',texte) aster.affiche('MESSAGE','COMPOSANTE '+NOM_CMP) - SPEC = NP.zeros((NB_FREQ,nbmodt,nbmodt)) + 1j -# -#--------------------------------------------------------------------- - # BOUCLE SUR LES FREQUENCES + + + if TYPE_RESU=="SPEC": + SPEC = NP.zeros((NB_FREQ,nbmodt,nbmodt))+1j + if TYPE_RESU=="TRANS": + VEC = NP.zeros((NB_FREQ,nbmodt))+1j + abscisse = [None]*NB_FREQ + + # PARAMETRES fonction de cohérence VITE_ONDE = MATR_COHE['VITE_ONDE'] alpha = MATR_COHE['PARA_ALPHA'] - abscisse = [None]*NB_FREQ + +# # PARAMETRE nom_champ +# cham_calc=NOM_CHAM +# print 'NOM_CHAMP ',cham_calc +# if cham_calc=='DEPL': +# ii_cham=1 +# elif cham_calc=='VITE': +# ii_cham=2 +# elif cham_calc=='ACCE': +# ii_cham=3 + + # POUR TRANS, on sort le champ en dépalcement: c'est équivalen du champ en deplacement si on applique un signal en ACCE + cham_calc='DEPL' + ii_cham=1 - for k in range(0,NB_FREQ): - freqk=FREQ_INIT+PAS*k - aster.affiche('MESSAGE','FREQUENCE DE CALCUL: '+str(freqk)) - # Matrice de coherence +#--------------------------------------------------------------------- +#--------------------------------------------------------------------- + # BOUCLE SUR LES FREQUENCES + for k in range(NB_FREQ): + freqk=FREQ_INIT+PAS*k + if INFO==2: + aster.affiche('MESSAGE','FREQUENCE DE CALCUL: '+str(freqk)) + +# #--------------------------------------------------------- +# # Matrice de coherence XX=noe_interf[:,0] YY=noe_interf[:,1] - +# +# # ----MITA & LUCO XN=NP.repeat(XX,nbno) YN=NP.repeat(YY,nbno) XR=NP.reshape(XN,(nbno,nbno)) @@ -151,8 +239,26 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT DX=XR-XRT DY=YR-YRT DIST=DX**2+DY**2 - COHE=NP.exp(-(DIST*(alpha*freqk/VITE_ONDE)**2.)) + COHE=NP.exp(-(DIST*(alpha*freqk/VITE_ONDE)**2.)) + +# #----ABRAHAMSON (EPRI) +# p_a1=1.647 +# p_a2=1.01 +# p_a3=0.4 +# p_n1=7.02 +# # p_n2=1.685 +# COHE=NP.zeros((nbno,nbno)) +# for no1 in range(nbno): +# for no2 in range(nbno): +# dist_xi=sqrt((XX[no1]-XX[no2])**2+(YY[no1]-YY[no2])**2) +# p_n2=5.1-0.51*log(dist_xi+10.) +# pfc=-1.886+2.221*log(4000./(dist_xi+1.)+1.5) +# term1=1.+(freqk*tanh(p_a3*dist_xi)/(p_a1*pfc))**p_n1 +# term2=1.+(freqk*tanh(p_a3*dist_xi)/(p_a2*pfc))**p_n2 +# COHE[no1,no2]=1./sqrt(term1* term2) +# + #--------------------------------------------------------- # On desactive temporairement les FPE qui pourraient etre generees (a tord!) par blas aster.matfpe(-1) eig, vec =linalg.eig(COHE) @@ -165,17 +271,15 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT order = (NP.argsort(eig)[::-1]) eig = NP.take(eig, order) vec = NP.take(vec, order, 0) - + #----------------------- # Nombre de modes POD a retenir - etot=NP.sum(NP.diag(COHE)) + + etot=NP.sum(eig**2) ener=0.0 nbme=0 - - if INFO==2: - aster.affiche('MESSAGE','ETOT :'+str(etot)) while nbme < nbno: - ener= eig[nbme]+ener + ener= eig[nbme]**2+ener prec=ener/etot nbme=nbme+1 if INFO==2: @@ -183,12 +287,13 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT if prec > PRECISION : break - aster.affiche('MESSAGE','NOMBRE DE MODES POD RETENUS : '+str(nbme)) - aster.affiche('MESSAGE','PRECISION (ENERGIE RETENUE) : '+str(prec)) + if INFO==2: + aster.affiche('MESSAGE','NOMBRE DE MODES POD RETENUS : '+str(nbme)) + aster.affiche('MESSAGE','PRECISION (ENERGIE RETENUE) : '+str(prec)) PVEC=NP.zeros((nbme,nbno)) for k1 in range(0,nbme): - PVEC[k1, 0:nbno]=NP.sqrt(eig[k1])*vec[k1] + PVEC[k1, 0:nbno]=NP.sqrt(eig[k1])*vec[k1] # CALCUL DE FS variable------------------------------- XO=NP.zeros((nbme,nbmods)) if NOM_CMP=='DX': @@ -197,7 +302,6 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT COMP = 2 elif NOM_CMP=='DZ': COMP = 3 - #---------MODES interface # ----- boucle sur les modes statiques for mods in range(0,nbmods): @@ -216,19 +320,20 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT som=NP.sum(MCMP) max1=NP.max(MCMP) min1=NP.min(MCMP) - maxm=NP.max([NP.abs(max1), NP.abs(min1)]) - #CALCUL DE XO + maxm=NP.max([abs(max1),abs(min1)]) + + #-------------CALCUL DE XO ------------- # on recupere la composante COMP (dx,dy,dz) des modes et on projete # CAS 1: MODES DE CORPS RIGIDE if INTERF['MODE_INTERF'] =='CORP_RIGI': for modp in range(0,nbme): #modes de translation if mods+1 <=3: - if NP.abs(som)<10.E-6: + if abs(som)<10.E-6: XO[modp,mods]=0.0 else : fact=1./som - XO[modp,mods]=fact*NP.inner(MCMP,PVEC[modp]) + XO[modp,mods]=fact*abs(NP.inner(MCMP,PVEC[modp])) #modes de rotation else: if maxm<10.E-6: @@ -243,19 +348,18 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT # CAS 2: MODES EF if INTERF['MODE_INTERF'] =='TOUT': for modp in range(0,nbme): - if NP.abs(som)<10.E-6: + if abs(som)<10.E-6: if maxm<10.E-6: XO[modp,mods]=0.0 else: UTMESS('F','UTILITAI5_89') else: fact=1./som - XO[modp,mods]=fact*NP.inner(MCMP,PVEC[modp]) + XO[modp,mods]=fact*abs(NP.inner(MCMP,PVEC[modp])) DETRUIRE(CONCEPT=_F(NOM=(__CHAM)),INFO=1) - #----Impedances etc.----------------------------------------------------------------- - + #----Impedances + force sismique.----------------------------------------------------------------- if k>0: DETRUIRE(CONCEPT=_F(NOM=(__impe,__fosi,__rito)),INFO=1) @@ -272,30 +376,35 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT COEF_C=1.0+0.j,), ), SANS_CMP='LAGR', - ); + ); + + # on cree __fosi pour RECU_VECT_GENE_C plus loin + __fosi = LIRE_FORC_MISS(BASE=resultat, NUME_DDL_GENE=nume_ddlgene, NOM_CMP=NOM_CMP, - NOM_CHAM='DEPL', + NOM_CHAM='DEPL', UNITE_RESU_FORC = UNITE_RESU_FORC, FREQ_EXTR=freqk,); + + # impedance MIMPE=__impe.EXTR_MATR_GENE() # extraction de la partie modes interface KRS = MIMPE[nbmodd:nbmodt,nbmodd:nbmodt] - - # force sismique pour verif -# FS0=__fosi.EXTR_VECT_GENE_C() -# FSE=FS0[nbmodd:nbmodt][:] - SP=NP.zeros((nbmodt,nbmodt)) - for k1 in range(0,nbme): - # calcul de la force sismique mode POD par mode POD - FS = NP.dot(KRS,XO[k1]) + + + if TYPE_RESU=="TRANS": + # force sismique resultante: somme des mode POD + XO_s=NP.sum(XO,0) + FS = NP.dot(KRS,XO_s) Fzero=NP.zeros((1,nbmodd)) FS2=NP.concatenate((Fzero,NP.reshape(FS,(1,nbmods))),1) - # Calcul harmonique - __fosi.RECU_VECT_GENE_C(FS2[0]) - __dyge = DYNA_LINE_HARM(MODELE=modele, + + # Calcul harmonique + __fosi.RECU_VECT_GENE_C(FS2[0]) + __dyge = DYNA_LINE_HARM( + MODELE=modele, MATR_MASS = MATR_GENE['MATR_MASS'], MATR_RIGI = __rito, FREQ = freqk, @@ -303,53 +412,177 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT EXCIT =_F ( VECT_ASSE = __fosi, COEF_MULT= 1.0, ), - ); - # recuperer le vecteur modal depl calcule par dyge + ); + # recuperer le vecteur modal depl calcule par dyge desc = __dyge.DESC.get() - assert desc[0].strip() == 'DEPL', 'Champ DEPL non trouvé' - nomcham = __dyge.TACH.get()[1][0].strip() + assert desc[ii_cham-1].strip() ==cham_calc , 'Champ'+cham_calc+ 'non trouvé' + + nomcham = __dyge.TACH.get()[ii_cham][0].strip() cham = sd_cham_gene(nomcham) - RS = NP.array(cham.VALE.get()) - SP=SP+RS*NP.conj(RS[:,NP.newaxis]) + RS = NP.array(cham.VALE.get()) DETRUIRE(CONCEPT=_F(NOM=(__dyge)),INFO=1) + + + if TYPE_RESU=="SPEC": + SP=NP.zeros((nbmodt,nbmodt)) + for k1 in range(0,nbme): + # calcul de la force sismique mode POD par mode POD + FS = NP.dot(KRS,XO[k1]) + Fzero=NP.zeros((1,nbmodd)) + FS2=NP.concatenate((Fzero,NP.reshape(FS,(1,nbmods))),1) + # Calcul harmonique + __fosi.RECU_VECT_GENE_C(FS2[0]) + __dyge = DYNA_LINE_HARM( + MODELE=modele, + MATR_MASS = MATR_GENE['MATR_MASS'], + MATR_RIGI = __rito, + FREQ = freqk, + MATR_AMOR = __ma_amort, + EXCIT =_F ( VECT_ASSE = __fosi, + COEF_MULT= 1.0, + ), + ); + # recuperer le vecteur modal depl calcule par dyge + desc = __dyge.DESC.get() + assert desc[ii_cham-1].strip() ==cham_calc , 'Champ'+cham_calc+ 'non trouvé' + + nomcham = __dyge.TACH.get()[ii_cham][0].strip() + cham = sd_cham_gene(nomcham) + RS = NP.array(cham.VALE.get()) + DETRUIRE(CONCEPT=_F(NOM=(__dyge)),INFO=1) + # stockage des matrices résultats: sum(s_q s_q* ) + SP=SP+RS*NP.conj(RS[:,NP.newaxis]) + + + +#-------------------------------------------- +# stockage de résultats pour toutes les fréquences calculées + + if TYPE_RESU=="SPEC": #SPEC = (NB_FREQ,nbmodt,nbmodt) + SPEC[k]=SP + if TYPE_RESU=="TRANS": #VEC (NB_FREQ,nbmodt) + VEC[k]=RS + + abscisse[k]= freqk - SPEC[k]=SP +# DETRUIRE(CONCEPT=_F(NOM=(__impe,__fosi,__rito)),INFO=1) - abscisse[k]= freqk +##------------------------------------------------------------------------------------------------------------------------- +##-------------------------------------------------------------------------------------------------------------------------- +# Creation des sorties : table_fonction pour SPEC ou dyna_trans pour TRANS +#-------------------------------------------------------------------------------------------------------------------------- +#- + aster.affiche('MESSAGE','TYPE_RESU : '+TYPE_RESU) ##--------------------------------------------------------------------- -# Ecriture des tables +# Si SPEC: Ecriture des tables #--------------------------------------------------------------------- + if TYPE_RESU=='SPEC': + # ------ CREATION DE L OBJET TABLE - tab = Table() - tab.append({'NOM_CHAM' : 'DSP', 'OPTION' : 'TOUT', 'DIMENSION' : nbmodt}) - for k2 in range(nbmodt): - if OPTION =='DIAG' : # on ecrit uniquement les termes diagonaux (autospectres) de la matrice - foncc=[] - for k in range(NB_FREQ) : - foncc.append(abscisse[k]) - foncc.append(SPEC[k][k2,k2].real) - foncc.append(SPEC[k][k2,k2].imag) - _f = DEFI_FONCTION(NOM_PARA='FREQ', - NOM_RESU='SPEC', - VALE_C = foncc ) - # Ajout d'une ligne dans la Table - tab.append({'NUME_ORDRE_I' : k2+1, 'NUME_ORDRE_J' : k2+1, 'FONCTION_C' : _f.nom}) - - else: # on ecrit tout - for k1 in range(k2+1): + tab = Table() + tab.append({'NOM_CHAM' : 'DSP', 'OPTION' : 'TOUT', 'DIMENSION' : nbmodt}) + for k2 in range(nbmodt): + if OPTION =='DIAG' : # on ecrit uniquement les termes diagonaux (autospectres) de la matrice foncc=[] for k in range(NB_FREQ) : - foncc.append(abscisse[k]) - foncc.append(SPEC[k][k1,k2].real) - foncc.append(SPEC[k][k1,k2].imag) + foncc.append(abscisse[k]) + foncc.append(SPEC[k][k2,k2].real) + foncc.append(SPEC[k][k2,k2].imag) _f = DEFI_FONCTION(NOM_PARA='FREQ', + NOM_RESU='SPEC', + VALE_C = foncc ) + # Ajout d'une ligne dans la Table + tab.append({'NUME_ORDRE_I' : k2+1, 'NUME_ORDRE_J' : k2+1, 'FONCTION_C' : _f.nom}) + + else: # on ecrit tout + for k1 in range(k2+1): + foncc=[] + for k in range(NB_FREQ) : + foncc.append(abscisse[k]) + foncc.append(SPEC[k][k1,k2].real) + foncc.append(SPEC[k][k1,k2].imag) + _f = DEFI_FONCTION(NOM_PARA='FREQ', NOM_RESU='SPEC', VALE_C = foncc ) # Ajout d'une ligne dans la Table - tab.append({'NUME_ORDRE_I' : k1+1, 'NUME_ORDRE_J' : k2+1, 'FONCTION_C' : _f.nom}) + tab.append({'NUME_ORDRE_I' : k1+1, 'NUME_ORDRE_J' : k2+1, 'FONCTION_C' : _f.nom}) # Creation du concept en sortie - dict_keywords = tab.dict_CREA_TABLE() - tab_out = CREA_TABLE(TYPE_TABLE='TABLE_FONCTION', + dict_keywords = tab.dict_CREA_TABLE() + tab_out = CREA_TABLE(TYPE_TABLE='TABLE_FONCTION', **dict_keywords) + +#- +##--------------------------------------------------------------------- +# Si TRANS: Ecriture de tran_gene +#--------------------------------------------------------------------- +# 1) on cree un concept harm_gene (factice) et le remplit a l'aide de putvectjev avec les bonnes valeurs, +# 2) On interpole les valeurs non calculés (l_freq_sig) +# 3) puis on fait la FFT pour obtenir le signal temporel + + elif TYPE_RESU=='TRANS': + + __lfre = DEFI_LIST_REEL( VALE = list(l_freq_sig), ) ; +# print ' creation SD DYNA_LINE_HARM' + # on cree la SD resultat - factice (le champ ACCE sera remplace dans la suit par celui calcule) + __dyge0 = DYNA_LINE_HARM( + MODELE=modele, + MATR_MASS = MATR_GENE['MATR_MASS'], + MATR_RIGI = __rito, + LIST_FREQ= __lfre, #tuple(l_freq_sig), + MATR_AMOR = __ma_amort, + EXCIT =_F ( VECT_ASSE = __fosi, + COEF_MULT_C=1., + ), + ); + +# ATTENTION: on sort le champ en dépalcement: c'est équivalent au champ en acceleration car on a applique un signal en ACCE pour fosi en acce + # # cela evite de diviser pr w2 pour intégrer l'acceleration (erreurs numeriques au point 0) + # # on remplace donc le champ en acceleration + cham_calc='ACCE' + ii_cham=3 + +# print ' putvectjev' +# si tous les point on été calculés: pas d'interpolation + if FREQ_FIN ==None : + for k,freqk in enumerate(l_freq_sig): + coef_a=(vale_re[k]+vale_im[k]*1.j) + VEC_comp=VEC[k]*coef_a + nomcham = __dyge0.TACH.get()[ii_cham][k].strip() + tup_re=tuple(VEC_comp.real) + tup_im=tuple(VEC_comp.imag) + aster.putvectjev( nomcham + '.VALE ', nbmodt,tuple(range(1,nbmodt+1)),tup_re,tup_im,1 ) + + else: + + for k,freqk in enumerate(l_freq_sig): + coef_a=(vale_re[k]+vale_im[k]*1.j) + # ------------ interpolation du vecteur POD VEC (NB_FREQ, nbmodt) + vale_i=NP.searchsorted(abscisse, freqk) +# print freqk, vale_i, abscisse[vale_i-1], abscisse[vale_i] + if vale_i ==0: + VEC_comp=VEC[0]*coef_a + VEC_real=VEC_comp.real + VEC_imag=VEC_comp.imag + else: + dfp=(freqk-abscisse[vale_i-1])/(abscisse[vale_i]-abscisse[vale_i-1]) + VEC_comp=(VEC[vale_i-1]+dfp*(VEC[vale_i]-VEC[vale_i-1]))*coef_a + VEC_real=VEC_comp.real + VEC_imag=VEC_comp.imag + nomcham = __dyge0.TACH.get()[ii_cham][k].strip() + tup_re=tuple(VEC_real) + tup_im=tuple(VEC_imag) + aster.putvectjev( nomcham + '.VALE ', nbmodt,tuple(range(1,nbmodt+1)),tup_re,tup_im,1 ) + + + print 'REST_SPEC_TEMP' + + dyha= REST_SPEC_TEMP( RESU_GENE = __dyge0 , +# METHODE = 'PROL_ZERO' , + SYMETRIE = 'NON' , # signal non symmétrique: a completer +# SYMETRIE = 'OUI' , # pas de prolongation + NOM_CHAM = 'ACCE' ); + + + return ier diff --git a/Aster/Cata/cataSTA10/Macro/exec_logiciel_ops.py b/Aster/Cata/cataSTA10/Macro/exec_logiciel_ops.py index f22b7551..1f81cdbe 100644 --- a/Aster/Cata/cataSTA10/Macro/exec_logiciel_ops.py +++ b/Aster/Cata/cataSTA10/Macro/exec_logiciel_ops.py @@ -1,8 +1,8 @@ -#@ MODIF exec_logiciel_ops Macro DATE 15/03/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF exec_logiciel_ops Macro DATE 15/03/2011 AUTEUR ASSIRE A.ASSIRE # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -24,11 +24,71 @@ import os import os.path as osp import traceback import shutil +import tempfile from types import ListType, TupleType EnumTypes = (ListType, TupleType) +cmd_ssh = "%(ssh)s -p %(port)s -o BatchMode=yes -o ConnectTimeout=2 -o ChallengeResponseAuthentication=yes -o PasswordAuthentication=no -o StrictHostKeyChecking=no %(user_machine)s '%(cmd)s'" +cmd_scp = "%(scp)s -P %(port)s -o BatchMode=yes -o ConnectTimeout=2 -o ChallengeResponseAuthentication=yes -o PasswordAuthentication=no -o StrictHostKeyChecking=no %(src)s %(dst)s" + +#cmd_ssh = "%(ssh)s -p %(port)s %(user_machine)s '%(cmd)s'" +#cmd_scp = "%(scp)s -P %(port)s %(src)s %(dst)s" + +exe_ssh = 'ssh' +exe_scp = 'scp' + +tmpdir = '/tmp' + +debug = False + +# ------------------------------------------------------------------------------ +def ExecCommand_SSH(scmd, alt_comment='', verbose=False, separated_stderr=True): + """ Lance une commande distante via SSH + Recupere les differents problemes liés à SSH + """ + import aster + from Utilitai.Utmess import UTMESS + from Utilitai.System import ExecCommand + + iret, output, error = ExecCommand(scmd, alt_comment, verbose=False, separated_stderr=True) + + if debug: + print 'scmd=', scmd + print 'iret=', iret + print 'output=', output + print 'error=', error + + if iret != 0: + # on dump l'output et l'error + UTMESS('I', 'EXECLOGICIEL0_8', valk=scmd, print_as='E') + UTMESS('I', 'EXECLOGICIEL0_9', valk=output, print_as='E') + UTMESS('I', 'EXECLOGICIEL0_10', valk=error, print_as='E') + + # Probleme de cle SSH + if error.find("Permission denied")!=-1: + UTMESS('F', 'EXECLOGICIEL0_14', valk=scmd) + + # Probleme d'adresse IP ou de hostname + elif error.find("Name or service not known")!=-1: + UTMESS('F', 'EXECLOGICIEL0_15', valk=scmd) + + # Probleme de port SSH + elif error.find("Connection refused")!=-1: + UTMESS('F', 'EXECLOGICIEL0_16', valk=scmd) + + # Probleme d'acces au logiciel/script distant + elif error.find("Aucun fichier ou dossier de ce type")!=-1: + UTMESS('F', 'EXECLOGICIEL0_17', valk=scmd) + + # Autre probleme non determinable + else: + UTMESS('F', 'EXECLOGICIEL0_18', valk=scmd) + + return iret, output, error + + # ------------------------------------------------------------------------------ -def exec_logiciel_ops(self, LOGICIEL, ARGUMENT, MAILLAGE, CODE_RETOUR_MAXI, INFO, **args): +def exec_logiciel_ops(self, LOGICIEL, ARGUMENT, MACHINE_DISTANTE, MAILLAGE, SALOME, CODE_RETOUR_MAXI, INFO, **args): """ Macro IMPR_FONCTION permettant d'imprimer dans un fichier des fonctions, colonnes de table... @@ -39,11 +99,13 @@ def exec_logiciel_ops(self, LOGICIEL, ARGUMENT, MAILLAGE, CODE_RETOUR_MAXI, INFO from Utilitai.Utmess import UTMESS from Utilitai.System import ExecCommand from Utilitai.UniteAster import UniteAster - + from Stanley.salomeRunScript import MakeTempScript, DelTempScript, RunScript + from Noyau.N_types import is_enum + PRE_GMSH = self.get_cmd("PRE_GMSH") PRE_GIBI = self.get_cmd("PRE_GIBI") LIRE_MAILLAGE = self.get_cmd("LIRE_MAILLAGE") - + ier=0 # La macro compte pour 1 dans la numerotation des commandes self.set_icmd(1) @@ -57,51 +119,247 @@ def exec_logiciel_ops(self, LOGICIEL, ARGUMENT, MAILLAGE, CODE_RETOUR_MAXI, INFO # paramètres nécessaires pour écrire la ligne de commande # !! d_para['options'] est une liste !! d_para = {'prog' : '', 'options' : ''} - + l_args = [] if ARGUMENT != None: l_args = ARGUMENT[:] if type(l_args) not in EnumTypes: l_args = [l_args,] - + + + #---------------------------------------------- + # 0. Prepare les parametres dans le cas d'une execution sur une machine distante + + if MACHINE_DISTANTE != None: + mcf = MACHINE_DISTANTE[0] + dMCF = mcf.cree_dict_valeurs(mcf.mc_liste) + else: + dMCF = {'SSH_ADRESSE': 'localhost', 'SSH_PORT': 22} + + + #---------------------------------------------- + # 0. Prepare les parametres dans le cas d'une execution SALOME + if SALOME != None: + mcf = SALOME[0] + dMCFS = mcf.cree_dict_valeurs(mcf.mc_liste) + + # Cas ou SALOME_HOST est different de SSH_ADRESSE ou que MACHINE_DISTANTE / SSH_ADRESSE n'est pas defini + if not dMCFS['SALOME_HOST'] in [ 'localhost', dMCF['SSH_ADRESSE'] ]: + MACHINE_DISTANTE = True + dMCF['SSH_ADRESSE'] = dMCFS['SALOME_HOST'] + if dMCFS['SALOME_HOST'] != dMCF['SSH_ADRESSE']: + UTMESS('A','EXECLOGICIEL0_22') + + + #---------------------------------------------- + # 0. Prepare les parametres dans le cas d'une execution sur une machine distante + if MACHINE_DISTANTE != None: + + if dMCF.has_key('SSH_LOGIN') and dMCF['SSH_LOGIN'] != None: user_machine = '%s@%s' % (dMCF['SSH_LOGIN'], dMCF['SSH_ADRESSE']) + else: user_machine = '%s' % dMCF['SSH_ADRESSE'] + + if dMCF.has_key('SSH_PORT') and dMCF['SSH_PORT'] != None: port = dMCF['SSH_PORT'] + else: port = None + + #---------------------------------------------- # 1. Préparation des données # 1.1. EXEC_LOGICIEL standard - if MAILLAGE == None: + if MAILLAGE == None and SALOME == None: mode_lancement = CMD_EXTERNE cmd = '%(prog)s %(options)s' - + # 1.2. Cas "lancement d'un mailleur" - else: + elif MAILLAGE != None: mcf = MAILLAGE[0] dMCF = mcf.cree_dict_valeurs(mcf.mc_liste) d_para['fichIN'] = 'fort.%d' % dMCF['UNITE_GEOM'] d_para['fichOUT'] = 'fort.%d' % dMCF['UNITE'] if osp.exists(d_para['fichOUT']): os.remove(d_para['fichOUT']) - + if dMCF['FORMAT'] == 'GMSH': mode_lancement = CMD_EXTERNE cmd = '%(prog)s %(options)s -o %(fichOUT)s %(fichIN)s' d_para['prog'] = osp.join(aster.repout(), 'gmsh') d_para['options'] = ('-3',) - + elif dMCF['FORMAT'] == 'GIBI': mode_lancement = CMD_EXTERNE cmd = '%(prog)s %(options)s %(fichIN)s %(fichOUT)s' d_para['prog'] = osp.join(aster.repout(), 'gibi') - + elif dMCF['FORMAT'] == 'SALOME': mode_lancement = EXECFILE if len(l_args) < 1: UTMESS('F','EXECLOGICIEL0_1') else: d_para['fichMED'] = l_args[0] - + + + # Cas "lancement d'un script salome" + elif SALOME != None: + mode_lancement = CMD_EXTERNE + cmd = '%(prog)s %(options)s' + + mcf = SALOME[0] + dMCF = mcf.cree_dict_valeurs(mcf.mc_liste) + #print dMCF + + # Mot-cles + if dMCF.has_key('FICHIERS_ENTREE') and dMCF['FICHIERS_ENTREE'] != None: FICHIERS_ENTREE = dMCF['FICHIERS_ENTREE'] + else: FICHIERS_ENTREE = [] + + if dMCF.has_key('FICHIERS_SORTIE') and dMCF['FICHIERS_SORTIE'] != None: FICHIERS_SORTIE = dMCF['FICHIERS_SORTIE'] + else: FICHIERS_SORTIE = [] + + if dMCF.has_key('SALOME_RUNAPPLI') and dMCF['SALOME_RUNAPPLI'] != None: RUNAPPLI = dMCF['SALOME_RUNAPPLI'] + else: RUNAPPLI = os.path.join( aster.repout(), 'runSalomeScript' ) + + if MACHINE_DISTANTE is None: + if dMCF['SALOME_HOST']: RUNAPPLI += ' -m %s ' % dMCF['SALOME_HOST'] + + if dMCF['SALOME_PORT']: RUNAPPLI += ' -p %s ' % dMCF['SALOME_PORT'] + + # Chemin du script + if dMCF.has_key('CHEMIN_SCRIPT') and dMCF['CHEMIN_SCRIPT'] != None: CHEMIN_SCRIPT = dMCF['CHEMIN_SCRIPT'] + elif dMCF.has_key('UNITE_SCRIPT') and dMCF['UNITE_SCRIPT'] != None: CHEMIN_SCRIPT = 'fort.%s' % dMCF['UNITE_SCRIPT'] + else: CHEMIN_SCRIPT = '' + + + # dic = Dictionnaire a passer pour la creation du script temporaire + dic = { 'SALOMESCRIPT': CHEMIN_SCRIPT } + + + # Parametres a remplacer dans le script + if dMCF.has_key('NOM_PARA') and dMCF['NOM_PARA'] != None: NOM_PARA = dMCF['NOM_PARA'] + else: NOM_PARA = [] + if dMCF.has_key('VALE') and dMCF['VALE'] != None: VALE = dMCF['VALE'] + else: VALE = [] + if len(NOM_PARA) != len(VALE): UTMESS('F', 'EXECLOGICIEL0_23') + + for i in range(len(NOM_PARA)): + dic[ NOM_PARA[i] ] = VALE[i] + + + # Changement en liste s'il n'y a qu'un seul element + if (not is_enum(FICHIERS_ENTREE)): + FICHIERS_ENTREE = [FICHIERS_ENTREE,] + if (not is_enum(FICHIERS_SORTIE)): + FICHIERS_SORTIE = [FICHIERS_SORTIE,] + + + # On regenere des noms temporaires dans le repertoire temporaire distant + if MACHINE_DISTANTE != None: + FICHIERS_ENTREE_DIST = [] + FICHIERS_SORTIE_DIST = [] + + for i in range(len(FICHIERS_ENTREE)): + if MACHINE_DISTANTE != None: + fw = tempfile.NamedTemporaryFile(mode='w', suffix='.salome_input') + fname = os.path.join(tmpdir, os.path.basename(fw.name)) + fw.close() + FICHIERS_ENTREE_DIST.append( fname ) + else: + fname = FICHIERS_ENTREE[i] + #dic['INPUTFILE%s' % str(i+1)] = os.path.normpath(os.path.abspath(os.path.realpath(fname))) + dic['INPUTFILE%s' % str(i+1)] = fname + + for i in range(len(FICHIERS_SORTIE)): + if MACHINE_DISTANTE != None: + fw = tempfile.NamedTemporaryFile(mode='w', suffix='.salome_output') + fname = os.path.join(tmpdir, os.path.basename(fw.name)) + fw.close() + FICHIERS_SORTIE_DIST.append( fname ) + else: + fname = FICHIERS_SORTIE[i] + #dic['OUTPUTFILE%s' % str(i+1)] = os.path.normpath(os.path.abspath(os.path.realpath(fname))) + dic['OUTPUTFILE%s' % str(i+1)] = fname + + + # Creation du script de de la commande a executer + CHEMIN_SCRIPT = MakeTempScript( **dic ) + + # Ligne de commande + cmd_salome = [] + + if MACHINE_DISTANTE != None: + + # on recopie le script sur le serveur distant + d_scp = { 'scp': exe_scp, + 'port': port, + 'src': CHEMIN_SCRIPT, + 'dst': '%s:%s/' % (user_machine, tmpdir), + } + cmd_salome.append( cmd_scp % d_scp ) + + # Recopie les fichiers d'entrée sur le serveur distant + for i in range(len(FICHIERS_ENTREE)): + fsrc = FICHIERS_ENTREE[i] + fdst = FICHIERS_ENTREE_DIST[i] + d_scp = { 'scp': exe_scp, + 'port': port, + 'src': fsrc, + 'dst': '%s:%s' % (user_machine, fdst), + } + cmd_salome.append( cmd_scp % d_scp ) + + + # Execution du script + d_ssh = { 'ssh': exe_ssh, + 'user_machine': user_machine, + 'port': port, + 'cmd': '%s %s' % (RUNAPPLI, os.path.join(tmpdir, os.path.basename(CHEMIN_SCRIPT)) ), + } + cmd_salome.append( cmd_ssh % d_ssh ) + + + # Recopie des fichiers de sortie depuis le serveur distant + for i in range(len(FICHIERS_SORTIE)): + fsrc = FICHIERS_SORTIE_DIST[i] + fdst = FICHIERS_SORTIE[i] + d_scp = { 'scp': exe_scp, + 'port': port, + 'src': '%s:%s' % (user_machine, fsrc), + 'dst': fdst, + } + cmd_salome.append( cmd_scp % d_scp ) + + + # Effacement des fichiers distants + lst_src = [ os.path.join( tmpdir, os.path.basename(CHEMIN_SCRIPT) ) ] + if FICHIERS_ENTREE_DIST: lst_src.extend( FICHIERS_ENTREE_DIST ) + if FICHIERS_SORTIE_DIST: lst_src.extend( FICHIERS_SORTIE_DIST ) + + #print lst_src + d_ssh['cmd'] = ' '.join([ 'if [ -f "%s" ]; then \\rm %s; fi ; ' % (f,f) for f in lst_src ]) + cmd_salome.append( cmd_ssh % d_ssh ) + + else: - UTMESS('F', 'EXECLOGICIEL0_2', valk=dMCF['FORMAT']) + if not debug: cmd_salome.append( '%s %s ; if [ -f "%s" ]; then \\rm %s; fi ; ' % (RUNAPPLI, CHEMIN_SCRIPT, CHEMIN_SCRIPT, CHEMIN_SCRIPT) ) + else: cmd_salome.append( '%s %s ' % (RUNAPPLI, CHEMIN_SCRIPT) ) + + + if INFO>=2: + UTMESS('I', 'EXECLOGICIEL0_21', valk='\n\n'.join(cmd_salome)) + + f=open(CHEMIN_SCRIPT, 'r') + txt=f.read() + f.close() + UTMESS('I', 'EXECLOGICIEL0_20', valk=txt) + + + d_para['prog'] = ' ; ' .join(cmd_salome) + + + + #---------------------------------------------- + # Pas prevu.. + else: + UTMESS('F', 'EXECLOGICIEL0_2', valk=dMCF['FORMAT']) + - #---------------------------------------------- # 2. lecture des mots-clés if LOGICIEL != None: @@ -110,14 +368,48 @@ def exec_logiciel_ops(self, LOGICIEL, ARGUMENT, MAILLAGE, CODE_RETOUR_MAXI, INFO if len(l_args) > 0: d_para['options'] = l_args d_para['options'] = ' '.join(d_para['options']) - + + #---------------------------------------------- # 3. Exécution # 3a. Lancement d'une commande externe if mode_lancement == CMD_EXTERNE: - scmd = cmd % d_para + + # Traite le cas d'une execution sur une machine distante + if MACHINE_DISTANTE != None: + + # Construit le dictionnaire des parametres de la ligne de commande SSH + d_ssh = { 'ssh': exe_ssh, + 'user_machine': user_machine, + 'port': port, + } + + # Teste la connection via SSH (remplace la commande par un pwd) + d_ssh['cmd'] = 'pwd' + scmd = cmd_ssh % d_ssh + ExecCommand_SSH(scmd) + + # Construit la commande SSH a partir de la commande initiale + if SALOME: + scmd = cmd % d_para # La commande Salome integre deja le SSH + else: + d_ssh['cmd'] = cmd % d_para + scmd = cmd_ssh % d_ssh # On encapsule la commande dans un SSH + + else: + scmd = cmd % d_para + + + # Lancement de la commande comment = "Lancement de la commande :\n%s" % scmd - iret, output, error = ExecCommand(scmd, alt_comment=comment, verbose=False, separated_stderr=True) + if debug: print comment + + if MACHINE_DISTANTE != None: +# iret, output, error = ExecCommand_SSH(scmd, alt_comment=comment, verbose=False, separated_stderr=True) # bizarrement les output/error ne suivent pas! + iret, output, error = ExecCommand(scmd, alt_comment=comment, verbose=False, separated_stderr=True) + else: + iret, output, error = ExecCommand(scmd, alt_comment=comment, verbose=False, separated_stderr=True) + erreur = iret > CODE_RETOUR_MAXI if CODE_RETOUR_MAXI == -1: erreur = False @@ -125,15 +417,16 @@ def exec_logiciel_ops(self, LOGICIEL, ARGUMENT, MAILLAGE, CODE_RETOUR_MAXI, INFO if INFO > 0 or erreur: UTMESS('I', 'EXECLOGICIEL0_11', vali=(iret, CODE_RETOUR_MAXI)) UTMESS('I', 'EXECLOGICIEL0_9', valk=output) - + # en cas d'erreur, on dump tout dans le .resu + .erre if INFO == 2 or erreur: UTMESS('I', 'EXECLOGICIEL0_8', valk=scmd, print_as='E') UTMESS('I', 'EXECLOGICIEL0_10', valk=error, print_as='E') - + if erreur: UTMESS('F', 'EXECLOGICIEL0_3', vali=[CODE_RETOUR_MAXI, iret]) - + + #---------------------------------------------- # 3b. Exécution d'un fichier Python elif mode_lancement == EXECFILE: diff --git a/Aster/Cata/cataSTA10/Macro/impr_diag_campbell_ops.py b/Aster/Cata/cataSTA10/Macro/impr_diag_campbell_ops.py index 47670423..b0591b79 100644 --- a/Aster/Cata/cataSTA10/Macro/impr_diag_campbell_ops.py +++ b/Aster/Cata/cataSTA10/Macro/impr_diag_campbell_ops.py @@ -1,4 +1,4 @@ -#@ MODIF impr_diag_campbell_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF impr_diag_campbell_ops Macro DATE 09/11/2010 AUTEUR TORKHANI M.TORKHANI # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -21,7 +21,7 @@ -def impr_diag_campbell_ops(self, MAILLAGE, MODES, NFREQ_camp, TYP_PREC, TYP_TRI, +def impr_diag_campbell_ops(self, MAILLAGE, MODES, NFREQ_CAMP, TYP_PREC, TYP_TRI, UNIT_FLE, UNIT_TOR, UNIT_LON, UNIT_TOT, UNIT_INT,L_S, **args) : # Macro permettant de tracer le diagramme de Campbell suivant # le type de suivi des modes et le type de calcul de la precession @@ -137,21 +137,21 @@ def impr_diag_campbell_ops(self, MAILLAGE, MODES, NFREQ_camp, TYP_PREC, TYP_TRI, aster.affiche('RESULTAT', chaine) chaine='Nombre de valeurs propres detectees est %d' %NFREQ aster.affiche('RESULTAT', chaine) - if NFREQ_camp > NFREQ: - chaine='Nombre de frequences demandees pour le trace %d' %NFREQ_camp + if NFREQ_CAMP > NFREQ: + chaine='Nombre de frequences demandees pour le trace %d' %NFREQ_CAMP aster.affiche('RESULTAT', chaine) - NFREQ_camp = NFREQ-4; - chaine='Nombre de frequences pour le trace %d' %NFREQ_camp + NFREQ_CAMP = NFREQ-4; + chaine='Nombre de frequences pour le trace %d' %NFREQ_CAMP aster.affiche('RESULTAT', chaine) else: - chaine='Nombre de frequences demandees pour le trace %d' %NFREQ_camp + chaine='Nombre de frequences demandees pour le trace %d' %NFREQ_CAMP aster.affiche('RESULTAT', chaine) - if NFREQ_camp <=0 : + if NFREQ_CAMP <=0 : chaine='Le trace du diagramme de Campbell s''arrete !.' aster.affiche('RESULTAT', chaine) - if NFREQ_camp>0: + if NFREQ_CAMP>0: # ------------------------------------------------------------------ # Classe les modes en flexion, en torsion , en traction/ compression @@ -171,7 +171,7 @@ def impr_diag_campbell_ops(self, MAILLAGE, MODES, NFREQ_camp, TYP_PREC, TYP_TRI, NOEU=len(L_GR_NOEUD); - C_MODES=CLASS_MODES(self,lmo,NFREQ,NFREQ_camp,L_GR_NOEUD,L_VIT1); + C_MODES=CLASS_MODES(self,lmo,NFREQ,NFREQ_CAMP,L_GR_NOEUD,L_VIT1); NFREQ_f=C_MODES[0]; NFREQ_t=C_MODES[1]; diff --git a/Aster/Cata/cataSTA10/Macro/impr_diag_campbell_utils.py b/Aster/Cata/cataSTA10/Macro/impr_diag_campbell_utils.py index 49087aba..3bff5ed0 100644 --- a/Aster/Cata/cataSTA10/Macro/impr_diag_campbell_utils.py +++ b/Aster/Cata/cataSTA10/Macro/impr_diag_campbell_utils.py @@ -1,4 +1,4 @@ -#@ MODIF impr_diag_campbell_utils Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF impr_diag_campbell_utils Macro DATE 09/11/2010 AUTEUR TORKHANI M.TORKHANI # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -27,7 +27,7 @@ from Accas import _F # "self" est l'objet MACRO -def CLASS_MODES(self,L_MODES, NFREQ, NFREQ_camp, L_GR_NOEUD, VITE_ROTA) : +def CLASS_MODES(self,L_MODES, NFREQ, NFREQ_CAMP, L_GR_NOEUD, VITE_ROTA) : """Classification des modes en flexion, en torsion et en traction/compression""" POST_RELEVE_T =self.get_cmd('POST_RELEVE_T') @@ -212,17 +212,17 @@ def CLASS_MODES(self,L_MODES, NFREQ, NFREQ_camp, L_GR_NOEUD, VITE_ROTA) : # ----------------------------------------------------------- NFREQ_fc=0; for jj in range(NFREQ_f): - if NVT_f[jj][NBV-1]<= NFREQ_camp: + if NVT_f[jj][NBV-1]<= NFREQ_CAMP: NFREQ_fc=NFREQ_fc+1; NFREQ_tc=0; for jj in range(NFREQ_t): - if NVT_t[jj][NBV-1]<= NFREQ_camp: + if NVT_t[jj][NBV-1]<= NFREQ_CAMP: NFREQ_tc=NFREQ_tc+1; NFREQ_lc=0; for jj in range(NFREQ_l): - if NVT_l[jj][NBV-1]<= NFREQ_camp: + if NVT_l[jj][NBV-1]<= NFREQ_CAMP: NFREQ_lc=NFREQ_lc+1; RESULT =[NFREQ_f,NFREQ_t,NFREQ_l,Mf,Mt,Ml,NVT,NVT_f,NVT_t,NVT_l,NFREQ_fc,NFREQ_tc,NFREQ_lc] diff --git a/Aster/Cata/cataSTA10/Macro/impr_fonction_ops.py b/Aster/Cata/cataSTA10/Macro/impr_fonction_ops.py index 1d7a334b..a94956a1 100644 --- a/Aster/Cata/cataSTA10/Macro/impr_fonction_ops.py +++ b/Aster/Cata/cataSTA10/Macro/impr_fonction_ops.py @@ -1,4 +1,4 @@ -#@ MODIF impr_fonction_ops Macro DATE 06/07/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF impr_fonction_ops Macro DATE 12/07/2010 AUTEUR PROIX J-M.PROIX # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -62,7 +62,7 @@ def impr_fonction_ops(self, FORMAT, COURBE, INFO, **args): aster.affiche('MESSAGE', ' Nom du fichier :'+nomfich) if nomfich and os.path.exists(nomfich) and os.stat(nomfich).st_size!=0: if FORMAT=='XMGRACE': - niv='A' + niv='I' else: niv='I' UTMESS(niv, 'FONCT0_1', valk=nomfich) diff --git a/Aster/Cata/cataSTA10/Macro/info_fonction_ops.py b/Aster/Cata/cataSTA10/Macro/info_fonction_ops.py index 19d0b349..50a98bc1 100644 --- a/Aster/Cata/cataSTA10/Macro/info_fonction_ops.py +++ b/Aster/Cata/cataSTA10/Macro/info_fonction_ops.py @@ -1,4 +1,4 @@ -#@ MODIF info_fonction_ops Macro DATE 16/11/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF info_fonction_ops Macro DATE 30/08/2010 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -22,14 +22,12 @@ def info_fonction_ops(self,RMS,NOCI_SEISME,MAX,NORME,ECART_TYPE,INFO,**args): Ecriture de la macro INFO_FONCTION """ ier=0 - import string from Cata_Utils.t_fonction import t_fonction,t_fonction_c,t_nappe import math from Accas import _F from Utilitai.Utmess import UTMESS - import types - from types import ListType, TupleType - EnumTypes = (ListType, TupleType) + import numpy as NP + from Utilitai.Table import Table ### On importe les definitions des commandes a utiliser dans la macro CREA_TABLE = self.get_cmd('CREA_TABLE') @@ -44,70 +42,107 @@ def info_fonction_ops(self,RMS,NOCI_SEISME,MAX,NORME,ECART_TYPE,INFO,**args): ### type de traitement ### - if (MAX != None): - if type(MAX['FONCTION']) not in EnumTypes : l_fonc=[MAX['FONCTION'],] - else : l_fonc=MAX['FONCTION'] - __tmfonc=[None]*3 - k=0 - mfact=[] - ltyfo=[] - lpara=[] - lresu=[] - lfnom=[] - for fonc in l_fonc : - __ff=fonc.convert() - __ex=__ff.extreme() - ltyfo.append(__ff.__class__) - lpara.append(__ff.para['NOM_PARA']) - lresu.append(__ff.para['NOM_RESU']) - lfnom.append(fonc.nom) - n_mini=len(__ex['min']) - n_maxi=len(__ex['max']) - listeMCF=[_F(LISTE_K=[fonc.nom]*(n_mini+n_maxi),PARA='FONCTION'), - _F(LISTE_K=['MINI',]*n_mini+['MAXI',]*n_maxi,PARA='TYPE'),] - n_resu=__ff.para['NOM_RESU'] - if isinstance(__ff,t_nappe) : - listeMCF=listeMCF+[\ - _F(LISTE_R=[i[0] for i in __ex['min']]+[i[0] for i in __ex['max']],PARA=__ff.para['NOM_PARA']),\ - _F(LISTE_R=[i[1] for i in __ex['min']]+[i[1] for i in __ex['max']],PARA=__ff.para['NOM_PARA_FONC']),\ - _F(LISTE_R=[i[2] for i in __ex['min']]+[i[2] for i in __ex['max']],PARA=__ff.para['NOM_RESU'])] - else : - listeMCF=listeMCF+[\ - _F(LISTE_R=[i[0] for i in __ex['min']]+[i[0] for i in __ex['max']],PARA=__ff.para['NOM_PARA']),\ - _F(LISTE_R=[i[1] for i in __ex['min']]+[i[1] for i in __ex['max']],PARA=__ff.para['NOM_RESU'])] - __tmfonc[k]=CREA_TABLE(LISTE=listeMCF) - if k!=0 : - mfact.append(_F(OPERATION = 'COMB',TABLE=__tmfonc[k])) - k=k+1 - ltyfo=dict([(i,0) for i in ltyfo]).keys() - lpara=dict([(i,0) for i in lpara]).keys() - lresu=dict([(i,0) for i in lresu]).keys() - if len(ltyfo)>1 : -# n'est pas homogène en type (fonctions et nappes) ''') - UTMESS('F','FONCT0_37') - if len(lpara)>1 : -# n'est pas homogène en label NOM_PARA :'''+' '.join(lpara)) - UTMESS('F','FONCT0_38',valk=' '.join(lpara)) - if len(lresu)>1 : -# n'est pas homogène en label NOM_RESU : '''+' '.join(lresu)) - UTMESS('F','FONCT0_39',valk=' '.join(lresu)) - __tab=CALC_TABLE(TABLE = __tmfonc[0], - ACTION = mfact ) - __min=CALC_TABLE(TABLE = __tab, - ACTION = _F(OPERATION = 'FILTRE', - CRIT_COMP = 'MINI', - NOM_PARA = lresu[0] ), ) - __max=CALC_TABLE(TABLE = __tab, - ACTION = _F(OPERATION = 'FILTRE', - CRIT_COMP = 'MAXI', - NOM_PARA = lresu[0] ), ) - print __min.EXTR_TABLE() - print __max.EXTR_TABLE() - C_out=CALC_TABLE(TABLE = __min, - TITRE = 'Calcul des extrema sur fonction '+' '.join(lfnom), - ACTION = _F(OPERATION = 'COMB', - TABLE=__max ), ) - print C_out.EXTR_TABLE() + if (MAX != None): + # liste des t_fonction + l_cofonc = MAX['FONCTION'] + if type(l_cofonc) not in (list, tuple): + l_cofonc = [l_cofonc,] + l_fonc = [concept.convert() for concept in l_cofonc] + + # intervalles + mc_interv = MAX['INTERVALLE'] + with_intervalle = mc_interv is not None + interv = [] + if with_intervalle: + nbv = len(mc_interv) + if nbv % 2 != 0: + UTMESS('F', 'FONCT0_55') + tint = NP.array(mc_interv) + tint.shape = (nbv / 2, 2) + dx = tint[:,1] - tint[:,0] + if min(dx) < 0.: + UTMESS('F', 'FONCT0_56') + interv = tint.tolist() + + # vérifications de cohérence + typobj = set() + npara = set() + nparf = set() + nresu = set() + l_nom = [] + for tf in l_fonc: + typobj.add(tf.__class__) + npara.add(tf.para['NOM_PARA']) + nparf.add(tf.para.get('NOM_PARA_FONC')) + nresu.add(tf.para['NOM_RESU']) + l_nom.append(tf.nom) + if len(typobj) > 1: + # types (fonction, fonction_c, nappe) non homogènes + UTMESS('F', 'FONCT0_37') + is_nappe = typobj.pop() is t_nappe + if len(npara) > 1: + # NOM_PARA non homogènes + UTMESS('F', 'FONCT0_38', valk=' '.join(npara)) + if len(nparf) > 1: + # NOM_PARA_FONC non homogènes + UTMESS('F', 'FONCT0_38', valk=' '.join(nparf)) + if len(nresu) > 1: + # NOM_RESU non homogènes + UTMESS('F', 'FONCT0_39', valk=' '.join(nresu)) + + # nom des paramètres et leurs types + k_para = npara.pop() + k_parf = nparf.pop() + k_ordo = nresu.pop() + k_min = k_para + "_MIN" + k_max = k_para + "_MAX" + ordered_params = ['FONCTION', 'TYPE'] + ordered_type = ['K8', 'K8'] + if with_intervalle: + ordered_params.extend(['INTERVALLE', k_min, k_max]) + ordered_type.extend(['I', 'R', 'R']) + ordered_params.append(k_para) + ordered_type.append('R') + if is_nappe: + ordered_params.append(k_parf) + ordered_type.append('R') + ordered_params.append(k_ordo) + ordered_type.append('R') + + # boucle sur les fonctions, intervalles, min/max, extrema + _type = { 'min' : 'MINI', 'max' : 'MAXI' } + _PREC = 1.e-6 + tab = Table(para=ordered_params, typ=ordered_type) + for tf in l_fonc: + if not with_intervalle: + if not is_nappe: + interv = [[float(min(tf.vale_x)), float(max(tf.vale_x))],] + else: + interv = [[-1.e-300, 1.e300],] + for num_int, bornes in enumerate(interv): + x1, x2 = bornes + if not is_nappe: + stf = tf.cut(x1, x2, _PREC, nom=tf.nom) + else: + stf = tf + extrema = stf.extreme() + for key in ('min', 'max'): + nb = len(extrema[key]) + for i in range(nb): + line = { 'FONCTION' : tf.nom, 'TYPE' : _type[key], + k_para : extrema[key][i][0] } + if is_nappe: + line.update({ k_parf : extrema[key][i][1], k_ordo : extrema[key][i][2]}) + else: + line.update({ k_ordo : extrema[key][i][1]}) + if with_intervalle: + line.update({ 'INTERVALLE' : num_int + 1, + k_min : x1, k_max : x2}) + tab.append(line) + tab.titr = "Extrema de " + ', '.join(l_nom) + # table résultat + dprod = tab.dict_CREA_TABLE() + C_out = CREA_TABLE(**dprod) ### if (ECART_TYPE != None): diff --git a/Aster/Cata/cataSTA10/Macro/lire_fonction_ops.py b/Aster/Cata/cataSTA10/Macro/lire_fonction_ops.py index 99000615..0bb940e1 100644 --- a/Aster/Cata/cataSTA10/Macro/lire_fonction_ops.py +++ b/Aster/Cata/cataSTA10/Macro/lire_fonction_ops.py @@ -1,8 +1,8 @@ -#@ MODIF lire_fonction_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF lire_fonction_ops Macro DATE 22/03/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -17,6 +17,7 @@ # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS import os.path as osp import numpy diff --git a/Aster/Cata/cataSTA10/Macro/lire_inte_spec_ops.py b/Aster/Cata/cataSTA10/Macro/lire_inte_spec_ops.py index 708dfef4..64d3f4da 100644 --- a/Aster/Cata/cataSTA10/Macro/lire_inte_spec_ops.py +++ b/Aster/Cata/cataSTA10/Macro/lire_inte_spec_ops.py @@ -1,8 +1,8 @@ -#@ MODIF lire_inte_spec_ops Macro DATE 26/03/2008 AUTEUR BODEL C.BODEL +#@ MODIF lire_inte_spec_ops Macro DATE 14/12/2010 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# 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 @@ -145,7 +145,7 @@ def lire_inte_spec_ops(self, # Verification a posteriori de la dimension de l'inter-spectre tmp = 0.5*(-1+sqrt(1+8*len(l_fonc))) dim = int(tmp) - nb_fonc = 0.5*dim*(dim+1) + nb_fonc = dim*(dim+1)/2 if dim != tmp : UTMESS('F', 'SPECTRAL0_6') diff --git a/Aster/Cata/cataSTA10/Macro/macr_adap_mail_ops.py b/Aster/Cata/cataSTA10/Macro/macr_adap_mail_ops.py index 5b016ad3..7578438b 100644 --- a/Aster/Cata/cataSTA10/Macro/macr_adap_mail_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macr_adap_mail_ops.py @@ -1,28 +1,28 @@ -#@ MODIF macr_adap_mail_ops Macro DATE 15/03/2010 AUTEUR GNICOLAS G.NICOLAS +#@ MODIF macr_adap_mail_ops Macro DATE 11/05/2011 AUTEUR SELLENET N.SELLENET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2003 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== # RESPONSABLE GNICOLAS G.NICOLAS # """ Traitement des macros MACR_ADAP_MAIL/MACR_INFO_MAIL """ -__revision__ = "V1.3" +__revision__ = "V1.6" # def macr_adap_mail_ops ( self, INFO, VERSION_HOMARD, MAILLAGE_FRONTIERE, @@ -46,14 +46,14 @@ def macr_adap_mail_ops ( self, # 2. Les caracteristiques d'un passage sont conservees dans un dictionnaire. Il y a autant de # dictionnaires que de sollicitations pour une serie d'adaptation. L'ensemble de ces dictionnaires # est conserve dans la liste Liste_Passages. Cette liste est necessairement globale pour pouvoir -# la retrouver e chaque nouveau passage. +# la retrouver a chaque nouveau passage. # Description du dictionnaire de passages : # dico["Maillage_0"] = o ; string ; nom du concept du maillage initial de la serie d'adaptation # dico["Maillage_NP1"] = o ; string ; nom du concept du dernier maillage adapte # dico["Rep_Calc_HOMARD_global"] = o ; string ; Nom global du repertoire de calcul pour HOMARD # dico["Rep_Calc_HOMARD_local"] = o ; string ; Nom local du repertoire de calcul pour HOMARD # depuis le repertoire de calcul pour ASTER -# dico["niter"] = o ; entier ; numero d'iteration +# dico["niter"] = o ; entier ; numero d'iteration de depart # # 3. Les caracteristiques d'un maillage sont conservees dans un dictionnaire. Il y a autant de # dictionnaires que de maillages manipules. L'ensemble de ces dictionnaires est conserve @@ -72,13 +72,13 @@ def macr_adap_mail_ops ( self, # dico["RESULTAT"] = f ; concept ASTER du resutat associe # dico["NOM_CHAM"] = f ; string ; Nom ASTER du champ # dico["CHAM_GD"] = f ; concept ASTER du champ de grandeur associee -# dico["COMPOSANTE"] = f ; liste ; Liste des noms ASTER des composante de l'indicateur +# dico["COMPOSANTE"] = f ; liste ; Liste des noms ASTER des composantes du champ # dico["NUME_ORDRE"] = f ; entier ; Numero d'ordre du champ # dico["INST"] = f ; entier ; Instant du champ # dico["PRECISION"] = f ; entier ; Precision sur l'instant du champ # dico["CRITERE"] = f ; entier ; Critere de precision sur l'instant du champ # dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpole sur le nouveau maillage -# dico["NOM_MED"] = o ; string ; Nom MED du champ +# dico["NOM_CHAM_MED"] = o ; string ; Nom MED du champ # dico["SENSIBILITE"] = f ; string ; Nom du parametre sensible associe # # 5. Signification de INFO @@ -90,16 +90,20 @@ def macr_adap_mail_ops ( self, # 2nd niveau de message pour l'execution de HOMARD # from Accas import _F - from Macro import creation_donnees_homard + from Macro import creation_donnees_homard from Utilitai.Utmess import UTMESS, MasquerAlarme, RetablirAlarme - import aster + import aster import string import os + import cPickle + from glob import glob + import tarfile from types import ListType, TupleType EnumTypes = (ListType, TupleType) #gn import shutil # global Liste_Passages + global numero_passage_fonction # #==================================================================== # 1. Prealables @@ -109,15 +113,64 @@ def macr_adap_mail_ops ( self, # self.set_icmd(1) # -# 1.2. ==> Numero du passage dans cette macro +# 1.2. ==> Initialisations de parametres Aster +# + repertoire_outils = aster.repout() + Rep_Calc_ASTER = os.getcwd() + if ( INFO >= 3 ) : print os.listdir(Rep_Calc_ASTER) +# +# Remarque : le nom pick.homard.tar est obligatoire car ASTK rapatrie dans la base tous les fichiers en pick.* + fichier_archive = os.path.join(Rep_Calc_ASTER, "pick.homard.tar") +#gn print "fichier_archive = ",fichier_archive +# +# 1.3. ==> Numero du passage dans cette macro # try : - self.jdc.indice_macro_homard = self.jdc.indice_macro_homard + 1 + numero_passage_fonction = numero_passage_fonction + 1 except : - self.jdc.indice_macro_homard = 1 + numero_passage_fonction = 1 +#gn print "numero_passage_fonction = ",numero_passage_fonction +# +# 1.4. ==> Au tout premier passage +# + if numero_passage_fonction == 1 : +# Liste_Passages = [] - numero_passage_fonction = self.jdc.indice_macro_homard -### print "numero_passage_fonction = ",numero_passage_fonction +# +# 1.4.2. ==> Avec un fichier de reprise : on recupere les repertoires archives +# + if os.path.isfile(fichier_archive) : +# +# Extraction de l'archive +# Remarque : a partir de python 2.5 on pourra utiliser extractall + if ( INFO >= 3 ) : print "Extraction de l'archive", fichier_archive + file = tarfile.open(fichier_archive, "r") + for tarinfo in file : + if ( INFO >= 3 ) : print tarinfo.name, "is", tarinfo.size, "bytes in size and is", + if tarinfo.isreg(): + if ( INFO >= 3 ) : print "a regular file." + file.extract(tarinfo.name) + elif tarinfo.isdir(): + if ( INFO >= 3 ) : print "a directory." + file.extract(tarinfo.name) + else: + if ( INFO >= 3 ) : print "something else." + if ( INFO >= 3 ) : print os.listdir(Rep_Calc_ASTER) +# Liste de tous les repertoires d'adaptation qui ont ete recuperes + laux = glob("*_ADAP_*") +# On prend le fichier pickle du 1er repertoire (ce sont tous les memes), +# puis on recupere la liste des passages + fic = os.path.join(Rep_Calc_ASTER, laux[0], "pick.1") + file = open(fic, "r") + laux = cPickle.load(file) + file.close() +# Pour chaque cas, mise a jour du repertoire global + for dico in laux : + Rep_Calc_HOMARD_local = dico["Rep_Calc_HOMARD_local"] + dico["Rep_Calc_HOMARD_global"] = os.path.join(Rep_Calc_ASTER, Rep_Calc_HOMARD_local) + Liste_Passages.append(dico) +# + if ( INFO >= 3 ) : print "Liste_Passages = ", Liste_Passages # # 1.3. ==> On importe les definitions des commandes a utiliser dans la macro # @@ -127,15 +180,11 @@ def macr_adap_mail_ops ( self, LIRE_MAILLAGE = self.get_cmd("LIRE_MAILLAGE") LIRE_CHAMP = self.get_cmd("LIRE_CHAMP") # -# 1.4. ==> Le nom du programme HOMARD a lancer -# - repertoire_outils = aster.repout() - homard = repertoire_outils + "homard" -# # 1.5. ==> Initialisations # codret_partiel = [0] - Rep_Calc_ASTER = os.getcwd() +# + homard = repertoire_outils + "homard" # liste_maillages = [] liste_champs = [] @@ -167,7 +216,6 @@ def macr_adap_mail_ops ( self, # 2.1.1. ==> Les concepts "maillage" # #gn print "\n.. Debut de 2.1.1" -# for mot_cle in ["MAILLAGE_N" , "MAILLAGE_NP1"] : for mot_cle in ["MAILLAGE_N" , "MAILLAGE_NP1" , "MAILLAGE_NP1_ANNEXE"] : #gn print "\nmot_cle = ",mot_cle dico = {} @@ -184,7 +232,7 @@ def macr_adap_mail_ops ( self, #gn print "dico = ",dico liste_maillages.append(dico) # -# 2.1.2. ==> L'eventuel indicateur d'erreur +# 2.1.2. ==> L'eventuel pilotage de l'adaptation # #gn print "\n.. Debut de 2.1.2" #gn print "args = ", args @@ -192,11 +240,8 @@ def macr_adap_mail_ops ( self, dico = {} dico["Type_Champ"] = "INDICATEUR" if ( args["RESULTAT_N"] != None ) : - lresu = 1 dico["RESULTAT"] = args["RESULTAT_N"] - noresu = dico["RESULTAT"].nom - dico["NOM_CHAM"] = args["INDICATEUR"] - nomsym = dico["NOM_CHAM"] + dico["NOM_CHAM"] = args["NOM_CHAM"] if ( args["NUME_ORDRE"] != None ) : dico["NUME_ORDRE"] = args["NUME_ORDRE"] if ( args["INST"] != None ) : @@ -207,27 +252,21 @@ def macr_adap_mail_ops ( self, if ( args["SENSIBILITE"] != None ) : dico["SENSIBILITE"] = args["SENSIBILITE"] else : - lresu = 0 dico["CHAM_GD"] = args["CHAM_GD"] - noresu = dico["CHAM_GD"].nom - nomsym = " " #gn print "dico = ", dico # - if dico.has_key("SENSIBILITE") : - nopase = dico["SENSIBILITE"].nom - else : - nopase = " " -#gn print "Avant appel a aster.mdnoch, lresu = ",lresu,", noresu =", noresu ,", nomsym = ", nomsym ,", nopase = ", nopase - dico["NOM_MED"] = aster.mdnoch ( lresu, noresu, nomsym, nopase ) -#gn print "==> dico[\"NOM_MED\"] = ", dico["NOM_MED"] -# - if args.has_key("NOM_CMP_INDICA") : - if args["NOM_CMP_INDICA"] is not None : - if not type(args["NOM_CMP_INDICA"]) in EnumTypes : - l_aux = [args["NOM_CMP_INDICA"]] + nom_cham_med_fichier = "champ_de_pilotage" +# 12345678901234567890123456789012 + dico["NOM_CHAM_MED"] = nom_cham_med_fichier +#gn print "==> dico[\"NOM_CHAM_MED\"] = ", dico["NOM_CHAM_MED"] +# + if args.has_key("NOM_CMP") : + if args["NOM_CMP"] is not None : + if not type(args["NOM_CMP"]) in EnumTypes : + l_aux = [args["NOM_CMP"]] else : l_aux = [] - les_composantes = args["NOM_CMP_INDICA"] + les_composantes = args["NOM_CMP"] for composante in les_composantes : l_aux.append(composante) dico["COMPOSANTE"] = l_aux @@ -237,7 +276,6 @@ def macr_adap_mail_ops ( self, ### print dico # # 2.1.3. ==> Les champs a mettre a jour -# #gn print "\n.. Debut de 2.1.3." # if args.has_key("MAJ_CHAM") : @@ -247,15 +285,19 @@ def macr_adap_mail_ops ( self, else : les_champs = args["MAJ_CHAM"] # + dico_interp = {} + dico_interp["AUTO"] = 0 + dico_interp["ISOP2"] = 3 +# + iaux = 0 for maj_cham in les_champs : -#gn print maj_cham +#gn print "maj_cham :", maj_cham #gn print type(maj_cham) # dico = {} dico["Type_Champ"] = "CHAMP_MAJ" l_aux = [ "CHAM_MAJ", "TYPE_CHAM" ] if ( maj_cham["RESULTAT"] != None ) : - lresu = 1 l_aux.append("RESULTAT") l_aux.append("NOM_CHAM") if ( maj_cham["NUME_ORDRE"] != None ) : @@ -265,28 +307,37 @@ def macr_adap_mail_ops ( self, for cle in [ "PRECISION", "CRITERE" ] : if ( maj_cham[cle] != None ) : dico[cle] = maj_cham[cle] - noresu = maj_cham["RESULTAT"].nom - nomsym = maj_cham["NOM_CHAM"] if ( maj_cham["SENSIBILITE"] != None ) : dico["SENSIBILITE"] = maj_cham["SENSIBILITE"] else : - lresu = 0 l_aux.append("CHAM_GD") - noresu = maj_cham["CHAM_GD"].nom - nomsym = " " for cle in l_aux : dico[cle] = maj_cham[cle] #gn print "dico = ", dico # - if dico.has_key("SENSIBILITE") : - nopase = dico["SENSIBILITE"].nom - else : - nopase = " " -#gn print "Avant appel a aster.mdnoch, lresu = ",lresu,", noresu =", noresu ,", nomsym = ", nomsym ,", nopase = ", nopase - dico["NOM_MED"] = aster.mdnoch ( lresu, noresu, nomsym, nopase ) -#gn print "==> dico[\"NOM_MED\"] = ", dico["NOM_MED"] + if maj_cham["NOM_CMP"] is not None : + if not type(maj_cham["NOM_CMP"]) in EnumTypes : + l_aux = [maj_cham["NOM_CMP"]] + else : + l_aux = [] + les_composantes = maj_cham["NOM_CMP"] + for composante in les_composantes : + l_aux.append(composante) + dico["COMPOSANTE"] = l_aux +#gn print "COMPOSANTEmaj_cham", dico["COMPOSANTE"] # -### print dico +#gn print "dico = ", dico + iaux += 1 + la_chaine = '%08d' % iaux + nom_cham_med_fichier = "champ_" + la_chaine +# 123456789012345678901234 56789012 + dico["NOM_CHAM_MED"] = nom_cham_med_fichier +#gn print "==> dico[\"NOM_CHAM_MED\"] = ", dico["NOM_CHAM_MED"] +# + dico["TYPE_MAJ"] = dico_interp[maj_cham["TYPE_MAJ"]] +#gn print "==> dico[\"TYPE_MAJ\"] = ", dico["TYPE_MAJ"] +# +#gn print "dico :", dico liste_champs.append(dico) # # 2.1.4. ==> Les zones de raffinement @@ -300,8 +351,7 @@ def macr_adap_mail_ops ( self, les_zones = args["ZONE"] # for zone in les_zones : -### print zone -### print type(zone) +### print zone, "de type", type(zone) dico = {} for aux in l_aux : if ( zone[aux] != None ) : @@ -348,7 +398,7 @@ def macr_adap_mail_ops ( self, les_front_analytiques = args["FRONTIERE_ANALYTIQUE"] # for frontiere in les_front_analytiques : - l_aux = [ "TYPE", "GROUP_MA", "RAYON", "X_CENTRE", "Y_CENTRE", "Z_CENTRE"] + l_aux = [ "NOM", "TYPE", "GROUP_MA", "RAYON", "X_CENTRE", "Y_CENTRE", "Z_CENTRE"] if ( frontiere["TYPE"] == "CYLINDRE" ) : l_aux.append("X_AXE") l_aux.append("Y_AXE") @@ -389,7 +439,6 @@ def macr_adap_mail_ops ( self, UTMESS('I','HOMARD0_6') else : UTMESS('A','HOMARD0_7') -# UTMESS('I','HOMARD0_6',valk='glop') # #==================================================================== # 3. Preparation du lancement des commandes @@ -399,7 +448,7 @@ def macr_adap_mail_ops ( self, # . Memorisation des noms ASTER du maillage en entree et en sortie (sous forme string) # # On cree une nouvelle liste des dictionnaires decrivant les maillages -# et e la fin on ecrase l'ancienne liste par cette nouvelle. +# et a la fin on ecrase l'ancienne liste par cette nouvelle. # #gn print "\n.. Debut de 3.1." # @@ -446,6 +495,7 @@ def macr_adap_mail_ops ( self, # le cas, cela veut dire que l'adaptation en cours est la suite d'une # precedente. On doit donc utiliser le meme repertoire. Le numero # d'iteration est celui de l'adaptation precedente augmente de 1. +# Si on n'a rien trouve, c'est que l'on demarre un nouveau cas. # #gn print "\.. Debut de 3.2.2.1." # @@ -459,16 +509,20 @@ def macr_adap_mail_ops ( self, # #gn print "\.. Debut de 3.2.2.2." # -# 3.2.2.2.1. ==> Enregistrement d'un nouveau cas de figure +# 3.2.2.2.1. ==> Enregistrement d'un nouveau cas +# On emet une alarme si il existe deja un cas pour etre certain +# que l'utilisateur ne s'est pas trompe dans l'enchainement # if ( niter == 0 ) : + for dico in Liste_Passages : + UTMESS("A", 'HOMARD0_9', valk=(Nom_Concept_Maillage_N, Nom_Concept_Maillage_NP1, dico["Maillage_NP1"], dico["Maillage_0"]), vali=dico["niter"]+1 ) dico = {} - dico["Maillage_0"] = Nom_Concept_Maillage_N - dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1 - dico["Maillage_NP1_ANNEXE"] = Nom_Concept_Maillage_NP1_ANNEXE + dico["Maillage_0"] = Nom_Concept_Maillage_N + dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1 + dico["Maillage_NP1_ANNEXE"] = Nom_Concept_Maillage_NP1_ANNEXE dico["Rep_Calc_HOMARD_local"] = Rep_Calc_HOMARD_local dico["Rep_Calc_HOMARD_global"] = Rep_Calc_HOMARD_global - dico["niter"] = niter + dico["niter"] = niter Liste_Passages.append(dico) # # 3.2.2.2.2. ==> Modification du cas en cours @@ -477,16 +531,20 @@ def macr_adap_mail_ops ( self, l_aux = [] for dico in Liste_Passages : if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) : - dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1 + dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1 dico["Maillage_NP1_ANNEXE"] = Nom_Concept_Maillage_NP1_ANNEXE - dico["niter"] = niter + dico["niter"] = niter l_aux.append(dico) - Liste_Passages = l_aux + Liste_Passages = [] + for dico in l_aux : + Liste_Passages.append(dico) +# +#gn print "Apres 3.2.2.2. Liste_Passages = ", Liste_Passages # ### print "niter = ", niter, ", Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global # -# 3.2.3. Creation du repertoire pour homard -# attention : on ne fait cette creation qu'une seule fois par cas +# 3.2.3. Le repertoire pour homard +# Attention : on ne fait cette creation qu'une seule fois par cas # d'adaptation ou d'information # #gn print "\.. Debut de 3.2.3." @@ -498,6 +556,11 @@ def macr_adap_mail_ops ( self, except os.error,codret_partiel : self.cr.warn("Code d'erreur de mkdir : " + str(codret_partiel[0]) + " : " + codret_partiel[1]) UTMESS("F", 'HOMARD0_4', valk=Rep_Calc_HOMARD_global) +# + else : +# + if not os.path.isdir(Rep_Calc_HOMARD_global) : + UTMESS("F", 'HOMARD0_8', valk=Rep_Calc_HOMARD_global) # #==================================================================== # 4. Ecriture des commandes de creation des donnees MED @@ -506,20 +569,20 @@ def macr_adap_mail_ops ( self, #gn print "\.. Debut de 4." # # On doit ecrire : le maillage, -# le champ d'indicateur d'erreur -# les champs e convertir +# le champ de pilotage de l'adaptation +# les champs a convertir # Remarque : on met tout dans le meme fichier # # Chacune de ces ecritures est optionnelle selon le contexte. # # 4.1. ==> Noms des fichiers d'ASTER vers HOMARD et eventuellement de HOMARD vers ASTER -# Remarque : aujourd'hui, les ecritures ou les lectures au format MED se font obligatoirement sur -# un fichier de nom fort.n, place dans le repertoire de calcul +# Remarque : aujourd'hui, les ecritures ou les lectures au format MED se font obligatoirement +# dans un fichier de nom fort.n, place dans le repertoire de calcul ## # 4.1.1. ==> D'ASTER vers HOMARD # unite_fichier_aster_vers_homard = 1787 + 2*numero_passage_fonction - fichier_aster_vers_homard = os.path.join(Rep_Calc_ASTER,"fort." + str(unite_fichier_aster_vers_homard)) + fichier_aster_vers_homard = os.path.join(Rep_Calc_ASTER, "fort." + str(unite_fichier_aster_vers_homard)) ### print "fichier_aster_vers_homard = ",fichier_aster_vers_homard # # 4.1.2. ==> De HOMARD vers ASTER @@ -552,33 +615,31 @@ def macr_adap_mail_ops ( self, motscfa["RESU"] = _F( INFO_MAILLAGE=infomail, **motscsi ) # - IMPR_RESU ( INFO = infocomm, + IMPR_RESU ( INFO = infocomm, FORMAT ='MED', UNITE = unite_fichier_aster_vers_homard, **motscfa ) # # 4.4. Le(s) champ(s) # Attention : il se peut que l'on demande la mise à jour du champ qui a servi comme -# indicateur d'erreur. Si c'est le cas, il ne faut pas demander son +# pilotage de l'adaptation. Si c'est le cas, il ne faut pas demander son # impression sinon il y a plantage d'IMPR_RESU qui ne sait pas substituer # deux champs. D'ailleurs, c'est plus economique ainsi ! -# Remarque : pour l'adaptation, on peut ne demander qu'un nombre reduit de composante du -# champ d'indicateur. -# s'il y a demande de mise a jour, toutes les composantes sont concernees. Il faut -# donc dans ce cas imprimer le champ total. +# Remarque : pour l'adaptation ou les champs a mettre a jour, on peut ne demander +# qu'un nombre reduit de composantes. # dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP_MAJ" # dico["RESULTAT"] = f ; concept ASTER du resutat associe # dico["NOM_CHAM"] = f ; string ; Nom ASTER du champ # dico["CHAM_GD"] = f ; concept ASTER du champ de grandeur associee -# dico["COMPOSANTE"] = f ; liste ; Liste des noms ASTER des composante de l'indicateur +# dico["COMPOSANTE"] = f ; liste ; Liste des noms ASTER des composante du champ # dico["NUME_ORDRE"] = f ; entier ; Numero d'ordre du champ # dico["INST"] = f ; entier ; Instant du champ # dico["PRECISION"] = f ; entier ; Precision sur l'instant du champ # dico["CRITERE"] = f ; entier ; Critere de precision sur l'instant du champ # dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpole sur le nouveau maillage -# dico["NOM_MED"] = o ; string ; Nom MED du champ +# dico["NOM_CHAM_MED"] = o ; string ; Nom MED du champ # dico["SENSIBILITE"] = f ; string ; Nom du parametre sensible associe # -# 4.4.1. Recherche d'un doublon eventuel sur le champ d'indicateur d'erreur +# 4.4.1. Recherche d'un doublon eventuel sur le champ de pilotage de l'adaptation # #gn print "dico_indi = ",dico_indi if len(dico_indi) > 0 : @@ -595,11 +656,11 @@ def macr_adap_mail_ops ( self, # liste_champs_imprime = [] for dico in liste_champs : -### print "\n.... dico = ",dico -# Pour un champ e mettre e jour, on a toujours impression +#gn print "\n.... dico = ",dico +# Pour un champ a mettre a jour, on a toujours impression if ( dico["Type_Champ"] == "CHAMP_MAJ" ) : liste_champs_imprime.append(dico) -# Si le champ d'indicateur n'a toujours pas ete repere comme champ e mettre e jour : +# Si le champ de pilotage de l'adaptation n'a toujours pas ete repere comme champ a mettre a jour : if not indic_est_deja_imprime : # Est-ce le meme champ ? on_a_le_champ = 1 @@ -636,11 +697,14 @@ def macr_adap_mail_ops ( self, if ( dico_indi[cle] != dico[cle] ) : on_a_le_champ = 0 break +# Le champ de pilotage fait partie des champs mis a jour : on le note +# et on utilise le meme nom de champ MED if on_a_le_champ : + dico_indi["NOM_CHAM_MED"] = dico["NOM_CHAM_MED"] indic_est_deja_imprime = 1 -### print "\n\nFin de la boucle .. indic_est_deja_imprime = ",indic_est_deja_imprime -# Si le champ d'indicateur n'a pas ete repere comme champ e mettre e jour, il faut -# l'inclure dans les champs e imprimer +#gn print "\n\nFin de la boucle .. indic_est_deja_imprime = ",indic_est_deja_imprime +# Si le champ de pilotage de l'adaptation n'a pas ete repere comme champ a mettre a jour, +# il faut l'inclure dans les champs e imprimer if not indic_est_deja_imprime : liste_champs_imprime.append(dico_indi) # @@ -649,7 +713,7 @@ def macr_adap_mail_ops ( self, # for dico in liste_champs_imprime : motscsi = {} - for cle in [ "RESULTAT", "NOM_CHAM", "CHAM_GD", "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] : + for cle in [ "RESULTAT", "NOM_CHAM", "CHAM_GD", "NUME_ORDRE", "INST", "PRECISION", "CRITERE", "NOM_CHAM_MED" ] : if dico.has_key(cle) : if ( dico[cle] != None ) : motscsi[cle] = dico[cle] @@ -666,7 +730,7 @@ def macr_adap_mail_ops ( self, ) #gn print ".. motscfa = ",motscfa # - IMPR_RESU ( INFO = infocomm, + IMPR_RESU ( INFO = infocomm, FORMAT ='MED', UNITE = unite_fichier_aster_vers_homard, **motscfa ) # @@ -702,12 +766,14 @@ def macr_adap_mail_ops ( self, dico_configuration[ "NOM_MED_"+dico["Type_Maillage"] ] = dico["NOM_MED"] #gn print dico_configuration # -# 5.3. ==> Les caracteristiques de l'eventuel indicateur d'erreur +# 5.3. ==> Les caracteristiques de l'eventuel pilotage de l'adaptation # for dico in liste_champs : dico_aux = {} if ( dico["Type_Champ"] == "INDICATEUR" ) : - l_aux = [ "NOM_MED", "COMPOSANTE" ] + l_aux = [ "NOM_CHAM_MED" ] + if dico.has_key("COMPOSANTE") : + l_aux.append("COMPOSANTE") if dico.has_key("NUME_ORDRE") : l_aux.append("NUME_ORDRE") for cle in l_aux : @@ -731,13 +797,13 @@ def macr_adap_mail_ops ( self, ### if dico_configuration.has_key("Zones_raffinement") : ### print "dico_configuration[Zones_raffinement] = ", dico_configuration["Zones_raffinement"] # -# 5.5. ==> La mise a jour de champs +# 5.5. ==> Les eventuelles mises a jour de champs # prem = 1 for dico in liste_champs : dico_aux = {} if ( dico["Type_Champ"] == "CHAMP_MAJ" ) : - l_aux = [ "NOM_MED", "COMPOSANTE" ] + l_aux = [ "NOM_CHAM_MED", "COMPOSANTE", "TYPE_MAJ" ] if dico.has_key("NUME_ORDRE") : l_aux.append("NUME_ORDRE") else : @@ -787,7 +853,6 @@ def macr_adap_mail_ops ( self, # 5.8. ==> Impression eventuelle des fichiers crees # #gn print "Repertoire ",Rep_Calc_HOMARD_global -#gn os.system("ls -la "+Rep_Calc_HOMARD_global) if ( INFO >= 4 ) : l_aux = ["HOMARD.Donnees" , "HOMARD.Configuration"] else : @@ -812,13 +877,7 @@ def macr_adap_mail_ops ( self, #==================================================================== # 6. Ecriture de la commande d'execution de homard #==================================================================== -# -# #gn print "\.. Debut de 6." -#gn os.system("cp " + Rep_Calc_HOMARD_global + "/../fort.17* $HOME/aster") -#gn os.system("cp " + Rep_Calc_HOMARD_global + "/HOMARD.Configuration $HOME/aster/HOMARD.Configuration"+str(niter)) -#gn fichier_aster_vers_homard_2 = os.path.join("/tmp" , "fort." + str(unite_fichier_aster_vers_homard)) -#gn shutil.copyfile(fichier_aster_vers_homard, fichier_aster_vers_homard_2) # if ( INFO == 1 ) : iaux = INFO @@ -836,25 +895,18 @@ def macr_adap_mail_ops ( self, #gn import time #gn time.sleep(3600) # -#gn if ( mode_homard == "ADAP" ) : -#gn fichier_homard_vers_aster_2 = os.path.join("/tmp" , "fort." + str(unite_fichier_homard_vers_aster)) -#gn shutil.copyfile(fichier_homard_vers_aster, fichier_homard_vers_aster_2) -#gn fichier_homard_vers_aster_2_1 = os.path.join("/tmp" , "fort." + str(unite_fichier_homard_vers_aster)+".1") -#gn os.system("/local00/Logiciels/med-2.3.1/Linux/bin/mdump "+fichier_homard_vers_aster_2+">"+fichier_homard_vers_aster_2_1+""+fichier_homard_vers_aster_2_2+" Ecriture de la commande de lecture des resultats med # Remarque : # La fonction self.DeclareOut(a,b) fonctionne ainsi : # a est une chaine de caracteres # b est la variable declaree dans la commande -# le but est de associer le contenu de b e la variable locale qui sera designee par a +# le but est de associer le contenu de b a la variable locale qui sera designee par a # Exemple : -# self.DeclareOut("maillage_a_lire",args["MAILLAGE_NP1"]) -# ==> la variable maillage_a_lire est identifiee e l'argument "MAILLAGE_NP1" +# self.DeclareOut("maillage_a_lire", args["MAILLAGE_NP1"]) +# ==> la variable maillage_a_lire est identifiee a l'argument "MAILLAGE_NP1" #==================================================================== +#gn print "\.. Debut de 7." # if ( mode_homard in [ "ADAP", "MODI" ] ) : # @@ -889,7 +941,6 @@ def macr_adap_mail_ops ( self, for dico in liste_champs : if ( dico["Type_Champ"] == "CHAMP_MAJ" ) : #gn print dico - self.DeclareOut("champ_maj", dico["CHAM_MAJ"]) motscsi = {} for cle in [ "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] : if dico.has_key(cle) : @@ -899,11 +950,12 @@ def macr_adap_mail_ops ( self, motscsi["NUME_PT"] = dico["NUME_ORDRE"] #gn print "MAILLAGE = ",maillage_np1 #gn print "NOM_MAIL_MED = ",maillage_np1_nom_med -#gn print "NOM_MED = ",dico["NOM_MED"] +#gn print "NOM_CHAM_MED = ",dico["NOM_CHAM_MED"] #gn print "TYPE_CHAM =", dico["TYPE_CHAM"] + self.DeclareOut("champ_maj", dico["CHAM_MAJ"]) champ_maj = LIRE_CHAMP ( UNITE = unite_fichier_homard_vers_aster, FORMAT = "MED", MAILLAGE = maillage_np1, NOM_MAIL_MED=maillage_np1_nom_med, - NOM_MED = dico["NOM_MED"], NOM_CMP_IDEM = "OUI", TYPE_CHAM = dico["TYPE_CHAM"], + NOM_MED = dico["NOM_CHAM_MED"], NOM_CMP_IDEM = "OUI", TYPE_CHAM = dico["TYPE_CHAM"], INFO = infocomm, **motscsi ) # #==================================================================== @@ -913,6 +965,7 @@ def macr_adap_mail_ops ( self, # On doit imperativement garder le dernier fichier homard produit # En mode d'information, on garde egalement les fichiers textes #==================================================================== +#gn print "\.. Debut de 8." # l_aux = [fichier_aster_vers_homard] if ( mode_homard in [ "ADAP", "MODI" ] ) : @@ -927,7 +980,6 @@ def macr_adap_mail_ops ( self, if ( mode_homard == "ADAP" ) : fic = os.path.join(Rep_Calc_HOMARD_global, fic_homard_niterp1) l_aux_bis.append(fic) -#gn os.system("cp " + Rep_Calc_HOMARD_global + "/* $HOME/aster") # for fic in l_aux : if ( INFO >= 3 ) : @@ -942,12 +994,46 @@ def macr_adap_mail_ops ( self, self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1]) UTMESS("F", 'HOMARD0_5', valk=fic) # +# Liberation du fichier de ASTER vers HOMARD +# + DEFI_FICHIER ( ACTION= "LIBERER", + UNITE = unite_fichier_aster_vers_homard, + INFO = infocomm ) #gn print "Repertoire ",Rep_Calc_HOMARD_global #gn print os.listdir(Rep_Calc_HOMARD_global) #gn print "Repertoire ",Rep_Calc_ASTER #gn print os.listdir(Rep_Calc_ASTER) # #==================================================================== +# 9. Archivage des repertoires d'adaptation en vue de poursuite +#==================================================================== +#gn print "\.. Debut de 9." +# +# + if ( INFO >= 3 ) : print os.listdir(Rep_Calc_ASTER) + if ( INFO >= 3 ) : print "Archivage dans", fichier_archive + laux = [] + for dico in Liste_Passages : +# Memorisation du nom du repertoire local pour ce cas d'adaptation + Rep_Calc_HOMARD_local = dico["Rep_Calc_HOMARD_local"] + laux.append(Rep_Calc_HOMARD_local) +# Memorisation de la liste des passages +# Remarque : c'est fait a chaque repertoire pour faciliter le decodage ensuite + Rep_Calc_HOMARD_global = dico["Rep_Calc_HOMARD_global"] + fic = os.path.join(Rep_Calc_HOMARD_global, "pick.1") + file = open(fic, "w") + cPickle.dump(Liste_Passages, file) + file.close() +# Si on a au moins un cas d'adaptation, archivage + if len(laux) > 0 : + file = tarfile.open(fichier_archive, "w") + for rep in laux : + if ( INFO >= 3 ) : print ".. Insertion de", rep + file.add(rep) + file.close() + if ( INFO >= 3 ) : print os.listdir(Rep_Calc_ASTER) +# +#==================================================================== # C'est fini ! #==================================================================== # @@ -957,3 +1043,6 @@ def macr_adap_mail_ops ( self, #gn time.sleep(3600) # return + + + diff --git a/Aster/Cata/cataSTA10/Macro/macr_ascouf_calc_ops.py b/Aster/Cata/cataSTA10/Macro/macr_ascouf_calc_ops.py index 5464de33..d9677c14 100644 --- a/Aster/Cata/cataSTA10/Macro/macr_ascouf_calc_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macr_ascouf_calc_ops.py @@ -1,8 +1,8 @@ -#@ MODIF macr_ascouf_calc_ops Macro DATE 22/12/2009 AUTEUR ABBAS M.ABBAS +#@ MODIF macr_ascouf_calc_ops Macro DATE 02/02/2011 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -21,7 +21,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM, FOND_FISS,RESU_THER,AFFE_MATERIAU, - PRES_REP,ECHANGE,TORS_P1,COMP_INCR,COMP_ELAS, + PRES_REP,ECHANGE,TORS_P1,COMP_ELAS, SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE, INCREMENT,THETA_3D,IMPR_TABLE,IMPRESSION,INFO,TITRE ,**args): """ @@ -316,11 +316,11 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA if TYPE_MAILLAGE in ('FISS_COUDE','FISS_AXIS_DEB'): _chcont = DEFI_CONTACT( MODELE = modele , FORMULATION = 'DISCRETE', - TOLE_INTERP = -1.E-6, ZONE =_F(GROUP_MA_MAIT = 'FACE1', GROUP_MA_ESCL = 'FACE2', - ALGO_CONT = 'VERIF', - GROUP_MA_FOND = 'FONDFISS'),) + RESOLUTION = 'NON', + TOLE_INTERP = -1.E-6, + SANS_GROUP_MA = 'FONDFISS'),) # # --- commande STAT_NON_LINE --- # @@ -347,10 +347,8 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA contact = _chcont motscles['EXCIT'] =mcfex # - mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets - if COMP_INCR!=None : - mcfci.append(_F(TOUT='OUI' ,RELATION=COMP_INCR['RELATION'])) - elif COMP_ELAS!=None : + mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets dans STAT_NON_LINE + if COMP_ELAS!=None : motscles['COMP_ELAS'] =_F(GROUP_MA='COUDE',RELATION=COMP_ELAS['RELATION']) if TORS_P1!=None : mcfci.append( _F(GROUP_MA='P1',RELATION='ELAS')) if CL_BOL_P2_GV==None: mcfci.append( _F(GROUP_MA='P2',RELATION='ELAS')) @@ -403,9 +401,8 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA # nomres = CALC_ELEM( reuse = nomres, RESULTAT = nomres , - MODELE = modele , TOUT_ORDRE = 'OUI' , - OPTION = ('SIEF_ELNO_ELGA','EQUI_ELNO_SIGM') , + OPTION = ('SIEF_ELNO','SIEQ_ELNO') , INFO = INFO ,) # # --- post-traitements --- @@ -443,7 +440,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA motscles['ACTION']=[] for grno in lgrno : motscles['ACTION'].append(_F(RESULTAT=nomres, - NOM_CHAM='SIEF_ELNO_ELGA', + NOM_CHAM='SIEF_ELNO', TOUT_CMP='OUI', INTITULE=grno, GROUP_NO=grno, @@ -459,7 +456,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA motscles['ACTION']=[] for tgrno in lgrno : motscles['ACTION'].append(_F(RESULTAT=nomres, - NOM_CHAM='SIEF_ELNO_ELGA', + NOM_CHAM='SIEF_ELNO', INTITULE=tgrno, GROUP_NO=tgrno, INVARIANT='OUI', @@ -497,7 +494,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA ANGSEC = atan2(VSIN,VCOS) vecty=(sin(ANGSEC),0.,cos(ANGSEC)) motscles['ACTION'].append(_F(RESULTAT=nomres, - NOM_CHAM='SIEF_ELNO_ELGA', + NOM_CHAM='SIEF_ELNO', INTITULE=tgrno, GROUP_NO=tgrno, NOM_CMP=('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ',), @@ -530,7 +527,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA motscles['ACTION']=[] for j in range(8) : motscles['ACTION'].append(_F(RESULTAT=nomres, - NOM_CHAM='SIEF_ELNO_ELGA', + NOM_CHAM='SIEF_ELNO', TOUT_CMP='OUI', INTITULE=LIG[j]+SECT[i], GROUP_NO=LIG[j]+SECT[i], @@ -550,7 +547,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i], GROUP_NO =LIG[j]+SECT[i], RESULTAT =nomres, - NOM_CHAM ='SIEF_ELNO_ELGA', + NOM_CHAM ='SIEF_ELNO', INVARIANT='OUI', OPERATION='EXTRACTION')) secinv[i] = POST_RELEVE_T(**motscles) @@ -565,7 +562,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA VECT_Y =vecty, GROUP_NO =LIG[j]+SECT[i], RESULTAT =nomres, - NOM_CHAM ='SIEF_ELNO_ELGA', + NOM_CHAM ='SIEF_ELNO', NOM_CMP =('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'), OPERATION='MOYENNE')) secmoy[i] = POST_RELEVE_T(**motscles) @@ -722,7 +719,6 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA R_SUP = thet['R_SUP'],), ); motscles = {} - if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION']) if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION']) _nogthe=CALC_G( RESULTAT =nomres, OPTION='CALC_G_GLOB', @@ -733,7 +729,6 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA # for thet in THETA_3D: motscles = {} - if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION']) if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION']) if TYPE_MAILLAGE =='FISS_COUDE' : motscles['LISSAGE']=_F(LISSAGE_THETA='LEGENDRE', diff --git a/Aster/Cata/cataSTA10/Macro/macr_aspic_calc_ops.py b/Aster/Cata/cataSTA10/Macro/macr_aspic_calc_ops.py index 86eb0430..d56cc8d6 100644 --- a/Aster/Cata/cataSTA10/Macro/macr_aspic_calc_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macr_aspic_calc_ops.py @@ -1,8 +1,8 @@ -#@ MODIF macr_aspic_calc_ops Macro DATE 22/12/2009 AUTEUR ABBAS M.ABBAS +#@ MODIF macr_aspic_calc_ops Macro DATE 02/02/2011 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -21,7 +21,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM, FOND_FISS_1,FOND_FISS_2,RESU_THER,AFFE_MATERIAU,EQUILIBRE, - PRES_REP,ECHANGE,TORS_CORP,TORS_TUBU,COMP_INCR,COMP_ELAS, + PRES_REP,ECHANGE,TORS_CORP,TORS_TUBU,COMP_ELAS, THETA_3D,OPTION,SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE, INCREMENT,PAS_AZIMUT,IMPRESSION,INFO,TITRE,BORNES ,**args): """ @@ -303,11 +303,12 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C mcfond = ('FONDFISS') _chcont = DEFI_CONTACT( MODELE = modele , FORMULATION = 'DISCRETE', - TOLE_INTERP = -1.E-6, + ZONE =_F(GROUP_MA_MAIT = 'LEVRCORP', GROUP_MA_ESCL = 'LEVRTUBU', - ALGO_CONT = 'VERIF', - GROUP_MA_FOND = mcfond,),) + TOLE_INTERP = -1.E-6, + RESOLUTION = 'NON', + SANS_GROUP_MA = mcfond,),) # # --- commande STAT_NON_LINE --- @@ -345,9 +346,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C motscles['EXCIT'] =mcfex # - mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets - if COMP_INCR!=None : - mcfci.append(_F(TOUT ='OUI' ,RELATION=COMP_INCR['RELATION'])) + mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets dans STAT_NON_LINE mcfci.append( _F(GROUP_MA=NOMNOE,RELATION='ELAS')) motscles['COMP_INCR'] =mcfci # @@ -404,7 +403,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C nomres = CALC_ELEM( reuse = nomres, RESULTAT = nomres , TOUT_ORDRE = 'OUI' , - OPTION = ('SIEF_ELNO_ELGA','VARI_ELNO_ELGA','EQUI_ELNO_SIGM') , + OPTION = ('SIEF_ELNO','VARI_ELNO','SIEQ_ELNO') , INFO = INFO ,) # #----------------------------------------------------------------------- @@ -437,7 +436,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C mcsimp['GROUP_NO' ]='LD'+str(i) mcfact.append( _F( RESULTAT = nomres, TOUT_ORDRE ='OUI', - NOM_CHAM ='SIEF_ELNO_ELGA', + NOM_CHAM ='SIEF_ELNO', PRECISION =55.E-1, TOUT_CMP ='OUI', OPERATION ='EXTRACTION',**mcsimp)) @@ -464,7 +463,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C mcsimp['GROUP_NO' ]='LD'+str(i) mcsimp['RESULTAT' ]=nomres mcsimp['TOUT_ORDRE' ]='OUI' - mcsimp['NOM_CHAM' ]='SIEF_ELNO_ELGA' + mcsimp['NOM_CHAM' ]='SIEF_ELNO' mcsimp['PRECISION' ]=55.E-1 mcsimp['TOUT_CMP' ]='OUI' mcsimp['OPERATION' ]='EXTRACTION' @@ -531,7 +530,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C mcsimp['GROUP_NO' ]='LI'+str(i) mcsimp['RESULTAT' ]=nomres mcsimp['TOUT_ORDRE' ]='OUI' - mcsimp['NOM_CHAM' ]='SIEF_ELNO_ELGA' + mcsimp['NOM_CHAM' ]='SIEF_ELNO' mcsimp['PRECISION' ]=55.E-1 mcsimp['TOUT_CMP' ]='OUI' mcsimp['REPERE' ]='LOCAL' @@ -554,7 +553,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C mcsimp['GROUP_NO' ]='LI'+str(i) mcsimp['RESULTAT' ]=nomres mcsimp['TOUT_ORDRE' ]='OUI' - mcsimp['NOM_CHAM' ]='SIEF_ELNO_ELGA' + mcsimp['NOM_CHAM' ]='SIEF_ELNO' mcsimp['PRECISION' ]=55.E-1 mcsimp['TOUT_CMP' ]='OUI' mcsimp['OPERATION' ]='EXTRACTION' @@ -753,7 +752,6 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C motscles={} if COMP_ELAS!=None: motscles['COMP_ELAS']= _F(TOUT = 'OUI', RELATION = COMP_ELAS['RELATION'],) - if COMP_INCR!=None: motscles['COMP_INCR']= _F(RELATION = COMP_INCR['RELATION'],) __gtheta = CALC_G ( THETA = _F(THETA=__theta), OPTION = 'CALC_G_GLOB', RESULTAT = nomres, @@ -782,7 +780,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C # # --- commande CALC_G (3D LOCAL) --- # - montit = 'G_LOCAL AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP']) + montit = 'G AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP']) motscles={} if COMP_ELAS!=None: motscles['COMP_ELAS' ]= _F(TOUT = 'OUI', RELATION = COMP_ELAS['RELATION'],) @@ -833,7 +831,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C if IMPRESSION['NOM_CHAM']!=None : if type(IMPRESSION['NOM_CHAM']) in (types.TupleType,types.ListType) : ncham= IMPRESSION['NOM_CHAM'] else : ncham=[IMPRESSION['NOM_CHAM'],] - if len(ncham)==3 : motscles['NOM_CHAM' ]=('DEPL','EQUI_ELNO_SIGM') + if len(ncham)==3 : motscles['NOM_CHAM' ]=('DEPL','SIEQ_ELNO') elif (len(ncham)==1) and (ncham[0][:4]!='TEMP') : motscles['NOM_CHAM' ]= ncham[0] elif (len(ncham)==2) and (ncham[0][:4]!='TEMP') and (ncham[1][:4]!='TEMP') : diff --git a/Aster/Cata/cataSTA10/Macro/macr_cara_poutre_ops.py b/Aster/Cata/cataSTA10/Macro/macr_cara_poutre_ops.py index 30fc9ad8..053d4d0a 100644 --- a/Aster/Cata/cataSTA10/Macro/macr_cara_poutre_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macr_cara_poutre_ops.py @@ -1,8 +1,8 @@ -#@ MODIF macr_cara_poutre_ops Macro DATE 30/06/2008 AUTEUR FLEJOU J-L.FLEJOU +#@ MODIF macr_cara_poutre_ops Macro DATE 13/01/2011 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -316,10 +316,8 @@ def macr_cara_poutre_ops(self,MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __tempe1=CALC_ELEM(reuse=__tempe1, RESULTAT=__tempe1, - MODELE=__nomoth, - CHAM_MATER=__chmath, TOUT_ORDRE='OUI', - OPTION='FLUX_ELNO_TEMP', + OPTION='FLUX_ELNO', ) __chem=INTE_MAIL_2D(MAILLAGE=__nomapi, @@ -329,7 +327,7 @@ def macr_cara_poutre_ops(self,MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM', CHEMIN=__chem, RESULTAT=__tempe1, - NOM_CHAM='FLUX_ELNO_TEMP', + NOM_CHAM='FLUX_ELNO', TRAC_NOR='OUI', NOM_CMP=('FLUX','FLUY'), OPERATION='MOYENNE')) @@ -354,7 +352,7 @@ def macr_cara_poutre_ops(self,MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM', CHEMIN=__chem, RESULTAT=__tempe1, - NOM_CHAM='FLUX_ELNO_TEMP', + NOM_CHAM='FLUX_ELNO', TRAC_NOR='OUI', NOM_CMP=('FLUX','FLUY'), OPERATION='MOYENNE')) @@ -763,10 +761,8 @@ def macr_cara_poutre_ops(self,MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __tempe1=CALC_ELEM(reuse=__tempe1, RESULTAT=__tempe1, - MODELE=__nomoth, - CHAM_MATER=__chmath, TOUT_ORDRE='OUI', - OPTION='FLUX_ELNO_TEMP', + OPTION='FLUX_ELNO', ) __chem=INTE_MAIL_2D(MAILLAGE=__nomapi, @@ -776,7 +772,7 @@ def macr_cara_poutre_ops(self,MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM', CHEMIN=__chem, RESULTAT=__tempe1, - NOM_CHAM='FLUX_ELNO_TEMP', + NOM_CHAM='FLUX_ELNO', TRAC_NOR='OUI', NOM_CMP=('FLUX','FLUY'), OPERATION='MOYENNE')) @@ -801,7 +797,7 @@ def macr_cara_poutre_ops(self,MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD, __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM', CHEMIN=__chem, RESULTAT=__tempe1, - NOM_CHAM='FLUX_ELNO_TEMP', + NOM_CHAM='FLUX_ELNO', TRAC_NOR='OUI', NOM_CMP=('FLUX','FLUY'), OPERATION='MOYENNE')) diff --git a/Aster/Cata/cataSTA10/Macro/macr_ecre_calc_ops.py b/Aster/Cata/cataSTA10/Macro/macr_ecre_calc_ops.py index 3f81fc79..581e3dee 100644 --- a/Aster/Cata/cataSTA10/Macro/macr_ecre_calc_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macr_ecre_calc_ops.py @@ -1,8 +1,8 @@ -#@ MODIF macr_ecre_calc_ops Macro DATE 21/04/2010 AUTEUR BOTTONI M.BOTTONI +#@ MODIF macr_ecre_calc_ops Macro DATE 28/02/2011 AUTEUR BOTTONI M.BOTTONI # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -52,7 +52,8 @@ def macr_ecre_calc_ops( # PARAMETRES DEBUG - debug = True + debug = False + @@ -554,6 +555,7 @@ Choix des correlations de frottement et de transfert de chaleur $V[70] ifrot : frottement (avec : ifrot=1 ou -1 ; sans : ifrot=0 ) $V[71] cas ifrot=-1 : relim = Re limite $V[72] cas ifrot=-1 : frtlim = coeff frottement si Re > relim + $V[73] ichal : transfert de chaleur (-2 <= ichal <= 2 ichal=0 ==> Pas d'echange de chaleur) $V[74] cas ichal < 0 : xminch = titre m. gaz avec corr. Chen ou liq pour xxmaxch diff --git a/Aster/Cata/cataSTA10/Macro/macr_ecrevisse_ops.py b/Aster/Cata/cataSTA10/Macro/macr_ecrevisse_ops.py index def648cb..14a6f80b 100644 --- a/Aster/Cata/cataSTA10/Macro/macr_ecrevisse_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macr_ecrevisse_ops.py @@ -1,8 +1,8 @@ -#@ MODIF macr_ecrevisse_ops Macro DATE 21/04/2010 AUTEUR BOTTONI M.BOTTONI +#@ MODIF macr_ecrevisse_ops Macro DATE 21/02/2011 AUTEUR ABBAS M.ABBAS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -300,11 +300,12 @@ def macr_ecrevisse_ops(self,reuse, CHAM_MATER = CHAM_MATER, EXCIT = _dEXCIT_THER, INCREMENT = _F(LIST_INST=LES_PAS, NUME_INST_INIT=_nume_ordre, NUME_INST_FIN=_nume_ordre+1,), - ARCHIVAGE = _F(NUME_INIT=_nume_ordre+1,DETR_NUME_SUIV='OUI'), + ARCHIVAGE = _F(DETR_NUME_SUIV='OUI'), INFO = InfoAster, **motclefs ) RTHERMPJ=PROJ_CHAMP(RESULTAT=__THINIT, MODELE_1=MODELE_THER, MODELE_2=MODELE_MECA, + METHODE='COLLOCATION', VIS_A_VIS=_F(TOUT_1='OUI', TOUT_2='OUI',), INFO=2, ) @@ -315,13 +316,14 @@ def macr_ecrevisse_ops(self,reuse, CHAM_MATER = CHAM_MATER, EXCIT = _dEXCIT_THER, INCREMENT = _F(LIST_INST=LES_PAS, NUME_INST_INIT=_nume_ordre, NUME_INST_FIN=_nume_ordre+1,), - ARCHIVAGE = _F(NUME_INIT=_nume_ordre+1,DETR_NUME_SUIV='OUI'), + ARCHIVAGE = _F(DETR_NUME_SUIV='OUI'), INFO = InfoAster, **motclefs ) # Projection du champ thermique, a tous les instants sinon pas de deformations thermiques RTHERMPJ=PROJ_CHAMP(RESULTAT=RTHERM, MODELE_1=MODELE_THER, MODELE_2=MODELE_MECA, + METHODE='COLLOCATION', VIS_A_VIS=_F(TOUT_1='OUI', TOUT_2='OUI',), INFO=2, ) @@ -406,7 +408,7 @@ def macr_ecrevisse_ops(self,reuse, NEWTON = _F(**dNEWTON), CONVERGENCE = _F(**dCONVERGENCE), SOLVEUR = _F(SYME='OUI'), - ARCHIVAGE = _F(NUME_INIT=_nume_ordre+1,DETR_NUME_SUIV='OUI'), + ARCHIVAGE = _F(DETR_NUME_SUIV='OUI'), INFO = InfoAster, **motclefs ) diff --git a/Aster/Cata/cataSTA10/Macro/macr_lign_coupe_ops.py b/Aster/Cata/cataSTA10/Macro/macr_lign_coupe_ops.py index d7e18ab3..ff38e2dd 100644 --- a/Aster/Cata/cataSTA10/Macro/macr_lign_coupe_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macr_lign_coupe_ops.py @@ -1,8 +1,8 @@ -#@ MODIF macr_lign_coupe_ops Macro DATE 13/04/2010 AUTEUR PELLET J.PELLET +#@ MODIF macr_lign_coupe_ops Macro DATE 02/02/2011 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -133,7 +133,7 @@ def crea_resu_local(self,dime,NOM_CHAM,m,resin,mail,nomgrma): elif dime ==3 : LCMP=['DX','DY','DZ'] TYPE_CHAM='VECT_3D' - elif NOM_CHAM in ('SIGM_NOEU_DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU','SIGM_ELNO_DEPL'): + elif NOM_CHAM in ('SIGM_NOEU','SIEF_ELNO','SIGM_NOEU_ELGA','SICO_NOEU','SIGM_ELNO'): if dime == 2: LCMP=['SIXX','SIYY','SIZZ','SIXY'] TYPE_CHAM='TENS_2D' @@ -790,7 +790,9 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE, __mocou=AFFE_MODELE(MAILLAGE=__macou, AFFE=_F(TOUT='OUI', PHENOMENE='MECANIQUE', - MODELISATION='BARRE',),); + MODELISATION='BARRE',), + PARTITION=_F(PARALLELISME='CENTRALISE'), + ); elif AsType(RESULTAT).__name__ in ('evol_ther',) : __mocou=AFFE_MODELE(MAILLAGE=__macou, AFFE=_F(TOUT='OUI', @@ -813,7 +815,7 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE, if NOM_CHAM[5:9]=='ELGA' : UTMESS('F','POST0_18',valk=[NOM_CHAM,]) - __recou=PROJ_CHAMP(METHODE='ELEM', + __recou=PROJ_CHAMP(METHODE='COLLOCATION', RESULTAT=RESULTAT, MODELE_1=MODELE_1, DISTANCE_MAX=m['DISTANCE_MAX'], @@ -829,7 +831,7 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE, if AsType(RESULTAT).__name__ in ('evol_elas','evol_noli') : - if NOM_CHAM in ('DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_DEPL','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU','SIGM_ELNO_DEPL'):icham=1 + if NOM_CHAM in ('DEPL','SIEF_ELNO','SIGM_NOEU','SIGM_NOEU_ELGA','SICO_NOEU','SIGM_ELNO'):icham=1 iocc=0 for m in LIGN_COUPE : diff --git a/Aster/Cata/cataSTA10/Macro/macr_recal_ops.py b/Aster/Cata/cataSTA10/Macro/macr_recal_ops.py index 8c9b7d66..7c5850d9 100644 --- a/Aster/Cata/cataSTA10/Macro/macr_recal_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macr_recal_ops.py @@ -1,8 +1,8 @@ -#@ MODIF macr_recal_ops Macro DATE 26/05/2010 AUTEUR ASSIRE A.ASSIRE +#@ MODIF macr_recal_ops Macro DATE 28/03/2011 AUTEUR ASSIRE A.ASSIRE # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -179,21 +179,17 @@ def macr_recal(self, UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, RESU_CALC, TOLE_FONC = args['TOLE_FONC'] # Pour les calculs esclaves - CALCUL_ESCLAVE = {}.fromkeys( ['LANCEMENT', 'MODE', 'MEMOIRE', 'TEMPS', 'CLASSE', 'ACTUALISATION', 'memjeveux_esclave', 'mem_aster', 'NMAX_SIMULT', ] ) + CALCUL_ESCLAVE = {}.fromkeys( ['LANCEMENT', 'MODE', 'UNITE_SUIVI', 'CLASSE', 'ACTUALISATION', 'memjeveux', 'memjob', 'mem_aster', 'tpmax', 'tpsjob', 'NMAX_SIMULT', ] ) dESCLAVE=args['CALCUL_ESCLAVE'][0].cree_dict_valeurs(args['CALCUL_ESCLAVE'][0].mc_liste) for i in dESCLAVE.keys(): if dESCLAVE[i]==None : del dESCLAVE[i] CALCUL_ESCLAVE['LANCEMENT'] = dESCLAVE['LANCEMENT'] + if dESCLAVE.has_key('UNITE_SUIVI'): CALCUL_ESCLAVE['UNITE_SUIVI'] = dESCLAVE['UNITE_SUIVI'] + else: CALCUL_ESCLAVE['UNITE_SUIVI'] = None if dESCLAVE.has_key('MODE'): CALCUL_ESCLAVE['MODE'] = dESCLAVE['MODE'] else: CALCUL_ESCLAVE['MODE'] = prof['mode'][0].upper() - if dESCLAVE.has_key('MEMOIRE'): CALCUL_ESCLAVE['MEMOIRE'] = dESCLAVE['MEMOIRE'] - else: CALCUL_ESCLAVE['MEMOIRE'] = prof['memjob'][0] - if dESCLAVE.has_key('TEMPS'): CALCUL_ESCLAVE['TEMPS'] = dESCLAVE['TEMPS'] - else: CALCUL_ESCLAVE['TEMPS'] = prof['tps_job'][0] - if dESCLAVE.has_key('CLASSE'): CALCUL_ESCLAVE['CLASSE'] = dESCLAVE['CLASSE'] - if dESCLAVE.has_key('ACTUALISATION'): CALCUL_ESCLAVE['ACTUALISATION'] = dESCLAVE['ACTUALISATION'] LANCEMENT = CALCUL_ESCLAVE['LANCEMENT'] @@ -214,7 +210,6 @@ def macr_recal(self, UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, RESU_CALC, if args.has_key('DYNAMIQUE'): DYNAMIQUE = args['DYNAMIQUE'] else: DYNAMIQUE = None - #_____________________________________________ # # VERIFICATION PREALABLE SUR GNUPLOT @@ -233,41 +228,72 @@ def macr_recal(self, UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, RESU_CALC, #_____________________________________________ # - # VERIFICATION PREALABLE SUR MEM_ASTER + # PARAMETRES DU MODE DISTRIBUTION #_____________________________________________ if LANCEMENT == 'DISTRIBUTION': - # Recuperation des parametres mem_aster et memjeveux - try: - mem_aster = float(prof['mem_aster'][0]) - except ValueError: - mem_aster = 100.0 - memjeveux = prof.args.get('memjeveux') - - if mem_aster in (0., 100.): + if debug: + print prof.param['tpsjob'][0] + print prof.args['tpmax'] + print prof.param['mem_aster'][0] + print prof.args['memjeveux'] + print prof.param['memjob'][0] + + # Pour la conversion mega-mots / mega-octets + from asrun.common.sysutils import on_64bits + if on_64bits(): facw = 8 + else: facw = 4 + + # Recuperation du parametre mem_aster + try: mem_aster = int(prof['mem_aster'][0]) + except ValueError: mem_aster = 100 + if mem_aster in (0, 100): if CALCUL_ESCLAVE['MODE']=='INTERACTIF': UTMESS('A','RECAL0_6') - mem_aster = 0. - if not memjeveux: - UTMESS('F','RECAL0_7') - - try: - if mem_aster == 0.: - memjeveux_esclave = float(memjeveux) - else: - memjeveux_esclave = float(memjeveux) / float(mem_aster) * 100. - float(memjeveux) - except: - UTMESS('F','RECAL0_8') - - CALCUL_ESCLAVE['memjeveux_esclave'] = memjeveux_esclave - #CALCUL_ESCLAVE['mem_aster'] = mem_aster - UTMESS('I','RECAL0_9', valr=memjeveux_esclave) - - + mem_aster = 100 + CALCUL_ESCLAVE['mem_aster'] = mem_aster + + # Utilisation du mot-cle TEMPS + if dESCLAVE.has_key('TEMPS'): + CALCUL_ESCLAVE['tpsjob'] = int(dESCLAVE['TEMPS']/60) + CALCUL_ESCLAVE['tpmax'] = int(dESCLAVE['TEMPS']) + else: + # Recuperation depuis le calcul maitre + CALCUL_ESCLAVE['tpsjob'] = prof.param['tpsjob'][0] + CALCUL_ESCLAVE['tpmax'] = prof.args['tpmax'] + + # Utilisation du mot-cle MEMOIRE + if dESCLAVE.has_key('MEMOIRE'): + CALCUL_ESCLAVE['memjob'] = int(dESCLAVE['MEMOIRE']*1024) + # Calcul du parametre memjeveux esclave + memjeveux = int(dESCLAVE['MEMOIRE']/facw) + try: + if mem_aster == 100: CALCUL_ESCLAVE['memjeveux'] = memjeveux + else: CALCUL_ESCLAVE['memjeveux'] = float(int( (float(mem_aster) / 100.) * float(memjeveux))) + except: + UTMESS('F','RECAL0_8') + else: + # Recuperation depuis le calcul maitre + CALCUL_ESCLAVE['memjob'] = int(prof.param['memjob'][0]) + CALCUL_ESCLAVE['memjeveux'] = prof.args['memjeveux'] + + # Parametres batch if CALCUL_ESCLAVE['MODE']=='BATCH': + if dESCLAVE.has_key('CLASSE'): CALCUL_ESCLAVE['CLASSE'] = dESCLAVE['CLASSE'] + if dESCLAVE.has_key('ACTUALISATION'): CALCUL_ESCLAVE['ACTUALISATION'] = dESCLAVE['ACTUALISATION'] + + # Affichage parametres batch if CALCUL_ESCLAVE['CLASSE']: classe = CALCUL_ESCLAVE['CLASSE'] else: classe = ' -auto- ' - UTMESS('I','RECAL0_69', valk=( str(CALCUL_ESCLAVE['TEMPS']), str(CALCUL_ESCLAVE['MEMOIRE']), classe ) ) + UTMESS('I','RECAL0_69', valk=( str(CALCUL_ESCLAVE['tpmax']), str(int(CALCUL_ESCLAVE['memjob'])/1024), str(int(float(CALCUL_ESCLAVE['memjeveux'])*facw)), classe ) ) + + #_____________________________________________ + # + # VERIFICATIONS + #_____________________________________________ + + if float(PARA_DIFF_FINI) > 0.1: + UTMESS('A','RECAL0_76', valk=( str(PARA_DIFF_FINI) ) ) #_____________________________________________ @@ -343,6 +369,8 @@ def macr_recal(self, UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, RESU_CALC, CALCUL_ASTER.RESU_CALC = RESU_CALC CALCUL_ASTER.LIST_PARA = LIST_PARA + if CALCUL_ESCLAVE['UNITE_SUIVI']: CALCUL_ASTER.unity_follow = CALCUL_ESCLAVE['UNITE_SUIVI'] + # Instances des classes pour le calcul de l'erreur et le dimensionnemnt/adim Dim = reca_algo.Dimension(copy.copy(val_init)) diff --git a/Aster/Cata/cataSTA10/Macro/macr_spectre_ops.py b/Aster/Cata/cataSTA10/Macro/macr_spectre_ops.py index 44fb67d6..aec953a2 100644 --- a/Aster/Cata/cataSTA10/Macro/macr_spectre_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macr_spectre_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macr_spectre_ops Macro DATE 19/11/2007 AUTEUR COURTOIS M.COURTOIS +#@ MODIF macr_spectre_ops Macro DATE 22/11/2010 AUTEUR GREFFET N.GREFFET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -109,8 +109,8 @@ def macr_spectre_ops(self,MAILLAGE,PLANCHER,NOM_CHAM,CALCUL,RESU,IMPRESSION=None ### Récupération des fonctions motscles={} if resu['RESU_GENE']!=None : - if CALCUL=='ABSOLU' : - UTMESS('F','SPECTRAL0_8') + #if CALCUL=='ABSOLU' : + # UTMESS('F','SPECTRAL0_8') motscles['RESU_GENE'] = resu['RESU_GENE'] if resu['RESULTAT' ]!=None : diff --git a/Aster/Cata/cataSTA10/Macro/macro_elas_mult_ops.py b/Aster/Cata/cataSTA10/Macro/macro_elas_mult_ops.py index 6e05cae2..719b42d8 100644 --- a/Aster/Cata/cataSTA10/Macro/macro_elas_mult_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macro_elas_mult_ops.py @@ -1,8 +1,8 @@ -#@ MODIF macro_elas_mult_ops Macro DATE 23/03/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF macro_elas_mult_ops Macro DATE 02/02/2011 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -219,8 +219,8 @@ def macro_elas_mult_ops(self,MODELE,CHAM_MATER,CARA_ELEM,NUME_DDL, liste_option=m['OPTION'] for option in liste_option : if option in ( 'FORC_NODA','REAC_NODA', - 'EPSI_NOEU_DEPL','SIGM_NOEU_DEPL','EFGE_NOEU_DEPL', - 'EQUI_NOEU_SIGM','EQUI_NOEU_EPSI',): + 'EPSI_NOEU','SIGM_NOEU','EFGE_NOEU', + 'SIEQ_NOEU','EPEQ_NOEU',): nbno=nbno+1 liste_no.append(option) else: diff --git a/Aster/Cata/cataSTA10/Macro/macro_expans_ops.py b/Aster/Cata/cataSTA10/Macro/macro_expans_ops.py index 44f99c68..63b4dd73 100644 --- a/Aster/Cata/cataSTA10/Macro/macro_expans_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macro_expans_ops.py @@ -1,8 +1,8 @@ -#@ MODIF macro_expans_ops Macro DATE 28/01/2010 AUTEUR BODEL C.BODEL +#@ MODIF macro_expans_ops Macro DATE 14/12/2010 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# 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 @@ -30,7 +30,7 @@ def macro_expans_ops( self, MODES_NUM=None, MODES_EXP=None, RESOLUTION=None, - *args + **args ): """!macro MACRO_EXPANS """ from Accas import _F @@ -47,6 +47,13 @@ def macro_expans_ops( self, NORM_MODE = self.get_cmd('NORM_MODE') + RESU_NUM = MODELE_CALCUL['BASE'] + RESU_EXP = MODELE_MESURE['MESURE'] + MOD_CALCUL = MODELE_CALCUL['MODELE'] + MOD_MESURE = MODELE_MESURE['MODELE'] + NOM_CHAM = MODELE_MESURE['NOM_CHAM'] + + # La macro compte pour 1 dans la numerotation des commandes self.set_icmd(1) @@ -56,20 +63,18 @@ def macro_expans_ops( self, is_nume_num = 1 else: if RESU_NX: - UTMESS('A','MEIDEE0_6',valk=['MODELE_MESURE','RESU_EX']) + UTMESS('A','CALCESSAI0_6',valk=['MODELE_MESURE','RESU_EX']) + if MODELE_MESURE['NUME_MODE'] or MODELE_MESURE['NUME_ORDRE']: # On cree un RESU_EX par extraction de NUME_ORDREs is_nume_exp = 1 + if isinstance(RESU_NUM,dyna_harmo): + # on ne peut pas faire de EXTR_MODE sur un DYNA_HARMO + is_nume_exp = 0 + UTMESS('A','CALCESSAI0_13') else: - if RESU_EX: UTMESS('A','MEIDEE0_6',valk=['MODELE_CALCUL','RESU_NX']) + if RESU_EX: UTMESS('A','CALCESSAI0_6',valk=['MODELE_CALCUL','RESU_NX']) - RESU_NUM = MODELE_CALCUL['BASE'] - RESU_EXP = MODELE_MESURE['MESURE'] - - MOD_CALCUL = MODELE_CALCUL['MODELE'] - MOD_MESURE = MODELE_MESURE['MODELE'] - - NOM_CHAM = MODELE_MESURE['NOM_CHAM'] # Extraction des modes numériques # ------------------------------- @@ -133,7 +138,7 @@ def macro_expans_ops( self, else: paras = None #"LE MODELE MEDURE DOIT ETRE UN CONCEPT DE TYPE DYNA_HARMO OU MODE_MECA") - UTMESS('A','MEIDEE0_1') + UTMESS('A','CALCESSAI0_1') try: @@ -167,15 +172,16 @@ def macro_expans_ops( self, self.DeclareOut( "RESU_RD", RESU_RD ) nume=None - if resu_ex.REFD.get(): - tmp = resu_ex.REFD.get()[3] - if tmp.strip() : - nume = self.get_concept(tmp) - elif NUME_DDL: + if NUME_DDL: nume = NUME_DDL if not nume : - UTMESS('A','MEIDEE0_5') - RESU_RD = PROJ_CHAMP( METHODE = 'ELEM', + if resu_ex.REFD.get(): + tmp = resu_ex.REFD.get()[3] + if tmp.strip() : + nume = self.get_concept(tmp) + else: + UTMESS('A','CALCESSAI0_5') + RESU_RD = PROJ_CHAMP( METHODE = 'COLLOCATION', RESULTAT = RESU_ET, MODELE_1 = MOD_CALCUL, MODELE_2 = MOD_MESURE, diff --git a/Aster/Cata/cataSTA10/Macro/macro_miss_3d_ops.py b/Aster/Cata/cataSTA10/Macro/macro_miss_3d_ops.py index c86c2775..91da1619 100644 --- a/Aster/Cata/cataSTA10/Macro/macro_miss_3d_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macro_miss_3d_ops.py @@ -1,8 +1,8 @@ -#@ MODIF macro_miss_3d_ops Macro DATE 16/02/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF macro_miss_3d_ops Macro DATE 14/03/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -28,8 +28,9 @@ def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS, Ecriture de la macro MACRO_MISS_3D """ import types + import aster from Accas import _F - from Utilitai.Utmess import UTMESS, MessageError + from Utilitai.Utmess import UTMESS from Utilitai.Table import Table from Miss.miss_fichier_sol import fichier_sol @@ -73,7 +74,17 @@ def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS, MODUL2='MISS_PTAS' elif OPTION['MODULE']=='PRE_MISS': MODUL2='GTASTER' - + + alarm16 = False + typ15 = 'A' + if OPTION['MODULE'] == 'MISS_IMPE' \ + and PARAMETRE != None and PARAMETRE['ISSF'] == 'NON': + alarm16 = True + typ15 = 'A+' + + UTMESS(typ15, 'MISS0_15') + if alarm16: + UTMESS('A', 'MISS0_16') ETUDE = PROJET BASE = REPERTOIRE @@ -88,7 +99,7 @@ def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS, tabsol = TABLE_SOL.EXTR_TABLE() try: texte = fichier_sol(tabsol) - except MessageError, err: + except aster.error, err: UTMESS('F', err.id_message, valk=err.valk, vali=err.vali, valr=err.valr) fdsol=open(pdsol,'w') fdsol.write(texte) diff --git a/Aster/Cata/cataSTA10/Macro/macro_mode_meca_ops.py b/Aster/Cata/cataSTA10/Macro/macro_mode_meca_ops.py index 6da742fb..4d4ae7cb 100644 --- a/Aster/Cata/cataSTA10/Macro/macro_mode_meca_ops.py +++ b/Aster/Cata/cataSTA10/Macro/macro_mode_meca_ops.py @@ -1,4 +1,4 @@ -#@ MODIF macro_mode_meca_ops Macro DATE 06/07/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF macro_mode_meca_ops Macro DATE 13/10/2010 AUTEUR BOITEAU O.BOITEAU # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -65,7 +65,6 @@ def macro_mode_meca_ops(self,MATR_A,MATR_B,INFO,METHODE,OPTION,CALC_FREQ, motscfa['FREQ']=(lborne[i],lborne[i+1]) motscit['CALC_FREQ']=_F(OPTION ='BANDE', SEUIL_FREQ =CALC_FREQ['SEUIL_FREQ'], - NPREC_SOLVEUR =CALC_FREQ['NPREC_SOLVEUR'], NMAX_ITER_SHIFT =CALC_FREQ['NMAX_ITER_SHIFT'], PREC_SHIFT =CALC_FREQ['PREC_SHIFT'], **motscfa) diff --git a/Aster/Cata/cataSTA10/Macro/observation_ops.py b/Aster/Cata/cataSTA10/Macro/observation_ops.py index 06c66745..cc924ff9 100644 --- a/Aster/Cata/cataSTA10/Macro/observation_ops.py +++ b/Aster/Cata/cataSTA10/Macro/observation_ops.py @@ -1,8 +1,8 @@ -#@ MODIF observation_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF observation_ops Macro DATE 13/01/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -19,15 +19,15 @@ # ====================================================================== - - +# RESPONSABLE BODEL C.BODEL def observation_ops(self, PROJECTION = None, MODELE_1 = None, MODELE_2 = None, RESULTAT = None, - NUME_DDL = None, + MATR_A = None, + MATR_B = None, MODI_REPERE = None, NOM_CHAM = None, FILTRE = None, @@ -50,9 +50,7 @@ def observation_ops(self, # importation de commandes import aster from Accas import _F - from Utilitai.UniteAster import UniteAster from Utilitai.Utmess import UTMESS - from Utilitai.Table import Table from Cata.cata import mode_meca, dyna_harmo, evol_elas,dyna_trans MODI_REPERE = self.get_cmd('MODI_REPERE') PROJ_CHAMP = self.get_cmd('PROJ_CHAMP') @@ -65,18 +63,11 @@ def observation_ops(self, # ne sert pas par la suite mcfact = args - if NOM_CHAM == 'DEPL': - if isinstance( RESULTAT, dyna_harmo): - TYPE_CHAM = 'NOEU_DEPL_C' - else: - TYPE_CHAM = 'NOEU_DEPL_R' - elif NOM_CHAM == 'EPSI_NOEU_DEPL': - if isinstance( RESULTAT, dyna_harmo): - TYPE_CHAM = 'NOEU_EPSI_C' - else: - TYPE_CHAM = 'NOEU_EPSI_R' - else: - UTMESS('F','ELEMENTS4_48',valk=[NOM_CHAM]) + if not isinstance(NOM_CHAM,tuple): + NOM_CHAM = [NOM_CHAM] + + TYPE_CHAM = None + RESU = None if isinstance( RESULTAT, evol_elas): TYPE_RESU='EVOL_ELAS' if isinstance( RESULTAT, dyna_trans): TYPE_RESU='DYNA_TRANS' @@ -84,7 +75,6 @@ def observation_ops(self, if isinstance( RESULTAT, mode_meca): TYPE_RESU='MODE_MECA' self.DeclareOut( 'RESU', self.sd) - jdc = CONTEXT.get_current_step().jdc # recuperation du maillage associe au modele numerique _maillag = aster.getvectjev( MODELE_1.nom.ljust(8) + '.MODELE .LGRF' ) @@ -123,34 +113,48 @@ def observation_ops(self, # afreq pour les frequences propres if isinstance( RESULTAT, mode_meca): + # frequences propres from Cata.cata import RECU_TABLE __freq = RECU_TABLE(CO=RESULTAT, NOM_PARA='FREQ',); afreq = __freq.EXTR_TABLE().Array('NUME_ORDRE','FREQ') + # noms des matrices + if MATR_A !=None or MATR_B !=None: + # recherche du nume_ddl associe + iret,ibid,nom_nume_ddl = aster.dismoi('F','NOM_NUME_DDL',MATR_A.nom,'MATR_ASSE') + NUME_DDL = self.get_concept(nom_nume_ddl) + # coherence avec le nom associe a MODELE_2 : + iret,ibid,nom_modele = aster.dismoi('F','NOM_MODELE',nom_nume_ddl,'NUME_DDL') + if nom_modele.strip() != MODELE_2.nom.strip(): + UTMESS('F','CALCESSAI0_10') + else: + UTMESS('A','CALCESSAI0_9') + NUME_DDL = None + else: afreq = None + NUME_DDL = None - nume_ordr_demande = mcfact['NUME_ORDRE'] - if type(nume_ordr_demande) != tuple : - nume_ordr_demande = [nume_ordr_demande] - - num_max = len(RESULTAT.LIST_VARI_ACCES()['NUME_ORDRE']) + indice = range(len(RESULTAT.LIST_VARI_ACCES()['NUME_ORDRE'])) #*********************************************** # PHASE DE CALCUL DE LA DEFORMATION MOYENNE AUX NOEUDS # CHAMP CALCULE SUR LE MODELE NUMERIQUE #*********************************************** + resu_epsi = None if EPSI_MOYENNE != None : + for nomcham in NOM_CHAM: + if nomcham == 'EPSI_NOEU': + if isinstance( RESULTAT, dyna_harmo): + TYPE_CHAM = 'NOEU_EPSI_C' + else: + TYPE_CHAM = 'NOEU_EPSI_R' - if NOM_CHAM != 'EPSI_NOEU_DEPL': - __proj= RESULTAT - UTMESS('F','UTILITAI8_24',valk=['NOEU_EPSI',NOM_CHAM]) + if TYPE_CHAM == None: + UTMESS('F', 'UTILITAI8_24', valk = ['NOEU_EPSI', nomcham]) else: - if nume_ordr_demande[0]: - num_ordr = nume_ordr_demande - else: - num_ordr = RESULTAT.LIST_VARI_ACCES()['NUME_ORDRE'] + num_ordr = RESULTAT.LIST_VARI_ACCES()['NUME_ORDRE'] if isinstance( RESULTAT, evol_elas): list_inst = RESULTAT.LIST_VARI_ACCES()['INST'] @@ -202,34 +206,34 @@ def observation_ops(self, if TYPE_CHAM[-1:] == 'C': mcfactr = { 'NOM_CMP' : nom_cmps, - 'OPERATION' : 'EXTRACTION', - 'INTITULE' : str('R'+str(nb_mcfact)), - 'FORMAT_C' : 'REEL', - 'NOEUD' : l_noeud, - 'NOM_CHAM' : 'EPSI_NOEU_DEPL', - 'RESULTAT' : RESULTAT, - 'NUME_ORDRE' : num_ordr, - } + 'OPERATION' : 'EXTRACTION', + 'INTITULE' : str('R'+str(nb_mcfact)), + 'FORMAT_C' : 'REEL', + 'NOEUD' : l_noeud, + 'NOM_CHAM' : 'EPSI_NOEU', + 'RESULTAT' : RESULTAT, + 'NUME_ORDRE' : num_ordr, + } argsi['ACTION'].append(mcfactr) mcfacti = { 'NOM_CMP' : nom_cmps, - 'OPERATION' : 'EXTRACTION', - 'INTITULE' : str('I'+str(nb_mcfact)), - 'FORMAT_C' : 'IMAG', - 'NOEUD' : l_noeud, - 'NOM_CHAM' : 'EPSI_NOEU_DEPL', - 'RESULTAT' : RESULTAT, - 'NUME_ORDRE' : num_ordr, - } + 'OPERATION' : 'EXTRACTION', + 'INTITULE' : str('I'+str(nb_mcfact)), + 'FORMAT_C' : 'IMAG', + 'NOEUD' : l_noeud, + 'NOM_CHAM' : 'EPSI_NOEU', + 'RESULTAT' : RESULTAT, + 'NUME_ORDRE' : num_ordr, + } argsi['ACTION'].append(mcfacti) else: mcfactr = { 'NOM_CMP' : nom_cmps, - 'OPERATION' : 'EXTRACTION', - 'INTITULE' : str(nb_mcfact), - 'NOEUD' : l_noeud, - 'NOM_CHAM' : 'EPSI_NOEU_DEPL', - 'RESULTAT' : RESULTAT, - 'NUME_ORDRE' : num_ordr, - } + 'OPERATION' : 'EXTRACTION', + 'INTITULE' : str(nb_mcfact), + 'NOEUD' : l_noeud, + 'NOM_CHAM' : 'EPSI_NOEU', + 'RESULTAT' : RESULTAT, + 'NUME_ORDRE' : num_ordr, + } argsi['ACTION'].append(mcfactr) _tepsi=POST_RELEVE_T( @@ -240,8 +244,8 @@ def observation_ops(self, DETRUIRE( CONCEPT= _F( NOM = _tepsi ), INFO=1) mcfact2 = { } - __chame = [None]*num_max - for ind in num_ordr: + __chame = [None]*len(indice) + for ind in indice: argsa = {'AFFE' : [], } for mcfacta in range(nb_mcfact): l_noeud_mcfact = lnoeuds[str(mcfacta+1)] @@ -259,17 +263,17 @@ def observation_ops(self, for row in table.rows: if TYPE_CHAM[-1:] == 'C': if row['INTITULE'].strip() == str('R'+str(mcfacta+1)) \ - and row['NUME_ORDRE'] == ind : + and row['NUME_ORDRE'] == num_ordr[ind] : l_valr.append(row[cmp]) lur = 1 elif row['INTITULE'].strip() == str('I'+str(mcfacta+1)) \ - and row['NUME_ORDRE'] == ind : + and row['NUME_ORDRE'] == num_ordr[ind] : l_vali.append(row[cmp]) lui = 1 - + else: if row['INTITULE'].strip() == str(mcfacta+1) \ - and row['NUME_ORDRE'] == ind: + and row['NUME_ORDRE'] == num_ordr[ind]: l_val.append(row[cmp]) if TYPE_CHAM[-1:] == 'C': @@ -288,8 +292,8 @@ def observation_ops(self, vmoyer = sum(l_valr)/len(l_valr) vmoyei = sum(l_vali)/len(l_vali) vmoye = sum(l_valc)/len(l_valc) - vminr = min(l_valr) - vmini = min(l_vali) + vminr = min(l_valr) + vmini = min(l_vali) vmaxr = max(l_valr) vmaxi = max(l_vali) if vmoyer > 0: @@ -324,10 +328,10 @@ def observation_ops(self, if cmp_vari not in masque_mc: if cmp == cmp_vari and not vu: if EPSI_MOYENNE[mcfacta]['MAILLE'] != None: - entite = str('MAILLE : '+str(PSI_MOYENNE[mcfacta]['MAILLE'])) + entite = str('MAILLE : '+str(EPSI_MOYENNE[mcfacta]['MAILLE'])) if EPSI_MOYENNE[mcfacta]['GROUP_MA'] != None: entite = str('GROUP_MA : '+str(EPSI_MOYENNE[mcfacta]['GROUP_MA'])) - UTMESS('A','OBSERVATION_8',vali=[ind],valr=[seuil_mc],valk=[entite,cmp]) + UTMESS('A','OBSERVATION_8',vali=[num_ordr[ind]],valr=[seuil_mc],valk=[entite,cmp]) vu = 1 @@ -344,38 +348,38 @@ def observation_ops(self, argsa['AFFE'].append(mcfactc) - __chame[ind-1] = CREA_CHAMP( OPERATION = 'AFFE', + __chame[ind] = CREA_CHAMP( OPERATION = 'AFFE', MODELE = MODELE_1, PROL_ZERO = 'OUI', - TYPE_CHAM = TYPE_CHAM, - OPTION = NOM_CHAM, + TYPE_CHAM = TYPE_CHAM, + OPTION = 'EPSI_NOEU', **argsa ); if isinstance( RESULTAT, mode_meca): - mcfact2 = {'CHAM_GD' : __chame[ind-1], + mcfact2 = {'CHAM_GD' : __chame[ind], 'MODELE' : MODELE_1, - 'NUME_MODE' : int(afreq[ind-1,0]), - 'FREQ' : afreq[ind-1,1], + 'NUME_MODE' : int(afreq[ind,0]), + 'FREQ' : afreq[ind,1], } if isinstance( RESULTAT, evol_elas): - mcfact2 = {'CHAM_GD' : __chame[ind-1], + mcfact2 = {'CHAM_GD' : __chame[ind], 'MODELE' : MODELE_1, - 'INST' : list_inst[ind-1], + 'INST' : list_inst[ind], } if isinstance( RESULTAT, dyna_trans): - mcfact2 = {'CHAM_GD' : __chame[ind-1], + mcfact2 = {'CHAM_GD' : __chame[ind], 'MODELE' : MODELE_1, 'INST' : list_inst[ind], } if isinstance( RESULTAT, dyna_harmo): - mcfact2 = {'CHAM_GD' : __chame[ind-1], - 'MODELE' : MODELE_1, - 'FREQ' : list_freq[ind-1], - } + mcfact2 = {'CHAM_GD' : __chame[ind], + 'MODELE' : MODELE_1, + 'FREQ' : list_freq[ind], + } if cham_mater is not None: mcfact2['CHAM_MATER'] = cham_mater @@ -384,32 +388,62 @@ def observation_ops(self, liste.append(mcfact2) - __proj = CREA_RESU( + resu_epsi = 'EPSI_NOEU' + RESU = CREA_RESU( OPERATION = 'AFFE', TYPE_RESU = TYPE_RESU, - NOM_CHAM = NOM_CHAM, + NOM_CHAM = 'EPSI_NOEU', AFFE = liste, ); - else: - __proj= RESULTAT +#*********************************************** +# BOUCLE SUR LES NOM_CHAM +#*********************************************** + + for nomcham in NOM_CHAM: + + if nomcham == 'DEPL' or nomcham == 'VITE' or nomcham == 'ACCE': + if isinstance( RESULTAT, dyna_harmo): + TYPE_CHAM = 'NOEU_DEPL_C' + else: + TYPE_CHAM = 'NOEU_DEPL_R' + elif nomcham == 'EPSI_NOEU': + if isinstance( RESULTAT, dyna_harmo): + TYPE_CHAM = 'NOEU_EPSI_C' + else: + TYPE_CHAM = 'NOEU_EPSI_R' + else: + UTMESS('F', 'ELEMENTS4_48', valk = [nomcham]) + #*********************************************** # PHASE DE PROJECTION #*********************************************** - if PROJECTION == 'OUI': - __proj=PROJ_CHAMP(RESULTAT = __proj, + if PROJECTION == 'OUI': + if resu_epsi and nomcham == 'EPSI_NOEU': + __proj = PROJ_CHAMP(METHODE='COLLOCATION', + RESULTAT = RESU, MODELE_1 = MODELE_1, MODELE_2 = MODELE_2, - NUME_DDL = NUME_DDL, - NOM_CHAM = NOM_CHAM, + NOM_CHAM = nomcham, **mcfact - ); - - modele = MODELE_2 - else: - modele = MODELE_1 + ) + else: + __proj = PROJ_CHAMP(METHODE = 'COLLOCATION', + RESULTAT = RESULTAT, + MODELE_1 = MODELE_1, + MODELE_2 = MODELE_2, + NOM_CHAM = nomcham, + **mcfact + ) + modele = MODELE_2 + else: + if resu_epsi and nomcham == 'EPSI_NOEU': + __proj = RESU + else: + __proj = RESULTAT + modele = MODELE_1 #*********************************************** @@ -432,26 +466,27 @@ def observation_ops(self, # ) - if MODIF_REPERE != None : - if nume_ordr_demande[0]: - num_ordr = nume_ordr_demande - else: - num_ordr = __proj.LIST_VARI_ACCES()['NUME_ORDRE'] + if MODIF_REPERE != None : + num_ordr = __proj.LIST_VARI_ACCES()['NUME_ORDRE'] for modif_rep in MODIF_REPERE : - type_cham = modif_rep['TYPE_CHAM'] - if type_cham == 'TENS_2D': - nom_cmp = ['EPXX','EPYY','EPZZ','EPXY',] - elif type_cham == 'TENS_3D': - nom_cmp = ['EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ',] - else: - nom_cmp = modif_rep['NOM_CMP'] + modi_rep = modif_rep.val + type_cham = modif_rep['TYPE_CHAM'] + nom_cmp = modif_rep['NOM_CMP'] + + if type_cham == 'TENS_2D': + nomchamx = 'EPSI_NOEU' + elif type_cham == 'TENS_3D': + nomchamx = 'EPSI_NOEU' + else: + nomchamx = 'DEPL' + + if nomcham == nomchamx: mcfact1 = { 'NOM_CMP' : nom_cmp, 'TYPE_CHAM' : type_cham, - 'NOM_CHAM' : NOM_CHAM } + 'NOM_CHAM' : nomcham } mcfact2 = { } - modi_rep = modif_rep.val if modi_rep['REPERE'] == 'DIR_JAUGE' : vect_x = None @@ -462,7 +497,6 @@ def observation_ops(self, vect_y = modi_rep['VECT_Y'] # il faut des mailles pour les tenseurs d'ordre 2 - taille = 0 for typ in ['MAILLE','GROUP_MA',]: if modi_rep.has_key(typ) : if PROJECTION == 'OUI': @@ -470,7 +504,6 @@ def observation_ops(self, else: maya = mayanum list_ma = find_ma(maya, {typ : modi_rep[typ]}) - taille = len(list_ma) mcfact1.update({ 'MAILLE' : list_ma }) angl_naut = crea_repere_xy(vect_x, vect_y) @@ -478,12 +511,14 @@ def observation_ops(self, mcfact2.update({ 'REPERE' : 'UTILISATEUR', 'ANGL_NAUT' : angl_naut }) - args = {'MODI_CHAM' : mcfact1, + argsm = {'MODI_CHAM' : mcfact1, 'DEFI_REPERE' : mcfact2 } - __proj = MODI_REPERE( RESULTAT = __proj, - NUME_ORDRE = num_ordr, - **args) + __bidon = MODI_REPERE( RESULTAT = __proj, + NUME_ORDRE = num_ordr, + **argsm) + DETRUIRE( CONCEPT= _F( NOM = __proj ), INFO=1) + __proj = __bidon if modi_rep['REPERE'] == 'NORMALE' : # Cas ou l'utilisateur choisit de creer les reperes locaux @@ -496,7 +531,7 @@ def observation_ops(self, UTMESS('E','UTILITAI7_9') chnorm = crea_normale(self, MODELE_1, MODELE_2, NUME_DDL, - cham_mater, cara_elem) + cham_mater, cara_elem) modele = MODELE_2 chnormx = chnorm.EXTR_COMP('DX',[],1) ind_noeuds = chnormx.noeud @@ -519,12 +554,12 @@ def observation_ops(self, mcfact1.update({ 'NOEUD' : nomnoe }) mcfact2.update({ 'REPERE' : 'UTILISATEUR', 'ANGL_NAUT' : angl_naut}) - args = {'MODI_CHAM' : mcfact1, + argsm = {'MODI_CHAM' : mcfact1, 'DEFI_REPERE' : mcfact2 } __bid[k+1] = MODI_REPERE( RESULTAT = __bid[k], TOUT_ORDRE = 'OUI', CRITERE = 'RELATIF', - **args) + **argsm) k = k + 1 __proj = __bid[-1:][0] @@ -553,12 +588,12 @@ def observation_ops(self, mcfact2.update({ 'REPERE' : 'UTILISATEUR', 'ANGL_NAUT' : angl_naut }) - args = {'MODI_CHAM' : mcfact1, - 'DEFI_REPERE' : mcfact2 } + argsm = {'MODI_CHAM' : mcfact1, + 'DEFI_REPERE' : mcfact2 } __bidon = MODI_REPERE( RESULTAT = __proj, CRITERE = 'RELATIF', - **args) + **argsm) DETRUIRE( CONCEPT= _F( NOM = __proj ), INFO=1) __proj = __bidon @@ -567,199 +602,157 @@ def observation_ops(self, # Phase de selection des DDL de mesure #************************************************* - if FILTRE != None: - if nume_ordr_demande[0]: - num_ordr = nume_ordr_demande - else: - num_ordr = __proj.LIST_VARI_ACCES()['NUME_ORDRE'] + resu_filtre = None + if FILTRE != None: + num_ordr = __proj.LIST_VARI_ACCES()['NUME_ORDRE'] - __chamf = [None]*num_max - if isinstance( RESULTAT, evol_elas): - list_inst_ini = RESULTAT.LIST_VARI_ACCES()['INST'] - if isinstance( RESULTAT, dyna_trans): - list_inst_ini = RESULTAT.LIST_VARI_ACCES()['INST'] - if isinstance( RESULTAT, dyna_harmo): - list_freq_ini = RESULTAT.LIST_VARI_ACCES()['FREQ'] + __chamf = [None]*len(indice) + if isinstance( RESULTAT, evol_elas): + list_inst = __proj.LIST_VARI_ACCES()['INST'] + if isinstance( RESULTAT, dyna_trans): + list_inst = __proj.LIST_VARI_ACCES()['INST'] + if isinstance( RESULTAT, dyna_harmo): + list_freq = __proj.LIST_VARI_ACCES()['FREQ'] - liste = [] - for ind in num_ordr: - mcfact2 = { } - filtres = [] - __chamex = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM, + liste = [] + + for ind in indice: + mcfact2 = { } + filtres = [] + __chamex = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM, OPERATION = 'EXTR', RESULTAT = __proj, - NOM_CHAM = NOM_CHAM, - NUME_ORDRE = ind,); + NOM_CHAM = nomcham, + NUME_ORDRE = num_ordr[ind],); + + for mcfiltre in FILTRE : + filtre = mcfiltre.val + try: + nomchamx = filtre['NOM_CHAM'] + except KeyError: + nomchamx = None + + if nomchamx == None or nomchamx == nomcham: - for mcfiltre in FILTRE : mcfact1 = {} - filtre = mcfiltre.val - for typ in ['NOEUD','GROUP_NO','MAILLE','GROUP_MA']: + + atraiter = None + if filtre['DDL_ACTIF'][0][0] == 'E' and nomcham == 'EPSI_NOEU': + atraiter = nomcham + elif filtre['DDL_ACTIF'][0][0] == 'D' and nomcham == 'DEPL': + atraiter = nomcham + elif filtre['DDL_ACTIF'][0][0] == 'D' and nomcham == 'VITE': + atraiter = nomcham + elif filtre['DDL_ACTIF'][0][0] == 'D' and nomcham == 'ACCE': + atraiter = nomcham + + if atraiter: + for typ in ['NOEUD', 'GROUP_NO', 'MAILLE', 'GROUP_MA']: if filtre.has_key(typ) : mcfact1.update({typ : filtre[typ]}) - mcfact1.update({'NOM_CMP' : filtre['DDL_ACTIF'], + mcfact1.update({'NOM_CMP' : filtre['DDL_ACTIF'], 'CHAM_GD' : __chamex }) - filtres.append(mcfact1) + filtres.append(mcfact1) - if NOM_CHAM == 'DEPL': - __chamf[ind-1] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM, + if len(filtres) > 0: + if nomcham == 'DEPL' or nomcham == 'VITE' or nomcham == 'ACCE': + __chamf[ind] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM, OPERATION = 'ASSE', MODELE = modele, ASSE = filtres ); - elif NOM_CHAM == 'EPSI_NOEU_DEPL': - __chamf[ind-1] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM, + elif nomcham == 'EPSI_NOEU': + __chamf[ind] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM, OPERATION = 'ASSE', PROL_ZERO = 'OUI', MODELE = modele, ASSE = filtres, ); - - else: + else: valk = [] - valk.append(NOM_CHAM) - valk.append('DEPL') - valk.append('EPSI_NOEU_DEPL') - UTMESS('F','OBSERVATION_6',valk) - - if isinstance( RESULTAT, mode_meca): - mcfact2 = {'CHAM_GD' : __chamf[ind-1], - 'MODELE' : modele, - 'NUME_MODE' : int(afreq[ind-1,0]), - 'FREQ' : afreq[ind-1,1], + valk.append(nomcham) + valk.append('DEPL VITE ACCE') + valk.append('EPSI_NOEU') + UTMESS('F','OBSERVATION_6',valk) + + argsr = {} + if isinstance( RESULTAT, mode_meca): + mcfact2 = {'CHAM_GD' : __chamf[ind], + 'MODELE' : modele, + 'NUME_MODE' : int(afreq[ind,0]), + 'FREQ' : afreq[ind,1], } - - if isinstance( RESULTAT, evol_elas): - mcfact2 = {'CHAM_GD' : __chamf[ind-1], + ## on recopie les matrices associees au MODELE_2 dans le resultat final + ## NB : ce n'est peut-etre pas propre, car ces matrices ne + ## veulent plus rien dire si on a filtre des DDL !!!!! + argsr = { 'MATR_A' : MATR_A, + 'MATR_B' : MATR_B + } + + if isinstance( RESULTAT, evol_elas): + mcfact2 = {'CHAM_GD' : __chamf[ind], 'MODELE' : modele, - 'INST' : list_inst_ini[ind-1], + 'INST' : list_inst[ind], } - if isinstance( RESULTAT, dyna_trans): - mcfact2 = {'CHAM_GD' : __chamf[ind-1], + if isinstance( RESULTAT, dyna_trans): + mcfact2 = {'CHAM_GD' : __chamf[ind], 'MODELE' : modele, - 'INST' : list_inst_ini[ind-1], + 'INST' : list_inst[ind], } - if isinstance( RESULTAT, dyna_harmo): - mcfact2 = {'CHAM_GD' : __chamf[ind-1], + if isinstance( RESULTAT, dyna_harmo): + mcfact2 = {'CHAM_GD' : __chamf[ind], 'MODELE' : MODELE_2, - 'FREQ' : list_freq_ini[ind-1], + 'FREQ' : list_freq[ind], } - - if cham_mater is not None: + if cham_mater is not None: mcfact2['CHAM_MATER'] = cham_mater - if cara_elem is not None: + if cara_elem is not None: mcfact2['CARA_ELEM'] = cara_elem - liste.append(mcfact2) - DETRUIRE( CONCEPT= _F( NOM = __chamex ), INFO=1) + liste.append(mcfact2) + + DETRUIRE( CONCEPT= _F( NOM = __chamex ), INFO=1) - __proj = CREA_RESU( + if len(filtres) > 0 and len(liste) > 0: + resu_filtre = nomcham + if RESU: + RESU = CREA_RESU( reuse = RESU, OPERATION = 'AFFE', TYPE_RESU = TYPE_RESU, - NOM_CHAM = NOM_CHAM, + NOM_CHAM = nomcham, AFFE = liste, + **argsr ); + else: + RESU = CREA_RESU( + OPERATION = 'AFFE', + TYPE_RESU = TYPE_RESU, + NOM_CHAM = nomcham, + AFFE = liste, + **argsr + ) + #************************************************* -# Recopie des resultats (__proj) dans RESU +# Recopie de __proj dans RESU si celle-ci +# n'a pas encore ete faite via FILTRE #************************************************* - if nume_ordr_demande[0]: - num_ordr = nume_ordr_demande - else: - num_ordr = __proj.LIST_VARI_ACCES()['NUME_ORDRE'] - - __chamf = [None]*num_max - if isinstance( RESULTAT, evol_elas): - list_inst = __proj.LIST_VARI_ACCES()['INST'] - if isinstance( RESULTAT, dyna_trans): - list_inst = __proj.LIST_VARI_ACCES()['INST'] - if isinstance( RESULTAT, dyna_harmo): - list_freq = __proj.LIST_VARI_ACCES()['FREQ'] - - liste = [] - - for ind in num_ordr: - mcfact2 = { } - filtres = [] - __chamex = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM, - OPERATION = 'EXTR', - RESULTAT = __proj, - NOM_CHAM = NOM_CHAM, - NUME_ORDRE = ind,); - - mcfact1 = {} - mcfact1.update({'TOUT' : 'OUI', - 'CHAM_GD' : __chamex }) - filtres.append(mcfact1) - - if NOM_CHAM == 'DEPL': - __chamf[ind-1] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM, - OPERATION = 'ASSE', - MODELE = modele, - ASSE = filtres - ); - - elif NOM_CHAM == 'EPSI_NOEU_DEPL': - __chamf[ind-1] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM, - OPERATION = 'ASSE', - PROL_ZERO = 'OUI', - MODELE = modele, - ASSE = filtres, - ); - - else: - valk = [] - valk.append(NOM_CHAM) - valk.append('DEPL') - valk.append('EPSI_NOEU_DEPL') - UTMESS('F','OBSERVATION_6',valk) - - if isinstance( RESULTAT, mode_meca): - mcfact2 = {'CHAM_GD' : __chamf[ind-1], - 'MODELE' : modele, - 'NUME_MODE' : int(afreq[ind-1,0]), - 'FREQ' : afreq[ind-1,1], - } - - if isinstance( RESULTAT, evol_elas): - mcfact2 = {'CHAM_GD' : __chamf[ind-1], - 'MODELE' : modele, - 'INST' : list_inst[ind-1], - } - - if isinstance( RESULTAT, dyna_trans): - mcfact2 = {'CHAM_GD' : __chamf[ind-1], - 'MODELE' : modele, - 'INST' : list_inst[ind-1], - } - - if isinstance( RESULTAT, dyna_harmo): - mcfact2 = {'CHAM_GD' : __chamf[ind-1], - 'MODELE' : MODELE_2, - 'FREQ' : list_freq[ind-1], - } - - - if cham_mater is not None: - mcfact2['CHAM_MATER'] = cham_mater - if cara_elem is not None: - mcfact2['CARA_ELEM'] = cara_elem - - liste.append(mcfact2) - DETRUIRE( CONCEPT= _F( NOM = __chamex ), INFO=1) + if resu_filtre == None: + RESU = PROJ_CHAMP(METHODE = 'COLLOCATION', + RESULTAT = __proj, + MODELE_1 = modele, + MODELE_2 = modele, + NUME_DDL = NUME_DDL, + NOM_CHAM = nomcham, + **mcfact + ) - RESU = CREA_RESU( - OPERATION = 'AFFE', - TYPE_RESU = TYPE_RESU, - NOM_CHAM = NOM_CHAM, - AFFE = liste, - ); return ier @@ -786,7 +779,6 @@ def crea_normale(self, modele_1, modele_2, nom_modele_num = modele_1.nom _maillag = aster.getvectjev( nom_modele_num.ljust(8) + '.MODELE .LGRF' ) maillage = _maillag[0].strip() - jdc = CONTEXT.get_current_step().jdc mayanum = self.get_concept(maillage) @@ -833,7 +825,8 @@ def crea_normale(self, modele_1, modele_2, ); - __norm4 = PROJ_CHAMP( RESULTAT = __norm3, + __norm4 = PROJ_CHAMP( METHODE='COLLOCATION', + RESULTAT = __norm3, MODELE_1 = modele_1, MODELE_2 = modele_2, NOM_CHAM = 'DEPL', @@ -866,7 +859,6 @@ def crea_repere(chnorm, ind_no, vect): import numpy nom_para = vect.keys()[0] # nom_para = 'VECT_X' ou 'VECT_Y' - condition = list(vect[nom_para]) # 1) pour tous les noeuds du maillage experimental, recuperer la normale # calculee a partir du maillage numerique @@ -874,9 +866,6 @@ def crea_repere(chnorm, ind_no, vect): chnormy = chnorm.EXTR_COMP('DY',[],1) chnormz = chnorm.EXTR_COMP('DZ',[],1) - noeuds = chnormx.noeud - nbno = len(noeuds) - normale = [chnormx.valeurs[ind_no], chnormy.valeurs[ind_no], chnormz.valeurs[ind_no]] @@ -911,7 +900,6 @@ def crea_repere(chnorm, ind_no, vect): return angl_naut - #********************************************************************** # Calcul des angles nautiques pour le repere associe a VECT_X et VECT_Y #********************************************************************** @@ -983,7 +971,7 @@ def crea_repere_xy(vect_x, vect_y): vect2 = vy vect1 = numpy.cross(vect2, vect3) - + norm12=numpy.dot(vect1,vect1) norm22=numpy.dot(vect2,vect2) norm32=numpy.dot(vect3,vect3) @@ -1091,7 +1079,6 @@ def norm(x): tmp = numpy.sqrt(numpy.dot(x,x)) return tmp - def anglnaut(P): @@ -1103,9 +1090,7 @@ def anglnaut(P): import copy import numpy # expression des coordonnees globales des 3 vecteurs de base locale - x = numpy.array([1.,0.,0.]) y = numpy.array([0.,1.,0.]) - z = numpy.array([0.,0.,1.]) xg = P[:,0] yg = P[:,1] diff --git a/Aster/Cata/cataSTA10/Macro/post_bordet_ops.py b/Aster/Cata/cataSTA10/Macro/post_bordet_ops.py new file mode 100644 index 00000000..6773ec43 --- /dev/null +++ b/Aster/Cata/cataSTA10/Macro/post_bordet_ops.py @@ -0,0 +1,337 @@ +#@ MODIF post_bordet_ops Macro DATE 23/02/2011 AUTEUR BARGELLI R.BARGELLINI + +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== + +#definition des fonctions python pour les passer en formule plus tard +def nap_for_py(x,y,F): + return F(x,y) + +def maxi(x,y): + if x>=y : + return x + elif y>x: + return y + +#corps de la macro +def post_bordet_ops(self, +TOUT, +GROUP_MA, +INST, +PRECISION, +CRITERE, +NUME_ORDRE, +PROBA_NUCL, +RESULTAT, +PARAM, +TEMP, +COEF_MULT,**args): + import numpy as NP + import aster + from Accas import _F + from SD.co_fonction import fonction_sdaster, fonction_c, nappe_sdaster + from Utilitai.Utmess import UTMESS + + ier=0 + # + # La macro compte pour 1 dans la numerotation des commandes + # + self.set_icmd(1) + # + # On importe les definitions des commandes a utiliser dans la macro + # + CREA_CHAMP = self.get_cmd('CREA_CHAMP') + CALC_CHAM_ELEM = self.get_cmd('CALC_CHAM_ELEM') + CALC_ELEM = self.get_cmd('CALC_ELEM') + CREA_TABLE = self.get_cmd('CREA_TABLE') + FORMULE =self.get_cmd('FORMULE') + CALC_TABLE =self.get_cmd('CALC_TABLE') + # + # Definition du concept sortant dans le contexte de la macro + # + + self.DeclareOut('tabout', self.sd) + + # + #Recuperation du champ materiau compris dans le resultat + # + iret,ibid,__nom_cham_mater = aster.dismoi('F','CHAM_MATER',RESULTAT.nom,'RESULTAT') +# if (len(__nom_cham_mater) == 0) or (len(__nom_cham_mater) > 1) : + if (__nom_cham_mater.strip() == "#PLUSIEURS") or (__nom_cham_mater.strip() == "#AUCUN") : + print 'ON EST LA' + UTMESS('F','RUPTURE1_58') + else : + __cham_mater = self.get_concept(__nom_cham_mater.strip()) +# +#Recuperation du modele a partir du resultat + iret,ibid,__n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT') + __n_modele=__n_modele.rstrip() + if len(__n_modele)==0 or __n_modele=="#PLUSIEURS": + UTMESS('F','RUPTURE1_58') + __model = self.get_concept(__n_modele) +# + +# + # Creation du dictionnaire des parametres materiau de l'utilisateur + # + __DPARAM=PARAM[0].cree_dict_valeurs(PARAM[0].mc_liste) + + # on l'ajoute dans l'environnement pour pouvoir s'en servir dans les commandes + self.update_const_context({"""__DPARAM""" : __DPARAM}) + + # + #Dimension du modele + # + iret,ndim,rbid = aster.dismoi('F','DIM_GEOM',__model.nom,'MODELE') + + if (iret==1) or (ndim==23): UTMESS('F','RUPTURE1_57') + + # + #Definition des formules pour le calcul de sigy plus tard + # + + __NPY=FORMULE(NOM_PARA=('EPSI'),VALE="""nap_for_py(EPSI,__TEMPE,__DPARAM['SEUIL_CALC'])""") + + __MAXI=FORMULE(NOM_PARA=('T1'),VALE="""maxi(T1,0.)""") + + # on l'ajoute dans l'environnement pour pouvoir s'en servir dans les commandes + self.update_const_context({'nap_for_py' : nap_for_py}) + self.update_const_context({'maxi' : maxi}) + # + #Calcul des grandeurs dont on a besoin : contrainte principale, def plastique et volume du pt de gauss + # + + #Volume point de gauss + __VOL_PG=CALC_CHAM_ELEM(MODELE=__model, + CHAM_MATER=__cham_mater, + TOUT='OUI', + OPTION='COOR_ELGA',); + if GROUP_MA: + __VOL=__VOL_PG.EXTR_COMP('W',[GROUP_MA]) + elif TOUT : + __VOL=__VOL_PG.EXTR_COMP('W',[]) + +#contrainte principale max + __RESU=CALC_ELEM( + RESULTAT=self['RESULTAT'], + OPTION='SIEQ_ELGA'); +# NOM_CMP='PRIN3',); +#deformation plastique + __RESU=CALC_ELEM( + reuse=__RESU, + RESULTAT=self['RESULTAT'], + OPTION='EPSP_ELGA', + ); +# +#Recuperation de la liste des instants et des ordres de calcul + __list_ordre=__RESU.LIST_VARI_ACCES()['NUME_ORDRE'] + __list_inst=__RESU.LIST_VARI_ACCES()['INST'] + +# +#On va travailler en ordre ; si l'utilisateur entre un instant, on va le transformer en ordre + __entree_instant=None + if INST : + if CRITERE=='ABSOLU': + __prec=PRECISION + elif CRITERE=='RELATIF': + __prec=PRECISION*INST + __entree_instant=True + __n=0 + __trouv=None + while (__n=INST) and (__list_inst[__n]-__prec<=INST): + __instant=__list_inst[__n] + __trouv=True + __n=__n+1 + if not __trouv: + UTMESS('F','RUPTURE1_53',valr=INST,valk='utilise pour le calcul de Bordet') + if __entree_instant==True: + index_ordre=__list_inst.index(__instant) + nume_ordre=__list_ordre[index_ordre] + elif NUME_ORDRE: + nume_ordre=NUME_ORDRE + if nume_ordre not in __list_ordre : + UTMESS('F','RUPTURE0_51',vali=int(nume_ordre),valk='utilise pour le calcul de Bordet') +# +#Pour Bordet, il nous faut les champs a tous les instants jusqu'a l'instant considere +# + __S_TOT=[None for i in range(nume_ordre+1)] #contrainte principale maximale + __EPSP=[None for i in range(nume_ordre+1)] #champ de deformation plastique + __EP=[[None for j in range(6)] for i in range(nume_ordre+1)] #tenseur des deformations plastiques + __EPEQ=[[None for j in range(0)] for i in range(nume_ordre+1)] #deformation plastique equivalente + __EPEQM=[[0.] for i in range(nume_ordre+1)] #deformation plastique equivalente a l'instant precedent + __S_BAR=[None for i in range(nume_ordre+1)] + __PRIN=[[None]for i in range(nume_ordre+1)] + __EQ_BAR=[[None] for i in range(nume_ordre+1)] + __EQ_PT=[[None] for i in range(nume_ordre+1)] + __EQ_PT2=[[None] for i in range(nume_ordre+1)] + __PR_BAR=[[None]for i in range(nume_ordre+1)] + __DEP=[[None] for i in range(nume_ordre+1)] + __BORDTO=0.#valeur sans l'exposant final, que l'on va sommer sur les instants + __BORDTI=0.#valeur sans l'exposant final, sommee sur les instants + __BORDTT=[0. for i in range(nume_ordre+1)]#valeur avec l'exposant, que l'on stocke dans la table a chaque instant + __PROBA=[0. for i in range(nume_ordre+1)]#Probabilite de rupture par clivage + +#LISTE DES PARAMETRES + __sig0=__DPARAM['SEUIL_REFE'] + __sigth=__DPARAM['SIG_CRIT'] + __sigref=__DPARAM['SIGM_REFE'] + __m=__DPARAM['M'] + __V0=__DPARAM['VOLU_REFE'] + if PROBA_NUCL=='OUI': + __ep0=__DPARAM['DEF_PLAS_REFE'] + elif PROBA_NUCL=='NON': + __ep0=0 + __c_mult=COEF_MULT +# +#On va constuire des champs a chaque instant +# + if __list_ordre[0]==0: + __fin_ordre=nume_ordre+1 + elif __list_ordre[0]!=0: + __fin_ordre=nume_ordre + for ordre in range(__list_ordre[0],__fin_ordre): +# +#Temperature a extraire : soit une fonction du temps, soit un reel +# + if type(TEMP)==fonction_sdaster: + __TEMPE=TEMP(__list_inst[ordre]) + elif type(TEMP)!=fonction_sdaster: + __TEMPE=TEMP + + + self.update_const_context({'__TEMPE' : __TEMPE}) +# +#On met ces grandeurs dans des champs specifiques +# + __S_TOT[ordre]=CREA_CHAMP(TYPE_CHAM='ELGA_SIEF_R', + RESULTAT=__RESU, + OPERATION='EXTR', + NUME_ORDRE=ordre, + NOM_CHAM='SIEQ_ELGA',); + + __EPSP[ordre]=CREA_CHAMP(TYPE_CHAM='ELGA_EPSI_R', + RESULTAT=__RESU, + OPERATION='EXTR', + NUME_ORDRE=ordre, + NOM_CHAM='EPSP_ELGA',); +# +#On recupere la valeur des champs au niveau des groupes qui nous interessent +# + + if GROUP_MA: + __PRIN[ordre]=__S_TOT[ordre].EXTR_COMP('PRIN_3',[GROUP_MA],0).valeurs; + +#Pour la deformation plastique, on construit de quoi calculer sa norme de VMises + __EP[ordre][0]=__EPSP[ordre].EXTR_COMP('EPXX',[GROUP_MA],0).valeurs; + __EP[ordre][1]=__EPSP[ordre].EXTR_COMP('EPYY',[GROUP_MA],0).valeurs; + __EP[ordre][2]=__EPSP[ordre].EXTR_COMP('EPZZ',[GROUP_MA],0).valeurs; + __EP[ordre][3]=__EPSP[ordre].EXTR_COMP('EPXY',[GROUP_MA],0).valeurs; + if ndim==3: + __EP[ordre][4]=EPSP[ordre].EXTR_COMP('EPXZ',[GROUP_MA],0).valeurs; + __EP[ordre][5]=EPSP[ordre].EXTR_COMP('EPYZ',[GROUP_MA],0).valeurs; + + elif TOUT: + __PRIN[ordre]=__S_TOT[ordre].EXTR_COMP('PRIN_3',[],0).valeurs; + __EP[ordre][0]=__EPSP[ordre].EXTR_COMP('EPXX',[],0).valeurs; + __EP[ordre][1]=__EPSP[ordre].EXTR_COMP('EPYY',[],0).valeurs; + __EP[ordre][2]=__EPSP[ordre].EXTR_COMP('EPZZ',[],0).valeurs; + __EP[ordre][3]=__EPSP[ordre].EXTR_COMP('EPXY',[],0).valeurs; + if ndim==3: + __EP[ordre][4]=__EPSP[ordre].EXTR_COMP('EPXZ',[],0).valeurs; + __EP[ordre][5]=__EPSP[ordre].EXTR_COMP('EPYZ',[],0).valeurs; + + nval=len(__PRIN[ordre]) + nval2=len(__EP[ordre][0]) + if nval2!=nval: UTMESS('F','RUPTURE1_54') + + + if ndim==3: + __EPEQ[ordre]=NP.sqrt(2./3.*(__EP[ordre][0]**2+__EP[ordre][1]**2+__EP[ordre][2]**2+2.*__EP[ordre][3]**2+2.*__EP[ordre][3]**2+2.*__EP[ordre][4]**2+2.*__EP[ordre][5]**2)) + elif ndim==2: + __EPEQ[ordre]=NP.sqrt(2./3.*(__EP[ordre][0]**2+__EP[ordre][1]**2+__EP[ordre][2]**2+2.*__EP[ordre][3]**2)) + + +# +#Construction des champs barre et des champs de vitesse +# + __EQ_PT2[__list_ordre[0]]=NP.zeros([nval]) + __EPEQ[ordre]=NP.array(__EPEQ[ordre]) + + if ordre != __list_ordre[0]: + dt=__list_inst[ordre]-__list_inst[ordre-1] + if dt==0 : UTMESS('F','RUPTURE1_55') + __EPEQM[ordre]=__EPEQ[ordre-1] + __EQ_BAR[ordre]=(__EPEQ[ordre] +__EPEQ[ordre-1])/2. + __EQ_PT2[ordre]=(__EPEQ[ordre]-__EPEQ[ordre-1])/(2*dt) + __EQ_PT[ordre]=__EQ_PT2[ordre-1]+__EQ_PT2[ordre] + __DEP[ordre]=__EPEQ[ordre]-__EPEQ[ordre-1] + __PR_BAR[ordre]=(__PRIN[ordre]+__PRIN[ordre-1])/2. + + if type(__DPARAM['SEUIL_CALC'])==fonction_sdaster: + __sigy=__DPARAM['SEUIL_CALC'](__TEMPE) + elif type(__DPARAM['SEUIL_CALC'])==nappe_sdaster: + __EQ_PT[ordre]=list(__EQ_PT[ordre]) + __TAB=CREA_TABLE(LISTE=( + _F(PARA='EPSI',LISTE_R=__EQ_PT[ordre],), + ), + ) + __TAB=CALC_TABLE(TABLE = __TAB, + reuse =__TAB, + ACTION=_F(OPERATION='OPER', + FORMULE=__NPY, + NOM_PARA='TSIGY'),) + __sigy=__TAB.EXTR_TABLE().values()['TSIGY'] + __sigy=NP.array(__sigy) + + T1=__sigy/__sig0*(__PR_BAR[ordre]**__m-__sigth**__m) + T1=list(T1) + __TABT1=CREA_TABLE(LISTE=( + _F(PARA='T1',LISTE_R=T1,), + ) + ) + __TABT1=CALC_TABLE(TABLE = __TABT1, + reuse =__TABT1, + ACTION=_F(OPERATION='OPER', + FORMULE=__MAXI, + NOM_PARA='T1BIS'),) + + __T1=__TABT1.EXTR_TABLE().values()['T1BIS'] + __T1=NP.array(__T1) + if PROBA_NUCL=='OUI': + __T2=NP.exp(-__sigy/__sig0*__EQ_BAR[ordre]/__ep0) + elif PROBA_NUCL=='NON': + __T2=1. + __T3=__DEP[ordre] + __T4=__VOL.valeurs/__V0 + __BORDTO=NP.cumsum(__T1*__T2*__T3*__T4)[-1] + __BORDTI=__BORDTI+__BORDTO + + __BORDTT[ordre]=(__c_mult*__BORDTI)**(1/__m) + + if __sigref(__TEMPE)!=0.: + __PROBA[ordre]=1-NP.exp(-(__BORDTT[ordre]/__sigref(__TEMPE))**__m) + elif __sigref(__TEMPE)==0.: + UTMESS('F','RUPTURE1_56',valr=__list_inst[ordre]) + + tabout=CREA_TABLE(LISTE=( + _F(PARA='INST',LISTE_R=__list_inst[0:nume_ordre+1]), + _F(PARA='SIG_BORDET',LISTE_R=__BORDTT,), + _F(PARA='PROBA_BORDET',LISTE_R=__PROBA,), + ),) + return ier diff --git a/Aster/Cata/cataSTA10/Macro/post_coque_ops.py b/Aster/Cata/cataSTA10/Macro/post_coque_ops.py index 40f74004..7392f73c 100644 --- a/Aster/Cata/cataSTA10/Macro/post_coque_ops.py +++ b/Aster/Cata/cataSTA10/Macro/post_coque_ops.py @@ -1,8 +1,8 @@ -#@ MODIF post_coque_ops Macro DATE 08/02/2010 AUTEUR DESROCHES X.DESROCHES +#@ MODIF post_coque_ops Macro DATE 02/02/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -50,15 +50,19 @@ def post_coque_ops(self,RESULTAT,COOR_POINT,CHAM,NUME_ORDRE,INST, assert AsType(RESULTAT).__name__ in ('evol_elas','evol_noli',) dico = RESULTAT.LIST_CHAMPS() dico2 = RESULTAT.LIST_VARI_ACCES() + # si ni INST ni NUME_ORDRE ne sont presents, on prend le premier + # instant calcule + if not INST and not NUME_ORDRE : + INST = dico2['INST'][0] iret,ibid,n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT') MODEL = self.get_concept(n_modele) if INST != 0.0 : if not INST in dico2['INST'] : UTMESS('F','POST0_20',valr=INST) else : - if not NUME_ORDRE in dico['SIEF_ELNO_ELGA'] : + if not NUME_ORDRE in dico['SIEF_ELNO'] : if NUME_ORDRE in dico['DEPL'] : - CALC_ELEM(RESULTAT=RESULTAT,reuse=RESULTAT,OPTION='SIEF_ELNO_ELGA', + CALC_ELEM(RESULTAT=RESULTAT,reuse=RESULTAT,OPTION='SIEF_ELNO', NUME_ORDRE=NUME_ORDRE) else : UTMESS('F','POST0_19',vali=NUME_ORDRE) @@ -68,36 +72,36 @@ def post_coque_ops(self,RESULTAT,COOR_POINT,CHAM,NUME_ORDRE,INST, if CHAM=='DEFORMATION': if NUME_ORDRE: __ressup=CALC_ELEM(RESULTAT=RESULTAT, - OPTION='EPSI_ELNO_DEPL',REPE_COQUE=_F(NIVE_COUCHE='SUP'), + OPTION='EPSI_ELNO',REPE_COQUE=_F(NIVE_COUCHE='SUP'), NUME_ORDRE=NUME_ORDRE) __resinf=CALC_ELEM(RESULTAT=RESULTAT, - OPTION='EPSI_ELNO_DEPL',REPE_COQUE=_F(NIVE_COUCHE='INF'), + OPTION='EPSI_ELNO',REPE_COQUE=_F(NIVE_COUCHE='INF'), NUME_ORDRE=NUME_ORDRE) __epssup=CREA_CHAMP(RESULTAT=__ressup,TYPE_CHAM='ELNO_EPSI_R', - OPERATION='EXTR',NOM_CHAM='EPSI_ELNO_DEPL', + OPERATION='EXTR',NOM_CHAM='EPSI_ELNO', NUME_ORDRE=NUME_ORDRE) __epsinf=CREA_CHAMP(RESULTAT=__resinf,TYPE_CHAM='ELNO_EPSI_R', - OPERATION='EXTR',NOM_CHAM='EPSI_ELNO_DEPL', + OPERATION='EXTR',NOM_CHAM='EPSI_ELNO', NUME_ORDRE=NUME_ORDRE) else : __ressup=CALC_ELEM(RESULTAT=RESULTAT, - OPTION='EPSI_ELNO_DEPL',REPE_COQUE=_F(NIVE_COUCHE='SUP'), + OPTION='EPSI_ELNO',REPE_COQUE=_F(NIVE_COUCHE='SUP'), INST=INST) __resinf=CALC_ELEM(RESULTAT=RESULTAT, - OPTION='EPSI_ELNO_DEPL',REPE_COQUE=_F(NIVE_COUCHE='INF'), + OPTION='EPSI_ELNO',REPE_COQUE=_F(NIVE_COUCHE='INF'), INST=INST) __epssup=CREA_CHAMP(RESULTAT=__ressup,TYPE_CHAM='ELNO_EPSI_R', - OPERATION='EXTR',NOM_CHAM='EPSI_ELNO_DEPL', + OPERATION='EXTR',NOM_CHAM='EPSI_ELNO', INST=INST) __epsinf=CREA_CHAMP(RESULTAT=__resinf,TYPE_CHAM='ELNO_EPSI_R', - OPERATION='EXTR',NOM_CHAM='EPSI_ELNO_DEPL', + OPERATION='EXTR',NOM_CHAM='EPSI_ELNO', INST=INST) # Appel MACR_LIGN_COUPE : motscles={} - if CHAM=='EFFORT' : motscles['NOM_CHAM'] ='SIEF_ELNO_ELGA' - if CHAM=='DEFORMATION' : motscles['NOM_CHAM'] ='EPSI_ELNO_DEPL' + if CHAM=='EFFORT' : motscles['NOM_CHAM'] ='SIEF_ELNO' + if CHAM=='DEFORMATION' : motscles['NOM_CHAM'] ='EPSI_ELNO' if CHAM=='EFFORT' : motscles['LIGN_COUPE']=[] diff --git a/Aster/Cata/cataSTA10/Macro/post_decollement_ops.py b/Aster/Cata/cataSTA10/Macro/post_decollement_ops.py new file mode 100644 index 00000000..20867c67 --- /dev/null +++ b/Aster/Cata/cataSTA10/Macro/post_decollement_ops.py @@ -0,0 +1,141 @@ +#@ MODIF post_decollement_ops Macro DATE 14/03/2011 AUTEUR TARDIEU N.TARDIEU +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== + +######################## + +# fonction qui renvoie une liste de 0/1 en fonction du signe des éléments de la liste listIN: +def fctZeroUn(listIN): + listOUT=[] + for n in listIN: + if n>0: listOUT.append(1); + else: listOUT.append(0); + return listOUT; + +def post_decollement_ops(self,RESULTAT,NOM_CHAM,NOM_CMP,GROUP_MA,INFO,**args): + """ + Corps de la macro POST_DECOLLEMENT + """ + ier=0 + import aster + import os,string,types + from Accas import _F + from Utilitai.Utmess import UTMESS, MasquerAlarme, RetablirAlarme + + + ### On importe les definitions des commandes a utiliser dans la macro + CREA_CHAMP = self.get_cmd('CREA_CHAMP') + POST_ELEM = self.get_cmd('POST_ELEM') + CREA_TABLE = self.get_cmd('CREA_TABLE') + POST_RELEVE_T = self.get_cmd('POST_RELEVE_T') + DEFI_GROUP = self.get_cmd('DEFI_GROUP') + DEFI_MATERIAU = self.get_cmd('DEFI_MATERIAU') + CREA_RESU = self.get_cmd('CREA_RESU') + AFFE_MODELE = self.get_cmd('AFFE_MODELE') + AFFE_MATERIAU = self.get_cmd('AFFE_MATERIAU') + IMPR_TABLE = self.get_cmd('IMPR_TABLE') + + ### Comptage commandes + déclaration concept sortant + self.set_icmd(1) + self.DeclareOut('C_out',self.sd) + + ### on recupere le concept maillage + iret,ibid,nom_mo = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT') + iret,ibid,nom_ma = aster.dismoi('F','NOM_MAILLA',nom_mo.strip(),'MODELE') + MAILLAGE = self.get_concept(nom_ma.strip()) + + ### Creation du groupe de noeuds 'PDECOL' + DEFI_GROUP(reuse=MAILLAGE,MAILLAGE=MAILLAGE, + DETR_GROUP_NO= _F(NOM='PDECOL',), + CREA_GROUP_NO=_F(GROUP_MA=GROUP_MA,NOM='PDECOL'), + ALARME='NON',) + + + ### le modele 3D ne va contenir que des mailles de peau : on masque les alarmes + MasquerAlarme('CALCULEL2_63') + MasquerAlarme('CALCULEL2_64') + + ### model restreint au GROUP_MA + __model=AFFE_MODELE(MAILLAGE=MAILLAGE, + AFFE=_F( GROUP_MA = GROUP_MA,PHENOMENE = 'MECANIQUE', + MODELISATION = '3D'),) + + ### le modele 3D ne va contenir que des mailles de peau : on retablit les alarmes + RetablirAlarme('CALCULEL2_63') + RetablirAlarme('CALCULEL2_64') + + ### Calcul de la surface du GROUP_MA : __surf + __unit = CREA_CHAMP(OPERATION='AFFE',TYPE_CHAM='NOEU_NEUT_R',MODELE=__model, + AFFE=_F(GROUP_NO='PDECOL',NOM_CMP='X1',VALE=1.0),) + + __chpg0 = CREA_CHAMP(PROL_ZERO='OUI',MODELE=__model,OPERATION='DISC',TYPE_CHAM='ELGA_NEUT_R', + CHAM_GD=__unit) + + __mater0 = DEFI_MATERIAU(ELAS=_F(E=210000000.0,NU=0.3),) + + __chmat0 = AFFE_MATERIAU(MODELE=__model,MAILLAGE=MAILLAGE,AFFE=_F(TOUT='OUI',MATER=__mater0),) + + __resu0 = CREA_RESU(OPERATION='AFFE',TYPE_RESU='EVOL_ELAS',NOM_CHAM='VARI_ELGA', + AFFE=_F(CHAM_MATER=__chmat0,MODELE=__model,CHAM_GD=__chpg0,INST=0.0),) + + __tbSurf0 = POST_ELEM(RESULTAT=__resu0,INST=0.0,MODELE=__model, + INTEGRALE=_F(NOM_CHAM='VARI_ELGA',NOM_CMP='X1',GROUP_MA=GROUP_MA),) + + __surf=__tbSurf0.EXTR_TABLE().values()['INTE_X1'][0] + + __linst=RESULTAT.LIST_VARI_ACCES()['INST'] + + ### Calcul de la surface des noeuds décollés + __pct=[] + + for inst in __linst: + + __dep = CREA_CHAMP(OPERATION='EXTR',RESULTAT=RESULTAT,TYPE_CHAM='NOEU_'+NOM_CHAM[:4]+'_R', + INST=inst,NOM_CHAM=NOM_CHAM) + + __tb1 = POST_RELEVE_T(ACTION=_F(OPERATION='EXTRACTION',GROUP_NO='PDECOL', INTITULE=GROUP_MA, + CHAM_GD=__dep,NOM_CMP=NOM_CMP),) + + __col = fctZeroUn(__tb1.EXTR_TABLE().values()[NOM_CMP]) + + __tb2 = CREA_TABLE(LISTE=(_F(LISTE_K=__tb1.EXTR_TABLE().values()['NOEUD'],PARA='NOEUD'), + _F(LISTE_R=__col,PARA='X1'),),) + + __ch = CREA_CHAMP(OPERATION='EXTR',TYPE_CHAM='NOEU_NEUT_R',TABLE=__tb2,MAILLAGE=MAILLAGE) + + __chg = CREA_CHAMP(MODELE=__model,OPERATION='DISC',TYPE_CHAM='ELGA_NEUT_R', + PROL_ZERO='OUI',CHAM_GD=__ch) + + __resu = CREA_RESU(OPERATION='AFFE',TYPE_RESU='EVOL_ELAS',NOM_CHAM='VARI_ELGA', + AFFE=_F(CHAM_MATER=__chmat0,MODELE=__model,CHAM_GD=__chg,INST=0.0),) + + __tb3 = POST_ELEM(RESULTAT=__resu,INST=0.0,MODELE=__model, + INTEGRALE=_F(NOM_CHAM='VARI_ELGA',NOM_CMP='X1',GROUP_MA=GROUP_MA),) + + __su2=__tb3.EXTR_TABLE().values()['INTE_X1'][0] + + __pct.append(100.0*__su2/__surf); + + + C_out=CREA_TABLE(LISTE=(_F(LISTE_R=__linst,PARA='INST'), + _F(LISTE_R=__pct,PARA='%DECOL'),),) + if INFO > 1: + IMPR_TABLE(UNITE=6, + TABLE=C_out) + return ier diff --git a/Aster/Cata/cataSTA10/Macro/post_endo_fiss_ops.py b/Aster/Cata/cataSTA10/Macro/post_endo_fiss_ops.py index e5a282e0..6004fa97 100644 --- a/Aster/Cata/cataSTA10/Macro/post_endo_fiss_ops.py +++ b/Aster/Cata/cataSTA10/Macro/post_endo_fiss_ops.py @@ -1,8 +1,8 @@ -#@ MODIF post_endo_fiss_ops Macro DATE 31/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF post_endo_fiss_ops Macro DATE 02/02/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2010 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -236,7 +236,7 @@ def post_endo_fiss_ops(self, # TEST SUR LE TYPE DE CHAMP # ltyP_cham = ['NOEU_DEPL_R','ELGA_EPSI_R','ELNO_EPSI_R','NOEU_SIEF_R','ELGA_VARI_R','ELNO_VARI_R','ELNO_VARI_R','NOEU_VAR2_R'] - lnoM_cham = ['DEPL','EPSI_ELGA_DEPL','EPSI_ELNO_DEPL','EPSI_NOEU_DEPL','VARI_ELGA','VARI_ELNO','VARI_ELNO_ELGA','VARI_NOEU_ELGA'] + lnoM_cham = ['DEPL','EPSI_ELGA','EPSI_ELNO','EPSI_NOEU','VARI_ELGA','VARI_ELNO','VARI_ELNO','VARI_NOEU'] if NOM_CHAM in lnoM_cham : Xtype_cham = ltyP_cham[lnoM_cham.index(NOM_CHAM)] @@ -423,7 +423,7 @@ def post_endo_fiss_ops(self, PHENOMENE = 'MECANIQUE', MODELISATION = 'BARRE'),) - __YBARPR = PROJ_CHAMP(METHODE = 'ELEM', + __YBARPR = PROJ_CHAMP(METHODE = 'COLLOCATION', RESULTAT = __resu, MODELE_1 = __modtot, MODELE_2 = __MO, @@ -537,7 +537,7 @@ def post_endo_fiss_ops(self, PHENOMENE = 'MECANIQUE', MODELISATION = 'BARRE'),) - __YBARPR = PROJ_CHAMP(METHODE = 'ELEM', + __YBARPR = PROJ_CHAMP(METHODE = 'COLLOCATION', RESULTAT = __resu, MODELE_1 = __modtot, MODELE_2 = __MO, @@ -683,7 +683,7 @@ def post_endo_fiss_ops(self, try: # on essaie de projeter, exception: il n'y a pas des points "dans la matiere" - __YBARPR = PROJ_CHAMP(METHODE = 'ELEM', + __YBARPR = PROJ_CHAMP(METHODE = 'COLLOCATION', RESULTAT = __resu, MODELE_1 = __modtot, MODELE_2 = __MO, diff --git a/Aster/Cata/cataSTA10/Macro/post_gp_ops.py b/Aster/Cata/cataSTA10/Macro/post_gp_ops.py index 875a37ff..7cf700e8 100644 --- a/Aster/Cata/cataSTA10/Macro/post_gp_ops.py +++ b/Aster/Cata/cataSTA10/Macro/post_gp_ops.py @@ -1,8 +1,8 @@ -#@ MODIF post_gp_ops Macro DATE 16/11/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF post_gp_ops Macro DATE 29/03/2011 AUTEUR MACOCCO K.MACOCCO # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -34,7 +34,10 @@ def post_gp_ops(self, **args): from Cata_Utils.t_fonction import t_fonction from Cata.cata import evol_noli import aster - + import string + import numpy as NP + from sets import Set + global DEFI_GROUP, POST_RELEVE_T, DETRUIRE # ----- On importe les definitions des commandes a utiliser dans la macro CALC_THETA = self.get_cmd('CALC_THETA') CALC_G = self.get_cmd('CALC_G') @@ -45,15 +48,54 @@ def post_gp_ops(self, **args): CALC_ELEM = self.get_cmd('CALC_ELEM') RECU_FONCTION = self.get_cmd('RECU_FONCTION') DEFI_GROUP = self.get_cmd('DEFI_GROUP') + EXTR_RESU = self.get_cmd('EXTR_RESU') + DETRUIRE = self.get_cmd('DETRUIRE') FIN = self.get_cmd('FIN') + tmp_liste_inst_postgp = [] + + #---------------------------------------------------------- # ----- Comptage, commandes + déclaration concept sortant + #---------------------------------------------------------- self.set_icmd(1) self.DeclareOut('result', self.sd) - self.DeclareOut('tabresult', self['TABL_RESU']) + self.DeclareOut('tabresult', self['TABL_GPMAX']) + if (self['TABL_GP']!= None ): + self.DeclareOut('tabgp', self['TABL_GP']) + + liste_inst_post = self['LIST_INST'] + Resultat = EXTR_RESU(RESULTAT=self['RESULTAT'],ARCHIVAGE=_F(LIST_INST=liste_inst_post)) + liste_inst_postgp = aster.getvectjev(string.ljust(liste_inst_post.nom,19)+'.VALE') + + + #---------------------------------------------------------- + # ---- Recuperation du nombre d'instants deja calculés + #---------------------------------------------------------- + if aster.getvectjev(string.ljust(Resultat.nom,19)+'.ORDR ').__contains__(0):UTMESS('F','POST0_37') + num_ord = len(aster.getvectjev(string.ljust(Resultat.nom,19)+'.ORDR ')) + liste_ord = aster.getvectjev(string.ljust(Resultat.nom,19)+'.ORDR ') + + + # Cas 2D + if self['THETA_2D'] is not None: + is_2D = True + else: + is_2D = False + UTMESS('A','POST0_38') + # TABLE GP à remplier pour 3D + liste_3d_inst = [] + liste_3d_lieu = [] + liste_3d_icop = [] + liste_3d_deltal = [] + liste_3d_gp = [] + info = self['INFO'] + type_def = self['TYPE_DEF'] + + #---------------------------------------------------------- # 0. ----- Type de calcul + #---------------------------------------------------------- identification = self['IDENTIFICATION'] != None if identification: # 0.1. --- identification : on boucle sur les valeurs de TEMP. @@ -80,28 +122,28 @@ def post_gp_ops(self, **args): l_crit = [l_crit,] + #---------------------------------------------------------- # Maillage associe au modele + #---------------------------------------------------------- __MAIL = aster.getvectjev( self['MODELE'].nom.ljust(8) + '.MODELE .LGRF ' ) nom_maillage = __MAIL[0].strip() maya = self.get_concept(nom_maillage) + ltyma =aster.getvectjev("&CATA.TM.NOMTM") + #---------------------------------------------------------- # Excitation - args={} + #---------------------------------------------------------- + args={} if self['EXCIT']:args={'EXCIT' : self['EXCIT'].List_F()} - # 1. ----- calcul de G-theta - - # Cas 2D - if self['THETA_2D'] is not None: - is_2D = True - else: - is_2D = False + #---------------------------------------------------------- + # 1. ----- calcul de G-theta + #---------------------------------------------------------- + if is_2D: nbcour = len(self['THETA_2D']) - nb_tranches = 1 - ep_z = 1 l_tab = [] for occ in self['THETA_2D']: dMC = occ.cree_dict_valeurs(occ.mc_liste) @@ -114,7 +156,7 @@ def post_gp_ops(self, **args): R_SUP=dMC['R_SUP']),) __gtheta = CALC_G(THETA=_F(THETA=__theta), - RESULTAT=self['RESULTAT'], + RESULTAT=Resultat, TOUT_ORDRE='OUI', SYME_CHAR=self['SYME_CHAR'], COMP_ELAS=self['COMP_ELAS'].List_F(), @@ -123,23 +165,23 @@ def post_gp_ops(self, **args): tab = __gtheta.EXTR_TABLE() # une Table par couronne - l_tab.append(tab) + l_tab.append(tab) else: #Cas 3D nbcour = len(self['THETA_3D']) - nb_tranches = self['NB_TRANCHES'] l_tab = [] l_noeuds_fissure, pas = getFondFissInfo(self['FOND_FISS']) nb_noeuds_fissure = len(l_noeuds_fissure) + FOND_FISS = self['FOND_FISS'] + lnormale = aster.getvectjev(FOND_FISS.nom.ljust(8)+'.NORMALE ') + if (lnormale==None):UTMESS('F','POST0_39') for occ in self['THETA_3D']: dMC = occ.cree_dict_valeurs(occ.mc_liste) # on met les mots-clés facultatifs dans des dictionnaires dpar_theta = {} - if self['DIRECTION'] is not None: - dpar_theta['DIRECTION'] = self['DIRECTION'] __gtheta = CALC_G( THETA=_F(R_INF=dMC['R_INF'], @@ -147,7 +189,7 @@ def post_gp_ops(self, **args): MODULE=1.0, FOND_FISS=self['FOND_FISS'], **dpar_theta), - RESULTAT=self['RESULTAT'], + RESULTAT=Resultat, TOUT_ORDRE='OUI', SYME_CHAR=self['SYME_CHAR'], COMP_ELAS=self['COMP_ELAS'].List_F(), @@ -156,29 +198,58 @@ def post_gp_ops(self, **args): tab = __gtheta.EXTR_TABLE() - - + # une Table par couronne l_tab.append(tab) - + #---------------------------------------------------------- + # 1.1.----- calcul de la mesure des mailles + # appartenant à l'axe de symétrie + # ou au plan de symétrie + #---------------------------------------------------------- + l_copo_tot = [] + l_ep_copeaux_tot_3D = [] + for tmpocc in self['TRANCHE']: + dMCT = tmpocc.cree_dict_valeurs(tmpocc.mc_liste) + for grma in dMCT['GROUP_MA'] : + l_copo_tot.append(grma) + nb_tranches = len(self['TRANCHE']) + # En supposant que le nombre de copeaux est identique par tranche + nbcop_tot = len(l_copo_tot) + nbcop = nbcop_tot/nb_tranches + + if is_2D: + # Récupération des noeuds appartenant à la droite de symétrie + # le vecteur normal est construit comme étant perpendiculaire au vecteur direction + # La commande CALC_THETA/THETA_2D suppose que la composante suivant z est nulle + lnormale = (self['DIRECTION'][1],self['DIRECTION'][0]) + Nds_fdfiss = dMC['GROUP_NO'] + Recup_Noeuds_Surf(is_2D,maya,Nds_fdfiss,lnormale) + mesure = Calcul_mesure_2D(is_2D,maya,nbcop,num_ord,l_copo_tot,ltyma,Resultat,type_def) + + else: + # Récupération des noeuds appartenant à la surface de symétrie + # le vecteur normal est récuperé dans FOND_FISS + FOND_FISS = self['FOND_FISS'] + Recup_Noeuds_Surf(is_2D,maya,l_noeuds_fissure[0],lnormale,l_noeuds_fissure) + mesure, l_ep_copeaux_tot_3D = Calcul_mesure_3D(is_2D,maya,nbcop,num_ord,l_copo_tot,ltyma,Resultat,type_def) + l_ep_copeaux_tot_3D = l_ep_copeaux_tot_3D*num_ord + + #---------------------------------------------------------- # 2. ----- Calcul de l'energie élastique en exploitant les groupes de # mailles fournis par la procedure de maillage - - l_copo_tot = [grma.strip() for grma in self['GROUP_MA']] - nbcop_tot = len(l_copo_tot) - nbcop = nbcop_tot/nb_tranches - - if self['LIST_EP_COPEAUX'] is not None: - l_ep_copeaux_tot = self['LIST_EP_COPEAUX'] - + #---------------------------------------------------------- + l_ep_copeaux_tot = [] + for it in range(len(liste_ord)): + for Copeau_k in l_copo_tot : + l_ep_copeaux_tot.append(mesure[Copeau_k][it]) l_t_enel = [] if self['TRAC_COMP']=='OUI': # prise en compte de la traction-compression dans le calcul de l'energie - resu2=CALC_ELEM(OPTION=('EQUI_ELNO_SIGM'), - RESULTAT=self['RESULTAT'], + resu2=CALC_ELEM(OPTION=('SIEQ_ELNO'), + RESULTAT=Resultat, ) # indices des mailles du dernier group_ma @@ -207,7 +278,7 @@ def post_gp_ops(self, **args): args={} if self['EXCIT']:args={'CHARGE': [charg['CHARGE'] for charg in self['EXCIT']]} for i in range(0,nb_tranches): - l_copo = l_copo_tot[i*nbcop:(i+1)*nbcop] + l_copo = l_copo_tot[i*nbcop:(i+1)*nbcop] if info >= 2 and not is_2D: print " Calcul de la tranche %i"%(i+1) @@ -244,7 +315,7 @@ def post_gp_ops(self, **args): d_nomma[id_elem]=elem E_el[kk] = POST_ELEM(MODELE=self['MODELE'], - RESULTAT=self['RESULTAT'], + RESULTAT=Resultat, TOUT_ORDRE='OUI', ENER_ELAS=_F(MAILLE=elem), TITRE='Energie élastique', @@ -254,7 +325,7 @@ def post_gp_ops(self, **args): l_enel = T_el[kk].TOTALE.values() - # signe de la trace <=> signe de la composante VMIS_SG du tenseur EQUI_ELNO_SIGM, + # signe de la trace <=> signe de la composante VMIS_SG du tenseur SIEQ_ELNO, # mais E_enel est par element => on fait une moyenne sur les noeuds de l'element list_no = [] @@ -263,8 +334,6 @@ def post_gp_ops(self, **args): if nomnoe not in list_no : list_no.append(nomnoe) - # print "liste des noeuds de la maille ", id_elem, ": ", list_no - l_inst = T_el[kk].INST.values() nb_inst = len(l_inst) @@ -276,7 +345,7 @@ def post_gp_ops(self, **args): __VM=RECU_FONCTION(RESULTAT=resu2, TOUT_INST='OUI', - NOM_CHAM='EQUI_ELNO_SIGM', + NOM_CHAM='SIEQ_ELNO', NOM_CMP='VMIS_SG', MAILLE=elem, NOEUD=noeud); @@ -361,7 +430,7 @@ def post_gp_ops(self, **args): # calcul classique de l'energie elastique __ener = POST_ELEM(MODELE=self['MODELE'], - RESULTAT=self['RESULTAT'], + RESULTAT=Resultat, TOUT_ORDRE='OUI', ENER_ELAS=_F(GROUP_MA=l_copo), TITRE='Energie élastique', @@ -381,21 +450,22 @@ def post_gp_ops(self, **args): l_numord = list(set(t_enel.NUME_ORDRE.values())) l_numord.sort() - if self['PAS_ENTAILLE'] is not None: - t_enel.fromfunction('DELTAL', fDL, 'ICOP', { 'pascop' : self['PAS_ENTAILLE'] }) - else: - l_ep_copeaux_tranche = l_ep_copeaux_tot[i*nbcop:(i+1)*nbcop] - t_enel['DELTAL'] = l_ep_copeaux_tranche*len(l_numord) - + l_ep_copeaux_tranche=[] + for it in range(num_ord): + l_ep_copeaux_tranche = l_ep_copeaux_tranche + l_ep_copeaux_tot[i*nbcop+it*nbcop*nb_tranches:(i+1)*nbcop+it*nbcop*nb_tranches] + l_ep_copeaux_tranche_3D = l_ep_copeaux_tot_3D[i*nbcop:(i+1)*nbcop] + # 2.2. ----- Calcul de Gp fonction de Ener.Totale et de deltaL - if is_2D: + if is_2D: + t_enel['DELTAL'] = l_ep_copeaux_tranche t_enel.fromfunction('GP', fGp_Etot, ('TOTALE', 'DELTAL'), {'syme' : self['SYME_CHAR'] != 'SANS', 'R' : self['RAYON_AXIS'],}) else: - ep_tranche = largeur_tranche(nom_maillage, l_noeuds_fissure, pas, i) - #print "ep_tranche %i: "%i, ep_tranche - t_enel.fromfunction('GP', fGp_Etot, ('TOTALE', 'DELTAL'), + ep_tranche=1 + t_enel['MESURE'] = l_ep_copeaux_tranche + t_enel['DELTAL'] = l_ep_copeaux_tranche_3D*len(l_numord) + t_enel.fromfunction('GP', fGp_Etot, ('TOTALE', 'MESURE'), {'syme' : self['SYME_CHAR'] != 'SANS', 'R' : ep_tranche }) @@ -403,13 +473,15 @@ def post_gp_ops(self, **args): # print "Table de l'énergie élastique: ", t_enel l_t_enel.append(t_enel) - # 2.3. ----- Tableau de Gp = f(icop) pour chaque instant + + # 2.3. ----- Tableau de Gp = f(icop) pour chaque instant + if info >= 2: tGp_t_icop = t_enel['INST', 'DELTAL', 'GP'] tGp_t_icop.titr = "Gp à chaque instant en fonction de la distance au " \ "fond d'entaille" tGp_t_icop.ImprTabCroise() - + # 2.4. ----- Table Gpmax ttmp = t_enel['NUME_ORDRE', 'INST', 'ICOP', 'DELTAL', 'GP'] @@ -431,12 +503,11 @@ def post_gp_ops(self, **args): if len(t.GP.values())>1: t = t.DELTAL.MINI() - if j == 1: + if l_numord.index(j) == 0: tb_Gpmax_i = t else: tb_Gpmax_i = tb_Gpmax_i | t - tb_Gpmax_i.Renomme('GP', 'GPMAX') tb_Gpmax_i.Renomme('ICOP', 'ICOPMAX') tb_Gpmax_i.Renomme('DELTAL', 'DELTALMAX') @@ -473,6 +544,17 @@ def post_gp_ops(self, **args): else: tb_Gpmax = merge(tb_Gpmax, tb_Gpmax_i) + # 2.5. ----- POUR LE CAS DE 3D + # RECUPERE LES INFOS NECESSAIRE POUR LA CREATION DU TABLEAU GP (ie TABL_GP)Tableau de Gp = f(icop) pour chaque instant + if not is_2D: + + for kocc in range(len(t_enel['INST'].values()['INST'])) : + liste_3d_inst.append(t_enel['INST'].values()['INST'][kocc]) + liste_3d_lieu.append(t_enel['LIEU'].values()['LIEU'][kocc]) + liste_3d_icop.append(t_enel['ICOP'].values()['ICOP'][kocc]) + liste_3d_deltal.append(t_enel['DELTAL'].values()['DELTAL'][kocc]) + liste_3d_gp.append(t_enel['GP'].values()['GP'][kocc]) + # FIN BOUCLE SUR LES TRANCHES if not is_2D: @@ -496,9 +578,10 @@ def post_gp_ops(self, **args): grno_fond = "GRNOFOND" DEFI_GROUP(reuse =maya, MAILLAGE=maya, + DETR_GROUP_NO= _F(NOM=grno_fond,), CREA_GROUP_NO=_F(GROUP_MA=grma_fond, NOM=grno_fond,),); - + l_ordres = DEFI_LIST_ENTI(VALE=l_numord) __relev = POST_RELEVE_T(ACTION=_F(RESULTAT=self['RESU_THER'], OPERATION='EXTRACTION', @@ -507,7 +590,7 @@ def post_gp_ops(self, **args): LIST_ORDRE=l_ordres, NOM_CMP='TEMP', GROUP_NO=grno_fond,),) - + t_relev = __relev.EXTR_TABLE()['NUME_ORDRE', 'NOEUD', 'TEMP'] # 3. ----- boucle sur les mots-clés facteurs @@ -557,8 +640,8 @@ def post_gp_ops(self, **args): tab=mergeLineInTable(tab, t_relev, nb_noeuds_fissure) # en 3D, le paramètre R n'intervient pas - tab.fromfunction(new_para, fKj, ('G_LOCAL', 'YOUNG', 'NU')) - tab.Renomme('G_LOCAL', 'G_%d' % (k + 1)) + tab.fromfunction(new_para, fKj, ('G', 'YOUNG', 'NU')) + tab.Renomme('G', 'G_%d' % (k + 1)) l_tabi.append(tab) @@ -585,7 +668,7 @@ def post_gp_ops(self, **args): # on l'ajoute dans la table aux noeuds tabres avec la convention: # au 1er noeud et noeud milieu de la tranche on affecte la valeur de la tranche # sauf pour la derniere tranche où on affecte la valeur sur les 3 noeuds de la tranche - tabres = tabK_G + tabres = tabK_G tabres = merge(tabK_G, tb_Gpmax_noeuds, ['NUME_ORDRE', 'NOEUD']) tabres['OCCURRENCE'] = [iocc + 1] * len(l_numord) * nb_noeuds_fissure #if info >= 2: @@ -611,10 +694,11 @@ def post_gp_ops(self, **args): if identification: KJ_CRIT = l_crit[iocc] # on verifie que KJ_CRIT soit compris dans l'intervalle [KMOY_min, KMOY_max] - valkmoy = tabres.KMOY.values() + valkmoy = tabres.KMOY.values() + message_kjcritique_non_atteint = 0 if not (min(valkmoy) <= KJ_CRIT <= max(valkmoy)): -# 'constant utilisé).') UTMESS('A','RUPTURE0_1') + message_kjcritique_non_atteint = 1 if is_2D: # définition des fonctions pour faire les interpolations d_para.update({ 'NOM_RESU' : 'DELTALMAX' }) @@ -623,68 +707,107 @@ def post_gp_ops(self, **args): # Gpmax fonction du temps d_para.update({ 'NOM_RESU' : 'GPMAX' }) fGp = t_fonction(tb_Gpmax.INST.values(), tb_Gpmax.GPMAX.values(), d_para) - + d_para.update({ 'NOM_PARA' : 'KMOY', 'NOM_RESU' : 'INST', }) valkmoy = tabres.KMOY.values() - # temps en fonction de Kmoy - finv = t_fonction(valkmoy, tabres.INST.values(), d_para) + if len(liste_inst_postgp) == 1 : + # si un seul instant alors + ti = liste_inst_postgp[0] + else: + + # temps en fonction de Kmoy + finv = t_fonction(valkmoy, tabres.INST.values(), d_para) - # valeurs à mettre dans la table - # temps correspondant à KJ_CRIT - ti = finv(KJ_CRIT) + # valeurs à mettre dans la table + # temps correspondant à KJ_CRIT + ti = finv(KJ_CRIT) + ind_instant_plus = [x > ti for x in liste_inst_postgp].index(True) + if (abs(liste_inst_postgp[ind_instant_plus-1]-ti)/ti) <= 1e-4: + ti = liste_inst_postgp[ind_instant_plus-1] + elif (abs(liste_inst_postgp[ind_instant_plus]-ti)/ti) <= 1e-4: + ti = liste_inst_postgp[ind_instant_plus] + else: + UTMESS('A','POST0_36',valr =tuple(liste_inst_postgp[ind_instant_plus-1:ind_instant_plus+1])) + # GP correspondant au temps critique - Gpi = fGp(ti) + if (message_kjcritique_non_atteint == 1) : + Gpi = '-' + kgpcrit = '-' + dLcrit = '-' + message = 'KJ CRITIQUE NON ATTEINT' + type_tab_ident=('R', 'R', 'K8', 'K8', 'K8', 'K24' ) + + else : + Gpi = fGp(ti) + kgpcrit = fKj(Gpi, **dict_constantes) + dLcrit = fdL(ti) + message = 'KJ CRITIQUE ATTEINT' + type_tab_ident=('R', 'R', 'R', 'R', 'R', 'K24' ) + + d_ident = { - 'KJ_CRIT' : KJ_CRIT, - 'INST' : ti, - 'GPMAX' : Gpi, - 'KGPMAX' : fKj(Gpi, **dict_constantes), - 'DELTALMAX' : fdL(ti), - } + 'KJ_CRIT' : KJ_CRIT, + 'INST' : ti, + 'GP_CRIT' : Gpi, + 'KGP_CRIT' : kgpcrit, + 'DELTALCRIT' : dLcrit, + 'MESSAGE' : message + } lv_ident.append(d_ident) + + else: - l_i_noeuds_sommets = range(0,len(l_noeuds_fissure),pas) - t_noeud_Kcrit = Table(para=tabres.para) - - # On determine quel noeud sommet maximise KMOY au cours du temps: - row_KMOY_max = tabres.KMOY.MAXI() noeud_KMOY_max = row_KMOY_max.NOEUD.values()[0] - - # avec le noeud ou KJ_CRIT est atteint, on regarde GP a gauche et a droite. - # le GP le plus grand correspond au GPmax - # on garde la tranche ou GP est le plus grand - - id_noeud_KMOY_max = list(l_noeuds_fissure).index(noeud_KMOY_max) - if id_noeud_KMOY_max==0: - # "Gpmax sur la 1ere tranche" - nume_tranche_Gpmax = 1 - elif id_noeud_KMOY_max==(len(l_noeuds_fissure)-1): - # "Gpmax sur la derniere tranche" - nume_tranche_Gpmax = nb_tranches - else: - # "Gpmax sur une tranche intermediaire" - Gpi_tot = Table(para=tb_Gpmax.para) - Gpi_gauche = tb_Gpmax.NUME_TRANCHE==(id_noeud_KMOY_max/pas) - Gpi_tot.append(Gpi_gauche.rows[0]) - Gpi_droite = tb_Gpmax.NUME_TRANCHE==(id_noeud_KMOY_max/pas+1) - Gpi_tot.append(Gpi_droite.rows[0]) - Gpi_tab = Gpi_tot.GPMAX.MAXI() - nume_tranche_Gpmax = Gpi_tab.NUME_TRANCHE.values()[0] - - # tb_Gpmax_TrancheCrit est une table de la meme nature que la table 2D tb_Gpmax - # i.e. valeurs sur la seule tranche qui nous interesse (ou on sait - # que KJ_CRIT sera atteint) - - tb_Gpmax_TrancheCrit = tb_Gpmax.NUME_TRANCHE==nume_tranche_Gpmax - - # avec le noeud ou KJ_CRIT est atteint, on determine le temps - # critique par interpolation + Gpi = 0.0 + nume_tranche_kjcrit = 0 + # On determine par interpolation le temps critique ou KJ_CRIT est atteint tabres_NoeudCrit = tabres.NOEUD==noeud_KMOY_max - - # la suite est idem 2D, seuls les noms des tables changent + d_para.update({ 'NOM_PARA' : 'KMOY', + 'NOM_RESU' : 'INST', }) + valkmoy = tabres_NoeudCrit.KMOY.values() + if len(liste_inst_postgp) == 1 : + # si un seul instant alors + ti = liste_inst_postgp[0] + else: + + # temps en fonction de Kmoy + finv = t_fonction(valkmoy, tabres_NoeudCrit.INST.values(), d_para) + + # valeurs à mettre dans la table + # temps correspondant a KJ_CRIT + ti = finv(KJ_CRIT) + ind_instant_plus = [x > ti for x in liste_inst_postgp].index(True) + if abs(liste_inst_postgp[ind_instant_plus-1]-ti)/ti < 1e-4: + ti = liste_inst_postgp[ind_instant_plus-1] + elif abs(liste_inst_postgp[ind_instant_plus]-ti)/ti < 1e-4: + ti = liste_inst_postgp[ind_instant_plus] + else: + UTMESS('A','POST0_36',valr =tuple(liste_inst_postgp[ind_instant_plus-1:ind_instant_plus+1])) + + # Gpmax fonction du temps + d_para.update({ 'NOM_PARA' : 'INST','NOM_RESU' : 'GPMAX' }) + for id_noeud_KMOY_max in range(len( tb_Gpmax.NUME_TRANCHE)): + if id_noeud_KMOY_max==0: + # "Gpmax sur la 1ere tranche" + nume_tranche_Gpmax = 1 + elif id_noeud_KMOY_max==(len(l_noeuds_fissure)-1): + # "Gpmax sur la derniere tranche" + nume_tranche_Gpmax = nb_tranches + else: + # "Gpmax sur une tranche intermediaire" + Gpi_tot = Table(para=tb_Gpmax.para) + nume_tranche_Gpmax = tb_Gpmax.NUME_TRANCHE[id_noeud_KMOY_max] + + tb_Gpmax_TrancheCrit = tb_Gpmax.NUME_TRANCHE==nume_tranche_Gpmax + fGp = t_fonction(tb_Gpmax_TrancheCrit.INST.values(), + tb_Gpmax_TrancheCrit.GPMAX.values(), + d_para) + if (Gpi= 2: @@ -777,7 +896,57 @@ def post_gp_ops(self, **args): result = CREA_TABLE(**dprod) tabresult = CREA_TABLE(**dprod_result) + # 9. ----- création de la table_sdaster tabgp + if (self['TABL_GP']!= None ): + + temps_agarde_gp = [] + lv_tabgp = [] + + # CAS 2D + if is_2D : + + for i in range(num_ord) : + + d_tabgp = { + 'INST' : t_enel['INST'].values()['INST'][i], + 'GROUP_MA' : t_enel['LIEU'].values()['LIEU'][i], + 'NUMERO_COP' : t_enel['ICOP'].values()['ICOP'][i], + 'DELTAL' : t_enel['DELTAL'].values()['DELTAL'][i], + 'GP' : t_enel['GP'].values()['GP'][i], + } + lv_tabgp.append(d_tabgp) + texte = 'GP 2D pour chaque instant' + + # CAS 3D + else : + + for i in range(len(liste_3d_inst)) : + + d_tabgp = { + 'INST' : liste_3d_inst[i], + 'GROUP_MA' : liste_3d_lieu[i], + 'NUMERO_COP' : liste_3d_icop[i], + 'DELTAL' : liste_3d_deltal[i], + 'GP' : liste_3d_gp[i], + } + lv_tabgp.append(d_tabgp) + texte = 'GP 3D pour chaque instant' + + +# Creation du tableau Gp 2D ou 3D + para_tab_tabgp=('INST', 'GROUP_MA', 'NUMERO_COP', 'DELTAL', 'GP') + liste_tab_tabgp = ('R','K8','I','R','R') + + tab_tabgp = Table(rows=lv_tabgp, + para=para_tab_tabgp, + typ = liste_tab_tabgp, + titr= texte) + + + dprod_tabgp = tab_tabgp.dict_CREA_TABLE() + tabgp = CREA_TABLE(**dprod_tabgp) + DETRUIRE(CONCEPT=_F(NOM=Resultat),INFO=1); # ----------------------------------------------------------------------------- def CallRCVALE(TEMP, para, MATER): @@ -907,7 +1076,7 @@ def largeur_tranche(nom_maillage, l_noms_noeuds_fissure, pas, i_tranche): d=sqrt( (coor1[0]-coor2[0])**2+(coor1[1]-coor2[1])**2+(coor1[2]-coor2[2])**2) return d - + def mergeLineInTable(multiTable, lineTable, nb_noeuds): # on ajoute a la table multiTable les colonnes de lineTable # pour chaque nume_ordre autant de fois qu'il y a de nb_noeuds @@ -928,3 +1097,366 @@ def mergeLineInTable(multiTable, lineTable, nb_noeuds): newTable = merge(newTable, multiTable_i) return newTable + +def CalDist(coor_nd,deform,coor_nds,deforms): + # on calcule la distance du noeud 1 aux autres noeuds + + import numpy as NP + + nbr_noeuds = len(coor_nds) + if nbr_noeuds == 1: + dist_min = NP.sqrt((coor_nds[0][0]+deforms[0][0]-coor_nd[0]-deform[0])**2 + + (coor_nds[0][1]+deforms[0][1]-coor_nd[1]-deform[1])**2 + + (coor_nds[0][2]+deforms[0][2]-coor_nd[2]-deform[2])**2) + else: + dist_min = NP.sqrt((coor_nds[0][0]+deforms[0][0]-coor_nd[0]-deform[0])**2 + + (coor_nds[0][1]+deforms[0][1]-coor_nd[1]-deform[1])**2 + + (coor_nds[0][2]+deforms[0][2]-coor_nd[2]-deform[2])**2) + for inds in range(1,nbr_noeuds): + dist = NP.sqrt((coor_nds[inds][0]+deforms[inds][0]-coor_nd[0]-deform[0])**2 + + (coor_nds[inds][1]+deforms[inds][1]-coor_nd[1]-deform[1])**2 + + (coor_nds[inds][2]+deforms[inds][2]-coor_nd[2]-deform[2])**2) + if dist < dist_min : dist_min = dist + return dist_min + +def CalSurf(coord_noeuds,deformation): + # on calcule la surface deformee + + dAB = CalDist(coord_noeuds[1],deformation[1],[coord_noeuds[0]],[deformation[0]]) + dBC = CalDist(coord_noeuds[2],deformation[2],[coord_noeuds[1]],[deformation[1]]) + dCD = CalDist(coord_noeuds[3],deformation[3],[coord_noeuds[2]],[deformation[2]]) + dDA = CalDist(coord_noeuds[0],deformation[0],[coord_noeuds[3]],[deformation[3]]) + + mesure = (dAB+dCD)/2.*(dBC+dDA)/2. + + return mesure + +#------------------------------------------------------------- +def Recup_Noeuds_Surf(is_2D,maya,var1,var2,var3=None): + + # Récupération des noeuds appartenant à la surface de symétrie + from Accas import _F + dicma=[] + dicma.append({'NOM' : 'Nds_Plan'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_NO=dicma); + dicma=[] + dicma.append({'NOM' : 'Nds_Plan', 'OPTION' : 'PLAN', 'VECT_NORMALE' : var2, 'PRECISION' : 1e-6}) + if is_2D: + dicma[0].__setitem__('GROUP_NO_CENTRE' , var1) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_NO=dicma); + else: + dicma[0].__setitem__('NOEUD_CENTRE' , var1) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_NO=dicma); + dicma=[] + dicma.append({'NOM' : 'Nds_Fond', 'NOEUD' : var3 }) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_NO=dicma); + +def Recup_Noeuds_Copeaux(is_2D,maya,Copeau_k): + + # Récupération des noeuds appartenant à la surface de symétrie + # et aux copeaux + from Accas import _F + dicma=[]; + dicma.append(_F(NOM = Copeau_k)) + dicma.append(_F(NOM = 'Cop_Pl')) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_NO=dicma); + + dicma=[]; + dicma.append(_F(NOM = Copeau_k , GROUP_MA = Copeau_k)); + dicma.append(_F(NOM = 'Cop_Pl' , INTERSEC = (Copeau_k,'Nds_Plan',))); + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_NO=dicma); + + +def Recup_2D(maya,C_k,mon_nom): + + from Accas import _F + if C_k==0: + dicma=[] + dicma.append({'NOM' : mon_nom }) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : mon_nom, 'OPTION' : 'APPUI', 'GROUP_NO' : 'Cop_Pl', 'TYPE_APPUI' : 'TOUT'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma) + dicma=[] + dicma.append({'NOM' : 'Mai_Pla2'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma) + dicma=[] + dicma.append({'NOM' : 'Mai_Pla2', 'GROUP_MA' : ('Mai_Plan')}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma) + else: + dicma=[] + dicma.append({'NOM' : 'Mai_Pla1' }) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : 'Mai_Pla1', 'OPTION' : 'APPUI', 'GROUP_NO' : 'Cop_Pl', 'TYPE_APPUI' : 'TOUT'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : mon_nom}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : mon_nom, 'DIFFE' : ('Mai_Pla1','Mai_Pla2')}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : 'Mai_Pla2'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : 'Mai_Pla2', 'UNION' : ('Mai_Pla1','Mai_Plan')}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma) + +def Recup_3D(maya,C_k,mon_nom): + + from Accas import _F + if C_k==0: + dicma=[] + dicma.append({'NOM' : mon_nom }) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : mon_nom, 'OPTION' : 'APPUI', 'GROUP_NO' : 'Cop_Pl', 'TYPE_APPUI' : 'TOUT', 'TYPE_MAILLE' : '2D'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : 'Mai_Pla2'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : 'Mai_Pla2', 'GROUP_MA' : (mon_nom)}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma), + + + dicma=[] + dicma.append(_F(NOM = 'Nds_Delt')) + dicma.append(_F(NOM = 'Nds_Floc')) + dicma.append(_F(NOM = mon_nom)) + DEFI_GROUP(reuse =maya,MAILLAGE=maya,DETR_GROUP_NO=dicma,); + + dicma=[] + dicma.append(_F(NOM = mon_nom,GROUP_MA=mon_nom)) + dicma.append(_F(NOM = 'Nds_Delt',INTERSEC=('Nds_Fond',mon_nom))) + dicma.append(_F(NOM = 'Nds_Floc',GROUP_NO='Nds_Delt')) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_NO=dicma); + + else : + dicma=[] + dicma.append({'NOM' : 'Mai_Pla1' }) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : 'Mai_Pla1', 'OPTION' : 'APPUI', 'GROUP_NO' : 'Cop_Pl', 'TYPE_APPUI' : 'TOUT'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : mon_nom}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : mon_nom, 'DIFFE' : ('Mai_Pla1','Mai_Pla2'), 'TYPE_MAILLE' : '2D'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma), + dicma=[] + dicma.append(_F(NOM = 'Nds_Delt')) + dicma.append(_F(NOM = mon_nom)) + dicma.append(_F(NOM = 'Mai_Pla2')) + DEFI_GROUP(reuse =maya,MAILLAGE=maya,DETR_GROUP_NO=dicma,); + dicma=[] + dicma.append(_F(NOM = mon_nom, GROUP_MA =mon_nom)) + dicma.append(_F(NOM = 'Mai_Pla2', GROUP_MA ='Mai_Pla2')) + dicma.append(_F(NOM = 'Nds_Delt', INTERSEC = ('Mai_Pla2',mon_nom))) + DEFI_GROUP(reuse =maya,MAILLAGE=maya,CREA_GROUP_NO=dicma); + dicma=[] + dicma.append({'NOM' : 'Mai_Pla2'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma), + dicma=[] + dicma.append({'NOM' : 'Mai_Pla2', 'GROUP_MA' : 'Mai_Pla1'}) + DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma); + + +def Calcul_mesure_2D(is_2D,maya,nbcop,num_ord,l_copo_tot,ltyma,resu,type_def): + # Calcul de la mesure des mailles déformées ou non + # appartenant à l'axe de symétrie + + import numpy as NP + + mesure = {} + mon_nom = 'Mai_Plan' + for C_k in range(nbcop) : + Copeau_k = l_copo_tot[C_k] + Recup_Noeuds_Copeaux(True,maya,Copeau_k) + Recup_2D(maya,C_k,mon_nom) + if C_k==0: + mesure[Copeau_k] = NP.zeros(num_ord) + else: + mesure[Copeau_k] = mesure[l_copo_tot[C_k-1]] + + # Calcul de la surface des mailles du copeau courant pour chaque instant + tmp_mesure = NP.zeros(num_ord) + tab_noeud=[] + tab_maille=[] + for maille_courante in maya.GROUPEMA.get()[mon_nom.ljust(8)]: + if ltyma[maya.TYPMAIL.get()[maille_courante]][0:3]=='SEG': + connexe = maya.CONNEX.get()[maille_courante] + tab_noeud = tab_noeud + [maya.NOMNOE.get()[connexe[i]-1] for i in range(2)] + tab_maille.append(maya.NOMMAI.get()[maille_courante]) + tab_DEP_el = Coord_Recup(tab_noeud,tab_maille,resu) + num_ord_init = tab_DEP_el.NUME_ORDRE[0] + # Calcul de la surface des mailles du copeau courant pour chaque instant + Coord_int = [] + tab_DEP_el_ord = tab_DEP_el.NUME_ORDRE.values() + indices = [tab_DEP_el_ord.index(num_ord_init,x) for x in range(tab_DEP_el_ord.index(num_ord_init),tab_DEP_el_ord.index(num_ord_init)+tab_DEP_el_ord.count(num_ord_init))] + tab_noeud = [tab_DEP_el.NOEUD[x] for x in indices] + tab_coordX = [tab_DEP_el.COOR_X[x] for x in indices] + tab_coordY = [tab_DEP_el.COOR_Y[x] for x in indices] + tab_coordZ = [tab_DEP_el.COOR_Z[x] for x in indices] + for i_maille_courante in range(len(tab_maille)): + indic = [tab_noeud.index(tab_noeud[i_maille_courante*2+x]) for x in range(2)] + Coord_int = Coord_int + [(tab_coordX[indic[x]],tab_coordY[indic[x]],tab_coordZ[indic[x]]) for x in indic] + + # Si le type est grandes déformations alors il faut tenir compte de la déformée lors du calcul de la surface + if type_def=='GRAND': + l_ord = list(set(tab_DEP_el_ord)) + for it in range(num_ord): + Def_int = [] + indices = [tab_DEP_el_ord.index(l_ord[it],x) for x in range(tab_DEP_el_ord.index(l_ord[it]),tab_DEP_el_ord.index(l_ord[it])+tab_DEP_el_ord.count(l_ord[it]))] + tab_defoX = [tab_DEP_el.DX[x] for x in indices] + tab_defoY = [tab_DEP_el.DY[x] for x in indices] + tab_defoZ = [tab_DEP_el.DZ[x] for x in indices] + for i_maille_courante in range(len(tab_maille)): + indic = [tab_noeud.index(tab_noeud[i_maille_courante*2+x]) for x in range(2)] + Def_int = Def_int + [(tab_defoX[indic[x]], tab_defoY[indic[x]], tab_defoZ[indic[x]]) for x in indic] + tmp_mesure[it] = mesure[Copeau_k][it] + NP.sqrt((Coord_int[0][0]+Def_int[0][0]-Coord_int[1][0]-Def_int[1][0])**2 + + (Coord_int[0][1]+Def_int[0][1]-Coord_int[1][1]-Def_int[1][1])**2 + (Coord_int[0][2]+Def_int[0][2]-Coord_int[1][2]-Def_int[1][2])**2) + mesure[Copeau_k] = tmp_mesure + else: + mesure[Copeau_k] = mesure[Copeau_k] + NP.sqrt((Coord_int[0][0]-Coord_int[1][0])**2 + + (Coord_int[0][1]-Coord_int[1][1])**2 + (Coord_int[0][2]-Coord_int[1][2])**2) + + Supr_mano(maya,mon_nom) + + return mesure + +def Calcul_mesure_3D(is_2D,maya,nbcop,num_ord,l_copo_tot,ltyma,resu,type_def): + # Calcul de la mesure des mailles déformées ou non + # appartenant à l'axe de symétrie + + import numpy as NP + import aster + from Accas import _F + from Utilitai.Table import Table + + # Initialisation + coord_fond = [] + mesure={} + l_ep_copeaux_tot_3D = [] + + mon_nom = 'Mai_Plan' + COOR = maya.COORDO.VALE.get() + + # Recupération des noeuds de fond de fissure appartenant à la tranche courante + Recup_Noeuds_Copeaux(False,maya,l_copo_tot[0]) + Recup_3D(maya,0,mon_nom) + l_noeud_fond = [noeud_courant for noeud_courant in maya.GROUPENO.get()['Nds_Floc'.ljust(8)]] + tab_DEP_el = Coord_Recup([maya.NOMNOE.get()[x-1] for x in maya.GROUPENO.get()['Nds_Floc'.ljust(8)]] ,None,resu) + coord_fond = [(tab_DEP_el.COOR_X[x],tab_DEP_el.COOR_Y[x], tab_DEP_el.COOR_Z[x]) for x in range(len(l_noeud_fond))] + + for C_k in range(len(l_copo_tot)) : + + Copeau_k = l_copo_tot[C_k] + + # Recupération des groupes de noeuds appartenant au copeau courant + Recup_Noeuds_Copeaux(False,maya,Copeau_k) + Recup_3D(maya,C_k%nbcop,mon_nom) + + # La mesure de la surface est cumulée + if C_k%nbcop==0: + mesure[Copeau_k] = NP.zeros(num_ord) + else : + mesure[Copeau_k] = mesure[l_copo_tot[C_k-1]] + + + # Recupération des coordonnées des noeuds appartenant au copeau courant + tmp_mesure = NP.zeros(num_ord) + tab_noeud = [] + tab_maille = [] + for maille_courante in maya.GROUPEMA.get()[mon_nom.ljust(8)]: + if ltyma[maya.TYPMAIL.get()[maille_courante]][0:4]=='QUAD': + connexe = maya.CONNEX.get()[maille_courante] + tab_noeud = tab_noeud + [maya.NOMNOE.get()[connexe[i]-1] for i in range(4)] + tab_maille.append(maya.NOMMAI.get()[maille_courante]) + tab_DEP_el = Coord_Recup(tab_noeud,tab_maille,resu) + num_ord_init = tab_DEP_el.NUME_ORDRE[0] + + # Calcul de la surface des mailles du copeau courant pour chaque instant + Coord_int = [] + tab_DEP_el_ord = tab_DEP_el.NUME_ORDRE.values() + indices = [tab_DEP_el_ord.index(num_ord_init,x) for x in range(tab_DEP_el_ord.index(num_ord_init),tab_DEP_el_ord.index(num_ord_init)+tab_DEP_el_ord.count(num_ord_init))] + tab_noeud = [tab_DEP_el.NOEUD[x] for x in indices] + tab_coordX = [tab_DEP_el.COOR_X[x] for x in indices] + tab_coordY = [tab_DEP_el.COOR_Y[x] for x in indices] + tab_coordZ = [tab_DEP_el.COOR_Z[x] for x in indices] + for i_maille_courante in range(len(tab_maille)): + indic = [tab_noeud.index(tab_noeud[i_maille_courante*4+x]) for x in range(4)] + Coord_int = Coord_int + [(tab_coordX[indic[x]],tab_coordY[indic[x]],tab_coordZ[indic[x]]) for x in indic] + + # Si le type est grandes déformations alors il faut tenir compte de la déformée lors du calcul de la surface + if type_def=='GRAND': + l_ord = list(set(tab_DEP_el_ord)) + for it in range(num_ord): + Def_int = [] + indices = [tab_DEP_el_ord.index(l_ord[it],x) for x in range(tab_DEP_el_ord.index(l_ord[it]),tab_DEP_el_ord.index(l_ord[it])+tab_DEP_el_ord.count(l_ord[it]))] + tab_defoX = [tab_DEP_el.DX[x] for x in indices] + tab_defoY = [tab_DEP_el.DY[x] for x in indices] + tab_defoZ = [tab_DEP_el.DZ[x] for x in indices] + surface_maille = 0.0 + for i_maille_courante in range(len(tab_maille)): + indic = [tab_noeud.index(tab_noeud[i_maille_courante*4+x]) for x in range(4)] + Def_int = Def_int + [(tab_defoX[indic[x]], tab_defoY[indic[x]], tab_defoZ[indic[x]]) for x in indic] + surface_maille = surface_maille + CalSurf(Coord_int,Def_int) + tmp_mesure[it] = mesure[Copeau_k][it] + surface_maille + mesure[Copeau_k] = tmp_mesure + else: + mesure[Copeau_k] = mesure[Copeau_k] + CalSurf(Coord_int,[tuple(NP.zeros(3))]*len(tab_noeud)) + + # Calcul de la distance du copeau au fond d'entaille + coord_nds = [] + dist_moy=0. + for noeud_courant in maya.GROUPENO.get()['Nds_Delt'.ljust(8)]: + coord_nds = (COOR[(noeud_courant-1)*3],COOR[(noeud_courant-1)*3+1],COOR[(noeud_courant-1)*3+2]) + dist_moy = dist_moy + CalDist(coord_nds,NP.zeros(3),coord_fond,[tuple(NP.zeros(3))]*len(coord_fond)) + + l_ep_copeaux_tot_3D.append(dist_moy/len(maya.GROUPENO.get()['Nds_Delt'.ljust(8)])) + + Supr_mano(maya,mon_nom) + + return mesure, l_ep_copeaux_tot_3D + +def Coord_Recup(noeud_courant,maille_courante,resu): + # Utilisation de POST_RELEVE_T pour extraire des nouvelles coordonnées des + # noeuds des copeaux appartenant à la surface de symétrie + + from Accas import _F + from Utilitai.Table import Table + dicarg =[] + if maille_courante : + dicarg.append(_F(OPERATION='EXTRACTION',RESULTAT=resu, INTITULE='DEP_el', + TOUT_CMP='OUI',NOM_CHAM='DEPL', TOUT_ORDRE='OUI', + NOEUD=noeud_courant,MAILLE=maille_courante)) + else: + dicarg.append(_F(OPERATION='EXTRACTION',RESULTAT=resu, INTITULE='DEP_el', + TOUT_CMP='OUI',NOM_CHAM='DEPL', TOUT_ORDRE='OUI', + NOEUD=noeud_courant)) + + DEP_el_i = POST_RELEVE_T(ACTION=dicarg) + tab_DEP_el = DEP_el_i.EXTR_TABLE() + DETRUIRE(CONCEPT=_F(NOM=DEP_el_i),INFO=1); + return tab_DEP_el + +def Supr_mano(maya,mon_nom): + + from Accas import _F + dicno=[]; + dicno.append(_F(NOM = 'Cop_Pl')); + dicno.append(_F(NOM = mon_nom)); + dicno.append(_F(NOM = 'Mai_Pla1')); + dicno.append(_F(NOM = 'Mai_Pla2')); + dicno.append(_F(NOM = 'Nds_Plan')); + dicno.append(_F(NOM = 'Nds_Fond')); + dicno.append(_F(NOM = 'Nds_Floc')); + dicno.append(_F(NOM = 'Nds_Delt')); + dicma=[]; + dicma.append(_F(NOM = mon_nom)); + dicma.append(_F(NOM = 'Mai_Pla1')); + dicma.append(_F(NOM = 'Mai_Pla2')); + DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_NO=dicno, DETR_GROUP_MA=dicma); diff --git a/Aster/Cata/cataSTA10/Macro/post_k1_k2_k3_ops.py b/Aster/Cata/cataSTA10/Macro/post_k1_k2_k3_ops.py index 2cf042f8..a90171ab 100644 --- a/Aster/Cata/cataSTA10/Macro/post_k1_k2_k3_ops.py +++ b/Aster/Cata/cataSTA10/Macro/post_k1_k2_k3_ops.py @@ -1,23 +1,29 @@ -#@ MODIF post_k1_k2_k3_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF post_k1_k2_k3_ops Macro DATE 04/05/2011 AUTEUR MACOCCO K.MACOCCO # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== + + +#--------------------------------------------------------------------------------------------------------------- +# FONCTIONS UTILITAIRES +#--------------------------------------------------------------------------------------------------------------- + def veri_tab(tab,nom,ndim) : from Utilitai.Utmess import UTMESS macro = 'POST_K1_K2_K3' @@ -32,26 +38,41 @@ def veri_tab(tab,nom,ndim) : label='COOR_Z' UTMESS('F','RUPTURE0_2',valk=[label,nom]) -#TODO prefer use numpy.cross -def cross_product(a,b): - cross = [0]*3 - cross[0] = a[1]*b[2]-a[2]*b[1] - cross[1] = a[2]*b[0]-a[0]*b[2] - cross[2] = a[0]*b[1]-a[1]*b[0] - return cross + +#--------------------------------------------------------------------------------------------------------------- + +# def cross_product(a,b): +# cross = [0]*3 +# cross[0] = a[1]*b[2]-a[2]*b[1] +# cross[1] = a[2]*b[0]-a[0]*b[2] +# cross[2] = a[0]*b[1]-a[1]*b[0] +# return cross +#--------------------------------------------------------------------------------------------------------------- + +def normalize(v): + import numpy as NP + norm = NP.sqrt(v[0]**2+v[1]**2+v[2]**2) + return v/norm + +#--------------------------------------------------------------------------------------------------------------- def complete(Tab): n = len(Tab) for i in range(n) : if Tab[i]==None : Tab[i] = 0. return Tab + +#--------------------------------------------------------------------------------------------------------------- +# sam : la methode average(t) ne repond-elle pas au besoin ? def moy(t): m = 0 for value in t : m += value return (m/len(t)) +#--------------------------------------------------------------------------------------------------------------- + def InterpolFondFiss(s0, Coorfo) : # Interpolation des points du fond de fissure (xfem) # s0 = abscisse curviligne du point considere @@ -74,28 +95,1541 @@ def InterpolFondFiss(s0, Coorfo) : xyz[3] = s0 return xyz -def InterpolBaseFiss(s0, Basefo, Coorfo) : -# Interpolation de la base locale en fond de fissure -# s0 = abscisse curviligne du point considere -# Basefo = base locale du fond (VNx,VNy,VNz,VPx,VPy,VPz) -# Coorfo = Coordonnees et abscisses du fond (extrait de la sd fiss_xfem) -# en sortie : VPVNi = base locale au point considere (6 coordonnes) - n = len(Coorfo) / 4 - if ( s0 < Coorfo[3] ) : - VPVNi = Basefo[0:6] - return VPVNi - if ( s0 > Coorfo[-1] ) : - VPVNi = [Basefo[i] for i in range(-6,0)] - return VPVNi - i = 1 - while s0 > Coorfo[4*i+3]: - i = i+1 - VPVNi = [0.]*6 - for k in range(6) : - VPVNi[k] = (s0-Coorfo[4*(i-1)+3]) * (Basefo[6*i+k]-Basefo[6*(i-1)+k]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Basefo[6*(i-1)+k] - return VPVNi - - +#--------------------------------------------------------------------------------------------------------------- + +def InterpolBaseFiss(s0, Basefo, Coorfo) : +# Interpolation de la base locale en fond de fissure +# s0 = abscisse curviligne du point considere +# Basefo = base locale du fond (VNx,VNy,VNz,VPx,VPy,VPz) +# Coorfo = Coordonnees et abscisses du fond (extrait de la sd fiss_xfem) +# en sortie : VPVNi = base locale au point considere (6 coordonnes) + n = len(Coorfo) / 4 + if ( s0 < Coorfo[3] ) : + VPVNi = Basefo[0:6] + return VPVNi + if ( s0 > Coorfo[-1] ) : + VPVNi = [Basefo[i] for i in range(-6,0)] + return VPVNi + i = 1 + while s0 > Coorfo[4*i+3]: + i = i+1 + VPVNi = [0.]*6 + for k in range(6) : + VPVNi[k] = (s0-Coorfo[4*(i-1)+3]) * (Basefo[6*i+k]-Basefo[6*(i-1)+k]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Basefo[6*(i-1)+k] + return VPVNi + +#--------------------------------------------------------------------------------------------------------------- + +def verif_type_fond_fiss(ndim,FOND_FISS) : + from Utilitai.Utmess import UTMESS + if ndim == 3 : + Typ = FOND_FISS.FOND_______TYPE.get() +# attention : Typ est un tuple contenant une seule valeur + if Typ[0].rstrip() != 'SEG2' and Typ[0].rstrip() != 'SEG3' : + UTMESS('F','RUPTURE0_12') + +#--------------------------------------------------------------------------------------------------------------- + +def get_noeud_fond_fiss(FOND_FISS) : + """ retourne la liste des noeuds de FOND_FISS""" + import string as S + from Utilitai.Utmess import UTMESS + Lnoff = FOND_FISS.FOND_______NOEU.get() + if Lnoff == None : +# Cas double fond de fissure : par convention les noeuds sont ceux de fond_inf + Lnoff = FOND_FISS.FONDINF____NOEU.get() + if Lnoff == None : UTMESS('F','RUPTURE0_11') + Lnoff = map(S.rstrip,Lnoff) + return Lnoff + +#--------------------------------------------------------------------------------------------------------------- + +def get_noeud_a_calculer(Lnoff,ndim,FOND_FISS,MAILLAGE,EnumTypes,args) : + """ retourne la liste des noeuds de FOND_FISS a calculer""" + import string as S + from Utilitai.Utmess import UTMESS + + NOEUD = args['NOEUD'] + SANS_NOEUD = args['SANS_NOEUD'] + GROUP_NO = args['GROUP_NO'] + SANS_GROUP_NO = args['SANS_GROUP_NO'] + TOUT = args['TOUT'] + + if ndim == 2 : + + Lnocal = Lnoff + assert (len(Lnocal) == 1) + + elif ndim == 3 : + +# determination du pas de parcours des noeuds : 1 (tous les noeuds) ou 2 (un noeud sur 2) + Typ = FOND_FISS.FOND_______TYPE.get() + Typ = Typ[0].rstrip() + if (Typ == 'SEG2') or (Typ =='SEG3' and TOUT == 'OUI') : + pas = 1 + elif (Typ =='SEG3') : + pas = 2 + +# construction de la liste des noeuds "AVEC" et des noeuds "SANS" + NO_SANS = [] + NO_AVEC = [] + if GROUP_NO!=None : + collgrno = MAILLAGE.GROUPENO.get() + cnom = MAILLAGE.NOMNOE.get() + if type(GROUP_NO) not in EnumTypes : + GROUP_NO = (GROUP_NO,) + for m in xrange(len(GROUP_NO)) : + ngrno=GROUP_NO[m].ljust(8).upper() + if ngrno not in collgrno.keys() : + UTMESS('F','RUPTURE0_13',valk=ngrno) + for i in xrange(len(collgrno[ngrno])) : + NO_AVEC.append(cnom[collgrno[ngrno][i]-1]) + NO_AVEC = map(S.rstrip,NO_AVEC) + if NOEUD!=None : + if type(NOEUD) not in EnumTypes : + NO_AVEC = (NOEUD,) + else : + NO_AVEC = NOEUD + if SANS_GROUP_NO!=None : + collgrno = MAILLAGE.GROUPENO.get() + cnom = MAILLAGE.NOMNOE.get() + if type(SANS_GROUP_NO) not in EnumTypes : + SANS_GROUP_NO = (SANS_GROUP_NO,) + for m in xrange(len(SANS_GROUP_NO)) : + ngrno=SANS_GROUP_NO[m].ljust(8).upper() + if ngrno not in collgrno.keys() : + UTMESS('F','RUPTURE0_13',valk=ngrno) + for i in xrange(len(collgrno[ngrno])) : + NO_SANS.append(cnom[collgrno[ngrno][i]-1]) + NO_SANS= map(S.rstrip,NO_SANS) + if SANS_NOEUD!=None : + if type(SANS_NOEUD) not in EnumTypes : + NO_SANS = (SANS_NOEUD,) + else : + NO_SANS = SANS_NOEUD + +# verification que les noeuds "AVEC" et "SANS" appartiennent au fond de fissure + set_tmp = set(NO_AVEC) - set(Lnoff) + if set_tmp : + UTMESS('F','RUPTURE0_15',valk=list(set_tmp)[0]) + set_tmp = set(NO_SANS) - set(Lnoff) + if set_tmp : + UTMESS('F','RUPTURE0_15',valk=list(set_tmp)[0]) + +# creation de Lnocal + if NO_AVEC : + Lnocal = tuple( NO_AVEC ) + elif NO_SANS : + Lnocal = tuple( set(Lnoff) - set(NO_SANS) ) + else : + Lnocal = tuple(Lnoff) + + return Lnocal + +#--------------------------------------------------------------------------------------------------------------- + +def get_coor_libre(self,Lnoff,RESULTAT,ndim): + """ retourne les coordonnes des noeuds de FOND_FISS en dictionnaire""" + + import numpy as NP + from Accas import _F + import string as S + + POST_RELEVE_T = self.get_cmd('POST_RELEVE_T') + DETRUIRE = self.get_cmd('DETRUIRE') + + __NCOFON=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds du fond', + NOEUD=Lnoff, + RESULTAT=RESULTAT, + NOM_CHAM='DEPL', + NUME_ORDRE=1, + NOM_CMP=('DX',), + OPERATION='EXTRACTION',),); + + tcoorf=__NCOFON.EXTR_TABLE() + DETRUIRE(CONCEPT=_F(NOM=__NCOFON),INFO=1) + nbt = len(tcoorf['NOEUD'].values()['NOEUD']) + xs=NP.array(tcoorf['COOR_X'].values()['COOR_X'][:nbt]) + ys=NP.array(tcoorf['COOR_Y'].values()['COOR_Y'][:nbt]) + if ndim==2 : + zs=NP.zeros(nbt,) + elif ndim==3 : + zs=NP.array(tcoorf['COOR_Z'].values()['COOR_Z'][:nbt]) + ns = tcoorf['NOEUD'].values()['NOEUD'][:nbt] + ns = map(S.rstrip,ns) + l_coorf = [[ns[i],xs[i],ys[i],zs[i]] for i in range(0,nbt)] + l_coorf = [(i[0],i[1:]) for i in l_coorf] + return dict(l_coorf) + +#--------------------------------------------------------------------------------------------------------------- + +def get_Plev(self,ListmaS,RESULTAT): + """ retourne les coordonnes d'un point quelconque des levres pr determination sens de propagation""" + import numpy as NP + from Accas import _F + import aster + POST_RELEVE_T = self.get_cmd('POST_RELEVE_T') + DETRUIRE = self.get_cmd('DETRUIRE') + + iret,ibid,nom_ma = aster.dismoi('F','NOM_MAILLA',RESULTAT.nom,'RESULTAT') + MAILLAGE = self.get_concept(nom_ma.strip()) + + cmail=MAILLAGE.NOMMAI.get() + for i in range(len(cmail)) : + if cmail[i] == ListmaS[0] : + break + colcnx=MAILLAGE.CONNEX.get() + cnom = MAILLAGE.NOMNOE.get() + NO_TMP = [] + for k in range(len(colcnx[i+1])) : + NO_TMP.append(cnom[colcnx[i+1][k]-1]) + + __NCOLEV=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees pt levre', + NOEUD = NO_TMP, + RESULTAT=RESULTAT, + NOM_CHAM='DEPL', + NUME_ORDRE=1, + NOM_CMP=('DX',), + OPERATION='EXTRACTION',),); + + tcoorl=__NCOLEV.EXTR_TABLE() + DETRUIRE(CONCEPT=_F(NOM=__NCOLEV),INFO=1) + nbt = len(tcoorl['NOEUD'].values()['NOEUD']) + xl=moy(tcoorl['COOR_X'].values()['COOR_X'][:nbt]) + yl=moy(tcoorl['COOR_Y'].values()['COOR_Y'][:nbt]) + zl=moy(tcoorl['COOR_Z'].values()['COOR_Z'][:nbt]) + return NP.array([xl, yl, zl]) + +#--------------------------------------------------------------------------------------------------------------- + +def get_normale(VECT_K1,Nnoff,ndim,DTANOR,DTANEX,d_coorf,Lnoff,Plev) : + """ retourne les normales (direct de propa) en chaque point du fond, + les abscisses curvilignes et le sens de la tangete (a eclaircir)""" + + import numpy as NP + + v1 = NP.array(VECT_K1) + VN = [None]*Nnoff + absfon = [0,] + if ndim == 3 : + Pfon2 = NP.array([d_coorf[Lnoff[0]][0],d_coorf[Lnoff[0]][1],d_coorf[Lnoff[0]][2]]) + VLori = Pfon2 - Plev + if DTANOR != None : + VN[0] = NP.array(DTANOR) + else : + Pfon3 = NP.array([d_coorf[Lnoff[1]][0],d_coorf[Lnoff[1]][1],d_coorf[Lnoff[1]][2]]) + VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2)) + VN[0] = NP.array(NP.cross(VT,v1)) + for i in range(1,Nnoff-1): + Pfon1 = NP.array([d_coorf[Lnoff[i-1]][0],d_coorf[Lnoff[i-1]][1],d_coorf[Lnoff[i-1]][2]]) + Pfon2 = NP.array([d_coorf[Lnoff[i]][0],d_coorf[Lnoff[i]][1],d_coorf[Lnoff[i]][2]]) + Pfon3 = NP.array([d_coorf[Lnoff[i+1]][0],d_coorf[Lnoff[i+1]][1],d_coorf[Lnoff[i+1]][2]]) + absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1] + absfon.append(absf) + VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2)) + VT = VT+(Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1)) + VN[i] = NP.array(NP.cross(VT,v1)) + VN[i] = VN[i]/NP.sqrt(NP.dot(NP.transpose(VN[i]),VN[i])) + i = Nnoff-1 + Pfon1 = NP.array([d_coorf[Lnoff[i-1]][0],d_coorf[Lnoff[i-1]][1],d_coorf[Lnoff[i-1]][2]]) + Pfon2 = NP.array([d_coorf[Lnoff[i]][0],d_coorf[Lnoff[i]][1],d_coorf[Lnoff[i]][2]]) + VLextr = Pfon2 - Plev + absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1] + absfon.append(absf) + if DTANEX != None : + VN[i] = NP.array(DTANEX) + else : + VT = (Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1)) + VN[i] = NP.array(NP.cross(VT,v1)) + dicoF = dict([(Lnoff[i],absfon[i]) for i in range(Nnoff)]) + dicVN = dict([(Lnoff[i],VN[i]) for i in range(Nnoff)]) +# Sens de la tangente + v = NP.cross(VLori,VLextr) + sens = NP.sign(NP.dot(NP.transpose(v),v1)) + elif ndim ==2 : + VT = NP.array([0.,0.,1.]) + VN = NP.array(NP.cross(v1,VT)) + dicVN = dict([(Lnoff[0],VN)]) + Pfon = NP.array([d_coorf[Lnoff[0]][0],d_coorf[Lnoff[0]][1],d_coorf[Lnoff[0]][2]]) + VLori = Pfon - Plev + sens = NP.sign(NP.dot(NP.transpose(VN),VLori)) + return (dicVN, dicoF, sens) + +#--------------------------------------------------------------------------------------------------------------- + +def get_tab_dep(self,Lnocal,Nnocal,Nnoff,d_coorf,Lnoff,DTANOR,DTANEX,ABSC_CURV_MAXI,dicVN,sens,RESULTAT,MODEL, + ListmaS,ListmaI,NB_NOEUD_COUPE,dmax,SYME_CHAR) : + """ retourne les tables des deplacements sup et inf pour les noeuds perpendiculaires pour + tous les points du fond de fissure""" + + from Accas import _F + import numpy as NP + + MACR_LIGN_COUPE = self.get_cmd('MACR_LIGN_COUPE') + + mcfact=[] + for i in xrange(Nnocal): + Porig = NP.array(d_coorf[Lnocal[i]] ) + if Lnocal[i]==Lnoff[0] and DTANOR : + Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnocal[i]] + elif Lnocal[i]==Lnoff[Nnoff-1] and DTANEX : + Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnocal[i]] + else : + Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnocal[i]]*sens + + mcfact.append(_F(NB_POINTS=NB_NOEUD_COUPE, + COOR_ORIG=(Porig[0],Porig[1],Porig[2],), + TYPE='SEGMENT', + COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]), + DISTANCE_MAX=dmax),) + + __TlibS = MACR_LIGN_COUPE(RESULTAT=RESULTAT, + NOM_CHAM='DEPL', + MODELE=MODEL, + VIS_A_VIS=_F(MAILLE_1 = ListmaS), + LIGN_COUPE=mcfact) + + if SYME_CHAR=='SANS': + __TlibI = MACR_LIGN_COUPE(RESULTAT=RESULTAT, + NOM_CHAM='DEPL', + MODELE=MODEL, + VIS_A_VIS=_F(MAILLE_1 = ListmaI), + LIGN_COUPE=mcfact) + + return (__TlibS.EXTR_TABLE(),__TlibI.EXTR_TABLE()) + +#--------------------------------------------------------------------------------------------------------------- + +def get_dico_levres(lev,FOND_FISS,ndim,Lnoff,Nnoff): + "retourne ???""" + import string as S + from Utilitai.Utmess import UTMESS + if lev == 'sup' : + Nnorm = FOND_FISS.SUPNORM____NOEU.get() + if not Nnorm : + UTMESS('F','RUPTURE0_19') + elif lev == 'inf' : + Nnorm = FOND_FISS.INFNORM____NOEU.get() + if not Nnorm : + UTMESS('F','RUPTURE0_20') + Nnorm = map(S.rstrip,Nnorm) +# pourquoi modifie t-on Nnoff dans ce cas, alors que rien n'est fait pour les maillages libres ? + if Lnoff[0]==Lnoff[-1] and ndim == 3 : + Nnoff=Nnoff-1 # Cas fond de fissure ferme + Nnorm = [[Lnoff[i],Nnorm[i*20:(i+1)*20]] for i in range(0,Nnoff)] + Nnorm = [(i[0],i[1][0:]) for i in Nnorm] + return dict(Nnorm) + +#--------------------------------------------------------------------------------------------------------------- + +def get_coor_regle(self,RESULTAT,ndim,Lnoff,Lnocal,dicoS,SYME_CHAR,dicoI,TABL_DEPL_SUP,TABL_DEPL_INF): + """retourne le dictionnaires des coordonnees des noeuds des lèvres pour les maillages regles""" + import numpy as NP + import string as S + import copy + from Accas import _F + + POST_RELEVE_T = self.get_cmd('POST_RELEVE_T') + DETRUIRE = self.get_cmd('DETRUIRE') + CALC_TABLE = self.get_cmd('CALC_TABLE') + + if RESULTAT : +# a eclaircir + Ltot = copy.copy(Lnoff) + for ino in Lnocal : + for k in xrange(0,20) : + if dicoS[ino][k] !='': + Ltot.append(dicoS[ino][k]) + if SYME_CHAR=='SANS': + for ino in Lnocal : + for k in xrange(0,20) : + if dicoI[ino][k] !='': + Ltot.append(dicoI[ino][k]) + Ltot=dict([(i,0) for i in Ltot]).keys() + + __NCOOR=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds des levres', + NOEUD=Ltot, + RESULTAT=RESULTAT, + NOM_CHAM='DEPL', + NUME_ORDRE=1, + NOM_CMP=('DX',), + OPERATION='EXTRACTION',),); + + tcoor=__NCOOR.EXTR_TABLE() + DETRUIRE(CONCEPT=_F(NOM=__NCOOR),INFO=1) + else : + if SYME_CHAR=='SANS': + __NCOOR=CALC_TABLE(TABLE=TABL_DEPL_SUP, + ACTION=_F(OPERATION = 'COMB', + NOM_PARA='NOEUD', + TABLE=TABL_DEPL_INF,)) + tcoor=__NCOOR.EXTR_TABLE() + DETRUIRE(CONCEPT=_F(NOM=__NCOOR),INFO=1) + else : + tcoor=TABL_DEPL_SUP.EXTR_TABLE() + nbt = len(tcoor['NOEUD'].values()['NOEUD']) + xs=NP.array(tcoor['COOR_X'].values()['COOR_X'][:nbt]) + ys=NP.array(tcoor['COOR_Y'].values()['COOR_Y'][:nbt]) + if ndim==2 : + zs=NP.zeros(nbt) + elif ndim==3 : + zs=NP.array(tcoor['COOR_Z'].values()['COOR_Z'][:nbt]) + ns = tcoor['NOEUD'].values()['NOEUD'][:nbt] + ns = map(S.rstrip,ns) + l_coor = [[ns[i],xs[i],ys[i],zs[i]] for i in xrange(nbt)] + l_coor = [(i[0],i[1:]) for i in l_coor] + return dict(l_coor) + +#--------------------------------------------------------------------------------------------------------------- + +def get_absfon(Lnoff,Nnoff,d_coor): + """ retourne le dictionnaire des Abscisses curvilignes du fond""" + import numpy as NP + absfon = [0,] + for i in xrange(Nnoff-1) : + Pfon1 = NP.array([d_coor[Lnoff[i]][0],d_coor[Lnoff[i]][1],d_coor[Lnoff[i]][2]]) + Pfon2 = NP.array([d_coor[Lnoff[i+1]][0],d_coor[Lnoff[i+1]][1],d_coor[Lnoff[i+1]][2]]) + absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i] + absfon.append(absf) + return dict([(Lnoff[i],absfon[i]) for i in xrange(Nnoff)]) + +#--------------------------------------------------------------------------------------------------------------- + +def get_noeuds_perp_regle(Lnocal,d_coor,dicoS,dicoI,Lnoff,PREC_VIS_A_VIS,ABSC_CURV_MAXI,SYME_CHAR,rmprec,precn): + """retourne la liste des noeuds du fond (encore ?), la liste des listes des noeuds perpendiculaires""" + import numpy as NP + from Utilitai.Utmess import UTMESS + + NBTRLS = 0 + NBTRLI = 0 + Lnosup = [None]*len(Lnocal) + Lnoinf = [None]*len(Lnocal) + Nbnofo = 0 + Lnofon = [] + for ino in Lnocal : + Pfon = NP.array([d_coor[ino][0],d_coor[ino][1],d_coor[ino][2]]) + Tmpsup = [] + Tmpinf = [] + itots = 0 + itoti = 0 + NBTRLS = 0 + NBTRLI = 0 + for k in xrange(20) : + if dicoS[ino][k] !='': + itots = itots +1 + Nsup = dicoS[ino][k] + Psup = NP.array([d_coor[Nsup][0],d_coor[Nsup][1],d_coor[Nsup][2]]) + abss = NP.sqrt(NP.dot(NP.transpose(Pfon-Psup),Pfon-Psup)) + if abssprecn : + UTMESS('A','RUPTURE0_21',valk=ino) + else : + NBTRLI = NBTRLI +1 + Tmpinf.append(dicoI[ino][k]) +# On verifie qu il y a assez de noeuds + if NBTRLS < 3 : + UTMESS('A+','RUPTURE0_22',valk=ino) + if ino==Lnoff[0] or ino==Lnoff[-1]: + UTMESS('A+','RUPTURE0_23') + if itots<3 : + UTMESS('A','RUPTURE0_24') + else : + UTMESS('A','RUPTURE0_25') + elif (SYME_CHAR=='SANS') and (NBTRLI < 3) : + UTMESS('A+','RUPTURE0_26',valk=ino) + if ino==Lnoff[0] or ino==Lnoff[-1]: + UTMESS('A+','RUPTURE0_23') + if itoti<3 : + UTMESS('A','RUPTURE0_24') + else : + UTMESS('A','RUPTURE0_25') + else : + Lnosup[Nbnofo] = Tmpsup + if SYME_CHAR=='SANS' : + Lnoinf[Nbnofo] = Tmpinf + Lnofon.append(ino) + Nbnofo = Nbnofo+1 + if Nbnofo == 0 : + UTMESS('F','RUPTURE0_30') + + return (Lnofon, Lnosup, Lnoinf) + +#--------------------------------------------------------------------------------------------------------------- + +def verif_resxfem(self,RESULTAT) : + """ verifie que le resultat est bien compatible avec X-FEM et renvoie xcont et MODEL""" + + import aster + from Utilitai.Utmess import UTMESS + + iret,ibid,n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT') + n_modele=n_modele.rstrip() + if len(n_modele)==0 : + UTMESS('F','RUPTURE0_18') + MODEL = self.get_concept(n_modele) + xcont = MODEL.xfem.XFEM_CONT.get() + return (xcont,MODEL) + +#--------------------------------------------------------------------------------------------------------------- + +def get_resxfem(self,xcont,RESULTAT,MODELISATION,MODEL) : + """ retourne le resultat """ + from Accas import _F + import aster + + AFFE_MODELE = self.get_cmd('AFFE_MODELE') + PROJ_CHAMP = self.get_cmd('PROJ_CHAMP') + DETRUIRE = self.get_cmd('DETRUIRE') + CREA_MAILLAGE = self.get_cmd('CREA_MAILLAGE') + + iret,ibid,nom_ma = aster.dismoi('F','NOM_MAILLA',RESULTAT.nom,'RESULTAT') + if xcont[0] == 0 : + __RESX = RESULTAT + +# XFEM + contact : il faut reprojeter sur le maillage lineaire + elif xcont[0] != 0 : + MAILL1 = self.get_concept(nom_ma.strip()) + MAILL2 = CREA_MAILLAGE(MAILLAGE = MAILL1, + QUAD_LINE =_F(TOUT = 'OUI',),); + + __MODLINE=AFFE_MODELE(MAILLAGE=MAILL2, + AFFE=(_F(TOUT='OUI', + PHENOMENE='MECANIQUE', + MODELISATION=MODELISATION,),),); + + __RESX=PROJ_CHAMP(METHODE='COLLOCATION', + TYPE_CHAM='NOEU', + NOM_CHAM='DEPL', + RESULTAT=RESULTAT, + MODELE_1=MODEL, + MODELE_2=__MODLINE, ); + + +# Rq : on ne peut pas détruire __MODLINE ici car on en a besoin lors du MACR_LIGN_COUP qui suivra + + return __RESX + +#--------------------------------------------------------------------------------------------------------------- + +def get_coor_xfem(args,FISSURE,ndim): + """retourne la liste des coordonnees des points du fond, la base locale en fond et le nombre de points""" + + from Utilitai.Utmess import UTMESS + + Listfo = FISSURE.FONDFISS.get() + Basefo = FISSURE.BASEFOND.get() + NB_POINT_FOND = args['NB_POINT_FOND'] + +# Traitement du cas fond multiple + Fissmult = FISSURE.FONDMULT.get() + Nbfiss = len(Fissmult)/2 + Numfiss = args['NUME_FOND'] + if Numfiss <= Nbfiss and Nbfiss > 1 : + Ptinit = Fissmult[2*(Numfiss-1)] + Ptfin = Fissmult[2*(Numfiss-1)+1] + Listfo2 = Listfo[((Ptinit-1)*4):(Ptfin*4)] + Listfo = Listfo2 + Basefo2 = Basefo[((Ptinit-1)*(2*ndim)):(Ptfin*(2*ndim))] + Basefo = Basefo2 + elif Numfiss > Nbfiss : + UTMESS('F','RUPTURE1_38',vali=[Nbfiss,Numfiss]) + + if NB_POINT_FOND != None and ndim == 3 : + Nnoff = NB_POINT_FOND + absmax = Listfo[-1] + Coorfo = [None]*4*Nnoff + Vpropa = [None]*3*Nnoff + for i in xrange(Nnoff) : + absci = i*absmax/(Nnoff-1) + Coorfo[(4*i):(4*(i+1))] = InterpolFondFiss(absci, Listfo) + Vpropa[(6*i):(6*(i+1))] = InterpolBaseFiss(absci,Basefo, Listfo) + else : + Coorfo = Listfo + Vpropa = Basefo + Nnoff = len(Coorfo)/4 + + return (Coorfo, Vpropa, Nnoff) + +#--------------------------------------------------------------------------------------------------------------- + +def get_direction_xfem(Nnoff,Vpropa,Coorfo,VECT_K1,DTAN_ORIG,DTAN_EXTR,ndim) : + """retourne la dirction de propagation, la normale a la surface de la fissure, + et l'abscisse curviligne en chaque point du fond""" + import numpy as NP + from Utilitai.Utmess import UTMESS + + VP = [None]*Nnoff + VN = [None]*Nnoff + absfon = [0,] + +# Cas fissure non necessairement plane + if VECT_K1 == None : + i = 0 + if ndim == 3 : + if DTAN_ORIG != None : + VP[0] = NP.array(DTAN_ORIG) + VP[0] = VP[0]/NP.sqrt(VP[0][0]**2+VP[0][1]**2+VP[0][2]**2) + VN[0] = NP.array([Vpropa[0],Vpropa[1],Vpropa[2]]) + verif = NP.dot(NP.transpose(VP[0]),VN[0]) + if abs(verif) > 0.01: + UTMESS('A','RUPTURE1_33',valr=[VN[0][0],VN[0][1],VN[0][2]]) + else : + VN[0] = NP.array([Vpropa[0],Vpropa[1],Vpropa[2]]) + VP[0] = NP.array([Vpropa[3+0],Vpropa[3+1],Vpropa[3+2]]) + for i in xrange(1,Nnoff-1): + absf = Coorfo[4*i+3] + absfon.append(absf) + VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) + VP[i] = NP.array([Vpropa[3+6*i],Vpropa[3+6*i+1],Vpropa[3+6*i+2]]) + verif = NP.dot(NP.transpose(VN[i]),VN[i-1]) + if abs(verif) < 0.98: + UTMESS('A','RUPTURE1_35',vali=[i-1,i]) + i = Nnoff-1 + absf = Coorfo[4*i+3] + absfon.append(absf) + if DTAN_EXTR != None : + VP[i] = NP.array(DTAN_EXTR) + VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) + verif = NP.dot(NP.transpose(VP[i]),VN[0]) + if abs(verif) > 0.01: + UTMESS('A','RUPTURE1_34',valr=[VN[i][0],VN[i][1],VN[i][2]]) + else : + VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) + VP[i] = NP.array([Vpropa[3+6*i],Vpropa[3+6*i+1],Vpropa[3+6*i+2]]) + elif ndim == 2 : + for i in range(0,Nnoff): + VP[i] = NP.array([Vpropa[2+4*i],Vpropa[3+4*i],0.]) + VN[i] = NP.array([Vpropa[0+4*i],Vpropa[1+4*i],0.]) + +# Cas fissure plane (VECT_K1 donne) + if VECT_K1 != None : + v1 = NP.array(VECT_K1) + v1 = v1/NP.sqrt(v1[0]**2+v1[1]**2+v1[2]**2) + v1 = NP.array(VECT_K1) + i = 0 + if ndim == 3 : +# Sens du vecteur VECT_K1 + v1x =NP.array([Vpropa[0],Vpropa[1],Vpropa[2]]) + verif = NP.dot(NP.transpose(v1),v1x) + if verif < 0 : + v1 = -v1 + VN = [v1]*Nnoff + if DTAN_ORIG != None : + VP[i] = NP.array(DTAN_ORIG) + VP[i] = VP[i]/NP.sqrt(VP[i][0]**2+VP[i][1]**2+VP[i][2]**2) + verif = NP.dot(NP.transpose(VP[i]),VN[0]) + if abs(verif) > 0.01: + UTMESS('A','RUPTURE1_36') + else : + Pfon2 = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) + Pfon3 = NP.array([Coorfo[4*(i+1)],Coorfo[4*(i+1)+1],Coorfo[4*(i+1)+2]]) + VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2)) + VP[0] = NP.array(NP.cross(VT,v1)) + VNi = NP.array([Vpropa[3],Vpropa[4],Vpropa[5]]) + verif = NP.dot(NP.transpose(VP[i]),VNi) + if abs(verif) < 0.99: + vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],] + UTMESS('A','RUPTURE0_32',vali=[i],valr=vv) + for i in range(1,Nnoff-1): + Pfon1 = NP.array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]]) + Pfon2 = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) + Pfon3 = NP.array([Coorfo[4*(i+1)],Coorfo[4*(i+1)+1],Coorfo[4*(i+1)+2]]) + absf = Coorfo[4*i+3] + absfon.append(absf) + VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2)) + VT = VT+(Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1)) + VP[i] = NP.array(NP.cross(VT,v1)) + VP[i] = VP[i]/NP.sqrt(NP.dot(NP.transpose(VP[i]),VP[i])) + VNi = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) + verif = NP.dot(NP.transpose(VN[i]),VNi) + if abs(verif) < 0.99: + vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],] + UTMESS('A','RUPTURE0_32',vali=[i],valr=vv) + i = Nnoff-1 + Pfon1 = NP.array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]]) + Pfon2 = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) + absf = Coorfo[4*i+3] + absfon.append(absf) + if DTAN_EXTR != None : + VP[i] = NP.array(DTAN_EXTR) + VP[i] = VP[i]/NP.sqrt(VP[i][0]**2+VP[i][1]**2+VP[i][2]**2) + verif = NP.dot(NP.transpose(VP[i]),VN[i]) + if abs(verif) > 0.01: + UTMESS('A','RUPTURE1_37') + else : + VT = (Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1)) + VP[i] = NP.array(NP.cross(VT,v1)) + VNi = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) + verif = NP.dot(NP.transpose(VN[i]),VNi) + if abs(verif) < 0.99 : + vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],] + UTMESS('A','RUPTURE0_32',vali=[i],valr=vv) + + elif ndim == 2 : + + VT = NP.array([0.,0.,1.]) + for i in range(0,Nnoff): + VP[i] = NP.array(NP.cross(v1,VT)) + VN[i] = v1 + VNi = NP.array([Vpropa[0+4*i],Vpropa[1+4*i],0.]) + verif = NP.dot(NP.transpose(VN[i]),VNi) + if abs(verif) < 0.99 : + vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],] + UTMESS('A','RUPTURE0_32',vali=[i],valr=vv) + + return (VP,VN,absfon) + +#--------------------------------------------------------------------------------------------------------------- + +def get_sens_tangente_xfem(self,ndim,Nnoff,Coorfo,VP,ABSC_CURV_MAXI,__RESX,dmax) : + """retourne le sens de la tangente ???""" + from Accas import _F + import numpy as NP + from Utilitai.Utmess import UTMESS + + MACR_LIGN_COUPE = self.get_cmd('MACR_LIGN_COUPE') + DETRUIRE = self.get_cmd('DETRUIRE') + + if ndim == 3 : + i = Nnoff/2 + elif ndim == 2 : + i = 0 + Po = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) + Porig = Po + ABSC_CURV_MAXI*VP[i] + Pextr = Po - ABSC_CURV_MAXI*VP[i] + __Tabg = MACR_LIGN_COUPE(RESULTAT=__RESX, + NOM_CHAM='DEPL', + LIGN_COUPE=_F(NB_POINTS=3, + COOR_ORIG=(Porig[0],Porig[1],Porig[2],), + TYPE='SEGMENT', + COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]), + DISTANCE_MAX=dmax),); + tmp=__Tabg.EXTR_TABLE() + test = getattr(tmp,'H1X').values() + if test==[None]*3 : + UTMESS('F','RUPTURE0_33') + if test[0]!=None : + sens = 1 + else : + sens = -1 + DETRUIRE(CONCEPT=_F(NOM=__Tabg),INFO=1) + + return sens + +#--------------------------------------------------------------------------------------------------------------- + +def get_sauts_xfem(self,Nnoff,Coorfo,VP,sens,DTAN_ORIG,DTAN_EXTR,ABSC_CURV_MAXI,NB_NOEUD_COUPE,dmax,__RESX) : + """retourne la table des sauts""" + from Accas import _F + import numpy as NP + + MACR_LIGN_COUPE = self.get_cmd('MACR_LIGN_COUPE') + + mcfact=[] + for i in xrange(Nnoff): + Porig = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) + if i==0 and DTAN_ORIG!=None : + Pextr = Porig - ABSC_CURV_MAXI*VP[i] + elif i==(Nnoff-1) and DTAN_EXTR!=None : + Pextr = Porig - ABSC_CURV_MAXI*VP[i] + else : + Pextr = Porig + ABSC_CURV_MAXI*VP[i]*sens + + mcfact.append(_F(NB_POINTS=NB_NOEUD_COUPE, + COOR_ORIG=(Porig[0],Porig[1],Porig[2],), + TYPE='SEGMENT', + COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]), + DISTANCE_MAX=dmax),) + + __TSo = MACR_LIGN_COUPE(RESULTAT=__RESX, + NOM_CHAM='DEPL', + LIGN_COUPE=mcfact); + + return __TSo.EXTR_TABLE() + +#--------------------------------------------------------------------------------------------------------------- + +def affiche_xfem(self,INFO,Nnoff,VN,VP) : + """affiche des infos""" + from Accas import _F + import aster + + CREA_TABLE = self.get_cmd('CREA_TABLE') + DETRUIRE = self.get_cmd('DETRUIRE') + + if INFO==2 : + mcfact=[] + mcfact.append(_F(PARA='PT_FOND',LISTE_I=range(Nnoff))) + mcfact.append(_F(PARA='VN_X' ,LISTE_R=[VN[i][0] for i in xrange(Nnoff)])) + mcfact.append(_F(PARA='VN_Y' ,LISTE_R=[VN[i][1] for i in xrange(Nnoff)])) + mcfact.append(_F(PARA='VN_Z' ,LISTE_R=[VN[i][2] for i in xrange(Nnoff)])) + mcfact.append(_F(PARA='VP_X' ,LISTE_R=[VP[i][0] for i in xrange(Nnoff)])) + mcfact.append(_F(PARA='VP_Y' ,LISTE_R=[VP[i][1] for i in xrange(Nnoff)])) + mcfact.append(_F(PARA='VP_Z' ,LISTE_R=[VP[i][2] for i in xrange(Nnoff)])) + __resu2=CREA_TABLE(LISTE=mcfact, + TITRE= ' '*13 + 'VECTEUR NORMAL A LA FISSURE - DIRECTION DE PROPAGATION') + aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__()) + DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1) + +#--------------------------------------------------------------------------------------------------------------- + +def affiche_traitement(FOND_FISS,INFO,FISSURE,Lnofon,ino): + import aster + if FOND_FISS and INFO==2 : + texte="\n\n--> TRAITEMENT DU NOEUD DU FOND DE FISSURE: %s"%Lnofon[ino] + aster.affiche('MESSAGE',texte) + if FISSURE and INFO==2 : + texte="\n\n--> TRAITEMENT DU POINT DU FOND DE FISSURE NUMERO %s"%(ino+1) + aster.affiche('MESSAGE',texte) + +#--------------------------------------------------------------------------------------------------------------- + +def get_tab(self,lev,ino,Tlib,Lno,TTSo,FOND_FISS,FISSURE,TYPE_MAILLAGE,RESULTAT,SYME_CHAR,TABL_DEPL,ndim) : + """retourne la table des deplacements des noeuds perpendiculaires""" + from Accas import _F + import string as S + + DETRUIRE = self.get_cmd('DETRUIRE') + POST_RELEVE_T = self.get_cmd('POST_RELEVE_T') + + if lev == 'sup' or (lev == 'inf' and SYME_CHAR=='SANS' and not FISSURE) : + + if FOND_FISS : + if TYPE_MAILLAGE =='LIBRE': + tab = Tlib.INTITULE=='l.coupe%i'%(ino+1) + elif RESULTAT : + if ndim == 2: + nomcmp= ('DX','DY') + elif ndim == 3: + nomcmp= ('DX','DY','DZ') + + __T=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement '+lev.upper(), + NOEUD=Lno[ino], + RESULTAT=RESULTAT, + NOM_CHAM='DEPL', + TOUT_ORDRE='OUI', + NOM_CMP=nomcmp, + OPERATION='EXTRACTION',),); + tab=__T.EXTR_TABLE() + DETRUIRE(CONCEPT=_F(NOM=__T),INFO=1) + else : + tab=TABL_DEPL.EXTR_TABLE() + veri_tab(tab,TABL_DEPL.nom,ndim) + Ls = [S.ljust(Lno[ino][i],8) for i in range(len(Lno[ino]))] + tab=tab.NOEUD==Ls + elif FISSURE : + tab = TTSo.INTITULE=='l.coupe%i'%(ino+1) + else : + tab=TABL_DEPL.EXTR_TABLE() + veri_tab(tab,TABL_DEPL.nom,ndim) + + else : + + tab = None + + return tab + +#--------------------------------------------------------------------------------------------------------------- + +def get_liste_inst(tabsup,args,LIST_ORDRE,NUME_ORDRE,INST,LIST_INST,EnumTypes) : + """retourne la liste d'instants""" + from Utilitai.Utmess import UTMESS + if 'INST' in tabsup.para : + l_inst=None + l_inst_tab=tabsup['INST'].values()['INST'] + l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys() #elimine les doublons + l_inst_tab.sort() + if LIST_ORDRE !=None or NUME_ORDRE !=None : + l_ord_tab = tabsup['NUME_ORDRE'].values()['NUME_ORDRE'] + l_ord_tab.sort() + l_ord_tab=dict([(i,0) for i in l_ord_tab]).keys() + d_ord_tab= [[l_ord_tab[i],l_inst_tab[i]] for i in range(0,len(l_ord_tab))] + d_ord_tab= [(i[0],i[1]) for i in d_ord_tab] + d_ord_tab = dict(d_ord_tab) + if NUME_ORDRE !=None : + if type(NUME_ORDRE) not in EnumTypes : + NUME_ORDRE=(NUME_ORDRE,) + l_ord=list(NUME_ORDRE) + elif LIST_ORDRE !=None : + l_ord = LIST_ORDRE.VALE.get() + l_inst = [] + for ord in l_ord : + if ord in l_ord_tab : + l_inst.append(d_ord_tab[ord]) + else : + UTMESS('F','RUPTURE0_37',vali=ord) + PRECISION = 1.E-6 + CRITERE='ABSOLU' + elif INST !=None or LIST_INST !=None : + CRITERE = args['CRITERE'] + PRECISION = args['PRECISION'] + if INST !=None : + if type(INST) not in EnumTypes : INST=(INST,) + l_inst=list(INST) + elif LIST_INST !=None : + l_inst=LIST_INST.Valeurs() + for inst in l_inst : + if CRITERE=='RELATIF' and inst!=0.: + match=[x for x in l_inst_tab if abs((inst-x)/inst)=2 : + UTMESS('F','RUPTURE0_39',valr=inst) + else : + l_inst=l_inst_tab + PRECISION = 1.E-6 + CRITERE='ABSOLU' + else : + l_inst = [None,] + PRECISION = None + CRITERE = None + + return (l_inst,PRECISION,CRITERE) + +#--------------------------------------------------------------------------------------------------------------- + +def affiche_instant(INFO,inst): + import aster + if INFO==2 and inst!=None: + texte= "#" + "="*80 + "\n" + "==> INSTANT: %f"%inst + aster.affiche('MESSAGE',texte) + +#--------------------------------------------------------------------------------------------------------------- + +def get_tab_inst(lev,inst,FISSURE,SYME_CHAR,PRECISION,CRITERE,tabsup,tabinf) : + """retourne la table des deplacements des noeuds à l'instant courant""" + + tab = None + assert( lev == 'sup' or lev == 'inf') + + # identification du cas (le cas sans instant sera à supprimer + # il doit normalement coincider avec le cas TAB_DEPL... + if inst==None: + cas = 'a_suppr' + else : + cas = 'normal' + + if lev == 'sup' : + tabres = tabsup + elif lev == 'inf' : + if SYME_CHAR=='SANS' and not FISSURE : + tabres = tabinf + else : + return tab + + if cas == 'normal' : + + if inst ==0. : + crit = 'ABSOLU' + else : + crit = CRITERE + + tab=tabres.INST.__eq__(VALE=inst, + CRITERE=crit, + PRECISION=PRECISION) + elif cas == 'a_suppr': + + tab=tabres + + return tab + +#--------------------------------------------------------------------------------------------------------------- + +def get_propmat_tempe(MATER,tabtemp,Lnofon,ino,inst,PRECISION) : + """retourne les proprietes materiaux en fonction de la temperature à l'instant demandé""" + import numpy as NP + from math import pi + + tempeno=tabtemp.NOEUD==Lnofon[ino] + tempeno=tempeno.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION) + nompar = ('TEMP',) + valpar = (tempeno.TEMP.values()[0],) + nomres=['E','NU'] + valres,codret = MATER.RCVALE('ELAS',nompar,valpar,nomres,'F') + e = valres[0] + nu = valres[1] + coefd = e * NP.sqrt(2.*pi) / ( 8.0 * (1. - nu**2)) + coefd3 = e*NP.sqrt(2*pi) / ( 8.0 * (1. + nu)) + coefg = (1. - nu**2) / e + coefg3 = (1. + nu) / e + + return (e,nu,coefd,coefd3,coefg,coefg3) +#--------------------------------------------------------------------------------------------------------------- + +def get_depl_sup(FISSURE,FOND_FISS,rmprec,RESULTAT,tabsupi,ndim,d_coor,Lnofon,ino) : + """retourne les déplacements sup""" + + import numpy as NP + import copy + from Utilitai.Utmess import UTMESS + + abscs = getattr(tabsupi,'ABSC_CURV').values() + + if not FISSURE : + if not FOND_FISS : +# cas a supprimer + +# on vérifie que les abscisses sont bien croissantes + refs=copy.copy(abscs) + refs.sort() + if refs!=abscs : + mctabl='TABL_DEPL_INF' + UTMESS('F','RUPTURE0_40',valk=mctabl) + + refsc=[x for x in refs if xprecn : UTMESS('F','RUPTURE0_44') + + if FOND_FISS and not RESULTAT :#tri des noeuds avec abscisse + + Pfon = NP.array([d_coor[Lnofon[ino]][0],d_coor[Lnofon[ino]][1],d_coor[Lnofon[ino]][2]]) + absci = NP.sqrt((coxi-Pfon[0])**2+(coyi-Pfon[1])**2+(cozi-Pfon[2])**2) + tabinfi['Abs_fo'] = absci + tabinfi.sort('Abs_fo') + absci = getattr(tabinfi,'Abs_fo').values() + absci=NP.array(absci[:nbval]) + coxi=NP.array(tabinfi['COOR_X'].values()['COOR_X'][:nbval]) + coyi=NP.array(tabinfi['COOR_Y'].values()['COOR_Y'][:nbval]) + if ndim==2 : + cozi=NP.zeros(nbval) + elif ndim==3 : + cozi=NP.array(tabinfi['COOR_Z'].values()['COOR_Z'][:nbval],) + + dxi=NP.array(tabinfi['DX'].values()['DX'][:nbval]) + dyi=NP.array(tabinfi['DY'].values()['DY'][:nbval]) + if ndim==2 : + dzi=NP.zeros(nbval) + elif ndim==3 : + dzi=NP.array(tabinfi['DZ'].values()['DZ'][:nbval]) + + di = NP.asarray([dxi,dyi,dzi]) + + else : + + absci = [] + di = [] + + return (absci,di) + +#--------------------------------------------------------------------------------------------------------------- + +def get_pgl(SYME_CHAR,FISSURE,VECT_K1,ino,VP,VN,tabsupi,tabinfi,nbval,ndim) : + + """retourne la matrice du changement de repère""" + import numpy as NP +# +# 1 : VECTEUR NORMAL AU PLAN DE LA FISSURE +# ORIENTE LEVRE INFERIEURE VERS LEVRE SUPERIEURE +# 2 : VECTEUR NORMAL AU FOND DE FISSURE EN M +# 3 : VECTEUR TANGENT AU FOND DE FISSURE EN M +# + if FISSURE : + v1 = VN[ino] + v2 = VP[ino] + + elif not FISSURE : + +# cette partie est a modifier car on devrait pas calculer la base tout le temps + coxs=NP.array(tabsupi['COOR_X'].values()['COOR_X'][:nbval]) + coys=NP.array(tabsupi['COOR_Y'].values()['COOR_Y'][:nbval]) + if ndim==2 : + cozs=NP.zeros(nbval) + elif ndim==3 : + cozs=NP.array(tabsupi['COOR_Z'].values()['COOR_Z'][:nbval]) + + v1 = NP.array(VECT_K1) + if SYME_CHAR=='SANS' : + + coxi=NP.array(tabinfi['COOR_X'].values()['COOR_X'][:nbval]) + coyi=NP.array(tabinfi['COOR_Y'].values()['COOR_Y'][:nbval]) + if ndim==2 : + cozi=NP.zeros(nbval) + elif ndim==3 : + cozi=NP.array(tabinfi['COOR_Z'].values()['COOR_Z'][:nbval]) + + vo = NP.array([( coxs[-1]+coxi[-1] )/2.,( coys[-1]+coyi[-1] )/2.,( cozs[-1]+cozi[-1] )/2.]) + ve = NP.array([( coxs[0 ]+coxi[0 ] )/2.,( coys[0 ]+coyi[0 ] )/2.,( cozs[0 ]+cozi[0 ] )/2.]) + v2 = ve-vo + else : + vo = NP.array([ coxs[-1], coys[-1], cozs[-1]]) + ve = NP.array([ coxs[0], coys[0], cozs[0]]) + v2 = ve-vo + + v2 = normalize(v2) + + v1p = sum(v2*v1) + + if SYME_CHAR=='SANS' : + v1 = v1-v1p*v2 + else : + v2 = v2-v1p*v1 + + v1 = normalize(v1) + v2 = normalize(v2) + v3 = NP.cross(v1,v2) + + pgl = NP.asarray([v1,v2,v3]) + + return pgl + +#--------------------------------------------------------------------------------------------------------------- + +def get_saut(self,pgl,ds,di,INFO,FISSURE,SYME_CHAR,abscs,ndim) : + + """retourne le saut de déplacements dans le nouveau repère""" + + from Accas import _F + import aster + import numpy as NP + from Utilitai.Utmess import UTMESS + + CREA_TABLE = self.get_cmd('CREA_TABLE') + DETRUIRE = self.get_cmd('DETRUIRE') + + + dpls = NP.dot(pgl,ds) + + if SYME_CHAR!='SANS' and abs(dpls[0][0]) > 1.e-10 : + UTMESS('A','RUPTURE0_49',valk=[Lnofon[ino],SYME_CHAR]) + + if FISSURE : + saut=dpls + elif SYME_CHAR=='SANS' : + dpli = NP.dot(pgl,di) + saut=(dpls-dpli) + else : + dpli = [NP.multiply(dpls[0],-1.),dpls[1],dpls[2]] + saut=(dpls-dpli) + + if INFO==2 : + mcfact=[] + mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=abscs.tolist() )) + if not FISSURE : + mcfact.append(_F(PARA='DEPL_SUP_1',LISTE_R=dpls[0].tolist() )) + mcfact.append(_F(PARA='DEPL_INF_1',LISTE_R=dpli[0].tolist() )) + mcfact.append(_F(PARA='SAUT_1' ,LISTE_R=saut[0].tolist() )) + if not FISSURE : + mcfact.append(_F(PARA='DEPL_SUP_2',LISTE_R=dpls[1].tolist() )) + mcfact.append(_F(PARA='DEPL_INF_2',LISTE_R=dpli[1].tolist() )) + mcfact.append(_F(PARA='SAUT_2' ,LISTE_R=saut[1].tolist() )) + if ndim==3 : + if not FISSURE : + mcfact.append(_F(PARA='DEPL_SUP_3',LISTE_R=dpls[2].tolist() )) + mcfact.append(_F(PARA='DEPL_INF_3',LISTE_R=dpli[2].tolist() )) + mcfact.append(_F(PARA='SAUT_3' ,LISTE_R=saut[2].tolist() )) + __resu0=CREA_TABLE(LISTE=mcfact,TITRE='--> SAUTS') + aster.affiche('MESSAGE',__resu0.EXTR_TABLE().__repr__()) + DETRUIRE(CONCEPT=_F(NOM=__resu0),INFO=1) + + return saut + +#--------------------------------------------------------------------------------------------------------------- + +def get_kgsig(saut,nbval,coefd,coefd3) : + + """retourne des trucs....""" + import numpy as NP + + isig=NP.sign(NP.transpose(NP.resize(saut[:,-1],(nbval-1,3)))) + isig=NP.sign(isig+0.001) + saut2=saut*NP.array([[coefd]*nbval,[coefd]*nbval,[coefd3]*nbval]) + saut2=saut2**2 + ksig = isig[:,1] + ksig = NP.array([ksig,ksig]) + ksig = NP.transpose(ksig) + kgsig= NP.resize(ksig,(1,6))[0] + + return (isig,kgsig,saut2) + +#--------------------------------------------------------------------------------------------------------------- + +def get_meth1(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim) : + + """retourne kg1""" + from Accas import _F + import aster + import numpy as NP + + CREA_TABLE = self.get_cmd('CREA_TABLE') + DETRUIRE = self.get_cmd('DETRUIRE') + + nabs = len(abscs) + x1 = abscs[1:-1] + x2 = abscs[2:nabs] + y1 = saut2[:,1:-1]/x1 + y2 = saut2[:,2:nabs]/x2 + k = abs(y1-x1*(y2-y1)/(x2-x1)) + g = coefg*(k[0]+k[1])+coefg3*k[2] + kg1 = [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])] + kg1 = NP.sqrt(kg1)*kgsig + kg1 = NP.concatenate([kg1,[max(g),min(g)]]) + vk = NP.sqrt(k)*isig[:,:-1] + if INFO==2 : + mcfact=[] + mcfact.append(_F(PARA='ABSC_CURV_1' ,LISTE_R=x1.tolist() )) + mcfact.append(_F(PARA='ABSC_CURV_2' ,LISTE_R=x2.tolist() )) + mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0].tolist() )) + mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1].tolist() )) + if ndim==3 : + mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2].tolist() )) + mcfact.append(_F(PARA='G' ,LISTE_R=g.tolist() )) + __resu1=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 1') + aster.affiche('MESSAGE',__resu1.EXTR_TABLE().__repr__()) + DETRUIRE(CONCEPT=_F(NOM=__resu1),INFO=1) + + return kg1 +#--------------------------------------------------------------------------------------------------------------- + +def get_meth2(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim) : + + """retourne kg2""" + from Accas import _F + import aster + import numpy as NP + + CREA_TABLE = self.get_cmd('CREA_TABLE') + DETRUIRE = self.get_cmd('DETRUIRE') + + nabs = len(abscs) + x1 = abscs[1:nabs] + y1 = saut2[:,1:nabs] + k = abs(y1/x1) + g = coefg*(k[0]+k[1])+coefg3*k[2] + kg2= [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])] + kg2 = NP.sqrt(kg2)*kgsig + kg2= NP.concatenate([kg2,[max(g),min(g)]]) + vk = NP.sqrt(k)*isig + if INFO==2 : + mcfact=[] + mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=x1.tolist() )) + mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0].tolist() )) + mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1].tolist() )) + if ndim==3 : + mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2].tolist() )) + mcfact.append(_F(PARA='G' ,LISTE_R=g.tolist() )) + __resu2=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 2') + aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__()) + DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1) + + return kg2 +#--------------------------------------------------------------------------------------------------------------- + +def get_meth3(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim) : + + """retourne kg3""" + from Accas import _F + import aster + import numpy as NP + + CREA_TABLE = self.get_cmd('CREA_TABLE') + DETRUIRE = self.get_cmd('DETRUIRE') + + nabs = len(abscs) + x1 = abscs[:-1] + x2 = abscs[1:nabs] + y1 = saut2[:,:-1] + y2 = saut2[:,1:nabs] + k = (NP.sqrt(y2)*NP.sqrt(x2)+NP.sqrt(y1)*NP.sqrt(x1))*(x2-x1) +# attention, ici, il faut NP.sum et pas sum tout court + k = NP.sum(NP.transpose(k), axis=0) + de = abscs[-1] + vk = (k/de**2)*isig[:,0] + g = coefg*(vk[0]**2+vk[1]**2)+coefg3*vk[2]**2 + kg3=NP.concatenate([[vk[0]]*2,[vk[1]]*2,[vk[2]]*2,[g]*2]) + if INFO==2 : + mcfact=[] + mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0] )) + mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1] )) + if ndim==3 : + mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2] )) + mcfact.append(_F(PARA='G' ,LISTE_R=g )) + __resu3=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 3') + aster.affiche('MESSAGE',__resu3.EXTR_TABLE().__repr__()) + DETRUIRE(CONCEPT=_F(NOM=__resu3),INFO=1) + + + return kg3 + +#--------------------------------------------------------------------------------------------------------------- + +def get_erreur(self,ndim,__tabi) : + + """retourne l'erreur selon les méthodes. + En FEM/X-FEM, on ne retient que le K_MAX de la méthode 1.""" + from Accas import _F + import aster + import string + import numpy as NP + + CREA_TABLE = self.get_cmd('CREA_TABLE') + CALC_TABLE = self.get_cmd('CALC_TABLE') + DETRUIRE = self.get_cmd('DETRUIRE') + FORMULE = self.get_cmd('FORMULE') + + labels = ['K1_MAX', 'K1_MIN', 'K2_MAX', 'K2_MIN', 'K3_MAX', 'K3_MIN'] + index = 2 + if ndim == 3: + index = 3 + py_tab = __tabi.EXTR_TABLE() + + nlines = len(py_tab.values()[py_tab.values().keys()[0]]) + err = NP.zeros((index, nlines/3)) + kmax = [0.] * index + kmin = [0.] * index + for i in range(nlines/3): + for j in range(index): + kmax[j] = max(__tabi[labels[ 2*j], 3*i+1], __tabi[labels[ 2*j], 3*i+2], __tabi[labels[ 2*j], 3*i+3]) + kmin[j] = min(__tabi[labels[2*j+1], 3*i+1], __tabi[labels[2*j+1], 3*i+2], __tabi[labels[2*j+1], 3*i+3]) + kmaxmax = max(kmax) + if NP.fabs(kmaxmax) > 1e-15: + for j in range(index): + err[j,i] = (kmax[j] - kmin[j]) / kmaxmax + + # filter method 1 line + imeth = 1 + __tabi = CALC_TABLE(TABLE=__tabi, + reuse=__tabi, + ACTION=_F(OPERATION='FILTRE', + CRIT_COMP='EQ', + VALE = imeth, + NOM_PARA='METHODE') + ) + + # rename k parameters + __tabi = CALC_TABLE(TABLE=__tabi, + reuse=__tabi, + ACTION=(_F(OPERATION='RENOMME',NOM_PARA=('K1_MAX','K1')), + _F(OPERATION='RENOMME',NOM_PARA=('K2_MAX','K2')), + _F(OPERATION='RENOMME',NOM_PARA=('G_MAX','G'))) + ) + if ndim == 3: + __tabi = CALC_TABLE(TABLE=__tabi, + reuse=__tabi, + ACTION=_F(OPERATION='RENOMME',NOM_PARA=('K3_MAX','K3')) + ) + + # create error + if ndim != 3: + tab_int = CREA_TABLE(LISTE=(_F(LISTE_R=(tuple(__tabi.EXTR_TABLE().values()['G_MIN'])), PARA='G_MIN'), + _F(LISTE_R=(tuple(err[0].tolist())), PARA='ERR_K1'), + _F(LISTE_R=(tuple(err[1].tolist())), PARA='ERR_K2'))) + else: + tab_int = CREA_TABLE(LISTE=(_F(LISTE_R=(tuple(__tabi.EXTR_TABLE().values()['G_MIN'])), PARA='G_MIN'), + _F(LISTE_R=(tuple(err[0].tolist())), PARA='ERR_K1'), + _F(LISTE_R=(tuple(err[1].tolist())), PARA='ERR_K2'), + _F(LISTE_R=(tuple(err[2].tolist())), PARA='ERR_K3'))) + + # add error + __tabi = CALC_TABLE(TABLE=__tabi,reuse=__tabi,ACTION=(_F(OPERATION='COMB',NOM_PARA='G_MIN',TABLE=tab_int)),INFO=1) + DETRUIRE(CONCEPT=(_F(NOM=tab_int)),INFO=1) + + # remove kj_min + sort data + params = () + if ('INST' in __tabi.EXTR_TABLE().para) : params = ('INST',) + if ('NOEUD_FOND' in __tabi.EXTR_TABLE().para) : + params = params + ('NOEUD_FOND',) + elif ('PT_FOND' in __tabi.EXTR_TABLE().para) : + params = params + ('PT_FOND',) + + if ('ABSC_CURV' in __tabi.EXTR_TABLE().para) : + params = params + ('ABSC_CURV',) + + params = params + ('K1', 'ERR_K1', 'K2', 'ERR_K2',) + if ndim == 3: params = params + ('K3', 'ERR_K3', 'G',) + else: params = params + ('G',) + + __tabi = CALC_TABLE(TABLE=__tabi, + reuse=__tabi,ACTION=(_F(OPERATION='EXTR',NOM_PARA=tuple(params))), + TITRE="CALCUL DES FACTEURS D'INTENSITE DES CONTRAINTES PAR LA METHODE POST_K1_K2_K3") + + return __tabi + +#--------------------------------------------------------------------------------------------------------------- + +def get_tabout(self,kg,TITRE,FOND_FISS,MODELISATION,FISSURE,ndim,ino,inst,iord, + Lnofon,dicoF,absfon,Nnoff,tabout) : + + """retourne la table de sortie""" + from Accas import _F + import aster + import numpy as NP + + CREA_TABLE = self.get_cmd('CREA_TABLE') + DETRUIRE = self.get_cmd('DETRUIRE') + CALC_TABLE = self.get_cmd('CALC_TABLE') + + + mcfact=[] + + if TITRE != None : + titre = TITRE + else : + v = aster.__version__ + titre = 'ASTER %s - CONCEPT CALCULE PAR POST_K1_K2_K3 LE &DATE A &HEURE \n'%v + + if FOND_FISS and MODELISATION=='3D': + mcfact.append(_F(PARA='NOEUD_FOND',LISTE_K=[Lnofon[ino],]*3)) + mcfact.append(_F(PARA='ABSC_CURV',LISTE_R=[dicoF[Lnofon[ino]]]*3)) + + if FISSURE and MODELISATION=='3D': + mcfact.append(_F(PARA='PT_FOND',LISTE_I=[ino+1,]*3)) + mcfact.append(_F(PARA='ABSC_CURV',LISTE_R=[absfon[ino],]*3)) + + if FISSURE and MODELISATION!='3D' and Nnoff!=1 : + mcfact.append(_F(PARA='PT_FOND',LISTE_I=[ino+1,]*3)) + + mcfact.append(_F(PARA='METHODE',LISTE_I=(1,2,3))) + mcfact.append(_F(PARA='K1_MAX' ,LISTE_R=kg[0].tolist() )) + mcfact.append(_F(PARA='K1_MIN' ,LISTE_R=kg[1].tolist() )) + mcfact.append(_F(PARA='K2_MAX' ,LISTE_R=kg[2].tolist() )) + mcfact.append(_F(PARA='K2_MIN' ,LISTE_R=kg[3].tolist() )) + + if ndim==3 : + mcfact.append(_F(PARA='K3_MAX' ,LISTE_R=kg[4].tolist() )) + mcfact.append(_F(PARA='K3_MIN' ,LISTE_R=kg[5].tolist() )) + + mcfact.append(_F(PARA='G_MAX' ,LISTE_R=kg[6].tolist() )) + mcfact.append(_F(PARA='G_MIN' ,LISTE_R=kg[7].tolist() )) + + if (ino==0 and iord==0) and inst==None : + tabout=CREA_TABLE(LISTE=mcfact,TITRE = titre) + get_erreur(self,ndim,tabout) + elif iord==0 and ino==0 and inst!=None : + mcfact=[_F(PARA='INST' ,LISTE_R=[inst,]*3 )]+mcfact + tabout=CREA_TABLE(LISTE=mcfact,TITRE = titre) + get_erreur(self,ndim,tabout) + else : + if inst!=None : + mcfact=[_F(PARA='INST' ,LISTE_R=[inst,]*3 )]+mcfact + __tabi=CREA_TABLE(LISTE=mcfact,) + npara = ['K1'] + if inst!=None : + npara.append('INST') + if FOND_FISS and MODELISATION=='3D' : + npara.append('NOEUD_FOND') + + get_erreur(self,ndim,__tabi) + tabout=CALC_TABLE(reuse = tabout, + TABLE = tabout, + TITRE = titre, + ACTION=_F(OPERATION = 'COMB', + NOM_PARA = npara, + TABLE = __tabi,)) + + return tabout + + + +#--------------------------------------------------------------------------------------------------------------- +# CORPS DE LA MACRO POST_K1_K2_K3 +#--------------------------------------------------------------------------------------------------------------- + def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, TABL_DEPL_SUP,TABL_DEPL_INF,ABSC_CURV_MAXI,PREC_VIS_A_VIS, TOUT_ORDRE,NUME_ORDRE,LIST_ORDRE,INST,LIST_INST,SYME_CHAR, @@ -107,22 +1641,19 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, la fissure. Produit une table. """ import aster - import string - import copy - import math + import string as S import numpy as NP from math import pi from types import ListType, TupleType from Accas import _F from Utilitai.Table import Table, merge - from SD.sd_l_charges import sd_l_charges from SD.sd_mater import sd_compor1 EnumTypes = (ListType, TupleType) macro = 'POST_K1_K2_K3' - from Accas import _F from Utilitai.Utmess import UTMESS + ier = 0 # La macro compte pour 1 dans la numerotation des commandes self.set_icmd(1) @@ -130,18 +1661,18 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, # Le concept sortant (de type table_sdaster ou dérivé) est tab self.DeclareOut('tabout', self.sd) + tabout=[] + # On importe les definitions des commandes a utiliser dans la macro # Le nom de la variable doit etre obligatoirement le nom de la commande - CREA_TABLE = self.get_cmd('CREA_TABLE') - CALC_TABLE = self.get_cmd('CALC_TABLE') + CREA_TABLE = self.get_cmd('CREA_TABLE') + CALC_TABLE = self.get_cmd('CALC_TABLE') POST_RELEVE_T = self.get_cmd('POST_RELEVE_T') - DETRUIRE = self.get_cmd('DETRUIRE') - DEFI_GROUP = self.get_cmd('DEFI_GROUP') - MACR_LIGN_COUPE = self.get_cmd('MACR_LIGN_COUPE') - + DETRUIRE = self.get_cmd('DETRUIRE') + DEFI_GROUP = self.get_cmd('DEFI_GROUP') + MACR_LIGN_COUPE = self.get_cmd('MACR_LIGN_COUPE') AFFE_MODELE = self.get_cmd('AFFE_MODELE') - PROJ_CHAMP = self.get_cmd('PROJ_CHAMP') - + PROJ_CHAMP = self.get_cmd('PROJ_CHAMP') # ------------------------------------------------------------------ # CARACTERISTIQUES MATERIAUX # ------------------------------------------------------------------ @@ -152,18 +1683,21 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, phenom=cmpt break if phenom==None : UTMESS('F','RUPTURE0_5') -# --- RECHERCHE SI LE MATERIAU DEPEND DE LA TEMPERATURE: + +# RECHERCHE SI LE MATERIAU DEPEND DE LA TEMPERATURE: compor = sd_compor1('%-8s.%s' % (MATER.nom, phenom)) valk = [s.strip() for s in compor.VALK.get()] valr = compor.VALR.get() dicmat=dict(zip(valk,valr)) -# --- PROPRIETES MATERIAUX DEPENDANTES DE LA TEMPERATURE + +# PROPRIETES MATERIAUX DEPENDANTES DE LA TEMPERATURE Tempe3D = False if FOND_FISS and args['EVOL_THER'] : -# on recupere juste le nom du resultat thermique (la température est variable de commande) +# on recupere juste le nom du resultat thermique (la température est variable de commande) ndim = 3 Tempe3D=True - resuth=string.ljust(args['EVOL_THER'].nom,8).rstrip() + resuth=S.ljust(args['EVOL_THER'].nom,8).rstrip() + if dicmat.has_key('TEMP_DEF') and not args['EVOL_THER'] : nompar = ('TEMP',) valpar = (dicmat['TEMP_DEF'],) @@ -211,1084 +1745,303 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT, else : UTMESS('F','RUPTURE0_10') + assert (ndim == 2 or ndim == 3) + + try : + TYPE_MAILLAGE = args['TYPE_MAILLAGE'] + except KeyError : + TYPE_MAILLAGE = [] + + + rmprec = ABSC_CURV_MAXI*(1.+PREC_VIS_A_VIS/10.) + precn = PREC_VIS_A_VIS * ABSC_CURV_MAXI + + +# ------------------------------------------------------------------ +# I. CAS FOND_FISS +# ------------------------------------------------------------------ -# ------------------------------------------------------------------ -# CAS FOND_FISS -# ------------------------------------------------------------------ if FOND_FISS : - MAILLAGE = args['MAILLAGE'] - NOEUD = args['NOEUD'] - SANS_NOEUD = args['SANS_NOEUD'] - GROUP_NO = args['GROUP_NO'] - SANS_GROUP_NO = args['SANS_GROUP_NO'] - TOUT = args['TOUT'] - TYPE_MAILLAGE = args['TYPE_MAILLAGE'] + + if RESULTAT : + iret,ibid,nom_ma = aster.dismoi('F','NOM_MAILLA',RESULTAT.nom,'RESULTAT') + MAILLAGE = self.get_concept(nom_ma.strip()) + else: + MAILLAGE = args['MAILLAGE'] + NB_NOEUD_COUPE = args['NB_NOEUD_COUPE'] - if NB_NOEUD_COUPE ==None : NB_NOEUD_COUPE = 5 - LNOFO = FOND_FISS.FOND_______NOEU.get() - RECOL = False -# Cas double fond de fissure : par convention les noeuds sont ceux de fond_inf - if LNOFO==None : - RECOL = True - LNOFO = FOND_FISS.FONDINF____NOEU.get() - if LNOFO==None : UTMESS('F','RUPTURE0_11') - LNOFO = map(string.rstrip,LNOFO) - Nbfond = len(LNOFO) - if MODELISATION=='3D' : -# ----------Mots cles TOUT, NOEUD, SANS_NOEUD ------------- - Typ = FOND_FISS.FOND_______TYPE.get() - if (Typ[0]=='SEG2 ') or (Typ[0]=='SEG3 ' and TOUT=='OUI') : - pas = 1 - elif (Typ[0]=='SEG3 ') : - pas = 2 - else : - UTMESS('F','RUPTURE0_12') -#### - NO_SANS = [] - NO_AVEC = [] - if GROUP_NO!=None : - collgrno = MAILLAGE.GROUPENO.get() - cnom = MAILLAGE.NOMNOE.get() - if type(GROUP_NO) not in EnumTypes : GROUP_NO = (GROUP_NO,) - for m in range(len(GROUP_NO)) : - ngrno=GROUP_NO[m].ljust(8).upper() - if ngrno not in collgrno.keys() : - UTMESS('F','RUPTURE0_13',valk=ngrno) - for i in range(len(collgrno[ngrno])) : NO_AVEC.append(cnom[collgrno[ngrno][i]-1]) - NO_AVEC= map(string.rstrip,NO_AVEC) - if NOEUD!=None : - if type(NOEUD) not in EnumTypes : NO_AVEC = (NOEUD,) - else : NO_AVEC = NOEUD - if SANS_GROUP_NO!=None : - collgrno = MAILLAGE.GROUPENO.get() - cnom = MAILLAGE.NOMNOE.get() - if type(SANS_GROUP_NO) not in EnumTypes : SANS_GROUP_NO = (SANS_GROUP_NO,) - for m in range(len(SANS_GROUP_NO)) : - ngrno=SANS_GROUP_NO[m].ljust(8).upper() - if ngrno not in collgrno.keys() : - UTMESS('F','RUPTURE0_13',valk=ngrno) - for i in range(len(collgrno[ngrno])) : NO_SANS.append(cnom[collgrno[ngrno][i]-1]) - NO_SANS= map(string.rstrip,NO_SANS) - if SANS_NOEUD!=None : - if type(SANS_NOEUD) not in EnumTypes : NO_SANS = (SANS_NOEUD,) - else : NO_SANS = SANS_NOEUD -# Creation de la liste des noeuds du fond a traiter : Lnf1 - Lnf1 = [] - Nbf1 = 0 - if len(NO_AVEC)!=0 : - for i in range(len(NO_AVEC)) : - if NO_AVEC[i] in LNOFO : - Lnf1.append(NO_AVEC[i]) - Nbf1 = Nbf1 +1 - else : - UTMESS('F','RUPTURE0_15',valk=NO_AVEC[i]) - else : - for i in range(0,Nbfond,pas) : - if not (LNOFO[i] in NO_SANS) : - Lnf1.append(LNOFO[i]) - Nbf1 = Nbf1 +1 - else : - Lnf1 = LNOFO - Nbf1 = 1 +# Verification du type des mailles de FOND_FISS +# --------------------------------------------- + + verif_type_fond_fiss(ndim,FOND_FISS) + +# Recuperation de la liste des noeuds du fond issus de la sd_fond_fiss : Lnoff, de longueur Nnoff +# ------------------------------------------------------------------------------------------------ + + Lnoff = get_noeud_fond_fiss(FOND_FISS) + Nnoff = len(Lnoff) + +# Creation de la liste des noeuds du fond a calculer : Lnocal, de longueur Nnocal +# (obtenue par restriction de Lnoff avec TOUT, NOEUD, SANS_NOEUD) +# ---------------------------------------------------------------------------- + + Lnocal = get_noeud_a_calculer(Lnoff,ndim,FOND_FISS,MAILLAGE,EnumTypes,args) + Nnocal = len(Lnocal) -##### Cas maillage libre########### -# creation des directions normales et macr_lign_coup +# ------------------------------------------------------------------ +# I.1 SOUS-CAS MAILLAGE LIBRE +# ------------------------------------------------------------------ + +# creation des directions normales et macr_lign_coup if TYPE_MAILLAGE =='LIBRE': - if not RESULTAT : UTMESS('F','RUPTURE0_16') - Lnofon = Lnf1 - Nbnofo = Nbf1 - ListmaS = FOND_FISS.LEVRESUP___MAIL.get() - if ListmaS==None : UTMESS('F','RUPTURE0_19') - if SYME_CHAR=='SANS': - ListmaI = FOND_FISS.LEVREINF___MAIL.get() - __NCOFON=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds du fond', - NOEUD=LNOFO, - RESULTAT=RESULTAT, - NOM_CHAM='DEPL',NUME_ORDRE=1,NOM_CMP=('DX',), - OPERATION='EXTRACTION',),); - tcoorf=__NCOFON.EXTR_TABLE() - DETRUIRE(CONCEPT=_F(NOM=__NCOFON),INFO=1) - nbt = len(tcoorf['NOEUD'].values()['NOEUD']) - xs=NP.array(tcoorf['COOR_X'].values()['COOR_X'][:nbt]) - ys=NP.array(tcoorf['COOR_Y'].values()['COOR_Y'][:nbt]) - if ndim==2 : zs=NP.zeros(nbt) - elif ndim==3 : zs=NP.array(tcoorf['COOR_Z'].values()['COOR_Z'][:nbt]) - ns = tcoorf['NOEUD'].values()['NOEUD'][:nbt] - ns = map(string.rstrip,ns) - l_coorf = [[ns[i],xs[i],ys[i],zs[i]] for i in range(0,nbt)] - l_coorf = [(i[0],i[1:]) for i in l_coorf] - d_coorf = dict(l_coorf) -# Coordonnee d un pt quelconque des levres pr determination sens de propagation - cmail=MAILLAGE.NOMMAI.get() - for i in range(len(cmail)) : - if cmail[i] == ListmaS[0] : break - colcnx=MAILLAGE.CONNEX.get() - cnom = MAILLAGE.NOMNOE.get() - NO_TMP = [] - for k in range(len(colcnx[i+1])) : NO_TMP.append(cnom[colcnx[i+1][k]-1]) - __NCOLEV=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees pt levre', - NOEUD = NO_TMP, - RESULTAT=RESULTAT, - NOM_CHAM='DEPL',NUME_ORDRE=1,NOM_CMP=('DX',), - OPERATION='EXTRACTION',),); - tcoorl=__NCOLEV.EXTR_TABLE() - DETRUIRE(CONCEPT=_F(NOM=__NCOLEV),INFO=1) - nbt = len(tcoorl['NOEUD'].values()['NOEUD']) - xl=moy(tcoorl['COOR_X'].values()['COOR_X'][:nbt]) - yl=moy(tcoorl['COOR_Y'].values()['COOR_Y'][:nbt]) - zl=moy(tcoorl['COOR_Z'].values()['COOR_Z'][:nbt]) - Plev = NP.array([xl, yl, zl]) -# Calcul des normales a chaque noeud du fond - v1 = NP.array(VECT_K1) - VN = [None]*Nbfond - absfon = [0,] - if MODELISATION=='3D' : - DTANOR = FOND_FISS.DTAN_ORIGINE.get() - Pfon2 = NP.array([d_coorf[LNOFO[0]][0],d_coorf[LNOFO[0]][1],d_coorf[LNOFO[0]][2]]) - VLori = Pfon2 - Plev - if DTANOR != None : - VN[0] = NP.array(DTANOR) - else : - Pfon3 = NP.array([d_coorf[LNOFO[1]][0],d_coorf[LNOFO[1]][1],d_coorf[LNOFO[1]][2]]) - VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2)) - VN[0] = NP.array(cross_product(VT,v1)) - for i in range(1,Nbfond-1): - Pfon1 = NP.array([d_coorf[LNOFO[i-1]][0],d_coorf[LNOFO[i-1]][1],d_coorf[LNOFO[i-1]][2]]) - Pfon2 = NP.array([d_coorf[LNOFO[i]][0],d_coorf[LNOFO[i]][1],d_coorf[LNOFO[i]][2]]) - Pfon3 = NP.array([d_coorf[LNOFO[i+1]][0],d_coorf[LNOFO[i+1]][1],d_coorf[LNOFO[i+1]][2]]) - absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1] - absfon.append(absf) - VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2)) - VT = VT+(Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1)) - VN[i] = NP.array(cross_product(VT,v1)) - VN[i] = VN[i]/NP.sqrt(NP.dot(NP.transpose(VN[i]),VN[i])) - i = Nbfond-1 - Pfon1 = NP.array([d_coorf[LNOFO[i-1]][0],d_coorf[LNOFO[i-1]][1],d_coorf[LNOFO[i-1]][2]]) - Pfon2 = NP.array([d_coorf[LNOFO[i]][0],d_coorf[LNOFO[i]][1],d_coorf[LNOFO[i]][2]]) - VLextr = Pfon2 - Plev - absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1] - absfon.append(absf) - DTANEX = FOND_FISS.DTAN_EXTREMITE.get() - if DTANEX != None : - VN[i] = NP.array(DTANEX) - else : - VT = (Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1)) - VN[i] = NP.array(cross_product(VT,v1)) - dicoF = dict([(LNOFO[i],absfon[i]) for i in range(Nbfond)]) - dicVN = dict([(LNOFO[i],VN[i]) for i in range(Nbfond)]) -#Sens de la tangente - v = cross_product(VLori,VLextr) - sens = NP.sign(NP.dot(NP.transpose(v),v1)) -#Cas 2D - if MODELISATION!='3D' : - DTANOR = False - DTANEX = False - VT = NP.array([0.,0.,1.]) - VN = NP.array(cross_product(v1,VT)) - dicVN = dict([(LNOFO[0],VN)]) - Pfon = NP.array([d_coorf[LNOFO[0]][0],d_coorf[LNOFO[0]][1],d_coorf[LNOFO[0]][2]]) - VLori = Pfon - Plev - sens = NP.sign(NP.dot(NP.transpose(VN),VLori)) -#Extraction dep sup/inf sur les normales - TlibS = [None]*Nbf1 - TlibI = [None]*Nbf1 - if NB_NOEUD_COUPE < 3 : - UTMESS('A','RUPTURE0_17') - NB_NOEUD_COUPE = 5 - iret,ibid,n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT') - n_modele=n_modele.rstrip() - if len(n_modele)==0 : UTMESS('F','RUPTURE0_18') - MODEL = self.get_concept(n_modele) - dmax = PREC_VIS_A_VIS * ABSC_CURV_MAXI - for i in range(Nbf1): - Porig = NP.array(d_coorf[Lnf1[i]] ) - if Lnf1[i]==LNOFO[0] and DTANOR : Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnf1[i]] - elif Lnf1[i]==LNOFO[Nbfond-1] and DTANEX : Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnf1[i]] - else : Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnf1[i]]*sens - TlibS[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT, - NOM_CHAM='DEPL',MODELE=MODEL, VIS_A_VIS=_F(MAILLE_1 = ListmaS), - LIGN_COUPE=_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],), - TYPE='SEGMENT', COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]), - DISTANCE_MAX=dmax),); - if SYME_CHAR=='SANS': - TlibI[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT, - NOM_CHAM='DEPL',MODELE=MODEL, VIS_A_VIS=_F(MAILLE_1 = ListmaI), - LIGN_COUPE=_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],), - TYPE='SEGMENT',COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]), - DISTANCE_MAX=dmax),); - - -##### Cas maillage regle########### + + if not RESULTAT : + UTMESS('F','RUPTURE0_16') + + ListmaS = FOND_FISS.LEVRESUP___MAIL.get() + + if not ListmaS : + UTMESS('F','RUPTURE0_19') + + if SYME_CHAR == 'SANS': + ListmaI = FOND_FISS.LEVREINF___MAIL.get() + +# Dictionnaire des coordonnees des noeuds du fond + d_coorf = get_coor_libre(self,Lnoff,RESULTAT,ndim) + +# Coordonnee d un pt quelconque des levres pour determination sens de propagation + Plev = get_Plev(self,ListmaS,RESULTAT) + +# Calcul des normales a chaque noeud du fond + if ndim == 3 : + DTANOR = FOND_FISS.DTAN_ORIGINE.get() + DTANEX = FOND_FISS.DTAN_EXTREMITE.get() + elif ndim ==2 : + DTANOR = False + DTANEX = False + (dicVN, dicoF, sens) = get_normale(VECT_K1,Nnoff,ndim,DTANOR,DTANEX,d_coorf,Lnoff,Plev) + +# Extraction dep sup/inf sur les normales + iret,ibid,n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT') + n_modele=n_modele.rstrip() + if len(n_modele)==0 : + UTMESS('F','RUPTURE0_18') + MODEL = self.get_concept(n_modele) + dmax = PREC_VIS_A_VIS * ABSC_CURV_MAXI + + (__TlibS,__TlibI) = get_tab_dep(self,Lnocal,Nnocal,Nnoff,d_coorf,Lnoff,DTANOR,DTANEX,ABSC_CURV_MAXI,dicVN,sens,RESULTAT,MODEL, + ListmaS,ListmaI,NB_NOEUD_COUPE,dmax,SYME_CHAR) + + + +# A eclaircir + Lnofon = Lnocal + Nbnofo = Nnocal + +# ------------------------------------------------------------------ +# I.2 SOUS-CAS MAILLAGE REGLE +# ------------------------------------------------------------------ + else: -# ---------- Dictionnaires des levres ------------- - NnormS = FOND_FISS.SUPNORM____NOEU.get() - if NnormS==None : - UTMESS('F','RUPTURE0_19') - NnormS = map(string.rstrip,NnormS) - if LNOFO[0]==LNOFO[-1] and MODELISATION=='3D' : Nbfond=Nbfond-1 # Cas fond de fissure ferme - NnormS = [[LNOFO[i],NnormS[i*20:(i+1)*20]] for i in range(0,Nbfond)] - NnormS = [(i[0],i[1][0:]) for i in NnormS] - dicoS = dict(NnormS) - if SYME_CHAR=='SANS': - NnormI = FOND_FISS.INFNORM____NOEU.get() - if NnormI==None : - UTMESS('F','RUPTURE0_20') - NnormI = map(string.rstrip,NnormI) - NnormI = [[LNOFO[i],NnormI[i*20:(i+1)*20]] for i in range(0,Nbfond)] - NnormI = [(i[0],i[1][0:]) for i in NnormI] - dicoI = dict(NnormI) - -# ---------- Dictionnaire des coordonnees ------------- - if RESULTAT : - Ltot = LNOFO - for i in range(Nbf1) : - for k in range(0,20) : - if dicoS[Lnf1[i]][k] !='': Ltot.append(dicoS[Lnf1[i]][k]) - if SYME_CHAR=='SANS': - for i in range(Nbf1) : - for k in range(0,20) : - if dicoI[Lnf1[i]][k] !='': Ltot.append(dicoI[Lnf1[i]][k]) - Ltot=dict([(i,0) for i in Ltot]).keys() - __NCOOR=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds des levres', - NOEUD=Ltot, - RESULTAT=RESULTAT, - NOM_CHAM='DEPL',NUME_ORDRE=1,NOM_CMP=('DX',), - OPERATION='EXTRACTION',),); - tcoor=__NCOOR.EXTR_TABLE() - DETRUIRE(CONCEPT=_F(NOM=__NCOOR),INFO=1) - else : - if SYME_CHAR=='SANS': - __NCOOR=CALC_TABLE(TABLE=TABL_DEPL_SUP, - ACTION=_F(OPERATION = 'COMB',NOM_PARA='NOEUD',TABLE=TABL_DEPL_INF,)) - tcoor=__NCOOR.EXTR_TABLE() - DETRUIRE(CONCEPT=_F(NOM=__NCOOR),INFO=1) - else : - tcoor=TABL_DEPL_SUP.EXTR_TABLE() - nbt = len(tcoor['NOEUD'].values()['NOEUD']) - xs=NP.array(tcoor['COOR_X'].values()['COOR_X'][:nbt]) - ys=NP.array(tcoor['COOR_Y'].values()['COOR_Y'][:nbt]) - if ndim==2 : zs=NP.zeros(nbt) - elif ndim==3 : zs=NP.array(tcoor['COOR_Z'].values()['COOR_Z'][:nbt]) - ns = tcoor['NOEUD'].values()['NOEUD'][:nbt] - ns = map(string.rstrip,ns) - l_coor = [[ns[i],xs[i],ys[i],zs[i]] for i in range(0,nbt)] - l_coor = [(i[0],i[1:]) for i in l_coor] - d_coor = dict(l_coor) - -# ---------- Abscisse curviligne du fond ------------- - absfon = [0,] - for i in range(Nbfond-1) : - Pfon1 = NP.array([d_coor[LNOFO[i]][0],d_coor[LNOFO[i]][1],d_coor[LNOFO[i]][2]]) - Pfon2 = NP.array([d_coor[LNOFO[i+1]][0],d_coor[LNOFO[i+1]][1],d_coor[LNOFO[i+1]][2]]) - absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i] - absfon.append(absf) - dicoF = dict([(LNOFO[i],absfon[i]) for i in range(Nbfond)]) +# Dictionnaires des levres + dicoS = get_dico_levres('sup',FOND_FISS,ndim,Lnoff,Nnoff) + dicoI= {} + if SYME_CHAR=='SANS': + dicoI = get_dico_levres('inf',FOND_FISS,ndim,Lnoff,Nnoff) + +# Dictionnaire des coordonnees + d_coor = get_coor_regle(self,RESULTAT,ndim,Lnoff,Lnocal,dicoS,SYME_CHAR,dicoI,TABL_DEPL_SUP,TABL_DEPL_INF) + +# Abscisse curviligne du fond + dicoF = get_absfon(Lnoff,Nnoff,d_coor) + +# Noeuds LEVRE_SUP et LEVRE_INF + (Lnofon, Lnosup, Lnoinf) = get_noeuds_perp_regle(Lnocal,d_coor,dicoS,dicoI,Lnoff, + PREC_VIS_A_VIS,ABSC_CURV_MAXI,SYME_CHAR,rmprec,precn) + Nbnofo = len(Lnofon) + +# ------------------------------------------------------------------ +# II. CAS X-FEM +# ------------------------------------------------------------------ - -# ---Noeuds LEVRE_SUP et LEVRE_INF: ABSC_CURV_MAXI et PREC_VIS_A_VIS----- - - NBTRLS = 0 - NBTRLI = 0 - Lnosup = [None]*Nbf1 - Lnoinf = [None]*Nbf1 - Nbnofo = 0 - Lnofon = [] - precv = PREC_VIS_A_VIS - if ABSC_CURV_MAXI!=None : rmax = ABSC_CURV_MAXI - else : rmax = 100 - precn = precv * rmax - rmprec= rmax*(1.+precv/10.) - for i in range(0,Nbf1) : - Pfon = NP.array([d_coor[Lnf1[i]][0],d_coor[Lnf1[i]][1],d_coor[Lnf1[i]][2]]) - Tmpsup = [] - Tmpinf = [] - itots = 0 - itoti = 0 - NBTRLS = 0 - NBTRLI = 0 - for k in range(0,20) : - if dicoS[Lnf1[i]][k] !='': - itots = itots +1 - Nsup = dicoS[Lnf1[i]][k] - Psup = NP.array([d_coor[Nsup][0],d_coor[Nsup][1],d_coor[Nsup][2]]) - abss = NP.sqrt(NP.dot(NP.transpose(Pfon-Psup),Pfon-Psup)) - if abssprecn : - UTMESS('A','RUPTURE0_21',valk=Lnf1[i]) - else : - NBTRLI = NBTRLI +1 - Tmpinf.append(dicoI[Lnf1[i]][k]) -# On verifie qu il y a assez de noeuds - if NBTRLS < 3 : - UTMESS('A+','RUPTURE0_22',valk=Lnf1[i]) - if Lnf1[i]==LNOFO[0] or Lnf1[i]==LNOFO[-1]: UTMESS('A+','RUPTURE0_23') - if itots<3 : UTMESS('A','RUPTURE0_24') - else : UTMESS('A','RUPTURE0_25') - elif (SYME_CHAR=='SANS') and (NBTRLI < 3) : - UTMESS('A+','RUPTURE0_26',valk=Lnf1[i]) - if Lnf1[i]==LNOFO[0] or Lnf1[i]==LNOFO[-1]: UTMESS('A+','RUPTURE0_23') - if itoti<3 : UTMESS('A','RUPTURE0_24') - else :UTMESS('A','RUPTURE0_25') -# UTMESS('A','RUPTURE0_23') - else : - Lnosup[Nbnofo] = Tmpsup - if SYME_CHAR=='SANS' : Lnoinf[Nbnofo] = Tmpinf - Lnofon.append(Lnf1[i]) - Nbnofo = Nbnofo+1 - if Nbnofo == 0 : - UTMESS('F','RUPTURE0_30') - -#------------- Cas X-FEM --------------------------------- elif FISSURE : - MAILLAGE = args['MAILLAGE'] - DTAN_ORIG = args['DTAN_ORIG'] - DTAN_EXTR = args['DTAN_EXTR'] - dmax = PREC_VIS_A_VIS * ABSC_CURV_MAXI -#Projection du resultat sur le maillage lineaire initial - iret,ibid,n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT') - n_modele=n_modele.rstrip() - if len(n_modele)==0 : UTMESS('F','RUPTURE0_18') - MODEL = self.get_concept(n_modele) - xcont = MODEL.xfem.XFEM_CONT.get() - if xcont[0] == 0 : - __RESX = RESULTAT -# Si XFEM + contact : il faut reprojeter sur le maillage lineaire - if xcont[0] != 0 : - __MODLINE=AFFE_MODELE(MAILLAGE=MAILLAGE, - AFFE=(_F(TOUT='OUI', - PHENOMENE='MECANIQUE', - MODELISATION=MODELISATION,),),); - __RESX=PROJ_CHAMP(METHODE='ELEM',TYPE_CHAM='NOEU',NOM_CHAM='DEPL', - RESULTAT=RESULTAT, - MODELE_1=MODEL, - MODELE_2=__MODLINE, ); -#Recuperation des coordonnees des points du fond de fissure (x,y,z,absc_curv) - Listfo = FISSURE.FONDFISS.get() - Basefo = FISSURE.BASEFOND.get() - NB_POINT_FOND = args['NB_POINT_FOND'] -#Traitement du cas fond multiple - Fissmult = FISSURE.FONDMULT.get() - Nbfiss = len(Fissmult)/2 - Numfiss = args['NUME_FOND'] - if Numfiss <= Nbfiss and Nbfiss > 1 : - Ptinit = Fissmult[2*(Numfiss-1)] - Ptfin = Fissmult[2*(Numfiss-1)+1] - Listfo2 = Listfo[((Ptinit-1)*4):(Ptfin*4)] - Listfo = Listfo2 - Basefo2 = Basefo[((Ptinit-1)*(2*ndim)):(Ptfin*(2*ndim))] - Basefo = Basefo2 - elif Numfiss > Nbfiss : - UTMESS('F','RUPTURE1_38',vali=[Nbfiss,Numfiss]) -#### - - if NB_POINT_FOND != None and MODELISATION=='3D' : - Nbfond = NB_POINT_FOND - absmax = Listfo[-1] - Coorfo = [None]*4*Nbfond - Vpropa = [None]*3*Nbfond - for i in range(0,Nbfond) : - absci = i*absmax/(Nbfond-1) - Coorfo[(4*i):(4*(i+1))] = InterpolFondFiss(absci, Listfo) - Vpropa[(6*i):(6*(i+1))] = InterpolBaseFiss(absci,Basefo, Listfo) - else : - Coorfo = Listfo - Vpropa = Basefo - Nbfond = len(Coorfo)/4 -# Calcul de la direction de propagation en chaque point du fond - VP = [None]*Nbfond - VN = [None]*Nbfond - absfon = [0,] -# Cas fissure non necessairement plane - if VECT_K1 == None : - i = 0 - if MODELISATION=='3D' : - if DTAN_ORIG != None : - VP[0] = NP.array(DTAN_ORIG) - VP[0] = VP[0]/NP.sqrt(VP[0][0]**2+VP[0][1]**2+VP[0][2]**2) - VN[0] = NP.array([Vpropa[0],Vpropa[1],Vpropa[2]]) - verif = NP.dot(NP.transpose(VP[0]),VN[0]) - if abs(verif) > 0.01: - UTMESS('A','RUPTURE1_33',valr=[VN[0][0],VN[0][1],VN[0][2]]) - else : - VN[0] = NP.array([Vpropa[0],Vpropa[1],Vpropa[2]]) - VP[0] = NP.array([Vpropa[3+0],Vpropa[3+1],Vpropa[3+2]]) - for i in range(1,Nbfond-1): - absf = Coorfo[4*i+3] - absfon.append(absf) - VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) - VP[i] = NP.array([Vpropa[3+6*i],Vpropa[3+6*i+1],Vpropa[3+6*i+2]]) - verif = NP.dot(NP.transpose(VN[i]),VN[i-1]) - if abs(verif) < 0.98: - UTMESS('A','RUPTURE1_35',vali=[i-1,i]) - i = Nbfond-1 - absf = Coorfo[4*i+3] - absfon.append(absf) - if DTAN_EXTR != None : - VP[i] = NP.array(DTAN_EXTR) - VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) - verif = NP.dot(NP.transpose(VP[i]),VN[0]) - if abs(verif) > 0.01: - UTMESS('A','RUPTURE1_34',valr=[VN[i][0],VN[i][1],VN[i][2]]) - else : - VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) - VP[i] = NP.array([Vpropa[3+6*i],Vpropa[3+6*i+1],Vpropa[3+6*i+2]]) - else : - for i in range(0,Nbfond): - VP[i] = NP.array([Vpropa[2+4*i],Vpropa[3+4*i],0.]) - VN[i] = NP.array([Vpropa[0+4*i],Vpropa[1+4*i],0.]) -# Cas fissure plane (VECT_K1 donne) - if VECT_K1 != None : - v1 = NP.array(VECT_K1) - v1 = v1/NP.sqrt(v1[0]**2+v1[1]**2+v1[2]**2) - v1 = NP.array(VECT_K1) - i = 0 - if MODELISATION=='3D' : -# Sens du vecteur VECT_K1 - v1x =NP.array([Vpropa[0],Vpropa[1],Vpropa[2]]) - verif = NP.dot(NP.transpose(v1),v1x) - if verif < 0 : v1 = -v1 - VN = [v1]*Nbfond - if DTAN_ORIG != None : - VP[i] = NP.array(DTAN_ORIG) - VP[i] = VP[i]/NP.sqrt(VP[i][0]**2+VP[i][1]**2+VP[i][2]**2) - verif = NP.dot(NP.transpose(VP[i]),VN[0]) - if abs(verif) > 0.01: - UTMESS('A','RUPTURE1_36') - else : - Pfon2 = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) - Pfon3 = NP.array([Coorfo[4*(i+1)],Coorfo[4*(i+1)+1],Coorfo[4*(i+1)+2]]) - VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2)) - VP[0] = NP.array(cross_product(VT,v1)) - VNi = NP.array([Vpropa[3],Vpropa[4],Vpropa[5]]) - verif = NP.dot(NP.transpose(VP[i]),VNi) - if abs(verif) < 0.99: - vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],] - UTMESS('A','RUPTURE0_32',vali=[i],valr=vv) - for i in range(1,Nbfond-1): - Pfon1 = NP.array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]]) - Pfon2 = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) - Pfon3 = NP.array([Coorfo[4*(i+1)],Coorfo[4*(i+1)+1],Coorfo[4*(i+1)+2]]) - absf = Coorfo[4*i+3] - absfon.append(absf) - VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2)) - VT = VT+(Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1)) - VP[i] = NP.array(cross_product(VT,v1)) - VP[i] = VP[i]/NP.sqrt(NP.dot(NP.transpose(VP[i]),VP[i])) - VNi = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) - verif = NP.dot(NP.transpose(VN[i]),VNi) - if abs(verif) < 0.99: - vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],] - UTMESS('A','RUPTURE0_32',vali=[i],valr=vv) - i = Nbfond-1 - Pfon1 = NP.array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]]) - Pfon2 = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) - absf = Coorfo[4*i+3] - absfon.append(absf) - if DTAN_EXTR != None : - VP[i] = NP.array(DTAN_EXTR) - VP[i] = VP[i]/NP.sqrt(VP[i][0]**2+VP[i][1]**2+VP[i][2]**2) - verif = NP.dot(NP.transpose(VP[i]),VN[i]) - if abs(verif) > 0.01: - UTMESS('A','RUPTURE1_37') - else : - VT = (Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1)) - VP[i] = NP.array(cross_product(VT,v1)) - VNi = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]]) - verif = NP.dot(NP.transpose(VN[i]),VNi) - if abs(verif) < 0.99 : - vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],] - UTMESS('A','RUPTURE0_32',vali=[i],valr=vv) - else : - VT = NP.array([0.,0.,1.]) - for i in range(0,Nbfond): - VP[i] = NP.array(cross_product(v1,VT)) - VN[i] = v1 - VNi = NP.array([Vpropa[0+4*i],Vpropa[1+4*i],0.]) - verif = NP.dot(NP.transpose(VN[i]),VNi) - if abs(verif) < 0.99 : - vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],] - UTMESS('A','RUPTURE0_32',vali=[i],valr=vv) -#Sens de la tangente - if MODELISATION=='3D' : i = Nbfond/2 - else : i = 0 - Po = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) - Porig = Po + ABSC_CURV_MAXI*VP[i] - Pextr = Po - ABSC_CURV_MAXI*VP[i] - __Tabg = MACR_LIGN_COUPE(RESULTAT=__RESX,NOM_CHAM='DEPL', - LIGN_COUPE=_F(NB_POINTS=3,COOR_ORIG=(Porig[0],Porig[1],Porig[2],), - TYPE='SEGMENT',COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]), - DISTANCE_MAX=dmax),); - tmp=__Tabg.EXTR_TABLE() -# a sam - test = getattr(tmp,'H1X').values() -# test = getattr(tmp,'E1X').values() - if test==[None]*3 : - UTMESS('F','RUPTURE0_33') - if test[0]!=None : - sens = 1 - else : - sens = -1 - DETRUIRE(CONCEPT=_F(NOM=__Tabg),INFO=1) -# Extraction des sauts sur la fissure - NB_NOEUD_COUPE = args['NB_NOEUD_COUPE'] - if NB_NOEUD_COUPE < 3 : - UTMESS('A','RUPTURE0_34') - NB_NOEUD_COUPE = 5 - mcfact=[] - for i in range(Nbfond): - Porig = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]]) - if i==0 and DTAN_ORIG!=None : Pextr = Porig - ABSC_CURV_MAXI*VP[i] - elif i==(Nbfond-1) and DTAN_EXTR!=None : Pextr = Porig - ABSC_CURV_MAXI*VP[i] - else : Pextr = Porig + ABSC_CURV_MAXI*VP[i]*sens - mcfact.append(_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],), - TYPE='SEGMENT',COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]), - DISTANCE_MAX=dmax),) - TSo = MACR_LIGN_COUPE(RESULTAT=__RESX,NOM_CHAM='DEPL', - LIGN_COUPE=mcfact); - - TTSo = TSo.EXTR_TABLE() - DETRUIRE(CONCEPT=_F(NOM=TSo),INFO=1) - Nbnofo = Nbfond - if xcont[0] != 0 : - DETRUIRE(CONCEPT=_F(NOM=__MODLINE),INFO=1) - DETRUIRE(CONCEPT=_F(NOM=__RESX),INFO=1) + + if RESULTAT : + iret,ibid,nom_ma = aster.dismoi('F','NOM_MAILLA',RESULTAT.nom,'RESULTAT') + MAILLAGE = self.get_concept(nom_ma.strip()) + else: + MAILLAGE = args['MAILLAGE'] + + DTAN_ORIG = args['DTAN_ORIG'] + DTAN_EXTR = args['DTAN_EXTR'] + dmax = PREC_VIS_A_VIS * ABSC_CURV_MAXI + + (xcont,MODEL) = verif_resxfem(self,RESULTAT) + # incohérence entre le modèle et X-FEM + if not xcont : + UTMESS('F','RUPTURE0_4') + +# Recuperation du resultat + __RESX = get_resxfem(self,xcont,RESULTAT,MODELISATION,MODEL) + +# Recuperation des coordonnees des points du fond de fissure (x,y,z,absc_curv) + (Coorfo, Vpropa, Nnoff) = get_coor_xfem(args,FISSURE,ndim) + +# Calcul de la direction de propagation en chaque point du fond + (VP,VN,absfon) = get_direction_xfem(Nnoff,Vpropa,Coorfo,VECT_K1,DTAN_ORIG,DTAN_EXTR,ndim) + +# Sens de la tangente + sens = get_sens_tangente_xfem(self,ndim,Nnoff,Coorfo,VP,ABSC_CURV_MAXI,__RESX,dmax) + +# Extraction des sauts sur la fissure + NB_NOEUD_COUPE = args['NB_NOEUD_COUPE'] + TTSo = get_sauts_xfem(self,Nnoff,Coorfo,VP,sens, + DTAN_ORIG,DTAN_EXTR,ABSC_CURV_MAXI,NB_NOEUD_COUPE,dmax,__RESX) + + Lnofon = [] + Nbnofo = Nnoff + +# menage du resultat projete si contact + if xcont[0] != 0 : + DETRUIRE(CONCEPT=_F(NOM=__RESX),INFO=1) - if INFO==2 : - mcfact=[] - mcfact.append(_F(PARA='PT_FOND',LISTE_I=range(Nbfond))) - mcfact.append(_F(PARA='VN_X' ,LISTE_R=[VN[i][0] for i in range(Nbfond)])) - mcfact.append(_F(PARA='VN_Y' ,LISTE_R=[VN[i][1] for i in range(Nbfond)])) - mcfact.append(_F(PARA='VN_Z' ,LISTE_R=[VN[i][2] for i in range(Nbfond)])) - mcfact.append(_F(PARA='VP_X' ,LISTE_R=[VP[i][0] for i in range(Nbfond)])) - mcfact.append(_F(PARA='VP_Y' ,LISTE_R=[VP[i][1] for i in range(Nbfond)])) - mcfact.append(_F(PARA='VP_Z' ,LISTE_R=[VP[i][2] for i in range(Nbfond)])) - __resu2=CREA_TABLE(LISTE=mcfact,TITRE=' VECTEUR NORMAL A LA FISSURE - DIRECTION DE PROPAGATION') - aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__()) - DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1) + affiche_xfem(self,INFO,Nnoff,VN,VP) + +# ------------------------------------------------------------------ +# III. CAS BATARD +# ------------------------------------------------------------------ else : - Nbnofo = 1 - -# ----------Recuperation de la temperature au fond ------------- + + Nbnofo = 1 + Lnofon=[] + + # a suprrimer qd menage + Nnoff = 1 + + # creation des objets vides s'ils n'existent pas + # de maniere a pouvoir les passer en argument des fonctions + # c'est pas terrible : il faudrait harmoniser les noms entre les différents cas + if '__TlibS' not in locals() : __TlibS = [] + if '__TlibI' not in locals() : __TlibI = [] + if 'Lnosup' not in locals() : Lnosup = [] + if 'Lnoinf' not in locals() : Lnoinf = [] + if 'TTSo' not in locals() : TTSo = [] + if 'VP' not in locals() : VP = [] + if 'VN' not in locals() : VN = [] + if 'dicoF' not in locals() : dicoF = [] + if 'absfon' not in locals() : absfon = [] + if 'd_coor' not in locals() : d_coor = [] + + +# ------------------------------------------------------------------ +# IV. RECUPERATION DE LA TEMPERATURE AU FOND +# ------------------------------------------------------------------ + if Tempe3D : Rth = self.get_concept(resuth) + __TEMP=POST_RELEVE_T(ACTION=_F(INTITULE='Temperature fond de fissure', - NOEUD=Lnofon,TOUT_CMP='OUI', - RESULTAT=Rth,NOM_CHAM='TEMP',TOUT_ORDRE='OUI', - OPERATION='EXTRACTION',),); + NOEUD=Lnofon, + TOUT_CMP='OUI', + RESULTAT=Rth, + NOM_CHAM='TEMP', + TOUT_ORDRE='OUI', + OPERATION='EXTRACTION',),); + tabtemp=__TEMP.EXTR_TABLE() DETRUIRE(CONCEPT=_F(NOM=__TEMP),INFO=1) +# ------------------------------------------------------------------ +# V. BOUCLE SUR NOEUDS DU FOND +# ------------------------------------------------------------------ -# ------------------------------------------------------------------ -# BOUCLE SUR NOEUDS DU FOND -# ------------------------------------------------------------------ for ino in range(0,Nbnofo) : - if FOND_FISS and INFO==2 : - texte="\n\n--> TRAITEMENT DU NOEUD DU FOND DE FISSURE: %s"%Lnofon[ino] - aster.affiche('MESSAGE',texte) - if FISSURE and INFO==2 : - texte="\n\n--> TRAITEMENT DU POINT DU FOND DE FISSURE NUMERO %s"%(ino+1) - aster.affiche('MESSAGE',texte) -# ------------------------------------------------------------------ -# TABLE 'DEPSUP' -# ------------------------------------------------------------------ - if FOND_FISS : - if TYPE_MAILLAGE =='LIBRE': - tabsup=TlibS[ino].EXTR_TABLE() - DETRUIRE(CONCEPT=_F(NOM=TlibS[ino]),INFO=1) - elif RESULTAT : - if MODELISATION=='AXIS' or MODELISATION=='C_PLAN' or MODELISATION=='D_PLAN': - __TSUP=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement SUP', - NOEUD=Lnosup[ino], - RESULTAT=RESULTAT, - NOM_CHAM='DEPL', - TOUT_ORDRE='OUI', - NOM_CMP=('DX','DY',), - OPERATION='EXTRACTION',),); - else : - __TSUP=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement SUP', - NOEUD=Lnosup[ino], - RESULTAT=RESULTAT, - NOM_CHAM='DEPL', - TOUT_ORDRE='OUI', - NOM_CMP=('DX','DY','DZ',), - OPERATION='EXTRACTION',),); - tabsup=__TSUP.EXTR_TABLE() - DETRUIRE(CONCEPT=_F(NOM=__TSUP),INFO=1) - else : - tabsup=TABL_DEPL_SUP.EXTR_TABLE() - veri_tab(tabsup,TABL_DEPL_SUP.nom,ndim) - Ls = [string.ljust(Lnosup[ino][i],8) for i in range(len(Lnosup[ino]))] - tabsup=tabsup.NOEUD==Ls - elif FISSURE : - tabsup = TTSo.INTITULE=='l.coupe%i'%(ino+1) - else : - tabsup=TABL_DEPL_SUP.EXTR_TABLE() - veri_tab(tabsup,TABL_DEPL_SUP.nom,ndim) + + affiche_traitement(FOND_FISS,INFO,FISSURE,Lnofon,ino) -# ------------------------------------------------------------------ -# TABLE 'DEPINF' -# ------------------------------------------------------------------ - if SYME_CHAR=='SANS' and not FISSURE : - if FOND_FISS : - if TYPE_MAILLAGE =='LIBRE': - tabinf=TlibI[ino].EXTR_TABLE() - DETRUIRE(CONCEPT=_F(NOM=TlibI[ino]),INFO=1) - elif RESULTAT : - if MODELISATION=='AXIS' or MODELISATION=='C_PLAN' or MODELISATION=='D_PLAN': - __TINF=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement INF', - NOEUD=Lnoinf[ino], - RESULTAT=RESULTAT, - NOM_CHAM='DEPL', - TOUT_ORDRE='OUI', - NOM_CMP=('DX','DY'), - OPERATION='EXTRACTION',),); - else : - __TINF=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement INF', - NOEUD=Lnoinf[ino], - RESULTAT=RESULTAT, - NOM_CHAM='DEPL', - TOUT_ORDRE='OUI', - NOM_CMP=('DX','DY','DZ',), - OPERATION='EXTRACTION',),); - tabinf=__TINF.EXTR_TABLE() - DETRUIRE(CONCEPT=_F(NOM=__TINF),INFO=1) - else : - tabinf=TABL_DEPL_INF.EXTR_TABLE() - if TABL_DEPL_INF==None : UTMESS('F','RUPTURE0_35') - veri_tab(tabinf,TABL_DEPL_INF.nom,ndim) - Li = [string.ljust(Lnoinf[ino][i],8) for i in range(len(Lnoinf[ino]))] - tabinf=tabinf.NOEUD==Li - else : - if TABL_DEPL_INF==None : UTMESS('F','RUPTURE0_35') - tabinf=TABL_DEPL_INF.EXTR_TABLE() - veri_tab(tabinf,TABL_DEPL_INF.nom,ndim) +# table 'depsup' et 'depinf' + tabsup = get_tab(self,'sup',ino,__TlibS,Lnosup,TTSo, + FOND_FISS,FISSURE,TYPE_MAILLAGE,RESULTAT,SYME_CHAR,TABL_DEPL_SUP,ndim) + tabinf = get_tab(self,'inf',ino,__TlibI,Lnoinf,TTSo, + FOND_FISS,FISSURE,TYPE_MAILLAGE,RESULTAT,SYME_CHAR,TABL_DEPL_INF,ndim) +# les instants de post-traitement : creation de l_inst + (l_inst,PRECISION,CRITERE) = get_liste_inst(tabsup,args,LIST_ORDRE,NUME_ORDRE,INST,LIST_INST,EnumTypes) -# ------------------------------------------------------------------ -# LES INSTANTS DE POST-TRAITEMENT -# ------------------------------------------------------------------ - if 'INST' in tabsup.para : - l_inst=None - l_inst_tab=tabsup['INST'].values()['INST'] - l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys() #elimine les doublons - l_inst_tab.sort() - if LIST_ORDRE !=None or NUME_ORDRE !=None : - l_ord_tab = tabsup['NUME_ORDRE'].values()['NUME_ORDRE'] - l_ord_tab.sort() - l_ord_tab=dict([(i,0) for i in l_ord_tab]).keys() - d_ord_tab= [[l_ord_tab[i],l_inst_tab[i]] for i in range(0,len(l_ord_tab))] - d_ord_tab= [(i[0],i[1]) for i in d_ord_tab] - d_ord_tab = dict(d_ord_tab) - if NUME_ORDRE !=None : - if type(NUME_ORDRE) not in EnumTypes : NUME_ORDRE=(NUME_ORDRE,) - l_ord=list(NUME_ORDRE) - elif LIST_ORDRE !=None : - l_ord = LIST_ORDRE.VALE.get() - l_inst = [] - for ord in l_ord : - if ord in l_ord_tab : l_inst.append(d_ord_tab[ord]) - else : - UTMESS('F','RUPTURE0_37',vali=ord) - PRECISION = 1.E-6 - CRITERE='ABSOLU' - elif INST !=None or LIST_INST !=None : - CRITERE = args['CRITERE'] - PRECISION = args['PRECISION'] - if INST !=None : - if type(INST) not in EnumTypes : INST=(INST,) - l_inst=list(INST) - elif LIST_INST !=None : l_inst=LIST_INST.Valeurs() - for inst in l_inst : - if CRITERE=='RELATIF' and inst!=0.: match=[x for x in l_inst_tab if abs((inst-x)/inst)=2 : - UTMESS('F','RUPTURE0_39',valr=inst) - else : - l_inst=l_inst_tab - PRECISION = 1.E-6 - CRITERE='ABSOLU' - else : - l_inst = [None,] - -# ------------------------------------------------------------------ +# ------------------------------------------------------------------ # BOUCLE SUR LES INSTANTS -# ------------------------------------------------------------------ - for iord in range(len(l_inst)) : - inst=l_inst[iord] - if INFO==2 and inst!=None: - texte="#=================================================================================\n" - texte=texte+"==> INSTANT: %f"%inst - aster.affiche('MESSAGE',texte) - if inst!=None: - if PRECISION == None : PRECISION = 1.E-6 - if CRITERE == None : CRITERE='ABSOLU' - if inst==0. : - tabsupi=tabsup.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION) - if SYME_CHAR=='SANS'and not FISSURE: tabinfi=tabinf.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION) - else : - tabsupi=tabsup.INST.__eq__(VALE=inst,CRITERE=CRITERE,PRECISION=PRECISION) - if SYME_CHAR=='SANS' and not FISSURE: tabinfi=tabinf.INST.__eq__(VALE=inst,CRITERE=CRITERE,PRECISION=PRECISION) - else : - tabsupi=tabsup - if SYME_CHAR=='SANS' and not FISSURE : tabinfi=tabinf - -# --- LEVRE SUP : "ABSC_CURV" CROISSANTES, < RMAX ET DEP --- - abscs = getattr(tabsupi,'ABSC_CURV').values() - if not FISSURE : - if not FOND_FISS : - refs=copy.copy(abscs) - refs.sort() - if refs!=abscs : - mctabl='TABL_DEPL_INF' - UTMESS('F','RUPTURE0_40',valk=mctabl) - if ABSC_CURV_MAXI!=None : rmax = ABSC_CURV_MAXI - else : rmax = abscs[-1] - precv = PREC_VIS_A_VIS - rmprec= rmax*(1.+precv/10.) - refsc=[x for x in refs if x= 3 : +# +# récupération de la matrice de changement de repère +# (je ne comprends pas pourquoi elle dépend de l'instant) + pgl = get_pgl(SYME_CHAR,FISSURE,VECT_K1,ino,VP,VN,tabsupi,tabinfi,nbval,ndim) + +# calcul du saut de déplacements dans le nouveau repère + saut = get_saut(self,pgl,ds,di,INFO,FISSURE,SYME_CHAR,abscs,ndim) + +# CALCUL DES K1, K2, K3 + (isig,kgsig,saut2) = get_kgsig(saut,nbval,coefd,coefd3) - if FOND_FISS and INFO==2 and iord==0 and not TYPE_MAILLAGE =='LIBRE': - for ks in range(0,nbval) : - texte="NOEUD RETENU POUR LA LEVRE SUP: %s %f"%(Lnosup[ino][ks],abscs[ks]) - aster.affiche('MESSAGE',texte) - dxs=NP.array(tabsupi['DX'].values()['DX'][:nbval]) - dys=NP.array(tabsupi['DY'].values()['DY'][:nbval]) - if ndim==2 : dzs=NP.zeros(nbval) - elif ndim==3 : dzs=NP.array(tabsupi['DZ'].values()['DZ'][:nbval]) - -# --- LEVRE INF : "ABSC_CURV" CROISSANTES et < RMAX --- - if SYME_CHAR=='SANS' and not FISSURE : - absci = getattr(tabinfi,'ABSC_CURV').values() - if not FOND_FISS : - refi=copy.copy(absci) - refi.sort() - if refi!=absci : - mctabl='TABL_DEPL_SUP' - UTMESS('F','RUPTURE0_40',valk=mctabl) - refic=[x for x in refi if xprecn : UTMESS('F','RUPTURE0_44') - - if FOND_FISS and not RESULTAT :#tri des noeuds avec abscisse - Pfon = NP.array([d_coor[Lnofon[ino]][0],d_coor[Lnofon[ino]][1],d_coor[Lnofon[ino]][2]]) - absci = NP.sqrt((coxi-Pfon[0])**2+(coyi-Pfon[1])**2+(cozi-Pfon[2])**2) - tabinfi['Abs_fo'] = absci - tabinfi.sort('Abs_fo') - absci = getattr(tabinfi,'Abs_fo').values() - absci=NP.array(abscs[:nbval]) - coxi=NP.array(tabinfi['COOR_X'].values()['COOR_X'][:nbval]) - coyi=NP.array(tabinfi['COOR_Y'].values()['COOR_Y'][:nbval]) - if ndim==2 : cozi=NP.zeros(nbval) - elif ndim==3 : cozi=NP.array(tabinfi['COOR_Z'].values()['COOR_Z'][:nbval]) +# calcul des K et de G par les methodes 1, 2 et 3 + kg1 = get_meth1(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim) + kg2 = get_meth2(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim) + kg3 = get_meth3(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim) - dxi=NP.array(tabinfi['DX'].values()['DX'][:nbval]) - dyi=NP.array(tabinfi['DY'].values()['DY'][:nbval]) - if ndim==2 : dzi=NP.zeros(nbval) - elif ndim==3 : dzi=NP.array(tabinfi['DZ'].values()['DZ'][:nbval]) - - if FOND_FISS and INFO==2 and iord==0 and not TYPE_MAILLAGE =='LIBRE': - for ki in range(0,nbval) : - texte="NOEUD RETENU POUR LA LEVRE INF: %s %f"%(Lnoinf[ino][ki],absci[ki]) - aster.affiche('MESSAGE',texte) - -# --- CAS FISSURE X-FEM --- - if FISSURE : - H1 = getattr(tabsupi,'H1X').values() - nbval = len(H1) - H1 = complete(H1) - E1 = getattr(tabsupi,'E1X').values() - E1 = complete(E1) - dxs = 2*(H1 + NP.sqrt(abscs)*E1) - H1 = getattr(tabsupi,'H1Y').values() - E1 = getattr(tabsupi,'E1Y').values() - H1 = complete(H1) - E1 = complete(E1) - dys = 2*(H1 + NP.sqrt(abscs)*E1) - H1 = getattr(tabsupi,'H1Z').values() - E1 = getattr(tabsupi,'E1Z').values() - H1 = complete(H1) - E1 = complete(E1) - dzs = 2*(H1 + NP.sqrt(abscs)*E1) - abscs=NP.array(abscs[:nbval]) - -# ---------- CALCUL PROP. MATERIAU AVEC TEMPERATURE ----------- - if Tempe3D : - tempeno=tabtemp.NOEUD==Lnofon[ino] - tempeno=tempeno.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION) - nompar = ('TEMP',) - valpar = (tempeno.TEMP.values()[0],) - nomres=['E','NU'] - valres,codret = MATER.RCVALE('ELAS',nompar,valpar,nomres,'F') - e = valres[0] - nu = valres[1] - coefd = e * NP.sqrt(2.*pi) / ( 8.0 * (1. - nu**2)) - coefd3 = e*NP.sqrt(2*pi) / ( 8.0 * (1. + nu)) - coefg = (1. - nu**2) / e - coefg3 = (1. + nu) / e - -# --- TESTS NOMBRE DE NOEUDS--- - if nbval<3 : - UTMESS('A+','RUPTURE0_46') - if FOND_FISS : - UTMESS('A+','RUPTURE0_47',valk=Lnofon[ino]) - if FISSURE : - UTMESS('A+','RUPTURE0_99',vali=ino) - UTMESS('A','RUPTURE0_25') - kg1 = [0.]*8 - kg2 =[0.]*8 - kg3 =[0.]*8 - - else : -# SI NBVAL >= 3 : +# creation de la table + kg=NP.array([kg1,kg2,kg3]) + kg=NP.transpose(kg) -# ------------------------------------------------------------------ -# CHANGEMENT DE REPERE -# ------------------------------------------------------------------ -# -# 1 : VECTEUR NORMAL AU PLAN DE LA FISSURE -# ORIENTE LEVRE INFERIEURE VERS LEVRE SUPERIEURE -# 2 : VECTEUR NORMAL AU FOND DE FISSURE EN M -# 3 : VECTEUR TANGENT AU FOND DE FISSURE EN M -# - if FISSURE : - v2 = VP[ino] - v1 = VN[ino] - elif SYME_CHAR=='SANS' : - vo = NP.array([( coxs[-1]+coxi[-1] )/2.,( coys[-1]+coyi[-1] )/2.,( cozs[-1]+cozi[-1] )/2.]) - ve = NP.array([( coxs[0 ]+coxi[0 ] )/2.,( coys[0 ]+coyi[0 ] )/2.,( cozs[0 ]+cozi[0 ] )/2.]) - v2 = ve-vo - else : - vo = NP.array([ coxs[-1], coys[-1], cozs[-1]]) - ve = NP.array([ coxs[0], coys[0], cozs[0]]) - v2 = ve-vo - if not FISSURE : v1 = NP.array(VECT_K1) - v2 = v2/NP.sqrt(v2[0]**2+v2[1]**2+v2[2]**2) - v1p = sum(v2*v1) - if SYME_CHAR=='SANS' : v1 = v1-v1p*v2 - else : v2 = v2-v1p*v1 - v1 = v1/NP.sqrt(v1[0]**2+v1[1]**2+v1[2]**2) - v2 = v2/NP.sqrt(v2[0]**2+v2[1]**2+v2[2]**2) - v3 = NP.array([v1[1]*v2[2]-v2[1]*v1[2],v1[2]*v2[0]-v2[2]*v1[0],v1[0]*v2[1]-v2[0]*v1[1]]) - pgl = NP.asarray([v1,v2,v3]) - dpls = NP.asarray([dxs,dys,dzs]) - dpls = NP.dot(pgl,dpls) - if SYME_CHAR!='SANS' and abs(dpls[0][0]) > 1.e-10 : - UTMESS('A','RUPTURE0_49',valk=[Lnofon[ino],SYME_CHAR]) - if FISSURE : - saut=dpls - elif SYME_CHAR=='SANS' : - dpli = NP.asarray([dxi,dyi,dzi]) - dpli = NP.dot(pgl,dpli) - saut=(dpls-dpli) - else : - dpli = [NP.multiply(dpls[0],-1.),dpls[1],dpls[2]] - saut=(dpls-dpli) - if INFO==2 : - mcfact=[] - mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=abscs.tolist() )) - if not FISSURE : - mcfact.append(_F(PARA='DEPL_SUP_1',LISTE_R=dpls[0].tolist() )) - mcfact.append(_F(PARA='DEPL_INF_1',LISTE_R=dpli[0].tolist() )) - mcfact.append(_F(PARA='SAUT_1' ,LISTE_R=saut[0].tolist() )) - if not FISSURE : - mcfact.append(_F(PARA='DEPL_SUP_2',LISTE_R=dpls[1].tolist() )) - mcfact.append(_F(PARA='DEPL_INF_2',LISTE_R=dpli[1].tolist() )) - mcfact.append(_F(PARA='SAUT_2' ,LISTE_R=saut[1].tolist() )) - if ndim==3 : - if not FISSURE : - mcfact.append(_F(PARA='DEPL_SUP_3',LISTE_R=dpls[2].tolist() )) - mcfact.append(_F(PARA='DEPL_INF_3',LISTE_R=dpli[2].tolist() )) - mcfact.append(_F(PARA='SAUT_3' ,LISTE_R=saut[2].tolist() )) - __resu0=CREA_TABLE(LISTE=mcfact,TITRE='--> SAUTS') - aster.affiche('MESSAGE',__resu0.EXTR_TABLE().__repr__()) - DETRUIRE(CONCEPT=_F(NOM=__resu0),INFO=1) -# ------------------------------------------------------------------ -# CALCUL DES K1, K2, K3 -# ------------------------------------------------------------------ - isig=NP.sign(NP.transpose(NP.resize(saut[:,-1],(nbval-1,3)))) - isig=NP.sign(isig+0.001) - saut=saut*NP.array([[coefd]*nbval,[coefd]*nbval,[coefd3]*nbval]) - saut=saut**2 - ksig = isig[:,1] - ksig = NP.array([ksig,ksig]) - ksig = NP.transpose(ksig) - kgsig=NP.resize(ksig,(1,6))[0] -# ------------------------------------------------------------------ -# --- METHODE 1 --- -# ------------------------------------------------------------------ - nabs = len(abscs) - x1 = abscs[1:-1] - x2 = abscs[2:nabs] - y1 = saut[:,1:-1]/x1 - y2 = saut[:,2:nabs]/x2 - k = abs(y1-x1*(y2-y1)/(x2-x1)) - g = coefg*(k[0]+k[1])+coefg3*k[2] - kg1 = [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])] - kg1 = NP.sqrt(kg1)*kgsig - kg1=NP.concatenate([kg1,[max(g),min(g)]]) - vk = NP.sqrt(k)*isig[:,:-1] - if INFO==2 : - mcfact=[] - mcfact.append(_F(PARA='ABSC_CURV_1' ,LISTE_R=x1.tolist() )) - mcfact.append(_F(PARA='ABSC_CURV_2' ,LISTE_R=x2.tolist() )) - mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0].tolist() )) - mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1].tolist() )) - if ndim==3 : - mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2].tolist() )) - mcfact.append(_F(PARA='G' ,LISTE_R=g.tolist() )) - __resu1=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 1') - aster.affiche('MESSAGE',__resu1.EXTR_TABLE().__repr__()) - DETRUIRE(CONCEPT=_F(NOM=__resu1),INFO=1) -# ------------------------------------------------------------------ -# --- METHODE 2 --- -# ------------------------------------------------------------------ - nabs = len(abscs) - x1 = abscs[1:nabs] - y1 = saut[:,1:nabs] - k = abs(y1/x1) - g = coefg*(k[0]+k[1])+coefg3*k[2] - kg2= [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])] - kg2 = NP.sqrt(kg2)*kgsig - kg2=NP.concatenate([kg2,[max(g),min(g)]]) - vk = NP.sqrt(k)*isig - if INFO==2 : - mcfact=[] - mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=x1.tolist() )) - mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0].tolist() )) - mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1].tolist() )) - if ndim==3 : - mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2].tolist() )) - mcfact.append(_F(PARA='G' ,LISTE_R=g.tolist() )) - __resu2=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 2') - aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__()) - DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1) -# ------------------------------------------------------------------ -# --- METHODE 3 --- -# ------------------------------------------------------------------ - nabs = len(abscs) - x1 = abscs[:-1] - x2 = abscs[1:nabs] - y1 = saut[:,:-1] - y2 = saut[:,1:nabs] - k = (NP.sqrt(y2)*NP.sqrt(x2)+NP.sqrt(y1)*NP.sqrt(x1))*(x2-x1) - k = NP.sum(NP.transpose(k), axis=0) - de = abscs[-1] - vk = (k/de**2)*isig[:,0] - g = coefg*(vk[0]**2+vk[1]**2)+coefg3*vk[2]**2 - kg3=NP.concatenate([[vk[0]]*2,[vk[1]]*2,[vk[2]]*2,[g]*2]) - if INFO==2 : - mcfact=[] - mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0] )) - mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1] )) - if ndim==3 : - mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2] )) - mcfact.append(_F(PARA='G' ,LISTE_R=g )) - __resu3=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 3') - aster.affiche('MESSAGE',__resu3.EXTR_TABLE().__repr__()) - DETRUIRE(CONCEPT=_F(NOM=__resu3),INFO=1) -# ------------------------------------------------------------------ -# CREATION DE LA TABLE -# ------------------------------------------------------------------ - kg=NP.array([kg1,kg2,kg3]) - kg=NP.transpose(kg) - mcfact=[] - if TITRE != None : - titre = TITRE - else : - v = aster.__version__ - titre = 'ASTER %s - CONCEPT CALCULE PAR POST_K1_K2_K3 LE &DATE A &HEURE \n'%v - if FOND_FISS and MODELISATION=='3D': - mcfact.append(_F(PARA='NOEUD_FOND',LISTE_K=[Lnofon[ino],]*3)) - mcfact.append(_F(PARA='ABSC_CURV',LISTE_R=[dicoF[Lnofon[ino]]]*3)) - if FISSURE and MODELISATION=='3D': - mcfact.append(_F(PARA='PT_FOND',LISTE_I=[ino+1,]*3)) - mcfact.append(_F(PARA='ABSC_CURV',LISTE_R=[absfon[ino],]*3)) - if FISSURE and MODELISATION!='3D' and Nbfond!=1 : - mcfact.append(_F(PARA='PT_FOND',LISTE_I=[ino+1,]*3)) - mcfact.append(_F(PARA='METHODE',LISTE_I=(1,2,3))) - mcfact.append(_F(PARA='K1_MAX' ,LISTE_R=kg[0].tolist() )) - mcfact.append(_F(PARA='K1_MIN' ,LISTE_R=kg[1].tolist() )) - mcfact.append(_F(PARA='K2_MAX' ,LISTE_R=kg[2].tolist() )) - mcfact.append(_F(PARA='K2_MIN' ,LISTE_R=kg[3].tolist() )) - if ndim==3 : - mcfact.append(_F(PARA='K3_MAX' ,LISTE_R=kg[4].tolist() )) - mcfact.append(_F(PARA='K3_MIN' ,LISTE_R=kg[5].tolist() )) - mcfact.append(_F(PARA='G_MAX' ,LISTE_R=kg[6].tolist() )) - mcfact.append(_F(PARA='G_MIN' ,LISTE_R=kg[7].tolist() )) - if (ino==0 and iord==0) and inst==None : - tabout=CREA_TABLE(LISTE=mcfact,TITRE = titre) - elif iord==0 and ino==0 and inst!=None : - mcfact=[_F(PARA='INST' ,LISTE_R=[inst,]*3 )]+mcfact - tabout=CREA_TABLE(LISTE=mcfact,TITRE = titre) - else : - if inst!=None : mcfact=[_F(PARA='INST' ,LISTE_R=[inst,]*3 )]+mcfact - __tabi=CREA_TABLE(LISTE=mcfact,) - npara = ['K1_MAX','METHODE'] - if inst!=None : npara.append('INST') - if FOND_FISS and MODELISATION=='3D' : npara.append('NOEUD_FOND') - tabout=CALC_TABLE(reuse=tabout,TABLE=tabout,TITRE = titre, - ACTION=_F(OPERATION = 'COMB',NOM_PARA=npara,TABLE=__tabi,)) - -# Tri de la table - if len(l_inst)!=1 and MODELISATION=='3D': - tabout=CALC_TABLE(reuse=tabout,TABLE=tabout, - ACTION=_F(OPERATION = 'TRI',NOM_PARA=('INST','ABSC_CURV','METHODE'),ORDRE='CROISSANT')) + tabout = get_tabout(self,kg,TITRE,FOND_FISS,MODELISATION,FISSURE,ndim,ino,inst,iord, + Lnofon,dicoF,absfon,Nnoff,tabout) + +# Fin de la boucle sur les instants + +# Fin de la boucle sur les noeuds du fond de fissure + +# Tri de la table si nécessaire + if len(l_inst)!=1 and ndim == 3 : + tabout=CALC_TABLE(reuse=tabout, + TABLE=tabout, + ACTION=_F(OPERATION = 'TRI', + NOM_PARA=('INST','ABSC_CURV'), + ORDRE='CROISSANT')) return ier diff --git a/Aster/Cata/cataSTA10/Macro/post_k_trans_ops.py b/Aster/Cata/cataSTA10/Macro/post_k_trans_ops.py index d0a3b890..3fbdf989 100644 --- a/Aster/Cata/cataSTA10/Macro/post_k_trans_ops.py +++ b/Aster/Cata/cataSTA10/Macro/post_k_trans_ops.py @@ -1,8 +1,8 @@ -#@ MODIF post_k_trans_ops Macro DATE 07/10/2008 AUTEUR PELLET J.PELLET +#@ MODIF post_k_trans_ops Macro DATE 25/01/2011 AUTEUR MACOCCO K.MACOCCO # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -186,9 +186,9 @@ def post_k_trans_ops(self,RESU_TRANS,K_MODAL,TOUT_ORDRE, NUME_ORDRE, LIST_ORDRE, if F3D : K3mod = [None]*n_mode*nbno K3t = [None]*nbarch*nbno - k1 = 'K1_LOCAL' - k2 = 'K2_LOCAL' - k3 = 'K3_LOCAL' + k1 = 'K1' + k2 = 'K2' + k3 = 'K3' else : k1 = 'K1' k2 = 'K2' diff --git a/Aster/Cata/cataSTA10/Macro/post_miss_ops.py b/Aster/Cata/cataSTA10/Macro/post_miss_ops.py new file mode 100644 index 00000000..ee4aac36 --- /dev/null +++ b/Aster/Cata/cataSTA10/Macro/post_miss_ops.py @@ -0,0 +1,52 @@ +#@ MODIF post_miss_ops Macro DATE 01/03/2011 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +import sys +import os +import traceback + + +def post_miss_ops(self, **kwargs): + """Macro POST_MISS : + Post-traitement d'un calcul MISS3D + """ + import aster + from Utilitai.Utmess import UTMESS + from Miss.miss_post import PostMissFactory + + ier = 0 + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + # création de l'objet POST_MISS_xxx + post = PostMissFactory(kwargs['OPTION'], self, kwargs) + + try: + post.argument() + post.execute() + post.sortie() + except aster.error, err: + UTMESS('F', err.id_message, valk=err.valk, vali=err.vali, valr=err.valr) + except Exception, err: + trace = ''.join(traceback.format_tb(sys.exc_traceback)) + UTMESS('F', 'SUPERVIS2_5', valk=('POST_MISS', trace, str(err))) + + diff --git a/Aster/Cata/cataSTA10/Macro/propa_fiss_ops.py b/Aster/Cata/cataSTA10/Macro/propa_fiss_ops.py index 6dbe737b..34943b92 100644 --- a/Aster/Cata/cataSTA10/Macro/propa_fiss_ops.py +++ b/Aster/Cata/cataSTA10/Macro/propa_fiss_ops.py @@ -1,8 +1,8 @@ -#@ MODIF propa_fiss_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF propa_fiss_ops Macro DATE 08/03/2011 AUTEUR MASSIN P.MASSIN # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -18,9 +18,11 @@ # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -from math import atan, atan2, cos, sin, sqrt +from math import atan, atan2, cos, sin, log import numpy as NP +from Accas import _F +from types import ListType, TupleType def InterpolationLineaire(x0, points) : @@ -100,16 +102,61 @@ def betaf(k1,k2) : if k2 == 0: beta = 0. else : - beta = 2*atan(0.25*(k1/k2-abs(k2)/k2*sqrt((k1/k2)**2+8))) + beta = 2*atan(0.25*(k1/k2-abs(k2)/k2*NP.sqrt((k1/k2)**2+8))) return beta -#TODO prefer use numpy.cross -def cross_product(a,b): - cross = [0]*3 - cross[0] = a[1]*b[2]-a[2]*b[1] - cross[1] = a[2]*b[0]-a[0]*b[2] - cross[2] = a[0]*b[1]-a[1]*b[0] - return cross +def recup_Elas(LOI): + from SD.sd_mater import sd_compor1 + if LOI == None : + UTMESS('F','RUPTURE1_50') + dLoi=LOI[0].cree_dict_valeurs(LOI[0].mc_liste) + mat = dLoi['MATER'] + matph = mat.NOMRC.get() + phenom=None + for cmpt in matph : + if cmpt[:4]=='ELAS' : + phenom=cmpt + break + if phenom==None : UTMESS('F','RUPTURE0_5') + compor = sd_compor1('%-8s.%s' % (mat.nom, phenom)) + valk = [s.strip() for s in compor.VALK.get()] + valr = compor.VALR.get() + dicmat=dict(zip(valk,valr)) + if dicmat.has_key('TEMP_DEF') : + nompar = ('TEMP',) + valpar = (dicmat['TEMP_DEF'],) + UTMESS('A','XFEM2_85',valr=valpar) + nomres=['E','NU'] + valres,codret = MATER.RCVALE('ELAS',nompar,valpar,nomres,'F') + e = valres[0] + nu = valres[1] + else : + e = dicmat['E'] + nu = dicmat['NU'] + return e,nu,dLoi + +def nom_points_fonds(n_taille): + """ + Construction des noms des points en fond de fissure + """ + alphabet = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']; + if n_taille <= 26: + return alphabet[:n_taille] + else: + tab_alphabet = alphabet + taille_tab_alphabet = int(log(n_taille,26)) + for l_let1 in range(1,taille_tab_alphabet): + for l_let2 in range(26): + for l_let3 in range(26): + tab_alphabet = tab_alphabet + [tab_alphabet[(l_let1-1)*26+l_let2]+alphabet[l_let3]] + reste1 = int(n_taille-len(tab_alphabet))/26 + for l_let2 in range(reste1): + for l_let3 in range(26): + tab_alphabet = tab_alphabet + [tab_alphabet[(taille_tab_alphabet-1)*26+l_let2]+alphabet[l_let3]] + reste2 = int(n_taille-len(tab_alphabet)) + for l_let3 in range(reste2): + tab_alphabet = tab_alphabet + [tab_alphabet[(taille_tab_alphabet-1)*26+reste1]+alphabet[l_let3]] + return tab_alphabet #def propa_fiss_ops(self,METHODE_PROPA,TEST_MAIL,INFO,**args): def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): @@ -118,17 +165,12 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): Propagation de fissure pour les modeles X-FEM : propagation par la methode de HAMILTON ou par projection sur un maillage """ + import aster import string - import copy from Accas import _F from Utilitai.Utmess import UTMESS - from types import ListType, TupleType - from Utilitai.Table import Table, merge from Utilitai.partition import MAIL_PY - from SD.sd_mater import sd_compor1 - from Cata.cata import table_sdaster,fiss_xfem,modele_sdaster - EnumTypes = (ListType, TupleType) @@ -139,6 +181,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): ASSE_MAILLAGE =self.get_cmd('ASSE_MAILLAGE' ) LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE' ) DEFI_FICHIER = self.get_cmd('DEFI_FICHIER' ) + DEFI_GROUP = self.get_cmd('DEFI_GROUP' ) CREA_TABLE =self.get_cmd('CREA_TABLE' ) CALC_TABLE =self.get_cmd('CALC_TABLE' ) PROPA_XFEM = self.get_cmd('PROPA_XFEM' ) @@ -157,32 +200,8 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): if (TEST_MAIL == 'NON' ) : LOI= args['LOI_PROPA'] - if LOI == None : - UTMESS('F','RUPTURE1_50') - dLoi=LOI[0].cree_dict_valeurs(LOI[0].mc_liste) - mat = dLoi['MATER'] - matph = mat.NOMRC.get() - phenom=None - for cmpt in matph : - if cmpt[:4]=='ELAS' : - phenom=cmpt - break - if phenom==None : UTMESS('F','RUPTURE0_5') - compor = sd_compor1('%-8s.%s' % (mat.nom, phenom)) - valk = [s.strip() for s in compor.VALK.get()] - valr = compor.VALR.get() - dicmat=dict(zip(valk,valr)) - if dicmat.has_key('TEMP_DEF') : - nompar = ('TEMP',) - valpar = (dicmat['TEMP_DEF'],) - UTMESS('A','XFEM2_85',valr=valpar) - nomres=['E','NU'] - valres,codret = MATER.RCVALE('ELAS',nompar,valpar,nomres,'F') - e = valres[0] - nu = valres[1] - else : - e = dicmat['E'] - nu = dicmat['NU'] + e,nu,dLoi = recup_Elas(LOI) + # Construction catalogue PROPA_XFEM dLoix = {} dLoix['LOI'] = 'PARIS' @@ -212,10 +231,6 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): NbPointFond = [] for Fiss in Fissures : - if Fiss['GRILLE_AUX']!=None : - GrilleAux.append(Fiss['GRILLE_AUX']) - else : - GrilleAux.append(args['MODELE']) FissAct.append(Fiss['FISS_ACTUELLE']) FissNou.append(Fiss['FISS_PROPAGEE']) if TEST_MAIL == 'NON': @@ -246,11 +261,6 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): # propagating crack. for NumFiss in range(0,len(FissAct)) : mcsimp['FISS_PROP'] = FissAct[NumFiss] - mcsimp['GRILLE_AUX'] = 123 - if GrilleAux[NumFiss]!=args['MODELE'] : - mcsimp['GRILLE_AUX'] = GrilleAux[NumFiss] - else : - del mcsimp['GRILLE_AUX'] self.DeclareOut('nomfiss',FissNou[NumFiss]) nomfiss = PROPA_XFEM(METHODE=METHODE_PROPA,INFO=INFO,**mcsimp ) @@ -263,6 +273,12 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): __Fis = [None]*(StepTot*len(FissAct)) __Mod = [None]*StepTot mcsimp['TOLERANCE'] = args['TOLERANCE'] + fiss = FissAct[0] + import aster + iret,ibid,mod_fiss = aster.dismoi('F','NOM_MODELE',fiss.nom,'FISS_XFEM') + mod_fiss=mod_fiss.strip() + MOD_FISS = self.get_concept(mod_fiss) + for NumStep in range(0,StepTot) : aster.affiche('MESSAGE',' ------------------------') @@ -280,11 +296,6 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): mcsimp['MODELE'] = __Mod[NumStep-1] mcsimp['FISS_PROP'] = __Fis[(NumStep-1)*len(FissAct)+NumFiss] mcsimp['FISS_INITIALE'] = FissAct[NumFiss] - mcsimp['GRILLE_AUX'] = 123 - if GrilleAux[NumFiss]!=args['MODELE'] : - mcsimp['GRILLE_AUX'] = GrilleAux[NumFiss] - else : - del mcsimp['GRILLE_AUX'] if NumStep==StepTot-1 : self.DeclareOut('nomfiss',FissNou[NumFiss]) nomfiss = PROPA_XFEM(METHODE=METHODE_PROPA,INFO=INFO,**mcsimp ) @@ -296,7 +307,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): aster.affiche('MESSAGE',' ------------------------') aster.affiche('MESSAGE',' CREATION DU MODELE FISSURE TEMPORAIRE') aster.affiche('MESSAGE',' ') - __Mod[NumStep] = MODI_MODELE_XFEM(MODELE_IN=args['MODELE'],FISSURE=(ListeFiss)) + __Mod[NumStep] = MODI_MODELE_XFEM(MODELE_IN=MOD_FISS,FISSURE=(ListeFiss)) mcsimp['LISTE_FISS'] = ListeFiss aster.affiche('MESSAGE',' ') aster.affiche('MESSAGE',' ------------------------') @@ -306,9 +317,6 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): #------------------------------------------------------------------ # CAS 2 : METHODE_PROPA = 'MAILLAGE' # -# il faudrait rendre cela plus automatique pour lever la limite a 52 points - ALPHABET=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']; -# 'AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ']; if METHODE_PROPA == 'MAILLAGE' : Fissures = args['FISSURE'] @@ -319,7 +327,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): coef_M = LOI_PROPA['M'] coef_C = LOI_PROPA['C'] coef_N = LOI_PROPA['N'] - YOUNG = 2.E11 + YOUNG,NU,dLoi=recup_Elas(LOI_PROPA) it = args['ITERATION'] Damax = args['DA_MAX'] COMP_LINE = args['COMP_LINE'] @@ -357,146 +365,98 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): UTMESS('F','RUPTURE1_48',vali=Nbfiss) # Recuperation des K et calcul de DeltaK - Nmeth = Fiss['METHODE_POSTK'] SIF = Fiss['TABLE'] nbinst = 1 -# A- TABLEAU ISSSU DE POST_K1_K2_K3 - if (Nmeth != None) : - __TABN = CALC_TABLE(TABLE=SIF,ACTION=_F(OPERATION='FILTRE', - NOM_PARA='METHODE',VALE_I=Nmeth),); - __tabp = __TABN.EXTR_TABLE() - if ('K1_MAX' not in __tabp.para) or ('G_MAX' not in __tabp.para): - UTMESS('F','RUPTURE1_44') - __tab1 = __tabp.values() - nbinst = 1 - if 'INST' in __tabp.para : - l_inst_tab=__tabp['INST'].values()['INST'] - l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys() - nbinst = len(l_inst_tab) - nbptfon = len(__tab1['K1_MAX']) / nbinst - R[numfis] = [None]*nbptfon - RmM[numfis] = [None]*nbptfon - DKeq[numfis] = [None]*nbptfon - BETA[numfis] = [None]*nbptfon - absc = [0.]*nbptfon - if nbinst > 1 : - for k in range(nbptfon) : - if (dime == 2) : __tmp = __tabp - if (dime == 3) : __tmp = __tabp.PT_FOND==(k+1) - if (dime == 3) : absc[k]=__tmp['ABSC_CURV'][k] - ddkeq = sqrt(YOUNG)*(sqrt(max(__tmp.values()['G_MAX'])) - - sqrt(min(__tmp.values()['G_MAX']))) - rminmax = sqrt(min(__tmp.values()['G_MAX'])) / sqrt(max(__tmp.values()['G_MAX'])) - DKeq[numfis][k] = [absc[k], ddkeq ] - RmM[numfis][k] = [absc[k], rminmax ] - k1 = __tmp.values()['K1_MAX'] - k2 = __tmp.values()['K2_MAX'] - betat = [0.]*nbinst - for jt in range(nbinst) : - betat[jt] = betaf(k1[jt],k2[jt]) + __tabp = SIF.EXTR_TABLE() + if ('K1' not in __tabp.para) or ('G' not in __tabp.para): + UTMESS('F','RUPTURE1_44') + + __tab1 = __tabp.values() + + if 'INST' in __tabp.para : + l_inst_tab=__tabp['INST'].values()['INST'] + l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys() + nbinst = len(l_inst_tab) + nbptfon = len(__tab1['K1']) / nbinst + RmM[numfis] = [None]*nbptfon + DKeq[numfis] = [None]*nbptfon + BETA[numfis] = [None]*nbptfon + +# Lorsque le calcul porte sur plusieurs instants + if nbinst > 1 : + for k in range(nbptfon) : + if (dime == 2) : __tmp = __tabp + if (dime == 3) : + if __tabp.PT_FOND : + __tmp = __tabp.PT_FOND==(k+1) + indice_k = k + else: + __tmp = __tabp.NUM_PT==(k+1) + indice_k = 0 + if ('ABSC_CURV' in __tmp.values()): + abscisse_curv_courante = __tmp.values()['ABSC_CURV'][indice_k] + else: + abscisse_curv_courante = 0. + ddkeq = NP.sqrt(YOUNG)*(NP.sqrt(max(__tmp.values()['G'])) + - NP.sqrt(min(__tmp.values()['G']))) + rminmax = NP.sqrt(min(__tmp.values()['G'])) / NP.sqrt(max(__tmp.values()['G'])) + DKeq[numfis][k] = [abscisse_curv_courante, ddkeq ] + RmM[numfis][k] = [abscisse_curv_courante, rminmax ] + if ('BETA' in __tmp.values()): + dbeta = max(__tmp.values()['BETA'])-min(__tmp.values()['BETA']) + if dbeta > (5./180.*3.1415) : + UTMESS('F','XFEM2_72') + BETA[numfis][k] = [abscisse_curv_courante, __tmp.values()['BETA'][0] ] + else: + if (dime == 2) : + k1 = __tmp.values()['K1'][k] + k2 = __tmp.values()['K2'][k] + BETA[numfis][k]=[0., betaf(k1,k2)] + else: + k1 = __tmp.values()['K1'] + k2 = __tmp.values()['K2'] + betat = [0.]*nbinst + for jt in range(nbinst) : + betat[jt] = betaf(k1[jt],k2[jt]) # ANGLE BETA NE DOIT PAS TROP VARIER ENTRE LES PAS DE TEMPS - dbeta = max(betat) - min(betat) - if dbeta > (5./180.*3.1415) : - UTMESS('F','XFEM2_72') - BETA[numfis][k] = [absc[k], betat[0] ] - VMAX0 = dadN(coef_C,coef_N,coef_M,DKeq[numfis][k][1],RmM[numfis][k][1]) - VMAX = max(VMAX,VMAX0 ) - else : - if COMP_LINE == None : - UTMESS('A','XFEM2_76') - CMIN = 0. - CMAX = 1. - else : - CMIN = COMP_LINE['COEF_MULT_MINI'] - CMAX = COMP_LINE['COEF_MULT_MAXI'] - if (min(__tab1['G_MAX']) < 0.) : - UTMESS('F','RUPTURE1_46') - DKmax0 = max(NP.sqrt(__tab1['G_MAX'])) - DKmax = max(DKmax,DKmax0) - for k in range(nbptfon) : - k1 = __tab1['K1_MAX'][k] - k2 = __tab1['K2_MAX'][k] - if (dime == 3) : absc[k]=__tab1['ABSC_CURV'][k] - BETA[numfis][k] = [absc[k] , betaf(k1,k2)] - DKeq[numfis][k] = [absc[k],sqrt(YOUNG)*NP.sqrt(__tab1['G_MAX'][k])] - RmM[numfis][k] = [absc[k], CMIN/CMAX] - VMAX0 = dadN(coef_C,coef_N,coef_M,DKeq[numfis][k][1],RmM[numfis][k][1]) - VMAX = max(VMAX,VMAX0 ) -# B- TABLEAU ISSSU DE CALC_G (option CALC_K_G) + dbeta = max(betat) - min(betat) + if dbeta > (5./180.*3.1415) : + UTMESS('F','XFEM2_72') + VMAX0 = dadN(coef_C,coef_N,coef_M,DKeq[numfis][k][1],RmM[numfis][k][1]) + VMAX = max(VMAX,VMAX0 ) +# Lorsque le calcul porte un seul instant else : - __tabp = SIF.EXTR_TABLE() - if (dime == 3) and (('K1_LOCAL' not in __tabp.para) or ('G_LOCAL' not in __tabp.para) or ('BETA_LOCAL' not in __tabp.para)): - UTMESS('F','RUPTURE1_45') - if (dime == 2) and (('K1' not in __tabp.para) or ('G' not in __tabp.para)) : - UTMESS('F','RUPTURE1_45') - __tab1= __tabp.values() - if 'INST' in __tabp.para : - l_inst_tab=__tabp['INST'].values()['INST'] - l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys() - nbinst = len(l_inst_tab) - if (dime == 2) : nbptfon = 1 - if (dime == 3) : nbptfon = len(__tab1['G_LOCAL']) / nbinst - RmM[numfis] = [None]*nbptfon - DKeq[numfis] = [None]*nbptfon - BETA[numfis] = [None]*nbptfon - if nbinst > 1 : - for k in range(nbptfon) : - if (dime == 3) : - __tmp = __tabp.NUM_PT==(k+1) - if (min(__tmp['G_LOCAL']) < 0.) : - UTMESS('F','RUPTURE1_46') - absc = __tmp.values()['ABSC_CURV'][0] - DKeq[numfis][k]=[absc, sqrt(YOUNG)*(sqrt(max(__tmp.values()['G_LOCAL']))-sqrt(min(__tmp.values()['G_LOCAL'])))] - RmM[numfis][k] = [absc, sqrt(min(__tmp.values()['G_LOCAL'])) / sqrt(max(__tmp.values()['G_LOCAL']))] - dbeta = max(__tmp.values()['BETA_LOCAL'])-min(__tmp.values()['BETA_LOCAL']) - if dbeta > (5./180.*3.1415) : - UTMESS('F','XFEM2_72') - BETA[numfis][k] = [absc, __tmp.values()['BETA_LOCAL'][0] ] - else : - if (min(__tabp.values()['G']) < 0.) : - UTMESS('F','RUPTURE1_46') - DKeq[numfis][k]=[0.,sqrt(YOUNG)*(sqrt(max(__tabp.values()['G']))-sqrt(min(__tabp.values()['G'])))] - RmM[numfis][k] = [0., sqrt(min(__tabp.values()['G'])) / sqrt(max(__tabp.values()['G'])) ] - k1 = __tabp.values()['K1'][0] - k2 = __tabp.values()['K2'][0] - BETA[numfis][k]=[0., betaf(k1,k2)] - VMAX0 = dadN(coef_C,coef_N,coef_M,DKeq[numfis][k][1],RmM[numfis][k][1]) - VMAX = max(VMAX,VMAX0 ) - elif dime == 3 : - nbptfon = len(__tab1['G_LOCAL']) - if COMP_LINE == None : - UTMESS('A','XFEM2_76') - CMIN = 0. - CMAX = 1. - else : - CMIN = COMP_LINE['COEF_MULT_MINI'] - CMAX = COMP_LINE['COEF_MULT_MAXI'] - if (min(__tab1['G_LOCAL']) < 0.) : - UTMESS('F','RUPTURE1_46') - DKeq[numfis] = [[__tab1['ABSC_CURV'][i],NP.sqrt(__tab1['G_LOCAL'][i])*sqrt(YOUNG) ] for i in range(nbptfon)] - RmM[numfis] = [[__tab1['ABSC_CURV'][i], CMIN/CMAX] for i in range(nbptfon)] - BETA[numfis] = [[__tab1['ABSC_CURV'][i],__tab1['BETA_LOCAL'][i]] for i in range(nbptfon)] - for i in range(nbptfon) : - VMAX0 = dadN(coef_C,coef_N,coef_M,DKeq[numfis][i][1],RmM[numfis][i][1]) - VMAX = max(VMAX,VMAX0 ) - else : - nbptfon = 1 - if COMP_LINE == None : - UTMESS('A','XFEM2_76') - CMIN = 0. - CMAX = 1. - else : - CMIN = COMP_LINE['COEF_MULT_MINI'] - CMAX = COMP_LINE['COEF_MULT_MAXI'] - if (min(__tab1['G']) < 0.) : - UTMESS('F','RUPTURE1_46') - DKeq[numfis][0] = [0.,sqrt(YOUNG)*max(NP.sqrt(__tab1['G']))] - k1 = __tab1['K1'][0] - k2 = __tab1['K2'][0] - BETA[numfis][0] = [0.,betaf(k1,k2)] - RmM[numfis][0] = [0.,CMIN/CMAX] - VMAX0 = dadN(coef_C,coef_N,coef_M,DKeq[numfis][0][1],RmM[numfis][0][1]) - VMAX = max(VMAX,VMAX0 ) + if COMP_LINE == None : + UTMESS('A','XFEM2_76') + CMIN = 0. + CMAX = 1. + else : + CMIN = COMP_LINE['COEF_MULT_MINI'] + CMAX = COMP_LINE['COEF_MULT_MAXI'] + if (min(__tab1['G']) < 0.) : + UTMESS('F','RUPTURE1_46') + + for k in range(nbptfon) : + if (dime == 3) : + if __tabp.PT_FOND : + indice_k = k + else: + indice_k = 0 + if ('ABSC_CURV' in __tabp.para) : + abscisse_curv_courante = __tab1['ABSC_CURV'][k] + else: + abscisse_curv_courante = 0. + DKeq[numfis][k] = [abscisse_curv_courante, NP.sqrt(YOUNG)*NP.sqrt(__tab1['G'][k]) ] + RmM[numfis][k] = [abscisse_curv_courante, CMIN/CMAX ] + if ('BETA' in __tab1.values()): + BETA[numfis][k] = [abscisse_curv_courante, __tab1['BETA'][0] ] + else: + k1 = __tab1['K1'][indice_k] + k2 = __tab1['K2'][indice_k] + BETA[numfis][indice_k]=[abscisse_curv_courante, betaf(k1,k2)] + VMAX0 = dadN(coef_C,coef_N,coef_M,DKeq[numfis][k][1],RmM[numfis][k][1]) + VMAX = max(VMAX,VMAX0 ) + numfis = numfis + 1 @@ -515,7 +475,6 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): MAIL_FISS1 = Fiss['MAIL_ACTUEL'] MFOND = Fiss['GROUP_MA_FOND'] MFISS = Fiss['GROUP_MA_FISS'] - #------------------------------------------------------------------ # CAS 2a : MODELE 3D # @@ -575,6 +534,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): DKmax = 1 if (coef_C ==None) : coef_C = Damax + ALPHABET = nom_points_fonds(nbnofo) for ifond in range(nbnofo) : Xf = d_coorf['NX%s%i' %(ALPHABET[ifond],it)][0] Yf = d_coorf['NX%s%i' %(ALPHABET[ifond],it)][1] @@ -660,6 +620,23 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): # if dime == 2 : mm[numfis] = MAIL_PY() + FISS_A = '%s_%i' %(MFISS,(it-1)) + DEFI_GROUP(reuse =MAIL_FISS1, + MAILLAGE=MAIL_FISS1, + CREA_GROUP_NO=_F(OPTION='NOEUD_ORDO', + NOM='Nds_Plan', + GROUP_MA=FISS_A,),INFO=2); + DEFI_GROUP(reuse =MAIL_FISS1, + MAILLAGE=MAIL_FISS1, + DETR_GROUP_MA=_F(NOM='A',), + CREA_GROUP_MA=_F(OPTION='APPUI', + NOM='A', + TYPE_APPUI='TOUT', + GROUP_NO='Nds_Plan',),INFO=2); + DEFI_GROUP(reuse =MAIL_FISS1, + MAILLAGE=MAIL_FISS1, + DETR_GROUP_NO=_F(NOM='Nds_Plan',),); + mm[numfis].FromAster(MAIL_FISS1) (nno,ndim) = mm[numfis].cn.shape @@ -687,6 +664,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): NomNoeudsEnPlus = ['NXA%i' %(it+1)] mm[numfis].cn = NP.concatenate((mm[numfis].cn,LesNoeudsEnPlus)) mm[numfis].correspondance_noeuds = tuple(linomno + NomNoeudsEnPlus ) + ALPHABET = nom_points_fonds(1) # Ajout Maille levre (SEG2) NomMaillesEnPlus = ['MX%s%i' %(ALPHABET[0], it+1)] @@ -701,7 +679,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): fsi = mm[numfis].gma['%s_%i' %(MFISS,it-1)] fsi = NP.concatenate((fsi,NP.array([nbma]))) mm[numfis].gma['%s_%i' %(MFISS,it)] = fsi.astype(int) - + # Ajout Maille fond (POI1) NomMaillesEnPlus = ['MF%s%i' %(ALPHABET[0], it+1)] num_maille = [ nbma + 2 ] @@ -742,7 +720,6 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): ma_tot = ASSE_MAILLAGE(MAILLAGE_1 = MAIL_STRUC, MAILLAGE_2 = __MMX[Nbfissure-1], OPERATION='SUPERPOSE',) - #------------------------------------------------------------------ # CAS 3 : METHODE_PROPA = 'INITIALISATION' # @@ -766,6 +743,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): NomNoeudsEnPlus = ['NXA0','NXA1'] mm.cn = LesNoeudsEnPlus mm.correspondance_noeuds = tuple( NomNoeudsEnPlus ) + ALPHABET = nom_points_fonds(1) # Ajout Maille levre (SEG2) it = 1 @@ -799,6 +777,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): P1 = args['POINT_EXTR'] dpropa = args['DTAN'] nbpt = args['NB_POINT_FOND'] + ALPHABET = nom_points_fonds(nbpt) Q0 = NP.array([[P0[0]-dpropa[0],P0[1]-dpropa[1],P0[2]-dpropa[2]]]) mm = MAIL_PY() @@ -884,11 +863,12 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args): vect_y = args['VECT_Y'] gdax = args['DEMI_GRAND_AXE'] ptax = args['DEMI_PETIT_AXE'] - normale = cross_product(vect_x,vect_y) + normale = NP.cross(vect_x,vect_y) verif = NP.dot(vect_x,vect_y) if abs(verif) > 0.01: UTMESS('F','RUPTURE1_52') nbpt = args['NB_POINT_FOND'] + ALPHABET = nom_points_fonds(nbpt) mm = MAIL_PY() mm.__init__() diff --git a/Aster/Cata/cataSTA10/Macro/raff_xfem_ops.py b/Aster/Cata/cataSTA10/Macro/raff_xfem_ops.py index c427fa6b..eebe3f0c 100644 --- a/Aster/Cata/cataSTA10/Macro/raff_xfem_ops.py +++ b/Aster/Cata/cataSTA10/Macro/raff_xfem_ops.py @@ -1,8 +1,8 @@ -#@ MODIF raff_xfem_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF raff_xfem_ops Macro DATE 03/01/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -32,7 +32,6 @@ def raff_xfem_ops(self,FISSURE,INFO,**args): from types import ListType, TupleType from Accas import _F from SD.sd_xfem import sd_fiss_xfem - from Execution.E_JDC import JDC EnumTypes = (ListType, TupleType) macro = 'RAFF_XFEM' @@ -57,10 +56,10 @@ def raff_xfem_ops(self,FISSURE,INFO,**args): else : nbfiss = 1 -# formule distance pour une fissure: 1/exp(r) - __MDISTF=FORMULE(NOM_PARA=('X1','X2'),VALE= '1./exp(sqrt(X1**2+X2**2))'); -# formule distance pour une interface: 1/exp(lsn) - __MDISTI=FORMULE(NOM_PARA=('X1'),VALE= '1./exp(sqrt(X1**2))'); +# formule distance pour une fissure: -r + __MDISTF=FORMULE(NOM_PARA=('X1','X2'),VALE= '-1.*sqrt(X1**2+X2**2)'); +# formule distance pour une interface: -r = -|lsn| + __MDISTI=FORMULE(NOM_PARA=('X1'),VALE= '-1.*sqrt(X1**2)'); __CERR= [None]*nbfiss list_err=[] diff --git a/Aster/Cata/cataSTA10/Macro/reca_calcul_aster.py b/Aster/Cata/cataSTA10/Macro/reca_calcul_aster.py index aeb7f070..e0dd202e 100644 --- a/Aster/Cata/cataSTA10/Macro/reca_calcul_aster.py +++ b/Aster/Cata/cataSTA10/Macro/reca_calcul_aster.py @@ -1,9 +1,9 @@ -#@ MODIF reca_calcul_aster Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF reca_calcul_aster Macro DATE 28/03/2011 AUTEUR ASSIRE A.ASSIRE # -*- coding: iso-8859-1 -*- # RESPONSABLE ASSIRE A.ASSIRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -31,6 +31,7 @@ import math import glob import socket import shutil +import tempfile import numpy as NP @@ -58,6 +59,7 @@ class CALCUL_ASTER: INFO=0, ): + self.METHODE = METHODE self.UNITE_ESCL = UNITE_ESCL self.UNITE_RESU = UNITE_RESU @@ -66,28 +68,39 @@ class CALCUL_ASTER: self.PARA_DIFF_FINI = PARA_DIFF_FINI self.vector_output = vector_output - self.memjeveux_esclave = CALCUL_ESCLAVE['memjeveux_esclave'] - self.mem_aster = CALCUL_ESCLAVE['mem_aster'] self.MODE = CALCUL_ESCLAVE['MODE'] - self.MEMOIRE = CALCUL_ESCLAVE['MEMOIRE'] - self.TEMPS = CALCUL_ESCLAVE['TEMPS'] +# self.MEMOIRE = CALCUL_ESCLAVE['MEMOIRE'] +# self.TEMPS = CALCUL_ESCLAVE['TEMPS'] + + # Parametres batch self.CLASSE = CALCUL_ESCLAVE['CLASSE'] self.ACTUALISATION = CALCUL_ESCLAVE['ACTUALISATION'] self.NMAX_SIMULT = CALCUL_ESCLAVE['NMAX_SIMULT'] self.LANCEMENT = CALCUL_ESCLAVE['LANCEMENT'] + # Parametres des job esclaves + self.tpsjob = CALCUL_ESCLAVE['tpsjob'] + self.tpmax = CALCUL_ESCLAVE['tpmax'] + self.mem_aster = CALCUL_ESCLAVE['mem_aster'] + self.memjob = CALCUL_ESCLAVE['memjob'] + self.memjeveux = CALCUL_ESCLAVE['memjeveux'] + self.INFO = INFO # Optionnels self.UNITE_GRAPHIQUE = None self.export = None self.follow_output = None + self.unity_follow = None + self.GRADIENT = GRADIENT self.DYNAMIQUE = DYNAMIQUE #self.LANCEMENT = LANCEMENT # Variables locales - self.new_export = os.path.join(os.getcwd(), 'tmp_export') + tmpfile = tempfile.NamedTemporaryFile(prefix= os.path.join(os.getcwd(), 'tmp_export_') ) + self.new_export = str(tmpfile.name) + tmpfile.close() # Variables calculees self.evaluation_fonction = 0 @@ -183,6 +196,8 @@ class CALCUL_ASTER: export = self.new_export C.follow_output = self.follow_output + C.unity_follow = self.unity_follow + # Lancement des calculs fonctionnelle, gradient = C.run( @@ -300,6 +315,19 @@ class CALCUL_ASTER: else: return self.norme + # ------------------------------------------------------------------------------ + def verif_borne_gradient(self, val, dX): + """ + Verification que les parametres perturbes sont bien dans l'intervalle defini par l'utilisateur + Sinon, on colle le parametre a la borne + """ + print self.para + print self.LIST_PARA + for i in range(len(val)): + print i, val[i], dX[i] + # min + sys.exit() + # ------------------------------------------------------------------------------ def calcul_FG(self, val): """ @@ -391,6 +419,7 @@ class CALCUL_ASTER: """ from asrun.profil import ASTER_PROFIL + from asrun.common.sysutils import on_64bits # Recuperation du fichier .export if self.export: export = self.export @@ -415,7 +444,6 @@ class CALCUL_ASTER: username = getpass.getuser() user_mach_dist = "%s@%s:" % ( username, socket.gethostname() ) - # On cherche s'il y a un fichier hostfile pour rajouter user@hostname l_fr = getattr(prof, 'data') l_tmp = l_fr[:] @@ -424,26 +452,26 @@ class CALCUL_ASTER: user_mach = user_mach_dist break - # En distribue - if self.TEMPS: prof.param['tpsjob'] = str(self.TEMPS) - if self.MEMOIRE: prof.param['memjob'] = str(self.MEMOIRE) + # Parametres ajoutes par le mot-cle CALCUL_ESCLAVE + if self.tpsjob: prof.param['tpsjob'] = str(self.tpsjob) + if self.tpmax: prof.args['tpmax'] = str(self.tpmax) + if self.mem_aster: prof.param['mem_aster'] = str(self.mem_aster) + if self.memjob: prof.param['memjob'] = str(self.memjob) + if self.memjeveux: prof.args['memjeveux'] = str(self.memjeveux) # En batch et distribue if self.MODE == 'BATCH': -# user_mach = "%s@%s:" % ( prof.param['username'][0], socket.gethostname() ) user_mach = user_mach_dist prof.param['mode'] = 'batch' - if self.mem_aster: prof.param['mem_aster'] = str(self.mem_aster) + #if self.mem_aster: prof.param['mem_aster'] = str(self.mem_aster) - # classe reservee sur la machine Aster + # Choix d'une classe reservee if self.CLASSE: prof.param['classe'] = self.CLASSE # xterm if prof.param.has_key('xterm'): del prof.param['xterm'] - # memjeveux - prof.args['memjeveux'] = self.memjeveux_esclave # fichier/répertoire for lab in ('data', 'resu'): @@ -487,9 +515,6 @@ class CALCUL_ASTER: # Tous les autres fichiers en Resultat elif lab == 'resu': -# if self.UNITE_GRAPHIQUE and dico['ul'] == str(self.UNITE_GRAPHIQUE): l_fr.remove(dico) -# else: -# dico['path'] = user_mach + os.path.join(tmp_macr_recal, os.path.basename(dico['path'])) l_fr.remove(dico) # Tous les autres fichiers en Donnees @@ -504,7 +529,7 @@ class CALCUL_ASTER: shutil.copyfile(src, dst) dico['path'] = user_mach + os.path.join(tmp_macr_recal, os.path.basename(dico['path'])) except Exception, e: - print e + if debug: print e else: dico['path'] = user_mach + os.path.join(os.getcwd(), 'fort.%s' % dico['ul']) @@ -515,7 +540,5 @@ class CALCUL_ASTER: prof.WriteExportTo(self.new_export) if debug: os.system('cp ' + self.new_export + ' /tmp') - os.system('cp ' + self.new_export + ' /tmp') - #os.system('sleep 500') - # --FIN CLASSE ---------------------------------------------------------------------------- + # --FIN CLASSE ---------------------------------------------------------------------------- diff --git a/Aster/Cata/cataSTA10/Macro/reca_mac.py b/Aster/Cata/cataSTA10/Macro/reca_mac.py index f7bf786f..69853c79 100644 --- a/Aster/Cata/cataSTA10/Macro/reca_mac.py +++ b/Aster/Cata/cataSTA10/Macro/reca_mac.py @@ -1,8 +1,8 @@ -#@ MODIF reca_mac Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF reca_mac Macro DATE 03/01/2011 AUTEUR BODEL C.BODEL # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -24,9 +24,6 @@ recalage en dynamique ''' import numpy as NP -from Tkinter import Tk, Frame, StringVar, Entry, Label, Button -from Meidee.modes import MacWindowFrame - def extract_mac_array( mac_mode ): data1 = mac_mode.EXTR_TABLE().Array('NUME_MODE_1','MAC') @@ -52,6 +49,9 @@ def get_modes(resu): class fenetre_mac: def __init__(self,resu1,resu2,mac): + from Calc_essai.outils_ihm import MacWindowFrame + from Tkinter import Tk, Frame, StringVar, Entry, Label, Button + self.resu1 = resu1 self.resu2 = resu2 self.mac = mac diff --git a/Aster/Cata/cataSTA10/Macro/recal.py b/Aster/Cata/cataSTA10/Macro/recal.py index a9d9fd54..9a878761 100644 --- a/Aster/Cata/cataSTA10/Macro/recal.py +++ b/Aster/Cata/cataSTA10/Macro/recal.py @@ -1,8 +1,8 @@ -#@ MODIF recal Macro DATE 26/05/2010 AUTEUR ASSIRE A.ASSIRE +#@ MODIF recal Macro DATE 28/03/2011 AUTEUR ASSIRE A.ASSIRE # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -76,6 +76,40 @@ except: if code=='F': sys.exit() +# ------------------------------------------------------------------------------- +def affiche(unity, filename, label='', filetype='stderr'): + """ Affiche un fichier dans l'output courant (methode utilisee pour l'affichage + du stdout et/ou du stderr + """ + try: + f=open(filename, 'r') + txt = f.read() + txt = """ + +============================ %s (%s) ============================= + + +%s + + +====================================================================== +====================================================================== + +""" % (label, filetype, txt) + + f.close() + + if unity: + fw=open('fort.%s' % str(unity), 'a') + fw.write( txt ) + fw.close() + else: + print txt + except Exception, e: + print e + return + + # # ------------------------------------------------------------------------------- # def find_parameter(content, param): # """ @@ -135,7 +169,7 @@ def make_include_files(UNITE_INCLUDE, calcul, parametres): sys.path.append(os.path.join(ASTER_ROOT, 'lib', 'python%s.%s' % (sys.version_info[0], sys.version_info[1] ) , 'site-packages')) except: pass try: - from asrun.utils import find_command, search_enclosed + from asrun.common.utils import find_command, search_enclosed except Exception, e: print e UTMESS('F','RECAL0_99') @@ -365,6 +399,10 @@ class CALCULS_ASTER: self.jdc = jdc + self.follow_output = False + self.unity_follow = None + + self.list_params = [x[0] for x in parametres] self.list_params.sort() @@ -466,11 +504,18 @@ class CALCULS_ASTER: for n in range(1,len(dX)+1): l = [0] * len(dX) l[n-1] = dX[n-1] - X = [ X0[i] * (1+l[i]) for i in range(len(dX)) ] +# X = [ X0[i] * (1+l[i]) for i in range(len(dX)) ] + X = [] + for i in range(len(dX)): + new_Xi = X0[i] * (1+l[i]) + if new_Xi > self.parametres[i][3]: + UTMESS('I', 'RECAL0_75', valk=( str(self.parametres[i][0]), str(new_Xi), str(self.parametres[i][2]), str(self.parametres[i][3]), str(l[i]) ) ) +# new_Xi = X0[i] * (1-l[i]) # diff finie a gauche marche pas fort + X.append( new_Xi ) + #print 'X=', X dic = dict( zip( list_params, X ) ) list_val.append( dic ) - # ---------------------------------------------------------------------------- # Aiguillage vers INCLUDE # ---------------------------------------------------------------------------- @@ -508,16 +553,6 @@ class CALCULS_ASTER: """ Module permettant de lancer N+1 calculs via un mecanisme d'include """ -# # Importation de commandes Aster -# try: -# import aster -# import Macro -# from Accas import _F -# from Cata import cata -# from Cata.cata import * -# except ImportError: -# raise "Simu_point_mat doit etre lance depuis Aster" - try: import aster import Macro @@ -527,13 +562,7 @@ class CALCULS_ASTER: # Declaration de toutes les commandes Aster import cata - for k,v in cata.__dict__.items() : - #print k,v - if isinstance(v, (OPER, MACRO)): - #print k,v - #self.jdc.current_context[k]= v - exec("from Cata.cata import %s" % k) - #self.jdc.current_context['_F']=cata.__dict__['_F'] + from Cata.cata import * except Exception, e: raise "Le mode INCLUDE doit etre lance depuis Aster : \nErreur : " % e @@ -578,7 +607,10 @@ class CALCULS_ASTER: # Lancement du calcul (par un include) # ---------------------------------------------------------------------------- new = "fort.%s.new" % self.UNITE_INCLUDE - execfile(new) + try: + execfile(new) + except Exception, e: + UTMESS('F', 'RECAL0_85', valk=str(e)) # ---------------------------------------------------------------------------- @@ -682,8 +714,7 @@ class CALCULS_ASTER: try: from asrun.run import AsRunFactory from asrun.profil import ASTER_PROFIL - from asrun.common_func import get_hostrc - from asrun.utils import get_timeout + from asrun.repart import get_hostrc from asrun.parametric import is_list_of_dict from asrun.thread import Dispatcher from asrun.distrib import DistribParametricTask @@ -700,7 +731,9 @@ class CALCULS_ASTER: # ---------------------------------------------------------------------------- sys.argv = [''] run = AsRunFactory() - run.options['debug_stderr'] = True # pas d'output d'executions des esclaves dans k'output maitre + #if info<=2: run.options['debug_stderr'] = False # pas d'output d'executions des esclaves dans l'output maitre + if self.unity_follow and info==2: run.options['debug_stderr'] = True + else: run.options['debug_stderr'] = False # pas d'output d'executions des esclaves dans l'output maitre # Master profile prof = ASTER_PROFIL(filename=export) @@ -727,16 +760,29 @@ class CALCULS_ASTER: resudir = None if not resudir: # Par defaut, dans un sous-repertoire du repertoire d'execution + shared_tmp=None pref = 'tmp_macr_recal_' # On cherche s'il y a un fichier hostfile pour placer les fichiers dans un repertoire partage l_fr = getattr(prof, 'data') l_tmp = l_fr[:] for dico in l_tmp: if dico['type']=='hostfile': - pref = os.environ['HOME'] + os.sep + 'tmp_macr_recal_' + shared_tmp = run.get('shared_tmp') + if not shared_tmp: shared_tmp = os.path.join( os.environ['HOME'], 'tmp_macr_recal') + pref = shared_tmp + os.sep + 'tmp_macr_recal_' break # Si batch alors on place les fichiers dans un repertoire partage - if prof['mode'][0]=='batch': pref = os.environ['HOME'] + os.sep + 'tmp_macr_recal_' + if prof['mode'][0]=='batch': + shared_tmp = run.get('shared_tmp') + if not shared_tmp: shared_tmp = os.path.join( os.environ['HOME'], 'tmp_macr_recal') + pref = shared_tmp + os.sep + 'tmp_macr_recal1_' + + # Creation du repertoire temporaire racine de macr_recal + if shared_tmp: + if not os.path.isdir(shared_tmp): + try: os.mkdir(shared_tmp) + except: + if info>=1: UTMESS('F','RECAL0_82',valk=shared_tmp) resudir = tempfile.mkdtemp(prefix=pref) flashdir = os.path.join(resudir,'flash') @@ -748,7 +794,7 @@ class CALCULS_ASTER: hostrc = get_hostrc(run, prof) # timeout before rejected a job - timeout = get_timeout(prof) + timeout = prof.get_timeout() # Ajout des impressions de tables a la fin du .comm @@ -787,7 +833,7 @@ class CALCULS_ASTER: resudir=resudir, flashdir=flashdir, keywords={'POST_CALCUL': '\n'.join(t)}, info=info, - nbnook=0, exec_result=[]) # OUT + nbnook=[0,]*numthread, exec_result=[]) # OUT # ... and dispatch task on 'list_tests' etiq = 'calc_%%0%dd' % (int(log10(nbval)) + 1) labels = [etiq % (i+1) for i in range(nbval)] @@ -800,38 +846,45 @@ class CALCULS_ASTER: # Liste des diagnostics # ---------------------------------------------------------------------------- d_diag = {} + + for result in task.exec_result: - #print result label = result[0] diag = result[2] if len(result) >= 8: output_filename = os.path.join('~', 'flasheur', str(result[7])) else: output_filename = '' d_diag[label] = diag + + # Affichage de l'output de l'esclave dans l'output du maitre + if self.unity_follow: + affiche(unity=self.unity_follow, filename=output_filename, label=label, filetype='stdout') + + # Calcul esclave NOOK if not diag[0:2] in ['OK', '_COPY_ERROR']: - UTMESS('A', 'RECAL0_70', valk=(label, output_filename)) - - # Affichage de l'output - try: - f=open(output_filename, 'r') - print f.read() - f.close() - except: pass + + # Affichage de l'output et/ou de l'error de l'esclave dans l'output du maitre + try: + affiche(unity=None, filename=output_filename, label=label, filetype='stdout') + error_filename = '.'.join(output_filename.split('.')[0:-1]) + '.e' + output_filename.split('.')[-1][1:] + affiche(unity=None, filename=error_filename, label=label, filetype='stderr') + except Exception, e: + print e + + if diag in ['_NOT_RUN', '_NOT_SUBMITTED']: + UTMESS('F', 'RECAL0_86', valk=(label, diag)) + else: + UTMESS('A', 'RECAL0_83', valk=(label, output_filename)) if not d_diag: - UTMESS('F', 'RECAL0_71', valk=resudir) + UTMESS('F', 'RECAL0_84', valk=resudir) self.list_diag = [ d_diag[label] for label in labels ] # ---------------------------------------------------------------------------- # Arret si tous les jobs ne se sont pas deroules correctement # ---------------------------------------------------------------------------- - iret = 0 - if task.nbnook > 0: - iret = 4 - if iret: - UTMESS('A', 'RECAL0_71', valk=resudir) - run.Sortie(iret) + if sum(task.nbnook) > 0: + UTMESS('F', 'RECAL0_84', valk=resudir) @@ -1043,8 +1096,7 @@ class CALC_ERROR: if info>=3: self.debug = True else: self.debug = False - #if debug: self.debug = True - self.debug = True + if debug: self.debug = True # --------------------------------------------------------------------------- diff --git a/Aster/Cata/cataSTA10/Macro/simu_point_mat_ops.py b/Aster/Cata/cataSTA10/Macro/simu_point_mat_ops.py index 72f95a6b..4f6f9cbc 100644 --- a/Aster/Cata/cataSTA10/Macro/simu_point_mat_ops.py +++ b/Aster/Cata/cataSTA10/Macro/simu_point_mat_ops.py @@ -1,8 +1,8 @@ -#@ MODIF simu_point_mat_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF simu_point_mat_ops Macro DATE 28/02/2011 AUTEUR PROIX J-M.PROIX # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -50,6 +50,7 @@ def simu_point_mat_ops(self, MATER, INCREMENT,SIGM_IMPOSE,EPSI_IMPOSE,SIGM_INIT, from Accas import _F from Utilitai.UniteAster import UniteAster from Utilitai.Utmess import UTMESS + from Noyau.N_types import is_enum # -- Tests de cohérence __fonczero = DEFI_FONCTION(NOM_PARA = 'INST', @@ -60,12 +61,16 @@ def simu_point_mat_ops(self, MATER, INCREMENT,SIGM_IMPOSE,EPSI_IMPOSE,SIGM_INIT, CMP_EPS=['EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'] CMP_SIG=['SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'] + if COMP_INCR : + lcomp = COMP_INCR.List_F()[0] + if COMP_ELAS : + lcomp = COMP_ELAS.List_F()[0] + if SUPPORT != None : if SUPPORT=='ELEMENT': itetra=1 if itetra==0 : if COMP_INCR != None : - lcomp = COMP_INCR.List_F()[0] if lcomp['DEFORMATION'] != 'PETIT' : itetra=1 UTMESS('A','COMPOR2_1',valk=lcomp['DEFORMATION'] ) @@ -138,6 +143,22 @@ def simu_point_mat_ops(self, MATER, INCREMENT,SIGM_IMPOSE,EPSI_IMPOSE,SIGM_INIT, if args['NB_VARI_TABLE'] != None: motscles['NB_VARI_TABLE'] = args['NB_VARI_TABLE'] + if args.has_key('MATR_C1'): + if args['MATR_C1'] != None: + # motscles['MATR_C1'] = MATR_C1.List_F() + motscles['MATR_C1'] = args['MATR_C1'].List_F() + + if args.has_key('MATR_C2'): + if args['MATR_C2'] != None: + motscles['MATR_C2'] = args['MATR_C2'].List_F() + + if args.has_key('VECT_IMPO'): + if args['VECT_IMPO'] != None: + motscles['VECT_IMPO'] = args['VECT_IMPO'].List_F() + + if ARCHIVAGE : + motscles['ARCHIVAGE'] = ARCHIVAGE.List_F() + self.DeclareOut('REPONSE',self.sd) __REP1 = CALC_POINT_MAT(INFO=INFO,MATER=MATER,ANGLE=ANGLE,**motscles) @@ -420,26 +441,33 @@ def simu_point_mat_ops(self, MATER, INCREMENT,SIGM_IMPOSE,EPSI_IMPOSE,SIGM_INIT, lvarc = args['AFFE_VARC'].List_F() nbvarc=len(lvarc) for ivarc in range(nbvarc) : - typech = 'NOEU_' + str(lvarc[ivarc]['NOM_VARC']) + '_F' dico={} - __CHVARC=CREA_CHAMP(TYPE_CHAM=typech, - OPERATION='AFFE', - MAILLAGE=__MA, - AFFE=_F(MAILLE='VOLUME', + typech = 'NOEU_' + str(lvarc[ivarc]['NOM_VARC']) + '_R' + labsc=lvarc[ivarc]['VALE_FONC'].Absc() + lordo=lvarc[ivarc]['VALE_FONC'].Ordo() + l_affe_cham=[] + __CHV=[None]*len(labsc) + for it,time in enumerate(labsc): + __CHV[it]=CREA_CHAMP(TYPE_CHAM=typech, + OPERATION='AFFE', + MAILLAGE=__MA, + AFFE=_F(MAILLE='VOLUME', NOM_CMP=lvarc[ivarc]['NOM_VARC'], - VALE_F=lvarc[ivarc]['VALE_FONC'], + VALE=lordo[it], ), - ), - __LIST2 = INCREMENT.List_F()[0]['LIST_INST'] - __TEMP=CREA_RESU(OPERATION='AFFE',TYPE_RESU='EVOL_THER',NOM_CHAM='TEMP', - AFFE = _F(CHAM_GD = __CHVARC,LIST_INST = __LIST2,), - ) + ), + dicoch={} + dicoch["CHAM_GD"]=__CHV[it] + dicoch["INST"]=time + l_affe_cham.append(dicoch) + __EVOV=CREA_RESU(OPERATION='AFFE',TYPE_RESU='EVOL_VARC',NOM_CHAM=str(lvarc[ivarc]['NOM_VARC']), + AFFE = l_affe_cham) dico["MAILLE"]='VOLUME' - dico["EVOL"]=__TEMP + dico["EVOL"]=__EVOV dico["NOM_VARC"]=lvarc[ivarc]['NOM_VARC'] if lvarc[ivarc]['VALE_REF'] != None: dico["VALE_REF"]=lvarc[ivarc]['VALE_REF'] - mcvarc.append(dico) + mcvarc.append(dico) # -- Materiau et modele if len(mcvarc) > 0 : __CHMAT=AFFE_MATERIAU(MAILLAGE=__MA,AFFE = _F(MAILLE='VOLUME',MATER=MATER), @@ -475,6 +503,8 @@ def simu_point_mat_ops(self, MATER, INCREMENT,SIGM_IMPOSE,EPSI_IMPOSE,SIGM_INIT, lnomneu=[] lnomvar=[] VARINI=VARI_INIT[0].cree_dict_valeurs(VARI_INIT[0].mc_liste) + if (not is_enum(VARINI['VALE'])) : + VARINI['VALE'] = [VARINI['VALE'],] nbvari=len(VARINI['VALE']) for i in range(nbvari): lnomneu.append('X'+str(i+1)) @@ -601,43 +631,48 @@ def simu_point_mat_ops(self, MATER, INCREMENT,SIGM_IMPOSE,EPSI_IMPOSE,SIGM_INIT, EXCIT = l_char,**motscles) + if lcomp['DEFORMATION'] != 'PETIT' : + nomepsi='EPSG_ELNO' + else : + nomepsi='EPSI_ELNO' + __EVOL1 = CALC_ELEM(reuse = __EVOL1,RESULTAT = __EVOL1, - OPTION = ('SIEF_ELNO_ELGA','EPSI_ELNO_DEPL','VARI_ELNO_ELGA')) + OPTION = ('SIEF_ELNO',nomepsi,'VARI_ELNO')) if MODELISATION=="3D": angles=(ANGLE,0,0) __EVOL=MODI_REPERE(RESULTAT=__EVOL1, MODI_CHAM=( _F(NOM_CHAM='DEPL',NOM_CMP=('DX','DY','DZ'),TYPE_CHAM='VECT_3D',), - _F(NOM_CHAM='SIEF_ELNO_ELGA',NOM_CMP=('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'),TYPE_CHAM='TENS_3D',), - _F(NOM_CHAM='EPSI_ELNO_DEPL',NOM_CMP=('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'),TYPE_CHAM='TENS_3D',), + _F(NOM_CHAM='SIEF_ELNO',NOM_CMP=('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'),TYPE_CHAM='TENS_3D',), + _F(NOM_CHAM=nomepsi,NOM_CMP=('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'),TYPE_CHAM='TENS_3D',), ), DEFI_REPERE=_F(REPERE='UTILISATEUR',ANGL_NAUT=angles),); else : angles=ANGLE __EVOL=MODI_REPERE(RESULTAT=__EVOL1,MODI_CHAM=( _F(NOM_CHAM='DEPL',NOM_CMP=('DX','DY'),TYPE_CHAM='VECT_2D',), - _F(NOM_CHAM='SIEF_ELNO_ELGA',NOM_CMP=('SIXX','SIYY','SIZZ','SIXY'),TYPE_CHAM='TENS_2D',), - _F(NOM_CHAM='EPSI_ELNO_DEPL',NOM_CMP=('EPXX','EPYY','EPZZ','EPXY'),TYPE_CHAM='TENS_2D',), + _F(NOM_CHAM='SIEF_ELNO',NOM_CMP=('SIXX','SIYY','SIZZ','SIXY'),TYPE_CHAM='TENS_2D',), + _F(NOM_CHAM=nomepsi,NOM_CMP=('EPXX','EPYY','EPZZ','EPXY'),TYPE_CHAM='TENS_2D',), ), DEFI_REPERE=_F(REPERE='UTILISATEUR',ANGL_NAUT=angles),); # -- Recuperation des courbes __REP_VARI = POST_RELEVE_T(ACTION = ( - _F(INTITULE='VARI_INT',RESULTAT=__EVOL1,NOM_CHAM='VARI_ELNO_ELGA', + _F(INTITULE='VARI_INT',RESULTAT=__EVOL1,NOM_CHAM='VARI_ELNO', TOUT_CMP='OUI',OPERATION='EXTRACTION',NOEUD='P0'),)) __REP_EPSI = POST_RELEVE_T(ACTION = ( - _F(INTITULE='EPSILON',RESULTAT=__EVOL,NOM_CHAM='EPSI_ELNO_DEPL', + _F(INTITULE='EPSILON',RESULTAT=__EVOL,NOM_CHAM=nomepsi, TOUT_CMP='OUI',OPERATION='EXTRACTION',NOEUD = 'P0'),)) __REP_SIGM = POST_RELEVE_T(ACTION = ( - _F(INTITULE = 'SIGMA',RESULTAT = __EVOL,NOM_CHAM = 'SIEF_ELNO_ELGA', + _F(INTITULE = 'SIGMA',RESULTAT = __EVOL,NOM_CHAM = 'SIEF_ELNO', TOUT_CMP = 'OUI',OPERATION = 'EXTRACTION',NOEUD = 'P0'),)) __REP_INV = POST_RELEVE_T(ACTION = ( - _F(INTITULE = 'INV',RESULTAT = __EVOL,NOM_CHAM = 'SIEF_ELNO_ELGA', + _F(INTITULE = 'INV',RESULTAT = __EVOL,NOM_CHAM = 'SIEF_ELNO', INVARIANT = 'OUI',OPERATION = 'EXTRACTION',NOEUD = 'P0'),)) __REP_INV=CALC_TABLE( TABLE=__REP_INV,reuse=__REP_INV, diff --git a/Aster/Cata/cataSTA10/Macro/stanley_ops.py b/Aster/Cata/cataSTA10/Macro/stanley_ops.py index e8c0eab5..ac98a47e 100644 --- a/Aster/Cata/cataSTA10/Macro/stanley_ops.py +++ b/Aster/Cata/cataSTA10/Macro/stanley_ops.py @@ -1,4 +1,4 @@ -#@ MODIF stanley_ops Macro DATE 16/10/2007 AUTEUR REZETTE C.REZETTE +#@ MODIF stanley_ops Macro DATE 24/08/2010 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -58,18 +58,18 @@ def stanley_ops(self,RESULTAT,MODELE,CHAM_MATER,CARA_ELEM,DISPLAY,**args): if os.environ.has_key('DISPLAY'): import Stanley - from Stanley import stanley + from Stanley import stanley_engine if (RESULTAT and MODELE and CHAM_MATER): _MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE .LGRF ' ) _MAIL = string.strip(_MAIL[0]) MAILLAGE = self.jdc.g_context[_MAIL] if CARA_ELEM: - stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM) + stanley_engine.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM) else: - stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,None) + stanley_engine.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,None) else: - stanley.PRE_STANLEY(FICHIER_VALID) + stanley_engine.PRE_STANLEY(FICHIER_VALID) else: UTMESS('A','STANLEY_3',valk=['STANLEY']) diff --git a/Aster/Cata/cataSTA10/Macro/test_compor_ops.py b/Aster/Cata/cataSTA10/Macro/test_compor_ops.py new file mode 100644 index 00000000..62b22ff4 --- /dev/null +++ b/Aster/Cata/cataSTA10/Macro/test_compor_ops.py @@ -0,0 +1,783 @@ +#@ MODIF test_compor_ops Macro DATE 21/02/2011 AUTEUR ABBAS M.ABBAS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== + +# MACRO "TEST_COMPOR" +# ---------------------------- + +####################################################################### +# utilitaires +####################################################################### +def PROD_ROT(X1,X2): + # calcul Produit de 2 vecteurs pour les coef de rotations + # dimension de X1 et X2 liste de 3 scalaire resultat liste de 6 scalaires + if (len(X1)==len(X2)==3) : + Y=[None]*6 + V_ind=[[0,0,0.5],[1,1,0.5],[2,2,0.5],[0,1,1.0],[0,2,1.0],[1,2,1.0]] + for ind in V_ind: + i=V_ind.index(ind) + ind1,ind2,coef=ind[0],ind[1],ind[2] + Y[i]=coef*(X1[ind1]*X2[ind2]+X1[ind2]*X2[ind1]) + return Y + else : + print "CALCUL PROD_ROT IMPOSSIBLE, dimensions innatendues" + return None +####################################################################### +def RENOMME(self,i,N_pas,label_cal,ch_param,_RES,_RSI): +# On renomme les composantes en fonction de l'ordre de discrétisation + from Accas import _F + DETRUIRE = self.get_cmd('DETRUIRE') + CALC_TABLE = self.get_cmd('CALC_TABLE') + N = N_pas[i] + chN=label_cal[i]+str(N) + for ch in ch_param: + j=ch_param.index(ch) + chnew=ch+chN + ##Extraction par type de variable + if _RSI[j] == None: + _RSI[j]=CALC_TABLE( TABLE=_RES[i], + TITRE = ' ', + ACTION=( _F(OPERATION='EXTR', + NOM_PARA=('INST',ch,),), + _F(OPERATION='RENOMME', + NOM_PARA=(ch,chnew,),), + ),); + else: + TMP_S=CALC_TABLE( TABLE=_RES[i], + TITRE = ' ', + ACTION=( _F(OPERATION='EXTR', + NOM_PARA=('INST',ch,),), + _F(OPERATION='RENOMME', + NOM_PARA=(ch,chnew,),), + ),); + _RSI[j]=CALC_TABLE( reuse=_RSI[j], TABLE=_RSI[j], + TITRE = ' ', + ACTION=( _F(OPERATION='COMB', + TABLE=TMP_S,NOM_PARA='INST',), + ),); + DETRUIRE ( CONCEPT = _F (NOM = TMP_S,),INFO=1) + + + return _RSI +####################################################################### + +def ERREUR(X,Xref,prec_zero,coef): + "calcul erreur relative entre deux nombres" + if (abs(Xref)0 and i<9) : coef = 1/C_Pa + iref = 0 + else : + iref =1 + if (i==0) : CH_V1.append(ch_cal) +# calcul de l'erreur (ecart relatif) + valfor='ERREUR(%s,%s,%e,%f)' % (ch_cal,chref[iref],preczero,coef) + nompar1='%s' % (ch_cal ) + nompar2='%s' % (chref[iref] ) + ERR_REL = FORMULE(NOM_PARA=(nompar1,nompar2),VALE=valfor) + if _ERSI[i] == None : + _ERSI[i] = CALC_TABLE(TABLE =_RSI[i], + TITRE = '_RSI'+str(j), + ACTION = (_F(OPERATION='OPER',NOM_PARA=ch_err, + FORMULE=ERR_REL), + ),); + else : + _ERSI[i] = CALC_TABLE(TABLE =_ERSI[i], reuse=_ERSI[i], + TITRE = '_RSI'+str(j), + ACTION = (_F(OPERATION='OPER',NOM_PARA=ch_err, + FORMULE=ERR_REL), + ),); + DETRUIRE ( CONCEPT = _F (NOM = ERR_REL,),INFO=1) + return _ERSI + +####################################################################### + +def CHAR3D(self,POISSON,YOUNG,_tempsar,INFO): + CALC_FONCTION = self.get_cmd('CALC_FONCTION') + DEFI_FONCTION = self.get_cmd('DEFI_FONCTION') + DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL') + IMPR_FONCTION = self.get_cmd('IMPR_FONCTION') + from Accas import _F + import numpy as NP + + ################################################################################## + + # definition du trajet de chargement 3D + + ####################################################################### + #fonctions chargement + calibrage = 3.5; + Ctau = ((2 * calibrage) * ((1 + POISSON) / (2 * YOUNG))); + Ctrac = (calibrage * (1 / YOUNG)); + _Ytrace=DEFI_LIST_REEL( VALE = (0., 150., 150., -50, 0., 50., -150., -150., 0.),) + _Trace=DEFI_FONCTION(NOM_PARA='INST', + VALE_PARA= _tempsar, + VALE_FONC= _Ytrace, + PROL_DROITE='EXCLU', + PROL_GAUCHE='EXCLU',); + + _YDevi_1=DEFI_LIST_REEL( VALE = (0., 75., 150., 150, 0., -150., -150., -75., 0.),) + _Devi_1=DEFI_FONCTION(NOM_PARA='INST', + VALE_PARA= _tempsar, + VALE_FONC= _YDevi_1, + PROL_DROITE='EXCLU', + PROL_GAUCHE='EXCLU',); + + _YDevi_2=DEFI_LIST_REEL( VALE = (0., 75., -50., 100, 0., -100., 50., -75., 0.),) + _Devi_2=DEFI_FONCTION(NOM_PARA='INST', + VALE_PARA= _tempsar, + VALE_FONC= _YDevi_2, + PROL_DROITE='EXCLU', + PROL_GAUCHE='EXCLU',); + + _Ytauxy=DEFI_LIST_REEL( VALE = (0., 200., 100., 300, 0., -300., -100., -200., 0.),) + _TAU_xy=DEFI_FONCTION(NOM_PARA='INST', + VALE_PARA= _tempsar, + VALE_FONC= _Ytauxy, + PROL_DROITE='EXCLU', + PROL_GAUCHE='EXCLU',); + + _Ytauxz=DEFI_LIST_REEL( VALE = (0., -100., 100., 200, 0., -200., -100., 100., 0.),) + _TAU_xz=DEFI_FONCTION(NOM_PARA='INST', + VALE_PARA= _tempsar, + VALE_FONC= _Ytauxz, + PROL_DROITE='EXCLU', + PROL_GAUCHE='EXCLU',); + + _Ytauyz=DEFI_LIST_REEL( VALE = (0., 0., 200., -100, 0., 100., -200., 0., 0.),) + _TAU_yz=DEFI_FONCTION(NOM_PARA='INST', + VALE_PARA= _tempsar, + VALE_FONC= _Ytauyz, + PROL_DROITE='EXCLU', + PROL_GAUCHE='EXCLU',); + + _eps_xy=CALC_FONCTION(COMB=_F(FONCTION=_TAU_xy, + COEF=Ctau,),); + + _eps_xz=CALC_FONCTION(COMB=_F(FONCTION=_TAU_xz, + COEF=Ctau,),); + + _eps_yz=CALC_FONCTION(COMB=_F(FONCTION=_TAU_yz, + COEF=Ctau,),); + + _eps_xx=CALC_FONCTION(COMB=(_F(FONCTION=_Trace, + COEF=Ctrac,), + _F(FONCTION=_Devi_1, + COEF=Ctrac,),),); + + _eps_yy=CALC_FONCTION(COMB=(_F(FONCTION=_Trace, + COEF=Ctrac,), + _F(FONCTION=_Devi_1, + COEF=-(Ctrac),), + _F(FONCTION=_Devi_2, + COEF=Ctrac,),),); + + _eps_zz=CALC_FONCTION(COMB=(_F(FONCTION=_Trace, + COEF=Ctrac,), + _F(FONCTION=_Devi_2, + COEF=-(Ctrac),),),); + eps_imp = [_eps_xx, _eps_yy, _eps_zz, _eps_xy, _eps_xz, _eps_yz] + #rotation tenseur des def + #angle de precession, nutation, rotation propre + psi,teta,phi=0.9,0.7,0.4 + cps,cte,cph=NP.cos(psi),NP.cos(teta),NP.cos(phi) + sps,ste,sph=NP.sin(psi),NP.sin(teta),NP.sin(phi) + #matrice de passage + p11,p21,p31 = cph*cps-sph*cte*sps,cph*sps+sph*cte*cps,sph*ste + p12,p22,p32 = -sph*cps-cph*cte*sps,-sph*sps+cph*cte*cps,cph*ste + p13,p23,p33 = ste*sps,-ste*cps,cte + V1= [p11, p21, p31] + V2= [p12, p22, p32] + V3= [p13, p23, p33] + #eps apres rotation + VI = [[V1,V1],[V2,V2],[V3,V3],[V1,V2],[V1,V3],[V2,V3]] + _eps_rot = [None]*6 + for vect_i in VI: + i = VI.index(vect_i) + V_COEF = PROD_ROT(vect_i[0],vect_i[1]) + _eps_rot[i] =CALC_FONCTION(COMB=( + _F(FONCTION=_eps_xx,COEF=V_COEF[0],), + _F(FONCTION=_eps_yy,COEF=V_COEF[1],), + _F(FONCTION=_eps_zz,COEF=V_COEF[2],), + _F(FONCTION=_eps_xy,COEF=V_COEF[3],), + _F(FONCTION=_eps_xz,COEF=V_COEF[4],), + _F(FONCTION=_eps_yz,COEF=V_COEF[5],), + ),); + #eps apres symetrie + eps_sym = [_eps_zz,_eps_xx,_eps_yy,_eps_xz,_eps_yz,_eps_xy] + + V_EPS = [eps_imp,eps_sym,_eps_rot] + #trace chargement + if INFO == 2 : + IMPR_FONCTION(#FORMAT='XMGRACE',PILOTE='INTERACTIF', + COURBE=(_F(FONCTION=eps_imp[0],), + _F(FONCTION=eps_imp[1],), + _F(FONCTION=eps_imp[2],), + _F(FONCTION=eps_imp[3],), + _F(FONCTION=eps_imp[4],), + _F(FONCTION=eps_imp[5],), + ), + UNITE=29,); + return eps_imp + +####################################################################### +def CHAR2D(self,POISSON,YOUNG,_tempsar,INFO): + CALC_FONCTION = self.get_cmd('CALC_FONCTION') + DEFI_FONCTION = self.get_cmd('DEFI_FONCTION') + DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL') + IMPR_FONCTION = self.get_cmd('IMPR_FONCTION') + ####################################################################### + # definition du trajet de chargement 2D + ####################################################################### + from Accas import _F + import numpy as NP + + #fonctions chargement + calibrage = 4.5; + Ctau = ((2 * calibrage) * ((1 + POISSON) / (2 * YOUNG))); + Ctrac = (calibrage * (1 / YOUNG)); + YTrace2d=DEFI_LIST_REEL( VALE = (0., 150., 200., 300., 0., -300., -200., -150., 0.),) + Trace2d=DEFI_FONCTION(NOM_PARA='INST', + VALE_PARA= _tempsar, + VALE_FONC= YTrace2d, + PROL_DROITE='EXCLU', + PROL_GAUCHE='EXCLU',); + + Y_Devi2=DEFI_LIST_REEL( VALE = (0., 0., 100., 0., 0., 0., -100., 0., 0.),) + Devi1_2d=DEFI_FONCTION(NOM_PARA='INST', + VALE_PARA= _tempsar, + VALE_FONC= Y_Devi2, + PROL_DROITE='EXCLU', + PROL_GAUCHE='EXCLU',); + + Y_tauxy2=DEFI_LIST_REEL( VALE = (0., 100., 40., 0., 0., 0., -40., -100., 0.0),) + TAU_xy2=DEFI_FONCTION(NOM_PARA='INST', + VALE_PARA= _tempsar, + VALE_FONC= Y_tauxy2, + PROL_DROITE='EXCLU', + PROL_GAUCHE='EXCLU',); + + eps_xy2=CALC_FONCTION(COMB=_F(FONCTION=TAU_xy2, + COEF=Ctau,),); + + eps_xx2=CALC_FONCTION(COMB=(_F(FONCTION=Trace2d, + COEF=Ctrac,), + _F(FONCTION=Devi1_2d, + COEF=Ctrac,),),); + + eps_yy2=CALC_FONCTION(COMB=(_F(FONCTION=Trace2d, + COEF=Ctrac,), + _F(FONCTION=Devi1_2d, + COEF=-(Ctrac),),),); + #rotation tenseur des def + angle = 0.9 + c,s = NP.cos(0.9) , NP.sin(0.9) + c2,s2,cs = c*c, s*s, c*s + eps_rr2=CALC_FONCTION(COMB=(_F(FONCTION=eps_xx2, + COEF=c2,), + _F(FONCTION=eps_yy2, + COEF=s2,), + _F(FONCTION=eps_xy2, + COEF=2*cs,),),); + + eps_tt2=CALC_FONCTION(COMB=(_F(FONCTION=eps_xx2, + COEF=s2,), + _F(FONCTION=eps_yy2, + COEF=c2,), + _F(FONCTION=eps_xy2, + COEF=-2*cs,),),); + + eps_rt2=CALC_FONCTION(COMB=(_F(FONCTION=eps_xx2, + COEF=-cs,), + _F(FONCTION=eps_yy2, + COEF=cs,), + _F(FONCTION=eps_xy2, + COEF=c2-s2,),),); + eps_imp = [eps_xx2 , eps_yy2, eps_xy2, eps_rr2,eps_tt2, eps_rt2] + + #Trace2d chargement + if INFO==2 : + IMPR_FONCTION(#FORMAT='XMGRACE',PILOTE='INTERACTIF', + COURBE=(_F(FONCTION=eps_imp[0],), + _F(FONCTION=eps_imp[1],), + _F(FONCTION=eps_imp[2],), + _F(FONCTION=eps_imp[3],), + _F(FONCTION=eps_imp[4],), + _F(FONCTION=eps_imp[5],), + ), + UNITE=29,); + return eps_imp + + +####################################################################### + + + +def test_compor_ops(self,OPTION,NEWTON,CONVERGENCE,COMP_INCR,COMP_ELAS,LIST_MATER,VARI_TEST,INFO, + **args): + # seule l'option "THER", c'est à dire le test thermomecanique est programme a ce jour + # ajouter l'option MECA (tests comp001,002), l'option HYDR, etc.. + from Accas import _F + import numpy as NP + from Utilitai.veri_matr_tang import VERI_MATR_TANG + self.update_const_context({'ERREUR' : ERREUR}) + + ier=0 + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + # Le concept sortant (de type fonction) est nomme U dans + # le contexte de la macro + + self.DeclareOut('U',self.sd) + + # On importe les definitions des commandes a utiliser dans la macro + CALC_FONCTION = self.get_cmd('CALC_FONCTION') + CALC_TABLE = self.get_cmd('CALC_TABLE') + DEFI_CONSTANTE = self.get_cmd('DEFI_CONSTANTE') + DEFI_FONCTION = self.get_cmd('DEFI_FONCTION') + DEFI_LIST_INST = self.get_cmd('DEFI_LIST_INST') + DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL') + DEFI_MATERIAU = self.get_cmd('DEFI_MATERIAU') + DETRUIRE = self.get_cmd('DETRUIRE') + FORMULE = self.get_cmd('FORMULE') + IMPR_FONCTION = self.get_cmd('IMPR_FONCTION') + SIMU_POINT_MAT = self.get_cmd('SIMU_POINT_MAT') + TEST_TABLE = self.get_cmd('TEST_TABLE') + IMPR_TABLE = self.get_cmd('IMPR_TABLE') + CALC_TABLE = self.get_cmd('CALC_TABLE') + + motscles={} + if COMP_INCR : + motscles['COMP_INCR'] = COMP_INCR.List_F() + if COMP_ELAS : + motscles['COMP_ELAS'] = COMP_ELAS.List_F() + motscles['CONVERGENCE'] = CONVERGENCE.List_F() + motscles['NEWTON'] = NEWTON.List_F() + + if OPTION=="THER" : + epsi = 1.E-10 + MATER=args['MATER'] + ALPHA=args['ALPHA'] + YOUNG=args['YOUNG'] + TEMP_INIT=args['TEMP_INIT'] + TEMP_FIN=args['TEMP_FIN'] + NB_VARI=args['NB_VARI'] + + if args['INST_FIN'] != None : INST_FIN=args['INST_FIN'] + + NCAL=len(LIST_MATER) + + _LINST0=DEFI_LIST_REEL(DEBUT=0., + INTERVALLE=(_F(JUSQU_A=INST_FIN, + NOMBRE=NCAL,), + ), + ); + + _LINST=DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST=_LINST0, + METHODE='MANUEL', + # PAS_MINI=1.0E-12 + ), + ECHEC=_F(SUBD_PAS=10), + # ADAPTATION=_F(EVENEMENT='SEUIL'), + ); + _TIMP=DEFI_FONCTION(NOM_PARA='INST', NOM_RESU='TEMP', + VALE=( 0. , TEMP_INIT, INST_FIN , TEMP_FIN) + ) + + _zero=DEFI_CONSTANTE(VALE=0.) + + + _U=SIMU_POINT_MAT(MATER=MATER,INFO=INFO, + SUPPORT='ELEMENT', + AFFE_VARC=( + _F( NOM_VARC='TEMP', + VALE_FONC=_TIMP, + VALE_REF=TEMP_INIT), + ), + INCREMENT=_F(LIST_INST=_LINST,), + EPSI_IMPOSE=_F(EPXX=_zero,), + **motscles); + + # On ne garde pas les valeurs initiales (NUME_ORDRE = 0 exclu) + + _U = CALC_TABLE(reuse =_U, + TABLE=_U, + ACTION=(_F( + OPERATION = 'FILTRE', + NOM_PARA = 'NUME_ORDRE', + CRIT_COMP = 'GT', + VALE = 0, + ),),); + + SXM = 0. + EXM = 0. + time = 0. + + _RES = [None]*(NCAL) + if (NB_VARI > 0): + Vim = NP.zeros(NB_VARI) + + for i in range(NCAL): + + timem = time + + time = timem + INST_FIN/NCAL + + Ti = TEMP_INIT + time/INST_FIN * (TEMP_FIN - TEMP_INIT) + + Tm = TEMP_INIT + timem/INST_FIN * (TEMP_FIN - TEMP_INIT) + + # deformation mecanique imposee correspondant a la deformation thermique du premier calcul + + _epsimp =DEFI_CONSTANTE(VALE=-ALPHA(Ti)*(Ti - TEMP_INIT)); + + # variation des coef du COMPORtement avec la temperature + # correction eventuelle des valeurs initiales du temps ti + + if i > 0 : + + SXM = SXM *(YOUNG(Ti)/YOUNG(Tm)) + # cas particuliers + if COMP_INCR.List_F()[0]['RELATION'] == 'VMIS_CINE_LINE' : + + if args['D_SIGM_EPSI'] != None : + D_SIGM_EPSI=args['D_SIGM_EPSI'] + else : + raise 'erreur' + + Vim[0:5] = Vim[0:5]*D_SIGM_EPSI(Ti)/D_SIGM_EPSI(Tm) + + if COMP_INCR.List_F()[0]['RELATION']== 'VMIS_ECMI_LINE' : + if args['C_PRAG'] != None : + C_PRAG=args['C_PRAG'] + else : + raise 'erreur' + Vim[2:7] = Vim[2:7]*C_PRAG(Ti)/C_PRAG(Tm) + + if COMP_INCR.List_F()[0]['RELATION']== 'VMIS_ECMI_TRAC' : + if args['C_PRAG'] != None : + C_PRAG=args['C_PRAG'] + else : + raise 'erreur' + Vim[2:7] = Vim[2:7]*C_PRAG(Ti)/C_PRAG(Tm) + + + _list0 = DEFI_LIST_REEL(DEBUT=timem, + INTERVALLE=(_F(JUSQU_A=time,NOMBRE=1,),),); + + _list=DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST=_list0, + METHODE='MANUEL', + # PAS_MINI=1.0E-12 + ), + ECHEC=_F(SUBD_PAS=10), + # ADAPTATION=_F(EVENEMENT='SEUIL'), + ); + if (NB_VARI > 0): + _RES[i]=SIMU_POINT_MAT(INFO=INFO, + MATER=LIST_MATER[i], + SUPPORT='ELEMENT', + INCREMENT=_F(LIST_INST = _list, ), + EPSI_IMPOSE=_F(EPXX=_epsimp), + SIGM_INIT=_F(SIXX=SXM), + VARI_INIT=_F(VALE=[Vim[j] for j in range(NB_VARI)]), + EPSI_INIT=_F(EPXX=EXM, EPYY=0.,EPZZ=0.,EPXY=0.,EPXZ=0.,EPYZ=0.), + **motscles); + + else : + _RES[i]=SIMU_POINT_MAT(INFO=INFO, + MATER=LIST_MATER[i], + SUPPORT='ELEMENT', + INCREMENT=_F(LIST_INST = _list, ), + EPSI_IMPOSE=_F(EPXX=_epsimp), + SIGM_INIT=_F(SIXX=SXM), + EPSI_INIT=_F(EPXX=EXM, EPYY=0.,EPZZ=0.,EPXY=0.,EPXZ=0.,EPYZ=0.), + **motscles); + + # On ne teste pas les valeurs initiales (NUME_ORDRE = 0 exclu) + + _RES[i] = CALC_TABLE(reuse =_RES[i], + TABLE=_RES[i], + ACTION=(_F( + OPERATION = 'FILTRE', + NOM_PARA = 'NUME_ORDRE', + CRIT_COMP = 'GT', + VALE = 0, + ),),); + + # recuperation des valeurs initiales du futur pas de temps dans la table resultat + + EXM = _RES[i]['EPXX',1] + + SXM = _RES[i]['SIXX',1] + + if (NB_VARI > 0): + for j in range(NB_VARI): + Vim[j] = _RES[i]['V'+str(j+1),1] + + DETRUIRE ( CONCEPT = _F (NOM =_epsimp),INFO=1); + DETRUIRE ( CONCEPT = _F (NOM =_list),INFO=1); + + + + TEST_TABLE(TABLE=_RES[i], + NOM_PARA='VMIS',VALE=_U['VMIS',i+1], + FILTRE=_F(NOM_PARA='INST',VALE=time), + REFERENCE='AUTRE_ASTER',); + + TEST_TABLE(TABLE=_RES[i], + NOM_PARA='TRACE',VALE=_U['TRACE',i+1], + FILTRE=_F(NOM_PARA='INST',VALE=time), + REFERENCE='AUTRE_ASTER',); + if (NB_VARI > 0): + if VARI_TEST <> None : + for j in range(len(VARI_TEST)): + nomvari=VARI_TEST[j] + if abs(_U[nomvari,i+1]) > epsi : + TEST_TABLE(TABLE=_RES[i], + NOM_PARA=nomvari,VALE=_U[nomvari,i+1], + FILTRE=_F(NOM_PARA='INST',VALE=time), + REFERENCE='AUTRE_ASTER',); + else : + for j in range(NB_VARI): + nomvari='V'+str(j+1) + if abs(_U[nomvari,i+1]) > epsi : + TEST_TABLE(TABLE=_RES[i], + NOM_PARA=nomvari,VALE=_U[nomvari,i+1], + FILTRE=_F(NOM_PARA='INST',VALE=time), + REFERENCE='AUTRE_ASTER',); + for i in range(NCAL): + DETRUIRE ( CONCEPT = _F (NOM =_RES[i]),INFO=1) + + elif OPTION=="MECA" : + + LIST_NPAS=args['LIST_NPAS'] + YOUNG=args['YOUNG'] + POISSON=args['POISSON'] + + #Discretisation du calcul + if args['LIST_NPAS'] != None : + LIST_NPAS=args['LIST_NPAS'] + else : + LIST_NPAS=4*[1] + [1, 5, 25] + Ncal = len(LIST_NPAS) + + # les differents calculs effectues et les precisions sur chaque TEST_RESU + label_cal=['_Pa_','_Th_','_sym_','_rot_'] + 6* ['_N'] + if args['LIST_TOLE'] != None : + LIST_TOLE=args['LIST_TOLE'] + else : + LIST_TOLE=4*[1.E-10] + [1.E-1] + (Ncal-5)*[1.E-2] + [1.E-8] + + if args['PREC_ZERO'] != None : + PREC_ZERO=args['PREC_ZERO'] + else : + PREC_ZERO=len(VARI_TEST)*[1.E-10] + + prec_tgt=LIST_TOLE[-1] + + #parametres vitesse de sollicitation + t_0 = 1.0 + if COMP_INCR : + if COMP_INCR.List_F()[0]['RELATION'][0:4]== 'VISC' : + vitesse = 1.e-5 + t_0 = 5.e-2/(8.0*vitesse) + # liste d'archivage + _tempsar=DEFI_LIST_REEL( VALE =[t_0*i for i in range(9)],) + + if args['MODELISATION'] != None : + modelisation=args['MODELISATION'] + else : + modelisation= "3D" + if modelisation == "3D" : + + ################################################################################## + # TEST 3D + ################################################################################## + + eps_imp = CHAR3D(self,POISSON,YOUNG,_tempsar,INFO) + + ch_param2 = list(VARI_TEST) + ch_param=ch_param2+['SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'] + + elif modelisation == "C_PLAN" : + + ################################################################################## + # TEST 2D C_PLAN + ################################################################################## + + eps_imp = CHAR2D(self,POISSON,YOUNG,_tempsar,INFO) + + # les quantites (invariants...) sur lequels portent les calculs d'erreur et les test_resu + ch_param2 = list(VARI_TEST) + ch_param=ch_param2+['SIXX','SIYY','SIZZ','SIXY'] + + + ############################################################################### + #Discretisation et calcul + ############################################################################### + + _RES=[None]*Ncal + _RSI=[None]*len(ch_param) + TMP_S=[None] + + #pointeur materiau + P_imat = [0] + [1] + (Ncal-2)*[1] + #pointeur deformation + nomdef, symdef, rotdef = [0, 1, 2], [1, 0, 2], [3, 4, 5] + P_idef = [nomdef, nomdef,symdef, rotdef] + for i in range(6): P_idef.append(nomdef) + + ldicoeps=[] + dicoeps={} + dicoeps['EPXX']=eps_imp[0] + dicoeps['EPYY']=eps_imp[1] + dicoeps['EPZZ']=eps_imp[2] + dicoeps['EPXY']=eps_imp[3] + if modelisation == "3D" : + dicoeps['EPXZ']=eps_imp[4] + dicoeps['EPYZ']=eps_imp[5] + ldicoeps.append(dicoeps) + motscles['EPSI_IMPOSE']=ldicoeps + + if args['SUPPORT'] != None : + if modelisation == "C_PLAN" : + motscles['MODELISATION']='C_PLAN' + motscles['SUPPORT']='ELEMENT' + else : + motscles['SUPPORT']=args['SUPPORT'] + + #Boucle sur l'ensemble des calculs + for i in range(Ncal): + N = LIST_NPAS[i] + imat = P_imat[i] + idef = P_idef[i] + temps=DEFI_LIST_REEL(DEBUT=0.0, + INTERVALLE=(_F(JUSQU_A=t_0,NOMBRE=N,), + _F(JUSQU_A=2.0*t_0,NOMBRE=N,), + _F(JUSQU_A=3.0*t_0,NOMBRE=N,), + _F(JUSQU_A=4.0*t_0,NOMBRE=N,), + _F(JUSQU_A=5.0*t_0,NOMBRE=N,), + _F(JUSQU_A=6.0*t_0,NOMBRE=N,), + _F(JUSQU_A=7.0*t_0,NOMBRE=N,), + _F(JUSQU_A=8.0*t_0,NOMBRE=N,),),); + + _DEFLIST =DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST = temps,), + ECHEC=_F(SUBD_METHODE='EXTRAPOLE', + SUBD_PAS=10, + SUBD_NIVEAU=10,),) + # Resout le pb a deformation imposee + _RES[i]=SIMU_POINT_MAT(INFO=INFO, + MATER = LIST_MATER[imat], + ARCHIVAGE = _F(LIST_INST = _tempsar), + INCREMENT=_F(LIST_INST=_DEFLIST,), + **motscles + ); + + # On renomme les composantes en fonction de l'ordre de discretisation + _RSI=RENOMME(self,i,LIST_NPAS,label_cal,ch_param,_RES,_RSI) + + DETRUIRE ( CONCEPT = _F (NOM = temps,),INFO=1) + + # TEST_RESU sur les erreurs relatives + # les quantites (invariants...) sur lequels portent les calculs d'erreur et les test_resu + _RSI=TEST_ECART(self,ch_param2,label_cal,LIST_NPAS,Ncal,ch_param,_RSI,LIST_TOLE,PREC_ZERO) + + for ch in ch_param2 : + i=ch_param2.index(ch) + if INFO==2 : IMPR_TABLE(TABLE=_RSI[i]); + for j in range(Ncal) : + ch_cal = ch + label_cal[j] + str(LIST_NPAS[j]) + ch_err = 'ER_' + ch_cal + TEST_TABLE(TABLE=_RSI[i],NOM_PARA=ch_err, + TYPE_TEST='MAX',VALE=0.,CRITERE='ABSOLU',PRECISION=LIST_TOLE[j],REFERENCE='ANALYTIQUE',); + + ############################################################################### + # Test de la matrice tangente sur le calcul le plus fin + ############################################################################### + + N = LIST_NPAS[Ncal-1] + _Linst=DEFI_LIST_REEL(DEBUT=0.0, + INTERVALLE=(_F(JUSQU_A=t_0,NOMBRE=N,), + _F(JUSQU_A=2.0*t_0,NOMBRE=N,), + _F(JUSQU_A=3.0*t_0,NOMBRE=N,), + _F(JUSQU_A=4.0*t_0,NOMBRE=N,), + _F(JUSQU_A=5.0*t_0,NOMBRE=N,), + _F(JUSQU_A=6.0*t_0,NOMBRE=N,), + _F(JUSQU_A=7.0*t_0,NOMBRE=N,), + _F(JUSQU_A=8.0*t_0,NOMBRE=N,),),); + + if COMP_INCR : + motscles['COMP_INCR'][0]['TYPE_MATR_TANG'] = 'VERIFICATION' + + _DEFLIS2 =DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST = _Linst,), + ECHEC=_F(SUBD_METHODE='EXTRAPOLE', + SUBD_PAS=10, + SUBD_NIVEAU=10,),) + # Resout le pb a deformation imposee + U=SIMU_POINT_MAT(INFO=INFO, + MATER = LIST_MATER[imat], + ARCHIVAGE = _F(LIST_INST = _tempsar), + INCREMENT=_F(LIST_INST=_DEFLIS2,), + **motscles + ); + + _DIFFMAT=VERI_MATR_TANG() + + TEST_TABLE(TABLE=_DIFFMAT, + NOM_PARA='MAT_DIFF', + TYPE_TEST='MAX', + VALE=0., + CRITERE='ABSOLU', + PRECISION=prec_tgt, + REFERENCE='ANALYTIQUE',); + + if INFO==2 : IMPR_TABLE(TABLE=_DIFFMAT) + + return ier + diff --git a/Aster/Cata/cataSTA10/SD/co_cham_no.py b/Aster/Cata/cataSTA10/SD/co_cham_no.py index 76496815..59e4c636 100644 --- a/Aster/Cata/cataSTA10/SD/co_cham_no.py +++ b/Aster/Cata/cataSTA10/SD/co_cham_no.py @@ -1,8 +1,8 @@ -#@ MODIF co_cham_no SD DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF co_cham_no SD DATE 14/12/2010 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# 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 @@ -28,13 +28,14 @@ import numpy # ----------------------------------------------------------------------------- # post-traitement : class post_comp_cham_no : - def __init__(self,valeurs,noeud=None) : + def __init__(self,valeurs,noeud=None,comp=None) : self.valeurs=valeurs self.noeud=noeud + self.comp=comp # ----------------------------------------------------------------------------- class cham_no_sdaster(cham_gd_sdaster, sd_cham_no): - def EXTR_COMP(self,comp,lgno,topo=0) : + def EXTR_COMP(self,comp=' ',lgno=[],topo=0) : """ retourne les valeurs de la composante comp du champ sur la liste de groupes de noeuds lgno avec eventuellement l'info de la topologie si topo>0. Si lgno est une liste vide, c'est equivalent @@ -42,7 +43,10 @@ class cham_no_sdaster(cham_gd_sdaster, sd_cham_no): Attributs retourne - self.valeurs : numpy.array contenant les valeurs Si on a demande la topo (i.e. self.topo = 1) : - - self.noeud : numero de noeud """ + - self.noeud : numero de noeud + Si on demande toutes les composantes (comp = ' ') : + - self.comp : les composantes associees a chaque grandeur pour chaque noeud + """ if not self.accessible() : raise Accas.AsException("Erreur dans cham_no.EXTR_COMP en PAR_LOT='OUI'") @@ -50,7 +54,7 @@ class cham_no_sdaster(cham_gd_sdaster, sd_cham_no): ncham=ncham+(8-len(ncham))*' ' nchams=ncham[0:7]+'S' ncmp=comp+(8-len(comp))*' ' - + aster.prepcompcham(ncham,nchams,ncmp,"NO ",topo,lgno) valeurs=numpy.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V')) @@ -60,9 +64,13 @@ class cham_no_sdaster(cham_gd_sdaster, sd_cham_no): else : noeud=None - aster.prepcompcham("__DETR__",nchams,ncmp,"NO ",topo,lgno) - - return post_comp_cham_no(valeurs,noeud) + if comp[:1] == ' ': + comp=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.C')) + aster.prepcompcham("__DETR__",nchams,ncmp,"NO ",topo,lgno) + return post_comp_cham_no(valeurs,noeud,comp) + else: + aster.prepcompcham("__DETR__",nchams,ncmp,"NO ",topo,lgno) + return post_comp_cham_no(valeurs,noeud) def __add__(self, other): from SD.sd_nume_equa import sd_nume_equa diff --git a/Aster/Cata/cataSTA10/SD/co_corresp_2_mailla.py b/Aster/Cata/cataSTA10/SD/co_corresp_2_mailla.py new file mode 100644 index 00000000..27586889 --- /dev/null +++ b/Aster/Cata/cataSTA10/SD/co_corresp_2_mailla.py @@ -0,0 +1,25 @@ +#@ MODIF co_corresp_2_mailla SD DATE 14/12/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 * +from SD.sd_corresp_2_mailla import sd_corresp_2_mailla + +class corresp_2_mailla(ASSD, sd_corresp_2_mailla): + pass diff --git a/Aster/Cata/cataSTA10/SD/co_grille.py b/Aster/Cata/cataSTA10/SD/co_grille.py new file mode 100644 index 00000000..724b7b0e --- /dev/null +++ b/Aster/Cata/cataSTA10/SD/co_grille.py @@ -0,0 +1,29 @@ +#@ MODIF co_grille SD DATE 08/03/2011 AUTEUR MASSIN P.MASSIN + +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT + +from SD import * +from co_maillage import maillage_sdaster +from sd_grille import sd_grille + +# ----------------------------------------------------------------------------- +class grille_sdaster(maillage_sdaster,sd_grille): + pass + diff --git a/Aster/Cata/cataSTA10/SD/co_matr_asse.py b/Aster/Cata/cataSTA10/SD/co_matr_asse.py index b57e3846..46858f22 100644 --- a/Aster/Cata/cataSTA10/SD/co_matr_asse.py +++ b/Aster/Cata/cataSTA10/SD/co_matr_asse.py @@ -1,27 +1,75 @@ -#@ MODIF co_matr_asse SD DATE 13/02/2007 AUTEUR PELLET J.PELLET +#@ MODIF co_matr_asse SD DATE 07/12/2010 AUTEUR PELLET J.PELLET # -*- 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. +# 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_matr_asse import sd_matr_asse +from sd_nume_ddl import sd_nume_ddl +from SD.sd_stoc_morse import sd_stoc_morse +import numpy # ----------------------------------------------------------------------------- class matr_asse(ASSD, sd_matr_asse): - pass - + + + def EXTR_MATR(self) : + """ retourne les valeurs de la matrice dans un format numpy + Attributs retourne + - self.valeurs : numpy.array contenant les valeurs """ + + if not self.accessible(): + raise Accas.AsException("Erreur dans matr_asse.EXTR_MATR en PAR_LOT='OUI'") + + refa = numpy.array(self.REFA.get()) + ma=refa[0] + nu=refa[1] + smos = sd_stoc_morse(nu[:14]+'.SMOS') + + valm=self.VALM.get() + smhc=smos.SMHC.get() + smdi=smos.SMDI.get() + + sym=len(valm)==1 + dim=len(smdi) + nnz=smdi[dim-1] + + triang_sup = numpy.array(valm[1]) + print "AJACOT triang_sup=",triang_sup + if sym: + triang_inf = triang_sup + else: + triang_inf = numpy.array(valm[2]) + + if type(valm[1][0]) == type(1.j) : + dtype=complex + else : + dtype=float + valeur=numpy.zeros([dim, dim], dtype=dtype) + + jcol=1 + for kterm in range(1,nnz+1): + ilig=smhc[kterm-1] + if (smdi[jcol-1] < kterm) : jcol=jcol+1 + + valeur[jcol-1,ilig-1]=triang_inf[kterm-1] + valeur[ilig-1,jcol-1]=triang_sup[kterm-1] + + + + return valeur diff --git a/Aster/Cata/cataSTA10/SD/sd_cham_no.py b/Aster/Cata/cataSTA10/SD/sd_cham_no.py index 66e7c4e6..7f6c5d76 100644 --- a/Aster/Cata/cataSTA10/SD/sd_cham_no.py +++ b/Aster/Cata/cataSTA10/SD/sd_cham_no.py @@ -1,4 +1,4 @@ -#@ MODIF sd_cham_no SD DATE 03/11/2008 AUTEUR PELLET J.PELLET +#@ MODIF sd_cham_no SD DATE 07/09/2010 AUTEUR DESOZA T.DESOZA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -19,8 +19,8 @@ # ====================================================================== from SD import * +from SD.sd_util import * from SD.sd_titre import sd_titre - from SD.sd_prof_chno import sd_prof_chno @@ -28,7 +28,7 @@ class sd_cham_no(sd_titre): #------------------------------------ nomj = SDNom(fin=19) VALE = AsVect(ltyp=Parmi(4,8,16,24), type=Parmi('C', 'I', 'K', 'R'), docu=Parmi('', '2', '3'), ) - REFE = AsVK24() + REFE = AsVK24(lonmax=4) DESC = AsVI(docu='CHNO', ) @@ -36,19 +36,45 @@ class sd_cham_no(sd_titre): # retourne "vrai" si la SD semble exister (et donc qu'elle peut etre vérifiée) return self.REFE.exists + def u_desc(self): + desc=self.DESC.get() + gd = desc[0] + num = desc[1] + return gd,num + + def u_refe(self): + refe=self.REFE.get() + mail = refe[0] + prof_chno = refe[1] + return mail,prof_chno + def check_cham_no_i_REFE(self, checker): if not self.exists() : return - lnom = self.REFE.get() + if checker.names.has_key(self.REFE): return + + mail, prof_chno = self.u_refe() # faut-il vérifier le sd_maillage de chaque sd_cham_no ? AJACOT_PB # - cela risque de couter cher # - cela pose un problème "import circulaire" avec sd_maillage -> sd_cham_no => import ici from SD.sd_maillage import sd_maillage - sd2 = sd_maillage(lnom[0]) + sd2 = sd_maillage(mail) sd2.check(checker) - if lnom[1].strip() : - if checker.names.has_key(lnom[1][:14]+'.NUME.PRNO'): return - sd2 = sd_prof_chno(lnom[1]) ; sd2.check(checker) - + if prof_chno.strip() : + if checker.names.has_key(prof_chno[:14]+'.NUME.PRNO'): return + sd2 = sd_prof_chno(prof_chno) + sd2.check(checker) + def check_cham_no_DESC(self, checker): + if not self.exists(): return + if checker.names.has_key(self.DESC): return + + gd, num = self.u_desc() + if (num < 0): + nb_ec = sdu_nb_ec(gd) + assert self.DESC.lonmax == 2 + nb_ec + else: + assert self.DESC.lonmax == 2 + + diff --git a/Aster/Cata/cataSTA10/SD/sd_compor.py b/Aster/Cata/cataSTA10/SD/sd_compor.py index df847589..892d47dd 100644 --- a/Aster/Cata/cataSTA10/SD/sd_compor.py +++ b/Aster/Cata/cataSTA10/SD/sd_compor.py @@ -1,8 +1,8 @@ -#@ MODIF sd_compor SD DATE 08/12/2009 AUTEUR PROIX J-M.PROIX +#@ MODIF sd_compor SD DATE 14/12/2010 AUTEUR PROIX J-M.PROIX # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# 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 @@ -82,15 +82,14 @@ class sd_compor(AsBase): famil =cprk[5*k+0] mater =cprk[5*k+1] ecoul =cprk[5*k+2] - ecro_isot =cprk[5*k+3] - ecro_cine =cprk[5*k+4] + MONO_isot =cprk[5*k+3] + MONO_cine =cprk[5*k+4] sd2=sd_mater(mater) ; sd2.check(checker) assert famil in ('BASAL','BCC24','PRISMATIQUE','OCTAEDRIQUE','PYRAMIDAL1', - 'PYRAMIDAL2','CUBIQUE1','CUBIQUE2','MACLAGE','JOINT_GRAIN', - 'RL','UNIAXIAL') - assert ecoul in ('ECOU_VISC1','ECOU_VISC2','ECOU_VISC3') - assert ecro_isot in ('ECRO_ISOT1','ECRO_ISOT2') - assert ecro_cine in ('ECRO_CINE1','ECRO_CINE2') + 'PYRAMIDAL2','CUBIQUE1','CUBIQUE2','MACLAGE','UNIAXIAL') + assert ecoul in ('MONO_VISC1','MONO_VISC2','MONO_VISC3') + assert MONO_isot in ('MONO_ISOT1','MONO_ISOT2') + assert MONO_cine in ('MONO_CINE1','MONO_CINE2') diff --git a/Aster/Cata/cataSTA10/SD/sd_contact.py b/Aster/Cata/cataSTA10/SD/sd_contact.py index ae9c94a9..809a8717 100644 --- a/Aster/Cata/cataSTA10/SD/sd_contact.py +++ b/Aster/Cata/cataSTA10/SD/sd_contact.py @@ -1,4 +1,4 @@ -#@ MODIF sd_contact SD DATE 20/04/2010 AUTEUR JAUBERT A.JAUBERT +#@ MODIF sd_contact SD DATE 19/10/2010 AUTEUR DESOZA T.DESOZA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -32,18 +32,20 @@ class sd_contact(AsBase): # Recap longueurs vecteurs (voir CFMMVD.F) - zdime = 12 - zpari = 25 + zdime = 18 + zpari = 27 zparr = 5 zdirn = 6 zcmdf = 6 - zcmcf = 27 - zcmxf = 16 - zexcl = 6 - ztypn = 1 + zcmcf = 29 + zcmxf = 18 + zexcl = 3 + ztypn = 2 ztypm = 2 zmaes = 6 - zmesx = 5 + zmesx = 5 + zmeth = 23 + ztole = 3 MODELE = AsVK8(SDNom(nomj='.CHME.MODEL.NOMO'),lonmax=1, ) PARACI = AsVI (SDNom(nomj='.CONTACT.PARACI') ,lonmax=zpari,) @@ -76,24 +78,22 @@ class sd_contact(AsBase): 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 + ntnoe = para[7] + ntmae = para[8] + ntpt = para[15] + ntelno = para[17] + return nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,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() + nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno = self.dimeC() lldime = self.NDIMCO.lonmax llmeth = self.METHCO.lonmax lltole = self.TOLECO.lonmax - assert llmeth == nzoco*10 - assert lltole == nzoco*2 + assert llmeth == nzoco*self.zmeth + assert lltole == nzoco*self.ztole assert lldime == self.zdime if (iform==4) : lldime = self.NDIMCU.lonmax @@ -114,7 +114,6 @@ class sd_contact(AsBase): 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') )) @@ -135,7 +134,7 @@ class sd_contact(AsBase): 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() + nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno = self.dimeC() assert self.JEUFO1.lonmax == nzoco assert self.JEUFO2.lonmax == nzoco assert self.DIRAPP.lonmax == 3*nzoco @@ -148,10 +147,6 @@ class sd_contact(AsBase): 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) @@ -173,9 +168,9 @@ class sd_contact(AsBase): 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() + nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno = self.dimeC() assert self.CARADF.lonmax == self.zcmdf*nzoco - assert ntnoe == ntpc + assert ntnoe == ntpt return CARACF = Facultatif(AsVR(SDNom(nomj='.CONTACT.CARACF') )) @@ -196,7 +191,7 @@ class sd_contact(AsBase): 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() + nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno = self.dimeC() assert self.CARACF.lonmax == self.zcmcf*nzoco assert self.EXCLFR.lonmax == self.zexcl*nzoco @@ -235,7 +230,7 @@ class sd_contact(AsBase): 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() + nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno = self.dimeC() paraci = self.PARACI.get() if (paraci[0]!=0) : assert self.MAESCX.lonuti == self.zmesx*ntmae diff --git a/Aster/Cata/cataSTA10/SD/sd_corresp_2_mailla.py b/Aster/Cata/cataSTA10/SD/sd_corresp_2_mailla.py index 340ca74f..400182ed 100644 --- a/Aster/Cata/cataSTA10/SD/sd_corresp_2_mailla.py +++ b/Aster/Cata/cataSTA10/SD/sd_corresp_2_mailla.py @@ -1,26 +1,28 @@ -#@ MODIF sd_corresp_2_mailla SD DATE 02/02/2010 AUTEUR PELLET J.PELLET +#@ MODIF sd_corresp_2_mailla SD DATE 08/03/2011 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. +# COPYRIGHT (C) 1991 - 2011 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_titre import sd_titre -class sd_corresp_2_mailla(AsBase): + +class sd_corresp_2_mailla(sd_titre): nomj = SDNom(fin=16) PJXX_K1 = AsVK24(lonmax=5) @@ -34,7 +36,6 @@ class sd_corresp_2_mailla(AsBase): PJEF_M1 = Facultatif(AsVI()) PJEF_CF = Facultatif(AsVR()) PJEF_TR = Facultatif(AsVI()) - PJEF_AM = Facultatif(AsVI()) PJEF_CO = Facultatif(AsVR()) PJNG_I1 = Facultatif(AsVI()) diff --git a/Aster/Cata/cataSTA10/SD/sd_grille.py b/Aster/Cata/cataSTA10/SD/sd_grille.py new file mode 100644 index 00000000..82f2fa7d --- /dev/null +++ b/Aster/Cata/cataSTA10/SD/sd_grille.py @@ -0,0 +1,29 @@ +#@ MODIF sd_grille SD DATE 08/03/2011 AUTEUR MASSIN P.MASSIN + +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT + +from SD import * +from SD.sd_maillage import sd_maillage + +class sd_grille(sd_maillage): + nomj = SDNom(fin=8) + + GRLR = AsVR() + GRLI = AsVI() diff --git a/Aster/Cata/cataSTA10/SD/sd_maillage.py b/Aster/Cata/cataSTA10/SD/sd_maillage.py index 2ac6be12..b1fd54a1 100644 --- a/Aster/Cata/cataSTA10/SD/sd_maillage.py +++ b/Aster/Cata/cataSTA10/SD/sd_maillage.py @@ -1,8 +1,8 @@ -#@ MODIF sd_maillage SD DATE 06/05/2008 AUTEUR PELLET J.PELLET +#@ MODIF sd_maillage SD DATE 11/05/2011 AUTEUR SELLENET N.SELLENET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -68,7 +68,6 @@ class sd_maillage(sd_titre): VGE = Facultatif(sd_voisinage()) ADAPTATION = Facultatif(AsVI(lonmax=1, )) - FORM = Facultatif(AsVK32(SDNom(debut=19), lonmax=2, )) def u_dime(self): diff --git a/Aster/Cata/cataSTA10/SD/sd_nume_ddl_gene.py b/Aster/Cata/cataSTA10/SD/sd_nume_ddl_gene.py index 88ed5120..363ae9aa 100644 --- a/Aster/Cata/cataSTA10/SD/sd_nume_ddl_gene.py +++ b/Aster/Cata/cataSTA10/SD/sd_nume_ddl_gene.py @@ -1,4 +1,4 @@ -#@ MODIF sd_nume_ddl_gene SD DATE 03/11/2008 AUTEUR PELLET J.PELLET +#@ MODIF sd_nume_ddl_gene SD DATE 21/06/2010 AUTEUR CORUS M.CORUS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -22,12 +22,13 @@ from SD import * from SD.sd_nume_ddl_com import sd_nume_ddl_com from SD.sd_nume_eqge import sd_nume_eqge - +from SD.sd_nume_elim import sd_nume_elim class sd_nume_ddl_gene(sd_nume_ddl_com): #--------------------------------------- nomj = SDNom(fin=14) nume = Facultatif(sd_nume_eqge(SDNom(nomj='.NUME'))) # n'existe pas toujours : CALC_MATR_AJOU/fdlv106a + ELIM = Facultatif(sd_nume_elim(SDNom(nomj='.ELIM'))) # n'existe pas toujours : ELIMINATION diff --git a/Aster/Cata/cataSTA10/SD/sd_nume_elim.py b/Aster/Cata/cataSTA10/SD/sd_nume_elim.py new file mode 100644 index 00000000..98bf5bc2 --- /dev/null +++ b/Aster/Cata/cataSTA10/SD/sd_nume_elim.py @@ -0,0 +1,30 @@ +#@ MODIF sd_nume_elim SD DATE 21/06/2010 AUTEUR CORUS M.CORUS +# -*- 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 * + +from SD.sd_prof_vgen import sd_prof_vgen +class sd_nume_elim(sd_prof_vgen): + nomj = SDNom(fin=19) + BASE = AsVR(SDNom(debut=19),) + TAIL = AsVI(SDNom(debut=19),) + NOMS = AsVK8(SDNom(debut=19),) + + diff --git a/Aster/Cata/cataSTA10/SD/sd_partition.py b/Aster/Cata/cataSTA10/SD/sd_partition.py index 2bccd8d9..ac23f4a6 100644 --- a/Aster/Cata/cataSTA10/SD/sd_partition.py +++ b/Aster/Cata/cataSTA10/SD/sd_partition.py @@ -1,21 +1,21 @@ -#@ MODIF sd_partition SD DATE 16/06/2009 AUTEUR PELLET J.PELLET +#@ MODIF sd_partition SD DATE 28/06/2010 AUTEUR PELLET J.PELLET # -*- 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. +# 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 * @@ -23,4 +23,7 @@ from SD import * class sd_partition(AsBase): nomj = SDNom(fin=8) NUPROC_MAILLE = AsVI(SDNom(nomj='.NUPROC.MAILLE')) + # si partition 'GROUP_ELEM' : + NUPROC_GREL = Facultatif(AsVI(SDNom(nomj='.NUPROC.GREL'))) + NUPROC_LIGREL = Facultatif(AsVK24(SDNom(nomj='.NUPROC.LIGREL'),LONMAX=1)) diff --git a/Aster/Cata/cataSTA10/SD/sd_proj_mesu.py b/Aster/Cata/cataSTA10/SD/sd_proj_mesu.py index eb8e7443..62a7126d 100644 --- a/Aster/Cata/cataSTA10/SD/sd_proj_mesu.py +++ b/Aster/Cata/cataSTA10/SD/sd_proj_mesu.py @@ -1,8 +1,8 @@ -#@ MODIF sd_proj_mesu SD DATE 15/01/2008 AUTEUR PELLET J.PELLET +#@ MODIF sd_proj_mesu SD DATE 14/12/2010 AUTEUR PELLET J.PELLET # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# 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 @@ -53,7 +53,7 @@ class sd_proj_mesu(AsBase): # vérifications communes : assert self.PJMRG.lonmax >= nbutil - n1=self.PJMBP.lonmax + n1=self.PJMBP.lonuti nbmode=n1/nbutil assert n1==nbutil*nbmode , (nbmode,nbutil,n1) assert self.PJMRF.exists diff --git a/Aster/Cata/cataSTA10/SD/sd_resultat.py b/Aster/Cata/cataSTA10/SD/sd_resultat.py index 922c9a58..1b47ddd5 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 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF sd_resultat SD DATE 20/07/2010 AUTEUR MAHFOUZ D.MAHFOUZ # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -94,6 +94,10 @@ class sd_resultat(sd_titre): # les numeros d'ordre doivent etre tous différents : sdu_tous_differents(V,checker,V.get()[:nuti],'1:NUTI') + # les numeros d'ordre doivent etre croissants + if nuti > 1: + assert sdu_monotone(V.get()[:nuti]) in (1,) + # vérification des longueurs des différents objets : def check_LONGUEURS(self, checker): diff --git a/Aster/Cata/cataSTA10/SD/sd_solveur.py b/Aster/Cata/cataSTA10/SD/sd_solveur.py index 3d732810..d3837f9e 100644 --- a/Aster/Cata/cataSTA10/SD/sd_solveur.py +++ b/Aster/Cata/cataSTA10/SD/sd_solveur.py @@ -1,8 +1,8 @@ -#@ MODIF sd_solveur SD DATE 05/10/2009 AUTEUR BOITEAU O.BOITEAU +#@ MODIF sd_solveur SD DATE 18/01/2011 AUTEUR BOITEAU O.BOITEAU # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -22,7 +22,7 @@ from SD import * class sd_solveur(AsBase): nomj = SDNom(fin=19) - SLVK = AsVK24(SDNom(debut=19), lonmax=11, ) + SLVK = AsVK24(SDNom(debut=19), lonmax=12, ) SLVR = AsVR(SDNom(debut=19), lonmax=4, ) SLVI = AsVI(SDNom(debut=19), lonmax=7, ) @@ -34,7 +34,7 @@ class sd_solveur(AsBase): if method == 'MUMPS' : assert slvk[1] in ('AUTO', 'SANS'), slvk assert slvk[2] in ('NONSYM', 'SYMGEN', 'SYMDEF', 'AUTO'), slvk - assert slvk[3] in ('AMD','AMF','PORD','METIS','QAMD','AUTO'), slvk + assert slvk[3] in ('AMD','AMF','PORD','METIS','QAMD','AUTO','SCOTCH'), slvk assert slvk[4] in ('OUI', 'NON'), slvk assert slvk[5] in ('OUI', 'NON'), slvk else : diff --git a/Aster/Cata/cataSTA10/SD/sd_util.py b/Aster/Cata/cataSTA10/SD/sd_util.py index a4f290be..1f1c5d8c 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 19/04/2010 AUTEUR GREFFET N.GREFFET +#@ MODIF sd_util SD DATE 07/09/2010 AUTEUR DESOZA T.DESOZA # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -176,7 +176,11 @@ def sdu_licmp_gd(numgd) : nocmp=aster.getcolljev('&CATA.GD.NOMCMP') return nocmp[nomgd.ljust(8)] - +def sdu_nb_ec(numgd) : + # retourne le nombre d'entiers codés pour décrire les composantes de la grandeur (numgd) + assert numgd > 0 and numgd <1000 , numgd + descrigd=aster.getcolljev('&CATA.GD.DESCRIGD') + return descrigd[numgd-1][-1+3] # 3) Utilitaires pour la vérification de l'existence des objets : # ----------------------------------------------------------------------------------------- diff --git a/Aster/Cata/cataSTA10/SD/sd_xfem.py b/Aster/Cata/cataSTA10/SD/sd_xfem.py index a4af5cdd..092eb782 100644 --- a/Aster/Cata/cataSTA10/SD/sd_xfem.py +++ b/Aster/Cata/cataSTA10/SD/sd_xfem.py @@ -1,8 +1,8 @@ -#@ MODIF sd_xfem SD DATE 11/01/2010 AUTEUR COLOMBO D.COLOMBO +#@ MODIF sd_xfem SD DATE 08/03/2011 AUTEUR MASSIN P.MASSIN # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -24,6 +24,7 @@ from SD.sd_cham_no import sd_cham_no from SD.sd_cham_elem import sd_cham_elem from SD.sd_carte import sd_carte from SD.sd_util import * +from SD.sd_l_table import sd_l_table @@ -35,6 +36,7 @@ class sd_fiss_xfem(AsBase): nomj = SDNom(fin=8) INFO = AsVK16(lonmax=2,) # info discontinuite + MODELE = AsVK8(lonmax=1,) # I.1) objets relatifs aux level sets @@ -47,6 +49,14 @@ class sd_fiss_xfem(AsBase): BASEFOND = Facultatif(AsVR()) FONDMULT = Facultatif(AsVI()) CARAFOND = Facultatif(AsVR(lonmax=12,)) + JONFISS = Facultatif(AsVK8()) + JONCOEF = Facultatif(AsVI()) +# objets relatifs a la grille auxiliaire + GRILLE_MODELE = Facultatif(AsVK8(SDNom(nomj='.GRI.MODELE'),lonmax=1,)) + GRILLE_LNNO = Facultatif(sd_cham_no(SDNom(nomj='.GRI.LNNO'))) + GRILLE_LTNO = Facultatif(sd_cham_no(SDNom(nomj='.GRI.LTNO'))) + GRILLE_GRLNNO = Facultatif(sd_cham_no(SDNom(nomj='.GRI.GRLNNO'))) + GRILLE_GRLTNO = Facultatif(sd_cham_no(SDNom(nomj='.GRI.GRLTNO'))) # I.2) objets relatifs a l'enrichissement @@ -59,15 +69,14 @@ class sd_fiss_xfem(AsBase): MAILFISS_HEAV = Facultatif(AsVI(SDNom(nomj='.MAILFISS .HEAV'))) MAILFISS_HECT = Facultatif(AsVI(SDNom(nomj='.MAILFISS .HECT'))) MAILFISS_INDIC = AsVI(SDNom(nomj='.MAILFISS .INDIC'), lonmax=6, ) - LISNOH = Facultatif(AsVI()) # 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'))) +# objets relatifs a la localisation du domaine de calcul 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 @@ -75,8 +84,10 @@ 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'))) +# I.4) objets relatifs au contact + # une sd_modele peut avoir une "sd_l_table" contenant des grandeurs caractéristiques de l'étude : + lt = Facultatif(sd_l_table(SDNom(nomj=''))) # 1.5) verifications d'existence : @@ -85,7 +96,8 @@ class sd_fiss_xfem(AsBase): 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)) - + sdu_ensemble((self.GRILLE_MODELE, self.GRILLE_LNNO.DESC, self.GRILLE_GRLNNO.DESC)) + sdu_ensemble((self.GRILLE_LTNO.DESC, self.GRILLE_GRLTNO.DESC)) #------------------------------- # II. sd modele @@ -101,7 +113,9 @@ class sd_modele_xfem(AsBase): TOPOSE_HEA = sd_cham_elem(SDNom(nomj='.TOPOSE.HEA')) TOPOSE_LON = sd_cham_elem(SDNom(nomj='.TOPOSE.LON')) TOPOSE_AIN = sd_cham_elem(SDNom(nomj='.TOPOSE.AIN')) + TOPOSE_PMI = sd_cham_elem(SDNom(nomj='.TOPOSE.PMI')) TOPOSE_CRI = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.CRI'))) + # II.2) objets relatifs aux facettes de contact @@ -118,10 +132,13 @@ class sd_modele_xfem(AsBase): # II.3) objets concatenes relatifs aux level sets - LNNO = sd_cham_no() - LTNO = sd_cham_no() - BASLOC = sd_cham_no() - STNO = sd_cham_no() + LNNO = sd_cham_elem(SDNom(nomj='.LNNO')) + LTNO = sd_cham_elem(SDNom(nomj='.LTNO')) + BASLOC = sd_cham_elem(SDNom(nomj='.BASLOC')) + STNO = sd_cham_elem(SDNom(nomj='.STNO')) + FISSNO = sd_cham_elem(SDNom(nomj='.FISSNO')) + NOXFEM = sd_cham_no() + LISNOH = Facultatif(AsVI()) # II.4) autres objets diff --git a/Aster/Cata/cataSTA10/SD/utilsd.py b/Aster/Cata/cataSTA10/SD/utilsd.py index 5c9668ff..7271c21e 100644 --- a/Aster/Cata/cataSTA10/SD/utilsd.py +++ b/Aster/Cata/cataSTA10/SD/utilsd.py @@ -23,7 +23,7 @@ Utilitaire sur le catalogue des structures de données. """ -__revision__ = "$Id: utilsd.py,v 1.1.2.2 2010-06-03 09:16:27 pnoyret Exp $" +__revision__ = "$Id: utilsd.py,v 1.2.4.2.2.1 2011-05-13 14:43:07 barate Exp $" import sys import os diff --git a/Aster/Cata/cataSTA10/Utilitai/Graph.py b/Aster/Cata/cataSTA10/Utilitai/Graph.py new file mode 100644 index 00000000..23127b1f --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/Graph.py @@ -0,0 +1,1200 @@ +#@ MODIF Graph Utilitai DATE 26/05/2010 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== + +# RESPONSABLE COURTOIS M.COURTOIS +__all__ = ['Graph', 'AjoutParaCourbe'] + +import sys +import os +import os.path +import string +import re +import types +import time +import numpy + +from Utilitai.Utmess import UTMESS + +# try/except pour utiliser hors aster +try: + import aster +except ImportError: + class fake_aster: + def repout(self): return '/opt/aster/outils' + aster=fake_aster() + + +if not sys.modules.has_key('Table'): + try: + from Utilitai import Table + except ImportError: + import Table + + +# ------------------------------------------------------------------------------ +class Graph: + """Cette classe définit l'objet Graph pour Code_Aster. + + Important : Utiliser les méthodes dédiées à la manipulation des données + (AjoutCourbe, ...) car elles tiennent à jour les attributs "privés" + relatifs aux données : NbCourbe, les extrema... + + Attributs : + - Données de chaque courbe : + .Valeurs : liste des valeurs de chaque courbe, pour chaque courbe : + (paramètres, parties réelles [, parties imaginaires]) + .Legendes : liste des noms de chaque courbe + .Labels : liste des noms des colonnes de chaque courbe + .Styles : liste des infices de styles de ligne + .Couleurs : liste des indices de couleurs + .Marqueurs : liste des indices de symboles/marqueurs + .FreqMarq : liste des fréquences des marqueurs + .Tri : liste du tri à effectuer sur les données ('N', 'X', 'Y', + 'XY' ou 'YX') + Pour Lignes, Couleurs, Marqueurs, FreqMarq, -1 signifie valeur par défaut + du traceur. + + - Propriétés : + .Titre : titre du graphique + .SousTitre : sous-titre (appelé commentaire dans agraf) + - Axes : + .Min_X, .Max_X, .Min_Y, .Max_Y : bornes du tracé (une méthode permet de + renseigner automatiquement ces valeurs avec les extréma globaux) + .Legende_X, .Legende_Y : légende des axes + .Echelle_X, .Echelle_Y : type d'échelle (LIN, LOG) + .Grille_X, .Grille_Y : paramètre de la grille (pas ou fréquence au choix + de l'utilisateur en fonction du traceur qu'il veut utiliser) + + Attributs privés (modifiés uniquement par les méthodes de la classe) : + .NbCourbe : nombre de courbes + .BBXmin, BBXmax, BBYmin, BBYmax : extrema globaux (bounding box) + .LastTraceArgs, LastTraceFormat : données utilisées lors du dernier tracé + """ +# ------------------------------------------------------------------------------ + def __init__(self): + """Construction + valeurs par défaut des attributs + """ + self.Valeurs = [] + self.Legendes = [] + self.Labels = [] + self.Styles = [] + self.Couleurs = [] + self.Marqueurs = [] + self.FreqMarq = [] + self.Tri = [] + self.Titre = '' + self.SousTitre = '' + self.Min_X = None + self.Max_X = None + self.Min_Y = None + self.Max_Y = None + self.MinP_X = 1.e+99 # minimum > 0 pour les échelles LOG + self.MinP_Y = 1.e+99 + self.Legende_X = '' + self.Legende_Y = '' + self.Echelle_X = 'LIN' + self.Echelle_Y = 'LIN' + self.Grille_X = -1 + self.Grille_Y = -1 + # attributs que l'utilisateur ne doit pas modifier + self.NbCourbe = len(self.Valeurs) + self.BBXmin = 1.e+99 + self.BBXmax = -1.e+99 + self.BBYmin = 1.e+99 + self.BBYmax = -1.e+99 + # pour conserver les paramètres du dernier tracé + self.LastTraceArgs = {} + self.LastTraceFormat = '' + +# ------------------------------------------------------------------------------ + def SetExtremaX(self,marge=0., x0=None, x1=None, force=True): + """Remplit les limites du tracé (Min/Max_X) avec les valeurs de la + bounding box +/- avec une 'marge'*(Max-Min)/2. + x0,x1 permettent de modifier la bb. + """ + if x0<>None: self.BBXmin=min([self.BBXmin, x0]) + if x1<>None: self.BBXmax=max([self.BBXmax, x1]) + + dx=max(self.BBXmax-self.BBXmin,0.01*self.BBXmax) + if dx == 0.: + dx = 1.e-6 + if force or self.Min_X==None: + self.Min_X = self.BBXmin - marge*dx/2. + if force or self.Max_X==None: + self.Max_X = self.BBXmax + marge*dx/2. + return + + def SetExtremaY(self,marge=0., y0=None, y1=None, force=True): + """Remplit les limites du tracé (Min/Max_Y) avec les valeurs de la + bounding box +/- avec une 'marge'*(Max-Min)/2. + y0,y1 permettent de modifier la bb. + """ + if y0<>None: self.BBYmin=min([self.BBYmin, y0]) + if y1<>None: self.BBYmax=max([self.BBYmax, y1]) + + dy=max(self.BBYmax-self.BBYmin,0.01*self.BBYmax) + if dy == 0.: + dy = 1.e-6 + if force or self.Min_Y==None: + self.Min_Y = self.BBYmin - marge*dy/2. + if force or self.Max_Y==None: + self.Max_Y = self.BBYmax + marge*dy/2. + return + + def SetExtrema(self,marge=0., x0=None, x1=None, y0=None, y1=None, force=True): + """Remplit les limites du tracé (Min/Max_X/Y) avec les valeurs de la + bounding box +/- avec une 'marge'*(Max-Min)/2. + x0,x1,y0,y1 permettent de modifier la bb. + """ + self.SetExtremaX(marge, x0, x1, force=force) + self.SetExtremaY(marge, y0, y1, force=force) + return +# ------------------------------------------------------------------------------ + def AutoBB(self,debut=-1): + """Met à jour automatiquement la "bounding box" + (extrema toutes courbes confondues) + Appelé par les méthodes de manipulation des données + """ + if debut == -1: + debut=self.NbCourbe-1 + if debut == 0: + X0 = 1.e+99 + X1 = -1.e+99 + Y0 = 1.e+99 + Y1 = -1.e+99 + else: + X0 = self.BBXmin + X1 = self.BBXmax + Y0 = self.BBYmin + Y1 = self.BBYmax + + for i in range(debut,self.NbCourbe): + X0 = min([X0,]+list(self.Valeurs[i][0])) + X1 = max([X1,]+list(self.Valeurs[i][0])) + self.MinP_X = min([self.MinP_X,]+[x for x \ + in list(self.Valeurs[i][0]) if x>0]) + for ny in range(1,len(self.Valeurs[i])): + Y0 = min([Y0,]+list(self.Valeurs[i][ny])) + Y1 = max([Y1,]+list(self.Valeurs[i][ny])) + self.MinP_Y = min([self.MinP_Y,]+[y for y \ + in list(self.Valeurs[i][ny]) if y>0]) + self.BBXmin = X0 + self.BBXmax = X1 + self.BBYmin = Y0 + self.BBYmax = Y1 + return +# ------------------------------------------------------------------------------ + def AjoutCourbe(self,Val,Lab,Leg='',Sty=-1,Coul=-1,Marq=-1,FreqM=-1,Tri='N'): + """Ajoute une courbe dans les données + Val : liste de 2 listes (ou 3 si complexe) : abs, ord[, imag] + Leg : une chaine + Lab : liste de 2 chaines (ou 3 si complexe) + Sty : un entier + Coul : un entier + Marq : un entier + FreqM : un entier + Tri : chaine de caractères : N, X, Y, XY ou YX + Met à jour les attributs : NbCourbe, BBXmin/Xmax/Ymin/Ymax + """ + nbc = len(Val) # nombre de colonnes : 2 ou 3 + + # verifications : "if not (conditions requises)" + if not ( 2 <= nbc <= 3 and \ + type(Val[0]) in (types.ListType, types.TupleType) and \ + type(Val[1]) in (types.ListType, types.TupleType) and \ + (nbc==2 or type(Val[2]) in (types.ListType, types.TupleType)) and \ + len(Val[0]) == len(Val[1]) and (nbc==2 or len(Val[0]) == len(Val[2])) ): + UTMESS('F','GRAPH0_1') + + if len(Lab) <> nbc: + UTMESS('S','GRAPH0_2') + + # ajout dans les données + self.Legendes.append(str(Leg)) + self.Labels.append([str(L) for L in Lab]) + self.Valeurs.append(Val) + self.Styles.append(Sty) + self.Couleurs.append(Coul) + self.Marqueurs.append(Marq) + self.FreqMarq.append(FreqM) + self.Tri.append(Tri) + + self.NbCourbe = self.NbCourbe + 1 + self.AutoBB() + return +# ------------------------------------------------------------------------------ + def Courbe(self,n): + """Permet de récupérer les données de la courbe d'indice n sous forme + d'un dictionnaire. + """ + dico={ + 'Leg' : self.Legendes[n], # légende de la courbe + 'LabAbs' : self.Labels[n][0], # labels des abscisses + 'LabOrd' : [self.Labels[n][1],], # labels des ordonnées + 'NbCol' : len(self.Valeurs[n]), # nombre de colonnes + 'NbPts' : len(self.Valeurs[n][0]), # nombre de points + 'Abs' : self.Valeurs[n][0], # liste des abscisses + 'Ord' : [self.Valeurs[n][1],], # liste des ordonnées + 'Sty' : self.Styles[n], # style de la ligne + 'Coul' : self.Couleurs[n], # couleur + 'Marq' : self.Marqueurs[n], # marqueur + 'FreqM' : self.FreqMarq[n], # fréquence du marqueur + 'Tri' : self.Tri[n], # ordre de tri des données + } + if(dico['NbCol'] == 3): + dico['LabOrd'].append(self.Labels[n][2]) # labels de la partie imaginaire + dico['Ord'].append(self.Valeurs[n][2]) # liste des ordonnées partie imaginaire + return dico +# ------------------------------------------------------------------------------ + def Trace(self,FICHIER=None,FORMAT=None,dform=None,**opts): + """Tracé du Graph selon le format spécifié. + FICHIER : nom du(des) fichier(s). Si None, on dirige vers stdout + dform : dictionnaire de formats d'impression (format des réels, + commentaires, saut de ligne...) + opts : voir TraceGraph. + """ + para={ + 'TABLEAU' : { 'mode' : 'a', 'driver' : TraceTableau, }, + 'XMGRACE' : { 'mode' : 'a', 'driver' : TraceXmgrace, }, + 'AGRAF' : { 'mode' : 'a', 'driver' : TraceAgraf, }, + } + kargs={} + if self.LastTraceArgs=={}: + kargs['FICHIER']=FICHIER + kargs['dform']=dform + kargs['opts']=opts + else: + kargs=self.LastTraceArgs.copy() + if FORMAT==None: + FORMAT=self.LastTraceFormat + if FICHIER<>None: + kargs['FICHIER']=FICHIER + if dform<>None: + kargs['dform']=dform + if opts<>{}: + kargs['opts']=opts + if not FORMAT in para.keys(): + UTMESS('A', 'GRAPH0_3', valk=FORMAT) + else: + kargs['fmod']=para[FORMAT]['mode'] + self.LastTraceArgs = kargs.copy() + self.LastTraceFormat = FORMAT + # call the associated driver + para[FORMAT]['driver'](self,**kargs) +# ------------------------------------------------------------------------------ + def __repr__(self): + """Affichage du contenu d'un Graph""" + srep='' + for attr in ['NbCourbe','Legendes','Labels','Valeurs','Min_X','Max_X','Min_Y','Max_Y','BBXmax','BBXmin','BBYmax','BBYmin','Legende_X','Legende_Y','Echelle_X','Echelle_Y','Grille_X','Grille_Y','Tri']: + srep=srep + '%-10s : %s\n' % (attr,str(getattr(self,attr))) + return srep + +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +class TraceGraph: + """ + Cette classe définit le tracé d'un objet Graph dans un fichier. + + Attributs : + .NomFich : liste de noms de fichier de sortie + + Attributs privés (modifiés uniquement par les méthodes de la classe) : + .Fich : liste des objets 'fichier' + .Graph : objet Graph que l'on veut tracer + .DicForm : dictionnaire des formats de base (séparateur, format des réels...) + + Les méthodes Entete, DescrCourbe, Trace (définition de l'entete, partie descriptive + d'une courbe, méthode de tracé/impression) sont définies dans une classe dérivée. + """ +# ------------------------------------------------------------------------------ + def __init__(self,graph,FICHIER,fmod='w',dform=None,opts={}): + """Construction, ouverture du fichier, surcharge éventuelle du formatage + (dform), mode d'ouverture du fichier (fmod). + opts : dictionnaire dont les valeurs seront affectées comme attributs + de l'objet (A utiliser pour les propriétés spécifiques + à un format, exemple 'PILOTE' pour Xmgrace). + """ + # attributs optionnels (au début pour éviter un écrasement maladroit !) + for k,v in opts.items(): + setattr(self,k,v) + + # Ouverture du(des) fichier(s) + self.NomFich=[] + if type(FICHIER) is types.StringType: + self.NomFich.append(FICHIER) + elif type(FICHIER) in (types.ListType, types.TupleType): + self.NomFich=FICHIER[:] + else: + # dans ce cas, on écrira sur stdout (augmenter le 2 éventuellement) + self.NomFich=[None]*2 + self.Fich=[] + for ff in self.NomFich: + if ff<>None: + self.Fich.append(open(ff,fmod)) + else: + self.Fich.append(sys.stdout) + + # objet Graph sous-jacent + self.Graph=graph + # si Min/Max incohérents + if graph.Min_X==None or graph.Max_X==None or graph.Min_X > graph.Max_X: + graph.SetExtremaX(marge=0.05, force=True) + if graph.Min_Y==None or graph.Max_Y==None or graph.Min_Y > graph.Max_Y: + graph.SetExtremaY(marge=0.05, force=True) + + if graph.Echelle_X=='LOG': + graph.Grille_X=10 + # verif si Min<0 à cause de la marge + if graph.Min_X < 0.: + if graph.BBXmin < 0.: + UTMESS('A', 'GRAPH0_4') + graph.Min_X=graph.MinP_X + if graph.Echelle_Y=='LOG': + graph.Grille_Y=10 + if graph.Min_Y < 0.: + if graph.BBYmin < 0.: + UTMESS('A', 'GRAPH0_5') + graph.Min_Y=graph.MinP_Y + + # formats de base (identiques à ceux du module Table) + self.DicForm={ + 'csep' : ' ', # séparateur + 'ccom' : '#', # commentaire + 'ccpara' : '', # commentaire des labels + 'cdeb' : '', # début de ligne + 'cfin' : '\n', # fin de ligne + 'sepch' : ';', # remplace les sauts de ligne à l'intérieur d'une cellule + 'formK' : '%-12s', # chaines + 'formR' : '%12.5E', # réels + 'formI' : '%12d' # entiers + } + if dform<>None and type(dform)==types.DictType: + self.DicForm.update(dform) + + # let's go + self.Trace() + +# ------------------------------------------------------------------------------ + def __del__(self): + """Fermeture du(des) fichier(s) à la destruction""" + if hasattr(self,'Fich'): + self._FermFich() +# ------------------------------------------------------------------------------ + def _FermFich(self): + """Fermeture du(des) fichier(s)""" + for fp in self.Fich: + if fp<>sys.stdout: + fp.close() +# ------------------------------------------------------------------------------ + def _OuvrFich(self): + """Les fichiers sont ouverts par le constructeur. S'ils ont été fermés, + par un appel au Tracé, _OuvrFich ouvre de nouveau les fichiers dans le + meme mode""" + n=len(self.NomFich) + for i in range(n): + if self.Fich[i].closed: + self.Fich[i]=open(self.NomFich[i],self.Fich[i].mode) + +# ------------------------------------------------------------------------------ + def Entete(self): + """Retourne l'entete""" + raise NotImplementedError, "Cette méthode doit etre définie par la classe fille." +# ------------------------------------------------------------------------------ + def DescrCourbe(self,**args): + """Retourne la chaine de caractères décrivant les paramètres de la courbe. + """ + raise NotImplementedError, "Cette méthode doit etre définie par la classe fille." +# ------------------------------------------------------------------------------ + def Trace(self): + """Méthode pour 'tracer' l'objet Graph dans un fichier. + Met en page l'entete, la description des courbes et les valeurs selon + le format et ferme le fichier. + """ + raise NotImplementedError, "Cette méthode doit etre définie par la classe fille." + + +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +class TraceTableau(TraceGraph): + """ + Impression d'un objet Graph sous forme d'un tableau de colonnes, + on suppose que les courbes partagent la meme liste d'abscisse à 'EPSILON' + près, sinon on alarme. + """ + EPSILON=1.e-4 +# ------------------------------------------------------------------------------ + def Trace(self): + """Méthode pour 'tracer' l'objet Graph dans un fichier. + Met en page l'entete, la description des courbes et les valeurs selon + le format et ferme le fichier. + L'ouverture et la fermeture du fichier sont gérées par l'objet Table. + """ + g=self.Graph + msg=[] + if g.NbCourbe > 0: + # validité des données (abscisses identiques) + t0=numpy.array(g.Courbe(0)['Abs']) + max0=max(abs(t0)) + for i in range(1,g.NbCourbe): + if g.Courbe(i)['NbPts']<>g.Courbe(0)['NbPts']: + msg.append("La courbe %d n'a pas le meme " \ + "nombre de points que la 1ère." % i) + else: + ti=numpy.array(g.Courbe(i)['Abs']) + if max(abs((ti-t0).ravel())) > self.EPSILON*max0: + msg.append("Courbe %d : écart entre les "\ + "abscisses supérieur à %9.2E" % (i+1,self.EPSILON)) + msg.append(" Utilisez IMPR_FONCTION pour interpoler " \ + "les valeurs sur la première liste d'abscisses.") + # objet Table + Tab=Table.Table() + # titre / sous-titre + tit=[] + tit.append(self.DicForm['ccom']+' '+g.Titre) + tit.append(self.DicForm['ccom']+' '+g.SousTitre) + # legendes + for i in range(g.NbCourbe): + tit.append(self.DicForm['ccom']+' Courbe '+str(i)) + tit.extend([self.DicForm['ccom']+' '+leg for leg in g.Legendes[i].split(os.linesep)]) + Tab.titr=self.DicForm['cfin'].join(tit) + # noms des paramètres/colonnes + Tab.para.append(g.Labels[0][0]) + for i in range(g.NbCourbe): + for lab in g.Labels[i][1:]: + Tab.para.append(lab) + # types + Tab.type=['R']*len(Tab.para) + # lignes de la Table + dC0=g.Courbe(0) + for j in range(dC0['NbPts']): + row={} + row[dC0['LabAbs']]=dC0['Abs'][j] + for i in range(g.NbCourbe): + dCi=g.Courbe(i) + for k in range(dCi['NbCol']-1): + try: + row[dCi['LabOrd'][k]]=dCi['Ord'][k][j] + except IndexError: + row[dCi['LabOrd'][k]]=None + Tab.append(row) + Tab.Impr(FICHIER=self.NomFich[0], FORMAT='TABLEAU', dform=self.DicForm) + # erreurs ? + if msg: + UTMESS('A', 'GRAPH0_6', valk='\n'.join(msg)) + return + +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +class TraceXmgrace(TraceGraph): + """ + Impression d'un objet Graph au format XMGRACE. + Attribut supplémentaire : .PILOTE + """ + PILOTE='' +# ------------------------------------------------------------------------------ + def Entete(self): + """Retourne l'entete du fichier .agr correspondant à la mise en forme + """ + dic_ech={ 'LIN' : 'Normal', 'LOG' : 'Logarithmic' } + g=self.Graph + entete=[] + entete.append(""" +# Grace project file +# +@version 50100 +@page size 842, 595 +@page scroll 5% +@page inout 5% +@link page off +@map font 0 to "Times-Roman", "Times-Roman" +@map font 1 to "Times-Italic", "Times-Italic" +@map font 2 to "Times-Bold", "Times-Bold" +@map font 3 to "Times-BoldItalic", "Times-BoldItalic" +@map font 4 to "Helvetica", "Helvetica" +@map font 5 to "Helvetica-Oblique", "Helvetica-Oblique" +@map font 6 to "Helvetica-Bold", "Helvetica-Bold" +@map font 7 to "Helvetica-BoldOblique", "Helvetica-BoldOblique" +@map font 8 to "Courier", "Courier" +@map font 9 to "Courier-Oblique", "Courier-Oblique" +@map font 10 to "Courier-Bold", "Courier-Bold" +@map font 11 to "Courier-BoldOblique", "Courier-BoldOblique" +@map font 12 to "Symbol", "Symbol" +@map font 13 to "ZapfDingbats", "ZapfDingbats" +@map color 0 to (255, 255, 255), "white" +@map color 1 to (0, 0, 0), "black" +@map color 2 to (255, 0, 0), "red" +@map color 3 to (0, 255, 0), "green" +@map color 4 to (0, 0, 255), "blue" +@map color 5 to (255, 255, 0), "yellow" +@map color 6 to (188, 143, 143), "brown" +@map color 7 to (220, 220, 220), "grey" +@map color 8 to (148, 0, 211), "violet" +@map color 9 to (0, 255, 255), "cyan" +@map color 10 to (255, 0, 255), "magenta" +@map color 11 to (255, 165, 0), "orange" +@map color 12 to (114, 33, 188), "indigo" +@map color 13 to (103, 7, 72), "maroon" +@map color 14 to (64, 224, 208), "turquoise" +@map color 15 to (0, 139, 0), "green4" +@reference date 0 +@date wrap off +@date wrap year 1950 +@timestamp off +@default linewidth 1.0 +@default linestyle 1 +@default color 1 +@default pattern 1 +@default font 0 +@default char size 1.000000 +@default symbol size 1.000000 +@default sformat "%.8g" +@background color 0 +@page background fill on +@r0 off +@link r0 to g0 +@r0 type above +@r0 linestyle 1 +@r0 linewidth 1.0 +@r0 color 1 +@r0 line 0, 0, 0, 0 +@r1 off +@link r1 to g0 +@r1 type above +@r1 linestyle 1 +@r1 linewidth 1.0 +@r1 color 1 +@r1 line 0, 0, 0, 0 +@r2 off +@link r2 to g0 +@r2 type above +@r2 linestyle 1 +@r2 linewidth 1.0 +@r2 color 1 +@r2 line 0, 0, 0, 0 +@r3 off +@link r3 to g0 +@r3 type above +@r3 linestyle 1 +@r3 linewidth 1.0 +@r3 color 1 +@r3 line 0, 0, 0, 0 +@r4 off +@link r4 to g0 +@r4 type above +@r4 linestyle 1 +@r4 linewidth 1.0 +@r4 color 1 +@r4 line 0, 0, 0, 0 +@g0 on +@g0 hidden false +@g0 type XY +@g0 stacked false +@g0 bar hgap 0.000000 +@with g0 +@ stack world 0, 0, 0, 0 +@ znorm 1 +@ view xmin 0.150000 +@ view xmax 1.150000 +@ view ymin 0.150000 +@ view ymax 0.850000 +@ title font 0 +@ title size 1.500000 +@ title color 1 +@ subtitle font 0 +@ subtitle size 1.000000 +@ subtitle color 1 +@ xaxes invert off +@ yaxes invert off +@ xaxis on +@ xaxis type zero false +@ xaxis offset 0.000000 , 0.000000 +@ xaxis bar on +@ xaxis bar color 1 +@ xaxis bar linestyle 1 +@ xaxis bar linewidth 1.0 +@ xaxis label layout para +@ xaxis label place auto +@ xaxis label char size 1.000000 +@ xaxis label font 0 +@ xaxis label color 1 +@ xaxis label place normal +@ xaxis tick on +@ xaxis tick minor ticks 1 +@ xaxis tick default 6 +@ xaxis tick place rounded true +@ xaxis tick in +@ xaxis tick major size 1.000000 +@ xaxis tick major color 1 +@ xaxis tick major linewidth 1.0 +@ xaxis tick major linestyle 2 +@ xaxis tick major grid on +@ xaxis tick minor color 1 +@ xaxis tick minor linewidth 1.0 +@ xaxis tick minor linestyle 2 +@ xaxis tick minor grid off +@ xaxis tick minor size 0.500000 +@ xaxis ticklabel on +@ xaxis ticklabel format general +@ xaxis ticklabel prec 5 +@ xaxis ticklabel angle 0 +@ xaxis ticklabel skip 0 +@ xaxis ticklabel stagger 0 +@ xaxis ticklabel place normal +@ xaxis ticklabel offset auto +@ xaxis ticklabel offset 0.000000 , 0.010000 +@ xaxis ticklabel start type auto +@ xaxis ticklabel start 0.000000 +@ xaxis ticklabel stop type auto +@ xaxis ticklabel stop 0.000000 +@ xaxis ticklabel char size 0.800000 +@ xaxis ticklabel font 0 +@ xaxis ticklabel color 1 +@ xaxis ticklabel formula "" +@ xaxis ticklabel append "" +@ xaxis ticklabel prepend "" +@ xaxis tick place both +@ xaxis tick spec type none +@ yaxis on +@ yaxis type zero false +@ yaxis offset 0.000000 , 0.000000 +@ yaxis bar on +@ yaxis bar color 1 +@ yaxis bar linestyle 1 +@ yaxis bar linewidth 1.0 +@ yaxis label layout para +@ yaxis label place auto +@ yaxis label char size 1.000000 +@ yaxis label font 0 +@ yaxis label color 1 +@ yaxis label place normal +@ yaxis tick on +@ yaxis tick minor ticks 1 +@ yaxis tick default 6 +@ yaxis tick place rounded true +@ yaxis tick in +@ yaxis tick major size 1.000000 +@ yaxis tick major color 1 +@ yaxis tick major linewidth 1.0 +@ yaxis tick major linestyle 2 +@ yaxis tick major grid on +@ yaxis tick minor color 1 +@ yaxis tick minor linewidth 1.0 +@ yaxis tick minor linestyle 1 +@ yaxis tick minor grid off +@ yaxis tick minor size 0.500000 +@ yaxis ticklabel on +@ yaxis ticklabel format general +@ yaxis ticklabel prec 5 +@ yaxis ticklabel angle 0 +@ yaxis ticklabel skip 0 +@ yaxis ticklabel stagger 0 +@ yaxis ticklabel place normal +@ yaxis ticklabel offset auto +@ yaxis ticklabel offset 0.000000 , 0.010000 +@ yaxis ticklabel start type auto +@ yaxis ticklabel start 0.000000 +@ yaxis ticklabel stop type auto +@ yaxis ticklabel stop 0.000000 +@ yaxis ticklabel char size 0.800000 +@ yaxis ticklabel font 0 +@ yaxis ticklabel color 1 +@ yaxis ticklabel formula "" +@ yaxis ticklabel append "" +@ yaxis ticklabel prepend "" +@ yaxis tick place both +@ yaxis tick spec type none +@ altxaxis off +@ altyaxis off +@ legend on +@ legend loctype view +@ legend 0.85, 0.8 +@ legend box color 1 +@ legend box pattern 1 +@ legend box linewidth 1.0 +@ legend box linestyle 1 +@ legend box fill color 0 +@ legend box fill pattern 1 +@ legend font 0 +@ legend char size 0.750000 +@ legend color 1 +@ legend length 4 +@ legend vgap 1 +@ legend hgap 1 +@ legend invert false +@ frame type 0 +@ frame linestyle 1 +@ frame linewidth 1.0 +@ frame color 1 +@ frame pattern 1 +@ frame background color 0 +@ frame background pattern 0 +""") + entete.append('@ title "'+g.Titre+'"') + entete.append('@ subtitle "'+g.SousTitre+'"') + entete.append('@ xaxis label "'+g.Legende_X+'"') + entete.append('@ yaxis label "'+g.Legende_Y+'"') + entete.append('@ xaxes scale '+dic_ech[g.Echelle_X]) + entete.append('@ yaxes scale '+dic_ech[g.Echelle_Y]) + entete.append('@ xaxis tick major '+str(g.Grille_X)) + entete.append('@ yaxis tick major '+str(g.Grille_Y)) + entete.append('@ world xmin '+str(g.Min_X)) + entete.append('@ world xmax '+str(g.Max_X)) + entete.append('@ world ymin '+str(g.Min_Y)) + entete.append('@ world ymax '+str(g.Max_Y)) + return entete +# ------------------------------------------------------------------------------ + def DescrCourbe(self,**args): + """Retourne la chaine de caractères décrivant les paramètres de la courbe. + """ + # valeurs par défaut + sty = str(ValCycl(args['Sty'],0,8,1)) + color = str(ValCycl(args['Coul'],1,15,args['NumSet']+1)) + symbol= str(ValCycl(args['Marq'],0,10,args['NumSet'])) + freqm = str(ValCycl(args['FreqM'],0,-1,0)) + + sn=str(args['NumSet']) + descr=[] + descr.append(string.replace(""" +@ s0 hidden false +@ s0 type xy +@ s0 symbol size 1.000000 +@ s0 symbol pattern 1 +@ s0 symbol linestyle 1 +@ s0 symbol fill pattern 0 +@ s0 symbol linewidth 1.0 +@ s0 symbol char 65 +@ s0 symbol char font 0 +@ s0 line type 1 +@ s0 line linewidth 1.0 +@ s0 line pattern 1 +@ s0 baseline type 0 +@ s0 baseline off +@ s0 dropline off +@ s0 fill type 0 +@ s0 fill rule 0 +@ s0 fill pattern 1 +@ s0 avalue off +@ s0 avalue type 2 +@ s0 avalue char size 1.000000 +@ s0 avalue font 0 +@ s0 avalue rot 0 +@ s0 avalue format general +@ s0 avalue prec 3 +@ s0 avalue prepend "" +@ s0 avalue append "" +@ s0 avalue offset 0.000000 , 0.000000 +@ s0 errorbar on +@ s0 errorbar place both +@ s0 errorbar pattern 1 +@ s0 errorbar size 1.000000 +@ s0 errorbar linewidth 1.0 +@ s0 errorbar linestyle 1 +@ s0 errorbar riser linewidth 1.0 +@ s0 errorbar riser linestyle 1 +@ s0 errorbar riser clip off +@ s0 errorbar riser clip length 0.100000 + +@ s0 comment "" +""",' s0 ',' s'+sn+' ')) + descr.append('@ s'+sn+' symbol '+symbol) + descr.append('@ s'+sn+' symbol color '+color) + descr.append('@ s'+sn+' symbol skip '+freqm) + descr.append('@ s'+sn+' symbol fill color '+color) + descr.append('@ s'+sn+' line linestyle '+sty) + descr.append('@ s'+sn+' line color '+color) + descr.append('@ s'+sn+' fill color '+color) + descr.append('@ s'+sn+' avalue color '+color) + descr.append('@ s'+sn+' errorbar color '+color) + descr.append('@ s'+sn+' legend "'+args['Leg'].replace(os.linesep, ' ; ')+'"') + return descr +# ------------------------------------------------------------------------------ + def Trace(self): + """Méthode pour 'tracer' l'objet Graph dans un fichier. + Met en page l'entete, la description des courbes et les valeurs selon + le format et ferme le fichier. + """ + g = self.Graph + if self.PILOTE == 'INTERACTIF': + self.NomFich[0] = 'Trace_%s.dat' % time.strftime('%y%m%d%H%M%S',time.localtime()) + self.Fich[0] = open(self.NomFich[0],'w') + # initialise le graph + self._FermFich() + nbsets, x0, x1, y0, y1 = IniGrace(self.NomFich[0]) + NumSetIni = nbsets+1 + g.SetExtrema(0.05, x0, x1, y0, y1, force=False) + # si Min/Max incohérents + if g.Echelle_X=='LOG': + g.Grille_X=10 + if g.Min_X < 0.: + if g.BBXmin < 0.: + UTMESS('A', 'GRAPH0_4') + g.Min_X=g.MinP_X + if g.Echelle_Y=='LOG': + g.Grille_Y=10 + if g.Min_Y < 0.: + if g.BBYmin < 0.: + UTMESS('A', 'GRAPH0_5') + g.Min_Y=g.MinP_Y + + if g.NbCourbe < 1: + self._FermFich() + return + # cohérence des valeurs par défaut + if g.Grille_X<0 or g.Grille_Y<0: + deltaX=g.Max_X-g.Min_X + deltaY=g.Max_Y-g.Min_Y + g.Grille_X=deltaX/5. + g.Grille_Y=deltaY/5. + if deltaX>4: + g.Grille_X=int(round(g.Grille_X)) + if deltaY>4: + g.Grille_Y=int(round(g.Grille_Y)) + if g.Grille_X == 0.: + g.Grille_X = 1.e-6 + if g.Grille_Y == 0.: + g.Grille_Y = 1.e-6 + # entete + content = self.Entete() + content.append('') + # valeurs + it=-1 + for i in range(g.NbCourbe): + dCi=g.Courbe(i) + for k in range(dCi['NbCol']-1): + it=it+1 + dCi['NumSet'] = NumSetIni + it + content.extend(self.DescrCourbe(**dCi)) + content.append('') + # partie données (.dat) + it=-1 + for i in range(g.NbCourbe): + dCi=g.Courbe(i) + for k in range(dCi['NbCol']-1): + it=it+1 + content.append('@target g0.s%d' % (NumSetIni + it)) + content.append('@type xy') + listX, listY = Tri(g.Tri, lx=dCi['Abs'], ly=dCi['Ord'][k]) + for j in range(dCi['NbPts']): + svX = self.DicForm['formR'] % listX[j] + svY = self.DicForm['formR'] % listY[j] + content.append(self.DicForm['formR'] % listX[j] + \ + ' ' + self.DicForm['formR'] % listY[j]) + content.append('&') + content.append('') + + # Production du fichier postscript, jpeg ou lancement interactif + pilo=self.PILOTE + if pilo == '': + self._OuvrFich() + self.Fich[0].write('\n'.join(content)) + self._FermFich() + else: + xmgr=os.path.join(aster.repout(),'xmgrace') + nfwrk = self.NomFich[0]+'.wrk' + open(nfwrk, 'w').write('\n'.join(content)) + nfhard = self.NomFich[0]+'.hardcopy' + # nom exact du pilote + if pilo == 'POSTSCRIPT': + pilo = 'PostScript' + elif pilo == 'INTERACTIF': + pilo = 'X11' + # ligne de commande + if pilo == 'X11': + lcmde = '%s %s' % (xmgr, nfwrk) + if not os.environ.has_key('DISPLAY') or os.environ['DISPLAY']=='': + os.environ['DISPLAY']=':0.0' + UTMESS('I','GRAPH0_7') + UTMESS('I','GRAPH0_8', valk=os.environ['DISPLAY']) + else: + if os.path.exists(os.path.join(aster.repout(),'gracebat')): + xmgr = os.path.join(aster.repout(),'gracebat') + lcmde = '%s -hdevice %s -hardcopy -printfile %s %s' % (xmgr, pilo, nfhard, nfwrk) + # appel xmgrace + UTMESS('I','EXECLOGICIEL0_8', valk=lcmde) + if not os.path.exists(xmgr): + UTMESS('S','EXECLOGICIEL0_6', valk=xmgr) + iret = os.system(lcmde) + if iret == 0 or os.path.exists(nfhard): + if pilo not in ('', 'X11'): + new = open(nfhard, 'r').read() + open(self.NomFich[0], 'a').write(new) + else: + UTMESS('A','GRAPH0_9', valk=pilo) + # menage + if self.PILOTE == 'INTERACTIF': + os.remove(self.NomFich[0]) + return + +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +class TraceAgraf(TraceGraph): + """ + Impression d'un objet Graph au format AGRAF. + """ +# ------------------------------------------------------------------------------ + def Entete(self): + """Retourne l'entete des directives Agraf""" + dic_ech={ 'LIN' : '0', 'LOG' : '1' } + g=self.Graph + entete=[] + entete.append(""" +ASPECT_GRAPHIQUE: + En-tete :Departement Analyses Mecaniques et Acoustique + Aspect :0 + Nombre de vues :1 + Cesure commentaire :40 + MinMax :0 + Fonte Titre :%helvetica-14 + Fonte Axes :%courier-12 + Fonte Autre :%times-12 + + DEFAUT_COURBE: + Couleur (rvb) : 0 0 0 + + DEFAUT_COURBE: + Couleur (rvb) : 65535 0 0 + + DEFAUT_COURBE: + Couleur (rvb) : 11822 35723 22359 + + DEFAUT_COURBE: + Couleur (rvb) : 0 0 65535 + + DEFAUT_COURBE: + Couleur (rvb) : 65535 0 65535 + + DEFAUT_COURBE: + Couleur (rvb) : 0 65535 65535 + + DEFAUT_COURBE: + Couleur (rvb) : 0 65535 0 + + DEFAUT_COURBE: + Couleur (rvb) : 41120 21074 11565 + + DEFAUT_COURBE: + Couleur (rvb) : 65535 42405 0 + + DEFAUT_COURBE: + Couleur (rvb) : 41120 8224 61680 + + DEFAUT_COURBE: + Couleur (rvb) : 65535 65535 0 + + DEFAUT_COURBE: + Couleur (rvb) : 53970 46260 35980 + +GRAPHIQUE: +""") + if g.Titre=='': + g.Titre='GRAPHIQUE CODE_ASTER' + entete.append('Titre :'+g.Titre+'\n') + if g.SousTitre<>'': + entete.append('Commentaire :'+g.SousTitre+'\n') + entete.append('Frequence Grille X :'+str(int(g.Grille_X))+'\n') + entete.append('Frequence Grille Y :'+str(int(g.Grille_Y))+'\n') + entete.append('Echelle X :'+dic_ech[g.Echelle_X]+'\n') + entete.append('Echelle Y :'+dic_ech[g.Echelle_Y]+'\n') + if g.Legende_X<>'': + entete.append('Legende X :'+g.Legende_X+'\n') + if g.Legende_Y<>'': + entete.append('Legende Y :'+g.Legende_Y+'\n') + entete.append('Min X : '+str(g.Min_X)+'\n') + entete.append('Max X : '+str(g.Max_X)+'\n') + entete.append('Min Y : '+str(g.Min_Y)+'\n') + entete.append('Max Y : '+str(g.Max_Y)+'\n') + + return entete +# ------------------------------------------------------------------------------ + def DescrCourbe(self,**args): + """Retourne la chaine de caractères décrivant les paramètres de la courbe. + """ + # valeurs par défaut + sty = str(ValCycl(args['Sty'],0,2,0)) + color = str(ValCycl(args['Coul'],0,12,args['NumSet'])) + symbol= str(ValCycl(args['Marq'],0,12,args['NumSet'])) + freqm = str(ValCycl(args['FreqM'],0,-1,0)) + + descr=[] + descr.append(' COURBE:\n') + descr.append(' Trait :'+sty+'\n') + descr.append(' Couleur :'+color+'\n') + descr.append(' Marqueur :'+symbol+'\n') + descr.append(' Frequence Marqueur :'+freqm+'\n') + if args['Leg']<>'': + descr.append(' Legende :'+args['Leg']+'\n') + descr.append(' Tri :'+args['Tri']+'\n') + descr.append(' Abscisses : [ '+str(args['Bloc'])+', '+str(args['ColX'])+']\n') + descr.append(' Ordonnees : [ '+str(args['Bloc'])+', '+str(args['ColY'])+']\n') + return descr +# ------------------------------------------------------------------------------ + def Trace(self): + """Méthode pour 'tracer' l'objet Graph dans un fichier. + Met en page l'entete, la description des courbes et les valeurs selon + le format et ferme le fichier. + """ + self._OuvrFich() + fdogr=self.Fich[0] + fdigr=self.Fich[1] + g=self.Graph + if g.NbCourbe > 0: + # cohérence des valeurs par défaut + if g.Grille_X<0 or g.Grille_Y<0: + g.Grille_X=0 + g.Grille_Y=0 + # entete + for lig in self.Entete(): + fdigr.write(lig) + # valeurs + for i in range(g.NbCourbe): + dCi=g.Courbe(i) + dCi['NumSet']=i + # partie directives (.digr) + for k in range(dCi['NbCol']-1): + dCi['Bloc']=i+1 + dCi['ColX']=1 + dCi['ColY']=k+2 + for lig in self.DescrCourbe(**dCi): + fdigr.write(lig) + # partie données (.dogr) + if dCi['Leg']<>'': + leg=dCi['Leg'] + else: + leg='COURBE_'+str(i) + fdogr.write('#NOM DE LA FONCTION: '+leg+'\n') + for j in range(dCi['NbPts']): + for k in range(dCi['NbCol']): + sv=self.DicForm['formR'] % g.Valeurs[i][k][j] + fdogr.write(' '+sv) + fdogr.write('\n') + fdogr.write('\n') + self._FermFich() + +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +def ValCycl(val,vmin,vmax,vdef): + """ + Retourne une valeur entre vmin et vmax (bornes incluses) : + - si valvmax, on cycle tel que val=vmax+1 retourne vmin, etc. + - si vmax0: + os.rename(fich, fich+'.prev') + fpre=open(fich+'.prev', 'r') + fnew=open(fich, 'w') + for line in fpre: + ikeep=True + mat=re.search('@target g[0-9]+\.s([0-9]+)', line) + if mat<>None and int(mat.group(1))>ns: + ns=int(mat.group(1)) + mat=re.search('@[ ]+world[ ]+xmin[ ]+([\-\+\.0-9eEdD]+)', line) + if mat<>None: + try: + x0=float(mat.group(1)) + ikeep=False + except ValueError: + pass + mat=re.search('@[ ]+world[ ]+xmax[ ]+([\-\+\.0-9eEdD]+)', line) + if mat<>None: + try: + x1=float(mat.group(1)) + ikeep=False + except ValueError: + pass + mat=re.search('@[ ]+world[ ]+ymin[ ]+([\-\+\.0-9eEdD]+)', line) + if mat<>None: + try: + y0=float(mat.group(1)) + ikeep=False + except ValueError: + pass + mat=re.search('@[ ]+world[ ]+ymax[ ]+([\-\+\.0-9eEdD]+)', line) + if mat<>None: + try: + y1=float(mat.group(1)) + ikeep=False + except ValueError: + pass + if ikeep: + fnew.write(line) + fpre.close() + fnew.close() + try: + UTMESS('I', 'GRAPH0_10', valk=fich, vali=ns, valr=(x0, x1, y0, y1)) + except TypeError: + # pas un format xmgrace + pass + return ns, x0, x1, y0, y1 diff --git a/Aster/Cata/cataSTA10/Utilitai/System.py b/Aster/Cata/cataSTA10/Utilitai/System.py new file mode 100644 index 00000000..ccc3996e --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/System.py @@ -0,0 +1,218 @@ +#@ MODIF System Utilitai DATE 13/10/2009 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2006 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. +# ====================================================================== + +# RESPONSABLE COURTOIS M.COURTOIS + +"""Ce module définit la classe `SYSTEM` et la fonction `ExecCommand` +qui est présente uniquement pour commodité pour les Macros. + +La classe SYSTEM est semblable à celle utilisée dans asrun. +""" + +__all__ = ["SYSTEM", "ExecCommand"] + +import sys +import os +import re +import tempfile + +# ----- differ messages translation +def _(mesg): + return mesg + + +def _exitcode(status, default=0): + """ + Extract the exit code from status. Return 'default' if the process + has not been terminated by exit. + """ + if os.WIFEXITED(status): + iret = os.WEXITSTATUS(status) + elif os.WIFSIGNALED(status): + iret = os.WTERMSIG(status) + elif os.WIFSTOPPED(status): + iret = os.WSTOPSIG(status) + else: + iret = default + return iret + + + +class SYSTEM: + """ + Class to encapsultate "system" commands (this a simplified version of + ASTER_SYSTEM class defined in ASTK_SERV part). + """ + # this value should be set during installation step. + MaxCmdLen = 1024 + # line length -9 + _LineLen = 80-9 + + def __init__(self, **kargs): + """ + Initialization. + Optionnal arguments : silent, verbose, debug, cc_files, maxcmdlen. + """ + self.verbose = kargs.get('verbose', True) + self.debug = kargs.get('debug', False) + self.cc_files = kargs.get('cc_files', None) + if kargs.has_key('maxcmdlen'): + self.MaxCmdLen = kargs['maxcmdlen'] + + def _mess(self, msg, cod=''): + """ + Just print a message + """ + self._print('%-18s %s' % (cod, msg)) + + def _print(self, *args, **kargs): + """ + print replacement. + Optionnal argument : + term : line terminator (default to os.linesep). + """ + term = kargs.get('term', os.linesep) + files = set([sys.stdout]) + if self.cc_files: + files.add(self.cc_files) + for f in files: + if type(f) is file: + txt = ' '.join(['%s'%a for a in args]) + f.write(txt.replace(os.linesep+' ', os.linesep)+term) + f.flush() + else: + print _('file object expected : %s / %s') % (type(f), repr(f)) + + def VerbStart(self, cmd, verbose=None): + """ + Start message in verbose mode + """ + Lm = self._LineLen + if verbose == None: + verbose = self.verbose + if verbose: + pcmd = cmd + if len(cmd) > Lm-2 or cmd.count('\n') > 0: + pcmd = pcmd+'\n'+' '*Lm + self._print(('%-'+str(Lm)+'s') % (pcmd,), term='') + + def VerbEnd(self, iret, output='', verbose=None): + """ + End message in verbose mode + """ + if verbose == None: + verbose = self.verbose + if verbose: + if iret == 0: + self._print('[ OK ]') + else: + self._print(_('[FAILED]')) + self._print(_('Exit code : %d') % iret) + if (iret != 0 or self.debug) and output: + self._print(output) + + def VerbIgnore(self, verbose=None): + """ + End message in verbose mode + """ + if verbose == None: + verbose = self.verbose + if verbose: + self._print(_('[ SKIP ]')) + + def Shell(self, cmd, bg=False, verbose=False, follow_output=False, + alt_comment=None, interact=False, separated_stderr=False): + """ + Execute a command shell + cmd : command + bg : put command in background if True + verbose : print status messages during execution if True + follow_output : follow interactively output of command + alt_comment : print this "alternative comment" instead of "cmd" + interact : allow the user to interact with the process. + Return : + iret : exit code if bg = False, + 0 if bg = True + output : output lines (as string) + """ + if not alt_comment: + alt_comment = cmd + if bg: + interact = False + if len(cmd) > self.MaxCmdLen: + self._mess((_('length of command shell greater '\ + 'than %d characters.') % self.MaxCmdLen), '_ALARM') + if self.debug: + self._print('cmd :', cmd, 'background : %s' % bg, 'follow_output : %s' % follow_output) + self.VerbStart(alt_comment, verbose=verbose) + if follow_output and verbose: + print os.linesep+_('Command output :') + + fout = tempfile.NamedTemporaryFile() + ferr = tempfile.NamedTemporaryFile() + if bg: + new_cmd = cmd + ' &' + elif follow_output: + new_cmd = '( %s ) | tee %s' % (cmd, fout.name) + else: + if not separated_stderr: + new_cmd = '( %s ) > %s 2>&1' % (cmd, fout.name) + else: + new_cmd = '( %s ) > %s 2> %s' % (cmd, fout.name, ferr.name) + if self.debug: + self._print('modified cmd :', new_cmd) + # execution + iret = os.system(new_cmd) + fout.seek(0) + output = fout.read() + ferr.seek(0) + error = ferr.read() + fout.close() + ferr.close() + + if follow_output: + # repeat header message + self.VerbStart(alt_comment, verbose=verbose) + mat = re.search('EXIT_CODE=([0-9]+)', output) + if mat: + iret = int(mat.group(1)) + self.VerbEnd(iret, output, verbose=verbose) + if self.debug and iret != 0: + self._print(' ERROR : iret = %s' % iret) + self._print('STDOUT', output, all=True) + self._print('STDERR', error, all=True) + if bg: + iret = 0 + if not separated_stderr: + result = iret, output + else: + result = iret, output, error + return result + + +# Juste par commodité. +system = SYSTEM() +ExecCommand = system.Shell + + + +if __name__ == '__main__': + iret, output = ExecCommand('ls', alt_comment='Lancement de la commande...') + diff --git a/Aster/Cata/cataSTA10/Utilitai/Table.py b/Aster/Cata/cataSTA10/Utilitai/Table.py new file mode 100644 index 00000000..8943a58e --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/Table.py @@ -0,0 +1,1070 @@ +#@ MODIF Table Utilitai DATE 01/03/2011 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== + +# RESPONSABLE COURTOIS M.COURTOIS +__all__ = ['Table', 'merge'] + +import sys +import os +import re +from copy import copy +from types import IntType, FloatType, StringType, UnicodeType, NoneType + +from Noyau.N_types import is_int, is_float, is_complex, is_number, is_str, is_enum + +import transpose +from Utilitai.Utmess import UTMESS + +if not sys.modules.has_key('Graph'): + try: + from Utilitai import Graph + except ImportError: + import Graph + +# formats de base (identiques à ceux du module Graph) +DicForm = { + 'csep' : ' ', # séparateur + 'ccom' : '#', # commentaire + 'ccpara' : '', # commentaire des labels + 'cdeb' : '', # début de ligne + 'cfin' : '\n', # fin de ligne + 'sepch' : ';', # séparateur entre deux lignes d'une cellule + 'formK' : '%-12s', # chaines + 'formR' : '%12.5E', # réels + 'formI' : '%12d' # entiers +} +# type par défaut des chaines de caractères +Kdef = 'K24' + +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +class TableBase(object): + """Classe pour partager les méthodes d'impression entre Table et Colonne + (c'est surtout utile pour vérifier que l'extraction et les filtres sur les + colonnes sont corrects). + """ + def __init__(self): + """Constructeur. + """ + self.rows=None + self.para=None + self.type=None + self.titr=None + + def __repr__(self): + return self.ReprTable() + def Croise(self, **kargs): + raise NotImplementedError, 'Must be defined in a derived class' + + def __len__(self): + """Retourne le nombre de ligne dans la Table/Colonne. + """ + return len(self.rows) + +# ------------------------------------------------------------------------------ + def Impr(self, FICHIER=None, FORMAT='TABLEAU', dform=None, **opts): + """Impresssion de la Table selon le format spécifié. + FICHIER : nom du(des) fichier(s). Si None, on dirige vers stdout + dform : dictionnaire de formats d'impression (format des réels, + commentaires, saut de ligne...) + opts : selon FORMAT. + """ + para={ + 'TABLEAU' : { 'mode' : 'a', 'driver' : self.ImprTableau, }, + 'ASTER' : { 'mode' : 'a', 'driver' : self.ImprTableau, }, + 'XMGRACE' : { 'mode' : 'a', 'driver' : self.ImprGraph, }, + 'AGRAF' : { 'mode' : 'a', 'driver' : self.ImprTableau, }, + 'TABLEAU_CROISE' : { 'mode' : 'a', 'driver' : self.ImprTabCroise, }, + } + kargs={ + 'FICHIER' : FICHIER, + 'FORMAT' : FORMAT, + 'dform' : DicForm.copy(), + 'mode' : para[FORMAT]['mode'], + } + if dform != None and type(dform) is dict: + kargs['dform'].update(dform) + # ajout des options + kargs.update(opts) + + if not kargs.get('PAGINATION'): + # call the associated driver + para[FORMAT]['driver'](**kargs) + + else: + if not is_enum(kargs['PAGINATION']): + ppag = [kargs['PAGINATION'],] + else: + ppag = list(kargs['PAGINATION']) + del kargs['PAGINATION'] + npag = len(ppag) + # paramètres hors ceux de la pagination + lkeep = [p for p in self.para if ppag.count(p)==0] + # création des listes des valeurs distinctes + lvd = [] + for p in ppag: + lvp = getattr(self,p).values() + lvn = [] + for it in lvp: + if it != None and lvn.count(it) == 0: + lvn.append(it) + lvn.sort() + lvd.append(lvn) + # création des n-uplets + s = '[['+','.join(['x'+str(i) for i in range(npag)])+'] ' + s += ' '.join(['for x'+str(i)+' in lvd['+str(i)+']' for i in range(npag)])+']' + try: + lnup = eval(s) + except SyntaxError, s: + UTMESS('F','TABLE0_20') + # pour chaque n-uplet, on imprime la sous-table + for nup in lnup: + tab = self + for i in range(npag): + tab = tab & (getattr(tab,ppag[i]) == nup[i]) + sl = '' + if tab.titr: sl='\n' + tab.titr += sl+ppag[i]+': '+str(nup[i]) + tab[lkeep].Impr(**kargs) + +# ------------------------------------------------------------------------------ + def ImprTableau(self,**kargs): + """Impression au format TABLEAU ou ASTER + """ + # fichier ou stdout + if kargs.get('FICHIER') != None: + f=open(kargs['FICHIER'],kargs['mode']) + else: + f=sys.stdout + # ecriture + f.write(self.ReprTable(**kargs) + '\n') + # fermeture + if kargs.get('FICHIER') != None: + f.close() + +# ------------------------------------------------------------------------------ + def ReprTable(self,FORMAT='TABLEAU',dform=None,**ignore): + """Représentation d'une Table ou d'une Colonne sous forme d'un tableau. + """ + rows=self.rows + para=self.para + typ =self.type + if not is_enum(para): + para=[self.para,] + typ =[self.type,] + if dform==None: + dform = DicForm.copy() + # est-ce que l'attribut .type est renseigné ? + typdef=typ != [None]*len(typ) + txt=[] + # ['']+ pour ajouter un séparateur en début de ligne + lspa=['',] + # lmax : largeur max des colonnes = max(form{K,R,I},len(parametre)) + lmax=[] + # formats + strfmt, strfmt_none = {}, {} + for t, p in zip(typ, para): + larg_max=max([len(str(p))] + \ + [len(FMT(dform,k,t) % 0) for k in ('formK','formR','formI')]) + lspa.append(FMT(dform,'formK',t,larg_max,str(p)) % p) + lmax.append(larg_max) + assert t is not None, "Type de la colonne '%s' non défini" % p + strfmt[p] = FMT(dform, 'form'+t[0], t, larg_max) + strfmt_none[p] = FMT(dform, 'formK', t, larg_max) + if typdef: + stype=dform['csep'].join([''] + \ + [FMT(dform,'formK',typ[i],lmax[i]) % typ[i] for i in range(len(para))]) + txt.append(dform['ccom']) + txt.append(dform['ccom']+'-'*80) + txt.append(dform['ccom']) + ASTER=(FORMAT=='ASTER') + if ASTER: + txt.append('#DEBUT_TABLE') + if self.titr: + if ASTER: + txt.extend(['#TITRE '+lig for lig in self.titr.split('\n')]) + else: + txt.extend([dform['ccom']+lig for lig in self.titr.split('\n')]) + txt.append(dform['ccpara'] + dform['csep'].join(lspa)) + if ASTER and typdef: + txt.append(stype) + for r in rows: + lig=[''] + empty=True + for t, p, lmax_i in zip(typ, para, lmax): + val = r.get(p) + if val is not None: + empty = False + lig.append(strfmt[p] % val) + else: + s = strfmt_none[p] % '-' + # format AGRAF = TABLEAU + '\' devant les chaines de caractères ! + if FORMAT=='AGRAF': + s='\\'+s + lig.append(s) + if not empty: + lig2 = [dform['sepch'].join(ch.splitlines()) for ch in lig] + txt.append(dform['csep'].join(lig2)) + if ASTER: + txt.append('#FIN_TABLE') + # ajout des debut et fin de ligne + txt=[dform['cdeb']+t+dform['cfin'] for t in txt] + + return ''.join(txt) +# ------------------------------------------------------------------------------ + def ImprTabCroise(self,**kargs): + """Impression au format TABLEAU_CROISE d'une table ayant 3 paramètres. + """ + # création du tableau croisé et impression au format TABLEAU + tabc=self.Croise() + kargs['FORMAT']='TABLEAU' + tabc.Impr(**kargs) +# ------------------------------------------------------------------------------ + def ImprGraph(self, **kargs): + """Impression au format XMGRACE : via le module Graph + """ + args=kargs.copy() + if len(self.para) != 2: + UTMESS('A','TABLE0_21') + return + # suppression des lignes contenant une cellule vide + tnv = getattr(self, self.para[0]).NON_VIDE() \ + & getattr(self, self.para[1]).NON_VIDE() + # objet Graph + graph=Graph.Graph() + dicC={ + 'Val' : [getattr(tnv, tnv.para[0]).values(), + getattr(tnv, tnv.para[1]).values()], + 'Lab' : tnv.para, + } + if args['LEGENDE']==None: del args['LEGENDE'] + Graph.AjoutParaCourbe(dicC, args) + graph.AjoutCourbe(**dicC) + + # Surcharge des propriétés du graphique et des axes + # (bloc quasiment identique dans impr_fonction_ops) + if args.get('TITRE'): graph.Titre=args['TITRE'] + if args.get('BORNE_X'): + graph.Min_X=args['BORNE_X'][0] + graph.Max_X=args['BORNE_X'][1] + if args.get('BORNE_Y'): + graph.Min_Y=args['BORNE_Y'][0] + graph.Max_Y=args['BORNE_Y'][1] + if args.get('LEGENDE_X'): graph.Legende_X=args['LEGENDE_X'] + if args.get('LEGENDE_Y'): graph.Legende_Y=args['LEGENDE_Y'] + if args.get('ECHELLE_X'): graph.Echelle_X=args['ECHELLE_X'] + if args.get('ECHELLE_Y'): graph.Echelle_Y=args['ECHELLE_Y'] + if args.get('GRILLE_X'): graph.Grille_X=args['GRILLE_X'] + if args.get('GRILLE_Y'): graph.Grille_Y=args['GRILLE_Y'] + + try: + graph.Trace(**args) + except TypeError: + UTMESS('A','TABLE0_22') + +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +class Table(TableBase): + """Une table est construite comme une liste de lignes, chaque ligne est + un dictionnaire. + On crée puis on ajoute les lignes avec la méthode append : + t=Table() + t.append(dict(a=1,b=2)) + t.append(dict(a=3,b=4)) + La méthode __iter__ définit un itérateur sur les lignes de la table, + __repr__ retourne une représentation de la table, utilisée par "print t". + Grace à la classe Colonne et à sa méthode _extract, il est possible + de construire une sous-table qui satisfait un critère donné. + Le critère est donné par une fonction Python qui retourne vrai + ou faux si la valeur d'une colonne respecte le critère ou non. + Exemple: + def critere(valeur): + return valeur < 10 + soustable = t.a._extract(critere) + t.a retourne un objet intermédiaire de la classe Colonne qui mémorise + le nom de la colonne demandée (a, ici). + """ +# ------------------------------------------------------------------------------ + def __init__(self, rows=[], para=[], typ=[], titr=''): + """Constructeur de la Table : + rows : liste des lignes (dict) + para : liste des paramètres + type : liste des types des paramètres + titr : titre de la table + """ + self.rows = [r for r in rows if r.values() != [None]*len(r.values())] + self.para = list(para) + for i in self.para : + if self.para.count(i) != 1 : + UTMESS('F','TABLE0_23', valk=i) + if len(typ) == len(self.para): + self.type = list(typ) + else: + self.type = [None]*len(self.para) + self.titr = titr + +# ------------------------------------------------------------------------------ + def copy(self): + """Retourne une copie de la table. + """ + rows = [] + for r in self.rows: + rows.append(copy(r)) + return Table(rows, self.para[:], self.type[:], self.titr) + +# ------------------------------------------------------------------------------ + def add_para(self, para, typ): + """Ajoute un nouveau paramètre.""" + if not is_enum(para): + para=[para,] + if not is_enum(typ): + typ =[typ,] + if len(typ) != len(para): + typ = [typ[0],] * len(para) + for p, t in zip(para, typ): + if not p in self.para: + self.para.append(p) + self.type.append(t) + +# ------------------------------------------------------------------------------ + def append(self, obj): + """Ajoute une ligne (type dict) qui peut éventuellement définir un + nouveau paramètre.""" + para=obj.keys() + for p in para: + if not p in self.para: + self.add_para(p, _typaster(obj[p])) + else: + ip=self.para.index(p) + self.type[ip]=_typaster(obj[p], self.type[ip]) + self.rows.append(obj) + + + def extend(self, objs): + """Ajoute plusieurs lignes (list of dict).""" + for row in objs: + self.append(row) + +# ------------------------------------------------------------------------------ + def SansColonneVide(self, l_para=None): + """Retourne une copie de la table dans laquelle on a supprimé les colonnes + vides (les lignes vides sont automatiquement supprimées). + """ + # ptest : colonnes potentiellement vides + pkeep = l_para or self.para + ptest = pkeep[:] + for row in self: + notNone = [p for p in ptest if row.get(p) is not None] + ptest = [p for p in ptest if not p in notNone] + if len(ptest) == 0: + break + # pkeep : on conserve les colonnes non vides + pkeep = [p for p in pkeep if not p in ptest] + return self[pkeep] + +# ------------------------------------------------------------------------------ + def __setitem__(self, k_para, k_value): + """Ajoute une colonne k_para dont les valeurs sont dans k_value""" + if len(k_value) == 0: + return + if k_para in self.para : + UTMESS('F','TABLE0_24', valk=k_para) + self.add_para(k_para, typ=_typaster(k_value[0])) + i = 0 + for row in self: + if i < len(k_value): + row[k_para] = k_value[i] + self.type[-1] = _typaster(k_value[i], self.type[-1]) + else: + row[k_para] = None + i+=1 + for j in range(i, len(k_value)): + self.append({k_para : k_value[j]}) + +# ------------------------------------------------------------------------------ + def fromfunction(self, nom_para, funct, l_para=None, const=None): + """Ajoute une colonne `nom_para` en évaluant la fonction `funct` sur + la valeur des paramètres `l_para` (qui doivent exister dans la table). + Si `l_para` n'est pas fourni, on prend `funct`.nompar (FORMULE Aster). + On peut passer un dictionnaire de constantes dans `const`. Quand on + utilise une FORMULE Aster, les constantes sont prises dans le contexte + global. + """ + # vérif préalables + if not hasattr(funct, '__call__'): + UTMESS('F', 'TABLE0_25', valk=funct.__name__) + if nom_para in self.para : + UTMESS('F','TABLE0_24', valk=nom_para) + if l_para == None: + if not hasattr(funct, 'nompar'): + UTMESS('F', 'TABLE0_26', valk=funct.__name__) + l_para = funct.nompar + if not is_enum(l_para): + l_para = [l_para] + not_found = ', '.join([p for p in l_para if not p in self.para]) + if not_found != '': + UTMESS('F','TABLE0_27', valk=not_found) + if const == None: + const = {} + if type(const) is not dict: + UTMESS('F', 'TABLE0_28') + # liste des valeurs des paramètres + tabpar = [] + for para in l_para: + vals = getattr(self, para).values() + tabpar.append(vals) + tabpar = transpose.transpose(tabpar) + # évaluation de la fonction sur ces paramètres + vectval = [] + for lpar in tabpar: + # si un paramètre est absent, on ne peut pas évaluer la formule + if None in lpar: + vectval.append(None) + else: + vectval.append(funct(*lpar, **const)) + # ajout de la colonne + self[nom_para] = vectval + +# ------------------------------------------------------------------------------ + def __iter__(self): + """Itère sur les lignes de la Table""" + return iter(self.rows) + +# ------------------------------------------------------------------------------ + def __getattr__(self, column): + """Construit un objet intermediaire (couple table, colonne)""" + typ=None + if not column in self.para: + column='' + else: + typ=self.type[self.para.index(column)] + return Colonne(self, column, typ) + +# ------------------------------------------------------------------------------ + def sort(self, CLES=None, ORDRE='CROISSANT'): + """Tri de la table. + CLES : liste des clés de tri + ORDRE : CROISSANT ou DECROISSANT + """ + # par défaut, on prend tous les paramètres + if CLES == None: + CLES = self.para[:] + # vérification des arguments + if not is_enum(CLES): + CLES = [CLES] + else: + CLES = list(CLES) + not_found = ', '.join([p for p in CLES if not p in self.para]) + if not_found != '': + UTMESS('F', 'TABLE0_27', valk=not_found) + if not ORDRE in ('CROISSANT', 'DECROISSANT'): + UTMESS('F', 'TABLE0_29', valk=ORDRE) + # tri + self.rows = sort_table(self.rows, self.para, CLES, (ORDRE=='DECROISSANT')) + +# ------------------------------------------------------------------------------ + def __delitem__(self, args): + """Supprime les colonnes correspondantes aux éléments de args """ + if not is_enum(args): + args=[args,] + for item in args: + try: + ind_item = self.para.index(item) + except ValueError: + UTMESS('F', 'TABLE0_27', valk=item) + del self.type[ind_item] + self.para.remove(item) + for line in self.rows: + if line.has_key(item): + del line[item] + +# ------------------------------------------------------------------------------ + def __getitem__(self, args): + """Extrait la sous table composée des colonnes dont les paramètres sont dans args """ + if not is_enum(args): + args=[args,] + else: + args=list(args) + new_rows=[] + new_para=args + new_type=[] + for item in new_para: + if not item in self.para: + return Table() + new_type.append(self.type[self.para.index(item)]) + for line in self: + new_line={} + for item in new_para: + v = line.get(item) + if v is not None: + new_line[item] = v + new_rows.append(new_line) + return Table(new_rows, new_para, new_type, self.titr) + + + def OrdreColonne(self, cols): + """Réordonne les colonnes en mettant en premier 'cols'. + Ignore les colonnes qui ne seraient pas dans 'self.para'.""" + if type(cols) not in (list, tuple): + cols = [cols] + new_para = [p for p in cols if p in self.para] + others = [p for p in self.para if not p in cols] + new_para.extend(others) + new_type=[] + for item in new_para: + new_type.append(self.type[self.para.index(item)]) + self.para = new_para + self.type = new_type + +# ------------------------------------------------------------------------------ + def _tuplevalues(self, dico): + """Retourne la liste des valeurs d'une ligne dans l'ordre self.para + ("hashable" pour en faire une clé de dict.) + """ + return tuple(map(dico.get, self.para)) + + def __and__(self, other): + """Intersection de deux tables (opérateur &)""" + if other.para != self.para: + UTMESS('A','TABLE0_30') + return Table() + else: + dval_other = dict.fromkeys([self._tuplevalues(r) for r in other], 1) + tmp = [r for r in self if dval_other.get(self._tuplevalues(r)) is not None] + return Table(tmp, self.para, self.type, self.titr) + +# ------------------------------------------------------------------------------ + def __or__(self, other): + """Union de deux tables (opérateur |)""" + if other.para != self.para: + UTMESS('A','TABLE0_30') + return Table() + else: + tmp = self.rows[:] + dval_self = dict.fromkeys([self._tuplevalues(r) for r in self], 1) + tmp.extend([r for r in other if dval_self.get(self._tuplevalues(r)) is None]) + return Table(tmp, self.para, self.type[:], self.titr) + +# ------------------------------------------------------------------------------ + def values(self): + """Renvoie la table sous la forme d'un dictionnaire de listes dont les + clés sont les paramètres. + """ + dico={} + for column in self.para: + dico[column]=Colonne(self, column).values() + return dico + +# ------------------------------------------------------------------------------ + def dict_CREA_TABLE(self): + """Renvoie le dictionnaire des mots-clés à fournir à la commande CREA_TABLE + pour produire une table_sdaster. + """ + dico={ 'TITRE' : ['%-80s' % lig for lig in self.titr.split('\n')], + 'LISTE' : [], } + # remplissage de chaque occurence (pour chaque paramètre) du mot-clé facteur LISTE + for i in range(len(self.para)): + # nom du paramètre et type si K* + d={ 'PARA' : self.para[i], } + typ=self.type[i] + if typ[0]=='K': + mc='LISTE_K' + if not typ in ('K8', 'K16', 'K24'): + UTMESS('A','TABLE0_32', valk=(self.para[i],Kdef)) + typ=Kdef + d['TYPE_K']=typ + elif typ=='I': + mc='LISTE_I' + elif typ=='R': + mc='LISTE_R' + else: + UTMESS('F', 'TABLE0_31', valk=self.para[i]) + # valeurs sans trou / avec trou + vals=getattr(self, self.para[i]).values() + if typ == 'R': + try: + check_nan(vals) + except ValueError, err: + UTMESS('F', 'TABLE0_33', valk=(self.para[i], str(err))) + if vals.count(None)==0: + d[mc]=vals + else: + d['NUME_LIGN'] = [j+1 for j in range(len(vals)) if vals[j] != None] + d[mc] = [v for v in vals if v != None] + if len(d[mc])==0: + UTMESS('I','TABLE0_34', valk=self.para[i]) + else: + dico['LISTE'].append(d) + if len(dico['LISTE'])==0: + UTMESS('F','TABLE0_35') + return dico + +# ------------------------------------------------------------------------------ + def Array(self,Para,Champ): + """Renvoie sous forme de NumArray le résultat d'une extraction dans une table + méthode utile à macr_recal + """ + import numpy + __Rep = self[Para,Champ].values() + F = numpy.zeros((len(__Rep[Para]),2)) + for i in range(len(__Rep[Para])): + F[i][0] = __Rep[Para][i] + F[i][1] = __Rep[Champ][i] + del(__Rep) + return F + +# ------------------------------------------------------------------------------ + def Croise(self): + """Retourne un tableau croisé P3(P1,P2) à partir d'une table ayant + trois paramètres (P1, P2, P3). + """ + if len(self.para) != 3: + UTMESS('A', 'TABLE0_36') + return Table() + py, px, pz = self.para + ly, lx, lz = [getattr(self,p).values() for p in self.para] + new_rows=[] + #lpz='%s=f(%s,%s)' % (pz,px,py) + lpz='%s/%s' % (px,py) + # attention aux doublons dans lx et ly + new_para=set(ly) + new_para.discard(None) + new_para = list(new_para) + new_para.sort() + new_para.insert(0, lpz) + # attention aux doublons dans lx et ly + newx=set(lx) + newx.discard(None) + newx = list(newx) + newx.sort() + for x in newx: + if x != None: + d={ lpz : x, } + taux = (getattr(self,px)==x) + for dz in taux.rows: + d[dz[py]]=dz[pz] + new_rows.append(d) + new_type=[self.type[0],] + [self.type[2]]*(len(new_para) - 1) + new_titr=self.titr + if new_titr != '': new_titr+='\n' + new_titr+=pz + ' FONCTION DE ' + px + ' ET ' + py + return Table(new_rows, new_para, new_type, new_titr) + +# ------------------------------------------------------------------------------ + def Renomme(self, pold, pnew): + """Renomme le paramètre `pold` en `pnew`. + """ + if not pold in self.para: + raise KeyError, 'Paramètre %s inexistant dans cette table' % pold + elif self.para.count(pnew)>0: + raise KeyError, 'Le paramètre %s existe déjà dans la table' % pnew + else: + self.para[self.para.index(pold)] = pnew + for lig in self: + lig[pnew] = lig[pold] + del lig[pold] + +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +class Colonne(TableBase): + """Classe intermédiaire pour mémoriser un couple (table, nom de colonne) + et exprimer les critères d'extraction sous une forme naturelle en python + en surchargeant les operateurs <, >, != et =. + Alors on peut écrire la requete simple : + soustable=t.a<10 + Ainsi que des requetes plus complexes : + soustable=t.a<10 and t.b <4 + ou + soustable=t.a<10 or t.b <4 + Les "alias" EQ, NE, LE, LT, GE, GT permettent à la macro IMPR_TABLE + d'utiliser directement le mot-clé utilisateur CRIT_COMP défini dans le + catalogue : getattr(Table,CRIT_COMP). + """ +# ------------------------------------------------------------------------------ + def __init__(self, table, column, typ=None): + """Constructeur (objet Table associé, paramètre de la colonne, type du + paramètre). + """ + self.Table=table + self.rows=self.Table.rows + self.para=column + self.type=typ + self.titr='' + +# ------------------------------------------------------------------------------ + def _extract(self, fun): + """Construit une table avec les lignes de self.Table + dont l'élément de nom self.para satisfait le critère fun, + fun est une fonction qui retourne vrai ou faux + """ + return Table([row for row in self.Table if fun(row.get(self.para))], self.Table.para, self.Table.type, self.Table.titr) + +# ------------------------------------------------------------------------------ + def __le__(self, VALE): + if is_enum(VALE) : + crit = max(VALE) + else: + crit = VALE + return self._extract(lambda v: v != None and v<=crit) + +# ------------------------------------------------------------------------------ + def __lt__(self, VALE): + if is_enum(VALE) : + crit = max(VALE) + else: + crit = VALE + return self._extract(lambda v: v != None and v=crit) + +# ------------------------------------------------------------------------------ + def __gt__(self, VALE): + if is_enum(VALE): + crit = min(VALE) + else: + crit = VALE + return self._extract(lambda v: v != None and v>crit) + +# ------------------------------------------------------------------------------ + def __eq__(self, VALE, CRITERE='RELATIF', PRECISION=0.): + if not is_enum(VALE): + VALE = [VALE] + if is_str(VALE[0]): + stripVALE = [value.strip() for value in VALE] + return self._extract(lambda v: str(v).strip() in stripVALE) + else: + if PRECISION==0. : + return self._extract(lambda v : v in VALE) + elif CRITERE=='ABSOLU': + return self._extract(lambda v : _func_test_abs(v, VALE, PRECISION)) + else: + return self._extract(lambda v : _func_test_rela(v, VALE, PRECISION)) + +# ------------------------------------------------------------------------------ + def REGEXP(self, regexp): + """Retient les lignes dont le paramètre satisfait l'expression + régulière `regexp`. + """ + if not is_str(regexp): + return self._extract(lambda v : False) + return self._extract(lambda v : v != None and re.search(regexp, v) != None) + +# ------------------------------------------------------------------------------ + def __ne__(self, VALE, CRITERE='RELATIF', PRECISION=0.): + if not is_enum(VALE): + VALE = [VALE] + if is_str(VALE[0]): + stripVALE = [value.strip() for value in VALE] + return self._extract(lambda v: str(v).strip() not in stripVALE) + else: + if PRECISION==0. : + return self._extract(lambda v : v not in VALE) + elif CRITERE=='ABSOLU': + return self._extract(lambda v : not (_func_test_abs(v, VALE, PRECISION))) + else: + return self._extract(lambda v : not (_func_test_rela(v, VALE, PRECISION))) + +# ------------------------------------------------------------------------------ + def MAXI(self): + # important pour les performances de récupérer le max une fois pour toutes + maxi=max(self) + return self._extract(lambda v: v==maxi) + +# ------------------------------------------------------------------------------ + def MINI(self): + # important pour les performances de récupérer le min une fois pour toutes + mini=min(self) + return self._extract(lambda v: v==mini) + +# ------------------------------------------------------------------------------ + def ABS_MAXI(self): + # important pour les performances de récupérer le max une fois pour toutes + abs_maxi=max([abs(v) for v in self.values() if is_number(v)]) + return self._extract(lambda v: v==abs_maxi or v==-abs_maxi) + +# ------------------------------------------------------------------------------ + def ABS_MINI(self): + # important pour les performances de récupérer le min une fois pour toutes + abs_mini=min([abs(v) for v in self.values() if is_number(v)]) + # tester le type de v est trop long donc pas de abs(v) + return self._extract(lambda v: v==abs_mini or v==-abs_mini) + +# ------------------------------------------------------------------------------ + def __iter__(self): + """Itère sur les éléments de la colonne""" + for row in self.Table: + # si l'élément n'est pas présent on retourne None + yield row.get(self.para) + #yield row[self.para] + +# ------------------------------------------------------------------------------ + def __getitem__(self, i): + """Retourne la ième valeur d'une colonne""" + return self.values()[i] + +# ------------------------------------------------------------------------------ + def values(self): + """Renvoie la liste des valeurs""" + return [r.get(self.para,None) for r in self.Table] + + def not_none_values(self): + """Renvoie la liste des valeurs non 'None'""" + return [val for val in self.values() if val != None] + +# ------------------------------------------------------------------------------ + # équivalences avec les opérateurs dans Aster + LE=__le__ + LT=__lt__ + GE=__ge__ + GT=__gt__ + EQ=__eq__ + NE=__ne__ + def VIDE(self): + return self.__eq__(None) + def NON_VIDE(self): + return self.__ne__(None) + +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +# ------------------------------------------------------------------------------ +def sort_table(rows, l_para, w_para, reverse=False): + """Sort list of dict. + rows : list of dict + l_para : list of the keys of dict + w_para : keys of the sort + """ + c_para=[i for i in l_para if i not in w_para] + new_rows=rows + # rename sort keys by "__" + number + para + # ("__" to avoid conflict with existing parameters) + for i, p in enumerate(w_para) : + new_key= '__%03d%s' % (i, p) + for row in new_rows : + v = row.get(p) + row[new_key] = v # must have a value to sort properly + try: + del row[p] + except: + pass + # rename others parameters by "__999" + para + for p in c_para : + new_key= '__999'+p + for row in new_rows : + v = row.get(p) + row[new_key] = v # must have a value to sort properly + try: + del row[p] + except: + pass + # sort + new_rows.sort() + # reversed sort + if reverse: + new_rows.reverse() + for i, p in enumerate(w_para) : + old_key= '__%03d%s' % (i, p) + for row in new_rows: + v = row.get(old_key) + if v is not None: + row[p] = v + try: + del row[old_key] + except: + pass + for p in c_para : + old_key= '__999'+p + for row in new_rows : + v = row.get(old_key) + if v is not None: + row[p] = v + try: + del row[old_key] + except: + pass + return new_rows + +# ------------------------------------------------------------------------------ +def FMT(dform, nform, typAster=None, larg=0, val=''): + """Retourne un format d'impression Python à partir d'un type Aster ('R','I', + 'K8', 'K16'...). Si typAster==None, retourne dform[nform]. + larg : largeur minimale du format (val permet de ne pas ajouter des blancs + si la chaine à afficher est plus longue que le format, on prend le partie + de ne pas tronquer les chaines) + """ + if typAster==None: + fmt=dform[nform] + elif typAster in ('I', 'R'): + if nform=='formK': + # convertit %12.5E en %-12s + fmt=re.sub('([0-9]+)[\.0-9]*[diueEfFgG]+','-\g<1>s',dform['form'+typAster]) + else: + fmt=dform[nform] + else: + # typAster = Kn + fmt='%-'+typAster[1:]+'s' + # on ajoute éventuellement des blancs pour atteindre la largeur demandée + if larg != 0: + fmt=' '*max(min(larg-len(val),larg-len(fmt % 0)),0) + fmt + return fmt + +# ------------------------------------------------------------------------------ +def merge(tab1, tab2, labels=[], restrict=False): + """Assemble les deux tables tb1 et tb2 selon une liste de labels communs. + Si labels est vide: + - les lignes de tb2 sont ajoutés à celles de tb1, + sinon : + - si on trouve les valeurs de tb2 sur les labels dans tb1 (et une seule fois), + on surcharge tb1 avec les lignes de tb2 ; + - sinon on ajoute la ligne de tb2 à la fin de tb1. + """ + tb1 = tab1.copy() + tb2 = tab2.copy() + if not is_enum(labels): + labels=(labels,) + for key in labels : + if key not in tb1.para : UTMESS('F','TABLE0_27', valk=key) + if key not in tb2.para : UTMESS('F','TABLE0_27', valk=key) + # ensemble des paramètres et des types + n_para=tb1.para[:] + n_type=tb1.type[:] + for i in tb2.para: + if i not in tb1.para: + n_para.append(i) + n_type.append(tb2.type[tb2.para.index(i)]) + # restriction des lignes aux labels communs (peu cher en cpu) + rows1 = tb1.rows + dlab1 = {} + for i1 in range(len(rows1)): + tu1 = tuple(map(rows1[i1].__getitem__, labels)) + if dlab1.get(tu1, '') == '': + dlab1[tu1] = i1 + else: + dlab1[tu1] = None + # restriction des lignes aux labels communs (peu cher en cpu) + rows2 = tb2.rows + dlab2 = {} + for i2 in range(len(rows2)): + tu2 = tuple(map(rows2[i2].__getitem__, labels)) + if dlab2.get(tu2, '') == '': + dlab2[tu2] = i2 + else: + dlab2[tu2] = None + # creation de dic1 : dictionnaire de correspondance entre les + # lignes a merger dans les deux tableaux + dic1 = {} + for cle in dlab1.keys(): + if dlab1[cle] == None or cle == (): + bid = dlab1.pop(cle) + for cle in dlab2.keys(): + if dlab2[cle] == None or cle == (): + bid = dlab2.pop(cle) + for cle in dlab2.keys(): + if dlab1.has_key(cle): + dic1[dlab2[cle]] = dlab1[cle] + # insertion des valeurs de tb2 dans tb1 quand les labels sont communs + # (et uniques dans chaque table) + # OU ajout de la ligne de tb2 dans tb1 (si restrict == False) + if restrict: + def func_append_r2(row): + pass + else: + def func_append_r2(row): + rows1.append(row) + i2 = -1 + for r2 in rows2: + i2 += 1 + try: + rows1[dic1[i2]].update(r2) + except KeyError: + func_append_r2(r2) + # concaténation des titres + info sur le merge + tit = '\n'.join([tb1.titr, tb2.titr, 'MERGE avec labels=%s' % repr(labels)]) + return Table(rows1, n_para, n_type, tit) + +# ------------------------------------------------------------------------------ +def _typaster(obj, prev=None, strict=False): + """Retourne le type Aster ('R', 'I', Kdef) correspondant à l'objet obj. + Si prev est fourni, on vérifie que obj est du type prev. + Si strict=False, on autorise que obj ne soit pas du type prev s'ils sont + tous les deux numériques ; dans ce cas, on retourne le "type enveloppe" 'R'. + """ + dtyp={ + IntType : 'I', + FloatType : 'R', + StringType : Kdef, UnicodeType : Kdef, + NoneType : 'I', + } + if is_float(obj): + obj = float(obj) + if type(obj) in dtyp.keys(): + typobj=dtyp[type(obj)] + if prev in [None, typobj]: + return typobj + elif prev[0] == typobj[0] == 'K': + if len(obj) <= int(prev[1:]): + return prev + else: + raise TypeError, "La longueur de la chaine %s est incompatible avec le type %s" \ + % (repr(obj),repr(prev)) + elif strict: # prev != None et typobj != prev et strict + raise TypeError, "La valeur %s n'est pas de type %s" % (repr(obj),repr(prev)) + elif prev in ('I','R') and typobj in ('I','R'): + return 'R' + else: + raise TypeError, "La valeur %s n'est pas compatible avec le type %s" \ + % (repr(obj),repr(prev)) + else: + raise TypeError, 'Une table ne peut contenir que des entiers, réels ' \ + 'ou chaines de caractères.' + +# ------------------------------------------------------------------------------ +# fonctions utilitaires +def _func_test_abs(v, VALE, PRECISION): + """Retourne True si v est parmi VALE à PRECISION près en absolu + """ + for x in VALE: + if v != None and (x-PRECISION <= v <= x+PRECISION): + return True + return False + +def _func_test_rela(v, VALE, PRECISION): + """Retourne True si v est parmi VALE à PRECISION près en relatif + """ + for x in VALE: + sign = float(x > 0.) or -1. + if v != None and (sign*x*(1.-PRECISION) <= sign*v <= sign*x*(1.+PRECISION)): + return True + return False + +def check_nan(values): + """Raise ValueError exception if nan is found in values.""" + for i, v in enumerate(values): + if str(v) == 'nan': + raise ValueError, 'NaN present at index %d' % i + diff --git a/Aster/Cata/cataSTA10/Utilitai/UniteAster.py b/Aster/Cata/cataSTA10/Utilitai/UniteAster.py new file mode 100644 index 00000000..23864c12 --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/UniteAster.py @@ -0,0 +1,210 @@ +#@ MODIF UniteAster Utilitai DATE 06/07/2009 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2005 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. +# ====================================================================== + +# RESPONSABLE COURTOIS M.COURTOIS + +import types + +import aster +from Cata.cata import _F +from Cata.cata import DEFI_FICHIER +from Cata.cata import INFO_EXEC_ASTER +from Cata.cata import DETRUIRE + +#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- +class UniteAster: + """Classe pour manipuler les fichiers en Python en accord avec les unités + logiques utilisées en Fortran. + De manière analogue au Fortran, les états possibles d'une unité sont : + 'F' : fermé, 'O' : ouvert, 'R' : réservé. + + Méthodes : + Nom : Retourne le nom du fichier associé à une unité, + Etat : Retourne l'état d'une unité, + Libre : Retourne un numéro d'unité libre, + EtatInit : Remet une, plusieurs ou toutes les unités dans leur état initial. + + Méthode privée : + _setinfo : pour remplir le dictionnaire des 'infos' + Attribut privé : + infos[numéro unité] = { 'nom' : x, 'etat' : x , 'etat_init' : x } + """ +#------------------------------------------------------------------------------- + def __init__(self): + """Initialise le dictionnaire des unités. + """ + self.infos = {} + +#------------------------------------------------------------------------------- + def _setinfo(self, ul): + """Remplit les infos de l'unité 'ul'. + """ + # ul peut etre un entier Aster + try: + unit = ul.valeur + except: + unit = int(ul) + # Si la clé n'existe pas + ini = False + if not self.infos.has_key(unit): + self.infos[unit] = {} + self.infos[unit]['nom'] = '' + self.infos[unit]['etat'] = '?' + self.infos[unit]['etat_init'] = '?' + ini = True + + __tab=INFO_EXEC_ASTER(UNITE=unit, LISTE_INFO=('ETAT_UNITE')) + + # O:ouvert, F:fermé, R:réservé + self.infos[unit]['etat'] = __tab['ETAT_UNITE',1].strip()[0] + if ini: + self.infos[unit]['etat_init'] = self.infos[unit]['etat'] + + # nom du fichier + if self.infos[unit]['etat'] in ['O', 'R']: + nomfich=''.join([__tab['NOMFIC%d' % i,1] for i in range(1,5)]).strip() + elif self.infos[unit]['etat'] == 'F': + nomfich='fort.'+str(unit) + else: + message = "Etat de l'unité inconnu : %s" % self.infos[unit]['etat'] + print __tab.EXTR_TABLE() + raise aster.error," %s" % message + self.infos[unit]['nom'] = nomfich + #print 'DEBUG infos[unit] = ', self.infos[unit] + DETRUIRE(CONCEPT=_F(NOM=__tab),INFO=1) + +#------------------------------------------------------------------------------- + def Libre(self, nom=None, action='RESERVER'): + """Réserve/associe et retourne une unité libre en y associant, s'il est + fourni, le fichier 'nom'. + """ + __tab=INFO_EXEC_ASTER(LISTE_INFO=('UNITE_LIBRE')) + unit = __tab['UNITE_LIBRE',1] + DETRUIRE(CONCEPT=_F(NOM=__tab),INFO=1) + if nom==None: + nom='fort.'+str(unit) + + # Si la clé existe, c'est que le fichier n'était pas libre + if self.infos.has_key(unit): + message = "Cette unité est déjà affectée au fichier %s" % \ + self.infos[unit]['nom'] + raise aster.error," %s" % message + + DEFI_FICHIER(ACTION=action, UNITE=unit , FICHIER=nom.strip()) + self.infos[unit] = {} + self.infos[unit]['nom'] = nom.strip() + self.infos[unit]['etat'] = 'R' + self.infos[unit]['etat_init'] = 'F' + return unit + +#------------------------------------------------------------------------------- + def Nom(self, ul): + """Retourne le nom du fichier associé à l'unité 'ul'. + """ + # ul peut etre un entier Aster + try: + unit = ul.valeur + except: + unit = int(ul) + # Si la clé n'existe pas + if not self.infos.has_key(unit): + self._setinfo(unit) + return self.infos[unit]['nom'] + +#------------------------------------------------------------------------------- + def Etat(self, ul, **kargs): + """Retourne l'état de l'unité si 'etat' n'est pas fourni + et/ou change son état : + kargs['etat'] : nouvel état, + kargs['nom'] : nom du fichier, + kargs['TYPE'] : type du fichier à ouvrir ASCII/BINARY/LIBRE, + kargs['ACCES'] : type d'accès NEW/APPEND/OLD (APPEND uniquement en ASCII). + """ + # ul peut etre un entier Aster + try: + unit = ul.valeur + except: + unit = int(ul) + # Si la clé n'existe pas + if not self.infos.has_key(unit): + self._setinfo(unit) + if not kargs.has_key('etat'): + return self.infos[unit]['etat'] + + # En fonction de la demande, on bascule son état ou pas + new = kargs.get('etat') + if not new in ['R', 'F', 'O']: + message = "Nouvel état de l'unité incorrect : %s" % new + raise aster.error," %s" % message + + if self.infos[unit]['etat'] == new: + pass + elif new == 'R': + if self.infos[unit]['etat'] == 'O': + DEFI_FICHIER(ACTION='LIBERER', UNITE=unit) + DEFI_FICHIER(ACTION = 'RESERVER', + UNITE = unit, + FICHIER = kargs.get('nom', self.infos[unit]['nom'])) + self._setinfo(unit) + elif new == 'F': + DEFI_FICHIER(ACTION='LIBERER', UNITE=unit) + elif new == 'O': + if self.infos[unit]['etat'] == 'R': + DEFI_FICHIER(ACTION='LIBERER', UNITE=unit) + # valeurs par défaut + typ = kargs.get('TYPE', 'ASCII') + if typ == 'ASCII': + acces = 'APPEND' + else: + acces = 'OLD' + acces = kargs.get('ACCES', acces) + DEFI_FICHIER(ACTION ='ASSOCIER', + UNITE = unit, + FICHIER = kargs.get('nom', self.infos[unit]['nom']), + TYPE = typ, + ACCES = acces,) + self._setinfo(unit) + self.infos[unit]['etat'] = new + return self.infos[unit]['etat'] + +#------------------------------------------------------------------------------- + def EtatInit(self, ul=None): + """Remet l'unité 'ul' dans son état initial. + Si 'ul' est omis, toutes les unités sont remises dans leur état initial. + """ + if ul == None: + for uli, vul in self.infos.items(): + self.Etat(uli, etat=vul['etat_init']) + else: + if not type(ul) in [types.ListType, types.TupleType]: + ul=[ul,] + for u in ul: + # u peut etre un entier Aster + try: + unit = u.valeur + except: + unit = int(u) + # Si la clé n'existe pas + if not self.infos.has_key(unit): + self._setinfo(unit) + else: + self.Etat(unit, etat=self.infos[unit]['etat_init']) diff --git a/Aster/Cata/cataSTA10/Utilitai/Utmess.py b/Aster/Cata/cataSTA10/Utilitai/Utmess.py new file mode 100644 index 00000000..3aa5242d --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/Utmess.py @@ -0,0 +1,711 @@ +#@ MODIF Utmess Utilitai DATE 14/03/2011 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +import os +import sys +import traceback +import imp +import re + +# protection pour eficas +try: + import aster + from aster import error + aster_exists = True + from Messages.context_info import message_context_concept +except: + aster_exists = False + class error(Exception): + pass + +def _(s): + return s + +from Noyau.N_types import force_list + + +MAXLENGTH = 132 + +contacter_assistance = """ +Il y a probablement une erreur dans la programmation. +Veuillez contacter votre assistance technique.""" + +# voir en fin de fin les faux appels à UTMESS pour la vérification des messages + + +def list_unit(code): + """Retourne la liste des noms de fichiers (logiques) sur lesquels doit + etre imprimé le message. + """ + #IDF = INDEX('EFIDASXZ', ...) + #'Z' (IDF=8) = LEVEE D'EXCEPTION + d = { + 'E' : ('ERREUR', 'MESSAGE', 'RESULTAT'), + 'I' : ('MESSAGE',), + 'A' : ('MESSAGE', 'RESULTAT'), + } + d['F'] = d['S'] = d['Z'] = d['E'] + d['X'] = d['A'] + return d.get(code, d['F']) + + +class MESSAGE_LOGGER: + """Classe gérant l'impression de messages. + On ne crée qu'une instance de ce type. + Cette instance est accessible via le module E_Global pour astermodule.c + """ + def __init__(self): + """Initialisation + """ + self.init_buffer() + + # est-ce qu'une erreur s'est produite + self.erreur_E = False + + # compteur des alarmes émises { 'id_alarm' : count } + self.count_alarm = {} # dans la commande courante (pour arret à 5) + self.count_alarm_tot = {} # au total + + # alarmes à ignorer, à masquer (on ne les compte pas temporairement) + self._ignored_alarm = {} + self._hidden_alarm = {} + + # on prépare le dictionnaire des valeurs par défaut des arguments (dicarg) : + self.default_args = {} + # initialisation des 10 premiers + for i in range(1,11): + self.default_args['i%d' % i] = 99999999 + self.default_args['r%d' % i] = 9.9999E99 + self.default_args['k%d' % i] = 'xxxxxx' + + + def __call__(self, *args, **kwargs): + """Raccourci pour simplifier l'appel depuis astermodule.c et UTMESS. + """ + self.print_message(*args, **kwargs) + + + def print_message(self, code, idmess, valk=(), vali=(), valr=(), + exception=False, print_as=None, cc=None): + """Appelé par la routine fortran U2MESG ou à la fonction python UTMESS + pour afficher un message. + L'impression de ce message est différée si le `code` est suivi d'un "+". + code : 'A', 'E', 'S', 'F', 'I' + idmess : identificateur du message + valk, vali, valr : liste des chaines, entiers ou réels. + Si exception==True, on lève une exception en cas d'erreur, sinon + c'est l'appelant qui devra s'en charger (dans le C a priori). + 'print_as' : cf. print_buffer_content. + """ + # le '+' n'a pas de sens pour les messages 'I'. + if code == "I+": + code = "I" + # récupération du texte du message + dictmess = self.get_message(code, idmess, valk, vali, valr) + + # on le met dans le buffer + self.add_to_buffer(dictmess) + + # si on n'attend pas une suite, ... + if len(code) < 2 or code[1] != '+': + # mise à jour des compteurs + self.update_counter() + + # on imprime le message en attente + self.print_buffer_content(print_as, cc) + + if exception and code[0] in ('S', 'F'): + raise error(idmess, valk, vali, valr) + + return None + + + def build_dict_args(self, valk, vali, valr): + """Construit le dictionnaire de formatage du message. + """ + # homogénéisation : uniquement des tuples + strip des chaines de caractères + valk, vali, valr = map(force_list, (valk, vali, valr)) + valk = [k.strip() for k in valk] + + # variables passées au message + dicarg = self.default_args.copy() + for i in range(1,len(valk)+1): + dicarg['k%d' % i] = valk[i-1] + for i in range(1,len(vali)+1): + dicarg['i%d' % i] = vali[i-1] + for i in range(1,len(valr)+1): + dicarg['r%d' % i] = valr[i-1] + # valeur spéciale : ktout = concaténation de toutes les chaines + dicarg['ktout'] = ' '.join(valk) + + return dicarg + + + def get_message(self, code, idmess, valk=(), vali=(), valr=()): + """Retourne le texte du message dans un dictionnaire dont les clés sont : + 'code', 'id_message', 'corps_message' + """ + # décodage : idmess => (catamess, numess) + idmess = idmess.strip() + x = idmess.split("_") + assert len(x) > 1, idmess + catamess='_'.join(x[0:-1]).lower() + numess = int(x[-1]) + assert numess > 0 and numess < 100, idmess + + # import catamess => cata_msg + try: + mod = __import__('Messages.%s' % catamess, globals(), locals(), [catamess]) + # si le dictionnaire n'existe pas, on alertera au moment du formatage. + cata_msg = getattr(mod, 'cata_msg', {}) + except Exception, msg: + # doit permettre d'éviter la récursivité (catamess réservé à Utmess) + if catamess != 'catamess': + self.print_message('A', 'CATAMESS_57', valk=(catamess, str(msg))) + cata_msg = {} + + # corps du message + try: + dicarg = self.build_dict_args(valk, vali, valr) + + # cata_msg[num] = 'format' + # ou {'message' : 'format', 'context' : 'éléments de contexte'} + if type(cata_msg[numess]) == dict: + fmt_msg = cata_msg[numess]['message'] + ctxt_msg = cata_msg[numess]['context'] + else: + fmt_msg = cata_msg[numess] + ctxt_msg = None + + dictmess = { + 'code' : code, + 'id_message' : idmess, + 'corps_message' : fmt_msg % dicarg, + 'context_info' : self.get_context(ctxt_msg, idmess, dicarg), + } + except Exception, msg: + dictmess = { + 'code' : code, + 'id_message' : '', + 'corps_message' : """Erreur de programmation. +Le message %s n'a pas pu etre formaté correctement. +Arguments : + entiers : %s + réels : %s + chaines : %s +-------------------------------------------------------------------------- +%s +Exception : %s +-------------------------------------------------------------------------- + +%s""" \ + % (idmess, vali, valr, valk, ''.join(traceback.format_tb(sys.exc_traceback)), msg, contacter_assistance), + 'context_info' : '', + } + # limite la longueur des ligness + dictmess['corps_message'] = cut_long_lines(dictmess['corps_message'], MAXLENGTH) + return dictmess + + + def GetText(self, *args, **kwargs): + """Retourne le texte du message pret a etre imprime. + """ + return self.format_message(self.get_message(*args, **kwargs)) + + + def init_buffer(self): + """Initialise le buffer. + """ + self._buffer = [] + + + def add_to_buffer(self, dictmess): + """Ajoute le message décrit dans le buffer en vue d'une impression + ultérieure. + """ + self._buffer.append(dictmess) + + + def get_current_code(self): + """Retourne le code du message du buffer = code du message le plus grave + (cf. dgrav) + """ + dgrav = { '?' : -9, 'I' : 0, 'A' : 1, 'S' : 4, 'Z' : 4, 'E' : 6, 'F' : 10 } + + current = '?' + for dictmess in self._buffer: + code = dictmess['code'][0] + if dgrav.get(code, -9) > dgrav.get(current, -9): + current = code + + return current + + + def get_current_id(self): + """Retourne l'id du message du buffer = id du premier message + """ + return self._buffer[0]['id_message'] + + + def print_buffer_content(self, print_as=None, cc=None): + """Extrait l'ensemble des messages du buffer dans un dictionnaire unique, + imprime le message, et vide le buffer pour le message suivant. + - code : celui du message le plus grave (cf. dgrav) + - id : celui du premier message qui est affiché + - corps : concaténation de tous les messages. + 'print'_as permet d'imprimer un message sur des fichiers autres que les fichiers + habituels de 'code'. Par ex, imprimer un message d'info sur 'ERREUR'. + 'cc' : liste de noms de fichiers ou objets fichier dans lesquels copier le message + """ + if len(self._buffer) < 1: + return None + + # construction du dictionnaire du message global + dglob = { + 'code' : self.get_current_code(), + 'id_message' : self.get_current_id(), + 'liste_message' : [], + 'liste_context' : [], + } + for dictmess in self._buffer: + dglob['liste_message'].append(dictmess['corps_message']) + dglob['liste_context'].append(dictmess['context_info']) + dglob['corps_message'] = ''.join(dglob['liste_message']) + dglob['context_info'] = ''.join(dglob['liste_context']) + + # liste des unités d'impression en fonction du type de message + l_unit = list_unit(print_as or dglob['code']) + + # texte final et impression + txt = self.format_message(dglob) + for unite in l_unit: + self.affiche(unite, txt) + # "cc" + if cc: + copy_text_to(txt, cc) + + self.init_buffer() + + + def disable_alarm(self, idmess, hide=False): + """Ignore l'alarme "idmess". + """ + if hide: + self._hidden_alarm[idmess] = self._hidden_alarm.get(idmess, 0) + 1 + else: + self._ignored_alarm[idmess] = self._ignored_alarm.get(idmess, 0) + 1 + + def reset_alarm(self, idmess, hide=False): + """Réactive l'alarme "idmess". + """ + if hide: + self._hidden_alarm[idmess] = min(self._hidden_alarm.get(idmess, 0) - 1, 0) + else: + self._ignored_alarm[idmess] = min(self._ignored_alarm.get(idmess, 0) - 1, 0) + + def is_alarm_disabled(self, idmess): + """Doit-on ignorer l'alarme "idmess" ? + """ + return self._ignored_alarm.get(idmess, 0) + self._hidden_alarm.get(idmess, 0) > 0 + + def info_alarm(self, only_ignored=False): + """Fournit les infos sur les alarmes activées. + """ + s_alarm = set(self._ignored_alarm.keys()) + if not only_ignored: + s_alarm.update(self.count_alarm_tot.keys()) + l_alarm = list(s_alarm) + l_alarm.sort() + # on sépare des éventuels messages en attente + self.print_buffer_content() + # entete + dictmess = self.get_message('I', 'CATAMESS_89') + self.add_to_buffer(dictmess) + # occurrences + ieff = 0 + for idmess in l_alarm: + mark = ' ' + ieff += 1 + if self._ignored_alarm.get(idmess) is not None: + mark = '(*)' + dictmess = self.get_message('I', 'CATAMESS_90', valk=(mark, idmess), + vali=self.count_alarm_tot.get(idmess, 0)) + self.add_to_buffer(dictmess) + if ieff == 0: + dictmess = self.get_message('I', 'CATAMESS_92') + self.add_to_buffer(dictmess) + # fermeture + dictmess = self.get_message('I', 'CATAMESS_91') + self.add_to_buffer(dictmess) + self.print_buffer_content(print_as='A') + + + def update_counter(self): + """Mise à jour des compteurs et réaction si besoin. + """ + nmax_alarm = 5 + code = self.get_current_code() + if code == 'E': + self.erreur_E = True + elif code == 'F': + self.erreur_E = False + elif code == 'A': + idmess = self.get_current_id() + # nombre d'occurrence de cette alarme (sauf si cachee) + if self._hidden_alarm.get(idmess, 0) == 0: + self.count_alarm[idmess] = self.count_alarm.get(idmess, 0) + 1 + self.count_alarm_tot[idmess] = self.count_alarm_tot.get(idmess, 0) + 1 + + if self.is_alarm_disabled(idmess) or self.count_alarm[idmess] > nmax_alarm: + # ignorer l'alarme ou count_alarm > max, on vide le buffer + self.init_buffer() + elif self.count_alarm[idmess] == nmax_alarm: + # Pour mettre en relief le message CATAMESS_41, on le sépare + # de la dernière alarme + self.print_buffer_content() + dictmess = self.get_message(code, 'CATAMESS_41', + valk=idmess, vali=nmax_alarm) + self.add_to_buffer(dictmess) + + + def check_counter(self, info_alarm=0, silent=0): + """Méthode "jusqu'ici tout va bien" ! (Interface C : chkmsg) + Si des erreurs se sont produites, on arrete le code en . + Appelée par FIN ou directement au cours de l'exécution d'une commande. + Retourne un entier : 0 si tout est ok. + Si silent==1, on n'émet pas de message, on ne s'arrete pas. + """ + iret = 0 + if self.erreur_E: + iret = 4 + self.erreur_E = False + if not silent: + self.print_message('F', 'CATAMESS_6', exception=True) + if info_alarm: + self.info_alarm() + return iret + + + def reset_command(self): + """Méthode appelée entre les commandes. (Interface C : resmsg) + On remet à zéro le compteur d'alarme, + on vérifie les erreurs en attente.""" + iret = self.check_counter() + # reset des alarmes + self.count_alarm = {} + + + def format_message(self, dictmess): + """Formate le message décrit dans un dico : + 'code' : A, E, S, F, I + 'id_message' : identification du message + 'corps_message' : texte + """ + charh = '-' # horizontal + charv = '!' # vertical + charc = '!' # coin + dcomm = { + 'A' : _("""Ceci est une alarme. Si vous ne comprenez pas le sens de cette +alarme, vous pouvez obtenir des résultats inattendus !"""), + 'E' : _("""Cette erreur sera suivie d'une erreur fatale."""), + 'S' : _("""Cette erreur est fatale. Le code s'arrete. Toutes les étapes +du calcul ont été sauvées dans la base jusqu'au moment de l'arret."""), + 'F' : _("""Cette erreur est fatale. Le code s'arrete."""), + } + + # format complet + format_general = { + 'decal' : ' ', + 'header' : """<%(type_message)s> %(str_id_message)s""", + 'ligne' : '%(charv)s %%-%(maxlen)ds %(charv)s', + 'corps' : """%(header)s + +%(corps_message)s +%(context_info)s + +%(commentaire)s +""", + 'final' : """ +%(separateur)s +%(corps)s +%(separateur)s + +""", + } + # format light pour les infos + format_light = { + 'decal' : '', + 'header' : """<%(type_message)s> """, + 'ligne' : '%%s', + 'corps' : """%(corps_message)s +%(context_info)s""", + 'final' : """%(corps)s""", + } + dmsg = dictmess.copy() + dmsg['type_message'] = self.get_type_message(dictmess['code']) + if dmsg['id_message'] != 'I': + dmsg['str_id_message'] = '<%s>' % dmsg['id_message'] + else: + dmsg['str_id_message'] = '' + + # format utilisé + format = format_general + if dmsg['type_message'] == 'I': + format = format_light + if format is format_general: + dmsg['corps_message'] = dmsg['corps_message'].strip() + + dmsg['header'] = format['header'] % dmsg + dmsg['commentaire'] = dcomm.get(dmsg['type_message'], '') + if re.search('^DVP', dmsg['id_message']) != None: + dmsg['commentaire'] += contacter_assistance + + dmsg['corps'] = format['corps'] % dmsg + if format is format_general: + dmsg['corps'] = dmsg['corps'].strip() + + + # longueur de la ligne la plus longue + l_line = dmsg['corps'].splitlines() + maxlen = max([len(line) for line in l_line]) + + # format des lignes sur maxlen caractères + dlin = { + 'charh' : charh, + 'charv' : charv, + 'charc' : charc, + 'maxlen' : maxlen + } + fmt_line = format['ligne'] % dlin + + # on formate toutes les lignes + txt = [fmt_line % line for line in l_line] + dmsg['corps'] = os.linesep.join(txt) + dmsg['separateur'] = charc + charh * (maxlen + 2) + charc + + # ligne haut et bas + newtxt = format['final'] % dmsg + # on décale + l_txt = [format['decal'] + line for line in newtxt.splitlines()] + + return clean_string(os.linesep.join(l_txt)) + + + def get_type_message(self, code): + """Retourne le type du message affiché. + En cas d'erreur, si on lève une exception au lieu de s'arreter, + on n'affiche pas le type de l'erreur pour ne pas fausser le diagnostic + """ + typmess = code.strip() + if self.onFatalError().startswith('EXCEPTION'): + if typmess in ('E', 'F'): + typmess = 'EXCEPTION' + # dans tous les cas, pour S et Z (exception), on affiche EXCEPTION. + if typmess in ('Z', 'S'): + typmess = 'EXCEPTION' + return typmess + + + def get_context(self, ctxt_msg, idmess, dicarg): + """Prise en compte du context du message pour donner d'autres infos + à l'utilisateur. + ctxt_msg est un dictionnaire. Les clés traitées sont : + - CONCEPT + """ + if not ctxt_msg: + return '' + msg = [] + # tout dans un try/except car c'est du bonus, il ne faudrait pas planter ! + try: + if ctxt_msg.has_key('CONCEPT'): + l_co = [dicarg[arg] for arg in force_list(ctxt_msg['CONCEPT'])] + for co in l_co: + msg.append(message_context_concept(co)) + except: + pass + return os.linesep.join(msg) + + + # définitions pour fonctionner sans le module aster + def affiche(self, unite, txt): + """Affichage du message""" + if aster_exists: + aster.affiche(unite, txt) + else: + print txt + + + def onFatalError(self): + """Récupérer le comportement en cas d'erreur fatale.""" + if aster_exists: + return aster.onFatalError() + else: + return 'EXCEPTION' + + +def clean_string(chaine): + """Supprime tous les caractères non imprimables. + """ + invalid = '?' + txt = [] + for c in chaine: + if ord(c) != 0: + txt.append(c) + else: + txt.append(invalid) + return ''.join(txt) + + +def maximize_lines(l_fields, maxlen, sep): + """Construit des lignes dont la longueur est au plus de `maxlen` caractères. + Les champs sont assemblés avec le séparateur `sep`. + """ + newlines = [] + while len(l_fields) > 0: + cur = [] + while len(l_fields) > 0 and len(sep.join(cur + [l_fields[0],])) <= maxlen: + cur.append(l_fields.pop(0)) + newlines.append(sep.join(cur)) + newlines = [l for l in newlines if l != ''] + return newlines + +def cut_long_lines(txt, maxlen, sep=os.linesep, + l_separ=(' ', ',', ';', '.', ':')): + """Coupe les morceaux de `txt` (isolés avec `sep`) de plus de `maxlen` + caractères. + On utilise successivement les séparateurs de `l_separ`. + """ + l_lines = txt.split(sep) + newlines = [] + for line in l_lines: + if len(line) > maxlen: + l_sep = list(l_separ) + line = cut_long_lines(line, maxlen, l_sep[0], l_sep[1:]) + line = maximize_lines(line, maxlen, l_sep[0]) + newlines.extend(line) + else: + newlines.append(line) + # au plus haut niveau, on assemble le texte + if sep == os.linesep: + newlines = os.linesep.join(newlines) + return newlines + + +def copy_text_to(text, files): + """Imprime le texte dans les fichiers. + """ + files = force_list(files) + for f in files: + assert type(f) in (str, file) + if type(f) == file: + fobj = file + else: + fobj = open(f, 'a') + # should be closed automatically + fobj.write(text) + fobj.write(os.linesep) + fobj.flush() + + +# unique instance du MESSAGE_LOGGER +MessageLog = MESSAGE_LOGGER() + + +def UTMESS(code, idmess, valk=(), vali=(), valr=(), print_as=None, cc=None): + """Utilitaire analogue à la routine fortran U2MESS/U2MESG avec les arguments + optionnels. + code : 'A', 'E', 'S', 'F', 'I' + idmess : identificateur du message + valk, vali, valr : liste des chaines, entiers ou réels. + + Appel sans valeurs : avec valeurs : + UTMESS('A', 'SUPERVIS_40') UTMESS('A', 'SUPERVIS_40', vali=[1, 2]) + + Remarques : + - Nommer les arguments permet de ne pas tous les passer. + - Meme fonctionnement que U2MESG : + + appel à MessageLog + + puis exception ou abort en fonction du niveau d'erreur. + """ + MessageLog(code, idmess, valk, vali, valr, exception=True, print_as=print_as, cc=cc) + + +def ASSERT(condition, message=""): + """Remonter un assert dans un message. + """ + if condition: + return + stack = traceback.format_stack(limit=10) + UTMESS('F', 'DVP_9', valk=[(''.join(stack[:-1]),), message]) + + +def message_exception(code, exc): + """Retourne le message associé à une exception aster.error + tel qu'il aurait été imprimé par UTMESS selon la valeur de + `code` ('I', 'A', 'S', 'F', 'Z'...).""" + return MessageLog.GetText(code, exc.id_message, + exc.valk, exc.vali, exc.valr) + + +def MasquerAlarme(idmess): + """Masque une alarme : ni affichee, ni comptee. + Utilisation dans les macros : + MasquerAlarme(XXX) au debut de la macro + RetablirAlarme(XXX) a la fin de la macro + Comme il s'agit d'un compteur qui est incremente puis decremente, il est + imperatif qu'il y ait autant d'appel a MasquerAlarme qu'a RetablirAlarme. + """ + MessageLog.disable_alarm(idmess, hide=True) + + +def RetablirAlarme(idmess): + """Retablit l'etat initial pour l'alarme 'idmess'. + """ + MessageLog.reset_alarm(idmess, hide=True) + + +# faux appels à UTMESS +def __fake__(): + UTMESS('I', 'SUPERVIS_40') # surcharge émis par asrun + UTMESS('I', 'SUPERVIS_96') # émis depuis le C (inisig) + UTMESS('I', 'SUPERVIS_97') # émis depuis le C (inisig) + UTMESS('I', 'GENERIC_1') # dans des tests pour traiter les exceptions + UTMESS('I', 'CATAMESS_6') + UTMESS('I', 'CATAMESS_41') + UTMESS('I', 'CATAMESS_55') # pour u2mesg.f + UTMESS('I', 'CATAMESS_57') + UTMESS('I', 'CATAMESS_69') # pour u2mesg.f + UTMESS('I', 'CATAMESS_70') # pour u2mesg.f + UTMESS('I', 'CATAMESS_89') + UTMESS('I', 'CATAMESS_90') + UTMESS('I', 'CATAMESS_91') + UTMESS('I', 'CATAMESS_92') + # appelé par levé d'exception + UTMESS('I', 'MISS0_3') + UTMESS('I', 'MISS0_5') + UTMESS('I', 'MISS0_6') + UTMESS('I', 'MISS0_7') + UTMESS('I', 'MISS0_8') + UTMESS('I', 'MISS0_9') + UTMESS('I', 'MISS0_11') + UTMESS('I', 'MISS0_17') + + diff --git a/Aster/Cata/cataSTA10/Utilitai/__init__.py b/Aster/Cata/cataSTA10/Utilitai/__init__.py new file mode 100644 index 00000000..b51eff55 --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/__init__.py @@ -0,0 +1,21 @@ +#@ MODIF __init__ Utilitai DATE 20/09/2004 AUTEUR DURAND C.DURAND +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2003 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. +# ====================================================================== + + diff --git a/Aster/Cata/cataSTA10/Utilitai/as_timer.py b/Aster/Cata/cataSTA10/Utilitai/as_timer.py new file mode 100644 index 00000000..892cecf8 --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/as_timer.py @@ -0,0 +1,272 @@ +#@ MODIF as_timer Utilitai DATE 05/09/2008 AUTEUR COURTOIS M.COURTOIS +# -*- 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +""" + Definition of ASTER_TIMER class. +""" + +__revision__ = "$Id: as_timer.py,v 1.1.2.1 2011-05-13 14:43:07 barate Exp $" + +# ----- differ messages translation +def _(mesg): + return mesg + +import os +import time + +#------------------------------------------------------------------------------- +def _dtimes(): + """Returns a dict of cpu, system and total times. + """ + l_t = os.times() + return { 'cpu' : (l_t[0], l_t[2]), + 'sys' : (l_t[1], l_t[3]), + 'tot' : l_t[4], } + +#------------------------------------------------------------------------------- +def _conv_hms(t): + """Convert a number of seconds in hours, minutes, seconds. + """ + h = int(t/3600) + m = int(t % 3600)/60 + s = (t % 3600) % 60 + return h, m, s + +#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- +class ASTER_TIMER: + """This class provides methods to easily measure time spent during + different steps. + Methods : + Start : start a timer in mode 'INIT' ([re]start from 0) or 'CONT' + (restart from last value). + Stop : stop a timer + Attributes : + timers : dict { + timer_id : { + 'name' : timer legend (=timer_id by default), + 'state' : state, + 'cpu_t0' : initial cpu time, + 'cpu_dt' : spent cpu time, + 'sys_t0' : initial system time, + 'sys_dt' : spent system time, + 'tot_t0' : start time, + 'tot_dt' : total spent time, + 'num' : timer number (to print timers in order of creation), + 'hide' : boolean, + }, + ... + } + state is one of 'start', 'stop' + """ + MaxNumTimer = 9999999 + +#------------------------------------------------------------------------------- + def __init__(self, add_total=True, format='as_run'): + """Constructor + """ + # ----- initialisation + self.timers = {} + self.add_total = add_total + + if not format in ('as_run', 'aster'): + format = 'as_run' + + if format == 'as_run': + self.fmtlig = ' %(name)-33s %(cpu_dt)9.2f %(sys_dt)9.2f %(cpu_sys)9.2f %(tot_dt)9.2f' + self.fmtstr = ' %(title)-33s %(cpu)9s %(sys)9s %(cpu+sys)9s %(elapsed)9s' + self.sepa = ' ' + '-'*81 + self.TotalKey = _('Total time') + self.d_labels = { + 'title' : '', + 'cpu' : _('cpu'), + 'sys' : _('system'), + 'cpu+sys' : _('cpu+sys'), + 'elapsed' : _('elapsed'), + } + elif format == 'aster': + self.fmtlig = ' * %(name)-24s : %(cpu_dt)10.2f : %(sys_dt)10.2f : %(cpu_sys)10.2f : %(tot_dt)10.2f *' + self.fmtstr = ' * %(title)-24s : %(cpu)10s : %(sys)10s : %(cpu+sys)10s : %(elapsed)10s *' + self.sepa = ' ' + '*'*80 + self.TotalKey = 'TOTAL_JOB' + self.d_labels = { + 'title' : 'COMMAND', + 'cpu' : 'USER', + 'sys' : 'SYSTEM', + 'cpu+sys' : 'USER+SYS', + 'elapsed' : 'ELAPSED', + } + + self.total_key = id(self) + if self.add_total: + self.Start(self.total_key, name=self.TotalKey, num=self.MaxNumTimer) + +#------------------------------------------------------------------------------- + def Start(self, timer, mode='CONT', num=None, hide=None, name=None): + """Start a new timer or restart one + """ + name = name or str(timer) + isnew = self.timers.get(timer) is None + if not num: + num = len(self.timers) + if mode == 'INIT': + num = self.timers[timer]['num'] + dico = _dtimes() + if isnew or mode == 'INIT': + self.timers[timer] = { + 'name' : name, + 'state' : 'start', + 'cpu_t0' : dico['cpu'], + 'cpu_dt' : 0., + 'sys_t0' : dico['sys'], + 'sys_dt' : 0., + 'tot_t0' : dico['tot'], + 'tot_dt' : 0., + 'num' : num, + 'hide' : hide, + } + elif mode == 'CONT' and self.timers[timer]['state'] == 'stop': + self.timers[timer].update({ + 'state' : 'start', + 'cpu_t0' : dico['cpu'], + 'sys_t0' : dico['sys'], + 'tot_t0' : dico['tot'], + }) + +#------------------------------------------------------------------------------- + def Add(self, timer, cpu_dt=0., sys_dt=0., to_total=False): + """Add dt values (hidden to os.times, for example under mpirun) to a timer. + """ + if self.timers.get(timer) is not None: + self.timers[timer]['cpu_dt'] += cpu_dt + self.timers[timer]['sys_dt'] += sys_dt + if to_total and timer != self.total_key: + self.Add(self.total_key, cpu_dt, sys_dt) + +#------------------------------------------------------------------------------- + def Stop(self, timer, hide=None): + """Stop a timer + """ + if self.timers.get(timer) is None: + self.timers[timer] = { + 'name' : str(timer), + 'hide' : hide, + 'state' : 'stop', + 'cpu_t0' : 0., + 'cpu_dt' : 0., + 'sys_t0' : 0., + 'sys_dt' : 0., + 'tot_t0' : 0., + 'tot_dt' : 0., + 'num': len(self.timers), + } + elif self.timers[timer]['state'] == 'start': + dico = _dtimes() + self.timers[timer]['state'] = 'stop' + for i in range(len(dico['cpu'])): + self.timers[timer]['cpu_dt'] += \ + dico['cpu'][i] - self.timers[timer]['cpu_t0'][i] + self.timers[timer]['cpu_t0'] = dico['cpu'] + for i in range(len(dico['sys'])): + self.timers[timer]['sys_dt'] += \ + dico['sys'][i] - self.timers[timer]['sys_t0'][i] + self.timers[timer]['sys_t0'] = dico['sys'] + self.timers[timer]['tot_dt'] = self.timers[timer]['tot_dt'] + \ + dico['tot'] - self.timers[timer]['tot_t0'] + self.timers[timer]['tot_t0'] = dico['tot'] + if hide is not None: + self.timers[timer]['hide'] = hide + +#------------------------------------------------------------------------------- + def StopAndGet(self, timer, *args, **kwargs): + """Stop a timer and return "delta" values. + """ + self.Stop(timer, *args, **kwargs) + cpu_dt = self.timers[timer]['cpu_dt'] + sys_dt = self.timers[timer]['sys_dt'] + tot_dt = self.timers[timer]['tot_dt'] + return cpu_dt, sys_dt, tot_dt + +#------------------------------------------------------------------------------- + def StopAndGetTotal(self): + """Stop the timer and return total "delta" values. + """ + return self.StopAndGet(self.total_key) + +#------------------------------------------------------------------------------- + def getsortedtimers(self): + """Return timers list sorted by timer number. + """ + lnum = [[timer['num'], timer] for timer in self.timers.values() if timer['hide'] is not True] + lnum.sort() + return lnum + +#------------------------------------------------------------------------------- + def StopAll(self): + """Stop all timers + """ + lk = self.timers.keys() + if self.add_total: + lk.remove(self.total_key) + for timer in lk: + self.Stop(timer) + +#------------------------------------------------------------------------------- + def __repr__(self): + """Pretty print content of the timer. + NB : call automatically StopAll + """ + self.StopAll() + if self.add_total: + self.Stop(self.total_key) + + labels = self.fmtstr % self.d_labels + out = [''] + # get timers list and sort by 'num' + lnum = self.getsortedtimers() + if lnum: + out.append(self.sepa) + if self.add_total and labels: + out.append(labels) + out.append(self.sepa) + for num, timer in lnum: + d_info = timer.copy() + d_info['cpu_sys'] = d_info['cpu_dt'] + d_info['sys_dt'] + if self.add_total and num == self.MaxNumTimer and len(lnum)>1: + out.append(self.sepa) + out.append(self.fmtlig % d_info) + if lnum: + out.append(self.sepa) + out.append('') + return os.linesep.join(out) + +#------------------------------------------------------------------------------- +if __name__ == '__main__': + chrono = ASTER_TIMER(format='aster') + chrono.Start('Compilation') + chrono.Start('CALC_FONCTION') + chrono.Start(23, name='CALC_FONCTION') + time.sleep(0.4) + chrono.Stop('Compilation') + chrono.Stop(23) + chrono.Start('Child') + print chrono diff --git a/Aster/Cata/cataSTA10/Utilitai/courbes.py b/Aster/Cata/cataSTA10/Utilitai/courbes.py new file mode 100644 index 00000000..5f8f66ae --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/courbes.py @@ -0,0 +1,135 @@ +#@ MODIF courbes Utilitai DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== + +#================================================== +# fonction "COURBES" +# usage : permet de tracer des courbes en interactif +# avec XMGRACE ou dans un fichier postscript +#================================================== + +import Stanley +from Stanley import xmgrace +from Stanley import as_courbes + +def COURBES(listcourb,titre=' ',soustitre=' ',legx=' ',legy=' ',bornex=None,borney=None,fichier=None): + +# ARGUMENTS + +# listcourb : tuple de courbes, chaque courbe etant definie soit par +# (TABLE1, NOM_PARA_X, TABLE2, NOM_PARA_Y, LEGENDE) +# soit par : +# (FONCTION,LEGENDE) +# titre et sous_titre : facultatifs, titre et sous-tritre du graphique +# legx, legy : facultatifs, legendes des axes +# bornex, borney : facultatifs, bornes sur les axes +# fichier : facultatif : sortie au format postscript si present +# +# exemples d'appel : +#-------------------- +# courb1=(SYYPRT,'ABSC_CURV',SYYPRT,'SIYY','PRT') +# courb2=(SYYMLC10,'ABSC_CURV',SYYMLC10,'SIYY','MLC10') +# courb3=(SYYML100,'ABSC_CURV',SYYML100,'SIYY','MLC100') +# listcourb=(courb1,courb2,courb3) +# COURBES(listcourb,titre='Plaque trouee',legx='Abcisses curvilignes',legy='Contraintes (MPa)',bornex=(0,100),borney=(500,1000)) +# fonc1=(F1,'F_PRT') +# fonc2=(F2,'F_MLC10') +# fonc3=(F3,'F_MLC100') +# listfonc=(fonc1,fonc2,fonc3) +# COURBES(listfonc,titre='Fonctions') +# postscript +# COURBES(listfonc,titre='Plaque trouee',fichier='./fort.24') +#-------------------------------------------------------------- + +# initialisation du trace de courbes + + if (fichier!=None): + graphe=xmgrace.Xmgr(10,' -hardcopy -nosafe') + print "Nombre de courbes ",len(listcourb)," sur le fichier :",fichier + + else: + graphe=xmgrace.Xmgr(10,' -noask') + print "Nombre de courbes ",len(listcourb) + + graphe.Nouveau_graphe() + +# dimensionnement des axes + if bornex != None : + xmin=list(bornex)[0] + xmax=list(bornex)[1] + ctest1 = as_courbes.Courbe() + ctest1.x=[xmin,xmax] + ctest1.y=[0.0,0.0] + graphe.Courbe(ctest1) + + if borney != None : + ymin=list(borney)[0] + ymax=list(borney)[1] + ctest2 = as_courbes.Courbe() + ctest2.x=[0.0,0.0] + ctest2.y=[ymin,ymax] + graphe.Courbe(ctest2) + + if titre != None : + if soustitre != None : + graphe.Titre(titre,soustitre) + else : + graphe.Titre(titre,' ') + + if legx != None : + graphe.Axe_x(legx) + + if legy != None : + graphe.Axe_y(legy) + + k = 0 + + for courbi in listcourb: + sigi = as_courbes.Courbe() + + try : + # cas d une table + sigi.Lire_x(courbi[0],courbi[1]) + sigi.Lire_y(courbi[2],courbi[3]) + legende=courbi[4] + except : + # cas d une fonction + sigi.x,sigi.y=courbi[0].Valeurs() + legende=courbi[1] + + graphe.Courbe(sigi,legende) + graphe.Send('WITH G'+repr(graphe.gr_act)) + graphe.Send('S' + str(k) + ' SYMBOL ' + str(k+2)) + graphe.Send('S' + str(k) + ' SYMBOL SIZE 0.5') + graphe.Send('S' + str(k) + ' SYMBOL COLOR '+str(k+2)) + graphe.Send('S' + str(k) + ' LINE COLOR '+str(k+2)) + k = k + 1 + graphe.Send('REDRAW') + + if (fichier!=None): + graphe.Sortie_EPS(fichier) + graphe.Fermer() + else: + graphe.Attendre() + + k=0 + +#=========================================== + + diff --git a/Aster/Cata/cataSTA10/Utilitai/funct_root.py b/Aster/Cata/cataSTA10/Utilitai/funct_root.py new file mode 100644 index 00000000..da488cfe --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/funct_root.py @@ -0,0 +1,95 @@ +#@ MODIF funct_root Utilitai DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS +# -*- coding: iso-8859-1 -*- +################################################################################ +# Mathematical utility routines +# Copyright (C) 1999, Wesley Phoa +# +# Reference: Numerical Recipes in C +# [[[[extraits]]]] + +class BracketingException(Exception): + pass + +class RootFindingException(Exception): + pass + +class MinimizationException(Exception): + pass + +GOLDEN = (1+5**.5)/2 + +# +# MISCELLANEOUS +# + +def sgn(x): + if x==0: + return 0 + else: + return x/abs(x) + +# +# UNIVARIATE ROOT FINDING +# + +def bracket_root(f, interval, max_iterations=50): + """\ +Given a univariate function f and a tuple interval=(x1,x2), +return a new tuple (bracket, fnvals) where bracket=(x1,x2) +brackets a root of f and fnvals=(f(x1),f(x2)). + """ + x1, x2 = interval + if x1==x2: + raise BracketingException("initial interval has zero width") + elif x2= 0: # not currently bracketed + if abs(f1)=0: + raise BracketingException("initial interval does not bracket a root") + x4 = 123456789. + for j in range(max_iterations): + x3 = (x1+x2)/2 + f3 = f(x3) + temp = f3*f3 - f1*f2 + x4, x4old = x3 + (x3-x1)*sgn(f1-f2)*f3/temp**.5, x4 + f4 = f(x4) + if f1*f4<0: # x1 and x4 bracket root + x2, f2 = x4, f4 + else: # x4 and x2 bracket root + x1, f1 = x4, f4 + if min(abs(x1-x2),abs(x4-x4old)) On propose d'opérer ligne par ligne + ==> L'absence d'informations sur la variabilité du nombre d'éléments oblige à traiter le cas général + + + + Etapes du développement : + 24/05/2005 : Test de lecture du fichier, choix d'une stratégie de gestion + 25/05/2005 : Objet itérable pour la lecture du fichier + 29/05/2005 : Créations de filtres pour les spectres +""" + +import math + +def nearestKeys(k1, dct) : + """ + retourne les clés (doublet) les plus proches de 'key' dans le dictionnaire dct + par valeur inférieure et supérieures + """ + kr = min(dct.keys()) + for k2 in dct.keys() : + if (k2kr) : kr = k2 + kinf = kr + + kr = max(dct.keys()) + for k2 in dct.keys() : + if (k2>k1) and (k2 self.upperBound : + toDel = toDel + [i] + + # Nettoyage des fréquences à suppimer (on commence par les plus hautes) + for i in toDel[::-1] : + del spr.listFreq[i] + del spr.dataVal[i] + + toDel = [] + for i in range(0, len(spr.listFreq)) : + if spr.listFreq[i] < self.lowerBound : + toDel = toDel + [i] + else : + break + + # Nettoyage des fréquences à suppimer (on finit par les plus basses) + for i in toDel[::-1] : + del spr.listFreq[i] + del spr.dataVal[i] + + return spr + +class filtreCrible(filtre): + """ + Criblage du spectre selon specif SEPTEN §C-5 (ce que j'en comprend) + """ + def __init__(self, **listOpt): + try : + self.tolerance = listOpt['tolerance'] + except KeyError : + self.tolerance = 0.25 + + self.listEtats = [] + + def _filtre(self, sp) : + self._initListeEtats(sp) # Création de la table des étsts des valeurs du spectre + coef = 1 + + # Parcours de la liste des fréquences + i1, i2, i3 = 0, 2, 1 + bTest = True + while True : + try : + bTest = self._amplitude(sp, i1, i2, i3, coef) + if not(bTest) and ((i2-i1) > 2) : + # Le point a été éliminé, on réexamine le point précédent sauf si c'est le premier examiné + i3 -= 1 + if self._amplitude(sp, i1, i2, i3, coef) : + # Le point a été "récupéré", il devient la nouvelle origine + i1 = i3 + i2 = i2 # écrit quand meme pour la compréhension + i3 += 1 + else : + # Le point reste désactivé, on avance au point suivant, le point d'origine est conservé + i1 = i1 + i2 += 1 + i3 += 2 + elif not(bTest) and not((i2-i1) > 2) : + i1 = i1 + i2 += 1 + i3 += 1 + else : # Le point est conservé, il devient la nouvelle origine + i1 = i3 + i2 += 1 + i3 += 1 + except IndexError : + break + + return self._crible(sp) + + def _initListeEtats(self, sp) : + """ + Crée une liste associant à chaque fréquence du spectre passé en paramètre, un état booléen + qui spécifie si ce couple fréquence-valeur est supprimé ou pas + NB : au départ toutes les valeur sont "True" car aucune valeur n'a été supprimée + """ + self.listEtats = [True for x in sp.listFreq] + + def _crible(self, sp) : + """ + Supprime les points de fréquence qui sont marqué False dans listEtats + """ + sp2 = spectre([], []) # On force car il y a un problème de persistance su spectre précédent + for x,y,z in zip(self.listEtats, sp.listFreq, sp.dataVal) : + if x : + sp2.listFreq.append(y) + sp2.dataVal.append(z) + + return sp2 + + def _amplitude(self, sp, id1, id2, id3, coef=1) : + """ + teste le point d'indice id3 par rapport aux points à sa gauche(p1 d'indice id1) et + à sa droite (p2 d'indice id2). + Le point est éliminé si sa valeur est en dessous de la droite reliant les points + d'indice id1 et id2 sauf si sa distance à cette droite est supérieure à : + tolerance*ordonnée + Le critère est purement sur l'amplitude du point indépendemment de l'intervalle + sur lequel il s'applique + """ + x0 = sp.listFreq[id1] + y0 = sp.dataVal[id1] + x1 = sp.listFreq[id2] + y1 = sp.dataVal[id2] + x2 = sp.listFreq[id3] + y2 = sp.dataVal[id3] + + yp2 = interpole(x2, x0, y0, x1, y1) + + # Le point est il susceptible d'etre supprimé (est il en dessous de la droite p1-p2 ?) + # Faut-il le supprimer pour autant (distance y2 à yp2 > tolerance% de y2) + bSup = not((y2 < yp2) and (abs(yp2-y2)/y2 < self.tolerance)) + + # Changement de l'état du point + self.listEtats[id3] = bSup + + return bSup + +class filtreChevauchement(filtre): + """ + Compare un spectre à un spectre de référence fréquence par fréquence. + Si une fréquence n'existe pas, on cherche la valeur équivalent par interpolation + Pour éviter tout recouvrement, il est éventuellement nécessaire de rajouter + des informations à certaines fréquences + """ + def __init__(self, **listOpt) : + try : + self.spRef = listOpt['ref'] + except KeyError : + self.spRef = spectre() + + try : + signe = listOpt['ordre'] + self.ordre = signe/abs(signe) #coefficient +1 ou -1 + except KeyError : + self.ordre = +1 + except ZeroDivisionError : + self.ordre = +1 + + def _filtre(self, sp) : + spDict = sp.buildMap() + spRefDict = self.spRef.buildMap() + spTestDict = {} + + # On commence par construire un dictionnaire des valeurs à tester comportant toutes les clés contenues + for k in spDict.keys() : spTestDict[k] = True + for k in spRefDict.keys() : spTestDict[k] = True + + # On teste ensuite toutes les valeurs du dictionnaire + for k in spTestDict.keys() : + # Test d'existence dans le dictionnaire du spectre de référence + try : + vr = spRefDict[k] + except KeyError : + ki = nearestKeys(k, spRefDict) + vr = interpole(k, ki[0], spRefDict[ki[0]], ki[1], spRefDict[ki[1]]) + # Test d'existence dans le dictionnaire du spectre à tester + try : + vt = spDict[k] + except KeyError : + ki = nearestKeys(k, spDict) + vt = interpole(k, ki[0], spDict[ki[0]], ki[1], spDict[ki[1]]) + + # Comparaison des deux valeurs. La clé est ajoutée si elle n'existe pas + if vt*self.ordre < vr*self.ordre : spDict[k] = vr + + return spectre.sortSpectre(spDict) + +class spectre : + """ + décrit un spectre composé d'un ensemble de résultat associé à un ensemble de fréquence + """ + def __init__(self, listFreq = [], dataVal = []) : + self.listFreq = [v for v in listFreq] + self.dataVal = [v for v in dataVal] + + def filtre(self, fi) : + """ + Applique le filtre passé en paramètre au spectre et retourne un nouveau spectre + """ + return fi(self) + + def __staticSortSpectre(dict) : + """ + Convertit un spectre présenté sous forme d'un dictionnaire en un spectre normal + Fonction créé parceque les clés du dictionnaire ne sont pas ordonnées + """ + lstFrq = dict.keys() + lstFrq.sort() + lstVal = [] + for fr in lstFrq : + try : + lstVal.append(dict[fr]) + except KeyError : # Ne devrait jamais arriver + lstVal.append(-1E15) + + return spectre(lstFrq, lstVal) + + sortSpectre = staticmethod(__staticSortSpectre) # définition en tant que méthode statique + + def getCoupleVal(self,indice) : + return (self.listFreq[indice], self.dataVal[indice]) + + def moyenne(self) : + """ + Calcule la moyenne pondéré : somme(An* dfn) /F + """ + somme = 0.0 + X0 = self.listFreq[0] + X1 = self.listFreq[len(self.listFreq)-1] + for i in range(0,len(self.listFreq)-1) : + x0 = self.listFreq[i] + y0 = self.dataVal[i] + x1 = self.listFreq[i+1] + y1 = self.dataVal[i+1] + + somme = somme + (y0+y1) * abs(x1-x0) / 2 + + return somme/abs(X1-X0) + + def seuil(self, limit=75) : + """ + retourne un couple d'index délimitant l'ensemble des valeurs du spectre + définissant "limit" pourcent du total cumulé des valeurs + [borne à gauche inclue, borne à droite exclue[ + ATTENTION on fait l'hypothèse que le spectre a une forme en cloche. + """ + resu = [0 for v in self.dataVal] # initialisation du tableau resultat + + maxi = max(self.dataVal) # Valeur maxu du spectre + iMaxi = self.dataVal.index(maxi) # Index de la valeur max du spectre + + # ETAPE 1 : SOMMATION + somme = 0.0 + for v, i in zip(self.dataVal[0:iMaxi], range(0, iMaxi)) : + somme = somme + v + resu[i] = somme + + somme = 0.0 + for v, i in zip(self.dataVal[:iMaxi:-1], range(len(self.dataVal)-1, iMaxi, -1)) : + somme = somme + v + resu[i] = somme + + resu[iMaxi] = resu[iMaxi-1] + self.dataVal[iMaxi] + resu[iMaxi+1] + + #ETAPE 2 : POURCENTAGE (PAS NECESSAIRE MAIS PLUS LISIBLE) + for v, i in zip(self.dataVal[0:iMaxi], range(0, iMaxi)) : + resu[i] = (resu[i] + maxi/2) / resu[iMaxi] * 100 + + for v, i in zip(self.dataVal[iMaxi+1:], range(iMaxi+1, len(self.dataVal))) : + resu[i] = (resu[i] + maxi/2) / resu[iMaxi] * 100 + + resu[iMaxi] = resu[iMaxi-1] + resu[iMaxi+1] + + # ETAPE 3 : RECHERCHE DES BORNES + limit = (100.0 - limit) / 2.0 + b1 = b2 = True + for v1, v2 in zip(resu[:], resu[::-1]): # Parcours simultané dans les deux sens + if b1 and v1 >= limit : # Borne à gauche trouvée + i1 = resu.index(v1) + b1 = False + if b2 and v2 >= limit : # Borne à droite trouvée + i2 = resu.index(v2) + 1 # Borne à droit exclue de l'intervalle + b2 = False + + return (i1, i2) + + def cut(self, nuplet) : + """ + Découpe un spectre en sous-spectres qui sont retournés en sortie de la fonction + sous la forme d'un tableau de spectres + """ + # transformation du nuplet en tableau (permet de lui ajouter un élément) + tabNuplet = [v for v in nuplet] + tabNuplet.append(len(self.listFreq)) + + # Traitement + tableRes = list() + bGauche = 0 + for borne in tabNuplet : + bDroite = borne + sp = spectre() + for i in range(bGauche, bDroite) : + sp.listFreq.append(self.listFreq[i]) + sp.dataVal.append(self.dataVal[i]) + + tableRes.append(sp) + bGauche = bDroite + + return tableRes + + def __staticMerge(tabSpectre) : + """ + A l'inverse de la fonction cut, construit un seul spectre à partir d'un ensemble de spectres + """ + # On vérifie d'abord que les spectres ne partagent pas la meme bande de fréquence (fut ce partiellement) + for i in range(0, len(tabSpectre)-1) : + if exclus(tabSpectre[i].listFreq, tabSpectre[i+1].listFreq) : raise SpectreError + if exclus(tabSpectre[0].listFreq, tabSpectre[len(tabSpectre)-1].listFreq) : raise SpectreError + + spRes = spectre() + #cumul des spectres + for sp in tabSpectre : + for f, v in zip(sp.listFreq, sp.dataVal) : + spRes.listFreq.append(f) + spRes.dataVal.append(v) + + return spRes + + merge = staticmethod(__staticMerge) # définition en tant que méthode statique + + def buildMap(self) : + """ + Construit un dictionnaire à partir d'un spectre + """ + dict = {} + for i, j in zip(self.listFreq, self.dataVal) : + dict[i] = j + + return dict + +class nappe : + """ + décrit un objet nappe qui associe à un ensemble de fréquence à une enesmble de résultats + """ + def __init__(self, listFreq = [], listeTable = [], listAmor = [], entete = ""): + self.listFreq = [v for v in listFreq] # recopie physique ! + self.listTable = [list() for t in listeTable] + for t, st in zip(listeTable, self.listTable) : + for v in t : st.append(v) + + self.listAmor = [l for l in listAmor] + self.entete = entete + + def __staticBuildFromListSpectre(lsp) : + """ + Construction d'une nappe à partir d'une liste de spectres + """ + # On commence par vérifier que toutes les nappes on la meme base de fréquences + # A inclus dans B inclus dans C inclus dans .... et DERNIER inclus dans PREMIER ==> tous égaux + for i in range(0,len(lsp.listSp)-1) : + if inclus(lsp.listSp[i].listFreq, lsp.listSp[i+1].listFreq) : raise NappeCreationError + if inclus(lsp.listSp[i+1].listFreq, lsp.listSp[0].listFreq) : raise NappeCreationError + + # Construction de la nappe à proprement parler + listeFreq = [fr for fr in lsp.listSp[0].listFreq] + listeTable = [list() for sp in lsp.listSp] + for sp, lv in zip(lsp.listSp, listeTable) : + for v in sp.dataVal : + lv.append(v) + return nappe(listeFreq, listeTable, [], 'toto') + + buildFromListSpectre = staticmethod(__staticBuildFromListSpectre) # définition en tant que méthode statique + + def getNbSpectres(self) : + """ Retourne le nombre d'éléments dans la nappe """ + return len(self.listAmor) + + def getNbFreq(self) : + """ Retourne le nombre d'éléments dans chaque spectre """ + return len(self.listFreq) + + def getSpectre(self, index) : + """ + Retourne le spectre d'indice 'index' dans la nappe + """ + return spectre(self.listFreq, self.listTable[index]) + + def filtreDoublons(self): + """ + Supprime bandes de fréquences constantes + """ + prevCpl = None + bCount = False + i=0 + # Recherche des doublons + lstBor = list() # Liste de listes de bornes + lst = list() + for cpl in self.__getListFreq() : + if not(prevCpl) : + prevCpl = cpl + continue + bTest = True + for v1, v2 in zip(cpl[1], prevCpl[1]) : + bTest &= (v1==v2) + if bTest and not bCount : # Début d'une suite de valeurs égales + bCount = True + lst.append(i) + elif not bTest and bCount : # Fin d'une suite de valeurs égales + bCount = False + lst.append(i) + lstBor.append(lst) + lst = list() # Nouvelle liste + + prevCpl = cpl + i += 1 + + # Suppression des doublons si plus de deux valeurs + for cpl in lstBor : + if (cpl[1]-cpl[0]) < 2 : continue + for i in range(cpl[1]-1, cpl[0], -1) : + del self.listFreq[i] + for j in range(0, len(self.listTable)) : + del self.listTable[j][i] + + + + + def __getListFreq(self) : + """ + Fonction privé qui parcours la matrice ligne par ligne + Retourne à chaque itération un couple frequence, liste de valeurs + """ + fr = 0.0 + + for i in range(0, self.getNbFreq()) : + fr = self.listFreq[i] + listVal = [] + for j in range(0, len(self.listTable)): + listVal.append(self.listTable[j][i]) + yield (fr, listVal) + + raise StopIteration + +class listSpectre : + """ + classe container d'une liste de spectre ne partageant pas la meme base de fréquence + cas des spectres à l'issue de la première passe de l'opération de filtrage d'enveloppe + """ + def __init__(self, *listSp) : + self.listSp = [] + for sp in listSp : + self.listSp = sp + + def append(self, spectre) : + """ Ajoute un spectre à la liste """ + self.listSp.append(spectre) + + def __staticBuildFromNappe(uneNappe) : + """ + Construit une liste de spectres (indépendants) à partir d'une nappe + """ + res = listSpectre() + for i in range(0, len(uneNappe.listAmor)) : + res.append(uneNappe.getSpectre(i)) + + return res + + buildFromNappe = staticmethod(__staticBuildFromNappe) #Définition en tant que méthode statique + + def testChevauchement(self) : + """ + Supprime les effets de chevauchement entre les spectres + """ + for i in range(0, len(self.listSp)-1) : + filter = filtreChevauchement(ref=self.listSp[i+1]) + self.listSp[i] = self.listSp[i].filtre(filter) + + def createBase(self, lspRef = None) : + """ + Crée une base de fréquence commune pour l'ensemble des spectres + En s'assurant que le l'on reste enveloppe des spectre de la liste lspRef + """ + lspRes = listSpectre([spectre() for sp in self.listSp]) # Liste résultante + + # Recherche des fréquences attribuées à 5 spectres, 4 spectres, ... classées dans un dictionnaire + dctOc = self.__sortByOccurence() + + iOcc = max(dctOc.keys()) + lst = dctOc[iOcc] # On comence par mettre les frequences communes à tous les spectres + lst.sort() + iOcc -= 1 + test = 0 + while True : + lspRes.__addFreqFromList(self, lst) + # On vérifie si on reste enveloppe du spectre initial + spTest = spectre() + lstComp = list() + for sp0, sp1 in zip(lspRes.listSp, self.listSp) : + filter = filtreChevauchement(ref=sp1) + spTest = sp0.filtre(filter) + # Crée une liste des fréquences ajoutées (s'il y en a...) + for fr in spTest.listFreq : + try : + idx = sp0.listFreq.index(fr) + except ValueError : # Valeur non trouvée dans le tableau + lstComp.append(fr) + + if len(lstComp) > 0 : # Il est nécessaire de compléter les spectres + # on prend de préférence les fréquences définies sur le plus de spectre possible + while True : + lstFreq = dctOc[iOcc] + prevLst = lst # On sauvegarde la liste précédente pour comparaison + lst = self.__buildList(lstComp, lstFreq) + if not(inclus(lst, prevLst)) : + iOcc -= 1 + else : + break + continue + else : + break # On peut sortir les spectres sont complets + + self.listSp = lspRes.listSp # Remplacement de la liste des spectres + + # On s'assure que le spectre reste enveloppe du spectre de référence rajoute des fréquences si nécessaire + # 1. filtre chevauchement + if lspRef : # Si une liste de spectre de référence a été définie, on vérifie le caractère enveloppe du résultat + listComp = list() + + for sp1, sp2 in zip(self.listSp, lspRef.listSp) : + filter = filtreChevauchement(ref=sp2) + spTest = sp1.filtre(filter) + test = inclus(spTest.listFreq, sp1.listFreq) + if test : listComp.append(test) + # 3. Complément éventuel de l'ensemble des spectres + if listComp : lspRes.__addFreqFromList(self, listComp) + + self.listSp = lspRes.listSp # Remplacement de la liste des spectres + + def filtre(self, filter): + """ + Applique un filtre à l'ensemble des spectres de la liste + """ + self.listSp = [sp.filtre(filter) for sp in self.listSp] + + + def __sortByOccurence(self) : + """ + Fonction qui trie les fréquences par leur occurence d'apparition dans la liste de spectre + """ + dct = {} + for sp in self.listSp : # Boucle sur tous les spectres + for fr in sp.listFreq : # Boucle sur toutes les fréquences de chaque spectre + try : + dct[fr] += 1 + except KeyError : + dct[fr] = 1 + + # "Inversion" du dictionnaire + dctOc = {} # Dictionnaire des occurences + for k in dct.keys() : + try : + dctOc[dct[k]].append(k) + except KeyError : + dctOc[dct[k]]=[k] + + + return dctOc + + def __addFreqFromList(self, lstSp, lstFreq) : + """ + Rajoute les fréquences contenues dans lstFreq aux spectres d'un listeSpectre + à partir des spectres fournis par le listeSpectre (lstSp) passé en paramètre + en procédant éventuellement à une interpolation linéaire + """ + # Suppression des doublons de la liste des fréquences + lstFreq = listToDict(lstFreq).keys() # lst est la liste des points qu'il faudrait ajouter pour rester enveloppe + lstFreq.sort() + + for i in range(0, len(self.listSp)) : + # Conversion des spectres en dictionnaire pour pouvoir les traiter + spDctSelf = self.listSp[i].buildMap() + spDctRef = lstSp.listSp[i].buildMap() + for fr in lstFreq : + # On cherche la valeur dans le spectre de référence + try : + vr = spDctRef[fr] + except KeyError : + ki = nearestKeys(fr, spDctRef) + vr = interpole(fr, ki[0], spDctRef[ki[0]], ki[1], spDctRef[ki[1]]) + + # On rajoute la valeur dans le spectre résultat + spDctSelf[fr] = vr + + # Conversion du dictionnaire en spectre réel + self.listSp[i] = spectre.sortSpectre(spDctSelf) + + def __buildList(self, lstComp, lstFreq) : + """ + Construit une liste de fréquences à ajouter à partir d'une liste de fréquences + à ajouter (listComp) et d'une liste de référence, (listFreq) + retourne une liste + """ + lst = list() + for fr in lstComp : + try : + idx = lstFreq.index(fr) + lst.append(fr) + except ValueError : # Fréquence non présente, recherche de la plus proche + couple = nearestKeys(fr, listToDict(lstFreq)) + if abs(couple[0]-fr) > abs(couple[1]-fr) : + lst.append(couple[1]) + else : + lst.append(couple[0]) + + lst = listToDict(lst).keys() # Suppression des doublons + lst.sort() + return lst + + +def lissage(nappe=nappe,fmin=0.2,fmax=35.5,elarg=0.1,tole_liss=0.25) : + resultat = listSpectre() # Le résultat sera contenu dans une liste de spectre + lspBrut = listSpectre.buildFromNappe(nappe) + # Passage en LogLog + lspBrut.filtre(filtreLog()) + for j in range(0,nappe.getNbSpectres()) : + # Spectre brut + sp = nappe.getSpectre(j) + # Limitation de la bande de fréquence + filter = filtreBandWidth(lower=fmin, upper=fmax) + sp = sp.filtre(filter) + # Expansion du spectre + filter = filtreExpand(coef=elarg) + sp = sp.filtre(filter) + # Passage en LogLin + filter = filtreLog(logOrd=False) + sp = sp.filtre(filter) + # éclatement du spectre en 3 sous-parties + tabSpectre = sp.cut(sp.seuil()) + # traitement individuel des sous parties + filter = filtreCrible(tolerance=2.*tole_liss) + tabSpectre[0] = tabSpectre[0].filtre(filter) + tabSpectre[2] = tabSpectre[2].filtre(filter) + filter.tolerance = tole_liss + tabSpectre[1] = tabSpectre[1].filtre(filter) + # Fusion des sous-spectres + sp = spectre.merge(tabSpectre) + + # Seconde passe de filtrage + sp = sp.filtre(filter) + + # On passe en log-log pour les tests de chevauchement + filter = filtreLog(logAbc=False) + sp = sp.filtre(filter) + # Ecriture dans la liste de spectres résultat + resultat.append(sp) # Ajoute la spectre lissé à la liste des spectres + + resultat.testChevauchement() # Test de chevauchement entre les spectre de la liste + resultat.createBase(lspBrut) # construction d'une base commune de fréquence + + # Passage en lin + resultat.filtre(filtreLin()) + + # Construction de la nappe résultat + nappeRes = nappe.buildFromListSpectre(resultat) + nappeRes.listAmor=nappe.listAmor + nappeRes.filtreDoublons() # Suppression des valeurs identiques accolées + + return nappeRes diff --git a/Aster/Cata/cataSTA10/Utilitai/macro_rota_globale.py b/Aster/Cata/cataSTA10/Utilitai/macro_rota_globale.py new file mode 100644 index 00000000..3440f8ec --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/macro_rota_globale.py @@ -0,0 +1,143 @@ +#@ MODIF macro_rota_globale Utilitai DATE 18/09/2007 AUTEUR DURAND C.DURAND +# -*- 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 Cata.cata import * + +# =========================================================================== +# CORPS DE LA MACRO "MACR_ROTA_GLOBALE" +# ------------------------------------- +# USAGE : +# RESULTAT : resultat +# GROUP_NO_ORIG : un groupe d un noeud definissant l entree du coude (A) +# GROUP_NO_EXTR : un groupe d un noeud definissant la sortie du coude (B) +# +# / +# A / +# (______ +# B +# +# =========================================================================== +# script PYTHON : rotation globale sur une tuyauterie + + +def macr_rota_globale_ops(self,RESULTAT,GROUP_NO_ORIG,GROUP_NO_EXTR,**args): + + + """ + Ecriture de la macro MACR_ROTA_GLOBALE + """ + import os + from Accas import _F + from Noyau.N_utils import AsType + ier=0 + + # On importe les definitions des commandes a utiliser dans la macro + POST_RELEVE_T = self.get_cmd('POST_RELEVE_T') + DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL') + DEFI_FONCTION = self.get_cmd('DEFI_FONCTION') + + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + + # Le concept sortant (de type fonction) est nomme ROTGD dans + # le contexte de la macro + + self.DeclareOut('ROTGD',self.sd) + + # Commandes de la macro + + __ROTAB=POST_RELEVE_T(ACTION=_F(INTITULE='__ROTAB', + GROUP_NO=GROUP_NO_ORIG, + RESULTAT=RESULTAT, + NOM_CHAM='DEPL', + NOM_CMP=('DRX','DRY','DRZ',), + OPERATION='EXTRACTION',), + ) + + __ROTAC=POST_RELEVE_T(ACTION=_F(INTITULE='__ROTAC', + GROUP_NO=GROUP_NO_EXTR, + RESULTAT=RESULTAT, + NOM_CHAM='DEPL', + NOM_CMP=('DRX','DRY','DRZ',), + OPERATION='EXTRACTION',),); + + __ROTABt=__ROTAB.EXTR_TABLE() + __ROTACt=__ROTAC.EXTR_TABLE() + __DRXC = __ROTACt.Array('INST','DRX') + __DRYC = __ROTACt.Array('INST','DRY') + __DRZC = __ROTACt.Array('INST','DRZ') + __DRXB = __ROTABt.Array('INST','DRX') + __DRYB = __ROTABt.Array('INST','DRY') + __DRZB = __ROTABt.Array('INST','DRZ') + __DRXBC = __DRXC-__DRXB + __DRYBC = __DRYC-__DRYB + __DRZBC = __DRZC-__DRZB + __ROTG = __DRXBC*__DRXBC + __ROTG = __ROTG+__DRYBC*__DRYBC + __ROTG = __ROTG+__DRZBC*__DRZBC + __ROTG = __ROTG**(0.5) + + __livalr = [] + __livali = [] + for i in range(len(__ROTG)): + __livalr.append(__ROTG[i,1]) + __livali.append(__DRXC[i,0]) + + print __livalr + print __livali + + __LROTG = DEFI_LIST_REEL(VALE=__livalr) + __LINST = DEFI_LIST_REEL(VALE=__livali) + + ROTGD = DEFI_FONCTION(NOM_PARA='INST', + VALE_PARA=__LINST, + VALE_FONC=__LROTG, + ) + + return ier + + + +# =========================================================================== +# CATALOGUE DE LA MACRO "MACR_ROTA_GLOBALE" +# ----------------------------------------- +# USAGE : +# RESULTAT : resultat +# GROUP_NO_ORIG : un groupe d un noeud definissant l entree du coude (A) +# GROUP_NO_EXTR : un groupe d un noeud definissant la sortie du coude (B) +# +# / +# A / +# (______ +# B +# +# =========================================================================== + + + +MACR_ROTA_GLOBALE=MACRO(nom="MACR_ROTA_GLOBALE",op=macr_rota_globale_ops,sd_prod=fonction_sdaster, + docu="",reentrant='n', + fr="calcul de la rotation globale dans un coude.", + RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli,evol_ther) ), + GROUP_NO_ORIG =SIMP(statut='o',typ=grno,max=1), + GROUP_NO_EXTR =SIMP(statut='o',typ=grno,max=1), +) ; + + + diff --git a/Aster/Cata/cataSTA10/Utilitai/optimize.py b/Aster/Cata/cataSTA10/Utilitai/optimize.py new file mode 100644 index 00000000..e4d3cc2f --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/optimize.py @@ -0,0 +1,591 @@ +#@ MODIF optimize Utilitai DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2006 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. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE +# + +# ******NOTICE*************** +# optimize.py module by Travis E. Oliphant +# +# You may copy and use this module as you see fit with no +# guarantee implied provided you keep this notice in all copies. +# *****END NOTICE************ + +# A collection of optimization algorithms. Version 0.3.1 + +# Minimization routines +"""optimize.py + +A collection of general-purpose optimization routines using Numeric + +fmin --- Nelder-Mead Simplex algorithm (uses only function calls) +fminBFGS --- Quasi-Newton method (uses function and gradient) +fminNCG --- Line-search Newton Conjugate Gradient (uses function, gradient + and hessian (if it's provided)) + +""" +import numpy as Num +max = Num.max +min = Num.min +abs = Num.absolute +__version__="0.3.1" + +def rosen(x): # The Rosenbrock function + return Num.sum(100.0*(x[1:len(x)]-x[0:-1]**2.0)**2.0 + (1-x[0:-1])**2.0) + +def rosen_der(x): + xm = x[1:-1] + xm_m1 = x[0:-2] + xm_p1 = x[2:len(x)] + der = Num.zeros(x.shape,x.dtype.char) + der[1:-1] = 200*(xm-xm_m1**2) - 400*(xm_p1 - xm**2)*xm - 2*(1-xm) + der[0] = -400*x[0]*(x[1]-x[0]**2) - 2*(1-x[0]) + der[-1] = 200*(x[-1]-x[-2]**2) + return der + +def rosen3_hess_p(x,p): + assert(len(x)==3) + assert(len(p)==3) + hessp = Num.zeros((3,),x.dtype.char) + hessp[0] = (2 + 800*x[0]**2 - 400*(-x[0]**2 + x[1])) * p[0] \ + - 400*x[0]*p[1] \ + + 0 + hessp[1] = - 400*x[0]*p[0] \ + + (202 + 800*x[1]**2 - 400*(-x[1]**2 + x[2]))*p[1] \ + - 400*x[1] * p[2] + hessp[2] = 0 \ + - 400*x[1] * p[1] \ + + 200 * p[2] + + return hessp + +def rosen3_hess(x): + assert(len(x)==3) + hessp = Num.zeros((3,3),x.dtype.char) + hessp[0,:] = [2 + 800*x[0]**2 -400*(-x[0]**2 + x[1]), -400*x[0], 0] + hessp[1,:] = [-400*x[0], 202+800*x[1]**2 -400*(-x[1]**2 + x[2]), -400*x[1]] + hessp[2,:] = [0,-400*x[1], 200] + return hessp + + +def fmin(func, x0, args=(), xtol=1e-4, ftol=1e-4, maxiter=None, maxfun=None, fulloutput=0, printmessg=1): + """xopt,{fval,warnflag} = fmin(function, x0, args=(), xtol=1e-4, ftol=1e-4, + maxiter=200*len(x0), maxfun=200*len(x0), fulloutput=0, printmessg=0) + + Uses a Nelder-Mead Simplex algorithm to find the minimum of function + of one or more variables. + """ + x0 = Num.asarray(x0) + assert (len(x0.shape)==1) + N = len(x0) + if maxiter is None: + maxiter = N * 200 + if maxfun is None: + maxfun = N * 200 + + rho = 1; chi = 2; psi = 0.5; sigma = 0.5; + one2np1 = range(1,N+1) + + sim = Num.zeros((N+1,N),x0.dtype.char) + fsim = Num.zeros((N+1,),'d') + sim[0] = x0 + fsim[0] = apply(func,(x0,)+args) + nonzdelt = 0.05 + zdelt = 0.00025 + for k in range(0,N): + y = Num.array(x0,copy=1) + if y[k] != 0: + y[k] = (1+nonzdelt)*y[k] + else: + y[k] = zdelt + + sim[k+1] = y + f = apply(func,(y,)+args) + fsim[k+1] = f + + ind = Num.argsort(fsim) + fsim = Num.take(fsim,ind) # sort so sim[0,:] has the lowest function value + sim = Num.take(sim,ind,0) + + iterations = 1 + funcalls = N+1 + + while (funcalls < maxfun and iterations < maxiter): + if (max(Num.ravel(abs(sim[1:len(sim)]-sim[0]))) <= xtol \ + and max(abs(fsim[0]-fsim[1:len(fsim)])) <= ftol): + break + + xbar = Num.add.reduce(sim[0:-1],0) / N + xr = (1+rho)*xbar - rho*sim[-1] + fxr = apply(func,(xr,)+args) + funcalls = funcalls + 1 + doshrink = 0 + + if fxr < fsim[0]: + xe = (1+rho*chi)*xbar - rho*chi*sim[-1] + fxe = apply(func,(xe,)+args) + funcalls = funcalls + 1 + + if fxe < fxr: + sim[-1] = xe + fsim[-1] = fxe + else: + sim[-1] = xr + fsim[-1] = fxr + else: # fsim[0] <= fxr + if fxr < fsim[-2]: + sim[-1] = xr + fsim[-1] = fxr + else: # fxr >= fsim[-2] + # Perform contraction + if fxr < fsim[-1]: + xc = (1+psi*rho)*xbar - psi*rho*sim[-1] + fxc = apply(func,(xc,)+args) + funcalls = funcalls + 1 + + if fxc <= fxr: + sim[-1] = xc + fsim[-1] = fxc + else: + doshrink=1 + else: + # Perform an inside contraction + xcc = (1-psi)*xbar + psi*sim[-1] + fxcc = apply(func,(xcc,)+args) + funcalls = funcalls + 1 + + if fxcc < fsim[-1]: + sim[-1] = xcc + fsim[-1] = fxcc + else: + doshrink = 1 + + if doshrink: + for j in one2np1: + sim[j] = sim[0] + sigma*(sim[j] - sim[0]) + fsim[j] = apply(func,(sim[j],)+args) + funcalls = funcalls + N + + ind = Num.argsort(fsim) + sim = Num.take(sim,ind,0) + fsim = Num.take(fsim,ind) + iterations = iterations + 1 + + x = sim[0] + fval = min(fsim) + warnflag = 0 + + if funcalls >= maxfun: + warnflag = 1 + if printmessg: + print "Warning: Maximum number of function evaluations has been exceeded." + elif iterations >= maxiter: + warnflag = 2 + if printmessg: + print "Warning: Maximum number of iterations has been exceeded" + else: + if printmessg: + print "Optimization terminated successfully." + print " Current function value: %f" % fval + print " Iterations: %d" % iterations + print " Function evaluations: %d" % funcalls + + if fulloutput: + return x, fval, warnflag + else: + return x + + +def zoom(a_lo, a_hi): + pass + + + +def line_search(f, fprime, xk, pk, gfk, args=(), c1=1e-4, c2=0.9, amax=50): + """alpha, fc, gc = line_search(f, xk, pk, gfk, + args=(), c1=1e-4, c2=0.9, amax=1) + + minimize the function f(xk+alpha pk) using the line search algorithm of + Wright and Nocedal in 'Numerical Optimization', 1999, pg. 59-60 + """ + + fc = 0 + gc = 0 + alpha0 = 1.0 + phi0 = apply(f,(xk,)+args) + phi_a0 = apply(f,(xk+alpha0*pk,)+args) + fc = fc + 2 + derphi0 = Num.dot(gfk,pk) + derphi_a0 = Num.dot(apply(fprime,(xk+alpha0*pk,)+args),pk) + gc = gc + 1 + + # check to see if alpha0 = 1 satisfies Strong Wolfe conditions. + if (phi_a0 <= phi0 + c1*alpha0*derphi0) \ + and (abs(derphi_a0) <= c2*abs(derphi0)): + return alpha0, fc, gc + + alpha0 = 0 + alpha1 = 1 + phi_a1 = phi_a0 + phi_a0 = phi0 + + i = 1 + while 1: + if (phi_a1 > phi0 + c1*alpha1*derphi0) or \ + ((phi_a1 >= phi_a0) and (i > 1)): + return zoom(alpha0, alpha1) + + derphi_a1 = Num.dot(apply(fprime,(xk+alpha1*pk,)+args),pk) + gc = gc + 1 + if (abs(derphi_a1) <= -c2*derphi0): + return alpha1 + + if (derphi_a1 >= 0): + return zoom(alpha1, alpha0) + + alpha2 = (amax-alpha1)*0.25 + alpha1 + i = i + 1 + alpha0 = alpha1 + alpha1 = alpha2 + phi_a0 = phi_a1 + phi_a1 = apply(f,(xk+alpha1*pk,)+args) + + + +def line_search_BFGS(f, xk, pk, gfk, args=(), c1=1e-4, alpha0=1): + """alpha, fc, gc = line_search(f, xk, pk, gfk, + args=(), c1=1e-4, alpha0=1) + + minimize over alpha, the function f(xk+alpha pk) using the interpolation + algorithm (Armiijo backtracking) as suggested by + Wright and Nocedal in 'Numerical Optimization', 1999, pg. 56-57 + """ + + fc = 0 + phi0 = apply(f,(xk,)+args) # compute f(xk) + phi_a0 = apply(f,(xk+alpha0*pk,)+args) # compute f + fc = fc + 2 + derphi0 = Num.dot(gfk,pk) + + if (phi_a0 <= phi0 + c1*alpha0*derphi0): + return alpha0, fc, 0 + + # Otherwise compute the minimizer of a quadratic interpolant: + + alpha1 = -(derphi0) * alpha0**2 / 2.0 / (phi_a0 - phi0 - derphi0 * alpha0) + phi_a1 = apply(f,(xk+alpha1*pk,)+args) + fc = fc + 1 + + if (phi_a1 <= phi0 + c1*alpha1*derphi0): + return alpha1, fc, 0 + + # Otherwise loop with cubic interpolation until we find an alpha which satifies + # the first Wolfe condition (since we are backtracking, we will assume that + # the value of alpha is not too small and satisfies the second condition. + + while 1: # we are assuming pk is a descent direction + factor = alpha0**2 * alpha1**2 * (alpha1-alpha0) + a = alpha0**2 * (phi_a1 - phi0 - derphi0*alpha1) - \ + alpha1**2 * (phi_a0 - phi0 - derphi0*alpha0) + a = a / factor + b = -alpha0**3 * (phi_a1 - phi0 - derphi0*alpha1) + \ + alpha1**3 * (phi_a0 - phi0 - derphi0*alpha0) + b = b / factor + + alpha2 = (-b + Num.sqrt(abs(b**2 - 3 * a * derphi0))) / (3.0*a) + phi_a2 = apply(f,(xk+alpha2*pk,)+args) + fc = fc + 1 + + if (phi_a2 <= phi0 + c1*alpha2*derphi0): + return alpha2, fc, 0 + + if (alpha1 - alpha2) > alpha1 / 2.0 or (1 - alpha2/alpha1) < 0.96: + alpha2 = alpha1 / 2.0 + + alpha0 = alpha1 + alpha1 = alpha2 + phi_a0 = phi_a1 + phi_a1 = phi_a2 + +epsilon = 1e-8 + +def approx_fprime(xk,f,*args): + f0 = apply(f,(xk,)+args) + grad = Num.zeros((len(xk),),'d') + ei = Num.zeros((len(xk),),'d') + for k in range(len(xk)): + ei[k] = 1.0 + grad[k] = (apply(f,(xk+epsilon*ei,)+args) - f0)/epsilon + ei[k] = 0.0 + return grad + +def approx_fhess_p(x0,p,fprime,*args): + f2 = apply(fprime,(x0+epsilon*p,)+args) + f1 = apply(fprime,(x0,)+args) + return (f2 - f1)/epsilon + + +def fminBFGS(f, x0, fprime=None, args=(), avegtol=1e-5, maxiter=None, fulloutput=0, printmessg=1): + """xopt = fminBFGS(f, x0, fprime=None, args=(), avegtol=1e-5, + maxiter=None, fulloutput=0, printmessg=1) + + Optimize the function, f, whose gradient is given by fprime using the + quasi-Newton method of Broyden, Fletcher, Goldfarb, and Shanno (BFGS) + See Wright, and Nocedal 'Numerical Optimization', 1999, pg. 198. + """ + + app_fprime = 0 + if fprime is None: + app_fprime = 1 + + x0 = Num.asarray(x0) + if maxiter is None: + maxiter = len(x0)*200 + func_calls = 0 + grad_calls = 0 + k = 0 + N = len(x0) + gtol = N*avegtol + I = Num.eye(N) + Hk = I + + if app_fprime: + gfk = apply(approx_fprime,(x0,f)+args) + func_calls = func_calls + len(x0) + 1 + else: + gfk = apply(fprime,(x0,)+args) + grad_calls = grad_calls + 1 + xk = x0 + sk = [2*gtol] + while (Num.add.reduce(abs(gfk)) > gtol) and (k < maxiter): + pk = -Num.dot(Hk,gfk) + alpha_k, fc, gc = line_search_BFGS(f,xk,pk,gfk,args) + func_calls = func_calls + fc + xkp1 = xk + alpha_k * pk + sk = xkp1 - xk + xk = xkp1 + if app_fprime: + gfkp1 = apply(approx_fprime,(xkp1,f)+args) + func_calls = func_calls + gc + len(x0) + 1 + else: + gfkp1 = apply(fprime,(xkp1,)+args) + grad_calls = grad_calls + gc + 1 + + yk = gfkp1 - gfk + k = k + 1 + + rhok = 1 / Num.dot(yk,sk) + A1 = I - sk[:,Num.newaxis] * yk[Num.newaxis,:] * rhok + A2 = I - yk[:,Num.newaxis] * sk[Num.newaxis,:] * rhok + Hk = Num.dot(A1,Num.dot(Hk,A2)) + rhok * sk[:,Num.newaxis] * sk[Num.newaxis,:] + gfk = gfkp1 + + + if printmessg or fulloutput: + fval = apply(f,(xk,)+args) + if k >= maxiter: + warnflag = 1 + if printmessg: + print "Warning: Maximum number of iterations has been exceeded" + print " Current function value: %f" % fval + print " Iterations: %d" % k + print " Function evaluations: %d" % func_calls + print " Gradient evaluations: %d" % grad_calls + else: + warnflag = 0 + if printmessg: + print "Optimization terminated successfully." + print " Current function value: %f" % fval + print " Iterations: %d" % k + print " Function evaluations: %d" % func_calls + print " Gradient evaluations: %d" % grad_calls + + if fulloutput: + return xk, fval, func_calls, grad_calls, warnflag + else: + return xk + + +def fminNCG(f, x0, fprime, fhess_p=None, fhess=None, args=(), avextol=1e-5, maxiter=None, fulloutput=0, printmessg=1): + """xopt = fminNCG(f, x0, fprime, fhess_p=None, fhess=None, args=(), avextol=1e-5, + maxiter=None, fulloutput=0, printmessg=1) + + Optimize the function, f, whose gradient is given by fprime using the + Newton-CG method. fhess_p must compute the hessian times an arbitrary + vector. If it is not given, finite-differences on fprime are used to + compute it. See Wright, and Nocedal 'Numerical Optimization', 1999, + pg. 140. + """ + + x0 = Num.asarray(x0) + fcalls = 0 + gcalls = 0 + hcalls = 0 + approx_hessp = 0 + if fhess_p is None and fhess is None: # Define hessian product + approx_hessp = 1 + + xtol = len(x0)*avextol + update = [2*xtol] + xk = x0 + k = 0 + while (Num.add.reduce(abs(update)) > xtol) and (k < maxiter): + # Compute a search direction pk by applying the CG method to + # del2 f(xk) p = - grad f(xk) starting from 0. + b = -apply(fprime,(xk,)+args) + gcalls = gcalls + 1 + maggrad = Num.add.reduce(abs(b)) + eta = min([0.5,Num.sqrt(maggrad)]) + termcond = eta * maggrad + xsupi = 0 + ri = -b + psupi = -ri + i = 0 + dri0 = Num.dot(ri,ri) + + if fhess is not None: # you want to compute hessian once. + A = apply(fhess,(xk,)+args) + hcalls = hcalls + 1 + + while Num.add.reduce(abs(ri)) > termcond: + if fhess is None: + if approx_hessp: + Ap = apply(approx_fhess_p,(xk,psupi,fprime)+args) + gcalls = gcalls + 2 + else: + Ap = apply(fhess_p,(xk,psupi)+args) + hcalls = hcalls + 1 + else: + Ap = Num.dot(A,psupi) + # check curvature + curv = Num.dot(psupi,Ap) + if (curv <= 0): + if (i > 0): + break + else: + xsupi = xsupi + dri0/curv * psupi + break + alphai = dri0 / curv + xsupi = xsupi + alphai * psupi + ri = ri + alphai * Ap + dri1 = Num.dot(ri,ri) + betai = dri1 / dri0 + psupi = -ri + betai * psupi + i = i + 1 + dri0 = dri1 # update Num.dot(ri,ri) for next time. + + pk = xsupi # search direction is solution to system. + gfk = -b # gradient at xk + alphak, fc, gc = line_search_BFGS(f,xk,pk,gfk,args) + fcalls = fcalls + fc + gcalls = gcalls + gc + + update = alphak * pk + xk = xk + update + k = k + 1 + + if printmessg or fulloutput: + fval = apply(f,(xk,)+args) + if k >= maxiter: + warnflag = 1 + if printmessg: + print "Warning: Maximum number of iterations has been exceeded" + print " Current function value: %f" % fval + print " Iterations: %d" % k + print " Function evaluations: %d" % fcalls + print " Gradient evaluations: %d" % gcalls + print " Hessian evaluations: %d" % hcalls + else: + warnflag = 0 + if printmessg: + print "Optimization terminated successfully." + print " Current function value: %f" % fval + print " Iterations: %d" % k + print " Function evaluations: %d" % fcalls + print " Gradient evaluations: %d" % gcalls + print " Hessian evaluations: %d" % hcalls + + if fulloutput: + return xk, fval, fcalls, gcalls, hcalls, warnflag + else: + return xk + + + +if __name__ == "__main__": + import string + import time + + + times = [] + algor = [] + x0 = [0.8,1.2,0.7] + start = time.time() + x = fmin(rosen,x0) + print x + times.append(time.time() - start) + algor.append('Nelder-Mead Simplex\t') + + start = time.time() + x = fminBFGS(rosen, x0, fprime=rosen_der, maxiter=80) + print x + times.append(time.time() - start) + algor.append('BFGS Quasi-Newton\t') + + start = time.time() + x = fminBFGS(rosen, x0, avegtol=1e-4, maxiter=100) + print x + times.append(time.time() - start) + algor.append('BFGS without gradient\t') + + + start = time.time() + x = fminNCG(rosen, x0, rosen_der, fhess_p=rosen3_hess_p, maxiter=80) + print x + times.append(time.time() - start) + algor.append('Newton-CG with hessian product') + + + start = time.time() + x = fminNCG(rosen, x0, rosen_der, fhess=rosen3_hess, maxiter=80) + print x + times.append(time.time() - start) + algor.append('Newton-CG with full hessian') + + print "\nMinimizing the Rosenbrock function of order 3\n" + print " Algorithm \t\t\t Seconds" + print "===========\t\t\t =========" + for k in range(len(algor)): + print algor[k], "\t -- ", times[k] + + + + + + + + + + + + + + + + diff --git a/Aster/Cata/cataSTA10/Utilitai/partition.py b/Aster/Cata/cataSTA10/Utilitai/partition.py new file mode 100644 index 00000000..f26b15c7 --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/partition.py @@ -0,0 +1,1324 @@ +#@ MODIF partition Utilitai DATE 26/10/2010 AUTEUR MAHFOUZ D.MAHFOUZ +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE + +import aster +import string, os, time, sys, UserList, types +import numpy as NP + +from Accas import _F +from Noyau.N_utils import AsType + +# ============================================================================ # +def enleve_doublons_liste(liste): + """ + A partir d une liste qui peut contenir des doublons, on renvoie une liste sans + doublons (et qui reviendra triée) + """ + #MC pourquoi ne pas faire : + # liste2 = NP.array(list(set(liste))) + # liste2.sort() + # Au cas ou ca ne serait pas deja un vecteur numpy # Exemple + liste=NP.sort(NP.array(liste,copy=0)) # [1, 2, 2, 3, 3, 4, 5] + liste_diff=liste[1:]-liste[:-1] # [1, 0, 1, 0, 1, 1] + liste_temp=NP.nonzero(liste_diff)[0] # [0, 2, 4, 5] + liste_indice=NP.zeros(liste_temp.shape[0]+1, dtype=int) + liste_indice[0]=0 + liste_indice[1:]=liste_temp+1 # [0, 1, 3, 5, 6] + liste2=NP.take(liste,liste_indice) # [1, 2, 3, 4, 5] + return liste2 + + +# ============================================================================ # +class CONNEC(UserList.UserList) : + """ + Connectivite : sequence mutable de sequences de noeuds + Pour l'instant, on s'appuie sur une liste de liste. + """ + def __init__(self,nma) : + UserList.UserList.__init__(self,[None]*nma) + + def Index(self) : + """ + Retourne la connectivite sous forme de deux vecteurs numpy : + ind -> tableau des index (y compris le n+1 eme) + noe -> tableau des listes de noeuds + """ + # Dimension des deux vecteurs + nma = len(self) + ltot = NP.reduce(lambda x,y : x+len(y), self,0) + ind = NP.zeros(nma+1, dtype=int) + noe = NP.zeros(ltot, dtype=int) + + # Construction des vecteurs + ind[0] = 0 + for i in range(nma) : + m = self[i] + ind[i+1] = ind[i] + len(m) + noe[ind[i]:ind[i+1]] = NP.array(m) + + return ind,noe + +# ============================================================================ # +class MAIL_PY : + """ + SD PYTHON MAILLAGE + La numeration est 0..N-1 pour les noeuds et 0..M-1 pour les mailles + +EXEMPLE D'UTILISATION +--------------------- +from Utilitai.Partition import * +import numpy as N + +mail=LIRE_MAILLAGE(); + +mm = MAIL_PY() +mm.FromAster(mail) + +# Nombre de noeuds +nbno = mm.dime_maillage[0] +# Nombre de mailles +nbma = mm.dime_maillage[2] + +# Coordonnées des noeuds +coord = mm.cn +# Noms des noeuds +linomno = list(mm.correspondance_noeuds) +# Groupe de Mailles +collgrma = mm.gma +# Groupe de Noeuds +collgrno = mm.gno +# La table de connextivité +connex = mm.co + +# Le décalage de -1 est déjà fait sur les numéros des noeuds et des mailles +# Pour ajouter des Noeuds + # Coordonnées + LesNoeudsEnPlus = NP.array([[xx,yy,zz]]) + LesNoeudsEnPlus = NP.concatenate((LesNoeudsEnPlus,NP.array([[xx,yy,zz]]))) + # Noms + NomNoeudsEnPlus = ['X%' % in] + NomNoeudsEnPlus.append('X%' % in) +# Ajout des noeuds au maillage : coordonnées , noms + mm.cn = NP.concatenate((mm.cn,LesNoeudsEnPlus)) + mm.correspondance_noeuds = tuple(linomno + NomNoeudsEnPlus ) + +# Pour ajouter des mailles (ici TRIA3) in [ 1 , NbMailleAjouté ] + # Noms + NomMaillesEnPlus = ['Z%d' % im] + NomMaillesEnPlus.append('Z%d' % im) + # Numéro des mailles + num_maille = [ nbma + im ] + num_maille.append( nbma + im ) + # Noeuds des mailles + NoeudsMailles = [NP.array([i1,i2,i3])] + NoeudsMailles.append(NP.array(NP.array([i1,i2,i3]))) +# Ajout des TRIA3 + # Type de maille + typ_maille = mm.dic['TRIA3'] + mm.tm = NP.concatenate((mm.tm,NP.array([typ_maille]*NbMailleAjouté))) + # Nom des mailles + mm.correspondance_mailles += tuple(NomMaillesEnPlus) + # connectivite des éléments + mm.co += NoeudsMailles + +# Ajout d'un groupe de maille contenant les mailles ajoutés + maillage_python.gma['XXXAJOUT'] = NP.array(num_maille) + +# Ecriture dans un fichier, et transfert dans l'espace Aster + unite = mm.ToAster() + mail = LIRE_MAILLAGE(UNITE=unite) + """ + + def __init__(self, nno=0, nma=0, ndim=None) : + self.ndim = ndim + if ndim is None: + # on initialise le tableau au plus grand + ndim = 3 + self.cn = NP.zeros((nno, ndim), dtype=int) + self.tm = NP.zeros(nma, dtype=int) + self.co = CONNEC(nma) + self.gma = {} + self.gno = {} + self.indice_noeuds = NP.arange(nno) + + self.correspondance_noeuds = [] + self.correspondance_mailles = [] + + try: + import aster + nom_mailles = (None,) + string.strip(aster.getvectjev('&CATA.TM.NOMTM')) + except: + nom_mailles = (None, + 'POI1', 'SEG2', 'SEG22', 'SEG3', 'SEG33', 'SEG4', 'TRIA3', + 'TRIA33', 'TRIA6', 'TRIA66', 'TRIA7', 'QUAD4', 'QUAD44', 'QUAD8', + 'QUAD88', 'QUAD9', 'QUAD99', 'TETRA4', 'TETRA10','PENTA6', 'PENTA15', + 'PYRAM5', 'PYRAM13','HEXA8', 'HEXA20', 'HEXA27', 'TR3QU4', 'QU4TR3', + 'TR6TR3', 'TR3TR6', 'TR6QU4', 'QU4TR6', 'TR6QU8', 'QU8TR6', 'TR6QU9', + 'QU9TR6', 'QU8TR3', 'TR3QU8', 'QU8QU4', 'QU4QU8', 'QU8QU9', 'QU9QU8', + 'QU9QU4', 'QU4QU9', 'QU9TR3', 'TR3QU9', 'SEG32', 'SEG23' ) + + dic_mailles = {} + for i in range(len(nom_mailles)) : + dic_mailles[nom_mailles[i]] = i + + self.nom = nom_mailles + self.dic = dic_mailles + + try: + psyco.bind(self.FromAster) + except: pass + +# ------------------------------------------------------------- + def get_connexite(self, nom, nma): + co=CONNEC(nma) + dico_connexite = aster.getcolljev(nom) + for element in dico_connexite.keys() : + co[int(element)-1] = (NP.array(dico_connexite[element])-1) + return co + + def get_coordonnees_noeuds(self, nom, nombre_noeuds): + assert self.ndim != None, """Dimension réelle du maillage non initialisée.""" + lcoord = aster.getvectjev(nom) + coordonnees_noeuds = NP.array(lcoord) + nno = len(coordonnees_noeuds) / 3 + assert nno == nombre_noeuds, """Données incohérentes.""" + coordonnees_noeuds.shape = (nno, 3) + cn = coordonnees_noeuds[:, :self.ndim] + return cn + +# ------------------------------------------------------------- + def init_dimension(self, ndim): + """Initialise la dimension du maillage.""" + if self.ndim is None: + self.ndim = ndim + assert ndim == self.ndim, """Il est interdit de modifier la dimension du maillage !""" + +# ------------------------------------------------------------- + def FromAster(self,nom) : + # On accepte le concept Aster ou bien la chaine texte de son nom + if type(nom)!=types.StringType: + nom_maillage = nom.nom + else: + nom_maillage = nom + nom_maillage=string.ljust(nom_maillage,8) + + # recuperation de la taille + self.dime_maillage = aster.getvectjev(nom_maillage+'.DIME') + nombre_noeuds = self.dime_maillage[0] + nombre_mailles = self.dime_maillage[2] + ndim = self.dime_maillage[5] + self.init_dimension(ndim) + + # coordonnees des noeuds + self.cn = self.get_coordonnees_noeuds(nom_maillage+'.COORDO .VALE', nombre_noeuds) + + # type de maille + self.tm = NP.array(aster.getvectjev(nom_maillage+'.TYPMAIL')) + + # connexite + self.co = self.get_connexite(nom_maillage+'.CONNEX', nombre_mailles) + + self.indice_noeuds=NP.arange(nombre_noeuds) + + # groupe de noeuds + Lno_groupno_tot = aster.getcolljev(nom_maillage+'.GROUPENO') + + Lno_groupno={} + for key in Lno_groupno_tot : + # Tolerance car parfois defi_group crée des groupes nuls à clé entiere + try: + Lno_groupno[key.strip()]=NP.array(Lno_groupno_tot[key])-1 + except: + pass + self.gno=Lno_groupno + + # groupe de mailles + Lma_groupma_tot = aster.getcolljev(nom_maillage+'.GROUPEMA') + Lma_groupma={} + for key in Lma_groupma_tot : + Lma_groupma[key.strip()]=NP.array(Lma_groupma_tot[key])-1 + self.gma=Lma_groupma + + del(Lma_groupma_tot) + + # listes de correspondance entre Aster et Mail-Py + self.correspondance_noeuds = aster.getvectjev(nom_maillage+'.NOMNOE') + self.correspondance_mailles = aster.getvectjev(nom_maillage+'.NOMMAI') + +# ------------------------------------------------------------- + def ToAster(self,unite=None): + from Utilitai.UniteAster import UniteAster + try: + LIRE_MAILLAGE = self.jdc.get_cmd('LIRE_MAILLAGE') + except: + try: + from Cata.cata import LIRE_MAILLAGE + except: + print "Il faut lancer ce programme depuis Aster pour pouvoir générer un maillage Aster." + sys.exit() + + UL = UniteAster() + # Récupération d'une unité logique libre si besoin + if ( unite == None ): unite = UL.Libre(action='ASSOCIER') + fichier = UL.Nom(unite) + # Bascule le fichier en F : ferme + UL.Etat(unite,etat='F') + # Ouverture du fichier en WRITE + f = open(fichier, 'w') + # Sauvegarde du maillage dans le fichier + f.write( self.Voir_Mail() ) + f.close() + # Remet les unités comme au debut + UL.EtatInit() + + return unite + +# ------------------------------------------------------------- + def __str__(self) : + return self.Voir_Mail() + +# ------------------------------------------------------------- + def Voir_Mail(self) : + """ + Impression au format ASTER + """ + l = [] + l.append('TITRE') + l.append('% CLASSE PY_MAIL -> MAIL') + l.append('FINSF') + l.append('%') + + (nno,ndim) = self.cn.shape + self.init_dimension(ndim) + + # Coordonnees des noeuds + l.append('COOR_%sD' % ndim) + + # format des nombres : 21.14E ==> -3.00000000000002D-04 + # longueur d'une ligne : 8 + (2 + 21)*3 = 77 + fmt = ' '.join(["%21.14E"] * ndim) + # Si le maillage initial ne provient pas d'Aster + if len(self.correspondance_noeuds) == 0: + for i in range(nno) : + ch = fmt % tuple([self.cn[i, k] for k in range(ndim)]) + l.append("%-8s %s" % ('N'+repr(i), ch)) + + # Si le maillage initial provient d'Aster + else: + for i in range(nno) : + ch = fmt % tuple([self.cn[i, k] for k in range(ndim)]) + l.append("%-8s %s" % (self.correspondance_noeuds[i], ch)) + + # Connectivité des mailles + ind = range(len(self.tm)) + ty = 0 + # Si le maillage initial ne provient pas d'Aster + if len(self.correspondance_mailles) == 0: + for m in ind : + if self.tm[m] <> ty : + l.append('FINSF') ; l.append('%') + ty = self.tm[m] + l.append(self.nom[ty]) + ch = 'M%d ' % m + for n in self.co[m] : + zn = ' N%d'% n + if ( len(ch)+len(zn) > 80 ): + l.append(ch) + ch = ' ' + zn + else: + ch += zn + l.append(ch) + + # Si le maillage initial provient d'Aster + else: + for m in ind : + if self.tm[m] <> ty : + l.append('FINSF') ; l.append('%') + ty = self.tm[m] + l.append(self.nom[ty]) + ch = self.correspondance_mailles[m]+' ' + for n in self.co[m] : + zn = ' ' + self.correspondance_noeuds[n] + if ( len(ch)+len(zn) > 80 ): + l.append(ch) + ch = ' ' + zn + else: + ch += zn + l.append(ch) + l.append('FINSF') ; l.append('%') + + + # Group_ma et Group_no + entete = ['GROUP_MA','GROUP_NO'] + d_gp = [self.gma,self.gno] + pref = ['M','N'] + + # Si le maillage initial ne provient pas d'Aster + if len(self.correspondance_mailles) == 0: + for (d_gp,entete,prefixe) in [(self.gma,'GROUP_MA','M'),(self.gno,'GROUP_NO','N')] : + for gp in d_gp : + if len(d_gp[gp])>0: # On ne prend en compte que les group_* non vides + l.append(entete) + l.append(' ' + gp) + ch = '' + for o in d_gp[gp]: + zm = ' %s%d' % (prefixe , o) + if ( len(ch)+len(zm) > 80 ): + l.append(ch) + ch = zm + else: + ch += zm + l.append(ch) + l.append('FINSF') ; l.append('%') + + # Si le maillage initial provient d'Aster + else: + for (d_gp,entete,prefixe) in [(self.gma,'GROUP_MA','M'),(self.gno,'GROUP_NO','N')] : + for gp in d_gp : + if len(d_gp[gp])>0: # On ne prend en compte que les group_* non vides + l.append(entete) + l.append(' ' + gp) + ch = '' + for o in d_gp[gp]: + if prefixe=='M': + zm = ' ' + self.correspondance_mailles[o] + else: + zm = ' ' + self.correspondance_noeuds[o] + if ( len(ch)+len(zm) > 80 ): + l.append(ch) + ch = zm + else: + ch += zm + l.append(ch) + l.append('FINSF') ; l.append('%') + + # Fin + l.extend(['FIN', '']) + return os.linesep.join(l) + + +# ============================================================================ # +class PARTITION: + + def __init__(self, jdc=None ,nb=0): + + self.jdc = jdc + + self.fichier_out = '' + self.liste_mailles = NP.array( [] ) + self.liste_sd = NP.array( [] ) + self.liste_mailles_bord = [] + self.liste_sd_bord = [] + + self.MAILLAGE_Python = None + + self.RELATIONS = { 'C_plus' : None, + 'C_moins': None, + 'nr': 0 } + + self.ASTER = { 'MAILLAGE' : None, + 'MODELE' : None, + 'GROUP_MA' : None, + 'GROUP_MA_BORD' : None, + 'DICO_SD_MAILLES' : None, + } + + self.OPTIONS = { 'NB_PART' : '', + 'ALGO' : '', + 'INFO' : '', + 'rep_metis' : aster.repout(), + 'exe_metis' : aster.repout() + 'pmetis', + 'fichier_in' : 'fort.66', + 'fichier_out' : 'fort.68', + 'elimine_bords': 'OUI', + } + + self.Creation_Dico_Correspondance_Type_Maille() + + + +# ---------------------------------------------------------------------------- # + + def __str__(self) : + """ + Impression du contenu de la partition + """ + l = [] + l.append( 'Contenu de la partition :' ) + l.append( '-------------------------' ) + try: l.append( '- Maillage : ' + str(self.ASTER['MAILLAGE'].nom) ) + except: pass + try: l.append( '- Modele : ' + str(self.ASTER['MODELE'].nom) ) + except: pass + l.append( '- Nb part : ' + str(self.OPTIONS['NB_PART']) ) + l.append( '- Niveau INFO : ' + str(self.OPTIONS['INFO']) ) + l.append( '- Liste group_ma : ' + str(self.ASTER['GROUP_MA']) ) + + return string.join(l,'\n') + +# ---------------------------------------------------------------------------- # + + def Partitionne_Aster(self, MAILLAGE, NB_PART, MODELE=None, METHODE=None, LOGICIEL=None, INFO=1): + + self.t00 = time.clock() + + self.OPTIONS['INFO'] = INFO + + if MODELE: + # Recuperation de la liste des mailles à perndre en compte + self.ASTER['MODELE'] = MODELE + self.ASTER['MAILLAGE'] = MAILLAGE + _LST_MA = self.Modele_to_Liste_Mailles(MODELE) + + elif MAILLAGE: + self.ASTER['MAILLAGE'] = MAILLAGE + _LST_MA = None + + + # Creation du maillage Python correspondant au maillage Aster + MAILLAGE_Python = MAIL_PY() + MAILLAGE_Python.FromAster(MAILLAGE.nom) + + # Partitionne le maillage Python avec la liste de mailles _LST_MA + self.Partitionne_Maillage(MAILLAGE_Python, NB_PART, MAILLE=_LST_MA, METHODE=METHODE, LOGICIEL=LOGICIEL, INFO=INFO) + + return + + +# ---------------------------------------------------------------------------- # + + def Partitionne_Maillage(self, MAILLAGE_Python, NB_PART, MAILLE=None, METHODE=None, LOGICIEL=None, INFO=1): + + self.t00 = time.clock() + + if METHODE: + self.OPTIONS['exe_metis'] = aster.repout() + string.lower(METHODE) + elif LOGICIEL: + self.OPTIONS['exe_metis'] = LOGICIEL + + self.OPTIONS['NB_PART'] = NB_PART + self.OPTIONS['INFO'] = INFO + self.MAILLAGE_Python = MAILLAGE_Python + + exe_metis = self.OPTIONS['exe_metis'] + f_metis = self.OPTIONS['fichier_in'] + fw_metis = self.OPTIONS['fichier_out'] + + _LST_MA = MAILLE + + # On initialise la connectivité et la connectivité inverse des aretes + self.MAILLAGE_Python.ca = {} + self.MAILLAGE_Python.cia = {} + + _DIM = self.MAILLAGE_Python.dime_maillage[5] + _LST_TMA = self.MAILLAGE_Python.tm + + if self.OPTIONS['INFO']>=5: + print 'cn=', self.MAILLAGE_Python.cn + print 'tm=', self.MAILLAGE_Python.tm + print 'co=', self.MAILLAGE_Python.co + print 'gma=', self.MAILLAGE_Python.gma + print 'gno=', self.MAILLAGE_Python.gno + print 'dim=', self.MAILLAGE_Python.dime_maillage + if self.OPTIONS['INFO']>=5: print '_LST_MA=', _LST_MA + + + # Elimination des mailles de bords + if self.OPTIONS['elimine_bords']!='NON': + + # Liste des mailles à prendre en compte : dimension _DIM + _D_DIM_MAILLES = self.Creation_Listes_Mailles_Par_Dim(self.MAILLAGE_Python.tm, _LST_MA=_LST_MA) + + # Connectivité et connectivité inverse sur les bords + self.Connectivite_Aretes() + + self.liste_mailles = _D_DIM_MAILLES[ _DIM ] + + # Pour prendre en compte des mélanges d'elements de dimension differente + _LST, _LST_BD = self.Elimination_Mailles_de_bords(MAILLAGE_Python, _D_DIM_MAILLES, _DIM) + self.liste_mailles = NP.concatenate( (self.liste_mailles,NP.array(_LST)) ) + + if self.OPTIONS['INFO']>=5: + print '_LST_BD=',_LST_BD + print '_LST=',_LST + + else: + self.liste_mailles = _LST_MA + + + # Restriction des connectivités aux mailles à prendre en compte + self.Connectivite_Aretes(OPTION='all', _LST_OK=self.liste_mailles) + + # Creation de l'arbre de connectivité des bords + self.Creation_Graphe() + + # Reduction de l'arbre de connectivité des bords + _nb = self.Reduction_Graphe(_DIM) + + # Ecriture du fichier pour Metis/Chaco/Jostle + _D_CORRES = self.Ecrire_Graphe(f_metis, _nb) + + # Lancement de metis sur le fichier fort.UL (production de fort.UL.part.N) + txt = exe_metis + ' ' + f_metis + ' ' + str(NB_PART) + print 'Commande : ',txt + os.system( txt ) + + # Lecture du fichier resultant de Metis + self.fichier_out = f_metis + '.part.' + str(NB_PART) + self.liste_sd = self.Lecture_fichier_sdd(self.fichier_out, self.liste_mailles) + + # Traitement des mailles de bords (on les reinjecte dans un SD) + if self.OPTIONS['elimine_bords']!='NON': + self.Affectation_Mailles_de_bords(_LST_BD, _DIM) + + t1 = time.clock() + print "--- FIN PARTITIONNEMENT : ", t1 - self.t00 + + return + + + +# ---------------------------------------------------------------------------- # + + def Creation_Dico_Correspondance_Type_Maille(self): + + # TYPE_ELEM : CF. &CATA.TM + # 1 - >POI1 <>SEG2 <>SEG22 <>SEG3 <>SEG33 <>SEG4 <>TRIA3 < + # 8 - >TRIA33 <>TRIA6 <>TRIA66 <>TRIA7 <>QUAD4 <>QUAD44 <>QUAD8 < + # 15 - >QUAD88 <>QUAD9 <>QUAD99 <>TETRA4 <>TETRA10 <>PENTA6 <>PENTA15 < + # 22 - >PYRAM5 <>PYRAM13 <>HEXA8 <>HEXA20 <>HEXA27 <>TR3QU4 <>QU4TR3 < + # 29 - >TR6TR3 <>TR3TR6 <>TR6QU4 <>QU4TR6 <>TR6QU8 <>QU8TR6 <>TR6QU9 < + # 36 - >QU9TR6 <>QU8TR3 <>TR3QU8 <>QU8QU4 <>QU4QU8 <>QU8QU9 <>QU9QU8 < + # 43 - >QU9QU4 <>QU4QU9 <>QU9TR3 <>TR3QU9 <>SEG32 <>SEG23 < + + # Creation du dictionnaire des correspondance type_maille -> liste des aretes + maille2aretes={} + # POI + maille2aretes[1] = [ ] + # SEG + maille2aretes[2] = [ (0,1) ] + maille2aretes[3] = maille2aretes[4] = maille2aretes[5] = maille2aretes[6] = maille2aretes[2] + # TRIA + maille2aretes[7] = [ (0,1),(1,2),(0,2) ] + maille2aretes[8] = maille2aretes[9] = maille2aretes[10] = maille2aretes[11] = maille2aretes[7] + # QUAD + maille2aretes[12] = [ (0,1),(1,2),(2,3),(0,3) ] + maille2aretes[13] = maille2aretes[14] = maille2aretes[15] = maille2aretes[16] = maille2aretes[17] = maille2aretes[12] + # TETRA + maille2aretes[18] = [ (0,1,2),(0,1,3),(0,2,3),(1,3,2) ] + maille2aretes[19] = maille2aretes[18] + # PENTA + maille2aretes[20] = [ (0,1,2),(3,4,5),(0,2,5,3),(0,1,4,3),(2,1,4,5) ] + maille2aretes[21] = maille2aretes[20] + # PYRAM + maille2aretes[22] = [ (0,1,4),(1,2,4),(2,3,4),(3,0,4),(0,1,2,3) ] + maille2aretes[23] = maille2aretes[22] + # HEXA + maille2aretes[24] = [ (0,1,2,3), (4,5,6,7), (1,2,6,5), (2,3,7,6), (7,4,0,3), (4,5,1,0) ] + maille2aretes[25] = maille2aretes[26] = maille2aretes[24] + + + # dictionnaire de correspondance entre type_maille -> nb noeud (maille linéaire) + maille2nb={} + # POI + maille2nb[1] = 1 + # SEG + maille2nb[2] = 2 + maille2nb[3] = maille2nb[4] = maille2nb[5] = maille2nb[6] = maille2nb[2] + # TRIA + maille2nb[7] = 3 + maille2nb[8] = maille2nb[9] = maille2nb[10] = maille2nb[11] = maille2nb[7] + # QUAD + maille2nb[12] = 4 + maille2nb[13] = maille2nb[14] = maille2nb[15] = maille2nb[16] = maille2nb[17] = maille2nb[12] + # TETRA + maille2nb[18] = 4 + maille2nb[19] = maille2nb[18] + # PENTA + maille2nb[20] = 5 + maille2nb[21] = maille2nb[20] + # PYRAM + maille2nb[22] = 5 + maille2nb[23] = maille2nb[22] + # HEXA + maille2nb[24] = 6 + maille2nb[25] = maille2nb[26] = maille2nb[24] + + + # dictionnaire de correspondance entre type_maille -> dimension + maille2dim = {} + # POI + maille2dim[1] = 0 + # SEG + maille2dim[2] = 1 + maille2dim[3] = maille2dim[4] = maille2dim[5] = maille2dim[6] = maille2dim[2] + # TRIA + maille2dim[7] = 2 + maille2dim[8] = maille2dim[9] = maille2dim[10] = maille2dim[11] = maille2dim[7] + # QUAD + maille2dim[12] = 2 + maille2dim[13] = maille2dim[14] = maille2dim[15] = maille2dim[16] = maille2dim[17] = maille2dim[12] + # TETRA + maille2dim[18] = 3 + maille2dim[19] = maille2dim[18] + # PENTA + maille2dim[20] = 3 + maille2dim[21] = maille2dim[20] + # PYRAM + maille2dim[22] = 3 + maille2dim[23] = maille2dim[22] + # HEXA + maille2dim[24] = 3 + maille2dim[25] = maille2dim[26] = maille2dim[24] + + # On stocke les dictionnaires + self.maille2aretes = maille2aretes + self.maille2nb = maille2nb + self.maille2dim = maille2dim + + return + + +# ---------------------------------------------------------------------------- # + + def Modele_to_Liste_Mailles(self, MODELE): + + nommod = string.ljust(MODELE.nom,8) + _DIC_MA = aster.getcolljev(nommod.ljust(8)+'.MODELE .LIEL') + + # Creation de la liste des mailles + ll = [] + for type_maille in _DIC_MA.keys(): + ll.extend( _DIC_MA[type_maille][0:-1] ) + _LST_MA = NP.array( ll ) - 1 + + if self.OPTIONS['INFO']>=5: + print '\n# ----- MODELE ----- #\n' + print '_LST_MA=',len(_LST_MA),_LST_MA + print '_DIC_MA=',len(_DIC_MA),_DIC_MA + + return _LST_MA + + +# ---------------------------------------------------------------------------- # + + def Creation_Listes_Mailles_Par_Dim(self, _LST_TMA, _LST_MA=None): + + t0 = time.clock() + + # Si _LST_MA est renseigné on extrait la liste des TMA correspondante aux mailles de _LST_MA + if _LST_MA != None: + _LST_TMA = NP.take(_LST_TMA,_LST_MA) + else: + _LST_MA = NP.arange(len(_LST_TMA)) + + _D_DIM_MAILLES = {} + + # Liste des mailles 3D (type maille de 18 à 26) + _lst = NP.where( _LST_TMA>=18, -3, _LST_TMA ) + _tmp = NP.where( _lst==-3, -1, 0 ) +# _D_DIM_MAILLES[3] = NP.nonzero( _tmp ) + _D_DIM_MAILLES[3] = NP.take(_LST_MA, NP.nonzero( _tmp )[0] ) + + # Liste des mailles 2D (type maille de 7 à 17) + _lst = NP.where( _lst>=7, -2, _lst ) + _tmp = NP.where( _lst==-2, -1, 0 ) + _D_DIM_MAILLES[2] = NP.take(_LST_MA, NP.nonzero( _tmp )[0] ) + + # Liste des mailles 1D (type maille de 2 à 6) + _lst = NP.where( _lst>=2, -1, _lst ) + _tmp = NP.where( _lst==-1, -1, 0 ) + _D_DIM_MAILLES[1] = NP.take(_LST_MA, NP.nonzero( _tmp )[0] ) + + # Liste des mailles 0D (type maille 1) + _lst = NP.where( _lst>=1, -4, _lst ) + _tmp = NP.where( _lst==-4, -1, 0 ) + _D_DIM_MAILLES[0] = NP.take(_LST_MA, NP.nonzero( _tmp )[0] ) + + + if self.OPTIONS['INFO']>=5: + for i in _D_DIM_MAILLES.keys(): + print "-----------------" + print 'Dim:',i, _D_DIM_MAILLES[i] + print "-----------------" + + print "--- FIN Creation des listes de mailles par Dim : ", time.clock() - t0 + + return _D_DIM_MAILLES + + +# ---------------------------------------------------------------------------- # + + def Connectivite_Aretes(self, OPTION=None, _LST_OK=None): + + t0 = time.clock() + + # Si _LST_OK n'est pas renseigné on prend toutes les mailles + if not _LST_OK: _LST_OK = NP.arange(len(self.MAILLAGE_Python.tm)) + + if self.OPTIONS['INFO']>=5: print '_LST_OK (ca)=',_LST_OK + + maille2aretes = self.maille2aretes + + # Creation de la : + # - connectivite des aretes (self.MAILLAGE_Python.ca) : m1 -> [ (a1, a2), .. ] + # - connectivite inverse des aretes (self.MAILLAGE_Python.cia) : (a1, a2) -> [ m1, m2, ... ] + + self.MAILLAGE_Python.ca = {} + self.MAILLAGE_Python.cia = {} + + for n in _LST_OK: + + n1 = self.MAILLAGE_Python.tm[n] + + l_aretes = maille2aretes[n1] # liste des aretes de la maille n + l_noeuds = self.MAILLAGE_Python.co[n] # liste des noeuds de la maille n + + for arete in l_aretes: + ll = [] + for i in arete: + ll.append( l_noeuds[i] ) + ll.sort() + ll = tuple(ll) + + # Table de connectivité des aretes + if OPTION: + if not self.MAILLAGE_Python.ca.has_key(n): self.MAILLAGE_Python.ca[n]=[] + self.MAILLAGE_Python.ca[n].append(ll) +# try: +# self.MAILLAGE_Python.ca[n].append(ll) +# except KeyError: +# self.MAILLAGE_Python.ca[n]=[ll] + + # Table de connectivité inverse des aretes + if not self.MAILLAGE_Python.cia.has_key(ll): self.MAILLAGE_Python.cia[ll]=[] + self.MAILLAGE_Python.cia[ll].append(n) +# try: +# self.MAILLAGE_Python.cia[ll].append(n) +# except KeyError: +# self.MAILLAGE_Python.cia[ll]=[n] + + + if self.OPTIONS['INFO']>=5: + for k in self.MAILLAGE_Python.cia.keys(): + print 'cia:',k, ' ', self.MAILLAGE_Python.cia[k] + if OPTION: + for k in self.MAILLAGE_Python.ca.keys(): + print 'ca: ',k, ' ', self.MAILLAGE_Python.ca[k] + + + print "--- FIN Creation de la connectivite simple et inverse des aretes : ", time.clock() - t0 + + return + + +# ---------------------------------------------------------------------------- # + + def Elimination_Mailles_de_bords(self, MAILLAGE_Python, _D_DIM_MAILLES, _DIM): + """ + Extraction des mailles de bords (mailles incluses dans un bord d une autre maille) + """ + + t0 = time.clock() + + _LST_TMA = self.MAILLAGE_Python.tm + + if self.OPTIONS['INFO']>=5: + MAILLAGE = self.ASTER['MAILLAGE'] + nommail = string.ljust(MAILLAGE.nom,8) + _LST_MAI = aster.getvectjev(nommail.ljust(8)+'.NOMMAI') + + # Le dico maille2nb donne le nombre de noeuds definissant un bord (lineaire) + maille2nb = self.maille2nb + + + # construction des listes des mailles de dim N-1 : + # _LST_OK : Mailles de dim N-i qui ne sont pas un bord des mailles de dim N + # _LST_BD : Mailles de dim N-i qui sont un bord + # + if self.OPTIONS['INFO']>=5: print '\n\nElimination des mailles de bord de DIM', _DIM - 1 + + _LST4 = _D_DIM_MAILLES[ _DIM - 1 ] + _LST_IND = NP.arange( len(_LST4) ) + 1 # on ajoute 1 pour eviter le premier 0 dans les test nonzero plus bas + + if self.OPTIONS['INFO']>=5: print ' Mailles concernées=',_LST4 + + i=0 + for m in _LST4: + if self.OPTIONS['INFO']>=5: print '\n Maille de dim N-1:',m, ' Aster:',string.strip(_LST_MAI[m]), ' TMA:',self.MAILLAGE_Python.tm[m], ' CO:',self.MAILLAGE_Python.co[m], '(noeuds de cette maille)' + nb = maille2nb[ self.MAILLAGE_Python.tm[m] ] + ll = self.MAILLAGE_Python.co[m][0:nb] + ll = NP.sort(ll) + ll = ll.tolist() + ll = tuple(ll) + if self.OPTIONS['INFO']>=5: print ' Bord (lineaire)', ll, nb + + try: + if self.OPTIONS['INFO']>=5: print ' CIA=', self.MAILLAGE_Python.cia[ ll ], '(mailles de dim N qui ont cette maille pour bord)' + _tmp=[] + for maille in self.MAILLAGE_Python.cia[ ll ]: + if self.OPTIONS['INFO']>=5: print ' Maille N:', maille, 'Aster:', string.strip(_LST_MAI[maille]), ' TMA:', self.MAILLAGE_Python.tm[maille] +# self.liste_mailles_bord.append(m) + except: + if self.OPTIONS['INFO']>=5: print ' Maille non-bord' + _LST_IND[i] = 0 + + i+=1 + + # Recuperation des mailles de bords et non-bords + _LST_BD = NP.nonzero(_LST_IND)[0] + _LST_BD = NP.take(_LST4,_LST_BD) + + _LST_OK = NP.where( _LST_IND==0, 1 , 0 ) + _LST_OK = NP.nonzero(_LST_OK)[0] + _LST_OK = NP.take(_LST4,_LST_OK) + + if self.OPTIONS['INFO']>=5: print '\nListe Maille de bords de DIM', _DIM - 1,' :',_LST_BD + if self.OPTIONS['INFO']>=5: print 'Liste Maille de DIM', _DIM - 1,'qui ne sont pas des bords :',_LST_OK + + print "--- FIN Maille de bords de DIM",_DIM - 1, " : ", time.clock() - t0 + t0 = time.clock() + + + # On cherche à marier les mailles de dimension N-2, N-3 + # Peut etre lent car on utilise la connectivité ! Mais pour le moment on a rien d'autre. + + _LST_BD0 = [] + _LST_OK0 = [] + _D_BD = {} + for d in range(_DIM-1): + _LST4 = _D_DIM_MAILLES[ d ] + if self.OPTIONS['INFO']>=5: print '\n\nElimination des mailles de bord de DIM', d + if self.OPTIONS['INFO']>=5: print ' Mailles concernées=',_LST4 + for mai in _LST4: + if self.OPTIONS['INFO']>=5: print '\n Maille:', mai, ' Aster:',string.strip(_LST_MAI[mai]), ' TMA:',self.MAILLAGE_Python.tm[mai], ' CO:',self.MAILLAGE_Python.co[mai], '(noeuds de cette maille)' + + nb = maille2nb[ self.MAILLAGE_Python.tm[mai] ] + ll = self.MAILLAGE_Python.co[mai][0:nb] + ll = NP.sort(ll) + ll = ll.tolist() + _tmp = tuple(ll) +# _tmp = self.MAILLAGE_Python.co[mai] + + if self.OPTIONS['INFO']>=5: print ' Bord (lineaire):', _tmp, nb + + ok=0 + for arete in self.MAILLAGE_Python.cia: + _nb=0 + for noe in _tmp: + if noe in arete: _nb+=1 + if _nb == len(_tmp): + if self.OPTIONS['INFO']>=5: print ' Maille N+i:', self.MAILLAGE_Python.cia[arete], '- Arete:', arete + _LST_BD0.append( mai ) + ok=1 +# if not _D_BD.has_key( mai ): _D_BD[mai] = [] +# _D_BD[mai].append( self.MAILLAGE_Python.cia[arete] ) + break + if ok == 0: + _LST_OK0.append( mai ) + +# print 'Mai:',mai, '_D_BD[mai]=',_D_BD[mai] + + + if self.OPTIONS['INFO']>=5: print '\nListe Maille de bords de DIM', d,' :',_LST_BD0 + if self.OPTIONS['INFO']>=5: print 'Liste Maille de DIM', d,'qui ne sont pas des bords :',_LST_OK0 + + + print '--- FIN Maille de bords de DIM', d, ' :',time.clock() - t0 + t0 = time.clock() + + + _LST_OK = NP.concatenate( (_LST_OK, NP.array(_LST_OK0)) ) + _LST_BD = NP.concatenate( (_LST_BD, NP.array(_LST_BD0)) ) + + if self.OPTIONS['INFO']>=5: print '\nTotal:\nListe Maille de bords=',_LST_BD + if self.OPTIONS['INFO']>=5: print 'Liste Maille non-bords=',_LST_OK,'\n' + +# print "--- FIN Maille de bords 3 : ", time.clock() - t0 + + return _LST_OK, _LST_BD + + +# ---------------------------------------------------------------------------- # + + def Affectation_Mailles_de_bords(self, _LST_BD, _DIM): + """ + Affectation a un SD des mailles de bords (mailles incluses dans un bord d une autre maille) + """ + + if self.OPTIONS['INFO']>=5: + print 'liste_mailles_bord=', self.liste_mailles_bord + print 'liste_sd_bord', self.liste_sd_bord + print '_LST_BD=',_LST_BD + + + MAILLAGE = self.ASTER['MAILLAGE'] + _LST_TMA = self.MAILLAGE_Python.tm + + if self.OPTIONS['INFO']>=5: + nommail = string.ljust(MAILLAGE.nom,8) + _LST_MAI = aster.getvectjev(nommail.ljust(8)+'.NOMMAI') + + t0 = time.clock() + + # Affectation des mailles de bords à chacun des SD + + # Le dico maille2nb donne le nombre de noeuds definissant un bord (lineaire) + maille2nb = self.maille2nb + + i = 0 + for m in _LST_BD: + if self.OPTIONS['INFO']>=5: print '\n Maille de dim N-1:',m, ' Aster:',string.strip(_LST_MAI[m]), ' TMA:',self.MAILLAGE_Python.tm[m], ' CO:',self.MAILLAGE_Python.co[m], '(noeuds de cette maille)' + nb = maille2nb[ self.MAILLAGE_Python.tm[m] ] + ll = self.MAILLAGE_Python.co[m][0:nb] + ll = NP.sort(ll) + ll = ll.tolist() + ll = tuple(ll) + if self.OPTIONS['INFO']>=5: print ' Bord (lineaire)', ll, nb + + # Cas particulier des POI1 en 2D et 3D (ils ne peuvent etre des bords d'elements 2D ou 3D) + if ( (nb==1) and (_DIM>=2) ): + _tmp=[] + for arete in self.MAILLAGE_Python.cia.keys(): + if ll[0] in arete: + for maille in self.MAILLAGE_Python.cia[ arete ]: + if self.OPTIONS['INFO']>=5: print ' Maille N+i:', maille, ' Aster:',string.strip(_LST_MAI[maille]), ' Arete:', arete + _tmp.append( self.liste_sd[maille] ) + + # Cas particulier des SEG en 3D (ils ne peuvent etre des bords d'elements 3D) + elif ( (nb==2) and (_DIM==3) ): + _tmp=[] + for arete in self.MAILLAGE_Python.cia.keys(): + _nb=0 + for noe in ll: + if noe in arete: _nb+=1 + if _nb == len(ll): + for maille in self.MAILLAGE_Python.cia[arete]: + if self.OPTIONS['INFO']>=5: print ' Mailles N+i:', maille, ' Aster:',string.strip(_LST_MAI[maille]), ' Arete:', arete + _tmp.append( self.liste_sd[maille] ) + + # Autres mailles de bord + else: + if self.OPTIONS['INFO']>=5: print ' CIA=', self.MAILLAGE_Python.cia[ ll ], '(mailles de dim N qui ont cette maille pour bord)' + _tmp=[] + for maille in self.MAILLAGE_Python.cia[ ll ]: + if self.OPTIONS['INFO']>=5: print ' Maille N+i:', maille, 'Aster:', string.strip(_LST_MAI[maille]), ' SD:', self.liste_sd[maille], ' TMA:', self.MAILLAGE_Python.tm[maille] + _tmp.append( self.liste_sd[maille] ) + + # integre la maille au SD le plus faible (pour que des groupes de bords se retrouvent dans le meme SD) + _tmp.sort() + self.liste_mailles_bord.append(m) + self.liste_sd_bord.append( _tmp[0] ) + i += 1 + if self.OPTIONS['INFO']>=5: print ' ---> Maille:',m,'integree au SD:', _tmp[0] + + if self.OPTIONS['INFO']>=5: + print '\n\nliste_mailles_bord=', self.liste_mailles_bord + print 'liste_sd_bord=', self.liste_sd_bord + + + print "--- FIN Affectation des mailles de bords : ", time.clock() - t0 + + return + + +# ---------------------------------------------------------------------------- # + + def Creation_Graphe(self): + + t0 = time.clock() + + # Creation du graphe complet + self.GRAPH = {} + + for mai in self.liste_mailles: + _ll=[] + for are in self.MAILLAGE_Python.ca[mai]: + _ll.extend( self.MAILLAGE_Python.cia[are] ) + _mm = enleve_doublons_liste(_ll) # coute cher! + _tmp = _mm.tolist() + _tmp.remove(mai) + self.GRAPH[mai] = _tmp + + if self.OPTIONS['INFO']>=5: print 'self.GRAPH['+str(mai)+']=', self.GRAPH[mai] + + print "--- FIN Creation du graphe complet : ", time.clock() - t0 + + return + + +# ---------------------------------------------------------------------------- # + + def Reduction_Graphe(self, _DIM): + + t0 = time.clock() + + # Elimination des connectivités à interface nulle + maille2dim = self.maille2dim + _lst2 = [] + for mai in self.liste_mailles: + if self.OPTIONS['INFO']>=5: print '\nmai:', mai, 'co:', self.MAILLAGE_Python.co[mai], 'tm:', self.MAILLAGE_Python.tm[mai] + _DIM1 = maille2dim[ self.MAILLAGE_Python.tm[mai] ] + _tmp2 =[] + for mai2 in self.GRAPH[mai]: + if self.OPTIONS['INFO']>=5: print 'mai2:', mai2, 'co:', self.MAILLAGE_Python.co[mai2], 'tm:', self.MAILLAGE_Python.tm[mai2] + # calcule le nombre de noeuds communs aux deux mailles + _nb = 0 + for noe in self.MAILLAGE_Python.co[mai2]: + if noe in self.MAILLAGE_Python.co[mai]: _nb += 1 + _DIM2 = maille2dim[ self.MAILLAGE_Python.tm[mai2] ] + if _nb >= min(_DIM1, _DIM2): # le min permet de faire du collage 3D-coque par exemple + _tmp2.append( mai2 ) + _tmp = [mai, mai2] + _tmp.sort() + _lst2.append(_tmp) + self.GRAPH[mai] = _tmp2 + + print "--- FIN Elimination des connectivités avec une interface nulle : ", time.clock() - t0 + t0 = time.clock() + + + # Calcul du nombre d'aretes + # A voir : normalement il n'y a rien a faire car nb0 = 2*nb (a verifier...) + _lst2.sort() + _v = _lst2[0] + _nb = 1 + for i in _lst2: + if i != _v: + _v = i + _nb += 1 + + + if self.OPTIONS['INFO']>=5: + print '----------------------------------------------' + for mai in self.liste_mailles: + print 'self.GRAPH['+str(mai)+']=', self.GRAPH[mai] + print '----------------------------------------------' + + return _nb + + +# ------------------------------------------------------------------ # + + def Ecrire_Graphe(self, f_metis, _nb): + + t0 = time.clock() + + # On doit renumeroter les mailles qui arrivent dans self.liste_mailles pour avoir 0... N-1 + _D_CORRES = {} + for i in NP.arange(len(self.liste_mailles)): + _D_CORRES[ self.liste_mailles[i] ] = i + + # Ecriture du fichier fort.UL pour metis + fw = open(f_metis,'w') + fw.write( str(len(self.liste_mailles)) + ' ' + str(_nb) + '\n') + for l in self.liste_mailles: +# try: + _tmp = [] + for t in self.GRAPH[l]: + try: + t = _D_CORRES[t] + _tmp.append( str(t+1) ) # Necessaire car metis numerote de 1 à N + except: + print 'on oublie le bord:', t + fw.write( string.join(_tmp, ' ') + '\n' ) +# except: +# print 'Probleme ecriture graphe! On continue..' + fw.close() + + print "--- FIN Ecriture du fichier du graphe pour metis : ", time.clock() - t0 + + return _D_CORRES + + +# ---------------------------------------------------------------------------- # + + def Lecture_fichier_sdd(self, fichier, _LST_OK): + + t0 = time.clock() + + # Lecture du fichier produit par metis (partie a optimiser) + try: + f = open( fichier, 'r' ) + except: + print "\n\n ERREUR: le fichier est introuvable! Le partitionneur \n ne s'est probablement pas lancé.\n\n" + sys.exit(1) + else: + _tmp = [] + for l in f.readlines(): + _tmp.append( int(string.strip(l)) ) + f.close() + _l_domaines = NP.array(_tmp,copy=0) + + # Pour garder le fichier metis + os.system( 'mv ' + fichier + ' REPE_OUT/' ) + + if self.OPTIONS['INFO']>=5: print '_l_domaines=',_l_domaines + + print "--- FIN Lecture du fichier produit par metis : ", time.clock() - t0 + + return _l_domaines + + +# ---------------------------------------------------------------------------- # + + def Creation_Group_ma_Python_par_SD(self, NOM='SD', NOM2='B'): + + t0 = time.clock() + + NB_PART = self.OPTIONS['NB_PART'] + + # Creation du dictionnaire des listes des mailles par SD + # d_gma : { num sd -> [ liste mailles ] } + d_gma = {} + for i in range(NB_PART): + d_gma[i] = [] + + i=0 + for sdd in self.liste_sd: + d_gma[sdd].append( self.liste_mailles[i] ) + i+=1 + + + # Creation du dictionnaire des listes des mailles de bord par SD + # d_gma_bord : { num sd -> [ liste mailles ] } + d_gma_bord = {} + for i in range(NB_PART): + d_gma_bord[i] = [] + + i=0 + for sdd in self.liste_sd_bord: + d_gma_bord[sdd].append( self.liste_mailles_bord[i] ) + i+=1 + + + # Generation des listes de noms de groupes + _l_sd = [] + _l_bord = [] + for i in range(NB_PART): + if d_gma[i] != []: + _l_sd.append( NOM + str(i) ) + if d_gma_bord[i] != []: + _l_bord.append( NOM2 + str(i) ) + + # Stockage + self.ASTER['GROUP_MA'] = _l_sd + self.ASTER['GROUP_MA_BORD'] = _l_bord + + + # Creation des groupes de mailles dans le Maillage Python + for i in range(NB_PART): + self.MAILLAGE_Python.gma[NOM+str(i)] = d_gma[i] + self.MAILLAGE_Python.gma[NOM2+str(i)] = d_gma_bord[i] + + print "--- FIN creation du dictionnaire des listes des mailles par SD ", time.clock() - t0 + + return + + +# ---------------------------------------------------------------------------- # + + def Creation_Group_ma_Aster_par_SD(self, NOM='SD', NOM2='B', INCLUSE='NON'): + + t0 = time.clock() + + MAILLAGE = self.ASTER['MAILLAGE'] + NB_PART = self.OPTIONS['NB_PART'] + + nommail = string.ljust(MAILLAGE.nom,8) + _LST_MAI = aster.getvectjev(nommail.ljust(8)+'.NOMMAI') + + + # Creation du dictionnaire des listes des mailles par SD + # d_gma : { num sd -> [ liste mailles ] } + d_gma = {} + for i in range(NB_PART): + d_gma[i] = [] + + m=0 + for sdd in self.liste_sd: + d_gma[sdd].append( string.strip(_LST_MAI[ self.liste_mailles[m] ]) ) # voir si le strip coute cher ! + m += 1 + + + # Creation du dictionnaire des listes des mailles de bord par SD + # d_gma_bord : { num sd -> [ liste mailles ] } + d_gma_bord = {} + for i in range(NB_PART): + d_gma_bord[i] = [] + + # On inclus directement les mailles de bords dans les SD + if INCLUSE=='OUI': + m=0 + for sdd in self.liste_sd_bord: + d_gma[sdd].append( string.strip(_LST_MAI[ self.liste_mailles_bord[m] ]) ) # voir si le strip coute cher ! + m+=1 + + else: + m=0 + for sdd in self.liste_sd_bord: + d_gma_bord[sdd].append( string.strip(_LST_MAI[ self.liste_mailles_bord[m] ]) ) # voir si le strip coute cher ! + m+=1 + + + print "--- FIN creation du dictionnaire des listes des mailles par SD ", time.clock() - t0 + t0 = time.clock() + + + # Creation et lancement de la commande DEFI_GROUP associée + try: + DEFI_GROUP = self.jdc.get_cmd('DEFI_GROUP') + except: + try: + from Cata.cata import DEFI_GROUP + except: + print "\n\nERREUR : il faut lancer ce programme depuis Aster pour pouvoir \ngénérer les groupes de mailles Aster.\n\n" + return + + _tmp = [] + _l_sd = [] + _l_bord = [] + for i in range(NB_PART): + if d_gma[i] != []: + _tmp.append( {'MAILLE': d_gma[i],'NOM': NOM + str(i)} ) + _l_sd.append( NOM + str(i) ) + if d_gma_bord[i] != []: + _tmp.append( {'MAILLE': d_gma_bord[i],'NOM': NOM2 + str(i)} ) + _l_bord.append( NOM2 + str(i) ) + + motscle2= {'CREA_GROUP_MA': _tmp } + + DEFI_GROUP( reuse=MAILLAGE, + MAILLAGE=MAILLAGE, + INFO=1, + **motscle2 + ) ; + + # Stockage + self.ASTER['DICO_SD_MAILLES'] = d_gma + self.ASTER['GROUP_MA'] = _l_sd + self.ASTER['GROUP_MA_BORD'] = _l_bord + + print "--- FIN Creation et lancement de la commande DEFI_GROUP associée : ", time.clock() - t0 + + return + +# ---------------------------------------------------------------------------- # diff --git a/Aster/Cata/cataSTA10/Utilitai/stats.py b/Aster/Cata/cataSTA10/Utilitai/stats.py new file mode 100644 index 00000000..eb338b07 --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/stats.py @@ -0,0 +1,61 @@ +#@ MODIF stats Utilitai DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS + +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== +# extract from pystat module +# +from math import pi,sqrt,log,exp,pow +import numpy +# CDF +# +# ------------------------------------------------------------------- +def normcdf(X): + # Cumulative normal distribution + + (a1,a2,a3,a4,a5) = (0.31938153, -0.356563782, 1.781477937, -1.821255978, 1.330274429) + L = numpy.absolute(X) + K = 1.0 / (1.0 + 0.2316419 * L) + w = 1.0 - 1.0 / sqrt(2*pi)*exp(-L*L/2.) * (a1*K + a2*K*K + a3*pow(K,3) + + a4*pow(K,4) + a5*pow(K,5)) + if X<0: + w = 1.0-w + return w + +# Inverse CDF +def normicdf(v): + if v > 0.5: + r = -1. + else: + r = 1. + xp = 0. + lim = 1.e-20 + p = [-0.322232431088, -1.0, -0.342242088547, -0.0204231210245, -0.453642210148e-4] + q = [0.0993484626060, 0.588581570495, 0.531103462366, 0.103537752850, 0.38560700634e-2] + + if v < lim or v == 1: + return -1./lim + elif v == 0.5: + return 0 + elif v > 0.5: + v = 1.-v + y = sqrt(log(1./v**2.)) + xp = y+((((y*p[4]+p[3])*y+p[2])*y+p[1])*y+p[0])/((((y*q[4]+q[3])*y+q[2])*y+q[1])*y+q[0]) + if v < 0.5: + xp *= -1. + return xp*r +#-- diff --git a/Aster/Cata/cataSTA10/Utilitai/sup_gmsh.py b/Aster/Cata/cataSTA10/Utilitai/sup_gmsh.py new file mode 100644 index 00000000..7d62cee3 --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/sup_gmsh.py @@ -0,0 +1,1416 @@ +#@ MODIF sup_gmsh Utilitai DATE 26/05/2010 AUTEUR ASSIRE A.ASSIRE +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== + +import os.path, string, os, copy +import numpy as NP + +try : + from Cata.cata import * + from Accas import _F +except : + print 'Fonctionnalites Aster indisponibles' + + +_CARAC = { + 'prec' : 1.E-8 + } + + +def Class_search(class_name, target_class) : + + """ + Check that class_name inherits from target_class + (run recursively through the inheritance lists) + """ + + if class_name == target_class : return 1 + + for cl in class_name.__bases__ : + if Class_search(cl, target_class) : return 1 + return 0 + + +def Progress(L,**para) : + + """ + Compute the unknown parameters for a geometric progression : + r = ratio + N = number of elements + h = initial size + + So that : + L = Sum(i=0:N-1, h(i)) where h(i+1) = h(i)*r, h(0)=h + + Usage : + Progress(L,r=...,N=...) -> h + Progress(L,r=...,h=...) -> N + Progress(L,h=...,N=...) -> r + + """ + + prec = 1.E-4 + + # Calcul de N + if 'N' not in para.keys() : + r = float(para['r']) + h = float(para['h']) + N = log(1+(r-1)*L/h)/log(r) + N = int(N+0.5) + return N + + # Calcul de h + elif 'h' not in para.keys() : + r = float(para['r']) + N = int(para['N']+0.5) + h = L*(r-1)/(r**N-1) + return h + + # Calcul de r + elif 'r' not in para.keys() : + h = float(para['h']) + N = int(para['N']+0.5) + a = L/h + if N > a : + x = 0 + else : + x = a**(1./(N-1)) + + for i in xrange(100) : + res = x**N - a*x + a-1 + if abs(res) < prec*(x-1)*a : + return x + dx = res/(a-N*x**(N-1)) + x = x+dx + + raise 'Solution failure' + + else : + raise 'Unknown parameters' + + + +def Is_Geometric(object) : + + """ + return true if the object inherits of the Geometric class + """ + + return Class_search(object.__class__, Geometric) + + + +# -------------------------------------------------------------------------------------- + +class Geometric : + + """ + GENERIC CLASS FOR GEOMETRICAL OBJECTS + + private attribute + parameters : dictionnary of the attributes (except relation and parameters itself) + see __getattr__ and __setattr__ + + + Attributes + num : index among gmsh objects + md : mesh descriptor + mesh : related mesh object + relation : model object in case of coincidence + type : type of the object (None, Point, Line, Circle, Surface, Volume) + + Public methods + Is_point : return true is the object inherits of the Point class + + Is_line : return true is the object inherits of the Line class + + Is_surface : return true is the object inherits of the Surface class + + Is_volume : return true is the object inherits of the Volume class + + Base_class : return the name of the base class : Point, Line, Surface + or Volume + + Is_same_dimension : return true is both objects are of the same dimension + (point, line, surface or volume) + in -> object to compare to self + + Duplicate : duplicate an object and base its mesh_descriptor + on the mesh_descriptor of the model + + Coincide : assert that an object is coincident with a model one + All the attributes are then automatically read from + the model object (see __setattr__ and __getattr__). + in -> model object + + Private method + + Root : + Provides the root object of an object, ie the object itself if there is no relation + or the deepest model in case of relation. + + Geometric_coincide : check if a geometrical coincidence is possible + return information about the coincidence, false else. + in -> model object + + Deep_coincide : proceed recursively to ensure coincidence of the relevant sub-objects + in -> model object + in -> correspond (information returned by Geometric_coincide) + + __setattr__ : distinguish two sets of attributes + relation (to express a relation with a model object in case of coincidence) + all the other attributes which are stored in the dictionnary parameters + instead of the usual __dict__ if there is no relation (see Coincide) + and in the model object if there is a coincidence + + __getattr__ : if the object is related (relation <> None) the attribute is read + in the model object. Else, it is read in the current object, actually + in the dictionnary parameters (see __setattr__) + + Thanks to these two overloaded methods, the access to the attributes is usual if + there is no relation whereas the attributes of the model object are accessed + transparently if there is a relation. + + __cmp__ : + The comparison of two objects involves possible coincidence. It is no more the object ids + that are compared but the object roots (.relation if any). + + Gmsh : produce the source code for Gmsh + in -> mesh + + Gmsh_send : send a line code to the gmsh interpreter + in -> line_code (string) + + Intermediate_meshing : produce the source code for the intermediate objects + in -> mesh + + Object meshing : produce the source code for the current object + var -> object number (modified if several objects are created) + + """ + + def __init__(self) : + self.relation = None + self.parameters = {} + self.num = 0 + self.md = Mesh_Descriptor() + + types = {} + types[Geometric] = 'Geometric' + types[Point] = 'Point' + types[Line] = 'Line' + types[Circle] = 'Circle' + types[Surface] = 'Surface' + types[Volume] = 'Volume' + types[LineLoop] = 'LineLoop' + types[SurfaceLoop] = 'SurfaceLoop' + try : + self.type = types[self.__class__] + except KeyError : + raise 'Unknown object type' + + + def Is_point(self) : + return Class_search(self.__class__, Point) + + def Is_line(self) : + return Class_search(self.__class__, Line) + + def Is_surface(self) : + return Class_search(self.__class__, Surface) + + def Is_volume(self) : + return Class_search(self.__class__, Volume) + + def Base_class(self) : + if self.Is_volume() : return 'Volume' + if self.Is_surface() : return 'Surface' + if self.Is_line() : return 'Line' + if self.Is_point() : return 'Point' + + def Is_same_dimension(self, obj) : + + return ( + (self.Is_point() and obj.Is_point() ) or + (self.Is_line() and obj.Is_line() ) or + (self.Is_surface() and obj.Is_surface() ) or + (self.Is_volume() and obj.Is_volume() ) + ) + + + def __setattr__(self, attr, value) : + + if attr in ['relation','parameters'] : + self.__dict__[attr] = value + else : + if self.relation : + setattr(self.relation,attr,value) + else : + self.parameters[attr] = value + + + def __getattr__(self,attr) : + + if self.relation : + return (getattr(self.relation,attr)) + else : + if attr in self.parameters.keys() : + return self.parameters[attr] + else : + raise AttributeError,attr + + + def Root(self) : + + o = self + while o.relation : o = o.relation + return o + + + def __cmp__(self,obj) : + + if self.Root() is obj.Root() : + return 0 + else : + return -1 + + + def Geometric_coincide(self,obj) : return 0 + + def Deep_coincide(self,obj,correspond) : pass + + def Coincide(self, obj) : + + if self == obj : return # in that way recursive loops cannot exist + + if self.relation : # the root is put in coincidence, not the object itself + self.Root().Coincide(obj) + return + + if not self.Is_same_dimension(obj) : + raise 'Coincidence impossible : objects are not of the same dimension' + + correspond = self.Geometric_coincide(obj) + if not correspond : + raise 'The objects are not geometrically coincident' + + self.Deep_coincide(obj,correspond) + self.relation = obj + + + def Duplicate(self) : + + return copy.deepcopy(self) # special deepcopy for the Mesh_Descriptor + + + def Gmsh(self,mesh) : + + if self.num : return # already meshed object + self.mesh = mesh # Storing the mesh + self.Intermediate_meshing(mesh) # creation of the intermediate objects + num = mesh.num+1 # New object number + self.Object_meshing(num) # object meshing (with current number num) + mesh.num = num # Updating the current gmsh pointer + self.num = num # Storing the current object number + + + def Gmsh_send(self, line_code) : + + self.mesh.command.append(line_code) + + + def Intermediate_meshing(self,mesh) : + pass + + + def Object_meshing(self,num) : + raise "Creation of the Gmsh source not implemented" + + + + +# -------------------- POINT OBJECTS --------------------- + + +class Point(Geometric) : + + """ + POINT OBJECT + + Public methods + __init__ : + in -> coordinates (the 3rd is zero by default) + + Size : set the size of the neighbouring elements + in -> size + + Attractor : define the point as an attractor + in -> scale_x : size amplification factor in the x-direction + in -> scale_y : size amplification factor in the y-direction + in -> distance: influence distance for the perturbation + + Translate : translation of the point + in -> x,y,z translation vector (default : z=0) + + Attributes + coor : coordinates + size : neighbouring element size + attractor : parameters of the attractor + """ + + def __init__(self,x,y,z=0) : + + Geometric.__init__(self) + self.coor = NP.array([x,y,z], NP.float) + self.attractor = None + + + def Geometric_coincide(self,obj) : + + global _CARAC + prec = _CARAC['prec'] + + d = VectorNorm(self.coor - obj.coor) + if d < prec*self.md.size : + return 1 + else : + return None + + + def Size(self,h) : + + self.md.size = float(h) + + + def Attractor(self, scale_x, scale_y, distance) : + + self.attractor = (float(scale_x), float(scale_y), float(distance)) + + + def Translate(self,x,y,z=0) : + + tran = NP.array([x,y,z]).astype(NP.float) + self.coor = self.coor + tran + + + def Object_meshing(self,num) : + + ch = ( + 'Point(' + `num` + ') = {' + + `self.coor[0]` + ', ' + + `self.coor[1]` + ', ' + + `self.coor[2]` + ', ' + + `self.md.size` + '};' + ) + self.Gmsh_send(ch) + + if self.attractor : + ch = ( + 'Attractor Point{' + `num` + '} = {' + + `self.attractor[0]`+',' + + `self.attractor[1]`+',' + + `1./self.attractor[2]` + '};' + ) + self.Gmsh_send(ch) + + + +# -------------------- LINE OBJECTS ---------------------- + + +class Line(Geometric) : + + """ + LINE OBJECT + + + Public methods + + Attractor : define the point as an attractor + in -> scale_x : size amplification factor in the x-direction + in -> scale_y : size amplification factor in the y-direction + in -> distance: influence distance for the perturbation + + """ + + + def __init__(self,*points) : + + Geometric.__init__(self) + + if len(points) <=1 : + raise "There should be at least two points" + + for point in points : + if not point.Is_point() : + raise "Arguments should be points" + + self.points = list(points) + self.attractor = None + + + def Geometric_coincide(self,obj) : + + nb_points = len(self.points) + if nb_points <> len(obj.points) : + raise 'To coincide, lines should have the same number of points' + + # same order of points + info = range(nb_points) + for i in range(nb_points) : + p1 = self.points[i] + p2 = obj.points[info[i]] + if not p1.Geometric_coincide(p2) : + break + else : + return info + + # reverse order of points + info.reverse() + for i in range(nb_points) : + p1 = self.points[i] + p2 = obj.points[info[i]] + if not p1.Geometric_coincide(p2) : + break + else : + return info + + return None + + + def Deep_coincide(self,obj,info) : + + for i in range(len(info)) : + p1 = self.points[i] + p2 = obj.points[info[i]] + p1.Coincide(p2) + + + + def Translate(self,x,y,z=0) : + + for point in self.points : + point.Translate(x,y,z) + + + def Transfinite(self,number,progression = 1) : + + self.md.number = int(number) + self.md.progression = float(progression) + + + def Attractor(self,scale_x, scale_y, distance) : + + self.attractor = (float(scale_x), float(scale_y), float(distance)) + + + def __rmul__(self,base) : + + if len(self.points) > 2 : + raise "Support (right argument) should be a straight line" + + if self.points[0] in base.points : + supp_orig = 0 + supp_extr = 1 + elif self.points[1] in base.points : + supp_orig = 1 + supp_extr = 0 + else : + raise "No common point" + + if self.points[supp_orig] == base.points[0] : + base_orig = 0 + base_extr = -1 + else : + base_orig = -1 + base_extr = 0 + + # Translation vector + ce = self.points[supp_extr].coor + co = self.points[supp_orig].coor + tran = ce-co + + # Definition of the edge opposite to the base + opp_base = base.Duplicate() + opp_base.Translate(tran[0],tran[1],tran[2]) + opp_base.points[base_orig] = self.points[supp_extr] + + # Definition of the edge opposite to the support + opp_supp = self.Duplicate() + opp_supp.points[0] = base.points[base_extr] + opp_supp.points[1] = opp_base.points[base_extr] + + surf = Surface(base,self,opp_base,opp_supp) + + if len(base.points) > 2 : surf.Ruled() + + return surf + + + def Intermediate_meshing(self,mesh) : + + for point in self.points : + point.Gmsh(mesh) + + + def Object_meshing(self,num) : + + ch = self.type + '(' + `num` + ') = {' + for point in self.points : + ch = ch + `point.num` + ',' + ch = ch[:-1] + '};' + self.Gmsh_send(ch) + + if self.md.transfinite : + ch = ( + 'Transfinite Line{' + `num` + '} = ' + + `self.md.number+1` + + ' Using Progression ' + `self.md.progression` + ';' + ) + self.Gmsh_send(ch) + + if self.attractor : + ch = ( + 'Attractor Line{' + `num` + '} = {' + + `self.attractor[0]`+',' + + `self.attractor[1]`+',' + + `1./self.attractor[2]` + '};' + ) + self.Gmsh_send(ch) + + + +class Circle(Line) : pass + +# The class inherits everything from Line but its name (to tell Gmsh +# that it is a circle). + + + +def Curve(l_x,l_y,l_z=None) : + + if not l_z : + l_z = [0.] * len(l_x) + + l_P = [] + for x,y,z in map(None,l_x,l_y,l_z) : + l_P.append(Point(x,y,z)) + + line = apply(Line,l_P) + return line + + + + + +# -------------------- SURFACE OBJECTS --------------------- + + +class Surface(Geometric) : + + """ + SURFACE OBJECT (inherit from the Geometric class) + + Public methods + __init__ : + in -> lines : external bounday of the surface (lines should be connected) + + Holes : set the internal holes (surfaces) + in -> holes : list of holes + + Boundary : checks that the boundary is a closed loop and returns the orientation of the edges + + Summit : returns the summit list sorted according to the orientation (see Boundary method) + + Ruled : declare the surface is a ruled one + + Translate : translate the surface + in -> x,y,z translation vector (default : z=0) + + Recombine : recombine the surface (try to mesh with quadrangles instead of triangles) + + Transfinite : Declare the mesh to be transfinite + + + Attributes + lines : list of external boundary lines + holes : list of internal holes (surfaces) + ruled : indicates (false or true) if the surface is a ruled surface + loops : list of boundary (external and internal) loops (computed when meshing) + """ + + + def __init__(self,*lines) : + + Geometric.__init__(self) + self.lines = list(lines) + self.holes = [] + self.ruled = 0 + + # Check Assumptions + for line in lines : + if not line.Is_line() : + raise "Arguments should be lines : " + repr(line) + if lines == 0 : raise "There should be at least one line" + self.Boundary() + + + def Boundary(self) : + + # checking the boundary is a loop + orie = [] + tmp = list(self.lines) + [self.lines[0]] + for i in range(len(self.lines)) : + lb = tmp[i] + la = tmp[i+1] + if lb.points[-1] in [la.points[0], la.points[-1]] : + orie.append(1) + elif lb.points[0] in [la.points[0], la.points[-1]] : + orie.append(-1) + else : + raise "This is not a loop" + + # checking the boundary is closed + if orie[0] == 1 : pi = self.lines[0].points[0] + if orie[0] == -1 : pi = self.lines[0].points[-1] + if orie[-1] == 1 : pf = self.lines[-1].points[-1] + if orie[-1] == -1 : pf = self.lines[-1].points[0] + if pi <> pf : raise "The loop is not closed" + + return orie + + + def Summit(self) : + + summits = [] + for line, orie in map(None,self.lines,self.Boundary()) : + if orie == 1 : + summits.append(line.points[0]) + else : + summits.append(line.points[-1]) + return summits + + + def Holes(self,*holes) : + + for hole in holes : + if not hole.Is_surface() : + raise "Holes should be surfaces" + self.holes = list(holes) + + + def Geometric_coincide(self,obj) : + + """ + return (line_order, hole_order) : + line_order : list of the coupled lines ith line of self with line_order[i]th line of obj + hole_order : same as line_order but with the internal holes + """ + + if len(self.lines) <> len(obj.lines) : + raise 'To coincide, surfaces should have the same number of border lines' + + if len(self.holes) <> len(obj.holes) : + raise 'To coincide, surfaces should have the same number of internal holes' + + # Coincidence of the surface holes + hole_order = [] + nb_holes = len(self.holes) + for hole_1 in self.holes : + for i in xrange(nb_holes) : + if i in hole_order : + continue + hole_2 = obj.holes[i] + if hole_1.Geometric_coincide(hole_2) : + hole_order.append(i) + break + else : + return None + + # Coincidence of the external boundary lines + line_order = [] + nb_lines = len(self.lines) + for line_1 in self.lines : + for i in xrange(nb_lines) : + if i in line_order : + continue + line_2 = obj.lines[i] + if line_1.Geometric_coincide(line_2) : + line_order.append(i) + break + else : + return None + + return (line_order, hole_order) + + + def Deep_coincide(self,obj,info) : + + line_order = info[0] + hole_order = info[1] + + for i,j in map(None,xrange(len(line_order)),line_order) : + l1 = self.lines[i] + l2 = obj.lines[j] + l1.Coincide(l2) + + for i,j in map(None,xrange(len(hole_order)),hole_order) : + h1 = self.holes[i] + h2 = obj.holes[j] + h1.Coincide(h2) + + + + def Ruled(self) : + + self.ruled = 1 + + if len(self.lines) not in [3,4] : + raise "Ruled surfaces require 3 or 4 edges" + + if self.holes : + raise "Holes are forbidden for ruled surfaces" + + + def Translate(self,x,y,z=0) : + + l_points = [] + for surf in [self] + self.holes : + for line in surf.lines : + for point in line.points : + if point not in l_points : l_points.append(point) + + for point in l_points : + point.Translate(x,y,z) + + + def Recombine(self,val=1) : + + self.md.recombine = val + + + def Transfinite(self) : + + self.Ruled() + + if len(self.lines) == 4 : + self.Recombine() + + self.md.transfinite = 1 + + for line in self.lines : + if not line.md.transfinite : + raise "Transfinite surfaces require transfinite edges" + + if ( + self.lines[0].md.number <> self.lines[2].md.number or + self.lines[1].md.number <> self.lines[3].md.number + ) : + raise "Coupled edges should have the same number of elements" + + + + def Intermediate_meshing(self,mesh) : + + self.loops = [] + for surf in [self]+self.holes : + loop = LineLoop(surf) + self.loops.append(loop) + loop.Gmsh(mesh) + + + def Object_meshing(self,num) : + + # Creation of the surface + if self.ruled : + ch = 'Ruled Surface(' + `num` + ') = {' + else : + ch = 'Plane Surface(' + `num` + ') = {' + for loop in self.loops : + ch = ch + `loop.num` + ',' + ch = ch[:-1] + '};' + self.Gmsh_send(ch) + + # Declaration of transfinite surface + if self.md.transfinite : + ch = 'Transfinite Surface {' + `num` + '} = {' + for summit in self.Summit() : + ch = ch + `summit.num` + ',' + ch = ch[:-1] + '};' + self.Gmsh_send(ch) + + # Recombine elements if requested + if self.md.recombine : + self.Gmsh_send('Recombine Surface {' + `num` + '} ;') + + + +class LineLoop(Geometric) : # Used only during the meshing phase + + + def __init__(self,surface) : + + Geometric.__init__(self) + self.surface = surface + + + def Intermediate_meshing(self,mesh) : + + for line in self.surface.lines : + line.Gmsh(mesh) + + + def Object_meshing(self,num) : + + ch = 'Line Loop(' + `num` + ') = {' + for line,orie in map(None,self.surface.lines,self.surface.Boundary()) : + ch = ch + `orie*line.num` + ',' + ch = ch[:-1] + '};' + self.Gmsh_send(ch) + + + + +class Volume(Geometric) : + + + """ + VOLUME OBJECT (inherit from the Geometric class) + + Public methods + __init__ : + in -> surfaces : external bounday of the volume (surfaces should be connected) + + Edge : returns the list of edges + + Holes : set the internal holes (surfaces) + in -> holes : list of holes + + Transfinite : Declare the mesh to be transfinite (force the surfaces to be transfinite too) + + Translate : translate the surface + in -> x,y,z translation vector (default : z=0) + + + Attributes + surfaces : list of external boundary surfaces + holes : list of internal holes (volumes) + loops : list of boundary (external and internal) loops (computed when meshing) + + + Private methods : + + Boundary : checks that the boundary is a closed loop and returns the orientation of the edges + + """ + + + def __init__(self,*surfaces) : + + Geometric.__init__(self) + self.surfaces = list(surfaces) + self.holes = [] + self.ruled = 0 + + # Check Assumptions + for surface in surfaces : + if not surface.Is_surface() : + raise "Arguments should be surfaces : " + repr(surface) + if len(surfaces) < 2 : raise "There should be at least two surfaces" + self.Boundary() + + + def Boundary(self) : + + edges = [] + for surface in self.surfaces : + edges = edges + surface.lines + + # each edge has to appear twice in the list of edges + for edge in edges : + if edges.count(edge) <> 2 : + raise "The surface loop is not closed : each edge should appear twice" + + + def Edge(self) : + + edges = [] + for surface in self.surfaces : + for line in surface.lines : + if line not in edges : edges.append(line) + return edges + + + def Holes(self,*holes) : + + for hole in holes : + if not hole.Is_volume() : + raise "Holes should be volumes" + self.holes = list(holes) + + + def Geometric_coincide(self,obj) : + + """ + return (surface_order, hole_order) : + surface_order : list of the coupled surfaces ith surface of self with surface_order[i]th surface of obj + hole_order : same as surface_order but with the internal holes + """ + + if len(self.surfaces) <> len(obj.surfaces) : + raise 'To coincide, volumes should have the same number of border surfaces' + + if len(self.holes) <> len(obj.holes) : + raise 'To coincide, volumes should have the same number of internal holes' + + # Coincidence of the surface holes + hole_order = [] + nb_holes = len(self.holes) + for hole_1 in self.holes : + for i in xrange(nb_holes) : + if i in hole_order : + continue + hole_2 = obj.holes[i] + if hole_1.Geometric_coincide(hole_2) : + hole_order.append(i) + break + else : + return None + + # Coincidence of the external boundary lines + surface_order = [] + nb_surfaces = len(self.surfaces) + for surface_1 in self.surfaces : + for i in xrange(nb_surfaces) : + if i in surface_order : + continue + line_2 = obj.surfaces[i] + if surface_1.Geometric_coincide(surface_2) : + surface_order.append(i) + break + else : + return None + + return (surface_order, hole_order) + + + def Deep_coincide(self,obj,info) : + + surface_order = info[0] + hole_order = info[1] + + for i,j in map(None,xrange(len(surface_order)),surface_order) : + l1 = self.surfaces[i] + l2 = obj.surfaces[j] + l1.Coincide(l2) + + for i,j in map(None,xrange(len(hole_order)),hole_order) : + h1 = self.holes[i] + h2 = obj.holes[j] + h1.Coincide(h2) + + + def Transfinite(self) : + + if len(self.surfaces) == 5 : + raise "Not implemented" + + if len(self.surfaces) not in [5,6] : + raise "Transfinite volumes require 5 or 6 faces" + + if self.holes : + raise "Holes are forbidden for transfinite volumes" + + self.md.transfinite = 1 + + for surface in self.surfaces : + if not surface.md.transfinite : + surface.Transfinite() # attention : ce n'est pas vrai dans le cas des prismes + +# ATTENTION : ICI, IL FAUDRAIT VERIFIER QUE LES SURFACES PEUVENT ETRE MISES EN VIS A VIS + + + + def Translate(self,x,y,z=0) : + + l_points = [] + for volu in [self] + self.holes : + for surf in volu.surfaces : + for line in surf.lines : + for point in line.points : + if point not in l_points : l_points.append(point) + + for point in l_points : + point.Translate(x,y,z) + + + + def Intermediate_meshing(self,mesh) : + + self.loops = [] + for volume in [self]+self.holes : + loop = SurfaceLoop(volume) + self.loops.append(loop) + loop.Gmsh(mesh) + + + def Object_meshing(self,num) : + + # Creation of the volume + ch = 'Volume(' + `num` + ') = {' + for loop in self.loops : + ch = ch + `loop.num` + ',' + ch = ch[:-1] + '};' + self.Gmsh_send(ch) + + # Declaration of transfinite surface + if self.md.transfinite : + + bottom_summits = self.surfaces[0].Summit() + edges = self.Edge() + top_summits = [] + for summit in bottom_summits : + for edge in edges : + if summit == edge.points[0] and edge.points[-1] not in bottom_summits : + top_summits.append(edge.points[-1]) + break + elif summit == edge.points[-1] and edge.points[0] not in bottom_summits : + top_summits.append(edge.points[0]) + break + + ch = 'Transfinite Volume {' + `num` + '} = {' + for summit in bottom_summits + top_summits : + ch = ch + `summit.num` + ',' + ch = ch[:-1] + '};' + self.Gmsh_send(ch) + + + +class SurfaceLoop(Geometric) : # Used only during the meshing phase + + + def __init__(self,volume) : + + Geometric.__init__(self) + self.volume = volume + + + def Intermediate_meshing(self,mesh) : + + for surface in self.volume.surfaces : + surface.Gmsh(mesh) + + + def Object_meshing(self,num) : + + ch = 'Surface Loop(' + `num` + ') = {' + for surface in self.volume.surfaces : + ch = ch + `surface.num` + ',' + ch = ch[:-1] + '};' + self.Gmsh_send(ch) + + + + +# ------------------- GEOMETRICAL TRANSFORMATION -------------- + +def VectorProduct(u,v) : + + return NP.array([u[1]*v[2]-u[2]*v[1],u[2]*v[0]-u[0]*v[2],u[0]*v[1]-u[1]*v[0]]) + + +def VectorNorm(u) : + + return sqrt(dot(u,u)) + + +class Rotation : + + def __init__(self,A,C,B) : + + self.C = c + self.a = A-C + n = VectorProduct(self.a,B-C) + self.n = n / VectorNorm(n) + + + def Proj(self,M) : + + lbd = dot(M-self.C,self.n) + H = self.C + lbd*self.n + return H + + +def Scaling_P2(p,t) : return (1.-p)*t*t+p*t + +def Scaling_P3(p,t) : + q = 1./p + a = p+q-2 + b = 3-2*p-q + return a*t**3 + b*t*t +p*t + + +# -------------------- MESHING OPERATIONS --------------------- + +class Mesh_Descriptor : + + """ + Attributes + relation Another mesh descriptor provides the mesh parameters + parameters dictionnary of the mesh parameters + size Point size + transfinite Transfinite mesh (0 or 1) + number Number of elements along a line (transfinite) + progression Progression of element size (transfinite) + recombine Recombine mesh or not + + Specific access : + md.parameter_name = xxx -> the relation is destroyed (set to None) + xxx = md.parameter_name -> if there is a relation, the effective + parameter is looked for recursively + + Deep copying : a relation is set to the model instead of a true copy + """ + + List_Attr = ['size','transfinite','number','progression','recombine'] + + + def __init__(self) : + + self.relation = None + self.parameters = { + 'size' : 1. , # Point size + 'transfinite': 0 , # Transfinite mesh (0 or 1) + 'recombine' : 0 # Recombine mesh or not + } + + + def __setattr__(self, attr, value) : + + if attr in Mesh_Descriptor.List_Attr : + self.relation = None + self.parameters[attr] = value + + if attr == 'number' : + self.transfinite = 1 + + else : + self.__dict__[attr] = value + + + def __getattr__(self,attr) : + + if self.relation : + return (getattr(self.relation,attr)) + else : + if attr in self.parameters.keys() : + return self.parameters[attr] + else : + raise AttributeError + + + def __deepcopy__(self,visit) : + + md = copy.copy(self) + md.parameters = copy.copy(self.parameters) + md.relation = self + return md + + + +class Mesh : + + """ + + """ + + + def __init__(self, algo = 2, order = 1, gmsh='gmsh') : + + self.num_ph = 0 + self.num = 0 + self.order = order + self.command = ['Mesh.Algorithm = ' + repr(algo) + ' ;'] + self.command += ['Mesh.ElementOrder = ' + repr(order) + ' ;'] + self.physicals = {} + self.gmsh = gmsh + + + def Physical(self, name, *l_lobj) : + + # Checking the name + if type(name) <> type(' ') : + raise 'First argument should be the name of the physical' + if name in self.physicals.keys() : + raise 'Physical '+name+' already exists' + + # treating the case of list of lists parameters + l_obj = [] + for l in l_lobj : + if type(l) == type([]) : + l_obj = l_obj + l + else : + l_obj.append(l) + + # Checking all objects are geometric + for obj in l_obj : + if not Is_Geometric(obj) : + raise "Non geometrical object : " + repr(obj) + " Physical = " + name + + cl = l_obj[0].Base_class() + # Checking all objects are of the same dimension + # ref_dim = l_obj[0] + # for obj in l_obj[1:] : + # if not ref_dim.Is_same_dimension(obj) : + # raise "All objects are not of the same dimension : " + repr(obj) + + # Creation of the objects if necessary + for obj in l_obj : + obj.Gmsh(self) + + # Creation of the physical + self.num_ph= self.num_ph + 1 + ch = name + '=' + `self.num_ph` + ';' + self.command.append(ch) + ch = 'Physical ' + cl + '(' + name + ') = {' + for obj in l_obj : + ch = ch + `obj.num` + ',' + ch = ch[:-1] + '};' + self.command.append(ch) + + # Name of the physical + name_gmsh = 'GM'+`self.num_ph` + self.physicals[name] = name_gmsh + + + def Save(self, file = 'fort.geo') : + + if os.path.isfile(file) : + os.remove(file) + + f = open(file,'w') + f.write(string.joinfields(self.command,'\n')) + f.close() + + + def View(self) : + + self.Save('fort.geo') +# os.system('gmsh fort.geo') + os.system(self.gmsh + ' fort.geo') + os.remove('fort.geo') + + + def Create(self, file = 'fort.19') : + + self.Save() + os.system(self.gmsh + ' -3 fort.geo') + try: os.remove(file) + except: pass + os.rename('fort.msh',file) + + + def Name(self, MA, CREA_GROUP_NO) : + + l_gma = [] + l_mcf = [] + for gma in self.physicals.keys() : + l_gma.append(self.physicals[gma]) + l_mcf.append(_F(GROUP_MA = self.physicals[gma],NOM=gma)) + + DEFI_GROUP(reuse = MA, + MAILLAGE = MA, + CREA_GROUP_MA = tuple(l_mcf), + ) + + SMESH_02 = CREA_MAILLAGE( + MAILLAGE = MA, + DETR_GROUP_MA = _F(GROUP_MA = tuple(l_gma)), + ) + + DETRUIRE(CONCEPT = _F(NOM = MA), INFO=1) + + if CREA_GROUP_NO == 'OUI' : + DEFI_GROUP(reuse = SMESH_02, + MAILLAGE = SMESH_02, + CREA_GROUP_NO = _F(TOUT_GROUP_MA = 'OUI'), + ) + + else : +# Traitement des GROUP_NO qui sont des points + info_gno = SMESH_02.LIST_GROUP_NO() + l_gno = [] + for gno in info_gno : + if gno[1] == 1 : l_gno.append(gno[0]) + + l_gma = [] + for gma in self.physicals.keys() : + nom_gmsh = self.physicals[gma] + if nom_gmsh in l_gno : + l_gma.append(gma) + + if l_gma : + DEFI_GROUP(reuse = SMESH_02, + MAILLAGE = SMESH_02, + CREA_GROUP_NO = _F(GROUP_MA = tuple(l_gma)), + ) + + return SMESH_02 + + + + def LIRE_GMSH(self, + UNITE_GMSH = 19, + UNITE_MAILLAGE = 20, + MODI_QUAD = 'NON', + CREA_GROUP_NO = 'OUI' + ) : + + """ + Lecture du maillage (format Aster) a partir de sa definition + (format sup_gmsh) + UNITE_GMSH = Numero d'unite logique pour le fichier msh + UNITE_MAILLAGE = Numero d'unite logique pour le fichier mail + MODI_QUAD = 'OUI' si line->quad, 'NON' sinon + CREA_GROUP_NO = 'OUI' si on cree les group_no, 'NON' sinon + """ + + nom_gmsh = 'fort.' + repr(UNITE_GMSH) + self.Create(nom_gmsh) + + PRE_GMSH(UNITE_GMSH=UNITE_GMSH, UNITE_MAILLAGE=UNITE_MAILLAGE) + + SMESH_00 = LIRE_MAILLAGE(UNITE = UNITE_MAILLAGE) + DEFI_FICHIER(ACTION='LIBERER',UNITE = UNITE_GMSH) + DEFI_FICHIER(ACTION='LIBERER',UNITE = UNITE_MAILLAGE) + + if MODI_QUAD == 'OUI' and self.order == 2 : + raise 'The finite elements are already of second order' + + if MODI_QUAD == 'OUI' and self.order <> 2 : + SMESH_01 = CREA_MAILLAGE( + MAILLAGE = SMESH_00, + LINE_QUAD = _F(TOUT = 'OUI') + ) + DETRUIRE(CONCEPT=_F(NOM=SMESH_00), INFO=1) + SMESH_00 = SMESH_01 + + SMESH_00 = self.Name(SMESH_00,CREA_GROUP_NO) + + return SMESH_00 diff --git a/Aster/Cata/cataSTA10/Utilitai/transpose.py b/Aster/Cata/cataSTA10/Utilitai/transpose.py new file mode 100644 index 00000000..0a8698d0 --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/transpose.py @@ -0,0 +1,41 @@ +#@ MODIF transpose Utilitai DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== + + +# Il NE faudrait utiliser cette fonction QUE sur des tableaux hétérogènes. +# Pour les tableaux homogènes (int, float, string), utiliser numpy.transpose. + +def transpose(liste): + """Transposition de double liste + """ + import numpy + if isinstance(liste, numpy.ndarray): + from warnings import warn + warn('prefer use of numpy.transpose instead', DeprecationWarning, stacklevel=2) + + n = range(len(liste[0])) + m = range(len(liste)) + liste_t = [[] for i in n] + for i in n : + for j in m : + liste_t[i].append(liste[j][i]) + return liste_t + + diff --git a/Aster/Cata/cataSTA10/Utilitai/utils.py b/Aster/Cata/cataSTA10/Utilitai/utils.py new file mode 100644 index 00000000..36f48d73 --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/utils.py @@ -0,0 +1,105 @@ +#@ MODIF utils Utilitai DATE 26/05/2010 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== + + +""" +Module fournissant quelques fonctions utilitaires. +""" + +import os +import time + + +def miss_dble(list1, list2): + """miss = elements de list1 absents de list2 + dble = elements de list2 presents dans list1, fournis plusieurs fois.""" + s_ini = set(list1) + inter = s_ini.intersection(list2) + miss = s_ini.copy() + dble = set() + for p in list2: + try: + miss.remove(p) + except KeyError: + if set(p).issubset(s_ini) and p.strip() != '': + dble.add(p) + return miss, inter, dble + + +#TODO faire à l'identique pour les commandes fortran (ou appeller cette fonction) +def get_titre_concept(co=None): + """Retourne un titre automatique.""" + # ASTER 10.01.25 CONCEPT tab0 CALCULE LE 21/05/2010 A 17:58:50 DE TYPE TABLE_SDASTER + import aster + from Noyau.N_ASSD import ASSD + if not isinstance(co, ASSD): + co = None + fmt = { + "version" : "ASTER %(version)s", + "nomco" : "CONCEPT %(nom_concept)s", + "etatco" : "CALCULE", + "dateheure" : "%(dateheure)s", + "typeco" : "DE TYPE %(type_concept)s", + } + format = [fmt["version"],] + df = { + "version" : aster.__version__, + "dateheure" : time.strftime("LE %m/%d/%Y A %H:%M:%S"), + } + if co: + df["nom_concept"] = co.nom + format.append(fmt["nomco"]) + format.append(fmt["etatco"]) + format.append(fmt["dateheure"]) + if co: + df["type_concept"] = co.__class__.__name__.upper() + format.append(fmt["typeco"]) + globfmt = " ".join(format) + titre = globfmt % df + lt = titre.split() + lt = maximize_lines(lt, 80, " ") + return os.linesep.join(lt) + + +# existe dans asrun.mystring +def maximize_lines(l_fields, maxlen, sep): + """Construit des lignes dont la longueur est au plus de `maxlen` caractères. + Les champs sont assemblés avec le séparateur `sep`. + """ + newlines = [] + # ceinture + assert max([len(f) for f in l_fields]) <= maxlen, 'lignes trop longues : %s' % l_fields + while len(l_fields) > 0: + cur = [] + while len(l_fields) > 0 and len(sep.join(cur + [l_fields[0],])) <= maxlen: + cur.append(l_fields.pop(0)) + # bretelle + assert len(cur) > 0, l_fields + newlines.append(sep.join(cur)) + newlines = [l for l in newlines if l != ''] + return newlines + + + +if __name__ == '__main__': + npar = ('X', 'Y',) + nuti = ('DX', 'DY', 'X', 'X') + print miss_dble(npar, nuti) + diff --git a/Aster/Cata/cataSTA10/Utilitai/veri_matr_tang.py b/Aster/Cata/cataSTA10/Utilitai/veri_matr_tang.py new file mode 100644 index 00000000..9ceb0663 --- /dev/null +++ b/Aster/Cata/cataSTA10/Utilitai/veri_matr_tang.py @@ -0,0 +1,269 @@ +#@ MODIF veri_matr_tang Utilitai DATE 10/01/2011 AUTEUR PROIX J-M.PROIX +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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 Cata.cata import * + +# MACRO "VERI_MATR_TANG" +# ---------------------------- +import cPickle +import string + +import numpy as NP +from numpy import linalg as LA + +import aster + +class TANGENT : + + """ + VERIFICATION SUR LES MATRICES TANGENTES + + Attributs publics : + + mat : matrice tangente + ddl : nom des degres de liberte + nddl : nombre de ddl + norme : norme de la matrice tangente + prec_zero : en-dessous de prec_zero, on ne compare pas les matrices + + + Methodes publiques + + Save : sauvegarde la matrice dans un fichier + Load : lit la matrice depuis un fichier + Aster : lit la matrice depuis l'espace Aster + Matrice : range la matrice + Difference : comparaison entre la matrice tangente et une autre matrice + Symetrie : verification du caractere symetrique de la matrice tangente + + """ + + + def __init__(self,ddl='',prec_zero=1.E-12) : + + """ + ddl : chaine de caracteres designant les ddl (ex: 'UUP') + prec_zero : en-dessous de prec_zero, on ne compare pas les matrices + """ + + self.ddl = ddl + self.prec_zero = prec_zero + + + def Load(self,nom_fichier) : + + fichier = file(nom_fichier,'r') + self.__dict__ = cPickle.load(fichier) + + + def Save(self,nom_fichier) : + + fichier = file(nom_fichier,'w') + cPickle.dump(self.__dict__,fichier) + + + def Aster(self,suffixe = 'MATA') : + + """ + nom : suffixe de l'objet jeveux + """ + + nom_obj_jeveux = string.ljust('PYTHON.TANGENT.'+suffixe,24) + obj_jeveux = aster.getvectjev(nom_obj_jeveux) + if not obj_jeveux : + raise 'TANGENT : OBJET JEVEUX DE SUFFIXE '+suffixe+' INEXISTANT' + self.Matrice(obj_jeveux) + + + def Eigen(self) : + self.vp = NP.sort(LA.eigvals(self.mat)) + + + def Matrice(self,matrice) : + + """ + matrice : la matrice tangente (rangement carre) + """ + + if type(matrice) == type((1,)) : + matrice = NP.array(list(matrice)) + elif type(matrice) == type([]) : + matrice = NP.array(matrice) + matrice = matrice.astype(float) + + nddl = int(len(matrice)**0.5+0.5) + matrice.shape = (nddl,nddl) + + self.mat = matrice + self.nddl = nddl + + if not self.ddl : + self.ddl = 'D'*nddl + elif len(self.ddl) <> nddl : + raise 'Nommage des DDL incoherents avec la taille de la matrice' + + self.norme = NP.trace(NP.dot(NP.transpose(self.mat),self.mat)) + + + def Difference(self,matp,affi_ok=0,prec_diff = 1.E-4) : + + """ + COMPARAISON RELATIVE DE LA MATRICE TANGENTE AVEC UNE AUTRE MATRICE + + matp : matrice avec laquelle self.mat est comparee + affi_ok : si oui, on affiche egalement les valeurs qui collent bien + prec_diff : ecart au-dessus duquel on considere que ce n'est pas OK + """ + + if type(matp) is tuple : + matp = NP.array(list(matp)) + elif type(matp) is list : + matp = NP.array(matp) + elif type(matp) == type(self) : + matp = matp.mat + elif type(matp) is NP.ndarray: + pass + else : + raise '1er argument doit etre une matrice (tuple,liste,TANGENT ou tableau numpy)' + matp = NP.ravel(matp) + matp = matp.astype(float) + + if len(matp) <> self.nddl*self.nddl : + raise 'Matrices de tailles differentes' + matp.shape = (self.nddl,self.nddl) + + refe = NP.abs(self.mat) + NP.abs(matp) + diff = NP.where(refe > self.prec_zero,NP.abs(self.mat-matp)/(refe+self.prec_zero),0) + nook = (diff.ravel() > prec_diff).nonzero()[0] + ok = (diff.ravel() <= prec_diff).nonzero()[0] + + if affi_ok : + affi = [ok,nook] + else : + affi = [nook] + + liste_i=[] + liste_j=[] + liste_matt=[] + liste_matp=[] + liste_diff=[] + for ind in affi : +# print '-'*80 + for pos in ind : + i = pos / self.nddl + j = pos % self.nddl +# print self.ddl[i],self.ddl[j],' ',(i+1,j+1),' ',self.mat[i,j],' ',matp[i,j] + liste_i.append(i+1) + liste_j.append(j+1) + liste_matt.append(self.mat[i,j]) + liste_matp.append(matp[i,j]) + liste_diff.append( NP.abs(self.mat[i,j]-matp[i,j])/ ( NP.abs(self.mat[i,j]) + NP.abs(matp[i,j]) + self.prec_zero)) +# print '-'*80 + if self.norme > self.prec_zero : + ecart = (self.mat - matp)/2. + nor_ecart = NP.trace(NP.dot(NP.transpose(ecart),ecart)) + nor_diff= nor_ecart / self.norme + else : + nor_diff= 0. + max_diff=0. + if (len(liste_diff) > 0 ) : max_diff = NP.max(liste_diff) + return liste_i,liste_j,liste_matt,liste_matp, liste_diff,nor_diff,max_diff + + + def Symetrie(self,prec_diff = 1.E-4) : + + """ + VERIFICATION QUE LA MATRICE TANGENTE EST SYMETRIQUE + + On retourne la norme relative de l'ecart a la symetrie : || (A-At)/2|| / ||A|| + On affiche les termes qui s'ecartent de la symetrie + + prec_diff : ecart au-dessus duquel on considere que ce n'est pas OK + """ + + tran = NP.transpose(self.mat) + liste_i,liste_j,liste_matt,liste_matp,liste_diff,nor_diff,max_diff=self.Difference(tran,affi_ok=0,prec_diff=prec_diff) + + +# if self.norme > self.prec_zero : +# ecart = (self.mat - tran)/2. +# nor_ecart = NP.trace(NP.dot(NP.transpose(ecart),ecart)) +# return nor_ecart / self.norme +# else : +# return 0. + return liste_i,liste_j,liste_matt,liste_matp, liste_diff,nor_diff,max_diff + + def Sauve(self,nom_fichier) : + cPickler.dump(self.__dict__) + +def veri_matr_tang_ops(self,SYMETRIE,DIFFERENCE,PRECISION,**args): + + """ + Ecriture de la macro verif_matrice_tangente_ops + """ + import os + from Accas import _F + from Utilitai.Utmess import UTMESS + from Utilitai.UniteAster import UniteAster + + # On importe les definitions des commandes a utiliser dans la macro + CREA_TABLE = self.get_cmd('CREA_TABLE') + + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + # Le concept sortant (de type fonction) est nomme ROTGD dans + # le contexte de la macro + + self.DeclareOut('TAB_MAT',self.sd) + ier=0 + # La macro compte pour 1 dans la numerotation des commandes + self.set_icmd(1) + tgt=TANGENT() + tgt.Aster(suffixe='MATA') + matp=TANGENT() + matp.Aster(suffixe='MATC') + prec_diff = PRECISION + if (SYMETRIE=='OUI') : + list1_i,list1_j,list1_matt,list1_matp,list1_diff,symetgt,max_diff=tgt.Symetrie(prec_diff) + list2_i,list2_j,list2_matt,list2_matp,list2_diff,symeper,max_diff=matp.Symetrie(prec_diff) + print 'Symetrie de la matrice tangente',symetgt + print 'Symetrie de la matrice pr pertubation',symeper + #aster.affiche('MESSAGE',str(tgt.Difference(matp,prec_diff) )) + if (DIFFERENCE=='OUI'): + liste_i,liste_j,liste_matt,liste_matp,liste_diff,nor_diff,max_diff=tgt.Difference(matp,prec_diff) + print 'difference entre matrice tangente et matrice par pertubation : norme=',nor_diff,' max=',max_diff + TAB_MAT=CREA_TABLE(LISTE=( + _F(PARA ='I',LISTE_I = liste_i), + _F(PARA ='J',LISTE_I = liste_j), + _F(PARA ='MAT_TGTE',LISTE_R = liste_matt), + _F(PARA ='MAT_PERT',LISTE_R = liste_matp), + _F(PARA ='MAT_DIFF',LISTE_R = liste_diff), + )) + return + + +VERI_MATR_TANG=MACRO(nom="VERI_MATR_TANG",op=veri_matr_tang_ops,sd_prod=table_sdaster, + docu="",reentrant='n', +fr="verification de la matrice tangente : symetrie et difference par rapport a la matrice calculee par perturbation", + regles=(AU_MOINS_UN('SYMETRIE','DIFFERENCE')), + SYMETRIE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + DIFFERENCE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PRECISION =SIMP(statut='f',typ='R',defaut=1.E-4 ), +) ; + diff --git a/Aster/Cata/cataSTA10/cata.py b/Aster/Cata/cataSTA10/cata.py index ea93f30d..fc785b52 100755 --- a/Aster/Cata/cataSTA10/cata.py +++ b/Aster/Cata/cataSTA10/cata.py @@ -1,8 +1,8 @@ -#& MODIF ENTETE DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#& MODIF ENTETE DATE 08/03/2011 AUTEUR MASSIN P.MASSIN # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -135,6 +135,7 @@ from SD.co_listr8 import listr8_sdaster # maillage : from SD.co_maillage import maillage_sdaster from SD.co_squelette import squelette +from SD.co_grille import grille_sdaster # ----------------------------------------------------------------------------- # champs @@ -218,10 +219,165 @@ from SD.co_vect_elem import vect_elem, \ vect_elem_pres_r, vect_elem_pres_c, \ vect_elem_temp_r -#& MODIF COMMUN DATE 20/04/2010 AUTEUR JAUBERT A.JAUBERT + +# ----------------------------------------------------------------------------- +# corresp_2_mailla : +from SD.co_corresp_2_mailla import corresp_2_mailla + +#& MODIF COMMUN DATE 21/12/2010 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG +# 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS + +def C_AFFICHAGE() : return FACT(statut='f',max=1, + INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + UNITE = SIMP(statut='f',typ='I',val_min=1), + ); +#& MODIF COMMUN DATE 21/02/2011 AUTEUR ABBAS M.ABBAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS +def C_ARCHIVAGE() : return FACT(statut='d',max=1, + regles = (EXCLUS('PAS_ARCH','LIST_INST','INST'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_ARCH = SIMP(statut='f',typ='I' ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + DETR_NUME_SUIV = SIMP(statut='f',typ='TXM',into=("OUI",)), + CHAM_EXCLU = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',), +); +#& MODIF COMMUN DATE 07/12/2010 AUTEUR GENIAUT S.GENIAUT +# 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT +def C_COMP_ELAS( COMMAND ) : #COMMUN# + + assert COMMAND in ('MACR_ASCOUF_CALC','MACR_ASPIC_CALC','CALC_G','POST_GP', + 'CALC_POINT_MAT','SIMU_POINT_MAT', 'DYNA_NON_LINE','STAT_NON_LINE','CALCUL',) + + kwargs = {} + +# ---------------------------------------------------------------------------------------------------------------------------------- +# RELATION +# ---------------------------------------------------------------------------------------------------------------------------------- + # commandes pour lesquelles on ne peut pas choisir une relation de type 1d + if COMMAND in ('CALC_G','POST_GP','CALC_POINT_MAT','SIMU_POINT_MAT' ): + kwargs['RELATION'] = SIMP(statut='o',typ='TXM',defaut="ELAS", + into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS","ELAS_HYPER")) + + # commandes pour lesquelles tout type de relation est possible + elif COMMAND in ('DYNA_NON_LINE','STAT_NON_LINE','CALCUL',): + kwargs['RELATION'] = SIMP(statut='o',typ='TXM',defaut="ELAS", + into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC", + "ELAS_VMIS_PUIS","ELAS_HYPER","ELAS_POUTRE_GR","CABLE")) + + # cas particulier de MACR_ASCOUF/ASPIC_CALC : on limite volontairement le choix pour ne pas perturber l'utilisateur + # mais theoriquement, toutes les lois disponibles pour CALC_G le sont aussi pour MACR_ASCOUF/ASPIC_CALC + elif COMMAND in ('MACR_ASCOUF_CALC','MACR_ASPIC_CALC'): + kwargs['RELATION'] = SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC")) + + +# ---------------------------------------------------------------------------------------------------------------------------------- +# DEFORMATION +# ---------------------------------------------------------------------------------------------------------------------------------- + + # commandes pour lesquelles on ne peut pas choisir les grandes deformations + if COMMAND in ('CALC_POINT_MAT','MACR_ASCOUF_CALC','MACR_ASPIC_CALC'): + kwargs['DEFORMATION'] =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT",)) + + # commandes pour lesquelles on peut choisir tout type de deformation + elif COMMAND in ('DYNA_NON_LINE','STAT_NON_LINE','CALCUL','POST_GP','CALC_G','SIMU_POINT_MAT', ): + kwargs['DEFORMATION'] =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",)) + +# ---------------------------------------------------------------------------------------------------------------------------------- +# INTEGRATION (RESI_INTE_RELA, ITER_INTE_MAXI, ALGO_INTE) +# ---------------------------------------------------------------------------------------------------------------------------------- + + kwargs['RESI_INTE_RELA'] =SIMP(statut='f',typ='R',defaut= 1.0E-6) + kwargs['ITER_INTE_MAXI'] =SIMP(statut='f',typ='I',defaut= 10 ) + kwargs['ALGO_INTE'] =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE",)) + +# ---------------------------------------------------------------------------------------------------------------------------------- +# LOCALISATION +# ---------------------------------------------------------------------------------------------------------------------------------- + + # commandes pour lesquelles la localisation n'a pas de sens + # 'CALC_POINT_MAT','SIMU_POINT_MAT' + + # commandes pour lesquelles la localisation est automatique + # 'MACR_ASCOUF_CALC','MACR_ASPIC_CALC' + + # commandes pour lesquelles on peut choisir la localisation + if COMMAND in ('DYNA_NON_LINE','STAT_NON_LINE','CALC_G','POST_GP','CALCUL'): + kwargs['regles'] = (PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),) + kwargs['TOUT'] =SIMP(statut='f',typ='TXM',into=("OUI",) ) + kwargs['GROUP_MA'] =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**') + kwargs['MAILLE'] =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**') + +# ---------------------------------------------------------------------------------------------------------------------------------- +# DIVERS +# ---------------------------------------------------------------------------------------------------------------------------------- + + if COMMAND == 'CALC_G': + kwargs['CALCUL_CONTRAINTE'] =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ) + + + mcfact = FACT(statut='f',max='**', **kwargs) + + return mcfact +#& MODIF COMMUN DATE 08/02/2011 AUTEUR PROIX J-M.PROIX +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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 @@ -249,6 +405,14 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# fr="Comportement de la bibliotheque Zmat", NB_VARI =SIMP(statut='o',typ='I',max=1), UNITE =SIMP(statut='o',typ='I',max=1),), + b_umat = BLOC(condition = "RELATION == 'UMAT' ", + fr="Comportement utilisateur de type UMAT", + NB_VARI =SIMP(statut='o',typ='I',max=1,fr="Nombre de variables internes"), + LIBRAIRIE = SIMP(statut='o', typ='TXM',validators=LongStr(1,128), + fr="Chemin vers la bibliothèque dynamique définissant le comportement UMAT"), + NOM_ROUTINE = SIMP(statut='o', typ='TXM', + fr="Nom de la routine UMAT dans la bibliothèque"), + ), # KITs b_kit_ddi = BLOC(condition = "RELATION == 'KIT_DDI' ", @@ -270,7 +434,8 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# "MAZARS" ),), ), - b_kit_thm = BLOC(condition = "RELATION in ['KIT_HHM','KIT_HH','KIT_HM','KIT_THHM','KIT_THH','KIT_THM','KIT_THV']", + b_kit_thm = BLOC(condition = "RELATION in ['KIT_HHM','KIT_HH','KIT_H','KIT_HM','KIT_THHM', \ + 'KIT_THH','KIT_THM','KIT_THV']", fr="lois de comportements thermo-hydro-mecaniques", RELATION_KIT =SIMP(statut='o',typ='TXM',max=9,validators=NoRepeat(), into=( @@ -291,6 +456,8 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# "MAZARS", "ENDO_ISOT_BETON", "JOINT_BANDIS", + "CZM_LIN_REG", + "CZM_EXP_REG", # THMC "GAZ", "LIQU_SATU", @@ -317,7 +484,7 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# ), DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT", - into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GREEN_REAC")), + into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GREEN_REAC","GDEF_LOG")), ALGO_C_PLAN =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)), RESI_DEBO_MAXI =SIMP(statut='f',typ='R',fr="Critère d'arret absolu pour assurer la condition de contraintes planes",), @@ -329,15 +496,17 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# ALGO_1D =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)), ITER_MAXI_DEBORST =SIMP(statut='f',typ='I',defaut= 1), RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), + ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 20 ), b_redec_local = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')", fr="Nombre de redécoupages internes du pas de temps", ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), ), - RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE", - into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE","IMPLICITE_RELI")), + ALGO_INTE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT", + "NEWTON", "NEWTON_RELI", "NEWTON_PERT", "RUNGE_KUTTA", + "SPECIFIQUE", "SANS_OBJET")), + TYPE_MATR_TANG =SIMP(statut='f',typ='TXM',into=("PERTURBATION","VERIFICATION","TANGENTE_SECANTE")), b_perturb =BLOC(condition = " (TYPE_MATR_TANG != None) and (TYPE_MATR_TANG != 'TANGENTE_SECANTE') ", @@ -352,7 +521,7 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# TAUX_RETOUR =SIMP(statut='f',typ='R',defaut= 0.05 ), ), - PARM_THETA =SIMP(statut='f',typ='R',defaut= 1. ), + PARM_THETA =SIMP(statut='f',typ='R',val_min=0.,val_max=1., defaut= 1.), PARM_ALPHA =SIMP(statut='f',typ='R',defaut= 1. ), regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), @@ -361,7 +530,7 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), ) ; -#& MODIF COMMUN DATE 12/04/2010 AUTEUR MICHEL S.MICHEL +#& MODIF COMMUN DATE 06/12/2010 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG @@ -379,7 +548,7 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -# RESPONSABLE REZETTE C.REZETTE +# RESPONSABLE ABBAS M.ABBAS def C_CONVERGENCE() : return FACT(statut='d', regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA','RESI_COMP_RELA'),), b_refe_rela =BLOC(condition = "RESI_REFE_RELA != None", @@ -436,7 +605,7 @@ def C_IMPL_EX() : return FACT(statut='d', REAC_INCR =SIMP(statut='f',typ='I',defaut= 1), PREDICTION =SIMP(statut='f',typ='TXM',defaut="TANGENTE"), ); -#& MODIF COMMUN DATE 20/07/2009 AUTEUR GENIAUT S.GENIAUT +#& MODIF COMMUN DATE 06/12/2010 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG @@ -454,7 +623,7 @@ def C_IMPL_EX() : return FACT(statut='d', # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -# RESPONSABLE REZETTE C.REZETTE +# RESPONSABLE ABBAS M.ABBAS def C_INCREMENT() : return FACT(statut='o', regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), EXCLUS('NUME_INST_FIN','INST_FIN'),), @@ -468,7 +637,7 @@ def C_INCREMENT() : return FACT(statut='o', ang="Time adaptation for unstationary HM models"), PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), ); -#& MODIF COMMUN DATE 07/07/2009 AUTEUR REZETTE C.REZETTE +#& MODIF COMMUN DATE 06/12/2010 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG @@ -486,7 +655,7 @@ def C_INCREMENT() : return FACT(statut='o', # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -# RESPONSABLE REZETTE C.REZETTE +# RESPONSABLE ABBAS M.ABBAS def C_NEWTON() : return FACT(statut='d', REAC_INCR =SIMP(statut='f',typ='I',defaut= 1,val_min=0), PREDICTION =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ), @@ -496,222 +665,230 @@ def C_NEWTON() : return FACT(statut='d', REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0,val_min=0), EVOL_NOLI =SIMP(statut='f',typ=evol_noli), ); -#& MODIF COMMUN DATE 27/04/2010 AUTEUR DESROCHES X.DESROCHES +#& MODIF COMMUN DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2003 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== # RESPONSABLE VABHHTS J.PELLET # ce fichier contient la liste des "into" possibles pour le mot cle NOM_CHAM # c'est a dire les noms de champs des SD RESULTAT (DATA de la routine RSCRSD) -def C_NOM_CHAM_INTO() : return ("ACCE", #COMMUN# + +def C_NOM_CHAM_INTO( typ_cham=None ) : #COMMUN# + import types +# Liste de tout les champs + l_tout_cham = [ + "ACCE", "ACCE_ABSOLU", "ALPH0_ELGA_EPSP", "ALPHP_ELGA_ALPH0", "COMPORTEMENT", "COMPORTHER", - "CRIT_ELNO_RUPT", - "DCHA_ELGA_SIGM", - "DCHA_ELNO_SIGM", - "DCHA_NOEU_SIGM", - "DEDE_ELNO_DLDE", - "DEDE_NOEU_DLDE", - "DEGE_ELNO_DEPL", - "DEGE_NOEU_DEPL", + "CRIT_ELNO", + "DEDE_ELNO", + "DEDE_NOEU", + "DEGE_ELNO", + "DEGE_NOEU", "DEPL", "DEPL_ABSOLU", - "DESI_ELNO_DLSI", - "DESI_NOEU_DLSI", - "DETE_ELNO_DLTE", - "DETE_NOEU_DLTE", + "DERA_ELGA", + "DERA_ELNO", + "DERA_NOEU", + "DESI_ELNO", + "DESI_NOEU", + "DETE_ELNO", + "DETE_NOEU", "DISS_ELGA", - "DISS_ELNO_ELGA", - "DURT_ELGA_META", - "DURT_ELNO_META", - "DURT_NOEU_META", - "ECIN_ELEM_DEPL", - "EFGE_ELNO_CART", - "EFGE_ELNO_DEPL", - "EFGE_NOEU_CART", - "EFGE_NOEU_DEPL", + "DISS_ELNO", + "DISS_NOEU", + "DURT_ELNO", + "DURT_NOEU", + "ECIN_ELEM", + "EFCA_ELNO", + "EFCA_NOEU", + "EFGE_ELNO", + "EFGE_NOEU", "ENDO_ELGA", - "ENDO_ELNO_ELGA", - "ENDO_ELNO_SIGA", - "ENDO_ELNO_SINO", - "ENDO_NOEU_SINO", + "ENDO_ELNO", + "ENDO_NOEU", "ENEL_ELGA", - "ENEL_ELNO_ELGA", - "ENEL_NOEU_ELGA", - "EPEQ_ELNO_TUYO", - "EPVC_ELGA", - "EPVC_ELNO", + "ENEL_ELNO", + "ENEL_NOEU", + "EPEQ_ELGA", + "EPEQ_ELNO", + "EPEQ_NOEU", "EPFD_ELGA", "EPFD_ELNO", + "EPFD_NOEU", "EPFP_ELGA", "EPFP_ELNO", - "EPME_ELGA_DEPL", - "EPME_ELNO_DEPL", - "EPMG_ELGA_DEPL", - "EPMG_ELNO_DEPL", - "EPMG_NOEU_DEPL", - "EPOT_ELEM_DEPL", + "EPFP_NOEU", + "EPME_ELGA", + "EPME_ELNO", + "EPMG_ELGA", + "EPMG_ELNO", + "EPMG_NOEU", + "EPMQ_ELGA", + "EPMQ_ELNO", + "EPMQ_NOEU", + "EPOT_ELEM", "EPSA_ELNO", "EPSA_NOEU", - "EPSG_ELGA_DEPL", - "EPSG_ELNO_DEPL", - "EPSG_NOEU_DEPL", - "EPSI_ELGA_DEPL", - "EPSI_ELNO_DEPL", - "EPSI_ELNO_TUYO", - "EPSI_NOEU_DEPL", + "EPSG_ELGA", + "EPSG_ELNO", + "EPSG_NOEU", + "EPSI_ELGA", + "EPSI_ELNO", + "EPSI_NOEU", "EPSP_ELGA", "EPSP_ELNO", "EPSP_NOEU", - "EQUI_ELGA_EPME", - "EQUI_ELGA_EPSI", - "EQUI_ELGA_SIGM", - "EQUI_ELNO_EPME", - "EQUI_ELNO_EPSI", - "EQUI_ELNO_SIGM", - "EQUI_NOEU_EPME", - "EQUI_NOEU_EPSI", - "EQUI_NOEU_SIGM", - "ERRE_ELEM_SIGM", - "ERRE_ELEM_TEMP", - "ERRE_ELNO_ELEM", - "ERRE_NOEU_ELEM", - "ERZ1_ELEM_SIGM", - "ERZ2_ELEM_SIGM", - "QIRE_ELEM_SIGM", - "QIRE_ELNO_ELEM", - "QIRE_NOEU_ELEM", - "QIZ1_ELEM_SIGM", - "QIZ2_ELEM_SIGM", - "SING_ELEM", - "SING_ELNO_ELEM", + "EPTQ_ELNO", + "EPTU_ELNO", + "EPVC_ELGA", + "EPVC_ELNO", + "EPVC_NOEU", + "ERME_ELEM", + "ERME_ELNO", + "ERME_NOEU", + "ERTH_ELEM", + "ERTH_ELNO", + "ERTH_NOEU", + "ERZ1_ELEM", + "ERZ2_ELEM", "ETOT_ELEM", "ETOT_ELGA", - "ETOT_ELNO_ELGA", - "EXTR_ELGA_VARI", - "EXTR_ELNO_VARI", - "EXTR_NOEU_VARI", + "ETOT_ELNO", + "FERRAILLAGE", "FLHN_ELGA", - "FLUX_ELGA_TEMP", - "FLUX_ELNO_TEMP", - "FLUX_NOEU_TEMP", + "FLUX_ELGA", + "FLUX_ELNO", + "FLUX_NOEU", "FORC_NODA", "FSUR_2D", "FSUR_3D", "FVOL_2D", "FVOL_3D", "GRAD_NOEU_THETA", - "HYDR_ELNO_ELGA", - "HYDR_NOEU_ELGA", - "INDI_LOCA_ELGA", - "INTE_ELNO_ACTI", - "INTE_ELNO_REAC", - "INTE_NOEU_ACTI", - "INTE_NOEU_REAC", + "HYDR_ELNO", + "HYDR_NOEU", + "INDL_ELGA", + "INTE_ELNO", + "INTE_NOEU", "IRRA", "LANL_ELGA", "META_ELGA_TEMP", - "META_ELNO_TEMP", - "META_NOEU_TEMP", + "META_ELNO", + "META_NOEU", "MODE_FLAMB", - "PMPB_ELGA_SIEF", - "PMPB_ELNO_SIEF", - "PMPB_NOEU_SIEF", + "PMPB_ELGA", + "PMPB_ELNO", + "PMPB_NOEU", + "PRAC_ELNO", + "PRAC_NOEU", "PRES", - "PRES_DBEL_DEPL", - "PRES_ELNO_DBEL", - "PRES_ELNO_IMAG", - "PRES_ELNO_REEL", - "PRES_NOEU_DBEL", - "PRES_NOEU_IMAG", - "PRES_NOEU_REEL", - "PROJ_ELEM_SIGN", - "PROJ_ELEM_SIGT", - "PROJ_ELEM_SIT1", - "PROJ_ELEM_SIT2", - "RADI_ELGA_SIGM", - "RADI_ELNO_SIGM", - "RADI_NOEU_SIGM", + "PRME_ELNO", + "QIRE_ELEM", + "QIRE_ELNO", + "QIRE_NOEU", + "QIZ1_ELEM", + "QIZ2_ELEM", "REAC_NODA", + "SICA_ELNO", + "SICA_NOEU", + "SICO_ELNO", + "SICO_NOEU", "SIEF_ELGA", - "SIEF_ELGA_DEPL", "SIEF_ELNO", - "SIEF_ELNO_ELGA", "SIEF_NOEU", - "SIEF_NOEU_ELGA", "SIEF_SENO_SEGA", - "SIEQ_ELNO_TUYO", - "SIGM_ELNO_CART", - "SIGM_ELNO_COQU", - "SIGM_ELNO_DEPL", - "SIGM_ELNO_SIEF", - "SIGM_ELNO_TUYO", - "SIGM_NOEU_CART", - "SIGM_NOEU_COQU", - "SIGM_NOEU_DEPL", - "SIGM_NOEU_SIEF", - "SIGM_NOZ1_ELGA", - "SIGM_NOZ2_ELGA", - "SIPO_ELNO_DEPL", - "SIPO_ELNO_SIEF", - "SIPO_NOEU_DEPL", - "SIPO_NOEU_SIEF", - "SIRE_ELNO_DEPL", - "SIRE_NOEU_DEPL", - "SOUR_ELGA_ELEC", + "SIEQ_ELGA", + "SIEQ_ELNO", + "SIEQ_NOEU", + "SIGM_ELNO", + "SIGM_NOEU", + "SING_ELEM", + "SING_ELNO", + "SIPM_ELNO", + "SIPO_ELNO", + "SIPO_NOEU", + "SIRO_ELEM", + "SITQ_ELNO", + "SITU_ELNO", + "SIZ1_ELGA", + "SIZ2_ELGA", + "SOUR_ELGA", + "SPMX_ELGA", "TEMP", "THETA", + "VACO_ELNO", + "VAEX_ELGA", + "VAEX_ELNO", + "VAEX_NOEU", "VALE_CONT", - "VALE_NCOU_MAXI", + "VARC_ELGA", "VARI_ELGA", "VARI_ELNO", - "VARI_ELNO_COQU", - "VARI_ELNO_ELGA", - "VARI_ELNO_TUYO", "VARI_NOEU", - "VARI_NOEU_ELGA", + "VATU_ELNO", "VITE", "VITE_ABSOLU", "VITE_VENT", - ) -#& MODIF COMMUN DATE 14/12/2009 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA + ] +# +# Si aucun argument n'est passe, on utilise tous les types de champs possibles + if ( typ_cham is None ) : + l_ncham = l_tout_cham +# +# Sinon, on n'utilise que les champs dont le type est passe en argument + else : + l_typ_cham = [] + if (type(typ_cham) == types.StringType) : + l_typ_cham.append(typ_cham) + else : + l_typ_cham = typ_cham + l_ncham = [] + for typ in l_typ_cham : + for cham in l_tout_cham : + if (cham.find(typ) != -1) : + if (cham.split('_')[1] == typ): + l_ncham.append(cham) + + return tuple(l_ncham) +#& MODIF COMMUN DATE 04/04/2011 AUTEUR PELLET J.PELLET # RESPONSABLE DESROCHES X.DESROCHES # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2005 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== # ce fichier contient la liste des noms des grandeurs de CODE_ASTER -def C_NOM_GRANDEUR() : return ( #COMMUN# +def C_NOM_GRANDEUR() : return ( #COMMUN# "ABSC_R", "ADRSJEVE", "ADRSJEVN", @@ -749,8 +926,9 @@ def C_NOM_GRANDEUR() : return ( #COMMUN# "DEPL_F", "DEPL_R", "DISS_R", -"DOMMAG", +"DOMA_R", "DURT_R", +"ENDO_R", "ENER_R", "EPSI_C", "EPSI_F", @@ -758,6 +936,7 @@ def C_NOM_GRANDEUR() : return ( #COMMUN# "ERRE_R", "FACY_R", "FELECR", +"FER2_R", "FISS_R", "FLAPLA", "FLUN_F", @@ -778,7 +957,7 @@ def C_NOM_GRANDEUR() : return ( #COMMUN# "IMPE_C", "IMPE_F", "IMPE_R", -"IND_LOCA", +"INDL_R", "INFC_R", "INST_R", "INTE_R", @@ -840,6 +1019,88 @@ def C_NOM_GRANDEUR() : return ( #COMMUN# "WEIBULL", "XCONTAC", ) +#& MODIF COMMUN DATE 17/01/2011 AUTEUR ABBAS M.ABBAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS + +def C_OBSERVATION() : return FACT(statut='f',max=99, + + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, + into=("VALE_CONT","FORC_NODA", + "DEPL","VITE","ACCE","TEMP", + "SIEF_ELGA","VARI_ELGA", + "DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",)), + + EVAL_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("MIN","MAX","MOY","VALE",),), + + NOM_CMP =SIMP(statut='o',typ='TXM',max=20), + EVAL_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("VALE","FORMULE",),), + + b_formule =BLOC(condition="(EVAL_CMP=='FORMULE')", + FORMULE = SIMP(statut='o',typ=formule,max=1), + ), + + b_cham_no =BLOC(condition="(NOM_CHAM=='DEPL') or \ + (NOM_CHAM=='VITE') or \ + (NOM_CHAM=='ACCE') or \ + (NOM_CHAM=='TEMP') or \ + (NOM_CHAM=='FORC_NODA') or \ + (NOM_CHAM=='VALE_CONT') or \ + (NOM_CHAM=='DEPL_ABSOLU') or \ + (NOM_CHAM=='VITE_ABSOLU') or \ + (NOM_CHAM=='ACCE_ABSOLU')", + regles =(UN_PARMI('NOEUD','GROUP_NO','GROUP_MA','MAILLE','TOUT')), + TOUT =SIMP(statut='d',typ='TXM',into=("OUI",) ), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + + + b_cham_elga =BLOC(condition="(NOM_CHAM=='SIEF_ELGA') or \ + (NOM_CHAM=='VARI_ELGA')", + regles =(UN_PARMI('GROUP_MA','MAILLE','TOUT')), + TOUT =SIMP(statut='d',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + EVAL_ELGA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("MIN","MAX","VALE",),), + b_elga_vale =BLOC(condition="(EVAL_ELGA=='VALE')", + POINT =SIMP(statut='o',typ='I' ,validators=NoRepeat(),max='**'), + SOUS_POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'), + ), + ), + + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + PAS_OBSE =SIMP(statut='f',typ='I'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + + + ); #& MODIF COMMUN DATE 29/03/2007 AUTEUR GRANET S.GRANET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -865,10 +1126,10 @@ def C_PARA_FONCTION() : return ( #COMMUN# "AMOR","ABSC","SIGM","HYDR","SECH","PORO","SAT", "PGAZ","PCAP","PLIQ","PVAP","PAD","VITE","ENDO", "NORM","EPAIS","NEUT1","NEUT2",) -#& MODIF COMMUN DATE 07/07/2009 AUTEUR REZETTE C.REZETTE +#& MODIF COMMUN DATE 01/02/2011 AUTEUR MASSIN P.MASSIN # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -883,18 +1144,30 @@ def C_PARA_FONCTION() : return ( #COMMUN# # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -# RESPONSABLE REZETTE C.REZETTE -def C_RECH_LINEAIRE() : return FACT(statut='f', - METHODE =SIMP(statut='f',typ='TXM',defaut="CORDE",into=("CORDE","MIXTE") ), - RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ), - ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3,val_max=999), - ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20), - PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0), - RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2), - RHO_MAX =SIMP(statut='f',typ='R',defaut=1.0E+1), - RHO_EXCL =SIMP(statut='f',typ='R',defaut=0.9E-2,val_min=0.), +# RESPONSABLE ABBAS M.ABBAS +def C_PILOTAGE() : return FACT(statut='f', + regles=(EXCLUS('NOEUD','GROUP_NO'),PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TYPE =SIMP(statut='o',typ='TXM',into=("DDL_IMPO","LONG_ARC","PRED_ELAS","DEFORMATION", + "ANA_LIM","SAUT_IMPO","SAUT_LONG_ARC") ), + COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.0E+0), + EVOL_PARA =SIMP(statut='f',typ='TXM',defaut="SANS", into=("SANS","CROISSANT","DECROISSANT") ), + ETA_PILO_MAX =SIMP(statut='f',typ='R'), + ETA_PILO_MIN =SIMP(statut='f',typ='R'), + ETA_PILO_R_MAX =SIMP(statut='f',typ='R'), + ETA_PILO_R_MIN =SIMP(statut='f',typ='R'), + PROJ_BORNES =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + SELECTION =SIMP(statut='f',typ='TXM',defaut="NORM_INCR_DEPL", into=("RESIDU","ANGL_INCR_DEPL","NORM_INCR_DEPL") ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + FISSURE =SIMP(statut='f',typ=fiss_xfem ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + DIRE_PILO =SIMP(statut='f',typ='TXM',max='**'), ); -#& MODIF COMMUN DATE 20/04/2010 AUTEUR JAUBERT A.JAUBERT + +#& MODIF COMMUN DATE 06/12/2010 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG @@ -912,140 +1185,173 @@ def C_RECH_LINEAIRE() : return FACT(statut='f', # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== +# RESPONSABLE ABBAS M.ABBAS +def C_RECH_LINEAIRE() : return FACT(statut='f', + METHODE =SIMP(statut='f',typ='TXM',defaut="CORDE",into=("CORDE","MIXTE","PILOTAGE") ), + RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ), + ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3,val_max=999), + ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20), + PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0), + RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2), + RHO_MAX =SIMP(statut='f',typ='R',defaut=1.0E+1), + RHO_EXCL =SIMP(statut='f',typ='R',defaut=0.9E-2,val_min=0.), + ); +#& MODIF COMMUN DATE 28/02/2011 AUTEUR BARGELLI R.BARGELLINI +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== # RESPONSABLE PROIX J.M.PROIX -def C_RELATION() : return ( "ELAS", # RESP. : PROIX J.M.PROIX #COMMUN# - "ARME", # RESP. : PEYRARD C.PEYRARD - "ASSE_CORN", # RESP. : PEYRARD C.PEYRARD - "BARCELONE", # RESP. : ELGHARIB J.ELGHARIB - "BETON_DOUBLE_DP", # RESP. : ELGHARIB J.ELGHARIB - "BETON_RAG", # RESP. : DEBONNIERES P.DEBONNIERES - "BETON_REGLE_PR", # RESP. : NECS - "BETON_UMLV_FP", # RESP. : LEPAPE Y.LEPAPE - "CAM_CLAY", # RESP. : ELGHARIB J.ELGHARIB - "CJS", # RESP. : CHAVANT C.CHAVANT - "CORR_ACIER", # RESP. : LEPAPE Y.LEPAPE - "CZM_EXP_REG", # RESP. : LAVERNE J.LAVERNE - "CZM_EXP", # RESP. : LAVERNE J.LAVERNE - "CZM_LIN_REG", # RESP. : LAVERNE J.LAVERNE - "CZM_OUV_MIX", # RESP. : LAVERNE J.LAVERNE - "CZM_TAC_MIX", # RESP. : LAVERNE J.LAVERNE - "CZM_FAT_MIX", # RESP. : LAVERNE J.LAVERNE - "DIS_BILI_ELAS", # RESP. : FLEJOU J.L.FLEJOU - "DIS_CHOC", # RESP. : DEVESA G.DEVESA - "DIS_ECRO_CINE", # RESP. : FLEJOU J.L.FLEJOU - "DIS_GOUJ2E_ELAS", # RESP. : ANGLES J.ANGLES - "DIS_GOUJ2E_PLAS", # RESP. : ANGLES J.ANGLES - "DIS_GRICRA", # RESP. : FERNANDES R.FERNANDES - "DIS_VISC", # RESP. : FLEJOU J.L.FLEJOU - "DRUCK_PRAGER", # RESP. : FERNANDES R.FERNANDES - "DRUCK_PRAG_N_A", # RESP. : FERNANDES R.FERNANDES - "VISC_DRUC_PRAG", # RESP. : ELGHARIB J.ELGHARIB - "ELAS_GONF", # RESP. : GRANET S.GRANET - "ELAS_HYPER", # RESP. : ABBAS M.ABBAS - "ENDO_FRAGILE", # RESP. : MICHEL S.MICHEL - "ENDO_SCALAIRE", # RESP. : MICHEL S.MICHEL - "ENDO_ISOT_BETON", # RESP. : MICHEL S.MICHEL - "ENDO_ORTH_BETON", # RESP. : MICHEL S.MICHEL - "GATT_MONERIE", # RESP. : DEBONNIERES P.DEBONNIERES - "GLRC_DAMAGE", # RESP. : MARKOVIC D.MARKOVIC - "GLRC_DM", # RESP. : MARKOVIC D.MARKOVIC - "GRANGER_FP_INDT", # RESP. : ROSPARS C.ROSPARS - "GRANGER_FP", # RESP. : ROSPARS C.ROSPARS - "GRANGER_FP_V", # RESP. : ROSPARS C.ROSPARS - "GRAN_IRRA_LOG", # RESP. : FERNANDES R.FERNANDES - "GRILLE_CINE_LINE",# RESP. : ROSPARS C.ROSPARS - "GRILLE_ISOT_LINE",# RESP. : ROSPARS C.ROSPARS - "GRILLE_PINTO_MEN",# RESP. : ROSPARS C.ROSPARS - "HOEK_BROWN_EFF", # RESP. : CHAVANT C.CHAVANT - "HOEK_BROWN", # RESP. : CHAVANT C.CHAVANT - "HOEK_BROWN_TOT", # RESP. : CHAVANT C.CHAVANT - "HUJEUX", # RESP. : FOUCAULT A.FOUCAULT - "IRRAD3M", # RESP. : FLEJOU J.L.FLEJOU - "JOINT_BA", # RESP. : MICHEL S.MICHEL +def C_RELATION() : return ( "ELAS", #COMMUN# + + "ARME", + "ASSE_CORN", + "BARCELONE", + "BETON_DOUBLE_DP", + "BETON_RAG", + "BETON_REGLE_PR", + "BETON_UMLV_FP", + "CAM_CLAY", + "CJS", + "CORR_ACIER", + "CZM_EXP", + "CZM_EXP_REG", + "CZM_FAT_MIX", + "CZM_LIN_REG", + "CZM_OUV_MIX", + "CZM_TAC_MIX", + "CZM_TRA_MIX", + "DIS_BILI_ELAS", + "DIS_CHOC", + "DIS_ECRO_CINE", + "DIS_GOUJ2E_ELAS", + "DIS_GOUJ2E_PLAS", + "DIS_GRICRA", + "DIS_VISC", + "DRUCK_PRAGER", + "DRUCK_PRAG_N_A", + "ELAS_GONF", + "ELAS_HYPER", + "ENDO_CARRE", + "ENDO_FRAGILE", + "ENDO_HETEROGENE", + "ENDO_ISOT_BETON", + "ENDO_ORTH_BETON", + "ENDO_SCALAIRE", + "GATT_MONERIE", + "GLRC_DAMAGE", + "GLRC_DM", + "GRANGER_FP", + "GRANGER_FP_INDT", + "GRANGER_FP_V", + "GRAN_IRRA_LOG", + "GRILLE_CINE_LINE", + "GRILLE_ISOT_LINE", + "GRILLE_PINTO_MEN", + "HOEK_BROWN", + "HOEK_BROWN_EFF", + "HOEK_BROWN_TOT", + "HUJEUX", + "IRRAD3M", + "JOINT_BA", "JOINT_BANDIS", - "JOINT_MECA_RUPT", # RESP. : KAZYMYRENKO C.KAZYMYRENKO - "KIT_DDI", # RESP. : CHAVANT C.CHAVANT - "KIT_HHM", # RESP. : GRANET S.GRANET - "KIT_HH", # RESP. : GRANET S.GRANET - "KIT_HM", # RESP. : GRANET S.GRANET - "KIT_THHM", # RESP. : GRANET S.GRANET - "KIT_THH", # RESP. : GRANET S.GRANET - "KIT_THM", # RESP. : GRANET S.GRANET - "KIT_THV", # RESP. : GRANET S.GRANET - "LABORD_1D", # RESP. : VOLDOIRE F.VOLDOIRE - "LAIGLE", # RESP. : ELGHARIB J.ELGHARIB - "LEMAITRE_IRRA", # RESP. : FERNANDES R.FERNANDES - "LEMAITRE", # RESP. : DEBONNIERES P.DEBONNIERES - "LEMA_SEUIL", # RESP. : LECLERC S.LECLERC - "LETK", # RESP. : ELGHARIB J.ELGHARIB - "LMARC_IRRA", # RESP. : FERNANDES R.FERNANDES - "LMARC", # RESP. : None - "MAZARS", # RESP. : MICHEL S.MICHEL - "META_LEMA_ANI", # RESP. : CANO V.CANO - "META_P_CL_PT_RE", # RESP. : CANO V.CANO - "META_P_CL_PT", # RESP. : CANO V.CANO - "META_P_CL_RE", # RESP. : CANO V.CANO - "META_P_CL", # RESP. : CANO V.CANO - "META_P_IL_PT_RE", # RESP. : CANO V.CANO - "META_P_IL_PT", # RESP. : CANO V.CANO - "META_P_IL_RE", # RESP. : CANO V.CANO - "META_P_IL", # RESP. : CANO V.CANO - "META_P_INL_PT_RE",# RESP. : CANO V.CANO - "META_P_INL_PT", # RESP. : CANO V.CANO - "META_P_INL_RE", # RESP. : CANO V.CANO - "META_P_INL", # RESP. : CANO V.CANO - "META_V_CL_PT_RE", # RESP. : CANO V.CANO - "META_V_CL_PT", # RESP. : CANO V.CANO - "META_V_CL_RE", # RESP. : CANO V.CANO - "META_V_CL", # RESP. : CANO V.CANO - "META_V_IL_PT_RE", # RESP. : CANO V.CANO - "META_V_IL_PT", # RESP. : CANO V.CANO - "META_V_IL_RE", # RESP. : CANO V.CANO - "META_V_IL", # RESP. : CANO V.CANO - "META_V_INL_PT_RE",# RESP. : CANO V.CANO - "META_V_INL_PT", # RESP. : CANO V.CANO - "META_V_INL_RE", # RESP. : CANO V.CANO - "META_V_INL", # RESP. : CANO V.CANO - "MONOCRISTAL", # RESP. : PROIX J.M.PROIX - "MULTIFIBRE", # RESP. : FLEJOU J.L.FLEJOU - "NORTON_HOFF", # RESP. : MICHEL S.MICHEL - "PINTO_MENEGOTTO", # RESP. : ROSPARS C.ROSPARS - "POLYCRISTAL", # RESP. : PROIX J.M.PROIX - "ROUSSELIER", # RESP. : CANO V.CANO - "ROUSS_PR", # RESP. : PARROT A.PARROT - "ROUSS_VISC", # RESP. : CANO V.CANO - "RUPT_FRAG", # RESP. : LAVERNE J.LAVERNE - "SANS", # RESP. : MICHEL S.MICHEL - "VENDOCHAB", # RESP. : PROIX J.M.PROIX - "VISC_CIN1_CHAB", # RESP. : PROIX J.M.PROIX - "VISC_CIN2_CHAB", # RESP. : PROIX J.M.PROIX - "VISC_CIN2_MEMO", # RESP. : PROIX J.M.PROIX - "VISC_IRRA_LOG", # RESP. : FERNANDES R.FERNANDES - "VISC_ISOT_LINE", # RESP. : MICHEL S.MICHEL - "VISC_ISOT_TRAC", # RESP. : PROIX J.M.PROIX - "VISCOCHAB", # RESP. : GENIAUT S.GENIAUT - "VISC_TAHERI", # RESP. : TAHERI S.TAHERI - "VMIS_ASYM_LINE", # RESP. : PROIX J.M.PROIX - "VMIS_CIN1_CHAB", # RESP. : PROIX J.M.PROIX - "VMIS_CIN2_CHAB", # RESP. : PROIX J.M.PROIX - "VMIS_CIN2_MEMO", # RESP. : PROIX J.M.PROIX - "VMIS_CINE_LINE", # RESP. : PROIX J.M.PROIX - "VMIS_ECMI_LINE", # RESP. : PROIX J.M.PROIX - "VMIS_ECMI_TRAC", # RESP. : PROIX J.M.PROIX - "VMIS_ISOT_LINE", # RESP. : PROIX J.M.PROIX - "VMIS_ISOT_PUIS", # RESP. : PROIX J.M.PROIX - "VMIS_ISOT_TRAC", # RESP. : PROIX J.M.PROIX - "VMIS_POU_FLEJOU", # RESP. : FLEJOU J.L.FLEJOU - "VMIS_POU_LINE", # RESP. : PROIX J.M.PROIX - "ZMAT", # RESP. : PROIX J.M.PROIX - "IMPLEX_FRAG", # RESP. : BARGELLINI R.BARGELLINI - "IMPLEX_ISOT_BETO",# RESP. : BARGELLINI R.BARGELLINI - "IMPLEX_ISOT_LINE",# RESP. : BARGELLINI R.BARGELLINI - ) -#& MODIF COMMUN DATE 18/01/2010 AUTEUR TARDIEU N.TARDIEU + "JOINT_MECA_RUPT", + "JOINT_MECA_FROT", + "KIT_DDI", + "KIT_HH", + "KIT_H", + "KIT_HHM", + "KIT_HM", + "KIT_THH", + "KIT_THHM", + "KIT_THM", + "KIT_THV", + "LABORD_1D", + "LAIGLE", + "LEMAITRE", + "LEMAITRE_IRRA", + "LEMA_SEUIL", + "LETK", + "LMARC_IRRA", + "MAZARS", + "META_LEMA_ANI", + "META_P_CL", + "META_P_CL_PT", + "META_P_CL_PT_RE", + "META_P_CL_RE", + "META_P_IL", + "META_P_IL_PT", + "META_P_IL_PT_RE", + "META_P_IL_RE", + "META_P_INL", + "META_P_INL_PT", + "META_P_INL_PT_RE", + "META_P_INL_RE", + "META_V_CL", + "META_V_CL_PT", + "META_V_CL_PT_RE", + "META_V_CL_RE", + "META_V_IL", + "META_V_IL_PT", + "META_V_IL_PT_RE", + "META_V_IL_RE", + "META_V_INL", + "META_V_INL_PT", + "META_V_INL_PT_RE", + "META_V_INL_RE", + "MONOCRISTAL", + "MULTIFIBRE", + "NORTON_HOFF", + "PINTO_MENEGOTTO", + "POLYCRISTAL", + "ROUSSELIER", + "ROUSS_PR", + "ROUSS_VISC", + "RUPT_FRAG", + "SANS", + "VENDOCHAB", + "VISC_ENDO_LEMA", + "VISCOCHAB", + "VISC_CIN1_CHAB", + "VISC_CIN2_CHAB", + "VISC_CIN2_MEMO", + "VISC_DRUC_PRAG", + "VISC_IRRA_LOG", + "VISC_ISOT_LINE", + "VISC_ISOT_TRAC", + "VISC_TAHERI", + "VMIS_ASYM_LINE", + "VMIS_CIN1_CHAB", + "VMIS_CIN2_CHAB", + "VMIS_CIN2_MEMO", + "VMIS_CINE_LINE", + "VMIS_ECMI_LINE", + "VMIS_ECMI_TRAC", + "VMIS_ISOT_LINE", + "VMIS_ISOT_PUIS", + "VMIS_ISOT_TRAC", + "VMIS_POU_FLEJOU", + "VMIS_POU_LINE", + "ZMAT", + "UMAT", + ) +#& MODIF COMMUN DATE 08/02/2011 AUTEUR TARDIEU N.TARDIEU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -1063,41 +1369,49 @@ def C_RELATION() : return ( "ELAS", # RESP. : PROIX J.M.P # RESPONSABLE REZETTE C.REZETTE def C_SOLVEUR() : return FACT(statut='d', METHODE=SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","FETI","PETSC") ), +# -------------------------------------------------------------------------------------------------------------------------------- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), ), +# -------------------------------------------------------------------------------------------------------------------------------- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ), ), +# -------------------------------------------------------------------------------------------------------------------------------- b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' or METHODE=='FETI' ", fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser", NPREC =SIMP(statut='f',typ='I',defaut= 8 ), STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ), ), +# -------------------------------------------------------------------------------------------------------------------------------- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué", - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","LDLT_SP",),defaut="LDLT_INC" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","LDLT_SP"),defaut="LDLT_INC" ), b_ldltinc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", fr="Paramètres de la factorisation incomplète", NIVE_REMPLISSAGE =SIMP(statut='f',typ='I',defaut= 0 ), RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), ), b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), ), +# -------------------------------------------------------------------------------------------------------------------------------- b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), FILTRAGE_MATRICE =SIMP(statut='f',typ='R',defaut=-1.0,), MIXER_PRECISION =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + MATR_DISTRIBUEE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), +# -------------------------------------------------------------------------------------------------------------------------------- b_feti =BLOC(condition = "METHODE == 'FETI' ",fr="Paramètres de la méthode FETI 1", PARTITION =SIMP(statut='o',typ=sd_feti_sdaster), RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), @@ -1116,21 +1430,103 @@ def C_SOLVEUR() : return FACT(statut='d', NB_SD_PROC0 =SIMP(statut='f',typ='I',defaut=0,val_min=0), ACCELERATION_SM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), ), +# -------------------------------------------------------------------------------------------------------------------------------- b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), - ), RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), - - +# -------------------------------------------------------------------------------------------------------------------------------- SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ); -#& MODIF COMMUN DATE 27/06/2005 AUTEUR D6BHHJP J.P.LEFEBVRE +#& MODIF COMMUN DATE 17/01/2011 AUTEUR ABBAS M.ABBAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS + +def C_SUIVI_DDL() : return FACT(statut='f',max=4, + + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, + into=("DEPL","VITE","ACCE", + "FORC_NODA", + "SIEF_ELGA","VARI_ELGA", + "DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",)), + + EVAL_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("MIN","MAX","MOY","VALE",),), + + NOM_CMP =SIMP(statut='o',typ='TXM',max=20), + EVAL_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("VALE","FORMULE",),), + + b_formule =BLOC(condition="(EVAL_CMP=='FORMULE')", + FORMULE = SIMP(statut='o',typ=formule,max=1), + ), + + b_cham_no =BLOC(condition="(NOM_CHAM=='DEPL') or \ + (NOM_CHAM=='VITE') or \ + (NOM_CHAM=='ACCE') or \ + (NOM_CHAM=='FORC_NODA') or \ + (NOM_CHAM=='VALE_CONT') or \ + (NOM_CHAM=='DEPL_ABSOLU') or \ + (NOM_CHAM=='VITE_ABSOLU') or \ + (NOM_CHAM=='ACCE_ABSOLU')", + regles =(UN_PARMI('NOEUD','GROUP_NO','GROUP_MA','MAILLE','TOUT')), + TOUT =SIMP(statut='d',typ='TXM',into=("OUI",) ), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + + b_cham_elga =BLOC(condition="(NOM_CHAM=='SIEF_ELGA') or \ + (NOM_CHAM=='VARI_ELGA')", + regles =(UN_PARMI('GROUP_MA','MAILLE','TOUT')), + TOUT =SIMP(statut='d',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + EVAL_ELGA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("MIN","MAX","VALE",),), + b_elga_vale =BLOC(condition="(EVAL_ELGA=='VALE')", + POINT =SIMP(statut='o',typ='I' ,validators=NoRepeat(),max='**'), + SOUS_POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'), + ), + ), + + TITRE = SIMP(statut='f',typ='TXM',max=3), + + + ); +#& MODIF COMMUN DATE 09/11/2010 AUTEUR GNICOLAS G.NICOLAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -1148,19 +1544,30 @@ def C_SOLVEUR() : return FACT(statut='d', # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== +# RESPONSABLE GNICOLAS G.NICOLAS # # ce fichier contient la liste des "into" possibles pour le mot cle TYPE_CHAM -def C_TYPE_CHAM_INTO() : #COMMUN# - l=[] - for gd in C_NOM_GRANDEUR() : - for typ in ("ELEM","ELNO","ELGA","CART","NOEU") : - l.append(typ+"_"+gd) - return tuple(l) +def C_TYPE_CHAM_INTO( type_cham=None ) : #COMMUN# +# Si aucun argument n'est passe, on utilise tous les types de champs possibles + if ( type_cham is None ) : + l_cham = ["ELEM", "ELNO", "ELGA", "CART", "NOEU"] +# Sinon, on n'utilise que les types passes en argument + else : + l_cham = [] + for typ in type_cham : + l_cham.append(typ) +# + l = [] + for gd in C_NOM_GRANDEUR() : + for typ in l_cham : + l.append(typ+"_"+gd) +# + return tuple(l) -#& MODIF COMMANDE DATE 22/09/2009 AUTEUR SELLENET N.SELLENET +#& MODIF COMMANDE DATE 04/05/2011 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -1182,7 +1589,8 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, UIinfo ={"groupes":("Modélisation",)}, regles = (AU_MOINS_UN('POUTRE','BARRE','COQUE','CABLE','DISCRET','DISCRET_2D','MASSIF', 'GRILLE','MULTIFIBRE','RIGI_PARASOL'), - PRESENT_PRESENT('MULTIFIBRE','GEOM_FIBRE'),), + PRESENT_PRESENT('MULTIFIBRE','GEOM_FIBRE'), + EXCLUS('DISCRET','DISCRET_2D'),), MODELE = SIMP(statut='o',typ=modele_sdaster ), INFO = SIMP(statut='f',typ='I', defaut= 1 ,into=(1,2) ), VERIF = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("MAILLE","NOEUD") ), @@ -1707,29 +2115,37 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, regles = (UN_PARMI('COEF_GROUP','FONC_GROUP'), UN_PARMI('COOR_CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE'), EXCLUS('GROUP_MA_POI1','GROUP_MA_SEG2'),), - GROUP_MA = SIMP(statut='o',typ=ma,validators=NoRepeat(),max='**', + GROUP_MA = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**', fr="Surface servant à répartir les caractéristiques des discrets"), - GROUP_MA_POI1 = SIMP(statut='f',typ=ma,validators=NoRepeat(),max=1, + GROUP_MA_POI1 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1, fr="Mailles de type point correspondant aux discrets"), - GROUP_MA_SEG2 = SIMP(statut='f',typ=ma,validators=NoRepeat(),max=1, + GROUP_MA_SEG2 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1, fr="Mailles de type seg2 correspondant aux discrets"), FONC_GROUP = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), COEF_GROUP = SIMP(statut='f',typ='R',max='**'), REPERE = SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ), CARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2, into=("K_TR_D_N","K_T_D_N","K_TR_D_L","K_T_D_L", - "A_TR_D_N","A_T_D_N","A_TR_D_L","A_T_D_L") ), - VALE = SIMP(statut='o',typ='R',max='**'), + "A_TR_D_N","A_T_D_N","A_TR_D_L","A_T_D_L"), + fr="Choix des types de discrets du tapis de ressorts." ), + b_cara= BLOC(condition =""" (CARA in ["K_TR_D_N","K_T_D_N","K_TR_D_L","K_T_D_L", + "A_TR_D_N","A_T_D_N","A_TR_D_L","A_T_D_L"]) or \ + (len(CARA)==2 and CARA[0][2:]==CARA[1][2:]) """, + fr="Valeurs pour les discrets du tapis de ressorts.", + VALE = SIMP(statut='o',typ='R',max='**', + fr="Valeurs pour les discrets du tapis de ressorts.",), + ), GROUP_NO_CENTRE = SIMP(statut='f',typ=grno), NOEUD_CENTRE = SIMP(statut='f',typ=no), COOR_CENTRE = SIMP(statut='f',typ='R',min=2,max=3), EUROPLEXUS = SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"), + UNITE = SIMP(statut='f',typ='I',val_min=1), ), #============================================================================ RIGI_MISS_3D = FACT(statut='f',max='**', - GROUP_MA_POI1 = SIMP(statut='o',typ=ma,max=1), - GROUP_MA_SEG2 = SIMP(statut='f',typ=ma,max=1), + GROUP_MA_POI1 = SIMP(statut='o',typ=grma,max=1), + GROUP_MA_SEG2 = SIMP(statut='f',typ=grma,max=1), FREQ_EXTR = SIMP(statut='o',typ='R',max=1), UNITE_RESU_IMPE = SIMP(statut='f',typ='I',defaut=30), ), @@ -1744,7 +2160,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, GROUP_FIBRE = SIMP(statut='o',typ='TXM',max='**'), ), ); -#& MODIF COMMANDE DATE 16/09/2008 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -1766,7 +2182,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, fr="Affectation de charges et conditions aux limites acoustiques constantes", reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Chargements","Acoustique",)}, regles=(AU_MOINS_UN('PRES_IMPO','VITE_FACE','IMPE_FACE','LIAISON_UNIF' ),), MODELE =SIMP(statut='o',typ=modele_sdaster ), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), @@ -1807,10 +2223,10 @@ AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, DDL =SIMP(statut='o',typ='TXM',max='**'), ), ) ; -#& MODIF COMMANDE DATE 20/04/2010 AUTEUR JAUBERT A.JAUBERT +#& MODIF COMMANDE DATE 01/03/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -1842,13 +2258,13 @@ def affe_char_cine_prod(MECA_IMPO,THER_IMPO,ACOU_IMPO,EVOL_IMPO,**args): AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod - ,fr="Affectation de conditions aux limites cinématiques constantes pour un traitement sans dualisation", + ,fr="Affectation de conditions aux limites cinématiques (U=U0) pour un traitement sans dualisation", reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Chargements","Mécanique",)}, regles=(UN_PARMI('MECA_IMPO','THER_IMPO','ACOU_IMPO','EVOL_IMPO'), ), MODELE =SIMP(statut='o',typ=modele_sdaster ), - EVOL_IMPO =SIMP(statut='f',typ=(evol_noli,evol_elas,evol_ther),fr="Pour imposer tous les ddls d'un evol_xxx"), + MECA_IMPO =FACT(statut='f',max='**', regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', @@ -1946,6 +2362,7 @@ AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod PRES33 =SIMP(statut='f',typ='R' ), LH1 =SIMP(statut='f',typ='R' ), ), + THER_IMPO =FACT(statut='f',max='**', regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), AU_MOINS_UN('TEMP','TEMP_INF','TEMP_SUP'),), @@ -1958,6 +2375,7 @@ AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod TEMP =SIMP(statut='f',typ='R' ), TEMP_INF =SIMP(statut='f',typ='R' ), ), + ACOU_IMPO =FACT(statut='f',max='**', regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -1967,9 +2385,15 @@ AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), PRES =SIMP(statut='o',typ='C' ), ), + + EVOL_IMPO =SIMP(statut='f',typ=(evol_noli,evol_elas,evol_ther),fr="Pour imposer les ddls d'un evol_xxx"), + b_evol_impo = BLOC ( condition = "EVOL_IMPO != None", + NOM_CMP =SIMP(statut='f',typ='TXM',max='**',), # pour n'imposer que certaines CMPS (par défaut : toutes) + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -1997,27 +2421,106 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 101,sd_prod=affe_char_cine_f_pr fr="Affectation de conditions aux limites cinématiques fonction d'un (ou plusieurs) paramètres" +" pour un traitement sans dualisation", reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Chargements","Mécanique",)}, regles=(UN_PARMI('MECA_IMPO','THER_IMPO')), MODELE =SIMP(statut='o',typ=modele_sdaster ), MECA_IMPO =FACT(statut='f',max='**', regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), - AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','TEMP','PHI'),), + AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', + 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2', + 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4', + 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6', + 'VO6','WI6','WO6','WO','WI1','WO1','GONF', + 'H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z', + 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','V11','V12','V13','V21','V22', + 'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21', + 'PRES22','PRES23','PRES31','PRES32','PRES33','LH1'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRE1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRE2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UI2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UI3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UI4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UI5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UI6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UO2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UO3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UO4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UO5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UO6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VI2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VI3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VI4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VI5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VI6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VO2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VO3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VO4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VO5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VO6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + GONF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + H1X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + H1Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + H1Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E1X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E1Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E1Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E2X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E2Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E2Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E3X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E3Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E3Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E4X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E4Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E4Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V11 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V12 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V13 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V21 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V22 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V23 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V31 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V32 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V33 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES11=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES12=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES13=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES21=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES22=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES23=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES31=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES32=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES33=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + LH1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), THER_IMPO =FACT(statut='f',max='**', regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), @@ -2033,10 +2536,10 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 101,sd_prod=affe_char_cine_f_pr ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 13/04/2010 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 04/05/2011 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -2055,7 +2558,7 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 101,sd_prod=affe_char_cine_f_pr AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, fr="Affectation de charges et conditions aux limites mécaniques constantes", reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Chargements","Mécanique",)}, regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','CHAMNO_IMPO','LIAISON_DDL','LIAISON_XFEM','FORCE_NODALE', 'FORCE_FACE','FORCE_ARETE','FORCE_CONTOUR','FORCE_INTERNE', 'PRES_REP','FORCE_POUTRE','FORCE_COQUE','LIAISON_OBLIQUE', @@ -2064,14 +2567,14 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, 'LIAISON_GROUP','LIAISON_UNIF','FLUX_THM_REP','LIAISON_SOLIDE', 'LIAISON_ELEM','ONDE_FLUI','LIAISON_CHAMNO','VECT_ASSE','LIAISON_COQUE', 'LIAISON_MAIL','LIAISON_CYCL','FORCE_TUYAU', - 'EFFE_FOND','EVOL_CHAR','ARLEQUIN','DDL_POUTRE',), + 'EFFE_FOND','EVOL_CHAR','DDL_POUTRE',), ), VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), MODELE =SIMP(statut='o',typ=(modele_sdaster) ), EVOL_CHAR =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul", typ=evol_char ), - PESANTEUR =FACT(statut='f',max='**',fr="Champ de pesanteur", + PESANTEUR =FACT(statut='f',max=1,fr="Champ de pesanteur", GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), GRAVITE =SIMP(statut='o',typ='R',min=1,max=1), @@ -2080,9 +2583,17 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés", into=('DUALISATION',),defaut='DUALISATION',), # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement - ROTATION =SIMP(statut='f',typ='R',fr="Champ de rotation", min=4,max=4), - b_rotation =BLOC ( condition = "ROTATION != None", - CENTRE =SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3),), + + ROTATION =FACT(statut='f', max=1, fr="Définition d'un chargement de rotation", + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(), max='**'), + MAILLE = SIMP(statut='f',typ=ma, validators=NoRepeat(),max='**'), + VITESSE = SIMP(statut='o', typ='R',min=1,max=1), + AXE = SIMP(statut='o', typ='R',min=2, max=3), + CENTRE = SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3), + b_rotation_tout=BLOC(condition="(GROUP_MA == None) and (MAILLE ==None)", + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",),defaut="OUI",),), + b_rotation=BLOC(condition="(GROUP_MA != None) or (MAILLE !=None)", + TOUT = SIMP(statut='f',typ='TXM',into=("NON","OUI"),defaut="NON",),),), DDL_IMPO =FACT(statut='f',max='**', fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)", @@ -2092,7 +2603,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4', 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6', 'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON', - 'H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z', + 'H1X','H1Y','H1Z','H2X','H2Y','H2Z','H3X','H3Y','H3Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z', 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C','V11','V12','V13','V21','V22', 'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21','PRES22','PRES23', 'PRES31','PRES32','PRES33',),), @@ -2151,6 +2662,12 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, H1X =SIMP(statut='f',typ='R' ), H1Y =SIMP(statut='f',typ='R' ), H1Z =SIMP(statut='f',typ='R' ), + H2X =SIMP(statut='f',typ='R' ), + H2Y =SIMP(statut='f',typ='R' ), + H2Z =SIMP(statut='f',typ='R' ), + H3X =SIMP(statut='f',typ='R' ), + H3Y =SIMP(statut='f',typ='R' ), + H3Z =SIMP(statut='f',typ='R' ), E1X =SIMP(statut='f',typ='R' ), E1Y =SIMP(statut='f',typ='R' ), E1Z =SIMP(statut='f',typ='R' ), @@ -2304,7 +2821,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), @@ -2389,21 +2906,25 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), ), - LIAISON_ELEM =FACT(statut='f',max='**', - fr="Modélise le raccord d'une partie massive 3D avec une poutre ou avec un tuyau, le raccord d'une coque" - +" avec une poutre ou avec un tuyau", - regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'), - UN_PARMI('GROUP_NO_2','NOEUD_2'),), - OPTION =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","COQ_POU","COQ_TUYAU") ), - GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), - CARA_ELEM =SIMP(statut='f',typ=(cara_elem) ), - AXE_POUTRE =SIMP(statut='f',typ='R',max=3), - ANGL_MAX =SIMP(statut='f',typ='R',defaut= 1. ), - ), + LIAISON_ELEM =FACT(statut='f',max='**', + fr="Modélise le raccord : d'une partie massive 3D avec une poutre ou avec un tuyau, d'une coque" + +" avec une poutre ou avec un tuyau, d'une plaque avec une poutre", + regles =(UN_PARMI('GROUP_MA_1','MAILLE_1'), UN_PARMI('GROUP_NO_2','NOEUD_2'),), + OPTION =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","COQ_POU","COQ_TUYAU","PLAQ_POUT_ORTH") ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ANGL_MAX =SIMP(statut='f',typ='R',defaut= 1. ), + b_dalcol =BLOC( condition = "OPTION == 'PLAQ_POUT_ORTH'", + VERIF_EXCENT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + b_option =BLOC( condition = "OPTION != 'PLAQ_POUT_ORTH'", + CARA_ELEM =SIMP(statut='f',typ=(cara_elem) ), + AXE_POUTRE =SIMP(statut='f',typ='R',max=3), + ), + ), LIAISON_UNIF =FACT(statut='f',max='**', fr="Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds", @@ -2423,6 +2944,13 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), ), + + LIAISON_INTERF =FACT(statut='f',max='**', + fr="Définit une relation linéaire entre les DDLs d'interface à partir d'un MACRELEM", + MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna), + TYPE_LIAISON =SIMP(statut='f',typ='TXM',defaut="RIGIDE",into=("RIGIDE","SOUPLE") ), + ), + LIAISON_XFEM =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ), CONTACT_XFEM =SIMP(statut='f',typ=char_contact,min=1,max=1,), @@ -2554,21 +3082,6 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, KXY =SIMP(statut='f',typ='R' ), ), - ARLEQUIN =FACT(statut='f',min=1,max='**', - fr="Définit les paramètres de la méthode Arlequin", - GROUP_MA_1 =SIMP(statut='o',typ=grma,max='**'), - GROUP_MA_2 =SIMP(statut='o',typ=grma,max='**'), - GROUP_MA_COLL =SIMP(statut='f',typ=grma,max='**'), - CARA_ELEM =SIMP(statut='f',typ=cara_elem ), - COND_LIM =SIMP(statut='f',typ=char_meca ), - COLLAGE =SIMP(statut='f',typ='TXM',defaut="GROSSIER",into=("GROSSIER","FIN","GROUP_MA_1","GROUP_MA_2"),), - regles =(UN_PARMI('POIDS_1','POIDS_2','POIDS_GROSSIER','POIDS_FIN',),), - POIDS_1 =SIMP(statut='f',typ='R'), - POIDS_2 =SIMP(statut='f',typ='R'), - POIDS_GROSSIER =SIMP(statut='f',typ='R'), - UNITE_GMSH =SIMP(statut='f',typ='I',defaut=0,max=1), - POIDS_FIN =SIMP(statut='f',typ='R'),), - FORCE_POUTRE =FACT(statut='f',max='**', fr="Applique des forces linéiques sur des éléments de type poutre", regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), @@ -2759,7 +3272,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, ) ; -#& MODIF COMMANDE DATE 16/09/2008 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2781,7 +3294,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, fr="Affectation de charges et conditions aux limites mécaniques complexes", reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Chargements","Mécanique",)}, regles=(AU_MOINS_UN('DDL_IMPO','FORCE_POUTRE','LIAISON_DDL', ),), MODELE =SIMP(statut='o',typ=modele_sdaster ), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), @@ -2841,7 +3354,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 13/04/2010 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2863,7 +3376,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, fr="Affectation de charges et conditions aux limites mécaniques fonction d'un (ou plusieurs) paramètres", reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Chargements","Mécanique",)}, regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','LIAISON_DDL','FORCE_NODALE', 'FORCE_FACE','FORCE_ARETE','FORCE_CONTOUR','FORCE_INTERNE', 'PRES_REP','FORCE_POUTRE','VITE_FACE','IMPE_FACE','ONDE_PLANE', @@ -3298,29 +3811,29 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE None AFFE_CHAR_OPS011=OPER(nom="AFFE_CHAR_OPS011",op= 190,sd_prod=char_ther, fr="Affectation de charges et conditions limites thermiques spécifique à CARA_TORSION", reentrant='n', - UIinfo={"groupes":("Outils métier",)}, + UIinfo={"groupes":("Outils-métier","Thermique",)}, regles=(AU_MOINS_UN('CARA_TORSION', ),), MODELE =SIMP(statut='o',typ=modele_sdaster ), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI", @@ -3332,7 +3845,7 @@ AFFE_CHAR_OPS011=OPER(nom="AFFE_CHAR_OPS011",op= 190,sd_prod=char_ther, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 16/09/2008 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3354,7 +3867,7 @@ AFFE_CHAR_OPS011=OPER(nom="AFFE_CHAR_OPS011",op= 190,sd_prod=char_ther, AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther ,fr="Affectation de charges et conditions aux limites thermiques constantes", reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Chargements","Thermique",)}, regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','ECHANGE', 'ECHANGE_PAROI','GRAD_TEMP_INIT','LIAISON_DDL','LIAISON_GROUP', 'LIAISON_UNIF','LIAISON_CHAMNO','RAYONNEMENT','LIAISON_MAIL' ),), @@ -3540,7 +4053,7 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 16/09/2008 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3563,7 +4076,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, fr="Affectation de charges et conditions aux limites thermiques fonction d'un (ou plusieurs)" +" paramètres (temps, ...)", reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Chargements","Thermique",)}, regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','FLUX_NL','ECHANGE', 'ECHANGE_PAROI','LIAISON_DDL','LIAISON_GROUP','LIAISON_UNIF', 'GRAD_TEMP_INIT','RAYONNEMENT'),), @@ -3734,10 +4247,10 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 12/05/2009 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -3798,13 +4311,18 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater, GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - NOM_VARC =SIMP(statut='o',typ='TXM', into=("TEMP","CORR","IRRA","HYDR","SECH","M_ACIER","M_ZIRC", - "EPSA","NEUT1","NEUT2")), + NOM_VARC =SIMP(statut='o',typ='TXM', +# champ dans la doc into=("TEMP","CORR","IRRA","HYDR_ELNO","META_ELNO","NEUT") +# champ dans rscrsd into=("IRRA","TEMP","HYDR_ELNO","HYDR_NOEU","EPSA_ELNO","META_ELNO") + ), CHAMP_GD =SIMP(statut='f',typ=cham_gd_sdaster,), EVOL =SIMP(statut='f',typ=evol_sdaster,), B_EVOL =BLOC(condition="EVOL!=None", - NOM_CHAM =SIMP(statut='f',typ='TXM'), + NOM_CHAM =SIMP(statut='f',typ='TXM',into=("TEMP","CORR","IRRA","NEUT" + "HYDR_ELNO","HYDR_NOEU", + "META_ELNO","META_NOEU", + "EPSA_ELNO","EPSA_NOEU",)), PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), FONC_INST =SIMP(statut='f',typ=(fonction_sdaster,formule)), @@ -3903,10 +4421,10 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater, ) ; -#& MODIF COMMANDE DATE 20/04/2010 AUTEUR JAUBERT A.JAUBERT +#& MODIF COMMANDE DATE 22/03/2011 AUTEUR DESOZA T.DESOZA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -3925,8 +4443,9 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater, AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, UIinfo={"groupes":("Modélisation",)}, fr="Définir le phénomène physique modélisé et le type d'éléments finis sur le maillage",reentrant='n', - regles=(AU_MOINS_UN('AFFE','AFFE_SOUS_STRUC'),), - MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ), + regles=(AU_MOINS_UN('AFFE','AFFE_SOUS_STRUC'),UN_PARMI('MAILLAGE','GRILLE')), + MAILLAGE =SIMP(statut='f',typ=maillage_sdaster), + GRILLE =SIMP(statut='f',typ=grille_sdaster), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), VERIF =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2,into=("MAILLE","NOEUD") ), # @@ -3978,21 +4497,26 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, "3D_FLUI_ABSO", # RESP. : DEVESA G.DEVESA "3D_FLUIDE", # RESP. : GREFFET N.GREFFET "3D_INCO", # RESP. : MICHEL S.MICHEL + "3D_INCO_UP", # RESP. : SFAYOLLE "3D_INCO_GD", # RESP. : MICHEL S.MICHEL "3D_SI", # RESP. : DESROCHES X.DESROCHES "3D_GRAD_EPSI", # RESP. : MICHEL S.MICHEL "3D_GRAD_VARI", # RESP. : MICHEL S.MICHEL + "3D_GVNO", # RESP. : BEAURAIN J.BEAURAIN "3D_XFEM_CONT", # RESP. : GENIAUT S.GENIAUT "3D_JOINT", # RESP. : LAVERNE J.LAVERNE + "3D_JOINT_HYME", # RESP. : LAVERNE J.LAVERNE "3D_INTERFACE", # RESP. : LAVERNE J.LAVERNE "AXIS", # RESP. : LEFEBVRE J.P.LEFEBVRE "AXIS_FLUI_STRU", # RESP. : GREFFET N.GREFFET "AXIS_FLUIDE", # RESP. : GREFFET N.GREFFET "AXIS_FOURIER", # RESP. : DESROCHES X.DESROCHES "AXIS_INCO", # RESP. : MICHEL S.MICHEL + "AXIS_INCO_UP", # RESP. : SFAYOLLE "AXIS_INCO_GD", # RESP. : MICHEL S.MICHEL "AXIS_SI", # RESP. : DESROCHES X.DESROCHES "AXIS_GRAD_VARI", # RESP. : MICHEL S.MICHEL + "AXIS_GVNO", # RESP. : BEAURAIN J.BEAURAIN "AXIS_JOINT", # RESP. : LAVERNE J.LAVERNE "AXIS_INTERFACE", # RESP. : LAVERNE J.LAVERNE "AXIS_ELDI", # RESP. : LAVERNE J.LAVERNE @@ -4012,11 +4536,15 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, "D_PLAN_XFEM_CONT",# RESP. : GENIAUT S.GENIAUT "D_PLAN_GRAD_EPSI",# RESP. : MICHEL S.MICHEL "D_PLAN_GRAD_VARI",# RESP. : MICHEL S.MICHEL + "D_PLAN_GVNO", # RESP. : BEAURAIN J.BEAURAIN + "D_PLAN_GRAD_SIGM",# RESP. : GRANET S.GRANET "PLAN_JOINT", # RESP. : LAVERNE J.LAVERNE + "PLAN_JOINT_HYME", # RESP. : LAVERNE J.LAVERNE "PLAN_INTERFACE", # RESP. : LAVERNE J.LAVERNE "PLAN_ELDI", # RESP. : LAVERNE J.LAVERNE "D_PLAN_ABSO", # RESP. : DEVESA G.DEVESA "D_PLAN_INCO", # RESP. : MICHEL S.MICHEL + "D_PLAN_INCO_UP", # RESP. : SFAYOLLE "D_PLAN_INCO_GD", # RESP. : MICHEL S.MICHEL "D_PLAN_SI", # RESP. : DESROCHES X.DESROCHES "DIS_T", # RESP. : FLEJOU J.L.FLEJOU @@ -4037,11 +4565,9 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, "Q4G", # RESP. : DESROCHES X.DESROCHES "TUYAU_3M", # RESP. : PROIX J.M.PROIX "TUYAU_6M", # RESP. : PROIX J.M.PROIX - "SHB8", # RESP. : DESROCHES X.DESROCHES + "SHB", # RESP. : DESROCHES X.DESROCHES "D_PLAN_HHM", # RESP. : GRANET S.GRANET "D_PLAN_HM", # RESP. : GRANET S.GRANET - "D_PLAN_THH", # RESP. : GRANET S.GRANET - "D_PLAN_THHM", # RESP. : GRANET S.GRANET "D_PLAN_THM", # RESP. : GRANET S.GRANET "D_PLAN_HHMD", # RESP. : GRANET S.GRANET "D_PLAN_HH2MD", # RESP. : GRANET S.GRANET @@ -4062,14 +4588,13 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, "D_PLAN_THHMS", # RESP. : GRANET S.GRANET "D_PLAN_THMS", # RESP. : GRANET S.GRANET "D_PLAN_HM_P", # RESP. : GRANET S.GRANET + "D_PLAN_HS", # RESP. : GRANET S.GRANET "D_PLAN_HHD", # RESP. : GRANET S.GRANET "D_PLAN_HHS", # RESP. : GRANET S.GRANET "D_PLAN_HH2D", # RESP. : GRANET S.GRANET "D_PLAN_HH2S", # RESP. : GRANET S.GRANET "D_PLAN_2DG", # RESP. : GRANET S.GRANET "D_PLAN_DIL", # RESP. : GRANET S.GRANET - "AXIS_THH", # RESP. : GRANET S.GRANET - "AXIS_THHM", # RESP. : GRANET S.GRANET "AXIS_THM", # RESP. : GRANET S.GRANET "AXIS_HHM", # RESP. : GRANET S.GRANET "AXIS_HM", # RESP. : GRANET S.GRANET @@ -4097,8 +4622,6 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, "AXIS_HH2S", # RESP. : GRANET S.GRANET "3D_HHM" , # RESP. : GRANET S.GRANET "3D_HM", # RESP. : GRANET S.GRANET - "3D_THH", # RESP. : GRANET S.GRANET - "3D_THV", # RESP. : GRANET S.GRANET "3D_THHM", # RESP. : GRANET S.GRANET "3D_THM", # RESP. : GRANET S.GRANET "3D_HHMD", # RESP. : GRANET S.GRANET @@ -4119,6 +4642,7 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, "3D_HH2MS", # RESP. : GRANET S.GRANET "3D_THH2S", # RESP. : GRANET S.GRANET "3D_THH2D", # RESP. : GRANET S.GRANET + "3D_HS", # RESP. : GRANET S.GRANET "3D_HHD", # RESP. : GRANET S.GRANET "3D_HHS", # RESP. : GRANET S.GRANET "3D_HH2D", # RESP. : GRANET S.GRANET @@ -4130,7 +4654,8 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, "D_PLAN_HH2SUDM", # RESP. : GRANET S.GRANET "D_PLAN_HH2SUC", # RESP. : GRANET S.GRANET "D_PLAN_HH2SUDA", # RESP. : GRANET S.GRANET - "2D_JOINT_HMS", + "PLAN_JHMS", + "AXIS_JHMS", ) ) ), b_thermique =BLOC( condition = "PHENOMENE=='THERMIQUE'", @@ -4158,138 +4683,254 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, ), PARTITION =FACT(statut='d', - PARALLELISME =SIMP(statut='f',typ='TXM',defaut="MAIL_DISPERSE", - into=("MAIL_CONTIGU","MAIL_DISPERSE","SOUS_DOMAINE","CENTRALISE",)), - b_dist_sd =BLOC(condition = "PARALLELISME == 'SOUS_DOMAINE'", - PARTITION =SIMP(statut='o',typ=sd_feti_sdaster), - CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,val_min=0), - ), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="GROUP_ELEM", + into=("MAIL_CONTIGU","MAIL_DISPERSE","CENTRALISE","GROUP_ELEM")), b_dist_maille =BLOC(condition = "PARALLELISME in ('MAIL_DISPERSE','MAIL_CONTIGU')", - CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,val_min=0), + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,val_min=0,val_max=100), ), ), VERI_JACOBIEN =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI', fr ="Vérification de la forme des mailles (jacobiens tous de meme signe).",), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# 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. -# ====================================================================== -# RESPONSABLE LEFEBVRE J.P.LEFEBVRE -AIDE=PROC(nom="AIDE",op=42, - UIinfo={"groupes":("Modélisation",)}, - fr="Interroger et imprimer une documentation partielle sur les noms des concepts déjà définis et sur les couples" - +" (type d'éléments, option) disponibles dans la version.", - regles=(AU_MOINS_UN('CONCEPT','TYPE_ELEM', ),), - UNITE =SIMP(statut='f',typ='I',defaut=8), - TYPE_ELEM =FACT(fr="couple type_elem option",statut='f', - INITEL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), - ), - CONCEPT =FACT(statut='f',max='**', - NOM =SIMP(fr="liste des noms de concept",statut='f',typ='TXM',validators=NoRepeat(),max='**',defaut="*"), - OPTION =SIMP(fr="option d'édition de concept",statut='f',typ='TXM',defaut="TOUT_TYPE", - into=("TOUT_TYPE","CREER","A_CREER",) ), - ), -) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 25/01/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== # RESPONSABLE PELLET J.PELLET -ASSE_MAILLAGE=OPER(nom="ASSE_MAILLAGE",op= 105,sd_prod=maillage_sdaster, - fr="Assembler deux maillages pour en former un nouveau", - reentrant='n', - UIinfo={"groupes":("Maillage",)}, - MAILLAGE_1 = SIMP(statut='o',typ=maillage_sdaster,), - MAILLAGE_2 = SIMP(statut='o',typ=maillage_sdaster,), - OPERATION = SIMP(statut='o',typ='TXM',into=("SOUS_STR","SUPERPOSE","COLLAGE"),), - b_collage = BLOC(condition = "OPERATION == 'COLLAGE'", - COLLAGE = FACT(statut='o', - GROUP_MA_1 =SIMP(statut='o',typ=grma), - GROUP_MA_2 =SIMP(statut='o',typ=grma), - ), - ), + +def appl_cine_matr_prod(MATR_ASSE,**args): + if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_depl_r + if AsType(MATR_ASSE) == matr_asse_depl_c : return matr_asse_depl_c + if AsType(MATR_ASSE) == matr_asse_temp_r : return matr_asse_temp_r + if AsType(MATR_ASSE) == matr_asse_temp_c : return matr_asse_temp_c + if AsType(MATR_ASSE) == matr_asse_pres_r : return matr_asse_pres_r + if AsType(MATR_ASSE) == matr_asse_pres_c : return matr_asse_pres_c + raise AsException("type de concept resultat non prevu") + +APPL_CINE_MATR=OPER(nom="APPL_CINE_MATR",op=158,sd_prod=appl_cine_matr_prod, + fr="Appliquer les C.L. cinématiques sur la matrice", + reentrant='f', UIinfo={"groupes":("Résolution",)}, + MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r, + matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 25/01/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== -# RESPONSABLE BODEL C.BODEL -def asse_matr_gene_prod(METHODE,**args): - if (METHODE=="INITIAL") : return matr_asse_gene_r - elif (args['OPTION']=="RIGI_GENE_C") : return matr_asse_gene_c - else : return matr_asse_gene_r +# RESPONSABLE PELLET J.PELLET -ASSE_MATR_GENE=OPER(nom="ASSE_MATR_GENE",op= 128,sd_prod=asse_matr_gene_prod, - fr="Assemblage des matrices généralisées de macro éléments pour construction de la matrice globale généralisée", - reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, - NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), - METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","INITIAL") ), - b_option =BLOC(condition = "METHODE == 'CLASSIQUE'", - OPTION =SIMP(statut='o',typ='TXM',into=("RIGI_GENE","RIGI_GENE_C","MASS_GENE","AMOR_GENE") ), - ), +APPL_CINE_SCMB=OPER(nom="APPL_CINE_SCMB",op=159,sd_prod=cham_no_sdaster,reentrant='f', + fr="Application des C.L. cinématiques au second membre", + UIinfo={"groupes":("Résolution",)}, + CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), + MATR =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r, + matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ), + CHAM_CINE =SIMP(statut='f',typ=cham_no_sdaster), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 06/10/2008 AUTEUR DEVESA G.DEVESA +#& MODIF COMMANDE DATE 03/01/2011 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# 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. +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ANDRIAM H.ANDRIAMBOLOLONA + +from Macro.asse_elem_ssd_ops import asse_elem_ssd_ops + +def asse_elem_ssd_prod(self,RESU_ASSE_SSD,**args): + MTYPES = { + 'MODELE' : modele_gene, + 'NUME_DDL_GENE' : nume_ddl_gene, + 'RIGI_GENE' : matr_asse_gene_r, + 'MASS_GENE' : matr_asse_gene_r, + } + for res in RESU_ASSE_SSD: + for mc, typ in MTYPES.items(): + if res[mc]: + self.type_sdprod(res[mc], typ) + return None + +ASSE_ELEM_SSD=MACRO(nom="ASSE_ELEM_SSD", + op=asse_elem_ssd_ops, + sd_prod=asse_elem_ssd_prod, + reentrant='n', + fr="Enchainer les commandes DEFI_MODELE_GENE, NUME_DDL_GENE et ASSE_MATR_GENE", + UIinfo={"groupes":("Matrices/vecteurs",)}, + +# pour les concepts de sortie + RESU_ASSE_SSD = FACT( statut='o', max=1, + regles=(PRESENT_PRESENT('RIGI_GENE','NUME_DDL_GENE'), + PRESENT_PRESENT('MASS_GENE','NUME_DDL_GENE'),), + MODELE=SIMP(statut='o',typ=CO,defaut=None), + NUME_DDL_GENE=SIMP(statut='f',typ=CO,defaut=None), + RIGI_GENE=SIMP(statut='f',typ=CO,defaut=None), + MASS_GENE=SIMP(statut='f',typ=CO,defaut=None), + ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + +# pour DEFI_MODELE_GENE + SOUS_STRUC =FACT(statut='o',max='**', + NOM =SIMP(statut='o',typ='TXM' ), + MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + TRANS =SIMP(statut='f',typ='R',max=3), + ), + LIAISON =FACT(statut='o',max='**', + SOUS_STRUC_1 =SIMP(statut='o',typ='TXM' ), + INTERFACE_1 =SIMP(statut='o',typ='TXM' ), + SOUS_STRUC_2 =SIMP(statut='o',typ='TXM' ), + INTERFACE_2 =SIMP(statut='o',typ='TXM' ), + regles=(EXCLUS('GROUP_MA_MAIT_1','GROUP_MA_MAIT_2','MAILLE_MAIT_2'), + EXCLUS('MAILLE_MAIT_1','GROUP_MA_MAIT_2','MAILLE_MAIT_2'),), + GROUP_MA_MAIT_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_MAIT_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_MAIT_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_MAIT_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + OPTION =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("REDUIT","CLASSIQUE") ), + ), + VERIF =FACT(statut='d',max=1, + STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + ), + + +# pour NUME_DDL_GENE + METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","ELIMINE") ), + STOCKAGE =SIMP(statut='f',typ='TXM',defaut="LIGN_CIEL",into=("LIGN_CIEL","PLEIN") ), + +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +ASSE_MAILLAGE=OPER(nom="ASSE_MAILLAGE",op= 105,sd_prod=maillage_sdaster, + fr="Assembler deux maillages pour en former un nouveau", + reentrant='n', + UIinfo={"groupes":("Maillage",)}, + MAILLAGE_1 = SIMP(statut='o',typ=maillage_sdaster,), + MAILLAGE_2 = SIMP(statut='o',typ=maillage_sdaster,), + OPERATION = SIMP(statut='o',typ='TXM',into=("SOUS_STR","SUPERPOSE","COLLAGE"),), + b_collage = BLOC(condition = "OPERATION == 'COLLAGE'", + COLLAGE = FACT(statut='o', + GROUP_MA_1 =SIMP(statut='o',typ=grma), + GROUP_MA_2 =SIMP(statut='o',typ=grma), + ), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE BODEL C.BODEL +def asse_matr_gene_prod(METHODE,**args): + if (METHODE=="INITIAL") : return matr_asse_gene_r + elif (args['OPTION']=="RIGI_GENE_C") : return matr_asse_gene_c + else : return matr_asse_gene_r + +ASSE_MATR_GENE=OPER(nom="ASSE_MATR_GENE",op= 128,sd_prod=asse_matr_gene_prod, + fr="Assemblage des matrices généralisées de macro éléments pour construction de la matrice globale généralisée", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), + METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","INITIAL") ), + b_option =BLOC(condition = "METHODE == 'CLASSIQUE'", + OPTION =SIMP(statut='o',typ='TXM',into=("RIGI_GENE","RIGI_GENE_C","MASS_GENE","AMOR_GENE") ), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. # ====================================================================== # RESPONSABLE PELLET J.PELLET def asse_matrice_prod(MATR_ELEM,**args): @@ -4301,37 +4942,37 @@ def asse_matrice_prod(MATR_ELEM,**args): ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod, fr="Construction d'une matrice assemblée",reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, MATR_ELEM =SIMP(statut='o', typ=(matr_elem_depl_r,matr_elem_depl_c,matr_elem_temp_r,matr_elem_pres_c) ), NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster), - SYME =SIMP(statut='f',typ='TXM',into=("OUI",) ), + SYME =SIMP(statut='f',typ='TXM',into=("OUI",) ), CHAR_CINE =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE BODEL C.BODEL ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene, fr="Projection des chargements sur la base modale d'une sous structure", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","INITIAL") ), b_nume =BLOC(condition = "METHODE == 'CLASSIQUE'", @@ -4341,56 +4982,56 @@ ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene, ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE PELLET J.PELLET ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=cham_no_sdaster, fr="Construire un champ aux noeuds par assemblage de vecteurs élémentaires",reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, VECT_ELEM =SIMP(statut='o',typ=vect_elem,max='**'), NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ), INFO =SIMP(statut='f',typ='I',into=(1,2,) ), ) ; -#& MODIF COMMANDE DATE 14/12/2009 AUTEUR DEVESA G.DEVESA +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE DEVESA G.DEVESA CALC_AMOR_MODAL=OPER(nom="CALC_AMOR_MODAL",op= 172,sd_prod=listr8_sdaster, fr="Création d'une liste d'amortissements modaux calculés selon la règle du RCC-G", reentrant='n', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, regles=(EXCLUS('AMOR_RAYLEIGH','ENER_SOL',), EXCLUS('AMOR_RAYLEIGH','AMOR_INTERNE',), EXCLUS('AMOR_RAYLEIGH','AMOR_SOL',), @@ -4439,30 +5080,30 @@ CALC_AMOR_MODAL=OPER(nom="CALC_AMOR_MODAL",op= 172,sd_prod=listr8_sdaster, SEUIL =SIMP(statut='f',typ='R',defaut= 0.3 ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 13/01/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE ASSIRE A.ASSIRE CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=cham_elem, fr="Calculer un champ élémentaire en thermique et en accoustique à partir de champs déjà calculés", reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Résultats et champs","Post-traitements",)}, MODELE =SIMP(statut='o',typ=modele_sdaster), CHAM_MATER =SIMP(statut='o',typ=cham_mater), CARA_ELEM =SIMP(statut='f',typ=cara_elem), @@ -4478,15 +5119,15 @@ CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=cham_elem, # OPTION =SIMP(statut='o',typ='TXM', - into=("FLUX_ELGA_TEMP","FLUX_ELNO_TEMP", - "PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG", + into=("FLUX_ELGA","FLUX_ELNO", + "PRAC_ELNO", "COOR_ELGA"), ), - b_thermique =BLOC(condition="OPTION in ('FLUX_ELNO_TEMP','FLUX_ELGA_TEMP',)", + b_thermique =BLOC(condition="OPTION in ('FLUX_ELNO','FLUX_ELGA',)", TEMP =SIMP(statut='o',typ=(cham_no_sdaster,)), ), - b_acoustique =BLOC(condition="OPTION in ('PRES_ELNO_DBEL','PRES_ELNO_REEL','PRES_ELNO_IMAG',)", + b_acoustique =BLOC(condition="OPTION in ('PRAC_ELNO',)", PRES =SIMP(statut='o',typ=(cham_no_sdaster,)), ), @@ -4505,52 +5146,52 @@ CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=cham_elem, MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), ANGLE =SIMP(statut='f',typ='I',defaut= 0), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE PELLET J.PELLET CALC_CHAR_CINE=OPER(nom="CALC_CHAR_CINE",op= 102,sd_prod=cham_no_sdaster, fr="Calcul des seconds membres associés à des charges cinématiques (conditions aux limites non dualisées)", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ), CHAR_CINE =SIMP(statut='o',typ=(char_cine_meca,char_cine_ther,char_cine_acou ),validators=NoRepeat(),max='**' ), INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE DEVESA G.DEVESA def calc_char_seisme_prod(MATR_MASS,**args ): @@ -4559,11 +5200,11 @@ def calc_char_seisme_prod(MATR_MASS,**args ): CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op= 92,sd_prod=calc_char_seisme_prod, reentrant='n',fr="Calcul du chargement sismique", - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=(UN_PARMI('MONO_APPUI','MODE_STAT' ),), MATR_MASS =SIMP(statut='o',typ=matr_asse_depl_r,fr="Matrice de masse" ), DIRECTION =SIMP(statut='o',typ='R',max=6,fr="Directions du séisme imposé"), - MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), MODE_STAT =SIMP(statut='f',typ=(mode_meca,) ), b_mode_stat =BLOC ( condition = "MODE_STAT != None", regles=(UN_PARMI('NOEUD','GROUP_NO' ),), @@ -4572,10 +5213,10 @@ CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op= 92,sd_prod=calc_char_seisme_pr ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2010 AUTEUR BOTTONI M.BOTTONI +#& MODIF COMMANDE DATE 28/02/2011 AUTEUR BOTTONI M.BOTTONI # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -4606,9 +5247,8 @@ def calc_ecrevisse_prod(self,CHARGE_MECA,CHARGE_THER1,CHARGE_THER2,TABLE,DEBIT,* CALC_ECREVISSE=MACRO(nom="CALC_ECREVISSE",op=calc_ecrevisse_ops,sd_prod=calc_ecrevisse_prod,reentrant='n', - UIinfo={"groupes":("Outils metier",)},fr="Procedure de couplage avec Ecrevisse", - - regles = (UN_PARMI('LOGICIEL','VERSION'),), + UIinfo={"groupes":("Outils-métier",)},fr="Procedure de couplage avec Ecrevisse", + regles = (UN_PARMI('LOGICIEL','VERSION'),), # CONCEPTS SORTANTS : 2 CHARGEMENTS THERMIQUE + 1 MECANIQUE + 2 TABLES POUR LE POST-TRAITEMENT # ******************************************** @@ -4740,16 +5380,16 @@ CALC_ECREVISSE=MACRO(nom="CALC_ECREVISSE",op=calc_ecrevisse_ops,sd_prod=calc_ecr COURBES =SIMP(statut='f',typ='TXM',into=("INTERACTIF","POSTSCRIPT","AUCUNE"),defaut="AUCUNE", fr="Generation eventuelle des courbes" ), LOGICIEL =SIMP(statut='f',typ='TXM',validators=LongStr(1,255),), - VERSION =SIMP(statut='f',typ='TXM',defaut="3.1.2",into = ("3.1.1","3.1.2")), + VERSION =SIMP(statut='f',typ='TXM',into = ("3.1.1","3.1.2","3.2")), ENTETE =SIMP(statut='f',typ='TXM',max='**',defaut="Titre du calcul Ecrevisse" ), IMPRESSION =SIMP(statut='f',typ='TXM',defaut='NON',into=( 'OUI','NON') ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 27/04/2010 AUTEUR DESROCHES X.DESROCHES +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -4770,7 +5410,7 @@ def calc_elem_prod(RESULTAT,**args): raise AsException("type de concept resultat non prevu") CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, fr="Compléter ou créer un résultat en calculant des champs par éléments (contraintes, déformations,... )", MODELE =SIMP(statut='f',typ=modele_sdaster), CHAM_MATER =SIMP(statut='f',typ=cham_mater), @@ -4781,8 +5421,7 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f', regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'), - CONCEPT_SENSIBLE("SEPARE"), - DERIVABLE('RESULTAT'),), + ), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), @@ -4840,48 +5479,49 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f', "INDI_ERREUR","AUTRES","TOUTES"), ), b_toutes=BLOC( condition = "TYPE_OPTION == 'TOUTES'",fr="toutes les options evol elas", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="SIEF_ELNO_ELGA", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="SIEF_ELNO", # contraintes - into=( "SIEF_ELNO_ELGA","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL", - "SIPO_ELNO_DEPL","EFGE_ELNO_DEPL","EFGE_ELNO_CART","SIGM_ELNO_CART", - "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF","SIGM_ELNO_TUYO","PROJ_ELEM_SIGM", + into=( "SIEF_ELNO","SIGM_ELNO","SIEF_ELGA", + "SIPO_ELNO","EFGE_ELNO","EFCA_ELNO","SICA_ELNO", + "SITU_ELNO","SIRO_ELEM","SIPM_ELNO", # déformations - "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPSG_ELGA_DEPL","EPSG_ELNO_DEPL", - "EPME_ELNO_DEPL","EPME_ELGA_DEPL","DEGE_ELNO_DEPL","EPSI_ELNO_TUYO", + "EPSI_ELNO","EPSI_ELGA","EPSG_ELGA","EPSG_ELNO", + "EPME_ELNO","EPME_ELGA","DEGE_ELNO","EPTU_ELNO", "EPVC_ELNO","EPVC_ELGA", # ENER - "EPOT_ELEM_DEPL","ECIN_ELEM_DEPL","ENEL_ELGA","ENEL_ELNO_ELGA", - "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","DISS_ELGA","DISS_ELNO_ELGA", + "EPOT_ELEM","ECIN_ELEM","ENEL_ELGA","ENEL_ELNO", + "ETOT_ELGA","ETOT_ELNO","ETOT_ELEM","DISS_ELGA","DISS_ELNO", # estimateurs erreur - "SIGM_NOZ1_ELGA","ERZ1_ELEM_SIGM","SIGM_NOZ2_ELGA","ERZ2_ELEM_SIGM", - "SIRE_ELNO_DEPL","ERRE_ELEM_SIGM","ERRE_ELNO_ELEM", - "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM", - "SING_ELEM","SING_ELNO_ELEM", + "SIZ1_ELGA","ERZ1_ELEM","SIZ2_ELGA","ERZ2_ELEM", + "ERME_ELEM","ERME_ELNO", + "QIRE_ELEM","QIRE_ELNO","QIZ1_ELEM","QIZ2_ELEM", + "SING_ELEM","SING_ELNO", # CRIT - "EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","CRIT_ELNO_RUPT", - "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME", - "ENDO_ELGA","ENDO_ELNO_ELGA", - "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO", - # derivees - "DEUL_ELGA_DEPL","DEDE_ELNO_DLDE","DESI_ELNO_DLSI", + "SIEQ_ELNO","SIEQ_ELGA","CRIT_ELNO", + "EPEQ_ELNO","EPEQ_ELGA","EPMQ_ELNO","EPMQ_ELGA", + "ENDO_ELGA","ENDO_ELNO", + "SITQ_ELNO","EPTQ_ELNO", # autres - "VALE_NCOU_MAXI","PRES_DBEL_DEPL"),), - - NOM_CHAM =SIMP(statut='f',typ='TXM',fr="nom du champ pour VALE_NCOU_MAXI", ), - NOM_CMP =SIMP(statut='f',typ='TXM',fr="nom de la composante pour VALE_NCOU_MAXI", ), - - b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \ - (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \ - (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \ - (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)", + "SPMX_ELGA","PRME_ELNO","VARC_ELGA"),), + +# Les 2 mots cles suivants ne sont utiles qu' a l'option SPMX_ELGA +# mais on est obligé de les laisser ici a cause des blocs + NOM_CHAM =SIMP(statut='f',typ='TXM',into=("SIEF_ELGA","EPSI_ELGA","SIEQ_ELGA","EPEQ_ELGA","VARI_ELGA"), + fr="nom du champ pour SPMX_ELGA",), + NOM_CMP =SIMP(statut='f',typ='TXM',fr="nom de la composante pour SPMX_ELGA", ), + + b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM','QIZ1_ELEM','QIZ2_ELEM') or \ + (type(OPTION)==type(()) and 'QIRE_ELEM' in OPTION) or \ + (type(OPTION)==type(()) and 'QIZ1_ELEM' in OPTION) or \ + (type(OPTION)==type(()) and 'QIZ2_ELEM' in OPTION)", RESU_DUAL=SIMP(statut='o',typ=evol_elas,fr="resultat du probleme dual"),), b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)", PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., fr="precision demandee pour calculer la carte de taille des elements"), - TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", - "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERME_ELEM","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIZ1_ELEM","QIZ2_ELEM",), fr="choix de l'estimateur d'erreur"),), EXCIT =FACT(statut='f',max='**', @@ -4902,13 +5542,13 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f', b_sigm_massif =BLOC( condition = "TYPE_OPTION == 'SIGM_MASSIF'", fr="options de contraintes elasticite 2D et 3D", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut='SIEF_ELNO_ELGA', + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut='SIEF_ELNO', fr="option de calcul des contraintes", - into=( "SIEF_ELNO_ELGA","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL",),), + into=( "SIEF_ELNO","SIGM_ELNO","SIEF_ELGA",),), - b_charge =BLOC( condition = "OPTION in ('SIGM_ELNO_DEPL','SIEF_ELGA_DEPL',) or \ - (type(OPTION)==type(()) and 'SIGM_ELNO_DEPL' in OPTION ) or \ - (type(OPTION)==type(()) and 'SIEF_ELGA_DEPL' in OPTION ) ", + b_charge =BLOC( condition = "OPTION in ('SIGM_ELNO','SIEF_ELGA',) or \ + (type(OPTION)==type(()) and 'SIGM_ELNO' in OPTION ) or \ + (type(OPTION)==type(()) and 'SIEF_ELGA' in OPTION ) ", fr="charge contenant les temperatures ou autre charge", EXCIT =FACT(statut='f',max='**', CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca) ),), @@ -4917,18 +5557,18 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f', b_sigm_struct =BLOC( condition = "TYPE_OPTION == 'SIGM_STRUCT'", fr="options de contraintes elasticite poutres, coques, tuyaux", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut='SIEF_ELNO_ELGA', + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut='SIEF_ELNO', fr="option de calcul des contraintes ou efforts generalises", - into=( "SIEF_ELNO_ELGA","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL","SIGM_ELNO_TUYO", - "SIPO_ELNO_DEPL","EFGE_ELNO_DEPL","EFGE_ELNO_CART","SIGM_ELNO_CART", - "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF"),), - - b_charge =BLOC( condition = "OPTION in ('SIGM_ELNO_DEPL','SIEF_ELGA_DEPL',\ - 'SIPO_ELNO_DEPL','EFGE_ELNO_DEPL',) or \ - (type(OPTION)==type(()) and 'SIGM_ELNO_DEPL' in OPTION ) or \ - (type(OPTION)==type(()) and 'SIEF_ELGA_DEPL' in OPTION ) or \ - (type(OPTION)==type(()) and 'SIPO_ELNO_DEPL' in OPTION ) or \ - (type(OPTION)==type(()) and 'EFGE_ELNO_DEPL' in OPTION ) ", + into=( "SIEF_ELNO","SIGM_ELNO","SIEF_ELGA","SITU_ELNO", + "SIPO_ELNO","EFGE_ELNO","EFCA_ELNO","SICA_ELNO", + ),), + + b_charge =BLOC( condition = "OPTION in ('SIGM_ELNO','SIEF_ELGA',\ + 'SIPO_ELNO','EFGE_ELNO',) or \ + (type(OPTION)==type(()) and 'SIGM_ELNO' in OPTION ) or \ + (type(OPTION)==type(()) and 'SIEF_ELGA' in OPTION ) or \ + (type(OPTION)==type(()) and 'SIPO_ELNO' in OPTION ) or \ + (type(OPTION)==type(()) and 'EFGE_ELNO' in OPTION ) ", fr="charge contenant les temperatures ou les efforts répartis (poutres) ou autre", EXCIT =FACT(statut='f',max='**', regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), @@ -4948,15 +5588,15 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f', b_epsi =BLOC( condition = "TYPE_OPTION=='EPSI'", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPME_ELNO_DEPL","EPME_ELGA_DEPL", - "DEGE_ELNO_DEPL","EPSI_ELNO_TUYO","EPVC_ELNO","EPVC_ELGA",), + into=("EPSI_ELNO","EPSI_ELGA","EPME_ELNO","EPME_ELGA", + "DEGE_ELNO","EPTU_ELNO","EPVC_ELNO","EPVC_ELGA",), ), -b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ELGA_DEPL','EPSI_ELNO_DEPL','EPSI_ELNO_TUYO' ) or \ - (type(OPTION)==type(()) and 'EPSI_ELNO_DEPL' in OPTION ) or \ - (type(OPTION)==type(()) and 'EPSI_ELNO_TUYO' in OPTION ) or \ - (type(OPTION)==type(()) and 'EPSI_ELGA_DEPL' in OPTION ) or \ - (type(OPTION)==type(()) and 'EPME_ELNO_DEPL' in OPTION ) or \ - (type(OPTION)==type(()) and 'EPME_ELGA_DEPL' in OPTION ) ", +b_charge =BLOC( condition = "OPTION in ('EPME_ELNO','EPSI_ELGA','EPME_ELGA','EPSI_ELNO','EPTU_ELNO' ) or \ + (type(OPTION)==type(()) and 'EPSI_ELNO' in OPTION ) or \ + (type(OPTION)==type(()) and 'EPTU_ELNO' in OPTION ) or \ + (type(OPTION)==type(()) and 'EPSI_ELGA' in OPTION ) or \ + (type(OPTION)==type(()) and 'EPME_ELNO' in OPTION ) or \ + (type(OPTION)==type(()) and 'EPME_ELGA' in OPTION ) ", fr="charge contenant les temperatures", EXCIT =FACT(statut='f',max='**', CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou,char_cine_meca,) ),), @@ -4964,14 +5604,14 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ ), b_ener =BLOC( condition = "TYPE_OPTION=='ENER'", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("EPOT_ELEM_DEPL","ECIN_ELEM_DEPL","ENEL_ELGA","ENEL_ELNO_ELGA", - "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","DISS_ELGA","DISS_ELNO_ELGA",), + into=("EPOT_ELEM","ECIN_ELEM","ENEL_ELGA","ENEL_ELNO", + "ETOT_ELGA","ETOT_ELNO","ETOT_ELEM","DISS_ELGA","DISS_ELNO",), ), - b_charge =BLOC( condition = "OPTION in ('EPOT_ELEM_DEPL','ECIN_ELEM_DEPL','ENEL_ELGA','ENEL_ELNO_ELGA',) or \ - (type(OPTION)==type(()) and 'EPOT_ELEM_DEPL' in OPTION ) or \ + b_charge =BLOC( condition = "OPTION in ('EPOT_ELEM','ECIN_ELEM','ENEL_ELGA','ENEL_ELNO',) or \ + (type(OPTION)==type(()) and 'EPOT_ELEM' in OPTION ) or \ (type(OPTION)==type(()) and 'ENEL_ELGA' in OPTION ) or \ - (type(OPTION)==type(()) and 'ENEL_ELNO_ELGA' in OPTION ) or \ - (type(OPTION)==type(()) and 'ECIN_ELEM_DEPL' in OPTION ) ", + (type(OPTION)==type(()) and 'ENEL_ELNO' in OPTION ) or \ + (type(OPTION)==type(()) and 'ECIN_ELEM' in OPTION ) ", fr="charge contenant les temperatures", EXCIT =FACT(statut='f',max='**', CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou) ),), @@ -4980,50 +5620,47 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ b_crit =BLOC( condition = "TYPE_OPTION=='CRIT'", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("EQUI_ELNO_SIGM","EQUI_ELGA_SIGM", - "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME", - "ENDO_ELGA","ENDO_ELNO_ELGA", - "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","CRIT_ELNO_RUPT","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO", + into=("SIEQ_ELNO","SIEQ_ELGA", + "EPEQ_ELNO","EPEQ_ELGA","EPMQ_ELNO","EPMQ_ELGA", + "ENDO_ELGA","ENDO_ELNO", + "CRIT_ELNO","SITQ_ELNO","EPTQ_ELNO", ) ), EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), ), - b_derivees =BLOC( condition = "TYPE_OPTION=='DERIVEES'", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("DEUL_ELGA_DEPL","DEDE_ELNO_DLDE","DESI_ELNO_DLSI", - ) ),), b_autres =BLOC( condition = "TYPE_OPTION=='AUTRES'", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("VALE_NCOU_MAXI","PRES_DBEL_DEPL", + into=("SPMX_ELGA","PRME_ELNO", ) ), - b_maxi =BLOC( condition = "OPTION=='VALE_NCOU_MAXI' or \ - (type(OPTION)==type(()) and 'VALE_NCOU_MAXI' in OPTION)", - NOM_CHAM =SIMP(statut='o',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI" ), - NOM_CMP =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),), + b_maxi =BLOC( condition = "OPTION=='SPMX_ELGA' or \ + (type(OPTION)==type(()) and 'SPMX_ELGA' in OPTION)", + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("SIEF_ELGA","EPSI_ELGA","SIEQ_ELGA","EPEQ_ELGA","VARI_ELGA"), + fr="Nom du champ pour SPMX_ELGA",), + NOM_CMP =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour SPMX_ELGA"),), ), b_indi_erreur =BLOC( condition = "TYPE_OPTION=='INDI_ERREUR'", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELEM_SIGM", - into=("SIGM_NOZ1_ELGA","ERZ1_ELEM_SIGM","SIGM_NOZ2_ELGA","ERZ2_ELEM_SIGM", - "SIRE_ELNO_DEPL","ERRE_ELEM_SIGM","ERRE_ELNO_ELEM", - "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM", - "SING_ELEM","SING_ELNO_ELEM", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERME_ELEM", + into=("SIZ1_ELGA","ERZ1_ELEM","SIZ2_ELGA","ERZ2_ELEM", + "ERME_ELEM","ERME_ELNO", + "QIRE_ELEM","QIRE_ELNO","QIZ1_ELEM","QIZ2_ELEM", + "SING_ELEM","SING_ELNO", )), - b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \ - (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \ - (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \ - (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)", + b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM','QIZ1_ELEM','QIZ2_ELEM') or \ + (type(OPTION)==type(()) and 'QIRE_ELEM' in OPTION) or \ + (type(OPTION)==type(()) and 'QIZ1_ELEM' in OPTION) or \ + (type(OPTION)==type(()) and 'QIZ2_ELEM' in OPTION)", RESU_DUAL=SIMP(statut='o',typ=evol_elas,fr="resultat du probleme dual"),), b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)", PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., fr="precision demandee pour calculer la carte de taille des elements" ), - TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", - "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERME_ELEM","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIZ1_ELEM","QIZ2_ELEM",), fr="choix de l'estimateur d'erreur"),), EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", @@ -5040,54 +5677,55 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ ), b_toutes =BLOC( condition = "TYPE_OPTION == 'TOUTES'",fr="toutes les options evol noli", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=( "SIEF_ELNO_ELGA","PROJ_ELEM_SIGM", - "SIGM_ELNO_TUYO","SIGM_ELNO_COQU","PROJ_ELNO_SIGM", - "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF","EFGE_ELNO_CART", + into=( "SIEF_ELNO","SIRO_ELEM", + "SITU_ELNO","SICO_ELNO", + "EFCA_ELNO","SIPO_ELNO","SIPM_ELNO", "FLHN_ELGA", # EPSI - "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPSG_ELNO_DEPL","EPSG_ELGA_DEPL", - "EPME_ELNO_DEPL","EPME_ELGA_DEPL","EPMG_ELNO_DEPL","EPMG_ELGA_DEPL", - "DEGE_ELNO_DEPL","EPSI_ELNO_TUYO", + "EPSI_ELNO","EPSI_ELGA","EPSG_ELNO","EPSG_ELGA", + "EPME_ELNO","EPME_ELGA","EPMG_ELNO","EPMG_ELGA", + "DEGE_ELNO","EPTU_ELNO", "EPSP_ELNO","EPSP_ELGA", "EPFD_ELNO","EPFD_ELGA","EPVC_ELNO","EPVC_ELGA", "EPFP_ELNO","EPFP_ELGA", - "VARI_ELNO_ELGA","VARI_ELNO_TUYO","VARI_ELNO_COQU","CRIT_ELNO_RUPT", - "EXTR_ELGA_VARI","EXTR_ELNO_VARI", + "VARC_ELGA", + "VARI_ELNO","VATU_ELNO","VACO_ELNO","CRIT_ELNO", + "VAEX_ELGA","VAEX_ELNO", # CRIT - "EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO", - "ERRE_ELEM_SIGM","ERRE_ELNO_ELEM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", - "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM", - "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME", - "DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM", - "ENDO_ELGA","ENDO_ELNO_ELGA","INDI_LOCA_ELGA","SING_ELEM", - "SING_ELNO_ELEM","ENDO_ELNO_SIGA","ENDO_ELNO_SINO", - "PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","ENEL_ELGA","ENEL_ELNO_ELGA", - "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","VALE_NCOU_MAXI", - "DISS_ELGA","DISS_ELNO_ELGA"), + "SIEQ_ELNO","SIEQ_ELGA","SITQ_ELNO","EPTQ_ELNO", + "ERME_ELEM","ERME_ELNO","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIRE_ELNO","QIZ1_ELEM","QIZ2_ELEM", + "EPEQ_ELNO","EPEQ_ELGA","EPMQ_ELNO","EPMQ_ELGA", + "DERA_ELNO","DERA_ELGA", + "ENDO_ELGA","ENDO_ELNO","INDL_ELGA","SING_ELEM", + "SING_ELNO", + "PMPB_ELNO","PMPB_ELGA","ENEL_ELGA","ENEL_ELNO", + "ETOT_ELGA","ETOT_ELNO","ETOT_ELEM","SPMX_ELGA", + "DISS_ELGA","DISS_ELNO"), ), - NORME =SIMP(statut='f',typ='TXM',defaut="VMIS", - into=("VMIS","TOTAL","VMIS_CINE","TOTAL_CINE"), - fr="Type de norme pour les options RADI_ et DCHA_"), - NOM_CHAM =SIMP(statut='f',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI"), - NOM_CMP =SIMP(statut='f',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"), +# Les 2 mots cles suivants ne sont utiles qu' a l'option SPMX_ELGA +# mais on est obligé de les laisser ici a cause des blocs + NOM_CHAM =SIMP(statut='f',typ='TXM',into=("SIEF_ELGA","EPSI_ELGA","SIEQ_ELGA","EPEQ_ELGA","VARI_ELGA"), + fr="Nom du champ pour SPMX_ELGA",), + NOM_CMP =SIMP(statut='f',typ='TXM',fr="Nom de la composante pour SPMX_ELGA"), - b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \ - (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \ - (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \ - (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)", + b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM','QIZ1_ELEM','QIZ2_ELEM') or \ + (type(OPTION)==type(()) and 'QIRE_ELEM' in OPTION) or \ + (type(OPTION)==type(()) and 'QIZ1_ELEM' in OPTION) or \ + (type(OPTION)==type(()) and 'QIZ2_ELEM' in OPTION)", RESU_DUAL=SIMP(statut='o',typ=(evol_elas,evol_noli),fr="resultat du probleme dual"),), b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)", PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., fr="precision demandee pour calculer la carte de taille des elements" ), - TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", - "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERME_ELEM","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIZ1_ELEM","QIZ2_ELEM",), fr="choix de l'estimateur d'erreur"),), - b_extr = BLOC( condition = "OPTION in ('EXTR_ELNO_VARI','EXTR_ELGA_VARI')", + b_extr = BLOC( condition = "OPTION in ('VAEX_ELNO','VAEX_ELGA')", NOM_VARI =SIMP(statut='o',typ='TXM',min= 1,max=1,fr="nom de la variable à extraire", into=("DPORO","DRHOLQ","DPVP","SATLIQ","EVP","IND_ETA","D","IND_END","TEMP_MAX","GAMP","PCR", "SEUIL_HYD","IND_HYD","PCOHE","COMP_ROC","SEUIL_ISO","ANG_DEV","X11","X22","X33","X12","X13","X23", @@ -5117,29 +5755,29 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ fr="options de contraintes non lin 2D et 3D", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', # contraintes - into=( "SIEF_ELNO_ELGA",),), + into=( "SIEF_ELNO",),), ), b_sigm_struct =BLOC( condition = "TYPE_OPTION == 'SIGM_STRUCT'", fr="options de contraintes non lin poutres, coques", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', # contraintes - into=( "SIEF_ELNO_ELGA","EFGE_ELNO_CART","SIGM_ELNO_TUYO","SIGM_ELNO_COQU", - "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF",),), + into=( "SIEF_ELNO","EFCA_ELNO","SITU_ELNO","SICO_ELNO", + ),), ), b_epsi =BLOC( condition = "TYPE_OPTION=='EPSI'", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=( "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPSG_ELNO_DEPL","EPSG_ELGA_DEPL", - "EPME_ELNO_DEPL","EPME_ELGA_DEPL","EPMG_ELNO_DEPL","EPMG_ELGA_DEPL", - "EPSP_ELNO","EPSP_ELGA","DEGE_ELNO_DEPL","EPVC_ELNO","EPVC_ELGA", + into=( "EPSI_ELNO","EPSI_ELGA","EPSG_ELNO","EPSG_ELGA", + "EPME_ELNO","EPME_ELGA","EPMG_ELNO","EPMG_ELGA", + "EPSP_ELNO","EPSP_ELGA","DEGE_ELNO","EPVC_ELNO","EPVC_ELGA", "EPFD_ELNO","EPFD_ELGA","EPFP_ELNO","EPFP_ELGA"), ), EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), ), - b_epstuyo =BLOC( condition = "OPTION == 'EPSI_ELNO_TUYO' or \ - (type(OPTION)==type(()) and 'EPSI_ELNO_TUYO' in OPTION) ", + b_epstuyo =BLOC( condition = "OPTION == 'EPTU_ELNO' or \ + (type(OPTION)==type(()) and 'EPTU_ELNO' in OPTION) ", EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), ), @@ -5147,10 +5785,10 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ b_vari =BLOC( condition = "TYPE_OPTION=='VARI'", fr="Calcul et extraction des variables internes", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("VARI_ELNO_ELGA","VARI_ELNO_TUYO","VARI_ELNO_COQU", - "EXTR_ELGA_VARI","EXTR_ELNO_VARI"), + into=("VARI_ELNO","VATU_ELNO","VACO_ELNO", + "VAEX_ELGA","VAEX_ELNO"), ), - b_extr =BLOC( condition = "OPTION in ('EXTR_ELNO_VARI','EXTR_ELGA_VARI')", + b_extr =BLOC( condition = "OPTION in ('VAEX_ELNO','VAEX_ELGA')", NOM_VARI =SIMP(statut='o',typ='TXM',min= 1,max=1,fr="nom de la variable à extraire", into=("DPORO","DRHOLQ","DPVP","SATLIQ","EVP","IND_ETA","D","IND_END","TEMP_MAX","GAMP","PCR", "SEUIL_HYD","IND_HYD","PCOHE","COMP_ROC","SEUIL_ISO","ANG_DEV","X11","X22","X33","X12","X13","X23", @@ -5161,8 +5799,8 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ b_ener =BLOC( condition = "TYPE_OPTION=='ENER'", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","ENEL_ELGA","ENEL_ELNO_ELGA", - "DISS_ELGA","DISS_ELNO_ELGA",), + into=("ETOT_ELGA","ETOT_ELNO","ETOT_ELEM","ENEL_ELGA","ENEL_ELNO", + "DISS_ELGA","DISS_ELNO",), ), EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), @@ -5170,52 +5808,44 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ b_crit =BLOC( condition = "TYPE_OPTION=='CRIT'", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("EQUI_ELNO_SIGM","EQUI_ELGA_SIGM", - "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME", - "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","CRIT_ELNO_RUPT", - "ENDO_ELGA","ENDO_ELNO_ELGA", - "PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO", + into=("SIEQ_ELNO","SIEQ_ELGA", + "EPEQ_ELNO","EPEQ_ELGA","EPMQ_ELNO","EPMQ_ELGA", + "CRIT_ELNO", + "ENDO_ELGA","ENDO_ELNO", + "PMPB_ELNO","PMPB_ELGA","SITQ_ELNO","EPTQ_ELNO", ) ), ), b_autres =BLOC( condition = "TYPE_OPTION=='AUTRES'", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("VALE_NCOU_MAXI",) ), - b_maxi =BLOC( condition = "OPTION=='VALE_NCOU_MAXI' or \ - (type(OPTION)==type(()) and 'VALE_NCOU_MAXI' in OPTION)", - NOM_CHAM =SIMP(statut='o',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI" ), - NOM_CMP =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),), + into=("SPMX_ELGA",) ), + b_maxi =BLOC( condition = "OPTION=='SPMX_ELGA' or \ + (type(OPTION)==type(()) and 'SPMX_ELGA' in OPTION)", + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("SIEF_ELGA","EPSI_ELGA","SIEQ_ELGA","EPEQ_ELGA","VARI_ELGA"), + fr="Nom du champ pour SPMX_ELGA",), + NOM_CMP =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour SPMX_ELGA"),), ), b_indi_erreur =BLOC( condition = "TYPE_OPTION=='INDI_ERREUR'", - OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELEM_SIGM", - into=("ERRE_ELEM_SIGM","ERRE_ELNO_ELEM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", - "DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM", - "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM", - "SING_ELEM","SING_ELNO_ELEM",) ), - - b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \ - (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \ - (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \ - (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERME_ELEM", + into=("ERME_ELEM","ERME_ELNO","ERZ1_ELEM","ERZ2_ELEM", + "DERA_ELNO","DERA_ELGA", + "QIRE_ELEM","QIRE_ELNO","QIZ1_ELEM","QIZ2_ELEM", + "SING_ELEM","SING_ELNO",) ), + + b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM','QIZ1_ELEM','QIZ2_ELEM') or \ + (type(OPTION)==type(()) and 'QIRE_ELEM' in OPTION) or \ + (type(OPTION)==type(()) and 'QIZ1_ELEM' in OPTION) or \ + (type(OPTION)==type(()) and 'QIZ2_ELEM' in OPTION)", RESU_DUAL =SIMP(statut='o',typ=(evol_elas,evol_noli),fr="resultat du probleme dual")), b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)", PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., fr="precision demandee pour calculer la carte de taille des elements" ), - TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM", - "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERME_ELEM","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIZ1_ELEM","QIZ2_ELEM",), fr="choix de l'estimateur d'erreur"),), - - b_indic = BLOC( condition ="OPTION in ('DCHA_ELNO_SIGM','DCHA_ELGA_SIGM','RADI_ELNO_SIGM','RADI_ELGA_SIGM') or\ - (type(OPTION)==type(()) and 'DCHA_ELNO_SIGM' in OPTION) or\ - (type(OPTION)==type(()) and 'DCHA_ELGA_SIGM' in OPTION) or\ - (type(OPTION)==type(()) and 'RADI_ELNO_SIGM' in OPTION) or\ - (type(OPTION)==type(()) and 'RADI_ELGA_SIGM' in OPTION) ", - NORME =SIMP(statut='f',typ='TXM',defaut="VMIS", - into=("VMIS","TOTAL","VMIS_CINE","TOTAL_CINE") ), - ), ), ), # fin bloc evol_noli @@ -5223,9 +5853,8 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ # thermique : evol_ther, fourier_ther b_ther =BLOC( condition = "AsType(RESULTAT) in (evol_ther,fourier_ther,)" ,fr="options thermiques", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("DEUL_ELGA_TEMP","DETE_ELNO_DLTE","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP", - "HYDR_ELNO_ELGA","DURT_ELGA_META","DURT_ELNO_META", - "SOUR_ELGA_ELEC","ERRE_ELEM_TEMP","ERRE_ELNO_ELEM",),), + into=("FLUX_ELGA","FLUX_ELNO", + "DURT_ELNO","SOUR_ELGA","ERTH_ELEM","ERTH_ELNO",),), EXCIT =FACT(statut='f',max='**', regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), CHARGE =SIMP(statut='o',typ=char_ther ), @@ -5242,8 +5871,7 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ # acoustique b_acou =BLOC( condition = "AsType(RESULTAT) in (acou_harmo,mode_acou,)",fr="options acoustiques", OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG", - "INTE_ELNO_ACTI","INTE_ELNO_REAC", + into=("PRAC_ELNO", "INTE_ELNO", ),), EXCIT =FACT(statut='f',max='**', regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), @@ -5280,39 +5908,37 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), ), - SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', - fr="Liste des paramètres de sensibilité.", - ang="List of sensitivity parameters"), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/01/2010 AUTEUR BODEL C.BODEL +#& MODIF COMMANDE DATE 04/05/2011 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== # RESPONSABLE NISTOR I.NISTOR @@ -5353,7 +5979,7 @@ CALC_ESSAI = MACRO(nom = 'CALC_ESSAI', op = calc_essai_ops, sd_prod = calc_essai_prod, reentrant = 'n', - UIinfo = {"groupes":("Outils métier",)}, + UIinfo = {"groupes":("Outils-métier","Dynamique",)}, fr = "Outil de post-traitement interactif pour Meidee ", INTERACTIF = SIMP( statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ), RESU_IDENTIFICATION = FACT( statut='f',max='**', @@ -5388,7 +6014,7 @@ CALC_ESSAI = MACRO(nom = 'CALC_ESSAI', EPS = SIMP(statut='f',typ='R', defaut = 0.) ) ), - IDENTIFICATION = FACT( statut='f',max='**', + IDENTIFICATION = FACT( statut='f',max='**', ALPHA = SIMP(statut='f',typ='R', defaut = 0.), EPS = SIMP(statut='f',typ='R', defaut = 0.), OBSERVABILITE = SIMP(statut='o',typ=mode_meca), @@ -5413,49 +6039,49 @@ CALC_ESSAI = MACRO(nom = 'CALC_ESSAI', # Si on realise une modification structurale, on donne les DDL capteurs et interface b_modif = BLOC( condition="MODIFSTRUCT!=None", GROUP_NO_CAPTEURS = FACT( statut='f', max='**', - GROUP_NO = SIMP(statut='o',typ='TXM', max='**'), + GROUP_NO = SIMP(statut='o',typ=grno, max='**'), NOM_CMP = SIMP(statut='o',typ='TXM', max='**'), ), GROUP_NO_EXTERIEUR = FACT( statut='f', max='**', - GROUP_NO = SIMP(statut='o',typ='TXM', max='**'), + GROUP_NO = SIMP(statut='o',typ=grno, max='**'), NOM_CMP = SIMP(statut='o',typ='TXM', max='**'), ), ), ), ); -#& MODIF COMMANDE DATE 28/04/2009 AUTEUR ASSIRE A.ASSIRE +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== # RESPONSABLE ASSIRE A.ASSIRE from Macro.calc_europlexus_ops import calc_europlexus_ops def calc_europlexus_prod(self,COURBE=None,**args): if COURBE is not None: - self.type_sdprod(args['TABLE_COURBE'],table_sdaster) + self.type_sdprod(args['TABLE_COURBE'],table_sdaster) return evol_noli CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",op=calc_europlexus_ops,sd_prod=calc_europlexus_prod, reentrant='n', - #UIinfo={"groupes":("Dynamique rapide",)}, + UIinfo={"groupes":("Outils-métier","Dynamique",)}, fr="Chainage Code_Aster-Europlexus", - LOGICIEL = SIMP(statut='f', typ='TXM', defaut='/home/europlex/EPXD/EUROPLEXUS_GESTION/runepx_d'), + LOGICIEL = SIMP(statut='f', typ='TXM', defaut='/home/europlex/EPXD/bin/europlexus'), MODELE = SIMP(statut='o',typ=modele_sdaster), CARA_ELEM = SIMP(statut='o',typ=cara_elem), @@ -5478,7 +6104,7 @@ CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",op=calc_europlexus_ops,sd_prod=cal 'PT6L','ZONE','POUT','ECRO', 'APPU','BLOQ','PRESS','PMAT', 'DKT3','DEPL','FNOM','TABLE','FTAB', - 'MTTI','NEPE','LIAI',), ), + 'MTTI','NEPE','LIAI',), ), UNITE_DIME=SIMP(statut='f',typ='I'), Q4GS = SIMP(statut='f',typ='I'), @@ -5521,12 +6147,12 @@ CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",op=calc_europlexus_ops,sd_prod=cal OBSERVATION =FACT(statut='f',max='**', SUIVI_DDL = SIMP(statut='o',typ='TXM',defaut="OUI",max=1,into=("OUI","NON")), b_suivi =BLOC(condition = "SUIVI_DDL == 'OUI' ", - regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), - EXCLUS('PAS_NBRE','PAS_INST',), - EXCLUS('GROUP_NO','TOUT_GROUP_NO',), + regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), + EXCLUS('PAS_NBRE','PAS_INST',), + EXCLUS('GROUP_NO','TOUT_GROUP_NO',), EXCLUS('GROUP_MA','TOUT_GROUP_MA',), ), - NOM_CHAM = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', defaut = ('DEPL',), - into=('DEPL','VITE','ACCE','SIEF_ELGA','EPSI_ELGA','VARI_ELGA'),), + NOM_CHAM = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',defaut=('DEPL',),into=('DEPL' + ,'VITE','ACCE','SIEF_ELGA','EPSI_ELGA','VARI_ELGA'),), PAS_INST = SIMP(statut='f',typ='R'), PAS_NBRE = SIMP(statut='f',typ='I'), GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), @@ -5537,11 +6163,11 @@ CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",op=calc_europlexus_ops,sd_prod=cal ), - ARCHIVAGE =FACT(statut='f', regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), EXCLUS('PAS_NBRE','PAS_INST',), ), + ARCHIVAGE =FACT(statut='o', regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), EXCLUS('PAS_NBRE','PAS_INST',), ), PAS_INST = SIMP(statut='f',typ='R'), PAS_NBRE = SIMP(statut='f',typ='I'), CONT_GENER = SIMP(statut='o',typ='TXM',defaut="NON",max=1,into=("OUI","NON")), - ), + ), COURBE = FACT(statut='f',max='**', regles=(EXCLUS('GROUP_NO','GROUP_MA')), UNITE_ALIT = SIMP(statut='f',typ='I'), NOM_CHAM = SIMP(statut='f',typ='TXM'), @@ -5556,40 +6182,40 @@ CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",op=calc_europlexus_ops,sd_prod=cal ), b_courbe = BLOC(condition = "COURBE != None", regles=(AU_MOINS_UN('PAS_NBRE_COURBE','PAS_INST_COURBE',), - AU_MOINS_UN('TABLE_COURBE',)), + AU_MOINS_UN('TABLE_COURBE',)), PAS_INST_COURBE = SIMP(statut='f',typ='R'), PAS_NBRE_COURBE = SIMP(statut='f',typ='I'), TABLE_COURBE = SIMP(statut='f', typ=CO), ), DOMAINES = FACT(statut='f',max='**', GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - IDENTIFIANT = SIMP(statut='f',typ='I'),), + IDENTIFIANT = SIMP(statut='f',typ='I'),), INTERFACES = FACT(statut='f',max='**', GROUP_MA_1 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), GROUP_MA_2 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), TOLE = SIMP(statut='f',typ='R'), - IDENT_DOMAINE_1 = SIMP(statut='f',typ='I'), + IDENT_DOMAINE_1 = SIMP(statut='f',typ='I'), IDENT_DOMAINE_2 = SIMP(statut='f',typ='I'),), INFO =SIMP(statut='f',typ='I',defaut=1,into=( 1, 2 ) ), ) ; -#& MODIF COMMANDE DATE 06/07/2009 AUTEUR GALENNE E.GALENNE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE ANGLES J.ANGLES def calc_fatigue_prod(TYPE_CALCUL,OPTION,**args): @@ -5602,7 +6228,7 @@ def calc_fatigue_prod(TYPE_CALCUL,OPTION,**args): CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant='n', fr="Calculer un champ de dommage de fatigue subit par une structure et déterminer le plan critique" +" dans lequel le cisaillement est maximal.", - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, TYPE_CALCUL = SIMP(statut='o',typ='TXM', into=("CUMUL_DOMMAGE","FATIGUE_MULTI","FATIGUE_VIBR") ), @@ -5614,7 +6240,7 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant into=("DOMA_ELNO_SIGM","DOMA_ELGA_SIGM", "DOMA_ELNO_EPSI","DOMA_ELGA_EPSI", "DOMA_ELNO_EPME","DOMA_ELGA_EPME") ), - + b_sigm =BLOC(condition = "OPTION == 'DOMA_ELNO_SIGM' or OPTION == 'DOMA_ELGA_SIGM'", fr="Calcul a partir d un champ de contraintes.", HISTOIRE =FACT(statut='o', @@ -5640,7 +6266,7 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant TAHERI_NAPPE =SIMP(statut='f',typ=(nappe_sdaster,formule) ), TAHERI_FONC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), ), - + b_domma_moda =BLOC(condition = "TYPE_CALCUL == 'FATIGUE_VIBR'", fr="Calcul d un champ de dommage en dynamique vibratoire", regles=(PRESENT_PRESENT('DOMMAGE','MATER', ),), @@ -5682,39 +6308,134 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant b_non_period =BLOC(condition = "TYPE_CHARGE == 'NON_PERIODIQUE'", CRITERE =SIMP(statut='o',typ='TXM', into=("MATAKE_MODI_AV","DANG_VAN_MODI_AV","FATESOCI_MODI_AV","VMIS_TRESCA") ), - b_fati_np =BLOC(condition = + b_fati_np =BLOC(condition = "(CRITERE == 'MATAKE_MODI_AV' or CRITERE == 'DANG_VAN_MODI_AV' or CRITERE == 'FATESOCI_MODI_AV')", PROJECTION =SIMP(statut='o',typ='TXM',into=("UN_AXE", "DEUX_AXES") ), - DELTA_OSCI =SIMP(statut='f',typ='R',defaut= 0.0E+0), + DELTA_OSCI =SIMP(statut='f',typ='R',defaut= 0.0E+0), ), ), ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 02/02/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET + +def calc_ferrailage_prod(RESULTAT,**args): + if AsType(RESULTAT) != None : return AsType(RESULTAT) + raise AsException("type de concept resultat non prevu") + + +CALC_FERRAILLAGE=OPER(nom="CALC_FERRAILLAGE",op=175,sd_prod=calc_ferrailage_prod, reentrant='o', + UIinfo={"groupes":("Post-traitements","Outils-métier",)}, + fr="calcul de cartes de densité de ferraillage ", + + RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans,) ), + + +#==== +# Sélection des numéros d'ordre pour lesquels on fait le calcul : +#==== + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + + b_acce_reel =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + + +# +#==== +# Définition des grandeurs caractéristiques +#==== +# + TYPE_COMB =SIMP(statut='o',typ='TXM',into=('ELU','ELS')), + +# mot clé facteur répétable pour assigner les caractéristiques locales par zones topologiques (GROUP_MA) + AFFE =FACT(statut='o',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + ENROBG =SIMP(statut='o',typ='R'), # enrobage + CEQUI =SIMP(statut='f',typ='R'), # coefficient d'équivalence acier/béton (pour ELS) + SIGM_ACIER =SIMP(statut='o',typ='R'), # contrainte admissible dans l'acier + SIGM_BETON =SIMP(statut='o',typ='R'), # contrainte admissible dans le béton + PIVA =SIMP(statut='f',typ='R'), # valeur du pivot a (pour ELU) + PIVB =SIMP(statut='f',typ='R'), # valeur du pivot b (pour ELU) + ), + ) + + +############################################################################################################## +# Remarques : +#----------- +# l'épaisseur des coques sera récupérée automatiquement +# via le cara_elem sous-jacent au résultat + +# Le résultat produit est un champ constant par éléments associé à la grandeur FER2_R +# qui comporte les composantes : +# +# DNSXI densité d'acier longitudinal suivant X, peau inf +# DNSXS densité d'acier longitudinal suivant X, peau sup +# DNSYI densité d'acier longitudinal suivant Y, peau inf +# DNSYS densité d'acier longitudinal suivant Y, peau sup +# DNST densité d'acier transversal +# SIGMBE contrainte beton +# EPSIBE deformation béton + +# arrêt en erreur si: +# - EFGE_ELNO n'a pas été précédemment calculé et n'est donc pas présent dans la structure de données RESULTAT +# - si aucun CARA_ELEM n'est récupérable via la structure de données RESULTAT +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE ADOBES A.ADOBES CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu_sdaster, reentrant='n', fr="Calculer les paramètres modaux d'une structure soumise à un écoulement", - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, VITE_FLUI =FACT(statut='f', fr="Définir la plage de vitesse fluide étudiée", VITE_MIN =SIMP(statut='f',typ='R' ), @@ -5722,7 +6443,7 @@ CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu_sdaster, NB_POIN =SIMP(statut='f',typ='I' ), ), BASE_MODALE =FACT(statut='o', - + regles=(AU_MOINS_UN('AMOR_REDUIT','AMOR_UNIF','AMOR_REDUIT_CONN'),), MODE_MECA =SIMP(statut='o',typ=mode_meca ), NUME_ORDRE =SIMP(statut='f',typ='I',max='**'), @@ -5737,23 +6458,23 @@ CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu_sdaster, DEFORMEE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS def calc_fonc_interp_prod(FONCTION, NOM_PARA_FONC, **args): @@ -5774,9 +6495,9 @@ def calc_fonc_interp_prod(FONCTION, NOM_PARA_FONC, **args): raise AsException("type de concept resultat non prevu") CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=calc_fonc_interp_prod, - docu="U4.32.01-e",reentrant='n', + docu="U4.32.01",reentrant='n', fr="Définit une fonction (ou une nappe) à partir d'une fonction FORMULE à 1 ou 2 variables", - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, regles=(UN_PARMI('VALE_PARA','LIST_PARA'),), FONCTION =SIMP(statut='o',typ=(formule,fonction_sdaster,nappe_sdaster,fonction_c) ), VALE_PARA =SIMP(statut='f',typ='R',max='**'), @@ -5787,7 +6508,7 @@ CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=calc_fonc_interp_pr PROL_DROITE =SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ), PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ), NOM_PARA_FONC =SIMP(statut='f',typ='TXM'), - b_eval_nappe =BLOC(condition = "NOM_PARA_FONC != None", + b_eval_nappe =BLOC(condition = "NOM_PARA_FONC != None", regles=(UN_PARMI('VALE_PARA_FONC','LIST_PARA_FONC'),), VALE_PARA_FONC =SIMP(statut='f',typ='R',max='**'), LIST_PARA_FONC =SIMP(statut='f',typ=listr8_sdaster ), @@ -5798,34 +6519,34 @@ CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=calc_fonc_interp_pr TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 22/03/2011 AUTEUR COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS from Macro.calc_fonction_ops import calc_fonction_ops def calc_fonction_prod(self,DERIVE,EXTRACTION,INTEGRE,INVERSE,COMB,COMB_C, ENVELOPPE,FRACTILE,SPEC_OSCI,ASSE,FFT,COMPOSE,CORR_ACCE,PUISSANCE, - LISS_ENVELOP,ABS, **args): + LISS_ENVELOP,ABS, REGR_POLYNOMIALE, **args): if (INTEGRE != None): return fonction_sdaster if (DERIVE != None): return fonction_sdaster if (INVERSE != None): return fonction_sdaster - if (COMB != None): + if (COMB != None): type_vale=AsType(COMB[0]['FONCTION']) for mcfact in COMB : if(AsType(mcfact['FONCTION'])!=type_vale): @@ -5855,22 +6576,24 @@ def calc_fonction_prod(self,DERIVE,EXTRACTION,INTEGRE,INVERSE,COMB,COMB_C, if (AsType(vale) == fonction_c) : return fonction_sdaster if (CORR_ACCE != None): return fonction_sdaster if (LISS_ENVELOP!= None): return nappe_sdaster + if (REGR_POLYNOMIALE != None): return fonction_sdaster if (PUISSANCE != None): return AsType(PUISSANCE[0]['FONCTION']) if (ABS != None): return fonction_sdaster raise AsException("type de concept resultat non prevu") + CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_fonction_prod ,fr="Effectue des opérations mathématiques sur des concepts de type fonction", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, regles=(UN_PARMI('DERIVE','INTEGRE','SPEC_OSCI','COMB','COMB_C','ENVELOPPE', 'COMPOSE','EXTRACTION','ASSE','FFT','CORR_ACCE', 'PUISSANCE', - 'LISS_ENVELOP','INVERSE','ABS','FRACTILE'),), + 'LISS_ENVELOP','INVERSE','ABS','FRACTILE','REGR_POLYNOMIALE'),), FFT =FACT(statut='f',fr="Transformée de Fourier ou de son inverse", FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c) ), METHODE =SIMP(statut='f',typ='TXM',defaut="PROL_ZERO",into=("PROL_ZERO","TRONCATURE","COMPLET") ), b_syme =BLOC ( condition = " AsType(FONCTION)==fonction_c ", - SYME =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ), + SYME =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ), ), ), DERIVE =FACT(statut='f',fr="Dérivée d une fonction", @@ -5889,6 +6612,10 @@ CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_foncti ELARG =SIMP(statut='f',typ='R',defaut =0.1 ), TOLE_LISS =SIMP(statut='f',typ='R',defaut =0.25 ), ), + REGR_POLYNOMIALE = FACT(statut='f',fr="Régression polynomiale d'une fonction", + FONCTION =SIMP(statut='o',typ=fonction_sdaster), + DEGRE =SIMP(statut='o',typ='I'), + ), SPEC_OSCI =FACT(statut='f',fr="Spectre d'oscillateur", METHODE =SIMP(statut='f',typ='TXM',defaut="NIGAM",into=("NIGAM",) ), FONCTION =SIMP(statut='o',typ=fonction_sdaster ), @@ -5912,8 +6639,8 @@ CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_foncti COEF_R =SIMP(statut='f',typ='R',fr="Coefficient réel de la combinaison linéaire associée à la fonction" ), COEF_C =SIMP(statut='f',typ='C',fr="Coefficient complexe de la combinaison linéaire associée à la fonction" ), ), - b_comb =BLOC ( condition = " (COMB != None) or (COMB_C != None)", - LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ), + b_comb =BLOC ( condition = "COMB != None or COMB_C != None or REGR_POLYNOMIALE != None", + LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ), ), COMPOSE =FACT(statut='f',fr="Composition de deux fonctions FONC_RESU(FONC_PARA)", FONC_RESU =SIMP(statut='o',typ=fonction_sdaster), @@ -5945,22 +6672,25 @@ CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_foncti ), INVERSE =FACT(statut='f',fr="Inverse d'une fonction", FONCTION =SIMP(statut='o', typ=fonction_sdaster), - ), + ), NOM_PARA =SIMP(statut='f',typ='TXM',into=C_PARA_FONCTION() ), NOM_RESU =SIMP(statut='f',typ='TXM' ), - INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG"), + fr="Type d'interpolation pour les abscisses et les ordonnées de la " \ + "fonction ou bien pour le paramètre de la nappe."), PROL_DROITE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), NOM_PARA_FONC =SIMP(statut='f',typ='TXM',into=C_PARA_FONCTION() ), - INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ), + INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG"), + fr="Type d'interpolation pour les abscisses et les ordonnées de la fonction"), PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) -#& MODIF COMMANDE DATE 18/01/2010 AUTEUR TARDIEU N.TARDIEU +#& MODIF COMMANDE DATE 08/02/2011 AUTEUR TARDIEU N.TARDIEU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -5980,7 +6710,7 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene, fr="Calculer l'effet de surpression hydrodynamique due au mouvement d'entrainement de la structure" +" en analyse sismique", reentrant ='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=(EXCLUS('MODE_MECA','MODELE_GENE'), PRESENT_PRESENT( 'MODELE_GENE','NUME_DDL_GENE'), @@ -6027,7 +6757,7 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene, RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), ), b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), @@ -6035,32 +6765,39 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene, b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), - POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - ), - + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), - ), - - ) ; -#& MODIF COMMANDE DATE 08/12/2009 AUTEUR PROIX J-M.PROIX + ), + ) ; +#& MODIF COMMANDE DATE 14/12/2010 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# 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 @@ -6075,12 +6812,64 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene, # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== +# RESPONSABLE DEVESA + +CALC_FORC_NONL=OPER(nom="CALC_FORC_NONL",op= 183,sd_prod=dyna_trans,reentrant='n', + fr="Créer un dyna_trans contenant des champs nommés 'DEPL' correspondant à 'FONL_NOEU' ", + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + RESULTAT =SIMP(statut='o',typ=resultat_sdaster), + + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'), + ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM' ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, defaut="FONL_NOEU", + into=("FONL_NOEU",) ), + + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + + COMP_INCR =C_COMP_INCR(), +) ; +#& MODIF COMMANDE DATE 07/12/2010 AUTEUR GENIAUT S.GENIAUT +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2006 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. +# ====================================================================== # RESPONSABLE GALENNE E.GALENNE CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, fr="Calcul du taux de restitution d'énergie par la méthode theta en thermo-élasticité" +" et les facteurs d'intensité de contraintes.", reentrant='f', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, regles=(EXCLUS('COMP_ELAS','COMP_INCR'), CONCEPT_SENSIBLE("ENSEMBLE"), REUSE_SENSIBLE(), @@ -6108,7 +6897,7 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, DIRE_THETA =SIMP(statut='f',typ=cham_no_sdaster ), DIRECTION =SIMP(statut='f',typ='R',max=3,min=3), R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), MODULE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), ), ), @@ -6118,7 +6907,7 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, b_no_mult =BLOC(condition="(AsType(RESULTAT) != mult_elas)", regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST', 'TOUT_MODE','NUME_MODE','LIST_MODE','FREQ','LIST_FREQ'),), - + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), @@ -6129,7 +6918,7 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, LIST_MODE =SIMP(statut='f',typ=listis_sdaster), LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), - + b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)", CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", @@ -6143,28 +6932,20 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, NOM_CAS =SIMP(statut='f',typ='TXM',validators=NoRepeat() ), ), - + EXCIT =FACT(statut='f',max='**', CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)), FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ), ), SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS") ), - - COMP_ELAS =FACT(statut='f', + + COMP_ELAS =C_COMP_ELAS('CALC_G'), + + COMP_INCR =FACT(statut='f', RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS", - into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS") ), - CALCUL_CONTRAINTE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",) ), - regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), - ), - COMP_INCR =FACT(statut='f', - RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS", - into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE","ELAS_VMIS_PUIS") ), - DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC") ), + into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE","VMIS_ISOT_PUIS") ), + DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC") ), regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), @@ -6174,7 +6955,7 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, SIGM =SIMP(statut='f',typ=cham_elem), DEPL =SIMP(statut='f',typ=cham_no_sdaster), ), - + LISSAGE =FACT(statut='d', DEGRE =SIMP(statut='f',typ='I',defaut=5,into=(0,1,2,3,4,5,6,7) ), LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE","LAGRANGE_REGU"),), @@ -6207,29 +6988,280 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 04/05/2011 AUTEUR MACOCCO K.MACOCCO +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# MACRO DE COUPLAGE IFS AVEC SATURNE VIA YACS +# +from Macro.calc_ifs_dnl_ops import calc_ifs_dnl_ops +# +CALC_IFS_DNL= MACRO(nom='CALC_IFS_DNL',op=calc_ifs_dnl_ops,sd_prod=evol_noli,reentrant='f', + fr="Calcul de l'évolution dynamique d'une structure couplée à un domaine fluide (résolu avec le code Saturne) via YACS", + UIinfo={"groupes":("Résolution","Dynamique",)}, + regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',), + CONCEPT_SENSIBLE('ENSEMBLE'),), +#IFS +#=> + GROUP_MA_IFS =SIMP(statut='o',typ=grma,max='**'), + NOM_CMP_IFS =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + UNITE_NOEUD =SIMP(statut='f',typ='I',defaut= 81 ), + UNITE_ELEM =SIMP(statut='f',typ='I',defaut= 82 ), + PAS_INIT =SIMP(statut='o',typ='R' ), +#<= +#IFS + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + MODE_STAT =SIMP(statut='f',typ=mode_meca), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + MASS_DIAG =SIMP(statut='f',typ='TXM',into=("OUI","NON",) ), +#IFS +#=> +#(une charge force nodale est fournie par le couplage avec code_saturne + EXCIT =FACT(statut='f',max='**', +#<= +#IFS + regles=(PRESENT_ABSENT('FONC_MULT','ACCE'), + PRESENT_PRESENT('ACCE','VITE','DEPL'), + # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'), + ), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", + into=("FIXE_CSTE","SUIV","DIDI")), +#IFS +#=> +#(une charge force nodale est fournie par le couplage avec code_saturne +# CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)), + CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)), +#<= +#IFS + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), + EXCIT_GENE =FACT(statut='f',max='**', + FONC_MULT =SIMP(statut='f',typ=fonction_sdaster,max='**' ), + VECT_GENE =SIMP(statut='f',typ=vect_asse_gene,max='**' ), + ), + CONTACT =SIMP(statut='f',typ=char_contact), + SOUS_STRUC =FACT(statut='f',min=01,max='**', + regles=(UN_PARMI('TOUT','SUPER_MAILLE'),), + CAS_CHARGE =SIMP(statut='o',typ='TXM' ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + SUPER_MAILLE=SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + AMOR_RAYL_RIGI = SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE"),), + AMOR_MODAL =FACT(statut='f', + regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),), + MODE_MECA =SIMP(statut='f',typ=mode_meca), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**' ), + LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), + NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ), + REAC_VITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + PROJ_MODAL =FACT(statut='f',max='**', + MODE_MECA =SIMP(statut='o',typ=mode_meca), + NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ), + regles=(PRESENT_PRESENT('MASS_GENE','RIGI_GENE'),), + MASS_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + RIGI_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + DEPL_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + VITE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + ACCE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + ), +#------------------------------------------------------------------- + COMP_INCR =C_COMP_INCR(), +#------------------------------------------------------------------- + COMP_ELAS =C_COMP_ELAS('DYNA_NON_LINE'), +#------------------------------------------------------------------- + b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire", + ETAT_INIT =FACT(statut='o', + regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI',), + EXCLUS('EVOL_NOLI','DEPL',), + EXCLUS('EVOL_NOLI','VITE'), + EXCLUS('EVOL_NOLI','ACCE'), + EXCLUS('EVOL_NOLI','SIGM',), + EXCLUS('EVOL_NOLI','VARI',), + EXCLUS('NUME_ORDRE','INST'), ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + VITE =SIMP(statut='f',typ=cham_no_sdaster), + ACCE =SIMP(statut='f',typ=cham_no_sdaster), + SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)), + VARI =SIMP(statut='f',typ=cham_elem), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + NUME_DIDI =SIMP(statut='f',typ='I'), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ),), + b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif", + ETAT_INIT =FACT(statut='f', + regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI',), + EXCLUS('EVOL_NOLI','DEPL',), + EXCLUS('EVOL_NOLI','VITE'), + EXCLUS('EVOL_NOLI','ACCE'), + EXCLUS('EVOL_NOLI','SIGM',), + EXCLUS('EVOL_NOLI','VARI',), + EXCLUS('NUME_ORDRE','INST'), ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + VITE =SIMP(statut='f',typ=cham_no_sdaster), + ACCE =SIMP(statut='f',typ=cham_no_sdaster), + SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)), + VARI =SIMP(statut='f',typ=cham_elem), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + NUME_DIDI =SIMP(statut='f',typ='I'), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ),), +#------------------------------------------------------------------- +#IFS : pas besoin d'INCREMENT +# INCREMENT =C_INCREMENT(), +#------------------------------------------------------------------- + SCHEMA_TEMPS =FACT(statut='o', + SCHEMA =SIMP(statut='o',min=1,max=1,typ='TXM', + into=("DIFF_CENT","TCHAMWA","NEWMARK","HHT","THETA_METHODE","KRENK"),), + COEF_MASS_SHIFT =SIMP(statut='f',typ='R',defaut= 0.0E+0 ), + b_tchamwa = BLOC(condition="SCHEMA=='TCHAMWA'", + PHI =SIMP(statut='f',typ='R',defaut= 1.05),), + + b_newmark = BLOC(condition="SCHEMA=='NEWMARK'", + BETA =SIMP(statut='f',typ='R',defaut= 0.25), + GAMMA =SIMP(statut='f',typ='R',defaut= 0.5),), + + b_hht = BLOC(condition="SCHEMA=='HHT'", + ALPHA =SIMP(statut='f',typ='R',defaut= -0.3 ), + MODI_EQUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),),), + + b_theta = BLOC(condition="SCHEMA=='THETA_METHODE'", + THETA =SIMP(statut='f',typ='R',defaut= 1.,val_min=0.5,val_max=100. ),), + + b_krenk = BLOC(condition="SCHEMA=='KRENK'", + KAPPA =SIMP(statut='f',typ='R',defaut= 1.0,val_min=1.0,val_max=100. ),), + + b_explicit= BLOC(condition="SCHEMA=='TCHAMWA'or SCHEMA=='DIFF_CENT'", + STOP_CFL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),), + FORMULATION =SIMP(statut='o',typ='TXM',into=("ACCELERATION",),),), + + b_implicit= BLOC(condition="SCHEMA!='TCHAMWA'and SCHEMA!='DIFF_CENT'", + FORMULATION =SIMP(statut='o',max=1,typ='TXM',into=("DEPLACEMENT","VITESSE","ACCELERATION"),),), + ), +#------------------------------------------------------------------- + NEWTON =C_NEWTON(), +#------------------------------------------------------------------- + RECH_LINEAIRE =C_RECH_LINEAIRE(), +#------------------------------------------------------------------- + CONVERGENCE =C_CONVERGENCE(), +#------------------------------------------------------------------- + SOLVEUR =C_SOLVEUR(), +#------------------------------------------------------------------- + OBSERVATION =C_OBSERVATION(), +#------------------------------------------------------------------- + SUIVI_DDL =C_SUIVI_DDL(), +#------------------------------------------------------------------- + AFFICHAGE =C_AFFICHAGE(), +#------------------------------------------------------------------- + ARCHIVAGE =C_ARCHIVAGE(), +#------------------------------------------------------------------- + CRIT_FLAMB =FACT(statut='f',min=1,max=1, + NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3), + CHAR_CRIT =SIMP(statut='f',typ='R',min=2,max=2,defaut=(-10.0,10.), + fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"), + RIGI_GEOM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + bloc_ddl_exclus=BLOC(condition="(RIGI_GEOM=='NON')", + DDL_EXCLUS =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=40, + into=('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', + 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2', + 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4', + 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6', + 'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON','DCX', + 'DCY','DCZ','H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z', + 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C','V11','V12','V13','V21','V22', + 'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21','PRES22','PRES23', + 'PRES31','PRES32','PRES33','VARI','LAG_GV')),), + INST_CALCUL =SIMP(statut='f',typ='TXM',defaut="LISTE_ARCHIVAGE",into=("LISTE_ARCHIVAGE","TOUT_PAS",) ), + ), + MODE_VIBR =FACT(statut='f',min=1,max=1, + MATR_RIGI =SIMP(statut='f',typ='TXM',defaut="ELASTIQUE",into=("ELASTIQUE","TANGENTE","SECANTE",) ), + NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3, + fr="Nombre de fréquences propres à calculer"), + BANDE =SIMP(statut='f',typ='R',min=2,max=2, + fr="Valeur des deux fréquences délimitant la bande de recherche",), + INST_CALCUL =SIMP(statut='f',typ='TXM',defaut="LISTE_ARCHIVAGE",into=("LISTE_ARCHIVAGE","TOUT_PAS",) ), + ), +#------------------------------------------------------------------- + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité", + ang="List of sensitivity parameters"), +#------------------------------------------------------------------- + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), + b_info=BLOC(condition="(INFO==2)", + fr="filtre les messages émis dans le .mess selon le type de message demandé", + INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), + into=("CONTACT", + "MECA_NON_LINE", + "PILOTAGE", + "FACTORISATION", + "APPARIEMENT"), + ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE ZENTNER I.ZENTNER CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=table_fonction, fr="Calcul d'une matrice interspectrale à partir d'une fonction du temps", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, INST_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ), INST_FIN =SIMP(statut='o',typ='R' ), DUREE_ANALYSE =SIMP(statut='f',typ='R' ), @@ -6239,10 +7271,10 @@ CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=table_fonction, TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1 , 2) ), ) ; -#& MODIF COMMANDE DATE 18/01/2010 AUTEUR TARDIEU N.TARDIEU +#& MODIF COMMANDE DATE 08/02/2011 AUTEUR TARDIEU N.TARDIEU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -6261,7 +7293,7 @@ CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=table_fonction, CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r, fr="Calcul des matrices de masse, d'amortissement ou de rigidité ajoutés", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=(EXCLUS('MODE_MECA','CHAM_NO','MODELE_GENE'), PRESENT_ABSENT('NUME_DDL_GENE','CHAM_NO'), PRESENT_PRESENT('MODELE_GENE','NUME_DDL_GENE'),), @@ -6301,7 +7333,7 @@ CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r, RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), ), b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), @@ -6310,27 +7342,35 @@ CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r, TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), - b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), ), ) ; -#& MODIF COMMANDE DATE 21/09/2009 AUTEUR BOYERE E.BOYERE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -6372,7 +7412,7 @@ def calc_matr_elem_prod(OPTION,**args): CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod ,fr="Calcul des matrices élémentaires",reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, OPTION =SIMP(statut='o',typ='TXM', into=("RIGI_MECA","MASS_MECA","RIGI_GEOM", @@ -6485,27 +7525,27 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ), ), ) ; -#& MODIF COMMANDE DATE 16/11/2009 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 13/01/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE BARGELLINI R.BARGELLINI CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Thermique",)}, fr="Calcule l'évolution métallurgique à partir du résultat d'un calcul thermique", MODELE =SIMP(statut='o',typ=modele_sdaster ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), @@ -6536,106 +7576,198 @@ CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o', GROUP_MA =SIMP(statut='f',typ=grma, validators=NoRepeat(), max='**'), MAILLE =SIMP(statut='f',typ=ma, validators=NoRepeat(), max='**'), ), - OPTION =SIMP(statut='f',typ='TXM' - ,into=("META_ELNO_TEMP",) ), + OPTION =SIMP(statut='f',typ='TXM' + ,into=("META_ELNO",) ), ) ; -#& MODIF COMMANDE DATE 16/02/2010 AUTEUR COURTOIS M.COURTOIS +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR COURTOIS M.COURTOIS # 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS +def calc_miss_sdprod(self, TYPE_RESU, **kwargs): + if TYPE_RESU == 'TABLE': + return table_sdaster + elif TYPE_RESU == 'HARM_GENE': + return harm_gene + elif TYPE_RESU == 'TRAN_GENE': + return tran_gene + else: + return None + from Macro.calc_miss_ops import calc_miss_ops -CALC_MISS = MACRO(nom="CALC_MISS",op=calc_miss_ops, - fr="Préparation des données puis exécution du logiciel MISS3D", - UIinfo={"groupes":("Résolution",)}, +CALC_MISS = MACRO(nom="CALC_MISS", + op=calc_miss_ops, + sd_prod=calc_miss_sdprod, + fr="Préparation des données, exécution du logiciel Miss3D, et post-traitement", + UIinfo={"groupes":("Résolution","Outils-métier",)}, + + TYPE_RESU = SIMP(statut='o', typ='TXM', into=('HARM_GENE', 'TRAN_GENE', 'TABLE', 'FICHIER'), + fr="Type de résultat produit en post-traitement. FICHIER : pas de post-traitement"), + PROJET = SIMP(statut='f', typ='TXM', defaut='MODELE', + fr="Nom de l'étude Miss"), + REPERTOIRE = SIMP(statut='f', typ='TXM', + fr="Répertoire de travail de Miss"), + VERSION = SIMP(statut='f', typ='TXM', into=("V6.6","V6.5"), defaut="V6.6", + fr="Version de Miss utilisée"), + + TABLE_SOL = SIMP(statut='o', typ=table_sdaster, + fr="Table des propriétés du sol"), + + # pas de post-traitement + b_fichier = BLOC(condition="TYPE_RESU == 'FICHIER'", + regles=(UN_PARMI('MACR_ELEM_DYNA', 'BASE_MODALE'),), + MACR_ELEM_DYNA = SIMP(statut='f', typ=macr_elem_dyna, + fr="Macro élément produit en amont"), + BASE_MODALE = SIMP(statut='f', typ=mode_meca, + fr="Base de modes"), + b_base_modale = BLOC(condition="BASE_MODALE is not None", + MATR_RIGI = SIMP(statut='f', typ=(matr_asse_depl_r, matr_asse_depl_c),), + MATR_MASS = SIMP(statut='f', typ=matr_asse_depl_r ), + ), + AMOR_REDUIT = SIMP(statut='f', typ='R', max='**'), + GROUP_MA_INTERF = SIMP(statut='o', typ=grma, max='**', + fr="Groupe de mailles de l'interface"), + + UNITE_IMPR_ASTER = SIMP(statut='f', typ='I', defaut=25, + fr="Unité des résultats transmis par Code_Aster à Miss"), + UNITE_RESU_IMPE = SIMP(statut='f', typ='I', defaut=38, + fr="Unité logique des impédances écrites par Miss"), + UNITE_RESU_FORC = SIMP(statut='f', typ='I', defaut=28, + fr="Unité logique des forces sismiques écrites par Miss"), + ), + # si post-traitement + b_donnees = BLOC(condition="TYPE_RESU != 'FICHIER'", + MACR_ELEM_DYNA = SIMP(statut='f', typ=macr_elem_dyna, + fr="Macro élément produit en amont"), + BASE_MODALE = SIMP(statut='o', typ=mode_meca, + fr="Base de modes"), + MATR_RIGI = SIMP(statut='o', typ=(matr_asse_depl_r, matr_asse_depl_c),), + MATR_MASS = SIMP(statut='o', typ=matr_asse_depl_r ), + AMOR_REDUIT = SIMP(statut='o', typ='R', max='**'), + GROUP_MA_INTERF = SIMP(statut='o', typ=grma, max='**', + fr="Groupe de mailles de l'interface"), + + UNITE_IMPR_ASTER = SIMP(statut='f', typ='I', + fr="Unité des résultats transmis par Code_Aster à Miss"), + UNITE_RESU_IMPE = SIMP(statut='f', typ='I', + fr="Unité logique des impédances à relire."), + UNITE_RESU_FORC = SIMP(statut='f', typ='I', + fr="Unité logique des forces sismiques à relire"), + ), + # Paramètres du calcul Miss + PARAMETRE = FACT(statut='o', + regles=(PRESENT_PRESENT('OFFSET_MAX', 'OFFSET_NB'), + PRESENT_PRESENT('FREQ_MIN', 'FREQ_MAX','FREQ_PAS'), + UN_PARMI('FREQ_MIN', 'LIST_FREQ'), + PRESENT_PRESENT('SPEC_MAX', 'SPEC_NB'),), + FREQ_MIN = SIMP(statut='f', typ='R'), + FREQ_MAX = SIMP(statut='f', typ='R'), + FREQ_PAS = SIMP(statut='f', typ='R'), + LIST_FREQ = SIMP(statut='f', typ='R', max='**'), + Z0 = SIMP(statut='f', typ='R', defaut=0.), + SURF = SIMP(statut='f', typ='TXM', into=("OUI","NON",), defaut="NON"), + RFIC = SIMP(statut='f', typ='R', defaut=0.), + + ALGO = SIMP(statut='f', typ='TXM', into=("DEPL","REGU")), + DREF = SIMP(statut='f', typ='R'), + SPEC_MAX = SIMP(statut='f', typ='R'), + SPEC_NB = SIMP(statut='f', typ='I'), + OFFSET_MAX = SIMP(statut='f', typ='R'), + OFFSET_NB = SIMP(statut='f', typ='I'), + TYPE = SIMP(statut='f', typ='TXM', into=("BINAIRE","ASCII",), defaut="ASCII"), + ), + # Post-traitement type 1 - tran_gene + b_post_tran_gene = BLOC(condition="TYPE_RESU == 'TRAN_GENE'", + regles=(AU_MOINS_UN('ACCE_X', 'ACCE_Y', 'ACCE_Z'),), + MODELE = SIMP(statut='o', typ=(modele_sdaster),), + ACCE_X = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Y = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Z = SIMP(statut='f', typ=fonction_sdaster,), + INST_FIN = SIMP(statut='o', typ='R', fr="Instant final du calcul"), + PAS_INST = SIMP(statut='o', typ='R', fr="Pas de temps du calcul"), + ), + # Post-traitement type 1 - harm_gene + b_post_harm_gene = BLOC(condition="TYPE_RESU == 'HARM_GENE'", + regles=(AU_MOINS_UN('EXCIT_HARMO', 'ACCE_X', 'ACCE_Y', 'ACCE_Z'), + PRESENT_ABSENT('EXCIT_HARMO', 'ACCE_X', 'ACCE_Y', 'ACCE_Z', 'INST_FIN'), + ENSEMBLE('INST_FIN', 'PAS_INST'),), + MODELE = SIMP(statut='o', typ=(modele_sdaster),), + ACCE_X = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Y = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Z = SIMP(statut='f', typ=fonction_sdaster,), + INST_FIN = SIMP(statut='f', typ='R', fr="Instant final du calcul"), + PAS_INST = SIMP(statut='f', typ='R', fr="Pas de temps du calcul"), + # identique à EXCIT de DYNA_LINE_HARM au type attendu pour VECT_ASSE près + EXCIT_HARMO = FACT(statut='f', max='**', + regles=(UN_PARMI('VECT_ASSE', 'CHARGE'), + UN_PARMI('FONC_MULT', 'FONC_MULT_C', 'COEF_MULT', 'COEF_MULT_C'),), + VECT_ASSE = SIMP(statut='f', typ=cham_no_sdaster,), + CHARGE = SIMP(statut='f', typ=char_meca), + TYPE_CHARGE = SIMP(statut='f', typ='TXM', defaut="FIXE", into=("FIXE",),), + FONC_MULT_C = SIMP(statut='f', typ=(fonction_c, formule_c),), + COEF_MULT_C = SIMP(statut='f', typ='C'), + FONC_MULT = SIMP(statut='f', typ=(fonction_sdaster, nappe_sdaster, formule) ), + COEF_MULT = SIMP(statut='f', typ='R'), + PHAS_DEG = SIMP(statut='f', typ='R', defaut=0.), + PUIS_PULS = SIMP(statut='f', typ='I', defaut=0), + ), + ), + # Post-traitement type 2 + b_post_table = BLOC(condition="TYPE_RESU == 'TABLE'", + regles=(AU_MOINS_UN('ACCE_X', 'ACCE_Y', 'ACCE_Z'),), + MODELE = SIMP(statut='o', typ=(modele_sdaster),), + GROUP_NO = SIMP(statut='o', typ=grno, max='**', + fr="Liste des groupes de noeud de post-traitement"), + ACCE_X = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Y = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Z = SIMP(statut='f', typ=fonction_sdaster,), + INST_FIN = SIMP(statut='o', typ='R', fr="Instant final du calcul"), + PAS_INST = SIMP(statut='o', typ='R', fr="Pas de temps du calcul"), + NORME = SIMP(statut='o', typ='R', + fr="Valeur de la norme du spectre d'oscillateur" ), + AMOR_SPEC_OSCI = SIMP(statut='o', typ='R', max='**', + fr="Amortissement du spectre d'oscillateur"), + LIST_FREQ = SIMP(statut='f', typ=listr8_sdaster, + fr="Fréquences utilisées pour le calcul du spectre d'oscillateur"), + ), - OPTION = FACT(statut='o', - regles=(UN_PARMI('TOUT','MODULE'),), - TOUT = SIMP(statut='f',typ='TXM',into=("OUI",)), - MODULE = SIMP(statut='f',typ='TXM',into=("MISS_IMPE",)), # "PRE_MISS","MISS_EVOL", - ), - TABLE_SOL = SIMP(statut='f', typ=table_sdaster), - - PROJET = SIMP(statut='o', typ='TXM'), - REPERTOIRE = SIMP(statut='f', typ='TXM'), - VERSION = SIMP(statut='f', typ='TXM', into=("V1_4",), defaut="V1_4"), - - UNITE_IMPR_ASTER = SIMP(statut='f',typ='I',defaut=25), -# UNITE_OPTI_MISS = SIMP(statut='f',typ='I',defaut=26), -# UNITE_MODELE_SOL = SIMP(statut='f',typ='I',defaut=27), - UNITE_RESU_IMPE = SIMP(statut='f',typ='I',defaut=30), - UNITE_RESU_FORC = SIMP(statut='f',typ='I',defaut=0), - PARAMETRE = FACT(statut='f', - regles=(PRESENT_PRESENT('OFFSET_MAX','OFFSET_NB'), - PRESENT_PRESENT('FREQ_MIN','FREQ_MAX','FREQ_PAS'), - PRESENT_PRESENT('LFREQ_NB','LFREQ_LISTE'), - UN_PARMI('FREQ_MIN', 'LFREQ_NB'), - PRESENT_PRESENT('CONTR_NB','CONTR_LISTE'), - PRESENT_PRESENT('SPEC_MAX','SPEC_NB'),), - FREQ_MIN = SIMP(statut='f',typ='R'), - FREQ_MAX = SIMP(statut='f',typ='R'), - FREQ_PAS = SIMP(statut='f',typ='R'), - LFREQ_NB = SIMP(statut='f',typ='I'), - LFREQ_LISTE = SIMP(statut='f',typ='R',max='**'), - Z0 = SIMP(statut='f',typ='R',defaut=0.), - SURF = SIMP(statut='f',typ='TXM',into=("OUI","NON",),defaut="NON"), - ISSF = SIMP(statut='f',typ='TXM',into=("OUI","NON",),defaut="NON"), - TYPE = SIMP(statut='f',typ='TXM',into=("BINAIRE","ASCII",),defaut="ASCII"), - RFIC = SIMP(statut='f',typ='R',defaut=0.), - DIRE_ONDE = SIMP(statut='f',typ='R',max='**'), - - FICH_RESU_IMPE = SIMP(statut='f',typ='TXM'), - FICH_RESU_FORC = SIMP(statut='f',typ='TXM'), - - ALGO = SIMP(statut='f',typ='TXM',into=("DEPL","REGU")), - DREF = SIMP(statut='f',typ='R'), - SPEC_MAX = SIMP(statut='f',typ='R'), - SPEC_NB = SIMP(statut='f',typ='I'), - OFFSET_MAX = SIMP(statut='f',typ='R'), - OFFSET_NB = SIMP(statut='f',typ='I'), - - FICH_POST_TRAI = SIMP(statut='f',typ='TXM'), - CONTR_NB = SIMP(statut='f',typ='I'), - CONTR_LISTE = SIMP(statut='f',typ='R',max='**'), - ), - INFO = SIMP(statut='f', typ='I', defaut=1, into=(1,2)), + INFO = SIMP(statut='f', typ='I', defaut=1, into=(1,2)), ) -#& MODIF COMMANDE DATE 27/04/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2008 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. +# 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. # ====================================================================== - # RESPONSABLE NISTOR I.NISTOR from Macro.calc_modal_ops import calc_modal_ops @@ -6647,7 +7779,7 @@ def calc_modal_prod(self,AMORTISSEMENT,**args): CALC_MODAL=MACRO(nom="CALC_MODAL",op=calc_modal_ops, - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, sd_prod=calc_modal_prod, fr="Calcul des modes propres reels ou complexes dans une seule commande", MODELE =SIMP(statut='o',typ=modele_sdaster), @@ -6655,22 +7787,14 @@ CALC_MODAL=MACRO(nom="CALC_MODAL",op=calc_modal_ops, CHAM_MATER =SIMP(statut='o',typ=cham_mater), INST =SIMP(statut='f',typ='R',defaut=0.), CARA_ELEM =SIMP(statut='f',typ=cara_elem), - CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), - SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT") ), - b_mult_front =BLOC(condition="METHODE=='MULT_FRONT'",fr="Paramètres associés à la méthode multifrontale", - RENUM =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ), - ), - b_ldlt =BLOC(condition="METHODE=='LDLT'",fr="Paramètres associés à la méthode LDLT", - RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), - ),), + CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), METHODE =SIMP(statut='f',typ='TXM',defaut="SORENSEN", into=("TRI_DIAG","JACOBI","SORENSEN","QZ") ), b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'", PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ), NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ), - NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), + NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), ), b_jacobi =BLOC(condition = "METHODE == 'JACOBI'", PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ), @@ -6679,13 +7803,13 @@ CALC_MODAL=MACRO(nom="CALC_MODAL",op=calc_modal_ops, NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ), ), b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'", - PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ), - NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ), + PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ), + NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ), PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ), ), b_qz =BLOC(condition = "METHODE == 'QZ'", - TYPE_QZ =SIMP(statut='f',typ='TXM',defaut="QZ_SIMPLE",into=("QZ_QR","QZ_SIMPLE","QZ_EQUI") ), - ), + TYPE_QZ =SIMP(statut='f',typ='TXM',defaut="QZ_SIMPLE",into=("QZ_QR","QZ_SIMPLE","QZ_EQUI") ), + ), MODE_RIGIDE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), fr="Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG" ), CALC_FREQ =FACT(statut='d',min=0, @@ -6705,13 +7829,12 @@ CALC_MODAL=MACRO(nom="CALC_MODAL",op=calc_modal_ops, fr="Recherche des valeurs propres dans une bande donnée", FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2, fr="Valeur des deux fréquences délimitant la bande de recherche"), - ), + ), APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"), - fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ), + fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ), regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),), DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), - NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ), NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ), SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), @@ -6729,41 +7852,41 @@ CALC_MODAL=MACRO(nom="CALC_MODAL",op=calc_modal_ops, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 28/07/2009 AUTEUR TORKHANI M.TORKHANI +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # 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. +# 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. # ====================================================================== -# RESPONSABLE Mohamed TORKHANI +# RESPONSABLE TORKHANI M.TORKHANI from Macro.calc_mode_rotation_ops import calc_mode_rotation_ops CALC_MODE_ROTATION=MACRO(nom="CALC_MODE_ROTATION",op=calc_mode_rotation_ops,sd_prod=table_container, reentrant='n',fr="calculer les fréquences et modes d'un système en fonction des vitesses de rotation", - UIinfo={"groupes":("Résolution",)}, - + UIinfo={"groupes":("Résolution","Dynamique",)}, + MATR_A =SIMP(statut='o',typ=matr_asse_depl_r ), MATR_B =SIMP(statut='o',typ=matr_asse_depl_r ), MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r ), MATR_GYRO =SIMP(statut='f',typ=matr_asse_depl_r ), VITE_ROTA =SIMP(statut='f',typ='R',max='**'), - + METHODE =SIMP(statut='f',typ='TXM',defaut="QZ", into=("QZ","SORENSEN",) ), - + CALC_FREQ =FACT(statut='d',min=0, OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","CENTRE",), fr="Choix de l option et par conséquent du shift du problème modal" ), @@ -6778,30 +7901,30 @@ CALC_MODE_ROTATION=MACRO(nom="CALC_MODE_ROTATION",op=calc_mode_rotation_ops,sd_p NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), ), ), - + VERI_MODE =FACT(statut='d',min=0, STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-6 ), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-3 ), STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),), -); -#& MODIF COMMANDE DATE 27/04/2010 AUTEUR DESROCHES X.DESROCHES +); +#& MODIF COMMANDE DATE 02/02/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE DESROCHES X.DESROCHES def calc_no_prod(RESULTAT,**args): @@ -6810,16 +7933,12 @@ def calc_no_prod(RESULTAT,**args): CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='f', fr="Enrichir une SD Résultat par des champs aux noeuds calculés à partir de champs aux éléments évalués aux noeuds", - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, RESULTAT =SIMP(statut='o',typ=resultat_sdaster), - SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', - fr="Liste des paramètres de sensibilité.", - ang="List of sensitivity parameters"), regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'), - CONCEPT_SENSIBLE("SEPARE"), - DERIVABLE('RESULTAT'),), + ), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), @@ -6837,47 +7956,31 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='f', PRECISION =SIMP(statut='o',typ='R',),), OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', into=("FORC_NODA","REAC_NODA", - "FORC_NODA_NONL", - "DCHA_NOEU_SIGM", - "DEGE_NOEU_DEPL", - "DETE_NOEU_DLTE", - "DEDE_NOEU_DLDE", - "DESI_NOEU_DLSI", - "DURT_NOEU_META", - "EFGE_NOEU_CART","EFGE_NOEU_DEPL", - "ENDO_NOEU_SINO", - "ENEL_NOEU_ELGA", - "EPMG_NOEU_DEPL", - "EPSA_NOEU", - "EPSG_NOEU_DEPL", - "EPSI_NOEU_DEPL", + "DERA_NOEU", + "DURT_NOEU", + "EFCA_NOEU","EFGE_NOEU", + "ENDO_NOEU", + "ENEL_NOEU", + "EPMG_NOEU", + "EPSG_NOEU", + "EPSI_NOEU", "EPSP_NOEU" , "EPVC_NOEU","EPFD_NOEU","EPFP_NOEU","EPFP_NOEU", - "EQUI_NOEU_EPME","EQUI_NOEU_EPSI","EQUI_NOEU_SIGM", - "ERRE_NOEU_ELEM","QIRE_NOEU_ELEM", - "FLUX_NOEU_TEMP", - "HYDR_NOEU_ELGA", - "INTE_NOEU_ACTI","INTE_NOEU_REAC", - "META_NOEU_TEMP", - "PMPB_NOEU_SIEF", - "PRES_NOEU_DBEL","PRES_NOEU_IMAG","PRES_NOEU_REEL", - "RADI_NOEU_SIGM", - "SIEF_NOEU_ELGA", - "SIGM_NOEU_CART","SIGM_NOEU_COQU","SIGM_NOEU_DEPL", - "SIGM_NOEU_SIEF", - "SIPO_NOEU_DEPL","SIPO_NOEU_SIEF", - "SIRE_NOEU_DEPL", - "VARI_NOEU","EXTR_NOEU_VARI","VARI_NOEU_ELGA",) ), - - b_forc_reac =BLOC(condition = """(OPTION == 'FORC_NODA') or (type(OPTION) == type(()) and 'FORC_NODA' in OPTION) or\ - (OPTION == 'REAC_NODA') or (type(OPTION) == type(()) and 'REAC_NODA' in OPTION)""", - MODELE =SIMP(statut='f',typ=modele_sdaster), - ), - b_forc_nonl =BLOC(condition = """(OPTION == 'FORC_NODA_NONL')""", - MODELE =SIMP(statut='f',typ=modele_sdaster), - COMP_INCR =C_COMP_INCR(), - ), - + "EPMQ_NOEU","EPEQ_NOEU","SIEQ_NOEU", + "ERME_NOEU","ERTH_NOEU","QIRE_NOEU", + "FLUX_NOEU", + "HYDR_NOEU", + "INTE_NOEU", + "META_NOEU", + "PMPB_NOEU", + "PRAC_NOEU", + "SIEF_NOEU", + "SICA_NOEU","SICO_NOEU","SIGM_NOEU", + "SIPO_NOEU", + "VAEX_NOEU","VARI_NOEU","DISS_NOEU",) ), + + + MODELE =SIMP(statut='f',typ=modele_sdaster), CHAM_MATER =SIMP(statut='f',typ=cham_mater), CARA_ELEM =SIMP(statut='f',typ=cara_elem), EXCIT =FACT(statut='f',max='**', @@ -6886,45 +7989,37 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='f', TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", into=("FIXE_CSTE","FIXE_PILO","SUIV") ), ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), - GROUP_MA_RESU =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - MAILLE_RESU =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), - GROUP_NO_RESU =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - NOEUD_RESU =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + ) ; -#& MODIF COMMANDE DATE 03/05/2010 AUTEUR PROIX J-M.PROIX +#& MODIF COMMANDE DATE 07/12/2010 AUTEUR GENIAUT S.GENIAUT # 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. +# 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. # ====================================================================== # RESPONSABLE PROIX J-M.PROIX CALC_POINT_MAT=OPER(nom="CALC_POINT_MAT",op=33,sd_prod=table_sdaster,reentrant='f', UIinfo={"groupes":("Résolution",)}, - fr="intégrer une loi de comportement", + fr="Intégrer une loi de comportement", MATER =SIMP(statut='o',typ=mater_sdaster,max=1), COMP_INCR =C_COMP_INCR(), - COMP_ELAS =FACT(statut='f',max='**', - RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), - RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS", - into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS","ELAS_HYPER")), - DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT",) ), - ), + COMP_ELAS =C_COMP_ELAS('CALC_POINT_MAT'), INCREMENT =C_INCREMENT(), NEWTON =C_NEWTON(), CONVERGENCE =C_CONVERGENCE(), @@ -6938,9 +8033,9 @@ CALC_POINT_MAT=OPER(nom="CALC_POINT_MAT",op=33,sd_prod=table_sdaster,reentrant=' ## ANGLE : rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées. ANGLE =SIMP(statut='f',typ='R',max=1, defaut=0.), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2)), - + regles=(UN_PARMI('SIXX','EPXX'),UN_PARMI('SIYY','EPYY'),UN_PARMI('SIZZ','EPZZ'), - UN_PARMI('SIXY','EPXY'),UN_PARMI('SIXZ','EPXZ'),UN_PARMI('SIYZ','EPYZ'),), + UN_PARMI('SIXY','EPXY'),UN_PARMI('SIXZ','EPXZ'),UN_PARMI('SIYZ','EPYZ'),), SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), @@ -6973,13 +8068,34 @@ CALC_POINT_MAT=OPER(nom="CALC_POINT_MAT",op=33,sd_prod=table_sdaster,reentrant=' VARI_INIT=FACT(statut='f', VALE = SIMP(statut='o',typ='R',max='**'), ), + MATR_C1=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ='R',max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + NUME_COLONNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ), + ), + MATR_C2=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ='R',max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + NUME_COLONNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ), + ), + VECT_IMPO=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + ), NB_VARI_TABLE =SIMP(statut='f',typ='I',max=1,), + + ARCHIVAGE =FACT(statut='f', + LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_ARCH =SIMP(statut='f',typ='I' ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), + ), ); -#& MODIF COMMANDE DATE 07/07/2009 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 28/02/2011 AUTEUR BARGELLI R.BARGELLINI # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -7009,7 +8125,7 @@ from Macro.calc_precont_ops import calc_precont_ops CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli, fr="Imposer la tension définie par le BPEL dans les cables", - reentrant='f',UIinfo={"groupe":("Modélisation",)}, + reentrant='f',UIinfo={"groupes":("Modélisation",)}, reuse =SIMP(statut='f',typ='evol_noli'), MODELE =SIMP(statut='o',typ=modele_sdaster), CHAM_MATER =SIMP(statut='o',typ=cham_mater), @@ -7017,7 +8133,6 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli, CABLE_BP =SIMP(statut='o',typ=cabl_precont,validators=NoRepeat(),max='**'), CABLE_BP_INACTIF =SIMP(statut='f',typ=cabl_precont,validators=NoRepeat(),max='**'), INCREMENT =C_INCREMENT(), - NEWTON =C_NEWTON(), RECH_LINEAIRE =C_RECH_LINEAIRE(), CONVERGENCE =C_CONVERGENCE(), ETAT_INIT =FACT(statut='f', @@ -7040,6 +8155,13 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli, NUME_DIDI =SIMP(statut='f',typ='I'), INST_ETAT_INIT =SIMP(statut='f',typ='R'), ), + METHODE = SIMP(statut='d',typ='TXM',defaut="NEWTON",into=("NEWTON","IMPL_EX")), + b_meth_newton = BLOC(condition = "METHODE == 'NEWTON'", + NEWTON = C_NEWTON(), + ), + b_meth_impl_ex = BLOC(condition = "METHODE == 'IMPL_EX'", + IMPL_EX = C_IMPL_EX(), + ), SOLVEUR =C_SOLVEUR(), INFO =SIMP(statut='f',typ='I',into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), @@ -7050,23 +8172,105 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli, COMP_INCR =C_COMP_INCR(), ) ; -#& MODIF COMMANDE DATE 28/01/2010 AUTEUR BODEL C.BODEL +#& MODIF COMMANDE DATE 02/02/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# ====================================================================== +# RESPONSABLE GNICOLAS +def calc_sensi_prod(RESULTAT,**args): + if AsType(RESULTAT) != None : return AsType(RESULTAT) + raise AsException("type de concept resultat non prevu") + +CALC_SENSI=OPER(nom="CALC_SENSI",op=132,sd_prod=calc_sensi_prod,reentrant='f', + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + fr="Compléter ou créer un résultat en calculant des champs dérivés )", + MODELE =SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + + RESULTAT =SIMP(statut='o',typ=resultat_sdaster, + fr="Résultat d'une commande globale"), + + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'), + CONCEPT_SENSIBLE("SEPARE"), + DERIVABLE('RESULTAT'),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM' ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectué que sur ces mailles là"), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectué que sur ces mailles là"), + + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + + into=('DEDE_ELNO','DEDE_NOEU','DESI_ELNO', + 'DESI_NOEU','DETE_ELNO','DETE_NOEU', + 'EFGE_ELNO','EPSI_ELGA','EPSI_ELNO', + 'EPSP_ELNO','FLUX_ELNO','FLUX_NOEU','REAC_NODA','SIEF_ELGA', + 'SIEF_ELNO','SIEF_NOEU', + 'SIGM_ELNO','SIGM_NOEU', + 'SIPO_ELNO','VARI_ELNO'), + ), + + + # -- mots cles inutiles mais qui permettent de reutiliser certaines routines : + EXCIT =FACT(statut='f',max='**', CHARGE=SIMP(statut='o',typ=(char_meca,) ),), + NORME =SIMP(statut='f',typ='TXM',defaut="XXXX", into=("XXXX",),), + + + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2008 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. +# 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. # ====================================================================== # RESPONSABLE CORUS M.CORUS @@ -7076,7 +8280,7 @@ from Macro.calc_spec_ops import calc_spec_ops CALC_SPEC=MACRO(nom="CALC_SPEC",op= calc_spec_ops,sd_prod=table_fonction, reentrant='n', fr="Calcule une matrice interspectrale ou des fonctions de transferts", - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, TAB_ECHANT =FACT(statut='f', NOM_TAB =SIMP(statut='o',typ=table_sdaster), LONGUEUR_ECH =FACT(statut='f', @@ -7098,7 +8302,7 @@ CALC_SPEC=MACRO(nom="CALC_SPEC",op= calc_spec_ops,sd_prod=table_fonction, #-- Cas de la matrice interspectrale --# INTERSPE =FACT(statut='f', FENETRE =SIMP(statut='f',typ='TXM',defaut="RECT",into=("RECT","HAMM","HANN","EXPO","PART",)), - BLOC_DEFI_FENE =BLOC(condition = "FENETRE == 'EXPO' or FENETRE == 'PART' ", + BLOC_DEFI_FENE =BLOC(condition = "FENETRE == 'EXPO' or FENETRE == 'PART' ", DEFI_FENE =SIMP(statut='f',typ='R',max='**'), ), ), @@ -7108,30 +8312,30 @@ CALC_SPEC=MACRO(nom="CALC_SPEC",op= calc_spec_ops,sd_prod=table_fonction, REFER =SIMP(statut='o',typ='I',max='**'), FENETRE =SIMP(statut='f',typ='TXM',defaut="RECT",into=("RECT","HAMM","HANN","EXPO","PART",)), # DEFI_FENE =SIMP(statut='f',typ='R',max='**'), - BLOC_DEFI_FENE =BLOC(condition = "FENETRE == 'EXPO' or FENETRE == 'PART' ", + BLOC_DEFI_FENE =BLOC(condition = "FENETRE == 'EXPO' or FENETRE == 'PART' ", DEFI_FENE =SIMP(statut='f',typ='R',max='**'), ), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ); -#& MODIF COMMANDE DATE 15/03/2010 AUTEUR COURTOIS M.COURTOIS +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2005 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. +# 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. # ====================================================================== # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS @@ -7155,6 +8359,7 @@ from Macro.calc_table_ops import calc_table_ops CALC_TABLE=MACRO(nom="CALC_TABLE",op=calc_table_ops, sd_prod=calc_table_prod, fr="Opérations sur une table", + UIinfo={"groupes":("Tables",)}, reentrant='f', regles=(DERIVABLE('TABLE'),), TABLE = SIMP(statut='o',typ=table_sdaster), @@ -7162,7 +8367,7 @@ CALC_TABLE=MACRO(nom="CALC_TABLE",op=calc_table_ops, sd_prod=calc_table_prod, fr = "Suite des opérations à effectuer sur la table", OPERATION = SIMP(statut='o', typ='TXM', into=('FILTRE', 'EXTR', 'RENOMME', 'TRI', 'COMB', 'AJOUT', 'OPER', 'SUPPRIME')), - + b_filtre = BLOC(condition="OPERATION == 'FILTRE'", fr="Sélectionne les lignes de la table vérifiant un critère", NOM_PARA = SIMP(statut='o',typ='TXM'), @@ -7184,32 +8389,32 @@ CALC_TABLE=MACRO(nom="CALC_TABLE",op=calc_table_ops, sd_prod=calc_table_prod, PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3 ), ), ), - + b_extr = BLOC(condition="OPERATION == 'EXTR'", fr="Extrait une ou plusieurs colonnes de la table", NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', fr="Noms des colonnes à extraire"), ), - + b_suppr = BLOC(condition="OPERATION == 'SUPPRIME'", fr="Supprime une ou plusieurs colonnes de la table", NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', fr="Noms des colonnes à supprimer"), ), - + b_renomme = BLOC(condition="OPERATION == 'RENOMME'", fr="Renomme un ou plusieurs paramètres de la table", NOM_PARA = SIMP(statut='o', typ='TXM', validators=NoRepeat(), min=2, max=2, fr="Couple (ancien nom du paramètre, nouveau nom du paramètre)",), ), - + b_tri = BLOC(condition="OPERATION == 'TRI'", fr="Ordonne les lignes de la table selon les valeurs d'un ou plusieurs paramètres", NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), ORDRE = SIMP(statut='f',typ='TXM',defaut="CROISSANT", into=("CROISSANT","DECROISSANT") ), ), - + b_comb = BLOC(condition="OPERATION == 'COMB'", fr="Combine deux tables ayant éventuellement des paramètres communs", TABLE = SIMP(statut='o',typ=table_sdaster, @@ -7220,14 +8425,14 @@ CALC_TABLE=MACRO(nom="CALC_TABLE",op=calc_table_ops, sd_prod=calc_table_prod, RESTREINT = SIMP(statut='f', typ='TXM', into=('OUI', 'NON'), defaut='NON', fr="Restreint la fusion uniquement aux lignes où les NOM_PARA sont communs"), ), - + b_append = BLOC(condition="OPERATION == 'AJOUT'", fr="Ajoute une ligne à la table initiale", NOM_PARA = SIMP(statut='o',typ='TXM',max='**', fr="Noms des paramètres dont les valeurs sont fournies sous VALE"), VALE = SIMP(statut='o',typ=assd,max='**', fr='Valeurs des paramètres'), ), - + b_oper = BLOC(condition="OPERATION == 'OPER'", fr="Applique une formule dans laquelle les variables sont les paramètres de la table", FORMULE = SIMP(statut='o',typ=formule, @@ -7236,7 +8441,7 @@ CALC_TABLE=MACRO(nom="CALC_TABLE",op=calc_table_ops, sd_prod=calc_table_prod, fr="Nom de la nouvelle colonne"), ), ), - + SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom),max=1, fr="Paramètre de sensibilité", ang="Sensitivity parameter"), @@ -7244,27 +8449,27 @@ CALC_TABLE=MACRO(nom="CALC_TABLE",op=calc_table_ops, sd_prod=calc_table_prod, fr="Titre de la table produite"), INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE GALENNE E.GALENNE CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, fr="Définir un champ theta pour le calcul du taux de restitution d'énergie" +" ou des facteurs d'intensité de contraintes", regles=(UN_PARMI('THETA_2D','THETA_3D','THETA_BANDE'), @@ -7306,27 +8511,27 @@ CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n', ), GRAD_NOEU_THETA =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), IMPRESSION =FACT(statut='f', - UNITE =SIMP(statut='f',typ='I',defaut=8), + UNITE =SIMP(statut='f',typ='I',defaut=8), FORMAT =SIMP(statut='f',typ='TXM',defaut="EXCEL",into=("EXCEL","AGRAF") ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE PELLET J.PELLET def calc_vect_elem_prod(OPTION,**args): @@ -7337,7 +8542,7 @@ def calc_vect_elem_prod(OPTION,**args): raise AsException("type de concept resultat non prevu") CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, fr="Calcul des seconds membres élémentaires", OPTION =SIMP(statut='o',typ='TXM',into=("CHAR_MECA","CHAR_THER","CHAR_ACOU", "FORC_NODA") ), @@ -7350,7 +8555,7 @@ CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,reentr CARA_ELEM =SIMP(statut='f',typ=cara_elem), INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ), MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), - ), + ), b_modele =BLOC(condition = "(MODELE != None)",fr="modèle contenant une sous-structure", SOUS_STRUC =FACT(statut='o',min=01, regles=(UN_PARMI('TOUT','SUPER_MAILLE'),), @@ -7365,35 +8570,35 @@ CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,reentr CHARGE =SIMP(statut='o',typ=char_ther,validators=NoRepeat(),max='**'), INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), - + b_char_acou =BLOC(condition = "OPTION=='CHAR_ACOU'", CHAM_MATER =SIMP(statut='o',typ=cham_mater), CHARGE =SIMP(statut='o',typ=char_acou,validators=NoRepeat(),max='**'), ), - + b_forc_noda =BLOC(condition = "OPTION=='FORC_NODA'", SIEF_ELGA =SIMP(statut='o',typ=cham_elem), CARA_ELEM =SIMP(statut='f',typ=cara_elem), MODELE =SIMP(statut='f',typ=modele_sdaster), - ), + ), ) ; -#& MODIF COMMANDE DATE 08/12/2009 AUTEUR PROIX J-M.PROIX +#& MODIF COMMANDE DATE 07/12/2010 AUTEUR GENIAUT S.GENIAUT # 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. +# 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. # ====================================================================== # RESPONSABLE ABBAS M.ABBAS @@ -7421,47 +8626,38 @@ CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='f', LIST_INST =SIMP(statut='o',typ=listr8_sdaster), NUME_ORDRE =SIMP(statut='o',typ='I'),), COMP_INCR =C_COMP_INCR(), - COMP_ELAS =FACT(statut='f',max='**', - RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), - ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), - RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",into=("IMPLICITE",)), - RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS", - into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC", - "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")), - DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",) ), - ), + COMP_ELAS =C_COMP_ELAS('CALCUL'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE DESROCHES X.DESROCHES COMB_FOURIER=OPER(nom="COMB_FOURIER",op= 161,sd_prod=comb_fourier, reentrant='n',fr="Recombiner les modes de Fourier d'une SD Résultat dans des directions particulières", - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements",)}, RESULTAT =SIMP(statut='o',typ=(fourier_elas,fourier_ther),), ANGL =SIMP(statut='o',typ='R',max='**'), - NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=6, - into=("DEPL","REAC_NODA","SIEF_ELGA_DEPL","EPSI_ELNO_DEPL","SIGM_ELNO_DEPL","TEMP","FLUX_ELNO_TEMP"),), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=6,into=("DEPL","REAC_NODA", + "SIEF_ELGA","EPSI_ELNO","SIGM_ELNO","TEMP","FLUX_ELNO"),), ) ; -#& MODIF COMMANDE DATE 08/12/2008 AUTEUR SELLENET N.SELLENET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7499,7 +8695,7 @@ def comb_matr_asse_prod(COMB_R,COMB_C,CALC_AMOR_GENE,**args): COMB_MATR_ASSE=OPER(nom="COMB_MATR_ASSE",op= 31,sd_prod=comb_matr_asse_prod, fr="Effectuer la combinaison linéaire de matrices assemblées", reentrant='f', - UIinfo={"groupes":("Résultats et champs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=(UN_PARMI('COMB_R','COMB_C','CALC_AMOR_GENE' ),), COMB_R =FACT(statut='f',max='**', PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ), @@ -7523,29 +8719,29 @@ COMB_MATR_ASSE=OPER(nom="COMB_MATR_ASSE",op= 31,sd_prod=comb_matr_asse_prod, ), SANS_CMP =SIMP(statut='f',typ='TXM',into=("LAGR",) ), ) ; -#& MODIF COMMANDE DATE 09/11/2009 AUTEUR AUDEBERT S.AUDEBERT +#& MODIF COMMANDE DATE 21/03/2011 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE AUDEBERT S.AUDEBERT COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca, fr="Réponse sismique par recombinaison modale par une méthode spectrale", reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Dynamique",)}, regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','FREQ','NUME_MODE','LIST_FREQ','LIST_ORDRE'), UN_PARMI('AMOR_REDUIT','LIST_AMOR','AMOR_GENE' ), UN_PARMI('MONO_APPUI','MULTI_APPUI' ),), @@ -7561,14 +8757,14 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca, CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), ), MODE_CORR =SIMP(statut='f',typ=mode_meca ), - + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r ), - + MASS_INER =SIMP(statut='f',typ=table_sdaster ), CORR_FREQ =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - + EXCIT =FACT(statut='o',max='**', regles=(UN_PARMI('AXE','TRI_AXE','TRI_SPEC' ),), AXE =SIMP(statut='f',typ='R',max=3,fr="Excitation suivant un seul axe",), @@ -7586,12 +8782,12 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca, b_tri_spec =BLOC(condition = "TRI_SPEC != None",fr="Excitation suivant les trois axes avec trois spectres", SPEC_OSCI =SIMP(statut='o',typ=(nappe_sdaster,formule),min=3,max=3 ), ECHELLE =SIMP(statut='f',typ='R',min=3,max=3), - ), + ), NATURE =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("ACCE","VITE","DEPL") ), b_mult_appui =BLOC(condition = "(MULTI_APPUI != None)", regles=(UN_PARMI('NOEUD','GROUP_NO' ),), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),) + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),) ), MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",), fr="excitation imposée unique" ), @@ -7602,7 +8798,7 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca, regles=(UN_PARMI('NOEUD','GROUP_NO' ),), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),), - + ), b_correle =BLOC(condition = "MULTI_APPUI == 'CORRELE' ", COMB_MULT_APPUI =FACT(statut='f',max='**', @@ -7631,7 +8827,7 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca, AU_MOINS_UN('DX','DY','DZ' ),), NOM_CAS =SIMP(statut='o',typ='TXM',max='**'), NUME_CAS =SIMP(statut='o',typ='I',max='**'), - MODE_STAT =SIMP(statut='f',typ=mode_meca, ), + MODE_STAT =SIMP(statut='o',typ=mode_meca, ), NOEUD_REFE =SIMP(statut='f',typ=no), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), @@ -7640,9 +8836,9 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca, DZ =SIMP(statut='f',typ='R' ), ), OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=9, - into=("DEPL","VITE","ACCE_ABSOLU","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL", - "EFGE_ELNO_DEPL","REAC_NODA","FORC_NODA","EFGE_ELNO_CART", - "SIPO_ELNO_DEPL") ), + into=("DEPL","VITE","ACCE_ABSOLU","SIGM_ELNO","SIEF_ELGA", + "EFGE_ELNO","REAC_NODA","FORC_NODA","EFCA_ELNO", + "SIPO_ELNO") ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), IMPRESSION =FACT(statut='f',max='**', regles=(EXCLUS('TOUT','NIVEAU'),), @@ -7651,10 +8847,10 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca, ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 12/05/2009 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 08/03/2011 AUTEUR MASSIN P.MASSIN # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -7783,6 +8979,7 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, # ------------------------------------------------------------------ b_extr =BLOC(condition = "OPERATION == 'EXTR'", regles=(AU_MOINS_UN('MAILLAGE','FISSURE','RESULTAT','TABLE'),), +# PRESENT_PRESENT('GRILLE_AUX','FISSURE'),), MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ), FISSURE =SIMP(statut='f',typ=(fiss_xfem) ), RESULTAT =SIMP(statut='f',typ=(resultat_sdaster) ), @@ -7790,9 +8987,13 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, b_extr_maillage =BLOC(condition = "MAILLAGE != None and TABLE == None", NOM_CHAM =SIMP(statut='o',typ='TXM',into=("GEOMETRIE",)), ), - b_extr_fissure =BLOC(condition = "FISSURE != None", - NOM_CHAM =SIMP(statut='o',typ='TXM',into=("LTNO","LNNO","GRLTNO","GRLNNO","STNO","STNOR","BASLOC")), + + b_extr_fissure = BLOC(condition = "FISSURE != None", + NOM_CHAM=SIMP(statut='o',typ='TXM',into=("LTNO","LNNO","GRLTNO","GRLNNO","STNO","STNOR","BASLOC", + "GRI.LNNO","GRI.LTNO","GRI.GRLNNO","GRI.GRLTNO")), + ), + b_extr_table =BLOC(condition = "TABLE != None", regles=( EXCLUS('MODELE','MAILLAGE'), EXCLUS('PROL_ZERO','MAILLAGE'),), @@ -7856,10 +9057,102 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 30/06/2008 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 03/01/2011 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ANDRIAM H.ANDRIAMBOLOLONA + +from Macro.crea_elem_ssd_ops import crea_elem_ssd_ops + +def crea_elem_ssd_prod(self,NUME_DDL,**args): + if NUME_DDL: + self.type_sdprod(NUME_DDL,nume_ddl_sdaster) + return macr_elem_dyna + +CREA_ELEM_SSD=MACRO(nom="CREA_ELEM_SSD", + op=crea_elem_ssd_ops, + sd_prod=crea_elem_ssd_prod, + reentrant='n', + fr="Creation de macro-element dynamique en enchainant les commandes : \ + CALC_MATR_ELEM, NUME_DDL, ASSE_MATRICE, MODE_ITER_SIMULT, \ + DEFI_INTERF_DYNA, DEFI_BASE_MODALE et MACR_ELEM_DYNA", + UIinfo={"groupes":("Matrices/vecteurs",)}, + +# pour CAL_MATR_ELEM + NUME_DDL + ASSE_MATRICE + MODE_ITER_SIMULT + MODE_STATIQUE + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + NUME_DDL =SIMP(statut='f',typ=CO,defaut=None), + CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**'), + +# pour DEFI_INTERF_DYNA + INTERFACE =FACT(statut='o',max='**', + regles=(ENSEMBLE('NOM','TYPE'), + UN_PARMI('NOEUD','GROUP_NO'),), + NOM =SIMP(statut='f',typ='TXM' ), + TYPE =SIMP(statut='f',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO",) ), + NOEUD =SIMP(statut='f',typ=no,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + FREQ =SIMP(statut='f',typ='R',defaut= 1.), + ), + +# pour DEFI_BASE_MODALE + BASE_MODALE = FACT(statut='o',max = 1, + TYPE =SIMP(statut='o',typ='TXM',max=1,into=('CLASSIQUE','RITZ',)), + b_ritz = BLOC(condition = "TYPE == 'RITZ' ", + NMAX_MODE_INTF =SIMP(statut='f',typ='I',defaut=10), + ), + ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), + + SOLVEUR =C_SOLVEUR(), + +# pour le calcul modal + CALC_FREQ =FACT(statut='d',min=0, + OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE"), + fr="Choix de l option et par consequent du shift du probleme modal" ), + b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres", + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_centre =BLOC(condition = "OPTION == 'CENTRE'", + fr="Recherche des valeurs propres les plus proches d une valeur donnee", + FREQ =SIMP(statut='o',typ='R', + fr="Frequence autour de laquelle on cherche les frequences propres"), + AMOR_REDUIT =SIMP(statut='f',typ='R',), + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_bande =BLOC(condition = "(OPTION == 'BANDE')", + fr="Recherche des valeurs propres dans une bande donnee", + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 9999,val_min=0 ), + FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max='**', + fr="Valeurs des frequences delimitant les bandes de recherche"), + ), + APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"), + fr="Choix du pseudo-produit scalaire pour la resolution du probleme quadratique" ), + ), + + +) ; +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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 @@ -7880,7 +9173,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster, UIinfo={"groupes":("Maillage",)}, regles=(EXCLUS('COQU_VOLU', 'CREA_FISS', 'CREA_GROUP_MA', 'CREA_MAILLE', 'CREA_POI1', 'DETR_GROUP_MA', 'ECLA_PG', 'HEXA20_27', 'LINE_QUAD', 'MODI_MAILLE', - 'QUAD_LINE', 'REPERE','RESTREINT'),), + 'QUAD_LINE', 'REPERE','RESTREINT','PENTA15_18',),), @@ -7978,6 +9271,14 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster, PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"), PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ), ), + PENTA15_18 =FACT(statut='f',fr="Passage PENTA15 -> PENTA18", + regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"), + PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ), + ), QUAD_LINE =FACT(statut='f',fr="Passage quadratique -> linéaire", regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -8003,16 +9304,16 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster, GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), SHRINK =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ), TAILLE_MIN =SIMP(statut='f',typ='R',defaut= 0.0, fr="Taille minimale d'un coté" ), - NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO('ELGA'),), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), # INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 25/05/2010 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -8043,7 +9344,7 @@ def crea_resu_prod(TYPE_RESU,**args): raise AsException("type de concept resultat non prevu") CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Résultats et champs",)}, fr="Créer ou enrichir une structure de donnees resultat à partir de champs aux noeuds", OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ASSE","ECLA_PG","PERM_CHAM","PROL_RTZ","PREP_VRC1","PREP_VRC2",), @@ -8130,7 +9431,7 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f', ECLA_PG =FACT(statut='o', regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),), - NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO('ELGA'),), MODELE_INIT =SIMP(statut='o',typ=modele_sdaster), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), @@ -8225,23 +9526,23 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f', ), ), ) ; -#& MODIF COMMANDE DATE 28/07/2009 AUTEUR TORKHANI M.TORKHANI +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 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. +# 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. # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS @@ -8257,13 +9558,14 @@ def crea_table_prod(TYPE_TABLE, **args): CREA_TABLE=OPER(nom="CREA_TABLE",op=36,sd_prod=crea_table_prod, fr="Création d'une table à partir d'une fonction ou de deux listes", - reentrant='f',UIinfo={"groupes":("Table",)}, + reentrant='f', + UIinfo={"groupes":("Tables",)}, - regles=(EXCLUS('FONCTION','LISTE'),), + regles=(EXCLUS('FONCTION','LISTE','RESU'),), LISTE=FACT(statut='f',max='**', fr="Creation d'une table a partir de listes", - regles=(UN_PARMI('LISTE_I','LISTE_R','LISTE_K')), + regles=(UN_PARMI('LISTE_I','LISTE_R','LISTE_K')), PARA =SIMP(statut='o',typ='TXM'), TYPE_K =SIMP(statut='f',typ='TXM',defaut='K8', into=('K8','K16','K24')), @@ -8284,31 +9586,68 @@ CREA_TABLE=OPER(nom="CREA_TABLE",op=36,sd_prod=crea_table_prod, fr="Liste des paramètres de sensibilité.", ang="List of sensitivity parameters"), ), + RESU=FACT(statut='f',max=1, + fr="Creation d'une table a partir d'un resultat ou d'un champ", + regles=(UN_PARMI('CHAM_GD','RESULTAT'), + UN_PARMI('TOUT_CMP','NOM_CMP'), + PRESENT_ABSENT('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',), + AU_MOINS_UN('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',), + ), + CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster), + RESULTAT =SIMP(statut='f',typ=(resultat_sdaster) ), + b_resultat =BLOC(condition = "RESULTAT != None", + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST', + 'MODE','LIST_MODE','FREQ','LIST_FREQ'),), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',max='**'), + LIST_ORDRE =SIMP(statut='f',typ=(listis_sdaster) ), + INST =SIMP(statut='f',typ='R',max='**'), + LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), + MODE =SIMP(statut='f',typ='I',max='**'), + LIST_MODE =SIMP(statut='f',typ=(listis_sdaster) ), + FREQ =SIMP(statut='f',typ='R',max='**'), + LIST_FREQ =SIMP(statut='f',typ=(listr8_sdaster) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + ), + TYPE_TABLE = SIMP(statut='f', typ='TXM', defaut="TABLE", into=('TABLE', 'TABLE_FONCTION', 'TABLE_CONTENEUR'),), - + TITRE=SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # 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. +# 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. # ====================================================================== # RESPONSABLE LEFEBVRE J.P.LEFEBVRE @@ -8325,10 +9664,10 @@ DEBUG=PROC(nom="DEBUG",op=137, IMPR_MACRO =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess", statut='f',typ='TXM',into=("OUI","NON")), ); -#& MODIF COMMANDE DATE 07/09/2009 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 03/01/2011 AUTEUR COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -8430,11 +9769,12 @@ DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n', IGNORE_ALARM = SIMP(statut='f', typ='TXM', max='**', fr="Alarmes que l'utilisateur souhaite délibérément ignorer"), + INFO = SIMP(statut='f', typ='I', defaut=1, into=(1,2),), ); -#& MODIF COMMANDE DATE 01/03/2010 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 25/01/2011 AUTEUR NISTOR I.NISTOR # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -8453,7 +9793,7 @@ DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n', DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=mode_meca, reentrant='f', fr="Définit la base d'une sous-structuration dynamique ou d'une recombinaison modale", - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)}, regles=(UN_PARMI('CLASSIQUE','RITZ','DIAG_MASS','ORTHO_BASE'),), CLASSIQUE =FACT(statut='f', INTERF_DYNA =SIMP(statut='o',typ=interf_dyna_clas ), @@ -8504,14 +9844,13 @@ DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=mode_meca, b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), - POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - FILTRAGE_MATRICE =SIMP(statut='f',typ='R',defaut=-1.0,), - MIXER_PRECISION =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), ), @@ -8520,23 +9859,23 @@ DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=mode_meca, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 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. +# 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. # ====================================================================== # RESPONSABLE MICHEL S.MICHEL @@ -8568,7 +9907,7 @@ from Macro.defi_cable_bp_ops import defi_cable_bp_ops DEFI_CABLE_BP=MACRO(nom="DEFI_CABLE_BP",op=defi_cable_bp_ops,sd_prod=cabl_precont, fr="Calculer les profils initiaux de tension le long des cables de précontrainte d'une structure en béton", - reentrant='n',UIinfo={"groupe":("Modélisation",)}, + reentrant='n',UIinfo={"groupes":("Modélisation",)}, MODELE =SIMP(statut='o',typ=modele_sdaster ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CARA_ELEM =SIMP(statut='o',typ=cara_elem ), @@ -8582,36 +9921,36 @@ DEFI_CABLE_BP=MACRO(nom="DEFI_CABLE_BP",op=defi_cable_bp_ops,sd_prod=cabl_precon GROUP_NO_ANCRAGE=SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2), ), TYPE_ANCRAGE =SIMP(statut='o',typ='TXM',min=2,max=2,into=("ACTIF","PASSIF") ), - TENSION_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ), - RECUL_ANCRAGE =SIMP(statut='o',typ='R',val_min=0.E+0 ), + TENSION_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ), + RECUL_ANCRAGE =SIMP(statut='o',typ='R',val_min=0.E+0 ), RELAXATION =FACT(statut='f',min=0, - R_J =SIMP(statut='o',typ='R',val_min=0.E+0 ), + R_J =SIMP(statut='o',typ='R',val_min=0.E+0 ), ), CONE =FACT(statut='f', - RAYON =SIMP(statut='o',typ='R',val_min=0.E+0 ), - LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0 ), + RAYON =SIMP(statut='o',typ='R',val_min=0.E+0 ), + LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0 ), PRESENT =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ), ), - TITRE =SIMP(statut='f',typ='TXM',max='**' ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 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. +# 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. # ====================================================================== # RESPONSABLE MICHEL S.MICHEL @@ -8633,23 +9972,23 @@ DEFI_CABLE_OP=OPER(nom="DEFI_CABLE_OP",op= 180,sd_prod=cabl_precont,reentrant='n GROUP_NO_FUT =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2), ), TYPE_ANCRAGE =SIMP(statut='o',typ='TXM',min=2,max=2,into=("ACTIF","PASSIF") ), - TENSION_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ), - RECUL_ANCRAGE =SIMP(statut='o',typ='R',val_min=0.E+0 ), + TENSION_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ), + RECUL_ANCRAGE =SIMP(statut='o',typ='R',val_min=0.E+0 ), RELAXATION =FACT(statut='f',min=0, - R_J =SIMP(statut='o',typ='R',val_min=0.E+0 ), + R_J =SIMP(statut='o',typ='R',val_min=0.E+0 ), ), - TITRE =SIMP(statut='f',typ='TXM',max='**' ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), CONE =FACT(statut='f',min=0, - RAYON =SIMP(statut='o',typ='R',val_min=0.E+0 ), - LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0, defaut=0.E+0 ), + RAYON =SIMP(statut='o',typ='R',val_min=0.E+0 ), + LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0, defaut=0.E+0 ), PRESENT =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ), ), ) ; -#& MODIF COMMANDE DATE 08/12/2009 AUTEUR PROIX J-M.PROIX +#& MODIF COMMANDE DATE 23/02/2011 AUTEUR LAVERNE J.LAVERNE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -8676,16 +10015,31 @@ DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster, MONOCRISTAL =FACT(statut='f', max='**', MATER =SIMP(statut='o', typ=mater_sdaster, max=1), ECOULEMENT =SIMP(statut='o', typ='TXM', max=1, + into=('MONO_VISC1', 'MONO_VISC2', 'MONO_VISC3', 'MONO_DD_KR', 'MONO_DD_CFC', 'MONO_DD_CC',), fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écoulement viscoplastique"), - ECRO_ISOT =SIMP(statut='o', typ='TXM', max=1, - fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage isotrope"), - ECRO_CINE =SIMP(statut='o', typ='TXM', max=1, - fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage cinématique"), ELAS =SIMP(statut='f', typ='TXM', max=1, fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le comportement élastique (un et un seul)"), - FAMI_SYST_GLIS =SIMP(statut='o',typ='TXM', max=1, + b_non_dd =BLOC(condition="ECOULEMENT=='MONO_VISC1' or ECOULEMENT=='MONO_VISC2' or ECOULEMENT=='MONO_VISC3'", + ECRO_ISOT =SIMP(statut='f', typ='TXM', max=1, + fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage isotrope"), + ECRO_CINE =SIMP(statut='f', typ='TXM', max=1, + fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage cinématique"), + FAMI_SYST_GLIS =SIMP(statut='o',typ='TXM', max=1, into=('BASAL', 'PRISMATIQUE', 'OCTAEDRIQUE', 'PYRAMIDAL1', - 'PYRAMIDAL2', 'CUBIQUE1', 'CUBIQUE2', 'MACLAGE', 'JOINT_GRAIN', 'RL', 'UNIAXIAL','BCC24'),), + 'PYRAMIDAL2', 'CUBIQUE1', 'CUBIQUE2', 'MACLAGE', 'UNIAXIAL','BCC24'),), + ), + b_dd_kr =BLOC(condition="ECOULEMENT=='MONO_DD_KR' ", + FAMI_SYST_GLIS =SIMP(statut='f',typ='TXM', max=1, + into=('BCC24',),defaut=('BCC24',),), + ), + b_dd_cfc =BLOC(condition="ECOULEMENT=='MONO_DD_CFC' ", + FAMI_SYST_GLIS =SIMP(statut='f',typ='TXM', max=1, + into=('OCTAEDRIQUE',),defaut=('OCTAEDRIQUE',),), + ), + b_dd_cc =BLOC(condition="ECOULEMENT=='MONO_DD_CC' ", + FAMI_SYST_GLIS =SIMP(statut='o',typ='TXM', max=1, + into=('CUBIQUE1',),defaut=('CUBIQUE1',),), + ), ), ROTA_RESEAU =SIMP(statut='f', typ='TXM', max=1,into=('NON','POST','CALC'),defaut='NON', @@ -8737,44 +10091,43 @@ DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster, "GRANGER_FP_V", "BETON_UMLV_FP", "ROUSS_PR", - "NADAI_B", "BETON_DOUBLE_DP", ),), # on pourrait ajouter TOUT_GROUP_FIBRE ) ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS DEFI_CONSTANTE=OPER(nom="DEFI_CONSTANTE",op= 2,sd_prod=fonction_sdaster, fr="Définir la valeur d'une grandeur invariante", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), VALE =SIMP(statut='o',typ='R',), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 27/04/2010 AUTEUR DESOZA T.DESOZA +#& MODIF COMMANDE DATE 23/02/2011 AUTEUR MASSIN P.MASSIN # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -8795,6 +10148,7 @@ DEFI_CONTACT=OPER(nom = "DEFI_CONTACT", op = 30, sd_prod = char_contact, fr = "Définit les zones soumises à des conditions de contact unilatéral avec ou sans frottement", + #en = "Allows the definition of contact surfaces as well as unilateral conditions", reentrant = 'n', UIinfo = {"groupes":("Modélisation",)}, @@ -8806,63 +10160,59 @@ DEFI_CONTACT=OPER(nom = "DEFI_CONTACT", # FORMULATION (UNIQUE PAR OCCURRENCE DE DEFI_CONTACT) FORMULATION =SIMP(statut='o', - typ='TXM', position='global', + typ='TXM', + fr="Choix d'une formulation de contact ou de liaisons unilatérales", defaut="DISCRETE", into=("DISCRETE","CONTINUE","XFEM","LIAISON_UNIL",),), -# PARAMETRE GENERAL: FROTTEMENT (A TERME DEVRA ETRE AU NIVEAU ZONE) - - FROTTEMENT =SIMP(statut='f', - typ='TXM', - position='global', - defaut="SANS", - into=("COULOMB","SANS",)), - -### PARAMETRES GENERAUX (UNIQUEMENT POUR LE CONTACT, NE DEPENDENT PAS DE LA ZONE DE CONTACT) - - b_contact=BLOC(condition = "FORMULATION != 'LIAISON_UNIL' ", - -# PARAMETRE GENERAL: APPARIEMENT - - LISSAGE =SIMP(statut='f', - typ='TXM', - defaut="NON", - into=("OUI","NON"),), - -# PARAMETRE GENERAL: VERIFICATION DE L'ORIENTATION ET DE LA COHERENCE DES NORMALES +# PARAMETRE GENERAL : FROTTEMENT + FROTTEMENT =SIMP(statut='f', + position='global', + typ='TXM', + fr="Choix d'un modèle de frottement (uniquement pour les formulations de contact)", + defaut="SANS", + into=("COULOMB","SANS",)), + +### PARAMETRES GENERAUX (UNIQUEMENT POUR LE CONTACT MAILLE, NE DEPENDENT PAS DE LA ZONE DE CONTACT) + + b_contact_mail=BLOC(condition = "((FORMULATION == 'CONTINUE') or (FORMULATION == 'DISCRETE'))", +# ARRET DU CALCUL POUR LE MODE SANS RESOLUTION DU CONTACT + STOP_INTERP = SIMP(statut='f', + typ='TXM', + fr="Arrête le calcul dès qu'une interpénétration est détectée en mode RESOLUTION='NON'", + defaut="NON", + into=("OUI","NON")), +# LISSAGE DES NORMALES PAR MOYENNATION AUX NOEUDS + LISSAGE = SIMP(statut='f', + typ='TXM', + fr="Lissage des normales par moyennation aux noeuds", + defaut="NON", + into=("OUI","NON")), +# VERIFICATION DE L'ORIENTATION ET DE LA COHERENCE DES NORMALES VERI_NORM =SIMP(statut='f', typ='TXM', + fr="Vérification de l'orientation (sortante) des normales aux surfaces", defaut="OUI", into=("OUI","NON"),), + ), -# PARAMETRE GENERAL: BOUCLE SUR GEOMETRIE +### PARAMETRES GENERAUX (UNIQUEMENT POUR LE CONTACT, NE DEPENDENT PAS DE LA ZONE DE CONTACT) - b_bouc_geom_disc=BLOC(condition = "FORMULATION == 'DISCRETE' ", - REAC_GEOM =SIMP(statut='f', - typ='TXM', - into=("AUTOMATIQUE","CONTROLE","SANS",), - defaut="AUTOMATIQUE", - ), - b_automatique = BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ", - ITER_GEOM_MAXI = SIMP(statut='f',typ='I',defaut=5), - RESI_GEOM = SIMP(statut='f',typ='R',defaut=0.05), - ), - b_controle = BLOC(condition = "REAC_GEOM == 'CONTROLE' ", - NB_ITER_GEOM = SIMP(statut='f',typ='I',defaut = 2), - ), - ), + b_contact=BLOC(condition = "FORMULATION != 'LIAISON_UNIL' ", + +# PARAMETRE GENERAL : BOUCLE DE GEOMETRIE - b_bouc_geom_cont=BLOC(condition = "FORMULATION == 'CONTINUE' ", + b_bouc_geom_mail=BLOC(condition = "(FORMULATION == 'DISCRETE' or FORMULATION == 'CONTINUE')", REAC_GEOM =SIMP(statut='f', typ='TXM', into=("AUTOMATIQUE","CONTROLE","SANS",), defaut="AUTOMATIQUE", ), b_automatique = BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ", - ITER_GEOM_MAXI = SIMP(statut='f',typ='I',defaut=5), - RESI_GEOM = SIMP(statut='f',typ='R',defaut=0.0001), + ITER_GEOM_MAXI = SIMP(statut='f',typ='I',defaut=10), + RESI_GEOM = SIMP(statut='f',typ='R',defaut=0.01), ), b_controle = BLOC(condition = "REAC_GEOM == 'CONTROLE' ", NB_ITER_GEOM = SIMP(statut='f',typ='I',defaut = 2), @@ -8876,7 +10226,7 @@ DEFI_CONTACT=OPER(nom = "DEFI_CONTACT", defaut="SANS", ), b_automatique = BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ", - ITER_GEOM_MAXI = SIMP(statut='f',typ='I',defaut=5), + ITER_GEOM_MAXI = SIMP(statut='f',typ='I',defaut=10), RESI_GEOM = SIMP(statut='f',typ='R',defaut=0.0001), ), b_controle = BLOC(condition = "REAC_GEOM == 'CONTROLE' ", @@ -8885,7 +10235,7 @@ DEFI_CONTACT=OPER(nom = "DEFI_CONTACT", ), -# PARAMETRE GENERAL: BOUCLE SUR CONTACT +# PARAMETRE GENERAL : BOUCLE DE CONTACT b_bouc_cont_disc=BLOC(condition = "FORMULATION == 'DISCRETE' ", ITER_CONT_MULT = SIMP(statut='f',typ='I',defaut = 4), @@ -8906,54 +10256,73 @@ DEFI_CONTACT=OPER(nom = "DEFI_CONTACT", ITER_CONT_TYPE= SIMP(statut='f',typ='TXM',defaut="MAXI", into=("MULT","MAXI")), b_bouc_cont_mult = BLOC(condition = "ITER_CONT_TYPE=='MULT'", - ITER_CONT_MULT = SIMP(statut='f',typ='I',defaut = 4), + ITER_CONT_MULT = SIMP(statut='f',typ='I',defaut = 4), ), b_bouc_cont_maxi = BLOC(condition = "ITER_CONT_TYPE=='MAXI'", - ITER_CONT_MAXI = SIMP(statut='f',typ='I',defaut = 30), + ITER_CONT_MAXI = SIMP(statut='f',typ='I',defaut = 30), ), ), -# PARAMETRE GENERAL: BOUCLE SUR FROTTEMENT +# PARAMETRE GENERAL : BOUCLE DE FROTTEMENT b_bouc_frot = BLOC(condition = "FROTTEMENT=='COULOMB' and ((FORMULATION == 'CONTINUE') or (FORMULATION == 'XFEM')) ", REAC_FROT =SIMP(statut='f', typ='TXM', + defaut="AUTOMATIQUE", into=("AUTOMATIQUE","CONTROLE",), - defaut="AUTOMATIQUE",), + ), b_automatique = BLOC(condition = "REAC_FROT == 'AUTOMATIQUE' ", - ITER_FROT_MAXI = SIMP(statut='f',typ='I',defaut=2), - RESI_FROT = SIMP(statut='f',typ='R',defaut=0.0001), + ITER_FROT_MAXI = SIMP(statut='f',typ='I',defaut=10), + RESI_FROT = SIMP(statut='f',typ='R',defaut=0.0001), ), b_controle = BLOC(condition = "REAC_FROT == 'CONTROLE' ", - NB_ITER_FROT = SIMP(statut='f',typ='I',defaut = 2), + NB_ITER_FROT = SIMP(statut='f',typ='I',defaut = 2), ), - ), + ), -# PARAMETRE GENERAL: METHODES DISCRETES +# PARAMETREs GENERAUX : METHODES DISCRETES b_para_discret = BLOC(condition = "FORMULATION == 'DISCRETE' ", - STOP_SINGULIER= SIMP(statut='f',typ='TXM',defaut="OUI", - into=("OUI","NON")), - NB_RESOL = SIMP(statut='f',typ='I', defaut=10 ), - STOP_INTERP = SIMP(statut='f',typ='TXM',defaut="NON", - into=("OUI","NON")), - TOLE_INTERP = SIMP(statut='f',typ='R',defaut = 0.), - RESI_ABSO = SIMP(statut='f',typ='R', - fr="Critere de convergence (niveau d'interpenetration autorise)"), - REAC_ITER = SIMP(statut='f',typ='I',defaut=3, - fr="Frequence de reinitialisation de la conjugaison"), - ITER_GCP_MAXI = SIMP(statut='f',typ='I',defaut=0, - fr="Nombre d'iterations maximal pour le GCP"), - - PRE_COND = SIMP(statut='f',typ='TXM',defaut="SANS",into=("DIRICHLET","SANS"), - fr="Choix d'un preconditionneur (accelere la convergence)"), - ITER_PRE_MAXI = SIMP(statut='f',typ='I',defaut=0, - fr="Nombre d'iterations maximal pour le preconditionneur"), - COEF_RESI = SIMP(statut='f',typ='R',defaut = 1., - fr="Critere_Convergence_Preconditionneur = COEF_RESI*Critere_Convergence_GCP",), - RECH_LINEAIRE = SIMP(statut='f',typ='TXM',defaut="ADMISSIBLE", - into=("ADMISSIBLE","NON_ADMISSIBLE"), - fr="Autorise-t-on de sortir du domaine admissible lors de la recherche lineaire",), +# ## METHODES DE DUALISATION ## + STOP_SINGULIER= SIMP(statut='f', + typ='TXM', + fr="Tient compte de la singularité de la matrice de contact", + defaut="OUI", + into=("OUI","NON"),), + NB_RESOL = SIMP(statut='f', + typ='I', + fr="Nombre de résolutions simultanées pour la construction du complément de Schur", + defaut=10,), +# ## GCP ## + RESI_ABSO = SIMP(statut='f', + typ='R', + fr="Critère de convergence (niveau d'interpénétration autorisé pour 'GCP')",), + REAC_ITER = SIMP(statut='f', + typ='I', + fr="Fréquence de réinitialisation de la conjugaison ('GCP')", + defaut=3,), + ITER_GCP_MAXI = SIMP(statut='f', + typ='I', + fr="Nombre d'itérations maximal ('GCP')", + defaut=0,), + PRE_COND = SIMP(statut='f', + typ='TXM', + fr="Choix d'un préconditionneur (accélère la convergence de 'GCP')", + defaut="SANS", + into=("DIRICHLET","SANS"),), + ITER_PRE_MAXI = SIMP(statut='f', + typ='I', + fr="Nombre d'itérations maximal pour le préconditionneur ('GCP')", + defaut=0,), + COEF_RESI = SIMP(statut='f', + typ='R', + fr="Critère de convergence du préconditionneur (COEF_RESI*RESI_ABSO)", + defaut = 1.,), + RECH_LINEAIRE = SIMP(statut='f', + typ='TXM', + fr="Autorisation de sortie du domaine admissible lors de la recherche linéaire", + defaut="ADMISSIBLE", + into=("ADMISSIBLE","NON_ADMISSIBLE"),), ), ), #fin bloc b_contact @@ -8961,290 +10330,294 @@ DEFI_CONTACT=OPER(nom = "DEFI_CONTACT", # AFFECTATION - CAS LIAISON_UNILATERALE - b_affe_unil = BLOC(condition = "FORMULATION == 'LIAISON_UNIL'", - ZONE=FACT(statut='o', - max='**', - + b_affe_unil = BLOC(condition = "FORMULATION == 'LIAISON_UNIL'", + ZONE=FACT(statut='o', + max='**', # -- Liaison unilatérale - regles=(UN_PARMI('GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), - GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), - NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - - NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), - COEF_IMPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),), - COEF_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'), - + regles=(UN_PARMI('GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), +# + NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), + COEF_IMPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),), + COEF_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'), # -- Incompatibilité avec CL - SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), - ), - ), #fin bloc b_affe_unil -# AFFECTATION - CAS DISCRET + ), + ), #fin bloc b_affe_unil - b_affe_discret = BLOC(condition = "FORMULATION == 'DISCRETE'", - ZONE=FACT(statut='o', - max='**', +# AFFECTATION - CAS DISCRET + b_affe_discret = BLOC(condition = "FORMULATION == 'DISCRETE'", + ZONE=FACT(statut='o', + max='**', # -- Appariement - APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", - into=("NODAL","MAIT_ESCL"),), - - regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'), - UN_PARMI('GROUP_MA_MAIT','MAILLE_MAIT'),), - GROUP_MA_MAIT =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), - MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - GROUP_MA_ESCL =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), - MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - - NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT", - into=("MAIT","MAIT_ESCL","ESCL"),), - - VECT_MAIT =SIMP(statut='f',typ='TXM',defaut="AUTO", - into=("AUTO","FIXE","VECT_Y")), - - b_nmait_fixe=BLOC(condition = "VECT_MAIT == 'FIXE'", - MAIT_FIXE =SIMP(statut='o',typ='R',min=3,max=3), - ), - - b_nmait_vecty=BLOC(condition = "VECT_MAIT == 'VECT_Y'", - MAIT_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), - ), - - VECT_ESCL =SIMP(statut='f',typ='TXM',defaut="AUTO", - into=("AUTO","FIXE","VECT_Y")), - - b_nescl_fixe=BLOC(condition = "VECT_ESCL == 'FIXE'", - ESCL_FIXE =SIMP(statut='o',typ='R',min=3,max=3), - ), - - b_nescl_vecty=BLOC(condition = "VECT_ESCL == 'VECT_Y'", - ESCL_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), - ), + APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", + into=("NODAL","MAIT_ESCL"),), +# + regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'), + UN_PARMI('GROUP_MA_MAIT','MAILLE_MAIT'),), + GROUP_MA_MAIT =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), + MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_ESCL =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), + MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), +# + NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT", + into=("MAIT","MAIT_ESCL","ESCL"),), +# + VECT_MAIT =SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("AUTO","FIXE","VECT_Y")), - TYPE_APPA =SIMP(statut='f',typ='TXM',defaut="PROCHE", - into =("PROCHE","FIXE")), + b_nmait_fixe=BLOC(condition = "VECT_MAIT == 'FIXE'", + MAIT_FIXE =SIMP(statut='o',typ='R',min=3,max=3), + ), - b_appa_fixe =BLOC(condition = "TYPE_APPA == 'FIXE'", - DIRE_APPA =SIMP(statut='f',typ='R',min=3,max=3), - ), + b_nmait_vecty=BLOC(condition = "VECT_MAIT == 'VECT_Y'", + MAIT_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + ), +# + VECT_ESCL =SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("AUTO","FIXE","VECT_Y")), - DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), - DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), - b_cara=BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'", - CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ), - ), + b_nescl_fixe=BLOC(condition = "VECT_ESCL == 'FIXE'", + ESCL_FIXE =SIMP(statut='o',typ='R',min=3,max=3), + ), - DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + b_nescl_vecty=BLOC(condition = "VECT_ESCL == 'VECT_Y'", + ESCL_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + ), +# + TYPE_APPA =SIMP(statut='f',typ='TXM',defaut="PROCHE", + into =("PROCHE","FIXE")), - TOLE_APPA =SIMP(statut='f',typ='R' ,defaut=-1.0), - TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50), + b_appa_fixe =BLOC(condition = "TYPE_APPA == 'FIXE'", + DIRE_APPA =SIMP(statut='f',typ='R',min=3,max=3), + ), +# + DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + b_cara=BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'", + CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ), + ), + DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# + TOLE_APPA =SIMP(statut='f',typ='R' ,defaut=-1.0), + TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50), # -- Incompatibilité avec CL - SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), - + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + SANS_MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SANS_GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), +# -- Mode sans calcul + RESOLUTION =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + b_verif=BLOC(condition = "RESOLUTION == 'NON' ", + TOLE_INTERP = SIMP(statut='f',typ='R',defaut = 0.), + ), # -- Résolution - ALGO_CONT =SIMP(statut='o',typ='TXM',defaut="CONTRAINTE", - into=("CONTRAINTE","LAGRANGIEN","PENALISATION","VERIF","GCP"),), - - b_active=BLOC(condition = "ALGO_CONT == 'CONTRAINTE' ", - fr="Paramètres de la méthode des contraintes actives (contact uniquement)", - GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - b_glissiere=BLOC(condition = "GLISSIERE == 'OUI' ", - ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.), - ), - ), - - b_verif=BLOC(condition = "ALGO_CONT == 'VERIF' ", - fr="Paramètres de la méthode sans calcul de contact", - GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - ), - - b_penal_contact=BLOC(condition = "ALGO_CONT == 'PENALISATION' ", - fr="Paramètres de la méthode pénalisée (contact)", - E_N =SIMP(statut='o',typ='R'), - ), - - b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' ", - fr="Paramètres du frottement", - COULOMB =SIMP(statut='o',typ='R',), - COEF_MATR_FROT=SIMP(statut='f',typ='R',defaut=0.E+0), - ALGO_FROT =SIMP(statut='o',typ='TXM',defaut="PENALISATION", - into=("PENALISATION","LAGRANGIEN"),), - - b_penal_frot=BLOC(condition = "ALGO_FROT == 'PENALISATION' ", - fr="Paramètres de la méthode pénalisée (frottement)", - E_T =SIMP(statut='o',typ='R'), - ), - ), - ), #fin mot-clé facteur ZONE - ), #fin bloc b_affe_discret - + ALGO_CONT =SIMP(statut='o',typ='TXM',defaut="CONTRAINTE", + into=("CONTRAINTE","LAGRANGIEN","PENALISATION","GCP"),), + + b_active=BLOC(condition = "ALGO_CONT == 'CONTRAINTE' ", + fr="Paramètres de la méthode des contraintes actives (contact uniquement)", + GLISSIERE=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + b_glissiere=BLOC(condition = "GLISSIERE == 'OUI' ", + ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.), + ), + ), +# + b_penal_contact=BLOC(condition = "ALGO_CONT == 'PENALISATION' ", + fr="Paramètres de la méthode pénalisée (contact)", + E_N=SIMP(statut='o',typ='R'), + ), +# + b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' ", + fr="Paramètres du frottement de Coulomb", + COULOMB =SIMP(statut='o',typ='R',), + COEF_MATR_FROT=SIMP(statut='f',typ='R',defaut=0.E+0), + ALGO_FROT =SIMP(statut='o',typ='TXM',defaut="PENALISATION", + into=("PENALISATION","LAGRANGIEN"),), +# + b_penal_frot=BLOC(condition = "ALGO_FROT == 'PENALISATION' ", + fr="Paramètres de la méthode pénalisée (frottement)", + E_T=SIMP(statut='o',typ='R'), + ), + ), + ), #fin mot-clé facteur ZONE + ), #fin bloc b_affe_discret # AFFECTATION - CAS CONTINUE - b_affe_continue = BLOC(condition = "FORMULATION == 'CONTINUE'", - ZONE=FACT(statut='o', - max='**', - + b_affe_continue = BLOC(condition = "FORMULATION == 'CONTINUE'", + ZONE=FACT(statut='o', + max='**', # -- Appariement - APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", - into=("MAIT_ESCL",)), - - regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'), - UN_PARMI('GROUP_MA_MAIT','MAILLE_MAIT'),), - GROUP_MA_MAIT =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), - MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - GROUP_MA_ESCL =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), - MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - - NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT", - into=("MAIT","MAIT_ESCL","ESCL"),), - - VECT_MAIT =SIMP(statut='f',typ='TXM',defaut="AUTO", - into=("AUTO","FIXE","VECT_Y")), - - b_nmait_fixe=BLOC(condition = "VECT_MAIT == 'FIXE'", - MAIT_FIXE =SIMP(statut='o',typ='R',min=3,max=3), - ), - - b_nmait_vecty=BLOC(condition = "VECT_MAIT == 'VECT_Y'", - MAIT_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), - ), - - VECT_ESCL =SIMP(statut='f',typ='TXM',defaut="AUTO", - into=("AUTO","FIXE","VECT_Y")), - - b_nescl_fixe=BLOC(condition = "VECT_ESCL == 'FIXE'", - ESCL_FIXE =SIMP(statut='o',typ='R',min=3,max=3), - ), - - b_nescl_vecty=BLOC(condition = "VECT_ESCL == 'VECT_Y'", - ESCL_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), - ), + APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", + into=("MAIT_ESCL",)), +# + regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'), + UN_PARMI('GROUP_MA_MAIT','MAILLE_MAIT'),), + GROUP_MA_MAIT =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), + MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_ESCL =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), + MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), +# + NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT", + into=("MAIT","MAIT_ESCL","ESCL"),), +# + VECT_MAIT =SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("AUTO","FIXE","VECT_Y")), - TYPE_APPA =SIMP(statut='f',typ='TXM',defaut="PROCHE", - into =("PROCHE","FIXE")), + b_nmait_fixe=BLOC(condition = "VECT_MAIT == 'FIXE'", + MAIT_FIXE =SIMP(statut='o',typ='R',min=3,max=3), + ), - b_appa_fixe=BLOC(condition = "TYPE_APPA == 'FIXE'", - DIRE_APPA =SIMP(statut='f',typ='R',min=3,max=3), - ), + b_nmait_vecty=BLOC(condition = "VECT_MAIT == 'VECT_Y'", + MAIT_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + ), +# + VECT_ESCL =SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("AUTO","FIXE","VECT_Y")), - DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), - DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), - b_cara=BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'", - CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ), - ), + b_nescl_fixe=BLOC(condition = "VECT_ESCL == 'FIXE'", + ESCL_FIXE =SIMP(statut='o',typ='R',min=3,max=3), + ), - DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + b_nescl_vecty=BLOC(condition = "VECT_ESCL == 'VECT_Y'", + ESCL_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + ), +# + TYPE_APPA =SIMP(statut='f',typ='TXM',defaut="PROCHE", + into =("PROCHE","FIXE")), - TOLE_APPA =SIMP(statut='f',typ='R' ,defaut=-1.0), - TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50), + b_appa_fixe=BLOC(condition = "TYPE_APPA == 'FIXE'", + DIRE_APPA =SIMP(statut='f',typ='R',min=3,max=3), + ), +# + DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + b_cara=BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'", + CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ), + ), + DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# + TOLE_APPA =SIMP(statut='f',typ='R' ,defaut=-1.0), + TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50), # -- Incompatibilité avec CL - - SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), - - FOND_FISSURE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), - b_fond_fissure =BLOC(condition = "FOND_FISSURE == 'OUI' ", - fr="Traitement en fond de fissure", - regles=(UN_PARMI('NOEUD_FOND','GROUP_NO_FOND','MAILLE_FOND','GROUP_MA_FOND'),), - NOEUD_FOND =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO_FOND =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - MAILLE_FOND =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - ), - - RACCORD_LINE_QUAD=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), - b_raccord_surf =BLOC(condition = "RACCORD_LINE_QUAD == 'OUI' ", - fr="Traitement du raccord surfacique", - regles=(UN_PARMI('NOEUD_RACC','GROUP_NO_RACC'),), - NOEUD_RACC =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO_RACC =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - ), - - EXCLUSION_PIV_NUL=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),), - + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + SANS_MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SANS_GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), +# + FOND_FISSURE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), + b_fond_fissure =BLOC(condition = "FOND_FISSURE == 'OUI' ", + fr="Traitement en fond de fissure", + regles=(UN_PARMI('NOEUD_FOND','GROUP_NO_FOND','MAILLE_FOND','GROUP_MA_FOND'),), + NOEUD_FOND =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO_FOND =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE_FOND =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), +# + RACCORD_LINE_QUAD=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), + b_raccord_surf =BLOC(condition = "RACCORD_LINE_QUAD == 'OUI' ", + fr="Traitement du raccord surfacique", + regles=(UN_PARMI('NOEUD_RACC','GROUP_NO_RACC'),), + NOEUD_RACC =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO_RACC =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), +# + EXCLUSION_PIV_NUL=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),), +# -- Mode sans calcul + RESOLUTION =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + b_verif=BLOC(condition = "RESOLUTION == 'NON' ", + TOLE_INTERP = SIMP(statut='f',typ='R',defaut = 0.), + ), # -- Fonctionnalités spécifiques 'CONTINUE' - INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD", - into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2", - "NCOTES" ,"NCOTES1" ,"NCOTES2"),), - - CONTACT_INIT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), - - GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), - - ALGO_CONT =SIMP(statut='f',typ='TXM',defaut="STANDARD", - into=("STANDARD","AVANCE","PENALISATION"),), - - b_cont_std=BLOC(condition = "ALGO_CONT == 'STANDARD' ", - fr="Parametres de la formulation Lagrangienne", - COEF_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), - ), - b_cont_avc=BLOC(condition = "ALGO_CONT == 'AVANCE' ", - fr="Parametres du Lagrangien augmenté", - COEF_REGU_CONT=SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_STAB_CONT=SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_PENA_CONT=SIMP(statut='f',typ='R',defaut=100.E+0), - ), - b_cont_pena =BLOC(condition = "ALGO_CONT == 'PENALISATION' ", + INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD", + into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2", + "NCOTES" ,"NCOTES1" ,"NCOTES2"),), +# + CONTACT_INIT =SIMP(statut='f',typ='TXM',defaut="NON", + into=("OUI","INTERPENETRE","NON"),), +# + GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), +# + ALGO_CONT =SIMP(statut='f',typ='TXM',defaut="STANDARD", + into=("STANDARD","AVANCE","PENALISATION"),), + + b_cont_std=BLOC(condition = "ALGO_CONT == 'STANDARD' ", + fr="Paramètres de la formulation Lagrangienne", + COEF_CONT = SIMP(statut='f',typ='R',defaut=100.E+0), + ), + b_cont_avc=BLOC(condition = "ALGO_CONT == 'AVANCE' ", + fr="Paramètres du Lagrangien augmenté", + COEF_REGU_CONT=SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_STAB_CONT=SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_PENA_CONT=SIMP(statut='f',typ='R',defaut=100.E+0), + ), + b_cont_pena=BLOC(condition = "ALGO_CONT == 'PENALISATION' ", fr="Paramètres de la méthode pénalisée", - COEF_PENA_CONT =SIMP(statut='o',typ='R'),), - - COMPLIANCE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), - b_compliance=BLOC(condition = "COMPLIANCE == 'OUI' ",fr="Parametres de la compliance", - ASPERITE =SIMP(statut='o',typ='R',), - E_N =SIMP(statut='o',typ='R',), - E_V =SIMP(statut='f',typ='R',defaut=0.E+0), - ), - - b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement", - COULOMB =SIMP(statut='o',typ='R',), - SEUIL_INIT =SIMP(statut='f',typ='R',defaut=0.E+0), - - regles=(EXCLUS('SANS_NOEUD_FR','SANS_GROUP_NO_FR'),), - SANS_NOEUD_FR =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - SANS_GROUP_NO_FR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - b_sans_group_no_frot=BLOC(condition="SANS_GROUP_NO_FR != None or SANS_NO_FR != None", - fr="Direction(s) de frottement à exclure", - EXCL_FROT_1 =SIMP(statut='f',typ='R',min=3,max=3), - EXCL_FROT_2 =SIMP(statut='f',typ='R',min=3,max=3), - ), - - ALGO_FROT =SIMP(statut='f',typ='TXM',defaut="STANDARD", - into=("STANDARD","AVANCE","PENALISATION"),), - b_frot_std =BLOC(condition = "ALGO_FROT == 'STANDARD' ", - fr="Parametres de la formulation Lagrangienne", - COEF_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - ), - b_frot_avc =BLOC(condition = "ALGO_FROT == 'AVANCE' ", - fr="Parametres du Lagrangien augmenté", - COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_STAB_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_PENA_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - ), - b_frot_pena =BLOC(condition = "ALGO_FROT == 'PENALISATION' ", - fr="Paramètres de la méthode pénalisée", - COEF_PENA_FROT =SIMP(statut='o',typ='R'), - ), + COEF_PENA_CONT =SIMP(statut='o',typ='R'), + ), +# + COMPLIANCE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), + b_compliance=BLOC(condition = "COMPLIANCE == 'OUI' ", + fr="Paramètres de la compliance", + ASPERITE = SIMP(statut='o',typ='R',), + E_N = SIMP(statut='o',typ='R',), + E_V = SIMP(statut='f',typ='R',defaut=0.E+0), + ), +# + b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' ", + fr="Paramètres du frottement de Coulomb", + COULOMB = SIMP(statut='o',typ='R',), + SEUIL_INIT = SIMP(statut='f',typ='R',defaut=0.E+0), +# + regles=(EXCLUS('SANS_NOEUD_FR','SANS_GROUP_NO_FR'),), + SANS_NOEUD_FR =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO_FR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + b_sans_group_no_frot=BLOC(condition = " SANS_GROUP_NO_FR != None or \ + SANS_NOEUD_FR != None ", + fr="Direction de frottement à exclure (uniquement dans le cas 3D)", + DIRE_EXCL_FROT=SIMP(statut='f',typ='R',min=3,max=3), + ), - USURE =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","ARCHARD",),), - b_usure =BLOC(condition = "USURE == 'ARCHARD' ", - fr="Parametres de la loi d'usure d'Archard", - K =SIMP(statut='o',typ='R',), - H =SIMP(statut='o',typ='R',val_min=1E-8), - ), + ALGO_FROT =SIMP(statut='f',typ='TXM',defaut="STANDARD", + into=("STANDARD","AVANCE","PENALISATION"),), + b_frot_std =BLOC(condition = "ALGO_FROT == 'STANDARD' ", + fr="Paramètres de la formulation Lagrangienne", + COEF_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + ), + b_frot_avc =BLOC(condition = "ALGO_FROT == 'AVANCE' ", + fr="Paramètres du Lagrangien augmenté", + COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_STAB_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_PENA_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + ), + b_frot_pena =BLOC(condition = "ALGO_FROT == 'PENALISATION' ", + fr="Paramètres de la méthode pénalisée", + COEF_PENA_FROT =SIMP(statut='o',typ='R'), + ), +# + USURE =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","ARCHARD",),), + b_usure =BLOC(condition = "USURE == 'ARCHARD' ", + fr="Parametres de la loi d'usure d'Archard", + K =SIMP(statut='o',typ='R',), + H =SIMP(statut='o',typ='R',val_min=1E-8), + ), - ), #fin bloc b_frottement - ), #fin mot-clé facteur ZONE - ), #fin bloc b_affe_continue + ), #fin bloc b_frottement + ), #fin mot-clé facteur ZONE + ), #fin bloc b_affe_continue # AFFECTATION - CAS XFEM @@ -9263,76 +10636,82 @@ DEFI_CONTACT=OPER(nom = "DEFI_CONTACT", into=("GAUSS","FPG2","FPG3","FPG4","FPG6","FPG7", "NOEUD","SIMPSON","SIMPSON1","NCOTES","NCOTES1","NCOTES2"),), - CONTACT_INIT = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), - GLISSIERE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), - RELATION = SIMP(statut='f',typ='TXM',defaut="NON",into=("CZM_XFEM","NON"),), + RELATION = SIMP(statut='f',typ='TXM',defaut="NON", + into=("CZM_EXP_REG","CZM_LIN_REG","NON"),), ALGO_LAGR = SIMP(statut='f',typ='TXM',defaut="VERSION1", into=("NON","VERSION1","VERSION2"),), COEF_ECHELLE = SIMP(statut='f',typ='R',defaut=1.E+6), - ALGO_CONT =SIMP(statut='f',typ='TXM',defaut="STANDARD", - into=("STANDARD","AVANCE","PENALISATION"),), + ALGO_CONT = SIMP(statut='f',typ='TXM',defaut="STANDARD", + into=("STANDARD","AVANCE","PENALISATION","CZM"),), + + b_cont_nczm =BLOC(condition = "ALGO_CONT!='CZM'", + CONTACT_INIT = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), + GLISSIERE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), + ), - b_cont_std=BLOC(condition = "ALGO_CONT == 'STANDARD' ", - fr="Parametres de la formulation Lagrangienne", - COEF_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), - ), - b_cont_avc=BLOC(condition = "ALGO_CONT == 'AVANCE' ",fr="Parametres du Lagrangien augmenté", - COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_STAB_CONT =SIMP(statut='f',typ='R',defaut=0.E+0), - COEF_PENA_CONT =SIMP(statut='f',typ='R',defaut=0.E+0), - ), + b_cont_std=BLOC(condition = "ALGO_CONT == 'STANDARD'", + fr="Parametres de la formulation Lagrangienne", + COEF_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), + ), + + b_cont_avc=BLOC(condition = "ALGO_CONT == 'AVANCE' ", + fr="Parametres du Lagrangien augmenté", + COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_STAB_CONT =SIMP(statut='f',typ='R',defaut=0.E+0), + COEF_PENA_CONT =SIMP(statut='f',typ='R',defaut=0.E+0), + ), b_cont_pen=BLOC(condition = "ALGO_CONT == 'PENALISATION' ", - fr="Paramètre de la méthode pénalisée", - COEF_PENA_CONT =SIMP(statut='o',typ='R'), - ), - - b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement", - COULOMB =SIMP(statut='o',typ='R',), - SEUIL_INIT =SIMP(statut='f',typ='R',defaut=0.E+0), + fr="Paramètre de la méthode pénalisée", + COEF_PENA_CONT =SIMP(statut='o',typ='R'), + ), - ALGO_FROT =SIMP(statut='f',typ='TXM',defaut="STANDARD", - into=("STANDARD","AVANCE","PENALISATION"),), + b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' and ALGO_CONT != 'CZM' ", + fr="Paramètres du frottement", + COULOMB =SIMP(statut='o',typ='R',), + SEUIL_INIT =SIMP(statut='f',typ='R',defaut=0.E+0), + ALGO_FROT =SIMP(statut='f',typ='TXM',defaut="STANDARD", + into=("STANDARD","AVANCE","PENALISATION"),), - b_frot_std=BLOC(condition = "ALGO_FROT == 'STANDARD' ", - fr="Parametres de la formulation Lagrangienne", - COEF_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - ), - b_frot_avc=BLOC(condition = "ALGO_FROT == 'AVANCE' ", - fr="Parametres du Lagrangien augmenté", - COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_STAB_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), - COEF_PENA_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), - ), - b_frot_pen=BLOC(condition = "ALGO_FROT == 'PENALISATION' ", - fr="Paramètre de la méthode pénalisée", - COEF_PENA_FROT =SIMP(statut='o',typ='R'), - ), - ), #fin bloc b_frottement + b_frot_std=BLOC(condition = "ALGO_FROT == 'STANDARD' ", + fr="Parametres de la formulation Lagrangienne", + COEF_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + ), + b_frot_avc=BLOC(condition = "ALGO_FROT == 'AVANCE' ", + fr="Parametres du Lagrangien augmenté", + COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_STAB_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), + COEF_PENA_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), + ), + b_frot_pen=BLOC(condition = "ALGO_FROT == 'PENALISATION' ", + fr="Paramètre de la méthode pénalisée", + COEF_PENA_FROT =SIMP(statut='o',typ='R'), + ), + ), #fin bloc b_frottement ), #fin mot-clé facteur ZONE ), #fin bloc b_affe_xfem ) #fin OPER -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE DESROCHES X.DESROCHES DEFI_COQU_MULT=OPER(nom="DEFI_COQU_MULT",op=56,sd_prod=mater_sdaster,reentrant='n', @@ -9346,26 +10725,26 @@ DEFI_COQU_MULT=OPER(nom="DEFI_COQU_MULT",op=56,sd_prod=mater_sdaster,reentrant=' val_min=-90.E+0,val_max=90.E+0 ), ), IMPRESSION =FACT(statut='f', - UNITE =SIMP(statut='f',typ='I',defaut=8), + UNITE =SIMP(statut='f',typ='I',defaut=8), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 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. +# 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. # ====================================================================== # RESPONSABLE LEFEBVRE J.P.LEFEBVRE def DEFIC_prod(self,ACTION,UNITE,**args): @@ -9416,12 +10795,12 @@ DEFI_FICHIER=MACRO(nom="DEFI_FICHIER",op=ops.build_DEFI_FICHIER,sd_prod=DEFIC_pr FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)), ), - INFO =SIMP(statut='f',typ='I',into=(1,2) ), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) -#& MODIF COMMANDE DATE 24/08/2009 AUTEUR GENIAUT S.GENIAUT +#& MODIF COMMANDE DATE 08/03/2011 AUTEUR MASSIN P.MASSIN # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -9447,6 +10826,7 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='n' # ------------------------------------------------------------------------------------------------------------------------ MODELE =SIMP(statut='o',typ=modele_sdaster), + MODELE_GRILLE =SIMP(statut='f',typ=modele_sdaster,max=1,position='global'), # ------------------------------------------------------------------------------------------------------------------------ # fissure/interface @@ -9463,13 +10843,13 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='n' regles =UN_PARMI('GROUP_MA_FISS','FONC_LN','FORM_FISS','CHAM_NO_LSN'), # impossible de faire des regles dans des blocs condition, dommage -# b_fissure =BLOC(condition = "TYPE_DISCONTINUITE == 'FISSURE' ",fr="Regles pour les fissures", +# b_fissure =BLOC(condition = "TYPE_DISCONTINUITE == 'FISSURE' ",fr="Regles pour les fissures", # regles =(ENSEMBLE('FONC_LN','FONC_LT'), # ENSEMBLE('CHAM_NO_LSN','CHAM_NO_LST'), # ENSEMBLE('GROUP_MA_FISS','GROUP_MA_FOND')), # ), # -# b_interface =BLOC(condition = "TYPE_DISCONTINUITE == 'INTERFACE' ",fr="Regles pour les interfaces", +# b_interface =BLOC(condition = "TYPE_DISCONTINUITE == 'INTERFACE' ",fr="Regles pour les interfaces", # regles =(PRESENT_ABSENT('FONC_LN','FONC_LT'), # PRESENT_ABSENT('CHAM_NO_LSN','CHAM_NO_LST'), # PRESENT_ABSENT('GROUP_MA_FISS','GROUP_MA_FOND')), @@ -9481,21 +10861,30 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='n' CHAM_NO_LST =SIMP(statut='f',typ=cham_no_sdaster,min=1,max=1), GROUP_MA_FISS =SIMP(statut='f',typ=grma,min=1,max=1), GROUP_MA_FOND =SIMP(statut='f',typ=grma,min=1,max=1), - FORM_FISS =SIMP(statut='f',typ='TXM',into=("ELLIPSE","CYLINDRE","DEMI_PLAN","SEGMENT","DEMI_DROITE","INCLUSION","DROITE") ), - b_ellipse =BLOC(condition = "FORM_FISS == 'ELLIPSE' ",fr="Paramètres de la fissure elliptique", - DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), - DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), + FORM_FISS =SIMP(statut='f',typ='TXM',into=("ELLIPSE","RECTANGLE","CYLINDRE","DEMI_PLAN", + "SEGMENT","DEMI_DROITE","INCLUSION","DROITE") ), + b_ellipse =BLOC(condition = "FORM_FISS == 'ELLIPSE' ",fr="Paramètres de la fissure elliptique", + DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.), + DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.), + CENTRE =SIMP(statut='o',typ='R',min=3,max=3), + VECT_X =SIMP(statut='o',typ='R',min=3,max=3), + VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + COTE_FISS =SIMP(statut='f',typ='TXM',defaut="IN",into=("IN","OUT",) ), ), + b_rectangle =BLOC(condition = "FORM_FISS == 'RECTANGLE' ",fr="Paramètres de la fissure rectangulaire", + DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.), + DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.), + RAYON_CONGE =SIMP(statut='f',typ='R',val_min=0.,defaut=0.), CENTRE =SIMP(statut='o',typ='R',min=3,max=3), VECT_X =SIMP(statut='o',typ='R',min=3,max=3), VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), COTE_FISS =SIMP(statut='f',typ='TXM',defaut="IN",into=("IN","OUT",) ), ), b_cylindre =BLOC(condition = "FORM_FISS == 'CYLINDRE' ",fr="Paramètres de la fissure cylindrique", - DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), - DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), + DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.), + DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.), CENTRE =SIMP(statut='o',typ='R',min=3,max=3), VECT_X =SIMP(statut='o',typ='R',min=3,max=3), VECT_Y =SIMP(statut='o',typ='R',min=3,max=3),), - b_demiplan =BLOC(condition = "FORM_FISS == 'DEMI_PLAN' ",fr="Paramètres de la fissure plane à front droit", + b_demiplan =BLOC(condition = "FORM_FISS == 'DEMI_PLAN' ",fr="Paramètres de la fissure plane à front droit", PFON =SIMP(statut='o',typ='R',min=3,max=3), NORMALE =SIMP(statut='o',typ='R',min=3,max=3), DTAN =SIMP(statut='o',typ='R',min=3,max=3),), @@ -9509,31 +10898,51 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='n' POINT =SIMP(statut='o',typ='R',min=3,max=3), DTAN =SIMP(statut='o',typ='R',min=3,max=3),), b_inclusion =BLOC(condition = "FORM_FISS == 'INCLUSION' ",fr="Paramètres de l'interface 2D (inclusion)", - DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), - DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), + DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.), + DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.), CENTRE =SIMP(statut='o',typ='R',min=3,max=3), VECT_X =SIMP(statut='o',typ='R',min=3,max=3), VECT_Y =SIMP(statut='o',typ='R',min=3,max=3),), ), +# ------------------------------------------------------------------------------------------------------------------------ +# grille (pour Homard) +# ------------------------------------------------------------------------------------------------------------------------ + + DEFI_FISS_GRILLE =FACT(statut='f',max=1, + + b_fissure =BLOC(condition="MODELE_GRILLE == None", + FISSURE =SIMP(statut='f',typ=fiss_xfem,max=1), + ), + + b_levelset_grille =BLOC(condition="MODELE_GRILLE != None" , + CHAM_NO_LSN_GRILLE =SIMP(statut='o',typ=cham_no_sdaster,max=1), + CHAM_NO_LST_GRILLE =SIMP(statut='o',typ=cham_no_sdaster,max=1), + CHAM_NO_GRLSN_GRILLE=SIMP(statut='o',typ=cham_no_sdaster,max=1), + CHAM_NO_GRLST_GRILLE=SIMP(statut='o',typ=cham_no_sdaster,max=1), + ), + ), + + + # ------------------------------------------------------------------------------------------------------------------------ # partie du maillage potentiellement enrichie # ------------------------------------------------------------------------------------------------------------------------ - GROUP_MA_ENRI =SIMP(statut='o',typ=grma,max=01), + GROUP_MA_ENRI =SIMP(statut='f',typ=grma,max=01), # ------------------------------------------------------------------------------------------------------------------------ # types d'enrichissement # ------------------------------------------------------------------------------------------------------------------------ - b_enri_inte =BLOC(condition = "TYPE_DISCONTINUITE == 'INTERFACE' ", + b_enri_inte =BLOC(condition = "TYPE_DISCONTINUITE == 'INTERFACE' ", CHAM_DISCONTINUITE =SIMP(statut='f',typ='TXM',into=("DEPL","SIGM"),defaut="DEPL" ), ), - b_enri_fiss =BLOC(condition = "TYPE_DISCONTINUITE == 'FISSURE' ", + b_enri_fiss =BLOC(condition = "TYPE_DISCONTINUITE == 'FISSURE' ", CHAM_DISCONTINUITE =SIMP(statut='f',typ='TXM',into=("DEPL",),defaut="DEPL" ), TYPE_ENRI_FOND =SIMP(statut='f',typ='TXM',into=("TOPOLOGIQUE","GEOMETRIQUE"),defaut="TOPOLOGIQUE" ), @@ -9552,7 +10961,7 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='n' # orientation du fond de fissure # ------------------------------------------------------------------------------------------------------------------------ - b_orie_fond =BLOC(condition = "TYPE_DISCONTINUITE == 'FISSURE' ", + b_orie_fond =BLOC(condition = "TYPE_DISCONTINUITE == 'FISSURE' ", ORIE_FOND =FACT(statut='f',max=1, PFON_INI =SIMP(statut='o',typ='R',max=3), @@ -9563,34 +10972,44 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='n' ), # ------------------------------------------------------------------------------------------------------------------------ +# branchement +# ------------------------------------------------------------------------------------------------------------------------ + + b_jonction =BLOC(condition = "MODELE_GRILLE == None ", + JONCTION =FACT(statut='f',max=1, + FISSURE =SIMP(statut='o',typ=fiss_xfem,min=1,max='**',), + POINT =SIMP(statut='o',typ='R',max=3,), + ), + ), +# ------------------------------------------------------------------------------------------------------------------------ # info # ------------------------------------------------------------------------------------------------------------------------ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,3,) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE ADOBES A.ADOBES DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, reentrant='n',fr="Définit les caractéristiques nécessaires à l'étude dynamique d'une structure sous écoulement", - UIinfo={"groupes":("Maillage",)}, + UIinfo={"groupes":("Modélisation",)}, regles=( UN_PARMI('FAISCEAU_TRANS','GRAPPE','FAISCEAU_AXIAL','COQUE_COAX',),), FAISCEAU_TRANS =FACT(statut='f',max='**', regles=( ENSEMBLE('CSTE_CONNORS','NB_CONNORS','RHO_TUBE'),), @@ -9604,7 +11023,7 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, TYPE_PAS =SIMP(statut='f',typ='TXM',into=("CARRE_LIGN","TRIA_LIGN") ), TYPE_RESEAU =SIMP(statut='f',typ='I' ), UNITE_CD =SIMP(statut='f',typ='I',defaut=70), - UNITE_CK =SIMP(statut='f',typ='I',defaut=71), + UNITE_CK =SIMP(statut='f',typ='I',defaut=71), PAS =SIMP(statut='f',typ='R' ), CSTE_CONNORS =SIMP(statut='f',typ='R',min=2,max=2,val_min=0.E+00), NB_CONNORS =SIMP(statut='f',typ='I',val_min=2,), @@ -9613,7 +11032,7 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, GRAPPE =FACT(statut='f', regles=(ENSEMBLE('GRAPPE_2','NOEUD','CARA_ELEM','MODELE','RHO_FLUI',), PRESENT_PRESENT('COEF_MASS_AJOU','GRAPPE_2', ),), -# peut on créer un bloc a partir de la valeur de couplage +# peut on créer un bloc a partir de la valeur de couplage COUPLAGE =SIMP(statut='o',typ='TXM',into=("OUI","NON") ), GRAPPE_2 =SIMP(statut='f',typ='TXM', into=("ASC_CEN","ASC_EXC","DES_CEN","DES_EXC") ), @@ -9623,7 +11042,7 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, COEF_MASS_AJOU =SIMP(statut='f',typ='R' ), RHO_FLUI =SIMP(statut='f',typ='R' ), UNITE_CA =SIMP(statut='f',typ='I',defaut=70), - UNITE_KA =SIMP(statut='f',typ='I',defaut=71), + UNITE_KA =SIMP(statut='f',typ='I',defaut=71), ), FAISCEAU_AXIAL =FACT(statut='f',max='**', regles=(UN_PARMI('GROUP_MA','TRI_GROUP_MA'), @@ -9633,7 +11052,7 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, ENSEMBLE('CARA_PAROI','VALE_PAROI'), ENSEMBLE('LONG_TYPG','LARG_TYPG','EPAI_TYPG','RUGO_TYPG','COEF_TRAI_TYPG','COEF_DPOR_TYPG', 'COOR_GRILLE','TYPE_GRILLE', ),), -# on doit pouvoir mettre des blocs conditionnels mais pas assez d infos pour le faire +# on doit pouvoir mettre des blocs conditionnels mais pas assez d infos pour le faire GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), TRI_GROUP_MA =SIMP(statut='f',typ='TXM' ), VECT_X =SIMP(statut='f',typ='R',max=3), @@ -9675,30 +11094,30 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 11/01/2010 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE PEYRARD C.PEYRARD from Macro.defi_fonc_elec_ops import defi_fonc_elec_ops DEFI_FONC_ELEC=MACRO(nom="DEFI_FONC_ELEC",op=defi_fonc_elec_ops,sd_prod=fonction_sdaster,reentrant='n', - UIinfo={"groupes":("Outils métier",)}, + UIinfo={"groupes":("Outils-métier",)}, fr="Définir une fonction du temps intervenant dans le calcul des forces de LAPLACE", regles=(UN_PARMI('COUR_PRIN','COUR'), EXCLUS('COUR','COUR_SECO'), ), @@ -9748,29 +11167,29 @@ DEFI_FONC_ELEC=MACRO(nom="DEFI_FONC_ELEC",op=defi_fonc_elec_ops,sd_prod=fonction ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# 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. +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. # -# 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. +# 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. # ====================================================================== # RESPONSABLE ADOBES A.ADOBES DEFI_FONC_FLUI=OPER(nom="DEFI_FONC_FLUI",op= 142,sd_prod=fonction_sdaster, reentrant='n', fr="Définit un profil de vitesse d'écoulement fluide le long d'une poutre", - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Modélisation","Fonctions",)}, MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ), NOEUD_INIT =SIMP(statut='o',typ=no), NOEUD_FIN =SIMP(statut='o',typ=no), @@ -9788,23 +11207,23 @@ DEFI_FONC_FLUI=OPER(nom="DEFI_FONC_FLUI",op= 142,sd_prod=fonction_sdaster, INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS def defi_fonction_prod(VALE,VALE_PARA,VALE_C,NOEUD_PARA,ABSCISSE,**args): @@ -9818,7 +11237,7 @@ def defi_fonction_prod(VALE,VALE_PARA,VALE_C,NOEUD_PARA,ABSCISSE,**args): DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod ,fr="Définit une fonction réelle ou complexe d'une variable réelle", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, regles=(UN_PARMI('VALE','VALE_C','VALE_PARA','NOEUD_PARA','ABSCISSE'),), NOM_PARA =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ), NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), @@ -9851,27 +11270,27 @@ DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 04/05/2011 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE GALENNE E.GALENNE DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Modélisation",)}, fr="Définition de lèvres et d'un fond de fissure en 3D", regles=(UN_PARMI('FOND_FISS','FOND_FERME','FOND_INF'), EXCLUS('FOND_FERME','DTAN_ORIG'), @@ -9896,7 +11315,7 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,reentrant='n', NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), -# à mettre à jour le max vaut-il 1 +# à mettre à jour le max vaut-il 1 NOEUD_ORIG =SIMP(statut='f',typ=no,), GROUP_NO_ORIG =SIMP(statut='f',typ=grno,), NOEUD_EXTR =SIMP(statut='f',typ=no,), @@ -9912,7 +11331,7 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,reentrant='n', NOEUD_ORIG =SIMP(statut='f',typ=no,), GROUP_NO_ORIG =SIMP(statut='f',typ=grno,), MAILLE_ORIG =SIMP(statut='f',typ=ma,), - GROUP_MA_ORIG =SIMP(statut='f',typ=ma,), + GROUP_MA_ORIG =SIMP(statut='f',typ=grma,), ), FOND_INF =FACT(statut='f', GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), @@ -9925,7 +11344,7 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,reentrant='n', GROUP_NO_EXTR =SIMP(statut='f',typ=grno,), ), FOND_SUP =FACT(statut='f', - GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), @@ -9952,30 +11371,30 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,reentrant='n', VECT_GRNO_EXTR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # 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. +# 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. # ====================================================================== # RESPONSABLE FLEJOU J.L.FLEJOU -# +# DEFI_GEOM_FIBRE=OPER(nom="DEFI_GEOM_FIBRE",op= 119, sd_prod=gfibre_sdaster, fr="Definition des groupes de fibres pour les elements multifibres", reentrant='n', - UIinfo={"groupes":("Modelisation",)}, + UIinfo={"groupes":("Modélisation",)}, regles=(AU_MOINS_UN('SECTION','FIBRE'),), INFO =SIMP(statut='f',typ='I', defaut= 1 ,into=(1,2) ), @@ -10004,10 +11423,127 @@ DEFI_GEOM_FIBRE=OPER(nom="DEFI_GEOM_FIBRE",op= 119, sd_prod=gfibre_sdaster, ) ; -#& MODIF COMMANDE DATE 20/04/2009 AUTEUR SFAYOLLE S.FAYOLLE +#& MODIF COMMANDE DATE 11/01/2011 AUTEUR SFAYOLLE S.FAYOLLE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE SFAYOLLE S.FAYOLLE +DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f', + UIinfo={"groupes":("Modélisation",)}, + fr="Déterminer les caractéristiques homogenéisées du béton armé à partir des propriétés du béton et des " + +" armatures", + reuse = SIMP(statut='f',typ=mater_sdaster), + RELATION = SIMP(statut='o',typ='TXM',defaut="GLRC_DAMAGE", + into=("GLRC_DM","GLRC_DAMAGE"),), + + b_glrc_dm=BLOC(condition = "RELATION == 'GLRC_DM'", + fr="Paramètres de la loi GLRC_DM", + BETON = FACT(statut='o',max=1, + MATER = SIMP(statut='o',typ=(mater_sdaster),), + EPAIS = SIMP(statut='o',typ='R',val_min=0.E+0 ),), + NAPPE = FACT(statut='o',max=1, + MATER = SIMP(statut='o',typ=(mater_sdaster),), + OMY = SIMP(statut='o',typ='R',val_min=0.E+0,), + OMX = SIMP(statut='o',typ='R',val_min=0.E+0,), + RY = SIMP(statut='o',typ='R',val_min=-1.0E+0,val_max=1.0E+0,), + RX = SIMP(statut='o',typ='R',val_min=-1.0E+0,val_max=1.0E+0),), + RHO = SIMP(statut='f',typ='R',val_min=0.E+0,), + AMOR_ALPHA = SIMP(statut='f',typ='R',val_min=0.E+0,), + AMOR_BETA = SIMP(statut='f',typ='R',val_min=0.E+0,), + COMPR = SIMP(statut='o',typ='TXM',defaut="GAMMA", + into=("GAMMA","SEUIL")), + b_gamma=BLOC(condition = "COMPR == 'GAMMA'", + fr="Paramètre d'endommagement en compression ", + GC = SIMP(statut='o',typ='R',defaut=1.0E+0,val_min=0.0E+0, val_max=1.0E+0),), + b_seuil=BLOC(condition = "COMPR == 'SEUIL'", + fr="Seuil d'endommagement en compression ", + SYC = SIMP(statut='o',typ='R'),), + PENTE = SIMP(statut='o',typ='TXM',defaut="RIGI_ACIER", + into=("PLAS_ACIER","UTIL","RIGI_ACIER")), + b_util = BLOC(condition = "PENTE == 'UTIL'", + fr="Valeur de la déformation maximale de l'élément", + EPSI_MEMB = SIMP(statut='o',typ='R',defaut=0.E+0), + EPSI_FLEX = SIMP(statut='o',typ='R',defaut=0.E+0),), + CISAIL = SIMP(statut='o',typ='TXM',defaut="NON", + into=("OUI","NON"),), + METHODE_ENDO = SIMP(statut='o',typ='TXM',defaut="ENDO_INTER", + into=("ENDO_NAISS","ENDO_LIM","ENDO_INTER"),), + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2),), + ), + b_glrc_damage=BLOC(condition = "RELATION == 'GLRC_DAMAGE'", + fr="Paramètres de la loi GLRC_DAMAGE", + BETON =FACT(statut='o',max=1, + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + EPAIS =SIMP(statut='o',typ='R',val_min=0.E+0 ), + GAMMA =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), + QP1 =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), + QP2 =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), + + C1N1 =SIMP(statut='o',typ='R',val_min=0.E+0), + C1N2 =SIMP(statut='o',typ='R',val_min=0.E+0), + C1N3 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2N1 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2N2 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2N3 =SIMP(statut='o',typ='R',val_min=0.E+0), + C1M1 =SIMP(statut='o',typ='R',val_min=0.E+0), + C1M2 =SIMP(statut='o',typ='R',val_min=0.E+0), + C1M3 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2M1 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2M2 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2M3 =SIMP(statut='o',typ='R',val_min=0.E+0), + + OMT =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), + EAT =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), + BT1 =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), + BT2 =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), + + MP1X =SIMP(statut='f',typ=('R',listr8_sdaster)), + MP2X =SIMP(statut='f',typ=('R',listr8_sdaster)), + MP1Y =SIMP(statut='f',typ=('R',listr8_sdaster)), + MP2Y =SIMP(statut='f',typ=('R',listr8_sdaster)), + ), + NAPPE =FACT(statut='o',max=10, + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + OMX =SIMP(statut='o',typ='R',val_min=0.E+0), + OMY =SIMP(statut='o',typ='R',val_min=0.E+0), + RX =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + RY =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + ), + CABLE_PREC =FACT(statut='f',max=1, + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + OMX =SIMP(statut='o',typ='R',val_min=0.E+0), + OMY =SIMP(statut='o',typ='R',val_min=0.E+0), + RX =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + RY =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + PREX =SIMP(statut='o',typ='R'), + PREY =SIMP(statut='o',typ='R'), + ), + LINER =FACT(statut='f',max=10, + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + OML =SIMP(statut='o',typ='R',val_min=0.E+0), + RLR =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2),), + ), +) ; +#& MODIF COMMANDE DATE 08/03/2011 AUTEUR MASSIN P.MASSIN +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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 @@ -10022,71 +11558,19 @@ DEFI_GEOM_FIBRE=OPER(nom="DEFI_GEOM_FIBRE",op= 119, sd_prod=gfibre_sdaster, # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -# RESPONSABLE SFAYOLLE S.FAYOLLE -DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f', - UIinfo={"groupes":("Modelisation",)}, - fr="Determiner les caracteristiques du beton arme homogeneisees a partir des proprietes du beton et de " - +" plusieurs types d'armature", - reuse = SIMP(statut='f',typ=mater_sdaster), - BETON =FACT(statut='o',max=1, - MATER =SIMP(statut='o',typ=(mater_sdaster) ), - EPAIS =SIMP(statut='o',typ='R',val_min=0.E+0 ), - GAMMA =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), - QP1 =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), - QP2 =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), - - C1N1 =SIMP(statut='o',typ='R',val_min=0.E+0), - C1N2 =SIMP(statut='o',typ='R',val_min=0.E+0), - C1N3 =SIMP(statut='o',typ='R',val_min=0.E+0), - C2N1 =SIMP(statut='o',typ='R',val_min=0.E+0), - C2N2 =SIMP(statut='o',typ='R',val_min=0.E+0), - C2N3 =SIMP(statut='o',typ='R',val_min=0.E+0), - C1M1 =SIMP(statut='o',typ='R',val_min=0.E+0), - C1M2 =SIMP(statut='o',typ='R',val_min=0.E+0), - C1M3 =SIMP(statut='o',typ='R',val_min=0.E+0), - C2M1 =SIMP(statut='o',typ='R',val_min=0.E+0), - C2M2 =SIMP(statut='o',typ='R',val_min=0.E+0), - C2M3 =SIMP(statut='o',typ='R',val_min=0.E+0), - - OMT =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), - EAT =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), - BT1 =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), - BT2 =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), - - MP1X =SIMP(statut='f',typ=('R',listr8_sdaster)), - MP2X =SIMP(statut='f',typ=('R',listr8_sdaster)), - MP1Y =SIMP(statut='f',typ=('R',listr8_sdaster)), - MP2Y =SIMP(statut='f',typ=('R',listr8_sdaster)), - ), - NAPPE =FACT(statut='o',max=10, - MATER =SIMP(statut='o',typ=(mater_sdaster) ), - OMX =SIMP(statut='o',typ='R',val_min=0.E+0), - OMY =SIMP(statut='o',typ='R',val_min=0.E+0), - RX =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), - RY =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), - ), - CABLE_PREC =FACT(statut='f',max=1, - MATER =SIMP(statut='o',typ=(mater_sdaster) ), - OMX =SIMP(statut='o',typ='R',val_min=0.E+0), - OMY =SIMP(statut='o',typ='R',val_min=0.E+0), - RX =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), - RY =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), - PREX =SIMP(statut='o',typ='R'), - PREY =SIMP(statut='o',typ='R'), - ), - LINER =FACT(statut='f',max=10, - MATER =SIMP(statut='o',typ=(mater_sdaster) ), - OML =SIMP(statut='o',typ='R',val_min=0.E+0), - RLR =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), - ), - IMPRESSION =FACT(statut='f', - UNITE =SIMP(statut='f',typ='I',defaut=8), - ), +# RESPONSABLE GENIAUT S.GENIAUT +DEFI_GRILLE=OPER(nom="DEFI_GRILLE",op=82,sd_prod=grille_sdaster,reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + fr="Définition d'une grille", + + MAILLAGE = SIMP(statut='o',typ=maillage_sdaster), + + INFO = SIMP(statut='f',typ='I',defaut= 0,into=(0,1,2) ), ) ; -#& MODIF COMMANDE DATE 02/02/2010 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 01/03/2011 AUTEUR GENIAUT S.GENIAUT # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -10131,7 +11615,7 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, TYPE_MAILLE =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","1D","2D","3D"),max=1 ), OPTION =SIMP(statut='f',typ='TXM',into=("FACE_NORMALE","SPHERE","CYLINDRE", - "BANDE","APPUI_LACHE","APPUI") ), + "BANDE","APPUI_LACHE","APPUI","FISS_XFEM") ), b_group_ma =BLOC(condition = "GROUP_MA != None", regles=(EXCLUS('POSITION','NUME_INIT'),), NUME_INIT =SIMP(statut='f',typ='I'), @@ -10153,6 +11637,8 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, NOEUD_CENTRE =SIMP(statut='f',typ=no), GROUP_NO_CENTRE =SIMP(statut='f',typ=grno), RAYON =SIMP(statut='o',typ='R' ), + CRIT_NOEUD = SIMP(statut='f',typ='TXM',defaut="AU_MOINS_UN", + into=("TOUS","AU_MOINS_UN","MAJORITE"),), ), b_cylindre =BLOC(condition = "OPTION == 'CYLINDRE'", regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'), @@ -10163,6 +11649,8 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, RAYON =SIMP(statut='o',typ='R' ), ANGL_NAUT =SIMP(statut='f',typ='R',max=2), VECT_NORMALE =SIMP(statut='f',typ='R',max=3), + CRIT_NOEUD = SIMP(statut='f',typ='TXM',defaut="AU_MOINS_UN", + into=("TOUS","AU_MOINS_UN","MAJORITE"),), ), b_bande =BLOC(condition = "OPTION == 'BANDE'", regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'), @@ -10173,6 +11661,8 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, DIST =SIMP(statut='o',typ='R' ), ANGL_NAUT =SIMP(statut='f',typ='R',max=2), VECT_NORMALE =SIMP(statut='f',typ='R',max=3), + CRIT_NOEUD = SIMP(statut='f',typ='TXM',defaut="AU_MOINS_UN", + into=("TOUS","AU_MOINS_UN","MAJORITE"),), ), b_app_lache =BLOC(condition = "OPTION == 'APPUI_LACHE'", regles=(UN_PARMI('NOEUD','GROUP_NO'),), @@ -10185,12 +11675,17 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), TYPE_APPUI =SIMP(statut='o',typ='TXM',max=1, into=('AU_MOINS_UN','TOUT','SOMMET','MAJORITE')), ), + b_fiss_xfem =BLOC(condition = "OPTION == 'FISS_XFEM'", + TYPE_GROUP =SIMP(statut='o',typ='TXM',max=1,defaut='XFEM', + into=('HEAVISIDE','CRACKTIP','MIXTE','FISSUREE','XFEM',),), + FISSURE =SIMP(statut='o',typ=fiss_xfem,min=1,max='**'), + ), ), CREA_GROUP_NO =FACT(statut='f',max='**', OPTION =SIMP(statut='f',typ='TXM',into=("ENV_SPHERE","ENV_CYLINDRE","PLAN", - "SEGM_DROI_ORDO","NOEUD_ORDO","TUNNEL","INCLUSION") ), + "SEGM_DROI_ORDO","NOEUD_ORDO","TUNNEL","INCLUSION","FISS_XFEM") ), b_option =BLOC(condition = "OPTION == None" , regles=(UN_PARMI('TOUT_GROUP_MA','GROUP_MA','GROUP_NO','NOEUD', @@ -10302,27 +11797,32 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, GROUP_MA_INCL =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), MAILLAGE_INCL =SIMP(statut='f',typ=maillage_sdaster), ), - ), + b_fiss_xfem =BLOC(condition = "OPTION == 'FISS_XFEM'", + NOM =SIMP(statut='o',typ=geom), + TYPE_GROUP =SIMP(statut='o',typ='TXM',max=1,into=('HEAVISIDE','CRACKTIP','MIXTE','XFEM',)), + FISSURE =SIMP(statut='o',typ=fiss_xfem,min=1,max='**'), + ), + ), ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), INFO =SIMP(statut='f',typ='I',into=( 1 , 2 ) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE ZENTNER I.ZENTNER from Macro.defi_inte_spec_ops import defi_inte_spec_ops @@ -10330,7 +11830,7 @@ from Macro.defi_inte_spec_ops import defi_inte_spec_ops DEFI_INTE_SPEC=MACRO(nom="DEFI_INTE_SPEC",op= defi_inte_spec_ops,sd_prod=table_fonction, reentrant='n', fr="Définit une matrice interspectrale", - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, DIMENSION =SIMP(statut='f',typ='I',defaut= 1 ), @@ -10368,31 +11868,31 @@ DEFI_INTE_SPEC=MACRO(nom="DEFI_INTE_SPEC",op= defi_inte_spec_ops,sd_prod=table_f PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), - INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 06/05/2008 AUTEUR CORUS M.CORUS +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE CORUS M.CORUS DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op= 98,sd_prod=interf_dyna_clas, reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)}, fr="Définir les interfaces d'une structure et leur affecter un type", NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ), INTERFACE =FACT(statut='o',max='**', @@ -10409,7 +11909,7 @@ DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op= 98,sd_prod=interf_dyna_clas, FREQ =SIMP(statut='f',typ='R',defaut= 1.), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10431,7 +11931,7 @@ DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op= 98,sd_prod=interf_dyna_clas, DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis_sdaster, fr="Définir une liste d'entiers strictement croissante", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, OPERATION =SIMP(statut='o',typ='TXM',defaut='DEFI',into=('DEFI','NUME_ORDRE',)), @@ -10464,31 +11964,52 @@ DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis_sdaster, INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 22/09/2009 AUTEUR SELLENET N.SELLENET +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR GENIAUT S.GENIAUT # 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== # RESPONSABLE GENIAUT S.GENIAUT + +# bloc utilisé deux fois à l'identique +bloc_unif = BLOC(condition = "SUBD_METHODE == 'UNIFORME'", + SUBD_COEF_PAS_1=SIMP(statut='f',typ='R',defaut=1.0,val_min=0.0,max=1, + fr="Coefficient multiplicateur de la 1ère subdivision"), + SUBD_PAS =SIMP(statut='f',typ='I',defaut=4,val_min=2,max=1, + fr="Nombre de subdivision d'un pas de temps"), + + b_subd_unif_manu = BLOC(condition="METHODE == 'MANUEL'", + regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),), + SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,defaut=3,max=1, + fr="Nombre maximum de niveau de subdivision d'un pas de temps"), + SUBD_PAS_MINI=SIMP(statut='f',typ='R',defaut=0.,val_min=0.0,max=1, + fr="Pas de temps en dessous duquel on ne subdivise plus"), + ), + + b_subd_unif_auto = BLOC(condition="METHODE == 'AUTO'", + SUBD_PAS_MINI=SIMP(statut='f',typ='R',defaut=0.,val_min=0.0,max=1, + fr="Pas de temps en dessous duquel on ne subdivise plus"), + ), + ) # fin si UNIFORME + DEFI_LIST_INST=OPER(nom="DEFI_LIST_INST",op= 28,sd_prod=list_inst,reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Fonctions",)}, fr="Définition de la gestion de la liste d'instants", - # ---------------------------------------------------------------------------------------------------------------------------------- # mot-cle pour la definition a priori de la liste d'instant # ---------------------------------------------------------------------------------------------------------------------------------- @@ -10500,65 +12021,72 @@ DEFI_LIST_INST=OPER(nom="DEFI_LIST_INST",op= 28,sd_prod=list_inst,reentrant='n' b_manuel =BLOC(condition = "METHODE == 'MANUEL' ",fr="Liste d'instants donnée par l'utilisateur", LIST_INST =SIMP(statut='o',typ=listr8_sdaster), ), - - b_auto =BLOC(condition = "METHODE == 'AUTO' ",fr="a compléter", + + b_auto =BLOC(condition = "(METHODE == 'AUTO') ",fr="Gestion automatique de la liste d'instants", LIST_INST =SIMP(statut='o',typ=listr8_sdaster), - PAS_MINI =SIMP(statut='o',typ='R',val_min=0.0,max=1), + PAS_MINI =SIMP(statut='f',typ='R',val_min=1.e-12,max=1), PAS_MAXI =SIMP(statut='f',typ='R',max=1), - NB_PAS_MAXI =SIMP(statut='f',typ='I',max=1), + NB_PAS_MAXI =SIMP(statut='f',typ='I',val_max=1000000,max=1,defaut=1000000), ), - -# b_cfl =BLOC(condition = "METHODE == 'CFL' ",fr="Liste d'instants construite sur condition CFL", -# COEF =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut=0.5), -# MODELE =SIMP(statut='o',typ=modele_sdaster), -# ), - - ), + ), # ---------------------------------------------------------------------------------------------------------------------------------- # mot-cle pour le comportement en cas d'echec (on doit recommencer le meme instant) # ---------------------------------------------------------------------------------------------------------------------------------- ECHEC =FACT(statut='d',max='**', - EVENEMENT =SIMP(statut='f',typ='TXM',into=("DIVERGENCE",),defaut="DIVERGENCE",max=1 ), - - SUBD_METHODE =SIMP(statut='f',typ='TXM',into =("AUCUNE","UNIFORME","EXTRAPOLE"),defaut="UNIFORME",max=1, - fr="Méthode de subdivision des pas de temps en cas de diconvergence"), - - b_subd_unif=BLOC(condition = "SUBD_METHODE == 'UNIFORME'", - regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),), - SUBD_COEF_PAS_1=SIMP(statut='f',typ='R',defaut=1.0,val_min=0.0,max=1, - fr="Coefficient multiplicateur de la 1ère subdivision"), - SUBD_PAS =SIMP(statut='f',typ='I',defaut=4,val_min=2,max=1, - fr="Nombre de subdivision d'un pas de temps"), - SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,defaut=3,max=1, - fr="Nombre maximum de niveau de subdivision d'un pas de temps"), - SUBD_PAS_MINI=SIMP(statut='f',typ='R',defaut=0.,val_min=0.0,max=1, - fr="Pas de temps en dessous duquel on ne subdivise plus"), - ), + EVENEMENT =SIMP(statut='f',typ='TXM',into=("ERREUR","DELTA_GRANDEUR","DIVE_ITER_PILO"),defaut="ERREUR",max=1 ), - b_subd_extr=BLOC(condition = "SUBD_METHODE == 'EXTRAPOLE'", - regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),), - SUBD_OPTION =SIMP(statut='f',typ='TXM', - into =("IGNORE_PREMIERES","GARDE_DERNIERES",), - defaut="IGNORE_PREMIERES", - fr="Technique d'extrapolation : les 1ere itérations sont ignorées ou les dernières sont gardées"), - SUBD_ITER_IGNO =SIMP(statut='f',typ='I',defaut=3,val_min=3,max=1, - fr="Les n premières itérations sont ignorées pour l'extrapolation"), - SUBD_ITER_FIN =SIMP(statut='f',typ='I',defaut=8,val_min=3,max=1, - fr="Seules les n dernières itérations sont prises pour l'extrapolation"), - SUBD_PAS =SIMP(statut='f',typ='I',defaut=4,val_min=2,max=1, - fr="Nombre de subdivision d'un pas de temps en cas divergence"), - SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,max=1, - fr="Nombre maximum de niveau de subdivision d'un pas de temps"), - SUBD_PAS_MINI=SIMP(statut='f',typ='R',defaut=0.,val_min=0.0,max=1, - fr="Pas de temps en dessous duquel on ne subdivise plus"), - SUBD_ITER_PLUS =SIMP(statut='f',typ='I',defaut=50,val_min=20,max=1, - fr="% itération autorisée en plus"), - ), + b_edelta =BLOC(condition = "EVENEMENT == 'DELTA_GRANDEUR' ",fr=" ", +# event-driven : on sous-decoupe si l'increment d'une composante d'un champ depasse le seuil + VALE_REF =SIMP(statut='o',typ='R',max=1), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("DEPL","VARI_ELGA","SIEF_ELGA",),max=1), + NOM_CMP =SIMP(statut='o',typ='TXM',max=1), - ), + SUBD_METHODE =SIMP(statut='f',typ='TXM',into =("AUCUNE","UNIFORME"),defaut="UNIFORME",max=1, + fr="Méthode de subdivision des pas de temps en cas de diconvergence pour event-driven"), + + b_subd_unif = bloc_unif, + + ), # fin si DELTA_GRANDEUR + + b_subd_erreur = BLOC(condition="EVENEMENT == 'ERREUR'", + SUBD_METHODE =SIMP(statut='f',typ='TXM',into =("AUCUNE","UNIFORME","EXTRAPOLE"),defaut="UNIFORME",max=1, + fr="Méthode de subdivision des pas de temps en cas de divergence pour erreur"), + + b_subd_unif = bloc_unif, + + b_subd_extr=BLOC(condition = "SUBD_METHODE == 'EXTRAPOLE'", + SUBD_OPTION =SIMP(statut='f',typ='TXM', into =("IGNORE_PREMIERES","GARDE_DERNIERES",), + defaut="IGNORE_PREMIERES", + fr="Technique d'extrapolation : les 1ere itérations sont ignorées ou les dernières sont gardées"), + SUBD_ITER_IGNO =SIMP(statut='f',typ='I',defaut=3,val_min=3,max=1, + fr="Les n premières itérations sont ignorées pour l'extrapolation"), + SUBD_ITER_FIN =SIMP(statut='f',typ='I',defaut=8,val_min=3,max=1, + fr="Seules les n dernières itérations sont prises pour l'extrapolation"), + SUBD_PAS =SIMP(statut='f',typ='I',defaut=4,val_min=2,max=1, + fr="Nombre de subdivision d'un pas de temps en cas ERREUR"), + + b_subd_unif_manu = BLOC(condition="METHODE == 'MANUEL'", + regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),), + SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,max=1, + fr="Nombre maximum de niveau de subdivision d'un pas de temps"), + SUBD_PAS_MINI=SIMP(statut='f',typ='R',defaut=0.,val_min=0.0,max=1, + fr="Pas de temps en dessous duquel on ne subdivise plus"), + ), + + b_subd_unif_auto = BLOC(condition="METHODE == 'AUTO'", + SUBD_PAS_MINI=SIMP(statut='f',typ='R',defaut=0.,val_min=0.0,max=1, + fr="Pas de temps en dessous duquel on ne subdivise plus"), + ), + + SUBD_ITER_PLUS =SIMP(statut='f',typ='I',defaut=50,val_min=20,max=1, + fr="% itération autorisée en plus"), + ), # fin si EXTRAPOLE + ), # fin si ERREUR + + ), # fin ECHEC # ---------------------------------------------------------------------------------------------------------------------------------- # mot-cle pour le comportement en cas de succes (on a bien converge) @@ -10573,7 +12101,7 @@ DEFI_LIST_INST=OPER(nom="DEFI_LIST_INST",op= 28,sd_prod=list_inst,reentrant='n' EVENEMENT =SIMP(statut='f',typ='TXM',into=("SEUIL","TOUT_INST","AUCUN"),defaut="SEUIL",max=1 ), - b_adap_seuil =BLOC(condition = "EVENEMENT == 'SEUIL' ",fr="seuil de re-decoupe", + b_adap_seuil =BLOC(condition = "EVENEMENT == 'SEUIL' ",fr="seuil de re-decoupe", # FORMULE_SEUIL =SIMP(statut='f',typ=formule), @@ -10585,36 +12113,38 @@ DEFI_LIST_INST=OPER(nom="DEFI_LIST_INST",op= 28,sd_prod=list_inst,reentrant='n' NB_INCR_SEUIL =SIMP(statut='f',typ='I',defaut=2), NOM_PARA =SIMP(statut='f',typ='TXM',into=("NB_ITER_NEWTON",),defaut="NB_ITER_NEWTON"), CRIT_COMP =SIMP(statut='f',typ='TXM',into=("LT","GT","LE","GE"),defaut="LE"), -# b_vale_R =BLOC(condition = "NOM_PARA == 'DP' ",fr="valeur reelle", +# b_vale_R =BLOC(condition = "NOM_PARA == 'DP' ",fr="valeur reelle", # VALE =SIMP(statut='o',typ='R'), # ), - b_vale_I =BLOC(condition = "NOM_PARA == 'NB_ITER_NEWTON' ",fr="valeur entiere", + b_vale_I =BLOC(condition = "NOM_PARA == 'NB_ITER_NEWTON' ",fr="valeur entiere", VALE_I =SIMP(statut='f',typ='I'), ), # ), ), - + # 2) parametre du mode de calcul de dt+ # ---------------------------------------- - MODE_CALCUL_TPLUS =SIMP(statut='f',typ='TXM',into=("FIXE","DELTA_GRANDEUR","ITER_NEWTON","FORMULE"),defaut='FIXE',max=1 ), - b_mfixe =BLOC(condition = "MODE_CALCUL_TPLUS == 'FIXE' ",fr="fixe", + MODE_CALCUL_TPLUS =SIMP(statut='f',typ='TXM',into=("FIXE","DELTA_GRANDEUR","ITER_NEWTON","FORMULE","IMPLEX"),defaut='FIXE', + max=1), + + b_mfixe =BLOC(condition = "MODE_CALCUL_TPLUS == 'FIXE' ",fr="fixe", # dans le cas FIXE :(deltaT+) = (deltaT-)x(1+PCENT_AUGM/100) PCENT_AUGM =SIMP(statut='f',typ='R',defaut=100.,val_min=-100.,max=1), ), - b_mdelta =BLOC(condition = "MODE_CALCUL_TPLUS == 'DELTA_GRANDEUR' ",fr=" ", + b_mdelta =BLOC(condition = "MODE_CALCUL_TPLUS == 'DELTA_GRANDEUR' ",fr=" ", # dans le cas DELTA_GRANDEUR : (deltaT+) = (deltaT-)x(VALREF/deltaVAL) : l'acceleration est inversement proportionnelle # a la variation de la grandeur VALE_REF =SIMP(statut='o',typ='R',max=1), NOM_CHAM =SIMP(statut='o',typ='TXM',into=("DEPL","VARI_ELGA","SIEF_ELGA",),max=1), NOM_CMP =SIMP(statut='o',typ='TXM',max=1), ), - b_mitnew =BLOC(condition = "MODE_CALCUL_TPLUS == 'ITER_NEWTON' ",fr=" ", + b_mitnew =BLOC(condition = "MODE_CALCUL_TPLUS == 'ITER_NEWTON' ",fr=" ", # dans le cas ITER_NEWTON : (deltaT+) = (deltaT-) x sqrt(VALREF/N) : l'acceleration est inversement proportionnelle # au nombre d'iter de Newton precedent NB_ITER_NEWTON_REF =SIMP(statut='o',typ='I',max=1), ), - b_mformule =BLOC(condition = "MODE_CALCUL_TPLUS == 'FORMULE' ",fr=" ", + b_mformule =BLOC(condition = "MODE_CALCUL_TPLUS == 'FORMULE' ",fr=" ", # dans le cas FORMULE regles=UN_PARMI('FORMULE_TPLUS','NOM_SCHEMA'), FORMULE_TPLUS =SIMP(statut='f',typ=formule), @@ -10622,7 +12152,7 @@ DEFI_LIST_INST=OPER(nom="DEFI_LIST_INST",op= 28,sd_prod=list_inst,reentrant='n' ), # les schemas pre-definis : -# abaqus : +# abaqus : # EVENEMENT ='SEUIL' # NB_INCR_SEUIL = 2 # NOM_PARA ='NB_ITER_NEWTON' @@ -10630,17 +12160,17 @@ DEFI_LIST_INST=OPER(nom="DEFI_LIST_INST",op= 28,sd_prod=list_inst,reentrant='n' # VALE_I = 5 # MODE_CALCUL_TPLUS ='FIXE' # PCENT_AUGM = 50. -# Zebulon 1 : +# Zebulon 1 : # EVENEMENT ='TOUT_INST' # MODE_CALCUL_TPLUS ='DELTA_GRANDEUR' # VALE_REF = valref # NOM_CHAM ='VARI_ELGA' # NOM_CMP ='V1' -# Zebulon 2 : +# Zebulon 2 : # EVENEMENT ='TOUT_INST' # MODE_CALCUL_TPLUS ='ITER_NEWTON' # NB_ITER_NEWTON_REF= nc -# Tough2 : +# Tough2 : # EVENEMENT ='SEUIL' # NB_INCR_SEUIL = 1 # NOM_PARA ='NB_ITER_NEWTON' @@ -10648,43 +12178,60 @@ DEFI_LIST_INST=OPER(nom="DEFI_LIST_INST",op= 28,sd_prod=list_inst,reentrant='n' # VALE_I = n # MODE_CALCUL_TPLUS ='FIXE' # PCENT_AUGM = 100. -# Oliver : +# Oliver : # EVENEMENT ='TOUT_INST' # MODE_CALCUL_TPLUS ='FORMULE' # NOM_SCHEMA ='OLIVER' ), ), +# b_adaplex = BLOC(condition = "METHODE == 'AUTO' and MODE_CALCUL_TPLUS == 'IMPLEX'", +# +# ADAPTATION =FACT(statut='d',max='**', +# +# 1 parametres de l'evenement declencheur +# ---------------------------------------- +# +# EVENEMENT =SIMP(statut='f',typ='TXM',into=("TOUT_INST",),defaut="TOUT_INST",max=1 ), +# +# +# 2 parametre du mode de calcul de dt+ +# ---------------------------------------- +# +# MODE_CALCUL_TPLUS =SIMP(statut='f',typ='TXM',into=("IMPLEX",),defaut='IMPLEX',max=1,position='global' ), +# +# ), +# ), # ---------------------------------------------------------------------------------------------------------------------------------- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; - -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8_sdaster, fr="Définir une liste de réels strictement croissante", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, regles=(UN_PARMI('VALE','DEBUT',), EXCLUS('VALE','INTERVALLE'), ENSEMBLE('DEBUT','INTERVALLE')), @@ -10699,23 +12246,23 @@ DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8_sdaster, INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE PELLET J.PELLET DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage_sdaster, @@ -10752,7 +12299,7 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage_sdaster, TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), fr="Renommage de tous les noeuds" ), NOEUD_INIT =SIMP(statut='f',typ=no, - fr="Renommage d un seul noeud"), + fr="Renommage d un seul noeud"), b_tout =BLOC(condition = "TOUT != None", PREFIXE =SIMP(statut='f',typ='TXM' ), INDEX =SIMP(statut='o',typ='I',max='**'), @@ -10760,13 +12307,13 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage_sdaster, b_noeud_init =BLOC(condition = "NOEUD_INIT != None", SUPER_MAILLE =SIMP(statut='o',typ=ma), NOEUD_FIN =SIMP(statut='o',typ=no), - ), + ), ), DEFI_GROUP_NO =FACT(statut='f',max='**', regles=(UN_PARMI('TOUT','SUPER_MAILLE'), AU_MOINS_UN('INDEX','GROUP_NO_FIN'), ENSEMBLE('GROUP_NO_INIT','GROUP_NO_FIN'),), -# la regle ancien catalogue AU_MOINS_UN__: ( INDEX , GROUP_NO_FIN ) incoherente avec doc U +# la regle ancien catalogue AU_MOINS_UN__: ( INDEX , GROUP_NO_FIN ) incoherente avec doc U TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), fr="Création de plusieurs groupes de noeuds" ), SUPER_MAILLE =SIMP(statut='f',typ=ma, @@ -10778,10 +12325,10 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage_sdaster, GROUP_NO_FIN =SIMP(statut='f',typ=grno), ), ) ; -#& MODIF COMMANDE DATE 20/04/2010 AUTEUR JAUBERT A.JAUBERT +#& MODIF COMMANDE DATE 23/02/2011 AUTEUR LAVERNE J.LAVERNE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -10806,6 +12353,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, 'ELAS_HYPER','ELAS_2NDG',), EXCLUS('THER','THER_FO','THER_ORTH','THER_NL'), EXCLUS('ECRO_LINE','ECRO_LINE_FO','ECRO_PUIS'), + EXCLUS('ENDO_HETEROGENE'), EXCLUS('TAHERI','TAHERI_FO'), EXCLUS('ROUSSELIER','ROUSSELIER_FO'), EXCLUS('VISC_SINH','VISC_SINH_FO'), @@ -10816,10 +12364,10 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, EXCLUS('VISCOCHAB','VISCOCHAB_FO'), EXCLUS('LEMAITRE','LEMAITRE_FO','VISC_IRRA_LOG', 'LEMA_SEUIL','LEMA_SEUIL_FO','LEMAITRE_IRRA','LMARC_IRRA',), - EXCLUS('LMARC','LMARC_FO'), EXCLUS('META_LEMA_ANI','META_LEMA_ANI_FO'), EXCLUS('VMIS_POUTRE','VMIS_POUTRE_FO'), EXCLUS('VENDOCHAB','VENDOCHAB_FO'), + EXCLUS('VISC_ENDO','VISC_ENDO_FO'), PRESENT_PRESENT('BPEL_ACIER','ELAS'), EXCLUS('RCCM','RCCM_FO'), EXCLUS('WEIBULL','WEIBULL_FO'), @@ -10945,12 +12493,15 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, ), ELAS_HYPER =FACT(statut='f', regles=(UN_PARMI('K','NU'),), - C10 =SIMP(statut='f',typ='R',defaut=0.0), - C01 =SIMP(statut='o',typ='R'), - C20 =SIMP(statut='f',typ='R',defaut=0.0), - K =SIMP(statut='f',typ='R'), - RHO =SIMP(statut='f',typ='R',defaut=0.0), - NU =SIMP(statut='f',typ='R',val_min=-1.E+0,val_max=0.5E+0), + C10 =SIMP(statut='o',typ='R', + fr="Si C10 est le seul coefficient fourni, alors le matériau est Néo-Hookéen."), + C01 =SIMP(statut='f',typ='R',defaut=0.0, + fr="Si l'on fournit C01 en plus de C10, on obtient un matériau de type Mooney-Rivlin."), + C20 =SIMP(statut='f',typ='R',defaut=0.0, + fr="Si l'on fournit C20 en plus de C10 et C01, on obtient un matériau de type Signorini."), + K =SIMP(statut='f',typ='R',fr="Module de compressibilité."), + NU =SIMP(statut='f',typ='R',val_min=-1.E+0,val_max=0.5E+0,fr="Coefficient de Poisson."), + RHO =SIMP(statut='f',typ='R',defaut=0.0,fr="Masse volumique."), ), ELAS_COQUE =FACT(statut='f', regles=(EXCLUS('MEMB_L','M_LLLL',), @@ -11083,6 +12634,13 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, D_SIGM_EPSI =SIMP(statut='o',typ='R',), SY =SIMP(statut='o',typ='R',), ), + ENDO_HETEROGENE =FACT(statut='f', + WEIBULL =SIMP(statut='o',typ='R',), + SY =SIMP(statut='o',typ='R',), + KI =SIMP(statut='o',typ='R',), + EPAI =SIMP(statut='o',typ='R',), + GR =SIMP(statut='f',typ='R',defaut= 1.0), + ), ECRO_LINE_FO =FACT(statut='f', D_SIGM_EPSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), SY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -11387,68 +12945,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), UN_SUR_K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), UN_SUR_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - ), - LMARC =FACT(statut='f', - DE_0 =SIMP(statut='o',typ='R'), - R_0 =SIMP(statut='o',typ='R'), - N =SIMP(statut='o',typ='R'), - K =SIMP(statut='o',typ='R'), - Y_I =SIMP(statut='o',typ='R'), - Y_0 =SIMP(statut='o',typ='R'), - B =SIMP(statut='o',typ='R'), - A_0 =SIMP(statut='o',typ='R'), - RM =SIMP(statut='o',typ='R'), - M =SIMP(statut='o',typ='R'), - P =SIMP(statut='o',typ='R'), - P1 =SIMP(statut='o',typ='R'), - P2 =SIMP(statut='o',typ='R'), - M11 =SIMP(statut='o',typ='R'), - M22 =SIMP(statut='o',typ='R'), - M33 =SIMP(statut='o',typ='R'), - M66 =SIMP(statut='o',typ='R'), - N11 =SIMP(statut='o',typ='R'), - N22 =SIMP(statut='o',typ='R'), - N33 =SIMP(statut='o',typ='R'), - N66 =SIMP(statut='o',typ='R'), - Q11 =SIMP(statut='o',typ='R'), - Q22 =SIMP(statut='o',typ='R'), - Q33 =SIMP(statut='o',typ='R'), - Q66 =SIMP(statut='o',typ='R'), - R11 =SIMP(statut='o',typ='R'), - R22 =SIMP(statut='o',typ='R'), - R33 =SIMP(statut='o',typ='R'), - R66 =SIMP(statut='o',typ='R'), - ), - LMARC_FO =FACT(statut='f', - DE_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - Y_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - Y_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - A_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - RM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - P =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - P1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - P2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - M11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - M22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - M33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - M66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - N11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - N22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - N33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - N66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - Q11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - Q22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - Q33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - Q66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - R11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - R22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - R33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - R66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), ), META_LEMA_ANI =FACT(statut='f', F1_A =SIMP(statut='o',typ='R'), @@ -11592,15 +13088,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PRESENT_PRESENT('ANG1_FO','ANG2_FO','PEN1_FO','PEN2_FO','PEN3_FO',), ), ), - NADAI_B =FACT(statut='f', - F_C =SIMP(statut='o',typ='R',val_min=0.E+0), - F_T =SIMP(statut='o',typ='R',val_min=0.E+0), - CRIT_E_C =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), - EPSP_P_C =SIMP(statut='o',typ='R',val_min=0.E+0), - EPSP_R_C =SIMP(statut='o',typ='R',val_min=0.E+0), - EPSI_R_T =SIMP(statut='o',typ='R',val_min=0.E+0), - FAC_T_C =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), - ), BETON_DOUBLE_DP =FACT(statut='f', F_C =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), F_T =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -11658,27 +13145,31 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, BDN =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=1.E-1), ), VENDOCHAB =FACT(statut='f', - S =SIMP(statut='o',typ='R',defaut= 0.E+0), + SY =SIMP(statut='o',typ='R',defaut= 0.E+0), ALPHA_D =SIMP(statut='o',typ='R',defaut= 0.E+0), BETA_D =SIMP(statut='o',typ='R',defaut= 0.E+0), - N =SIMP(statut='o',typ='R'), - UN_SUR_M =SIMP(statut='o',typ='R',defaut= 0.E+0), - UN_SUR_K =SIMP(statut='o',typ='R'), R_D =SIMP(statut='o',typ='R'), A_D =SIMP(statut='o',typ='R'), K_D =SIMP(statut='o',typ='R'), ), VENDOCHAB_FO =FACT(statut='f', - S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), ALPHA_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), BETA_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - UN_SUR_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), - UN_SUR_K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), R_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), A_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), K_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), ), + VISC_ENDO =FACT(statut='f', + SY =SIMP(statut='o',typ='R',defaut= 0.E+0), + R_D =SIMP(statut='o',typ='R'), + A_D =SIMP(statut='o',typ='R'), + ), + VISC_ENDO_FO =FACT(statut='f', + SY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + R_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), PINTO_MENEGOTTO =FACT(statut='f', SY =SIMP(statut='o',typ='R'), EPSI_ULTM =SIMP(statut='o',typ='R'), @@ -12292,7 +13783,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PRE2 = SIMP(statut='f',typ='R'), PRES_VAPE = SIMP(statut='f',typ='R'), DEGR_SATU = SIMP(statut='f',typ='R'), - PRES_ATMO = SIMP(statut='f',typ='R'), # --------------------------------------------------------------------------------- # ------------------- DONNEE CACHEE --------------------------------------------- # --------------------------------------------------------------------------------- @@ -12347,10 +13837,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -12426,7 +13912,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # --------------------------------------------------------------------------------- PRES_VAPE = SIMP(statut='f',typ='R'), DEGR_SATU = SIMP(statut='f',typ='R'), - PRES_ATMO = SIMP(statut='f',typ='R'), # --------------------------------------------------------------------------------- # ------------------- DONNEE CACHEE --------------------------------------------- # --------------------------------------------------------------------------------- @@ -12496,10 +13981,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # ------------------- DONNEES INUTILES ---------------------------------------- # --------------------------------------------------------------------------------- EMMAG = SIMP(statut='f',typ='R'), - SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -12578,7 +14059,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PRE2 = SIMP(statut='f',typ='R'), PRES_VAPE = SIMP(statut='f',typ='R'), DEGR_SATU = SIMP(statut='f',typ='R'), - PRES_ATMO = SIMP(statut='f',typ='R'), # --------------------------------------------------------------------------------- # ------------------- DONNEE CACHEE --------------------------------------------- # --------------------------------------------------------------------------------- @@ -12630,10 +14110,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -12710,7 +14186,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PRE2 = SIMP(statut='f',typ='R'), PRES_VAPE = SIMP(statut='f',typ='R'), DEGR_SATU = SIMP(statut='f',typ='R'), - PRES_ATMO = SIMP(statut='f',typ='R'), # --------------------------------------------------------------------------------- # ------------------- DONNEE CACHEE --------------------------------------------- # --------------------------------------------------------------------------------- @@ -12762,10 +14237,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -12842,7 +14313,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # ------------------- DONNEES INUTILES ---------------------------------------- # --------------------------------------------------------------------------------- DEGR_SATU = SIMP(statut='f',typ='R'), - PRES_ATMO = SIMP(statut='f',typ='R'), # --------------------------------------------------------------------------------- # ------------------- DONNEE CACHEE --------------------------------------------- # --------------------------------------------------------------------------------- @@ -12912,10 +14382,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # ------------------- DONNEES FACULTATIVES ------------------------------------ # --------------------------------------------------------------------------------- EMMAG = SIMP(statut='f',typ='R'), - SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -12946,11 +14412,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # --------------------------------------------------------------------------------- ALPHA = SIMP(statut='f',typ='R'), CP = SIMP(statut='f',typ='R'), - LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - LAMB_CT = SIMP(statut='f',typ='R'), # --------------------------------------------------------------------------------- # ------------------- DONNEES CACHEES ------------------------------------------- # --------------------------------------------------------------------------------- @@ -13027,7 +14488,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # ------------------- DONNEES INUTILES ---------------------------------------- # --------------------------------------------------------------------------------- DEGR_SATU = SIMP(statut='f',typ='R'), - PRES_ATMO = SIMP(statut='f',typ='R'), # --------------------------------------------------------------------------------- # ------------------- DONNEE CACHEE --------------------------------------------- # --------------------------------------------------------------------------------- @@ -13097,10 +14557,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # ------------------- DONNEES FACULTATIVE ---------------------------------- # --------------------------------------------------------------------------------- EMMAG = SIMP(statut='f',typ='R'), - SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -13187,7 +14643,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # ------------------- DONNEES INUTILES ---------------------------------------- # --------------------------------------------------------------------------------- DEGR_SATU = SIMP(statut='f',typ='R'), - PRES_ATMO = SIMP(statut='f',typ='R'), # --------------------------------------------------------------------------------- # ------------------- DONNEE CACHEE --------------------------------------------- # --------------------------------------------------------------------------------- @@ -13257,10 +14712,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # ------------------- DONNEES FACULTATIVES ------------------------------------ # --------------------------------------------------------------------------------- EMMAG = SIMP(statut='f',typ='R'), - SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -13288,11 +14739,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # --------------------------------------------------------------------------------- ALPHA = SIMP(statut='f',typ='R'), CP = SIMP(statut='f',typ='R'), - LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - LAMB_CT = SIMP(statut='f',typ='R'), ), # ================================================================================= # --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- @@ -13359,7 +14805,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # --------------------------------------------------------------------------------- PRE2 = SIMP(statut='f',typ='R'), DEGR_SATU = SIMP(statut='f',typ='R'), - PRES_ATMO = SIMP(statut='f',typ='R'), # --------------------------------------------------------------------------------- # ------------------- DONNEE CACHEE --------------------------------------------- # --------------------------------------------------------------------------------- @@ -13427,10 +14872,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, # ------------------- DONNEES INUTILES ---------------------------------------- # --------------------------------------------------------------------------------- EMMAG = SIMP(statut='f',typ='R'), - SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), - CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -13538,6 +14979,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, COEF_CISA_TRAC =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0), ), ), + + + THM_RUPT =FACT(statut='f', + OUV_FICT =SIMP(statut='o',typ='R'), + UN_SUR_N =SIMP(statut='f',typ='R',defaut= 0.), + ), # # autres comportements ... # @@ -13557,7 +15004,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, NON_LOCAL =FACT(statut='f', regles=(AU_MOINS_UN('LONG_CARA','C_GONF','C_GRAD_VARI','PENA_LAGR',),), LONG_CARA =SIMP(statut='f',typ='R'), - C_GRAD_VARI =SIMP(statut='f',typ='R'), + C_GRAD_VARI =SIMP(statut='f',typ='R'), PENA_LAGR =SIMP(statut='f',typ='R',defaut= 1.0E3), C_GONF =SIMP(statut='f',typ='R'), COEF_RIGI_MINI =SIMP(statut='f',typ='R'), @@ -13576,8 +15023,23 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PENA_ADHERENCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), PENA_CONTACT =SIMP(statut='f',typ='R',defaut=1.), ), + RUPT_DUCT =FACT(statut='f', + GC =SIMP(statut='o',typ='R'), + SIGM_C =SIMP(statut='o',typ='R'), + COEF_EXTR =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=9.99E-1), + COEF_PLAS =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=9.99E-1), + PENA_LAGR =SIMP(statut='f',typ='R',defaut=1.0E2,val_min=1.01E+0), + RIGI_GLIS =SIMP(statut='f',typ='R',defaut=1.0E1), + ), JOINT_MECA_RUPT =FACT(statut='f', - regles=(EXCLUS('PRES_FLUIDE','PRES_CLAVAGE'),), + regles=(EXCLUS('PRES_FLUIDE','PRES_CLAVAGE'), + PRESENT_PRESENT('RHO_FLUIDE','VISC_FLUIDE','OUV_MIN'), + PRESENT_ABSENT('PRES_FLUIDE','RHO_FLUIDE','VISC_FLUIDE','OUV_MIN'), + PRESENT_ABSENT('PRES_CLAVAGE','RHO_FLUIDE','VISC_FLUIDE','OUV_MIN'), + PRESENT_ABSENT('RHO_FLUIDE','PRES_FLUIDE','PRES_CLAVAGE'), + PRESENT_ABSENT('VISC_FLUIDE','PRES_FLUIDE','PRES_CLAVAGE'), + PRESENT_ABSENT('OUV_MIN','PRES_FLUIDE','PRES_CLAVAGE'), + ), K_N =SIMP(statut='o',typ='R',val_min=1.E-12), K_T =SIMP(statut='f',typ='R',val_min=1.E-12), SIGM_MAX =SIMP(statut='o',typ='R',val_min=0.), @@ -13586,7 +15048,17 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, PENA_CONTACT =SIMP(statut='f',typ='R',defaut=1.,val_min=1.E-12), PRES_FLUIDE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), PRES_CLAVAGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + RHO_FLUIDE =SIMP(statut='f',typ='R',val_min=0.), + VISC_FLUIDE =SIMP(statut='f',typ='R',val_min=1.E-20), + OUV_MIN =SIMP(statut='f',typ='R',val_min=1.E-15), ), + JOINT_MECA_FROT =FACT(statut='f', + K_N =SIMP(statut='o',typ='R',val_min=1.E-12), + K_T =SIMP(statut='f',typ='R',val_min=1.E-12), + MU =SIMP(statut='o',typ='R',val_min=1.E-3), + PENA_TANG =SIMP(statut='f',typ='R',val_min=0.), + ADHESION =SIMP(statut='f',typ='R',defaut=0., val_min=0.), + ), RCCM =FACT(statut='f', regles=(ENSEMBLE('A_AMORC','B_AMORC','D_AMORC','R_AMORC'),), SY_02 =SIMP(statut='f',typ='R'), @@ -13676,6 +15148,25 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, ), DILAT =SIMP(statut='f',typ='R',defaut=0.0), ), + + DRUCK_PRAGER_FO =FACT(statut='f', + ALPHA =SIMP(statut='o',typ=(fonction_sdaster,formule)), + SY =SIMP(statut='o',typ=(fonction_sdaster,formule)), + P_ULTM =SIMP(statut='o',typ=(fonction_sdaster,formule)), + ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")), + b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'", + fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire", + H =SIMP(statut='o',typ=(fonction_sdaster,formule)), + TYPE_DP =SIMP(statut='c',typ='R',defaut= 1.0,), + ), + b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'", + fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique", + SY_ULTM =SIMP(statut='o',typ=(fonction_sdaster,formule)), + TYPE_DP =SIMP(statut='c',typ='R',defaut= 2.0,), + ), + DILAT =SIMP(statut='f',typ='R',defaut=0.0), + ), + VISC_DRUC_PRAG =FACT(statut='f', PREF =SIMP(statut='o',typ='R',fr="pression de reference"), A =SIMP(statut='o',typ='R',fr="parametre carcaterisant l amplitude de la vitesse de fluage"), @@ -13690,7 +15181,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, R_ULT =SIMP(statut='o',typ='R',fr="parametre d ecrouissage correspondant au seuil ultime"), BETA_0 =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la dilatance au seuil d elasticite"), BETA_PIC =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la dilatance au seuil de pic"), - BETA_ULT =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la dilatance au seuil ultime"), + BETA_ULT =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la dilatance au seuil ultime"), ), HOEK_BROWN =FACT(statut='f', GAMMA_RUP =SIMP(statut='o',typ='R'), @@ -13717,13 +15208,13 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, ), #### MONOCRISTAL - ECOU_VISC1 =FACT(statut='f', + MONO_VISC1 =FACT(statut='f', TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), N =SIMP(statut='o',typ='R'), K =SIMP(statut='o',typ='R'), C =SIMP(statut='o',typ='R'), ), - ECOU_VISC2 =FACT(statut='f', + MONO_VISC2 =FACT(statut='f', TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), N =SIMP(statut='o',typ='R'), K =SIMP(statut='o',typ='R'), @@ -13731,7 +15222,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, D =SIMP(statut='o',typ='R'), A =SIMP(statut='o',typ='R'), ), - ECOU_VISC3 =FACT(statut='f', + MONO_VISC3 =FACT(statut='f', TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), K =SIMP(statut='o',typ='R',fr="Constante de Boltzmann, en eV/K"), TAUMU =SIMP(statut='o',typ='R',fr="Seuil d ecoulement, en unite de contraintes"), @@ -13739,31 +15230,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, DELTAV =SIMP(statut='o',typ='R',fr="Volume d activation"), DELTAG0 =SIMP(statut='o',typ='R',fr="Gain d energie lie au franchissement d obstacle"), ), - KOCKS_RAUCH =FACT(statut='f', - regles=(UN_PARMI('H','H1'), - PRESENT_PRESENT('H1','H2','H3','H4'), - PRESENT_ABSENT('H','H1','H2','H3','H4','H5','H6'), - ), - TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), - K =SIMP(statut='o',typ='R',fr="Constante de Boltzmann, en eV/K"), - TAUR =SIMP(statut='o',typ='R',fr="Contraintes de cisaillement à T=0K, en unite de contraintes"), - TAU0 =SIMP(statut='o',typ='R',fr="Contraintes critique initiale de cisaillement, en unite de contraintes"), - GAMMA0 =SIMP(statut='o',typ='R',fr="Vitesse d ecoulement initiale"), - DELTAG0 =SIMP(statut='o',typ='R',fr="Gain d energie lie au franchissement d obstacle"), - BSD =SIMP(statut='o',typ='R',fr="fonction de la taille du grain B/D"), - GCB =SIMP(statut='o',typ='R',fr="distance critique d'annihilation GC/B"), - KDCS =SIMP(statut='o',typ='R',fr="Parametre relatif à la direction principale de la dislocation"), - P =SIMP(statut='o',typ='R',fr="Parametre materiau dépendant de la forme de l'obstacle"), - Q =SIMP(statut='o',typ='R',fr="Parametre materiau dépendant de la forme de l'obstacle"), - H =SIMP(statut='f',typ='R'), - H1 =SIMP(statut='f',typ='R'), - H2 =SIMP(statut='f',typ='R'), - H3 =SIMP(statut='f',typ='R'), - H4 =SIMP(statut='f',typ='R'), - H5 =SIMP(statut='f',typ='R'), - H6 =SIMP(statut='f',typ='R'), - ), - ECRO_ISOT1 =FACT(statut='f', + MONO_ISOT1 =FACT(statut='f', regles=(UN_PARMI('H','H1'), PRESENT_PRESENT('H1','H2','H3','H4'), PRESENT_ABSENT('H','H1','H2','H3','H4','H5','H6'), @@ -13780,7 +15247,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, H5 =SIMP(statut='f',typ='R'), H6 =SIMP(statut='f',typ='R'), ), - ECRO_ISOT2 =FACT(statut='f', + MONO_ISOT2 =FACT(statut='f', regles=(UN_PARMI('H','H1'), PRESENT_PRESENT('H1','H2','H3','H4'), PRESENT_ABSENT('H','H1','H2','H3','H4','H5','H6'), @@ -13799,43 +15266,204 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, Q2 =SIMP(statut='o',typ='R'), B2 =SIMP(statut='o',typ='R'), ), - ECRO_CINE1 =FACT(statut='f', + MONO_CINE1 =FACT(statut='f', TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_CINE",),), D =SIMP(statut='o',typ='R'), ), - ECRO_CINE2 =FACT(statut='f', + MONO_CINE2 =FACT(statut='f', TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_CINE",),), D =SIMP(statut='o',typ='R'), GM =SIMP(statut='o',typ='R'), PM =SIMP(statut='o',typ='R'), C =SIMP(statut='o',typ='R'), ), + MONO_DD_KR =FACT(statut='f', + regles=(UN_PARMI('H','H1'), + PRESENT_PRESENT('H1','H2','H3','H4'), + PRESENT_ABSENT('H','H1','H2','H3','H4','H5','H6'), + ), + # TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), + K =SIMP(statut='o',typ='R',fr="Constante de Boltzmann, en eV/K"), + TAUR =SIMP(statut='o',typ='R',fr="Contraintes de cisaillement à T=0K, en unite de contraintes"), + TAU0 =SIMP(statut='o',typ='R',fr="Contraintes critique initiale de cisaillement, en unite de contraintes"), + GAMMA0 =SIMP(statut='o',typ='R',fr="Vitesse d ecoulement initiale"), + DELTAG0 =SIMP(statut='o',typ='R',fr="Gain d energie lie au franchissement d obstacle"), + BSD =SIMP(statut='o',typ='R',fr="fonction de la taille du grain B/D"), + GCB =SIMP(statut='o',typ='R',fr="distance critique d'annihilation GC/B"), + KDCS =SIMP(statut='o',typ='R',fr="Parametre relatif à la direction principale de la dislocation"), + P =SIMP(statut='o',typ='R',fr="Parametre materiau dépendant de la forme de l'obstacle"), + Q =SIMP(statut='o',typ='R',fr="Parametre materiau dépendant de la forme de l'obstacle"), + H =SIMP(statut='f',typ='R'), + H1 =SIMP(statut='f',typ='R'), + H2 =SIMP(statut='f',typ='R'), + H3 =SIMP(statut='f',typ='R'), + H4 =SIMP(statut='f',typ='R'), + H5 =SIMP(statut='f',typ='R'), + H6 =SIMP(statut='f',typ='R'), + ), + MONO_DD_CFC =FACT(statut='f', + regles=(UN_PARMI('H','H1'), + PRESENT_PRESENT('H1','H2','H3','H4','H5'), + PRESENT_ABSENT('H','H1','H2','H3','H4','H5'), + ), + #TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), + GAMMA0 =SIMP(statut='f',typ='R',defaut=0.001,fr="Vitesse d ecoulement initiale en s**-1"), + TAU_F =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"), + A =SIMP(statut='f',typ='R',defaut=0.13,fr="paramètre A, sans unité"), + B =SIMP(statut='f',typ='R',defaut=0.005,fr="paramètre B, sans unité"), + N =SIMP(statut='f',typ='R',defaut=200.,fr="paramètre n, sans unité"), + Y =SIMP(statut='o',typ='R',fr="paramète Y, en unité de longueur ex 2.5 A"), + ALPHA =SIMP(statut='f',typ='R',defaut=0.35,fr="ecrouissage, paramètre alpha"), + BETA =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre b, en unite de longueur"), + RHO_REF =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre rho_ref, en unité de longueur **-2"), + H =SIMP(statut='f',typ='R'), + H1 =SIMP(statut='f',typ='R',defaut=0.124,fr="matrice d'interaction, terme a*",), + H2 =SIMP(statut='f',typ='R',defaut=0.625,fr="matrice d'interaction, terme a_colineaire",), + H3 =SIMP(statut='f',typ='R',defaut=0.137,fr="matrice d'interaction, terme a_glissile",), + H4 =SIMP(statut='f',typ='R',defaut=0.122,fr="matrice d'interaction, terme a_Lomer",), + H5 =SIMP(statut='f',typ='R',defaut=0.07,fr="matrice d'interaction, terme a_Hirth",), + ), -#### MONOCRISTAL - DRUCK_PRAGER_FO =FACT(statut='f', - ALPHA =SIMP(statut='o',typ=(fonction_sdaster,formule)), - SY =SIMP(statut='o',typ=(fonction_sdaster,formule)), - P_ULTM =SIMP(statut='o',typ=(fonction_sdaster,formule)), - ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")), - b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'", - fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire", - H =SIMP(statut='o',typ=(fonction_sdaster,formule)), - TYPE_DP =SIMP(statut='c',typ='R',defaut= 1.0,), - ), - b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'", - fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique", - SY_ULTM =SIMP(statut='o',typ=(fonction_sdaster,formule)), - TYPE_DP =SIMP(statut='c',typ='R',defaut= 2.0,), - ), - DILAT =SIMP(statut='f',typ='R',defaut=0.0), + MONO_DD_CC =FACT(statut='f', + regles=(UN_PARMI('H','H1'), + PRESENT_PRESENT('H1','H2','H3','H4','H5','H6'), + PRESENT_ABSENT('H','H1','H2','H3','H4','H5','H6'), + ), + #TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), + GAMMA0 =SIMP(statut='f',typ='R',defaut=0.001,fr="Vitesse d ecoulement initiale en s**-1"), + TAU_F =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"), + A =SIMP(statut='f',typ='R',defaut=0.13,fr="paramètre A, sans unité"), + B =SIMP(statut='f',typ='R',defaut=0.005,fr="paramètre B, sans unité"), + N =SIMP(statut='f',typ='R',defaut=200.,fr="paramètre n, sans unité"), + Y =SIMP(statut='o',typ='R',fr="paramète Y, en unité de longueur ex 2.5 A"), + ALPHA =SIMP(statut='f',typ='R',defaut=0.35,fr="ecrouissage, paramètre alpha"), + BETA =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre b, en unite de longueur"), + RHO_REF =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre rho_ref, en unité de longueur **-2"), + H =SIMP(statut='f',typ='R'), + H1 =SIMP(statut='f',typ='R'), + H2 =SIMP(statut='f',typ='R'), + H3 =SIMP(statut='f',typ='R'), + H4 =SIMP(statut='f',typ='R'), + H5 =SIMP(statut='f',typ='R'), + H6 =SIMP(statut='f',typ='R'), ), +#### MONOCRISTAL + +### UMAT + UMAT =FACT(statut='f', + C1 =SIMP(statut='f',typ='R'), + C2 =SIMP(statut='f',typ='R'), + C3 =SIMP(statut='f',typ='R'), + C4 =SIMP(statut='f',typ='R'), + C5 =SIMP(statut='f',typ='R'), + C6 =SIMP(statut='f',typ='R'), + C7 =SIMP(statut='f',typ='R'), + C8 =SIMP(statut='f',typ='R'), + C9 =SIMP(statut='f',typ='R'), + C10 =SIMP(statut='f',typ='R'), + C11 =SIMP(statut='f',typ='R'), + C12 =SIMP(statut='f',typ='R'), + C13 =SIMP(statut='f',typ='R'), + C14 =SIMP(statut='f',typ='R'), + C15 =SIMP(statut='f',typ='R'), + C16 =SIMP(statut='f',typ='R'), + C17 =SIMP(statut='f',typ='R'), + C18 =SIMP(statut='f',typ='R'), + C19 =SIMP(statut='f',typ='R'), + C20 =SIMP(statut='f',typ='R'), + C21 =SIMP(statut='f',typ='R'), + C22 =SIMP(statut='f',typ='R'), + C23 =SIMP(statut='f',typ='R'), + C24 =SIMP(statut='f',typ='R'), + C25 =SIMP(statut='f',typ='R'), + C26 =SIMP(statut='f',typ='R'), + C27 =SIMP(statut='f',typ='R'), + C28 =SIMP(statut='f',typ='R'), + C29 =SIMP(statut='f',typ='R'), + C30 =SIMP(statut='f',typ='R'), + C31 =SIMP(statut='f',typ='R'), + C32 =SIMP(statut='f',typ='R'), + C33 =SIMP(statut='f',typ='R'), + C34 =SIMP(statut='f',typ='R'), + C35 =SIMP(statut='f',typ='R'), + C36 =SIMP(statut='f',typ='R'), + C37 =SIMP(statut='f',typ='R'), + C38 =SIMP(statut='f',typ='R'), + C39 =SIMP(statut='f',typ='R'), + C40 =SIMP(statut='f',typ='R'), + C41 =SIMP(statut='f',typ='R'), + C42 =SIMP(statut='f',typ='R'), + C43 =SIMP(statut='f',typ='R'), + C44 =SIMP(statut='f',typ='R'), + C45 =SIMP(statut='f',typ='R'), + C46 =SIMP(statut='f',typ='R'), + C47 =SIMP(statut='f',typ='R'), + C48 =SIMP(statut='f',typ='R'), + C49 =SIMP(statut='f',typ='R'), + C50 =SIMP(statut='f',typ='R'), + ), + UMAT_FO =FACT(statut='f', + C1 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C2 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C3 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C4 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C5 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C6 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C7 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C8 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C9 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C10 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C11 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C12 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C13 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C14 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C15 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C16 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C17 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C18 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C19 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C20 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C21 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C22 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C23 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C24 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C25 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C26 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C27 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C28 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C29 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C30 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C31 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C32 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C33 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C34 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C35 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C36 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C37 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C38 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C39 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C40 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C41 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C42 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C43 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C44 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C45 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C46 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C47 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C48 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C49 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C50 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + ), +### UMAT + + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR NISTOR I.NISTOR # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13857,12 +15485,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene, reentrant='n', fr="Créer la structure globale à partir des sous-structures en sous-structuration dynamique", - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, SOUS_STRUC =FACT(statut='o',max='**', NOM =SIMP(statut='o',typ='TXM' ), MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), - ANGL_NAUT =SIMP(statut='f',typ='R',max=3), - TRANS =SIMP(statut='f',typ='R',max=3), + ANGL_NAUT =SIMP(statut='o',typ='R',max=3), + TRANS =SIMP(statut='o',typ='R',max=3), ), LIAISON =FACT(statut='o',max='**', SOUS_STRUC_1 =SIMP(statut='o',typ='TXM' ), @@ -13885,66 +15513,68 @@ DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 22/03/2011 AUTEUR COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op=4,sd_prod=nappe_sdaster, fr="Définir une fonction réelle de deux variables réelles", - reentrant='n',UIinfo={"groupes":("Fonction",)}, + reentrant='n',UIinfo={"groupes":("Fonctions",)}, regles=(UN_PARMI('FONCTION','DEFI_FONCTION'), EXCLUS('FONCTION','NOM_PARA_FONC',), ENSEMBLE('NOM_PARA_FONC','DEFI_FONCTION'),), NOM_PARA =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ), - NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), + NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), PARA =SIMP(statut='o',typ='R',max='**'), FONCTION =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ), NOM_PARA_FONC =SIMP(statut='f',typ='TXM',into=C_PARA_FONCTION() ), DEFI_FONCTION =FACT(statut='f',max='**', VALE =SIMP(statut='o',typ='R',max='**'), - INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"), + fr="Type d'interpolation pour les abscisses et les ordonnées de la fonction."), PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), ), - INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"), + fr="Type d'interpolation pour le paramètre de la nappe"), PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), - INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1, 2) ), VERIF =SIMP(statut='f',typ='TXM',into=("CROISSANT",) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE KHAM M.KHAM DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op= 73,sd_prod=table_fonction, @@ -13982,30 +15612,30 @@ DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op= 73,sd_prod=table_fonction, VALE =SIMP(statut='f',typ='R',max='**'), VERIF =SIMP(statut='f',typ='TXM',defaut="FERME"), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE GNICOLAS G.NICOLAS DEFI_PARA_SENSI=OPER(nom="DEFI_PARA_SENSI",op= 2,sd_prod=para_sensi, fr="Définition d'un paramètre de sensibilité", ang="Definition of a sensitive parameter", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, NOM_RESU =SIMP(statut='c',typ='TXM',into=("TOUTRESU",),defaut="TOUTRESU", fr="Nom du concept créé", ang="Name of the concept"), @@ -14014,30 +15644,30 @@ DEFI_PARA_SENSI=OPER(nom="DEFI_PARA_SENSI",op= 2,sd_prod=para_sensi, ang="Value of the parameter"), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 16/11/2009 AUTEUR ASSIRE A.ASSIRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# 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. # ====================================================================== # RESPONSABLE ASSIRE A.ASSIRE from Macro.defi_part_feti_ops import defi_part_feti_ops DEFI_PART_FETI=MACRO(nom="DEFI_PART_FETI",op=defi_part_feti_ops,sd_prod=sd_feti_sdaster, - reentrant='n',UIinfo={"groupe":("Maillage",)}, + reentrant='n',UIinfo={"groupes":("Modélisation",)}, fr="Creation partitionnement en sous-domaines pour FETI", regles=(UN_PARMI('MAILLAGE','MODELE'),PRESENT_PRESENT('MODELE','EXCIT'),), @@ -14048,8 +15678,8 @@ DEFI_PART_FETI=MACRO(nom="DEFI_PART_FETI",op=defi_part_feti_ops,sd_prod=sd_feti_ CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)),), # Methode de partitionnement - METHODE =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="SCOTCH" ), - + METHODE =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="KMETIS" ), + LOGICIEL =SIMP(statut='f',typ='TXM'), # Corrige les problemes possibles de non-connexite des sous-domaines @@ -14064,12 +15694,12 @@ DEFI_PART_FETI=MACRO(nom="DEFI_PART_FETI",op=defi_part_feti_ops,sd_prod=sd_feti_ GROUP_MA =SIMP(statut='o',typ=grma,), POIDS =SIMP(statut='f',typ='I',val_min=2), ), - # Prefixe pour le nom des group_ma definissant les sous-domaines + # Prefixe pour le nom des group_ma definissant les sous-domaines NOM_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='SD' ), # Traiter les mailles de bords (elles sont enlevees du graphe puis reinjectees) TRAITER_BORDS =SIMP(statut='f',typ='TXM',defaut='OUI',into=('OUI','NON') ), - + # Si le mot-clé suivant est renseigné, crée de nouveau group_ma a partir des bords # Note : le calcul FETI sera impossible b_traiter_bords =BLOC(condition="TRAITER_BORDS == 'OUI'", fr="Crée t on des nouveaux group_ma", @@ -14078,30 +15708,30 @@ DEFI_PART_FETI=MACRO(nom="DEFI_PART_FETI",op=defi_part_feti_ops,sd_prod=sd_feti_ INFO =SIMP(statut='f',typ='I',into=(1, 2), defaut=1), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# 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. # ====================================================================== # RESPONSABLE ASSIRE A.ASSIRE DEFI_PART_OPS=OPER(nom="DEFI_PART_OPS",op=21,sd_prod=sd_feti_sdaster, fr="Creation partitionnement en sous-domaines pour FETI", docu="U4.23.05",reentrant='n', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Modélisation",)}, MODELE =SIMP(statut='o',typ=(modele_sdaster) ), MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ), NOM =SIMP(statut='f',typ='TXM',defaut='SD'), @@ -14114,37 +15744,37 @@ DEFI_PART_OPS=OPER(nom="DEFI_PART_OPS",op=21,sd_prod=sd_feti_sdaster, CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)), ), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2005 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. +# 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. # ====================================================================== # RESPONSABLE ASSIRE A.ASSIRE DEFI_PART_PA_OPS=PROC(nom="DEFI_PART_PA_OPS",op=29, fr="Creation partitionnement en sous-domaines pour FETI", docu="U4.00.00", - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Modélisation",)}, MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster,squelette) ), MODELE =SIMP(statut='f',typ=(modele_sdaster)), NB_PART =SIMP(statut='o',typ='I',), # Methode de partitionnement - METHODE =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="SCOTCH" ), - + METHODE =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="KMETIS" ), + LOGICIEL =SIMP(statut='f',typ='TXM'), # Corrige les problemes possibles de non-connexite des sous-domaines @@ -14159,7 +15789,7 @@ DEFI_PART_PA_OPS=PROC(nom="DEFI_PART_PA_OPS",op=29, GROUP_MA =SIMP(statut='o',typ=grma,), POIDS =SIMP(statut='f',typ='I'), ), - # Prefixe pour le nom des group_ma definissant les sous-domaines + # Prefixe pour le nom des group_ma definissant les sous-domaines NOM_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='SD' ), # Traiter les mailles de bords (elles sont enlevees du graphe puis reinjectees) @@ -14174,23 +15804,23 @@ DEFI_PART_PA_OPS=PROC(nom="DEFI_PART_PA_OPS",op=29, INFO =SIMP(statut='f',typ='I',into=(1, 2), defaut=1), ); -#& MODIF COMMANDE DATE 28/12/2009 AUTEUR COURTOIS M.COURTOIS +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # 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. +# 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. # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS @@ -14198,7 +15828,7 @@ from Macro.defi_sol_miss_ops import defi_sol_miss_ops DEFI_SOL_MISS = MACRO(nom="DEFI_SOL_MISS",op=defi_sol_miss_ops, sd_prod=table_sdaster, fr="Définition des données de sol pour Miss", reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Modélisation","Outils-métier",)}, MATERIAU = FACT(statut='o', max='**', fr="Définition des matériaux", E = SIMP(statut='o', typ='R', fr="Module d'Young"), @@ -14220,29 +15850,29 @@ DEFI_SOL_MISS = MACRO(nom="DEFI_SOL_MISS",op=defi_sol_miss_ops, sd_prod=table_sd INFO = SIMP(statut='f', typ='I', defaut=1, into=(1,2)), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE ADOBES A.ADOBES DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre_sdaster, fr="Définition d'un spectre d'excitation turbulente", reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Modélisation","Outils-métier",)}, regles=(UN_PARMI('SPEC_LONG_COR_1','SPEC_LONG_COR_2','SPEC_LONG_COR_3', 'SPEC_LONG_COR_4','SPEC_CORR_CONV_1','SPEC_CORR_CONV_2', 'SPEC_FONC_FORME','SPEC_EXCI_POINT'),), @@ -14329,29 +15959,29 @@ DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre_sdaster, ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 25/01/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE BODEL C.BODEL DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette, fr="Définit un maillage pour visualiser les résultats d'une sous-structuration dynamique", reentrant='n', - UIinfo={"groupes":("Maillage",)}, + UIinfo={"groupes":("Maillage","Dynamique",)}, regles=(UN_PARMI('CYCLIQUE','MODELE_GENE','MAILLAGE'), PRESENT_PRESENT('CYCLIQUE','SECTEUR'), EXCLUS('SOUS_STRUC','SECTEUR'), @@ -14394,7 +16024,8 @@ DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette, TRANS =SIMP(statut='f',typ='R',min=3,max=3), ANGL_NAUT =SIMP(statut='f',typ='R',min=3,max=3), SOUS_STRUC =FACT(statut='f',max='**', - NOM =SIMP(statut='f',typ='TXM' ), + regles=(UN_PARMI('TOUT','MAILLE','GROUP_MA'),), + NOM =SIMP(statut='o',typ='TXM' ), MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -14406,27 +16037,27 @@ DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette, ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE CANO V.CANO DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=table_sdaster,reentrant='n', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Modélisation","Thermique",)}, fr="Définir d'un diagramme de transformations en refroidissement continu (TRC) de référence d'un acier" +" pour les calculs métallurgiques.", HIST_EXP =FACT(statut='o',max='**', @@ -14443,23 +16074,23 @@ DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=table_sdaster,reentrant='n', A =SIMP(statut='f',typ='R'), ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE PELLET J.PELLET def depl_interne_prod(DEPL_GLOBAL,**args ): @@ -14472,29 +16103,29 @@ def depl_interne_prod(DEPL_GLOBAL,**args ): raise AsException("type de concept resultat non prevu") DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=depl_interne_prod,reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, fr="Calculer le champ de déplacement à l'intérieur d'une sous-structure statique", DEPL_GLOBAL =SIMP(statut='o',typ=(cham_no_sdaster,mode_meca,mode_meca_c,evol_elas,dyna_trans,dyna_harmo),), SUPER_MAILLE =SIMP(statut='o',typ=ma,), NOM_CAS =SIMP(statut='f',typ='TXM',defaut=" "), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE LEFEBVRE J.P.LEFEBVRE DETRUIRE=MACRO(nom="DETRUIRE",op=-7, @@ -14510,36 +16141,36 @@ DETRUIRE=MACRO(nom="DETRUIRE",op=-7, ang="Sensitivity parameter",max='**'), ), OBJET =FACT(statut='f',max='**', - CLASSE =SIMP(statut='f',typ='TXM',into=('G','V','L'),defaut='G'), + CLASSE =SIMP(statut='f',typ='TXM',into=('G','V','L'),defaut='G'), CHAINE =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), POSITION =SIMP(statut='f',typ='I' ,max='**'), ), ALARME =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI',), - INFO =SIMP(statut='f',typ='I',into=(1,2),defaut=2, ), + INFO =SIMP(statut='f',typ='I',into=(1,2),defaut=2, ), ); -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE ZENTNER I.ZENTNER DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=table_fonction, fr="Calcul de la réponse spectrale d'une structure linéaire sous une excitation connue par sa DSP", reentrant='n', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, BASE_MODALE =FACT(statut='o', regles=(UN_PARMI('NUME_ORDRE','BANDE'),), MODE_MECA =SIMP(statut='o',typ=mode_meca ), @@ -14554,31 +16185,31 @@ DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=table_fonction, ), MODE_STAT =SIMP(statut='f',typ=mode_meca), # MODE_STAT devrait etre dans EXCIT car est utile et obligatoire que si NOM_CMP=depl_r, on pourrait -# ainsi rajouter un bloc du genre b_mod_stat= BLOC(condition = "(GRANDEUR == None) or (GRANDEUR == 'DEPL_R')", +# ainsi rajouter un bloc du genre b_mod_stat= BLOC(condition = "(GRANDEUR == None) or (GRANDEUR == 'DEPL_R')", EXCIT =FACT(statut='o', INTE_SPEC =SIMP(statut='o',typ=table_fonction), NUME_VITE_FLUI =SIMP(statut='f',typ='I' ), OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG",) ), MODAL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), - b_modal_non = BLOC(condition = "(MODAL == None) or (MODAL == 'NON')", + b_modal_non = BLOC(condition = "(MODAL == None) or (MODAL == 'NON')", regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I'),), NUME_ORDRE_I =SIMP(statut='f',typ='I',max='**'), NOEUD_I =SIMP(statut='f',typ=no,max='**'), b_nume_ordre_i =BLOC(condition = "NUME_ORDRE_I != None", regles=(EXCLUS('CHAM_NO','NOEUD'),), # on devrait rajouter EXCLUS('GRANDEUR','CHAM_NO') pour eviter ambiguite car CHAM_NO => GRANDEUR='EFFO' -# cela impliquerait d'enlever la valeur par defaut a GRANDEUR +# cela impliquerait d'enlever la valeur par defaut a GRANDEUR NUME_ORDRE_J =SIMP(statut='o',typ='I',max='**'), CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster), NOEUD =SIMP(statut='f',typ=no,max='**'), b_noeud =BLOC(condition = "NOEUD != None", NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), - ), + ), GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R", into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")), -# que se passe-t-il en cas d'incompatibilite entre GRANDEUR et NOM_CMP +# que se passe-t-il en cas d'incompatibilite entre GRANDEUR et NOM_CMP DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ), - ), + ), b_noeud_i =BLOC(condition = "NOEUD_I != None", NOEUD_J =SIMP(statut='o',typ=no,max='**'), NOM_CMP_I =SIMP(statut='o',typ='TXM',max='**'), @@ -14589,10 +16220,10 @@ DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=table_fonction, # NOEUD_I, NOM_CMP_I ... => modif. du Fortran GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R", into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")), -# que se passe-t-il en cas d'incompatibilite entre GRANDEUR et NOM_CMP_I +# que se passe-t-il en cas d'incompatibilite entre GRANDEUR et NOM_CMP_I DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ), ), - ), + ), b_modal_oui = BLOC(condition = "(MODAL == 'OUI')", # dans ce cas, y-a-t-il vraiment la possibilite d'une matrice interspectrale avec plusieurs termes NUME_ORDRE_I =SIMP(statut='o',typ='I',max='**'), @@ -14601,9 +16232,9 @@ DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=table_fonction, into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")), DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ), # dans le cas MODAL=OUI, GRANDEUR peut-il etre different de EFFO et doit il etre impose a EFFO On devrait -# pouvoir supprimer GRANDEUR et DERIVATION ici - ), - +# pouvoir supprimer GRANDEUR et DERIVATION ici + ), + ), REPONSE =FACT(statut='f', regles=( ENSEMBLE('FREQ_MIN','FREQ_MAX'),), @@ -14620,49 +16251,59 @@ DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=table_fonction, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 24/06/2009 AUTEUR ZENTNER I.ZENTNER +#& MODIF COMMANDE DATE 04/05/2011 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== # RESPONSABLE ZENTNER I.ZENTNER + from Macro.dyna_iss_vari_ops import dyna_iss_vari_ops # -DYNA_ISS_VARI=MACRO(nom="DYNA_ISS_VARI",op=dyna_iss_vari_ops ,sd_prod=table_fonction, +def dyna_iss_vari_prod(self, FONC_SIGNAL,**args): + if FONC_SIGNAL !=None : + return tran_gene + else: + return table_fonction + raise AsException("type de concept resultat non prevu") +# + + +DYNA_ISS_VARI=MACRO(nom="DYNA_ISS_VARI",op=dyna_iss_vari_ops , sd_prod=dyna_iss_vari_prod, fr="Calcul du spectre de réponse ou de la reponse temporelle sismique incoherente par decomposition spectrale", reentrant='n', - UIinfo={"groupes":("Outils métier",)}, - NOM_CMP =SIMP(statut='o',typ='TXM',into=("DX","DY","DZ") ), - PRECISION =SIMP(statut='f',typ='R',defaut=0.999 ), + UIinfo={"groupes":("Outils métier",)}, + regles=(UN_PARMI('FONC_SIGNAL','NB_FREQ'),), + FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster) ), + NB_FREQ =SIMP(statut='f',typ='I' ), + NOM_CMP =SIMP(statut='o',typ='TXM',into=("DX","DY","DZ") ), + PRECISION =SIMP(statut='f',typ='R',defaut=0.999 ), INTERF =FACT(statut='o', - GROUP_NO_INTERF =SIMP(statut='o',typ=grma ,max='**'), - MODE_INTERF =SIMP(statut='o',typ='TXM',into=("CORP_RIGI","TOUT")), + GROUP_NO_INTERF =SIMP(statut='o',typ=grno ,max='**'), + MODE_INTERF =SIMP(statut='o',typ='TXM',into=("CORP_RIGI","TOUT")), ), MATR_COHE =FACT(statut='o', - VITE_ONDE =SIMP(statut='o',typ='R'), - PARA_ALPHA =SIMP(statut='f',typ='R',defaut=0.5), + VITE_ONDE =SIMP(statut='o',typ='R'), + PARA_ALPHA =SIMP(statut='f',typ='R',defaut=0.5), ), -# FONC_MULT =SIMP(statut='f',typ='R' ), - FREQ_INIT =SIMP(statut='o',typ='R' ), - NB_FREQ =SIMP(statut='o',typ='I' ), - PAS =SIMP(statut='o',typ='R' ), # LIST_FREQ =SIMP(statut='o',typ='liste' ), UNITE_RESU_FORC = SIMP(statut='f',typ='I',defaut=33), UNITE_RESU_IMPE = SIMP(statut='f',typ='I',defaut=32), TYPE = SIMP(statut='f',typ='TXM',into=("BINAIRE","ASCII"), defaut="ASCII"), +# NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE") , validators=NoRepeat(),max=3,defaut="DEPL" ), # MATR_GENE = FACT(statut='o', MATR_MASS = SIMP(statut='o',typ=(matr_asse_gene_r ) ), @@ -14670,14 +16311,27 @@ DYNA_ISS_VARI=MACRO(nom="DYNA_ISS_VARI",op=dyna_iss_vari_ops ,sd_prod=table_fonc MATR_AMOR = SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c ) ), ), # - OPTION = SIMP(statut='f',typ='TXM',into=("TOUT","DIAG"),defaut="TOUT"), -# - INFO =SIMP(statut='f',typ='I' ,defaut=1,into=( 1 , 2)), + INFO =SIMP(statut='f',typ='I' ,defaut=1,into=( 1 , 2)), +# + b_type_trans = BLOC(condition="FONC_SIGNAL !=None", + FREQ_MAX =SIMP(statut='f',typ='R' ), + FREQ_PAS =SIMP(statut='f',typ='R' ), + regles=( ENSEMBLE('FREQ_MAX','FREQ_PAS'), ) + + ), + + b_type_spec = BLOC(condition="NB_FREQ != None", + FREQ_INIT =SIMP(statut='o',typ='R' ), + FREQ_PAS =SIMP(statut='o',typ='R' ), + OPTION = SIMP(statut='f',typ='TXM',into=("TOUT","DIAG"),defaut="TOUT"), + ), + + ) ; -#& MODIF COMMANDE DATE 13/10/2009 AUTEUR COURTOIS M.COURTOIS +#& MODIF COMMANDE DATE 18/01/2011 AUTEUR BOITEAU O.BOITEAU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -14704,7 +16358,7 @@ def dyna_line_harm_prod(MATR_RIGI,**args): DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, fr="Calcul de la réponse dynamique complexe d'un système à une excitation harmonique", reentrant='f', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, regles=(PRESENT_ABSENT('AMOR_REDUIT','MATR_AMOR'), PRESENT_ABSENT('AMOR_REDUIT','LIST_AMOR'), PRESENT_ABSENT('MATR_AMOR','LIST_AMOR'), @@ -14767,11 +16421,12 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), ), ), @@ -14797,11 +16452,12 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), - OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), ), ), @@ -14814,10 +16470,10 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, # Rajouter test icompatibilite vect_asse et sensibilite # Peut-on aussi rajouter ici le test d incompatibilite charge complexe - derivation # presents dans le Fortran -#& MODIF COMMANDE DATE 18/01/2010 AUTEUR TARDIEU N.TARDIEU +#& MODIF COMMANDE DATE 08/02/2011 AUTEUR TARDIEU N.TARDIEU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -14836,7 +16492,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, fr="Calcul de la réponse dynamique transitoire à une excitation temporelle quelconque", reentrant='f', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, # regles=(UN_PARMI('WILSON','DIFF_CENTRE','ADAPT'),), regles=(UN_PARMI('NEWMARK','WILSON','DIFF_CENTRE','ADAPT'), CONCEPT_SENSIBLE('ENSEMBLE'),), @@ -14911,7 +16567,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, ), SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), @@ -14934,7 +16590,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), ), b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), @@ -14943,22 +16599,31 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), PARALLELISME =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",into=("CENTRALISE","CENTRALISE")), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), @@ -14985,6 +16650,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ), NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ), PAS_CALCUL =SIMP(statut='f',typ='I',defaut= 1 ), + PAS_MINI =SIMP(statut='f',typ='R' ), ), ARCHIVAGE =FACT(statut='f', regles=(UN_PARMI('LIST_ARCH','PAS_ARCH', ),), @@ -14999,10 +16665,10 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 12/04/2010 AUTEUR MICHEL S.MICHEL +#& MODIF COMMANDE DATE 21/02/2011 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -15021,7 +16687,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, # DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', fr="Calcul de l'évolution dynamique d'une structure dont le matériau ou la géométrie ont un comportement non linéaire", - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',), CONCEPT_SENSIBLE('ENSEMBLE'),), MODELE =SIMP(statut='o',typ=modele_sdaster), @@ -15029,7 +16695,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', MODE_STAT =SIMP(statut='f',typ=mode_meca), CARA_ELEM =SIMP(statut='f',typ=cara_elem), MASS_DIAG =SIMP(statut='f',typ='TXM',into=("OUI","NON",) ), - EXCIT =FACT(statut='o',max='**', + EXCIT =FACT(statut='f',max='**', regles=(PRESENT_ABSENT('FONC_MULT','ACCE'), PRESENT_PRESENT('ACCE','VITE','DEPL'), # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'), @@ -15074,23 +16740,14 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', MASS_GENE =SIMP(statut='f',typ=matr_asse_gene_r), RIGI_GENE =SIMP(statut='f',typ=matr_asse_gene_r), AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + DEPL_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + VITE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + ACCE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), ), +#------------------------------------------------------------------- COMP_INCR =C_COMP_INCR(), - COMP_ELAS =FACT(statut='f',max='**', - RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS", - into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS", - "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")), - DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",) ), - regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), - ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), - RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE", - into=("IMPLICITE",)), - ), +#------------------------------------------------------------------- + COMP_ELAS =C_COMP_ELAS('DYNA_NON_LINE'), #------------------------------------------------------------------- b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire", ETAT_INIT =FACT(statut='o', @@ -15143,18 +16800,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', INST_ETAT_INIT =SIMP(statut='f',typ='R'), ),), #------------------------------------------------------------------- - INCREMENT =FACT(statut='o', - regles=(EXCLUS('NUME_INST_FIN','INST_FIN'),), - LIST_INST =SIMP(statut='o',typ=(listr8_sdaster,list_inst)), - INST_INIT =SIMP(statut='f',typ='R'), - NUME_INST_INIT =SIMP(statut='f',typ='I'), - NUME_INST_FIN =SIMP(statut='f',typ='I'), - INST_FIN =SIMP(statut='f',typ='R'), - ERRE_TEMPS =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON", - fr="Adaptation temporelle pour les modélisations HM instationnaires", - ang="Time adaptation for unstationary HM models"), - PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), - ), + INCREMENT =C_INCREMENT(), #------------------------------------------------------------------- SCHEMA_TEMPS =FACT(statut='o', SCHEMA =SIMP(statut='o',min=1,max=1,typ='TXM', @@ -15184,176 +16830,22 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', b_implicit= BLOC(condition="SCHEMA!='TCHAMWA'and SCHEMA!='DIFF_CENT'", FORMULATION =SIMP(statut='o',max=1,typ='TXM',into=("DEPLACEMENT","VITESSE","ACCELERATION"),),), ), - NEWTON =FACT(statut='d', - REAC_INCR =SIMP(statut='f',typ='I',defaut= 1,val_min=0 ), - PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE") ), - MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ), - REAC_ITER =SIMP(statut='f',typ='I',defaut= 0,val_min=0), - REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0,val_min=0), - PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0), - ), - SOLVEUR =FACT(statut='d', - METHODE=SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","FETI","PETSC") ), - b_mult_front =BLOC(condition= "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", - RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), - ), - b_ldlt =BLOC(condition= "METHODE == 'LDLT'",fr="Paramètres de la méthode LDLT", - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ), - ), - b_ldlt_mult_mumps =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ", - fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser", - NPREC =SIMP(statut='f',typ='I',defaut= 8 ), - STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ), - ), - b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", - TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), - PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), - POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), - ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), - PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), - RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), - OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - FILTRAGE_MATRICE=SIMP(statut='f',typ='R',defaut=-1.0,), - MIXER_PRECISION =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - ), - b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué", - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","LDLT_SP",),defaut="LDLT_INC" ), - b_ldltinc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", fr="Paramètres de la factorisation incomplète", - NIVE_REMPLISSAGE =SIMP(statut='f',typ='I',defaut= 0 ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - ), - b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), - ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), - NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), - ), - b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", - ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", - NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), - REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), - ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6), - NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), - ), - SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), - ), +#------------------------------------------------------------------- + NEWTON =C_NEWTON(), #------------------------------------------------------------------- - CONVERGENCE =FACT(statut='d', - regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA','RESI_COMP_RELA'),), - b_refe_rela =BLOC(condition = "RESI_REFE_RELA != None", - regles=(AU_MOINS_UN('SIGM_REFE','EPSI_REFE','FLUX_THER_REFE', - 'FLUX_HYD1_REFE','FLUX_HYD2_REFE','VARI_REFE'),), - SIGM_REFE =SIMP(statut='f',typ='R'), - EPSI_REFE =SIMP(statut='f',typ='R'), - FLUX_THER_REFE =SIMP(statut='f',typ='R'), - FLUX_HYD1_REFE =SIMP(statut='f',typ='R'), - FLUX_HYD2_REFE =SIMP(statut='f',typ='R'), - VARI_REFE =SIMP(statut='f',typ='R'), - ), - RESI_REFE_RELA =SIMP(statut='f',typ='R'), - RESI_GLOB_MAXI =SIMP(statut='f',typ='R'), - RESI_GLOB_RELA =SIMP(statut='f',typ='R'), - RESI_COMP_RELA =SIMP(statut='f',typ='R'), - ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10), - ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25), - TYPE =SIMP(statut='f',typ='TXM',defaut="PIC",into=("PIC","PLATEAU")), - b_plateau =BLOC(condition = "TYPE == 'PLATEAU' ", - - PLATEAU_ITER =SIMP(statut='f',typ='I',defaut=3, val_min =2), - PLATEAU_RELA =SIMP(statut='f',typ='R',defaut=1E-3), - ), - ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"), - - ), + RECH_LINEAIRE =C_RECH_LINEAIRE(), #------------------------------------------------------------------- - OBSERVATION =FACT(statut='f',max='**', - NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), - SUIVI_DDL =SIMP(statut='f',typ='TXM',defaut="NON",max=1,into=("OUI","NON")), - b_suivi =BLOC(condition = "SUIVI_DDL == 'OUI' ", - regles=(UN_PARMI('NOEUD','MAILLE','GROUP_NO','GROUP_MA','VALE_MIN','VALE_MAX'), - PRESENT_PRESENT('MAILLE','POINT'),), - NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', - into=("DEPL","VITE","ACCE","SIEF_ELGA", - "VARI_ELGA","FORC_NODA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",)), - GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - NUME_SUIVI =SIMP(statut='o',typ='I' ,min=1,max=4), - VALE_MAX =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,into=("OUI",) ), - VALE_MIN =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,into=("OUI",) ),), - b_non_suivi =BLOC(condition = "SUIVI_DDL == 'NON' ", - regles=(UN_PARMI('NOEUD','GROUP_NO','MAILLE'),PRESENT_PRESENT('MAILLE','POINT'),), - NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE","SIEF_ELGA", - "VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU")), - INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), - LIST_INST =SIMP(statut='f',typ=listr8_sdaster), - PAS_OBSE =SIMP(statut='f',typ='I'), - LIST_ARCH =SIMP(statut='f',typ=listis_sdaster), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), - b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), - b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", - PRECISION =SIMP(statut='o',typ='R',),),), - ), - - AFFICHAGE = FACT(statut='f',max=16, - - UNITE = SIMP(statut='f',typ='I',val_min=1), - - LONG_R = SIMP(statut='f',typ='I',defaut=12,val_min=1,val_max=12), - PREC_R = SIMP(statut='f',typ='I',defaut=5, val_min=1,val_max=8), - LONG_I = SIMP(statut='f',typ='I',defaut=6, val_min=1,val_max=12), - - NOM_COLONNE = SIMP(statut='o',typ='TXM',defaut="STANDARD", - into=("STANDARD","MINIMUM", - "ITER_NEWT", - "INCR_TPS", - "RESI_RELA","RELA_NOEU", - "RESI_MAXI","MAXI_NOEU", - "RESI_REFE","REFE_NOEU", - "RELI_ITER","RELI_COEF", - "PILO_PARA", - "MATR_ASSE", - "ITER_DEBO", - "CTCD_ITER","CTCD_GEOM","CTCD_NOEU", - "CTCC_GEOM","CTCC_FROT","CTCC_CONT", - "SUIV_1","SUIV_2","SUIV_3","SUIV_4", - ), - ), - b_residu = BLOC(condition = " NOM_COLONNE == 'RESI_RELA' or \ - NOM_COLONNE == 'RESI_MAXI' or\ - NOM_COLONNE == 'RESI_REFE' or\ - NOM_COLONNE == 'CTCD_GEOM' or\ - NOM_COLONNE == 'STANDARD' ", - INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - ), - ), + CONVERGENCE =C_CONVERGENCE(), #------------------------------------------------------------------- - ARCHIVAGE =FACT(statut='f', - regles=(EXCLUS('PAS_ARCH','LIST_INST','INST'), - EXCLUS('ARCH_ETAT_INIT','NUME_INIT'), ), - LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), - INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), - PAS_ARCH =SIMP(statut='f',typ='I' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)), - NUME_INIT =SIMP(statut='f',typ='I'), - DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)), - CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', - into=("DEPL","SIEF_ELGA","VARI_ELGA","ACCE","VITE",)), - ), - + SOLVEUR =C_SOLVEUR(), +#------------------------------------------------------------------- + OBSERVATION =C_OBSERVATION(), +#------------------------------------------------------------------- + SUIVI_DDL =C_SUIVI_DDL(), +#------------------------------------------------------------------- + AFFICHAGE =C_AFFICHAGE(), +#------------------------------------------------------------------- + ARCHIVAGE =C_ARCHIVAGE(), #------------------------------------------------------------------- CRIT_FLAMB =FACT(statut='f',min=1,max=1, NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3), @@ -15371,7 +16863,15 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C','V11','V12','V13','V21','V22', 'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21','PRES22','PRES23', 'PRES31','PRES32','PRES33','VARI','LAG_GV')),), - INST_CALCUL =SIMP(statut='f',typ='TXM',defaut="LISTE_ARCHIVAGE",into=("LISTE_ARCHIVAGE","TOUT_PAS",) ), + regles = (EXCLUS('PAS_CALC','LIST_INST','INST'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_CALC = SIMP(statut='f',typ='I' ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), MODE_VIBR =FACT(statut='f',min=1,max=1, MATR_RIGI =SIMP(statut='f',typ='TXM',defaut="ELASTIQUE",into=("ELASTIQUE","TANGENTE","SECANTE",) ), @@ -15379,7 +16879,15 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', fr="Nombre de fréquences propres à calculer"), BANDE =SIMP(statut='f',typ='R',min=2,max=2, fr="Valeur des deux fréquences délimitant la bande de recherche",), - INST_CALCUL =SIMP(statut='f',typ='TXM',defaut="LISTE_ARCHIVAGE",into=("LISTE_ARCHIVAGE","TOUT_PAS",) ), + regles = (EXCLUS('PAS_CALC','LIST_INST','INST'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_CALC = SIMP(statut='f',typ='I' ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), #------------------------------------------------------------------- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', @@ -15387,9 +16895,19 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', ang="List of sensitivity parameters"), #------------------------------------------------------------------- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), + b_info=BLOC(condition="(INFO==2)", + fr="filtre les messages émis dans le .mess selon le type de message demandé", + INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), + into=("CONTACT", + "MECA_NON_LINE", + "PILOTAGE", + "FACTORISATION", + "APPARIEMENT"), + ), + ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15411,7 +16929,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=table_fonction, fr="Calcul de la réponse par recombinaison modale d'une structure linéaire pour une excitation aléatoire", reentrant='n', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, BASE_ELAS_FLUI =SIMP(statut='o',typ=melasflu_sdaster ), EXCIT =FACT(statut='o', INTE_SPEC_GENE =SIMP(statut='o',typ=table_fonction), @@ -15419,10 +16937,10 @@ DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=table_fonction, OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 19/04/2010 AUTEUR GREFFET N.GREFFET +#& MODIF COMMANDE DATE 31/01/2011 AUTEUR GREFFET N.GREFFET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -15442,11 +16960,11 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, fr="Calcul de la réponse dynamique transitoire d'un système amorti ou non en coordonées généralisées" +" par superposition modale ou par sous structuration", reentrant='f', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, regles=(EXCLUS('AMOR_REDUIT','AMOR_GENE','LIST_AMOR'), PRESENT_ABSENT('MODE_STAT','MODE_CORR'),), METHODE =SIMP(statut='f',typ='TXM',defaut="EULER", - into=("EULER","NEWMARK","DEVOGE","ADAPT","ITMI") ), + into=("EULER","NEWMARK","DEVOGE","ADAPT_ORDRE1","ADAPT_ORDRE2","ITMI") ), MASS_GENE =SIMP(statut='o',typ=matr_asse_gene_r ), RIGI_GENE =SIMP(statut='o',typ=matr_asse_gene_r ), AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r ), @@ -15458,7 +16976,17 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, COUPLAGE_EDYOS =FACT(statut='f',max=1, VITE_ROTA = SIMP(statut='o',typ='R' ), PAS_TPS_EDYOS = SIMP(statut='o',typ='R' ), - UNITE = SIMP(statut='f',typ='I',defaut=45), + ), + + PALIER_EDYOS =FACT(statut='f',max='**', + regles=(PRESENT_ABSENT('UNITE','GROUP_NO'), + PRESENT_ABSENT('UNITE','TYPE_EDYOS'), + EXCLUS('GROUP_NO','NOEUD'),), + UNITE = SIMP(statut='f',typ='I',), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD = SIMP(statut='f',typ=no), + TYPE_EDYOS = SIMP(statut='f',typ='TXM', + into=("PAPANL","PAFINL","PACONL","PAHYNL",),), ), ETAT_INIT =FACT(statut='f', @@ -15488,6 +17016,7 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ), NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ), PAS_MAXI =SIMP(statut='f',typ='R' ), + PAS_MINI =SIMP(statut='f',typ='R' ), ), ARCHIVAGE =FACT(statut='f', regles=(UN_PARMI('LIST_ARCH','PAS_ARCH'),), @@ -15664,18 +17193,19 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 12/05/2009 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15695,7 +17225,7 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, # ====================================================================== # RESPONSABLE PELLET J.PELLET ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178, - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Impression","Utilitaires",)}, fr="Engendre des tests pour la non régression du code (pour développeurs)", UNITE =SIMP(statut='f',typ='I',defaut=8), FORMAT =SIMP(statut='f',typ='TXM',into=("OBJET",) ), @@ -15715,10 +17245,53 @@ ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178, TYPE_TEST =SIMP(statut='f',typ='TXM',defaut="SOMME",into=("SOMME",) ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 14/02/2011 AUTEUR GREFFET N.GREFFET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# ENVOI DES CHAMPS CINEMATIQUES VIA YACS POUR COUPLAGE IFS +# +ENV_CINE_YACS=PROC(nom = "ENV_CINE_YACS", + op = 111, + UIinfo = {"groupes":("Résultats et champs",)}, + fr = "Envoi des champs de deplacement et vitesse via YACS pour Couplage de Code_Aster et Saturne", + regles = (EXCLUS('ETAT_INIT','RESULTAT',),), + MATR_PROJECTION = SIMP(statut='o', typ=corresp_2_mailla,), + VIS_A_VIS = FACT(statut='o', max='**', + GROUP_MA_1=SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO_2=SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),), + RESULTAT = FACT(statut='f', + NUME_ORDRE=SIMP(statut='o', typ='I', validators=NoRepeat()), + RESU =SIMP(statut='o', typ=resultat_sdaster, validators=NoRepeat()),), + ETAT_INIT = FACT(statut='f', + DEPL=SIMP(statut='f', typ=cham_no_sdaster, validators=NoRepeat()), + VITE=SIMP(statut='f', typ=cham_no_sdaster, validators=NoRepeat()), + ACCE=SIMP(statut='f', typ=cham_no_sdaster, validators=NoRepeat()),), + INST = SIMP(statut='o',typ='R', ), + PAS = SIMP(statut='o',typ='R', ), + NUME_ORDRE_YACS = SIMP(statut='o', typ='I',), + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 01/03/2011 AUTEUR ASSIRE A.ASSIRE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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 @@ -15744,13 +17317,27 @@ def exec_logiciel_prod(self, MAILLAGE, **args): EXEC_LOGICIEL = MACRO(nom="EXEC_LOGICIEL",op=exec_logiciel_ops, sd_prod=exec_logiciel_prod, fr="Exécute un logiciel ou une commande système depuis Aster", - UIinfo={"groupes":("Outils métier",)}, - - regles = (AU_MOINS_UN('LOGICIEL', 'MAILLAGE'),), + UIinfo={"groupes":("Gestion du travail","Outils-métier",)}, + regles = ( AU_MOINS_UN('LOGICIEL', 'MAILLAGE', 'SALOME'), + EXCLUS('MACHINE_DISTANTE','MAILLAGE'), + EXCLUS('MAILLAGE','SALOME'), + ), + LOGICIEL = SIMP(statut='f', typ='TXM'), ARGUMENT = SIMP(statut='f', max='**', typ='TXM'), + + MACHINE_DISTANTE = FACT(statut='f', + SSH_ADRESSE = SIMP(statut='o', typ='TXM', val_min=1, val_max=255, + fr="Adresse IP ou nom de la machine sur laquelle le logiciel/script sera exécuté via SSH"), + SSH_LOGIN = SIMP(statut='f', typ='TXM', val_min=1, val_max=255, + fr="Nom d'utilisateur sur la machine distante"), + SSH_PORT = SIMP(statut='f', typ='I', val_min=1, val_max=65535, defaut=22, + fr="Port SSH de la machien distante"), + ), + + MAILLAGE = FACT(statut='f', FORMAT = SIMP(statut='o', typ='TXM', into=("GMSH", "GIBI", "SALOME")), UNITE_GEOM = SIMP(statut='f', typ='I', val_min=10, val_max=90, defaut=16, @@ -15760,12 +17347,36 @@ EXEC_LOGICIEL = MACRO(nom="EXEC_LOGICIEL",op=exec_logiciel_ops, sd_prod=exec_log MAILLAGE = SIMP(statut='o', typ=CO), ), + + SALOME = FACT(statut='f', + regles=(UN_PARMI('CHEMIN_SCRIPT', 'UNITE_SCRIPT'), + PRESENT_PRESENT('NOM_PARA','VALE'),), + CHEMIN_SCRIPT = SIMP(statut='f', typ='TXM', + fr="Chemin du script Salome"), + UNITE_SCRIPT = SIMP(statut='f', typ='I', val_min=80, val_max=99, + fr="Unité logique du script Salome"), + SALOME_HOST = SIMP(statut='f', typ='TXM', defaut='localhost', + fr="Machine sur laquelle tourne Salome"), + SALOME_PORT = SIMP(statut='f', typ='I', val_min=2800, val_max=2900, defaut=2810, + fr="Port de l'instance Salome (2810 ou supérieur)"), + SALOME_RUNAPPLI = SIMP(statut='f', typ='TXM', + fr="Chemin vers le script de lancement runAppli de Salome"), + FICHIERS_ENTREE = SIMP(statut='f', typ='TXM', validators=NoRepeat(),max='**', + fr="Liste des fichiers d'entrée du script Salome"), + FICHIERS_SORTIE = SIMP(statut='f', typ='TXM', validators=NoRepeat(),max='**', + fr="Liste des fichiers générés par le script Salome"), + NOM_PARA = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), + fr="Liste des noms des paramètres à modifier dans le script Salome"), + VALE = SIMP(statut='f',typ='TXM',max='**', + fr="Valeur des paramètres à) modifier dans le script Salome"), + ), + CODE_RETOUR_MAXI = SIMP(statut='f', typ='I', defaut=0, val_min=-1, fr="Valeur maximale du code retour toléré (-1 pour l'ignorer)"), INFO = SIMP(statut='f', typ='I', defaut=2, into=(1,2),), ) -#& MODIF COMMANDE DATE 05/05/2008 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15794,7 +17405,7 @@ def extr_mode_prod(FILTRE_MODE,**args): EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod, reentrant='n',fr="Extraire séléctivement des modes des structures de données modales", - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, FILTRE_MODE =FACT(statut='o',max='**', regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','NUME_MODE','NUME_MODE_EXCLU','FREQ_MIN','CRIT_EXTR',),), MODE =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_gene ) ), @@ -15822,7 +17433,7 @@ EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod, CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",into=("MASS_EFFE_UN","MASS_GENE") ), ), ) ; -#& MODIF COMMANDE DATE 18/05/2010 AUTEUR MEUNIER S.MEUNIER +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15898,7 +17509,7 @@ EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,reentrant='f', TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG @@ -15926,7 +17537,7 @@ def extr_table_prod(TYPE_RESU,**args): raise AsException("type de concept resultat non prevu") EXTR_TABLE=OPER(nom="EXTR_TABLE",op=173,sd_prod=extr_table_prod,reentrant='n', - UIinfo={"groupes":("Résultats et champs",)}, + UIinfo={"groupes":("Résultats et champs","Tables")}, fr="Extraire d'une table des concepts Code_Aster", TYPE_RESU =SIMP(statut='o',typ='TXM',), @@ -15952,10 +17563,10 @@ EXTR_TABLE=OPER(nom="EXTR_TABLE",op=173,sd_prod=extr_table_prod,reentrant='n', TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 18/01/2010 AUTEUR TARDIEU N.TARDIEU +#& MODIF COMMANDE DATE 08/02/2011 AUTEUR TARDIEU N.TARDIEU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -16006,21 +17617,28 @@ FACTORISER=OPER(nom="FACTORISER",op=14,sd_prod=factoriser_prod, PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), # mots clés pour solveur GCPC et PETSc : PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ",fr="Paramètres de la factorisation incomplete", + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), ), - b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 03/08/2009 AUTEUR COURTOIS M.COURTOIS +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16055,7 +17673,7 @@ FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ), UNITE =SIMP(statut='f',typ='I',defaut=6), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16075,11 +17693,11 @@ FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une # ====================================================================== # RESPONSABLE ADOBES A.ADOBES FONC_FLUI_STRU=OPER(nom="FONC_FLUI_STRU",op= 169,sd_prod=fonction_sdaster, - reentrant='n',fr="Crée une fonction constante paramètrée par l'abscisse curviligne", - UIinfo={"groupes":("Fonction",)}, + reentrant='n',fr="Crée une fonction constante paramétrée par l'abscisse curviligne", + UIinfo={"groupes":("Fonctions",)}, TYPE_FLUI_STRU =SIMP(statut='o',typ=(type_flui_stru) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16104,12 +17722,15 @@ def formule_prod(self,VALE,VALE_C,**args): elif VALE_C != None: return formule_c -def form_pyth_ops(self,d): - NOM_PARA=self.etape['NOM_PARA'] +def form_pyth_ops(self, d): + NOM_PARA = self.etape['NOM_PARA'] VALE =self.etape['VALE'] VALE_C =self.etape['VALE_C'] if type(NOM_PARA) not in (list, tuple): NOM_PARA = [NOM_PARA,] + for para in NOM_PARA: + if para.strip() != para: + raise AsException("nom de paramètre invalide (contient des blancs) : %s" % repr(para)) if self.sd == None: return if VALE != None : @@ -16119,14 +17740,14 @@ def form_pyth_ops(self,d): self.sd.setFormule(NOM_PARA, texte.strip()) FORMULE=FORM(nom="FORMULE",op_init=form_pyth_ops,op=-5, - sd_prod=formule_prod,UIinfo={"groupes":("Fonction",)}, + sd_prod=formule_prod,UIinfo={"groupes":("Fonctions",)}, fr="Définit une formule réelle ou complexe à partir de son expression mathématique", regles=(UN_PARMI('VALE','VALE_C',),), VALE =SIMP(statut='f',typ='TXM'), VALE_C =SIMP(statut='f',typ='TXM'), NOM_PARA =SIMP(statut='o',typ='TXM',max='**'), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16148,7 +17769,7 @@ FORMULE=FORM(nom="FORMULE",op_init=form_pyth_ops,op=-5, GENE_FONC_ALEA=OPER(nom="GENE_FONC_ALEA",op= 118,sd_prod=table_fonction, fr="Génération de la fonction temporelle à partir d une matrice interspectrale", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, INTE_SPEC =SIMP(statut='o',typ=table_fonction), NUME_VITE_FLUI =SIMP(statut='f',typ='I' ), INTERPOL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ), @@ -16163,7 +17784,7 @@ GENE_FONC_ALEA=OPER(nom="GENE_FONC_ALEA",op= 118,sd_prod=table_fonction, INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -16192,7 +17813,7 @@ GENE_MATR_ALEA=OPER(nom="GENE_MATR_ALEA",op= 27, sd_prod=gene_matr_alea_prod, fr="Générer une réalisation d'une matrice aléatoire réelle sym. déf. positive ou d'un macro élément dynamique", reentrant='n', - UIinfo={"groupes":("Matrice",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, MATR_MOYEN = SIMP(statut='o', typ=(matr_asse_gene_r,macr_elem_dyna)), # cas matrice generalisee @@ -16213,7 +17834,7 @@ sd_prod=gene_matr_alea_prod, INIT_ALEA =SIMP(statut='f',typ='I'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -16237,7 +17858,7 @@ GENE_VARI_ALEA=MACRO(nom="GENE_VARI_ALEA", op_init=gene_vari_alea_init,op=gene_vari_alea_ops, sd_prod=reel,reentrant='n', fr="Générer une réalisation d'une variable aléatoire réelle de loi de probabilité donnée (Gamma ou Exponentielle)", - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, TYPE = SIMP(statut='f', typ='TXM', into=("EXP_TRONQUEE", "EXPONENTIELLE", "GAMMA"), defaut="GAMMA"), b_gamma =BLOC(condition = "TYPE == 'GAMMA' ",fr="Parametres loi gamma", VALE_MOY = SIMP(statut='f', typ='R', defaut=1.), @@ -16255,7 +17876,7 @@ GENE_VARI_ALEA=MACRO(nom="GENE_VARI_ALEA", ), INIT_ALEA =SIMP(statut='f',typ='I'), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16275,7 +17896,7 @@ GENE_VARI_ALEA=MACRO(nom="GENE_VARI_ALEA", # ====================================================================== # RESPONSABLE LEFEBVRE J.P.LEFEBVRE IMPR_CO=PROC(nom="IMPR_CO",op=17, - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Impression","Utilitaires",)}, fr="Imprimer tous les objets JEVEUX qui constituent un concept utilisateur existant (pour les développeurs)", regles=(UN_PARMI('CONCEPT','CHAINE','TOUT' ),), @@ -16294,7 +17915,7 @@ IMPR_CO=PROC(nom="IMPR_CO",op=17, POSITION =SIMP(statut='f',typ='I',defaut=1), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), ) ; -#& MODIF COMMANDE DATE 22/12/2009 AUTEUR TORKHANI M.TORKHANI +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR TORKHANI M.TORKHANI # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG @@ -16316,11 +17937,11 @@ IMPR_CO=PROC(nom="IMPR_CO",op=17, from Macro.impr_diag_campbell_ops import impr_diag_campbell_ops -IMPR_DIAG_CAMPBELL=MACRO(nom="IMPR_DIAG_CAMPBELL",op=impr_diag_campbell_ops, fr="Tracer du Diagramme de Campbell", - UIinfo={"groupes":("Post-traitements",)}, +IMPR_DIAG_CAMPBELL=MACRO(nom="IMPR_DIAG_CAMPBELL",op=impr_diag_campbell_ops, fr="Tracé du Diagramme de Campbell", + UIinfo={"groupes":("Impression","Outils-métier",)}, MAILLAGE =SIMP(statut='o',typ=maillage_sdaster), MODES =SIMP(statut='o',typ=table_container), - NFREQ_camp =SIMP(statut='o',typ='I' ), + NFREQ_CAMP =SIMP(statut='o',typ='I' ), TYP_PREC =SIMP(statut='f',typ='I',defaut= 1, into=(1,2) ), TYP_TRI =SIMP(statut='f',typ='I',defaut= 2, into=(0,1,2) ), UNIT_FLE =SIMP(statut='o',typ='I' ,val_min=1), @@ -16330,7 +17951,7 @@ IMPR_DIAG_CAMPBELL=MACRO(nom="IMPR_DIAG_CAMPBELL",op=impr_diag_campbell_ops, fr= UNIT_INT =SIMP(statut='o',typ='I' ,val_min=1), L_S =SIMP(statut='f',typ='R', defaut= 1., max='**'), ); -#& MODIF COMMANDE DATE 06/05/2008 AUTEUR CNGUYEN C.NGUYEN +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -16353,7 +17974,7 @@ from Macro.impr_fonction_ops import impr_fonction_ops IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",op=impr_fonction_ops,sd_prod=None, fr="Imprime le contenu d'objets de type fonction ou liste de réels dans un fichier destiné à un traceur de courbe", - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Impression","Fonctions",)}, FORMAT =SIMP(statut='o',typ='TXM',position='global',defaut='TABLEAU', into=("TABLEAU","AGRAF","XMGRACE",),), b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'", @@ -16467,10 +18088,10 @@ IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",op=impr_fonction_ops,sd_prod=None, ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -16488,7 +18109,7 @@ IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",op=impr_fonction_ops,sd_prod=None, # RESPONSABLE BOYERE E.BOYERE IMPR_GENE=PROC(nom="IMPR_GENE",op= 157, fr="Imprimer le résultat d'un calcul dynamique en variables généralisées au format RESULTAT", - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Impression","Dynamique",)}, FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT",into=("RESULTAT",) ), UNITE =SIMP(statut='f',typ='I',defaut=8), GENE =FACT(statut='o',max='**', @@ -16521,7 +18142,7 @@ IMPR_GENE=PROC(nom="IMPR_GENE",op= 157, TOUT_CMP_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), NUME_CMP_GENE =SIMP(statut='f',typ='I',max='**'), TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), - NOM_CHAM =SIMP(statut='f',typ='TXM',max='**'), + NOM_CHAM =SIMP(statut='f',typ='TXM',max='**',into=C_NOM_CHAM_INTO(),), TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), NOM_PARA =SIMP(statut='f',typ='TXM',max='**'), SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'), @@ -16529,7 +18150,7 @@ IMPR_GENE=PROC(nom="IMPR_GENE",op= 157, INFO_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), ), ) ; -#& MODIF COMMANDE DATE 03/08/2009 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16549,7 +18170,7 @@ IMPR_GENE=PROC(nom="IMPR_GENE",op= 157, # ====================================================================== # RESPONSABLE LEFEBVRE J.P.LEFEBVRE IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16, - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Impression","Utilitaires",)}, fr="Imprimer le contenu des objets créés par JEVEUX (pour développeur)", ENTITE =SIMP(fr="choix de l'observation",statut='o',typ='TXM', into=("DISQUE","MEMOIRE","REPERTOIRE", @@ -16590,10 +18211,10 @@ IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16, ), COMMENTAIRE =SIMP(statut='f',typ='TXM' ), ) ; -#& MODIF COMMANDE DATE 06/05/2008 AUTEUR CORUS M.CORUS +#& MODIF COMMANDE DATE 01/03/2011 AUTEUR CORUS M.CORUS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -16611,21 +18232,21 @@ IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16, # RESPONSABLE CORUS M.CORUS IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160, - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Impression","Outils-métier",)}, fr="Impression d'une structure de données MACR_ELEM_DYNA au format IDEAS MISS3D PLEXUS ou CADYRO", MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS", - into=("MISS_3D","IDEAS","CADYRO","PLEXUS") ), + into=("MISS_3D","IDEAS") ), - b_plexus =BLOC(condition = "FORMAT == 'IDEAS'", + b_ideas =BLOC(condition = "FORMAT == 'IDEAS'", UNITE =SIMP(statut='f',typ='I',defaut=30), VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ), ), - b_ideas =BLOC(condition = "FORMAT == 'PLEXUS'", - UNITE =SIMP(statut='f',typ='I',defaut=30), - VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ), - ), +# b_plexus =BLOC(condition = "FORMAT == 'PLEXUS'", +# UNITE =SIMP(statut='f',typ='I',defaut=30), +# VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ), +# ), b_miss_3d =BLOC(condition = "FORMAT == 'MISS_3D'", regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),), @@ -16643,20 +18264,49 @@ IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160, IMPR_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), ), - b_cadyro =BLOC(condition = "FORMAT == 'CADYRO'", - SQUELETTE =SIMP(statut='f',typ=squelette ), - UNITE_MODE_MECA =SIMP(statut='f',typ='I',defaut= 26 ), - UNITE_MODE_STAT =SIMP(statut='f',typ='I',defaut= 27 ), - UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut= 28 ), - IMPR_MODE_MECA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - IMPR_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - ), +# b_cadyro =BLOC(condition = "FORMAT == 'CADYRO'", +# SQUELETTE =SIMP(statut='f',typ=squelette ), +# UNITE_MODE_MECA =SIMP(statut='f',typ='I',defaut= 26 ), +# UNITE_MODE_STAT =SIMP(statut='f',typ='I',defaut= 27 ), +# UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut= 28 ), +# IMPR_MODE_MECA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), +# IMPR_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), +# ), ) ; -#& MODIF COMMANDE DATE 13/10/2009 AUTEUR COURTOIS M.COURTOIS +#& MODIF COMMANDE DATE 14/02/2011 AUTEUR GREFFET N.GREFFET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# RECUPERATION DES MAILLAGES IFS VENANT DE SATURNE VIA YACS +# +IMPR_MAIL_YACS=PROC(nom="IMPR_MAIL_YACS",op=43, + UIinfo={"groupes":("Maillage",)}, + fr="Lecture d'un maillage via YACS lors du Couplage de Code_Aster et Saturne", + UNITE_MAILLAGE = SIMP(statut='f',typ='I',defaut=30), + TYPE_MAILLAGE = SIMP(statut='o',typ='TXM',into=("SOMMET","MILIEU")), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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 @@ -16673,7 +18323,7 @@ IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160, # ====================================================================== # RESPONSABLE DEVESA G.DEVESA IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162, - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Impression","Outils-métier",)}, fr="Impression des données d'entrée pour une étude sismique avec MISS3D", regles=(UN_PARMI('INST_INIT','FREQ_INIT'), PRESENT_PRESENT('INST_INIT','INST_FIN'), @@ -16682,27 +18332,24 @@ IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162, EXCIT =FACT(statut='f',max='**', regles=(UN_PARMI('FONC_MULT','COEF_MULT' ),), VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster), - FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),), COEF_MULT =SIMP(statut='f',typ='R' ), ), EXCIT_SOL =FACT(statut='f',max='**', DIRECTION =SIMP(statut='o',typ='R',min=3,max=3), FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL", - into=("DEPL","VITE","ACCE","FORC",) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE","FORC",),), ), SOURCE_SOL =FACT(statut='f',max='**', POINT =SIMP(statut='o',typ='R',min=3,max=3), DIRECTION =SIMP(statut='o',typ='R',min=3,max=3), - FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL", - into=("DEPL","VITE","ACCE","FORC",) ), + FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE","FORC",),), ), SOURCE_FLUIDE =FACT(statut='f',max='**', POINT =SIMP(statut='o',typ='R',min=3,max=3), - FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL", - into=("DEPL","VITE","ACCE","FORC",) ), + FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE","FORC",),), ), DIRE_ONDE =SIMP(statut='f',typ='R',min=3,max=3), INST_INIT =SIMP(statut='f',typ='R' ), @@ -16714,7 +18361,7 @@ IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162, INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 16/11/2009 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -16737,7 +18384,7 @@ IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162, from Macro.impr_oar_ops import impr_oar_ops IMPR_OAR =MACRO(nom="IMPR_OAR",op= impr_oar_ops, sd_prod=None, fr="Impression au format OAR", - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Impression","Outils-métier",)}, TYPE_CALC = SIMP(statut='o', typ='TXM',into=('COMPOSANT', 'MEF', 'TUYAUTERIE')), b_composant =BLOC(condition = "TYPE_CALC == 'COMPOSANT' ", regles = (AU_MOINS_UN('RESU_MECA','RESU_THER')), @@ -16784,10 +18431,10 @@ IMPR_OAR =MACRO(nom="IMPR_OAR",op= impr_oar_ops, sd_prod=None, UNITE = SIMP(statut='f',typ='I',defaut=38), AJOUT = SIMP(statut='f', typ='TXM', defaut='NON', into=('OUI', 'NON')), ); -#& MODIF COMMANDE DATE 12/04/2010 AUTEUR SELLENET N.SELLENET +#& MODIF COMMANDE DATE 11/05/2011 AUTEUR SELLENET N.SELLENET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -16804,7 +18451,7 @@ IMPR_OAR =MACRO(nom="IMPR_OAR",op= impr_oar_ops, sd_prod=None, # ====================================================================== # RESPONSABLE SELLENET N.SELLENET IMPR_RESU=PROC(nom="IMPR_RESU",op=39, - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Impression","Résultats et champs",)}, fr="Imprimer un maillage et/ou les résultats d'un calcul (différents formats)", MODELE =SIMP(statut='f',typ=modele_sdaster), @@ -16842,15 +18489,16 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39, VERSION =SIMP(statut='f',typ='R',defaut=1.2,into=(1.0,1.2)), ), - - RESTREINT =FACT(statut='f', max=1, - fr="Pour réduire une ou plusieurs sd_resultat sur un ensemble de mailles", - regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),), - GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), - TOUT_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), - GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - TOUT_GROUP_NO =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), + b_restreint =BLOC(condition="FORMAT=='MED'",fr="Seulement pour les fichiers MED", + RESTREINT =FACT(statut='f', max=1, + fr="Pour réduire une ou plusieurs sd_resultat sur un ensemble de mailles", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + TOUT_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + TOUT_GROUP_NO =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), + ), ), RESU =FACT(statut='o',max='**', @@ -16920,6 +18568,11 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39, TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ), NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), ), +### + b_med=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and(FORMAT == 'MED')""", + fr="renommage du champ", + NOM_CHAM_MED =SIMP(statut='f',typ='TXM',validators=(LongStr(1,64),NoRepeat()),max='**'), + ), ### b_gmsh=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and((FORMAT == 'GMSH'))""", fr="sélection des composantes et des entités toplogiques", @@ -16963,10 +18616,10 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39, ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 05/05/2008 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 18/01/2011 AUTEUR BOITEAU O.BOITEAU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -16984,9 +18637,9 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39, # RESPONSABLE NISTOR I.NISTOR IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de valeurs propres dans un intervalle donné", - UIinfo={"groupes":("Résolution",)}, - MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ), - MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ), + UIinfo={"groupes":("Résolution","Dynamique",)}, + MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ), + MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ), TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",into=("MODE_FLAMB","DYNAMIQUE"), fr="Type d analyse" ), b_dynamique =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'", @@ -16999,13 +18652,36 @@ IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de val CHAR_CRIT_MIN =SIMP(statut='o',typ='R',fr="Borne inférieure de l intervalle" ), CHAR_CRIT_MAX =SIMP(statut='o',typ='R',fr="Borne supérieure de l intervalle" ), ), - NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8 ), NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5 ), UNITE =SIMP(statut='f',typ='I',defaut=8), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 1.E-2 ), SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2 ), + + SOLVEUR =FACT(statut='d', + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","MUMPS")), + b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + ), + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","SANS") ), + ), + b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ", + fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser", + NPREC =SIMP(statut='f',typ='I',defaut= 8, val_min=0), + ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + ), + ) ; -#& MODIF COMMANDE DATE 06/05/2008 AUTEUR CNGUYEN C.NGUYEN +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17027,7 +18703,7 @@ IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de val from Macro.impr_table_ops import impr_table_ops IMPR_TABLE=MACRO(nom="IMPR_TABLE",op=impr_table_ops,sd_prod=None, - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Impression","Tables",)}, fr="Impression du contenu d'une table dans un fichier", regles=(DERIVABLE("TABLE"),), TABLE =SIMP(statut='o',typ=table_sdaster), @@ -17128,7 +18804,7 @@ IMPR_TABLE=MACRO(nom="IMPR_TABLE",op=impr_table_ops,sd_prod=None, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17154,7 +18830,7 @@ INCLUDE=MACRO(nom="INCLUDE",op=ops.build_include, UNITE = SIMP(statut='o',typ='I'), INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17174,7 +18850,7 @@ INCLUDE=MACRO(nom="INCLUDE",op=ops.build_include, # ====================================================================== # RESPONSABLE DURAND C.DURAND INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14, - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Modélisation","Gestion du travail",)}, fr="Récupérer les caractéristiques d'un matériau dans le Catalogue Materiaux d'Aster ", sd_prod=ops.INCLUDE_MATERIAU,op_init=ops.INCLUDE_context,fichier_ini=0, NOM_AFNOR =SIMP(statut='o',typ='TXM' ), @@ -17193,7 +18869,7 @@ INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14, UNITE_LONGUEUR =SIMP(statut='f',typ='TXM',into=("M","MM"),defaut="M" ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -17230,7 +18906,7 @@ INFO_EXEC_ASTER=OPER(nom="INFO_EXEC_ASTER",op=35,sd_prod=table_sdaster, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG @@ -17261,7 +18937,7 @@ def info_fonction_prod(self,ECART_TYPE,RMS,NOCI_SEISME,MAX,NORME, **args): INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_fonction_prod ,fr="Opérations mathématiques sur des concepts de type fonction, fonction_c ou nappe", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Fonctions",)}, regles=(UN_PARMI('MAX','RMS','NOCI_SEISME','NORME','ECART_TYPE',),), RMS =FACT(statut='f',fr="Valeur RMS d'une fonction",max='**', METHODE =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ), @@ -17311,6 +18987,8 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_foncti ), MAX =FACT(statut='f',fr="Extrémas locaux d'une fonction", FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),max='**' ), + INTERVALLE =SIMP(statut='f',typ='R',min=2,max='**', + fr ="définition des bornes des intervalles sous forme de couples (xi_i1,xs_i1,xi_i2,xs_i2)"), ), NORME =FACT(statut='f',fr="Norme L2 d'une fonction", FONCTION =SIMP(statut='o', typ=nappe_sdaster), @@ -17328,7 +19006,7 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_foncti ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) -#& MODIF COMMANDE DATE 12/04/2010 AUTEUR SELLENET N.SELLENET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2010 EDF R&D WWW.CODE-ASTER.ORG @@ -17348,12 +19026,12 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_foncti # ====================================================================== # RESPONSABLE SELLENET N.SELLENET INFO_RESU=PROC(nom="INFO_RESU",op=40, - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Impression","Utilitaires",)}, fr="Imprimer tous les champs présents dans une structure de données résultat", RESULTAT=SIMP(statut='f',typ=resultat_sdaster), UNITE=SIMP(statut='f',typ='I',defaut=6), ); -#& MODIF COMMANDE DATE 16/02/2010 AUTEUR GREFFET N.GREFFET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2010 EDF R&D WWW.CODE-ASTER.ORG @@ -17372,11 +19050,13 @@ INFO_RESU=PROC(nom="INFO_RESU",op=40, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== # RESPONSABLE GREFFET -INIT_COMPO=PROC(nom="INIT_COMPO",op= 117, - fr="Initialiser adresse component YACS", +INIT_COMPO=PROC(nom="INIT_COMPO", + op= 117, + UIinfo={"groupes":("Gestion du travail",)}, + fr="Initialiser adresse component YACS", COMPO =SIMP(statut='o',typ='I',), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17396,7 +19076,7 @@ INIT_COMPO=PROC(nom="INIT_COMPO",op= 117, # ====================================================================== # RESPONSABLE DESROCHES X.DESROCHES INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe_sdaster, - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements",)}, fr="Définition d'une courbe dans un maillage 2D",reentrant='n', MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ), @@ -17458,7 +19138,7 @@ INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe_sdaster, PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17478,7 +19158,7 @@ INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe_sdaster, # ====================================================================== # RESPONSABLE DESROCHES X.DESROCHES INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface_sdaster, - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements",)}, fr="Définir un chemin de type segment de droite dans un maillage 3D",reentrant='n', MAILLAGE =SIMP(statut='o',typ=maillage_sdaster), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -17497,7 +19177,7 @@ INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface_sdaster, PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17524,8 +19204,9 @@ def lire_champ_prod(TYPE_CHAM=None,**args): raise AsException("type de concept resultat non prevu") LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod, + UIinfo={"groupes":("Lecture","Résultats et champs",)}, fr="Lire un champ dans un fichier au format MED et le stocker dans un concept.", - reentrant='n',UIinfo={"groupe":("Résultats et champs",)}, + reentrant='n', MAILLAGE =SIMP(statut='o',typ=maillage_sdaster,), FORMAT =SIMP(statut='f',typ='TXM',defaut="MED",into=("MED",),), UNITE =SIMP(statut='f',typ='I',defaut= 81,), @@ -17566,10 +19247,10 @@ LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 22/03/2011 AUTEUR COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -17598,9 +19279,9 @@ LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",op=lire_fonction_ops,sd_prod=lire_foncti fr="Lit les valeurs réelles dans un fichier de données représentant une fonction et" +" crée un concept de type fonction ou nappe", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Lecture","Fonctions",)}, FORMAT =SIMP(statut='f',typ='TXM',into=("LIBRE",),defaut="LIBRE" ), - TYPE =SIMP(statut='f',typ='TXM',into=("FONCTION","FONCTION_C","NAPPE"),defaut="FONCTION" ), + TYPE =SIMP(statut='f',typ='TXM',into=("Fonctions","FONCTION_C","NAPPE"),defaut="FONCTION" ), SEPAR =SIMP(statut='f',typ='TXM',into=("None",",",";","/"),defaut="None" ), INDIC_PARA =SIMP(statut='f',typ='I',min=2,max=2,defaut=[1,1]), b_fonction =BLOC(condition = "TYPE=='FONCTION' ", @@ -17616,7 +19297,8 @@ LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",op=lire_fonction_ops,sd_prod=lire_foncti b_nappe =BLOC(condition = "TYPE=='NAPPE' ", NOM_PARA_FONC =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ), INDIC_ABSCISSE =SIMP(statut='o',typ='I',min=2,max=2,), - INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ), + INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"), + fr="Type d'interpolation pour les abscisses et les ordonnées de la fonction"), PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), DEFI_FONCTION =FACT(statut='f',max='**', @@ -17624,14 +19306,16 @@ LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",op=lire_fonction_ops,sd_prod=lire_foncti UNITE =SIMP(statut='o',typ='I' ), NOM_PARA =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ), NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), - INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"), + fr="Type d'interpolation pour les abscisses et les ordonnées de la " \ + "fonction ou bien pour le paramètre de la nappe."), PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), VERIF =SIMP(statut='f',typ='TXM',defaut="CROISSANT",into=("CROISSANT","NON") ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG @@ -17651,18 +19335,21 @@ LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",op=lire_fonction_ops,sd_prod=lire_foncti # ====================================================================== # RESPONSABLE DEVESA G.DEVESA LIRE_FORC_MISS=OPER(nom="LIRE_FORC_MISS",op= 179,sd_prod=vect_asse_gene, - fr="Création d un vecteur assemblé à partir de base modale", + fr="Création d'un vecteur assemblé à partir d'une base modale", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs","Outils-métier",)}, BASE =SIMP(statut='o',typ=mode_meca), NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), FREQ_EXTR =SIMP(statut='o',typ='R',max=1), - NOM_CMP =SIMP(statut='o',typ='TXM',into=("DX","DY","DZ") ), + NOM_CMP =SIMP(statut='f',typ='TXM',into=("DX","DY","DZ") ), NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE"),defaut="DEPL"), - UNITE_RESU_FORC =SIMP(statut='f',typ='I',defaut=30), + NUME_CHAR =SIMP(statut='f',typ='I' ), + ISSF =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ), + UNITE_RESU_FORC =SIMP(statut='f',typ='I',defaut=30), + NOM_RESU_FORC =SIMP(statut='f',typ='TXM' ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG @@ -17684,15 +19371,17 @@ LIRE_FORC_MISS=OPER(nom="LIRE_FORC_MISS",op= 179,sd_prod=vect_asse_gene, LIRE_IMPE_MISS=OPER(nom="LIRE_IMPE_MISS",op= 164,sd_prod=matr_asse_gene_c, fr="Création d une matrice assemblée à partir de base modale", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs","Outils-métier",)}, BASE =SIMP(statut='o',typ=mode_meca ), NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), FREQ_EXTR =SIMP(statut='o',typ='R',max=1), UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30), + ISSF =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ), TYPE =SIMP(statut='f',typ='TXM',defaut="ASCII",into=("BINAIRE","ASCII") ), + SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17717,7 +19406,7 @@ from Macro.lire_inte_spec_ops import lire_inte_spec_ops LIRE_INTE_SPEC=MACRO(nom="LIRE_INTE_SPEC",op=lire_inte_spec_ops,sd_prod=table_fonction, fr="Lecture sur un fichier externe de fonctions complexes pour créer une matrice interspectrale", reentrant='n', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Lecture","Fonctions",)}, UNITE =SIMP(statut='o',typ='I' ), FORMAT_C =SIMP(statut='f',typ='TXM',defaut="MODULE_PHASE",into=("REEL_IMAG","MODULE_PHASE") ), FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","IDEAS") ), @@ -17731,7 +19420,7 @@ LIRE_INTE_SPEC=MACRO(nom="LIRE_INTE_SPEC",op=lire_inte_spec_ops,sd_prod=table_fo TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 07/12/2009 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17754,7 +19443,7 @@ LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op= 1,sd_prod=maillage_sdaster, fr="Crée un maillage par lecture d'un fichier au format Aster ou Med", ang="Readings of a mesh file", reentrant='n', - UIinfo={"groupes":("Maillage",)}, + UIinfo={"groupes":("Lecture","Maillage",)}, # UNITE =SIMP(statut='f',typ='I',defaut= 20 ), # @@ -17794,7 +19483,7 @@ LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op= 1,sd_prod=maillage_sdaster, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), # ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17821,14 +19510,14 @@ def lire_miss_3d_prod(TYPE_RESU,**args): LIRE_MISS_3D=OPER(nom="LIRE_MISS_3D",op= 163,sd_prod=lire_miss_3d_prod, fr="Restituer sur base physique une réponse harmonique ou transitoire issue de MISS3D", reentrant='n', - UIinfo={"groupes":("Maillage",)}, + UIinfo={"groupes":("Lecture","Outils-métier",)}, MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), UNITE =SIMP(statut='f',typ='I',defaut= 27 ), NOM =SIMP(statut='f',typ='TXM' ), TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="TRANS",into=("TRANS","HARMO") ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -17851,7 +19540,7 @@ LIRE_MISS_3D=OPER(nom="LIRE_MISS_3D",op= 163,sd_prod=lire_miss_3d_prod, LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char, fr="Lire le fichier de résultats au format IDEAS produit par le logiciel EUROPLEXUS", reentrant='n', - UIinfo={"groupes":("Maillage",)}, + UIinfo={"groupes":("Lecture","Outils-métier",)}, regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),), UNITE =SIMP(statut='f',typ='I',defaut= 19 ), FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",into=("IDEAS",)), @@ -17871,10 +19560,10 @@ LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char, PRECISION =SIMP(statut='o',typ='R',),),), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 15/03/2010 AUTEUR SELLENET N.SELLENET +#& MODIF COMMANDE DATE 08/03/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -17906,37 +19595,116 @@ def lire_resu_prod(TYPE_RESU,**args): # pour éviter d'écrire 3 fois cette liste : def l_nom_cham_pas_elga(): return ( - "ACCE", "ACCE_ABSOLU", "CRIT_ELNO_RUPT", "DCHA_ELNO_SIGM", - "DCHA_NOEU_SIGM", "DEDE_ELNO_DLDE", "DEDE_NOEU_DLDE", "DEGE_ELNO_DEPL", "DEGE_NOEU_DEPL", - "DEPL", "DEPL_ABSOLU", "DESI_ELNO_DLSI", "DESI_NOEU_DLSI", "DETE_ELNO_DLTE", "DETE_NOEU_DLTE", - "DURT_ELNO_META", "DURT_NOEU_META", "ECIN_ELEM_DEPL", "EFGE_ELNO_CART", "EFGE_ELNO_DEPL", - "EFGE_NOEU_CART", "EFGE_NOEU_DEPL", "ENDO_ELNO_SIGA", "ENDO_ELNO_SINO", "ENDO_NOEU_SINO", - "ENEL_ELNO_ELGA", "ENEL_NOEU_ELGA", "EPEQ_ELNO_TUYO", "EPGR_ELNO", "EPME_ELNO_DEPL", - "EPMG_ELNO_DEPL", "EPMG_NOEU_DEPL", "EPOT_ELEM_DEPL", "EPSA_ELNO", "EPSA_NOEU", - "EPSG_ELNO_DEPL", "EPSG_NOEU_DEPL", "EPSI_ELNO_DEPL", "EPSI_ELNO_TUYO", "EPSI_NOEU_DEPL", - "EPSP_ELNO", "EPSP_NOEU", "EQUI_ELNO_EPME", "EQUI_ELNO_EPSI", - "EQUI_ELNO_SIGM", "EQUI_NOEU_EPME", "EQUI_NOEU_EPSI", "EQUI_NOEU_SIGM", "ERRE_ELEM_NOZ1", - "ERRE_ELEM_NOZ2", "ERRE_ELNO_ELGA", "ERRE_NOEU_ELGA", "ERTH_ELEM_TEMP", "ERTH_ELNO_ELEM", - "ETOT_ELEM", "ETOT_ELNO_ELGA", "FLUX_ELNO_TEMP", "FLUX_NOEU_TEMP", "FORC_NODA", "FSUR_2D", - "FSUR_3D", "FVOL_2D", "FVOL_3D", "GRAD_NOEU_THETA", "HYDR_ELNO_ELGA", "HYDR_NOEU_ELGA", - "INTE_ELNO_ACTI", "INTE_ELNO_REAC", "INTE_NOEU_ACTI", "INTE_NOEU_REAC", "IRRA", - "META_ELNO_TEMP", "META_NOEU_TEMP", "PMPB_ELNO_SIEF", "PMPB_NOEU_SIEF", - "PRES", "PRES_DBEL_DEPL", "PRES_ELNO_DBEL", "PRES_ELNO_IMAG", "PRES_ELNO_REEL", - "PRES_NOEU_DBEL", "PRES_NOEU_IMAG", "PRES_NOEU_REEL", - "RADI_ELNO_SIGM", "RADI_NOEU_SIGM", "REAC_NODA", - "SIEF_ELNO", "SIEF_ELNO_ELGA", "SIEF_NOEU", "SIEF_NOEU_ELGA", "SIEQ_ELNO_TUYO", - "SIGM_ELNO_CART", "SIGM_ELNO_COQU", "SIGM_ELNO_DEPL", "SIGM_ELNO_SIEF", - "SIGM_ELNO_TUYO", "SIGM_NOEU_CART", "SIGM_NOEU_COQU", - "SIGM_NOEU_DEPL", "SIGM_NOEU_SIEF", "SIGM_NOZ1_ELGA", - "SIGM_NOZ2_ELGA", "SIPO_ELNO_DEPL", "SIPO_ELNO_SIEF", "SIPO_NOEU_DEPL", - "SIPO_NOEU_SIEF", "SIRE_ELNO_DEPL", "SIRE_NOEU_DEPL", "TEMP", "THETA", - "VALE_CONT", "VALE_NCOU_MAXI", "VARI_ELNO", "VARI_ELNO_COQU", - "VARI_ELNO_ELGA", "VARI_ELNO_TUYO", "VARI_NOEU", "VARI_NOEU_ELGA", - "VITE", "VITE_ABSOLU", "VITE_VENT", + "ACCE", + "ACCE_ABSOLU", + "CRIT_ELNO", + "DERA_ELNO", + "DERA_NOEU", + "DEDE_ELNO", + "DEDE_NOEU", + "DEGE_ELNO", + "DEGE_NOEU", + "DEPL", + "DEPL_ABSOLU", + "DESI_ELNO", + "DESI_NOEU", + "DETE_ELNO", + "DETE_NOEU", + "DURT_ELNO", + "DURT_NOEU", + "ECIN_ELEM", + "EFCA_ELNO", + "EFGE_ELNO", + "EFCA_NOEU", + "EFGE_NOEU", + "ENDO_ELNO", + "ENDO_NOEU", + "ENEL_ELNO", + "ENEL_NOEU", + "EPTQ_ELNO", + "EPGR_ELNO", + "EPME_ELNO", + "EPMG_ELNO", + "EPMG_NOEU", + "EPOT_ELEM", + "EPSA_ELNO", + "EPSA_NOEU", + "EPSG_ELNO", + "EPSG_NOEU", + "EPSI_ELNO", + "EPTU_ELNO", + "EPSI_NOEU", + "EPSP_ELNO", + "EPSP_NOEU", + "EPMQ_ELNO", + "EPEQ_ELNO", + "SIEQ_ELNO", + "EPMQ_NOEU", + "EPEQ_NOEU", + "SIEQ_NOEU", + "ERRE_ELEM_NOZ1", + "ERRE_ELEM_NOZ2", + "ERRE_ELNO_ELGA", + "ERRE_NOEU_ELGA", + "ERTH_ELEM_TEMP", + "ERTH_ELNO_ELEM", + "ETOT_ELEM", + "ETOT_ELNO", + "FLUX_ELNO", + "FLUX_NOEU", + "FORC_NODA", + "FSUR_2D", + "FSUR_3D", + "FVOL_2D", + "FVOL_3D", + "GRAD_NOEU_THETA", + "HYDR_ELNO", + "HYDR_NOEU", + "INTE_ELNO", + "INTE_NOEU", + "IRRA", + "META_ELNO", + "META_NOEU", + "PMPB_ELNO", + "PMPB_NOEU", + "PRES", + "PRME_ELNO", + "PRAC_ELNO", + "PRAC_NOEU", + "REAC_NODA", + "SIEF_ELNO", + "SIEF_ELNO", + "SIEF_NOEU", + "SIEF_NOEU", + "SITQ_ELNO", + "SICA_ELNO", + "SICO_ELNO", + "SIGM_ELNO", + "SITU_ELNO", + "SICA_NOEU", + "SICO_NOEU", + "SIGM_NOEU", + "SIZ1_ELGA", + "SIZ2_ELGA", + "SIPO_ELNO", + "SIPO_NOEU", + "TEMP", + "THETA", + "VALE_CONT", + "SPMX_ELGA", + "VARI_ELNO", + "VACO_ELNO", + "VARI_ELNO", + "VATU_ELNO", + "VARI_NOEU", + "VARI_NOEU", + "VITE", + "VITE_ABSOLU", + "VITE_VENT", ) LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', - UIinfo={"groupes":("Résultats et champs",)}, + UIinfo={"groupes":("Lecture","Résultats et champs",)}, fr="Lire dans un fichier, soit format IDEAS, soit au format ENSIGHT soit au format MED," +" des champs et les stocker dans une SD résultat", @@ -17959,7 +19727,7 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', NB_VARI =SIMP(statut='f',typ='I' ), CHAM_MATER =SIMP(statut='f',typ=cham_mater,), - + CARA_ELEM =SIMP(statut='f',typ=cara_elem,), b_evol_elas = BLOC(condition="TYPE_RESU=='EVOL_ELAS'", @@ -18001,7 +19769,7 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', ), b_dataset_58_b = BLOC(condition="(FORMAT=='IDEAS_DS58') and ((TYPE_RESU=='DYNA_TRANS') or\ (TYPE_RESU=='DYNA_HARMO') or (TYPE_RESU=='HARM_GENE'))", - NOM_CHAM=SIMP(statut='o',typ='TXM',into=("DEPL","VITE","ACCE","EPSI_NOEU_DEPL","SIEF_NOEU",) ), + NOM_CHAM=SIMP(statut='o',typ='TXM',into=("DEPL","VITE","ACCE","EPSI_NOEU","SIEF_NOEU",),max='**' ), REDEFI_ORIENT=FACT(statut='f',max='**', regles=(PRESENT_PRESENT('CODE_DIR','DIRECTION','NOEUD',),), CODE_DIR =SIMP(statut='f',typ='I',into=(1,2,3,) ), @@ -18032,11 +19800,6 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', POSI_FREQ =SIMP(statut='f',typ='I',min=2,max=2), NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),), ), - - b_mode =BLOC(condition="((TYPE_RESU=='MODE_MECA')or(TYPE_RESU=='MODE_MECA_C') )and (FORMAT=='IDEAS')", - NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster),max=1, - fr="Utile en dynamique pour pouvoir imposer la numérotation des cham_no."), - ), # 1-3 ensight : # ------------- @@ -18064,8 +19827,11 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', # 2) blocs selon le type du résultat : #--------------------------------- b_mode_meca =BLOC(condition="(TYPE_RESU=='MODE_MECA')or(TYPE_RESU=='MODE_MECA_C')", - MATR_A =SIMP(statut='f',typ=matr_asse_depl_r,), - MATR_B =SIMP(statut='f',typ=matr_asse_depl_r,), + # Ces mots cles sont stockes dans l'objet .REFD des mode_meca + # Ces mots cles sont aussi utilises pour imposer la numerotation des cham_no de DEPL_R + MATR_A =SIMP(statut='f',typ=matr_asse_depl_r,max=1), + MATR_B =SIMP(statut='f',typ=matr_asse_depl_r,max=1), + NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster),max=1,), ), @@ -18090,7 +19856,7 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', ), ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -18114,7 +19880,7 @@ from Macro.lire_table_ops import lire_table_ops LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=table_sdaster, fr="Lecture d'un fichier contenant une table", - UIinfo={"groupes":("Table",)}, + UIinfo={"groupes":("Lecture","Tables",)}, UNITE =SIMP(statut='o',typ='I' ), FORMAT =SIMP(statut='f',typ='TXM',into=("ASTER",),defaut="ASTER"), NUME_TABLE =SIMP(statut='f',typ='I',defaut=1), @@ -18123,7 +19889,7 @@ LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=table_sdaster, TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG @@ -18146,7 +19912,7 @@ LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=table_sdaster, MAC_MODES=OPER(nom="MAC_MODES",op= 141,sd_prod=table_sdaster, fr="Critere orthogonalite de modes propres", reentrant='n', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, regles=(PRESENT_PRESENT('IERI','MATR_ASSE'),), BASE_1 =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_flamb) ), BASE_2 =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_flamb) ), @@ -18155,30 +19921,31 @@ MAC_MODES=OPER(nom="MAC_MODES",op= 141,sd_prod=table_sdaster, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 15/03/2010 AUTEUR GNICOLAS G.NICOLAS +#& MODIF COMMANDE DATE 11/05/2011 AUTEUR SELLENET N.SELLENET +# -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE GNICOLAS G.NICOLAS from Macro.macr_adap_mail_ops import macr_adap_mail_ops -def macr_adap_mail_prod(self,MAJ_CHAM,ADAPTATION,**args): +def macr_adap_mail_prod(self, MAJ_CHAM, ADAPTATION, **args): # # 0. Typage des structures produites # @@ -18201,7 +19968,7 @@ def macr_adap_mail_prod(self,MAJ_CHAM,ADAPTATION,**args): MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_adap_mail_prod, fr="Adapter un maillage avec le logiciel HOMARD.", ang="Mesh adaptation with the HOMARD software.", - docu="U7.03.01-b",UIinfo={"groupe":("Maillage",)}, + docu="U7.03.01",UIinfo={"groupes":("Maillage",)}, # # 1. Le niveau d'information # @@ -18209,14 +19976,14 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada # # 2. Version de HOMARD # - VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V9_6", - into=("V9_6", "V9_N", "V9_N_PERSO"), + VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V10_1", + into=("V10_1", "V10_N", "V10_N_PERSO"), fr="Version de HOMARD", ang="HOMARD release"), # # 3. Langue des messages produits par HOMARD # - LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS", + LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS", into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",), fr="Langue des messages produits par HOMARD.", ang="Language for the HOMARD messages." ), @@ -18231,20 +19998,20 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada ang="Mesh before adaptation" ), # MAILLAGE_NP1 = SIMP(statut='o',typ=CO, - fr="Maillage apres adaptation", + fr="Maillage après adaptation", ang="Mesh after adaptation" ), # # 4.2. Eventuellement, on peut produire un maillage annexe # Actuellement, c'est le maillage n+1, mais de degré différent. # MAILLAGE_NP1_ANNEXE = SIMP(statut='f',typ=CO, - fr="Maillage annexe apres adaptation", + fr="Maillage annexe après adaptation", ang="Additional mesh after adaptation" ), # # 5. Le pilotage de l'adaptation, avec les variantes suivantes : -# . Raffinement et deraffinement, selon un champ d'indicateurs d'erreur -# . Raffinement seul, selon un champ d'indicateurs d'erreur -# . Deraffinement seul, selon un champ d'indicateurs d'erreur +# . Raffinement et deraffinement, selon un champ +# . Raffinement seul, selon un champ +# . Deraffinement seul, selon un champ # . Raffinement seul, selon des zones geometriques # . Raffinement uniforme : toutes les mailles sont divisées # . Deraffinement uniforme : toutes les mailles sont regroupées @@ -18255,44 +20022,44 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada into=("RAFF_DERA","RAFFINEMENT","DERAFFINEMENT","RAFFINEMENT_ZONE", \ "RAFFINEMENT_UNIFORME","DERAFFINEMENT_UNIFORME", \ "MODIFICATION","RIEN"), - fr="Pilotage de l'adaptation : selon un indicateur d'erreur ou uniforme.", - ang="Adaptation control : either among an error indicator or uniform" ), + fr="Pilotage de l'adaptation : selon un champ ou uniforme.", + ang="Adaptation control : either among an field or uniform" ), # -# 6. Pour de l'adaptation libre, il faut un indicateur d'erreur +# 6. Pour de l'adaptation libre, il faut un champ ou une zone # - b_indicateur_d_erreur = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \ - (ADAPTATION == 'RAFFINEMENT') or \ - (ADAPTATION == 'DERAFFINEMENT') " , - fr="Pour une adaptation libre, choix de l'indicateur d'erreur ou d'une zone à raffiner", - ang="For a free adaptation, selection of the error indicator or of a zone", + b_champ = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \ + (ADAPTATION == 'RAFFINEMENT') or \ + (ADAPTATION == 'DERAFFINEMENT') " , + fr="Pour une adaptation libre, choix du champ ou d'une zone à raffiner", + ang="For a free adaptation, selection of the field or of a zone", # regles=(UN_PARMI('CHAM_GD','RESULTAT_N')), # -# 6.1. Repérage de la zone à raffiner à l'aide d'un indicateur +# 6.1. Reperage de la zone a raffiner a l'aide d'un champ # # 6.1.1. Sous forme de champ de grandeur # CHAM_GD = SIMP(statut='f',typ=cham_gd_sdaster, - fr="Champ de grandeur Code_Aster contenant l'indicateur d'erreur", - ang="Code_Aster champ de grandeur with error indicator" ), + fr="Champ de grandeur Code_Aster pilotant l'adaptation", + ang="Code_Aster 'champ de grandeur' governing the adapatation" ), # # 6.1.2. Sous forme de concept resultat_sdaster # RESULTAT_N = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) , - fr="Concept resultat Code_Aster contenant l'indicateur d'erreur", - ang="The Code_Aster result with error indicator" ), + fr="Concept résultat Code_Aster contenant le champ", + ang="The Code_Aster result with the field" ), # - b_champ_indicateur = BLOC(condition="(RESULTAT_N != None)", - INDICATEUR = SIMP(statut='o',typ='TXM', - fr="Champ de l'indicateur d'erreur dans le résultat", - ang="The error indicator field in the result structure" ), + b_champ_adaptation = BLOC(condition="(RESULTAT_N != None)", + NOM_CHAM = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO(), + fr="Champ dans le résultat", + ang="The field in the result structure" ), ), # -# 6.1.3. Est-ce un champ dérivé +# 6.1.3. Est-ce un champ derive # b_sensibilite = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ", fr="Est-ce un champ dérivé", - ang="Is the indicator a derivative field", + ang="Is the field a derivative field", # SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom), fr="Paramètre de sensibilité.", @@ -18303,27 +20070,27 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada # 6.1.4. La ou les composantes retenues # b_composante = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ", - fr="Choix de la composante ou des composantes pour l'indicateur", - ang="Selection of the component(s) for the error indicator", + fr="Choix de la composante ou des composantes pour le champ", + ang="Selection of the component(s) for the field", # - NOM_CMP_INDICA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', - fr="Liste des composante(s) retenue(s) pour l'indicateur d'erreur.", - ang="List of the selected component(s) for the error indicator." ), + NOM_CMP = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Liste des composante(s) retenue(s) pour le champ.", + ang="List of the selected component(s) for the field." ), # ), # -# 6.1.5. Le paramètre temporel pour l'indicateur +# 6.1.5. Le paramètre temporel pour le champ # b_parametre_temporel = BLOC(condition="(RESULTAT_N != None)", - fr="Choix éventuel du paramètre temporel pour l'indicateur", - ang="Time selection for the error indicator (option)", + fr="Choix éventuel du paramètre temporel pour le champ", + ang="Time selection for the field (option)", # regles=(EXCLUS('NUME_ORDRE','INST'),), # # 6.1.5.1. Soit le numero d'ordre # NUME_ORDRE = SIMP(statut='f',typ='I', - fr="Numero d ordre", + fr="Numéro d ordre", ang="Rank" ), # # 6.1.5.2. Soit l'instant @@ -18353,34 +20120,34 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada # ), # -# 6.1.6. Type de valeur de l'indicateur : absolue (norme L2), norme infinie, ou relative +# 6.1.6. Usage des composantes : maximum, maximum de la valeur absolue, ou de la norme L2, ou de la norme infinie # - b_valeur_indicateur = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ", - fr="Type de valeur pour l'indicateur", - ang="Type of the value type for the error indicator", + b_usage_cmp = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ", + fr="Type d'usage de(s) composante(s)", + ang="Type of the use for the component(s)", # - TYPE_VALEUR_INDICA = SIMP(statut='f',typ='TXM',defaut="V_ABSOLUE", - into=("V_ABSOLUE", "NORME_L2", "NORME_INFINIE", "V_RELATIVE"), - fr="Valeur absolue, norme des composantes ou valeur relative pour l'indicateur", - ang="Absolute value, norm or relative value for the error indicator" ), + USAGE_CMP = SIMP(statut='f',typ='TXM',defaut="NORME_L2", + into=("ABSOLU", "NORME_L2", "NORME_INFINIE", "RELATIF"), + fr="Valeur absolue de la composante, ou norme du champ, ou valeur relative de la composante", + ang="Absolute value of the component, or norm of the field, or relative value of the component" ), # ), # -# 6.1.7. Type d'opération sur l'indicateur : la valeur par maille ou le max du saut entre mailles +# 6.1.7. Usage du champ : la valeur par maille ou le max du saut entre mailles # - b_usage_indicateur = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ", - fr="Usage de l'indicateur : direct ou saut", - ang="Use type for the error indicator : direct or jump", + b_usage_champ = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ", + fr="Usage du champ : par maille ou saut entre mailles voisines", + ang="Use type for the field : direct or jump", # - TYPE_OPER_INDICA = SIMP(statut='f',typ='TXM',defaut="MAILLE",into=("MAILLE","SAUT"), - fr="Usage de l'indicateur : la valeur par maille ou le saut entre mailles voisines", - ang="Use of the indicator : value over every mesh or jump between neighbour" ), + USAGE_CHAMP = SIMP(statut='f',typ='TXM',defaut="MAILLE",into=("MAILLE","SAUT"), + fr="Usage du champ : la valeur par maille ou le saut entre mailles voisines", + ang="Use of the field : value over every mesh or jump between the neighbours" ), # ), # ) , # -# 7. Les criteres pour de l'adaptation libre avec un indicateur d'erreur : +# 7. Les criteres pour de l'adaptation libre avec un champ : # absolu, relatif, en proportion d'entite # 7.1. Pour le raffinement : # @@ -18428,7 +20195,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada fr="Pour une adaptation selon une zone à raffiner", ang="For adaptation among a zone", # - ZONE = FACT(statut='f',max='**', + ZONE = FACT(statut='o',min=1,max='**', fr="Définition de zones à raffiner.", ang="Refined zone definition.", # @@ -18503,10 +20270,10 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada ##gn fr="X et Y du centre d'un disque plein ou perce, d'une sphere.", ##gn ang="X and Y of the centre of a disk or of a sphere.", X_CENTRE = SIMP(statut='f',typ='R', - fr="Abscisse du centre du disque ou de la sphere", + fr="Abscisse du centre du disque ou de la sphère", ang="X for the center of the disk or of the sphere"), Y_CENTRE = SIMP(statut='f',typ='R', - fr="Ordonnee du centre du disque ou de la sphere", + fr="Ordonnée du centre du disque ou de la sphère", ang="Y for the center of the disk or of the sphere"), ##gn ) , # @@ -18516,7 +20283,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada ##gn fr="Cote du centre de la sphere.", ##gn ang="Z for the center of the sphere.", Z_CENTRE = SIMP(statut='f',typ='R', - fr="Cote du centre de la sphere", + fr="Cote du centre de la sphère", ang="Z for the center of the sphere"), ##gn ) , # @@ -18526,10 +20293,10 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada ##gn fr="Le rayon d'un disque perce ou d'un tuyau.", ##gn ang="The radius of a holed disk or of a pipe.", RAYON_INT = SIMP(statut='f',typ='R', - fr="Rayon interieur", + fr="Rayon intérieur", ang="Internal radius"), RAYON_EXT = SIMP(statut='f',typ='R', - fr="Rayon exterieur", + fr="Rayon extérieur", ang="External radius"), ##gn ) , # @@ -18542,7 +20309,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada fr="Abscisse du vecteur directeur de l'axe", ang="X for the axial vector"), Y_AXE = SIMP(statut='f',typ='R', - fr="Ordonnee du vecteur directeur de l'axe", + fr="Ordonnée du vecteur directeur de l'axe", ang="Y for the axial vector"), Z_AXE = SIMP(statut='f',typ='R', fr="Cote du vecteur directeur de l'axe", @@ -18551,7 +20318,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada fr="Abscisse d'un point de la base, sur l'axe", ang="X for the basis, on the axis"), Y_BASE = SIMP(statut='f',typ='R', - fr="Ordonnee d'un point de la base, sur l'axe", + fr="Ordonnée d'un point de la base, sur l'axe", ang="Y for the basis, on the axis"), Z_BASE = SIMP(statut='f',typ='R', fr="Cote d'un point de la base, sur l'axe", @@ -18572,11 +20339,17 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada (ADAPTATION == 'RAFFINEMENT') or \ (ADAPTATION == 'RAFFINEMENT_UNIFORME') or \ (ADAPTATION == 'RAFFINEMENT_ZONE') " , - fr="Niveau maximum de profondeur de raffinement", - ang="Maximum level for the refinement", + fr="Profondeur maximale de raffinement", + ang="Maximum depth for the refinement", +# NIVE_MAX = SIMP(statut='f',typ='I', fr="Niveau maximum de profondeur de raffinement", ang="Maximum level for the refinement"), +# + DIAM_MIN = SIMP(statut='f',typ='R', + fr="Diamètre minimal de maille", + ang="Minimal diameter for the mesh" ), +# ) , # # 9.2. Pour le deraffinement : @@ -18611,46 +20384,46 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada ang="List of the groups of nodes for filtering of the adaptation." ), ) , # -# 11. Suivi d'une frontiere +# 11. Suivi d'une frontière # -# 11.1. Definition d'une frontiere par un maillage (valable seulement pour des frontieres 1D) +# 11.1. Definition d'une frontière par un maillage (valable seulement pour des frontières 1D) # MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster, - fr="Maillage de la frontiere à suivre", - ang="Boundary mesh" ), + fr="Maillage de la frontière discrète à suivre", + ang="Discrete boundary mesh" ), # - b_frontiere = BLOC( condition = " MAILLAGE_FRONTIERE != None " , - fr="Information complémentaire sur la frontière", - ang="Further information about boundary", + b_FRONTIERE = BLOC( condition = " MAILLAGE_FRONTIERE != None " , + fr="Information complémentaire sur la frontière discrète", + ang="Further information about discrete boundary", # GROUP_MA_FRONT = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', - fr="Liste des groupes de mailles définissant la frontière", - ang="Mesh groups which define the boundary" ), + fr="Liste des groupes de mailles définissant la frontière discrète", + ang="Mesh groups which define the discrete boundary" ), # ) , # -# 11.2. Definition analytique d'une frontiere +# 11.2. Definition analytique d'une frontière # FRONTIERE_ANALYTIQUE = FACT(statut='f',max='**', - fr="Definition analytique de frontieres a suivre.", + fr="Definition analytique de frontières a suivre.", ang="Analytical definition of a boundary.", # -# 11.2.1. Type de la frontiere +# 11.2.1. Nom de la frontière # - TYPE = SIMP(statut='o',typ='TXM',into=("SPHERE", "CYLINDRE"), - fr="Type de la frontiere", - ang="Type of the boundary" ), + NOM = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, + fr="Nom de la frontière analytique", + ang="Name of the analytic boundary" ), # -# 11.2.2. Groupe lie a la frontiere +# 11.2.2. Type de la frontière # - GROUP_MA = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**', - fr="Liste des groupes de mailles definissant la frontiere", - ang="Groups of meshes which define the boundary" ), + TYPE = SIMP(statut='o',typ='TXM',into=("SPHERE", "CYLINDRE"), + fr="Type de la frontière analytique", + ang="Type of the analytic boundary" ), # # 11.2.3. Pour une sphere ou un cylindre : rayon et centre # b_fr_rayon = BLOC( condition = " (TYPE == 'SPHERE') or (TYPE == 'CYLINDRE') " , - fr="Le rayon et le centre d'une sphere ou d'un cylindre.", + fr="Le rayon et le centre d'une sphère ou d'un cylindre.", ang="The radius and the centre of a sphere or of a cylinder.", RAYON = SIMP(statut='o',typ='R', fr="Rayon", @@ -18659,7 +20432,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada fr="Abscisse du centre", ang="X for the center"), Y_CENTRE = SIMP(statut='o',typ='R', - fr="Ordonnee du centre", + fr="Ordonneée du centre", ang="Y for the center"), Z_CENTRE = SIMP(statut='o',typ='R', fr="Cote du centre", @@ -18675,16 +20448,22 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada fr="Abscisse du vecteur directeur de l'axe", ang="X for the axial vector"), Y_AXE = SIMP(statut='o',typ='R', - fr="Ordonnee du vecteur directeur de l'axe", + fr="Ordonnée du vecteur directeur de l'axe", ang="Y for the axial vector"), Z_AXE = SIMP(statut='o',typ='R', fr="Cote du vecteur directeur de l'axe", ang="Z for the axial vector"), ) , +# +# 11.2.5. Groupe(s) lie(s) a la frontière +# + GROUP_MA = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**', + fr="Liste des groupes de mailles placées sur la frontière", + ang="Groups of meshes which are located on the boundary" ), # ) , # -# 12. Mise à jour de champs sur le nouveau maillage +# 12. mise à jour de champs sur le nouveau maillage # MAJ_CHAM = FACT(statut='f',max='**', fr="Mise à jour de champs sur le nouveau maillage.", @@ -18698,7 +20477,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada # # 12.2. Le type du champ qui contiendra le resultat de la mise a jour # - TYPE_CHAM = SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO(), + TYPE_CHAM = SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO( ('NOEU', 'ELNO', 'ELEM') ), fr="Type du champ qui contiendra le champ mis à jour", ang="Type of the field for the updated field" ), # @@ -18715,24 +20494,24 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada # 12.3.2. Sous forme de champ dans un resultat # RESULTAT = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther), - fr="Resultat contenant le champ à mettre à jour", + fr="Résultat contenant le champ à mettre à jour", ang="Result with the field to be updated" ), # b_nom_du_champ = BLOC(condition="(RESULTAT != None)", fr="Choix éventuel du nom du champ à interpoler", ang="Selection for the name of the field (option)", # - NOM_CHAM = SIMP(statut='o',typ='TXM', + NOM_CHAM = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO(), fr="Nom du champ à mettre à jour", ang="Name of the field to be updated" ), # ), # -# 12.4. Est-ce un champ dérivé +# 12.4. Les composantes # - SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom), - fr="Paramètre de sensibilité.", - ang="Sensitivity parameter"), + NOM_CMP = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Liste des composante(s) retenue(s) pour le champ.", + ang="List of the selected component(s) for the field." ), # # 12.5. Le paramètre temporel pour le champ a interpoler # @@ -18745,7 +20524,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada # 12.5.1. Soit le numero d'ordre # NUME_ORDRE = SIMP(statut='f',typ='I', - fr="Numero d ordre du champ à mettre à jour", + fr="Numéro d ordre du champ à mettre à jour", ang="Rank of the field to be updated" ), # # 12.5.2. Soit l'instant @@ -18776,6 +20555,19 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada ), # ), +# +# 12.6. Type d'interpolation +# + TYPE_MAJ = SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("AUTO", "ISOP2"), + fr="Type de mise à jour : automatique ou iso-P2", + ang="Type of the updating" ), +# +# 12.7. Est-ce un champ dérivé +# + SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom), + fr="Paramètre de sensibilité.", + ang="Sensitivity parameter"), ), # # 13. Les Modifications @@ -18789,7 +20581,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada # 13.1. Changement de degre # DEGRE = SIMP(statut='o',typ='TXM',defaut="NON",into=("OUI","NON"), - fr="Changement de degre du maillage", + fr="Changement de degré du maillage", ang="Modification of the degree of the mesh" ), # # 13.2. Création des joints @@ -18807,7 +20599,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada fr="Nombre de noeuds et de mailles du maillage", ang="Number of nodes and meshes in the mesh" ), # -# 14.2. Determination de la qualité des éléments du maillage +# 14.2. Determination de la qualité des mailles du maillage # QUALITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), fr="Qualité du maillage", @@ -18839,13 +20631,13 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada # # 15. Unite logique d'un fichier a ajouter a HOMARD.Configuration # - b_unite = BLOC( condition = " (VERSION_HOMARD == 'V9_N') or \ - (VERSION_HOMARD == 'V9_N_PERSO') " , - fr="Fichier supplementaire.", + b_unite = BLOC( condition = " (VERSION_HOMARD == 'V10_N') or \ + (VERSION_HOMARD == 'V10_N_PERSO') " , + fr="Fichier supplémentaire.", ang="Additional file.", # UNITE = SIMP(statut='f',typ='I', - fr="Unite logique a ajouter a HOMARD.Configuration", + fr="Unite logique du fichier à ajouter à HOMARD.Configuration", ang="Additional file to HOMARD.Configuration" ), # ) , @@ -18859,10 +20651,10 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada ang="Incompatible meshes for HOMARD" ), # ) ; -#& MODIF COMMANDE DATE 07/07/2009 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 04/05/2011 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -18890,8 +20682,7 @@ def macr_ascouf_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS,RESU_THER,* MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=macr_ascouf_calc_prod, fr="Réalise l'analyse thermomécanique du coude dont le maillage a été concu par MACR_ASCOUF_MAIL", reentrant='n', - UIinfo={"groupes":("Outils métier",)}, - regles=(UN_PARMI('COMP_INCR','COMP_ELAS'),), + UIinfo={"groupes":("Résolution","Outils-métier",)}, TYPE_MAILLAGE =SIMP(statut='o',typ='TXM', into=("SAIN", @@ -18915,7 +20706,7 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma AFFE_MATERIAU =FACT(statut='o',max=3, regles=(UN_PARMI('TOUT','GROUP_MA'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ='TXM',into=("COUDE","BOL") ), + GROUP_MA =SIMP(statut='f',typ=grma,into=("COUDE","BOL") ), MATER =SIMP(statut='o',typ=mater_sdaster ), TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), @@ -18943,24 +20734,8 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), ), - COMP_INCR =FACT(statut='f', - RELATION =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ), - RESI_INTE_RELA =SIMP(statut='f',typ='R' - ,defaut= 1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), - ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), - RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE", - into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")), - ), - COMP_ELAS =FACT(statut='f', - RELATION =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ), - RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), - ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), - RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE", - into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")), - ), + COMP_ELAS =C_COMP_ELAS('MACR_ASCOUF_CALC'), SOLVEUR =C_SOLVEUR(), @@ -19016,7 +20791,7 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -19038,7 +20813,7 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma from Macro.macr_ascouf_mail_ops import macr_ascouf_mail_ops MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",op=macr_ascouf_mail_ops,sd_prod=maillage_sdaster, fr="Engendre le maillage d'un coude sain ou comportant une fissure ou une (ou plusieurs) sous-épaisseur(s)", - UIinfo={"groupes":("Outils métier",)},reentrant='n', + UIinfo={"groupes":("Maillage","Outils-métier",)},reentrant='n', regles=(EXCLUS('SOUS_EPAIS_COUDE','FISS_COUDE','SOUS_EPAIS_MULTI'),), @@ -19164,10 +20939,10 @@ MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",op=macr_ascouf_mail_ops,sd_prod=ma INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 07/07/2009 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 04/05/2011 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -19196,8 +20971,7 @@ def macr_aspic_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS_1,FOND_FISS_ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_aspic_calc_prod, fr="Réalise un calcul prédéfini de piquages sains ou fissurés ainsi que les post-traitements associés ", - UIinfo={"groupes":("Outils métier",)},reentrant='n', - regles=(UN_PARMI('COMP_INCR','COMP_ELAS'),), + UIinfo={"groupes":("Résolution","Outils-métier",)},reentrant='n', TYPE_MAILLAGE =SIMP(statut='o',typ='TXM', into=("SAIN_FIN","SAIN_GROS","FISS_COUR_DEB","FISS_COUR_NONDEB","FISS_LONG_DEB", @@ -19217,7 +20991,7 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_ AFFE_MATERIAU =FACT(statut='o',max=3, regles=(UN_PARMI('TOUT','GROUP_MA'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), - GROUP_MA =SIMP(statut='f',typ='TXM',into=("TUBU","CORP","SOUD","SOUDCORP","SOUDTUBU") ), + GROUP_MA =SIMP(statut='f',typ=grma,into=("TUBU","CORP","SOUD","SOUDCORP","SOUDTUBU") ), MATER =SIMP(statut='o',typ=mater_sdaster), TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ), RCCM =SIMP(statut='o',typ='TXM',into=("OUI","NON")), @@ -19264,23 +21038,7 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), ), - COMP_INCR =FACT(statut='f', - RELATION =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ), - RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut=10), - ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut=0), - RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE", - into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")), - ), - - COMP_ELAS =FACT(statut='f', - RELATION =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ), - RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), - ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), - RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE", - into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")), - ), + COMP_ELAS =C_COMP_ELAS('MACR_ASPIC_CALC'), THETA_3D =FACT(statut='f',max='**', R_INF =SIMP(statut='o',typ='R'), @@ -19321,8 +21079,7 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_ b_extrac =BLOC(condition="((FORMAT=='IDEAS')or(FORMAT=='CASTEM'))", fr="extraction d un champ de grandeur", regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST'),), - NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3, - into=("DEPL","EQUI_ELNO_SIGM","TEMP")), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","SIEQ_ELNO","TEMP")), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), @@ -19334,7 +21091,7 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_ TITRE =SIMP(statut='f',typ='TXM'), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -19358,7 +21115,7 @@ from Macro.macr_aspic_mail_ops import macr_aspic_mail_ops MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",op= macr_aspic_mail_ops,sd_prod=maillage_sdaster,reentrant='n', fr="Engendre le maillage d'un piquage sain ou avec fissure (longue ou courte)", - UIinfo={"groupes":("Outils métier",)}, + UIinfo={"groupes":("Maillage","Outils-métier",)}, EXEC_MAILLAGE =FACT(statut='o', LOGICIEL =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000")), @@ -19431,7 +21188,7 @@ MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",op= macr_aspic_mail_ops,sd_prod=mail INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 30/06/2008 AUTEUR FLEJOU J-L.FLEJOU +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG @@ -19508,10 +21265,10 @@ MACR_CARA_POUTRE=MACRO(nom="MACR_CARA_POUTRE",op=macr_cara_poutre_ops,sd_prod=ta fr="type de conditions aux limites sur le plancher supérieur" ), ), ) -#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -19537,14 +21294,14 @@ def macr_ecla_pg_prod(self,RESULTAT,MAILLAGE,RESU_INIT,**args): MACR_ECLA_PG=MACRO(nom="MACR_ECLA_PG",op=macr_ecla_pg_ops,sd_prod=macr_ecla_pg_prod, reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, fr="Permettre la visualisation des champs aux points de Gauss d'une SD_RESULTAT sans lissage ni interpolation", # SD résultat ,modèle et champs à "éclater" : RESU_INIT =SIMP(statut='o',typ=resultat_sdaster,fr="RESULTAT à éclater",), MODELE_INIT =SIMP(statut='o',typ=modele_sdaster,fr="MODELE à éclater"), - NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO('ELGA'),), # paramètres numériques de la commande : SHRINK =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ), @@ -19572,10 +21329,10 @@ MACR_ECLA_PG=MACRO(nom="MACR_ECLA_PG",op=macr_ecla_pg_ops,sd_prod=macr_ecla_pg_p b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", PRECISION =SIMP(statut='o',typ='R',),), ) -#& MODIF COMMANDE DATE 21/04/2010 AUTEUR BOTTONI M.BOTTONI +#& MODIF COMMANDE DATE 28/02/2011 AUTEUR BOTTONI M.BOTTONI # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -19601,9 +21358,9 @@ def macr_ecre_calc_prod(self,TABLE,DEBIT,**args): return None MACR_ECRE_CALC=MACRO(nom="MACR_ECRE_CALC",op=macr_ecre_calc_ops,sd_prod=macr_ecre_calc_prod,reentrant='n', - UIinfo={"groupes":("Outils metier",)},fr="Procedure de couplage avec Ecrevisse", + UIinfo={"groupes":("Résolution","Outils-métier",)},fr="Procedure de couplage avec Ecrevisse", - regles = (UN_PARMI('LOGICIEL','VERSION'),), + regles = (UN_PARMI('LOGICIEL','VERSION'),), # CONCEPTS SORTANT : 2 TABLES POUR LE POST-TRAITEMENT # ******************************************** @@ -19748,16 +21505,16 @@ MACR_ECRE_CALC=MACRO(nom="MACR_ECRE_CALC",op=macr_ecre_calc_ops,sd_prod=macr_ecr COURBES =SIMP(statut='f',typ='TXM',into=("INTERACTIF","POSTSCRIPT","AUCUNE"),defaut="AUCUNE", fr="Generation eventuelle des courbes" ), LOGICIEL =SIMP(statut='f',typ='TXM',validators=LongStr(1,255),), - VERSION =SIMP(statut='f',typ='TXM',defaut="3.1.2",into = ("3.1.1","3.1.2")), + VERSION =SIMP(statut='f',typ='TXM',into = ("3.1.1","3.1.2","3.2")), ENTETE =SIMP(statut='f',typ='TXM',max='**',defaut="Titre du calcul Ecrevisse" ), IMPRESSION =SIMP(statut='f',typ='TXM',defaut='NON',into=( 'OUI','NON') ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2010 AUTEUR BOTTONI M.BOTTONI +#& MODIF COMMANDE DATE 28/02/2011 AUTEUR BOTTONI M.BOTTONI # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -19787,9 +21544,9 @@ def macr_ecrevisse_prod(self,TABLE,TEMPER,DEBIT,**args): MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",op=macr_ecrevisse_ops,sd_prod=macr_ecrevisse_prod,reentrant='f', - UIinfo={"groupes":("Outils metier",)},fr="Procedure de couplage avec Ecrevisse", + UIinfo={"groupes":("Résolution","Outils-métier",)},fr="Procedure de couplage avec Ecrevisse", - reuse =SIMP(statut='f',typ='evol_noli'), + reuse = SIMP(statut='f',typ='evol_noli'), regles = (EXCLUS('TEMPER','ETAT_INIT'), UN_PARMI('LOGICIEL','VERSION'),), @@ -19976,7 +21733,7 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",op=macr_ecrevisse_ops,sd_prod=macr_ecr COURBES = SIMP(statut='f',typ='TXM',into=("INTERACTIF","POSTSCRIPT","AUCUNE"),defaut="AUCUNE", fr="Generation eventuelle des courbes" ), LOGICIEL = SIMP(statut='f',typ='TXM',validators=LongStr(1,255),), - VERSION = SIMP(statut='f',typ='TXM',defaut="3.1.2",into = ("3.1.1","3.1.2") ), + VERSION =SIMP(statut='f',typ='TXM',into = ("3.1.1","3.1.2","3.2")), ENTETE = SIMP(statut='f',typ='TXM',max='**',defaut="Titre du calcul Ecrevisse" ), IMPRESSION = SIMP(statut='f',typ='TXM',defaut='NON',into=( 'OUI','NON') ), INFO = SIMP(statut='f',typ='I',defaut="1",into=(1,2) ), @@ -20041,7 +21798,7 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",op=macr_ecrevisse_ops,sd_prod=macr_ecr PARM_THETA =SIMP(statut='f',typ='R',defaut= 0.57), ) -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -20064,7 +21821,7 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",op=macr_ecrevisse_ops,sd_prod=macr_ecr MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna, fr="Définition d'un macro élément pour analyse modale ou harmonique par sous structuration dynamique", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)}, regles=(EXCLUS('MATR_AMOR','AMOR_REDUIT' ), PRESENT_ABSENT('MATR_IMPE','MATR_RIGI','MATR_MASS'),), BASE_MODALE =SIMP(statut='o',typ=mode_meca ), @@ -20077,13 +21834,14 @@ MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna, b_matr_impe =BLOC(condition = "MATR_IMPE != None", FREQ_EXTR =SIMP(statut='o',typ='R' ), AMOR_SOL =SIMP(statut='f',typ='R',defaut=0.E+0 ), + MATR_IMPE_INIT =SIMP(statut='f',typ=matr_asse_gene_c ), ), CAS_CHARGE =FACT(statut='f',max='**', NOM_CAS =SIMP(statut='o',typ='TXM'), VECT_ASSE_GENE =SIMP(statut='o',typ=vect_asse_gene ), ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -20103,7 +21861,7 @@ MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna, # ====================================================================== # RESPONSABLE PELLET J.PELLET MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant='f', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, fr="Définition d'un macro-élément pour l'analyse statique par sous-structuration", regles=(AU_MOINS_UN('DEFINITION','RIGI_MECA','MASS_MECA','CAS_CHARGE'), ENSEMBLE('DEFINITION','EXTERIEUR'),), @@ -20139,7 +21897,7 @@ MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant= ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -20162,7 +21920,7 @@ MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant= from Macro.macr_fiab_impr_ops import macr_fiab_impr_ops MACR_FIAB_IMPR=MACRO(nom="MACR_FIAB_IMPR",op=macr_fiab_impr_ops, - docu="U7.04.41",UIinfo={"groupe":("Impression",)}, + docu="U7.04.41",UIinfo={"groupes":("Impression","Outils-métier",)}, fr="Imprimer les valeurs à transmettre au logiciel de fiabilité.", ang="Print values for the fiability software", # @@ -20209,7 +21967,7 @@ MACR_FIAB_IMPR=MACRO(nom="MACR_FIAB_IMPR",op=macr_fiab_impr_ops, ), # ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -20244,7 +22002,7 @@ def macr_fiabilite_prod ( self , **args ): #==== # MACR_FIABILITE = MACRO ( nom="MACR_FIABILITE",op=macr_fiabilite_ops, - docu="U7.03.31",UIinfo={"groupe":("Post traitements",)}, + docu="U7.03.31",UIinfo={"groupes":("Post-traitements","Outils-métier",)}, sd_prod=macr_fiabilite_prod, fr="Calcule les probabiltés de dépassement de seuil (mécanique de fiabilité).", ang="Fiability mechanics.", @@ -20588,30 +22346,31 @@ MACR_FIABILITE = MACRO ( nom="MACR_FIABILITE",op=macr_fiabilite_ops, ), # ); -#& MODIF COMMANDE DATE 15/03/2010 AUTEUR GNICOLAS G.NICOLAS +#& MODIF COMMANDE DATE 11/05/2011 AUTEUR SELLENET N.SELLENET +# -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. +# 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. # ====================================================================== # RESPONSABLE GNICOLAS G.NICOLAS from Macro.macr_adap_mail_ops import macr_adap_mail_ops MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops, - docu="U7.03.02-b",UIinfo={"groupe":("Maillage",)}, + docu="U7.03.02",UIinfo={"groupes":("Maillage",)}, fr="Donner des informations sur un maillage.", ang="To give information about a mesh.", # @@ -20621,14 +22380,14 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops, # # 2. Version de HOMARD # - VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V9_6", - into=("V9_6", "V9_N", "V9_N_PERSO"), + VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V10_1", + into=("V10_1", "V10_N", "V10_N_PERSO"), fr="Version de HOMARD", ang="HOMARD release"), # # 3. Langue des messages issus de HOMARD # - LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS", + LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS", into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",), fr="Langue des messages issus de HOMARD.", ang="Language for HOMARD messages." ), @@ -20655,7 +22414,7 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops, # ) , # -# 6. Les options ; par defaut, on controle tout +# 6. Les options ; par defaut, on controle tout, sauf l'interpénétration # 6.1. Nombre de noeuds et mailles # NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"), @@ -20680,10 +22439,10 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops, fr="Tailles des sous-domaines du maillage.", ang="Sizes of mesh sub-domains." ), # -# 6.5. Controle de la non-interpenetration des elements +# 6.5. Controle de la non-interpénétration des mailles # INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), - fr="Controle de la non interpénétration des éléments.", + fr="Controle de la non interpénétration des mailles.", ang="Overlapping checking." ), # # 6.6. Propriétés du maillage de calcul @@ -20692,10 +22451,10 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops, fr="Propriétés du maillage de calcul.", ang="Properties of the calculation mesh." ), # -# 7. Unite logique d'un fichier a ajouter a HOMARD.Configuration +# 7. Unite logique d'un fichier à ajouter a HOMARD.Configuration # - b_unite = BLOC( condition = " (VERSION_HOMARD == 'V9_N') or \ - (VERSION_HOMARD == 'V9_N_PERSO') " , + b_unite = BLOC( condition = " (VERSION_HOMARD == 'V10_N') or \ + (VERSION_HOMARD == 'V10_N_PERSO') " , fr="Fichier supplementaire.", ang="Additional file.", # @@ -20713,10 +22472,11 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops, fr="Acceptation de mailles incompatibles avec HOMARD", ang="Incompatible meshes for HOMARD" ), ) ; -#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE + +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -20737,7 +22497,7 @@ from Macro.macr_lign_coupe_ops import macr_lign_coupe_ops MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table_sdaster, reentrant='n', - UIinfo={"groupes":("Outils métier",)}, + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, fr="Extraction des valeurs d'un résultat dans une ou plusieurs tables sur des lignes de coupe définies" +" par deux points et un intervalle", regles=(UN_PARMI("RESULTAT","CHAM_GD"),), @@ -20760,13 +22520,19 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table # extraction des résultats b_meca =BLOC(condition = "AsType(RESULTAT) in (evol_elas,evol_noli)",fr="résultat mécanique", - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='SIGM_NOEU_DEPL' ), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='SIGM_NOEU',into=C_NOM_CHAM_INTO(),), ), b_ther =BLOC(condition = "AsType(RESULTAT) in (evol_ther,)",fr="résultat thermique", - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='TEMP' ), - ), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='TEMP',into=("TEMP", + "FLUX_ELGA","FLUX_ELNO","FLUX_NOEU", + "META_ELNO","META_NOEU", + "DURT_ELNO","DURT_NOEU", + "HYDR_ELNO","HYDR_NOEU", + "DETE_ELNO","DETE_NOEU", + "SOUR_ELGA","COMPORTHER", + "ERTH_ELEM","ERTH_ELNO","ERTH_NOEU",),),), b_cham =BLOC(condition = "CHAM_GD!=None", - NOM_CHAM =SIMP(statut='f',typ='TXM',),), + NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO(),),), UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=25), MODELE =SIMP(statut='f',typ=modele_sdaster ), @@ -20800,7 +22566,7 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table b_local =BLOC(condition = "REPERE=='LOCAL' ", - VECT_Y =SIMP(statut='o',typ='R',min=2,max=3),), + VECT_Y =SIMP(statut='f',typ='R',min=2,max=3),), b_utili =BLOC(condition = "REPERE=='UTILISATEUR'", ANGL_NAUT =SIMP(statut='o',typ='R',min=3,max=3),), @@ -20836,10 +22602,10 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table ) ; -#& MODIF COMMANDE DATE 22/04/2010 AUTEUR ASSIRE A.ASSIRE +#& MODIF COMMANDE DATE 28/03/2011 AUTEUR ASSIRE A.ASSIRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -20862,7 +22628,7 @@ def macr_recal_prod(self,**args ): return listr8_sdaster MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops, - UIinfo={"groupes":("Résultats et champs",)}, + UIinfo={"groupes":("Résolution","Résultats et champs",)}, sd_prod=macr_recal_prod, fr="Réalise le recalage des calculs Aster sur des résultats expérimentaux" +" ou sur d'autres résultats de calculs", @@ -20930,6 +22696,8 @@ MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops, LANCEMENT =SIMP(statut='f', typ='TXM', defaut='INCLUSION',into=("DISTRIBUTION","INCLUSION"),), b_eval_distrib =BLOC(condition = "LANCEMENT == 'DISTRIBUTION'", + UNITE_SUIVI =SIMP(statut='f', typ='I',val_min=10,val_max=99,defaut=29, + fr="Affichage de l'output et/ou error des jobs esclaves dans ce fichier"), MODE =SIMP(statut='f', typ='TXM', into=("INTERACTIF","BATCH"),), MEMOIRE =SIMP(statut='f', typ='I', fr="Memoire demandee pour les calculs esclaves (Mo)"), TEMPS =SIMP(statut='f', typ='I', fr="Temps demandee pour les calculs esclaves (secondes)"), @@ -20945,9 +22713,9 @@ MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops, APPARIEMENT_MANUEL =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON")), ), - INFO =SIMP(statut='f',typ='I',defaut=2,into=( 1, 2 ) ), + INFO =SIMP(statut='f',typ='I',defaut=1, into=( 1, 2 ) ), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG @@ -20970,8 +22738,9 @@ MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops, from Macro.macr_spectre_ops import macr_spectre_ops MACR_SPECTRE=MACRO(nom="MACR_SPECTRE",op=macr_spectre_ops,sd_prod=table_sdaster, - reentrant='n', UIinfo={"groupes":("Outils métier",)}, - fr="calcul de spectre, post-traitement de séisme", + reentrant='n', + UIinfo={"groupes":("Post-traitements","Outils-métier",)}, + fr="Calcul de spectre, post-traitement de séisme", MAILLAGE =SIMP(statut='o',typ=maillage_sdaster,), PLANCHER =FACT(statut='o',max='**', regles=(AU_MOINS_UN('NOEUD','GROUP_NO' ),), @@ -21018,10 +22787,10 @@ MACR_SPECTRE=MACRO(nom="MACR_SPECTRE",op=macr_spectre_ops,sd_prod=table_sdaster, DEPL_Z =SIMP(statut='o',typ=fonction_sdaster),),), ), ) -#& MODIF COMMANDE DATE 19/01/2010 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 02/02/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -21067,17 +22836,17 @@ MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ), CHAR_MECA =SIMP(statut='f',typ=(char_meca),validators=NoRepeat(),max='**'), OPTION =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', - into=("EFGE_ELNO_DEPL","EPOT_ELEM_DEPL","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL", - "SIGM_ELNO_CART","EFGE_ELNO_CART","DEGE_ELNO_DEPL","EPSI_ELNO_DEPL", - "EPSI_ELGA_DEPL","EPSG_ELNO_DEPL","EPSG_ELGA_DEPL","EPSP_ELNO","EPSP_ELGA", - "ECIN_ELEM_DEPL","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP","SOUR_ELGA_ELEC", - "PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG","INTE_ELNO_ACTI", - "INTE_ELNO_REAC","SIGM_NOZ1_ELGA","ERZ1_ELEM_SIGM","SIGM_NOZ2_ELGA", - "ERZ2_ELEM_SIGM","VNOR_ELEM_DEPL","ERRE_ELNO_ELEM","SIRE_ELNO_DEPL", - "ERRE_ELEM_SIGM","EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","EQUI_ELNO_EPSI", - "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM", - "EQUI_ELGA_EPSI","FORC_NODA","REAC_NODA","EPSI_NOEU_DEPL","SIGM_NOEU_DEPL", - "EFGE_NOEU_DEPL","EQUI_NOEU_SIGM","EQUI_NOEU_EPSI","FLUX_NOEU_TEMP") ), + into=("EFGE_ELNO","EPOT_ELEM","SIGM_ELNO","SIEF_ELGA", + "SICA_ELNO","EFCA_ELNO","DEGE_ELNO","EPSI_ELNO", + "EPSI_ELGA","EPSG_ELNO","EPSG_ELGA","EPSP_ELNO","EPSP_ELGA", + "ECIN_ELEM","FLUX_ELGA","FLUX_ELNO","SOUR_ELGA", + "PRAC_ELNO","INTE_ELNO", + "SIZ1_ELGA","ERZ1_ELEM","SIZ2_ELGA", + "ERZ2_ELEM","VNOR_ELEM_DEPL","ERME_ELNO", + "ERME_ELEM","SIEQ_ELNO","SIEQ_ELGA","EPEQ_ELNO", + "QIRE_ELEM","QIRE_ELNO","QIZ1_ELEM","QIZ2_ELEM", + "EPEQ_ELGA","FORC_NODA","REAC_NODA","EPSI_NOEU","SIGM_NOEU", + "EFGE_NOEU","SIEQ_NOEU","EPEQ_NOEU","FLUX_NOEU") ), NUME_COUCHE =SIMP(statut='f',typ='I',defaut=1), NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY")), SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'), @@ -21101,10 +22870,10 @@ MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 13/01/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -21140,7 +22909,7 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS", op=macro_expans_ops, sd_prod=macro_expans_prod, reentrant='n', - UIinfo={"groupes":("Outils métier",)}, + UIinfo={"groupes":("Outils-métier","Dynamique",)}, fr="Outil d'expansion de resultats exprimentaux sur une base definie sur un modele numerique", MODELE_CALCUL = FACT(statut='o', MODELE = SIMP(statut='o',typ=(modele_sdaster) ), @@ -21153,7 +22922,7 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS", MODELE = SIMP(statut='o',typ=(modele_sdaster) ), MESURE = SIMP(statut='o',typ=(dyna_trans,dyna_harmo,mode_meca,mode_meca_c,) ), NOM_CHAM = SIMP(statut='f',typ='TXM',defaut="DEPL", - into=("DEPL","VITE","ACCE","SIEF_NOEU","EPSI_NOEU_DEPL",) ), + into=("DEPL","VITE","ACCE","SIEF_NOEU","EPSI_NOEU",) ), NUME_MODE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0), NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0), @@ -21176,10 +22945,10 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS", ), ), ) -#& MODIF COMMANDE DATE 18/01/2010 AUTEUR TARDIEU N.TARDIEU +#& MODIF COMMANDE DATE 08/02/2011 AUTEUR TARDIEU N.TARDIEU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -21209,7 +22978,7 @@ def macro_matr_ajou_prod(self,MATR_AMOR_AJOU,MATR_MASS_AJOU,MATR_RIGI_AJOU,FORC_ return None MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro_matr_ajou_prod, - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Résolution","Matrices et vecteurs",)}, fr="Calculer de facon plus condensée qu'avec CALC_MATR_AJOU des matrices de masse, d'amortissement" +" ou de rigidité ajoutés", regles=(AU_MOINS_UN('MODE_MECA','DEPL_IMPO','MODELE_GENE'), @@ -21278,7 +23047,7 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), ), b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), @@ -21296,12 +23065,20 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), @@ -21310,10 +23087,10 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), ) -#& MODIF COMMANDE DATE 17/11/2008 AUTEUR DELMAS J.DELMAS +#& MODIF COMMANDE DATE 18/01/2011 AUTEUR BOITEAU O.BOITEAU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -21358,7 +23135,7 @@ def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args): return None MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops, - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, sd_prod=macro_matr_asse_prod, fr="Calcul des matrices assemblées (rigidité, masse, amortissement,...) ", MODELE =SIMP(statut='o',typ=modele_sdaster), @@ -21377,8 +23154,9 @@ MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops, RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), ), b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_gcpc =BLOC(condition="METHODE=='GCPC'",fr="Paramètres associés à la méthode gradient conjugué", RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), @@ -21422,7 +23200,7 @@ MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 16/02/2010 AUTEUR GREFFET N.GREFFET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -21446,7 +23224,7 @@ from Macro.macro_miss_3d_ops import macro_miss_3d_ops MACRO_MISS_3D=MACRO(nom="MACRO_MISS_3D",op=macro_miss_3d_ops, fr="Préparation des données puis exécution du logiciel MISS3D", - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Résolution","Outils-métier",)}, OPTION =FACT(statut='o', regles=(UN_PARMI('TOUT','MODULE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), @@ -21491,7 +23269,7 @@ MACRO_MISS_3D=MACRO(nom="MACRO_MISS_3D",op=macro_miss_3d_ops, DIRE_ONDE =SIMP(statut='f',typ='R',max='**'), ), ) ; -#& MODIF COMMANDE DATE 05/05/2008 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -21515,7 +23293,7 @@ from Macro.macro_mode_meca_ops import macro_mode_meca_ops MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",op=macro_mode_meca_ops,sd_prod=mode_meca, reentrant='n',fr="Lancer une succession de calculs de modes propres réels", - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, MATR_A =SIMP(statut='o',typ=matr_asse_depl_r ), MATR_B =SIMP(statut='o',typ=matr_asse_depl_r ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), @@ -21552,7 +23330,6 @@ MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",op=macro_mode_meca_ops,sd_prod=mode_ NB_BLOC_FREQ =SIMP(statut='f',typ='I' ), DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), - NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8 ), NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5 ), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2 ), SEUIL_FREQ =SIMP(statut='f',typ='R' ,defaut= 1.E-2 ), @@ -21582,7 +23359,7 @@ MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",op=macro_mode_meca_ops,sd_prod=mode_ into=("MASS_EFFE_UN","MASS_GENE",) ), ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -21615,7 +23392,7 @@ def macro_proj_base_prod(self,MATR_ASSE_GENE,VECT_ASSE_GENE,PROFIL,**args ): MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops, regles=(AU_MOINS_UN('MATR_ASSE_GENE','VECT_ASSE_GENE')), - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)}, sd_prod=macro_proj_base_prod, fr="Projection des matrices et/ou vecteurs assemblés sur une base (modale ou de RITZ)", BASE =SIMP(statut='o',typ=(mode_meca,mode_gene) ), @@ -21636,10 +23413,10 @@ MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops, ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 01/03/2011 AUTEUR LEFEBVRE J-P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -21655,17 +23432,21 @@ MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== # RESPONSABLE LEFEBVRE J.P.LEFEBVRE +# MAJ_CATA=PROC(nom="MAJ_CATA",op=20, - UIinfo={"groupes":("Gestion du travail",)}, - fr="Compilation des catalogues de commandes et d'éléments", + UIinfo={"groupes":("Gestion du travail",)}, + fr="Compilation des catalogues d'éléments et couverture des calculs élémentaires", + regles=(UN_PARMI('ELEMENT','TYPE_ELEM', ),), - ELEMENT =FACT(statut='f',), + ELEMENT =FACT(statut='f',), -) ; -#& MODIF COMMANDE DATE 18/01/2010 AUTEUR TARDIEU N.TARDIEU + UNITE =SIMP(statut='f',typ='I',defaut=8), + TYPE_ELEM =FACT(statut='f',), +); +#& MODIF COMMANDE DATE 08/02/2011 AUTEUR TARDIEU N.TARDIEU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -21683,7 +23464,7 @@ MAJ_CATA=PROC(nom="MAJ_CATA",op=20, # RESPONSABLE PELLET J.PELLET MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas, fr="Résoudre un problème de mécanique statique linéaire",reentrant='f', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Mécanique",)}, regles=(EXCLUS("INST","LIST_INST"), AU_MOINS_UN('CHAM_MATER','CARA_ELEM',), CONCEPT_SENSIBLE('ENSEMBLE'),), @@ -21703,7 +23484,7 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas, INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ), LIST_INST =SIMP(statut='f',typ=listr8_sdaster), INST_FIN =SIMP(statut='f',typ='R'), - OPTION =SIMP(statut='f',typ='TXM',into=("SIEF_ELGA_DEPL","SANS"),defaut="SIEF_ELGA_DEPL",max=1, + OPTION =SIMP(statut='f',typ='TXM',into=("SIEF_ELGA","SANS"),defaut="SIEF_ELGA",max=1, fr="seule option : contraintes aux points de Gauss. Utiliser CALC_ELEM pour les autres.", ), SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', @@ -21711,7 +23492,7 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas, ang="List of sensitivity parameters"), SOLVEUR =FACT(statut='d', - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","FETI","MUMPS","PETSC") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","FETI","MUMPS","PETSC")), b_feti =BLOC(condition = "METHODE == 'FETI' ",fr="Paramètres de la méthode FETI 1", PARTITION =SIMP(statut='o',typ=sd_feti_sdaster), @@ -21747,13 +23528,13 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas, ), b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué", - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","LDLT_SP",),defaut="LDLT_INC" ), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","LDLT_SP","SANS",),defaut="LDLT_INC" ), b_ldltinc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", fr="Paramètres de la factorisation incomplète", NIVE_REMPLISSAGE =SIMP(statut='f',typ='I',defaut= 0 ), RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), ), b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), @@ -21763,29 +23544,38 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas, TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), MATR_DISTRIBUEE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -21808,7 +23598,7 @@ MODE_ITER_CYCL=OPER(nom="MODE_ITER_CYCL",op= 80,sd_prod=mode_cycl, fr="Calcul des modes propres d'une structure à répétitivité cyclique à partir" +" d'une base de modes propres réels", reentrant='n', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, BASE_MODALE =SIMP(statut='o',typ=mode_meca ), NB_MODE =SIMP(statut='f',typ='I',defaut= 999 ), NB_SECTEUR =SIMP(statut='o',typ='I' ), @@ -21842,10 +23632,10 @@ MODE_ITER_CYCL=OPER(nom="MODE_ITER_CYCL",op= 80,sd_prod=mode_cycl, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 05/05/2009 AUTEUR BOITEAU O.BOITEAU +#& MODIF COMMANDE DATE 18/01/2011 AUTEUR BOITEAU O.BOITEAU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -21873,7 +23663,7 @@ def mode_iter_inv_prod(MATR_A,MATR_C,TYPE_RESU,**args ): MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op= 44,sd_prod=mode_iter_inv_prod ,fr="Calcul des modes propres par itérations inverses ; valeurs propres et modes réels ou complexes", reentrant='n', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, regles=(CONCEPT_SENSIBLE('ENSEMBLE'),), MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ), MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ), @@ -21893,12 +23683,36 @@ MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op= 44,sd_prod=mode_iter_inv_prod NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15,val_min=0 ), PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0 ), - NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ), NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0, ), SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0, ), + ), + SOLVEUR =FACT(statut='d', + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","MUMPS")), + b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + ), + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","SANS") ), + ), + b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ", + fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser", + NPREC =SIMP(statut='f',typ='I',defaut= 8,val_min=0), + ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + ), + ), - ), b_flamb =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'", CALC_FREQ =FACT(statut='o',fr="Choix des paramètres pour le calcul des valeurs propres", @@ -21911,12 +23725,36 @@ MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op= 44,sd_prod=mode_iter_inv_prod NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15 ), PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0, ), - NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ), NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0, ), SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0, ), + ), + SOLVEUR =FACT(statut='d', + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","MUMPS")), + b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + ), + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","SANS") ), + ), + b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ", + fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser", + NPREC =SIMP(statut='f',typ='I',defaut= 8,val_min=0), + ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + ), + ), - ), CALC_MODE =FACT(statut='d',min=0,fr="Choix des paramètres pour le calcul des vecteurs propres", OPTION =SIMP(statut='f',typ='TXM',defaut="DIRECT",into=("DIRECT","RAYLEIGH") ), PREC =SIMP(statut='f',typ='R',defaut= 1.E-5,val_min=0.E+0,fr="Précision de convergence" ), @@ -21939,10 +23777,10 @@ MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op= 44,sd_prod=mode_iter_inv_prod INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), ) ; -#& MODIF COMMANDE DATE 05/05/2009 AUTEUR BOITEAU O.BOITEAU +#& MODIF COMMANDE DATE 18/01/2011 AUTEUR BOITEAU O.BOITEAU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -21974,7 +23812,7 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_pr fr="Calcul des modes propres par itérations simultanées ; valeurs propres et" +" modes propres réels ou complexes", reentrant='n', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, regles=(CONCEPT_SENSIBLE('ENSEMBLE'),), MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c, matr_asse_gene_r,matr_asse_gene_c,matr_asse_pres_r ) ), @@ -22031,11 +23869,34 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_pr regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),), DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), - NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ), NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ), SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), - ), + ), + SOLVEUR =FACT(statut='d', + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","MUMPS")), + b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + ), + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","SANS") ), + ), + b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ", + fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser", + NPREC =SIMP(statut='f',typ='I',defaut= 8,val_min=0), + ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + ), ), b_dynam =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'", @@ -22062,12 +23923,36 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_pr regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),), DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), - NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ), NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ), SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + ), + SOLVEUR =FACT(statut='d', + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","MUMPS")), + b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + ), + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","SANS") ), + ), + b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ", + fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser", + NPREC =SIMP(statut='f',typ='I',defaut= 8,val_min=0), + ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + ), + ), + ), - ), VERI_MODE =FACT(statut='d',min=0, STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), @@ -22089,10 +23974,10 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_pr INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 13/10/2009 AUTEUR COURTOIS M.COURTOIS +#& MODIF COMMANDE DATE 08/02/2011 AUTEUR TARDIEU N.TARDIEU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -22110,12 +23995,21 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_pr # RESPONSABLE NISTOR I.NISTOR MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca, - fr="Calcul de deformees statiques pour un déplacement, une force ou une accélération unitaire imposé", + fr="Calcul de déformées statiques pour un déplacement, une force ou une accélération unitaire imposé", reentrant='n', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, + + regles=(UN_PARMI('MODE_STAT','FORCE_NODALE','PSEUDO_MODE','MODE_INTERF'), + PRESENT_PRESENT('MODE_INTERF','MATR_MASS'), + PRESENT_PRESENT('PSEUDO_MODE','MATR_MASS'), + ), + + MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r ), MATR_MASS =SIMP(statut='f',typ=matr_asse_depl_r ), - regles=(UN_PARMI('MODE_STAT','FORCE_NODALE','PSEUDO_MODE'),), + + + MODE_STAT =FACT(statut='f',max='**', regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'), UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),), @@ -22152,11 +24046,22 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca, SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), ), ), + MODE_INTERF =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'), + UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), ), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,max='**'), + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ), + AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'), + SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), + NBMOD =SIMP(statut='o',typ='I',defaut= 1), + FREQ =SIMP(statut='o',typ='R',defaut= 1.0), + ), SOLVEUR =FACT(statut='d', fr="Méthode de résolution des systèmes linéaires", - METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), - + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ), @@ -22175,30 +24080,44 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca, TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué", - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ), - NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6), + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","LDLT_SP",),defaut="LDLT_INC" ), + b_ldltinc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", fr="Paramètres de la factorisation incomplète", + NIVE_REMPLISSAGE =SIMP(statut='f',typ='I',defaut= 0 ), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), ), ), @@ -22208,7 +24127,7 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22230,7 +24149,7 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca, MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca, reentrant='f', fr="Définir la base modale d'une structure sous écoulement", - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, # la commande modi_base _modale : reentrant = f ou o regles=(EXCLUS('AMOR_UNIF','AMOR_REDUIT', ),), BASE =SIMP(statut='o',typ=mode_meca ), @@ -22242,7 +24161,46 @@ MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 14/10/2008 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 14/02/2011 AUTEUR GREFFET N.GREFFET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# RECUPERATION DES EFFORTS VIA YACS POUR COUPLAGE IFS +# +MODI_CHAR_YACS=OPER(nom = "MODI_CHAR_YACS", + op = 112, + sd_prod = char_meca, + reentrant = 'o', + UIinfo = {"groupes":("Résultats et champs",)}, + fr = "Reception des forces nodales via YACS lors du couplage de Code_Aster et Saturne", + CHAR_MECA = SIMP(statut ='o', typ = char_meca), + MATR_PROJECTION = SIMP(statut ='o', typ = corresp_2_mailla,), + NOM_CMP_IFS = SIMP(statut ='o', typ = 'TXM',validators = NoRepeat(), max = '**'), + VIS_A_VIS = FACT(statut ='o', max = '**', + GROUP_MA_1 = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO_2 = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**'),), + INST = SIMP(statut='o',typ='R', ), + PAS = SIMP(statut='o',typ='R', ), + NUME_ORDRE_YACS = SIMP(statut='o', typ='I',), + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +); +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22401,23 +24359,23 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 16/06/2009 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # 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. +# 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. # ====================================================================== # RESPONSABLE PELLET J.PELLET @@ -22428,8 +24386,8 @@ MODI_MODELE=OPER(nom="MODI_MODELE",op= 103,sd_prod=modele_sdaster,reentrant='o', MODELE =SIMP(statut='o',typ=modele_sdaster,min=1,max=1,), PARTITION =FACT(statut='d', - PARALLELISME =SIMP(statut='f',typ='TXM',defaut="MAIL_DISPERSE", - into=("MAIL_CONTIGU","MAIL_DISPERSE","SOUS_DOMAINE","CENTRALISE",)), + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="GROUP_ELEM", + into=("MAIL_CONTIGU","MAIL_DISPERSE","SOUS_DOMAINE","CENTRALISE","GROUP_ELEM")), b_dist_maille =BLOC(condition = "PARALLELISME in ('MAIL_DISPERSE','MAIL_CONTIGU')", CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,val_min=0), ), @@ -22439,7 +24397,7 @@ MODI_MODELE=OPER(nom="MODI_MODELE",op= 103,sd_prod=modele_sdaster,reentrant='o', ), ), ) ; -#& MODIF COMMANDE DATE 20/04/2009 AUTEUR GENIAUT S.GENIAUT +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -22460,16 +24418,17 @@ MODI_MODELE=OPER(nom="MODI_MODELE",op= 103,sd_prod=modele_sdaster,reentrant='o', # RESPONSABLE GENIAUT S.GENIAUT MODI_MODELE_XFEM=OPER(nom="MODI_MODELE_XFEM",op= 113,sd_prod=modele_sdaster,docu="U4.44.12-e",reentrant='f', - UIinfo={"groupes":("Modélisation",)}, + UIinfo={"groupes":("Modélisation","Rupture",)}, fr="Engendrer ou enrichir une structure de donnees en affectant les cham_gd associes", MODELE_IN =SIMP(statut='o',typ=modele_sdaster,min=1,max=1,), FISSURE =SIMP(statut='o',typ=fiss_xfem,min=1,max='**',), CRITERE =SIMP(statut='f',typ='R',defaut=1.1E-4), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,)), - CONTACT =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON"),min=1,max=1,), + CONTACT + =SIMP(statut='f',typ='TXM',defaut='SANS',into=("P1P1","P1P1A","P2P1","SANS"),min=1,max=1,), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22505,7 +24464,7 @@ MODI_OBSTACLE=OPER(nom="MODI_OBSTACLE",op=182,sd_prod=table_fonction, V_USUR_OBST =SIMP(statut='f',typ='R',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 02/03/2010 AUTEUR MACOCCO K.MACOCCO +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22528,7 +24487,7 @@ def modi_repere_prod(RESULTAT,**args): if AsType(RESULTAT) != None : return AsType(RESULTAT) MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,reentrant='n', - UIinfo={"groupes":("Résultats et champs",)}, + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, fr="Calcule des résultats dans le repère cylindrique", RESULTAT =SIMP(statut='o',typ=resultat_sdaster), @@ -22584,7 +24543,7 @@ MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,reentrant='n' TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22613,7 +24572,7 @@ def norm_mode_prod(MODE,**args ): NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod, fr="Normer des modes propres en fonction d'un critère choisi par l'utilisateur", reentrant='f', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Dynamique",)}, regles=(UN_PARMI('NORME','NOEUD','AVEC_CMP','SANS_CMP'), CONCEPT_SENSIBLE('SEPARE'), DERIVABLE('MODE'),), @@ -22647,10 +24606,10 @@ NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 08/08/2008 AUTEUR DESOZA T.DESOZA +#& MODIF COMMANDE DATE 18/01/2011 AUTEUR BOITEAU O.BOITEAU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -22667,7 +24626,7 @@ NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod, # ====================================================================== # RESPONSABLE PELLET J.PELLET NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, fr="Etablissement de la numérotation des ddl avec ou sans renumérotation et du stockage de la matrice", regles=(UN_PARMI('MATR_RIGI','MODELE'),), MATR_RIGI =SIMP(statut='f',validators=NoRepeat(),max=100, @@ -22684,14 +24643,14 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n', RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), ), b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ), b_gcpc =BLOC(condition="METHODE=='GCPC' or METHODE=='PETSC'",fr="paramètres associés à la GCPC ou PETSc", RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), ), INFO =SIMP(statut='f',typ='I',into=(1,2)), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22713,12 +24672,12 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n', NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene, fr="Etablissement de la numérotation des ddl d'un modèle établi en coordonnées généralisées", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=UN_PARMI('MODELE_GENE','BASE'), MODELE_GENE =SIMP(statut='f',typ=modele_gene ), b_modele_gene =BLOC(condition = "MODELE_GENE != None", STOCKAGE =SIMP(statut='f',typ='TXM',defaut="LIGN_CIEL",into=("LIGN_CIEL","PLEIN") ), - METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("INITIAL","CLASSIQUE") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("INITIAL","CLASSIQUE","ELIMINE") ), ), BASE =SIMP(statut='f',typ=(mode_meca,mode_gene ) ), b_base =BLOC(condition = "BASE != None", @@ -22726,10 +24685,10 @@ NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene, NB_VECT =SIMP(statut='f',typ='I',defaut= 9999 ), ), ) ; -#& MODIF COMMANDE DATE 14/12/2009 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -22762,14 +24721,14 @@ def observation_prod(self, RESULTAT, **args): return None OBSERVATION=MACRO(nom="OBSERVATION",op=observation_ops, - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, sd_prod=observation_prod, fr="Calcul de l'observabilite d'un champ aux noeuds ", # MODELE_1 =SIMP(statut='o',typ=modele_sdaster), MODELE_2 =SIMP(statut='o',typ=modele_sdaster), RESULTAT =SIMP(statut='o',typ=(mode_meca,evol_elas,dyna_harmo,dyna_trans,) ), - NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO(),), # ------------------------------------------------------------------ @@ -22800,7 +24759,8 @@ OBSERVATION=MACRO(nom="OBSERVATION",op=observation_ops, # fr="Si le résultat est un mode_xxx ou une base_xxx, on peut prolonger" # +" les champs par zéro la ou la projection ne donne pas de valeurs."), - NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster) ), + MATR_A =SIMP(statut='f',typ=(matr_asse_depl_r) ), + MATR_B =SIMP(statut='f',typ=(matr_asse_depl_r) ), VIS_A_VIS =FACT(statut='f',max='**', regles=(AU_MOINS_UN('TOUT_1','GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), AU_MOINS_UN('TOUT_2','GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),), @@ -22872,29 +24832,97 @@ OBSERVATION=MACRO(nom="OBSERVATION",op=observation_ops, MASQUE =SIMP(statut='f',typ='TXM',max=6), ), -# ------------------------------------------------------------------ -# FILTRE DES DDL -# ------------------------------------------------------------------ - FILTRE =FACT(statut='f',max='**', - regles=(UN_PARMI('DDL_ACTIF'), -# 'MASQUE'), - AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), - GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), -# - DDL_ACTIF =SIMP(statut='f',typ='TXM',max=6), -# TODO : mettre en place le systeme de masques -# MASQUE =SIMP(statut='f',typ='TXM',max=6), - ), -# ------------------------------------------------------------------ +# ------------------------------------------------------------------ +# FILTRE DES DDL +# ------------------------------------------------------------------ + FILTRE =FACT(statut='f',max='**', + regles=(UN_PARMI('DDL_ACTIF'), +# 'MASQUE'), + AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO(),), + +# + DDL_ACTIF =SIMP(statut='f',typ='TXM',max=6), +# TODO : mettre en place le systeme de masques +# MASQUE =SIMP(statut='f',typ='TXM',max=6), + ), +# ------------------------------------------------------------------ + + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + ) ; +#& MODIF COMMANDE DATE 23/02/2011 AUTEUR BARGELLI R.BARGELLINI +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BARGELLINI R.BARGELLINI + + +from Macro.post_bordet_ops import post_bordet_ops + + - TITRE =SIMP(statut='f',typ='TXM',max='**' ), - INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), - ) ; -#& MODIF COMMANDE DATE 27/07/2009 AUTEUR NISTOR I.NISTOR +POST_BORDET =MACRO(nom="POST_BORDET", op=post_bordet_ops,sd_prod=table_sdaster, + UIinfo={"groupes":("Outils-métier","Rupture",)}, + docu="",reentrant='n',fr="calcul de la probabilite de clivage via le modele de Bordet", + regles=(UN_PARMI('TOUT','GROUP_MA'), + UN_PARMI('INST','NUME_ORDRE'), + ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectué que sur ces mailles"), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + PRECISION =SIMP(statut='f',typ='R',validators=NoRepeat(),val_min=0.,val_max=1E-3,defaut=1E-6), + CRITERE =SIMP(statut='f',typ='TXM',defaut="ABSOLU",into=("RELATIF","ABSOLU") ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + PROBA_NUCL =SIMP(statut='f',typ='TXM',into=("NON","OUI"), defaut="NON", + fr="prise en compte du facteur exponentiel"), + b_nucl =BLOC( condition = "PROBA_NUCL=='OUI'", + PARAM =FACT(statut='o', + M =SIMP(statut='o',typ='R',val_min=0.E+0), + SIGM_REFE =SIMP(statut='o',typ=(fonction_sdaster),val_min=0.E+0), + VOLU_REFE =SIMP(statut='o',typ='R',val_min=0.E+0), + SIG_CRIT =SIMP(statut='o',typ='R',val_min=0.E+0), + SEUIL_REFE =SIMP(statut='o',typ='R',val_min=0.E+0), + SEUIL_CALC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster)), + DEF_PLAS_REFE =SIMP(statut='o',typ='R'),),), + + b_prop =BLOC( condition = "PROBA_NUCL=='NON'", + PARAM =FACT(statut='o', + M =SIMP(statut='o',typ='R',val_min=0.E+0), + SIGM_REFE =SIMP(statut='o',typ=fonction_sdaster,val_min=0.E+0), + VOLU_REFE =SIMP(statut='o',typ='R',val_min=0.E+0), + SIG_CRIT =SIMP(statut='o',typ='R',val_min=0.E+0), + SEUIL_REFE =SIMP(statut='o',typ='R',val_min=0.E+0), + SEUIL_CALC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),), + ), + ), + + RESULTAT =SIMP(statut='o',typ=resultat_sdaster, + fr="Resultat d'une commande globale STAT_NON_LINE"), + TEMP =SIMP(statut='o',typ=(fonction_sdaster,'R')), + COEF_MULT =SIMP(statut='f',typ='R', defaut=1.), + ) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG @@ -22921,21 +24949,14 @@ def post_cham_xfem_prod(RESULTAT,**args ): raise AsException("type de concept resultat non prevu") POST_CHAM_XFEM=OPER(nom="POST_CHAM_XFEM",op= 196,sd_prod=post_cham_xfem_prod, - reentrant='n',UIinfo={"groupes":("Post traitements",)}, - fr="Calcul des champs DEPL et SIEF_ELGA sur le maillage fissuré", - MAILLAGE_SAIN = SIMP(statut='o',typ=maillage_sdaster), - MAILLAGE_FISS = SIMP(statut='o',typ=maillage_sdaster), - NOM_CHAM = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","SIEF_ELGA","VARI_ELGA"),), - MODELE = SIMP(statut='o',typ=modele_sdaster,), + reentrant='n',UIinfo={"groupes":("Post-traitements","Rupture",)}, + fr="Calcul des champs DEPL, SIEF_ELGA et VARI_ELGA sur le maillage de visualisation (fissuré)", + MAILLAGE_SAIN = SIMP(statut='f',typ=maillage_sdaster), RESULTAT = SIMP(statut='o',typ=resultat_sdaster), - b_elga = BLOC(condition = "NOM_CHAM in ('SIEF_ELGA','VARI_ELGA') or \ - (type(NOM_CHAM)==type(()) and 'SIEF_ELGA' in NOM_CHAM) or \ - (type(NOM_CHAM)==type(()) and 'VARI_ELGA' in NOM_CHAM)", - MODELE_VISU = SIMP(statut='o',typ=modele_sdaster,), - ), - INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), + MODELE_VISU = SIMP(statut='o',typ=modele_sdaster,), + INFO = SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), ); -#& MODIF COMMANDE DATE 08/02/2010 AUTEUR DESROCHES X.DESROCHES +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG @@ -22957,7 +24978,7 @@ POST_CHAM_XFEM=OPER(nom="POST_CHAM_XFEM",op= 196,sd_prod=post_cham_xfem_prod, from Macro.post_coque_ops import post_coque_ops POST_COQUE=MACRO(nom="POST_COQUE",op=post_coque_ops,sd_prod=table_sdaster, reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements",)}, fr="Calcul des efforts et déformations en un point et une cote quelconque de la coque", regles=(EXCLUS('INST','NUME_ORDRE'),), @@ -22966,14 +24987,46 @@ POST_COQUE=MACRO(nom="POST_COQUE",op=post_coque_ops,sd_prod=table_sdaster, reent RESULTAT =SIMP(statut='o',typ=resultat_sdaster,fr="RESULTAT à posttraiter",), CHAM =SIMP(statut='o',typ='TXM',into=("EFFORT","DEFORMATION",)), NUME_ORDRE =SIMP(statut='f',typ='I'), - INST =SIMP(statut='f',typ='R',defaut=0.E+0), + INST =SIMP(statut='f',typ='R'), # points de post-traitement : - COOR_POINT =FACT(statut='o',max='**',fr="coordonnées et position dans l épaisseur", + COOR_POINT =FACT(statut='o',max='**',fr="coordonnées et position dans l'épaisseur", COOR=SIMP(statut='o',typ='R',min=3,max=4),), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA + +from Macro.post_decollement_ops import post_decollement_ops + +POST_DECOLLEMENT=MACRO(nom="POST_DECOLLEMENT",op=post_decollement_ops,sd_prod=table_sdaster, + fr="calcul du rapport de surfaces de contact radier/sol", + reentrant='n', + UIinfo={"groupes":("Post-traitements",)}, + RESULTAT =SIMP(statut='o',typ=(evol_noli) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='DEPL',into=C_NOM_CHAM_INTO(),max=1), + NOM_CMP =SIMP(statut='f',typ='TXM',defaut='DZ',max=1), + GROUP_MA =SIMP(statut='o',typ=grma,max=1), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -22996,7 +25049,7 @@ from Macro.post_dyna_alea_ops import post_dyna_alea_ops POST_DYNA_ALEA=MACRO(nom="POST_DYNA_ALEA",op= post_dyna_alea_ops,sd_prod=table_sdaster, fr="Traitements statistiques de résultats de type interspectre et impression sur fichiers", reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Dynamique",)}, regles=(UN_PARMI('FRAGILITE','INTE_SPEC'),), FRAGILITE =FACT(statut='f',fr="donnees pour courbe de fragilite",max='**', TABL_RESU =SIMP(statut='o',typ=table_sdaster), @@ -23030,7 +25083,7 @@ POST_DYNA_ALEA=MACRO(nom="POST_DYNA_ALEA",op= post_dyna_alea_ops,sd_prod=table_s TITRE =SIMP(statut='f',typ='TXM',max='**' ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -23052,7 +25105,7 @@ POST_DYNA_ALEA=MACRO(nom="POST_DYNA_ALEA",op= post_dyna_alea_ops,sd_prod=table_s POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=table_sdaster, fr="Post-traiter les résultats en coordonnées généralisées produit par DYNA_TRAN_MODAL", reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Dynamique",)}, regles=(UN_PARMI('CHOC','RELA_EFFO_DEPL', ),), RESU_GENE =SIMP(statut='o',typ=tran_gene ), CHOC =FACT(statut='f',max='**', @@ -23073,10 +25126,10 @@ POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=table_sdaster, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 19/05/2009 AUTEUR MACOCCO K.MACOCCO +#& MODIF COMMANDE DATE 22/02/2011 AUTEUR TARDIEU N.TARDIEU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -23093,12 +25146,12 @@ POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=table_sdaster, # ====================================================================== # RESPONSABLE DESROCHES X.DESROCHES POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, fr="Calcul de quantités globales (masse, inerties, énergie, ...) sur tout ou partie du modèle", regles=(UN_PARMI('MASS_INER', 'ENER_POT', 'ENER_CIN','TRAV_EXT','MINMAX', 'WEIBULL', 'RICE_TRACEY', 'CARA_GEOM','CHAR_LIMITE', - 'CARA_POUTRE', 'INDIC_ENER', 'INDIC_SEUIL', + 'CARA_POUTRE', 'INDIC_ENER', 'INDIC_SEUIL','VOLUMOGRAMME', 'AIRE_INTERNE','ENER_ELAS','ENER_TOTALE','ENER_DISS','INTEGRALE'), ), @@ -23329,6 +25382,36 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', regles=(UN_PARMI('CHAM_GD','RESULTAT'), EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_ORDRE','LIST_INST'),), MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + RESULTAT = SIMP(statut='f',typ=(evol_noli,evol_ther,evol_elas,evol_char) ), + CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + VOLUMOGRAMME = FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA = SIMP(statut='f',typ=grma,max=1), + TYPE_MAILLE = SIMP(statut='f',typ='TXM',into=('2D','3D',)), + NOM_CHAM = SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + NOM_CMP = SIMP(statut='o',typ='TXM'), + NB_INTERV = SIMP(statut='f',typ='I',defaut=5), + ), + b_volumogramme = BLOC(condition = "( VOLUMOGRAMME != None )", + fr="calcul de la distribution du volume d'une structure vis-à-vis d'une composante", + regles=(UN_PARMI('CHAM_GD','RESULTAT'), + EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_ORDRE','LIST_INST'),), + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), RESULTAT = SIMP(statut='f',typ=(evol_noli,evol_ther,evol_elas,evol_char) ), CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), @@ -23592,7 +25675,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/04/2010 AUTEUR BOTTONI M.BOTTONI +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2010 EDF R&D WWW.CODE-ASTER.ORG @@ -23629,7 +25712,7 @@ POST_ENDO_FISS=MACRO(nom = "POST_ENDO_FISS", op = post_endo_fiss_ops, sd_prod = post_endo_fiss_prod, reentrant = 'n', - UIinfo = {"groupes":("Outils metier",)}, + UIinfo = {"groupes":("Post-traitements","Outils-métier",)}, fr = "Individuation du trace d'une fissure a partir d'un champ scalaire pertinant", TABLE = SIMP(statut = 'o', typ = CO,), @@ -23671,7 +25754,7 @@ POST_ENDO_FISS=MACRO(nom = "POST_ENDO_FISS", -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -23691,7 +25774,7 @@ POST_ENDO_FISS=MACRO(nom = "POST_ENDO_FISS", # ====================================================================== # RESPONSABLE ZENTNER I.ZENTNER POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=table_sdaster,reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, fr="Calculer le dommage de fatigue subi par une structure soumise à une sollicitation de type aléatoire", regles=(ENSEMBLE('MOMENT_SPEC_0','MOMENT_SPEC_2'), PRESENT_PRESENT( 'MOMENT_SPEC_4','MOMENT_SPEC_0'), @@ -23707,7 +25790,7 @@ POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=table_sdaster,reentrant= MATER =SIMP(statut='o',typ=mater_sdaster), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -23727,7 +25810,7 @@ POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=table_sdaster,reentrant= # ====================================================================== # RESPONSABLE ANGLES J.ANGLES POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, fr="Calculer en un point, le dommage de fatigue subi par une structure soumise à une histoire de chargement", CHARGEMENT = SIMP(statut='o',typ='TXM',into=("UNIAXIAL","PERIODIQUE","QUELCONQUE")), @@ -23786,10 +25869,10 @@ POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n', INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 08/12/2009 AUTEUR PROIX J-M.PROIX +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -23805,23 +25888,27 @@ POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n', # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== # RESPONSABLE WADIER Y.WADIER - + from Macro.post_gp_ops import post_gp_ops -def post_gp_prod(self, TABL_RESU, **kargs): + +def post_gp_prod(self, TABL_GPMAX,TABL_GP, **kargs): """Typage des sd_prod """ - if TABL_RESU != None: - self.type_sdprod(TABL_RESU, table_sdaster) + if TABL_GPMAX != None: + self.type_sdprod(TABL_GPMAX, table_sdaster) + if TABL_GP != None : + if TABL_GPMAX != None: + self.type_sdprod(TABL_GPMAX, table_sdaster) + self.type_sdprod(TABL_GP, table_sdaster) return table_sdaster + POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod, fr="Calcul du critère énergétique Gp suite à un calcul thermo-mécanique", reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, regles=(UN_PARMI('IDENTIFICATION', 'PREDICTION'), - UN_PARMI('THETA_2D','THETA_3D'), - UN_PARMI('PAS_ENTAILLE','LIST_EP_COPEAUX'), - PRESENT_PRESENT('THETA_2D','DIRECTION'),), + UN_PARMI('THETA_2D','THETA_3D'),), # Résultat, modèle, comportement, chargement RESULTAT = SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans,mode_meca),), @@ -23829,12 +25916,11 @@ POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod, MODELE = SIMP(statut='o',typ=modele_sdaster), MATER = SIMP(statut='o',typ=mater_sdaster), - COMP_ELAS = FACT(statut='o', - RELATION = SIMP(statut='f',typ='TXM',defaut="ELAS", - into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC"),), - DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",) ), - ), + COMP_ELAS = C_COMP_ELAS('POST_GP'), + LIST_INST = SIMP(statut='o',typ=listr8_sdaster), + + TYPE_DEF = SIMP(statut='f',typ='TXM', defaut="PETIT", into=("PETIT","GRAND")), EXCIT = FACT(statut='f', max='**', CHARGE = SIMP(statut='o', typ=(char_meca,char_cine_meca)), FONC_MULT = SIMP(statut='f', typ=(fonction_sdaster,nappe_sdaster,formule)), @@ -23842,15 +25928,22 @@ POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod, ), SYME_CHAR = SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS")), - DIRECTION = SIMP(statut='f', typ='R', max=3), - + b_direction =BLOC(condition = "(THETA_2D != None) ", + DIRECTION = SIMP(statut='o', typ='R', max=3),), + THETA_2D = FACT(statut='f', max='**', fr="paramètres de définition des champs theta", GROUP_NO = SIMP(statut='o', typ=grno, validators=NoRepeat(), max='**'), R_INF = SIMP(statut='o', typ='R'), - R_SUP = SIMP(statut='o', typ='R'), - ), + R_SUP = SIMP(statut='o', typ='R'),), + b_theta_2d=BLOC(condition="(THETA_2D != None)", + # correction axisymétrie + RAYON_AXIS = SIMP(statut='f', typ='R', val_min=0., defaut=1.), + TRANCHE = FACT(statut='o', max=1, + + GROUP_MA = SIMP(statut='o', typ=grma, validators=NoRepeat(), max='**'), + ),), THETA_3D =FACT(statut='f',max='**', GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), @@ -23867,27 +25960,19 @@ POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod, ), FOND_FISS =SIMP(statut='o',typ=fond_fiss,max=1,), - NB_TRANCHES =SIMP(statut='o',typ='I',max=1, - fr="nombre de tranches: nombre de segments maillant le fond de fissure",), - ), + TRANCHE = FACT(statut='o', max='**', + GROUP_MA = SIMP(statut='o', typ=grma, validators=NoRepeat(), max='**'), + ),), # prise en compte de la traction compression TRAC_COMP = SIMP(statut='f',typ='TXM',into=("OUI",), fr="prise en compte de la traction-compression (plus lent)", ), - # copeaux - GROUP_MA = SIMP(statut='o', typ=grma, validators=NoRepeat(), max='**'), - PAS_ENTAILLE = SIMP(statut='f', typ='R', val_min=0.), - LIST_EP_COPEAUX = SIMP(statut='f', typ='R', max='**'), - # critère sur Gp CRIT_MAXI_GP = SIMP(statut='f', typ='TXM', defaut="ABSOLU", into=("RELATIF","ABSOLU")), - - # correction axisymétrie - RAYON_AXIS = SIMP(statut='f', typ='R', val_min=0., defaut=1.), - + # identification IDENTIFICATION = FACT(statut='f', max=1, KJ_CRIT = SIMP(statut='o', typ='R', val_min=0., max='**'), @@ -23901,14 +25986,14 @@ POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod, ), # table résultat - TABL_RESU = SIMP(statut='o', typ=CO,), - + TABL_GPMAX = SIMP(statut='o', typ=CO,), + TABL_GP = SIMP(statut='f', typ=CO,), INFO = SIMP(statut='f', typ='I', defaut=1, into=(1, 2),), ) -#& MODIF COMMANDE DATE 20/10/2008 AUTEUR GALENNE E.GALENNE +#& MODIF COMMANDE DATE 14/03/2011 AUTEUR GENIAUT S.GENIAUT # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -23929,25 +26014,42 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast fr="Calcul des facteurs d'intensité de contraintes en 2D et en 3D par extrapolation des sauts de déplacements" +" sur les lèvres de la fissure", reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, regles=(UN_PARMI('RESULTAT','TABL_DEPL_SUP'), - EXCLUS('FISSURE','FOND_FISS'), - PRESENT_PRESENT('FISSURE','RESULTAT'), - PRESENT_PRESENT('FOND_FISS','VECT_K1'), - PRESENT_PRESENT('TABL_DEPL_SUP','VECT_K1'), + EXCLUS('FISSURE','FOND_FISS'), + PRESENT_PRESENT('FISSURE','RESULTAT'), + PRESENT_PRESENT('FOND_FISS','VECT_K1'), + PRESENT_PRESENT('TABL_DEPL_SUP','VECT_K1'), #PRESENT_PRESENT('RESULTAT','FOND_FISS'), ), MODELISATION =SIMP(statut='o',typ='TXM', - into=("3D","AXIS","D_PLAN","C_PLAN"), + into=("3D","AXIS","D_PLAN","C_PLAN"),position='global', fr="Modélisation cohérente avec celle utilisée pour le calcul des déplacements"), FOND_FISS =SIMP(statut='f',typ=fond_fiss), - FISSURE =SIMP(statut='f',typ=fiss_xfem), - b_fond_fiss =BLOC (condition="(FOND_FISS!= None)", + FISSURE =SIMP(statut='f',typ=fiss_xfem), + NB_NOEUD_COUPE=SIMP(statut='f',typ='I',defaut=5,val_min = 3), + SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","SANS")), + +# bloc correspondant a la donnee du fond de fissure pour les fissures maillees + b_fond_fiss_res =BLOC (condition="((FOND_FISS!= None)and(RESULTAT!= None))", + + b_ref_3d =BLOC (condition="MODELISATION=='3D'", + TYPE_MAILLAGE = SIMP(statut='f',typ='TXM',into=("LIBRE","REGLE"),defaut="REGLE"), + ), + + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + SANS_NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + EVOL_THER = SIMP(statut='f',typ=(evol_ther),fr="Température sur le fond de fissure") + ), + + b_fond_fiss_tab =BLOC (condition="((FOND_FISS!= None)and(TABL_DEPL_SUP!= None)and(RESULTAT== None))", + MAILLAGE = SIMP(statut='o',typ=maillage_sdaster), - TYPE_MAILLAGE = SIMP(statut='f',typ='TXM',into=("LIBRE","REGLE"),defaut="REGLE"), - NB_NOEUD_COUPE= SIMP(statut='f',typ='I'), NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), SANS_NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), @@ -23955,14 +26057,22 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), EVOL_THER = SIMP(statut='f',typ=(evol_ther),fr="Température sur le fond de fissure") ), - b_fissure =BLOC (condition="(FISSURE!= None)", - MAILLAGE = SIMP(statut='o',typ=maillage_sdaster), - NB_NOEUD_COUPE = SIMP(statut='f',typ='I' ,defaut=5 ), - NB_POINT_FOND = SIMP(statut='f',typ='I' ,), - NUME_FOND = SIMP(statut='f',typ='I',defaut=1), - DTAN_ORIG = SIMP(statut='f',typ='R',max='**'), - DTAN_EXTR = SIMP(statut='f',typ='R',max='**'), +# bloc correspondant a la donnee de la fissure pour les fissures X-FEM + b_fissure_res =BLOC (condition="((FISSURE!= None)and(RESULTAT!= None))", + NB_POINT_FOND = SIMP(statut='f',typ='I' ,), + NUME_FOND = SIMP(statut='f',typ='I',defaut=1), + DTAN_ORIG = SIMP(statut='f',typ='R',max='**'), + DTAN_EXTR = SIMP(statut='f',typ='R',max='**'), + ), + + b_fissure_tab =BLOC (condition="((FISSURE!= None)and(TABL_DEPL_SUP!= None)and(RESULTAT== None))", + MAILLAGE = SIMP(statut='o',typ=maillage_sdaster), + NB_POINT_FOND = SIMP(statut='f',typ='I' ,), + NUME_FOND = SIMP(statut='f',typ='I',defaut=1), + DTAN_ORIG = SIMP(statut='f',typ='R',max='**'), + DTAN_EXTR = SIMP(statut='f',typ='R',max='**'), ), + MATER =SIMP(statut='o',typ=mater_sdaster, fr="Matériau homogène et isotrope cohérent avec celui utilisé pour le calcul des déplacements"), RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli), @@ -23973,7 +26083,7 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast fr="Table issue de post_releve_t sur les noeuds de la lèvre inférieure"), ABSC_CURV_MAXI=SIMP(statut='o',typ='R', fr="Distance maximum à partir du fond de fissure à utiliser pour le calcul"), - PREC_VIS_A_VIS= SIMP(statut='f',typ='R',defaut=0.1), + PREC_VIS_A_VIS=SIMP(statut='f',typ='R',defaut=0.1), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), @@ -23986,13 +26096,12 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", PRECISION =SIMP(statut='o',typ='R',),), ), - SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","SANS") ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), VECT_K1 =SIMP(statut='f',typ='R',max=3,min=3, fr="Vecteur normal au plan de fissure, orienté de la lèvre inférieure vers la lèvre supérieure"), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 03/06/2008 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -24015,7 +26124,7 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=table_sdaster, fr="Calcul des facteurs d'intensité de contraintes par la méthode K_BETA", reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, MAILLAGE = SIMP(statut='o',typ=maillage_sdaster), MATER_REV = SIMP(statut='o',typ=mater_sdaster), EPAIS_REV = SIMP(statut='o',typ='R'), @@ -24034,7 +26143,7 @@ POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=table_sdaster, ), TITRE = SIMP(statut='f',typ='TXM',max='**'), ); -#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG @@ -24058,7 +26167,7 @@ from Macro.post_k_trans_ops import post_k_trans_ops POST_K_TRANS=MACRO(nom="POST_K_TRANS",op=post_k_trans_ops,sd_prod=table_sdaster, fr="Calcul des facteurs d intensite des contrainte par recombinaison modale",reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, RESU_TRANS =SIMP(statut='o',typ=tran_gene), K_MODAL =FACT(statut='o', TABL_K_MODA =SIMP(statut='f',typ=table_sdaster,), @@ -24100,7 +26209,7 @@ POST_K_TRANS=MACRO(nom="POST_K_TRANS",op=post_k_trans_ops,sd_prod=table_sdaster, TITRE =SIMP(statut='f',typ='TXM'), ) -#& MODIF COMMANDE DATE 12/05/2009 AUTEUR MAZET S.MAZET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG @@ -24120,10 +26229,10 @@ POST_K_TRANS=MACRO(nom="POST_K_TRANS",op=post_k_trans_ops,sd_prod=table_sdaster, # ====================================================================== # RESPONSABLE GENIAUT S.GENIAUT POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster, - reentrant='n',UIinfo={"groupes":("Maillage",)}, + reentrant='n',UIinfo={"groupes":("Maillage","Rupture",)}, fr="Crée un maillage se conformant à la fissure pour le post-traitement des éléments XFEM", MODELE = SIMP(statut='o',typ=modele_sdaster), - MAILLAGE_SAIN = SIMP(statut='o',typ=maillage_sdaster), + MAILLAGE_SAIN = SIMP(statut='f',typ=maillage_sdaster), PREF_NOEUD_X =SIMP(statut='f',typ='TXM',defaut="NX",validators=LongStr(1,2),), PREF_NOEUD_M =SIMP(statut='f',typ='TXM',defaut="NM",validators=LongStr(1,2),), PREF_NOEUD_P =SIMP(statut='f',typ='TXM',defaut="NP",validators=LongStr(1,2),), @@ -24133,10 +26242,10 @@ POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), ); -#& MODIF COMMANDE DATE 06/07/2009 AUTEUR GALENNE E.GALENNE +#& MODIF COMMANDE DATE 02/02/2011 AUTEUR PELLET J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -24154,7 +26263,7 @@ POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster, POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, fr="Vérification des critères de niveau 0 et certains critères de niveau A du RCC-M-B3200 (Edition 1991)", reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="VALE_MAX",into=("VALE_MAX","DETAILS") ), INFO =SIMP(statut='f',typ='I',into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), @@ -24335,7 +26444,7 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, b_extrac =BLOC(condition="RESULTAT != None", fr="extraction d un champ de grandeur", regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','NOEUD_CMP'),), - NOM_CHAM =SIMP(statut='o',typ='TXM',into=("EFGE_ELNO_DEPL","SIEF_ELNO_ELGA"),), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("EFGE_ELNO","SIEF_ELNO"),), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE =SIMP(statut='f',typ='I',), INST =SIMP(statut='f',typ='R',), @@ -24412,10 +26521,10 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, ), ), ) ; -#& MODIF COMMANDE DATE 12/05/2009 AUTEUR DESROCHES X.DESROCHES +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # ====================================================================== # CONFIGURATION MANAGEMENT OF EDF VERSION -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -24434,7 +26543,7 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f', fr="Extraire des valeurs de composantes de champs de grandeurs pour y effectuer des calculs (moyenne,invariants,..)" +" ou pour les exprimer dans d'autres repères", - docu="U4.81.21",UIinfo={"groupes":("Post traitements",)}, + docu="U4.81.21",UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, ACTION =FACT(statut='o',max='**', regles=(UN_PARMI('RESULTAT','CHAM_GD'),), @@ -24489,7 +26598,7 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f' b_extrac =BLOC(condition = "RESULTAT != None",fr="extraction des résultats", regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','NUME_MODE','LIST_MODE', 'INST','LIST_INST','FREQ','LIST_FREQ','NOEUD_CMP','NOM_CAS'), ), - NOM_CHAM =SIMP(statut='o',typ='TXM' ), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO(),), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), @@ -24582,7 +26691,7 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f' INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -24602,7 +26711,7 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f' # ====================================================================== # RESPONSABLE ZENTNER I.ZENTNER POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=table_sdaster,reentrant='f', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements",)}, fr="Calcul des volumes d'usure et des profondeurs d'usure d'après la puissance d'usure", regles=(UN_PARMI('TUBE_NEUF','RESU_GENE','PUIS_USURE'), PRESENT_PRESENT('RESU_GENE','NOEUD','LOI_USURE'), @@ -24702,10 +26811,10 @@ POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=table_sdaster,reentrant='f', INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 16/02/2010 AUTEUR PELLET J.PELLET +#& MODIF COMMANDE DATE 03/01/2011 AUTEUR COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -24807,8 +26916,9 @@ POURSUITE=MACRO(nom="POURSUITE",op=ops.build_poursuite,repetable='n', IGNORE_ALARM = SIMP(statut='f', typ='TXM', max='**', fr="Alarmes que l'utilisateur souhaite délibérément ignorer"), + INFO = SIMP(statut='f', typ='I', defaut=1, into=(1,2),), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -24834,7 +26944,7 @@ PRE_GIBI=PROC(nom="PRE_GIBI",op=49, UNITE_GIBI =SIMP(statut='f',typ='I',defaut=19), UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -24860,7 +26970,7 @@ PRE_GMSH=PROC(nom="PRE_GMSH",op=47, UNITE_GMSH =SIMP(statut='f',typ='I',defaut=19), UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -24886,7 +26996,7 @@ PRE_IDEAS=PROC(nom="PRE_IDEAS",op=47, UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20), CREA_GROUP_COUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -24909,15 +27019,15 @@ PRE_IDEAS=PROC(nom="PRE_IDEAS",op=47, PROD_MATR_CHAM=OPER(nom="PROD_MATR_CHAM",op= 156,sd_prod=cham_no_sdaster, fr="Effectuer le produit d'une matrice par un vecteur", reentrant='n', - UIinfo={"groupes":("Résultats et champs",)}, + UIinfo={"groupes":("Post-traitements","Matrices et vecteurs",)}, MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_pres_c ) ), CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 19/04/2010 AUTEUR BERARD A.BERARD +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -24934,21 +27044,30 @@ PROD_MATR_CHAM=OPER(nom="PROD_MATR_CHAM",op= 156,sd_prod=cham_no_sdaster, # ====================================================================== # RESPONSABLE PELLET J.PELLET def proj_champ_prod(RESULTAT=None,CHAM_GD=None,**args ): - if AsType(RESULTAT) != None : return AsType(RESULTAT) - if AsType(CHAM_GD) != None : return AsType(CHAM_GD) + if (RESULTAT == None and CHAM_GD == None) : return corresp_2_mailla + if RESULTAT != None : return AsType(RESULTAT) + if CHAM_GD != None : return AsType(CHAM_GD) raise AsException("type de concept resultat non prevu") PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f', - UIinfo={"groupes":("Résultats et champs",)}, - fr="Projeter des champs d'un maillage sur un autre", + UIinfo={"groupes":("Résultats et champs",)}, + fr="Projeter des champs d'un maillage sur un autre", + + # faut-il projeter les champs ? + PROJECTION =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",),), + + # pour projeter avec une sd_corresp_2_mailla deja calculée : + MATR_PROJECTION =SIMP(statut='f',typ=corresp_2_mailla,), - METHODE =SIMP(statut='f',typ='TXM',defaut="ELEM", - into=("NUAGE_DEG_0","NUAGE_DEG_1","ELEM",) ), + #----------------------------------------------------------------------------------------------------------- + # 1er cas : on fait tout d'un coup : creation de la sd_corresp_2_mailla + projection des champs + #----------------------------------------------------------------------------------------------- + b_1_et_2 =BLOC(condition= "PROJECTION == 'OUI' and MATR_PROJECTION == None", regles=(UN_PARMI('RESULTAT','CHAM_GD'), UN_PARMI('MODELE_1','MAILLAGE_1'), UN_PARMI('MODELE_2','MAILLAGE_2'), @@ -24956,6 +27075,10 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f', RESULTAT =SIMP(statut='f',typ=resultat_sdaster), CHAM_GD =SIMP(statut='f',typ=(cham_no_sdaster,cham_elem)), + METHODE =SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("NUAGE_DEG_0","NUAGE_DEG_1","AUTO","COLLOCATION","ECLA_PG",) ), + + MODELE_1 =SIMP(statut='f',typ=modele_sdaster), MAILLAGE_1 =SIMP(statut='f',typ=maillage_sdaster), @@ -24969,29 +27092,180 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f', ), - # Cas de la projection ELEM : + # Cas de la projection COLLOCATION : + #-------------------------------------------- + b_elem =BLOC(condition="METHODE in ('COLLOCATION','ECLA_PG','AUTO')", + CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",), + fr="Pour indiquer au programme le type de projection souhaité"), + DISTANCE_MAX =SIMP(statut='f',typ='R', + fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."), + + TRANSF_GEOM_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_1 avant la projection."), + TRANSF_GEOM_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_2 avant la projection."), + + ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + + TYPE_CHAM =SIMP(statut='f',typ='TXM',into=("NOEU",), + fr="Pour forcer le type des champs projetés. NOEU -> cham_no"), + + PROL_ZERO =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON", + fr="Pour prolonger les champs par zéro là ou la projection ne donne pas de valeurs."), + ), + + + # Cas de la projection d'une sd_resultat : + #-------------------------------------------- + b_resultat =BLOC(condition="RESULTAT != None", + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','LIST_INST','LIST_FREQ','LIST_ORDRE'), + EXCLUS('TOUT_CHAM','NOM_CHAM',), + CONCEPT_SENSIBLE('SEPARE'), + REUSE_SENSIBLE(), + DERIVABLE('RESULTAT'),), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramétres de sensibilité.", + ang="List of sensitivity parameters",), + + NOM_PARA =SIMP(statut='f',typ='TXM', max='**'), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO(),), + + NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster), + fr="Utile en dynamique pour pouvoir imoser la numérotation des cham_no."), + + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + + b_acce_reel =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + ), + + + VIS_A_VIS =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT_1','GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), + AU_MOINS_UN('TOUT_2','GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),), + TOUT_1 =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TOUT_2 =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + + # les mots clés suivants ne sont actifs que si METHODE='COLLOCATION' mais on ne peut pas le vérifier: + CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ), + TRANSF_GEOM_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_1 avant la projection."), + TRANSF_GEOM_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_2 avant la projection."), + ), + ), # fin bloc b_1_et_2 + + + + #----------------------------------------------------------------------------------------------------------- + # 2eme cas : on s'arrete apres la creation de la sd_corresp_2_mailla + #----------------------------------------------------------------------------------------------- + b_1 =BLOC(condition="PROJECTION == 'NON'", + + METHODE =SIMP(statut='f',typ='TXM',defaut="COLLOCATION", + into=("COLLOCATION","COUPLAGE",) ), + + regles=(UN_PARMI('MODELE_1','MAILLAGE_1'), + UN_PARMI('MODELE_2','MAILLAGE_2'), + ), + MODELE_1 =SIMP(statut='f',typ=modele_sdaster), + MAILLAGE_1 =SIMP(statut='f',typ=maillage_sdaster), + + MODELE_2 =SIMP(statut='f',typ=modele_sdaster), + MAILLAGE_2 =SIMP(statut='f',typ=maillage_sdaster), + + + # Cas de la projection COLLOCATION : #-------------------------------------------- - b_elem =BLOC(condition="METHODE == 'ELEM'", + b_elem =BLOC(condition="METHODE in ('COLLOCATION',)", CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",), fr="Pour indiquer au programme le type de projection souhaité"), DISTANCE_MAX =SIMP(statut='f',typ='R', fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."), - TRANSF_GEOM_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, - fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ - " aux noeuds du MODELE_1 avant la projection."), - TRANSF_GEOM_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, - fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ - " aux noeuds du MODELE_2 avant la projection."), + TRANSF_GEOM_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_1 avant la projection."), + TRANSF_GEOM_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_2 avant la projection."), + + ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + + ), + + VIS_A_VIS =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT_1','GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), + AU_MOINS_UN('TOUT_2','GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),), + TOUT_1 =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TOUT_2 =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + + # les mots clés suivants ne sont actifs que si METHODE='COLLOCATION' mais on ne peut pas le vérifier: + CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ), + TRANSF_GEOM_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_1 avant la projection."), + TRANSF_GEOM_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_2 avant la projection."), + ), + ), # fin bloc b_1 + + + + #----------------------------------------------------------------------------------------------------------- + # 3eme cas : on projette les champs avec une sd_corresp_2_mailla déjé calculée + #----------------------------------------------------------------------------------------------- + b_2 =BLOC(condition="MATR_PROJECTION != None", + regles=(UN_PARMI('RESULTAT','CHAM_GD'),), + RESULTAT =SIMP(statut='f',typ=resultat_sdaster), + CHAM_GD =SIMP(statut='f',typ=(cham_no_sdaster,cham_elem)), + + TYPE_CHAM =SIMP(statut='f',typ='TXM',into=("NOEU",), + fr="Pour forcer le type des champs projetés. NOEU -> cham_no"), - ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster), + fr="Parfois utile en dynamique pour pouvoir imposer la numérotation des cham_no."), - TYPE_CHAM =SIMP(statut='f',typ='TXM',into=("NOEU",), - fr="Pour forcer le type des champs projetés. NOEU -> cham_no"), + # nécessaire si l'on projette des cham_elem : + MODELE_2 =SIMP(statut='f',typ=modele_sdaster), - PROL_ZERO =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON", - fr="Pour prolonger les champs par zéro là ou la projection ne donne pas de valeurs."), - ), + PROL_ZERO =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON", + fr="Pour prolonger les champs par zéro là où la projection ne donne pas de valeurs."), @@ -25004,15 +27278,12 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f', REUSE_SENSIBLE(), DERIVABLE('RESULTAT'),), SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', - fr="Liste des paramètres de sensibilité.", + fr="Liste des paramétres de sensibilité.", ang="List of sensitivity parameters",), NOM_PARA =SIMP(statut='f',typ='TXM', max='**'), TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), - NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), - - NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster), - fr="Utile en dynamique pour pouvoir imoser la numérotation des cham_no."), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO(),), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -25034,39 +27305,14 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f', ), ), + ), # fin bloc b_2 - # Mots clés utilisables dans tous les cas : - #--------------------------------------------- - TITRE =SIMP(statut='f',typ='TXM',max='**' ), - INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), - - VIS_A_VIS =FACT(statut='f',max='**', - regles=(AU_MOINS_UN('TOUT_1','GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), - AU_MOINS_UN('TOUT_2','GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),), - TOUT_1 =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - TOUT_2 =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - - # les mots clés suivants ne sont actifs que si METHODE='ELEM' mais on ne peut pas le vérifier: - CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ), - TRANSF_GEOM_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, - fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ - " aux noeuds du MODELE_1 avant la projection."), - TRANSF_GEOM_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, - fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ - " aux noeuds du MODELE_2 avant la projection."), - ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -25095,7 +27341,7 @@ def matr_asse_gene_prod(MATR_ASSE,MATR_ASSE_GENE,**args): PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op= 71,sd_prod=matr_asse_gene_prod, fr="Projection d'une matrice assemblée sur une base (modale ou de RITZ)", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=(UN_PARMI('MATR_ASSE','MATR_ASSE_GENE'),), BASE =SIMP(statut='o',typ=(mode_meca,mode_gene ) ), NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), @@ -25103,10 +27349,10 @@ PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op= 71,sd_prod=matr_asse_gene_prod, MATR_ASSE_GENE =SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c) ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -25146,7 +27392,8 @@ PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193, MODELE =SIMP(statut='o',typ=(modele_sdaster) ), # MESURE =SIMP(statut='o',typ=(dyna_trans,dyna_harmo,base_modale,mode_meca,mode_meca_c,) ), MESURE =SIMP(statut='o',typ=(dyna_trans,dyna_harmo,mode_meca,mode_meca_c,) ), - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE","SIEF_NOEU","EPSI_NOEU_DEPL",) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE", + "SIEF_NOEU","EPSI_NOEU",),max='**'), ), CORR_MANU =FACT(statut='f',max='**', regles=(PRESENT_PRESENT('NOEU_CALCUL','NOEU_MESURE'),), @@ -25168,7 +27415,7 @@ PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193, ), ); -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -25188,7 +27435,7 @@ PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193, # ====================================================================== # RESPONSABLE ADOBES A.ADOBES PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=table_fonction,reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, fr="Projecter un ou plusieurs spectres de turbulence sur une (ou plusieurs) base(s) modale(s) ", regles=(UN_PARMI('BASE_ELAS_FLUI','MODE_MECA','CHAM_NO'),), SPEC_TURB =SIMP(statut='o',typ=spectre_sdaster,validators=NoRepeat(),max='**' ), @@ -25208,7 +27455,7 @@ PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=table_fonction,reentran ORIG_AXE =SIMP(statut='f',typ='R',min=3,max=3 ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -25231,7 +27478,7 @@ PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=table_fonction,reentran PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene, fr="Projection d'un vecteur assemblé sur une base (modale ou de RITZ)", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE'),), BASE =SIMP(statut='o',typ=(mode_meca,mode_gene) ), NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), @@ -25239,10 +27486,10 @@ PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene, VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster), VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene ), ) ; -#& MODIF COMMANDE DATE 03/05/2010 AUTEUR GENIAUT S.GENIAUT +#& MODIF COMMANDE DATE 04/05/2011 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -25280,7 +27527,7 @@ def propa_fiss_prod(self,**args): PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod, fr="Propagation de fissure avec X-FEM",reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, METHODE_PROPA = SIMP(statut='o',typ='TXM', into=("SIMPLEXE","UPWIND","MAILLAGE","INITIALISATION") ), @@ -25298,7 +27545,6 @@ PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod, FISSURE = FACT(statut='o',min=1,max='**', FISS_ACTUELLE = SIMP(statut='o',typ=fiss_xfem,max=1), FISS_PROPAGEE = SIMP(statut='o',typ=CO,max=1), - GRILLE_AUX = SIMP(statut='f',typ=modele_sdaster,max=1), NB_POINT_FOND = SIMP(statut='f',typ='I',max='**'), TABLE = SIMP(statut='o',typ=table_sdaster,max=1), ), @@ -25321,7 +27567,6 @@ PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod, FISSURE = FACT(statut='o',min=1,max='**', FISS_ACTUELLE = SIMP(statut='o',typ=fiss_xfem,max=1), FISS_PROPAGEE = SIMP(statut='o',typ=CO,max=1), - GRILLE_AUX = SIMP(statut='f',typ=modele_sdaster,max=1), ), ITERATIONS = SIMP(statut='f',typ='I',max=1,val_min=3,defaut=5), TOLERANCE = SIMP(statut='f',typ='R',max=1,val_min=0.0,val_max=100.0,defaut=5.0), @@ -25336,12 +27581,11 @@ PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod, FISSURE = FACT(statut='o',min=1,max='**', MAIL_ACTUEL = SIMP(statut='o',typ=maillage_sdaster,max=1), - GROUP_MA_FOND = SIMP(statut='f',typ='TXM',defaut="FOND"), - GROUP_MA_FISS = SIMP(statut='f',typ='TXM',defaut="FISS"), + GROUP_MA_FOND = SIMP(statut='f',typ=grma,defaut="FOND"), + GROUP_MA_FISS = SIMP(statut='f',typ=grma,defaut="FISS"), FISS_ACTUELLE = SIMP(statut='o',typ=fiss_xfem,max=1), MAIL_PROPAGE = SIMP(statut='f',typ=CO,max=1), TABLE = SIMP(statut='o',typ=table_sdaster,max=1), - METHODE_POSTK = SIMP(statut='f',typ='I',into=(1,2,3),max=1), DTAN_ORIG = SIMP(statut='f',typ='R',max=3), DTAN_EXTR = SIMP(statut='f',typ='R',max=3), ), @@ -25355,8 +27599,8 @@ PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod, b_init =BLOC(condition="(METHODE_PROPA=='INITIALISATION')", MAIL_STRUC = SIMP(statut='o',typ=maillage_sdaster), FORM_FISS = SIMP(statut='o',typ='TXM', into=("DEMI_DROITE","DEMI_PLAN","ELLIPSE"), ), - GROUP_MA_FOND = SIMP(statut='f',typ='TXM',defaut="FOND"), - GROUP_MA_FISS = SIMP(statut='f',typ='TXM',defaut="FISS"), + GROUP_MA_FOND = SIMP(statut='f',typ=grma,defaut="FOND"), + GROUP_MA_FISS = SIMP(statut='f',typ=grma,defaut="FISS"), MAIL_TOTAL = SIMP(statut='o',typ=CO), MAIL_FISS = SIMP(statut='f',typ=CO), @@ -25369,7 +27613,7 @@ PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod, DTAN = SIMP(statut='o',typ='R',min=3,max=3), POINT_ORIG = SIMP(statut='o',typ='R',min=3,max=3), POINT_EXTR = SIMP(statut='o',typ='R',min=3,max=3), - NB_POINT_FOND = SIMP(statut='o',typ='I',val_max=26), + NB_POINT_FOND = SIMP(statut='o',typ='I',), ), b_ellipse = BLOC(condition = "FORM_FISS == 'ELLIPSE' ", @@ -25380,7 +27624,7 @@ PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod, VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), ANGLE_ORIG = SIMP(statut='o',typ='R',), ANGLE_EXTR = SIMP(statut='o',typ='R',), - NB_POINT_FOND = SIMP(statut='o',typ='I',val_max=52,), + NB_POINT_FOND = SIMP(statut='o',typ='I',) ), ), @@ -25399,10 +27643,10 @@ PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod, INFO = SIMP(statut='f',typ='I',defaut=1,into=(0,1,2)), ) -#& MODIF COMMANDE DATE 15/12/2009 AUTEUR COLOMBO D.COLOMBO +#& MODIF COMMANDE DATE 08/03/2011 AUTEUR MASSIN P.MASSIN # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -25420,13 +27664,11 @@ PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod, # RESPONSABLE GENIAUT S.GENIAUT PROPA_XFEM=OPER(nom="PROPA_XFEM",op=10,sd_prod=fiss_xfem,reentrant='n', - UIinfo={"groupes":("Modelisation",)}, + UIinfo={"groupes":("Post-traitements","Rupture",)}, fr="Propagation de fissure avec X-FEM", MODELE =SIMP(statut='o',typ=modele_sdaster), - GRILLE_AUX =SIMP(statut='f',typ=modele_sdaster), - TEST_MAIL =SIMP(statut='f',typ='TXM',into=("NON","OUI",),defaut="NON"), DA_MAX =SIMP(statut='o',typ='R'), @@ -25470,7 +27712,7 @@ PROPA_XFEM=OPER(nom="PROPA_XFEM",op=10,sd_prod=fiss_xfem,reentrant='n', INFO =SIMP(statut='f',typ='I',defaut= 0,into=(0,1,2) ), ) ; -#& MODIF COMMANDE DATE 20/07/2009 AUTEUR GENIAUT S.GENIAUT +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2009 EDF R&D WWW.CODE-ASTER.ORG @@ -25493,12 +27735,12 @@ from Macro.raff_xfem_ops import raff_xfem_ops RAFF_XFEM=MACRO(nom="RAFF_XFEM",op=raff_xfem_ops,sd_prod=cham_no_sdaster, fr="Calcul de la distance au fond de fissure le plus proche", reentrant='n', - UIinfo={"groupes":("Rupture",)}, + UIinfo={"groupes":("Résultats et champs","Rupture",)}, FISSURE =SIMP(statut='o',typ=fiss_xfem,min=1,max='**',), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -25519,7 +27761,7 @@ RAFF_XFEM=MACRO(nom="RAFF_XFEM",op=raff_xfem_ops,sd_prod=cham_no_sdaster, # RESPONSABLE PARROT A.PARROT RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=table_sdaster, fr="Recaler les paramètres du modèle de WEIBULL sur des données expérimentales",reentrant='n', - UIinfo={"groupes":("Post traitements",)}, + UIinfo={"groupes":("Post-traitements",)}, LIST_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2,into=("SIGM_REFE","M",) ), RESU =FACT(statut='o',max='**', regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST',), @@ -25545,7 +27787,7 @@ RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=table_sdaster, ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ), ) ; -#& MODIF COMMANDE DATE 23/03/2010 AUTEUR BOYERE E.BOYERE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -25577,7 +27819,7 @@ def recu_fonction_prod(RESULTAT=None,TABLE=None,RESU_GENE=None, RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod, fr="Extraire sous forme d'une fonction, l'évolution d'une grandeur en fonction d'une autre", reentrant='f', - UIinfo={"groupes":("Fonction",)}, + UIinfo={"groupes":("Résultats et champs","Fonctions",)}, regles=(UN_PARMI('CHAM_GD','RESULTAT','RESU_GENE','TABLE','BASE_ELAS_FLUI','NAPPE'),), CHAM_GD =SIMP(statut='f',typ=(cham_no_sdaster,cham_elem,),), @@ -25780,7 +28022,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), ) ; -#& MODIF COMMANDE DATE 30/09/2008 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -25813,7 +28055,47 @@ RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene,reentrant='n', b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", PRECISION =SIMP(statut='o',typ='R',),), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 14/02/2011 AUTEUR GREFFET N.GREFFET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# RECUPERATION DE PARAMETRES DE COUPLAGE VIA YACS +# +RECU_PARA_YACS=OPER(nom="RECU_PARA_YACS",op=114,sd_prod=listr8_sdaster, + reentrant = 'n', + UIinfo={"groupes":("Fonction",)}, + fr = "Gestion des scalaires via YACS pour le coupleur IFS", + DONNEES = SIMP(statut='o',typ='TXM',into=("INITIALISATION","CONVERGENCE","FIN","PAS",) ), + b_init = BLOC(condition= "DONNEES=='INITIALISATION'", + PAS = SIMP(statut='o',typ='R', ),), + b_noinit = BLOC(condition= "(DONNEES=='CONVERGENCE')or(DONNEES=='FIN')", + NUME_ORDRE_YACS = SIMP(statut='o', typ='I',), + INST = SIMP(statut='o',typ='R', ), + PAS = SIMP(statut='o',typ='R', ),), + b_pastps = BLOC(condition= "(DONNEES=='PAS')", + NUME_ORDRE_YACS = SIMP(statut='o', typ='I',), + INST = SIMP(statut='o',typ='R', ), + PAS = SIMP(statut='o',typ='R', ),), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +); +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -25835,14 +28117,14 @@ RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene,reentrant='n', RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster, fr="Récupérer dans une table les valeurs d'un paramètre d'une SD Résultat ou d'extraire une table contenue" +" dans une autre SD pour celles qui le permettent", - UIinfo={"groupes":("Résultats et champs",)},reentrant='n', + UIinfo={"groupes":("Résultats et champs","Tables",)},reentrant='n', CO =SIMP(statut='o',typ=assd), regles=(UN_PARMI('NOM_TABLE','NOM_PARA')), NOM_TABLE =SIMP(statut='f',typ='TXM' ), NOM_PARA =SIMP(statut='f',typ='TXM',max='**'), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 11/08/2009 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG @@ -25887,10 +28169,10 @@ RESOUDRE=OPER(nom="RESOUDRE",op=15,sd_prod=cham_no_sdaster,reentrant='f', TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -25907,10 +28189,11 @@ RESOUDRE=OPER(nom="RESOUDRE",op=15,sd_prod=cham_no_sdaster,reentrant='f', # ====================================================================== # RESPONSABLE DEVESA G.DEVESA -def rest_cond_tran_prod(RESULTAT,**args ): +def rest_cond_tran_prod(RESULTAT,TYPE_RESU,**args ): - if AsType(RESULTAT) == evol_noli : return dyna_trans - if AsType(RESULTAT) == dyna_trans : return dyna_trans + if AsType(RESULTAT) == dyna_trans : return dyna_trans + if (AsType(RESULTAT) == evol_noli and TYPE_RESU == "DYNA_TRANS") : return dyna_trans + if (AsType(RESULTAT) == evol_noli and TYPE_RESU == "EVOL_NOLI") : return evol_noli raise AsException("type de concept resultat non prevu") @@ -25918,12 +28201,14 @@ REST_COND_TRAN=OPER(nom="REST_COND_TRAN",op= 78,sd_prod=rest_cond_tran_prod, fr="Restituer dans la base physique des résultats issus d'un calcul" +"non-lineaire avec projection modale ou d'un calcul transitoire linear" +"avec condensation dynamique", - reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + reentrant='f', + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=( EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST'), EXCLUS('MACR_ELEM_DYNA','BASE_MODALE'),), RESULTAT =SIMP(statut='f',typ=(evol_noli,dyna_trans) ), + TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNA_TRANS", + into=("DYNA_TRANS","EVOL_NOLI") ), BASE_MODALE =SIMP(statut='f',typ=mode_meca), # NUME_DDL =SIMP(statut='f',typ=nume_ddl_sdaster ), MACR_ELEM_DYNA =SIMP(statut='f',typ=macr_elem_dyna), @@ -25940,14 +28225,18 @@ REST_COND_TRAN=OPER(nom="REST_COND_TRAN",op= 78,sd_prod=rest_cond_tran_prod, INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), b_nom_cham=BLOC(condition="TOUT_CHAM == None", - NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,defaut="ACCE", - into=("DEPL","VITE","ACCE",) ),), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,defaut="ACCE",into=("DEPL", + "VITE","ACCE",),),), + b_base_moda=BLOC(condition="BASE_MODALE != None", + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem),), + RESU_FINAL =SIMP(statut='f',typ=(evol_noli,dyna_trans) ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -25975,7 +28264,7 @@ def rest_gene_phys_prod(RESU_GENE,**args ): REST_GENE_PHYS=OPER(nom="REST_GENE_PHYS",op= 75,sd_prod=rest_gene_phys_prod, fr="Restituer dans la base physique des résultats en coordonnées généralisées", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=( EXCLUS('INST','LIST_INST','TOUT_INST', 'TOUT_ORDRE','NUME_ORDRE','NUME_MODE',), @@ -26007,9 +28296,8 @@ REST_GENE_PHYS=OPER(nom="REST_GENE_PHYS",op= 75,sd_prod=rest_gene_phys_prod, CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ), TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), b_nom_cham=BLOC(condition="TOUT_CHAM == None", - NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE", - into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL", - "SIGM_ELNO_DEPL","FORC_NODA",) ),), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE",into=("DEPL", + "VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO","SIPO_ELNO","SIGM_ELNO","FORC_NODA",),),), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), @@ -26018,10 +28306,10 @@ REST_GENE_PHYS=OPER(nom="REST_GENE_PHYS",op= 75,sd_prod=rest_gene_phys_prod, DIRECTION =SIMP(statut='f',typ='R',min=3,max=3 ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -26051,7 +28339,7 @@ def rest_sous_struc_prod(RESU_GENE,RESULTAT,**args ): REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op= 77,sd_prod=rest_sous_struc_prod, fr="Restituer dans la base physique des résultats obtenus par sous-structuration", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=(UN_PARMI('RESU_GENE','RESULTAT'), # ajout d'une regle de Ionel et Nicolas: # UN_PARMI('NOM_CHAM','TOUT_CHAM'), @@ -26062,6 +28350,7 @@ REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op= 77,sd_prod=rest_sous_struc_prod, EXCLUS('NOEUD','GROUP_NO'), EXCLUS('MAILLE','GROUP_MA'), PRESENT_PRESENT('RESULTAT','SQUELETTE'), + UN_PARMI('SQUELETTE','SOUS_STRUC','SECTEUR'), ), RESULTAT =SIMP(statut='f',typ=(evol_noli,dyna_trans, @@ -26085,9 +28374,8 @@ REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op= 77,sd_prod=rest_sous_struc_prod, INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), b_nom_cham=BLOC(condition="TOUT_CHAM == None", - NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE", - into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL", - "SIGM_ELNO_DEPL","FORC_NODA",) ),), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE",into=("DEPL", + "VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO","SIPO_ELNO","SIGM_ELNO","FORC_NODA",) ),), GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), @@ -26101,13 +28389,13 @@ REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op= 77,sd_prod=rest_sous_struc_prod, SQUELETTE =SIMP(statut='f',typ=squelette ), SOUS_STRUC =SIMP(statut='f',typ='TXM' ), - SECTEUR =SIMP(statut='f',typ='I',defaut= 1 ), + SECTEUR =SIMP(statut='f',typ='I'), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 11/05/2009 AUTEUR NISTOR I.NISTOR +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -26126,7 +28414,7 @@ REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op= 77,sd_prod=rest_sous_struc_prod, REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=table_fonction, reentrant='n', fr="Calculer la réponse d'une structure dans la base physique", - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=(AU_MOINS_UN('BASE_ELAS_FLUI','MODE_MECA'),), BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ), MODE_MECA =SIMP(statut='f',typ=mode_meca,), @@ -26137,9 +28425,8 @@ REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=table_fonction, NOEUD =SIMP(statut='o',typ=no ,max='**'), MAILLE =SIMP(statut='f',typ=ma ,max='**'), NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), - NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=7, - into=("DEPL","VITE","ACCE","EFGE_ELNO_DEPL", - "SIPO_ELNO_DEPL","SIGM_ELNO_DEPL","FORC_NODA") ), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=7,into=("DEPL", + "VITE","ACCE","EFGE_ELNO","SIPO_ELNO","SIGM_ELNO","FORC_NODA") ), MODE_STAT =SIMP(statut='f',typ=mode_meca ), EXCIT =FACT(statut='f', NOEUD =SIMP(statut='o',typ=no ,max='**'), @@ -26150,7 +28437,7 @@ REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=table_fonction, into=("DIAG_TOUT","DIAG_DIAG","TOUT_TOUT","TOUT_DIAG") ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 06/10/2008 AUTEUR DEVESA G.DEVESA +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG @@ -26180,7 +28467,7 @@ def rest_spec_temp_prod(RESU_GENE,RESULTAT,**args): REST_SPEC_TEMP=OPER(nom="REST_SPEC_TEMP",op=181,sd_prod=rest_spec_temp_prod, fr="Transformée de Fourier d'un résultat", reentrant='n', - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, regles=UN_PARMI('RESU_GENE','RESULTAT'), RESU_GENE =SIMP(statut='f',typ=(harm_gene,tran_gene,) ), RESULTAT =SIMP(statut='f',typ=(dyna_harmo,dyna_trans,) ), @@ -26189,10 +28476,10 @@ REST_SPEC_TEMP=OPER(nom="REST_SPEC_TEMP",op=181,sd_prod=rest_spec_temp_prod, TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",)), NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","VITE","ACCE") ), ); -#& MODIF COMMANDE DATE 03/05/2010 AUTEUR PROIX J-M.PROIX +#& MODIF COMMANDE DATE 21/02/2011 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -26217,13 +28504,7 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s fr="Calcul de l'évolution mécanique, en quasi-statique," +" d'un point matériel en non linéaire", COMP_INCR =C_COMP_INCR(), - COMP_ELAS =FACT(statut='f',max='**', - RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), - RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS", - into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS","ELAS_HYPER")), - DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",) ), - ), + COMP_ELAS =C_COMP_ELAS('SIMU_POINT_MAT'), MATER =SIMP(statut='o',typ=mater_sdaster,max=30), ## ANGLE : rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées. @@ -26244,60 +28525,85 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s NB_VARI_TABLE =SIMP(statut='f',typ='I',max=1,), ARCHIVAGE =FACT(statut='f', LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_ARCH =SIMP(statut='f',typ='I' ), PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), ), ), b_EF = BLOC(condition="SUPPORT == 'ELEMENT'",fr="Simulation sur un élément fini", MODELISATION =SIMP(statut='f',typ='TXM',max=1,into=("3D","C_PLAN","D_PLAN",)), - RECH_LINEAIRE =C_RECH_LINEAIRE(), - ARCHIVAGE =FACT(statut='f', - LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), - INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), - PAS_ARCH =SIMP(statut='f',typ='I' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",),defaut="OUI"), - NUME_INIT =SIMP(statut='f',typ='I'), - DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)), - CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', - into=("DEPL","SIEF_ELGA","VARI_ELGA",)), - ), + RECH_LINEAIRE =C_RECH_LINEAIRE(), + ARCHIVAGE =C_ARCHIVAGE(), ), # on permet certaines variables de commandes scalaires, définies par une fonction du temps b_EFV = BLOC(condition="SUPPORT == 'ELEMENT'",fr="variables de commande sur un élément fini", # un mot clé caché qui ne sert qu'à boucler sur les VARC possibles : - LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("TEMP",)), + LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("TEMP","CORR","IRRA","HYDR","SECH","EPSA", + "M_ACIER","M_ZIRC","NEUT1","NEUT2")), + AFFE_VARC = FACT(statut='f',max='**', - NOM_VARC = SIMP(statut='o',typ='TXM', into=("TEMP",)), + NOM_VARC =SIMP(statut='o',typ='TXM', into=("TEMP","CORR","IRRA","HYDR","SECH","M_ACIER","M_ZIRC", + "EPSA","NEUT1","NEUT2")), VALE_FONC = SIMP(statut='o',typ=(fonction_sdaster,formule) ), VALE_REF = SIMP(statut='f',typ='R'), ), - # mots clés cachés pour variable de commande TEMP : - # -------------------------------------------------- - VARC_TEMP =FACT(statut='d', - NOM_VARC =SIMP(statut='c',typ='TXM',defaut="TEMP"), - GRANDEUR =SIMP(statut='c',typ='TXM',defaut="TEMP_R"), - CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)), - CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)), - VALE_DEF =SIMP(statut='c',typ='R',max=1,min=1,defaut=(0.,)), - ), + + SIGM_IMPOSE=FACT(statut='f', + SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + EPSI_IMPOSE=FACT(statut='f', + EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), ), + b_COEF = BLOC(condition="SUPPORT != 'ELEMENT'",fr="matrice de coefficients", + regles = (PRESENT_ABSENT('SIGM_IMPOSE','MATR_C1','MATR_C2','VECT_IMPO'), + PRESENT_ABSENT('EPSI_IMPOSE','MATR_C1','MATR_C2','VECT_IMPO'), + PRESENT_ABSENT('MATR_C1','SIGM_IMPOSE','EPSI_IMPOSE'), + PRESENT_ABSENT('MATR_C2','SIGM_IMPOSE','EPSI_IMPOSE'), + PRESENT_ABSENT('VECT_IMPO', 'SIGM_IMPOSE','EPSI_IMPOSE'), + ), - SIGM_IMPOSE=FACT(statut='f', - SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIGM_IMPOSE=FACT(statut='f', + SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + EPSI_IMPOSE=FACT(statut='f', + EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + MATR_C1=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ='R',max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + NUME_COLONNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ), + ), + MATR_C2=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ='R',max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + NUME_COLONNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ), + ), + VECT_IMPO=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + ), ), - EPSI_IMPOSE=FACT(statut='f', - EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), - ), SIGM_INIT=FACT(statut='f', SIXX = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), SIYY = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), @@ -26320,7 +28626,7 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) -#& MODIF COMMANDE DATE 22/09/2009 AUTEUR SELLENET N.SELLENET +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -26344,7 +28650,7 @@ from Macro.stanley_ops import stanley_ops STANLEY=MACRO(nom="STANLEY",op=stanley_ops,sd_prod=None, reentrant='n', - UIinfo={"groupes":("Outils métier",)}, + UIinfo={"groupes":("Post-traitements",)}, fr="Outil de post-traitement interactif Stanley ", RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther,mode_meca,dyna_harmo,dyna_trans) ), MODELE =SIMP(statut='f',typ=modele_sdaster), @@ -26355,10 +28661,10 @@ STANLEY=MACRO(nom="STANLEY",op=stanley_ops,sd_prod=None, fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit les md5"), ) ; -#& MODIF COMMANDE DATE 12/04/2010 AUTEUR MICHEL S.MICHEL +#& MODIF COMMANDE DATE 21/02/2011 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -26379,7 +28685,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, fr="Calcul de l'évolution mécanique ou thermo-hydro-mécanique couplée, en quasi-statique," +" d'une structure en non linéaire", reentrant='f', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Mécanique",)}, regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS'), CONCEPT_SENSIBLE('ENSEMBLE'),), MODELE =SIMP(statut='o',typ=modele_sdaster), @@ -26399,23 +28705,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, SUPER_MAILLE=SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',), FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), ), +#------------------------------------------------------------------- COMP_INCR =C_COMP_INCR(), - COMP_ELAS =FACT(statut='f',max='**', - RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), - ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), - RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE", - into=("IMPLICITE",)), - RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS", - into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS", - "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")), - - DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",) ), - regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - ), +#------------------------------------------------------------------- + COMP_ELAS =C_COMP_ELAS('STAT_NON_LINE'), +#------------------------------------------------------------------- b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire", ETAT_INIT =FACT(statut='o', regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI',), @@ -26458,129 +28752,33 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, NUME_DIDI =SIMP(statut='f',typ='I'), INST_ETAT_INIT =SIMP(statut='f',typ='R'), ),), +#------------------------------------------------------------------- INCREMENT =C_INCREMENT(), - -# **C_ALGO_RESOLUTION() - METHODE = SIMP(statut='d',typ='TXM',defaut="NEWTON",into=("NEWTON","IMPL_EX")), - b_meth_newton = BLOC(condition = "METHODE == 'NEWTON'", - NEWTON = C_NEWTON(), - ), - b_meth_impl_ex = BLOC(condition = "METHODE == 'IMPL_EX'", - IMPL_EX = C_IMPL_EX(), - ), - +#------------------------------------------------------------------- + METHODE =SIMP(statut='d',typ='TXM',defaut="NEWTON",into=("NEWTON","IMPL_EX")), + b_meth_newton = BLOC(condition = "METHODE == 'NEWTON'", + NEWTON = C_NEWTON(), + ), + b_meth_impl_ex = BLOC(condition = "METHODE == 'IMPL_EX'", + IMPL_EX = C_IMPL_EX(), + ), +#------------------------------------------------------------------- RECH_LINEAIRE =C_RECH_LINEAIRE(), - - PILOTAGE =FACT(statut='f', - regles=(EXCLUS('NOEUD','GROUP_NO'),PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), - TYPE =SIMP(statut='o',typ='TXM',into=("DDL_IMPO","LONG_ARC","PRED_ELAS","DEFORMATION","ANA_LIM") ), - COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.0E+0), - EVOL_PARA =SIMP(statut='f',typ='TXM',defaut="SANS", into=("SANS","CROISSANT","DECROISSANT") ), - - - ETA_PILO_MAX =SIMP(statut='f',typ='R'), - ETA_PILO_MIN =SIMP(statut='f',typ='R'), - ETA_PILO_R_MAX =SIMP(statut='f',typ='R'), - ETA_PILO_R_MIN =SIMP(statut='f',typ='R'), - PROJ_BORNES =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), - SELECTION =SIMP(statut='f',typ='TXM',defaut="NORM_INCR_DEPL", into=("RESIDU","ANGL_INCR_DEPL","NORM_INCR_DEPL") ), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), - NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), - ), - +#------------------------------------------------------------------- + PILOTAGE =C_PILOTAGE(), +#------------------------------------------------------------------- CONVERGENCE =C_CONVERGENCE(), - +#------------------------------------------------------------------- SOLVEUR =C_SOLVEUR(), - - ARCHIVAGE =FACT(statut='f', - regles=(EXCLUS('PAS_ARCH','LIST_INST','INST'), - EXCLUS('ARCH_ETAT_INIT','NUME_INIT'), ), - LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), - INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), - PAS_ARCH =SIMP(statut='f',typ='I' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), - ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)), - NUME_INIT =SIMP(statut='f',typ='I'), - DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)), - CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', - into=("DEPL","SIEF_ELGA","VARI_ELGA",)), - ), - OBSERVATION =FACT(statut='f',max='**', - NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), - SUIVI_DDL =SIMP(statut='f',typ='TXM',defaut="NON",max=1,into=("OUI","NON")), - b_suivi =BLOC(condition = "SUIVI_DDL == 'OUI' ", - regles=(UN_PARMI('NOEUD','MAILLE','GROUP_NO','GROUP_MA','VALE_MIN','VALE_MAX'), - PRESENT_PRESENT('MAILLE','POINT'),), - NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, - into=("DEPL","VITE","ACCE","SIEF_ELGA", - "VARI_ELGA","FORC_NODA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",)), - GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), - NUME_SUIVI =SIMP(statut='o',typ='I' ,min=1,max=4), - VALE_MAX =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,into=("OUI",) ), - VALE_MIN =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,into=("OUI",) ),), - b_non_suivi =BLOC(condition = "SUIVI_DDL == 'NON' ", - regles=(UN_PARMI('NOEUD','GROUP_NO','MAILLE'),PRESENT_PRESENT('MAILLE','POINT'),), - NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'), - MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), - NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE","SIEF_ELGA", - "VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU","VALE_CONT")), - INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), - LIST_INST =SIMP(statut='f',typ=listr8_sdaster), - PAS_OBSE =SIMP(statut='f',typ='I'), - LIST_ARCH =SIMP(statut='f',typ=listis_sdaster), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), - b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), - b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", - PRECISION =SIMP(statut='o',typ='R',),),), - ), - - AFFICHAGE = FACT(statut='f',max=16, - - UNITE = SIMP(statut='f',typ='I',val_min=1), - - LONG_R = SIMP(statut='f',typ='I',defaut=12,val_min=1,val_max=12), - PREC_R = SIMP(statut='f',typ='I',defaut=5, val_min=1,val_max=8), - LONG_I = SIMP(statut='f',typ='I',defaut=6, val_min=1,val_max=12), - - NOM_COLONNE = SIMP(statut='o',typ='TXM',defaut="STANDARD", - into=("STANDARD","MINIMUM", - "ITER_NEWT", - "INCR_TPS", - "RESI_RELA","RELA_NOEU", - "RESI_MAXI","MAXI_NOEU", - "RESI_REFE","REFE_NOEU", - "RELI_ITER","RELI_COEF", - "RESI_COMP","COMP_NOEU", - "PILO_PARA", - "MATR_ASSE", - "ITER_DEBO", - "CTCD_ITER","CTCD_GEOM","CTCD_NOEU", - "CTCC_GEOM","CTCC_FROT","CTCC_CONT", - "SUIV_1","SUIV_2","SUIV_3","SUIV_4","ITER_FETI", - ), - ), - b_residu = BLOC(condition = " NOM_COLONNE == 'RESI_RELA' or \ - NOM_COLONNE == 'RESI_MAXI' or\ - NOM_COLONNE == 'RESI_REFE' or\ - NOM_COLONNE == 'CTCD_GEOM' or\ - NOM_COLONNE == 'STANDARD' ", - INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - ), - ), - - - +#------------------------------------------------------------------- + OBSERVATION =C_OBSERVATION(), +#------------------------------------------------------------------- + SUIVI_DDL =C_SUIVI_DDL(), +#------------------------------------------------------------------- + ARCHIVAGE =C_ARCHIVAGE(), +#------------------------------------------------------------------- + AFFICHAGE = C_AFFICHAGE(), +#------------------------------------------------------------------- CRIT_FLAMB =FACT(statut='f',min=1,max=1, NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3), CHAR_CRIT =SIMP(statut='f',typ='R',min=2,max=2,defaut=(-10.0,10), @@ -26597,16 +28795,116 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C','V11','V12','V13','V21','V22', 'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21','PRES22','PRES23', 'PRES31','PRES32','PRES33','VARI','LAG_GV')),), - INST_CALCUL =SIMP(statut='f',typ='TXM',defaut="LISTE_ARCHIVAGE",into=("LISTE_ARCHIVAGE","TOUT_PAS",) ), + regles = (EXCLUS('PAS_CALC','LIST_INST','INST'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_CALC = SIMP(statut='f',typ='I' ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), ), SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', fr="Liste des paramètres de sensibilité", ang="List of sensitivity parameters"), INFO =SIMP(statut='f',typ='I',into=(1,2) ), + b_info=BLOC(condition="INFO==2", + fr="filtre les messages émis dans le .mess selon le type de message demandé", + INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), + into=("CONTACT", + "MECA_NON_LINE", + "PILOTAGE", + "FACTORISATION", + "APPARIEMENT"), + ), + ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 08/02/2011 AUTEUR PROIX J-M.PROIX +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# -*- coding: iso-8859-1 -*- +# RESPONSABLE PROIX J.M.PROIX + +from Macro.test_compor_ops import test_compor_ops + +# MACRO "TEST_THERMOPLASTIQUE" +# ---------------------------- + +TEST_COMPOR =MACRO(nom="TEST_COMPOR", op=test_compor_ops,sd_prod=table_sdaster, + docu="",reentrant='n', + fr="macro de test des comportements incrementaux dependant de la temperature", + + OPTION =SIMP(statut='f',typ='TXM',into=("THER","MECA"),defaut="THER"), + + COMP_INCR =C_COMP_INCR(), + COMP_ELAS =C_COMP_ELAS('SIMU_POINT_MAT'), + NEWTON =C_NEWTON(), + CONVERGENCE =C_CONVERGENCE(), + + b_ther =BLOC(condition = "OPTION == 'THER'", + regles=(EXCLUS('C_PRAG','D_SIGM_EPSI'),), + MATER =SIMP(statut='o',typ=mater_sdaster,max=1,fr="materiau dependant de la temperature"), + ALPHA =SIMP(statut='o',typ=fonction_sdaster, + fr="coefficient de dilatation fonction de la temperature"), + YOUNG =SIMP(statut='o',typ=fonction_sdaster, + fr="module d'Young fonction de la temperature"), + LIST_MATER =SIMP(statut='o',typ=mater_sdaster,max='**', + fr="liste des materiaux constants interpolés à chaque température"), + TEMP_INIT =SIMP(statut='o',typ='R', fr="temperature initiale et de reference"), + TEMP_FIN =SIMP(statut='o',typ='R', fr="temperature finale"), + INST_FIN =SIMP(statut='f',typ='R',defaut=1.,fr="instant final"), + NB_VARI =SIMP(statut='o',typ='I', fr="nombre de variables internes - 0 en elasticité"), + VARI_TEST =SIMP(statut='f',typ='TXM',max='**', + fr="liste de variables internes à tester - par defaut, toutes"), + +# special ecrouissage cinematique + D_SIGM_EPSI =SIMP(statut='f',typ=fonction_sdaster, + fr="module tangent fonction de la temperature- VMIS_CINE_LINE"), + C_PRAG =SIMP(statut='f',typ=fonction_sdaster, + fr="constante de Prager fonction de la temperature- VMIS_ECMI_*"), + ), + b_meca =BLOC(condition = "OPTION == 'MECA'", + LIST_MATER =SIMP(statut='o',typ=mater_sdaster,max=2,min=2, + fr="liste des materiaux en Pa puis MPa "), + YOUNG =SIMP(statut='o',typ='R',fr="module d'Young"), + POISSON =SIMP(statut='o',typ='R',fr="coef de Poisson"), + LIST_NPAS =SIMP(statut='f',typ='I',max='**', + fr="nombre de pas de temps pour chaque discretisation"), + LIST_TOLE =SIMP(statut='f',typ='R',max='**',), + PREC_ZERO =SIMP(statut='f',typ='R',max='**',), + VARI_TEST =SIMP(statut='f',typ='TXM',max='**',defaut=('V1','VMIS','TRACE'), + fr="liste des CMP à tester "), + SUPPORT =SIMP(statut='f',typ='TXM',max=1,into=("POINT","ELEMENT",)), + MODELISATION =SIMP(statut='f',typ='TXM',max=1,into=("3D","C_PLAN"),defaut="3D",), + ANGLE =SIMP(statut='f',typ='R',max=1, defaut=0., + fr='Rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées',), + MASSIF =FACT(statut='f',max='**',fr='orientation du materiau (monocristal, orthotropie)', + regles=(UN_PARMI('ANGL_REP','ANGL_EULER'),), + ANGL_REP =SIMP(statut='f',typ='R',min=1,max=3), + ANGL_EULER =SIMP(statut='f',typ='R',min=1,max=3), + ), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), + ) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG @@ -26629,7 +28927,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, from Macro.test_fichier_ops import test_fichier_ops TEST_FICHIER=MACRO(nom="TEST_FICHIER", op=test_fichier_ops, - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Utilitaires",)}, fr="Tester la non régression de fichiers produits par des commandes aster", FICHIER =SIMP(statut='o',typ='TXM',validators=LongStr(1,255)), EXPR_IGNORE =SIMP(statut='f',typ='TXM',max='**', @@ -26652,7 +28950,7 @@ TEST_FICHIER=MACRO(nom="TEST_FICHIER", op=test_fichier_ops, INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) -#& MODIF COMMANDE DATE 01/02/2010 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -26676,7 +28974,7 @@ from Macro.test_fonction_ops import test_fonction_ops TEST_FONCTION=MACRO(nom="TEST_FONCTION",op=test_fonction_ops,sd_prod=None, fr="Extraction d'une valeur numérique ou d'un attribut de fonction pour comparaison à une valeur de référence", - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Fonctions","Utilitaires",)}, TEST_NOOK =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), VALEUR =FACT(statut='f',max='**', fr="Tester la valeur d une fonction ou d une nappe", @@ -26749,7 +29047,7 @@ TEST_FONCTION=MACRO(nom="TEST_FONCTION",op=test_fonction_ops,sd_prod=None, ), ), ) ; -#& MODIF COMMANDE DATE 01/02/2010 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -26771,7 +29069,7 @@ TEST_FONCTION=MACRO(nom="TEST_FONCTION",op=test_fonction_ops,sd_prod=None, # ====================================================================== # RESPONSABLE LEFEBVRE J.P.LEFEBVRE TEST_RESU=PROC(nom="TEST_RESU",op=23, - UIinfo={"groupes":("Impression",)}, + UIinfo={"groupes":("Résultats et champs","Utilitaires",)}, fr="Extraction d'une valeur d'une structure de donnée et comparaison à une valeur de référence", regles=(AU_MOINS_UN('CHAM_NO','CHAM_ELEM','RESU','GENE','OBJET','TEST_NAN',)), @@ -26784,7 +29082,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23, CHAM_GD =SIMP(statut='o',typ=cham_no_sdaster), NOEUD =SIMP(statut='f',typ=no ), GROUP_NO =SIMP(statut='f',typ=grno ), - NOM_CMP =SIMP(statut='f',typ='TXM'), + NOM_CMP =SIMP(statut='f',typ='TXM',max=1), TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN")), VALE =SIMP(statut='f',typ='R',max='**'), VALE_I =SIMP(statut='f',typ='I',max='**'), @@ -26811,7 +29109,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23, SOUS_POINT =SIMP(statut='f',typ='I'), NOEUD =SIMP(statut='f',typ=no), GROUP_NO =SIMP(statut='f',typ=grno), - NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + NOM_CMP =SIMP(statut='f',typ='TXM',max=1), TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN") ), VALE =SIMP(statut='f',typ='R',max='**' ), VALE_I =SIMP(statut='f',typ='I',max='**' ), @@ -26849,7 +29147,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23, ANGL =SIMP(statut='f',typ='R'), PARA =SIMP(statut='f',typ='TXM'), NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), - NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + NOM_CMP =SIMP(statut='f',typ='TXM',max=1), MAILLE =SIMP(statut='f',typ=ma ,max='**'), NOEUD =SIMP(statut='f',typ=no ,max='**'), GROUP_NO =SIMP(statut='f',typ=grno ,max='**'), @@ -26924,7 +29222,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23, TEST_NAN =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ) ; -#& MODIF COMMANDE DATE 01/02/2010 AUTEUR REZETTE C.REZETTE +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -26944,10 +29242,10 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23, # ====================================================================== # RESPONSABLE COURTOIS M.COURTOIS TEST_TABLE=PROC(nom="TEST_TABLE",op= 177, - UIinfo={"groupes":("Impression",)}, - fr="Tester une cellule ou une colonne d'une table", - regles=(UN_PARMI('VALE','VALE_I','VALE_C', ), - DERIVABLE('TABLE'),), + UIinfo={"groupes":("Tables","Utilitaires",)}, + fr="Tester une cellule ou une colonne d'une table", + regles=(UN_PARMI('VALE','VALE_I','VALE_C', ), + DERIVABLE('TABLE'),), # concept table_sdaster à tester TABLE =SIMP(statut='o',typ=table_sdaster), @@ -26985,7 +29283,7 @@ TEST_TABLE=PROC(nom="TEST_TABLE",op= 177, INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ), ) ; -#& MODIF COMMANDE DATE 05/09/2008 AUTEUR COURTOIS M.COURTOIS +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG @@ -27010,6 +29308,7 @@ TEST_TABLE=PROC(nom="TEST_TABLE",op= 177, from Macro.test_temps_ops import test_temps_ops TEST_TEMPS=MACRO(nom="TEST_TEMPS",op=test_temps_ops, sd_prod=None, + UIinfo={"groupes":("Utilitaires",)}, fr="Permet de vérifier le temps passé dans les commandes", reentrant='n', @@ -27033,10 +29332,10 @@ TEST_TEMPS=MACRO(nom="TEST_TEMPS",op=test_temps_ops, sd_prod=None, INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) -#& MODIF COMMANDE DATE 18/01/2010 AUTEUR TARDIEU N.TARDIEU +#& MODIF COMMANDE DATE 21/02/2011 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -27053,7 +29352,7 @@ TEST_TEMPS=MACRO(nom="TEST_TEMPS",op=test_temps_ops, sd_prod=None, # ====================================================================== # RESPONSABLE DURAND C.DURAND THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Thermique",)}, fr="Résoudre un problème thermique linéaire stationnaire ou transitoire", regles=(CONCEPT_SENSIBLE('ENSEMBLE'),), MODELE =SIMP(statut='o',typ=modele_sdaster), @@ -27118,7 +29417,7 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f', RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), ), b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), @@ -27127,44 +29426,45 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f', TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), ), PARM_THETA =SIMP(statut='f',typ='R',defaut= 0.57), - ARCHIVAGE =FACT(statut='f', - regles=EXCLUS('PAS_ARCH','LIST_INST','INST'), - LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), - INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), - PAS_ARCH =SIMP(statut='f',typ='I' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), - NUME_INIT =SIMP(statut='f',typ='I'), - DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)), - CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', - into=("VARI",)), - ), +#------------------------------------------------------------------- + ARCHIVAGE =C_ARCHIVAGE(), +#------------------------------------------------------------------- TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2)), ) ; -#& MODIF COMMANDE DATE 18/01/2010 AUTEUR TARDIEU N.TARDIEU +#& MODIF COMMANDE DATE 21/02/2011 AUTEUR ABBAS M.ABBAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -27181,7 +29481,7 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f', # ====================================================================== # RESPONSABLE DURAND C.DURAND THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Thermique",)}, fr="Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)" +" stationnaire ou transitoire" , regles=(CONCEPT_SENSIBLE('ENSEMBLE'),), @@ -27266,7 +29566,7 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f', RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), ), b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), @@ -27275,68 +29575,53 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f', TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO","SCOTCH",)), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), FILTRAGE_MATRICE=SIMP(statut='f',typ='R',defaut=-1.0,), MIXER_PRECISION =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), - RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), ), PARM_THETA =SIMP(statut='f',typ='R',defaut= 0.57 ), - ARCHIVAGE =FACT(statut='f', - regles=EXCLUS('PAS_ARCH','LIST_INST','INST'), - LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), - INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), - PAS_ARCH =SIMP(statut='f',typ='I' ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), - NUME_INIT =SIMP(statut='f',typ='I'), - DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)), - CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', - into=("VARI",)), - ), - OBSERVATION =FACT(statut='f',max='**', - NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ), - SUIVI_DDL =SIMP(statut='c',typ='TXM',defaut="NON",max=1,into=("NON",)), - b_non_suivi =BLOC(condition = "SUIVI_DDL == 'NON' ", - regles=(UN_PARMI('NOEUD','GROUP_NO')), - NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), - GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), - NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=("TEMP",)), - INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), - LIST_INST =SIMP(statut='f',typ=listr8_sdaster), - PAS_OBSE =SIMP(statut='f',typ='I'), - LIST_ARCH =SIMP(statut='f',typ=listis_sdaster), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), - b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), - b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", - PRECISION =SIMP(statut='o',typ='R',),),), - ), +#------------------------------------------------------------------- + ARCHIVAGE =C_ARCHIVAGE(), +#------------------------------------------------------------------- + OBSERVATION =C_OBSERVATION(), +#------------------------------------------------------------------- TITRE =SIMP(statut='f',typ='TXM',max='**'), OPTION =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2, - into=("FLUX_ELGA_TEMP","FLUX_ELNO_TEMP") ), + into=("FLUX_ELGA","FLUX_ELNO") ), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 18/01/2010 AUTEUR TARDIEU N.TARDIEU +#& MODIF COMMANDE DATE 08/02/2011 AUTEUR TARDIEU N.TARDIEU # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -27356,7 +29641,7 @@ THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther, fr="Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)" +" stationnaire avec chargement mobile", reentrant='n', - UIinfo={"groupes":("Résolution",)}, + UIinfo={"groupes":("Résolution","Thermique",)}, MODELE =SIMP(statut='o',typ=modele_sdaster ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CARA_ELEM =SIMP(statut='c',typ=cara_elem ), @@ -27394,7 +29679,7 @@ THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther, RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), ), b_simple =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", - REAC_PRECOND =SIMP(statut='f',typ='I',defaut=5, ), + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), @@ -27403,20 +29688,29 @@ THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther, TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")), PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), - RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")), + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.0,), OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ), b_petsc =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC", ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ), - PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ), - b_petsc_ilu =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), ), - RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= -1 ), ), diff --git a/Aster/Cata/cataSTA10/ops.py b/Aster/Cata/cataSTA10/ops.py index 25866273..2992ed0a 100644 --- a/Aster/Cata/cataSTA10/ops.py +++ b/Aster/Cata/cataSTA10/ops.py @@ -1,4 +1,4 @@ -#@ MODIF ops Cata DATE 23/03/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF ops Cata DATE 09/11/2010 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -188,8 +188,8 @@ def POURSUITE(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, **args): UTMESS('A', 'SUPERVIS_93', valk=(elem, name)) del pickle_context[elem] continue - # rétablir le parent pour les attributs de la SD - pickle_context[elem].reparent_sd() + # rétablir le catalogue de SD + pickle_context[elem].rebuild_sd() if elem in self.g_context.keys(): poursu_class=self.g_context[elem].__class__ if poursu_class!=pickle_class : @@ -212,6 +212,8 @@ def POURSUITE(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, **args): # POURSUITE if hasattr(self,'fichier_init'): return + if aster_exists: + UTMESS('F','SUPERVIS_89') self.make_poursuite() def get_pickled_context(): diff --git a/Aster/Cata/cataSTA11/__init__.py b/Aster/Cata/cataSTA11/__init__.py new file mode 100644 index 00000000..3cdb1caf --- /dev/null +++ b/Aster/Cata/cataSTA11/__init__.py @@ -0,0 +1,18 @@ +import os,sys +sys.modules["Cata"]=sys.modules[__name__] +rep_macro = os.path.dirname(__file__) +sys.path.insert(0,rep_macro) +rep_macro=os.path.join(rep_macro,'Macro') +sys.path.insert(0,rep_macro) + +if sys.modules.has_key("SD"): + del sys.modules["SD"] +for k in sys.modules.keys(): + if k[0:3] == "SD.": + del sys.modules[k] + + +from cata import * +from math import ceil +from Extensions import param2 +pi=param2.Variable('pi',pi) diff --git a/Aster/Cata/cataSTA11/cata.py b/Aster/Cata/cataSTA11/cata.py new file mode 100755 index 00000000..9859ef81 --- /dev/null +++ b/Aster/Cata/cataSTA11/cata.py @@ -0,0 +1,33123 @@ +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +import os +from math import sin, cos, tan, asin, acos, atan2, atan, sinh, cosh, tanh +from math import pi ,exp,log, log10, sqrt + +import Accas +from Accas import * +from Accas import _F +import ops + +try: + import aster + aster_exists = True +except ImportError: + aster = None + aster_exists = False + +# Le catalogue est constitué par concaténation des fichiers .capy +# de catapy/{entete,commun,commande}. + +# Tous les imports globaux devraient être faits ici dans accas.capy. +# Veillez à limiter les imports dans la définition des concepts (co_*.capy) +# au strict nécessaire et les faire sous les méthodes qui en ont +# expressément besoin. + +JdC = JDC_CATA(code='ASTER', + execmodul=None, + regles=(AU_MOINS_UN('DEBUT', 'POURSUITE'), + AU_MOINS_UN('FIN'), + A_CLASSER(('DEBUT', 'POURSUITE'), 'FIN'))) + +# Types géométriques +class no(GEOM): pass +class grno(GEOM): pass +class ma(GEOM): pass +class grma(GEOM): pass + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class cabl_precont(ASSD): + cata_sdj = "SD.sd_cabl_precont.sd_cabl_precont" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class cara_elem(ASSD): + cata_sdj = "SD.sd_cara_elem.sd_cara_elem" + + def toEPX(self): + # s'il y a un problème sur la structure de données ==> + try: + EPXnoeud = self.sdj.CARRIGXN.get() + EPXval = self.sdj.CARRIGXV.get() + lenEPXval = len(EPXval) + lenEPXnoeud = len(EPXnoeud)*6 + except: + from Utilitai.Utmess import UTMESS + UTMESS('F','MODELISA9_98') + # Vérification de la déclaration qui est faite dans 'acearp' + if ( lenEPXval != lenEPXnoeud ): + from Utilitai.Utmess import UTMESS + UTMESS('F','MODELISA9_97') + # Tout est OK + ressorts = {} + i=0 + for no in EPXnoeud : + ressorts[no] = EPXval[i:i+6] + i+=6 + return ressorts + + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +class cham_gd_sdaster(ASSD): + cata_sdj = "SD.sd_champ.sd_champ" + +class carte_sdaster(cham_gd_sdaster): + cata_sdj = "SD.sd_champ.sd_carte_class" + +class cham_elem(cham_gd_sdaster): + cata_sdj = "SD.sd_champ.sd_cham_elem_class" + + def EXTR_COMP(self,comp,lgma,topo=0) : + """ retourne les valeurs de la composante comp du champ sur la liste + de groupes de mailles lgma avec eventuellement l'info de la + 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 : numpy.array contenant les valeurs + Si on a demande la topo : + - self.maille : numero de mailles + - self.point : numero du point dans la maille + - self.sous_point : numero du sous point dans la maille """ + import numpy + if not self.accessible() : + raise Accas.AsException("Erreur dans cham_elem.EXTR_COMP en PAR_LOT='OUI'") + + ncham=self.get_name() + ncham=ncham+(8-len(ncham))*' ' + nchams=ncham[0:7]+'S' + ncmp=comp+(8-len(comp))*' ' + + aster.prepcompcham(ncham,nchams,ncmp,"EL ",topo,lgma) + + valeurs=numpy.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V')) + + if (topo>0) : + maille=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.M')) + point=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.P')) + sous_point=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.SP')) + else : + maille=None + point=None + sous_point=None + + aster.prepcompcham("__DETR__",nchams,ncmp,"EL ",topo,lgma) + + return post_comp_cham_el(valeurs,maille,point,sous_point) + +class cham_no_sdaster(cham_gd_sdaster): + cata_sdj = "SD.sd_champ.sd_cham_no_class" + + def EXTR_COMP(self,comp=' ',lgno=[],topo=0) : + """ retourne les valeurs de la composante comp du champ sur la liste + de groupes de noeuds lgno avec eventuellement l'info de la + 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 : numpy.array contenant les valeurs + Si on a demande la topo (i.e. self.topo = 1) : + - self.noeud : numero de noeud + Si on demande toutes les composantes (comp = ' ') : + - self.comp : les composantes associees a chaque grandeur pour chaque noeud + """ + import numpy + if not self.accessible() : + raise Accas.AsException("Erreur dans cham_no.EXTR_COMP en PAR_LOT='OUI'") + + ncham=self.get_name() + ncham=ncham+(8-len(ncham))*' ' + nchams=ncham[0:7]+'S' + ncmp=comp+(8-len(comp))*' ' + + aster.prepcompcham(ncham,nchams,ncmp,"NO ",topo,lgno) + + valeurs=numpy.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V')) + + if (topo>0) : + noeud=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.N')) + else : + noeud=None + + if comp[:1] == ' ': + comp=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.C')) + aster.prepcompcham("__DETR__",nchams,ncmp,"NO ",topo,lgno) + return post_comp_cham_no(valeurs,noeud,comp) + else: + aster.prepcompcham("__DETR__",nchams,ncmp,"NO ",topo,lgno) + return post_comp_cham_no(valeurs,noeud) + + def __add__(self, other): + from SD.sd_nume_equa import sd_nume_equa + # on recupere le type + __nume_ddl=sd_nume_equa(self.sdj.REFE.get()[1]) + __gd=__nume_ddl.REFN.get()[1].strip() + __type='NOEU_'+__gd + # on recupere le nom du maillage + __nomMaillage=self.sdj.REFE.get()[0].strip() + # on recupere l'objet du maillage + __maillage=CONTEXT.get_current_step().get_concept(__nomMaillage) + __CHAM = CREA_CHAMP(OPERATION='ASSE', + MAILLAGE=__maillage, + TYPE_CHAM=__type, + INFO=1, + ASSE=(_F(CHAM_GD=self, + TOUT='OUI', + CUMUL='OUI', + COEF_R=1.), + _F(CHAM_GD=other, + TOUT='OUI', + CUMUL='OUI', + COEF_R=1.), + )) + return __CHAM + +# post-traitement : +class post_comp_cham_no : + def __init__(self, valeurs, noeud=None, comp=None) : + self.valeurs = valeurs + self.noeud = noeud + self.comp = comp + +class post_comp_cham_el : + def __init__(self, valeurs, maille=None, point=None, sous_point=None) : + self.valeurs = valeurs + self.maille = maille + self.point = point + self.sous_point = sous_point + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class cham_mater(ASSD): + cata_sdj = "SD.sd_cham_mater.sd_cham_mater" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class char_acou(ASSD): + cata_sdj = "SD.sd_char_acou.sd_char_acou" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class char_cine_acou(ASSD): + cata_sdj = "SD.sd_char_cine.sd_char_cine" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class char_cine_meca(ASSD): + cata_sdj = "SD.sd_char_cine.sd_char_cine" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class char_cine_ther(ASSD): + cata_sdj = "SD.sd_char_cine.sd_char_cine" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class char_contact(ASSD): + cata_sdj = "SD.sd_contact.sd_contact" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class char_meca(ASSD): + cata_sdj = "SD.sd_char_meca.sd_char_meca" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class char_ther(ASSD): + cata_sdj = "SD.sd_char_ther.sd_char_ther" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class compor_sdaster(ASSD): + cata_sdj = "SD.sd_compor.sd_compor" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class corresp_2_mailla(ASSD): + cata_sdj = "SD.sd_corresp_2_mailla.sd_corresp_2_mailla" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class courbe_sdaster(ASSD): + cata_sdj = "SD.sd_courbe.sd_courbe" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +class entier(ASSD): + def __init__(self, valeur=None, **args): + ASSD.__init__(self,**args) + self.valeur = valeur + + def __adapt__(self, validator): + if validator.name == "list": + # validateur liste,cardinalité + return (self, ) + elif validator.name == "type": + # validateur type + return validator.adapt(self.valeur or 0) + else: + # validateur into et valid + return self + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class fiss_xfem(ASSD): + cata_sdj = "SD.sd_xfem.sd_fiss_xfem" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +# types 'fonction' : +class fonction_class(ASSD): + cata_sdj = "SD.sd_fonction.sd_fonction_aster" + + def Valeurs(self): + pass + + def Parametres(self): + """ + Retourne un dictionnaire contenant les parametres de la fonction ; + le type jeveux (FONCTION, FONCT_C, NAPPE) n'est pas retourne, + le dictionnaire peut ainsi etre fourni a CALC_FONC_INTERP tel quel. + """ + from Utilitai.Utmess import UTMESS + if self.accessible(): + TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' } + objev = '%-19s.PROL' % self.get_name() + prol = self.sdj.PROL.get() + if prol == None: + UTMESS('F', 'SDVERI_2', valk=[objev]) + dico={ + 'INTERPOL' : [prol[1][0:3],prol[1][4:7]], + 'NOM_PARA' : prol[2][0:16].strip(), + 'NOM_RESU' : prol[3][0:16].strip(), + 'PROL_DROITE' : TypeProl[prol[4][1]], + 'PROL_GAUCHE' : TypeProl[prol[4][0]], + } + elif hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' : + dico={ + 'INTERPOL' : self.etape['INTERPOL'], + 'NOM_PARA' : self.etape['NOM_PARA'], + 'NOM_RESU' : self.etape['NOM_RESU'], + 'PROL_DROITE' : self.etape['PROL_DROITE'], + 'PROL_GAUCHE' : self.etape['PROL_GAUCHE'], + } + if type(dico['INTERPOL']) == tuple: + dico['INTERPOL']=list(dico['INTERPOL']) + elif type(dico['INTERPOL']) == str: + dico['INTERPOL']=[dico['INTERPOL'],] + if len(dico['INTERPOL'])==1 : + dico['INTERPOL']=dico['INTERPOL']*2 + else: + raise Accas.AsException("Erreur dans fonction.Parametres en PAR_LOT='OUI'") + return dico + + def Trace(self,FORMAT='TABLEAU',**kargs): + """Tracé d'une fonction""" + if not self.accessible() : + raise Accas.AsException("Erreur dans fonction.Trace en PAR_LOT='OUI'") + from Utilitai.Graph import Graph + gr=Graph() + gr.AjoutCourbe(Val=self.Valeurs(), + Lab=[self.Parametres()['NOM_PARA'],self.Parametres()['NOM_RESU']], + Leg=os.linesep.join(self.sdj.TITR.get()) ) + gr.Trace(FORMAT=FORMAT,**kargs) + +class fonction_sdaster(fonction_class): + + def convert(self, arg='real'): + """ + Retourne un objet de la classe t_fonction + représentation python de la fonction + """ + from Cata_Utils.t_fonction import t_fonction, t_fonction_c + class_fonction = t_fonction + if arg == 'complex': + class_fonction = t_fonction_c + absc, ordo = self.Valeurs() + return class_fonction(absc, ordo, self.Parametres(), nom=self.nom) + + def Valeurs(self) : + """ + Retourne deux listes de valeurs : abscisses et ordonnees + """ + from Utilitai.Utmess import UTMESS + if self.accessible(): + vale = '%-19s.VALE' % self.get_name() + lbl = self.sdj.VALE.get() + if lbl == None: + UTMESS('F', 'SDVERI_2', valk=[vale]) + lbl = list(lbl) + dim = len(lbl)/2 + lx = lbl[0:dim] + ly = lbl[dim:2*dim] + elif hasattr(self, 'etape') and self.etape.nom == 'DEFI_FONCTION' : + 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'] 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 fichier de commandes courant.") + return [lx, ly] + + def Absc(self): + """Retourne la liste des abscisses""" + return self.Valeurs()[0] + + def Ordo(self): + """Retourne la liste des ordonnées""" + return self.Valeurs()[1] + + def __call__(self,val): + ### Pour EFICAS : substitution de l'instance de classe + ### parametre par sa valeur + if isinstance(val, ASSD): + val=val.valeur + ### + __ff=self.convert() + return __ff(val) + + +class para_sensi(fonction_sdaster): + pass + + +class fonction_c(fonction_class): + + def convert(self,arg='real'): + """ + Retourne un objet de la classe t_fonction ou t_fonction_c, + représentation python de la fonction complexe + """ + import numpy + from Cata_Utils.t_fonction import t_fonction, t_fonction_c + class_fonction = t_fonction + if arg == 'complex': + class_fonction = t_fonction_c + absc = self.Absc() + para = self.Parametres() + if arg == 'real': + ordo = self.Ordo() + elif arg == 'imag': + ordo = self.OrdoImg() + elif arg == 'modul': + ordo = numpy.sqrt(numpy.array(self.Ordo())**2 + numpy.array(self.OrdoImg())**2) + elif arg == 'phase': + ordo = numpy.arctan2(numpy.array(self.OrdoImg()), numpy.array(self.Ordo())) * 180. / pi + elif arg == 'complex': + ordo = map(complex,self.Ordo(),self.OrdoImg()) + + return class_fonction(self.Absc(), ordo, self.Parametres(), nom=self.nom) + + def Valeurs(self) : + """ + Retourne trois listes de valeurs : abscisses, parties reelles et imaginaires. + """ + from Utilitai.Utmess import UTMESS + if self.accessible(): + vale = '%-19s.VALE' % self.get_name() + lbl = self.sdj.VALE.get() + if lbl == None: + UTMESS('F', 'SDVERI_2', valk=[vale]) + lbl = list(lbl) + dim=len(lbl)/3 + lx=lbl[0:dim] + lr=[] + li=[] + 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' \ + 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)] + lr=[lbl[i] for i in range(1,dim,3)] + li=[lbl[i] for i in range(2,dim,3)] + else: + raise Accas.AsException("Erreur (fonction_c.Valeurs) : ne fonctionne en " \ + "PAR_LOT='OUI' que sur des fonctions produites par DEFI_FONCTION " \ + "dans le jdc courant.") + return [lx, lr, li] + + def Absc(self): + """Retourne la liste des abscisses""" + return self.Valeurs()[0] + + def Ordo(self): + """Retourne la liste des parties réelles des ordonnées""" + return self.Valeurs()[1] + + def OrdoImg(self): + """Retourne la liste des parties imaginaires des ordonnées""" + return self.Valeurs()[2] + + def Trace(self,FORMAT='TABLEAU',**kargs): + """Tracé d'une fonction complexe""" + if not self.accessible(): + raise Accas.AsException("Erreur dans fonction_c.Trace en PAR_LOT='OUI'") + from Utilitai.Graph import Graph + para = self.Parametres() + gr=Graph() + gr.AjoutCourbe(Val=self.Valeurs(), + Lab=[para['NOM_PARA'], '%s_R' % para['NOM_RESU'], '%s_I' % para['NOM_RESU']], + Leg=os.linesep.join(self.sdj.TITR.get()) ) + gr.Trace(FORMAT=FORMAT,**kargs) + + def __call__(self,val): + ### Pour EFICAS : substitution de l'instance de classe + ### parametre par sa valeur + if isinstance(val, ASSD): + val=val.valeur + ### + __ff=self.convert(arg='complex') + return __ff(val) + + +class nappe_sdaster(fonction_class): + + def convert(self): + """ + Retourne un objet de la classe t_nappe, représentation python de la nappe + """ + from Cata_Utils.t_fonction import t_fonction, t_nappe + para = self.Parametres() + vale = self.Valeurs() + l_fonc = [] + i = 0 + for pf in para[1] : + para_f = {'INTERPOL' : pf['INTERPOL_FONC'], + 'PROL_DROITE' : pf['PROL_DROITE_FONC'], + 'PROL_GAUCHE' : pf['PROL_GAUCHE_FONC'], + 'NOM_PARA' : para[0]['NOM_PARA_FONC'], + 'NOM_RESU' : para[0]['NOM_RESU'], + } + l_fonc.append(t_fonction(vale[1][i][0],vale[1][i][1],para_f)) + i += 1 + return t_nappe(vale[0], l_fonc, para[0], nom=self.nom) + + def Valeurs(self): + """ + Retourne la liste des valeurs du parametre, + et une liste de couples (abscisses,ordonnees) de chaque fonction. + """ + from Utilitai.Utmess import UTMESS + if not self.accessible(): + raise Accas.AsException("Erreur dans nappe.Valeurs en PAR_LOT='OUI'") + nsd = '%-19s' % self.get_name() + dicv=aster.getcolljev(nsd+'.VALE') + # les cles de dicv sont 1,...,N (indice du parametre) + lpar=aster.getvectjev(nsd+'.PARA') + if lpar == None: + UTMESS('F', 'SDVERI_2', valk=[nsd+'.PARA']) + lval=[] + for k in range(len(dicv)): + lbl=dicv[k+1] + dim=len(lbl)/2 + lval.append([lbl[0:dim],lbl[dim:2*dim]]) + return [list(lpar),lval] + + def Parametres(self): + """ + Retourne un dictionnaire contenant les parametres de la nappe, + le type jeveux (NAPPE) n'est pas retourne, + le dictionnaire peut ainsi etre fourni a CALC_FONC_INTERP tel quel, + et une liste de dictionnaire des parametres de chaque fonction. + """ + from Utilitai.Utmess import UTMESS + if not self.accessible(): + raise Accas.AsException("Erreur dans nappe.Parametres en PAR_LOT='OUI'") + TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' } + objev = '%-19s.PROL' % self.get_name() + prol=aster.getvectjev(objev) + if prol == None: + UTMESS('F', 'SDVERI_2', valk=[objev]) + dico={ + 'INTERPOL' : [prol[1][0:3],prol[1][4:7]], + 'NOM_PARA' : prol[2][0:16].strip(), + 'NOM_RESU' : prol[3][0:16].strip(), + 'PROL_DROITE' : TypeProl[prol[4][1]], + 'PROL_GAUCHE' : TypeProl[prol[4][0]], + 'NOM_PARA_FONC' : prol[6][0:4].strip(), + } + lparf=[] + nbf=(len(prol)-7)/2 + for i in range(nbf): + dicf={ + 'INTERPOL_FONC' : [prol[7+i*2][0:3],prol[7+i*2][4:7]], + 'PROL_DROITE_FONC' : TypeProl[prol[8+i*2][1]], + 'PROL_GAUCHE_FONC' : TypeProl[prol[8+i*2][0]], + } + lparf.append(dicf) + return [dico,lparf] + + def Absc(self): + """Retourne la liste des abscisses""" + return self.Valeurs()[0] + + def Trace(self,FORMAT='TABLEAU',**kargs): + """Tracé d'une nappe""" + if not self.accessible(): + raise Accas.AsException("Erreur dans nappe.Trace en PAR_LOT='OUI'") + from Utilitai.Graph import Graph + gr=Graph() + lv=self.Valeurs()[1] + dp=self.Parametres()[0] + for lx,ly in lv: + gr.AjoutCourbe(Val=[lx,ly], Lab=[dp['NOM_PARA_FONC'],dp['NOM_RESU']], + Leg=os.linesep.join(self.sdj.TITR.get()) ) + gr.Trace(FORMAT=FORMAT,**kargs) + + def __call__(self,val1,val2): + ### Pour EFICAS : substitution de l'instance de classe + ### parametre par sa valeur + if isinstance(val1, ASSD): + val1=val1.valeur + if isinstance(val2, ASSD): + val2=val2.valeur + ### + __ff=self.convert() + return __ff(val1,val2) + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class fond_fiss(ASSD): + cata_sdj = "SD.sd_fond_fiss.sd_fond_fiss" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class gfibre_sdaster(ASSD): + cata_sdj = "SD.sd_gfibre.sd_gfibre" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class interf_dyna_clas(ASSD): + cata_sdj = "SD.sd_interf_dyna_clas.sd_interf_dyna_clas" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class list_inst(ASSD): + cata_sdj = "SD.sd_list_inst.sd_list_inst" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class listis_sdaster(ASSD): + cata_sdj = "SD.sd_listis.sd_listis" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class listr8_sdaster(ASSD): + cata_sdj = "SD.sd_listr8.sd_listr8" + + def Valeurs(self) : + """ + Retourne la liste des valeurs : [val1, ..., valN] + """ + if not self.accessible(): + raise Accas.AsException("Erreur dans listr8.Valeurs en PAR_LOT='OUI'") + from Utilitai.Utmess import UTMESS + t_vale = self.sdj.VALE.get() + if t_vale == None: + UTMESS('F', 'SDVERI_2', valk=[vale]) + return list(t_vale) + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +def VALE_triang2array(vect_VALE, dim, dtype=None): + """Conversion (par recopie) de l'objet .VALE decrivant une matrice pleine + par sa triangulaire sup en numpy.array plein. + """ + import numpy + 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 = 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 + numpy.transpose(valeur) + for i in range(dim): + valeur[i, i] = 0.5 * valeur[i, i] + return valeur + +class macr_elem_dyna(ASSD): + cata_sdj = "SD.sd_macr_elem_dyna.sd_macr_elem_dyna" + + def EXTR_MATR_GENE(self,typmat) : + """ retourne les valeurs des matrices generalisees reelles + 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 : numpy.array contenant les valeurs """ + import numpy + if not self.accessible(): + raise Accas.AsException("Erreur dans macr_elem_dyna.EXTR_MATR_GENE en PAR_LOT='OUI'") + + if (typmat=='MASS_GENE') : + macr_elem = self.sdj.MAEL_MASS + elif (typmat=='RIGI_GENE') : + macr_elem = self.sdj.MAEL_RAID + elif (typmat=='AMOR_GENE') : + macr_elem = self.sdj.MAEL_AMOR + else: + raise Accas.AsException("Le type de la matrice est incorrect") + + 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]) + return matrice + + def RECU_MATR_GENE(self,typmat,matrice) : + """ 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 + typmat='AMOR_GENE' pour obtenir la matrice d'amortissement generalisee + Attributs ne retourne rien """ + import numpy + if not self.accessible(): + raise Accas.AsException("Erreur dans macr_elem_dyna.RECU_MATR_GENE en PAR_LOT='OUI'") + + nommacr=self.get_name() + if (typmat=='MASS_GENE') : + macr_elem = self.sdj.MAEL_MASS + elif (typmat=='RIGI_GENE') : + macr_elem = self.sdj.MAEL_RAID + elif (typmat=='AMOR_GENE') : + macr_elem = self.sdj.MAEL_AMOR + else: + raise Accas.AsException("Le type de la matrice est incorrect") + nom_vale = macr_elem.VALE.nomj() + 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") + numpy.asarray(matrice) + + # On teste si la matrice python est de dimension 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]])<>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=numpy.zeros([int(taille)]) + for j in range(desc[1]+1): + for i in range(j): + k=j*(j-1)/2+i + tmp[k]=matrice[j-1,i] + aster.putvectjev(nom_vale,len(tmp),tuple(( + range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1) + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class macr_elem_stat(ASSD): + cata_sdj = "SD.sd_macr_elem_stat.sd_macr_elem_stat" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class maillage_sdaster(ASSD): + cata_sdj = "SD.sd_maillage.sd_maillage" + + def LIST_GROUP_NO(self) : + """ retourne la liste des groupes de noeuds sous la forme : + [ (gno1, nb noeuds gno1), ...] """ + if not self.accessible(): + raise Accas.AsException("Erreur dans maillage.LIST_GROUP_NO en PAR_LOT='OUI'") + dic_gpno = self.sdj.GROUPENO.get() + if dic_gpno is None: + return [] + return [(gpno.strip(),len(dic_gpno[gpno])) for gpno in dic_gpno] + + def LIST_GROUP_MA(self) : + """ retourne la liste des groupes de mailles sous la forme : + [ (gma1, nb mailles gma1, dime max des mailles gma1), ...] """ + if not self.accessible(): + raise Accas.AsException("Erreur dans maillage.LIST_GROUP_MA en PAR_LOT='OUI'") + ltyma = aster.getvectjev("&CATA.TM.NOMTM") + catama = aster.getcolljev("&CATA.TM.TMDIM") + dic_gpma = self.sdj.GROUPEMA.get() + if dic_gpma is None: + return [] + dimama = [catama[ltyma[ma-1]][0] for ma in self.sdj.TYPMAIL.get()] + ngpma = [] + for grp in dic_gpma.keys(): + dim = max([dimama[ma-1] for ma in dic_gpma[grp]]) + ngpma.append((grp.strip(), len(dic_gpma[grp]),dim)) + return ngpma + +class grille_sdaster(maillage_sdaster): + cata_sdj = "SD.sd_grille.sd_grille" + +class squelette(maillage_sdaster): + cata_sdj = "SD.sd_squelette.sd_squelette" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class mater_sdaster(ASSD): + cata_sdj = "SD.sd_mater.sd_mater" + + def RCVALE(self, phenomene, nompar=(), valpar=(), nomres=(), stop=1): + """Appel à la routine fortran RCVALE pour récupérer les valeurs des + propriétés du matériau. + """ + if not self.accessible(): + raise Accas.AsException("Erreur dans mater.RCVALE en PAR_LOT='OUI'") + from Utilitai.Utmess import UTMESS + # vérification des arguments + if not type(nompar) in (list, tuple): + nompar = [nompar,] + if not type(valpar) in (list, tuple): + valpar = [valpar,] + if not type(nomres) in (list, tuple): + nomres = [nomres,] + nompar = tuple(nompar) + valpar = tuple(valpar) + nomres = tuple(nomres) + if len(nompar) != len(valpar): + vk1=', '.join(nompar) + vk2=', '.join([repr(v) for v in valpar]) + UTMESS('F','SDVERI_4',valk=[vk1,vk2]) + if len(nomres) < 1: + UTMESS('F', 'SDVERI_5') + # appel à l'interface Python/C + return aster.rcvale(self.nom, phenomene, nompar, valpar, nomres, stop) + + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +class matr_asse(ASSD): + cata_sdj = "SD.sd_matr_asse.sd_matr_asse" + + def EXTR_MATR(self) : + """ retourne les valeurs de la matrice dans un format numpy + Attributs retourne + - self.valeurs : numpy.array contenant les valeurs """ + import numpy + from SD.sd_stoc_morse import sd_stoc_morse + + if not self.accessible(): + raise Accas.AsException("Erreur dans matr_asse.EXTR_MATR en PAR_LOT='OUI'") + + refa = numpy.array(self.sdj.REFA.get()) + ma=refa[0] + nu=refa[1] + smos = sd_stoc_morse(nu[:14]+'.SMOS') + + valm=self.sdj.VALM.get() + smhc=smos.SMHC.get() + smdi=smos.SMDI.get() + + sym=len(valm)==1 + dim=len(smdi) + nnz=smdi[dim-1] + + triang_sup = numpy.array(valm[1]) + if sym: + triang_inf = triang_sup + else: + triang_inf = numpy.array(valm[2]) + + if type(valm[1][0]) == type(1.j) : + dtype=complex + else : + dtype=float + valeur=numpy.zeros([dim, dim], dtype=dtype) + + jcol=1 + for kterm in range(1,nnz+1): + ilig=smhc[kterm-1] + if (smdi[jcol-1] < kterm): + jcol=jcol+1 + valeur[jcol-1,ilig-1]=triang_inf[kterm-1] + valeur[ilig-1,jcol-1]=triang_sup[kterm-1] + + return valeur + +class matr_asse_gd(matr_asse): + cata_sdj = "SD.sd_matr_asse_gene.sd_matr_asse_gene" + +class matr_asse_depl_c(matr_asse_gd): + pass + +class matr_asse_depl_r(matr_asse_gd): + pass + +class matr_asse_pres_c(matr_asse_gd): + pass + +class matr_asse_pres_r(matr_asse_gd): + pass + +class matr_asse_temp_c(matr_asse_gd): + pass + +class matr_asse_temp_r(matr_asse_gd): + pass +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +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 numpy.array plein. + """ + import numpy + # stockage symetrique ou non (triang inf+sup) + sym = len(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 = 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 + valeur[i-1, j-1]=triang_inf[k-1] + valeur[j-1, i-1]=triang_sup[k-1] + return valeur + +def VALM_diag2array(dict_VALM, dim, dtype=None): + """Conversion (par recopie) de l'objet .VALM decrivant une matrice + diagonale en numpy.array plein. + """ + import numpy + diag = numpy.array(dict_VALM[1]) + assert dim == len(diag), 'Dimension incorrecte : %d != %d' % (dim, len(diag)) + valeur=numpy.zeros([dim, dim], dtype=dtype) + for i in range(dim): + valeur[i,i] = diag[i] + return valeur + +class matr_asse_gene(ASSD): + cata_sdj = "SD.sd_matr_asse_gene.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 numpyal Array + Attributs retourne + - 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'") + import numpy + + desc=numpy.array(self.sdj.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.sdj.VALM.get(), desc[1]) + + # Si le stockage est diagonal + elif desc[2]==1 : + valeur = VALM_diag2array(self.sdj.VALM.get(), desc[1]) + + # Sinon on arrete tout + else: + raise KeyError + return valeur + + def RECU_MATR_GENE(self,matrice) : + """ envoie les valeurs d'un tableau numpy dans des matrices + generalisees reelles definies dans jeveux + Attributs ne retourne rien """ + import numpy + if not self.accessible(): + raise Accas.AsException("Erreur dans matr_asse_gene.RECU_MATR_GENE en PAR_LOT='OUI'") + + ncham=self.get_name() + desc=numpy.array(self.sdj.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") + numpy.asarray(matrice) + + # On teste si la dimension de la matrice python est 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]])<>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=numpy.zeros([int(taille)]) + for j in range(desc[1]+1): + for i in range(j): + k=j*(j-1)/2+i + tmp[k]=matrice[j-1,i] + aster.putcolljev('%-19s.VALM' % ncham,len(tmp),tuple((\ + range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1) + # Si le stockage est diagonal + elif desc[2]==1 : + tmp=numpy.zeros(desc[1]) + for j in range(desc[1]): + tmp[j]=matrice[j,j] + aster.putcolljev('%-19s.VALM' % ncham,len(tmp),tuple((\ + range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1) + # Sinon on arrete tout + else: + raise KeyError + return + +class matr_asse_gene_c(matr_asse_gene): + def EXTR_MATR_GENE(self) : + """ retourne les valeurs de la matrice generalisee complexe + dans un format numpy + Attributs retourne + - self.valeurs : numpy.array contenant les valeurs """ + import numpy + if not self.accessible(): + raise Accas.AsException("Erreur dans matr_asse_gene_c.EXTR_MATR_GENE en PAR_LOT='OUI'") + + desc = numpy.array(self.sdj.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.sdj.VALM.get(), desc[1], complex) + + # Si le stockage est diagonal + elif desc[2]==1 : + valeur = VALM_diag2array(self.sdj.VALM.get(), desc[1], complex) + + # Sinon on arrete tout + else: + raise KeyError + return valeur + + def RECU_MATR_GENE(self,matrice) : + """ envoie les valeurs d'un tableau numpy dans des matrices + generalisees reelles definies dans jeveux + Attributs ne retourne rien """ + import numpy + if not self.accessible(): + raise Accas.AsException("Erreur dans matr_asse_gene_c.RECU_MATR_GENE en PAR_LOT='OUI'") + + numpy.asarray(matrice) + ncham=self.get_name() + desc=numpy.array(self.sdj.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") + numpy.asarray(matrice) + + # On teste si la dimension de la matrice python est 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]])<>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=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 + tmpr[k]=matrice[j-1,i].real + tmpc[k]=matrice[j-1,i].imag + aster.putvectjev('%-19s.VALM' % ncham, len(tmpr), tuple((\ + range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1) + # Si le stockage est diagonal + elif desc[2]==1 : + 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 + aster.putvectjev('%-19s.VALM' % ncham,len(tmpr),tuple((\ + range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1) + # Sinon on arrete tout + else: + raise KeyError + return +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class matr_elem(ASSD): + cata_sdj = "SD.sd_matr_elem.sd_matr_elem" + +class matr_elem_depl_c(matr_elem): + pass + +class matr_elem_depl_r(matr_elem): + pass + +class matr_elem_pres_c(matr_elem): + pass + +class matr_elem_temp_r(matr_elem): + pass + + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class melasflu_sdaster(ASSD): + cata_sdj = "SD.sd_melasflu.sd_melasflu" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class mode_cycl(ASSD): + cata_sdj = "SD.sd_mode_cycl.sd_mode_cycl" + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class modele_gene(ASSD): + cata_sdj = "SD.sd_modele_gene.sd_modele_gene" + + def LIST_SOUS_STRUCT(self) : + """ retourne la liste des sous structures du modele generalise + la liste des macro-elements sous-jacents""" + if not self.accessible(): + raise Accas.AsException("Erreur dans modele_gene.LIST_SOUS_STRUCT en PAR_LOT='OUI'") + nommodgen=self.get_name() + ncham=nommodgen+(8-len(nommodgen))*' ' + ssno=aster.getvectjev(ncham+(14-len(ncham))*' '+'.MODG.SSNO') + ssme=aster.getcolljev(ncham+(14-len(ncham))*' '+'.MODG.SSME') + return [([ssno[ind], ssme[ind+1]]) for ind in range(len(ssno))] + + def LIST_LIAIS_STRUCT(self) : + """ retourne la liste des liaisons entre sous structures du modele generalise sous la forme : + [ (ss1, nom_liais1, ss2 , nom_liais2), ...] """ + if not self.accessible() : + raise Accas.AsException("Erreur dans modele_gene.LIST_LIAIS_STRUCT en PAR_LOT='OUI'") + nommodgen=self.get_name() + ncham=nommodgen+(8-len(nommodgen))*' ' + lidf=aster.getcolljev(ncham+(14-len(ncham))*' '+'.MODG.LIDF') + return [([(lidf[ind][indb]) for indb in range(4)]) for ind in lidf] + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class modele_sdaster(ASSD): + cata_sdj = "SD.sd_modele.sd_modele" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class nume_ddl_gene(ASSD): + cata_sdj = "SD.sd_nume_ddl.sd_nume_ddl" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class nume_ddl_sdaster(ASSD): + cata_sdj = "SD.sd_nume_ddl.sd_nume_ddl" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +class reel(ASSD): + def __init__(self, valeur=None, **args): + ASSD.__init__(self, **args) + self.valeur = valeur + + def __call__(self): + return self.valeur + + def __adapt__(self, validator): + if validator.name == "list": + # validateur liste,cardinalité + return (self, ) + elif validator.name == "type": + # validateur type + return validator.adapt(self.valeur or 0.) + else: + # validateur into et valid + return self + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class resultat_sdaster(ASSD): + cata_sdj = "SD.sd_resultat.sd_resultat" + + def LIST_CHAMPS (self) : + if not self.accessible(): + raise Accas.AsException("Erreur dans resultat.LIST_CHAMPS en PAR_LOT='OUI'") + return aster.GetResu(self.get_name(), "CHAMPS") + + def LIST_NOM_CMP (self) : + if not self.accessible(): + raise Accas.AsException("Erreur dans resultat.LIST_NOM_CMP en PAR_LOT='OUI'") + return aster.GetResu(self.get_name(), "COMPOSANTES") + + def LIST_VARI_ACCES (self) : + if not self.accessible(): + raise Accas.AsException("Erreur dans resultat.LIST_VARI_ACCES en PAR_LOT='OUI'") + return aster.GetResu(self.get_name(), "VARI_ACCES") + + def LIST_PARA (self) : + if not self.accessible(): + raise Accas.AsException("Erreur dans resultat.LIST_PARA en PAR_LOT='OUI'") + return aster.GetResu(self.get_name(), "PARAMETRES") + +class resultat_jeveux(resultat_sdaster): + """Classe permettant d'accéder à un resultat jeveux qui n'a pas d'ASSD associée, + c'est le cas des concepts résultats (table, evol_xxxx) dérivés.""" + def __init__(self, nom_jeveux): + resultat_sdaster.__init__(self) + self.set_name(nom_jeveux) + +class resultat_dyn(resultat_sdaster): + cata_sdj = "SD.sd_resultat_dyn.sd_resultat_dyn" + +class mode_meca(resultat_dyn): + cata_sdj = "SD.sd_mode_meca.sd_mode_meca" + +class base_modale(resultat_dyn): + cata_sdj = "SD.sd_base_modale.sd_base_modale" + + +class acou_harmo(resultat_dyn): pass +class dyna_harmo(resultat_dyn): pass +class dyna_trans(resultat_dyn): pass +class harm_gene(resultat_dyn): pass +class mode_acou(resultat_dyn): pass +class mode_flamb(resultat_dyn): pass +class mode_gene(resultat_dyn): pass + +class comb_fourier(resultat_sdaster): pass +class fourier_elas(resultat_sdaster): pass +class fourier_ther(resultat_sdaster): pass +class mult_elas(resultat_sdaster): pass +class theta_geom(resultat_sdaster): pass + +# resultat_sdaster/evol_sdaster : +class evol_sdaster(resultat_sdaster): pass +class evol_char(evol_sdaster): pass +class evol_elas(evol_sdaster): pass +class evol_noli(evol_sdaster): pass +class evol_ther(evol_sdaster): pass +class evol_varc(evol_sdaster): pass + +# resultat_sdaster/mode_meca : +class mode_meca_c(mode_meca): pass +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class sd_feti_sdaster(ASSD): + cata_sdj = "SD.sd_feti.sd_feti" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class spectre_sdaster(ASSD): + cata_sdj = "SD.sd_spectre.sd_spectre" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class surface_sdaster(ASSD): + cata_sdj = "SD.sd_surface.sd_surface" +#& MODIF ENTETE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class table_sdaster(ASSD): + cata_sdj = "SD.sd_table.sd_table" + + def __getitem__(self, key): + """Retourne la valeur d'une cellule de la table. + Exemple : TAB['INST', 1] retourne la 1ère valeur de la colonne 'INST'.""" + from Utilitai.Utmess import UTMESS + if not self.accessible(): + raise Accas.AsException("Erreur dans table.__getitem__ en PAR_LOT='OUI'") + assert len(key) == 2 + para, numlign = key + tabnom = self.sdj.TBLP.get() + try: + i = tabnom.index('%-24s' % para) + resu = aster.getvectjev(tabnom[i + 2]) + exist = aster.getvectjev(tabnom[i + 3]) + assert resu is not None + assert exist is not None + assert exist[numlign - 1] != 0 + res = resu[numlign - 1] + except (IndexError, AssertionError): + # pour __getitem__, il est plus logique de retourner KeyError. + raise KeyError + return res + + def TITRE(self): + """Retourne le titre d'une table Aster + (Utile pour récupérer le titre et uniquement le titre d'une table dont + on souhaite manipuler la dérivée). + """ + if not self.accessible(): + raise Accas.AsException("Erreur dans table.TITRE en PAR_LOT='OUI'") + #titj = aster.getvectjev('%-19s.TITR' % self.get_name()) + titj = self.sdj.TITR.get() + if titj != None: + titr = '\n'.join(titj) + else: + titr = '' + return titr + + def EXTR_TABLE(self, para=None) : + """Produit un objet Table à partir du contenu d'une table Aster. + On peut limiter aux paramètres listés dans 'para'. + """ + def Nonefy(l1,l2) : + if l2 == 0: + return None + else: + return l1 + if not self.accessible(): + raise Accas.AsException("Erreur dans table.EXTR_TABLE en PAR_LOT='OUI'") + from Utilitai.Table import Table + # titre + titr = self.TITRE() + # récupération des paramètres + #v_tblp = aster.getvectjev('%-19s.TBLP' % self.get_name()) + v_tblp = self.sdj.TBLP.get() + if v_tblp == None: + # retourne une table vide + return Table(titr=titr, nom=self.nom) + tabnom=list(v_tblp) + nparam=len(tabnom)/4 + lparam=[tabnom[4*i:4*i+4] for i in range(nparam)] + # restriction aux paramètres demandés + if para is not None: + if type(para) not in (list, tuple): + para = [para, ] + para = [p.strip() for p in para] + restr = [] + for ip in lparam: + if ip[0].strip() in para: + restr.append(ip) + lparam = restr + dval={} + # liste des paramètres et des types + lpar=[] + ltyp=[] + for i in lparam : + value=list(aster.getvectjev(i[2])) + exist=aster.getvectjev(i[3]) + dval[i[0].strip()] = map(Nonefy, value, exist) + lpar.append(i[0].strip()) + ltyp.append(i[1].strip()) + n=len(dval[lpar[0]]) + # contenu : liste de dict + lisdic=[] + for i in range(n) : + d={} + for p in lpar: + d[p]=dval[p][i] + lisdic.append(d) + return Table(lisdic, lpar, ltyp, titr, self.nom) + +class table_fonction(table_sdaster): + """Table contenant en plus une colonne FONCTION et/ou FONCTION_C dont les + valeurs des cellules sont des noms de fonction_sdaster ou fonction_c.""" + +class table_jeveux(table_sdaster): + """Classe permettant d'accéder à une table jeveux qui n'a pas d'ASSD associée, + c'est le cas des concepts résultats (table, evol_xxxx) dérivés.""" + def __init__(self, nom_jeveux): + table_sdaster.__init__(self) + self.set_name(nom_jeveux) + +class table_fonction(table_sdaster): + """Table contenant une colonne FONCTION et/ou FONCTION_C dont les + valeurs des cellules sont des noms de fonction_sdaster ou + fonction_c.""" + cata_sdj = "SD.sd_table_fonction.sd_table_fonction" + +class table_container(table_sdaster): + """Table contenant les colonnes NOM_OBJET, TYPE_OBJET et NOM_SD.""" + cata_sdj = "SD.sd_table_container.sd_table_container" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class tran_gene(ASSD): + cata_sdj = "SD.sd_tran_gene.sd_tran_gene" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class type_flui_stru(ASSD): + cata_sdj = "SD.sd_type_flui_stru.sd_type_flui_stru" +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class vect_asse_gene(ASSD): + cata_sdj = "SD.sd_cham_gene.sd_cham_gene" + + def EXTR_VECT_GENE_R(self) : + """ retourne les valeurs du vecteur generalisee + dans un format numpy + Attributs retourne + - self.valeurs : numpy.array contenant les valeurs """ + import numpy + 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=numpy.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.VALE')) + valeur = numpy.array(self.sdj.VALE.get()) + return valeur + + def RECU_VECT_GENE_R(self, vecteur) : + """ 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'") + import numpy + numpy.asarray(vecteur) + ncham=self.get_name() + ncham=ncham+(8-len(ncham))*' ' + #desc=numpy.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC')) + desc = numpy.array(self.sdj.DESC.get()) + # 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] != 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) + return + + def EXTR_VECT_GENE_C(self) : + """ retourne les valeurs du vecteur generalisee + dans un format numpy + Attributs retourne + - self.valeurs : numpy.array contenant les valeurs """ + import numpy + 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=numpy.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.VALE'), complex) + valeur=numpy.array(self.sdj.VALE.get(), complex) + + return valeur + + def RECU_VECT_GENE_C(self,vecteur) : + """ 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'") + import numpy + numpy.asarray(vecteur) + ncham=self.get_name() + ncham=ncham+(8-len(ncham))*' ' + 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]<>numpy.shape(vecteur)[0] : + raise Accas.AsException("La taille du vecteur python est incorrecte") + tmpr=vecteur.real + tmpc=vecteur.imag + aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE', + len(tmpr), + tuple(range(1, len(tmpr)+1)), + tuple(tmpr), + tuple(tmpc), + 1) + return + +#& MODIF ENTETE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +class vect_elem(ASSD): + cata_sdj = "SD.sd_vect_elem.sd_vect_elem" + +class vect_elem_depl_r(vect_elem): + pass + +class vect_elem_pres_r(vect_elem): + pass + +class vect_elem_pres_c(vect_elem): + pass + +class vect_elem_temp_r(vect_elem): + pass +#& MODIF COMMUN DATE 26/07/2011 AUTEUR ABBAS M.ABBAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS + +def C_AFFICHAGE() : return FACT(statut='f',max=1, + INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + INFO_TEMPS = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + UNITE = SIMP(statut='f',typ='I',val_min=1), + ); +#& MODIF COMMUN DATE 21/02/2011 AUTEUR ABBAS M.ABBAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS +def C_ARCHIVAGE() : return FACT(statut='d',max=1, + regles = (EXCLUS('PAS_ARCH','LIST_INST','INST'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_ARCH = SIMP(statut='f',typ='I' ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + DETR_NUME_SUIV = SIMP(statut='f',typ='TXM',into=("OUI",)), + CHAM_EXCLU = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',), +); +#& MODIF COMMUN DATE 26/09/2011 AUTEUR MACOCCO K.MACOCCO +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT +def C_COMP_ELAS( COMMAND ) : #COMMUN# + + assert COMMAND in ('MACR_ASCOUF_CALC','MACR_ASPIC_CALC','CALC_G','POST_GP', + 'CALC_POINT_MAT','SIMU_POINT_MAT', 'DYNA_NON_LINE','STAT_NON_LINE','CALCUL',) + + kwargs = {} + +# ---------------------------------------------------------------------------------------------------------------------------------- +# RELATION +# ---------------------------------------------------------------------------------------------------------------------------------- + # commandes pour lesquelles on ne peut pas choisir une relation de type 1d + if COMMAND in ('CALC_G','POST_GP','CALC_POINT_MAT','SIMU_POINT_MAT' ): + kwargs['RELATION'] = SIMP(statut='o',typ='TXM',defaut="ELAS", + into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS","ELAS_HYPER")) + + # commandes pour lesquelles tout type de relation est possible + elif COMMAND in ('DYNA_NON_LINE','STAT_NON_LINE','CALCUL',): + kwargs['RELATION'] = SIMP(statut='o',typ='TXM',defaut="ELAS", + into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC", + "ELAS_VMIS_PUIS","ELAS_HYPER","ELAS_POUTRE_GR","CABLE")) + + # cas particulier de MACR_ASCOUF/ASPIC_CALC : on limite volontairement le choix pour ne pas perturber l'utilisateur + # mais theoriquement, toutes les lois disponibles pour CALC_G le sont aussi pour MACR_ASCOUF/ASPIC_CALC + elif COMMAND in ('MACR_ASCOUF_CALC','MACR_ASPIC_CALC'): + kwargs['RELATION'] = SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC")) + + +# ---------------------------------------------------------------------------------------------------------------------------------- +# DEFORMATION +# ---------------------------------------------------------------------------------------------------------------------------------- + + # commandes pour lesquelles on ne peut pas choisir les grandes deformations + if COMMAND in ('CALC_POINT_MAT','MACR_ASCOUF_CALC','MACR_ASPIC_CALC'): + kwargs['DEFORMATION'] =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT",)) + + # commandes pour lesquelles on peut choisir tout type de deformation + elif COMMAND in ('DYNA_NON_LINE','STAT_NON_LINE','CALCUL','POST_GP','CALC_G','SIMU_POINT_MAT', ): + kwargs['DEFORMATION'] =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",)) + +# ---------------------------------------------------------------------------------------------------------------------------------- +# INTEGRATION (RESI_INTE_RELA, ITER_INTE_MAXI, ALGO_INTE) +# ---------------------------------------------------------------------------------------------------------------------------------- + + kwargs['RESI_INTE_RELA'] =SIMP(statut='f',typ='R',defaut= 1.0E-6) + kwargs['ITER_INTE_MAXI'] =SIMP(statut='f',typ='I',defaut= 10 ) + kwargs['ALGO_INTE'] =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE",)) + +# ---------------------------------------------------------------------------------------------------------------------------------- +# LOCALISATION +# ---------------------------------------------------------------------------------------------------------------------------------- + + # commandes pour lesquelles la localisation n'a pas de sens + # 'CALC_POINT_MAT','SIMU_POINT_MAT' + + # commandes pour lesquelles la localisation est automatique + # 'MACR_ASCOUF_CALC','MACR_ASPIC_CALC' + + # commandes pour lesquelles on peut choisir la localisation + if COMMAND in ('DYNA_NON_LINE','STAT_NON_LINE','CALC_G','POST_GP','CALCUL'): + kwargs['regles'] = (PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),) + kwargs['TOUT'] =SIMP(statut='f',typ='TXM',into=("OUI",) ) + kwargs['GROUP_MA'] =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**') + kwargs['MAILLE'] =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**') + +# ---------------------------------------------------------------------------------------------------------------------------------- +# DIVERS +# ---------------------------------------------------------------------------------------------------------------------------------- + + + + mcfact = FACT(statut='f',max='**', **kwargs) + + return mcfact +#& MODIF COMMUN DATE 19/09/2011 AUTEUR GRANET S.GRANET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PROIX J.M.PROIX +def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN# + RELATION =SIMP( statut='o',typ='TXM',defaut="ELAS",into=C_RELATION()), + b_monox = BLOC(condition = "RELATION == 'MONOCRISTAL' ", + fr="SD issue de DEFI_COMPOR", + COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),), + b_polyx = BLOC(condition = "RELATION == 'POLYCRISTAL' ", + fr="SD issue de DEFI_COMPOR", + COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),), + b_zmat = BLOC(condition = "RELATION == 'ZMAT' ", + fr="Comportement de la bibliotheque Zmat", + NB_VARI =SIMP(statut='o',typ='I',max=1), + UNITE =SIMP(statut='o',typ='I',max=1),), + b_umat = BLOC(condition = "RELATION == 'UMAT' ", + fr="Comportement utilisateur de type UMAT", + NB_VARI =SIMP(statut='o',typ='I',max=1,fr="Nombre de variables internes"), + LIBRAIRIE = SIMP(statut='o', typ='TXM',validators=LongStr(1,128), + fr="Chemin vers la bibliothèque dynamique définissant le comportement UMAT"), + NOM_ROUTINE = SIMP(statut='o', typ='TXM', + fr="Nom de la routine UMAT dans la bibliothèque"), + ), + +# KITs + b_kit_ddi = BLOC(condition = "RELATION == 'KIT_DDI' ", + fr="relations de couplage fluage-plasticite", + RELATION_KIT =SIMP(statut='o',typ='TXM',min=2,max=2,validators=NoRepeat(), + into=( + "VMIS_CINE_LINE", + "VMIS_ISOT_TRAC", + "VMIS_ISOT_LINE", + "VMIS_ISOT_PUIS", + "GLRC_DM", + "GRANGER_FP", + "GRANGER_FP_INDT", + "GRANGER_FP_V", + "BETON_UMLV_FP", + "ROUSS_PR", + "BETON_DOUBLE_DP", + "ENDO_ISOT_BETON", + "MAZARS" + ),), + ), + b_kit_thm = BLOC(condition = "RELATION in ['KIT_HHM','KIT_HH','KIT_H','KIT_HM','KIT_THHM', \ + 'KIT_THH','KIT_THM','KIT_THV']", + fr="lois de comportements thermo-hydro-mecaniques", + RELATION_KIT =SIMP(statut='o',typ='TXM',max=9,validators=NoRepeat(), + into=( +# MECA + "ELAS", + "CJS", + "HUJEUX", + "CAM_CLAY", + "BARCELONE", + "LAIGLE", + "LETK", + "DRUCK_PRAGER", + "DRUCK_PRAG_N_A", + "VISC_DRUC_PRAG", + "ELAS_GONF", + "HOEK_BROWN_EFF", + "HOEK_BROWN_TOT", + "MAZARS", + "ENDO_ISOT_BETON", + "JOINT_BANDIS", + "CZM_LIN_REG", + "CZM_EXP_REG", +# THMC + "GAZ", + "LIQU_SATU", + "LIQU_GAZ_ATM", + "LIQU_VAPE_GAZ", + "LIQU_AD_GAZ_VAPE", + "LIQU_AD_GAZ", + "LIQU_VAPE", + "LIQU_GAZ", +# HYDR + "HYDR_UTIL", + "HYDR_VGM", + "HYDR_VGC", + "HYDR", + "HYDR_ENDO", + ),), + ), + b_kit_meta = BLOC(condition = "RELATION in ('META_LEMA_ANI','META_P_CL_PT_RE','META_P_CL_PT','META_P_CL_RE','META_P_CL',\ + 'META_P_IL_PT_RE','META_P_IL_PT','META_P_IL_RE','META_P_IL','META_P_INL_PT_RE','META_P_INL_PT','META_P_INL_RE','META_P_INL',\ + 'META_V_CL_PT_RE','META_V_CL_PT','META_V_CL_RE','META_V_CL','META_V_IL_PT_RE','META_V_IL_PT','META_V_IL_RE','META_V_IL',\ + 'META_V_INL_PT_RE','META_V_INL_PT','META_V_INL_RE','META_V_INL')", + fr="nombre de phases metallurgiques", + RELATION_KIT =SIMP(statut='o',typ='TXM',max=1,validators=NoRepeat(), + into=("ACIER","ZIRC"),), + ), + + DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT", + into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GREEN_REAC","GDEF_LOG")), + ALGO_C_PLAN =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)), + RESI_DEBO_MAXI =SIMP(statut='f',typ='R',fr="Critère d'arret absolu pour assurer la condition de contraintes planes",), + + b_resideborst =BLOC(condition = " RESI_DEBO_MAXI == None ", + fr="Critère d'arret relatif pour assurer la condition de contraintes planes", + RESI_DEBO_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), + ), + + ALGO_1D =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)), + ITER_MAXI_DEBORST =SIMP(statut='f',typ='I',defaut= 1), + RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6), + ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 20 ), + + b_redec_local = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')", + fr="Nombre de redécoupages internes du pas de temps", + ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ), + ), + + ALGO_INTE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT", + "NEWTON", "NEWTON_RELI", "NEWTON_PERT", "RUNGE_KUTTA", + "SPECIFIQUE", "SANS_OBJET")), + + TYPE_MATR_TANG =SIMP(statut='f',typ='TXM',into=("PERTURBATION","VERIFICATION","TANGENTE_SECANTE")), + + b_perturb =BLOC(condition = " (TYPE_MATR_TANG != None) and (TYPE_MATR_TANG != 'TANGENTE_SECANTE') ", + fr="Calcul de la matrice tangente par perturbation, valeur de la perturbation", + VALE_PERT_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-5), + ), + + b_tangsec = BLOC(condition = " TYPE_MATR_TANG == 'TANGENTE_SECANTE' ", + fr="Modification evolutive de la matrice tangente/secante", + SEUIL =SIMP(statut='f',typ='R',defaut= 3. ), + AMPLITUDE =SIMP(statut='f',typ='R',defaut= 1.5 ), + TAUX_RETOUR =SIMP(statut='f',typ='R',defaut= 0.05 ), + ), + + PARM_THETA =SIMP(statut='f',typ='R',val_min=0.,val_max=1., defaut= 1.), + PARM_ALPHA =SIMP(statut='f',typ='R',defaut= 1. ), + + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + + ) ; +#& MODIF COMMUN DATE 06/12/2010 AUTEUR ABBAS M.ABBAS +# 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS +def C_CONVERGENCE() : return FACT(statut='d', + regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA','RESI_COMP_RELA'),), + b_refe_rela =BLOC(condition = "RESI_REFE_RELA != None", + regles=(AU_MOINS_UN('SIGM_REFE','EPSI_REFE','FLUX_THER_REFE','FORC_REFE', + 'FLUX_HYD1_REFE','FLUX_HYD2_REFE','VARI_REFE','DEPL_REFE','LAGR_REFE'),), + FORC_REFE =SIMP(statut='f',typ='R',min=2,max=2, + fr="Force et Moment de référence pour les éléments de structure."), + SIGM_REFE =SIMP(statut='f',typ='R'), + DEPL_REFE =SIMP(statut='f',typ='R'), + EPSI_REFE =SIMP(statut='f',typ='R'), + FLUX_THER_REFE =SIMP(statut='f',typ='R'), + FLUX_HYD1_REFE =SIMP(statut='f',typ='R'), + FLUX_HYD2_REFE =SIMP(statut='f',typ='R'), + VARI_REFE =SIMP(statut='f',typ='R'), + LAGR_REFE =SIMP(statut='f',typ='R'), + ), + RESI_REFE_RELA =SIMP(statut='f',typ='R'), + RESI_GLOB_MAXI =SIMP(statut='f',typ='R'), + RESI_GLOB_RELA =SIMP(statut='f',typ='R'), + RESI_COMP_RELA =SIMP(statut='f',typ='R'), + ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10), + ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25), + TYPE =SIMP(statut='f',typ='TXM',defaut="PIC",into=("PIC","PLATEAU")), + b_plateau =BLOC(condition = "TYPE == 'PLATEAU' ", + + PLATEAU_ITER =SIMP(statut='f',typ='I',defaut=3, val_min =2), + PLATEAU_RELA =SIMP(statut='f',typ='R',defaut=1E-3), + ), + + + ARRET =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + ); +#& MODIF COMMUN DATE 06/12/2010 AUTEUR ABBAS M.ABBAS +# 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS +def C_INCREMENT() : return FACT(statut='o', + regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), + EXCLUS('NUME_INST_FIN','INST_FIN'),), + LIST_INST =SIMP(statut='o',typ=(listr8_sdaster,list_inst)), + NUME_INST_INIT =SIMP(statut='f',typ='I'), + INST_INIT =SIMP(statut='f',typ='R'), + NUME_INST_FIN =SIMP(statut='f',typ='I'), + INST_FIN =SIMP(statut='f',typ='R'), + ERRE_TEMPS =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON", + fr="Adaptation temporelle pour les modélisations HM instationnaires", + ang="Time adaptation for unstationary HM models"), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), + ); +#& MODIF COMMUN DATE 06/12/2010 AUTEUR ABBAS M.ABBAS +# 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS +def C_NEWTON() : return FACT(statut='d', + REAC_INCR =SIMP(statut='f',typ='I',defaut= 1,val_min=0), + PREDICTION =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ), + MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ), + PAS_MINI_ELAS =SIMP(statut='f',typ='R',val_min=0.0), + REAC_ITER =SIMP(statut='f',typ='I',defaut=0,val_min=0), + REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0,val_min=0), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + ); +#& MODIF COMMUN DATE 11/10/2011 AUTEUR MEUNIER S.MEUNIER +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +# ce fichier contient la liste des "into" possibles pour le mot cle NOM_CHAM +# c'est a dire les noms de champs des SD RESULTAT (DATA de la routine RSCRSD) + +def C_NOM_CHAM_INTO( *l_typ_cham ): #COMMUN# + """Cette fonction retourne la liste des "into" possibles pour le mot-clé NOM_CHAM. + C'est à dire les noms de champs des SD RESULTAT (DATA de la routine RSCRSD). + l_typ_cham : rien ou un ou plusieurs parmi 'ELGA', 'ELNO', 'NOEU', 'ELEM'. + """ + # Liste de tout les champs + l_tout_cham = [ + "ACCE", + "ACCE_ABSOLU", + "ALPH0_ELGA_EPSP", + "ALPHP_ELGA_ALPH0", + "COMPORTEMENT", + "COMPORTHER", + "DEDE_ELNO", + "DEDE_NOEU", + "DEGE_ELNO", + "DEGE_ELGA", + "DEGE_NOEU", + "DEPL", + "DEPL_ABSOLU", + "DEPL_VIBR", + "DERA_ELGA", + "DERA_ELNO", + "DERA_NOEU", + "DESI_ELNO", + "DESI_NOEU", + "DETE_ELNO", + "DETE_NOEU", + "DISS_ELGA", + "DISS_ELNO", + "DISS_NOEU", + "DIVU", + "DURT_ELNO", + "DURT_NOEU", + "ECIN_ELEM", + "EFCA_ELNO", + "EFCA_NOEU", + "EFGE_ELGA", + "EFGE_ELNO", + "EFGE_NOEU", + "ENDO_ELGA", + "ENDO_ELNO", + "ENDO_NOEU", + "ENEL_ELGA", + "ENEL_ELNO", + "ENEL_NOEU", + "EPEQ_ELGA", + "EPEQ_ELNO", + "EPEQ_NOEU", + "EPFD_ELGA", + "EPFD_ELNO", + "EPFD_NOEU", + "EPFP_ELGA", + "EPFP_ELNO", + "EPFP_NOEU", + "EPME_ELGA", + "EPME_ELNO", + "EPMG_ELGA", + "EPMG_ELNO", + "EPMG_NOEU", + "EPMQ_ELGA", + "EPMQ_ELNO", + "EPMQ_NOEU", + "EPOT_ELEM", + "EPSA_ELNO", + "EPSA_NOEU", + "EPSG_ELGA", + "EPSG_ELNO", + "EPSG_NOEU", + "EPSI_ELGA", + "EPSI_ELNO", + "EPSI_NOEU", + "EPSP_ELGA", + "EPSP_ELNO", + "EPSP_NOEU", + "EPTQ_ELNO", + "EPTU_ELNO", + "EPVC_ELGA", + "EPVC_ELNO", + "EPVC_NOEU", + "ERME_ELEM", + "ERME_ELNO", + "ERME_NOEU", + "ERTH_ELEM", + "ERTH_ELNO", + "ERTH_NOEU", + "ERZ1_ELEM", + "ERZ2_ELEM", + "ETOT_ELEM", + "ETOT_ELGA", + "ETOT_ELNO", + "FERRAILLAGE", + "FLHN_ELGA", + "FLUX_ELGA", + "FLUX_ELNO", + "FLUX_NOEU", + "FORC_NODA", + "FSUR_2D", + "FSUR_3D", + "FVOL_2D", + "FVOL_3D", + "GRAD_NOEU_THETA", + "HYDR_ELNO", + "HYDR_NOEU", + "INDL_ELGA", + "INTE_ELNO", + "INTE_NOEU", + "IRRA", + "LANL_ELGA", + "META_ELGA_TEMP", + "META_ELNO", + "META_NOEU", + "MODE_FLAMB", + "PDIL_ELGA", + "PMPB_ELGA", + "PMPB_ELNO", + "PMPB_NOEU", + "PRAC_ELNO", + "PRAC_NOEU", + "PRES", + "PRME_ELNO", + "PTOT", + "QIRE_ELEM", + "QIRE_ELNO", + "QIRE_NOEU", + "QIZ1_ELEM", + "QIZ2_ELEM", + "REAC_NODA", + "SICA_ELNO", + "SICA_NOEU", + "SIEF_ELGA", + "SIEF_ELNO", + "SIEF_NOEU", + "SIEF_SENO_SEGA", + "SIEQ_ELGA", + "SIEQ_ELNO", + "SIEQ_NOEU", + "SIGM_ELGA", + "SIGM_ELNO", + "SIGM_NOEU", + "SING_ELEM", + "SING_ELNO", + "SIPM_ELNO", + "SIPO_ELNO", + "SIPO_NOEU", + "SIRO_ELEM", + "SITQ_ELNO", + "SITU_ELNO", + "SIZ1_NOEU", + "SIZ2_NOEU", + "SOUR_ELGA", + "SPMX_ELGA", + "STRX_ELGA", + "TEMP", + "THETA", + "VACO_ELNO", + "VAEX_ELGA", + "VAEX_ELNO", + "VAEX_NOEU", + "VALE_CONT", + "VARC_ELGA", + "VARI_ELGA", + "VARI_ELNO", + "VARI_NOEU", + "VATU_ELNO", + "VITE", + "VITE_ABSOLU", + "VITE_VENT", + ] + for typ in ('ELGA', 'ELNO', 'NOEU'): + for i in range(1, 11): + l_tout_cham.append('UT%02d_%s' % (i, typ)) + + # Si aucun argument n'est passe, on utilise tous les types de champs possibles + if len(l_typ_cham) == 0: + return tuple(l_tout_cham) + + l_ncham = [] + for typ in l_typ_cham : + for cham in l_tout_cham : + if typ in cham.split('_'): + l_ncham.append(cham) + return tuple(l_ncham) +#& MODIF COMMUN DATE 19/09/2011 AUTEUR PELLET J.PELLET +# RESPONSABLE DESROCHES X.DESROCHES +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# ce fichier contient la liste des noms des grandeurs de CODE_ASTER +def C_NOM_GRANDEUR() : return ( #COMMUN# +"ABSC_R", +"ADRSJEVE", +"ADRSJEVN", +"CAARPO", +"CACABL", +"CACOQU", +"CADISA", +"CADISK", +"CADISM", +"CAFI_R", +"CAGEBA", +"CAGEPO", +"CAGNBA", +"CAGNPO", +"CAMASS", +"CAORIE", +"CAPOUF", +"CARCRI", +"CASECT", +"CHLI_R", +"CODE_I", +"COEH_F", +"COEH_R", +"COMPOR", +"CORR_R", +"CRRU_R", +"DBEL_R", +"DCEL_I", +"DDLI_C", +"DDLI_F", +"DDLI_R", +"DDLM_C", +"DDLM_R", +"DEPL_C", +"DEPL_F", +"DEPL_R", +"DISS_R", +"DOMA_R", +"DURT_R", +"ENDO_R", +"ENER_R", +"EPSI_C", +"EPSI_F", +"EPSI_R", +"ERRE_R", +"FACY_R", +"FELECR", +"FER2_R", +"FISS_R", +"FLAPLA", +"FLUN_F", +"FLUN_R", +"FLUX_F", +"FLUX_R", +"FORC_C", +"FORC_F", +"FORC_R", +"FREQ_R", +"FTHM_F", +"FTHM_R", +"G", +"GEOM_R", +"G_DEPL_R", +"HARMON", +"HYDR_R", +"IMPE_C", +"IMPE_F", +"IMPE_R", +"INDL_R", +"INFC_R", +"INST_R", +"INTE_R", +"INTLOC", +"IRRA_R", +"ITECREL", +"ITEDEC", +"J", +"LISTMA", +"MACOMP", +"MASS_R", +"MATE_F", +"NBSP_I", +"NEUT_F", +"NEUT_I", +"NEUT_K16", +"NEUT_K24", +"NEUT_K8", +"NEUT_R", +"NUMC_I", +"NUMMOD", +"ONDE_F", +"ONDE_R", +"PESA_R", +"PDIL_R", +"PILO_K", +"PILO_R", +"POSI", +"PREC", +"PRES_C", +"PRES_F", +"PRES_R", +"RAYO_F", +"RAYO_R", +"RCCM_K", +"RCCM_R", +"RESCREL", +"RICE_TRA", +"ROTA_R", +"SECTION", +"SIEF_C", +"SIEF_R", +"SIZZ_R", +"SOUR_F", +"SOUR_R", +"SPMX_R", +"STRX_R", +"STAOUDYN", +"TEMP_C", +"TEMP_F", +"TEMP_R", +"THETA", +"VALO_R", +"VANL_R", +"VAR2_R", +"VARI_R", +"VENTCX_F", +"VNOR_C", +"VNOR_F", +"VOISIN", +"WEIBULL", +"XCONTAC", + ) +#& MODIF COMMUN DATE 20/06/2011 AUTEUR ABBAS M.ABBAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS + +def C_OBSERVATION() : return FACT(statut='f',max=99, + + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, + into=("VALE_CONT","FORC_NODA", + "DEPL","VITE","ACCE","TEMP", + "SIEF_ELGA","VARI_ELGA", + "DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",)), + + EVAL_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("MIN","MAX","MOY","VALE",),), + + NOM_CMP =SIMP(statut='o',typ='TXM',max=20), + EVAL_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("VALE","FORMULE",),), + + b_formule =BLOC(condition="(EVAL_CMP=='FORMULE')", + FORMULE = SIMP(statut='o',typ=formule,max=1), + ), + + b_cham_no =BLOC(condition="(NOM_CHAM=='DEPL') or \ + (NOM_CHAM=='VITE') or \ + (NOM_CHAM=='ACCE') or \ + (NOM_CHAM=='TEMP') or \ + (NOM_CHAM=='FORC_NODA') or \ + (NOM_CHAM=='VALE_CONT') or \ + (NOM_CHAM=='DEPL_ABSOLU') or \ + (NOM_CHAM=='VITE_ABSOLU') or \ + (NOM_CHAM=='ACCE_ABSOLU')", + regles =(UN_PARMI('NOEUD','GROUP_NO','GROUP_MA','MAILLE','TOUT')), + TOUT =SIMP(statut='d',typ='TXM',into=("OUI",) ), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + + + b_cham_elga =BLOC(condition="(NOM_CHAM=='SIEF_ELGA') or \ + (NOM_CHAM=='VARI_ELGA')", + regles =(UN_PARMI('GROUP_MA','MAILLE','TOUT')), + TOUT =SIMP(statut='d',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + EVAL_ELGA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("MIN","MAX","VALE",),), + b_elga_vale =BLOC(condition="(EVAL_ELGA=='VALE')", + POINT =SIMP(statut='o',typ='I' ,validators=NoRepeat(),max='**'), + SOUS_POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'), + ), + ), + + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + PAS_OBSE =SIMP(statut='f',typ='I'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + + + ); +#& MODIF COMMUN DATE 29/03/2007 AUTEUR GRANET S.GRANET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# ce fichier contient la liste des PARA possibles pour les fonctions et les nappes +def C_PARA_FONCTION() : return ( #COMMUN# + "DX","DY","DZ","DRX","DRY","DRZ","TEMP","TSEC", + "INST","X","Y","Z","EPSI","META","FREQ","PULS","DSP", + "AMOR","ABSC","SIGM","HYDR","SECH","PORO","SAT", + "PGAZ","PCAP","PLIQ","PVAP","PAD","VITE","ENDO", + "NORM","EPAIS","NEUT1","NEUT2",) +#& MODIF COMMUN DATE 01/02/2011 AUTEUR MASSIN P.MASSIN +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS +def C_PILOTAGE() : return FACT(statut='f', + regles=(EXCLUS('NOEUD','GROUP_NO'),PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TYPE =SIMP(statut='o',typ='TXM',into=("DDL_IMPO","LONG_ARC","PRED_ELAS","DEFORMATION", + "ANA_LIM","SAUT_IMPO","SAUT_LONG_ARC") ), + COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.0E+0), + EVOL_PARA =SIMP(statut='f',typ='TXM',defaut="SANS", into=("SANS","CROISSANT","DECROISSANT") ), + ETA_PILO_MAX =SIMP(statut='f',typ='R'), + ETA_PILO_MIN =SIMP(statut='f',typ='R'), + ETA_PILO_R_MAX =SIMP(statut='f',typ='R'), + ETA_PILO_R_MIN =SIMP(statut='f',typ='R'), + PROJ_BORNES =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + SELECTION =SIMP(statut='f',typ='TXM',defaut="NORM_INCR_DEPL", into=("RESIDU","ANGL_INCR_DEPL","NORM_INCR_DEPL") ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + FISSURE =SIMP(statut='f',typ=fiss_xfem ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + DIRE_PILO =SIMP(statut='f',typ='TXM',max='**'), + ); + +#& MODIF COMMUN DATE 06/12/2010 AUTEUR ABBAS M.ABBAS +# 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS +def C_RECH_LINEAIRE() : return FACT(statut='f', + METHODE =SIMP(statut='f',typ='TXM',defaut="CORDE",into=("CORDE","MIXTE","PILOTAGE") ), + RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ), + ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3,val_max=999), + ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20), + PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0), + RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2), + RHO_MAX =SIMP(statut='f',typ='R',defaut=1.0E+1), + RHO_EXCL =SIMP(statut='f',typ='R',defaut=0.9E-2,val_min=0.), + ); +#& MODIF COMMUN DATE 20/04/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PROIX J.M.PROIX +def C_RELATION() : return ( "ELAS", #COMMUN# + + "ARME", + "ASSE_CORN", + "BARCELONE", + "BETON_DOUBLE_DP", + "BETON_RAG", + "BETON_REGLE_PR", + "BETON_UMLV_FP", + "CAM_CLAY", + "CJS", + "CORR_ACIER", + "CZM_EXP", + "CZM_EXP_REG", + "CZM_FAT_MIX", + "CZM_LIN_REG", + "CZM_OUV_MIX", + "CZM_TAC_MIX", + "CZM_TRA_MIX", + "DIS_BILI_ELAS", + "DIS_CHOC", + "DIS_ECRO_CINE", + "DIS_GOUJ2E_ELAS", + "DIS_GOUJ2E_PLAS", + "DIS_GRICRA", + "DIS_VISC", + "DRUCK_PRAGER", + "DRUCK_PRAG_N_A", + "ELAS_GONF", + "ELAS_HYPER", + "ENDO_CARRE", + "ENDO_FRAGILE", + "ENDO_HETEROGENE", + "ENDO_ISOT_BETON", + "ENDO_ORTH_BETON", + "ENDO_SCALAIRE", + "GATT_MONERIE", + "GLRC_DAMAGE", + "GLRC_DM", + "GRANGER_FP", + "GRANGER_FP_INDT", + "GRANGER_FP_V", + "GRAN_IRRA_LOG", + "GRILLE_CINE_LINE", + "GRILLE_ISOT_LINE", + "GRILLE_PINTO_MEN", + "HOEK_BROWN", + "HOEK_BROWN_EFF", + "HOEK_BROWN_TOT", + "HUJEUX", + "IRRAD3M", + "JOINT_BA", + "JOINT_BANDIS", + "JOINT_MECA_RUPT", + "JOINT_MECA_FROT", + "KIT_DDI", + "KIT_HH", + "KIT_H", + "KIT_HHM", + "KIT_HM", + "KIT_THH", + "KIT_THHM", + "KIT_THM", + "KIT_THV", + "LABORD_1D", + "LAIGLE", + "LEMAITRE", + "LEMAITRE_IRRA", + "LEMA_SEUIL", + "LETK", + "LMARC_IRRA", + "MAZARS", + "META_LEMA_ANI", + "META_P_CL", + "META_P_CL_PT", + "META_P_CL_PT_RE", + "META_P_CL_RE", + "META_P_IL", + "META_P_IL_PT", + "META_P_IL_PT_RE", + "META_P_IL_RE", + "META_P_INL", + "META_P_INL_PT", + "META_P_INL_PT_RE", + "META_P_INL_RE", + "META_V_CL", + "META_V_CL_PT", + "META_V_CL_PT_RE", + "META_V_CL_RE", + "META_V_IL", + "META_V_IL_PT", + "META_V_IL_PT_RE", + "META_V_IL_RE", + "META_V_INL", + "META_V_INL_PT", + "META_V_INL_PT_RE", + "META_V_INL_RE", + "MONOCRISTAL", + "MULTIFIBRE", + "NORTON_HOFF", + "PINTO_MENEGOTTO", + "POLYCRISTAL", + "ROUSSELIER", + "ROUSS_PR", + "ROUSS_VISC", + "RUPT_FRAG", + "SANS", + "VENDOCHAB", + "VISC_ENDO_LEMA", + "VISCOCHAB", + "VISC_CIN1_CHAB", + "VISC_CIN2_CHAB", + "VISC_CIN2_MEMO", + "VISC_DRUC_PRAG", + "VISC_IRRA_LOG", + "VISC_ISOT_LINE", + "VISC_ISOT_TRAC", + "VISC_TAHERI", + "VMIS_ASYM_LINE", + "VMIS_CIN1_CHAB", + "VMIS_CIN2_CHAB", + "VMIS_CIN2_MEMO", + "VMIS_CINE_LINE", + "VMIS_ECMI_LINE", + "VMIS_ECMI_TRAC", + "VMIS_ISOT_LINE", + "VMIS_ISOT_PUIS", + "VMIS_ISOT_TRAC", + "VMIS_JOHN_COOK", + "VMIS_POU_FLEJOU", + "VMIS_POU_LINE", + "ZMAT", + "UMAT", + ) +#& MODIF COMMUN DATE 11/10/2011 AUTEUR DESOZA T.DESOZA +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BOITEAU + +def C_SOLVEUR( COMMAND, BASE=None ) : #COMMUN# + +# ---------------------------------------------------------------------------------------------------------------------------------- +# +# VERIFICATIONS +# +# ---------------------------------------------------------------------------------------------------------------------------------- + + assert COMMAND in ('CALC_ELEM', + 'CALC_ERREUR', + 'CALC_FORC_AJOU', + 'CALC_IFS_DNL', + 'CALC_MATR_AJOU', + 'CALC_PRECONT', + 'CREA_ELEM_SSD', + 'DEFI_BASE_MODALE', + 'DYNA_LINE_HARM', + 'DYNA_LINE_TRAN', + 'DYNA_NON_LINE', + 'DYNA_TRAN_MODAL', + 'IMPR_STURM', + 'MACR_ASCOUF_CALC', + 'MACR_ASPIC_CALC', + 'MACRO_BASCULE_SCHEMA', + 'MACRO_MATR_AJOU', + 'MECA_STATIQUE', + 'MODE_ITER_SIMULT', + 'MODE_ITER_INV', + 'MODE_STATIQUE', + 'STAT_NON_LINE', + 'THER_LINEAIRE', + 'THER_NON_LINE', + 'THER_NON_LINE_MO', + ) + + if BASE != None: + assert COMMAND == 'DYNA_LINE_HARM' + assert BASE in ('GENE','PHYS') + +# ---------------------------------------------------------------------------------------------------------------------------------- +# +# CLASSIFICATION EN 3 CATEGORIES : +# - solveurs directs uniquement +# - solveurs pour le linéaire +# - solveurs pour le non-linéaire +# +# GESTION DES EXCEPTIONS +# +# ---------------------------------------------------------------------------------------------------------------------------------- + + _type = None + +# Classification ('SD'/'LIN'/'NL') + if COMMAND in ('CALC_ELEM', + 'CALC_ERREUR', + 'CREA_ELEM_SSD', + 'DEFI_BASE_MODALE', + 'DYNA_LINE_HARM', + 'DYNA_TRAN_MODAL', + 'IMPR_STURM', + 'MODE_ITER_SIMULT', + 'MODE_ITER_INV', + ): + _type = 'SD' + elif COMMAND in ('CALC_FORC_AJOU', + 'CALC_MATR_AJOU', + 'DYNA_LINE_TRAN', + 'MACRO_MATR_AJOU', + 'MECA_STATIQUE', + 'MODE_STATIQUE', + 'THER_LINEAIRE', + 'THER_NON_LINE_MO', + ): + _type = 'LIN' + elif COMMAND in ('CALC_IFS_DNL', + 'CALC_PRECONT', + 'DYNA_NON_LINE', + 'MACR_ASCOUF_CALC', + 'MACR_ASPIC_CALC', + 'MACRO_BASCULE_SCHEMA', + 'STAT_NON_LINE', + 'THER_NON_LINE', + ): + _type = 'NL' + else: + assert False + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _feti = False + _dist = False + +# FETI et MATR_DISTRIBUEE ne fonctionnent que dans MECA_STATIQUE et MECA_NON_LINE + if COMMAND in ('CALC_IFS_DNL', + 'CALC_PRECONT', + 'DYNA_NON_LINE', + 'MACR_ASCOUF_CALC', + 'MACR_ASPIC_CALC', + 'MACRO_BASCULE_SCHEMA', + 'MECA_STATIQUE', + 'STAT_NON_LINE', + ): + _feti = True + _dist = True + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _gene = False + _ldlt = False + +# Avec des matrices généralisées, MULT_FRONT n'est pas permis, LDLT est donc par défaut + if BASE == 'GENE': + _gene = True + _ldlt = True + +# LDLT est le solveur par défaut dans DYNA_TRAN_MODAL (systèmes linéaires petits) + if COMMAND == 'DYNA_TRAN_MODAL': + _ldlt = True + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _syme = False + +# Seuls les opérateurs non-linéaires produisent des matrices non-symétriques + if _type == 'NL': + _syme = True + if COMMAND == 'THER_NON_LINE_MO': + _syme = True + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _singu = True + _rcmk = True + _resol = True + +# Avec les solveurs modaux STOP_SINGULIER n'existe pas, de plus RCMK n'est pas disponible + if COMMAND in ('IMPR_STURM','MODE_ITER_INV','MODE_ITER_SIMULT'): + _singu = False + _rcmk = False +# Dans IMPR_STURM on ne fait que factoriser + if COMMAND == 'IMPR_STURM': + _resol = False + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _singu_non = False + +# Dans DEFI_BASE_MODALE, NON est le défaut de STOP_SINGULIER + if COMMAND == 'DEFI_BASE_MODALE': + _singu_non = True + +# ---------------------------------------------------------------------------------------------------------------------------------- +# +# INITIALISATIONS +# +# ---------------------------------------------------------------------------------------------------------------------------------- + +# Mot-clés simples + _MotCleSimples={} + +# Solveurs + _BlocMF={} + _BlocLD={} + _BlocMU={} + _BlocGC={} + _BlocPE={} + _BlocFE={} + +# Préconditionneurs + _BlocGC_INC={} + _BlocPE_INC={} + _BlocXX_SP={} + _BlocXX_Jac_Sor={} + +# ---------------------------------------------------------------------------------------------------------------------------------- +# +# MOT-CLES SIMPLES : METHODE +# SYME +# +# ---------------------------------------------------------------------------------------------------------------------------------- + +# METHODE + if (_ldlt): + _defaut = "LDLT" + else: + _defaut = "MULT_FRONT" + + if _type == 'SD': + _into = ("MULT_FRONT", "LDLT", "MUMPS", ) + if _gene: + _into = ("LDLT", "MUMPS", ) + else: + _into = ("MULT_FRONT", "LDLT", "MUMPS", "GCPC", "PETSC", ) + if _feti: + _into = ("MULT_FRONT", "LDLT", "MUMPS", "GCPC", "PETSC", "FETI", ) + + _MotCleSimples['METHODE'] = SIMP(statut='f', typ='TXM', defaut=_defaut, into=_into, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + +# SYME + if _syme: + _MotCleSimples['SYME'] = SIMP(statut='f', typ='TXM', defaut="NON", into=("OUI", "NON", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- +# +# MULT_FRONT/LDLT/MUMPS/FETI (RENUM/NPREC/STOP_SINGULIER) +# +# ---------------------------------------------------------------------------------------------------------------------------------- + +# RENUM + _BlocMF['RENUM'] = SIMP(statut='f', typ='TXM', defaut="METIS", into=("MD", "MDA", "METIS", ), ) + _BlocFE['RENUM'] = SIMP(statut='f', typ='TXM', defaut="METIS", into=("MD", "MDA", "METIS", ), ) + + if _rcmk: + _into = ("RCMK", "SANS", ) + _defaut = "RCMK" + else: + _into = ("SANS",) + _defaut = "SANS" + + _BlocLD['RENUM'] = SIMP(statut='f', typ='TXM', defaut=_defaut, into=_into, ) + + _BlocMU['RENUM'] = SIMP(statut='f', typ='TXM', defaut="AUTO", into=("AMD", "AMF", "PORD", "METIS", "QAMD", "SCOTCH", "AUTO", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + +# NPREC + _BlocMF['NPREC'] = SIMP(statut='f', typ='I', defaut=8, ) + _BlocLD['NPREC'] = SIMP(statut='f', typ='I', defaut=8, ) + _BlocMU['NPREC'] = SIMP(statut='f', typ='I', defaut=8, ) + _BlocFE['NPREC'] = SIMP(statut='f', typ='I', defaut=8, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + +# STOP_SINGULIER + _into = ("OUI", "NON", ) + _defaut = "OUI" + + if _singu_non: + _defaut = "NON" + + if _singu: + _BlocMF['STOP_SINGULIER'] = SIMP(statut='f', typ='TXM', defaut=_defaut, into=_into, ) + _BlocLD['STOP_SINGULIER'] = SIMP(statut='f', typ='TXM', defaut=_defaut, into=_into, ) + _BlocMU['STOP_SINGULIER'] = SIMP(statut='f', typ='TXM', defaut=_defaut, into=_into, ) + _BlocFE['STOP_SINGULIER'] = SIMP(statut='f', typ='TXM', defaut=_defaut, into=_into, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- +# +# MUMPS (MOT-CLES RESTANT) +# +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocMU['TYPE_RESOL' ] = SIMP(statut='f', typ='TXM', defaut="AUTO", into=("NONSYM", "SYMGEN", "SYMDEF", "AUTO", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocMU['PRETRAITEMENTS' ] = SIMP(statut='f', typ='TXM', defaut="AUTO", into=("SANS", "AUTO", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + if _resol: + _BlocMU['POSTTRAITEMENTS'] = SIMP(statut='f', typ='TXM', defaut="AUTO", into=("SANS", "AUTO", "FORCE", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocMU['ELIM_LAGR2' ] = SIMP(statut='f', typ='TXM', defaut="OUI" , into=("OUI", "NON", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocMU['PCENT_PIVOT' ] = SIMP(statut='f', typ='I' , defaut=10, val_min=1, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + if _resol: + if _type == 'LIN': + _BlocMU['RESI_RELA'] = SIMP(statut='f', typ='R', defaut=1.0E-6, ) + else: + _BlocMU['RESI_RELA'] = SIMP(statut='f', typ='R', defaut=-1.0, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocMU['OUT_OF_CORE' ] = SIMP(statut='f', typ='TXM', defaut="NON", into=("OUI", "NON", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocMU['LIBERE_MEMOIRE' ] = SIMP(statut='f', typ='TXM', defaut="NON", into=("OUI", "NON", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + if _type == 'NL': + _BlocMU['FILTRAGE_MATRICE'] = SIMP(statut='f', typ='R' , defaut=-1.0, ) + _BlocMU['MIXER_PRECISION' ] = SIMP(statut='f', typ='TXM', defaut="NON", into=("OUI", "NON", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + if _dist: + _BlocMU['MATR_DISTRIBUEE' ] = SIMP(statut='f', typ='TXM', defaut="NON", into=("OUI", "NON", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- +# +# GCPC/PETSC +# +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocPE['ALGORITHME'] = SIMP(statut='f', typ='TXM', defaut="GMRES", into=("BCGS", "BICG", "CG", "CR", "GMRES", "TFQMR", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocGC['PRE_COND'] = SIMP(statut='f', typ='TXM', defaut="LDLT_INC", into=("LDLT_INC", "LDLT_SP", ), ) + _BlocPE['PRE_COND'] = SIMP(statut='f', typ='TXM', defaut="LDLT_SP" , into=("LDLT_INC", "JACOBI", "SOR", "LDLT_SP", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocGC['RESI_RELA'] = SIMP(statut='f', typ='R', defaut= 1.E-6, ) + _BlocPE['RESI_RELA'] = SIMP(statut='f', typ='R', defaut= 1.E-6, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocGC['NMAX_ITER'] = SIMP(statut='f', typ='I', defaut= 0, ) + _BlocPE['NMAX_ITER'] = SIMP(statut='f', typ='I', defaut= 0, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- +# Mot-cle cache pour desactiver le critere en norme non preconditionnee dans PETSC + + if _type == 'NL': + _BlocPE['RESI_RELA_PC'] = SIMP(statut='c', typ='R', defaut= -1.0, ) + else: + _BlocPE['RESI_RELA_PC'] = SIMP(statut='c', typ='R', defaut= 0.0, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocGC_INC['RENUM'] = SIMP(statut='f', typ='TXM', defaut="RCMK", into=("SANS","RCMK"), ) + _BlocPE_INC['RENUM'] = SIMP(statut='f', typ='TXM', defaut="RCMK", into=("SANS","RCMK"), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocGC_INC['NIVE_REMPLISSAGE'] = SIMP(statut='f', typ='I', defaut= 0, ) + _BlocPE_INC['NIVE_REMPLISSAGE'] = SIMP(statut='f', typ='I', defaut= 0, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocPE_INC['REMPLISSAGE'] = SIMP(statut='f', typ='R', defaut= 1.0, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocXX_SP['RENUM'] = SIMP(statut='f', typ='TXM', defaut="SANS", into=("SANS","RCMK"), ) + _BlocXX_SP['REAC_PRECOND'] = SIMP(statut='f', typ='I', defaut=30, ) + _BlocXX_SP['PCENT_PIVOT' ] = SIMP(statut='f', typ='I', defaut=10, val_min=1, ) + +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocXX_Jac_Sor['RENUM'] = SIMP(statut='f', typ='TXM', defaut="SANS", into=("SANS","RCMK", ), ) + +# ---------------------------------------------------------------------------------------------------------------------------------- +# +# FETI (MOT-CLES RESTANT) +# +# ---------------------------------------------------------------------------------------------------------------------------------- + + _BlocFE['PARTITION' ] = SIMP(statut='o',typ=sd_feti_sdaster) + _BlocFE['RESI_RELA' ] = SIMP(statut='f',typ='R',defaut=1.E-6,val_min=0.) + _BlocFE['NMAX_ITER' ] = SIMP(statut='f',typ='I',defaut=0,val_min=0) + _BlocFE['REAC_RESI' ] = SIMP(statut='f',typ='I',defaut=0,val_min=0) + _BlocFE['TYPE_REORTHO_DD'] = SIMP(statut='f',typ='TXM',defaut="GSM",into=("SANS","GS","GSM","IGSM") ) + _BlocFE['NB_REORTHO_DD' ] = SIMP(statut='f',typ='I',defaut=0,val_min=0) + _BlocFE['NB_REORTHO_INST'] = SIMP(statut='f',typ='I',defaut=0,val_min=0) + _BlocFE['PRE_COND' ] = SIMP(statut='f',typ='TXM',defaut="LUMPE",into=("LUMPE","SANS") ) + _BlocFE['SCALING' ] = SIMP(statut='f',typ='TXM',defaut="MULT",into=("SANS","MULT") ) + _BlocFE['VERIF_SDFETI' ] = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ) + _BlocFE['TEST_CONTINU' ] = SIMP(statut='f',typ='R',defaut=1.E-8,val_min=0.) + _BlocFE['INFO_FETI' ] = SIMP(statut='f',typ='TXM',defaut='FFFFFFFFFFFFFFFFFFFFFFFF') + _BlocFE['STOCKAGE_GI' ] = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","CAL") ) + _BlocFE['NB_SD_PROC0' ] = SIMP(statut='f',typ='I',defaut=0,val_min=0) + _BlocFE['ACCELERATION_SM'] = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ) + +# ---------------------------------------------------------------------------------------------------------------------------------- +# +# PREPARATION DU MOT-CLE FACTEUR +# +# ---------------------------------------------------------------------------------------------------------------------------------- + + mcfact = FACT(statut='d', + b_mult_front = BLOC(condition = "METHODE == 'MULT_FRONT' ", + fr="Paramètres de la méthode multi frontale", + **_BlocMF + ), + b_ldlt = BLOC(condition = "METHODE == 'LDLT' ", + fr="Paramètres de la méthode LDLT", + **_BlocLD + ), + b_mumps = BLOC(condition = "METHODE == 'MUMPS' ", + fr="Paramètres de la méthode MUMPS", + **_BlocMU + ), + b_gcpc = BLOC(condition = "METHODE == 'GCPC' ", + fr="Paramètres de la méthode du gradient conjugué", + b_ldltinc = BLOC(condition = "PRE_COND == 'LDLT_INC' ", + fr="Paramètres de la factorisation incomplète", + **_BlocGC_INC + ), + b_simple = BLOC(condition = "PRE_COND == 'LDLT_SP' ", + fr="Paramètres de la factorisation simple précision", + **_BlocXX_SP + ), + **_BlocGC + ), + b_petsc = BLOC(condition = "METHODE == 'PETSC' ", + fr="Paramètres de la méthode PETSC", + b_ldltinc = BLOC(condition = "PRE_COND == 'LDLT_INC' ", + fr="Paramètres de la factorisation incomplète", + **_BlocPE_INC + ), + b_simple = BLOC(condition = "PRE_COND == 'LDLT_SP' ", + fr="Paramètres de la factorisation simple précision", + **_BlocXX_SP + ), + b_jacobi_sor = BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + **_BlocXX_Jac_Sor + ), + **_BlocPE + ), + b_feti = BLOC(condition = "METHODE == 'FETI' ", + fr="Paramètres de la méthode FETI 1", + **_BlocFE + ), + **_MotCleSimples + ) + + return mcfact +#& MODIF COMMUN DATE 20/06/2011 AUTEUR ABBAS M.ABBAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS + +def C_SUIVI_DDL() : return FACT(statut='f',max=4, + + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, + into=("DEPL","VITE","ACCE", + "FORC_NODA", + "SIEF_ELGA","VARI_ELGA",)), + + EVAL_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("MIN","MAX","MOY","VALE",),), + + NOM_CMP =SIMP(statut='o',typ='TXM',max=20), + EVAL_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("VALE","FORMULE",),), + + b_formule =BLOC(condition="(EVAL_CMP=='FORMULE')", + FORMULE = SIMP(statut='o',typ=formule,max=1), + ), + + b_cham_no =BLOC(condition="(NOM_CHAM=='DEPL') or \ + (NOM_CHAM=='VITE') or \ + (NOM_CHAM=='ACCE') or \ + (NOM_CHAM=='FORC_NODA') or \ + (NOM_CHAM=='VALE_CONT')", + regles =(UN_PARMI('NOEUD','GROUP_NO','GROUP_MA','MAILLE','TOUT')), + TOUT =SIMP(statut='d',typ='TXM',into=("OUI",) ), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + + b_cham_elga =BLOC(condition="(NOM_CHAM=='SIEF_ELGA') or \ + (NOM_CHAM=='VARI_ELGA')", + regles =(UN_PARMI('GROUP_MA','MAILLE','TOUT')), + TOUT =SIMP(statut='d',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + EVAL_ELGA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=1,defaut='VALE', + into=("MIN","MAX","VALE",),), + b_elga_vale =BLOC(condition="(EVAL_ELGA=='VALE')", + POINT =SIMP(statut='o',typ='I' ,validators=NoRepeat(),max='**'), + SOUS_POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'), + ), + ), + + TITRE = SIMP(statut='f',typ='TXM',max=3), + + + ); +#& MODIF COMMUN DATE 09/11/2010 AUTEUR GNICOLAS G.NICOLAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# RESPONSABLE GNICOLAS G.NICOLAS +# +# ce fichier contient la liste des "into" possibles pour le mot cle TYPE_CHAM +def C_TYPE_CHAM_INTO( type_cham=None ) : #COMMUN# +# Si aucun argument n'est passe, on utilise tous les types de champs possibles + if ( type_cham is None ) : + l_cham = ["ELEM", "ELNO", "ELGA", "CART", "NOEU"] +# Sinon, on n'utilise que les types passes en argument + else : + l_cham = [] + for typ in type_cham : + l_cham.append(typ) +# + l = [] + for gd in C_NOM_GRANDEUR() : + for typ in l_cham : + l.append(typ+"_"+gd) +# + return tuple(l) + +#& MODIF COMMANDE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE FLEJOU J-L.FLEJOU +AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, + fr="Affectation de caractéristiques à des éléments de structure", + reentrant='n', + UIinfo ={"groupes":("Modélisation",)}, + regles = (AU_MOINS_UN('POUTRE','BARRE','COQUE','CABLE','DISCRET','DISCRET_2D','MASSIF', + 'GRILLE','MULTIFIBRE','RIGI_PARASOL'), + PRESENT_PRESENT('MULTIFIBRE','GEOM_FIBRE'), + EXCLUS('DISCRET','DISCRET_2D'),), + MODELE = SIMP(statut='o',typ=modele_sdaster ), + INFO = SIMP(statut='f',typ='I', defaut= 1 ,into=(1,2) ), + VERIF = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("MAILLE","NOEUD") ), + +# ============================================================================ + POUTRE = FACT(statut= 'f',max= '**', + regles = (UN_PARMI('MAILLE','GROUP_MA'),), + MAILLE = SIMP(statut= 'f',typ= ma ,validators= NoRepeat(),max= '**'), + GROUP_MA = SIMP(statut= 'f',typ= grma,validators= NoRepeat(),max= '**'), + SECTION = SIMP(statut= 'o',typ= 'TXM' ,into= ("GENERALE","RECTANGLE","CERCLE") ), + PREC_AIRE = SIMP(statut= 'f',typ= 'R',defaut= 0.01), + PREC_INERTIE = SIMP(statut= 'f',typ= 'R',defaut= 0.1), + b_generale = BLOC(condition = "SECTION == 'GENERALE'", + VARI_SECT = SIMP(statut= 'f',typ= 'TXM',into= ("CONSTANT","HOMOTHETIQUE"),defaut= "CONSTANT"), + b_constant = BLOC(condition = "VARI_SECT == 'CONSTANT'", + CARA = SIMP(statut= 'o',typ= 'TXM',validators= NoRepeat(),min= 4 ,max= 15, + fr= "A,IY,IZ,JX sont des paramètres obligatoires", + into= ("A","IY","IZ","AY","AZ","EY","EZ","JX","RY","RZ","RT", + "JG","IYR2","IZR2","AI") ), + VALE = SIMP(statut= 'o',typ= 'R',min= 4 ,max= 15), ), + b_homothetique = BLOC(condition = "VARI_SECT == 'HOMOTHETIQUE'", + CARA = SIMP(statut= 'o',typ= 'TXM',validators= NoRepeat(),min= 8 ,max= 30, + fr= "A1,A2,IY1,IY2,IZ1,IZ2,JX1,JX2 sont des paramètres obligatoires", + into= ("A1","IY1","IZ1","AY1","AZ1","EY1","EZ1","JX1","RY1", + "RZ1","RT1","JG1","IYR21","IZR21","AI1", + "A2","IY2","IZ2","AY2","AZ2","EY2","EZ2","JX2","RY2", + "RZ2","RT2","JG2","IYR22","IZR22","AI2") ), + VALE = SIMP(statut= 'o',typ= 'R',min= 8 ,max= 30),), + ), + b_rectangle = BLOC(condition = "SECTION == 'RECTANGLE'", + VARI_SECT = SIMP(statut= 'f',typ= 'TXM',into= ("CONSTANT","HOMOTHETIQUE","AFFINE"),defaut= "CONSTANT"), + b_constant = BLOC(condition = "VARI_SECT == 'CONSTANT'", + CARA = SIMP(statut= 'o',typ= 'TXM',validators= NoRepeat(),min= 1 ,max= 4, + into= ("H","EP", "HY","HZ","EPY","EPZ") ), + VALE = SIMP(statut= 'o',typ= 'R',min= 1 ,max= 4), ), + b_homothetique = BLOC(condition = "VARI_SECT == 'HOMOTHETIQUE'", + CARA = SIMP(statut= 'o',typ= 'TXM',validators= NoRepeat(),min= 2 ,max= 8, + into= ("H1","HZ1","HY1","EP1","EPY1","EPZ1", + "H2","HZ2","HY2","EP2","EPY2","EPZ2") ), + VALE = SIMP(statut= 'o',typ= 'R',min= 2 ,max= 8), ), + b_affine = BLOC(condition = "VARI_SECT == 'AFFINE'", + CARA = SIMP(statut= 'o',typ= 'TXM',validators= NoRepeat(),min= 3 ,max= 6, + into= ("HY","EPY", "HZ1","EPZ1","HZ2","EPZ2") ), + VALE = SIMP(statut= 'o',typ= 'R',min= 3 ,max= 6), ), + ), + b_cercle = BLOC(condition = "SECTION == 'CERCLE'", + VARI_SECT = SIMP(statut= 'f',typ= 'TXM',into= ("CONSTANT","HOMOTHETIQUE"),defaut= "CONSTANT"), + b_constant = BLOC(condition = "VARI_SECT == 'CONSTANT'", + CARA = SIMP(statut= 'o',typ= 'TXM',validators= NoRepeat(),min= 1 ,max= 2, + fr= "R est un paramètre obligatoire", + into= ("R","EP") ), + VALE = SIMP(statut= 'o',typ= 'R',min= 1 ,max= 2), ), + b_homothetique = BLOC(condition = "VARI_SECT == 'HOMOTHETIQUE'", + CARA = SIMP(statut= 'o',typ= 'TXM',validators= NoRepeat(),min= 2 ,max= 4, + fr= "R1, R2 sont des paramètres obligatoires", + into= ("R1","R2","EP1","EP2") ), + VALE = SIMP(statut= 'o',typ= 'R',min= 2 ,max= 4), ), + MODI_METRIQUE = SIMP(statut= 'f',typ= 'TXM',defaut= "NON",into= ("OUI","NON") ), + FCX = SIMP(statut= 'f',typ= (fonction_sdaster,nappe_sdaster,formule) ), + TUYAU_NSEC = SIMP(statut= 'f',typ= 'I',val_max= 32,defaut= 16), + TUYAU_NCOU = SIMP(statut= 'f',typ= 'I',val_max= 10,defaut= 3), + ), + ), + +# ============================================================================ + BARRE = FACT(statut='f',max='**', + regles = (UN_PARMI('MAILLE','GROUP_MA'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + SECTION = SIMP(statut='o',typ='TXM',into=("GENERALE","RECTANGLE","CERCLE") ), + b_generale = BLOC(condition = "SECTION=='GENERALE'", + CARA = SIMP(statut='o',typ='TXM',into=("A",) ), + VALE = SIMP(statut='o',typ='R',min=1,max=1 ), ), + b_rectangle = BLOC(condition = "SECTION=='RECTANGLE'", + CARA = SIMP(statut='o',typ='TXM', + into=("H","EP","HZ","HY","EPY","EPZ"), + validators=NoRepeat(),min=1,max=4 ), + VALE = SIMP(statut='o',typ='R',min=1,max=4 ), ), + b_cercle = BLOC(condition = "SECTION=='CERCLE'", + CARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=1,max=2,into=("R","EP") ), + VALE = SIMP(statut='o',typ='R',min=1,max=2 ), ), + FCX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + +# ============================================================================ + COQUE = FACT(statut='f',max='**', + regles = (UN_PARMI('MAILLE','GROUP_MA' ), + PRESENT_PRESENT( 'EXCENTREMENT','INER_ROTA' ), + AU_MOINS_UN('EPAIS','EPAIS_F',), + PRESENT_ABSENT('EPAIS','EPAIS_F',), + EXCLUS('ANGL_REP','VECTEUR'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + EPAIS = SIMP(statut='f',typ='R' ), + EPAIS_F = SIMP(statut='f',typ=(para_sensi,),min=1 ,max=1 ), + ANGL_REP = SIMP(statut='f',typ='R',min=2,max=2), + VECTEUR = SIMP(statut='f',typ='R',min=3,max=3), + A_CIS = SIMP(statut='f',typ='R',defaut= 0.8333333E0), + COEF_RIGI_DRZ = SIMP(statut='f',typ='R',defaut= 1.0E-5 ), + COQUE_NCOU = SIMP(statut='f',typ='I',defaut= 1 ), + EXCENTREMENT = SIMP(statut='f',typ='R' ), + INER_ROTA = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MODI_METRIQUE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + ), + +# ============================================================================ + CABLE = FACT(statut='f',max='**', + regles = (UN_PARMI('MAILLE','GROUP_MA'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + N_INIT = SIMP(statut='f',typ='R',defaut= 5000. ), + SECTION = SIMP(statut='f',typ='R' ), + FCX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + +# ============================================================================ + DISCRET = FACT(statut='f',max='**', + REPERE = SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ), + AMOR_HYST = SIMP(statut='f',typ='R' ), + + SYME = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),), + b_SYME_OUI = BLOC(condition="SYME=='OUI'", + fr="SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds", + CARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,defaut="None", + into=("K_T_D_N", "K_T_D_L", "K_TR_D_N", "K_TR_D_L", "K_T_N", "K_T_L", "K_TR_N", "K_TR_L", + "M_T_D_N", "M_T_D_L", "M_TR_D_N", "M_TR_D_L", "M_T_N", "M_T_L", "M_TR_N", "M_TR_L", + "A_T_D_N", "A_T_D_L", "A_TR_D_N", "A_TR_D_L", "A_T_N", "A_T_L", "A_TR_N", "A_TR_L",),), + # Affection des caractéristiques de RIGIDITE/AMORTISSEMENT/MASSE + b_AK_T_D_N = BLOC(condition = "((CARA=='K_T_D_N')or(CARA=='A_T_D_N'))", + fr="NOEUD: 3 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=3 ,max=3 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=3 ,max=3 ),), + b_AK_T_D_L = BLOC(condition = "((CARA=='K_T_D_L')or(CARA=='A_T_D_L'))", + fr="SEGMENT: 3 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=3 ,max=3 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=3 ,max=3 ),), + b_AK_TR_D_N = BLOC(condition = "((CARA=='K_TR_D_N')or(CARA=='A_TR_D_N'))", + fr="NOEUD: 6 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=6 ,max=6 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=6 ,max=6 ),), + b_AK_TR_D_L = BLOC(condition = "((CARA=='K_TR_D_L')or(CARA=='A_TR_D_L'))", + fr="SEGMENT: 6 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=6 ,max=6 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=6 ,max=6 ),), + b_MAK_T_N = BLOC(condition = "((CARA=='K_T_N')or(CARA=='A_T_N')or(CARA=='M_T_N'))", + fr="NOEUD: 6 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=6 ,max=6 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=6 ,max=6 ),), + b_MAK_T_L = BLOC(condition = "((CARA=='K_T_L')or(CARA=='A_T_L')or(CARA=='M_T_L'))", + fr="SEGMENT: 21 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=21,max=21), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=21 ,max=21 ),), + b_MAK_TR_N = BLOC(condition = "((CARA=='K_TR_N')or(CARA=='A_TR_N')or(CARA=='M_TR_N'))", + fr="NOEUD: 21 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=21,max=21), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=21 ,max=21 ),), + b_MAK_TR_L = BLOC(condition = "((CARA=='K_TR_L')or(CARA=='A_TR_L')or(CARA=='M_TR_L'))", + fr="SEGMENT: 78 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=78,max=78), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=78 ,max=78 ),), + # Affection des caractéristiques de MASSE + b_M_T_D_N = BLOC(condition = "(CARA=='M_T_D_N')", + fr="NOEUD: 1 valeur de masse", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=1 ,max=1 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=1 ,max=1 ),), + b_M_T_D_L = BLOC(condition = "(CARA=='M_T_D_L')", + fr="SEGMENT: 1 valeur de masse", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=1 ,max=1 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=1 ,max=1 ),), + b_M_TR_D_N = BLOC(condition = "(CARA=='M_TR_D_N')", + fr="NOEUD: 1 valeur de masse, 6 valeurs du tenseur d'inertie, 3 composantes du vecteur d'excentrement", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=10,max=10), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=10 ,max=10 ),), + b_M_TR_D_L = BLOC(condition = "(CARA=='M_TR_D_L')", + fr="SEGMENT: 1 valeur de masse, 3 valeurs du tenseur d'inertie", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=4,max=4), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=4 ,max=4 ),), + ), + # éléments à matrice non-symétrique + # b_MAK_T_N_NS 'K_T_N' 'A_T_N' 'M_T_N' + # b_MAK_T_L_NS 'K_T_L' 'A_T_L' 'M_T_L' + # b_MAK_TR_N_NS 'K_TR_N' 'A_TR_N' 'M_TR_N' + # b_MAK_TR_L_NS 'K_TR_L' 'A_TR_L' 'M_TR_L' + b_SYME_NON = BLOC(condition="SYME=='NON'", + fr="NON-SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds", + CARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,defaut="None", + into=("K_T_N", "K_T_L", "K_TR_N", "K_TR_L", + "M_T_N", "M_T_L", "M_TR_N", "M_TR_L", + "A_T_N", "A_T_L", "A_TR_N", "A_TR_L",),), + # Affection des caractéristiques de RIGIDITE/AMORTISSEMENT/MASSE : NON-SYMETRIQUE + b_MAK_T_N_NS = BLOC(condition = "((CARA=='K_T_N')or(CARA=='A_T_N')or(CARA=='M_T_N'))", + fr="NOEUD: 9 valeurs (matrice pleine par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=9 ,max=9 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=9 ,max=9 ),), + b_MAK_T_L_NS = BLOC(condition = "((CARA=='K_T_L')or(CARA=='A_T_L')or(CARA=='M_T_L'))", + fr="SEGMENT: 36 valeurs (matrice pleine par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=36,max=36), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),), + b_MAK_TR_N_NS = BLOC(condition = "((CARA=='K_TR_N')or(CARA=='A_TR_N')or(CARA=='M_TR_N'))", + fr="NOEUD: 36 valeurs (matrice pleine par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=36,max=36), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),), + b_MAK_TR_L_NS = BLOC(condition = "((CARA=='K_TR_L')or(CARA=='A_TR_L')or(CARA=='M_TR_L'))", + fr="SEGMENT: 144 valeurs (matrice pleine par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=144,max=144), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=144 ,max=144 ),), + ), + ), +# ============================================================================ + DISCRET_2D = FACT(statut='f',max='**', + REPERE = SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ), + AMOR_HYST = SIMP(statut='f',typ='R' ), + SYME = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),), + b_SYME_OUI = BLOC(condition="SYME=='OUI'", + fr="SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds", + CARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,defaut="None", + into=("K_T_D_N", "K_T_D_L", "K_TR_D_N", "K_TR_D_L", "K_T_N", "K_T_L", "K_TR_N", "K_TR_L", + "M_T_D_N", "M_T_D_L", "M_TR_D_N", "M_TR_D_L", "M_T_N", "M_T_L", "M_TR_N", "M_TR_L", + "A_T_D_N", "A_T_D_L", "A_TR_D_N", "A_TR_D_L", "A_T_N", "A_T_L", "A_TR_N", "A_TR_L",),), + # Affection des caractéristiques de RIGIDITE/AMORTISSEMENT/MASSE + b_AK_T_D_N = BLOC(condition = "((CARA=='K_T_D_N')or(CARA=='A_T_D_N'))", + fr="NOEUD: 2 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=2 ,max=2 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=2 ,max=2 ),), + b_AK_T_D_L = BLOC(condition = "((CARA=='K_T_D_L')or(CARA=='A_T_D_L'))", + fr="SEGMENT: 2 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=2 ,max=2 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=2 ,max=2 ),), + b_AK_TR_D_N = BLOC(condition = "((CARA=='K_TR_D_N')or(CARA=='A_TR_D_N'))", + fr="NOEUD: 3 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=3 ,max=3 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=3 ,max=3 ),), + b_AK_TR_D_L = BLOC(condition = "((CARA=='K_TR_D_L')or(CARA=='A_TR_D_L'))", + fr="SEGMENT: 3 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=3 ,max=3 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=3 ,max=3 ),), + b_MAK_T_N = BLOC(condition = "((CARA=='K_T_N')or(CARA=='A_T_N')or(CARA=='M_T_N'))", + fr="NOEUD: 3 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=3 ,max=3 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=3 ,max=3 ),), + b_MAK_T_L = BLOC(condition = "((CARA=='K_T_L')or(CARA=='A_T_L')or(CARA=='M_T_L'))", + fr="SEGMENT: 10 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=10,max=10), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=10 ,max=10 ),), + b_MAK_TR_N = BLOC(condition = "((CARA=='K_TR_N')or(CARA=='A_TR_N')or(CARA=='M_TR_N'))", + fr="NOEUD: 6 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=6 ,max=6), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=6 ,max=6 ),), + b_MAK_TR_L = BLOC(condition = "((CARA=='K_TR_L')or(CARA=='A_TR_L')or(CARA=='M_TR_L'))", + fr="SEGMENT: 21 valeurs (triangulaire supérieure par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=21,max=21), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=21 ,max=21 ),), + # Affection des caractéristiques de MASSE + b_M_T_D_N = BLOC(condition = "(CARA=='M_T_D_N')", + fr="NOEUD: 1 valeur de masse", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=1 ,max=1 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=1 ,max=1 ),), + b_M_T_D_L = BLOC(condition = "(CARA=='M_T_D_L')", + fr="SEGMENT: 1 valeur de masse", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=1 ,max=1 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=1 ,max=1 ),), + b_M_TR_D_N = BLOC(condition = "(CARA=='M_TR_D_N')", + fr="NOEUD: 1 valeur de masse, 1 valeur d'inertie, 2 composantes du vecteur d'excentrement", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=4 ,max=4 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=4 ,max=4 ),), + b_M_TR_D_L = BLOC(condition = "(CARA=='M_TR_D_L')", + fr="SEGMENT: 1 valeur de masse, 1 valeur d'inertie", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=2 ,max=2 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=2 ,max=2 ),), + ), + # éléments à matrice non-symétrique + # b_MAK_T_N_NS 'K_T_N' 'A_T_N' 'M_T_N' + # b_MAK_T_L_NS 'K_T_L' 'A_T_L' 'M_T_L' + # b_MAK_TR_N_NS 'K_TR_N' 'A_TR_N' 'M_TR_N' + # b_MAK_TR_L_NS 'K_TR_L' 'A_TR_L' 'M_TR_L' + b_SYME_NON = BLOC(condition="SYME=='NON'", + fr="NON-SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds", + CARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,defaut="None", + into=("K_T_N", "K_T_L", "K_TR_N", "K_TR_L", + "M_T_N", "M_T_L", "M_TR_N", "M_TR_L", + "A_T_N", "A_T_L", "A_TR_N", "A_TR_L",),), + # Affection des caractéristiques de RIGIDITE/AMORTISSEMENT/MASSE : NON-SYMETRIQUE + b_MAK_T_N_NS = BLOC(condition = "((CARA=='K_T_N')or(CARA=='A_T_N')or(CARA=='M_T_N'))", + fr="NOEUD: 4 valeurs (matrice pleine par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=4 ,max=4 ), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=4 ,max=4 ),), + b_MAK_T_L_NS = BLOC(condition = "((CARA=='K_T_L')or(CARA=='A_T_L')or(CARA=='M_T_L'))", + fr="SEGMENT: 16 valeurs (matrice pleine par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=16,max=16), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=16 ,max=16 ),), + b_MAK_TR_N_NS = BLOC(condition = "((CARA=='K_TR_N')or(CARA=='A_TR_N')or(CARA=='M_TR_N'))", + fr="NOEUD: 9 valeurs (matrice pleine par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'), + UN_PARMI('VALE','VALE_F'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=9 ,max=9), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=9 ,max=9 ),), + b_MAK_TR_L_NS = BLOC(condition = "((CARA=='K_TR_L')or(CARA=='A_TR_L')or(CARA=='M_TR_L'))", + fr="SEGMENT: 36 valeurs (matrice pleine par colonne)", + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('VALE','VALE_F'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + VALE = SIMP(statut='f',typ='R',min=36,max=36), + VALE_F = SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),), + ), + ), +# ============================================================================ + ORIENTATION = FACT(statut='f',max='**', + regles = (UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO' ),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + CARA = SIMP(statut='o',typ='TXM', + into=("VECT_Y","ANGL_VRIL","VECT_X_Y","ANGL_NAUT","GENE_TUYAU") ), + VALE = SIMP(statut='o',typ='R',max='**'), + PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-4 ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + ), + +# ============================================================================ + DEFI_ARC = FACT(statut='f',max='**', + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('ORIE_ARC','CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE', + 'POIN_TANG','NOEUD_POIN_TANG','GROUP_NO_POIN_TG'), + PRESENT_PRESENT('ORIE_ARC','RAYON'), + EXCLUS('COEF_FLEX','COEF_FLEX_XY'), + EXCLUS('COEF_FLEX','COEF_FLEX_XZ'), + EXCLUS('INDI_SIGM','INDI_SIGM_XY'), + EXCLUS('INDI_SIGM','INDI_SIGM_XZ'), + PRESENT_PRESENT('COEF_FLEX_XY','COEF_FLEX_XZ'), + PRESENT_PRESENT('INDI_SIGM_XY','INDI_SIGM_XZ'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ORIE_ARC = SIMP(statut='f',typ='R'), + CENTRE = SIMP(statut='f',typ='R',max='**'), + NOEUD_CENTRE = SIMP(statut='f',typ=no), + GROUP_NO_CENTRE = SIMP(statut='f',typ=grno), + POIN_TANG = SIMP(statut='f',typ='R',max='**'), + NOEUD_POIN_TANG = SIMP(statut='f',typ=no), + GROUP_NO_POIN_TG = SIMP(statut='f',typ=grno), + RAYON = SIMP(statut='f',typ='R'), + COEF_FLEX = SIMP(statut='f',typ='R'), + INDI_SIGM = SIMP(statut='f',typ='R'), + COEF_FLEX_XY = SIMP(statut='f',typ='R'), + INDI_SIGM_XY = SIMP(statut='f',typ='R'), + COEF_FLEX_XZ = SIMP(statut='f',typ='R'), + INDI_SIGM_XZ = SIMP(statut='f',typ='R'), + PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + ), + +#============================================================================ + MASSIF = FACT(statut='f',max='**', + regles = (UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('ANGL_REP','ANGL_AXE','ANGL_EULER'), + EXCLUS('ANGL_REP','ANGL_EULER'), + EXCLUS('ANGL_REP','ANGL_AXE'), + EXCLUS('ANGL_REP','ORIG_AXE'), + PRESENT_PRESENT('ANGL_AXE','ORIG_AXE'), ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ANGL_REP = SIMP(statut='f',typ='R',max=3), + ANGL_EULER = SIMP(statut='f',typ='R',min=3,max=3), + ANGL_AXE = SIMP(statut='f',typ='R',max=2), + ORIG_AXE = SIMP(statut='f',typ='R',max=3), + ), + +# ============================================================================ + POUTRE_FLUI = FACT(statut='f',max='**', + regles = (UN_PARMI('MAILLE','GROUP_MA'),), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + B_T = SIMP(statut='o',typ='R'), + B_N = SIMP(statut='o',typ='R'), + B_TN = SIMP(statut='o',typ='R',defaut= 0.E+0 ), + A_FLUI = SIMP(statut='o',typ='R'), + A_CELL = SIMP(statut='o',typ='R'), + COEF_ECHELLE = SIMP(statut='o',typ='R'), + ), + +# ============================================================================ + GRILLE = FACT(statut='f',max='**', + regles = (UN_PARMI('MAILLE','GROUP_MA'), + EXCLUS('ANGL_REP','ORIG_AXE'), + ENSEMBLE('ORIG_AXE','AXE')), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + SECTION = SIMP(statut='o',typ='R'), + ANGL_REP = SIMP(statut='f',typ='R',max=2), + EXCENTREMENT = SIMP(statut='f',typ='R'), + ORIG_AXE = SIMP(statut='f',typ='R',max='**'), + AXE = SIMP(statut='f',typ='R',max='**'), + COEF_RIGI_DRZ = SIMP(statut='f',typ='R',defaut= 1.0E-10 ), + GRILLE_NCOU = SIMP(statut='f',typ='I',defaut= 1,), + ), + +#============================================================================ + RIGI_PARASOL = FACT(statut='f',max='**', + regles = (UN_PARMI('COEF_GROUP','FONC_GROUP'), + UN_PARMI('COOR_CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE'), + EXCLUS('GROUP_MA_POI1','GROUP_MA_SEG2'),), + GROUP_MA = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**', + fr="Surface servant à répartir les caractéristiques des discrets"), + GROUP_MA_POI1 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1, + fr="Mailles de type point correspondant aux discrets"), + GROUP_MA_SEG2 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1, + fr="Mailles de type seg2 correspondant aux discrets"), + FONC_GROUP = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + COEF_GROUP = SIMP(statut='f',typ='R',max='**'), + REPERE = SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ), + CARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2, + into=("K_TR_D_N","K_T_D_N","K_TR_D_L","K_T_D_L", + "A_TR_D_N","A_T_D_N","A_TR_D_L","A_T_D_L"), + fr="Choix des types de discrets du tapis de ressorts." ), + b_cara= BLOC(condition =""" au_moins_un(CARA, ["K_TR_D_N","K_T_D_N","K_TR_D_L","K_T_D_L", + "A_TR_D_N","A_T_D_N","A_TR_D_L","A_T_D_L"]) or \ + (len(CARA)==2 and CARA[0][2:]==CARA[1][2:])""", + fr="Valeurs pour les discrets du tapis de ressorts.", + VALE = SIMP(statut='o',typ='R',max='**', + fr="Valeurs pour les discrets du tapis de ressorts.",), + ), + GROUP_NO_CENTRE = SIMP(statut='f',typ=grno), + NOEUD_CENTRE = SIMP(statut='f',typ=no), + COOR_CENTRE = SIMP(statut='f',typ='R',min=2,max=3), + EUROPLEXUS = SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"), + UNITE = SIMP(statut='f',typ='I',val_min=1), + ), + +#============================================================================ + RIGI_MISS_3D = FACT(statut='f',max='**', + GROUP_MA_POI1 = SIMP(statut='o',typ=grma,max=1), + GROUP_MA_SEG2 = SIMP(statut='f',typ=grma,max=1), + FREQ_EXTR = SIMP(statut='o',typ='R',max=1), + UNITE_RESU_IMPE = SIMP(statut='f',typ='I',defaut=30), + ), + +#============================================================================ + GEOM_FIBRE = SIMP(statut='f',max=1,typ=gfibre_sdaster, + fr="Donner le nom de la SD regroupant tous les groupes de fibres (issue de DEFI_GEOM_FIBRE)"), + MULTIFIBRE = FACT(statut='f',max='**', + regles = (AU_MOINS_UN('GROUP_MA','MAILLE'),), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_FIBRE = SIMP(statut='o',typ='TXM',max='**'), + ), +); +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE None +AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, + fr="Affectation de charges et conditions aux limites acoustiques constantes", + reentrant='n', + UIinfo={"groupes":("Chargements","Acoustique","CACHE",)}, + regles=(AU_MOINS_UN('PRES_IMPO','VITE_FACE','IMPE_FACE','LIAISON_UNIF' ),), + MODELE =SIMP(statut='o',typ=modele_sdaster ), + VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les pressions imposées", + into=('DUALISATION',),defaut='DUALISATION',), + # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement + PRES_IMPO =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + PRES =SIMP(statut='o',typ='C' ), + ), + VITE_FACE =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + VNOR =SIMP(statut='o',typ='C' ), + ), + IMPE_FACE =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + IMPE =SIMP(statut='o',typ='C' ), + ), + LIAISON_UNIF =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE' ),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + DDL =SIMP(statut='o',typ='TXM',max='**'), + ), +) ; +#& MODIF COMMANDE DATE 01/03/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +def affe_char_cine_prod(MECA_IMPO,THER_IMPO,ACOU_IMPO,EVOL_IMPO,**args): + if MECA_IMPO != None : return char_cine_meca + if THER_IMPO != None : return char_cine_ther + if ACOU_IMPO != None : return char_cine_acou + if EVOL_IMPO != None : + if AsType(EVOL_IMPO) in (evol_elas,evol_noli) : + return char_cine_meca + elif AsType(EVOL_IMPO) in (evol_ther,) : + return char_cine_ther + else : + raise AsException("Extension à faire ...") + + raise AsException("type de concept resultat non prevu") + + +AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod + ,fr="Affectation de conditions aux limites cinématiques (U=U0) pour un traitement sans dualisation", + reentrant='n', + UIinfo={"groupes":("Chargements","Mécanique","CACHE")}, + regles=(UN_PARMI('MECA_IMPO','THER_IMPO','ACOU_IMPO','EVOL_IMPO'), + ), + MODELE =SIMP(statut='o',typ=modele_sdaster ), + + MECA_IMPO =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), + AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', + 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2', + 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4', + 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6', + 'VO6','WI6','WO6','WO','WI1','WO1','GONF', + 'H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z', + 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','V11','V12','V13','V21','V22', + 'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21', + 'PRES22','PRES23','PRES31','PRES32','PRES33','LH1'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + DX =SIMP(statut='f',typ='R' ), + DY =SIMP(statut='f',typ='R' ), + DZ =SIMP(statut='f',typ='R' ), + DRX =SIMP(statut='f',typ='R' ), + DRY =SIMP(statut='f',typ='R' ), + DRZ =SIMP(statut='f',typ='R' ), + GRX =SIMP(statut='f',typ='R' ), + PRES =SIMP(statut='f',typ='R' ), + PHI =SIMP(statut='f',typ='R' ), + TEMP =SIMP(statut='f',typ='R' ), + PRE1 =SIMP(statut='f',typ='R' ), + PRE2 =SIMP(statut='f',typ='R' ), + UI2 =SIMP(statut='f',typ='R' ), + UI3 =SIMP(statut='f',typ='R' ), + UI4 =SIMP(statut='f',typ='R' ), + UI5 =SIMP(statut='f',typ='R' ), + UI6 =SIMP(statut='f',typ='R' ), + UO2 =SIMP(statut='f',typ='R' ), + UO3 =SIMP(statut='f',typ='R' ), + UO4 =SIMP(statut='f',typ='R' ), + UO5 =SIMP(statut='f',typ='R' ), + UO6 =SIMP(statut='f',typ='R' ), + VI2 =SIMP(statut='f',typ='R' ), + VI3 =SIMP(statut='f',typ='R' ), + VI4 =SIMP(statut='f',typ='R' ), + VI5 =SIMP(statut='f',typ='R' ), + VI6 =SIMP(statut='f',typ='R' ), + VO2 =SIMP(statut='f',typ='R' ), + VO3 =SIMP(statut='f',typ='R' ), + VO4 =SIMP(statut='f',typ='R' ), + VO5 =SIMP(statut='f',typ='R' ), + VO6 =SIMP(statut='f',typ='R' ), + WI2 =SIMP(statut='f',typ='R' ), + WI3 =SIMP(statut='f',typ='R' ), + WI4 =SIMP(statut='f',typ='R' ), + WI5 =SIMP(statut='f',typ='R' ), + WI6 =SIMP(statut='f',typ='R' ), + WO2 =SIMP(statut='f',typ='R' ), + WO3 =SIMP(statut='f',typ='R' ), + WO4 =SIMP(statut='f',typ='R' ), + WO5 =SIMP(statut='f',typ='R' ), + WO6 =SIMP(statut='f',typ='R' ), + WO =SIMP(statut='f',typ='R' ), + WI1 =SIMP(statut='f',typ='R' ), + WO1 =SIMP(statut='f',typ='R' ), + GONF =SIMP(statut='f',typ='R' ), + H1X =SIMP(statut='f',typ='R' ), + H1Y =SIMP(statut='f',typ='R' ), + H1Z =SIMP(statut='f',typ='R' ), + E1X =SIMP(statut='f',typ='R' ), + E1Y =SIMP(statut='f',typ='R' ), + E1Z =SIMP(statut='f',typ='R' ), + E2X =SIMP(statut='f',typ='R' ), + E2Y =SIMP(statut='f',typ='R' ), + E2Z =SIMP(statut='f',typ='R' ), + E3X =SIMP(statut='f',typ='R' ), + E3Y =SIMP(statut='f',typ='R' ), + E3Z =SIMP(statut='f',typ='R' ), + E4X =SIMP(statut='f',typ='R' ), + E4Y =SIMP(statut='f',typ='R' ), + E4Z =SIMP(statut='f',typ='R' ), + V11 =SIMP(statut='f',typ='R' ), + V12 =SIMP(statut='f',typ='R' ), + V13 =SIMP(statut='f',typ='R' ), + V21 =SIMP(statut='f',typ='R' ), + V22 =SIMP(statut='f',typ='R' ), + V23 =SIMP(statut='f',typ='R' ), + V31 =SIMP(statut='f',typ='R' ), + V32 =SIMP(statut='f',typ='R' ), + V33 =SIMP(statut='f',typ='R' ), + PRES11 =SIMP(statut='f',typ='R' ), + PRES12 =SIMP(statut='f',typ='R' ), + PRES13 =SIMP(statut='f',typ='R' ), + PRES21 =SIMP(statut='f',typ='R' ), + PRES22 =SIMP(statut='f',typ='R' ), + PRES23 =SIMP(statut='f',typ='R' ), + PRES31 =SIMP(statut='f',typ='R' ), + PRES32 =SIMP(statut='f',typ='R' ), + PRES33 =SIMP(statut='f',typ='R' ), + LH1 =SIMP(statut='f',typ='R' ), + ), + + THER_IMPO =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), + AU_MOINS_UN('TEMP','TEMP_INF','TEMP_SUP'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TEMP_SUP =SIMP(statut='f',typ='R' ), + TEMP =SIMP(statut='f',typ='R' ), + TEMP_INF =SIMP(statut='f',typ='R' ), + ), + + ACOU_IMPO =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + PRES =SIMP(statut='o',typ='C' ), + ), + + EVOL_IMPO =SIMP(statut='f',typ=(evol_noli,evol_elas,evol_ther),fr="Pour imposer les ddls d'un evol_xxx"), + b_evol_impo = BLOC ( condition = "EVOL_IMPO != None", + NOM_CMP =SIMP(statut='f',typ='TXM',max='**',), # pour n'imposer que certaines CMPS (par défaut : toutes) + ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +def affe_char_cine_f_prod(MECA_IMPO,THER_IMPO,**args): + if MECA_IMPO != None : return char_cine_meca + if THER_IMPO != None : return char_cine_ther + raise AsException("type de concept resultat non prevu") + +AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 101,sd_prod=affe_char_cine_f_prod, + fr="Affectation de conditions aux limites cinématiques fonction d'un (ou plusieurs) paramètres" + +" pour un traitement sans dualisation", + reentrant='n', + UIinfo={"groupes":("Chargements","Mécanique",)}, + regles=(UN_PARMI('MECA_IMPO','THER_IMPO')), + MODELE =SIMP(statut='o',typ=modele_sdaster ), + MECA_IMPO =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), + AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', + 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2', + 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4', + 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6', + 'VO6','WI6','WO6','WO','WI1','WO1','GONF', + 'H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z', + 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','V11','V12','V13','V21','V22', + 'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21', + 'PRES22','PRES23','PRES31','PRES32','PRES33','LH1'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRE1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRE2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UI2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UI3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UI4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UI5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UI6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UO2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UO3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UO4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UO5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + UO6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VI2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VI3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VI4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VI5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VI6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VO2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VO3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VO4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VO5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VO6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO5 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO6 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WI1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + WO1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + GONF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + H1X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + H1Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + H1Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E1X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E1Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E1Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E2X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E2Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E2Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E3X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E3Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E3Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E4X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E4Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E4Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V11 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V12 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V13 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V21 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V22 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V23 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V31 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V32 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + V33 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES11=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES12=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES13=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES21=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES22=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES23=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES31=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES32=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES33=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + LH1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + + ), + THER_IMPO =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), + AU_MOINS_UN('TEMP','TEMP_INF','TEMP_SUP' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TEMP_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 04/10/2011 AUTEUR REZETTE C.REZETTE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca, + fr="Affectation de charges et conditions aux limites mécaniques constantes", + reentrant='n', + UIinfo={"groupes":("Chargements","Mécanique",)}, + regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','CHAMNO_IMPO','LIAISON_DDL','LIAISON_XFEM','FORCE_NODALE', + 'FORCE_FACE','FORCE_ARETE','FORCE_CONTOUR','FORCE_INTERNE', + 'PRES_REP','FORCE_POUTRE','FORCE_COQUE','LIAISON_OBLIQUE', + 'FORCE_ELEC','INTE_ELEC','PESANTEUR','ROTATION','IMPE_FACE', + 'VITE_FACE','RELA_CINE_BP','EPSI_INIT','ARETE_IMPO', + 'LIAISON_GROUP','LIAISON_UNIF','FLUX_THM_REP','LIAISON_SOLIDE', + 'LIAISON_ELEM','ONDE_FLUI','LIAISON_CHAMNO','VECT_ASSE','LIAISON_COQUE', + 'LIAISON_MAIL','LIAISON_CYCL','FORCE_TUYAU', + 'EFFE_FOND','EVOL_CHAR','DDL_POUTRE',), + ), + VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + MODELE =SIMP(statut='o',typ=(modele_sdaster) ), + EVOL_CHAR =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul", + typ=evol_char ), + + PESANTEUR =FACT(statut='f',max=1,fr="Champ de pesanteur", + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GRAVITE =SIMP(statut='o',typ='R',min=1,max=1), + DIRECTION =SIMP(statut='o',typ='R',min=3,max=3),), + + METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés", + into=('DUALISATION',),defaut='DUALISATION',), + # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement + + ROTATION =FACT(statut='f', max=1, fr="Définition d'un chargement de rotation", + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(), max='**'), + MAILLE = SIMP(statut='f',typ=ma, validators=NoRepeat(),max='**'), + VITESSE = SIMP(statut='o', typ='R',min=1,max=1), + AXE = SIMP(statut='o', typ='R',min=2, max=3), + CENTRE = SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3), + b_rotation_tout=BLOC(condition="(GROUP_MA == None) and (MAILLE ==None)", + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",),defaut="OUI",),), + b_rotation=BLOC(condition="(GROUP_MA != None) or (MAILLE !=None)", + TOUT = SIMP(statut='f',typ='TXM',into=("NON","OUI"),defaut="NON",),),), + + DDL_IMPO =FACT(statut='f',max='**', + fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), + AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', + 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2', + 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4', + 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6', + 'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON', + 'H1X','H1Y','H1Z','H2X','H2Y','H2Z','H3X','H3Y','H3Z','H4X','H4Y','H4Z', + 'E1X','E1Y','E1Z','E2X','E2Y','E2Z','E3X','E3Y','E3Z','E4X','E4Y','E4Z', + 'LAGS_C','LAGS_F1','LAGS_F2','LAG2_C','LAG2_F1','LAG2_F2','LAG3_C','LAG3_F1', + 'V11','V12','V13','V21','V22','V23','V31','V32','V33', + 'PRES11','PRES12','PRES13','PRES21','PRES22','PRES23','PRES31','PRES32','PRES33','LH1'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)), + DX =SIMP(statut='f',typ='R' ), + DY =SIMP(statut='f',typ='R' ), + DZ =SIMP(statut='f',typ='R' ), + DRX =SIMP(statut='f',typ='R' ), + DRY =SIMP(statut='f',typ='R' ), + DRZ =SIMP(statut='f',typ='R' ), + GRX =SIMP(statut='f',typ='R' ), + PRES =SIMP(statut='f',typ='R' ), + PHI =SIMP(statut='f',typ='R' ), + TEMP =SIMP(statut='f',typ='R' ), + PRE1 =SIMP(statut='f',typ='R' ), + PRE2 =SIMP(statut='f',typ='R' ), + UI2 =SIMP(statut='f',typ='R' ), + UI3 =SIMP(statut='f',typ='R' ), + UI4 =SIMP(statut='f',typ='R' ), + UI5 =SIMP(statut='f',typ='R' ), + UI6 =SIMP(statut='f',typ='R' ), + UO2 =SIMP(statut='f',typ='R' ), + UO3 =SIMP(statut='f',typ='R' ), + UO4 =SIMP(statut='f',typ='R' ), + UO5 =SIMP(statut='f',typ='R' ), + UO6 =SIMP(statut='f',typ='R' ), + VI2 =SIMP(statut='f',typ='R' ), + VI3 =SIMP(statut='f',typ='R' ), + VI4 =SIMP(statut='f',typ='R' ), + VI5 =SIMP(statut='f',typ='R' ), + VI6 =SIMP(statut='f',typ='R' ), + VO2 =SIMP(statut='f',typ='R' ), + VO3 =SIMP(statut='f',typ='R' ), + VO4 =SIMP(statut='f',typ='R' ), + VO5 =SIMP(statut='f',typ='R' ), + VO6 =SIMP(statut='f',typ='R' ), + WI2 =SIMP(statut='f',typ='R' ), + WI3 =SIMP(statut='f',typ='R' ), + WI4 =SIMP(statut='f',typ='R' ), + WI5 =SIMP(statut='f',typ='R' ), + WI6 =SIMP(statut='f',typ='R' ), + WO2 =SIMP(statut='f',typ='R' ), + WO3 =SIMP(statut='f',typ='R' ), + WO4 =SIMP(statut='f',typ='R' ), + WO5 =SIMP(statut='f',typ='R' ), + WO6 =SIMP(statut='f',typ='R' ), + WO =SIMP(statut='f',typ='R' ), + WI1 =SIMP(statut='f',typ='R' ), + WO1 =SIMP(statut='f',typ='R' ), + GONF =SIMP(statut='f',typ='R' ), + H1X =SIMP(statut='f',typ='R' ), + H1Y =SIMP(statut='f',typ='R' ), + H1Z =SIMP(statut='f',typ='R' ), + H2X =SIMP(statut='f',typ='R' ), + H2Y =SIMP(statut='f',typ='R' ), + H2Z =SIMP(statut='f',typ='R' ), + H3X =SIMP(statut='f',typ='R' ), + H3Y =SIMP(statut='f',typ='R' ), + H3Z =SIMP(statut='f',typ='R' ), + H4X =SIMP(statut='f',typ='R' ), + H4Y =SIMP(statut='f',typ='R' ), + H4Z =SIMP(statut='f',typ='R' ), + E1X =SIMP(statut='f',typ='R' ), + E1Y =SIMP(statut='f',typ='R' ), + E1Z =SIMP(statut='f',typ='R' ), + E2X =SIMP(statut='f',typ='R' ), + E2Y =SIMP(statut='f',typ='R' ), + E2Z =SIMP(statut='f',typ='R' ), + E3X =SIMP(statut='f',typ='R' ), + E3Y =SIMP(statut='f',typ='R' ), + E3Z =SIMP(statut='f',typ='R' ), + E4X =SIMP(statut='f',typ='R' ), + E4Y =SIMP(statut='f',typ='R' ), + E4Z =SIMP(statut='f',typ='R' ), + LAGS_C =SIMP(statut='f',typ='R' ), + LAGS_F1 =SIMP(statut='f',typ='R' ), + LAGS_F2 =SIMP(statut='f',typ='R' ), + LAG2_C =SIMP(statut='f',typ='R' ), + LAG2_F1 =SIMP(statut='f',typ='R' ), + LAG2_F2 =SIMP(statut='f',typ='R' ), + LAG3_C =SIMP(statut='f',typ='R' ), + LAG3_F1 =SIMP(statut='f',typ='R' ), + V11 =SIMP(statut='f',typ='R' ), + V12 =SIMP(statut='f',typ='R' ), + V13 =SIMP(statut='f',typ='R' ), + V21 =SIMP(statut='f',typ='R' ), + V22 =SIMP(statut='f',typ='R' ), + V23 =SIMP(statut='f',typ='R' ), + V31 =SIMP(statut='f',typ='R' ), + V32 =SIMP(statut='f',typ='R' ), + V33 =SIMP(statut='f',typ='R' ), + PRES11 =SIMP(statut='f',typ='R' ), + PRES12 =SIMP(statut='f',typ='R' ), + PRES13 =SIMP(statut='f',typ='R' ), + PRES21 =SIMP(statut='f',typ='R' ), + PRES22 =SIMP(statut='f',typ='R' ), + PRES23 =SIMP(statut='f',typ='R' ), + PRES31 =SIMP(statut='f',typ='R' ), + PRES32 =SIMP(statut='f',typ='R' ), + PRES33 =SIMP(statut='f',typ='R' ), + LH1 =SIMP(statut='f',typ='R' ), + ), + + + + DDL_POUTRE =FACT(statut='f',max='**', + fr="Bloque des DDLs dans un repère local d'une poutre", + regles=(AU_MOINS_UN('GROUP_NO','NOEUD'), + AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ'), + UN_PARMI('VECT_Y','ANGL_VRIL'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + DX =SIMP(statut='f',typ='R' ), + DY =SIMP(statut='f',typ='R' ), + DZ =SIMP(statut='f',typ='R' ), + DRX =SIMP(statut='f',typ='R' ), + DRY =SIMP(statut='f',typ='R' ), + DRZ =SIMP(statut='f',typ='R' ), +# définition du repère local + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), + ANGL_VRIL =SIMP(statut='f',typ='R',), +# restriction sur les mailles servant à définir le repère local + GROUP_MA =SIMP(statut='f',typ=grma,), + MAILLE =SIMP(statut='f',typ=ma,), + ), + + + + FACE_IMPO =FACT(statut='f',max='**', + fr="Impose à tous les noeuds d'une face une ou plusieurs valeurs de déplacement (ou de certaines grandeurs associées)", + regles=(UN_PARMI('GROUP_MA','MAILLE',), + AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', + 'TEMP','PRE1','PRE2','DNOR','DTAN'), + EXCLUS('DNOR','DX'), + EXCLUS('DNOR','DY'), + EXCLUS('DNOR','DZ'), + EXCLUS('DNOR','DRX'), + EXCLUS('DNOR','DRY'), + EXCLUS('DNOR','DRZ'), + EXCLUS('DTAN','DX'), + EXCLUS('DTAN','DY'), + EXCLUS('DTAN','DZ'), + EXCLUS('DTAN','DRX'), + EXCLUS('DTAN','DRY'), + EXCLUS('DTAN','DRZ'),), +# rajout d'un mot clé REPERE :/ LOCAL /GLOBAL + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SANS_GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + SANS_MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + DX =SIMP(statut='f',typ='R' ), + DY =SIMP(statut='f',typ='R' ), + DZ =SIMP(statut='f',typ='R' ), + DRX =SIMP(statut='f',typ='R' ), + DRY =SIMP(statut='f',typ='R' ), + DRZ =SIMP(statut='f',typ='R' ), + DNOR =SIMP(statut='f',typ='R' ), + DTAN =SIMP(statut='f',typ='R' ), + GRX =SIMP(statut='f',typ='R' ), + PRES =SIMP(statut='f',typ='R' ), + PHI =SIMP(statut='f',typ='R' ), + TEMP =SIMP(statut='f',typ='R' ), + PRE1 =SIMP(statut='f',typ='R' ), + PRE2 =SIMP(statut='f',typ='R' ), + ), + + CHAMNO_IMPO =FACT(statut='f',max='**', + fr="Impose des DDLs aux valeurs d'un concept cham_no_sdaster", +# type de cham_no_sdaster CO() + CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), #CO() + COEF_MULT =SIMP(statut='o',typ='R' ), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ), + + ARETE_IMPO =FACT(statut='f',max='**', + fr="Impose à tous les noeuds d'une arete des elements 3D une ou plusieurs valeurs de déplacement", + regles=(UN_PARMI('GROUP_MA','MAILLE',), + AU_MOINS_UN('DX','DY','DZ','DTAN','PRES','PHI','TEMP','PRE1','PRE2'), + EXCLUS('DTAN','DX'), + EXCLUS('DTAN','DY'), + EXCLUS('DTAN','DZ'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SANS_GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + SANS_MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + DX =SIMP(statut='f',typ='R' ), + DY =SIMP(statut='f',typ='R' ), + DZ =SIMP(statut='f',typ='R' ), + DTAN =SIMP(statut='f',typ='R' ), + PRE1 =SIMP(statut='f',typ='R' ), + PRE2 =SIMP(statut='f',typ='R' ), + PRES =SIMP(statut='f',typ='R' ), + PHI =SIMP(statut='f',typ='R' ), + TEMP =SIMP(statut='f',typ='R' ), + ), + + LIAISON_DDL =FACT(statut='f',max='**', + fr="Définit une relation linéaire entre des DDLs de deux ou plusieurs noeuds", + regles=(UN_PARMI('GROUP_NO','NOEUD'),), + GROUP_NO =SIMP(statut='f',typ=grno ,max='**'), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + DDL =SIMP(statut='o',typ='TXM',max='**'), + COEF_MULT =SIMP(statut='o',typ='R' ,max='**'), + COEF_IMPO =SIMP(statut='o',typ='R' ), + ), + + LIAISON_OBLIQUE =FACT(statut='f',max='**', + fr="Applique à des noeuds la meme valeur de déplacement définie composante par composante" + +" dans un repère oblique quelconque", + regles=(UN_PARMI('GROUP_NO','NOEUD'), + UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + ANGL_NAUT =SIMP(statut='o',typ='R',max=3), + DX =SIMP(statut='f',typ='R' ), + DY =SIMP(statut='f',typ='R' ), + DZ =SIMP(statut='f',typ='R' ), + DRX =SIMP(statut='f',typ='R' ), + DRY =SIMP(statut='f',typ='R' ), + DRZ =SIMP(statut='f',typ='R' ), + ), + + LIAISON_GROUP =FACT(statut='f',max='**', + fr="Définit la meme relation linéaire entre certains DDLs de couples de noeuds", + regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), + UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'), + EXCLUS('GROUP_MA_1','GROUP_NO_2'), + EXCLUS('GROUP_MA_1','NOEUD_2'), + EXCLUS('GROUP_NO_1','GROUP_MA_2'), + EXCLUS('GROUP_NO_1','MAILLE_2'), + EXCLUS('MAILLE_1','GROUP_NO_2'), + EXCLUS('MAILLE_1','NOEUD_2'), + EXCLUS('NOEUD_1','GROUP_MA_2'), + EXCLUS('NOEUD_1','MAILLE_2'), + EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),), + + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + DDL_1 =SIMP(statut='o',typ='TXM',max='**'), + COEF_MULT_1 =SIMP(statut='o',typ='R' ,max='**'), + DDL_2 =SIMP(statut='o',typ='TXM',max='**'), + COEF_MULT_2 =SIMP(statut='o',typ='R' ,max='**'), + COEF_IMPO =SIMP(statut='o',typ='R' ), + SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ), + TRAN =SIMP(statut='f',typ='R',max=3), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + CENTRE =SIMP(statut='f',typ='R',max=3), + ), + + LIAISON_MAIL =FACT(statut='f',max='**', + fr="Définit des relations linéaires permettant de recoller deux bords d'une structure", + regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'), + AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL')), + GROUP_MA_MAIT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_ESCL =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_ESCL =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + + TYPE_RACCORD =SIMP(statut='o',typ='TXM',defaut="MASSIF",into=("MASSIF","COQUE","COQUE_MASSIF","MASSIF_COQUE",)), + + b_MASSIF =BLOC ( condition = "TYPE_RACCORD == 'MASSIF'", + regles=( PRESENT_PRESENT('DDL_MAIT','DDL_ESCL'),), + TRAN =SIMP(statut='f',typ='R',max=3 ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3 ), + CENTRE =SIMP(statut='f',typ='R',max=3 ), + DDL_MAIT =SIMP(statut='f',typ='TXM',into=("DNOR",) ), + DDL_ESCL =SIMP(statut='f',typ='TXM',into=("DNOR",) ), + ), + b_COQUE_MASSIF =BLOC ( condition = "TYPE_RACCORD == 'COQUE_MASSIF'", + EPAIS =SIMP(statut='o',typ='R'), + CHAM_NORMALE =SIMP(statut='o',typ=cham_no_sdaster), + ), + ELIM_MULT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + ), + + LIAISON_CYCL =FACT(statut='f',max='**', + fr="Définit des relations linéaires permettant de recoller les bords de deux parties symétriquement cycliques", + regles=(AU_MOINS_UN('GROUP_MA_MAIT1','MAILLE_MAIT1'), + AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL'), + PRESENT_PRESENT('DDL_MAIT','DDL_ESCL'), + ), + GROUP_MA_MAIT1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_MAIT1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_MAIT2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_MAIT2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_ESCL =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_ESCL =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TRAN =SIMP(statut='f',typ='R',max=3 ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3 ), + CENTRE =SIMP(statut='f',typ='R',max=3 ), + COEF_MAIT1 =SIMP(statut='f',typ='R',max=1 ), + COEF_MAIT2 =SIMP(statut='f',typ='R',max=1 ), + COEF_ESCL =SIMP(statut='f',typ='R',max=1 ), + DDL_MAIT =SIMP(statut='f',typ='TXM',into=("DNOR",) ), + DDL_ESCL =SIMP(statut='f',typ='TXM',into=("DNOR",) ), + ), + + + LIAISON_SOLIDE =FACT(statut='f',max='**', + fr="Modélise une partie indéformable d'une structure." + +" Les mots clés TRAN et ANGL_NAUT permettent d'imposer le déplacement de la partie indéformable.", + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'), + ENSEMBLE('CENTRE','ANGL_NAUT'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + TRAN =SIMP(statut='f',typ='R',max=3 ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3 ), + CENTRE =SIMP(statut='f',typ='R',max=3 ), + DIST_MIN =SIMP(statut='f',typ='R'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ), + + LIAISON_ELEM =FACT(statut='f',max='**', + fr="Modélise le raccord : d'une partie massive 3D avec une poutre ou avec un tuyau, d'une coque" + +" avec une poutre ou avec un tuyau, d'une plaque avec une poutre", + regles =(UN_PARMI('GROUP_MA_1','MAILLE_1'), UN_PARMI('GROUP_NO_2','NOEUD_2'),), + OPTION =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","2D_POU","COQ_POU","COQ_TUYAU","PLAQ_POUT_ORTH") ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ANGL_MAX =SIMP(statut='f',typ='R',defaut= 1. ), + b_dalcol =BLOC( condition = "OPTION == 'PLAQ_POUT_ORTH'", + VERIF_EXCENT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + b_option =BLOC( condition = "OPTION != 'PLAQ_POUT_ORTH'", + CARA_ELEM =SIMP(statut='f',typ=(cara_elem) ), + AXE_POUTRE =SIMP(statut='f',typ='R',max=3), + ), + ), + + LIAISON_UNIF =FACT(statut='f',max='**', + fr="Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds", + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + DDL =SIMP(statut='o',typ='TXM',max='**'), + ), + + LIAISON_CHAMNO =FACT(statut='f',max='**', + fr="Définit une relation linéaire entre tous les DDLs présents dans un concept CHAM_NO", +# type de cham_no_sdaster CO() + CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), #CO() + COEF_IMPO =SIMP(statut='o',typ='R' ), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ), + + + LIAISON_INTERF =FACT(statut='f',max='**', + fr="Définit une relation linéaire entre les DDLs d'interface à partir d'un MACRELEM", + MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna), + TYPE_LIAISON =SIMP(statut='f',typ='TXM',defaut="RIGIDE",into=("RIGIDE","SOUPLE") ), + ), + + LIAISON_XFEM =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ), + + CONTACT_XFEM =SIMP(statut='f',typ=char_contact,min=1,max=1,), + + +# SIMP(statut='f',typ='TXM',defaut="NON" ), + + VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster ), +# +# FORCES +# + FORCE_NODALE =FACT(statut='f',fr="Applique à des noeuds des forces nodales",max='**', + regles=(AU_MOINS_UN('GROUP_NO','NOEUD'), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + MX =SIMP(statut='f',typ='R' ), + MY =SIMP(statut='f',typ='R' ), + MZ =SIMP(statut='f',typ='R' ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + ), + + FORCE_FACE =FACT(statut='f',max='**', + fr="Applique des forces surfaciques sur une face d'élément volumique", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + ), + + FORCE_ARETE =FACT(statut='f',max='**', + fr="Applique des forces linéiques à une arete d'élément volumique ou de coque", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE',), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + MX =SIMP(statut='f',typ='R' ), + MY =SIMP(statut='f',typ='R' ), + MZ =SIMP(statut='f',typ='R' ), + ), + + FORCE_CONTOUR =FACT(statut='f',max='**', + fr="Applique des forces linéiques au bord d'un domaine 2D ou AXIS ou AXIS_FOURIER", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + MX =SIMP(statut='f',typ='R' ), + MY =SIMP(statut='f',typ='R' ), + MZ =SIMP(statut='f',typ='R' ), + ), + + FORCE_INTERNE =FACT(statut='f',max='**', + fr="Applique des forces volumiques (2D ou 3D) à un domaine volumique", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + ), + + SIGM_INTERNE =FACT(statut='f',max='**', + fr="Applique des contraintes volumiques (2D ou 3D) à un domaine volumique", + #INST =SIMP(statut='f',typ='R' ), + SIGM =SIMP(statut='o',typ=(cham_elem,carte_sdaster)), + ), + + PRES_REP =FACT(statut='f',max='**', + fr="Applique une pression à un domaine de milieu continu 2D ou 3D, ou à un domaine de coques et tuyaux", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','FISSURE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE','FISSURE'), + AU_MOINS_UN('PRES','CISA_2D' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FISSURE =SIMP(statut='f',typ=fiss_xfem,min=1,max=100,), + PRES =SIMP(statut='f',typ='R' ), + CISA_2D =SIMP(statut='f',typ='R' ), + ), + + EFFE_FOND =FACT(statut='f',max='**', + fr="Calcul l'effet de fond sur une branche de tuyauterie (modélisation 3D) soumise à une pression", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),), + GROUP_MA_INT =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + PRES =SIMP(statut='o',typ='R' ), + ), + + EPSI_INIT =FACT(statut='f',max='**', + fr="Applique un chargement de déformation initiale à un élément 2D, 3D ou de structure", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ','EPX', + 'KY','KZ','EXX','EYY','EXY','KXX','KYY','KXY'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + EPXX =SIMP(statut='f',typ='R' ), + EPYY =SIMP(statut='f',typ='R' ), + EPZZ =SIMP(statut='f',typ='R' ), + EPXY =SIMP(statut='f',typ='R' ), + EPXZ =SIMP(statut='f',typ='R' ), + EPYZ =SIMP(statut='f',typ='R' ), + EPX =SIMP(statut='f',typ='R' ), + KY =SIMP(statut='f',typ='R' ), + KZ =SIMP(statut='f',typ='R' ), + EXX =SIMP(statut='f',typ='R' ), + EYY =SIMP(statut='f',typ='R' ), + EXY =SIMP(statut='f',typ='R' ), + KXX =SIMP(statut='f',typ='R' ), + KYY =SIMP(statut='f',typ='R' ), + KXY =SIMP(statut='f',typ='R' ), + ), + + FORCE_POUTRE =FACT(statut='f',max='**', + fr="Applique des forces linéiques sur des éléments de type poutre", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','N','VY','VZ'), + PRESENT_ABSENT('FX','N','VY','VZ'), + PRESENT_ABSENT('FY','N','VY','VZ'), + PRESENT_ABSENT('FZ','N','VY','VZ'), + PRESENT_ABSENT('N','FX','FY','FZ'), + PRESENT_ABSENT('VY','FX','FY','FZ'), + PRESENT_ABSENT('VZ','FX','FY','FZ'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FORCE",into=("VENT","FORCE",) ), +# rajour d'un mot clé REPERE :/ LOCAL /GLOBAL + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + + N =SIMP(statut='f',typ='R' ), + VY =SIMP(statut='f',typ='R' ), + VZ =SIMP(statut='f',typ='R' ), + + ), + + FORCE_TUYAU =FACT(statut='f',max='**', + fr="Applique une pression sur des éléments TUYAU", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + PRES =SIMP(statut='f',typ='R' ), + ), + + FORCE_COQUE =FACT(statut='f',max='**', + fr="Applique des forces surfaciques sur des éléments de types coques", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FX','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FY','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MX','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MY','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('F1','FX','FY','FZ','MX','MY','MZ','PRES'), + PRESENT_ABSENT('F2','FX','FY','FZ','MX','MY','MZ','PRES'), + PRESENT_ABSENT('F3','FX','FY','FZ','MX','MY','MZ','PRES'), + PRESENT_ABSENT('MF1','FX','FY','FZ','MX','MY','MZ','PRES'), + PRESENT_ABSENT('MF2','FX','FY','FZ','MX','MY','MZ','PRES'), + PRESENT_ABSENT('PRES','FX','FY','FZ','MX','MY','MZ','F1','F2','F3','MF1','MF2'),), +# rajour d'un mot clé REPERE :/ LOCAL /GLOBAL + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + MX =SIMP(statut='f',typ='R' ), + MY =SIMP(statut='f',typ='R' ), + MZ =SIMP(statut='f',typ='R' ), + + F1 =SIMP(statut='f',typ='R' ), + F2 =SIMP(statut='f',typ='R' ), + F3 =SIMP(statut='f',typ='R' ), + MF1 =SIMP(statut='f',typ='R' ), + MF2 =SIMP(statut='f',typ='R' ), + + PRES =SIMP(statut='f',typ='R' ), + PLAN =SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL",) ), + ), + + LIAISON_COQUE =FACT(statut='f',max='**', + fr="Permet de représenter le raccord entre des éléments de coques au moyen des relations linéaires", + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ), + + RELA_CINE_BP =FACT(statut='f',max='**', + fr="Etablir des relations cinématiques permettant de relier les noeuds cable aux noeuds du béton, et spécifier" + +" la prise en compte des contraintes initiales dans les cables", + CABLE_BP =SIMP(statut='o',typ=cabl_precont ), + SIGM_BPEL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + RELA_CINE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + DIST_MIN =SIMP(statut='f',typ='R'), + ), + + FORCE_ELEC =FACT(statut='f',max='**', + fr="Appliquer la force de LAPLACE agissant sur un conducteur principal, due à la présence d'un conducteur" + +" secondaire droit", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + + POSITION =SIMP(statut='f',typ='TXM',fr="Direction prédéfinie",into=("PARA","INFI","FINI",) ), + b_fxyz =BLOC ( condition = "POSITION == None", + FX =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + FY =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + FZ =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + + b_para =BLOC ( condition = "POSITION == 'PARA'", + regles=(UN_PARMI('TRANS','DIST'),), + TRANS =SIMP(statut='f',typ='R',max=3), + DIST =SIMP(statut='f',typ='R' ), + b_point2 =BLOC ( condition = "DIST != None", + POINT2 =SIMP(statut='o',typ='R',max=3), + ), + ), + b_fini_infi =BLOC ( condition = "(POSITION == 'FINI') or (POSITION == 'INFI')", + POINT1 =SIMP(statut='o',typ='R',max=3), + POINT2 =SIMP(statut='o',typ='R',max=3), + ), + ), + + + + + INTE_ELEC =FACT(statut='f',max='**', + fr="Appliquer la force de LAPLACE agissant sur un conducteur principal, due à la présence d'un conducteur" + +" secondaire non nécessairement droit", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('GROUP_MA_2','MAILLE_2','TRANS','SYME'), + EXCLUS('TRANS','SYME'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + TRANS =SIMP(statut='f',typ='R' ,max='**'), + SYME =SIMP(statut='f',typ='R' ,max='**'), + ), + + + IMPE_FACE =FACT(statut='f',fr="Applique une impédance acoustique à une face",max='**', + regles=(AU_MOINS_UN('GROUP_MA','MAILLE' ),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + IMPE =SIMP(statut='o',typ='R' ), + ), + + VITE_FACE =FACT(statut='f',fr="Impose des vitesses normales à une face (phénomène ACOUSTIQUE), ",max='**', + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + VNOR =SIMP(statut='o',typ='R' ), + ), + + + + ONDE_FLUI =FACT(statut='f',max='**', + fr="Applique une amplitude de pression d'onde incidente sinusoidale arrivant normalement à une face", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + PRES =SIMP(statut='o',typ='R' ), + ), + + FLUX_THM_REP =FACT(statut='f',max='**', + fr="Applique à un domaine de milieu continu 2D ou 3D un flux de chaleur et/ou un apport de masse fluide" + +" (flux hydraulique)", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FLUN =SIMP(statut='f',typ='R' ), + FLUN_HYDR1 =SIMP(statut='f',typ='R' ), + FLUN_HYDR2 =SIMP(statut='f',typ='R' ), + ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; + + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, + fr="Affectation de charges et conditions aux limites mécaniques complexes", + reentrant='n', + UIinfo={"groupes":("Chargements","Mécanique",)}, + regles=(AU_MOINS_UN('DDL_IMPO','FORCE_POUTRE','LIAISON_DDL', ),), + MODELE =SIMP(statut='o',typ=modele_sdaster ), + VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés", + into=('DUALISATION',),defaut='DUALISATION',), + # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement + DDL_IMPO =FACT(statut='f',max='**', + fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',), + AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','LIAISON', ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)), + DX =SIMP(statut='f',typ='C' ), + DY =SIMP(statut='f',typ='C' ), + DZ =SIMP(statut='f',typ='C' ), + DRX =SIMP(statut='f',typ='C' ), + DRY =SIMP(statut='f',typ='C' ), + DRZ =SIMP(statut='f',typ='C' ), + GRX =SIMP(statut='f',typ='C' ), + PRES =SIMP(statut='f',typ='C' ), + PHI =SIMP(statut='f',typ='C' ), + ), + FORCE_POUTRE =FACT(statut='f',max='**', + fr="Applique des forces linéiques sur des éléments de type poutre", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','N','VY','VZ',), + PRESENT_ABSENT('FX','N','VY','VZ',), + PRESENT_ABSENT('FY','N','VY','VZ',), + PRESENT_ABSENT('FZ','N','VY','VZ',), + PRESENT_ABSENT('N','FX','FY','FZ',), + PRESENT_ABSENT('VY', 'FX','FY','FZ',), + PRESENT_ABSENT('VZ','FX','FY','FZ', ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FORCE",into=("VENT","FORCE") ), + FX =SIMP(statut='f',typ='C' ), + FY =SIMP(statut='f',typ='C' ), + FZ =SIMP(statut='f',typ='C' ), + N =SIMP(statut='f',typ='C' ), + VY =SIMP(statut='f',typ='C' ), + VZ =SIMP(statut='f',typ='C' ), + ), + LIAISON_DDL =FACT(statut='f',max='**', + fr="Définit une relation linéaire entre les DDLs de deux ou plusieurs noeuds", + regles=(UN_PARMI('GROUP_NO','NOEUD', ),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + DDL =SIMP(statut='o',typ='TXM',max='**'), + COEF_MULT =SIMP(statut='o',typ='R' ,max='**'), + COEF_IMPO =SIMP(statut='o',typ='C' ), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 05/07/2011 AUTEUR FERNANDES R.FERNANDES +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, + fr="Affectation de charges et conditions aux limites mécaniques fonction d'un (ou plusieurs) paramètres", + reentrant='n', + UIinfo={"groupes":("Chargements","Mécanique",)}, + regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','LIAISON_DDL','FORCE_NODALE', + 'FORCE_FACE','FORCE_ARETE','FORCE_CONTOUR','FORCE_INTERNE', + 'PRES_REP','FORCE_POUTRE','VITE_FACE','IMPE_FACE','ONDE_PLANE', + 'LIAISON_OBLIQUE','EPSI_INIT','LIAISON_GROUP','LIAISON_UNIF', + 'LIAISON_SOLIDE','FORCE_COQUE','LIAISON_COQUE','FORCE_TUYAU', + 'EFFE_FOND','FLUX_THM_REP',),), + VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + MODELE =SIMP(statut='o',typ=modele_sdaster), + METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés", + into=('DUALISATION',),defaut='DUALISATION',), + # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement + + DDL_IMPO =FACT(statut='f',max='**', + fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées) fournies" + +" par l'intermédiaire d'un concept fonction ", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), + AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', + 'TEMP','PRE1','PRE2','GONF','LIAISON','H1X', + 'H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z', + 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)), + DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRE1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRE2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + GONF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + H1X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + H1Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + H1Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E1X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E1Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E1Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E2X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E2Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E2Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E3X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E3Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E3Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E4X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E4Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + E4Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + LAGS_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + FACE_IMPO =FACT(statut='f',max='**', + fr="Impose à tous les noeuds d'une face une ou plusieurs valeurs de déplacement (ou de certaines grandeurs associées)" + +" fournies par l'intérmédiaire d'un concept fonction", + regles=(UN_PARMI('GROUP_MA','MAILLE'), + AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','TEMP','PRE1','PRE2','DNOR','DTAN'), + EXCLUS('DNOR','DX'), + EXCLUS('DNOR','DY'), + EXCLUS('DNOR','DZ'), + EXCLUS('DNOR','DRX'), + EXCLUS('DNOR','DRY'), + EXCLUS('DNOR','DRZ'), + EXCLUS('DTAN','DX'), + EXCLUS('DTAN','DY'), + EXCLUS('DTAN','DZ'), + EXCLUS('DTAN','DRX'), + EXCLUS('DTAN','DRY'), + EXCLUS('DTAN','DRZ'),), +# rajout d un mot cle REPERE : / GLOBAL / LOCAL + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SANS_GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + SANS_MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRE1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRE2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DNOR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DTAN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + LIAISON_DDL =FACT(statut='f',max='**', + fr="Définit une relation linéaire entre des DDLs de deux ou plusieurs noeuds, les valeurs sont fournies par" + +" l'intermediaire d'un concept de type fonction", + regles=(UN_PARMI('GROUP_NO','NOEUD'),UN_PARMI('COEF_MULT','COEF_MULT_FONC'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + DDL =SIMP(statut='o',typ='TXM',max='**'), + COEF_MULT =SIMP(statut='f',typ='R',max='**'), + COEF_MULT_FONC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'), + COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + LIAISON_OBLIQUE =FACT(statut='f',max='**', + fr="Applique à des noeuds la meme valeur de déplacement définie composante par composante dans un repère oblique" + +" quelconque, les valeurs sont fournis par l'intermédiaire d'un concept fonction", + regles=(UN_PARMI('GROUP_NO','NOEUD'), + UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + ANGL_NAUT =SIMP(statut='o',typ='R',max=3), + DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + LIAISON_GROUP =FACT(statut='f',max='**', + fr="Définit la meme relation linéaire entre certains DDLs de couples de noeuds, les valeurs sont fournies par" + +" l'intermédiaire de concept fonction", + regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), + UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'), + EXCLUS('GROUP_MA_1','GROUP_NO_2'), + EXCLUS('GROUP_MA_1','NOEUD_2'), + EXCLUS('GROUP_NO_1','GROUP_MA_2'), + EXCLUS('GROUP_NO_1','MAILLE_2'), + EXCLUS('MAILLE_1','GROUP_NO_2'), + EXCLUS('MAILLE_1','NOEUD_2'), + EXCLUS('NOEUD_1','GROUP_MA_2'), + EXCLUS('NOEUD_1','MAILLE_2'), + EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + DDL_1 =SIMP(statut='o',typ='TXM',max='**'), + COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'), + DDL_2 =SIMP(statut='o',typ='TXM',max='**'), + COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'), + COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ), + TRAN =SIMP(statut='f',typ='R',max=3), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + CENTRE =SIMP(statut='f',typ='R',max=3), + ), + + LIAISON_UNIF =FACT(statut='f',max='**', + fr="Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds", + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + DDL =SIMP(statut='o',typ='TXM',max='**'), + ), + + + LIAISON_SOLIDE =FACT(statut='f',max='**', + fr="Modélise une partie indéformable d'une structure." + +" Les mots clés TRAN et ANGL_NAUT permettent d'imposer le déplacement de la partie indéformable.", + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'), + ENSEMBLE('CENTRE','ANGL_NAUT'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + TRAN =SIMP(statut='f',typ='R',max=3 ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3 ), + CENTRE =SIMP(statut='f',typ='R',max=3 ), + DIST_MIN =SIMP(statut='f',typ='R'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ), + + + + FORCE_NODALE =FACT(statut='f',max='**', + fr="Applique à des noeuds des forces nodales dont les valeurs des composantes sont fournies par l'intermédiaire" + +" d'un concept fonction", + regles=(UN_PARMI('GROUP_NO','NOEUD'), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ANGL_NAUT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max=3 ), + ), + + FORCE_FACE =FACT(statut='f',max='**', + fr="Applique des forces surfaciques sur une face d'élément volumique dont les valeurs des composantes sont fournies" + +" par l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + FORCE_ARETE =FACT(statut='f',max='**', + fr="Applique des forces linéiques à une arete d'élément volumique ou de coque dont les valeurs des composantes sont" + +" fournies par l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + FORCE_CONTOUR =FACT(statut='f',max='**', + fr="Applique des forces linéiques au bord d'un domaine 2D ou AXIS ou AXIS_FOURIER, dont les valeurs des composantes" + +" sont fournies par l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + FORCE_INTERNE =FACT(statut='f',max='**', + fr="Applique des forces volumiques (2D ou 3D) à un domaine volumique, dont les valeurs des composantes sont fournies" + +" par l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + PRES_REP =FACT(statut='f',max='**', + fr="Applique une pression à un domaine de milieu continu 2D ou 3D ou à un domaine de coques et tuyaux, dont les" + +" valeurs imposées (pression et/ou cisaillement) sont fournies par l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','FISSURE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE','FISSURE'), + AU_MOINS_UN('PRES','CISA_2D'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FISSURE =SIMP(statut='f',typ=fiss_xfem,min=1,max=100,), + PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + CISA_2D =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + EFFE_FOND =FACT(statut='f',max='**', + fr="Calcul l'effet de fond sur une branche de tuyauterie (modélisation 3D) soumise" + +" à une pression dont la valeur est fournie par l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),), + GROUP_MA_INT =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + PRES =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + EPSI_INIT =FACT(statut='f',max='**', + fr="Applique un chargement de déformation initiale à un élément 2D, 3D ou de structure dont les composantes" + +" du tenseur de déformation sont fournies par l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + EPXX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPZZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + FORCE_POUTRE =FACT(statut='f',max='**', + fr="Applique des forces linéiques sur des éléments de type poutre dont les valeurs sont fournies par" + +" l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','N','VY','VZ'), + PRESENT_ABSENT('FX','N','VY','VZ'), + PRESENT_ABSENT('FY','N','VY','VZ'), + PRESENT_ABSENT('FZ','N','VY','VZ'), + PRESENT_ABSENT('N','FX','FY','FZ'), + PRESENT_ABSENT('VY','FX','FY','FZ'), + PRESENT_ABSENT('VZ','FX','FY','FZ'),), +# rajout d un mot cle REPERE : / GLOBAL / LOCAL + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FORCE",into=("VENT","FORCE") ), + FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + FORCE_TUYAU =FACT(statut='f',max='**', + fr="Applique une pression sur des éléments TUYAU, la valeur est fournie par l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + FORCE_COQUE =FACT(statut='f',max='**', + fr="Applique des forces surfaciques sur des éléments de types coques dont les valeurs sont fournies par" + +" l'intermédiaires d'un concept fonction", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FX','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FY','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MX','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MY','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('F1','PRES','FX','FY','FZ','MX','MY','MZ'), + PRESENT_ABSENT('F2','PRES','FX','FY','FZ','MX','MY','MZ'), + PRESENT_ABSENT('F3','PRES','FX','FY','FZ','MX','MY','MZ'), + PRESENT_ABSENT('MF1','PRES','FX','FY','FZ','MX','MY','MZ'), + PRESENT_ABSENT('MF2','PRES','FX','FY','FZ','MX','MY','MZ'), + PRESENT_ABSENT('PRES','FX','FY','FZ','MX','MY','MZ','F1','F2','F3','MF1','MF2'),), +# rajout d un mot cle REPERE : / GLOBAL / LOCAL + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MF1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MF2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PLAN =SIMP(statut='f',typ='TXM',defaut="MAIL", + into=("SUP","INF","MOY","MAIL") ), + ), + + LIAISON_COQUE =FACT(statut='f',max='**', + fr="Permet de représenter le raccord entre des éléments de coques au moyen des relations linéaires", + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES",) ), + ), + + + VITE_FACE =FACT(statut='f',max='**', + fr="Impose des vitesses normales à une face (phénomène ACOUSTIQUE) dont les valeurs sont fournies par" + +" l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), + PRESENT_ABSENT('GROUP_MA','MAILLE'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + VNOR =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + IMPE_FACE =FACT(statut='f',max='**', + fr="Applique à une face une impédance acoustique dont la valeur est fournie par l'intermédiaire" + +" d'un concept fonction", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), + PRESENT_ABSENT('GROUP_MA','MAILLE'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + IMPE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + ONDE_PLANE =FACT(statut='f',max='**', + fr="Impose un chargement sismique par onde plane dont la valeur est fournie par l'intermédiaire" + +" d'un concept fonction", + DIRECTION =SIMP(statut='o',typ='R',max='**'), + TYPE_ONDE =SIMP(statut='o',typ='TXM' ), + FONC_SIGNAL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DIST_ORIG =SIMP(statut='o',typ='R' ), + ), + + + + FLUX_THM_REP =FACT(statut='f',max='**', + fr="Applique à un domaine continue 2D ou 3D un flux de chaleur et/ou un apport de masse fluide (flux hydraulique)" + +" dont les valeurs des flux sont fournies par l'intermédiaire d'un concept fonction", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FLUN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FLUN_HYDR1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FLUN_HYDR2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; + + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther + ,fr="Affectation de charges et conditions aux limites thermiques constantes", + reentrant='n', + UIinfo={"groupes":("Chargements","Thermique",)}, + regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','ECHANGE', + 'ECHANGE_PAROI','GRAD_TEMP_INIT','LIAISON_DDL','LIAISON_GROUP', + 'LIAISON_UNIF','LIAISON_CHAMNO','RAYONNEMENT','LIAISON_MAIL' ),), + MODELE =SIMP(statut='o',typ=(modele_sdaster) ), + METHODE =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les températures imposées", + into=('DUALISATION',),defaut='DUALISATION',), + # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement + + TEMP_IMPO =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), + AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TEMP =SIMP(statut='f',typ='R'), + TEMP_INF =SIMP(statut='f',typ='R'), + TEMP_SUP =SIMP(statut='f',typ='R'), ), + + FLUX_REP =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + PRESENT_PRESENT('CARA_TORSION','GROUP_MA'), + AU_MOINS_UN('FLUN','FLUN_INF','FLUN_SUP','CARA_TORSION') ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FLUN =SIMP(statut='f',typ='R'), + FLUN_INF =SIMP(statut='f',typ='R'), + FLUN_SUP =SIMP(statut='f',typ='R'), + CARA_TORSION =SIMP(statut='f',typ=table_sdaster), + ), + + + RAYONNEMENT =FACT(statut='f',max='**', + fr="Attention, exprimer les températures en Celsius si rayonnement", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SIGMA =SIMP(statut='o',typ='R'), + EPSILON =SIMP(statut='o',typ='R'), + TEMP_EXT =SIMP(statut='o',typ='R'), + ), + + ECHANGE =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('COEF_H','COEF_H_INF','COEF_H_SUP'), + ENSEMBLE('COEF_H','TEMP_EXT',), + ENSEMBLE('COEF_H_INF','TEMP_EXT_INF'), + ENSEMBLE('COEF_H_SUP','TEMP_EXT_SUP'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + COEF_H =SIMP(statut='f',typ='R'), + TEMP_EXT =SIMP(statut='f',typ='R'), + COEF_H_INF =SIMP(statut='f',typ='R'), + TEMP_EXT_INF =SIMP(statut='f',typ='R'), + COEF_H_SUP =SIMP(statut='f',typ='R'), + TEMP_EXT_SUP =SIMP(statut='f',typ='R'), + ), + + SOURCE =FACT(statut='f',max='**', + regles=(UN_PARMI('SOUR','SOUR_CALCULEE',), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('SOUR_CALCULEE','TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SOUR =SIMP(statut='f',typ='R'), + SOUR_CALCULEE =SIMP(statut='f',typ=(cham_elem) ), + ), + + GRAD_TEMP_INIT =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FLUX_X','FLUX_Y','FLUX_Z'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FLUX_X =SIMP(statut='f',typ='R' ), + FLUX_Y =SIMP(statut='f',typ='R' ), + FLUX_Z =SIMP(statut='f',typ='R' ), + ), + + LIAISON_DDL =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD', ),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + DDL =SIMP(statut='f',typ='TXM',max='**', + into=("TEMP","TEMP_INF","TEMP_SUP") ), + COEF_MULT =SIMP(statut='o',typ='R',max='**'), + COEF_IMPO =SIMP(statut='o',typ='R' ), + ), + + LIAISON_GROUP =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), + UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'), + EXCLUS('GROUP_MA_1','GROUP_NO_2'), + EXCLUS('GROUP_MA_1','NOEUD_2'), + EXCLUS('GROUP_NO_1','GROUP_MA_2'), + EXCLUS('GROUP_NO_1','MAILLE_2'), + EXCLUS('MAILLE_1','GROUP_NO_2'), + EXCLUS('MAILLE_1','NOEUD_2'), + EXCLUS('NOEUD_1','GROUP_MA_2'), + EXCLUS('NOEUD_1','MAILLE_2'), + EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + DDL_1 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP", + into=("TEMP","TEMP_INF","TEMP_SUP") ), + COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'), + DDL_2 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP", + into=("TEMP","TEMP_INF","TEMP_SUP",) ), + COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'), + COEF_IMPO =SIMP(statut='o',typ='R' ), + SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ), + TRAN =SIMP(statut='f',typ='R',max='**'), + ANGL_NAUT =SIMP(statut='f',typ='R',max='**'), + CENTRE =SIMP(statut='f',typ='R',max='**'), + ), + + LIAISON_MAIL =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'), + AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL', + 'NOEUD_ESCL'),), + GROUP_MA_MAIT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_ESCL =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_ESCL =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TRAN =SIMP(statut='f',typ='R',max='**' ), + ANGL_NAUT =SIMP(statut='f',typ='R',max='**' ), + CENTRE =SIMP(statut='f',typ='R',max='**' ), + ELIM_MULT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + ), + + ECHANGE_PAROI =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'), + UN_PARMI('GROUP_MA_2','MAILLE_2'),), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + COEF_H =SIMP(statut='f',typ='R'), + TRAN =SIMP(statut='f',typ='R',min=2,max=3), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + CENTRE =SIMP(statut='f',typ='R',min=2,max=3), + ), + + LIAISON_UNIF =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + DDL =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP", + into=("TEMP","TEMP_INF","TEMP_SUP") ), + ), + + LIAISON_CHAMNO =FACT(statut='f',max='**', + CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster),# CO()# "il faut definir une structure de donnee generique chamno" + COEF_IMPO =SIMP(statut='o',typ='R' ), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ), + + CONVECTION =FACT(statut='f',max='**', + VITESSE =SIMP(statut='o',typ=(cham_no_sdaster) ), + ), + + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther, + fr="Affectation de charges et conditions aux limites thermiques fonction d'un (ou plusieurs)" + +" paramètres (temps, ...)", + reentrant='n', + UIinfo={"groupes":("Chargements","Thermique",)}, + regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','FLUX_NL','ECHANGE', + 'ECHANGE_PAROI','LIAISON_DDL','LIAISON_GROUP','LIAISON_UNIF', + 'GRAD_TEMP_INIT','RAYONNEMENT'),), + MODELE =SIMP(statut='o',typ=(modele_sdaster) ), + + TEMP_IMPO =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), + AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + DDL =SIMP(statut='f',typ='TXM',into=("TEMP",) ), + TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + FLUX_REP =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FLUN','FLUN_INF','FLUN_SUP','FLUX_X','FLUX_Y','FLUX_Z'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FLUN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FLUN_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FLUN_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FLUX_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FLUX_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FLUX_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + FLUX_NL =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FLUN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + + RAYONNEMENT =FACT(statut='f',max='**', + fr="Attention, exprimer les températures en Celsius si rayonnement", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SIGMA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPSILON =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP_EXT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + + + ECHANGE =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('COEF_H','COEF_H_INF','COEF_H_SUP'), + ENSEMBLE('COEF_H','TEMP_EXT'), + ENSEMBLE('COEF_H_INF','TEMP_EXT_INF'), + ENSEMBLE('COEF_H_SUP','TEMP_EXT_SUP'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + COEF_H =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP_EXT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + COEF_H_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP_EXT_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + COEF_H_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP_EXT_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + + SOURCE =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SOUR =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + GRAD_TEMP_INIT =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FLUX_X','FLUX_Y','FLUX_Z'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + FLUX_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FLUX_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FLUX_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + ECHANGE_PAROI =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'), + UN_PARMI('GROUP_MA_2','MAILLE_2'),), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + COEF_H =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TRAN =SIMP(statut='f',typ='R',min=2,max=3), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + CENTRE =SIMP(statut='f',typ='R',min=2,max=3), + ), + + LIAISON_DDL =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + DDL =SIMP(statut='f',typ='TXM',max='**',into=("TEMP","TEMP_INF","TEMP_SUP") ), + COEF_MULT =SIMP(statut='o',typ='R',max='**'), + COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + LIAISON_GROUP =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), + UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'), + EXCLUS('GROUP_MA_1','GROUP_NO_2'), + EXCLUS('GROUP_MA_1','NOEUD_2'), + EXCLUS('GROUP_NO_1','GROUP_MA_2'), + EXCLUS('GROUP_NO_1','MAILLE_2'), + EXCLUS('MAILLE_1','GROUP_NO_2'), + EXCLUS('MAILLE_1','NOEUD_2'), + EXCLUS('NOEUD_1','GROUP_MA_2'), + EXCLUS('NOEUD_1','MAILLE_2'), + EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + DDL_1 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP", + into=("TEMP","TEMP_INF","TEMP_SUP") ), + COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'), + DDL_2 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP", + into=("TEMP","TEMP_INF","TEMP_SUP") ), + COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'), + COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ), + TRAN =SIMP(statut='f',typ='R',max='**'), + ANGL_NAUT =SIMP(statut='f',typ='R',max='**'), + CENTRE =SIMP(statut='f',typ='R',max='**'), + ), + + LIAISON_UNIF =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + DDL =SIMP(statut='f',typ='TXM',defaut="TEMP", + into=("TEMP","TEMP_INF","TEMP_SUP") ), + ), + + CONVECTION =FACT(statut='f',max='**', + VITESSE =SIMP(statut='o',typ=cham_no_sdaster ), + ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 11/10/2011 AUTEUR MEUNIER S.MEUNIER +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater, + fr="Affecter des matériaux à des zones géométriques d'un maillage", + reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster), + MODELE =SIMP(statut='f',typ=modele_sdaster), + + # affectation du nom du matériau (par mailles): + # ---------------------------------------------- + AFFE =FACT(statut='o',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + MATER =SIMP(statut='o',typ=mater_sdaster,max=30), + ), + + # affectation de comportement (multifibres pour l'instant): + # ---------------------------------------------- + AFFE_COMPOR =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1), + ), + + # affectation des variables de commande : + # -------------------------------------------------- + # un mot clé caché qui ne sert qu'à boucler sur les VARC possibles : + LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("TEMP","CORR","IRRA","HYDR","SECH","EPSA", + "M_ACIER","M_ZIRC","NEUT1","NEUT2","PTOT","DIVU",)), + + AFFE_VARC =FACT(statut='f',max='**', + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('GROUP_MA','TOUT'), + PRESENT_ABSENT('MAILLE','TOUT'), + AU_MOINS_UN('EVOL','CHAMP_GD','VALE_REF'), + EXCLUS('EVOL','CHAMP_GD'), + ), + + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), # [défaut] + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + + NOM_VARC =SIMP(statut='o',typ='TXM', +# champ dans la doc into=("TEMP","CORR","IRRA","HYDR_ELNO","META_ELNO","NEUT") +# champ dans rscrsd into=("IRRA","TEMP","HYDR_ELNO","HYDR_NOEU","EPSA_ELNO","META_ELNO", +# "PTOT","DIVU") + ), + CHAMP_GD =SIMP(statut='f',typ=cham_gd_sdaster,), + EVOL =SIMP(statut='f',typ=evol_sdaster,), + + B_EVOL =BLOC(condition="EVOL!=None", + NOM_CHAM =SIMP(statut='f',typ='TXM',into=("TEMP","CORR","IRRA","NEUT" + "HYDR_ELNO","HYDR_NOEU", + "META_ELNO","META_NOEU", + "EPSA_ELNO","EPSA_NOEU","PTOT","DIVU",)), + PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + FONC_INST =SIMP(statut='f',typ=(fonction_sdaster,formule)), + ), + VALE_REF =SIMP(statut='f',typ='R'), + ), + + # mots clés cachés pour les variables de commande NEUTi : + # ------------------------------------------------------- + VARC_NEUT1 =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="NEUT1"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="NEUT_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("X1")), + CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("NEUT1")), + ), + VARC_NEUT2 =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="NEUT2"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="NEUT_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("X1")), + CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("NEUT2")), + ), + + # mots clés cachés pour variable de commande TEMP : + # -------------------------------------------------- + VARC_TEMP =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="TEMP"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="TEMP_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)), + CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)), + VALE_DEF =SIMP(statut='c',typ='R',max=1,min=1,defaut=(0.,)), + ), + + # mots clés cachés pour variable de commande PTOT : + # ------------------------------------------------- + VARC_PTOT =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="PTOT"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="DEPL_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("PTOT",)), + CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("PTOT",)), + ), + + # mots clés cachés pour variable de commande SECH : + # -------------------------------------------------- + VARC_SECH =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="SECH"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="TEMP_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)), + CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("SECH",)), + ), + + # mots clés cachés pour variable de commande HYDR : + # -------------------------------------------------- + VARC_HYDR =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="HYDR"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="HYDR_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("HYDR",)), + CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("HYDR",)), + ), + + # mots clés cachés pour variable de commande CORR : + # -------------------------------------------------- + VARC_CORR =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="CORR"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="CORR_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("CORR",)), + CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("CORR",)), + ), + + # mots clés cachés pour variable de commande IRRA : + # -------------------------------------------------- + VARC_IRRA =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="IRRA"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="IRRA_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("IRRA",)), + CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("IRRA",)), + ), + + # mots clés cachés pour variable de commande DIVU : + # -------------------------------------------------- + VARC_DIVU =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="DIVU"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="EPSI_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("DIVU",)), + CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("DIVU",)), + ), + + # mots clés cachés pour variable de commande EPSA : + # -------------------------------------------------- + VARC_EPSA =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="EPSA"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="EPSI_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=6,min=6,defaut=("EPXX","EPYY","EPZZ","EPXY","EPXZ","EPYZ",)), + CMP_VARC =SIMP(statut='c',typ='TXM',max=6,min=6,defaut=("EPSAXX","EPSAYY","EPSAZZ","EPSAXY","EPSAXZ","EPSAYZ",)), + ), + # mots clés cachés pour variable de commande metallurgique ACIER : + # ----------------------------------------------------------------- + VARC_M_ACIER =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="M_ACIER"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="VARI_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=7,min=7,defaut=("V1","V2","V3","V4","V5","V6","V7")), + CMP_VARC =SIMP(statut='c',typ='TXM',max=7,min=7,defaut=("PFERRITE","PPERLITE","PBAINITE", + "PMARTENS","TAUSTE","TRANSF","TACIER",)), + ), + # mots clés cachés pour variable de commande metallurgique ZIRCALOY : + # -------------------------------------------------------------------- + VARC_M_ZIRC =FACT(statut='d', + NOM_VARC =SIMP(statut='c',typ='TXM',defaut="M_ZIRC"), + GRANDEUR =SIMP(statut='c',typ='TXM',defaut="VARI_R"), + CMP_GD =SIMP(statut='c',typ='TXM',max=4,min=4,defaut=("V1","V2","V3","V4")), + CMP_VARC =SIMP(statut='c',typ='TXM',max=4,min=4,defaut=("ALPHPUR","ALPHBETA","TZIRC","TEMPS")), + ), + + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) ; + + +#& MODIF COMMANDE DATE 05/07/2011 AUTEUR FERNANDES R.FERNANDES +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster, + UIinfo={"groupes":("Modélisation",)}, + fr="Définir le phénomène physique modélisé et le type d'éléments finis sur le maillage",reentrant='n', + regles=(AU_MOINS_UN('AFFE','AFFE_SOUS_STRUC'),UN_PARMI('MAILLAGE','GRILLE')), + MAILLAGE =SIMP(statut='f',typ=maillage_sdaster), + GRILLE =SIMP(statut='f',typ=grille_sdaster), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), + VERIF =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2,into=("MAILLE","NOEUD") ), +# +#==== +# Définition des grandeurs caractéristiques +#==== +# + GRANDEUR_CARA =FACT(statut='f',max=1, + fr="Grandeurs caractéristiques pour l'adimensionnement des indicateurs d'erreur HM", + ang="Characteristic data for HM error estimators adimensionalisation", +# + LONGUEUR =SIMP(statut='f',typ='R',val_min=0, + fr ="Longueur caractéristique", + ang="Characteristic length",), + PRESSION =SIMP(statut='f',typ='R',val_min=0, + fr ="Pression caractéristique", + ang="Characteristic pressure",), + TEMPERATURE =SIMP(statut='f',typ='R',val_min=0, + fr ="Température caractéristique", + ang="Characteristic temperature",),), +# + AFFE_SOUS_STRUC =FACT(statut='f', + regles=(UN_PARMI('TOUT','SUPER_MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + SUPER_MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + PHENOMENE =SIMP(statut='f',typ='TXM',defaut="MECANIQUE",into=("MECANIQUE",) ), + ), + AFFE =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + PHENOMENE =SIMP(statut='o',typ='TXM', + into=("MECANIQUE","THERMIQUE","ACOUSTIQUE") ), + b_mecanique =BLOC( condition = "PHENOMENE=='MECANIQUE'", + fr="modélisations mécaniques", + MODELISATION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=( + "2D_DIS_T", # RESP. : FLEJOU J.L.FLEJOU + "2D_DIS_TR", # RESP. : FLEJOU J.L.FLEJOU + "2D_FLUI_ABSO", # RESP. : DEVESA G.DEVESA + "2D_FLUI_PESA", # RESP. : GREFFET N.GREFFET + "2D_FLUI_STRU", # RESP. : GREFFET N.GREFFET + "2D_FLUIDE", # RESP. : GREFFET N.GREFFET + "3D", # RESP. : DESROCHES X.DESROCHES + "3D_ABSO", # RESP. : DEVESA G.DEVESA + "3D_FAISCEAU", # RESP. : VOLDOIRE F.VOLDOIRE + "3D_FLUI_ABSO", # RESP. : DEVESA G.DEVESA + "3D_FLUIDE", # RESP. : GREFFET N.GREFFET + "3D_INCO", # RESP. : MICHEL S.MICHEL + "3D_INCO_UP", # RESP. : SFAYOLLE + "3D_INCO_GD", # RESP. : MICHEL S.MICHEL + "3D_SI", # RESP. : DESROCHES X.DESROCHES + "3D_GRAD_EPSI", # RESP. : MICHEL S.MICHEL + "3D_GRAD_VARI", # RESP. : MICHEL S.MICHEL + "3D_GVNO", # RESP. : BEAURAIN J.BEAURAIN + "3D_XFEM_CONT", # RESP. : GENIAUT S.GENIAUT + "3D_JOINT", # RESP. : LAVERNE J.LAVERNE + "3D_JOINT_HYME", # RESP. : LAVERNE J.LAVERNE + "3D_INTERFACE", # RESP. : LAVERNE J.LAVERNE + "AXIS", # RESP. : LEFEBVRE J.P.LEFEBVRE + "AXIS_FLUI_STRU", # RESP. : GREFFET N.GREFFET + "AXIS_FLUIDE", # RESP. : GREFFET N.GREFFET + "AXIS_FOURIER", # RESP. : DESROCHES X.DESROCHES + "AXIS_INCO", # RESP. : MICHEL S.MICHEL + "AXIS_INCO_UP", # RESP. : SFAYOLLE + "AXIS_INCO_GD", # RESP. : MICHEL S.MICHEL + "AXIS_SI", # RESP. : DESROCHES X.DESROCHES + "AXIS_GRAD_VARI", # RESP. : MICHEL S.MICHEL + "AXIS_GVNO", # RESP. : BEAURAIN J.BEAURAIN + "AXIS_JOINT", # RESP. : LAVERNE J.LAVERNE + "AXIS_INTERFACE", # RESP. : LAVERNE J.LAVERNE + "AXIS_ELDI", # RESP. : LAVERNE J.LAVERNE + "BARRE", # RESP. : FLEJOU J.L.FLEJOU + "2D_BARRE", # RESP. : FLEJOU J.L.FLEJOU + "C_PLAN", # RESP. : LEFEBVRE J.P.LEFEBVRE + "C_PLAN_XFEM_CONT",# RESP. : GENIAUT S.GENIAUT + "C_PLAN_SI", # RESP. : DESROCHES X.DESROCHES + "C_PLAN_GRAD_EPSI",# RESP. : MICHEL S.MICHEL + "CABLE", # RESP. : FLEJOU J.L.FLEJOU + "CABLE_POULIE", # RESP. : None + "COQUE_3D", # RESP. : DESROCHES X.DESROCHES + "COQUE_AXIS", # RESP. : DESROCHES X.DESROCHES + "COQUE_C_PLAN", # RESP. : DESROCHES X.DESROCHES + "COQUE_D_PLAN", # RESP. : DESROCHES X.DESROCHES + "D_PLAN", # RESP. : LEFEBVRE J.P.LEFEBVRE + "D_PLAN_XFEM_CONT",# RESP. : GENIAUT S.GENIAUT + "D_PLAN_GRAD_EPSI",# RESP. : MICHEL S.MICHEL + "D_PLAN_GRAD_VARI",# RESP. : MICHEL S.MICHEL + "D_PLAN_GVNO", # RESP. : BEAURAIN J.BEAURAIN + "D_PLAN_GRAD_SIGM",# RESP. : GRANET S.GRANET + "PLAN_JOINT", # RESP. : LAVERNE J.LAVERNE + "PLAN_JOINT_HYME", # RESP. : LAVERNE J.LAVERNE + "PLAN_INTERFACE", # RESP. : LAVERNE J.LAVERNE + "PLAN_ELDI", # RESP. : LAVERNE J.LAVERNE + "D_PLAN_ABSO", # RESP. : DEVESA G.DEVESA + "D_PLAN_INCO", # RESP. : MICHEL S.MICHEL + "D_PLAN_INCO_UP", # RESP. : SFAYOLLE + "D_PLAN_INCO_GD", # RESP. : MICHEL S.MICHEL + "D_PLAN_SI", # RESP. : DESROCHES X.DESROCHES + "DIS_T", # RESP. : FLEJOU J.L.FLEJOU + "DIS_TR", # RESP. : FLEJOU J.L.FLEJOU + "DKT", # RESP. : DESROCHES X.DESROCHES + "DKTG", # RESP. : MARKOVIC D.MARKOVIC + "DST", # RESP. : DESROCHES X.DESROCHES + "FLUI_STRU", # RESP. : GREFFET N.GREFFET + "GRILLE_EXCENTRE", # RESP. : ROSPARS C.ROSPARS + "GRILLE_MEMBRANE", # RESP. : ROSPARS C.ROSPARS + "POU_C_T", # RESP. : FLEJOU J.L.FLEJOU + "POU_D_E", # RESP. : FLEJOU J.L.FLEJOU + "POU_D_EM", # RESP. : FLEJOU J.L.FLEJOU + "POU_D_T", # RESP. : FLEJOU J.L.FLEJOU + "POU_D_T_GD", # RESP. : FLEJOU J.L.FLEJOU + "POU_D_TG", # RESP. : FLEJOU J.L.FLEJOU + "POU_D_TGM", # RESP. : FLEJOU J.L.FLEJOU + "Q4G", # RESP. : DESROCHES X.DESROCHES + "TUYAU_3M", # RESP. : PROIX J.M.PROIX + "TUYAU_6M", # RESP. : PROIX J.M.PROIX + "SHB", # RESP. : DESROCHES X.DESROCHES + "D_PLAN_HHM", # RESP. : GRANET S.GRANET + "D_PLAN_HM", # RESP. : GRANET S.GRANET + "D_PLAN_THM", # RESP. : GRANET S.GRANET + "D_PLAN_HHMD", # RESP. : GRANET S.GRANET + "D_PLAN_HH2MD", # RESP. : GRANET S.GRANET + "D_PLAN_HMD", # RESP. : GRANET S.GRANET + "D_PLAN_THHD", # RESP. : GRANET S.GRANET + "D_PLAN_THH2D", # RESP. : GRANET S.GRANET + "D_PLAN_THVD", # RESP. : GRANET S.GRANET + "D_PLAN_THH2MD", # RESP. : GRANET S.GRANET + "D_PLAN_THHMD", # RESP. : GRANET S.GRANET + "D_PLAN_THMD", # RESP. : GRANET S.GRANET + "D_PLAN_HHMS", # RESP. : GRANET S.GRANET + "D_PLAN_HH2MS", # RESP. : GRANET S.GRANET + "D_PLAN_HMS", # RESP. : GRANET S.GRANET + "D_PLAN_THHS", # RESP. : GRANET S.GRANET + "D_PLAN_THH2S", # RESP. : GRANET S.GRANET + "D_PLAN_THVS", # RESP. : GRANET S.GRANET + "D_PLAN_THH2MS", # RESP. : GRANET S.GRANET + "D_PLAN_THHMS", # RESP. : GRANET S.GRANET + "D_PLAN_THMS", # RESP. : GRANET S.GRANET + "D_PLAN_HM_P", # RESP. : GRANET S.GRANET + "D_PLAN_HS", # RESP. : GRANET S.GRANET + "D_PLAN_HHD", # RESP. : GRANET S.GRANET + "D_PLAN_HHS", # RESP. : GRANET S.GRANET + "D_PLAN_HH2D", # RESP. : GRANET S.GRANET + "D_PLAN_HH2S", # RESP. : GRANET S.GRANET + "D_PLAN_2DG", # RESP. : GRANET S.GRANET + "D_PLAN_DIL", # RESP. : GRANET S.GRANET + "3D_DIL", # RESP. : GRANET S.GRANET + "AXIS_THM", # RESP. : GRANET S.GRANET + "AXIS_HHM", # RESP. : GRANET S.GRANET + "AXIS_HM", # RESP. : GRANET S.GRANET + "AXIS_HH2MD", # RESP. : GRANET S.GRANET + "AXIS_HHMD", # RESP. : GRANET S.GRANET + "AXIS_HMD", # RESP. : GRANET S.GRANET + "AXIS_THHD", # RESP. : GRANET S.GRANET + "AXIS_THH2D", # RESP. : GRANET S.GRANET + "AXIS_THVD", # RESP. : GRANET S.GRANET + "AXIS_THHMD", # RESP. : GRANET S.GRANET + "AXIS_THH2MD", # RESP. : GRANET S.GRANET + "AXIS_THMD", # RESP. : GRANET S.GRANET + "AXIS_HH2MS", # RESP. : GRANET S.GRANET + "AXIS_HHMS", # RESP. : GRANET S.GRANET + "AXIS_HMS", # RESP. : GRANET S.GRANET + "AXIS_THHS", # RESP. : GRANET S.GRANET + "AXIS_THH2S", # RESP. : GRANET S.GRANET + "AXIS_THVS", # RESP. : GRANET S.GRANET + "AXIS_THHMS", # RESP. : GRANET S.GRANET + "AXIS_THH2MS", # RESP. : GRANET S.GRANET + "AXIS_THMS", # RESP. : GRANET S.GRANET + "AXIS_HHD", # RESP. : GRANET S.GRANET + "AXIS_HHS", # RESP. : GRANET S.GRANET + "AXIS_HH2D", # RESP. : GRANET S.GRANET + "AXIS_HH2S", # RESP. : GRANET S.GRANET + "3D_HHM" , # RESP. : GRANET S.GRANET + "3D_HM", # RESP. : GRANET S.GRANET + "3D_THHM", # RESP. : GRANET S.GRANET + "3D_THM", # RESP. : GRANET S.GRANET + "3D_HHMD", # RESP. : GRANET S.GRANET + "3D_HMD", # RESP. : GRANET S.GRANET + "3D_THHD", # RESP. : GRANET S.GRANET + "3D_THVD", # RESP. : GRANET S.GRANET + "3D_THHMD", # RESP. : GRANET S.GRANET + "3D_THMD", # RESP. : GRANET S.GRANET + "3D_HHMS", # RESP. : GRANET S.GRANET + "3D_HMS", # RESP. : GRANET S.GRANET + "3D_THHS", # RESP. : GRANET S.GRANET + "3D_THVS", # RESP. : GRANET S.GRANET + "3D_THHMS", # RESP. : GRANET S.GRANET + "3D_THMS", # RESP. : GRANET S.GRANET + "3D_THH2MD", # RESP. : GRANET S.GRANET + "3D_THH2MS", # RESP. : GRANET S.GRANET + "3D_HH2MD", # RESP. : GRANET S.GRANET + "3D_HH2MS", # RESP. : GRANET S.GRANET + "3D_THH2S", # RESP. : GRANET S.GRANET + "3D_THH2D", # RESP. : GRANET S.GRANET + "3D_HS", # RESP. : GRANET S.GRANET + "3D_HHD", # RESP. : GRANET S.GRANET + "3D_HHS", # RESP. : GRANET S.GRANET + "3D_HH2D", # RESP. : GRANET S.GRANET + "3D_HH2S", # RESP. : GRANET S.GRANET + "VF1", # RESP. : GRANET S.GRANET + "3D_HH2SUDM", # RESP. : GRANET S.GRANET + "3D_HH2SUDA", # RESP. : GRANET S.GRANET + "3D_HH2SUC", # RESP. : GRANET S.GRANET + "D_PLAN_HH2SUDM", # RESP. : GRANET S.GRANET + "D_PLAN_HH2SUC", # RESP. : GRANET S.GRANET + "D_PLAN_HH2SUDA", # RESP. : GRANET S.GRANET + "PLAN_JHMS", + "AXIS_JHMS", + ) ) ), + + b_thermique =BLOC( condition = "PHENOMENE=='THERMIQUE'", + fr="modélisations thermiques", + MODELISATION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=( + "3D", # RESP. : DURAND C.DURAND + "3D_DIAG", # RESP. : DURAND C.DURAND + "AXIS", # RESP. : DURAND C.DURAND + "AXIS_DIAG", # RESP. : DURAND C.DURAND + "AXIS_FOURIER", # RESP. : DESROCHES X.DESROCHES + "COQUE", # RESP. : DESROCHES X.DESROCHES + "COQUE_AXIS", # RESP. : DESROCHES X.DESROCHES + "COQUE_PLAN", # RESP. : DESROCHES X.DESROCHES + "PLAN", # RESP. : DURAND C.DURAND + "PLAN_DIAG", # RESP. : DURAND C.DURAND + ),),), + + b_acoustique =BLOC( condition = "PHENOMENE=='ACOUSTIQUE'", + fr="modélisations acoustiques", + MODELISATION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=( + "3D", # RESP. : None + "PLAN" # RESP. : None + ), ),), + + ), + + PARTITION =FACT(statut='d', + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="GROUP_ELEM", + into=("MAIL_CONTIGU","MAIL_DISPERSE","CENTRALISE","GROUP_ELEM")), + b_dist_maille =BLOC(condition = "PARALLELISME in ('MAIL_DISPERSE','MAIL_CONTIGU')", + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,val_min=0,val_max=100), + ), + ), + + VERI_JACOBIEN =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI', + fr ="Vérification de la forme des mailles (jacobiens tous de meme signe).",), +) ; +#& MODIF COMMANDE DATE 25/01/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + +def appl_cine_matr_prod(MATR_ASSE,**args): + if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_depl_r + if AsType(MATR_ASSE) == matr_asse_depl_c : return matr_asse_depl_c + if AsType(MATR_ASSE) == matr_asse_temp_r : return matr_asse_temp_r + if AsType(MATR_ASSE) == matr_asse_temp_c : return matr_asse_temp_c + if AsType(MATR_ASSE) == matr_asse_pres_r : return matr_asse_pres_r + if AsType(MATR_ASSE) == matr_asse_pres_c : return matr_asse_pres_c + raise AsException("type de concept resultat non prevu") + +APPL_CINE_MATR=OPER(nom="APPL_CINE_MATR",op=158,sd_prod=appl_cine_matr_prod, + fr="Appliquer les C.L. cinématiques sur la matrice", + reentrant='f', UIinfo={"groupes":("Résolution",)}, + MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r, + matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 25/01/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + +APPL_CINE_SCMB=OPER(nom="APPL_CINE_SCMB",op=159,sd_prod=cham_no_sdaster,reentrant='f', + fr="Application des C.L. cinématiques au second membre", + UIinfo={"groupes":("Résolution",)}, + CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), + MATR =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r, + matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ), + CHAM_CINE =SIMP(statut='f',typ=cham_no_sdaster), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ANDRIAM H.ANDRIAMBOLOLONA + + +def asse_elem_ssd_prod(self,RESU_ASSE_SSD,**args): + MTYPES = { + 'MODELE' : modele_gene, + 'NUME_DDL_GENE' : nume_ddl_gene, + 'RIGI_GENE' : matr_asse_gene_r, + 'MASS_GENE' : matr_asse_gene_r, + } + for res in RESU_ASSE_SSD: + for mc, typ in MTYPES.items(): + if res[mc]: + self.type_sdprod(res[mc], typ) + return None + +ASSE_ELEM_SSD=MACRO(nom="ASSE_ELEM_SSD", + op=OPS('Macro.asse_elem_ssd_ops.asse_elem_ssd_ops'), + sd_prod=asse_elem_ssd_prod, + reentrant='n', + fr="Enchainer les commandes DEFI_MODELE_GENE, NUME_DDL_GENE et ASSE_MATR_GENE", + UIinfo={"groupes":("Matrices/vecteurs",)}, + +# pour les concepts de sortie + RESU_ASSE_SSD = FACT( statut='o', max=1, + regles=(PRESENT_PRESENT('RIGI_GENE','NUME_DDL_GENE'), + PRESENT_PRESENT('MASS_GENE','NUME_DDL_GENE'),), + MODELE=SIMP(statut='o',typ=CO,defaut=None), + NUME_DDL_GENE=SIMP(statut='f',typ=CO,defaut=None), + RIGI_GENE=SIMP(statut='f',typ=CO,defaut=None), + MASS_GENE=SIMP(statut='f',typ=CO,defaut=None), + ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + +# pour DEFI_MODELE_GENE + SOUS_STRUC =FACT(statut='o',max='**', + NOM =SIMP(statut='o',typ='TXM' ), + MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + TRANS =SIMP(statut='f',typ='R',max=3), + ), + LIAISON =FACT(statut='o',max='**', + SOUS_STRUC_1 =SIMP(statut='o',typ='TXM' ), + INTERFACE_1 =SIMP(statut='o',typ='TXM' ), + SOUS_STRUC_2 =SIMP(statut='o',typ='TXM' ), + INTERFACE_2 =SIMP(statut='o',typ='TXM' ), + regles=(EXCLUS('GROUP_MA_MAIT_1','GROUP_MA_MAIT_2','MAILLE_MAIT_2'), + EXCLUS('MAILLE_MAIT_1','GROUP_MA_MAIT_2','MAILLE_MAIT_2'),), + GROUP_MA_MAIT_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_MAIT_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_MAIT_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_MAIT_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + OPTION =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("REDUIT","CLASSIQUE") ), + ), + VERIF =FACT(statut='d',max=1, + STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + ), + + +# pour NUME_DDL_GENE + METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","ELIMINE") ), + STOCKAGE =SIMP(statut='f',typ='TXM',defaut="LIGN_CIEL",into=("LIGN_CIEL","PLEIN") ), + +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +ASSE_MAILLAGE=OPER(nom="ASSE_MAILLAGE",op= 105,sd_prod=maillage_sdaster, + fr="Assembler deux maillages pour en former un nouveau", + reentrant='n', + UIinfo={"groupes":("Maillage",)}, + MAILLAGE_1 = SIMP(statut='o',typ=maillage_sdaster,), + MAILLAGE_2 = SIMP(statut='o',typ=maillage_sdaster,), + OPERATION = SIMP(statut='o',typ='TXM',into=("SOUS_STR","SUPERPOSE","COLLAGE"),), + b_collage = BLOC(condition = "OPERATION == 'COLLAGE'", + COLLAGE = FACT(statut='o', + GROUP_MA_1 =SIMP(statut='o',typ=grma), + GROUP_MA_2 =SIMP(statut='o',typ=grma), + ), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE BODEL C.BODEL +def asse_matr_gene_prod(METHODE,**args): + if (METHODE=="INITIAL") : return matr_asse_gene_r + elif (args['OPTION']=="RIGI_GENE_C") : return matr_asse_gene_c + else : return matr_asse_gene_r + +ASSE_MATR_GENE=OPER(nom="ASSE_MATR_GENE",op= 128,sd_prod=asse_matr_gene_prod, + fr="Assemblage des matrices généralisées de macro éléments pour construction de la matrice globale généralisée", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), + METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","INITIAL") ), + b_option =BLOC(condition = "METHODE == 'CLASSIQUE'", + OPTION =SIMP(statut='o',typ='TXM',into=("RIGI_GENE","RIGI_GENE_C","MASS_GENE","AMOR_GENE") ), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +def asse_matrice_prod(MATR_ELEM,**args): + if AsType(MATR_ELEM) == matr_elem_depl_r : return matr_asse_depl_r + if AsType(MATR_ELEM) == matr_elem_depl_c : return matr_asse_depl_c + if AsType(MATR_ELEM) == matr_elem_temp_r : return matr_asse_temp_r + if AsType(MATR_ELEM) == matr_elem_pres_c : return matr_asse_pres_c + raise AsException("type de concept resultat non prevu") + +ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod, + fr="Construction d'une matrice assemblée",reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + MATR_ELEM =SIMP(statut='o', + typ=(matr_elem_depl_r,matr_elem_depl_c,matr_elem_temp_r,matr_elem_pres_c) ), + NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster), + SYME =SIMP(statut='f',typ='TXM',into=("OUI",) ), + CHAR_CINE =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE BODEL C.BODEL +ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene, + fr="Projection des chargements sur la base modale d'une sous structure", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), + METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","INITIAL") ), + b_nume =BLOC(condition = "METHODE == 'CLASSIQUE'", + CHAR_SOUS_STRUC =FACT(statut='o',max='**', + SOUS_STRUC =SIMP(statut='o',typ='TXM' ), + VECT_ASSE =SIMP(statut='o',typ=cham_no_sdaster ), + ), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + +ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=cham_no_sdaster, + fr="Construire un champ aux noeuds par assemblage de vecteurs élémentaires",reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + VECT_ELEM =SIMP(statut='o',typ=vect_elem,max='**'), + NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ), + INFO =SIMP(statut='f',typ='I',into=(1,2,) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA +CALC_AMOR_MODAL=OPER(nom="CALC_AMOR_MODAL",op= 172,sd_prod=listr8_sdaster, + fr="Création d'une liste d'amortissements modaux calculés selon la règle du RCC-G", + reentrant='n', + UIinfo={"groupes":("Résolution","Dynamique",)}, + regles=(EXCLUS('AMOR_RAYLEIGH','ENER_SOL',), + EXCLUS('AMOR_RAYLEIGH','AMOR_INTERNE',), + EXCLUS('AMOR_RAYLEIGH','AMOR_SOL',), + PRESENT_PRESENT('ENER_SOL','AMOR_INTERNE'), + PRESENT_PRESENT('ENER_SOL','AMOR_SOL'), + ), + AMOR_RAYLEIGH =FACT(statut='f', + AMOR_ALPHA =SIMP(statut='o',typ='R'), + AMOR_BETA =SIMP(statut='o',typ='R'), + MODE_MECA =SIMP(statut='o',typ=mode_meca ), + ), + ENER_SOL =FACT(statut='f', + regles=(UN_PARMI('GROUP_NO_RADIER','GROUP_MA_RADIER'), + PRESENT_ABSENT('COEF_GROUP','FONC_GROUP'), +# Peut-on remplacer les deux règles suivantes par un ENSEMBLE_('KRX','KRY','KRZ') + PRESENT_PRESENT('KRX','KRY'), + PRESENT_PRESENT('KRX','KRZ'), + PRESENT_ABSENT('COOR_CENTRE','NOEUD_CENTRE'), + PRESENT_ABSENT('GROUP_NO_CENTRE','NOEUD_CENTRE'), + PRESENT_ABSENT('GROUP_NO_CENTRE','COOR_CENTRE'),), + METHODE =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","RIGI_PARASOL") ), + MODE_MECA =SIMP(statut='o',typ=mode_meca ), + GROUP_NO_RADIER =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + GROUP_MA_RADIER =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + FONC_GROUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + COEF_GROUP =SIMP(statut='f',typ='R',max='**'), + KX =SIMP(statut='o',typ='R' ), + KY =SIMP(statut='o',typ='R' ), + KZ =SIMP(statut='o',typ='R' ), + KRX =SIMP(statut='f',typ='R' ), + KRY =SIMP(statut='f',typ='R' ), + KRZ =SIMP(statut='f',typ='R' ), + GROUP_NO_CENTRE =SIMP(statut='f',typ=grno), + NOEUD_CENTRE =SIMP(statut='f',typ=no), + COOR_CENTRE =SIMP(statut='f',typ='R',max=3), + ), + AMOR_INTERNE =FACT(statut='f', + ENER_POT =SIMP(statut='o',typ=table_sdaster ), + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + AMOR_REDUIT =SIMP(statut='o',typ='R',max='**'), + ), + AMOR_SOL =FACT(statut='f', + AMOR_REDUIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + FONC_AMOR_GEO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ), + HOMOGENE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + SEUIL =SIMP(statut='f',typ='R',defaut= 0.3 ), + ), +) ; +#& MODIF COMMANDE DATE 13/01/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE + +CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=cham_elem, + fr="Calculer un champ élémentaire en thermique et en accoustique à partir de champs déjà calculés", + reentrant='n', + UIinfo={"groupes":("Résultats et champs","Post-traitements",)}, + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + + regles=(EXCLUS('TOUT','GROUP_MA',),EXCLUS('TOUT','MAILLE',),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + +# +# +# introduire un mot cle de type modelisation : mécanique,thermique,... +# + + OPTION =SIMP(statut='o',typ='TXM', + into=("FLUX_ELGA","FLUX_ELNO", + "PRAC_ELNO", + "COOR_ELGA"), ), + + b_thermique =BLOC(condition="OPTION in ('FLUX_ELNO','FLUX_ELGA',)", + TEMP =SIMP(statut='o',typ=(cham_no_sdaster,)), + ), + + b_acoustique =BLOC(condition="OPTION in ('PRAC_ELNO',)", + PRES =SIMP(statut='o',typ=(cham_no_sdaster,)), + ), + + + + EXCIT =FACT(statut='f',max='**', + regles=(EXCLUS('FONC_MULT','COEF_MULT', ),), + CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + COEF_MULT =SIMP(statut='f',typ='R'), ), + + INST =SIMP(statut='f',typ='R',defaut= 0.E+0), + ACCE =SIMP(statut='f',typ=cham_no_sdaster), + NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1), + NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY") ), + MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), + ANGLE =SIMP(statut='f',typ='I',defaut= 0), +) ; +#& MODIF COMMANDE DATE 12/10/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE SELLENET N.SELLENET +def calc_champ_prod(RESULTAT,**args): + if AsType(RESULTAT) != None : return AsType(RESULTAT) + raise AsException("type de concept resultat non prevu") + +CALC_CHAMP=OPER(nom="CALC_CHAMP",op=52,sd_prod=calc_champ_prod,reentrant='f', + UIinfo={"groupes":("Post traitements",)}, + fr="Completer ou creer un resultat en calculant des champs par elements ou aux noeuds", + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CARA_ELEM = SIMP(statut='f',typ=cara_elem), + + RESULTAT = SIMP(statut='o',typ=resultat_sdaster,position='global', + fr="Resultat d'une commande globale"), + + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS = SIMP(statut='f',typ='TXM' ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + FREQ = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + LIST_FREQ = SIMP(statut='f',typ=listr8_sdaster), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela = BLOC(condition="(CRITERE=='RELATIF')", + PRECISION = SIMP(statut='f',typ='R',defaut= 1.E-6),), + b_prec_abso = BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION = SIMP(statut='o',typ='R'),), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",), + fr="le calcul sera effectue sur toutes les mailles"), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectue que sur ces groupes de mailles"), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectue que sur ces mailles"), + GROUP_NO = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectue que sur ces groupes de noeuds"), + NOEUD = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectue que sur ces noeuds"), + + EXCIT = FACT(statut='f',max='**', + fr="Charges contenant les temperatures, les efforts repartis pour les poutres...", + regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), + CHARGE = SIMP(statut='o',typ=(char_meca,char_cine_meca) ), + FONC_MULT = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FONC_MULT_C = SIMP(statut='f',typ=fonction_c), + COEF_MULT = SIMP(statut='f',typ='R'), + COEF_MULT_C = SIMP(statut='f',typ='C'), + PHAS_DEG = SIMP(statut='f',typ='R'), + PUIS_PULS = SIMP(statut='f',typ='I'), + TYPE_CHARGE = SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),), + + # Bloc lineaire + b_lineaire = BLOC(condition = "AsType(RESULTAT) in (evol_elas,dyna_trans,dyna_harmo,mode_meca,\ + comb_fourier,mult_elas,fourier_elas,mode_flamb)", + CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul de contraintes et efforts generalises", + into=( + "SIEF_ELGA","SIEF_ELNO","SIEF_NOEU", + "SIGM_ELGA","SIGM_ELNO","SIGM_NOEU", + "EFGE_ELGA", + "SIPO_ELNO","SIPO_NOEU", + #"EFGE_ELNO", + "EFGE_NOEU", + #"EFCA_ELNO", + #"EFCA_NOEU" + "SICA_ELNO","SICA_NOEU", + "SITU_ELNO", + #"SIRO_ELEM", + "SIPM_ELNO", + ), + ), + DEFORMATION = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul de deformations", + into=( + "EPSI_ELNO","EPSI_ELGA","EPSG_ELGA","EPSG_ELNO", + "EPME_ELNO","EPME_ELGA","DEGE_ELNO","DEGE_ELGA", + "EPTU_ELNO","EPVC_ELNO","EPVC_ELGA","EPSI_NOEU", + "EPSG_NOEU","EPVC_NOEU", + ), + ), + ENERGIE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul d'energies", + into=( + "EPOT_ELEM","ECIN_ELEM","ENEL_ELGA","ENEL_ELNO", + "ENEL_NOEU", + #"ETOT_ELGA", + #"ETOT_ELNO", + #"ETOT_ELEM", + "DISS_ELGA","DISS_ELNO","DISS_NOEU", + ), + ), + CRITERES = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul de criteres", + into=( + #"SIEQ_ELNO","SIEQ_NOEU", + "SIEQ_ELGA", + "EPEQ_ELNO","EPEQ_ELGA","EPMQ_ELNO","EPMQ_ELGA", + "ENDO_ELGA","ENDO_ELNO","ENDO_NOEU","EPEQ_NOEU", + "SITQ_ELNO","EPTQ_ELNO", + ), + ), + VARI_INTERNE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul de variables internes", + into=( "VARC_ELGA", ),), + ), + + # Bloc non-lineaire + b_non_lin = BLOC(condition = "AsType(RESULTAT) in (evol_noli,)", + CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul de contraintes et efforts generalises", + into=( + "SIEF_ELNO","SIEF_NOEU", + "SIGM_ELGA","SIGM_ELNO","SIGM_NOEU", + "EFGE_ELGA", + #"EFCA_ELNO","EFCA_NOEU" + "SITU_ELNO","SIPO_ELNO","SIPO_NOEU", + ), + ), + + DEFORMATION = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul de deformations", + into=( + "EPSI_ELNO","EPSI_ELGA","EPSG_ELNO","EPSG_ELGA","EPSG_NOEU", + "EPME_ELNO","EPME_ELGA","EPMG_ELNO","EPMG_ELGA","EPMG_NOEU", + "EPSP_ELNO","EPSP_ELGA","DEGE_ELNO","EPVC_ELNO","EPVC_ELGA", + "EPFD_ELNO","EPFD_ELGA","EPFP_ELNO","EPFP_ELGA","EPTU_ELNO", + "EPSI_NOEU","EPSP_NOEU","EPVC_NOEU","EPFD_NOEU","EPFP_NOEU", + ), + ), + + ENERGIE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul d'energies", + into=( + #"ETOT_ELGA", + #"ETOT_ELNO", + #"ETOT_ELEM", + "ENEL_ELGA","ENEL_ELNO","ENEL_NOEU", + "DISS_ELGA","DISS_ELNO", + ), + ), + + CRITERES = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul de criteres", + into=( + #"SIEQ_ELNO","SIEQ_NOEU", + "SIEQ_ELGA", + "EPEQ_ELNO","EPEQ_ELGA","EPMQ_ELNO","EPMQ_ELGA", + "EPMQ_NOEU","EPEQ_NOEU", + "ENDO_ELGA","ENDO_ELNO","ENDO_NOEU", + "PMPB_ELNO","PMPB_ELGA","SITQ_ELNO","EPTQ_ELNO", + "PMPB_NOEU", + ), + ), + + VARI_INTERNE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul de variables internes", + into=( + "VARI_ELNO","VARI_NOEU","VATU_ELNO","VACO_ELNO", + "VAEX_ELGA","VAEX_NOEU","VAEX_ELNO", + ), + ), + + b_nom_vari = BLOC(condition = "au_moins_un(VARI_INTERNE, ('VAEX_ELNO','VAEX_ELGA','VAEX_NOEU'))", + NOM_VARI = SIMP(statut='o',typ='TXM',min= 1,max='**', + fr="nom de la variable a extraire", + into=("DPORO","DRHOLQ","DPVP","SATLIQ","EVP","IND_ETA","D","IND_END","TEMP_MAX","GAMP","PCR", + "SEUIL_HYD","IND_HYD","PCOHE","COMP_ROC","SEUIL_ISO","ANG_DEV","X11","X22","X33","X12","X13","X23", + "DIST_DEV","DEV_SUR_CRIT","DIST_ISO","NB_ITER","ARRET","NB_REDE","SIGNE", + "RDEV_1","RDEV_2","RDEV_3","RISO","EPSIVPLA","IND_1","IND_2","IND_3","IND_4", + ), + ), + ), + + HYDRAULIQUE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour le calcul de flux hydraulique", + into=( + "FLHN_ELGA", + ), + ), + ), + + # Bloc Thermique + b_ther = BLOC(condition = "AsType(RESULTAT) in (evol_ther,fourier_ther,)" , + THERMIQUE = SIMP(statut='f',typ='TXM',validators=NoRepeat(), max='**', + fr="Options pour le calcul de champs en thermique", + into=( + "FLUX_ELGA","FLUX_ELNO","FLUX_NOEU", + "DURT_ELNO","SOUR_ELGA","ERTH_ELEM","ERTH_ELNO", + "DURT_NOEU", + ), + ), + ), + + # Bloc acoustique + b_acou = BLOC(condition = "AsType(RESULTAT) in (acou_harmo,mode_acou,dyna_harmo)", + ACOUSTIQUE = SIMP(statut='f',typ='TXM',validators=NoRepeat(), max='**', + fr="Options pour le calcul de champs en acoustique", + into=( + "PRAC_ELNO","PRAC_NOEU", + "INTE_ELNO","INTE_NOEU", + ), + ), + ), + + # Bloc FORC_NODA et REAC_NODA + FORCE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + fr="Options pour des forces nodales et des reactions nodales", + into=("FORC_NODA","REAC_NODA",), + ), + + # Mot-cle facteur CHAMp UTILisateur + CHAM_UTIL = FACT(statut='f', max='**', + regles = (UN_PARMI('FORMULE', 'CRITERE'), ), + NOM_CHAM = SIMP(statut='o', typ='TXM', + fr="Nom du champ utilisé en donnée",), + FORMULE = SIMP(statut='f', typ=formule, max='**', + fr="Formule permet d'obtenir le critère",), + CRITERE = SIMP(statut='f', typ='TXM', + into=('TRACE', 'VMIS', 'INVA_2'), + fr="Calcule d'un critère pré-défini",), + NUME_CHAM_RESU = SIMP(statut='o', typ='I', val_min=1, val_max=20, + fr="Numéro du champ produit. Exemple: 6 produit le champ UT06",), + ), + + INFO = SIMP(statut='f',typ='I',defaut= 1,into=(1,2)), + + TITRE = SIMP(statut='f',typ='TXM',max='**'), +); +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + +CALC_CHAR_CINE=OPER(nom="CALC_CHAR_CINE",op= 102,sd_prod=cham_no_sdaster, + fr="Calcul des seconds membres associés à des charges cinématiques (conditions aux limites non dualisées)", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ), + CHAR_CINE =SIMP(statut='o',typ=(char_cine_meca,char_cine_ther,char_cine_acou ),validators=NoRepeat(),max='**' ), + INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA +def calc_char_seisme_prod(MATR_MASS,**args ): + if AsType(MATR_MASS) == matr_asse_depl_r : return cham_no_sdaster + raise AsException("type de concept resultat non prevu") + +CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op= 92,sd_prod=calc_char_seisme_prod, + reentrant='n',fr="Calcul du chargement sismique", + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=(UN_PARMI('MONO_APPUI','MODE_STAT' ),), + MATR_MASS =SIMP(statut='o',typ=matr_asse_depl_r,fr="Matrice de masse" ), + DIRECTION =SIMP(statut='o',typ='R',max=6,fr="Directions du séisme imposé"), + MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MODE_STAT =SIMP(statut='f',typ=(mode_meca,) ), + b_mode_stat =BLOC ( condition = "MODE_STAT != None", + regles=(UN_PARMI('NOEUD','GROUP_NO' ),), + NOEUD =SIMP(statut='f',typ=no,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 20/09/2011 AUTEUR CORUS M.CORUS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE CORUS M.CORUS +CALC_CORR_SSD=OPER(nom="CALC_CORR_SSD",op= 91,sd_prod=table_container, + fr="Qualite d'un modele reduit en dynamique", + reentrant='n', + UIinfo={"groupes":("Dynamique",)}, + MODELE_GENE =SIMP(statut='o',typ=modele_gene), + RESU_GENE =SIMP(statut='o',typ=mode_gene ), + UNITE =SIMP(statut='f',typ='I',defaut=6,), + SHIFT =SIMP(statut='f',typ='R',defaut= 1. ), + VERIF =FACT(statut='f',max='**', + STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BOTTONI M.BOTTONI + + +def calc_ecrevisse_prod(self,CHARGE_MECA,CHARGE_THER1,CHARGE_THER2,TABLE,DEBIT,**args): + + self.type_sdprod(CHARGE_MECA,char_meca) + self.type_sdprod(CHARGE_THER1,char_ther) + self.type_sdprod(CHARGE_THER2,char_ther) + self.type_sdprod(TABLE,table_sdaster) + self.type_sdprod(DEBIT,table_sdaster) + return None + + + +CALC_ECREVISSE=MACRO(nom="CALC_ECREVISSE", + op=OPS('Macro.calc_ecrevisse_ops.calc_ecrevisse_ops'), + sd_prod=calc_ecrevisse_prod, + reentrant='n', + UIinfo={"groupes":("Outils-métier",)},fr="Procedure de couplage avec Ecrevisse", + regles = (UN_PARMI('LOGICIEL','VERSION'),), + +# CONCEPTS SORTANTS : 2 CHARGEMENTS THERMIQUE + 1 MECANIQUE + 2 TABLES POUR LE POST-TRAITEMENT +# ******************************************** + CHARGE_MECA =SIMP(statut='o',typ=CO), + CHARGE_THER1 =SIMP(statut='o',typ=CO), + CHARGE_THER2 =SIMP(statut='o',typ=CO), + TABLE =SIMP(statut='o',typ=CO), + DEBIT =SIMP(statut='o',typ=CO), + + +# MODELES MECANIQUES +# ******************************************** + MODELE_MECA =SIMP(statut='o',typ=modele_sdaster), + MODELE_THER =SIMP(statut='o',typ=modele_sdaster), + + +# DONNEES GEOMETRIQUES RELATIVES AUX RESULTATS +# ******************************************** + RESULTAT =FACT(statut='o',min=1,max=1, + MECANIQUE =SIMP(statut='o',typ=resultat_sdaster), + THERMIQUE =SIMP(statut='o',typ=resultat_sdaster), + regles=(EXCLUS('NUME_ORDRE','INST'),), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + ), + +# DONNEES GEOMETRIQUES RELATIVES A LA FISSURE +# ******************************************* + + FISSURE =FACT(statut='o',min=1,max='**', + PREFIXE_FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,8),), + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),min=2,max=2, + fr="Groupe(s) des noeuds definissant les levres de la fissure"), + GROUP_NO_ORIG =SIMP(statut='o',typ=grno,validators=NoRepeat(),min=2,max=2), + GROUP_NO_EXTR =SIMP(statut='o',typ=grno,validators=NoRepeat(),min=2,max=2), + ZETA =SIMP(statut='o',typ='R',fr="Coefficient de la perte de charge singuliere a l'entree [zeta]" ), + RUGOSITE =SIMP(statut='o',typ='R',fr="Rugosite absolu (metres) [eps]" ), + OUVERT_REMANENTE =SIMP(statut='o',typ='R',val_min=0.,fr="Ouverture remanente"), + TORTUOSITE =SIMP(statut='f',typ='R',defaut=1.0, val_min=0., val_max=1.0, + fr="Coefficient de tortuosite de la fissure" ), + SECTION =SIMP(statut='o',typ='TXM',into=("ELLIPSE","RECTANGLE"),fr="Type de section [is]" ), + b_section_ellipse =BLOC(condition="SECTION=='ELLIPSE'",fr="Fissure a section elliptique", + LISTE_COTES_BL =SIMP(statut='f',typ='R',max='**', + fr="Liste des cotes des points definissant le petit axe de la section", + validators=NoRepeat() ), + LISTE_VAL_BL =SIMP(statut='o',typ='R',max='**', + fr="Liste des valeurs des points definissant le petit axe de la section", ), + ), + b_section_rectangle =BLOC(condition="SECTION=='RECTANGLE'",fr="Fissure a section rectangulaire", + LISTE_COTES_BL =SIMP(statut='f',typ='R',max='**', + fr="Liste des cotes des points definissant la largeur de la section", + validators=NoRepeat() ), + LISTE_VAL_BL =SIMP(statut='o',typ='R',max='**', + fr="Liste des valeurs des points definissant la largeur de la section", ), + ), + ), + + +# DONNEES RELATIVES A L"ECOULEMENT +# ******************************** + + ECOULEMENT =FACT(statut='o',min=1,max=1, + PRES_ENTREE =SIMP(statut='o',typ='R',fr="Pression de stagnation a l'entree (Pa) [pe]" ), + PRES_SORTIE =SIMP(statut='o',typ='R',fr="Pression de stagnation a la sortie (Pa) [ps]" ), + FLUIDE_ENTREE =SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),fr="Condition du fluide a l'entree [iflow]" ), + b_condition_1 =BLOC(condition="FLUIDE_ENTREE==1",fr="Eau sous-refroidie ou saturee", + TEMP_ENTREE =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + ), + b_condition_2 =BLOC(condition="FLUIDE_ENTREE==2",fr="Fluide diphasique", + TITR_MASS =SIMP(statut='o',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ), + ), + b_condition_3 =BLOC(condition="FLUIDE_ENTREE==3",fr="Vapeur saturee ou surchauffee", + TEMP_ENTREE =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + ), + b_condition_4 =BLOC(condition="FLUIDE_ENTREE==4",fr="Air + vapeur surchauffee", + TEMP_ENTREE =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + PRES_PART =SIMP(statut='o',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ), + ), + b_condition_5 =BLOC(condition="FLUIDE_ENTREE==5",fr="Air + vapeur saturee", + TITR_MASS =SIMP(statut='o',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ), + PRES_PART =SIMP(statut='o',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ), + ), + b_condition_6 =BLOC(condition="FLUIDE_ENTREE==6",fr="Air seul", + TEMP_ENTREE =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + ), + ), + + +# CHOIX DES MODELES +# ***************** + + MODELE_ECRE =FACT(statut='o',min=1,max=1, + IVENAC =SIMP(statut='f', typ='I', into=(0,1), defaut=0, + fr="Calcul ECREVISSE avec prise en compte de la vena contracta"), + ECOULEMENT =SIMP(statut='o',typ='TXM',into=("SATURATION","GELE"), + fr="Type de modele d'ecoulement diphasique [imod]" ), + b_ecou_gele =BLOC(condition="ECOULEMENT=='GELE'",fr="Modele d'ecoulement gele", + PRESS_EBULLITION =SIMP(statut='o',typ='R',fr="Pression d'ebullition [corrp*psat(t)]" ), + ), + FROTTEMENT =SIMP(statut='o',typ='I',into=(-3,-2,-1,0,1,2,3),fr="Correlation de frottement [ifrot]" ), + b_frottement =BLOC(condition="FROTTEMENT<0",fr="Modele d'ecoulement gele", + REYNOLDS_LIM =SIMP(statut='o',typ='R',fr="Coefficient de Reynolds limite [relim]" ), + FROTTEMENT_LIM =SIMP(statut='o',typ='R',fr="Coefficient de frottement impose [frtlim]" ), + ), + + TRANSFERT_CHAL =SIMP(statut='o',typ='I',into=(-2,-1,0,1,2),fr="Transfert de chaleur [ichal]" ), + b_transchal =BLOC(condition="TRANSFERT_CHAL<0", fr="Cas diphasique", + XMINCH =SIMP(statut='o',typ='R',fr="Titre massique gazeux min [xminch]"), + XMAXCH =SIMP(statut='o',typ='R',fr="Titre massique gazeux max [xmaxch]"), + ), + ), + + +# DONNEES RELATIVES A LA CONVERGENCE NUMERIQUE +# ******************************************** + + CONVERGENCE =FACT(statut='o',min=1,max=1, + KGTEST =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 0.5E+0, + fr="Parametre de l'algorithme iteratif [kgtest]" ), + ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 400, + fr="Nombre maximum d'iterations de la methode de Newton [itnmax]" ), + CRIT_CONV_DEBI =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 1.E-5, + fr="Critere de convergence en debit [precdb]" ), + ), + +# GENERAL +# ******* + + COURBES =SIMP(statut='f',typ='TXM',into=("INTERACTIF","POSTSCRIPT","AUCUNE"),defaut="AUCUNE", + fr="Generation eventuelle des courbes" ), + LOGICIEL =SIMP(statut='f',typ='TXM',validators=LongStr(1,255),), + VERSION =SIMP(statut='f',typ='TXM',into = ("3.1.1","3.1.2","3.2")), + ENTETE =SIMP(statut='f',typ='TXM',max='**',defaut="Titre du calcul Ecrevisse" ), + IMPRESSION =SIMP(statut='f',typ='TXM',defaut='NON',into=( 'OUI','NON') ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), + +) ; +#& MODIF COMMANDE DATE 03/10/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE +def calc_elem_prod(RESULTAT,**args): + if AsType(RESULTAT) != None : return AsType(RESULTAT) + raise AsException("type de concept resultat non prevu") + +CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f', + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + fr="Compléter ou créer un résultat en calculant des champs par éléments (contraintes, déformations,... )", + MODELE =SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + + RESULTAT =SIMP(statut='o',typ=resultat_sdaster, + fr="Résultat d'une commande globale"), + + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'), + ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM' ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectué que sur ces mailles là"), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectué que sur ces mailles là"), + +# definition d'un repere local + + REPE_COQUE =FACT(statut='f',max='**', + fr="définiton du lieu de post-traitement", + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**',), + + NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1, + fr="numero de couche dans l'épaisseur de la coque ou du tuyau" ), + NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"), + fr="position dans l'épaisseur de la coque, ou de la couche" ), + + ANGLE =SIMP(statut='f',typ='I',defaut= 0, + fr="angle de dépouillement pour les tuyaux, en degres à partir de la génératrice" ), + ), + +# options pour des resultats lineaires + + b_lineaire =BLOC( condition = "AsType(RESULTAT) in (evol_elas,dyna_trans,dyna_harmo,mode_meca,\ + comb_fourier,mult_elas,fourier_elas,mode_flamb)", + fr="options mecaniques lineaires", + TYPE_OPTION =SIMP(statut='f',typ='TXM',defaut='TOUTES',fr="type d'options mecaniques lineaires", + into=("SIGM_MASSIF","SIGM_STRUCT","EPSI","ENER","CRIT","DERIVEES", + "INDI_ERREUR","AUTRES","TOUTES"), + ), + b_toutes=BLOC( condition = "TYPE_OPTION == 'TOUTES'",fr="toutes les options evol elas", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="SIEF_ELNO", + # contraintes + into=( "SIEF_ELNO","SIGM_ELNO","SIEF_ELGA","EFGE_ELGA", + "SIPO_ELNO","EFGE_ELNO","EFCA_ELNO","SICA_ELNO", + "SITU_ELNO","SIRO_ELEM","SIPM_ELNO","SICO_ELNO", + # déformations + "EPSI_ELNO","EPSI_ELGA","EPSG_ELGA","EPSG_ELNO", + "EPME_ELNO","EPME_ELGA","DEGE_ELNO","EPTU_ELNO", + "EPVC_ELNO","EPVC_ELGA","DEGE_ELGA", + # ENER + "EPOT_ELEM","ECIN_ELEM","ENEL_ELGA","ENEL_ELNO", + "ETOT_ELGA","ETOT_ELNO","ETOT_ELEM","DISS_ELGA","DISS_ELNO", + # estimateurs erreur + "SIZ1_NOEU","ERZ1_ELEM","SIZ2_NOEU","ERZ2_ELEM", + "ERME_ELEM","ERME_ELNO", + "QIRE_ELEM","QIRE_ELNO","QIZ1_ELEM","QIZ2_ELEM", + "SING_ELEM","SING_ELNO", + # CRIT + "SIEQ_ELNO","SIEQ_ELGA", + "EPEQ_ELNO","EPEQ_ELGA","EPMQ_ELNO","EPMQ_ELGA", + "ENDO_ELGA","ENDO_ELNO", + "SITQ_ELNO","EPTQ_ELNO", + # autres + "PRME_ELNO","VARC_ELGA"),), + + b_erre_qi =BLOC(condition = "au_moins_un(OPTION, ('QIRE_ELEM','QIZ1_ELEM','QIZ2_ELEM'))", + RESU_DUAL=SIMP(statut='o',typ=evol_elas,fr="resultat du probleme dual"),), + + b_sing =BLOC(condition= "'SING_ELEM' in OPTION", + PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., + fr="precision demandee pour calculer la carte de taille des elements"), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERME_ELEM","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIZ1_ELEM","QIZ2_ELEM",), + fr="choix de l'estimateur d'erreur"),), + + EXCIT =FACT(statut='f',max='**', + fr="Charges contenant les températures, les efforts répartis pour les poutres...", + regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), + CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca) ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FONC_MULT_C =SIMP(statut='f',typ=fonction_c), + COEF_MULT =SIMP(statut='f',typ='R'), + COEF_MULT_C =SIMP(statut='f',typ='C'), + PHAS_DEG =SIMP(statut='f',typ='R'), + PUIS_PULS =SIMP(statut='f',typ='I'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),), + + + ), +# fin bloc b_toutes + + b_sigm_massif =BLOC( condition = "TYPE_OPTION == 'SIGM_MASSIF'", + fr="options de contraintes elasticite 2D et 3D", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut='SIEF_ELNO', + fr="option de calcul des contraintes", + into=( "SIEF_ELNO","SIGM_ELNO","SIEF_ELGA",),), + + b_charge =BLOC( condition = "au_moins_un(OPTION, ('SIGM_ELNO','SIEF_ELGA'))", + fr="charge contenant les temperatures ou autre charge", + EXCIT =FACT(statut='f',max='**', + CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca) ),), + ), + ), + + b_sigm_struct =BLOC( condition = "TYPE_OPTION == 'SIGM_STRUCT'", + fr="options de contraintes elasticite poutres, coques, tuyaux", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut='SIEF_ELNO', + fr="option de calcul des contraintes ou efforts generalises", + into=( "SIEF_ELNO","SIGM_ELNO","SIEF_ELGA","SITU_ELNO", + "SIPO_ELNO","EFGE_ELGA","EFGE_ELNO","EFCA_ELNO","SICA_ELNO", + ),), + + b_charge =BLOC( condition = "au_moins_un(OPTION, ('SIGM_ELNO','SIEF_ELGA', \ + 'SIPO_ELNO','EFGE_ELNO',)) ", + fr="charge contenant les temperatures ou les efforts répartis (poutres) ou autre", + EXCIT =FACT(statut='f',max='**', + regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), + CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca) ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FONC_MULT_C =SIMP(statut='f',typ=fonction_c), + COEF_MULT =SIMP(statut='f',typ='R'), + COEF_MULT_C =SIMP(statut='f',typ='C'), + PHAS_DEG =SIMP(statut='f',typ='R'), + PUIS_PULS =SIMP(statut='f',typ='I'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),), + ), + + + ), +# fin bloc contraintes struct + + b_epsi =BLOC( condition = "TYPE_OPTION=='EPSI'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("EPSI_ELNO","EPSI_ELGA","EPME_ELNO","EPME_ELGA", + "DEGE_ELNO","DEGE_ELGA","EPTU_ELNO","EPVC_ELNO","EPVC_ELGA",), + ), +b_charge =BLOC( condition = "au_moins_un(OPTION, ('EPME_ELNO','EPSI_ELGA','EPME_ELGA','EPSI_ELNO','EPTU_ELNO'))", + fr="charge contenant les temperatures", + EXCIT =FACT(statut='f',max='**', + CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou,char_cine_meca,) ),), + ), + ), + b_ener =BLOC( condition = "TYPE_OPTION=='ENER'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("EPOT_ELEM","ECIN_ELEM","ENEL_ELGA","ENEL_ELNO", + "ETOT_ELGA","ETOT_ELNO","ETOT_ELEM","DISS_ELGA","DISS_ELNO",), + ), + b_charge =BLOC( condition = "au_moins_un(OPTION, ('EPOT_ELEM','ECIN_ELEM','ENEL_ELGA','ENEL_ELNO'))", + fr="charge contenant les temperatures", + EXCIT =FACT(statut='f',max='**', + CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou) ),), + ), + ), + + b_crit =BLOC( condition = "TYPE_OPTION=='CRIT'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("SIEQ_ELNO","SIEQ_ELGA", + "EPEQ_ELNO","EPEQ_ELGA","EPMQ_ELNO","EPMQ_ELGA", + "ENDO_ELGA","ENDO_ELNO", + "SITQ_ELNO","EPTQ_ELNO", + ) ), + EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", + CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), + ), + + + b_autres =BLOC( condition = "TYPE_OPTION=='AUTRES'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("PRME_ELNO",), + ) ), + + b_indi_erreur =BLOC( condition = "TYPE_OPTION=='INDI_ERREUR'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERME_ELEM", + into=("SIZ1_NOEU","ERZ1_ELEM","SIZ2_NOEU","ERZ2_ELEM", + "ERME_ELEM","ERME_ELNO", + "QIRE_ELEM","QIRE_ELNO","QIZ1_ELEM","QIZ2_ELEM", + "SING_ELEM","SING_ELNO", + )), + + b_erre_qi =BLOC(condition = "au_moins_un(OPTION, ('QIRE_ELEM','QIZ1_ELEM','QIZ2_ELEM'))", + RESU_DUAL=SIMP(statut='o',typ=evol_elas,fr="resultat du probleme dual"),), + + b_sing =BLOC(condition= "'SING_ELEM' in OPTION", + PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., + fr="precision demandee pour calculer la carte de taille des elements" ), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERME_ELEM","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIZ1_ELEM","QIZ2_ELEM",), + fr="choix de l'estimateur d'erreur"),), + + EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", + CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), + ), + ), +# fin bloc lineaire + +# statique ou dynamique non lineaire : evol_noli + b_noli =BLOC( condition = "AsType(RESULTAT) == evol_noli",fr="options mecaniques non lineaires", + TYPE_OPTION =SIMP(statut='f',typ='TXM',defaut='TOUTES',fr="type d'options mecaniques non lineaires", + into=("SIGM_MASSIF","SIGM_STRUCT","EPSI","ENER","CRIT","FLUX", + "VARI","INDI_ERREUR","TOUTES","AUTRES"), + ), + b_toutes =BLOC( condition = "TYPE_OPTION == 'TOUTES'",fr="toutes les options evol noli", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=( "SIEF_ELNO","SIRO_ELEM", + "SITU_ELNO","SICO_ELNO","EFGE_ELGA","SIGM_ELNO", + "EFCA_ELNO","SIPO_ELNO","SIPM_ELNO", + "FLHN_ELGA", + # EPSI + "EPSI_ELNO","EPSI_ELGA","EPSG_ELNO","EPSG_ELGA", + "EPME_ELNO","EPME_ELGA","EPMG_ELNO","EPMG_ELGA", + "DEGE_ELNO","EPTU_ELNO", + "EPSP_ELNO","EPSP_ELGA", + "EPFD_ELNO","EPFD_ELGA","EPVC_ELNO","EPVC_ELGA", + "EPFP_ELNO","EPFP_ELGA", + "VARC_ELGA","DEGE_ELGA", + "VARI_ELNO","VATU_ELNO","VACO_ELNO", + "VAEX_ELGA","VAEX_ELNO", + # CRIT + "SIEQ_ELNO","SIEQ_ELGA","SITQ_ELNO","EPTQ_ELNO", + "ERME_ELEM","ERME_ELNO","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIRE_ELNO","QIZ1_ELEM","QIZ2_ELEM", + "EPEQ_ELNO","EPEQ_ELGA","EPMQ_ELNO","EPMQ_ELGA", + "DERA_ELNO","DERA_ELGA", + "ENDO_ELGA","ENDO_ELNO","INDL_ELGA","SING_ELEM", + "SING_ELNO","PDIL_ELGA", + "PMPB_ELNO","PMPB_ELGA","ENEL_ELGA","ENEL_ELNO", + "ETOT_ELGA","ETOT_ELNO","ETOT_ELEM", + "DISS_ELGA","DISS_ELNO"), + ), + + + b_erre_qi =BLOC(condition = "au_moins_un(OPTION, ('QIRE_ELEM','QIZ1_ELEM','QIZ2_ELEM'))", + RESU_DUAL=SIMP(statut='o',typ=(evol_elas,evol_noli),fr="resultat du probleme dual"),), + + b_sing =BLOC(condition= "'SING_ELEM' in OPTION", + PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., + fr="precision demandee pour calculer la carte de taille des elements" ), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERME_ELEM","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIZ1_ELEM","QIZ2_ELEM",), + fr="choix de l'estimateur d'erreur"),), + + + b_extr = BLOC( condition = "au_moins_un(OPTION, ('VAEX_ELNO','VAEX_ELGA'))", + NOM_VARI =SIMP(statut='o',typ='TXM',min= 1,max=1,fr="nom de la variable à extraire", + into=("DPORO","DRHOLQ","DPVP","SATLIQ","EVP","IND_ETA","D","IND_END","TEMP_MAX","GAMP","PCR", + "SEUIL_HYD","IND_HYD","PCOHE","COMP_ROC","SEUIL_ISO","ANG_DEV","X11","X22","X33","X12","X13","X23", + "DIST_DEV","DEV_SUR_CRIT","DIST_ISO","NB_ITER","ARRET","NB_REDE","SIGNE", + "RDEV_1","RDEV_2","RDEV_3","RISO","EPSIVPLA","IND_1","IND_2","IND_3","IND_4",),), + ), + EXCIT =FACT(statut='f',max='**', + regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), + CHARGE =SIMP(statut='o',typ=char_meca ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FONC_MULT_C =SIMP(statut='f',typ=fonction_c), + COEF_MULT =SIMP(statut='f',typ='R'), + COEF_MULT_C =SIMP(statut='f',typ='C'), + PHAS_DEG =SIMP(statut='f',typ='R'), + PUIS_PULS =SIMP(statut='f',typ='I'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),), + ), + + b_flux =BLOC( condition = "TYPE_OPTION == 'FLUX'", + fr="option de calcul de flux hydraulique 2D et 3D", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + # flux hydraulique + into=( "FLHN_ELGA",),), + ), + + b_sigm_massif =BLOC( condition = "TYPE_OPTION == 'SIGM_MASSIF'", + fr="options de contraintes non lin 2D et 3D", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + # contraintes + into=( "SIEF_ELNO",),), + ), + + b_sigm_struct =BLOC( condition = "TYPE_OPTION == 'SIGM_STRUCT'", + fr="options de contraintes non lin poutres, coques", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + # contraintes + into=( "SIEF_ELNO","EFCA_ELNO","SITU_ELNO","SICO_ELNO","EFGE_ELGA", + ),), + ), + + b_epsi =BLOC( condition = "TYPE_OPTION=='EPSI'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=( "EPSI_ELNO","EPSI_ELGA","EPSG_ELNO","EPSG_ELGA", + "EPME_ELNO","EPME_ELGA","EPMG_ELNO","EPMG_ELGA", + "EPSP_ELNO","EPSP_ELGA","DEGE_ELNO","EPVC_ELNO","EPVC_ELGA", + "EPFD_ELNO","EPFD_ELGA","EPFP_ELNO","EPFP_ELGA","DEGE_ELGA",), + ), + EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", + CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), + ), + b_epstuyo =BLOC( condition = "'EPTU_ELNO' in OPTION", + EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", + CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), + ), + + b_vari =BLOC( condition = "TYPE_OPTION=='VARI'", + fr="Calcul et extraction des variables internes", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("VARI_ELNO","VATU_ELNO","VACO_ELNO", + "VAEX_ELGA","VAEX_ELNO"), + ), + b_extr =BLOC( condition = "au_moins_un(OPTION, ('VAEX_ELNO','VAEX_ELGA'))", + NOM_VARI =SIMP(statut='o',typ='TXM',min= 1,max=1,fr="nom de la variable à extraire", + into=("DPORO","DRHOLQ","DPVP","SATLIQ","EVP","IND_ETA","D","IND_END","TEMP_MAX","GAMP","PCR", + "SEUIL_HYD","IND_HYD","PCOHE","COMP_ROC","SEUIL_ISO","ANG_DEV","X11","X22","X33","X12","X13","X23", + "DIST_DEV","DEV_SUR_CRIT","DIST_ISO","NB_ITER","ARRET","NB_REDE","SIGNE", + "RDEV_1","RDEV_2","RDEV_3","RISO","EPSIVPLA","IND_1","IND_2","IND_3","IND_4"),), + ), + ), + + b_ener =BLOC( condition = "TYPE_OPTION=='ENER'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("ETOT_ELGA","ETOT_ELNO","ETOT_ELEM","ENEL_ELGA","ENEL_ELNO", + "DISS_ELGA","DISS_ELNO",), + ), + EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures", + CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),), + ), + + b_crit =BLOC( condition = "TYPE_OPTION=='CRIT'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("SIEQ_ELNO","SIEQ_ELGA", + "EPEQ_ELNO","EPEQ_ELGA","EPMQ_ELNO","EPMQ_ELGA", + "ENDO_ELGA","ENDO_ELNO", + "PMPB_ELNO","PMPB_ELGA","SITQ_ELNO","EPTQ_ELNO", + ) ), + ), + + + b_indi_erreur =BLOC( condition = "TYPE_OPTION=='INDI_ERREUR'", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERME_ELEM", + into=("ERME_ELEM","ERME_ELNO","ERZ1_ELEM","ERZ2_ELEM", + "DERA_ELNO","DERA_ELGA", + "QIRE_ELEM","QIRE_ELNO","QIZ1_ELEM","QIZ2_ELEM", + "SING_ELEM","SING_ELNO",) ), + + b_erre_qi =BLOC(condition = "au_moins_un(OPTION, ('QIRE_ELEM','QIZ1_ELEM','QIZ2_ELEM'))", + RESU_DUAL =SIMP(statut='o',typ=(evol_elas,evol_noli),fr="resultat du probleme dual")), + + b_sing =BLOC(condition= "'SING_ELEM' in OPTION", + PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., + fr="precision demandee pour calculer la carte de taille des elements" ), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERME_ELEM","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIZ1_ELEM","QIZ2_ELEM",), + fr="choix de l'estimateur d'erreur"),), + ), + ), +# fin bloc evol_noli + +# thermique : evol_ther, fourier_ther + b_ther =BLOC( condition = "AsType(RESULTAT) in (evol_ther,fourier_ther,)" ,fr="options thermiques", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("FLUX_ELGA","FLUX_ELNO", + "DURT_ELNO","SOUR_ELGA","ERTH_ELEM","ERTH_ELNO",),), + EXCIT =FACT(statut='f',max='**', + regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), + CHARGE =SIMP(statut='o',typ=char_ther ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FONC_MULT_C =SIMP(statut='f',typ=fonction_c), + COEF_MULT =SIMP(statut='f',typ='R'), + COEF_MULT_C =SIMP(statut='f',typ='C'), + PHAS_DEG =SIMP(statut='f',typ='R'), + PUIS_PULS =SIMP(statut='f',typ='I'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),), + ), + ), + +# acoustique + b_acou =BLOC( condition = "AsType(RESULTAT) in (acou_harmo,mode_acou,)",fr="options acoustiques", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("PRAC_ELNO", "INTE_ELNO", + ),), + EXCIT =FACT(statut='f',max='**', + regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), + CHARGE =SIMP(statut='o',typ=char_acou ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FONC_MULT_C =SIMP(statut='f',typ=fonction_c), + COEF_MULT =SIMP(statut='f',typ='R'), + COEF_MULT_C =SIMP(statut='f',typ='C'), + PHAS_DEG =SIMP(statut='f',typ='R'), + PUIS_PULS =SIMP(statut='f',typ='I'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),), + ), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR (utilisé actuellement pour estimateur d'erreur ZZ1) + SOLVEUR =C_SOLVEUR('CALC_ELEM'), +#------------------------------------------------------------------- + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DELMAS J.DELMAS +def calc_erreur_prod(RESULTAT,**args): + if AsType(RESULTAT) != None : return AsType(RESULTAT) + raise AsException("type de concept resultat non prevu") + +CALC_ERREUR=OPER(nom="CALC_ERREUR",op=42,sd_prod=calc_erreur_prod,reentrant='f', + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + fr="Compléter ou créer un résultat en calculant des champs d'erreur", + MODELE =SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + + RESULTAT =SIMP(statut='o',typ=resultat_sdaster, + fr="Résultat d'une commande globale"), + + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'), + ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM' ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Le calcul ne sera effectué que sur ces mailles là"), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**', + fr="Le calcul ne sera effectué que sur ces mailles là"), + +#----------------------------------------------------------------------- +# pour conserver la compatibilité mais ne sert à rien +#----------------------------------------------------------------------- + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + EXCIT =FACT(statut='f',max='**', + fr="Charges contenant les températures, les efforts répartis pour les poutres...", + regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), + CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca) ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FONC_MULT_C =SIMP(statut='f',typ=fonction_c), + COEF_MULT =SIMP(statut='f',typ='R'), + COEF_MULT_C =SIMP(statut='f',typ='C'), + PHAS_DEG =SIMP(statut='f',typ='R'), + PUIS_PULS =SIMP(statut='f',typ='I'), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),), +#----------------------------------------------------------------------- + + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("SIZ1_NOEU","ERZ1_ELEM", + "SIZ2_NOEU","ERZ2_ELEM", + "ERME_ELEM","ERME_ELNO", + "QIRE_ELEM","QIRE_ELNO", + "QIZ1_ELEM","QIZ2_ELEM", + "SING_ELEM","SING_ELNO", + "ERTH_ELEM","ERTH_ELNO",),), + + b_erre_qi =BLOC(condition = "au_moins_un(OPTION, ('QIRE_ELEM','QIZ1_ELEM','QIZ2_ELEM'))", + RESU_DUAL=SIMP(statut='o',typ=resultat_sdaster,fr="Résultat du problème dual"),), + + b_sing =BLOC(condition= "'SING_ELEM' in OPTION", + PREC_ERR=SIMP(statut='o',typ='R',val_min= 0., + fr="Précision demandée pour calculer la carte de taille des éléments"), + TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERME_ELEM","ERZ1_ELEM","ERZ2_ELEM", + "QIRE_ELEM","QIZ1_ELEM","QIZ2_ELEM",), + fr="Choix de l'estimateur d'erreur"),), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR (utilisé actuellement pour estimateur d'erreur ZZ1) + SOLVEUR =C_SOLVEUR('CALC_ERREUR'), +#------------------------------------------------------------------- + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== + +# RESPONSABLE NISTOR I.NISTOR + + +def calc_essai_prod(self,RESU_IDENTIFICATION, + RESU_MODIFSTRU, + **args): + + if RESU_IDENTIFICATION != None: + for res in RESU_IDENTIFICATION: + self.type_sdprod(res['TABLE'],table_fonction) + + MTYPES = { + 'MODELE' : modele_sdaster, + 'MODE_MECA' : mode_meca, + 'NUME_DDL' : nume_ddl_sdaster, + 'MAILLAGE' : maillage_sdaster, + 'MASS_MECA' : matr_asse_depl_r, + 'RIGI_MECA' : matr_asse_depl_r, + 'AMOR_MECA' : matr_asse_depl_r, + 'MACR_ELEM' : macr_elem_stat, + 'PROJ_MESU' : mode_gene, + 'BASE_ES' : mode_meca, + 'BASE_LMME' : mode_meca, + 'MODE_STA' : mode_meca, + } + if RESU_MODIFSTRU != None: + for res in RESU_MODIFSTRU: + for mc, typ in MTYPES.items(): + if res[mc]: + self.type_sdprod(res[mc], typ) + return None + + +CALC_ESSAI = MACRO(nom = 'CALC_ESSAI', + op = OPS('Macro.calc_essai_ops.calc_essai_ops'), + sd_prod = calc_essai_prod, + reentrant = 'n', + UIinfo = {"groupes":("Outils-métier","Dynamique",)}, + fr = "Outil de post-traitement interactif pour Meidee ", + INTERACTIF = SIMP( statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ), + RESU_IDENTIFICATION = FACT( statut='f',max='**', + TABLE = SIMP(statut='f', typ=CO), + ), + RESU_MODIFSTRU = FACT( statut='f', max=1, + MODELE=SIMP(statut='f',typ=CO,defaut=None), + MODE_MECA=SIMP(statut='f',typ=CO,defaut=None), + MAILLAGE=SIMP(statut='f',typ=CO,defaut=None), + NUME_DDL=SIMP(statut='f',typ=CO,defaut=None), + MASS_MECA=SIMP(statut='f',typ=CO,defaut=None), + RIGI_MECA=SIMP(statut='f',typ=CO,defaut=None), + AMOR_MECA=SIMP(statut='f',typ=CO,defaut=None), + MACR_ELEM=SIMP(statut='f',typ=CO,defaut=None), + PROJ_MESU=SIMP(statut='f',typ=CO,defaut=None), + BASE_ES=SIMP(statut='f',typ=CO,defaut=None), + BASE_LMME=SIMP(statut='f',typ=CO,defaut=None), + MODE_STA=SIMP(statut='f',typ=CO,defaut=None), + ), + + b_inter = BLOC( condition="INTERACTIF=='NON'", + + EXPANSION = FACT( statut='f',max='**', + CALCUL = SIMP(statut='o',typ=mode_meca), + NUME_MODE_CALCUL = SIMP(statut='f',typ='I',validators=NoRepeat(), + max='**',defaut=0), + MESURE = SIMP(statut='o',typ=mode_meca), + NUME_MODE_MESURE = SIMP(statut='f',typ='I',validators=NoRepeat(), + max='**',defaut=0), + RESOLUTION = SIMP(statut='f',typ='TXM',defaut='SVD',into=('SVD','LU')), + b_reso = BLOC(condition = "RESOLUTION=='SVD'", + EPS = SIMP(statut='f',typ='R', defaut = 0.) + ) + ), + IDENTIFICATION = FACT( statut='f',max='**', + ALPHA = SIMP(statut='f',typ='R', defaut = 0.), + EPS = SIMP(statut='f',typ='R', defaut = 0.), + OBSERVABILITE = SIMP(statut='o',typ=mode_meca), + COMMANDABILITE = SIMP(statut='o',typ=mode_meca), + INTE_SPEC = SIMP(statut='o',typ=table_sdaster), + RESU_EXPANSION = SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')), + BASE = SIMP(statut='o',typ=mode_meca), + ), + MODIFSTRUCT = FACT( statut='f', max=1, + MESURE = SIMP(statut='o', typ=mode_meca), + MODELE_SUP = SIMP(statut='o', typ=modele_sdaster), + MATR_RIGI = SIMP(statut='o', typ=matr_asse_depl_r), + RESOLUTION = SIMP(statut='f', typ='TXM', + into=('ES', 'LMME'), defaut='ES'), + b_resol = BLOC( condition = "RESOLUTION=='LMME'", + MATR_MASS = SIMP(statut='o', typ=matr_asse_depl_r), + ), + NUME_MODE_MESU = SIMP(statut='o', typ='I',max='**'), + NUME_MODE_CALCUL = SIMP(statut='o', typ='I',max='**'), + MODELE_MODIF = SIMP(statut='o', typ=modele_sdaster), + ), + # Si on realise une modification structurale, on donne les DDL capteurs et interface + b_modif = BLOC( condition="MODIFSTRUCT!=None", + GROUP_NO_CAPTEURS = FACT( statut='f', max='**', + GROUP_NO = SIMP(statut='o',typ=grno, max='**'), + NOM_CMP = SIMP(statut='o',typ='TXM', max='**'), + ), + GROUP_NO_EXTERIEUR = FACT( statut='f', max='**', + GROUP_NO = SIMP(statut='o',typ=grno, max='**'), + NOM_CMP = SIMP(statut='o',typ='TXM', max='**'), + ), + ), + ), + ); + +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE + +def calc_europlexus_prod(self,COURBE=None,**args): + if COURBE is not None: + self.type_sdprod(args['TABLE_COURBE'],table_sdaster) + return evol_noli + +CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS", + op=OPS('Macro.calc_europlexus_ops.calc_europlexus_ops'), + sd_prod=calc_europlexus_prod, + reentrant='n', + UIinfo={"groupes":("Outils-métier","Dynamique",)}, + fr="Chainage Code_Aster-Europlexus", + + LOGICIEL = SIMP(statut='f', typ='TXM', defaut='/home/europlex/EPXD/bin/europlexus'), + + MODELE = SIMP(statut='o',typ=modele_sdaster), + CARA_ELEM = SIMP(statut='o',typ=cara_elem), + + FONC_PARASOL = FACT(statut='f', + NFKT = SIMP(statut='f',typ=(fonction_sdaster,)), + NFKR = SIMP(statut='f',typ=(fonction_sdaster,)), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + + + CHAM_MATER = SIMP(statut='o',typ=cham_mater), + + EXCIT = FACT(statut='o',max='**', + CHARGE = SIMP(statut='o',typ=(char_meca,)), + FONC_MULT = SIMP(statut='o',typ=(fonction_sdaster,)), + ), + + DIME = FACT(statut='o', regles=(AU_MOINS_UN('UNITE_DIME','Q4GS','FORCE', + 'PT6L','ZONE','POUT','ECRO', + 'APPU','BLOQ','PRESS','PMAT', + 'DKT3','DEPL','FNOM','TABLE','FTAB', + 'MTTI','NEPE','LIAI',), ), + UNITE_DIME=SIMP(statut='f',typ='I'), + + Q4GS = SIMP(statut='f',typ='I'), + FORCE = SIMP(statut='f',typ='I'), + PT6L = SIMP(statut='f',typ='I'), + ZONE = SIMP(statut='f',typ='I'), + POUT = SIMP(statut='f',typ='I'), + ECRO = SIMP(statut='f',typ='I'), + APPU = SIMP(statut='f',typ='I'), + BLOQ = SIMP(statut='f',typ='I'), + PRESS = SIMP(statut='f',typ='I',min=2,max=2,), + PMAT = SIMP(statut='f',typ='I'), + DKT3 = SIMP(statut='f',typ='I'), + DEPL = SIMP(statut='f',typ='I'), + FNOM = SIMP(statut='f',typ='I'), + TABLE = SIMP(statut='f',typ='I',min=2,max=2,), + FTAB = SIMP(statut='f',typ='I'), + MTTI = SIMP(statut='f',typ='I'), + NEPE = SIMP(statut='f',typ='I'), + LIAI = SIMP(statut='f',typ='I'), + ), + + CALCUL = FACT(statut='o', + TYPE_DISCRETISATION = SIMP(statut='o',typ='TXM',defaut='AUTO',into=('AUTO','UTIL')), + INST_FIN = SIMP(statut='o',typ='R'), + INST_INIT = SIMP(statut='o',typ='R'), + NMAX = SIMP(statut='f',typ='R'), + + b_auto =BLOC( condition = "TYPE_DISCRETISATION=='AUTO'", + CSTAB = SIMP(statut='o',typ='R',max='**',defaut=0.3), +# DTMAX = SIMP(statut='f',typ='R',max='**'), + ), + + b_util =BLOC( condition = "TYPE_DISCRETISATION=='UTIL'", + PASFIX = SIMP(statut='o',typ='R',max='**'), + ), + ), + + + OBSERVATION =FACT(statut='f',max='**', + SUIVI_DDL = SIMP(statut='o',typ='TXM',defaut="OUI",max=1,into=("OUI","NON")), + b_suivi =BLOC(condition = "SUIVI_DDL == 'OUI' ", + regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), + EXCLUS('PAS_NBRE','PAS_INST',), + EXCLUS('GROUP_NO','TOUT_GROUP_NO',), + EXCLUS('GROUP_MA','TOUT_GROUP_MA',), ), + NOM_CHAM = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',defaut=('DEPL',),into=('DEPL' + ,'VITE','ACCE','SIEF_ELGA','EPSI_ELGA','VARI_ELGA'),), + PAS_INST = SIMP(statut='f',typ='R'), + PAS_NBRE = SIMP(statut='f',typ='I'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TOUT_GROUP_NO = SIMP(statut='f',typ='TXM',into=('OUI',),), + TOUT_GROUP_MA = SIMP(statut='f',typ='TXM',into=('OUI',),), + ), + ), + + + ARCHIVAGE =FACT(statut='o', regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), EXCLUS('PAS_NBRE','PAS_INST',), ), + PAS_INST = SIMP(statut='f',typ='R'), + PAS_NBRE = SIMP(statut='f',typ='I'), + CONT_GENER = SIMP(statut='o',typ='TXM',defaut="NON",max=1,into=("OUI","NON")), + ), + COURBE = FACT(statut='f',max='**', regles=(EXCLUS('GROUP_NO','GROUP_MA')), + UNITE_ALIT = SIMP(statut='f',typ='I'), + NOM_CHAM = SIMP(statut='f',typ='TXM'), + NOM_CMP = SIMP(statut='f',typ='TXM'), +# NOEUD = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), +# MAILLE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1), + + b_maille = BLOC(condition = "GROUP_MA != None", regles=(AU_MOINS_UN('NUM_GAUSS')), + NUM_GAUSS = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),), + ), + b_courbe = BLOC(condition = "COURBE != None", + regles=(AU_MOINS_UN('PAS_NBRE_COURBE','PAS_INST_COURBE',), + AU_MOINS_UN('TABLE_COURBE',)), + PAS_INST_COURBE = SIMP(statut='f',typ='R'), + PAS_NBRE_COURBE = SIMP(statut='f',typ='I'), + TABLE_COURBE = SIMP(statut='f', typ=CO), + ), + DOMAINES = FACT(statut='f',max='**', + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + IDENTIFIANT = SIMP(statut='f',typ='I'),), + INTERFACES = FACT(statut='f',max='**', + GROUP_MA_1 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_MA_2 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TOLE = SIMP(statut='f',typ='R'), + IDENT_DOMAINE_1 = SIMP(statut='f',typ='I'), + IDENT_DOMAINE_2 = SIMP(statut='f',typ='I'),), + + INFO =SIMP(statut='f',typ='I',defaut=1,into=( 1, 2 ) ), + ) ; +#& MODIF COMMANDE DATE 20/06/2011 AUTEUR TRAN V-X.TRAN +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ANGLES J.ANGLES +def calc_fatigue_prod(TYPE_CALCUL,OPTION,**args): + if TYPE_CALCUL == "CUMUL_DOMMAGE" : return cham_elem + if TYPE_CALCUL == "FATIGUE_MULTI" and OPTION == "DOMA_ELGA": return cham_elem + if TYPE_CALCUL == "FATIGUE_MULTI" and OPTION == "DOMA_NOEUD": return cham_no_sdaster + if TYPE_CALCUL == "FATIGUE_VIBR" : return cham_elem + raise AsException("type de calcul non prevu") + +CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant='n', + fr="Calculer un champ de dommage de fatigue subit par une structure et déterminer le plan critique" + +" dans lequel le cisaillement est maximal.", + UIinfo={"groupes":("Post-traitements","Rupture",)}, + + TYPE_CALCUL = SIMP(statut='o',typ='TXM', + into=("CUMUL_DOMMAGE","FATIGUE_MULTI","FATIGUE_VIBR") ), + + b_cumul_domma =BLOC(condition = "TYPE_CALCUL == 'CUMUL_DOMMAGE'", + fr="Calcul d un champ de dommage subi par une structure.", + regles=(PRESENT_PRESENT('DOMMAGE','MATER', ),), + OPTION =SIMP(statut='o',typ='TXM', + into=("DOMA_ELNO_SIGM","DOMA_ELGA_SIGM", + "DOMA_ELNO_EPSI","DOMA_ELGA_EPSI", + "DOMA_ELNO_EPME","DOMA_ELGA_EPME") ), + + b_sigm =BLOC(condition = "OPTION == 'DOMA_ELNO_SIGM' or OPTION == 'DOMA_ELGA_SIGM'", + fr="Calcul a partir d un champ de contraintes.", + HISTOIRE =FACT(statut='o', + RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans, + evol_noli) ), + EQUI_GD =SIMP(statut='f',typ='TXM',defaut="VMIS_SG", + into=("VMIS_SG",) ), + ), + ), + b_epsi =BLOC(condition = "OPTION != 'DOMA_ELNO_SIGM' and OPTION != 'DOMA_ELGA_SIGM'", + fr="Calcul a partir d un champ de déformations.", + HISTOIRE =FACT(statut='o', + RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans, + evol_noli) ), + EQUI_GD =SIMP(statut='o',typ='TXM',defaut="INVA_2_SG", + into=("INVA_2_SG",) ), + ), + ), + DOMMAGE =SIMP(statut='o',typ='TXM', + into=("WOHLER","MANSON_COFFIN","TAHERI_MANSON", + "TAHERI_MIXTE",) ), + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + TAHERI_NAPPE =SIMP(statut='f',typ=(nappe_sdaster,formule) ), + TAHERI_FONC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + b_domma_moda =BLOC(condition = "TYPE_CALCUL == 'FATIGUE_VIBR'", + fr="Calcul d un champ de dommage en dynamique vibratoire", + regles=(PRESENT_PRESENT('DOMMAGE','MATER', ),), + OPTION =SIMP(statut='o',typ='TXM', + into=("DOMA_ELNO_SIGM","DOMA_ELGA_SIGM",) ), + CORR_SIGM_MOYE = SIMP(statut='o',typ='TXM',into=("GOODMAN","GERBER")), + HISTOIRE =FACT(statut='o', + RESULTAT =SIMP(statut='o',typ=(evol_elas, evol_noli) ), + MODE_MECA =SIMP(statut='o',typ=(mode_meca) ), + NUME_MODE =SIMP(statut='o',typ='I',min=1 ,max='**'), + FACT_PARTICI =SIMP(statut='o',typ='R',min=1, max='**',defaut=1. ), + EQUI_GD =SIMP(statut='f',typ='TXM',defaut="VMIS_SG", + into=("VMIS_SG",) ), + ), + DOMMAGE =SIMP(statut='o',typ='TXM', + into=("WOHLER",) ), + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + ), + + b_fatigue_multi =BLOC(condition = "TYPE_CALCUL == 'FATIGUE_MULTI'", + fr="Plan critique dans le cas de la fatigue multiaxiale à grand nombre de cycles.", + TYPE_CHARGE =SIMP(statut='o',typ='TXM',into=("PERIODIQUE","NON_PERIODIQUE") ), + OPTION =SIMP(statut='o',typ='TXM',into=("DOMA_ELGA","DOMA_NOEUD") ), + RESULTAT =SIMP(statut='o',typ=(evol_elas, evol_noli) ), + CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ), + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ), + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**' ), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**' ), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**' ), + COEF_PREECROU =SIMP(statut='f',typ='R',defaut= 1.0E+0), + b_period =BLOC(condition = "TYPE_CHARGE == 'PERIODIQUE'", + CRITERE =SIMP(statut='o',typ='TXM',into=("MATAKE_MODI_AC", + "DANG_VAN_MODI_AC","VMIS_TRESCA","FORMULE_CRITERE") ), + b_fati_p =BLOC(condition = "(CRITERE == 'MATAKE_MODI_AC' or CRITERE == 'DANG_VAN_MODI_AC')", + METHODE =SIMP(statut='o',typ='TXM',into=("CERCLE_EXACT",) ), + ), + + b_fati_pf =BLOC(condition = "(CRITERE == 'FORMULE_CRITERE')", + FORMULE_GRDEQ = SIMP(statut='o',typ=(fonction_sdaster,formule) ), + COURBE_GRD_VIE = SIMP(statut='o',typ='TXM',into=("WOHLER","MANSON_C","FORM_VIE") ), + b_fati_pfvie = BLOC(condition = "(COURBE_GRD_VIE == 'FORM_VIE')", + FORMULE_VIE =SIMP(statut='o',typ=(fonction_sdaster,formule) ), + ), + ), + ), + b_non_period =BLOC(condition = "TYPE_CHARGE == 'NON_PERIODIQUE'", + CRITERE =SIMP(statut='o',typ='TXM', + into=("MATAKE_MODI_AV","DANG_VAN_MODI_AV","FATESOCI_MODI_AV","FORMULE_CRITERE","VMIS_TRESCA") ), + b_fati_np =BLOC(condition = + "(CRITERE != 'VMIS_TRESCA')", + PROJECTION =SIMP(statut='o',typ='TXM',into=("UN_AXE", "DEUX_AXES") ), + DELTA_OSCI =SIMP(statut='f',typ='R',defaut= 0.0E+0), + ), + b_fati_npf =BLOC(condition = "(CRITERE == 'FORMULE_CRITERE')", + FORMULE_GRDEQ =SIMP(statut='o',typ=(fonction_sdaster,formule) ), + COURBE_GRD_VIE = SIMP(statut='o',typ='TXM',into=("WOHLER","MANSON_C","FORM_VIE") ), + b_fati_npfvie = BLOC(condition = "(COURBE_GRD_VIE == 'FORM_VIE')", + FORMULE_VIE =SIMP(statut='o',typ=(fonction_sdaster,formule) ), + ), + ), + ), + ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 21/06/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET + +def calc_ferraillage_prod(RESULTAT,**args): + if AsType(RESULTAT) != None : return AsType(RESULTAT) + raise AsException("type de concept resultat non prevu") + + +CALC_FERRAILLAGE=OPER(nom="CALC_FERRAILLAGE",op=175,sd_prod=calc_ferraillage_prod, reentrant='o', + UIinfo={"groupes":("Post-traitements","Outils-métier",)}, + fr="calcul de cartes de densité de ferraillage ", + + RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans,) ), + + +#==== +# Sélection des numéros d'ordre pour lesquels on fait le calcul : +#==== + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + + b_acce_reel =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + + +# +#==== +# Définition des grandeurs caractéristiques +#==== +# + TYPE_COMB =SIMP(statut='o',typ='TXM',into=('ELU','ELS')), + +# mot clé facteur répétable pour assigner les caractéristiques locales par zones topologiques (GROUP_MA) + AFFE =FACT(statut='o',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + ENROBG =SIMP(statut='o',typ='R'), # enrobage + CEQUI =SIMP(statut='f',typ='R'), # coefficient d'équivalence acier/béton (pour ELS) + SIGM_ACIER =SIMP(statut='o',typ='R'), # contrainte admissible dans l'acier + SIGM_BETON =SIMP(statut='o',typ='R'), # contrainte admissible dans le béton + PIVA =SIMP(statut='f',typ='R'), # valeur du pivot a (pour ELU) + PIVB =SIMP(statut='f',typ='R'), # valeur du pivot b (pour ELU) + ), + ) + + +############################################################################################################## +# Remarques : +#----------- +# l'épaisseur des coques sera récupérée automatiquement +# via le cara_elem sous-jacent au résultat + +# Le résultat produit est un champ constant par éléments associé à la grandeur FER2_R +# qui comporte les composantes : +# +# DNSXI densité d'acier longitudinal suivant X, peau inf +# DNSXS densité d'acier longitudinal suivant X, peau sup +# DNSYI densité d'acier longitudinal suivant Y, peau inf +# DNSYS densité d'acier longitudinal suivant Y, peau sup +# DNST densité d'acier transversal +# SIGMBE contrainte beton +# EPSIBE deformation béton + +# arrêt en erreur si: +# - EFGE_ELNO n'a pas été précédemment calculé et n'est donc pas présent dans la structure de données RESULTAT +# - si aucun CARA_ELEM n'est récupérable via la structure de données RESULTAT +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ADOBES A.ADOBES +CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu_sdaster, + reentrant='n', + fr="Calculer les paramètres modaux d'une structure soumise à un écoulement", + UIinfo={"groupes":("Matrices et vecteurs",)}, + VITE_FLUI =FACT(statut='f', + fr="Définir la plage de vitesse fluide étudiée", + VITE_MIN =SIMP(statut='f',typ='R' ), + VITE_MAX =SIMP(statut='f',typ='R' ), + NB_POIN =SIMP(statut='f',typ='I' ), + ), + BASE_MODALE =FACT(statut='o', + + regles=(AU_MOINS_UN('AMOR_REDUIT','AMOR_UNIF','AMOR_REDUIT_CONN'),), + MODE_MECA =SIMP(statut='o',typ=mode_meca ), + NUME_ORDRE =SIMP(statut='f',typ='I',max='**'), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**',val_min=0.E+00), + AMOR_UNIF =SIMP(statut='f',typ='R',val_min=0.E+00 ), + AMOR_REDUIT_CONN=SIMP(statut='f',typ='R',max='**',val_min=0.E+00), + ), + TYPE_FLUI_STRU =SIMP(statut='o',typ=type_flui_stru ), + IMPRESSION =FACT(statut='f', + fr="Choix des informations à imprimer dans le fichier RESULTAT", + PARA_COUPLAGE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + DEFORMEE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +def calc_fonc_interp_prod(FONCTION, NOM_PARA_FONC, **args): + if AsType(FONCTION) == nappe_sdaster: + return nappe_sdaster + elif AsType(FONCTION) == fonction_sdaster: + return fonction_sdaster + elif AsType(FONCTION) == fonction_c: + return fonction_c + elif AsType(FONCTION) == formule_c: + return fonction_c + elif AsType(FONCTION) == formule: + if NOM_PARA_FONC != None: + return nappe_sdaster + return fonction_sdaster + elif AsType(FONCTION) == para_sensi: + return para_sensi + raise AsException("type de concept resultat non prevu") + +CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=calc_fonc_interp_prod, + docu="U4.32.01",reentrant='n', + fr="Définit une fonction (ou une nappe) à partir d'une fonction FORMULE à 1 ou 2 variables", + UIinfo={"groupes":("Fonctions",)}, + regles=(UN_PARMI('VALE_PARA','LIST_PARA'),), + FONCTION =SIMP(statut='o',typ=(formule,fonction_sdaster,nappe_sdaster,fonction_c) ), + VALE_PARA =SIMP(statut='f',typ='R',max='**'), + LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ), + NOM_RESU =SIMP(statut='f',typ='TXM'), + NOM_PARA =SIMP(statut='f',typ='TXM'), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ), + PROL_DROITE =SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ), + NOM_PARA_FONC =SIMP(statut='f',typ='TXM'), + b_eval_nappe =BLOC(condition = "NOM_PARA_FONC != None", + regles=(UN_PARMI('VALE_PARA_FONC','LIST_PARA_FONC'),), + VALE_PARA_FONC =SIMP(statut='f',typ='R',max='**'), + LIST_PARA_FONC =SIMP(statut='f',typ=listr8_sdaster ), + INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG")), + PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ), + PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +def calc_fonction_prod(self,DERIVE,EXTRACTION,INTEGRE,INVERSE,COMB,COMB_C, + ENVELOPPE,FRACTILE,SPEC_OSCI,ASSE,FFT,COMPOSE,CORR_ACCE,PUISSANCE, + LISS_ENVELOP,ABS, REGR_POLYNOMIALE, **args): + + if (INTEGRE != None): return fonction_sdaster + if (DERIVE != None): return fonction_sdaster + if (INVERSE != None): return fonction_sdaster + if (COMB != None): + type_vale=AsType(COMB[0]['FONCTION']) + for mcfact in COMB : + if(AsType(mcfact['FONCTION'])!=type_vale): + raise AsException("CALC_FONCTION/COMB : pas de types hétérogènes nappe/fonction") + return type_vale + if (COMB_C != None): + vale=COMB_C[0]['FONCTION'] + if(AsType(vale) == nappe_sdaster): + for mcfact in COMB_C[1:] : + if(AsType(mcfact['FONCTION'])!=nappe_sdaster): + raise AsException("CALC_FONCTION/COMB_C : pas de types hétérogènes nappe/fonction") + return nappe_sdaster + else: + for mcfact in COMB_C : + if(AsType(mcfact['FONCTION'])==nappe_sdaster): + raise AsException("CALC_FONCTION/COMB_C : pas de types hétérogènes nappe/fonction") + return fonction_c + if (ENVELOPPE != None): return AsType(ENVELOPPE[0]['FONCTION']) + if (FRACTILE != None): return AsType(FRACTILE[0] ['FONCTION']) + if (EXTRACTION != None): return fonction_sdaster + if (SPEC_OSCI != None): return nappe_sdaster + if (COMPOSE != None): return fonction_sdaster + if (ASSE != None): return fonction_sdaster + if (FFT != None): + vale=FFT[0]['FONCTION'] + if (AsType(vale) == fonction_sdaster ) : return fonction_c + if (AsType(vale) == fonction_c) : return fonction_sdaster + if (CORR_ACCE != None): return fonction_sdaster + if (LISS_ENVELOP!= None): return nappe_sdaster + if (REGR_POLYNOMIALE != None): return fonction_sdaster + if (PUISSANCE != None): return AsType(PUISSANCE[0]['FONCTION']) + if (ABS != None): return fonction_sdaster + raise AsException("type de concept resultat non prevu") + + +CALC_FONCTION=MACRO(nom="CALC_FONCTION", + op=OPS('Macro.calc_fonction_ops.calc_fonction_ops'), + sd_prod=calc_fonction_prod, + fr="Effectue des opérations mathématiques sur des concepts de type fonction", + reentrant='n', + UIinfo={"groupes":("Fonctions",)}, + regles=(UN_PARMI('DERIVE','INTEGRE','SPEC_OSCI','COMB','COMB_C','ENVELOPPE', + 'COMPOSE','EXTRACTION','ASSE','FFT','CORR_ACCE', 'PUISSANCE', + 'LISS_ENVELOP','INVERSE','ABS','FRACTILE','REGR_POLYNOMIALE'),), + FFT =FACT(statut='f',fr="Transformée de Fourier ou de son inverse", + FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c) ), + METHODE =SIMP(statut='f',typ='TXM',defaut="PROL_ZERO",into=("PROL_ZERO","TRONCATURE","COMPLET") ), + b_syme =BLOC ( condition = " AsType(FONCTION)==fonction_c ", + SYME =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ), + ), + ), + DERIVE =FACT(statut='f',fr="Dérivée d une fonction", + METHODE =SIMP(statut='f',typ='TXM',defaut="DIFF_CENTREE",into=("DIFF_CENTREE",) ), + FONCTION =SIMP(statut='o',typ=fonction_sdaster ), + ), + INTEGRE =FACT(statut='f',fr="Intégrale d'une fonction", + METHODE =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ), + FONCTION =SIMP(statut='o',typ=fonction_sdaster), + COEF =SIMP(statut='f',typ='R',defaut= 0.E+0,fr="Valeur de la constante d intégration" ), + ), + LISS_ENVELOP = FACT(statut='f',fr="Lissage d une enveloppe", + NAPPE =SIMP(statut='o',typ=nappe_sdaster ), + FREQ_MIN =SIMP(statut='f',typ='R',defaut =0.2), + FREQ_MAX =SIMP(statut='f',typ='R',defaut =35.5), + ELARG =SIMP(statut='f',typ='R',defaut =0.1 ), + TOLE_LISS =SIMP(statut='f',typ='R',defaut =0.25 ), + ), + REGR_POLYNOMIALE = FACT(statut='f',fr="Régression polynomiale d'une fonction", + FONCTION =SIMP(statut='o',typ=fonction_sdaster), + DEGRE =SIMP(statut='o',typ='I'), + ), + SPEC_OSCI =FACT(statut='f',fr="Spectre d'oscillateur", + METHODE =SIMP(statut='f',typ='TXM',defaut="NIGAM",into=("NIGAM",) ), + FONCTION =SIMP(statut='o',typ=fonction_sdaster ), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + FREQ =SIMP(statut='f',typ='R',max='**'), + NORME =SIMP(statut='o',typ='R',fr="Valeur de la norme du spectre d oscillateur" ), + NATURE =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("DEPL","VITE","ACCE") ), + NATURE_FONC =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("DEPL","VITE","ACCE") ), + ), + ABS =FACT(statut='f',fr="Valeur absolue d'une fonction", + FONCTION =SIMP(statut='o',typ=fonction_sdaster,), + ), + COMB =FACT(statut='f',max='**',fr="Combinaison linéaire réelle de fonctions", + FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster) ), + COEF =SIMP(statut='o',typ='R',fr="Coefficient réel de la combinaison linéaire associée à la fonction" ), + ), + COMB_C =FACT(statut='f',max='**',fr="Combinaison linéaire complexe de fonctions", + regles=(UN_PARMI('COEF_R','COEF_C'),), + FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster) ), + COEF_R =SIMP(statut='f',typ='R',fr="Coefficient réel de la combinaison linéaire associée à la fonction" ), + COEF_C =SIMP(statut='f',typ='C',fr="Coefficient complexe de la combinaison linéaire associée à la fonction" ), + ), + b_comb =BLOC ( condition = "COMB != None or COMB_C != None or REGR_POLYNOMIALE != None", + LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ), + ), + COMPOSE =FACT(statut='f',fr="Composition de deux fonctions FONC_RESU(FONC_PARA)", + FONC_RESU =SIMP(statut='o',typ=fonction_sdaster), + FONC_PARA =SIMP(statut='o',typ=fonction_sdaster), + ), + EXTRACTION =FACT(statut='f',fr="Extraction sur une fonction complexe", + FONCTION =SIMP(statut='o',typ=fonction_c), + PARTIE =SIMP(statut='o',typ='TXM',into=("REEL","IMAG","MODULE","PHASE"),fr="Partie à extraire"), + ), + ENVELOPPE =FACT(statut='f',fr="Enveloppe d une famille de fonctions", + FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),max='**' ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="SUP",into=("SUP","INF"),fr="Type de l enveloppe" ), + ), + FRACTILE =FACT(statut='f',fr="Fractile d une famille de fonctions ou de nappes", + FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),max='**' ), + FRACT =SIMP(statut='o',typ='R',defaut=1.,val_min=0.,val_max=1.,fr="Valeur du fractile" ), + ), + ASSE =FACT(statut='f',fr="Concatenation de fonctions", + FONCTION =SIMP(statut='o',typ=fonction_sdaster,min=2,max=2 ), + SURCHARGE =SIMP(statut='f',typ='TXM',defaut="DROITE",into=("DROITE","GAUCHE")), + ), + CORR_ACCE =FACT(statut='f',fr="Correction d un accelerogramme reel", + CORR_DEPL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + FONCTION =SIMP(statut='o',typ=fonction_sdaster ), + ), + PUISSANCE =FACT(statut='f',fr="Fonction élevée à une puissance", + FONCTION =SIMP(statut='o', typ=(fonction_sdaster,nappe_sdaster) ), + EXPOSANT =SIMP(statut='f', typ='I', defaut=1 ), + ), + INVERSE =FACT(statut='f',fr="Inverse d'une fonction", + FONCTION =SIMP(statut='o', typ=fonction_sdaster), + ), + NOM_PARA =SIMP(statut='f',typ='TXM',into=C_PARA_FONCTION() ), + NOM_RESU =SIMP(statut='f',typ='TXM' ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG"), + fr="Type d'interpolation pour les abscisses et les ordonnées de la " \ + "fonction ou bien pour le paramètre de la nappe."), + PROL_DROITE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), + NOM_PARA_FONC =SIMP(statut='f',typ='TXM',into=C_PARA_FONCTION() ), + INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG"), + fr="Type d'interpolation pour les abscisses et les ordonnées de la fonction"), + PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) +#& MODIF COMMANDE DATE 19/05/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene, + fr="Calculer l'effet de surpression hydrodynamique due au mouvement d'entrainement de la structure" + +" en analyse sismique", + reentrant ='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + + regles=(EXCLUS('MODE_MECA','MODELE_GENE'), + PRESENT_PRESENT( 'MODELE_GENE','NUME_DDL_GENE'), + UN_PARMI('MONO_APPUI', 'NOEUD','GROUP_NO'), + UN_PARMI('MONO_APPUI','MODE_STAT')), + + MODELE_FLUIDE =SIMP(statut='o',typ=modele_sdaster ), + MODELE_INTERFACE=SIMP(statut='o',typ=modele_sdaster ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CHARGE =SIMP(statut='o',typ=char_ther ), + MODE_MECA =SIMP(statut='f',typ=mode_meca ), + MODELE_GENE =SIMP(statut='f',typ=modele_gene ), + NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene ), + DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.E-2 ), + AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + NUME_MODE_MECA =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + POTENTIEL =SIMP(statut='f',typ=evol_ther ), + NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + + DIRECTION =SIMP(statut='o',typ='R',max=3), + MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MODE_STAT =SIMP(statut='f',typ=mode_meca,), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('CALC_FORC_AJOU'), +#------------------------------------------------------------------- + ) ; +#& MODIF COMMANDE DATE 14/12/2010 AUTEUR PELLET J.PELLET +# 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. +# ====================================================================== +# RESPONSABLE DEVESA + +CALC_FORC_NONL=OPER(nom="CALC_FORC_NONL",op= 183,sd_prod=dyna_trans,reentrant='n', + fr="Créer un dyna_trans contenant des champs nommés 'DEPL' correspondant à 'FONL_NOEU' ", + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + RESULTAT =SIMP(statut='o',typ=resultat_sdaster), + + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'), + ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM' ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, defaut="FONL_NOEU", + into=("FONL_NOEU",) ), + + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + + COMP_INCR =C_COMP_INCR(), +) ; +#& MODIF COMMANDE DATE 26/09/2011 AUTEUR MACOCCO K.MACOCCO +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE +CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster, + fr="Calcul du taux de restitution d'énergie par la méthode theta en thermo-élasticité" + +" et les facteurs d'intensité de contraintes.", + reentrant='f', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + regles=(EXCLUS('COMP_ELAS','COMP_INCR'), + CONCEPT_SENSIBLE("ENSEMBLE"), + REUSE_SENSIBLE(), + DERIVABLE('RESULTAT'),), + + THETA =FACT(statut='o', + THETA =SIMP(statut='f',typ=(theta_geom,cham_no_sdaster),), + FOND_FISS =SIMP(statut='f',typ=fond_fiss,max=1), + FISSURE =SIMP(statut='f',position='global',typ=fiss_xfem,max=1), + DTAN_ORIG =SIMP(statut='f',typ='R',max='**'), + DTAN_EXTR =SIMP(statut='f',typ='R',max='**'), + NB_POINT_FOND =SIMP(statut='f',typ='I',val_min=2), + regles=(EXCLUS('FOND_FISS','FISSURE'), + EXCLUS('FOND_FISS','NB_POINT_FOND'), + EXCLUS('FOND_FISS','DTAN_ORIG'), + EXCLUS('FOND_FISS','DTAN_EXTR'),), + b_theta =BLOC(condition="THETA == None",fr="calcul de theta", + regles=(UN_PARMI('R_INF','R_INF_FO'), + PRESENT_PRESENT('R_INF','R_SUP'), + PRESENT_PRESENT('R_INF_FO','R_SUP_FO'), ), + NUME_FOND =SIMP(statut='f',typ='I',defaut=1), + R_INF =SIMP(statut='f',typ='R'), + R_SUP =SIMP(statut='f',typ='R'), + MODULE =SIMP(statut='f',typ='R',defaut=1.), + DIRE_THETA =SIMP(statut='f',typ=cham_no_sdaster ), + DIRECTION =SIMP(statut='f',typ='R',max=3,min=3), + R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MODULE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ), + + RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans,mode_meca,mult_elas),), + + b_no_mult =BLOC(condition="(AsType(RESULTAT) != mult_elas)", + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST', + 'TOUT_MODE','NUME_MODE','LIST_MODE','FREQ','LIST_FREQ'),), + + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + TOUT_MODE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_MODE =SIMP(statut='f',typ=listis_sdaster), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + + b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), + ), + ), + + b_mult_elas =BLOC(condition="(AsType(RESULTAT) == mult_elas)", + NOM_CAS =SIMP(statut='f',typ='TXM',validators=NoRepeat() ), + ), + + + EXCIT =FACT(statut='f',max='**', + CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ), + ), + SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS") ), + + COMP_ELAS =C_COMP_ELAS('CALC_G'), + + COMP_INCR =FACT(statut='f', + RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS", + into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE","VMIS_ISOT_PUIS") ), + DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC") ), + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + ), + ETAT_INIT =FACT(statut='f', + SIGM =SIMP(statut='f',typ=cham_elem), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + ), + + LISSAGE =FACT(statut='d', + DEGRE =SIMP(statut='f',typ='I',defaut=5,into=(0,1,2,3,4,5,6,7) ), + LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE","LAGRANGE_REGU"),), + LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE", + "LAGRANGE_NO_NO","LAGRANGE_REGU"),), + ), + + OPTION =SIMP(statut='o',typ='TXM',max=1,defaut='CALC_G', + into=("CALC_G", + "CALC_G_GLOB", + "CALC_K_G", + "K_G_MODA", + "G_MAX", + "G_MAX_GLOB", + "G_BILI", + "G_BILI_GLOB", + "CALC_K_MAX"), + ), + + b_g_max =BLOC(condition="(OPTION=='G_MAX') or (OPTION=='G_MAX_GLOB')", + BORNES =FACT(statut='o',max='**', + NUME_ORDRE =SIMP(statut='o',typ='I'), + VALE_MIN =SIMP(statut='o',typ='R'), + VALE_MAX =SIMP(statut='o',typ='R'), + ), + ), + b_k_max =BLOC(condition="(OPTION=='CALC_K_MAX')", + SIGNES =FACT(statut='o',max=1, + CHARGE_S =SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'), + CHARGE_NS =SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'), + ), + ), + + b_cal_contrainte =BLOC(condition="(COMP_ELAS!=None and ETAT_INIT==None and (OPTION=='CALC_G' or OPTION=='CALC_G_GLOB'))", + CALCUL_CONTRAINTE =SIMP(statut='f',typ='TXM',into=("NON",),), + ), + + + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +); +#& MODIF COMMANDE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# MACRO DE COUPLAGE IFS AVEC SATURNE VIA YACS +# +CALC_IFS_DNL= MACRO(nom='CALC_IFS_DNL', + op=OPS("Macro.calc_ifs_dnl_ops.calc_ifs_dnl_ops"), + sd_prod=evol_noli, + reentrant='f', + fr="Calcul de l'évolution dynamique d'une structure couplée à un "\ + "domaine fluide (résolu avec le code Saturne) via YACS", + UIinfo={"groupes":("Résolution","Dynamique",)}, + regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',), + CONCEPT_SENSIBLE('ENSEMBLE'),), +#IFS +#=> + GROUP_MA_IFS =SIMP(statut='o',typ=grma,max='**'), + NOM_CMP_IFS =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + UNITE_NOEUD =SIMP(statut='f',typ='I',defaut= 81 ), + UNITE_ELEM =SIMP(statut='f',typ='I',defaut= 82 ), + PAS_INIT =SIMP(statut='o',typ='R' ), +#<= +#IFS + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + MODE_STAT =SIMP(statut='f',typ=mode_meca), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + MASS_DIAG =SIMP(statut='f',typ='TXM',into=("OUI","NON",) ), +#IFS +#=> +#(une charge force nodale est fournie par le couplage avec code_saturne + EXCIT =FACT(statut='f',max='**', +#<= +#IFS + regles=(PRESENT_ABSENT('FONC_MULT','ACCE'), + PRESENT_PRESENT('ACCE','VITE','DEPL'), + # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'), + ), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", + into=("FIXE_CSTE","SUIV","DIDI")), +#IFS +#=> +#(une charge force nodale est fournie par le couplage avec code_saturne +# CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)), + CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)), +#<= +#IFS + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), + EXCIT_GENE =FACT(statut='f',max='**', + FONC_MULT =SIMP(statut='f',typ=fonction_sdaster,max='**' ), + VECT_GENE =SIMP(statut='f',typ=vect_asse_gene,max='**' ), + ), + CONTACT =SIMP(statut='f',typ=char_contact), + SOUS_STRUC =FACT(statut='f',min=01,max='**', + regles=(UN_PARMI('TOUT','SUPER_MAILLE'),), + CAS_CHARGE =SIMP(statut='o',typ='TXM' ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + SUPER_MAILLE=SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + AMOR_RAYL_RIGI = SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE"),), + AMOR_MODAL =FACT(statut='f', + regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),), + MODE_MECA =SIMP(statut='f',typ=mode_meca), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**' ), + LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), + NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ), + REAC_VITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + PROJ_MODAL =FACT(statut='f',max='**', + MODE_MECA =SIMP(statut='o',typ=mode_meca), + NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ), + regles=(PRESENT_PRESENT('MASS_GENE','RIGI_GENE'),), + MASS_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + RIGI_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + DEPL_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + VITE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + ACCE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + ), +#------------------------------------------------------------------- + COMP_INCR =C_COMP_INCR(), +#------------------------------------------------------------------- + COMP_ELAS =C_COMP_ELAS('DYNA_NON_LINE'), +#------------------------------------------------------------------- + b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire", + ETAT_INIT =FACT(statut='o', + regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI',), + EXCLUS('EVOL_NOLI','DEPL',), + EXCLUS('EVOL_NOLI','VITE'), + EXCLUS('EVOL_NOLI','ACCE'), + EXCLUS('EVOL_NOLI','SIGM',), + EXCLUS('EVOL_NOLI','VARI',), + EXCLUS('NUME_ORDRE','INST'), ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + VITE =SIMP(statut='f',typ=cham_no_sdaster), + ACCE =SIMP(statut='f',typ=cham_no_sdaster), + SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)), + VARI =SIMP(statut='f',typ=cham_elem), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + NUME_DIDI =SIMP(statut='f',typ='I'), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ),), + b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif", + ETAT_INIT =FACT(statut='f', + regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI',), + EXCLUS('EVOL_NOLI','DEPL',), + EXCLUS('EVOL_NOLI','VITE'), + EXCLUS('EVOL_NOLI','ACCE'), + EXCLUS('EVOL_NOLI','SIGM',), + EXCLUS('EVOL_NOLI','VARI',), + EXCLUS('NUME_ORDRE','INST'), ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + VITE =SIMP(statut='f',typ=cham_no_sdaster), + ACCE =SIMP(statut='f',typ=cham_no_sdaster), + SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)), + VARI =SIMP(statut='f',typ=cham_elem), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + NUME_DIDI =SIMP(statut='f',typ='I'), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ),), +#------------------------------------------------------------------- +#IFS : pas besoin d'INCREMENT +# INCREMENT =C_INCREMENT(), +#------------------------------------------------------------------- + SCHEMA_TEMPS =FACT(statut='o', + SCHEMA =SIMP(statut='o',min=1,max=1,typ='TXM', + into=("DIFF_CENT","TCHAMWA","NEWMARK","HHT","THETA_METHODE","KRENK"),), + COEF_MASS_SHIFT =SIMP(statut='f',typ='R',defaut= 0.0E+0 ), + b_tchamwa = BLOC(condition="SCHEMA=='TCHAMWA'", + PHI =SIMP(statut='f',typ='R',defaut= 1.05),), + + b_newmark = BLOC(condition="SCHEMA=='NEWMARK'", + BETA =SIMP(statut='f',typ='R',defaut= 0.25), + GAMMA =SIMP(statut='f',typ='R',defaut= 0.5),), + + b_hht = BLOC(condition="SCHEMA=='HHT'", + ALPHA =SIMP(statut='f',typ='R',defaut= -0.3 ), + MODI_EQUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),),), + + b_theta = BLOC(condition="SCHEMA=='THETA_METHODE'", + THETA =SIMP(statut='f',typ='R',defaut= 1.,val_min=0.5,val_max=100. ),), + + b_krenk = BLOC(condition="SCHEMA=='KRENK'", + KAPPA =SIMP(statut='f',typ='R',defaut= 1.0,val_min=1.0,val_max=100. ),), + + b_explicit= BLOC(condition="SCHEMA=='TCHAMWA'or SCHEMA=='DIFF_CENT'", + STOP_CFL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),), + FORMULATION =SIMP(statut='o',typ='TXM',into=("ACCELERATION",),),), + + b_implicit= BLOC(condition="SCHEMA!='TCHAMWA'and SCHEMA!='DIFF_CENT'", + FORMULATION =SIMP(statut='o',max=1,typ='TXM',into=("DEPLACEMENT","VITESSE","ACCELERATION"),),), + ), +#------------------------------------------------------------------- + NEWTON =C_NEWTON(), +#------------------------------------------------------------------- + RECH_LINEAIRE =C_RECH_LINEAIRE(), +#------------------------------------------------------------------- + CONVERGENCE =C_CONVERGENCE(), +#------------------------------------------------------------------- + SOLVEUR =C_SOLVEUR('CALC_IFS_DNL'), +#------------------------------------------------------------------- + OBSERVATION =C_OBSERVATION(), +#------------------------------------------------------------------- + SUIVI_DDL =C_SUIVI_DDL(), +#------------------------------------------------------------------- + AFFICHAGE =C_AFFICHAGE(), +#------------------------------------------------------------------- + ARCHIVAGE =C_ARCHIVAGE(), +#------------------------------------------------------------------- + CRIT_FLAMB =FACT(statut='f',min=1,max=1, + NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3), + CHAR_CRIT =SIMP(statut='f',typ='R',min=2,max=2,defaut=(-10.0,10.), + fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"), + RIGI_GEOM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + bloc_ddl_exclus=BLOC(condition="(RIGI_GEOM=='NON')", + DDL_EXCLUS =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=40, + into=('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', + 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2', + 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4', + 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6', + 'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON','DCX', + 'DCY','DCZ','H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z', + 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C','V11','V12','V13','V21','V22', + 'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21','PRES22','PRES23', + 'PRES31','PRES32','PRES33','VARI','LAG_GV')),), + INST_CALCUL =SIMP(statut='f',typ='TXM',defaut="LISTE_ARCHIVAGE",into=("LISTE_ARCHIVAGE","TOUT_PAS",) ), + ), + MODE_VIBR =FACT(statut='f',min=1,max=1, + MATR_RIGI =SIMP(statut='f',typ='TXM',defaut="ELASTIQUE",into=("ELASTIQUE","TANGENTE","SECANTE",) ), + NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3, + fr="Nombre de fréquences propres à calculer"), + BANDE =SIMP(statut='f',typ='R',min=2,max=2, + fr="Valeur des deux fréquences délimitant la bande de recherche",), + INST_CALCUL =SIMP(statut='f',typ='TXM',defaut="LISTE_ARCHIVAGE",into=("LISTE_ARCHIVAGE","TOUT_PAS",) ), + ), +#------------------------------------------------------------------- + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité", + ang="List of sensitivity parameters"), +#------------------------------------------------------------------- + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), + b_info=BLOC(condition="(INFO==2)", + fr="filtre les messages émis dans le .mess selon le type de message demandé", + INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), + into=("CONTACT", + "MECA_NON_LINE", + "PILOTAGE", + "FACTORISATION", + "APPARIEMENT"), + ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER +CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=table_fonction, + fr="Calcul d'une matrice interspectrale à partir d'une fonction du temps", + reentrant='n', + UIinfo={"groupes":("Fonctions",)}, + INST_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + INST_FIN =SIMP(statut='o',typ='R' ), + DUREE_ANALYSE =SIMP(statut='f',typ='R' ), + DUREE_DECALAGE =SIMP(statut='f',typ='R' ), + NB_POIN =SIMP(statut='o',typ='I' ), + FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ), + TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1 , 2) ), +) ; +#& MODIF COMMANDE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE FERNANDES R.FERNANDES + + +CALC_MAC3COEUR = MACRO(nom="MAC3COEUR", + op=OPS("Mac3coeur.calc_mac3coeur_ops.calc_mac3coeur_ops"), + sd_prod=evol_noli, + + TYPE_COEUR = SIMP(statut='o',typ='TXM',into=("TEST","900","1300","N4","EPR") ), + # TYPE DE COEUR A CONSIDERER + + LAME = FACT(statut='f',max=1, + fr="Estimation des lames d'eau entre AC", + TABLE_N = SIMP(statut='o',typ=table_sdaster), # TABLE INITIALE DES DAMAC A L INSTANT N + TABLE_NP1 = SIMP(statut='o',typ=table_sdaster), # TABLE INITIALE DES DAMAC A L INSTANT N+1 + MAILLAGE_N = SIMP(statut='o',typ=maillage_sdaster), # MAILLAGE EN ATTENDANT MIEUX ??? + MAILLAGE_NP1 = SIMP(statut='o',typ=maillage_sdaster),), # MAILLAGE EN ATTENDANT MIEUX ??? + + DEFORMATION = FACT(statut='f',max=1, + fr="Estimation des deformations des AC", + TABLE_N = SIMP(statut='o',typ=table_sdaster), # TABLE INITIALE DES DAMAC + MAILLAGE_N = SIMP(statut='o',typ=maillage_sdaster), # MAILLAGE EN ATTENDANT MIEUX ??? + NIVE_FLUENCE = SIMP(statut='o',typ='R',validators=NoRepeat(),max=1), # FLUENCE MAXIMALE DANS LE COEUR + RESULTAT = SIMP(statut='o',typ=evol_noli),) # SD_RESULTAT (QUI DOIT CORRESPONDRE A TABLE) + ); + +#& MODIF COMMANDE DATE 19/05/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r, + fr="Calcul des matrices de masse, d'amortissement ou de rigidité ajoutés", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=(EXCLUS('MODE_MECA','CHAM_NO','MODELE_GENE'), + PRESENT_ABSENT('NUME_DDL_GENE','CHAM_NO'), + PRESENT_PRESENT('MODELE_GENE','NUME_DDL_GENE'),), + MODELE_FLUIDE =SIMP(statut='o',typ=modele_sdaster ), + MODELE_INTERFACE=SIMP(statut='o',typ=modele_sdaster ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CHARGE =SIMP(statut='o',typ=char_ther ), + MODE_MECA =SIMP(statut='f',typ=mode_meca ), + CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster ), + MODELE_GENE =SIMP(statut='f',typ=modele_gene ), + NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene ), + DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.E-2 ), + AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + NUME_MODE_MECA =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + OPTION =SIMP(statut='o',typ='TXM',into=("MASS_AJOU","AMOR_AJOU","RIGI_AJOU") ), + POTENTIEL =SIMP(statut='f',typ=evol_ther ), + NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('CALC_MATR_AJOU'), +#------------------------------------------------------------------- +) ; +#& MODIF COMMANDE DATE 05/09/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +def calc_matr_elem_prod(OPTION,**args): + if OPTION == "RIGI_MECA" : return matr_elem_depl_r + if OPTION == "RIGI_FLUI_STRU" : return matr_elem_depl_r + if OPTION == "MASS_MECA" : return matr_elem_depl_r + if OPTION == "MASS_FLUI_STRU" : return matr_elem_depl_r + if OPTION == "RIGI_GEOM" : return matr_elem_depl_r + if OPTION == "RIGI_ROTA" : return matr_elem_depl_r + if OPTION == "MECA_GYRO" : return matr_elem_depl_r + if OPTION == "AMOR_MECA" : return matr_elem_depl_r + if OPTION == "IMPE_MECA" : return matr_elem_depl_r + if OPTION == "ONDE_FLUI" : return matr_elem_depl_r + if OPTION == "AMOR_MECA_ABSO" : return matr_elem_depl_r + if OPTION == "RIGI_MECA_HYST" : return matr_elem_depl_c + if OPTION == "RIGI_THER" : return matr_elem_temp_r + if OPTION == "MASS_THER" : return matr_elem_temp_r + if OPTION == "MASS_MECA_DIAG" : return matr_elem_depl_r + if OPTION == "RIGI_ACOU" : return matr_elem_pres_c + if OPTION == "MASS_ACOU" : return matr_elem_pres_c + if OPTION == "AMOR_ACOU" : return matr_elem_pres_c + raise AsException("type de concept resultat non prevu") + +CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod + ,fr="Calcul des matrices élémentaires",reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + + OPTION =SIMP(statut='o',typ='TXM', + into=("RIGI_MECA","MASS_MECA","RIGI_GEOM", + "AMOR_MECA","RIGI_THER","MASS_THER","IMPE_MECA", + "ONDE_FLUI","AMOR_MECA_ABSO","MASS_FLUI_STRU","RIGI_FLUI_STRU", + "RIGI_ROTA","MECA_GYRO","MASS_MECA_DIAG","RIGI_ACOU", + "MASS_ACOU","AMOR_ACOU","RIGI_MECA_HYST") ), + MODELE =SIMP(statut='o',typ=modele_sdaster ), + + # mots clés facultatifs que l'on a du mal à mettre dans les blocs + # sans gener MACRO_MATR_ASSE : + #------------------------------------------------------------------ + INST=SIMP(statut='f',typ='R',defaut= 0.E+0 ), + + + b_rigi_meca = BLOC( condition = "OPTION=='RIGI_MECA'", + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), + CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**' ), + ), + + b_mass_meca =BLOC(condition = "(OPTION=='MASS_MECA') or (OPTION=='MASS_MECA_DIAG')", + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), + ), + + b_rigi_geom =BLOC(condition = "OPTION=='RIGI_GEOM'", + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + SIEF_ELGA =SIMP(statut='o',typ=cham_elem ), + STRX_ELGA =SIMP(statut='f',typ=cham_elem ), + MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), + ), + + b_rigi_rota =BLOC(condition = "OPTION=='RIGI_ROTA'", + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ), + ), + + b_meca_gyro = BLOC( condition = "OPTION=='MECA_GYRO'", + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='o',typ=cara_elem ), + CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**' ), + ), + + b_amor_meca =BLOC(condition = "OPTION=='AMOR_MECA'", + regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'), + ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + RIGI_MECA =SIMP(statut='f',typ=matr_elem_depl_r ), + MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ), + CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), + ), + + b_amor_meca_abso =BLOC(condition = "OPTION=='AMOR_MECA_ABSO'", + regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'), + ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + RIGI_MECA =SIMP(statut='f',typ=matr_elem_depl_r ), + MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ), + CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), + ), + + b_rigi_meca_hyst =BLOC( condition = "OPTION=='RIGI_MECA_HYST'", + CHARGE =SIMP(statut='f',typ=char_meca ,validators=NoRepeat(),max='**' ), + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + RIGI_MECA =SIMP(statut='o',typ=matr_elem_depl_r ), + ), + + b_rigi_ther =BLOC(condition = "OPTION=='RIGI_THER'", + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), + CHARGE =SIMP(statut='f',typ=char_ther,validators=NoRepeat(),max='**' ), + ), + + b_mass_ther =BLOC(condition = "OPTION=='MASS_THER'", + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + CHARGE =SIMP(statut='f',typ=char_ther ,validators=NoRepeat(),max='**' ), + ), + + b_rigi_acou =BLOC(condition = "OPTION=='RIGI_ACOU'", + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CHARGE =SIMP(statut='f',typ=char_acou ,validators=NoRepeat(),max='**' ), + ), + + b_mass_acou =BLOC(condition = "(OPTION=='MASS_ACOU') or (OPTION=='AMOR_ACOU')", + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CHARGE =SIMP(statut='f',typ=char_acou ,validators=NoRepeat(),max='**' ), + ), + + b_rigi_flui =BLOC(condition = "OPTION=='RIGI_FLUI_STRU'", + CARA_ELEM =SIMP(statut='o',typ=cara_elem ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CHARGE =SIMP(statut='o',typ=char_meca ,validators=NoRepeat(),max='**' ), + ), + + b_mass_flui =BLOC(condition = "OPTION=='MASS_FLUI_STRU'", + CARA_ELEM =SIMP(statut='o',typ=cara_elem ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CHARGE =SIMP(statut='o',typ=char_meca ,validators=NoRepeat(),max='**'), + ), + + b_impe_meca =BLOC(condition = "(OPTION=='IMPE_MECA') or (OPTION=='ONDE_FLUI')", + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ), + ), +) ; +#& MODIF COMMANDE DATE 13/01/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BARGELLINI R.BARGELLINI +CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o', + UIinfo={"groupes":("Post-traitements","Thermique",)}, + fr="Calcule l'évolution métallurgique à partir du résultat d'un calcul thermique", + MODELE =SIMP(statut='o',typ=modele_sdaster ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + RESULTAT =SIMP(statut='o',typ=evol_ther ), + ETAT_INIT =FACT(statut='o', + regles=(UN_PARMI('EVOL_THER', 'META_INIT_ELNO'),), + EVOL_THER =SIMP(statut='f',typ=evol_ther ), + META_INIT_ELNO =SIMP(statut='f',typ=carte_sdaster ), + b_etat =BLOC(condition="EVOL_THER != None", + regles=(UN_PARMI('NUME_INIT', 'INST_INIT',),), + NUME_INIT =SIMP(statut='f',typ='I'), + INST_INIT =SIMP(statut='f',typ='R'), + b_inst =BLOC(condition="INST_INIT != None", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + ), + ), + COMP_INCR =FACT(statut='o',max=1, + RELATION =SIMP(statut='o',typ='TXM',into=("ACIER","ZIRC",) ), + ACIER =SIMP(statut='c',typ='I',defaut=7,into=(7,) ), + ZIRC =SIMP(statut='c',typ='I',defaut=4,into=(4,) ), + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma, validators=NoRepeat(), max='**'), + MAILLE =SIMP(statut='f',typ=ma, validators=NoRepeat(), max='**'), + ), + OPTION =SIMP(statut='f',typ='TXM' + ,into=("META_ELNO",) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +def calc_miss_sdprod(self, TYPE_RESU, **kwargs): + if TYPE_RESU == 'TABLE': + return table_sdaster + elif TYPE_RESU == 'HARM_GENE': + return harm_gene + elif TYPE_RESU == 'TRAN_GENE': + return tran_gene + else: + return None + + +CALC_MISS = MACRO(nom="CALC_MISS", + op=OPS('Macro.calc_miss_ops.calc_miss_ops'), + sd_prod=calc_miss_sdprod, + fr="Préparation des données, exécution du logiciel Miss3D, et post-traitement", + UIinfo={"groupes":("Résolution","Outils-métier",)}, + + TYPE_RESU = SIMP(statut='o', typ='TXM', into=('HARM_GENE', 'TRAN_GENE', 'TABLE', 'FICHIER'), + fr="Type de résultat produit en post-traitement. FICHIER : pas de post-traitement"), + PROJET = SIMP(statut='f', typ='TXM', defaut='MODELE', + fr="Nom de l'étude Miss"), + REPERTOIRE = SIMP(statut='f', typ='TXM', + fr="Répertoire de travail de Miss"), + VERSION = SIMP(statut='f', typ='TXM', into=("V6.6","V6.5"), defaut="V6.6", + fr="Version de Miss utilisée"), + + TABLE_SOL = SIMP(statut='o', typ=table_sdaster, + fr="Table des propriétés du sol"), + + # pas de post-traitement + b_fichier = BLOC(condition="TYPE_RESU == 'FICHIER'", + regles=(UN_PARMI('MACR_ELEM_DYNA', 'BASE_MODALE'),), + MACR_ELEM_DYNA = SIMP(statut='f', typ=macr_elem_dyna, + fr="Macro élément produit en amont"), + BASE_MODALE = SIMP(statut='f', typ=mode_meca, + fr="Base de modes"), + b_base_modale = BLOC(condition="BASE_MODALE is not None", + MATR_RIGI = SIMP(statut='f', typ=(matr_asse_depl_r, matr_asse_depl_c),), + MATR_MASS = SIMP(statut='f', typ=matr_asse_depl_r ), + ), + AMOR_REDUIT = SIMP(statut='f', typ='R', max='**'), + GROUP_MA_INTERF = SIMP(statut='o', typ=grma, max='**', + fr="Groupe de mailles de l'interface"), + + UNITE_IMPR_ASTER = SIMP(statut='f', typ='I', defaut=25, + fr="Unité des résultats transmis par Code_Aster à Miss"), + UNITE_RESU_IMPE = SIMP(statut='f', typ='I', defaut=38, + fr="Unité logique des impédances écrites par Miss"), + UNITE_RESU_FORC = SIMP(statut='f', typ='I', defaut=28, + fr="Unité logique des forces sismiques écrites par Miss"), + ), + # si post-traitement + b_donnees = BLOC(condition="TYPE_RESU != 'FICHIER'", + MACR_ELEM_DYNA = SIMP(statut='f', typ=macr_elem_dyna, + fr="Macro élément produit en amont"), + BASE_MODALE = SIMP(statut='o', typ=mode_meca, + fr="Base de modes"), + MATR_RIGI = SIMP(statut='o', typ=(matr_asse_depl_r, matr_asse_depl_c),), + MATR_MASS = SIMP(statut='o', typ=matr_asse_depl_r ), + AMOR_REDUIT = SIMP(statut='o', typ='R', max='**'), + GROUP_MA_INTERF = SIMP(statut='o', typ=grma, max='**', + fr="Groupe de mailles de l'interface"), + + UNITE_IMPR_ASTER = SIMP(statut='f', typ='I', + fr="Unité des résultats transmis par Code_Aster à Miss"), + UNITE_RESU_IMPE = SIMP(statut='f', typ='I', + fr="Unité logique des impédances à relire."), + UNITE_RESU_FORC = SIMP(statut='f', typ='I', + fr="Unité logique des forces sismiques à relire"), + ), + # Paramètres du calcul Miss + PARAMETRE = FACT(statut='o', + regles=(PRESENT_PRESENT('OFFSET_MAX', 'OFFSET_NB'), + PRESENT_PRESENT('FREQ_MIN', 'FREQ_MAX','FREQ_PAS'), + UN_PARMI('FREQ_MIN', 'LIST_FREQ'), + PRESENT_PRESENT('SPEC_MAX', 'SPEC_NB'),), + FREQ_MIN = SIMP(statut='f', typ='R'), + FREQ_MAX = SIMP(statut='f', typ='R'), + FREQ_PAS = SIMP(statut='f', typ='R'), + LIST_FREQ = SIMP(statut='f', typ='R', max='**'), + Z0 = SIMP(statut='f', typ='R', defaut=0.), + SURF = SIMP(statut='f', typ='TXM', into=("OUI","NON",), defaut="NON"), + RFIC = SIMP(statut='f', typ='R', defaut=0.), + + ALGO = SIMP(statut='f', typ='TXM', into=("DEPL","REGU")), + DREF = SIMP(statut='f', typ='R'), + SPEC_MAX = SIMP(statut='f', typ='R'), + SPEC_NB = SIMP(statut='f', typ='I'), + OFFSET_MAX = SIMP(statut='f', typ='R'), + OFFSET_NB = SIMP(statut='f', typ='I'), + TYPE = SIMP(statut='f', typ='TXM', into=("BINAIRE","ASCII",), defaut="ASCII"), + ), + # Post-traitement type 1 - tran_gene + b_post_tran_gene = BLOC(condition="TYPE_RESU == 'TRAN_GENE'", + regles=(AU_MOINS_UN('ACCE_X', 'ACCE_Y', 'ACCE_Z'),), + MODELE = SIMP(statut='o', typ=(modele_sdaster),), + ACCE_X = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Y = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Z = SIMP(statut='f', typ=fonction_sdaster,), + INST_FIN = SIMP(statut='o', typ='R', fr="Instant final du calcul"), + PAS_INST = SIMP(statut='o', typ='R', fr="Pas de temps du calcul"), + ), + # Post-traitement type 1 - harm_gene + b_post_harm_gene = BLOC(condition="TYPE_RESU == 'HARM_GENE'", + regles=(AU_MOINS_UN('EXCIT_HARMO', 'ACCE_X', 'ACCE_Y', 'ACCE_Z'), + PRESENT_ABSENT('EXCIT_HARMO', 'ACCE_X', 'ACCE_Y', 'ACCE_Z', 'INST_FIN'), + ENSEMBLE('INST_FIN', 'PAS_INST'),), + MODELE = SIMP(statut='o', typ=(modele_sdaster),), + ACCE_X = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Y = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Z = SIMP(statut='f', typ=fonction_sdaster,), + INST_FIN = SIMP(statut='f', typ='R', fr="Instant final du calcul"), + PAS_INST = SIMP(statut='f', typ='R', fr="Pas de temps du calcul"), + # identique à EXCIT de DYNA_LINE_HARM au type attendu pour VECT_ASSE près + EXCIT_HARMO = FACT(statut='f', max='**', + regles=(UN_PARMI('VECT_ASSE', 'CHARGE'), + UN_PARMI('FONC_MULT', 'FONC_MULT_C', 'COEF_MULT', 'COEF_MULT_C'),), + VECT_ASSE = SIMP(statut='f', typ=cham_no_sdaster,), + CHARGE = SIMP(statut='f', typ=char_meca), + FONC_MULT_C = SIMP(statut='f', typ=(fonction_c, formule_c),), + COEF_MULT_C = SIMP(statut='f', typ='C'), + FONC_MULT = SIMP(statut='f', typ=(fonction_sdaster, nappe_sdaster, formule) ), + COEF_MULT = SIMP(statut='f', typ='R'), + PHAS_DEG = SIMP(statut='f', typ='R', defaut=0.), + PUIS_PULS = SIMP(statut='f', typ='I', defaut=0), + ), + ), + # Post-traitement type 2 + b_post_table = BLOC(condition="TYPE_RESU == 'TABLE'", + regles=(AU_MOINS_UN('ACCE_X', 'ACCE_Y', 'ACCE_Z'),), + MODELE = SIMP(statut='o', typ=(modele_sdaster),), + GROUP_NO = SIMP(statut='o', typ=grno, max='**', + fr="Liste des groupes de noeud de post-traitement"), + ACCE_X = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Y = SIMP(statut='f', typ=fonction_sdaster,), + ACCE_Z = SIMP(statut='f', typ=fonction_sdaster,), + INST_FIN = SIMP(statut='o', typ='R', fr="Instant final du calcul"), + PAS_INST = SIMP(statut='o', typ='R', fr="Pas de temps du calcul"), + NORME = SIMP(statut='o', typ='R', + fr="Valeur de la norme du spectre d'oscillateur" ), + AMOR_SPEC_OSCI = SIMP(statut='o', typ='R', max='**', + fr="Amortissement du spectre d'oscillateur"), + LIST_FREQ = SIMP(statut='f', typ=listr8_sdaster, + fr="Fréquences utilisées pour le calcul du spectre d'oscillateur"), + ), + + INFO = SIMP(statut='f', typ='I', defaut=1, into=(1,2)), +) + +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE NISTOR I.NISTOR + + +def calc_modal_prod(self,AMORTISSEMENT,**args): + if AMORTISSEMENT=="NON": return mode_meca + if AMORTISSEMENT=="OUI": return mode_meca_c + raise AsException("type de concept resultat non prevu") + + +CALC_MODAL=MACRO(nom="CALC_MODAL", + op=OPS('Macro.calc_modal_ops.calc_modal_ops'), + UIinfo={"groupes":("Résolution","Dynamique",)}, + sd_prod=calc_modal_prod, + fr="Calcul des modes propres reels ou complexes dans une seule commande", + MODELE =SIMP(statut='o',typ=modele_sdaster), + AMORTISSEMENT =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + INST =SIMP(statut='f',typ='R',defaut=0.), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), + METHODE =SIMP(statut='f',typ='TXM',defaut="SORENSEN", + into=("TRI_DIAG","JACOBI","SORENSEN","QZ") ), + b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'", + PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ), + NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ), + NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), + ), + b_jacobi =BLOC(condition = "METHODE == 'JACOBI'", + PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ), + NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ), + PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ), + ), + b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'", + PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ), + NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ), + PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ), + ), + b_qz =BLOC(condition = "METHODE == 'QZ'", + TYPE_QZ =SIMP(statut='f',typ='TXM',defaut="QZ_SIMPLE",into=("QZ_QR","QZ_SIMPLE","QZ_EQUI") ), + ), + MODE_RIGIDE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG" ), + CALC_FREQ =FACT(statut='d',min=0, + OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE","TOUT"), + fr="Choix de l option et par conséquent du shift du problème modal" ), + b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres", + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_centre =BLOC(condition = "OPTION == 'CENTRE'", + fr="Recherche des valeurs propres les plus proches d une valeur donnée", + FREQ =SIMP(statut='o',typ='R', + fr="Fréquence autour de laquelle on cherche les fréquences propres"), + AMOR_REDUIT =SIMP(statut='f',typ='R',), + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_bande =BLOC(condition = "(OPTION == 'BANDE')", + fr="Recherche des valeurs propres dans une bande donnée", + FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2, + fr="Valeur des deux fréquences délimitant la bande de recherche"), + ), + APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"), + fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ), + regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),), + DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), + COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), + NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ), + SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + STOP_FREQ_VIDE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + VERI_MODE =FACT(statut='d',min=0, + STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-3,val_min=0.E+0 ), + SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0, + fr="Valeur limite admise pour l ereur a posteriori des modes" ), + STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE TORKHANI M.TORKHANI + + +CALC_MODE_ROTATION=MACRO(nom="CALC_MODE_ROTATION", + op=OPS('Macro.calc_mode_rotation_ops.calc_mode_rotation_ops'), + sd_prod=table_container, + reentrant='n', + fr="calculer les fréquences et modes d'un système en fonction des " \ + "vitesses de rotation", + UIinfo={"groupes":("Résolution","Dynamique",)}, + + MATR_A =SIMP(statut='o',typ=matr_asse_depl_r ), + MATR_B =SIMP(statut='o',typ=matr_asse_depl_r ), + MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r ), + MATR_GYRO =SIMP(statut='f',typ=matr_asse_depl_r ), + VITE_ROTA =SIMP(statut='f',typ='R',max='**'), + + METHODE =SIMP(statut='f',typ='TXM',defaut="QZ", + into=("QZ","SORENSEN",) ), + + CALC_FREQ =FACT(statut='d',min=0, + OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","CENTRE",), + fr="Choix de l option et par conséquent du shift du problème modal" ), + b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres", + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_centre =BLOC(condition = "OPTION == 'CENTRE'", + fr="Recherche des valeurs propres les plus proches d une valeur donnée", + FREQ =SIMP(statut='o',typ='R', + fr="Fréquence autour de laquelle on cherche les fréquences propres"), + AMOR_REDUIT =SIMP(statut='f',typ='R',), + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + ), + + VERI_MODE =FACT(statut='d',min=0, + STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-3 ), + STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),), +); +#& MODIF COMMANDE DATE 03/10/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DESROCHE X.DESROCHES +def calc_no_prod(RESULTAT,**args): + if AsType(RESULTAT) != None : return AsType(RESULTAT) + raise AsException("type de concept resultat non prevu") + +CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='f', + fr="Enrichir une SD Résultat par des champs aux noeuds calculés à partir de champs aux éléments évalués aux noeuds", + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + RESULTAT =SIMP(statut='o',typ=resultat_sdaster), + + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'), + ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM' ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("FORC_NODA","REAC_NODA", + "DERA_NOEU", + "DURT_NOEU", + "EFCA_NOEU","EFGE_NOEU", + "ENDO_NOEU", + "ENEL_NOEU", + "EPMG_NOEU", + "EPSG_NOEU", + "EPSI_NOEU", + "EPSP_NOEU" , + "EPVC_NOEU","EPFD_NOEU","EPFP_NOEU","EPFP_NOEU", + "EPMQ_NOEU","EPEQ_NOEU","SIEQ_NOEU", + "ERME_NOEU","ERTH_NOEU","QIRE_NOEU", + "FLUX_NOEU", + "HYDR_NOEU", + "INTE_NOEU", + "META_NOEU", + "PMPB_NOEU", + "PRAC_NOEU", + "SIEF_NOEU", + "SICA_NOEU","SIGM_NOEU", + "SIPO_NOEU", + "VAEX_NOEU","VARI_NOEU","DISS_NOEU",) ), + + + MODELE =SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + EXCIT =FACT(statut='f',max='**', + CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou,char_cine_meca) ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", + into=("FIXE_CSTE","FIXE_PILO","SUIV") ), + ), + + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + +) ; +#& MODIF COMMANDE DATE 20/09/2011 AUTEUR PROIX J-M.PROIX +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PROIX J-M.PROIX +CALC_POINT_MAT=OPER(nom="CALC_POINT_MAT",op=33,sd_prod=table_sdaster,reentrant='f', + UIinfo={"groupes":("Résolution",)}, + fr="Intégrer une loi de comportement", + MATER =SIMP(statut='o',typ=mater_sdaster,max=1), + COMP_INCR =C_COMP_INCR(), + COMP_ELAS =C_COMP_ELAS('CALC_POINT_MAT'), + INCREMENT =C_INCREMENT(), + NEWTON =C_NEWTON(), + CONVERGENCE =C_CONVERGENCE(), + + # --MASSIF : orientation du materiau (monocristal, orthotropie) + MASSIF =FACT(statut='f',max='**', + regles=(UN_PARMI('ANGL_REP','ANGL_EULER'),), + ANGL_REP =SIMP(statut='f',typ='R',min=1,max=3), + ANGL_EULER =SIMP(statut='f',typ='R',min=1,max=3), + ), + ## ANGLE : rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées. + ANGLE =SIMP(statut='f',typ='R',max=1, defaut=0.), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2)), + + regles=( + EXCLUS('SIXX','EPXX',), + EXCLUS('SIYY','EPYY',), + EXCLUS('SIZZ','EPZZ',), + EXCLUS('SIXY','EPXY',), + EXCLUS('SIXZ','EPXZ',), + EXCLUS('SIYZ','EPYZ',), + + ENSEMBLE('F11','F12','F13','F21','F22','F23','F31','F32','F33',),), + + SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + + EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + + F11 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F12 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F13 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F21 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F22 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F23 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F31 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F32 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F33 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + + MATR_C1=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ='R',max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + NUME_COLONNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ), + ), + MATR_C2=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ='R',max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + NUME_COLONNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ), + ), + VECT_IMPO=FACT(statut='f',max=6, + VALE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + ), + SIGM_INIT=FACT(statut='f', + SIXX = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + SIYY = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + SIZZ = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + SIXY = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + SIXZ = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + SIYZ = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + ), + EPSI_INIT=FACT(statut='f', + EPXX = SIMP(statut='o',typ='R',max=1), + EPYY = SIMP(statut='o',typ='R',max=1), + EPZZ = SIMP(statut='o',typ='R',max=1), + EPXY = SIMP(statut='o',typ='R',max=1), + EPXZ = SIMP(statut='o',typ='R',max=1), + EPYZ = SIMP(statut='o',typ='R',max=1), + ), + VARI_INIT=FACT(statut='f', + VALE = SIMP(statut='o',typ='R',max='**'), + ), + FORMAT_TABLE =SIMP(statut='f',typ='TXM',max=1,into=("CMP_COLONNE","CMP_LIGNE",),defaut=("CMP_COLONNE"),), + + NB_VARI_TABLE =SIMP(statut='f',typ='I',max=1,), + + OPER_TANGENT =SIMP(statut='f',typ='TXM',max=1,into=("OUI","NON",),defaut="NON",), + + ARCHIVAGE =FACT(statut='f', + LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_ARCH =SIMP(statut='f',typ='I' ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), + ), + ); + +#& MODIF COMMANDE DATE 12/10/2011 AUTEUR BARGELLI R.BARGELLINI +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE MICHEL S.MICHEL + + +CALC_PRECONT=MACRO(nom="CALC_PRECONT", + op=OPS('Macro.calc_precont_ops.calc_precont_ops'), + sd_prod=evol_noli, + fr="Imposer la tension définie par le BPEL dans les cables", + reentrant='f',UIinfo={"groupes":("Modélisation",)}, + reuse =SIMP(statut='f',typ='evol_noli'), + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + CARA_ELEM =SIMP(statut='o',typ=cara_elem), + CABLE_BP =SIMP(statut='o',typ=cabl_precont,validators=NoRepeat(),max='**'), + CABLE_BP_INACTIF =SIMP(statut='f',typ=cabl_precont,validators=NoRepeat(),max='**'), + INCREMENT =C_INCREMENT(), + RECH_LINEAIRE =C_RECH_LINEAIRE(), + CONVERGENCE =C_CONVERGENCE(), + ETAT_INIT =FACT(statut='f', + regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI',), + EXCLUS('EVOL_NOLI','DEPL',), + EXCLUS('EVOL_NOLI','SIGM',), + EXCLUS('EVOL_NOLI','VARI',), + EXCLUS('NUME_ORDRE','INST'), ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + SIGM =SIMP(statut='f',typ=(carte_sdaster,cham_elem)), + VARI =SIMP(statut='f',typ=cham_elem), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + NUME_DIDI =SIMP(statut='f',typ='I'), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ), + METHODE = SIMP(statut='d',typ='TXM',defaut="NEWTON",into=("NEWTON","IMPLEX")), + b_meth_newton = BLOC(condition = "METHODE == 'NEWTON'", + NEWTON = C_NEWTON(), + ), +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('CALC_PRECONT'), +#------------------------------------------------------------------- + INFO =SIMP(statut='f',typ='I',into=(1,2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + + EXCIT =FACT(statut='o',max='**', + CHARGE =SIMP(statut='o',typ=char_meca), + ), + + COMP_INCR =C_COMP_INCR(), + ) ; +#& MODIF COMMANDE DATE 02/02/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# ====================================================================== +# RESPONSABLE GNICOLAS +def calc_sensi_prod(RESULTAT,**args): + if AsType(RESULTAT) != None : return AsType(RESULTAT) + raise AsException("type de concept resultat non prevu") + +CALC_SENSI=OPER(nom="CALC_SENSI",op=132,sd_prod=calc_sensi_prod,reentrant='f', + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + fr="Compléter ou créer un résultat en calculant des champs dérivés )", + MODELE =SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + + RESULTAT =SIMP(statut='o',typ=resultat_sdaster, + fr="Résultat d'une commande globale"), + + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'), + CONCEPT_SENSIBLE("SEPARE"), + DERIVABLE('RESULTAT'),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM' ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectué que sur ces mailles là"), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectué que sur ces mailles là"), + + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + + into=('DEDE_ELNO','DEDE_NOEU','DESI_ELNO', + 'DESI_NOEU','DETE_ELNO','DETE_NOEU', + 'EFGE_ELNO','EPSI_ELGA','EPSI_ELNO', + 'EPSP_ELNO','FLUX_ELNO','FLUX_NOEU','REAC_NODA','SIEF_ELGA', + 'SIEF_ELNO','SIEF_NOEU', + 'SIGM_ELNO','SIGM_NOEU', + 'SIPO_ELNO','VARI_ELNO'), + ), + + + # -- mots cles inutiles mais qui permettent de reutiliser certaines routines : + EXCIT =FACT(statut='f',max='**', CHARGE=SIMP(statut='o',typ=(char_meca,) ),), + NORME =SIMP(statut='f',typ='TXM',defaut="XXXX", into=("XXXX",),), + + + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== + +# RESPONSABLE CORUS M.CORUS + + +CALC_SPEC=MACRO(nom="CALC_SPEC", + op=OPS('Macro.calc_spec_ops.calc_spec_ops'), + sd_prod=table_fonction, + reentrant='n', + fr="Calcule une matrice interspectrale ou des fonctions de transferts", + UIinfo={"groupes":("Fonctions",)}, + TAB_ECHANT =FACT(statut='f', + NOM_TAB =SIMP(statut='o',typ=table_sdaster), + LONGUEUR_ECH =FACT(statut='f', + DUREE =SIMP(statut='f',typ='R'), + POURCENT =SIMP(statut='f',typ='R'), + NB_PTS =SIMP(statut='f',typ='I'), + ), + RECOUVREMENT =FACT(statut='f', + DUREE =SIMP(statut='f',typ='R'), + POURCENT =SIMP(statut='f',typ='R'), + NB_PTS =SIMP(statut='f',typ='I'), + ), + ), + ECHANT =FACT(statut='f',max='**', + NUME_ORDRE_I =SIMP(statut='o',typ='I' ), + NUME_MES =SIMP(statut='o',typ='I' ), + FONCTION =SIMP(statut='o',typ=fonction_sdaster), + ), +#-- Cas de la matrice interspectrale --# + INTERSPE =FACT(statut='f', + FENETRE =SIMP(statut='f',typ='TXM',defaut="RECT",into=("RECT","HAMM","HANN","EXPO","PART",)), + BLOC_DEFI_FENE =BLOC(condition = "FENETRE == 'EXPO' or FENETRE == 'PART' ", + DEFI_FENE =SIMP(statut='f',typ='R',max='**'), + ), + ), +#-- Cas des transferts - estimateurs H1 / H2 / Hv + Coherence --# + TRANSFERT =FACT(statut='f', + ESTIM =SIMP(statut='f',typ='TXM',defaut="H1",into=("H1","H2","CO",)), + REFER =SIMP(statut='o',typ='I',max='**'), + FENETRE =SIMP(statut='f',typ='TXM',defaut="RECT",into=("RECT","HAMM","HANN","EXPO","PART",)), +# DEFI_FENE =SIMP(statut='f',typ='R',max='**'), + BLOC_DEFI_FENE =BLOC(condition = "FENETRE == 'EXPO' or FENETRE == 'PART' ", + DEFI_FENE =SIMP(statut='f',typ='R',max='**'), + ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +); +#& MODIF COMMANDE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# -*- coding: iso-8859-1 -*- +# RESPONSABLE COURTOIS M.COURTOIS + +def calc_table_prod(self, TABLE, ACTION, **kargs): + """Typage du concept produit. + """ + l_typ = [AsType(TABLE),] + for mcf in ACTION: + dmc = mcf.cree_dict_valeurs(mcf.mc_liste) + if dmc.get('TABLE') != None: + l_typ.append(AsType(dmc['TABLE'])) + # une table_fonction étant une table + if table_fonction in l_typ: + return table_fonction + else: + return table_sdaster + + + +CALC_TABLE=MACRO(nom="CALC_TABLE", + op=OPS('Macro.calc_table_ops.calc_table_ops'), + sd_prod=calc_table_prod, + fr="Opérations sur une table", + UIinfo={"groupes":("Tables",)}, + reentrant='f', + regles=(DERIVABLE('TABLE'),), + TABLE = SIMP(statut='o',typ=table_sdaster), + ACTION = FACT(statut='o', max='**', + fr = "Suite des opérations à effectuer sur la table", + OPERATION = SIMP(statut='o', typ='TXM', + into=('FILTRE', 'EXTR', 'RENOMME', 'TRI', 'COMB', 'AJOUT_LIGNE', + 'OPER', 'SUPPRIME', 'AJOUT_COLONNE')), + + b_filtre = BLOC(condition="OPERATION == 'FILTRE'", + fr="Sélectionne les lignes de la table vérifiant un critère", + NOM_PARA = SIMP(statut='o',typ='TXM'), + CRIT_COMP = SIMP(statut='f',typ='TXM',defaut="EQ", + into=('EQ','NE','GT','LT','GE','LE','REGEXP', + 'VIDE','NON_VIDE','MAXI','ABS_MAXI','MINI','ABS_MINI'),), + b_vale = BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))", + regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),), + VALE = SIMP(statut='f',typ='R',max='**'), + VALE_I = SIMP(statut='f',typ='I',max='**'), + VALE_C = SIMP(statut='f',typ='C',max='**'), + VALE_K = SIMP(statut='f',typ='TXM',max='**'), + ), + b_regexp = BLOC(condition = "CRIT_COMP == 'REGEXP'", + VALE_K = SIMP(statut='o',typ='TXM',), + ), + b_crit = BLOC(condition = "CRIT_COMP in ('EQ','NE')", + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + ), + ), + + b_extr = BLOC(condition="OPERATION == 'EXTR'", + fr="Extrait une ou plusieurs colonnes de la table", + NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + fr="Noms des colonnes à extraire"), + ), + + b_suppr = BLOC(condition="OPERATION == 'SUPPRIME'", + fr="Supprime une ou plusieurs colonnes de la table", + NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + fr="Noms des colonnes à supprimer"), + ), + + b_renomme = BLOC(condition="OPERATION == 'RENOMME'", + fr="Renomme un ou plusieurs paramètres de la table", + NOM_PARA = SIMP(statut='o', typ='TXM', validators=NoRepeat(), min=2, max=2, + fr="Couple (ancien nom du paramètre, nouveau nom du paramètre)",), + ), + + b_tri = BLOC(condition="OPERATION == 'TRI'", + fr="Ordonne les lignes de la table selon les valeurs d'un ou plusieurs paramètres", + NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + ORDRE = SIMP(statut='f',typ='TXM',defaut="CROISSANT", + into=("CROISSANT","DECROISSANT") ), + ), + + b_comb = BLOC(condition="OPERATION == 'COMB'", + fr="Combine deux tables ayant éventuellement des paramètres communs", + TABLE = SIMP(statut='o',typ=table_sdaster, + fr="Table dont les colonnes vont venir surcharger la table initiale"), + NOM_PARA = SIMP(statut='f',typ='TXM',max='**', + fr="Noms des paramètres dont les valeurs doivent etre identiques dans les deux tables "\ + "pour que les colonnes soient combinées"), + RESTREINT = SIMP(statut='f', typ='TXM', into=('OUI', 'NON'), defaut='NON', + fr="Restreint la fusion uniquement aux lignes où les NOM_PARA sont communs"), + ), + + b_ajout_lig = BLOC(condition="OPERATION == 'AJOUT_LIGNE'", + fr="Ajoute une ligne à la table initiale", + NOM_PARA = SIMP(statut='o',typ='TXM',max='**', + fr="Noms des paramètres dont les valeurs sont fournies sous VALE"), + VALE = SIMP(statut='o',typ=not_checked,max='**', fr='Valeurs des paramètres'), + ), + + b_ajout_col = BLOC(condition="OPERATION == 'AJOUT_COLONNE'", + fr="Ajoute une colonne constante à la table initiale", + NOM_PARA = SIMP(statut='o',typ='TXM',max='**', + fr="Noms des paramètres des colonnes à ajouter"), + VALE = SIMP(statut='o', typ=not_checked, max='**', + fr="Valeur constante pour chaque colonne"), + ), + + b_oper = BLOC(condition="OPERATION == 'OPER'", + fr="Applique une formule dans laquelle les variables sont les paramètres de la table", + FORMULE = SIMP(statut='o',typ=formule, + fr="Formule à appliquer aux colonnes de la table"), + NOM_PARA = SIMP(statut='o',typ='TXM', + fr="Nom de la nouvelle colonne"), + ), + ), + + SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom),max=1, + fr="Paramètre de sensibilité", + ang="Sensitivity parameter"), + TITRE = SIMP(statut='f',typ='TXM',max='**', + fr="Titre de la table produite"), + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE +CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + fr="Définir un champ theta pour le calcul du taux de restitution d'énergie" + +" ou des facteurs d'intensité de contraintes", + regles=(UN_PARMI('THETA_2D','THETA_3D','THETA_BANDE'), + PRESENT_ABSENT('THETA_2D','DIRE_THETA'), + EXCLUS('DIRECTION','DIRE_THETA'),), + OPTION =SIMP(statut='f',typ='TXM',defaut="COURONNE",into=("COURONNE","BANDE") ), + MODELE =SIMP(statut='o',typ=(modele_sdaster) ), + THETA_3D =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'), + UN_PARMI('MODULE','MODULE_FO'), + ENSEMBLE('MODULE','R_INF','R_SUP'), + ENSEMBLE('MODULE_FO','R_INF_FO','R_SUP_FO'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MODULE =SIMP(statut='f',typ='R'), + R_INF =SIMP(statut='f',typ='R'), + R_SUP =SIMP(statut='f',typ='R'), + MODULE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + b_theta_3d =BLOC(condition="THETA_3D != None", + FOND_FISS =SIMP(statut='o',typ=fond_fiss),), + DIRE_THETA =SIMP(statut='f',typ=cham_no_sdaster ), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + THETA_2D =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + MODULE =SIMP(statut='o',typ='R'), + R_INF =SIMP(statut='o',typ='R'), + R_SUP =SIMP(statut='o',typ='R'), + ), + THETA_BANDE =FACT(statut='f',max='**', + MODULE =SIMP(statut='o',typ='R'), + R_INF =SIMP(statut='o',typ='R'), + R_SUP =SIMP(statut='o',typ='R'), + ), + GRAD_NOEU_THETA =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + IMPRESSION =FACT(statut='f', + UNITE =SIMP(statut='f',typ='I',defaut=8), + FORMAT =SIMP(statut='f',typ='TXM',defaut="EXCEL",into=("EXCEL","AGRAF") ), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +def calc_vect_elem_prod(OPTION,**args): + if OPTION == "CHAR_MECA" : return vect_elem_depl_r + if OPTION == "CHAR_THER" : return vect_elem_temp_r + if OPTION == "CHAR_ACOU" : return vect_elem_pres_c + if OPTION == "FORC_NODA" : return vect_elem_depl_r + raise AsException("type de concept resultat non prevu") + +CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + fr="Calcul des seconds membres élémentaires", + OPTION =SIMP(statut='o',typ='TXM',into=("CHAR_MECA","CHAR_THER","CHAR_ACOU", + "FORC_NODA") ), + b_char_meca =BLOC(condition = "OPTION=='CHAR_MECA'", + regles=(AU_MOINS_UN('CHARGE','MODELE'),), + CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), + MODELE =SIMP(statut='f',typ=modele_sdaster), + b_charge =BLOC(condition = "CHARGE != None", fr="modèle ne contenant pas de sous-structure", + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), + ), + b_modele =BLOC(condition = "(MODELE != None)",fr="modèle contenant une sous-structure", + SOUS_STRUC =FACT(statut='o',min=01, + regles=(UN_PARMI('TOUT','SUPER_MAILLE'),), + CAS_CHARGE =SIMP(statut='o',typ='TXM' ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + SUPER_MAILLE=SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',), + ), + ), + ), + b_char_ther =BLOC(condition = "OPTION=='CHAR_THER'", + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + CHARGE =SIMP(statut='o',typ=char_ther,validators=NoRepeat(),max='**'), + INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + + b_char_acou =BLOC(condition = "OPTION=='CHAR_ACOU'", + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + CHARGE =SIMP(statut='o',typ=char_acou,validators=NoRepeat(),max='**'), + ), + + b_forc_noda =BLOC(condition = "OPTION=='FORC_NODA'", + SIEF_ELGA =SIMP(statut='o',typ=cham_elem), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + MODELE =SIMP(statut='f',typ=modele_sdaster), + ), +) ; +#& MODIF COMMANDE DATE 07/12/2010 AUTEUR GENIAUT S.GENIAUT +# 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS + +CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='f', + UIinfo={"groupes":("Résolution",)}, + fr="Calculer des objets élémentaires comme une matrice tangente, intégrer une loi de comportement, etc...", + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="COMPORTEMENT", + into=( "COMPORTEMENT","MATR_TANG_ELEM","FORC_INT_ELEM"),), + MODELE =SIMP(statut='o',typ=modele_sdaster), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + TABLE =SIMP(statut='f',typ=table_container), + EXCIT =FACT(statut='o',max='**', + CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", + into=("FIXE_CSTE",)), + + ), + DEPL =SIMP(statut='o',typ=cham_no_sdaster ), + INCR_DEPL =SIMP(statut='o',typ=cham_no_sdaster ), + SIGM =SIMP(statut='o',typ=cham_elem), + VARI =SIMP(statut='o',typ=cham_elem), + INCREMENT =FACT(statut='o', + LIST_INST =SIMP(statut='o',typ=listr8_sdaster), + NUME_ORDRE =SIMP(statut='o',typ='I'),), + COMP_INCR =C_COMP_INCR(), + COMP_ELAS =C_COMP_ELAS('CALCUL'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; + +#& MODIF COMMANDE DATE 11/10/2011 AUTEUR MEUNIER S.MEUNIER +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GRANET S.GRANET +#from Macro.chainage_thm_ops import chainage_thm_ops + +def chainage_thm_prod(self,TYPE_CHAINAGE,TYPE_RESU = None,**args) : + + if TYPE_CHAINAGE == "MECA_HYDR" : return evol_varc + + if TYPE_CHAINAGE == "HYDR_MECA" : + if TYPE_RESU == "CHAM_NO" : + return cham_no_sdaster + elif TYPE_RESU == "EVOL_VARC" : + return evol_varc + + if TYPE_CHAINAGE == "INIT" : + matr_mh = args['MATR_MH'] + matr_hm1 = args['MATR_HM1'] + matr_hm2 = args['MATR_HM2'] + + self.type_sdprod(matr_mh,corresp_2_mailla) + self.type_sdprod(matr_hm1,corresp_2_mailla) + self.type_sdprod(matr_hm2,corresp_2_mailla) + return None + + raise AsException("type de chainage THM non prevu") + +CHAINAGE_THM=MACRO(nom="CHAINAGE_THM", + op=OPS('Macro.chainage_thm_ops.chainage_thm_ops'), + sd_prod=chainage_thm_prod, + reentrant='n', + UIinfo={"groupes":("Résultats et champs",)}, + docu="Ux.xx.xx", + fr="Calcul des variables de commande pour le chaînage THM", + + TYPE_CHAINAGE = SIMP(statut='o',typ='TXM', + into=("HYDR_MECA","MECA_HYDR","INIT",), + fr="Sens du chaînage ou initialisation des matrices de projection"), + + # Cas HYDR_MECA : + + b_hydr_meca = BLOC(condition = "TYPE_CHAINAGE == 'HYDR_MECA'",fr="Chaînage hydraulique vers mécanique", + + RESU_HYDR = SIMP(statut='o',typ=resultat_sdaster,fr="Résultat hydraulique à chaîner" ), + MODELE_MECA = SIMP(statut='o',typ=modele_sdaster ,fr="Modèle d'arrivée mécanique"), + TYPE_RESU = SIMP(statut='f',typ='TXM',into=("EVOL_VARC","CHAM_NO"),defaut="EVOL_VARC", ), + MATR_HM1 = SIMP(statut='o',typ=corresp_2_mailla,), + MATR_HM2 = SIMP(statut='o',typ=corresp_2_mailla,), + + b_type_resu = BLOC(condition = "TYPE_RESU == 'EVOL_VARC'",fr="Instant obligatoire si TYPE_RESU=EVOL_VARC", + INST = SIMP(statut='o',typ='R',validators=NoRepeat(),min=1,max=1), + + ),), + + # Cas MECA_HYDR : + + b_meca_hydr = BLOC(condition = "TYPE_CHAINAGE == 'MECA_HYDR'",fr="Chaînage mécanique vers hydraulique", + + RESU_MECA = SIMP(statut='o',typ=resultat_sdaster,fr="Résultat mécanique à chaîner" ), + MODELE_HYDR = SIMP(statut='o',typ=modele_sdaster ,fr="Modèle d'arrivée hydraulique"), + + MATR_MH = SIMP(statut='o',typ=corresp_2_mailla,), + INST = SIMP(statut='o',typ='R',validators=NoRepeat(),min=1,max=1), + ), + + # Cas INIT : + + b_init = BLOC(condition = "TYPE_CHAINAGE == 'INIT'",fr="Calcul des matrices de projection", + + MODELE_MECA = SIMP(statut='o',typ=modele_sdaster ,fr="Modèle mécanique"), + MODELE_HYDR = SIMP(statut='o',typ=modele_sdaster ,fr="Modèle hydraulique"), + + MATR_MH = SIMP(statut='o',typ=CO,), + MATR_HM1 = SIMP(statut='o',typ=CO,), + MATR_HM2 = SIMP(statut='o',typ=CO,), + ), + + INFO = SIMP(statut='f',typ='I',defaut=1,into=( 1, 2 ) ), + +) ; + + +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +COMB_FOURIER=OPER(nom="COMB_FOURIER",op= 161,sd_prod=comb_fourier, + reentrant='n',fr="Recombiner les modes de Fourier d'une SD Résultat dans des directions particulières", + UIinfo={"groupes":("Post-traitements",)}, + RESULTAT =SIMP(statut='o',typ=(fourier_elas,fourier_ther),), + ANGL =SIMP(statut='o',typ='R',max='**'), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=6,into=("DEPL","REAC_NODA", + "SIEF_ELGA","EPSI_ELNO","SIGM_ELNO","TEMP","FLUX_ELNO"),), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE SELLENET N.SELLENET +def comb_matr_asse_prod(COMB_R,COMB_C,CALC_AMOR_GENE,**args): + if COMB_C != None: + type_mat = AsType(COMB_C[0]['MATR_ASSE']) + if type_mat in (matr_asse_depl_c,matr_asse_depl_r) : return matr_asse_depl_c + if type_mat in (matr_asse_gene_c,matr_asse_gene_r) : return matr_asse_gene_c + if type_mat in (matr_asse_temp_c,matr_asse_temp_r) : return matr_asse_temp_c + if type_mat in (matr_asse_pres_c,matr_asse_pres_r) : return matr_asse_pres_c + elif COMB_R != None: + type_mat = AsType(COMB_R[0]['MATR_ASSE']) + if type_mat in (matr_asse_depl_c,matr_asse_depl_r) : return matr_asse_depl_r + if type_mat in (matr_asse_temp_c,matr_asse_temp_r) : return matr_asse_temp_r + if type_mat in (matr_asse_pres_c,matr_asse_pres_r) : return matr_asse_pres_r + if type_mat in (matr_asse_gene_c,matr_asse_gene_r) : return matr_asse_gene_r + elif CALC_AMOR_GENE != None: return matr_asse_gene_r + raise AsException("type de concept resultat non prevu") + +COMB_MATR_ASSE=OPER(nom="COMB_MATR_ASSE",op= 31,sd_prod=comb_matr_asse_prod, + fr="Effectuer la combinaison linéaire de matrices assemblées", + reentrant='f', + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=(UN_PARMI('COMB_R','COMB_C','CALC_AMOR_GENE' ),), + COMB_R =FACT(statut='f',max='**', + PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ), + MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_temp_c + ,matr_asse_pres_r,matr_asse_pres_c,matr_asse_gene_r,matr_asse_gene_c ) ), + COEF_R =SIMP(statut='o',typ='R' ), + ), + COMB_C =FACT(statut='f',max='**', + regles=(UN_PARMI('COEF_R','COEF_C' ),), + MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_temp_c + ,matr_asse_pres_r,matr_asse_pres_c,matr_asse_gene_r,matr_asse_gene_c ) ), + COEF_R =SIMP(statut='f',typ='R' ), + COEF_C =SIMP(statut='f',typ='C' ), + ), + CALC_AMOR_GENE =FACT(statut='f', + RIGI_GENE = SIMP(statut='o', typ=matr_asse_gene_r), + MASS_GENE = SIMP(statut='o', typ=matr_asse_gene_r), + regles=(UN_PARMI('AMOR_REDUIT','LIST_AMOR' ),), + AMOR_REDUIT = SIMP(statut='f',typ='R',max='**'), + LIST_AMOR = SIMP(statut='f',typ=listr8_sdaster ), + ), + SANS_CMP =SIMP(statut='f',typ='TXM',into=("LAGR",) ), +) ; +#& MODIF COMMANDE DATE 21/03/2011 AUTEUR MACOCCO K.MACOCCO +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE AUDEBERT S.AUDEBERT +COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_meca, + fr="Réponse sismique par recombinaison modale par une méthode spectrale", + reentrant='n', + UIinfo={"groupes":("Post-traitements","Dynamique",)}, + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','FREQ','NUME_MODE','LIST_FREQ','LIST_ORDRE'), + UN_PARMI('AMOR_REDUIT','LIST_AMOR','AMOR_GENE' ), + UN_PARMI('MONO_APPUI','MULTI_APPUI' ),), + MODE_MECA =SIMP(statut='o',typ=mode_meca ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + b_freq =BLOC(condition = "FREQ != None or LIST_FREQ != None", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + ), + MODE_CORR =SIMP(statut='f',typ=mode_meca ), + + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), + AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r ), + + MASS_INER =SIMP(statut='f',typ=table_sdaster ), + CORR_FREQ =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + + EXCIT =FACT(statut='o',max='**', + regles=(UN_PARMI('AXE','TRI_AXE','TRI_SPEC' ),), + AXE =SIMP(statut='f',typ='R',max=3,fr="Excitation suivant un seul axe",), + TRI_AXE =SIMP(statut='f',typ='R',max=3,fr="Excitation suivant les trois axes mais avec le meme spectre",), + TRI_SPEC =SIMP(statut='f',typ='TXM',into=("OUI",), + fr="Excitation suivant les trois axes avec trois spectres"), + b_axe =BLOC(condition = "AXE != None",fr="Excitation suivant un seul axe", + SPEC_OSCI =SIMP(statut='o',typ=(nappe_sdaster,formule),), + ECHELLE =SIMP(statut='f',typ='R',), + ), + b_tri_axe =BLOC(condition = "TRI_AXE != None",fr="Excitation suivant les trois axes mais avec le meme spectre", + SPEC_OSCI =SIMP(statut='o',typ=(nappe_sdaster,formule),), + ECHELLE =SIMP(statut='f',typ='R',), + ), + b_tri_spec =BLOC(condition = "TRI_SPEC != None",fr="Excitation suivant les trois axes avec trois spectres", + SPEC_OSCI =SIMP(statut='o',typ=(nappe_sdaster,formule),min=3,max=3 ), + ECHELLE =SIMP(statut='f',typ='R',min=3,max=3), + ), + NATURE =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("ACCE","VITE","DEPL") ), + b_mult_appui =BLOC(condition = "(MULTI_APPUI != None)", + regles=(UN_PARMI('NOEUD','GROUP_NO' ),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),) + ), + MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",), + fr="excitation imposée unique" ), + MULTI_APPUI =SIMP(statut='f',typ='TXM',position='global',into=("DECORRELE","CORRELE"), + fr="excitation imposée unique" ), + b_decorrele =BLOC(condition = "MULTI_APPUI == 'DECORRELE' ", + GROUP_APPUI =FACT(statut='f',max='**', + regles=(UN_PARMI('NOEUD','GROUP_NO' ),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),), + + ), + b_correle =BLOC(condition = "MULTI_APPUI == 'CORRELE' ", + COMB_MULT_APPUI =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + TYPE_COMBI =SIMP(statut='f',typ='TXM',into=("QUAD","LINE",) ),), + ), + + COMB_MODE =FACT(statut='o', + TYPE =SIMP(statut='o',typ='TXM',into=("SRSS","CQC","DSC","ABS","DPC") ), + DUREE =SIMP(statut='f',typ='R' ), + ), + COMB_DIRECTION =FACT(statut='f', + TYPE =SIMP(statut='f',typ='TXM',into=("QUAD","NEWMARK") ), + ), + COMB_DEPL_APPUI=FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','LIST_CAS'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), + LIST_CAS =SIMP(statut='f',typ='I',max='**'), + TYPE_COMBI =SIMP(statut='f',typ='TXM',into=("QUAD","LINE","ABS") ), + ), + DEPL_MULT_APPUI =FACT(statut='f',max='**', + regles=(UN_PARMI('NOEUD','GROUP_NO'), + AU_MOINS_UN('DX','DY','DZ' ),), + NOM_CAS =SIMP(statut='o',typ='TXM',max='**'), + NUME_CAS =SIMP(statut='o',typ='I',max='**'), + MODE_STAT =SIMP(statut='o',typ=mode_meca, ), + NOEUD_REFE =SIMP(statut='f',typ=no), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + DX =SIMP(statut='f',typ='R' ), + DY =SIMP(statut='f',typ='R' ), + DZ =SIMP(statut='f',typ='R' ), + ), + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=9, + into=("DEPL","VITE","ACCE_ABSOLU","SIGM_ELNO","SIEF_ELGA", + "EFGE_ELNO","REAC_NODA","FORC_NODA","EFCA_ELNO", + "SIPO_ELNO") ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), + IMPRESSION =FACT(statut='f',max='**', + regles=(EXCLUS('TOUT','NIVEAU'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NIVEAU =SIMP(statut='f',typ='TXM',into=("SPEC_OSCI","MASS_EFFE","MAXI_GENE"),validators=NoRepeat(),max=3 ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +def crea_champ_prod(TYPE_CHAM,**args): + if TYPE_CHAM[0:5] == "CART_" : + return carte_sdaster + elif TYPE_CHAM[0:5] == "NOEU_" : + return cham_no_sdaster + elif TYPE_CHAM[0:2] == "EL" : + return cham_elem + else : + raise AsException("type de concept resultat_sdaster non prevu") + + +CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, + fr="Création d'un champ ",reentrant='f', + UIinfo={"groupes":("Résultats et champs",)}, + TYPE_CHAM =SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO()), + # TYPE_CHAM doit etre de la forme : CART_xx, NOEU_xx, ELEM_xx, ELGA_xx ou ELNO_xx + # ou xx est le nom d'une grandeur définie dans le catalogue des grandeurs +# SI CREATION D'UN CHAM_NO, POUR IMPOSER LA NUMEROTATION DES DDLS : +# ------------------------------------------------------------------ + regles=(EXCLUS('NUME_DDL','CHAM_NO',)), + NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster) ), + CHAM_NO =SIMP(statut='f',typ=(cham_no_sdaster) ), + +# SI CREATION D'UN CHAM_ELEM, POUR aider a l'allocation du champ : +# (PAR DEFAUT : TOU_INI_ELNO/_ELGA/_ELEM) +# ------------------------------------------------------------------ + OPTION =SIMP(statut='f',typ='TXM'), + + OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ASSE","EVAL","EXTR","DISC","NORMALE","R2C","C2R","COMB") ), + +# ------------------------------------------------------------------ + b_norm =BLOC(condition = "OPERATION == 'NORMALE'", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),), + MODELE =SIMP(statut='o',typ=(modele_sdaster) ), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + ), +# ------------------------------------------------------------------ + b_affe =BLOC(condition = "OPERATION == 'AFFE'", + regles=(UN_PARMI('MAILLAGE','MODELE'),), + MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ), + MODELE =SIMP(statut='f',typ=(modele_sdaster) ), + b_affe_modele =BLOC(condition = "MODELE != None", + PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), ), + AFFE =FACT(statut='o',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',), + UN_PARMI('VALE','VALE_I','VALE_C','VALE_F', ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), + VALE =SIMP(statut='f',typ='R',max='**' ), + VALE_I =SIMP(statut='f',typ='I',max='**' ), + VALE_C =SIMP(statut='f',typ='C',max='**' ), + VALE_F =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'), + ), + ), +# ------------------------------------------------------------------ + b_asse =BLOC(condition = "OPERATION == 'ASSE'", + regles=(UN_PARMI('MAILLAGE','MODELE'),), + MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ), + MODELE =SIMP(statut='f',typ=(modele_sdaster) ), + b_asse_modele =BLOC(condition = "MODELE != None", + PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), ), + ASSE =FACT(statut='o',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',), + PRESENT_PRESENT('NOM_CMP_RESU','NOM_CMP', ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + CHAM_GD =SIMP(statut='o',typ=cham_gd_sdaster), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ), + NOM_CMP_RESU =SIMP(statut='f',typ='TXM',max='**' ), + CUMUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), + COEF_R =SIMP(statut='f',typ='R',defaut= 1. ), + COEF_C =SIMP(statut='f',typ='C',max=1), + ), + ), +# ------------------------------------------------------------------ + b_comb =BLOC(condition = "OPERATION == 'COMB'", + fr="Pour faire une combinaison linéaire de cham_no ayant meme profil", + COMB =FACT(statut='o',max='**', + CHAM_GD =SIMP(statut='o',typ=cham_no_sdaster), + COEF_R =SIMP(statut='o',typ='R'), + ), + ), +# ------------------------------------------------------------------ + b_eval =BLOC(condition = "OPERATION == 'EVAL'", + CHAM_F =SIMP(statut='o',typ=cham_gd_sdaster), + CHAM_PARA =SIMP(statut='o',typ=cham_gd_sdaster,max='**'), + ), +# ------------------------------------------------------------------ + b_r2c =BLOC(condition = "OPERATION == 'R2C'", + CHAM_GD =SIMP(statut='o',typ=cham_gd_sdaster), + ), +# ------------------------------------------------------------------ + b_c2r =BLOC(condition = "OPERATION == 'C2R'", + CHAM_GD =SIMP(statut='o',typ=cham_gd_sdaster), + PARTIE =SIMP(statut='o',typ='TXM',into=('REEL','IMAG','MODULE','PHASE'),), + ), +# ------------------------------------------------------------------ + b_disc =BLOC(condition = "OPERATION == 'DISC'", + MODELE =SIMP(statut='f',typ=(modele_sdaster) ), + PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), + CHAM_GD =SIMP(statut='o',typ=cham_gd_sdaster), + ), +# ------------------------------------------------------------------ + b_extr =BLOC(condition = "OPERATION == 'EXTR'", + regles=(AU_MOINS_UN('MAILLAGE','FISSURE','RESULTAT','TABLE'), + PRESENT_ABSENT('MAILLAGE','FISSURE','RESULTAT'), + PRESENT_ABSENT('FISSURE','MAILLAGE','RESULTAT','TABLE'), + PRESENT_ABSENT('RESULTAT','FISSURE','MAILLAGE','TABLE'), + PRESENT_ABSENT('TABLE','RESULTAT','FISSURE'), + ), + MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ), + FISSURE =SIMP(statut='f',typ=(fiss_xfem) ), + RESULTAT =SIMP(statut='f',typ=(resultat_sdaster) ), + TABLE =SIMP(statut='f',typ=(table_sdaster),min=1,max=1), + b_extr_maillage =BLOC(condition = "MAILLAGE != None and TABLE == None", + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("GEOMETRIE",)), + ), + + b_extr_fissure = BLOC(condition = "FISSURE != None", + NOM_CHAM=SIMP(statut='o',typ='TXM',into=("LTNO","LNNO","GRLTNO","GRLNNO","STNO","STNOR","BASLOC", + "GRI.LNNO","GRI.LTNO","GRI.GRLNNO","GRI.GRLTNO")), + + ), + + b_extr_table =BLOC(condition = "TABLE != None", + MODELE =SIMP(statut='f',typ=(modele_sdaster),), + PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), + ), + b_extr_resultat =BLOC(condition = "RESULTAT != None", + regles=(DERIVABLE('RESULTAT'),), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom), + fr="Paramètre de sensibilité.", + ang="Sensitivity parameter"), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()), + TYPE_MAXI =SIMP(statut='f',typ='TXM',into=("MAXI","MINI","MAXI_ABS","MINI_ABS","NORM_TRAN",) ), + + # si TYPE_MAXI, on spécifie en général plusieurs numéros d'ordre : + b_type_maxi =BLOC(condition = "TYPE_MAXI != None", + TYPE_RESU =SIMP(statut='o',typ='TXM',defaut="VALE",into=("VALE","INST",) ), + + regles=(EXCLUS('TOUT_ORDRE','LIST_INST','LIST_FREQ','NUME_ORDRE','INST', + 'FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), + LIST_FREQ =SIMP(statut='f',typ=(listr8_sdaster) ), + NUME_ORDRE =SIMP(statut='f',typ='I',max='**'), + INST =SIMP(statut='f',typ='R',max='**'), + FREQ =SIMP(statut='f',typ='R',max='**'), + NUME_MODE =SIMP(statut='f',typ='I',max='**'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM',max='**'), + ANGL =SIMP(statut='f',typ='R',max='**'), + ), + + # si .not. TYPE_MAXI, on ne doit spécifier qu'un seul numéro d'ordre : + b_non_type_maxi =BLOC(condition = "TYPE_MAXI == None", + regles=(EXCLUS('NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'),), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + FREQ =SIMP(statut='f',typ='R'), + NUME_MODE =SIMP(statut='f',typ='I'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',max=2), + NOM_CAS =SIMP(statut='f',typ='TXM'), + ANGL =SIMP(statut='f',typ='R'), + + INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN",) ), + ), + + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + + ), # fin bloc b_extr + + + ), +# FIN DU CATALOGUE : INFO,TITRE ET TYPAGE DU RESULTAT : +#----------------------------------------------------- + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 03/10/2011 AUTEUR ANDRIAM H.ANDRIAMBOLOLONA +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ANDRIAM H.ANDRIAMBOLOLONA + +def crea_elem_ssd_prod(self,NUME_DDL,**args): + if NUME_DDL: + self.type_sdprod(NUME_DDL,nume_ddl_sdaster) + return macr_elem_dyna + +CREA_ELEM_SSD=MACRO(nom="CREA_ELEM_SSD", + op=OPS('Macro.crea_elem_ssd_ops.crea_elem_ssd_ops'), + sd_prod=crea_elem_ssd_prod, + reentrant='n', + fr="Creation de macro-element dynamique en enchainant les commandes : "\ + "CALC_MATR_ELEM, NUME_DDL, ASSE_MATRICE, MODE_ITER_SIMULT, "\ + "DEFI_INTERF_DYNA, DEFI_BASE_MODALE et MACR_ELEM_DYNA", + UIinfo={"groupes":("Matrices/vecteurs",)}, + +# pour CAL_MATR_ELEM + NUME_DDL + ASSE_MATRICE + MODE_ITER_SIMULT + MODE_STATIQUE + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + NUME_DDL =SIMP(statut='f',typ=CO,defaut=None), + CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**'), + +# pour DEFI_INTERF_DYNA + INTERFACE =FACT(statut='o',max='**', + regles=(ENSEMBLE('NOM','TYPE'), + UN_PARMI('NOEUD','GROUP_NO'),), + NOM =SIMP(statut='f',typ='TXM' ), + TYPE =SIMP(statut='f',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO",) ), + NOEUD =SIMP(statut='f',typ=no,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + FREQ =SIMP(statut='f',typ='R',defaut= 1.), + ), + +# pour DEFI_BASE_MODALE + BASE_MODALE = FACT(statut='o',max = 1, + TYPE =SIMP(statut='o',typ='TXM',max=1,into=('CLASSIQUE','RITZ',),), + b_ritz = BLOC(condition = "TYPE == 'RITZ' ",fr="Base de type Ritz", + TYPE_MODE = SIMP(statut='f',typ='TXM',into=('STATIQUE','INTERFACE',),defaut='INTERFACE',), + b_intf = BLOC(condition = "TYPE_MODE == 'INTERFACE' ", + NMAX_MODE_INTF =SIMP(statut='f',typ='I',defaut=10,val_min=1),), + ), + ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR (pour MODE_ITER_SIMULT, MODE_STATIQUE, DEFI_BASE_MODALE) + SOLVEUR =C_SOLVEUR('CREA_ELEM_SSD'), +#------------------------------------------------------------------- + +# pour le calcul modal + CALC_FREQ =FACT(statut='d',min=0, + OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE","SANS"), + fr="Choix de l option et par consequent du shift du probleme modal" ), + b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres", + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_centre =BLOC(condition = "OPTION == 'CENTRE'", + fr="Recherche des valeurs propres les plus proches d une valeur donnee", + FREQ =SIMP(statut='o',typ='R', + fr="Frequence autour de laquelle on cherche les frequences propres"), + AMOR_REDUIT =SIMP(statut='f',typ='R',), + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_bande =BLOC(condition = "(OPTION == 'BANDE')", + fr="Recherche des valeurs propres dans une bande donnee", + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 9999,val_min=0 ), + FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max='**', + fr="Valeurs des frequences delimitant les bandes de recherche"), + ), + APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"), + fr="Choix du pseudo-produit scalaire pour la resolution du probleme quadratique" ), + ), + + +) ; +#& MODIF COMMANDE DATE 10/05/2011 AUTEUR MEUNIER S.MEUNIER +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster, + reentrant='n',fr="Crée un maillage à partir d'un maillage existant", + UIinfo={"groupes":("Maillage",)}, + regles=(UN_PARMI('COQU_VOLU', 'CREA_FISS', 'CREA_GROUP_MA', 'CREA_MAILLE', 'CREA_POI1', + 'DETR_GROUP_MA', 'ECLA_PG', 'HEXA20_27', 'LINE_QUAD', 'MODI_MAILLE', + 'QUAD_LINE', 'REPERE','RESTREINT','PENTA15_18','COPIE',),), + + + + # le MAILLAGE est inutile si ECLA_PG + MAILLAGE =SIMP(statut='f',typ=maillage_sdaster ), + + COPIE =FACT(statut='f'), + + CREA_POI1 =FACT(statut='f',max='**',fr="Création de mailles de type POI1 à partir de noeuds", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD' ),), + NOM_GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + ), + CREA_MAILLE =FACT(statut='f',max='**',fr="Duplication de mailles", + regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + PREF_MAILLE =SIMP(statut='o',typ='TXM' ), + PREF_NUME =SIMP(statut='f',typ='I' ), + ), + CREA_GROUP_MA =FACT(statut='f',max='**',fr="Duplication de mailles et création de groupes de mailles", + regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), + NOM =SIMP(statut='o',typ='TXM'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + PREF_MAILLE =SIMP(statut='o',typ='TXM' ), + PREF_NUME =SIMP(statut='f',typ='I' ), + ), + DETR_GROUP_MA =FACT(statut='f',fr="Destruction de groupes de mailles", + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + NB_MAILLE =SIMP(statut='f',typ='I',defaut= 0, + fr="Nombre minimal de mailles que doit contenir le groupe pour etre détruit", ), + ), + RESTREINT =FACT(statut='f',fr="Restreindre un maillage à des groupes de mailles",max=1, + regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + TOUT_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + TOUT_GROUP_NO =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), + ), + COQU_VOLU =FACT(statut='f', + fr="Creation de mailles volumiques à partir de mailles surfaciques", + NOM =SIMP(statut='o',typ='TXM'), + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max ='**'), + EPAIS =SIMP(statut='o',typ='R' ), + PREF_MAILLE =SIMP(statut='f',typ='TXM',defaut="MS" ), + PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS" ), + PREF_NUME =SIMP(statut='f',typ='I' ,defaut=1 ), + PLAN =SIMP(statut='o',typ='TXM',into=("SUP","MOY","INF")), + b_MOY =BLOC(condition = "PLAN == 'MOY'", + TRANSLATION =SIMP(statut='o',typ='TXM',into=("SUP","INF") ), + ), + ), + MODI_MAILLE =FACT(statut='f',max='**',fr="Modification du type de mailles", + regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + OPTION =SIMP(statut='o',typ='TXM',into=("TRIA6_7","QUAD8_9","SEG3_4","QUAD_TRIA3"), + fr="Choix de la transformation" ), + b_NOS =BLOC(condition = "OPTION == 'TRIA6_7' or OPTION == 'QUAD8_9' or OPTION == 'SEG3_4'", + PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"), + PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ), + ), + b_QTR =BLOC(condition = "OPTION == 'QUAD_TRIA3'", + PREF_MAILLE =SIMP(statut='f',typ='TXM',defaut="MS" ), + PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ), + ), + ), + CREA_FISS = FACT(statut='f',max='**',fr="Creation d'une fissure potentielle avec elts de joint ou elts à disc", + NOM =SIMP(statut='o',typ='TXM'), + GROUP_NO_1 =SIMP(statut='o',typ=grno), + GROUP_NO_2 =SIMP(statut='o',typ=grno), + PREF_MAILLE =SIMP(statut='o',typ='TXM'), + PREF_NUME =SIMP(statut='f',typ='I',defaut=1 ), + ), + LINE_QUAD =FACT(statut='f',fr="Passage linéaire -> quadratique", + regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"), + PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ), + ), + HEXA20_27 =FACT(statut='f',fr="Passage HEXA20 -> HEXA27", + regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"), + PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ), + ), + PENTA15_18 =FACT(statut='f',fr="Passage PENTA15 -> PENTA18", + regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"), + PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ), + ), + QUAD_LINE =FACT(statut='f',fr="Passage quadratique -> linéaire", + regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + ), + REPERE =FACT(statut='f',max='**', + fr="changement de repère servant à déterminer les caractéristiques d'une section de poutre", + TABLE =SIMP(statut='o',typ=table_sdaster, + fr="Nom de la table contenant les caractéristiques de la section de poutre" ), + NOM_ORIG =SIMP(statut='f',typ='TXM',into=("CDG","TORSION"),fr="Origine du nouveau repère" ), + NOM_ROTA =SIMP(statut='f',typ='TXM',into=("INERTIE",),fr="Direction du repére" ), + b_cdg =BLOC(condition = "NOM_ORIG == 'CDG'", + GROUP_MA =SIMP(statut='f',typ=grma, + fr="Nom du groupe de mailles dont le centre de gravité sera l origine du nouveau repère"), + ), + ), + ECLA_PG =FACT(statut='f', + fr="Eclatement des mailles en petites mailles contenant chacune un seul point de gauss", + MODELE =SIMP(statut='o',typ=modele_sdaster ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + SHRINK =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ), + TAILLE_MIN =SIMP(statut='f',typ='R',defaut= 0.0, fr="Taille minimale d'un coté" ), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO('ELGA'),), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +# + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 05/09/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +def crea_resu_prod(TYPE_RESU,**args): + if TYPE_RESU == "EVOL_ELAS" : return evol_elas + if TYPE_RESU == "EVOL_NOLI" : return evol_noli + if TYPE_RESU == "EVOL_THER" : return evol_ther + if TYPE_RESU == "MULT_ELAS" : return mult_elas + if TYPE_RESU == "MODE_MECA" : return mode_meca + if TYPE_RESU == "DYNA_TRANS" : return dyna_trans + if TYPE_RESU == "DYNA_HARMO" : return dyna_harmo + if TYPE_RESU == "FOURIER_ELAS" : return fourier_elas + if TYPE_RESU == "FOURIER_THER" : return fourier_ther + if TYPE_RESU == "EVOL_VARC" : return evol_varc + if TYPE_RESU == "EVOL_CHAR" : return evol_char + raise AsException("type de concept resultat non prevu") + +CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f', + UIinfo={"groupes":("Résultats et champs",)}, + fr="Créer ou enrichir une structure de donnees resultat à partir de champs aux noeuds", + + OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ASSE","ECLA_PG","PERM_CHAM","PROL_RTZ","PREP_VRC1","PREP_VRC2",), + fr="choix de la fonction a activer",), + + + # Création par affectation de champs : + #------------------------------------- + b_affe =BLOC(condition = "OPERATION == 'AFFE'", + + TYPE_RESU =SIMP(statut='o',position='global',typ='TXM',into=("MODE_MECA","MULT_ELAS","EVOL_ELAS","EVOL_NOLI", + "DYNA_HARMO","DYNA_TRANS","FOURIER_ELAS","EVOL_THER","EVOL_VARC","EVOL_CHAR","FOURIER_THER") ), + b_type_resu =BLOC(condition = "TYPE_RESU == 'EVOL_CHAR'", + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("PRES","FSUR_2D","FSUR_3D","FVOL_2D","FVOL_3D","VITE_VENT")), + ), + + b_evol_char =BLOC(condition = "TYPE_RESU != 'EVOL_CHAR'", + NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()), + ), + + b_mode =BLOC(condition = "TYPE_RESU == 'MODE_MECA'", + MATR_A =SIMP(statut='f',typ=matr_asse_depl_r,), + MATR_B =SIMP(statut='f',typ=matr_asse_depl_r,), + ), + + AFFE =FACT(statut='o',max='**', + CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)), + MODELE =SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + + b_mult_elas =BLOC(condition = "TYPE_RESU == 'MULT_ELAS' ", + NOM_CAS =SIMP(statut='f',typ='TXM' ), + CHARGE =SIMP(statut='f',typ=(char_meca),max='**'), + ), + b_evol =BLOC(condition = "((TYPE_RESU=='EVOL_ELAS') or (TYPE_RESU=='EVOL_NOLI') or (TYPE_RESU=='EVOL_THER')\ + or (TYPE_RESU=='EVOL_VARC') or (TYPE_RESU=='EVOL_CHAR') or (TYPE_RESU=='DYNA_TRANS'))", + regles=(UN_PARMI('INST','LIST_INST'),), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + NUME_INIT =SIMP(statut='f',typ='I', val_min=1), + NUME_FIN =SIMP(statut='f',typ='I', val_min=1), + PRECISION =SIMP(statut='f',typ='R',defaut= 0.0 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + ), + b_fourier_elas =BLOC(condition = "(TYPE_RESU == 'FOURIER_ELAS') ", + NUME_MODE =SIMP(statut='f',typ='I'), + TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ), + CHARGE =SIMP(statut='f',typ=(char_meca),max='**'), + ), + b_fourier_ther =BLOC(condition = "(TYPE_RESU == 'FOURIER_THER') ", + NUME_MODE =SIMP(statut='f',typ='I'), + TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ), + ), + b_mode =BLOC(condition = "TYPE_RESU == 'MODE_MECA'", + NUME_MODE =SIMP(statut='f',typ='I'), + FREQ =SIMP(statut='f',typ='R'), + ), + b_dyna_harmo =BLOC(condition = "TYPE_RESU == 'DYNA_HARMO'", + regles=(UN_PARMI('FREQ','LIST_FREQ',),), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION =SIMP(statut='f',typ='R',defaut=0.0), + ), + ), + ), + + + # Création par assemblage d'evol_ther : + #----------------------------------------- + b_asse =BLOC(condition = "OPERATION == 'ASSE'", + TYPE_RESU =SIMP(statut='o',position='global',typ='TXM',into=("EVOL_THER",) ), + ASSE =FACT(statut='o',max='**', + RESULTAT =SIMP(statut='o',typ=evol_ther), + TRANSLATION =SIMP(statut='f',typ='R',defaut= 0. ), + ), + ), + + + b_ecla_pg =BLOC(condition = "OPERATION == 'ECLA_PG'", + + TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_ELAS","EVOL_NOLI","EVOL_THER"), ), + + ECLA_PG =FACT(statut='o', + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO('ELGA'),), + MODELE_INIT =SIMP(statut='o',typ=modele_sdaster), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + RESU_INIT =SIMP(statut='o',typ=resultat_sdaster), + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + ), + + + b_perm_cham =BLOC(condition = "OPERATION == 'PERM_CHAM'", + + TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_NOLI",) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","SIEF_ELGA","VARI_ELGA","STRX_ELGA"), + validators=NoRepeat(),max='**'), + RESU_INIT =SIMP(statut='o',typ=evol_noli), + INST_INIT =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + MAILLAGE_INIT =SIMP(statut='o',typ=maillage_sdaster,), + RESU_FINAL =SIMP(statut='o',typ=evol_noli,), + MAILLAGE_FINAL =SIMP(statut='o',typ=maillage_sdaster,), + PERM_CHAM =FACT(statut='o',max='**', + GROUP_MA_FINAL =SIMP(statut='o',typ=grma), + GROUP_MA_INIT =SIMP(statut='o',typ=grma), + TRAN =SIMP(statut='o',typ='R',min=3,max=3), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), + ), + ), + + b_prol_rtz =BLOC(condition = "OPERATION == 'PROL_RTZ'", + + TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_THER",) ), + + PROL_RTZ =FACT(statut='o', + regles=(EXCLUS('INST','LIST_INST'),), + MAILLAGE_FINAL =SIMP(statut='o',typ=maillage_sdaster,), + TABLE =SIMP(statut='o',typ=table_sdaster,fr="Table issue de post_releve_t"), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),), + REPERE =SIMP(statut='o',typ='TXM',into=("CYLINDRIQUE",),), + ORIGINE =SIMP(statut='o',typ='R',min=3,max=3), + AXE_Z =SIMP(statut='o',typ='R',min=3,max=3), + ), + ), + + b_prep_vrc1 =BLOC(condition = "OPERATION == 'PREP_VRC1'", + # calculer la température dans les couches des coques multicouche à partir d'un champ de fonctions + # de fonctions du temps et de l'espace (épaisseur) + + TYPE_RESU =SIMP(statut='o',position='global',typ='TXM',into=( "EVOL_THER",) ), + + PREP_VRC1 =FACT(statut='o',max=1, + CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)), # carte de fonctions du temps et de l'épaisseur + MODELE =SIMP(statut='o',typ=modele_sdaster), # modèle mécanique contenant les coques multicouche + CARA_ELEM =SIMP(statut='o',typ=cara_elem), # CARA_ELEM pour connaitre EPAIS et COQU_NCOU + INST =SIMP(statut='o',typ='R',validators=NoRepeat(),max='**'), + ), + ), + + b_prep_vrc2 =BLOC(condition = "OPERATION == 'PREP_VRC2'", + # calculer la température dans les couches des coques multicouche à partir d'un evol_ther "coque" + # contenant TEMP/TEMP_INF/TEMP_SUP + + TYPE_RESU =SIMP(statut='o',position='global',typ='TXM',into=( "EVOL_THER",) ), + + PREP_VRC2 =FACT(statut='o',max=1, + EVOL_THER =SIMP(statut='o',typ=(evol_ther)), # evol_ther de type "coque" (TEMP/TEMP_INF/TEMP_SUP) + MODELE =SIMP(statut='o',typ=modele_sdaster), # modèle mécanique contenant les coques multicouche + CARA_ELEM =SIMP(statut='o',typ=cara_elem), # CARA_ELEM pour connaitre EPAIS et COQU_NCOU + ), + ), +) ; +#& MODIF COMMANDE DATE 26/07/2011 AUTEUR LABBE M.LABBE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +def crea_table_prod(TYPE_TABLE, **args): + """Typage du concept résultat + """ + if TYPE_TABLE == 'TABLE_FONCTION': + return table_fonction + elif TYPE_TABLE == 'TABLE_CONTENEUR': + return table_container + else: + return table_sdaster + +CREA_TABLE=OPER(nom="CREA_TABLE",op=36,sd_prod=crea_table_prod, + fr="Création d'une table à partir d'une fonction ou de deux listes", + reentrant='f', + UIinfo={"groupes":("Tables",)}, + + regles=(EXCLUS('FONCTION','LISTE','RESU'),), + + LISTE=FACT(statut='f',max='**', + fr="Creation d'une table a partir de listes", + regles=(UN_PARMI('LISTE_I','LISTE_R','LISTE_K')), + PARA =SIMP(statut='o',typ='TXM'), + TYPE_K =SIMP(statut='f',typ='TXM',defaut='K8', + into=('K8','K16','K24')), + NUME_LIGN=SIMP(statut='f',typ='I',max='**'), + LISTE_I =SIMP(statut='f',typ='I',max='**'), + LISTE_R =SIMP(statut='f',typ='R',max='**'), + LISTE_K =SIMP(statut='f',typ='TXM', max='**'), + ), + FONCTION=FACT(statut='f', + fr="Creation d'une table a partir d'une fonction", + FONCTION=SIMP(statut='o',typ=(fonction_c,fonction_sdaster)), + PARA=SIMP(statut='f',typ='TXM',min=2,max=2), + ), + b_fonction = BLOC(condition='FONCTION != None', + regles=(CONCEPT_SENSIBLE('SEPARE'), REUSE_SENSIBLE(), + DERIVABLE('FONCTION'),), + SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), + ), + RESU=FACT(statut='f',max=1, + fr="Creation d'une table a partir d'un resultat ou d'un champ", + regles=(UN_PARMI('CHAM_GD','RESULTAT'), + UN_PARMI('TOUT_CMP','NOM_CMP'), + PRESENT_ABSENT('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',), + AU_MOINS_UN('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',), + ), + CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster), + RESULTAT =SIMP(statut='f',typ=(resultat_sdaster) ), + b_resultat =BLOC(condition = "RESULTAT != None", + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST', + 'MODE','LIST_MODE','FREQ','LIST_FREQ'),), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',max='**'), + LIST_ORDRE =SIMP(statut='f',typ=(listis_sdaster) ), + INST =SIMP(statut='f',typ='R',max='**'), + LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), + MODE =SIMP(statut='f',typ='I',max='**'), + LIST_MODE =SIMP(statut='f',typ=(listis_sdaster) ), + FREQ =SIMP(statut='f',typ='R',max='**'), + LIST_FREQ =SIMP(statut='f',typ=(listr8_sdaster) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + b_cham_gd =BLOC(condition = "CHAM_GD != None", + CARA_ELEM =SIMP(statut='f',typ=cara_elem),), + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + ), + + TYPE_TABLE = SIMP(statut='f', typ='TXM', defaut="TABLE", + into=('TABLE', 'TABLE_FONCTION', 'TABLE_CONTENEUR'),), + + TITRE=SIMP(statut='f',typ='TXM',max='**'), +) ; + + + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE + +DEBUG=PROC(nom="DEBUG",op=137, + UIinfo={"groupes":("Utilitaires","CACHE")}, + fr="Permettre de changer entre 2 commandes quelques variables globales de debug", + + SDVERI =SIMP(fr="vérifie la conformité des SD produites par les commandes", + statut='f',typ='TXM',into=('OUI','NON')), + JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire", + statut='f',typ='TXM',into=('OUI','NON')), + JEVEUX =SIMP(fr="force les déchargement sur disque", + statut='f',typ='TXM',into=('OUI','NON')), + IMPR_MACRO =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess", + statut='f',typ='TXM',into=("OUI","NON")), + ); +#& MODIF COMMANDE DATE 12/10/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +DEBUT=MACRO(nom="DEBUT", + op=OPS("ops.build_debut"), + repetable='n', + UIinfo={"groupes":("Gestion du travail",)}, + fr="Ouverture d'une étude. Allocation des ressources mémoire et disque et fichiers", + sd_prod=ops.DEBUT, + + PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM', + into=("OUI","NON"),defaut="OUI"), + IMPR_MACRO =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess", + statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"), +# FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f', +# typ='TXM',defaut="NON",into=("OUI","NON",) ), + BASE =FACT(fr="définition des paramètres associés aux bases JEVEUX", + statut='f',min=1,max=2, + FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM', + into=('GLOBALE','VOLATILE'),), + TITRE =SIMP(statut='f',typ='TXM'), + CAS =SIMP(statut='f',typ='TXM'), + NMAX_ENRE =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'), + LONG_ENRE =SIMP(fr="longueur des enregistrements",statut='f',typ='I'), + LONG_REPE =SIMP(fr="longueur du répertoire",statut='f',typ='I'), + ), + + CATALOGUE =FACT(statut='f',min=1,max=10, + FICHIER =SIMP(statut='o',typ='TXM'), + UNITE =SIMP(statut='f',typ='I'), + ), + + CODE =FACT(fr="définition d'un nom pour l'ensemble d'une étude", + statut='f',min=1,max=1, + NOM =SIMP(statut='o',typ='TXM'), + NIV_PUB_WEB =SIMP(statut='o',typ='TXM',into=('INTERNET','INTRANET')), + VISU_EFICAS =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI'), + ), + + ERREUR =FACT(fr="comportement en cas d'erreur",statut='f',min=1,max=1, + ERREUR_F =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),), + ), + + DEBUG =FACT(fr="option de déboggage reservée aux développeurs", + statut='f',min=1,max=1, + JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire", + statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'), + SDVERI =SIMP(fr="vérifie la conformité des SD produites par les commandes", + statut='f',typ='TXM',into=('OUI','NON')), + JEVEUX =SIMP(fr="force les déchargement sur disque", + statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'), + ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA", + statut='f',typ='TXM',into=('TEST',)), + ), + + MESURE_TEMPS =FACT(fr="Pour choisir les mesures de temps consommé dans les commandes", + statut='d',min=1,max=1, + NIVE_DETAIL =SIMP(fr="niveau de détail des impressions", + statut='f',typ='I',into=(0,1,2,3),defaut=1), + # 0 : rien + # 1 : impression en fin de commande des mesures principales + # 2 : impression en fin de commande des mesures principales et secondaires + # 3 : impression des mesures principales et secondaires pour chaque pas de temps + ), + + MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='d',min=1,max=1, + GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'), + TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1), + TAILLE =SIMP(statut='f',typ='I'), + TAILLE_BLOC =SIMP(statut='f',typ='R',defaut=800.), + PARTITION =SIMP(statut='f',typ='R'), + DYNAMIQUE =SIMP(statut='f',typ='I',defaut=1), + ), + + RESERVE_CPU =FACT(fr="reserve de temps pour terminer une execution",statut='d',max=1, + regles=(EXCLUS('VALE','POURCENTAGE'),), +# par défaut VALE fixée à 10. dans le FORTRAN si CODE présent + VALE =SIMP(statut='f',typ='I',val_min=0,), +# par défaut 10% dans le FORTRAN + POURCENTAGE =SIMP(statut='f',typ='R',val_min=0.,val_max=1.0), +# valeur en secondes de la réserve maximum bornée à 900 secondes + BORNE =SIMP(statut='f',typ='I',val_min=0,defaut=900),), + + IGNORE_ALARM = SIMP(statut='f', typ='TXM', max='**', fr="Alarmes que l'utilisateur souhaite délibérément ignorer"), + + LANG = SIMP(statut='f', typ='TXM', into=('FR', 'EN',), + fr="Permet de choisir la langue utilisée pour les messages (si disponible)", + ang="Allows to choose the language used for messages (if available)"), + + INFO = SIMP(statut='f', typ='I', defaut=1, into=(1,2),), +); +#& MODIF COMMANDE DATE 19/05/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE NISTOR I.NISTOR +DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=mode_meca, + reentrant='f', + fr="Définit la base d'une sous-structuration dynamique ou d'une recombinaison modale", + UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)}, + regles=(UN_PARMI('CLASSIQUE','RITZ','DIAG_MASS','ORTHO_BASE'),), + CLASSIQUE =FACT(statut='f', + INTERF_DYNA =SIMP(statut='o',typ=interf_dyna_clas ), + MODE_MECA =SIMP(statut='o',typ=mode_meca,max='**' ), + NMAX_MODE =SIMP(statut='f',typ='I',defaut= 10 ), + ), + RITZ =FACT(statut='f',max='**', + regles=(UN_PARMI('MODE_MECA','BASE_MODALE','MODE_INTF'),), + MODE_MECA =SIMP(statut='f',typ=mode_meca,max='**' ), + NMAX_MODE =SIMP(statut='f',typ='I',max='**'), + BASE_MODALE =SIMP(statut='f',typ=mode_meca ), + MODE_INTF =SIMP(statut='f',typ=(mode_meca,mult_elas), ), + ), + b_ritz =BLOC(condition = "RITZ != None", + INTERF_DYNA =SIMP(statut='f',typ=interf_dyna_clas ), + NUME_REF =SIMP(statut='f',typ=nume_ddl_sdaster ), + ORTHO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Reorthonormalisation de la base de Ritz" ), + LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), + b_ortho =BLOC(condition = "ORTHO == 'OUI' ", + MATRICE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ), + ), + ), + DIAG_MASS =FACT(statut='f',max='**', + MODE_MECA =SIMP(statut='o',typ=mode_meca,max='**' ), + MODE_STAT =SIMP(statut='o',typ=mode_meca ), + ), + ORTHO_BASE =FACT(statut='f',max='**', + BASE =SIMP(statut='o',typ=(mode_meca,mult_elas)), + MATRICE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ), + ), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('DEFI_BASE_MODALE'), +#------------------------------------------------------------------- + + + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE MICHEL S.MICHEL + + +DEFI_CABLE_BP=MACRO(nom="DEFI_CABLE_BP", + op=OPS('Macro.defi_cable_bp_ops.defi_cable_bp_ops'), + sd_prod=cabl_precont, + fr="Calculer les profils initiaux de tension le long des cables " \ + "de précontrainte d'une structure en béton", + reentrant='n',UIinfo={"groupes":("Modélisation","CACHE")}, + MODELE =SIMP(statut='o',typ=modele_sdaster ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CARA_ELEM =SIMP(statut='o',typ=cara_elem ), + GROUP_MA_BETON =SIMP(statut='o',typ=grma,max='**'), + DEFI_CABLE =FACT(statut='o',max='**', + regles=(UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('NOEUD_ANCRAGE','GROUP_NO_ANCRAGE'),), + MAILLE =SIMP(statut='f',typ=ma,min=2,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma), + NOEUD_ANCRAGE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=2), + GROUP_NO_ANCRAGE=SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2), + ), + TYPE_ANCRAGE =SIMP(statut='o',typ='TXM',min=2,max=2,into=("ACTIF","PASSIF") ), + TENSION_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ), + RECUL_ANCRAGE =SIMP(statut='o',typ='R',val_min=0.E+0 ), + RELAXATION =FACT(statut='f',min=0, + R_J =SIMP(statut='o',typ='R',val_min=0.E+0 ), + ), + CONE =FACT(statut='f', + RAYON =SIMP(statut='o',typ='R',val_min=0.E+0 ), + LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0 ), + PRESENT =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2003 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. +# ====================================================================== +# RESPONSABLE MICHEL S.MICHEL + +DEFI_CABLE_OP=OPER(nom="DEFI_CABLE_OP",op= 180,sd_prod=cabl_precont,reentrant='n', + fr="Définit les profils initiaux de tension d'une structure en béton le long des cables de précontrainte" + +" (utilisée par la macro DEFI_CABLE_BP)", + UIinfo={"groupes":("Modélisation",)}, + MODELE =SIMP(statut='o',typ=modele_sdaster ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CARA_ELEM =SIMP(statut='o',typ=cara_elem ), + GROUP_MA_BETON =SIMP(statut='o',typ=grma,max='**'), + DEFI_CABLE =FACT(statut='o',max='**', + regles=(UN_PARMI('MAILLE','GROUP_MA'), + UN_PARMI('NOEUD_ANCRAGE','GROUP_NO_ANCRAGE'),), + MAILLE =SIMP(statut='f',typ=ma,min=2,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma), + NOEUD_ANCRAGE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=2), + GROUP_NO_ANCRAGE=SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2), + GROUP_NO_FUT =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2), + ), + TYPE_ANCRAGE =SIMP(statut='o',typ='TXM',min=2,max=2,into=("ACTIF","PASSIF") ), + TENSION_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ), + RECUL_ANCRAGE =SIMP(statut='o',typ='R',val_min=0.E+0 ), + RELAXATION =FACT(statut='f',min=0, + R_J =SIMP(statut='o',typ='R',val_min=0.E+0 ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + CONE =FACT(statut='f',min=0, + RAYON =SIMP(statut='o',typ='R',val_min=0.E+0 ), + LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0, defaut=0.E+0 ), + PRESENT =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ), + ), +) ; +#& MODIF COMMANDE DATE 10/10/2011 AUTEUR PROIX J-M.PROIX +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PROIX J.M.PROIX +DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster, + fr="Définir le comportement d'un monocristal, d'un polycristal ou de groupes de fibres", + reentrant='n', + UIinfo={"groupes":("Modélisation",)}, +# on exclut MULTIFBRE de MONOCRISTAL ou POLYCRISTAL car la structure de données n'est pas organisée pareil pour ces cas + regles=(UN_PARMI('MONOCRISTAL','POLYCRISTAL','MULTIFIBRE'), + PRESENT_PRESENT('MULTIFIBRE','GEOM_FIBRE','MATER_SECT'), + ), + MONOCRISTAL =FACT(statut='f', max=5, + MATER =SIMP(statut='o', typ=mater_sdaster, max=1), + ECOULEMENT =SIMP(statut='o', typ='TXM', max=1, + into=('MONO_VISC1', 'MONO_VISC2', 'MONO_DD_KR', 'MONO_DD_CFC', 'MONO_DD_CC', 'MONO_DD_FAT',), + fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écoulement viscoplastique"), + ELAS =SIMP(statut='f', typ='TXM', max=1, + fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le comportement élastique (un et un seul)"), + b_non_dd =BLOC(condition="ECOULEMENT=='MONO_VISC1' or ECOULEMENT=='MONO_VISC2'", + ECRO_ISOT =SIMP(statut='f', typ='TXM', max=1, + fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage isotrope"), + ECRO_CINE =SIMP(statut='f', typ='TXM', max=1, + fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage cinématique"), + FAMI_SYST_GLIS =SIMP(statut='f',typ='TXM', max=1,defaut=('OCTAEDRIQUE',), + into=('OCTAEDRIQUE','BCC24','CUBIQUE1','CUBIQUE2','ZIRCONIUM','UNIAXIAL','UTILISATEUR'), + ), + b_util =BLOC(condition="FAMI_SYST_GLIS=='UTILISATEUR' ", + TABL_SYST_GLIS =SIMP(statut='f', typ=table_sdaster, max=1,), + ), + ), + b_dd_kr =BLOC(condition="ECOULEMENT=='MONO_DD_KR' ", + FAMI_SYST_GLIS =SIMP(statut='f',typ='TXM', max=1, + into=('BCC24','UTILISATEUR'),defaut=('BCC24',),), + b_util =BLOC(condition="FAMI_SYST_GLIS=='UTILISATEUR' ", + TABL_SYST_GLIS =SIMP(statut='f', typ=table_sdaster, max=1,), + ), + ), + b_ecp_cfc =BLOC(condition="ECOULEMENT=='MONO_DD_FAT' ", + FAMI_SYST_GLIS =SIMP(statut='f',typ='TXM', max=1, + into=('OCTAEDRIQUE','UTILISATEUR',),defaut=('OCTAEDRIQUE',),), + ), + b_dd_cfc =BLOC(condition="ECOULEMENT=='MONO_DD_CFC' ", + FAMI_SYST_GLIS =SIMP(statut='f',typ='TXM', max=1, + into=('OCTAEDRIQUE','UTILISATEUR',),defaut=('OCTAEDRIQUE',),), + b_util =BLOC(condition="FAMI_SYST_GLIS=='UTILISATEUR' ", + TABL_SYST_GLIS =SIMP(statut='f', typ=table_sdaster, max=1,), + ), + ), + b_dd_cc =BLOC(condition="ECOULEMENT=='MONO_DD_CC' ", + FAMI_SYST_GLIS =SIMP(statut='f',typ='TXM', max=1, + into=('CUBIQUE1','UTILISATEUR',),defaut=('CUBIQUE1',),), + b_util =BLOC(condition="FAMI_SYST_GLIS=='UTILISATEUR' ", + TABL_SYST_GLIS =SIMP(statut='f', typ=table_sdaster, max=1,), + ), + ), + ), + + MATR_INTER =SIMP(statut='f', typ=table_sdaster, max=1,), + + ROTA_RESEAU =SIMP(statut='f', typ='TXM', max=1,into=('NON','POST','CALC'),defaut='NON', + fr="rotation de reseau : NON, POST, CALC"), + + POLYCRISTAL =FACT(statut='f', max='**', + regles=(UN_PARMI('ANGL_REP','ANGL_EULER'),), + MONOCRISTAL =SIMP(statut='o', typ=compor_sdaster, max=1), + FRAC_VOL =SIMP(statut='o', typ='R', max=1,fr="fraction volumique de la phase correspondant au monocristal"), + ANGL_REP =SIMP(statut='f',typ='R',max=3,fr="orientation du monocristal : 3 angles nautiques en degrés"), + ANGL_EULER=SIMP(statut='f',typ='R',max=3,fr="orientation du monocristal : 3 angles d'Euler en degrés"), + ), + + + b_poly =BLOC( condition = "POLYCRISTAL!='None'", + LOCALISATION =SIMP(statut='f', typ='TXM', max=1, into=('BZ', 'BETA', 'RL',), + fr="Donner le nom de la règle de localisation"), + + b_beta =BLOC( condition = "LOCALISATION=='BETA'", + DL =SIMP(statut='o',typ='R',max=1), + DA =SIMP(statut='o',typ='R',max=1), + ), + ), + +##################################################################################### + GEOM_FIBRE = SIMP(statut='f',max=1,typ=gfibre_sdaster, + fr="Donner le nom du concept regroupant tous les groupes de fibres (issu de DEFI_GEOM_FIBRE)"), + MATER_SECT = SIMP(statut='f',max=1,typ=mater_sdaster, + fr="Donner le nom du materiau pour les caracteristiques homogeneisees sur la section"), + MULTIFIBRE = FACT(statut='f',max='**', + GROUP_FIBRE =SIMP(statut='o', typ='TXM', max='**'), + MATER =SIMP(statut='o', typ=mater_sdaster, max=1, + fr="Donner le nom du materiau pour le groupe de fibres"), + ALGO_1D =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)), + DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT", + into=("PETIT","PETIT_REAC","GROT_GDEP")), + RELATION =SIMP(statut='f', typ='TXM', max=1,defaut="ELAS",into=C_RELATION(), + fr="Donner le nom de la relation incrementale pour le groupe de fibres", + ), + RELATION_KIT =SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), + into=( +# MECA KIT_DDI + "VMIS_ISOT_TRAC", + "VMIS_ISOT_LINE", + "VMIS_ISOT_CINE", + "VMIS_ISOT_PUIS", + "GRANGER_FP", + "GRANGER_FP_INDT", + "GRANGER_FP_V", + "BETON_UMLV_FP", + "ROUSS_PR", + "BETON_DOUBLE_DP", + ),), +# on pourrait ajouter TOUT_GROUP_FIBRE + + ) ); + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +DEFI_CONSTANTE=OPER(nom="DEFI_CONSTANTE",op= 2,sd_prod=fonction_sdaster, + fr="Définir la valeur d'une grandeur invariante", + reentrant='n', + UIinfo={"groupes":("Fonctions",)}, + NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), + VALE =SIMP(statut='o',typ='R',), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 13/09/2011 AUTEUR MASSIN P.MASSIN +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS +# +DEFI_CONTACT=OPER(nom = "DEFI_CONTACT", + op = 30, + sd_prod = char_contact, + fr = "Définit les zones soumises à des conditions de contact unilatéral avec ou sans frottement", + #en = "Allows the definition of contact surfaces as well as unilateral conditions", + reentrant = 'n', + UIinfo = {"groupes":("Modélisation",)}, + +# MODELE + + MODELE =SIMP(statut='o',typ=modele_sdaster,), + INFO =SIMP(statut='f',typ='I',into=(1,2),), + +# FORMULATION (UNIQUE PAR OCCURRENCE DE DEFI_CONTACT) + + FORMULATION =SIMP(statut='o', + position='global', + typ='TXM', + fr="Choix d'une formulation de contact ou de liaisons unilatérales", + defaut="DISCRETE", + into=("DISCRETE","CONTINUE","XFEM","LIAISON_UNIL",),), + +# PARAMETRE GENERAL : FROTTEMENT + + FROTTEMENT =SIMP(statut='f', + position='global', + typ='TXM', + fr="Choix d'un modèle de frottement (uniquement pour les formulations de contact)", + defaut="SANS", + into=("COULOMB","SANS",)), + +### PARAMETRES GENERAUX (UNIQUEMENT POUR LE CONTACT MAILLE, NE DEPENDENT PAS DE LA ZONE DE CONTACT) + + b_contact_mail=BLOC(condition = "((FORMULATION == 'CONTINUE') or (FORMULATION == 'DISCRETE'))", +# ARRET DU CALCUL POUR LE MODE SANS RESOLUTION DU CONTACT + STOP_INTERP = SIMP(statut='f', + typ='TXM', + fr="Arrête le calcul dès qu'une interpénétration est détectée en mode RESOLUTION='NON'", + defaut="NON", + into=("OUI","NON")), +# LISSAGE DES NORMALES PAR MOYENNATION AUX NOEUDS + LISSAGE = SIMP(statut='f', + typ='TXM', + fr="Lissage des normales par moyennation aux noeuds", + defaut="NON", + into=("OUI","NON")), +# VERIFICATION DE L'ORIENTATION ET DE LA COHERENCE DES NORMALES + VERI_NORM =SIMP(statut='f', + typ='TXM', + fr="Vérification de l'orientation (sortante) des normales aux surfaces", + defaut="OUI", + into=("OUI","NON"),), + ), + +### PARAMETRES GENERAUX (UNIQUEMENT POUR LE CONTACT, NE DEPENDENT PAS DE LA ZONE DE CONTACT) + + b_contact=BLOC(condition = "FORMULATION != 'LIAISON_UNIL' ", + +# PARAMETRE GENERAL : BOUCLE DE GEOMETRIE + + b_bouc_geom_mail=BLOC(condition = "(FORMULATION == 'DISCRETE' or FORMULATION == 'CONTINUE')", + REAC_GEOM =SIMP(statut='f', + typ='TXM', + into=("AUTOMATIQUE","CONTROLE","SANS",), + defaut="AUTOMATIQUE", + ), + b_automatique = BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ", + ITER_GEOM_MAXI = SIMP(statut='f',typ='I',defaut=10), + RESI_GEOM = SIMP(statut='f',typ='R',defaut=0.01), + ), + b_controle = BLOC(condition = "REAC_GEOM == 'CONTROLE' ", + NB_ITER_GEOM = SIMP(statut='f',typ='I',defaut = 2), + ), + ), + + b_bouc_geom_xfem=BLOC(condition = "FORMULATION == 'XFEM' ", + REAC_GEOM =SIMP(statut='f', + typ='TXM', + into=("AUTOMATIQUE","CONTROLE","SANS",), + defaut="SANS", + ), + b_automatique = BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ", + ITER_GEOM_MAXI = SIMP(statut='f',typ='I',defaut=10), + RESI_GEOM = SIMP(statut='f',typ='R',defaut=0.0001), + ), + b_controle = BLOC(condition = "REAC_GEOM == 'CONTROLE' ", + NB_ITER_GEOM = SIMP(statut='f',typ='I',defaut = 2), + ), + ), + + +# PARAMETRE GENERAL : BOUCLE DE CONTACT + + b_bouc_cont_disc=BLOC(condition = "FORMULATION == 'DISCRETE' ", + ITER_CONT_MULT = SIMP(statut='f',typ='I',defaut = 4), + ), + + b_bouc_cont_cont=BLOC(condition = "FORMULATION == 'CONTINUE' ", + ITER_CONT_TYPE= SIMP(statut='f',typ='TXM',defaut="MAXI", + into=("MULT","MAXI")), + b_bouc_cont_mult = BLOC(condition = "ITER_CONT_TYPE=='MULT'", + ITER_CONT_MULT = SIMP(statut='f',typ='I',defaut = 4), + ), + b_bouc_cont_maxi = BLOC(condition = "ITER_CONT_TYPE=='MAXI'", + ITER_CONT_MAXI = SIMP(statut='f',typ='I',defaut = 30), + ), + ), + + b_bouc_cont_xfem=BLOC(condition = "FORMULATION == 'XFEM' ", + ITER_CONT_TYPE= SIMP(statut='f',typ='TXM',defaut="MAXI", + into=("MULT","MAXI")), + b_bouc_cont_mult = BLOC(condition = "ITER_CONT_TYPE=='MULT'", + ITER_CONT_MULT = SIMP(statut='f',typ='I',defaut = 4), + ), + b_bouc_cont_maxi = BLOC(condition = "ITER_CONT_TYPE=='MAXI'", + ITER_CONT_MAXI = SIMP(statut='f',typ='I',defaut = 30), + ), + ), + +# PARAMETRE GENERAL : BOUCLE DE FROTTEMENT + + b_bouc_frot = BLOC(condition = "FROTTEMENT=='COULOMB' and ((FORMULATION == 'CONTINUE') or (FORMULATION == 'XFEM')) ", + REAC_FROT =SIMP(statut='f', + typ='TXM', + defaut="AUTOMATIQUE", + into=("AUTOMATIQUE","CONTROLE",), + ), + b_automatique = BLOC(condition = "REAC_FROT == 'AUTOMATIQUE' ", + ITER_FROT_MAXI = SIMP(statut='f',typ='I',defaut=10), + RESI_FROT = SIMP(statut='f',typ='R',defaut=0.0001), + ), + b_controle = BLOC(condition = "REAC_FROT == 'CONTROLE' ", + NB_ITER_FROT = SIMP(statut='f',typ='I',defaut = 2), + ), + ), + +# PARAMETREs GENERAUX : METHODES DISCRETES + + b_para_discret = BLOC(condition = "FORMULATION == 'DISCRETE' ", +# ## METHODES DE DUALISATION ## + STOP_SINGULIER= SIMP(statut='f', + typ='TXM', + fr="Tient compte de la singularité de la matrice de contact", + defaut="OUI", + into=("OUI","NON"),), + NB_RESOL = SIMP(statut='f', + typ='I', + fr="Nombre de résolutions simultanées pour la construction du complément de Schur", + defaut=10,), +# ## GCP ## + RESI_ABSO = SIMP(statut='f', + typ='R', + fr="Critère de convergence (niveau d'interpénétration autorisé pour 'GCP')",), + REAC_ITER = SIMP(statut='f', + typ='I', + fr="Fréquence de réinitialisation de la conjugaison ('GCP')", + defaut=3,), + ITER_GCP_MAXI = SIMP(statut='f', + typ='I', + fr="Nombre d'itérations maximal ('GCP')", + defaut=0,), + PRE_COND = SIMP(statut='f', + typ='TXM', + fr="Choix d'un préconditionneur (accélère la convergence de 'GCP')", + defaut="SANS", + into=("DIRICHLET","SANS"),), + ITER_PRE_MAXI = SIMP(statut='f', + typ='I', + fr="Nombre d'itérations maximal pour le préconditionneur ('GCP')", + defaut=0,), + COEF_RESI = SIMP(statut='f', + typ='R', + fr="Critère de convergence du préconditionneur (COEF_RESI*RESI_ABSO)", + defaut = 1.,), + RECH_LINEAIRE = SIMP(statut='f', + typ='TXM', + fr="Autorisation de sortie du domaine admissible lors de la recherche linéaire", + defaut="ADMISSIBLE", + into=("ADMISSIBLE","NON_ADMISSIBLE"),), + ), + ), #fin bloc b_contact + +## AFFECTATIONS (ZONES PAR ZONES) + +# AFFECTATION - CAS LIAISON_UNILATERALE + + b_affe_unil = BLOC(condition = "FORMULATION == 'LIAISON_UNIL'", + ZONE=FACT(statut='o', + max='**', +# -- Liaison unilatérale + regles=(UN_PARMI('GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), + GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), +# + NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), + COEF_IMPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),), + COEF_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'), +# -- Incompatibilité avec CL + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + + + ), + ), #fin bloc b_affe_unil + +# AFFECTATION - CAS DISCRET + + b_affe_discret = BLOC(condition = "FORMULATION == 'DISCRETE'", + ZONE=FACT(statut='o', + max='**', +# -- Appariement + APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", + into=("NODAL","MAIT_ESCL"),), +# + regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'), + UN_PARMI('GROUP_MA_MAIT','MAILLE_MAIT'),), + GROUP_MA_MAIT =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), + MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_ESCL =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), + MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), +# + NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT", + into=("MAIT","MAIT_ESCL","ESCL"),), +# + VECT_MAIT =SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("AUTO","FIXE","VECT_Y")), + + b_nmait_fixe=BLOC(condition = "VECT_MAIT == 'FIXE'", + MAIT_FIXE =SIMP(statut='o',typ='R',min=3,max=3), + ), + + b_nmait_vecty=BLOC(condition = "VECT_MAIT == 'VECT_Y'", + MAIT_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + ), +# + VECT_ESCL =SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("AUTO","FIXE","VECT_Y")), + + b_nescl_fixe=BLOC(condition = "VECT_ESCL == 'FIXE'", + ESCL_FIXE =SIMP(statut='o',typ='R',min=3,max=3), + ), + + b_nescl_vecty=BLOC(condition = "VECT_ESCL == 'VECT_Y'", + ESCL_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + ), +# + TYPE_APPA =SIMP(statut='f',typ='TXM',defaut="PROCHE", + into =("PROCHE","FIXE")), + + b_appa_fixe =BLOC(condition = "TYPE_APPA == 'FIXE'", + DIRE_APPA =SIMP(statut='f',typ='R',min=3,max=3), + ), +# + DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + b_cara=BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'", + CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ), + ), + + DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# + TOLE_APPA =SIMP(statut='f',typ='R' ,defaut=-1.0), + TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50), +# -- Incompatibilité avec CL + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + SANS_MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SANS_GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), +# -- Mode sans calcul + RESOLUTION =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + b_verif=BLOC(condition = "RESOLUTION == 'NON' ", + TOLE_INTERP = SIMP(statut='f',typ='R',defaut = 0.), + ), +# -- Résolution + ALGO_CONT =SIMP(statut='o',typ='TXM',defaut="CONTRAINTE", + into=("CONTRAINTE","LAGRANGIEN","PENALISATION","GCP"),), + + b_active=BLOC(condition = "ALGO_CONT == 'CONTRAINTE' ", + fr="Paramètres de la méthode des contraintes actives (contact uniquement)", + GLISSIERE=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + b_glissiere=BLOC(condition = "GLISSIERE == 'OUI' ", + ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.), + ), + ), +# + b_penal_contact=BLOC(condition = "ALGO_CONT == 'PENALISATION' ", + fr="Paramètres de la méthode pénalisée (contact)", + E_N=SIMP(statut='o',typ='R'), + ), +# + b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' ", + fr="Paramètres du frottement de Coulomb", + COULOMB =SIMP(statut='o',typ='R',), + COEF_MATR_FROT=SIMP(statut='f',typ='R',defaut=0.E+0), + ALGO_FROT =SIMP(statut='o',typ='TXM',defaut="PENALISATION", + into=("PENALISATION","LAGRANGIEN"),), +# + b_penal_frot=BLOC(condition = "ALGO_FROT == 'PENALISATION' ", + fr="Paramètres de la méthode pénalisée (frottement)", + E_T=SIMP(statut='o',typ='R'), + ), + ), + ), #fin mot-clé facteur ZONE + ), #fin bloc b_affe_discret + +# AFFECTATION - CAS CONTINUE + + b_affe_continue = BLOC(condition = "FORMULATION == 'CONTINUE'", + ZONE=FACT(statut='o', + max='**', +# -- Appariement + APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", + into=("MAIT_ESCL",)), +# + regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'), + UN_PARMI('GROUP_MA_MAIT','MAILLE_MAIT'),), + GROUP_MA_MAIT =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), + MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_ESCL =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max=1), + MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), +# + NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT", + into=("MAIT","MAIT_ESCL","ESCL"),), +# + VECT_MAIT =SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("AUTO","FIXE","VECT_Y")), + + b_nmait_fixe=BLOC(condition = "VECT_MAIT == 'FIXE'", + MAIT_FIXE =SIMP(statut='o',typ='R',min=3,max=3), + ), + + b_nmait_vecty=BLOC(condition = "VECT_MAIT == 'VECT_Y'", + MAIT_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + ), +# + VECT_ESCL =SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("AUTO","FIXE","VECT_Y")), + + b_nescl_fixe=BLOC(condition = "VECT_ESCL == 'FIXE'", + ESCL_FIXE =SIMP(statut='o',typ='R',min=3,max=3), + ), + + b_nescl_vecty=BLOC(condition = "VECT_ESCL == 'VECT_Y'", + ESCL_VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + ), +# + TYPE_APPA =SIMP(statut='f',typ='TXM',defaut="PROCHE", + into =("PROCHE","FIXE")), + + b_appa_fixe=BLOC(condition = "TYPE_APPA == 'FIXE'", + DIRE_APPA =SIMP(statut='f',typ='R',min=3,max=3), + ), +# + DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")), + b_cara=BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'", + CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ), + ), + + DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# + TOLE_APPA =SIMP(statut='f',typ='R' ,defaut=-1.0), + TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50), +# -- Incompatibilité avec CL + SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'), + SANS_MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + SANS_GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'), +# + FOND_FISSURE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), + b_fond_fissure =BLOC(condition = "FOND_FISSURE == 'OUI' ", + fr="Traitement en fond de fissure", + regles=(UN_PARMI('NOEUD_FOND','GROUP_NO_FOND','MAILLE_FOND','GROUP_MA_FOND'),), + NOEUD_FOND =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO_FOND =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE_FOND =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), +# + RACCORD_LINE_QUAD=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), + b_raccord_surf =BLOC(condition = "RACCORD_LINE_QUAD == 'OUI' ", + fr="Traitement du raccord surfacique", + regles=(UN_PARMI('NOEUD_RACC','GROUP_NO_RACC'),), + NOEUD_RACC =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO_RACC =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), +# + EXCLUSION_PIV_NUL=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),), +# -- Mode sans calcul + RESOLUTION =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + b_verif=BLOC(condition = "RESOLUTION == 'NON' ", + TOLE_INTERP = SIMP(statut='f',typ='R',defaut = 0.), + ), +# -- Fonctionnalités spécifiques 'CONTINUE' + INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD", + into=("NOEUD","GAUSS","SIMPSON","NCOTES","SIMPSON1","SIMPSON2","NCOTES1","NCOTES2"),), + b_gauss =BLOC(condition = "INTEGRATION == 'GAUSS' ", + fr="Dégré du polynôme de Legendre donnant les points de Gauss", + ORDRE_INT = SIMP(statut='f',typ='I',defaut=3,min=1,max=10), + ), + b_ncotes =BLOC(condition = "INTEGRATION == 'NCOTES' ", + fr="Dégré du polynôme interpolateur", + ORDRE_INT = SIMP(statut='f',typ='I',defaut=3,min=3,max=10), + ), + b_simpson =BLOC(condition = "INTEGRATION == 'SIMPSON' ", + fr="Nombre de partitions du domaine", + ORDRE_INT = SIMP(statut='f',typ='I',defaut=1,min=1,max=4), + ), +# + CONTACT_INIT =SIMP(statut='f',typ='TXM',defaut="NON", + into=("OUI","INTERPENETRE","NON"),), +# + GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), +# + ALGO_CONT =SIMP(statut='f',typ='TXM',defaut="STANDARD", + into=("STANDARD","AVANCE","PENALISATION"),), + + b_cont_std=BLOC(condition = "ALGO_CONT == 'STANDARD' ", + fr="Paramètres de la formulation Lagrangienne", + COEF_CONT = SIMP(statut='f',typ='R',defaut=100.E+0), + ), + b_cont_avc=BLOC(condition = "ALGO_CONT == 'AVANCE' ", + fr="Paramètres du Lagrangien augmenté", + COEF_REGU_CONT=SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_STAB_CONT=SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_PENA_CONT=SIMP(statut='f',typ='R',defaut=100.E+0), + ), + b_cont_pena=BLOC(condition = "ALGO_CONT == 'PENALISATION' ", + fr="Paramètres de la méthode pénalisée", + COEF_PENA_CONT =SIMP(statut='o',typ='R'), + ), +# + COMPLIANCE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), + b_compliance=BLOC(condition = "COMPLIANCE == 'OUI' ", + fr="Paramètres de la compliance", + ASPERITE = SIMP(statut='o',typ='R',), + E_N = SIMP(statut='o',typ='R',), + E_V = SIMP(statut='f',typ='R',defaut=0.E+0), + ), +# + b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' ", + fr="Paramètres du frottement de Coulomb", + COULOMB = SIMP(statut='o',typ='R',), + SEUIL_INIT = SIMP(statut='f',typ='R',defaut=0.E+0), +# + regles=(EXCLUS('SANS_NOEUD_FR','SANS_GROUP_NO_FR'),), + SANS_NOEUD_FR =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO_FR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + b_sans_group_no_frot=BLOC(condition = " SANS_GROUP_NO_FR != None or \ + SANS_NOEUD_FR != None ", + fr="Direction de frottement à exclure (uniquement dans le cas 3D)", + DIRE_EXCL_FROT=SIMP(statut='f',typ='R',min=3,max=3), + ), + + ALGO_FROT =SIMP(statut='f',typ='TXM',defaut="STANDARD", + into=("STANDARD","AVANCE","PENALISATION"),), + b_frot_std =BLOC(condition = "ALGO_FROT == 'STANDARD' ", + fr="Paramètres de la formulation Lagrangienne", + COEF_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + ), + b_frot_avc =BLOC(condition = "ALGO_FROT == 'AVANCE' ", + fr="Paramètres du Lagrangien augmenté", + COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_STAB_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_PENA_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + ), + b_frot_pena =BLOC(condition = "ALGO_FROT == 'PENALISATION' ", + fr="Paramètres de la méthode pénalisée", + COEF_PENA_FROT =SIMP(statut='o',typ='R'), + ), +# + USURE =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","ARCHARD",),), + b_usure =BLOC(condition = "USURE == 'ARCHARD' ", + fr="Parametres de la loi d'usure d'Archard", + K =SIMP(statut='o',typ='R',), + H =SIMP(statut='o',typ='R',val_min=1E-8), + ), + + ), #fin bloc b_frottement + ), #fin mot-clé facteur ZONE + ), #fin bloc b_affe_continue + + +# AFFECTATION - CAS XFEM + + b_affe_xfem =BLOC(condition = "FORMULATION == 'XFEM'", + ZONE=FACT(statut='o', + max='**', +# -- Fissure + FISS_MAIT = SIMP(statut='o',typ=fiss_xfem,max=1), + TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50), + +# -- Fonctionnalités spécifiques 'XFEM' + INTEGRATION = SIMP(statut='f', + typ='TXM', + defaut="GAUSS", + + into=("NOEUD","GAUSS","SIMPSON","NCOTES","SIMPSON1","SIMPSON2","NCOTES1","NCOTES2"),), + b_gauss =BLOC(condition = "INTEGRATION == 'GAUSS' ", + fr="Dégré du polynôme de Legendre donnant les points de Gauss", + ORDRE_INT = SIMP(statut='f',typ='I',defaut=6,min=1,max=10), + ), + b_ncotes =BLOC(condition = "INTEGRATION == 'NCOTES' ", + fr="Dégré du polynôme interpolateur", + ORDRE_INT = SIMP(statut='f',typ='I',defaut=3,min=3,max=10), + ), + b_simpson =BLOC(condition = "INTEGRATION == 'SIMPSON' ", + fr="Nombre de partitions du domaine", + ORDRE_INT = SIMP(statut='f',typ='I',defaut=1,min=1,max=4), + ), + + RELATION = SIMP(statut='f',typ='TXM',defaut="NON", + into=("CZM_EXP_REG","CZM_LIN_REG","NON"),), + + ALGO_LAGR = SIMP(statut='f',typ='TXM',defaut="VERSION1", + into=("NON","VERSION1","VERSION2"),), + COEF_ECHELLE = SIMP(statut='f',typ='R',defaut=1.E+6), + + ALGO_CONT = SIMP(statut='f',typ='TXM',defaut="STANDARD", + into=("STANDARD","AVANCE","PENALISATION","CZM"),), + + b_cont_nczm =BLOC(condition = "ALGO_CONT!='CZM'", + CONTACT_INIT = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), + GLISSIERE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),), + ), + + b_cont_std=BLOC(condition = "ALGO_CONT == 'STANDARD'", + fr="Parametres de la formulation Lagrangienne", + COEF_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), + ), + + b_cont_avc=BLOC(condition = "ALGO_CONT == 'AVANCE' ", + fr="Parametres du Lagrangien augmenté", + COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_STAB_CONT =SIMP(statut='f',typ='R',defaut=0.E+0), + COEF_PENA_CONT =SIMP(statut='f',typ='R',defaut=0.E+0), + ), + + b_cont_pen=BLOC(condition = "ALGO_CONT == 'PENALISATION' ", + fr="Paramètre de la méthode pénalisée", + COEF_PENA_CONT =SIMP(statut='o',typ='R'), + ), + + b_frottement=BLOC(condition = "FROTTEMENT == 'COULOMB' and ALGO_CONT != 'CZM' ", + fr="Paramètres du frottement", + COULOMB =SIMP(statut='o',typ='R',), + SEUIL_INIT =SIMP(statut='f',typ='R',defaut=0.E+0), + ALGO_FROT =SIMP(statut='f',typ='TXM',defaut="STANDARD", + into=("STANDARD","AVANCE","PENALISATION"),), + + b_frot_std=BLOC(condition = "ALGO_FROT == 'STANDARD' ", + fr="Parametres de la formulation Lagrangienne", + COEF_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + ), + b_frot_avc=BLOC(condition = "ALGO_FROT == 'AVANCE' ", + fr="Parametres du Lagrangien augmenté", + COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + COEF_STAB_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), + COEF_PENA_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), + ), + b_frot_pen=BLOC(condition = "ALGO_FROT == 'PENALISATION' ", + fr="Paramètre de la méthode pénalisée", + COEF_PENA_FROT =SIMP(statut='o',typ='R'), + ), + ), #fin bloc b_frottement + ), #fin mot-clé facteur ZONE + ), #fin bloc b_affe_xfem + + ) #fin OPER +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +DEFI_COQU_MULT=OPER(nom="DEFI_COQU_MULT",op=56,sd_prod=mater_sdaster,reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + fr="Déterminer les caractéristiques matériaux homogénéisées d'une coque multicouche à partir" + +" des caractéristiques de chaque couche", + COUCHE =FACT(statut='o',max='**', + EPAIS =SIMP(statut='o',typ='R',val_min=0.E+0 ), + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + ORIENTATION =SIMP(statut='f',typ='R',defaut= 0.E+0, + val_min=-90.E+0,val_max=90.E+0 ), + ), + IMPRESSION =FACT(statut='f', + UNITE =SIMP(statut='f',typ='I',defaut=8), + ), +) ; +#& MODIF COMMANDE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +def DEFIC_prod(self,ACTION,UNITE,**args): + if ACTION == "ASSOCIER" or ACTION == "RESERVER": + if UNITE != None : + return + else : + return entier + elif ACTION == "LIBERER" : + return + else : + raise AsException("ACTION non prevue : %s" % ACTION) + +DEFI_FICHIER=MACRO(nom="DEFI_FICHIER", + op=OPS("ops.build_DEFI_FICHIER"), + sd_prod=DEFIC_prod, + reentrant='n', + UIinfo={"groupes":("Gestion du travail",)}, + fr="Ouvre ou ferme un fichier associé à un numéro d'unité logique", + + ACTION =SIMP(statut='f',typ='TXM',into=("ASSOCIER","LIBERER","RESERVER"),defaut="ASSOCIER"), + + b_associer =BLOC(condition = "ACTION == 'ASSOCIER'", + fr="Paramètres pour l'ouverture du fichier", + regles=(AU_MOINS_UN('FICHIER','UNITE'),), + UNITE =SIMP(statut='f',typ='I' ,val_min=1), + FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)), + TYPE =SIMP(statut='f',typ='TXM',into=("ASCII","BINARY","LIBRE"),defaut="ASCII"), + + b_type_ascii =BLOC(condition = "TYPE == 'ASCII'",fr="Paramètres pour le type ASCII", + ACCES =SIMP(statut='f',typ='TXM',into=("NEW","APPEND","OLD"),defaut="NEW"), + ), + b_type_autre =BLOC(condition = "TYPE != 'ASCII'",fr="Paramètres pour les types BINARY et LIBRE", + ACCES =SIMP(statut='f',typ='TXM',into=("NEW","OLD"),defaut="NEW"), + ), + ), + + b_reserver =BLOC(condition = "ACTION == 'RESERVER'", + fr="Paramètres pour la réservation de l'unité du fichier", + regles=(AU_MOINS_UN('FICHIER','UNITE'),), + UNITE =SIMP(statut='f',typ='I' ,val_min=1), + FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)), + TYPE =SIMP(statut='f',typ='TXM',into=("ASCII",),defaut="ASCII"), + ACCES =SIMP(statut='f',typ='TXM',into=("APPEND",),defaut="APPEND"), + ), + + b_liberer =BLOC(condition = "ACTION == 'LIBERER'", + fr="Paramètres pour la fermeture du fichier", + regles=(UN_PARMI('FICHIER','UNITE'),), + UNITE =SIMP(statut='f',typ='I' ,val_min=1), + FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)), + ), + + INFO =SIMP(statut='f',typ='I',into=(1,2) ), + ) +#& MODIF COMMANDE DATE 27/09/2011 AUTEUR GENIAUT S.GENIAUT +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT + +DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + fr="Définition des caratéristiques d'une fissure ou d'une interface avec X-FEM", + regles = EXCLUS('MODELE_GRILLE','FISS_GRILLE'), + +# ------------------------------------------------------------------------------------------------------------------------ +# modele sous-jacent +# ------------------------------------------------------------------------------------------------------------------------ + + MODELE =SIMP(statut='o',typ=modele_sdaster), + +# ------------------------------------------------------------------------------------------------------------------------ +# grille auxiliaire +# ------------------------------------------------------------------------------------------------------------------------ + + MODELE_GRILLE =SIMP(statut='f',typ=modele_sdaster,max=1,position='global'), + FISS_GRILLE =SIMP(statut='f',typ=fiss_xfem,max=1), + +# ------------------------------------------------------------------------------------------------------------------------ +# fissure/interface +# ------------------------------------------------------------------------------------------------------------------------ + + TYPE_DISCONTINUITE =SIMP(statut='f',typ='TXM',into=("FISSURE","INTERFACE",) ,defaut="FISSURE",position='global'), + +# ------------------------------------------------------------------------------------------------------------------------ +# caracteristiques de la fissure/interface +# ------------------------------------------------------------------------------------------------------------------------ + + DEFI_FISS =FACT(statut='o',max=1, + + regles =UN_PARMI('GROUP_MA_FISS','FONC_LN','FORM_FISS','CHAM_NO_LSN'), + +# impossible de faire des regles dans des blocs condition, dommage +# b_fissure =BLOC(condition = "TYPE_DISCONTINUITE == 'FISSURE' ",fr="Regles pour les fissures", +# regles =(ENSEMBLE('FONC_LN','FONC_LT'), +# ENSEMBLE('CHAM_NO_LSN','CHAM_NO_LST'), +# ENSEMBLE('GROUP_MA_FISS','GROUP_MA_FOND')), +# ), +# +# b_interface =BLOC(condition = "TYPE_DISCONTINUITE == 'INTERFACE' ",fr="Regles pour les interfaces", +# regles =(PRESENT_ABSENT('FONC_LN','FONC_LT'), +# PRESENT_ABSENT('CHAM_NO_LSN','CHAM_NO_LST'), +# PRESENT_ABSENT('GROUP_MA_FISS','GROUP_MA_FOND')), +# ), + + FONC_LT =SIMP(statut='f',typ=(fonction_sdaster,formule) ), + FONC_LN =SIMP(statut='f',typ=(fonction_sdaster,formule) ), + CHAM_NO_LSN =SIMP(statut='f',typ=cham_no_sdaster,min=1,max=1), + CHAM_NO_LST =SIMP(statut='f',typ=cham_no_sdaster,min=1,max=1), + GROUP_MA_FISS =SIMP(statut='f',typ=grma,min=1,max=1), + GROUP_MA_FOND =SIMP(statut='f',typ=grma,min=1,max=1), + FORM_FISS =SIMP(statut='f',typ='TXM',into=("ELLIPSE","RECTANGLE","CYLINDRE","DEMI_PLAN", + "SEGMENT","DEMI_DROITE","DROITE","ENTAILLE") ), + b_ellipse =BLOC(condition = "FORM_FISS == 'ELLIPSE' ",fr="Paramètres de la fissure/interface elliptique", + DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.), + DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.), + CENTRE =SIMP(statut='o',typ='R',min=3,max=3), + VECT_X =SIMP(statut='o',typ='R',min=3,max=3), + VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + COTE_FISS =SIMP(statut='f',typ='TXM',defaut="IN",into=("IN","OUT",) ), ), + b_rectangle =BLOC(condition = "FORM_FISS == 'RECTANGLE' ",fr="Paramètres de la fissure/interface rectangulaire", + DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.), + DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.), + RAYON_CONGE =SIMP(statut='f',typ='R',val_min=0.,defaut=0.), + CENTRE =SIMP(statut='o',typ='R',min=3,max=3), + VECT_X =SIMP(statut='o',typ='R',min=3,max=3), + VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + COTE_FISS =SIMP(statut='f',typ='TXM',defaut="IN",into=("IN","OUT",) ), ), + b_entaille =BLOC(condition = "FORM_FISS == 'ENTAILLE' ",fr="Paramètres de l'interface entaille", + DEMI_LONGUEUR =SIMP(statut='o',typ='R',val_min=0.), + RAYON_CONGE =SIMP(statut='o',typ='R',val_min=0.), + CENTRE =SIMP(statut='o',typ='R',min=3,max=3), + VECT_X =SIMP(statut='o',typ='R',min=3,max=3), + VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), ), + b_cylindre =BLOC(condition = "FORM_FISS == 'CYLINDRE' ",fr="Paramètres de la fissure cylindrique", + DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.), + DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.), + CENTRE =SIMP(statut='o',typ='R',min=3,max=3), + VECT_X =SIMP(statut='o',typ='R',min=3,max=3), + VECT_Y =SIMP(statut='o',typ='R',min=3,max=3),), + b_demiplan =BLOC(condition = "FORM_FISS == 'DEMI_PLAN' ",fr="Paramètres de la fissure plane à front droit", + PFON =SIMP(statut='o',typ='R',min=3,max=3), + NORMALE =SIMP(statut='o',typ='R',min=3,max=3), + DTAN =SIMP(statut='o',typ='R',min=3,max=3),), + b_segment =BLOC(condition = "FORM_FISS == 'SEGMENT' ",fr="Paramètres de la fissure 2D segment", + PFON_ORIG =SIMP(statut='o',typ='R',min=3,max=3), + PFON_EXTR =SIMP(statut='o',typ='R',min=3,max=3),), + b_demidroite =BLOC(condition = "FORM_FISS == 'DEMI_DROITE' ",fr="Paramètres de la fissure 2D demi-droite", + PFON =SIMP(statut='o',typ='R',min=3,max=3), + DTAN =SIMP(statut='o',typ='R',min=3,max=3),), + b_droite =BLOC(condition = "FORM_FISS == 'DROITE' ",fr="Paramètres de l'interface 2D (fissure traversante)", + POINT =SIMP(statut='o',typ='R',min=3,max=3), + DTAN =SIMP(statut='o',typ='R',min=3,max=3),), + ), + +# ------------------------------------------------------------------------------------------------------------------------ +# partie du maillage potentiellement enrichie +# ------------------------------------------------------------------------------------------------------------------------ + + GROUP_MA_ENRI =SIMP(statut='f',typ=grma,max=01), + +# ------------------------------------------------------------------------------------------------------------------------ +# types d'enrichissement +# ------------------------------------------------------------------------------------------------------------------------ + + b_enri_inte =BLOC(condition = "TYPE_DISCONTINUITE == 'INTERFACE' ", + + CHAM_DISCONTINUITE =SIMP(statut='f',typ='TXM',into=("DEPL","SIGM"),defaut="DEPL" ), + + ), + + + b_enri_fiss =BLOC(condition = "TYPE_DISCONTINUITE == 'FISSURE' ", + + CHAM_DISCONTINUITE =SIMP(statut='f',typ='TXM',into=("DEPL",),defaut="DEPL" ), + TYPE_ENRI_FOND =SIMP(statut='f',typ='TXM',into=("TOPOLOGIQUE","GEOMETRIQUE"),defaut="TOPOLOGIQUE" ), + + b_enri_geom =BLOC(condition = "TYPE_ENRI_FOND == 'GEOMETRIQUE' ",fr="Paramètres de l enrichissement geometrique", + RAYON_ENRI =SIMP(statut='f',typ='R',val_min=0.E+0), + + b_enri_couches =BLOC(condition = "(RAYON_ENRI == None) ",fr="Paramètres de l enrichissement à n couches", + NB_COUCHES =SIMP(statut='f',typ='I',defaut=4,val_min=1), + + ), + ), + ), + +# ------------------------------------------------------------------------------------------------------------------------ +# orientation du fond de fissure +# ------------------------------------------------------------------------------------------------------------------------ + + b_orie_fond =BLOC(condition = "TYPE_DISCONTINUITE == 'FISSURE' ", + + ORIE_FOND =FACT(statut='f',max=1, + PFON_INI =SIMP(statut='o',typ='R',max=3), + VECT_ORIE =SIMP(statut='o',typ='R',max=3), + POINT_ORIG =SIMP(statut='o',typ='R',max=3), + ), + + ), + +# ------------------------------------------------------------------------------------------------------------------------ +# branchement +# ------------------------------------------------------------------------------------------------------------------------ + + b_jonction =BLOC(condition = "(MODELE_GRILLE == None) and (FISS_GRILLE == None)", + JONCTION =FACT(statut='f',max=1, + FISSURE =SIMP(statut='o',typ=fiss_xfem,min=1,max='**',), + POINT =SIMP(statut='o',typ='R',max=3,), + ), + ), +# ------------------------------------------------------------------------------------------------------------------------ +# info +# ------------------------------------------------------------------------------------------------------------------------ + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,3,) ), + +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ADOBES A.ADOBES +DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, + reentrant='n',fr="Définit les caractéristiques nécessaires à l'étude dynamique d'une structure sous écoulement", + UIinfo={"groupes":("Modélisation",)}, + regles=( UN_PARMI('FAISCEAU_TRANS','GRAPPE','FAISCEAU_AXIAL','COQUE_COAX',),), + FAISCEAU_TRANS =FACT(statut='f',max='**', + regles=( ENSEMBLE('CSTE_CONNORS','NB_CONNORS','RHO_TUBE'),), + COUPLAGE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PROF_RHO_F_INT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PROF_RHO_F_EXT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + NOM_CMP =SIMP(statut='f',typ='TXM',into=("DX","DY","DZ") ), + COEF_MASS_AJOU =SIMP(statut='f',typ='R' ), + TYPE_PAS =SIMP(statut='f',typ='TXM',into=("CARRE_LIGN","TRIA_LIGN") ), + TYPE_RESEAU =SIMP(statut='f',typ='I' ), + UNITE_CD =SIMP(statut='f',typ='I',defaut=70), + UNITE_CK =SIMP(statut='f',typ='I',defaut=71), + PAS =SIMP(statut='f',typ='R' ), + CSTE_CONNORS =SIMP(statut='f',typ='R',min=2,max=2,val_min=0.E+00), + NB_CONNORS =SIMP(statut='f',typ='I',val_min=2,), + RHO_TUBE =SIMP(statut='f',typ='R' ), + ), + GRAPPE =FACT(statut='f', + regles=(ENSEMBLE('GRAPPE_2','NOEUD','CARA_ELEM','MODELE','RHO_FLUI',), + PRESENT_PRESENT('COEF_MASS_AJOU','GRAPPE_2', ),), +# peut on créer un bloc a partir de la valeur de couplage + COUPLAGE =SIMP(statut='o',typ='TXM',into=("OUI","NON") ), + GRAPPE_2 =SIMP(statut='f',typ='TXM', + into=("ASC_CEN","ASC_EXC","DES_CEN","DES_EXC") ), + NOEUD =SIMP(statut='f',typ=no), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + MODELE =SIMP(statut='f',typ=modele_sdaster ), + COEF_MASS_AJOU =SIMP(statut='f',typ='R' ), + RHO_FLUI =SIMP(statut='f',typ='R' ), + UNITE_CA =SIMP(statut='f',typ='I',defaut=70), + UNITE_KA =SIMP(statut='f',typ='I',defaut=71), + ), + FAISCEAU_AXIAL =FACT(statut='f',max='**', + regles=(UN_PARMI('GROUP_MA','TRI_GROUP_MA'), + UN_PARMI('CARA_ELEM','RAYON_TUBE'), + ENSEMBLE('RAYON_TUBE','COOR_TUBE'), + PRESENT_ABSENT('RAYON_TUBE','TRI_GROUP_MA'), + ENSEMBLE('CARA_PAROI','VALE_PAROI'), + ENSEMBLE('LONG_TYPG','LARG_TYPG','EPAI_TYPG','RUGO_TYPG','COEF_TRAI_TYPG','COEF_DPOR_TYPG', + 'COOR_GRILLE','TYPE_GRILLE', ),), +# on doit pouvoir mettre des blocs conditionnels mais pas assez d infos pour le faire + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TRI_GROUP_MA =SIMP(statut='f',typ='TXM' ), + VECT_X =SIMP(statut='f',typ='R',max=3), + PROF_RHO_FLUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + PROF_VISC_CINE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + RAYON_TUBE =SIMP(statut='f',typ='R' ), + COOR_TUBE =SIMP(statut='f',typ='R',max='**'), + PESANTEUR =SIMP(statut='f',typ='R',min=4,max=4), + RUGO_TUBE =SIMP(statut='f',typ='R' ), + CARA_PAROI =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=5, + into=("YC","ZC","R","HY","HZ") ), + VALE_PAROI =SIMP(statut='f',typ='R',max=5), + ANGL_VRIL =SIMP(statut='f',typ='R' ), + LONG_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0), + LARG_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0), + EPAI_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0), + RUGO_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0), + COEF_TRAI_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0), + COEF_DPOR_TYPG =SIMP(statut='f',typ='R',max='**'), + COOR_GRILLE =SIMP(statut='f',typ='R',max='**'), + TYPE_GRILLE =SIMP(statut='f',typ='I',max='**'), + ), + COQUE_COAX =FACT(statut='f', + MASS_AJOU =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + GROUP_MA_INT =SIMP(statut='o',typ=grma), + GROUP_MA_EXT =SIMP(statut='o',typ=grma), + VECT_X =SIMP(statut='o',typ='R',max='**'), + CARA_ELEM =SIMP(statut='o',typ=cara_elem ), + MATER_INT =SIMP(statut='o',typ=mater_sdaster ), + MATER_EXT =SIMP(statut='o',typ=mater_sdaster ), + RHO_FLUI =SIMP(statut='o',typ='R' ), + VISC_CINE =SIMP(statut='o',typ='R' ), + RUGOSITE =SIMP(statut='o',typ='R' ), + PDC_MOY_1 =SIMP(statut='o',typ='R' ), + PDC_DYN_1 =SIMP(statut='o',typ='R' ), + PDC_MOY_2 =SIMP(statut='o',typ='R' ), + PDC_DYN_2 =SIMP(statut='o',typ='R' ), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEVY S.LEVY + + +DEFI_FONC_ELEC=MACRO(nom="DEFI_FONC_ELEC", + op=OPS('Macro.defi_fonc_elec_ops.defi_fonc_elec_ops'), + sd_prod=fonction_sdaster, + reentrant='n', + UIinfo={"groupes":("Outils-métier",)}, + fr="Définir une fonction du temps intervenant dans le calcul des " \ + "forces de LAPLACE", + regles=(UN_PARMI('COUR_PRIN','COUR'), + EXCLUS('COUR','COUR_SECO'), ), + FREQ =SIMP(statut='f',typ='R',defaut= 50.), + SIGNAL =SIMP(statut='f',typ='TXM',defaut="COMPLET",into=("COMPLET","CONTINU") ), + COUR =FACT(statut='f',max='**', + fr="Définition du courant de court-circuit", + regles=(UN_PARMI('PHI_CC_1','INTC_CC_1'), + UN_PARMI('PHI_CC_2','INTC_CC_2'),), + INTE_CC_1 =SIMP(statut='o',typ='R'), + TAU_CC_1 =SIMP(statut='o',typ='R'), + PHI_CC_1 =SIMP(statut='f',typ='R'), + INTC_CC_1 =SIMP(statut='f',typ='R'), + INTE_CC_2 =SIMP(statut='o',typ='R'), + TAU_CC_2 =SIMP(statut='o',typ='R'), + PHI_CC_2 =SIMP(statut='f',typ='R'), + INTC_CC_2 =SIMP(statut='f',typ='R'), + INST_CC_INIT =SIMP(statut='o',typ='R'), + INST_CC_FIN =SIMP(statut='o',typ='R'), + ), + COUR_PRIN =FACT(statut='f', + fr="Définition du courant de court-circuit avec réenclenchement", + regles=(UN_PARMI('PHI_CC_1','INTC_CC_1'),), + INTE_CC_1 =SIMP(statut='o',typ='R'), + TAU_CC_1 =SIMP(statut='o',typ='R'), + PHI_CC_1 =SIMP(statut='f',typ='R'), + INTC_CC_1 =SIMP(statut='f',typ='R'), + INTE_RENC_1 =SIMP(statut='f',typ='R'), + TAU_RENC_1 =SIMP(statut='f',typ='R'), + PHI_RENC_1 =SIMP(statut='f',typ='R'), + INST_CC_INIT =SIMP(statut='o',typ='R'), + INST_CC_FIN =SIMP(statut='o',typ='R'), + INST_RENC_INIT =SIMP(statut='f',typ='R',defaut= 0.0E+0), + INST_RENC_FIN =SIMP(statut='f',typ='R',defaut= 0.0E+0), + ), + COUR_SECO =FACT(statut='f',max='**', + fr="Définition du courant de court-circuit avec un intervalle de temps différent de celui de COUR_PRIN", + regles=(UN_PARMI('PHI_CC_2','INTC_CC_2'),), + INTE_CC_2 =SIMP(statut='o',typ='R'), + TAU_CC_2 =SIMP(statut='o',typ='R'), + PHI_CC_2 =SIMP(statut='f',typ='R'), + INTC_CC_2 =SIMP(statut='f',typ='R'), + INTE_RENC_2 =SIMP(statut='f',typ='R'), + TAU_RENC_2 =SIMP(statut='f',typ='R'), + PHI_RENC_2 =SIMP(statut='f',typ='R'), + DIST =SIMP(statut='f',typ='R',defaut=1.0E+0), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ADOBES A.ADOBES +DEFI_FONC_FLUI=OPER(nom="DEFI_FONC_FLUI",op= 142,sd_prod=fonction_sdaster, + reentrant='n', + fr="Définit un profil de vitesse d'écoulement fluide le long d'une poutre", + UIinfo={"groupes":("Modélisation","Fonctions",)}, + MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ), + NOEUD_INIT =SIMP(statut='o',typ=no), + NOEUD_FIN =SIMP(statut='o',typ=no), + VITE =FACT(statut='o', + VALE =SIMP(statut='f',typ='R',defaut= 1. ), + PROFIL =SIMP(statut='o',typ='TXM',into=("UNIFORME","LEONARD") ), + NB_BAV =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 2 , 3 ) ), + ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN", + into=("NON","LIN","LOG") ), + PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU", + into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM' ,defaut="EXCLU", + into=("CONSTANT","LINEAIRE","EXCLU") ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +def defi_fonction_prod(VALE,VALE_PARA,VALE_C,NOEUD_PARA,ABSCISSE,**args): + if VALE != None : return fonction_sdaster + if VALE_C != None : return fonction_c + if VALE_PARA != None : return fonction_sdaster + if ABSCISSE != None : return fonction_sdaster + if NOEUD_PARA != None : return fonction_sdaster + raise AsException("type de concept resultat non prevu") + +DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod + ,fr="Définit une fonction réelle ou complexe d'une variable réelle", + reentrant='n', + UIinfo={"groupes":("Fonctions",)}, + regles=(UN_PARMI('VALE','VALE_C','VALE_PARA','NOEUD_PARA','ABSCISSE'),), + NOM_PARA =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ), + NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), + VALE =SIMP(statut='f',typ='R',min=2,max='**', + fr ="Fonction réelle définie par une liste de couples (abscisse,ordonnée)"), + ABSCISSE =SIMP(statut='f',typ='R',min=2,max='**', + fr ="Liste d abscisses d une fonction réelle"), + VALE_C =SIMP(statut='f',typ='R',min=2,max='**', + fr ="Fonction complexe définie par une liste de couples"), + VALE_PARA =SIMP(statut='f',typ=listr8_sdaster, + fr ="Fonction réelle définie par deux concepts de type listr8" ), + b_vale_para =BLOC(condition = "VALE_PARA != None", + VALE_FONC =SIMP(statut='o',typ=listr8_sdaster ), + ), + b_abscisse =BLOC(condition = "ABSCISSE != None", + ORDONNEE =SIMP(statut='o',typ='R',min=2,max='**', + fr ="Liste d ordonnées d une fonction réelle"), + ), + NOEUD_PARA =SIMP(statut='f',typ=no,max='**', + fr ="Fonction réelle définie par une liste de noeuds et un maillage"), + b_noeud_para =BLOC(condition = "NOEUD_PARA != None", + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ), + VALE_Y =SIMP(statut='o',typ='R',max='**'), + ), + + INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ), + PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + VERIF =SIMP(statut='f',typ='TXM',defaut="CROISSANT",into=("CROISSANT","NON") ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 06/09/2011 AUTEUR GENIAUT S.GENIAUT +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE + +DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS", + op=55, + sd_prod=fond_fiss, + reentrant='n', + UIinfo={"groupes":("Modélisation",)},fr="Définition de lèvres et d'un fond de fissure", + + MAILLAGE = SIMP(statut='o',typ=maillage_sdaster ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), + + # definition du fond de fissure + FOND_FISS = FACT(statut='o',max=2, + + TYPE_FOND = SIMP(statut='f',typ='TXM',into=("OUVERT","FERME","INF","SUP"),defaut="OUVERT"), + + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1 ), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1 ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + + # possibilite d'ordonnencement automatique du fond si groupe de mailles + b_grma = BLOC(condition = "(GROUP_MA != None or MAILLE != None) and TYPE_FOND != 'FERME'", + NOEUD_ORIG =SIMP(statut='f',typ=no, max=1), + GROUP_NO_ORIG =SIMP(statut='f',typ=grno,max=1), + regles=(EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),), + + # si ordo + b_ordo = BLOC(condition = "NOEUD_ORIG != None or GROUP_NO_ORIG != None", + NOEUD_EXTR = SIMP(statut='f',typ=no, max=1), + GROUP_NO_EXTR = SIMP(statut='f',typ=grno,max=1), + regles=(EXCLUS('NOEUD_EXTR','GROUP_NO_EXTR'),), + ), + ), + # possibilite d'ordonnencement automatique du fond si groupe de mailles + b_grma_ferme= BLOC(condition = "(GROUP_MA != None or MAILLE != None) and TYPE_FOND == 'FERME'", + NOEUD_ORIG =SIMP(statut='f',typ=no, max=1), + GROUP_NO_ORIG =SIMP(statut='f',typ=grno,max=1), + regles=(EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),), + + # si ordo + b_ordo_ferme = BLOC(condition = "NOEUD_ORIG != None or GROUP_NO_ORIG != None", + MAILLE_ORIG = SIMP(statut='f',typ=ma, max=1), + GROUP_MA_ORIG = SIMP(statut='f',typ=grma, max=1), + regles=(UN_PARMI('MAILLE_ORIG','GROUP_MA_ORIG'),), + ), + ), + # definition des directions des tangentes aux bords (uniquement pour les fonds non fermes) + b_dtan = BLOC(condition = "TYPE_FOND != 'FERME'", + DTAN_ORIG =SIMP(statut='f',typ='R',max='**'), + DTAN_EXTR =SIMP(statut='f',typ='R',max='**'), + VECT_GRNO_ORIG =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2), + VECT_GRNO_EXTR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2), + regles=(EXCLUS('DTAN_ORIG','VECT_GRNO_ORIG'), + EXCLUS('DTAN_EXTR','VECT_GRNO_EXTR'),), + ), + ), + + CONFIG_INIT = SIMP(statut='f',typ='TXM',into=("COLLEE","DECOLLEE"), defaut="COLLEE",position='global'), + + SYME = SIMP(statut='f',typ='TXM',into=("OUI","NON"), defaut="NON", position='global'), + +# remarque : dans le cas symetrique, il faut soit LEVRE_SUP, soit DTAN_ORIG +# mais impossible de faire une regle. + + LEVRE_SUP =FACT(statut='f',max=1, + regles=(UN_PARMI('GROUP_MA','MAILLE'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + ), + + b_levre_inf = BLOC(condition = "SYME == 'NON'", + + LEVRE_INF =FACT(statut='f',max=1, + regles=(UN_PARMI('GROUP_MA','MAILLE'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + ), + ), + + # dans le cas decolle + b_decolle = BLOC(condition = "CONFIG_INIT == 'DECOLLEE' and SYME == 'NON'", + NORMALE =SIMP(statut='o',typ='R',max=3),), + + PREC_NORM = SIMP(statut='f',typ='R',defaut=0.1), + +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# 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. +# ====================================================================== +# RESPONSABLE FLEJOU J.L.FLEJOU +# +DEFI_GEOM_FIBRE=OPER(nom="DEFI_GEOM_FIBRE",op= 119, sd_prod=gfibre_sdaster, + fr="Definition des groupes de fibres pour les elements multifibres", + reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + regles=(AU_MOINS_UN('SECTION','FIBRE'),), + + INFO =SIMP(statut='f',typ='I', defaut= 1 ,into=(1,2) ), +#============================================================================ + SECTION =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT_SECT','GROUP_MA_SECT','MAILLE_SECT'), + PRESENT_ABSENT('TOUT_SECT','GROUP_MA_SECT','MAILLE_SECT'),), + + GROUP_FIBRE =SIMP(statut='o',typ='TXM',min=1,max=1), + TOUT_SECT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_SECT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_SECT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + + MAILLAGE_SECT =SIMP(statut='o',typ=maillage_sdaster), + COOR_AXE_POUTRE =SIMP(statut='o',typ='R',min=2,max=2), + ), + + +#============================================================================ + FIBRE =FACT(statut='f',max='**', + GROUP_FIBRE =SIMP(statut='o',typ='TXM',min=1,max=1), + CARA =SIMP(statut='f',typ='TXM',defaut='SURFACE',into=('SURFACE','DIAMETRE',)), + VALE =SIMP(statut='o',typ='R',max='**'), + COOR_AXE_POUTRE =SIMP(statut='o',typ='R',min=2,max=2), + ), + + +) ; +#& MODIF COMMANDE DATE 11/01/2011 AUTEUR SFAYOLLE S.FAYOLLE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE SFAYOLLE S.FAYOLLE +DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f', + UIinfo={"groupes":("Modélisation",)}, + fr="Déterminer les caractéristiques homogenéisées du béton armé à partir des propriétés du béton et des " + +" armatures", + reuse = SIMP(statut='f',typ=mater_sdaster), + RELATION = SIMP(statut='o',typ='TXM',defaut="GLRC_DAMAGE", + into=("GLRC_DM","GLRC_DAMAGE"),), + + b_glrc_dm=BLOC(condition = "RELATION == 'GLRC_DM'", + fr="Paramètres de la loi GLRC_DM", + BETON = FACT(statut='o',max=1, + MATER = SIMP(statut='o',typ=(mater_sdaster),), + EPAIS = SIMP(statut='o',typ='R',val_min=0.E+0 ),), + NAPPE = FACT(statut='o',max=1, + MATER = SIMP(statut='o',typ=(mater_sdaster),), + OMY = SIMP(statut='o',typ='R',val_min=0.E+0,), + OMX = SIMP(statut='o',typ='R',val_min=0.E+0,), + RY = SIMP(statut='o',typ='R',val_min=-1.0E+0,val_max=1.0E+0,), + RX = SIMP(statut='o',typ='R',val_min=-1.0E+0,val_max=1.0E+0),), + RHO = SIMP(statut='f',typ='R',val_min=0.E+0,), + AMOR_ALPHA = SIMP(statut='f',typ='R',val_min=0.E+0,), + AMOR_BETA = SIMP(statut='f',typ='R',val_min=0.E+0,), + COMPR = SIMP(statut='o',typ='TXM',defaut="GAMMA", + into=("GAMMA","SEUIL")), + b_gamma=BLOC(condition = "COMPR == 'GAMMA'", + fr="Paramètre d'endommagement en compression ", + GC = SIMP(statut='o',typ='R',defaut=1.0E+0,val_min=0.0E+0, val_max=1.0E+0),), + b_seuil=BLOC(condition = "COMPR == 'SEUIL'", + fr="Seuil d'endommagement en compression ", + SYC = SIMP(statut='o',typ='R'),), + PENTE = SIMP(statut='o',typ='TXM',defaut="RIGI_ACIER", + into=("PLAS_ACIER","UTIL","RIGI_ACIER")), + b_util = BLOC(condition = "PENTE == 'UTIL'", + fr="Valeur de la déformation maximale de l'élément", + EPSI_MEMB = SIMP(statut='o',typ='R',defaut=0.E+0), + EPSI_FLEX = SIMP(statut='o',typ='R',defaut=0.E+0),), + CISAIL = SIMP(statut='o',typ='TXM',defaut="NON", + into=("OUI","NON"),), + METHODE_ENDO = SIMP(statut='o',typ='TXM',defaut="ENDO_INTER", + into=("ENDO_NAISS","ENDO_LIM","ENDO_INTER"),), + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2),), + ), + b_glrc_damage=BLOC(condition = "RELATION == 'GLRC_DAMAGE'", + fr="Paramètres de la loi GLRC_DAMAGE", + BETON =FACT(statut='o',max=1, + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + EPAIS =SIMP(statut='o',typ='R',val_min=0.E+0 ), + GAMMA =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), + QP1 =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), + QP2 =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=1.E+0), + + C1N1 =SIMP(statut='o',typ='R',val_min=0.E+0), + C1N2 =SIMP(statut='o',typ='R',val_min=0.E+0), + C1N3 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2N1 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2N2 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2N3 =SIMP(statut='o',typ='R',val_min=0.E+0), + C1M1 =SIMP(statut='o',typ='R',val_min=0.E+0), + C1M2 =SIMP(statut='o',typ='R',val_min=0.E+0), + C1M3 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2M1 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2M2 =SIMP(statut='o',typ='R',val_min=0.E+0), + C2M3 =SIMP(statut='o',typ='R',val_min=0.E+0), + + OMT =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), + EAT =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), + BT1 =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), + BT2 =SIMP(statut='f',typ='R',val_min=0.E+0,defaut=0.0E+0), + + MP1X =SIMP(statut='f',typ=('R',listr8_sdaster)), + MP2X =SIMP(statut='f',typ=('R',listr8_sdaster)), + MP1Y =SIMP(statut='f',typ=('R',listr8_sdaster)), + MP2Y =SIMP(statut='f',typ=('R',listr8_sdaster)), + ), + NAPPE =FACT(statut='o',max=10, + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + OMX =SIMP(statut='o',typ='R',val_min=0.E+0), + OMY =SIMP(statut='o',typ='R',val_min=0.E+0), + RX =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + RY =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + ), + CABLE_PREC =FACT(statut='f',max=1, + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + OMX =SIMP(statut='o',typ='R',val_min=0.E+0), + OMY =SIMP(statut='o',typ='R',val_min=0.E+0), + RX =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + RY =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + PREX =SIMP(statut='o',typ='R'), + PREY =SIMP(statut='o',typ='R'), + ), + LINER =FACT(statut='f',max=10, + MATER =SIMP(statut='o',typ=(mater_sdaster) ), + OML =SIMP(statut='o',typ='R',val_min=0.E+0), + RLR =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2),), + ), +) ; +#& MODIF COMMANDE DATE 08/03/2011 AUTEUR MASSIN P.MASSIN +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT +DEFI_GRILLE=OPER(nom="DEFI_GRILLE",op=82,sd_prod=grille_sdaster,reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + fr="Définition d'une grille", + + MAILLAGE = SIMP(statut='o',typ=maillage_sdaster), + + INFO = SIMP(statut='f',typ='I',defaut= 0,into=(0,1,2) ), +) ; +#& MODIF COMMANDE DATE 01/03/2011 AUTEUR GENIAUT S.GENIAUT +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +def defi_group_prod(MAILLAGE,**args): + if AsType(MAILLAGE) == maillage_sdaster : return maillage_sdaster + if AsType(MAILLAGE) == squelette : return squelette + raise AsException("type de concept resultat non prevu") + +DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, + fr="Définition de nouveaux groupes de noeuds et/ou de mailles dans un concept maillage", + reentrant='o', + UIinfo={"groupes":("Maillage",)}, + regles=(AU_MOINS_UN('CREA_GROUP_MA','CREA_GROUP_NO','DETR_GROUP_NO','DETR_GROUP_MA'),), + MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster,squelette) ), + DETR_GROUP_MA =FACT(statut='f',max='**', + NOM =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),), + DETR_GROUP_NO =FACT(statut='f',max='**', + NOM =SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**'),), + + + CREA_GROUP_MA =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','INTERSEC','UNION','DIFFE','OPTION'),), + NOM =SIMP(statut='o',typ=grma), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + INTERSEC =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + UNION =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + DIFFE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TYPE_MAILLE =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","1D","2D","3D"),max=1 ), + + OPTION =SIMP(statut='f',typ='TXM',into=("FACE_NORMALE","SPHERE","CYLINDRE", + "BANDE","APPUI_LACHE","APPUI","FISS_XFEM") ), + b_group_ma =BLOC(condition = "GROUP_MA != None", + regles=(EXCLUS('POSITION','NUME_INIT'),), + NUME_INIT =SIMP(statut='f',typ='I'), + POSITION =SIMP(statut='f',typ='TXM',into=("INIT","FIN","MILIEU") ), + b_nume_init =BLOC(condition = "NUME_INIT != None", + NUME_FIN =SIMP(statut='f',typ='I' ), + ), + ), + b_face_normale =BLOC(condition = "OPTION == 'FACE_NORMALE'", + regles=(UN_PARMI('ANGL_NAUT','VECT_NORMALE'),), + ANGL_NAUT =SIMP(statut='f',typ='R',max=2), + VECT_NORMALE =SIMP(statut='f',typ='R',max=3), + ANGL_PREC =SIMP(statut='f',typ='R',defaut= 0.5 ), + VERI_SIGNE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + b_sphere =BLOC(condition = "OPTION == 'SPHERE'", + regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),), + POINT =SIMP(statut='f',typ='R',max=3), + NOEUD_CENTRE =SIMP(statut='f',typ=no), + GROUP_NO_CENTRE =SIMP(statut='f',typ=grno), + RAYON =SIMP(statut='o',typ='R' ), + CRIT_NOEUD = SIMP(statut='f',typ='TXM',defaut="AU_MOINS_UN", + into=("TOUS","AU_MOINS_UN","MAJORITE"),), + ), + b_cylindre =BLOC(condition = "OPTION == 'CYLINDRE'", + regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'), + UN_PARMI('ANGL_NAUT','VECT_NORMALE'),), + POINT =SIMP(statut='f',typ='R',max=3), + NOEUD_CENTRE =SIMP(statut='f',typ=no), + GROUP_NO_CENTRE =SIMP(statut='f',typ=grno), + RAYON =SIMP(statut='o',typ='R' ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=2), + VECT_NORMALE =SIMP(statut='f',typ='R',max=3), + CRIT_NOEUD = SIMP(statut='f',typ='TXM',defaut="AU_MOINS_UN", + into=("TOUS","AU_MOINS_UN","MAJORITE"),), + ), + b_bande =BLOC(condition = "OPTION == 'BANDE'", + regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'), + UN_PARMI('ANGL_NAUT','VECT_NORMALE'),), + POINT =SIMP(statut='f',typ='R' ,max=3), + NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1), + GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1), + DIST =SIMP(statut='o',typ='R' ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=2), + VECT_NORMALE =SIMP(statut='f',typ='R',max=3), + CRIT_NOEUD = SIMP(statut='f',typ='TXM',defaut="AU_MOINS_UN", + into=("TOUS","AU_MOINS_UN","MAJORITE"),), + ), + b_app_lache =BLOC(condition = "OPTION == 'APPUI_LACHE'", + regles=(UN_PARMI('NOEUD','GROUP_NO'),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), + b_appui =BLOC(condition = "OPTION == 'APPUI'", + regles=(UN_PARMI('NOEUD','GROUP_NO'),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + TYPE_APPUI =SIMP(statut='o',typ='TXM',max=1, into=('AU_MOINS_UN','TOUT','SOMMET','MAJORITE')), + ), + b_fiss_xfem =BLOC(condition = "OPTION == 'FISS_XFEM'", + TYPE_GROUP =SIMP(statut='o',typ='TXM',max=1,defaut='XFEM', + into=('HEAVISIDE','CRACKTIP','MIXTE','FISSUREE','XFEM',),), + FISSURE =SIMP(statut='o',typ=fiss_xfem,min=1,max='**'), + ), + ), + + + CREA_GROUP_NO =FACT(statut='f',max='**', + OPTION =SIMP(statut='f',typ='TXM',into=("ENV_SPHERE","ENV_CYLINDRE","PLAN", + "SEGM_DROI_ORDO","NOEUD_ORDO","TUNNEL","INCLUSION","FISS_XFEM") ), + + b_option =BLOC(condition = "OPTION == None" , + regles=(UN_PARMI('TOUT_GROUP_MA','GROUP_MA','GROUP_NO','NOEUD', + 'INTERSEC','UNION','DIFFE'),), + TOUT_GROUP_MA =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + INTERSEC =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + UNION =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + DIFFE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + + b_nom_group_ma =BLOC(condition = "GROUP_MA != None", + NOM = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + CRIT_NOEUD = SIMP(statut='f',typ='TXM',defaut="TOUS", + into=("TOUS","SOMMET","MILIEU","CENTRE"),), + ), + b_group_no =BLOC(condition = "GROUP_NO != None", + regles=(EXCLUS('POSITION','NUME_INIT'),), + NUME_INIT =SIMP(statut='f',typ='I'), + POSITION =SIMP(statut='f',typ='TXM',into=("INIT","FIN","MILIEU") ), + b_nume_init =BLOC(condition = "NUME_INIT != None", + NUME_FIN =SIMP(statut='f',typ='I' ), + ), + ), + b_nom =BLOC(condition = "GROUP_MA == None and TOUT_GROUP_MA == None" , + NOM =SIMP(statut='o',typ=geom), + ), + ), + + b_env_sphere =BLOC(condition = "OPTION == 'ENV_SPHERE'", + regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),), + NOM =SIMP(statut='o',typ=geom), + POINT =SIMP(statut='f',typ='R' ,max=3), + NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1), + GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1), + RAYON =SIMP(statut='o',typ='R' ), + PRECISION =SIMP(statut='o',typ='R' ), + ), + b_env_cylindre =BLOC(condition = "OPTION == 'ENV_CYLINDRE'", + regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'), + UN_PARMI('ANGL_NAUT','VECT_NORMALE'),), + NOM =SIMP(statut='o',typ=geom), + POINT =SIMP(statut='f',typ='R' ,max=3), + NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1), + GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1), + RAYON =SIMP(statut='o',typ='R' ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + VECT_NORMALE =SIMP(statut='f',typ='R',max=3), + PRECISION =SIMP(statut='o',typ='R' ), + ), + b_env_plan =BLOC(condition = "OPTION == 'PLAN'", + regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'), + UN_PARMI('ANGL_NAUT','VECT_NORMALE'),), + NOM =SIMP(statut='o',typ=geom), + POINT =SIMP(statut='f',typ='R' ,max=3), + NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1), + GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1), + ANGL_NAUT =SIMP(statut='f',typ='R' ,max=3), + VECT_NORMALE =SIMP(statut='f',typ='R' ,max=3), + PRECISION =SIMP(statut='o',typ='R' ), + ), + b_segm_droi_ordo=BLOC(condition = "OPTION == 'SEGM_DROI_ORDO'", + regles=(AU_MOINS_UN('NOEUD','GROUP_NO'), + UN_PARMI('NOEUD_ORIG','GROUP_NO_ORIG'), + UN_PARMI('NOEUD_EXTR','GROUP_NO_EXTR'),), + NOM =SIMP(statut='o',typ=geom), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_ORIG =SIMP(statut='f',typ=no), + GROUP_NO_ORIG =SIMP(statut='f',typ=grno), + NOEUD_EXTR =SIMP(statut='f',typ=no), + GROUP_NO_EXTR =SIMP(statut='f',typ=grno), + PRECISION =SIMP(statut='o',typ='R' ), + CRITERE =SIMP(statut='o',typ='TXM',into=("ABSOLU","RELATIF") ), + ), + b_noeud_ordo =BLOC(condition = "OPTION == 'NOEUD_ORDO'", + regles=(EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'), + EXCLUS('NOEUD_EXTR','GROUP_NO_EXTR'),), + NOM =SIMP(statut='o',typ=geom), + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + NOEUD_ORIG =SIMP(statut='f',typ=no), + GROUP_NO_ORIG =SIMP(statut='f',typ=grno), + NOEUD_EXTR =SIMP(statut='f',typ=no), + GROUP_NO_EXTR =SIMP(statut='f',typ=grno), + ), + b_tunnel =BLOC(condition = "OPTION == 'TUNNEL'", + regles=(AU_MOINS_UN ('TOUT','GROUP_MA','MAILLE'), + EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'), + AU_MOINS_UN ('GROUP_MA_AXE','MAILLE_AXE'),), + NOM =SIMP(statut='o',typ=geom), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_AXE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_AXE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD_ORIG =SIMP(statut='f',typ=no), + GROUP_NO_ORIG =SIMP(statut='f',typ=grno), + RAYON =SIMP(statut='o',typ='R'), + LONGUEUR =SIMP(statut='f',typ='R'), + ), + b_inclusion =BLOC(condition = "OPTION == 'INCLUSION'", + fr="""crée le groupe des noeuds des mailles de GROUP_MA inclus géométriquement + dans les mailles de GROUP_MA_INCL""", + NOM =SIMP(statut='o',typ=geom), + CAS_FIGURE =SIMP(statut='o',typ='TXM',into=("2D","3D","2.5D",)), + DISTANCE_MAX =SIMP(statut='f',typ='R',), + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + GROUP_MA_INCL =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + MAILLAGE_INCL =SIMP(statut='f',typ=maillage_sdaster), + ), + b_fiss_xfem =BLOC(condition = "OPTION == 'FISS_XFEM'", + NOM =SIMP(statut='o',typ=geom), + TYPE_GROUP =SIMP(statut='o',typ='TXM',max=1,into=('HEAVISIDE','CRACKTIP','MIXTE','XFEM',)), + FISSURE =SIMP(statut='o',typ=fiss_xfem,min=1,max='**'), + ), + ), + ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + INFO =SIMP(statut='f',typ='I',into=( 1 , 2 ) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER + +DEFI_INTE_SPEC=MACRO(nom="DEFI_INTE_SPEC", + op=OPS('Macro.defi_inte_spec_ops.defi_inte_spec_ops'), + sd_prod=table_fonction, + reentrant='n', + fr="Définit une matrice interspectrale", + UIinfo={"groupes":("Fonctions",)}, + + DIMENSION =SIMP(statut='f',typ='I',defaut= 1 ), + + PAR_FONCTION =FACT(statut='f',max='**', + NUME_ORDRE_I =SIMP(statut='o',typ='I' ), + NUME_ORDRE_J =SIMP(statut='o',typ='I' ), + FONCTION =SIMP(statut='o',typ=fonction_c ), + ), + KANAI_TAJIMI =FACT(statut='f',max='**', + regles=(EXCLUS('VALE_R','VALE_C'),), + NUME_ORDRE_I =SIMP(statut='o',typ='I' ), + NUME_ORDRE_J =SIMP(statut='o',typ='I' ), + FREQ_MIN =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + FREQ_MAX =SIMP(statut='f',typ='R',defaut= 100. ), + PAS =SIMP(statut='f',typ='R',defaut= 1. ), + AMOR_REDUIT =SIMP(statut='f',typ='R',defaut= 0.6 ), + FREQ_MOY =SIMP(statut='f',typ='R',defaut= 5. ), + VALE_R =SIMP(statut='f',typ='R' ), + VALE_C =SIMP(statut='f',typ='C' ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ), + PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + ), + CONSTANT =FACT(statut='f',max='**', + regles=(EXCLUS('VALE_R','VALE_C'),), + NUME_ORDRE_I =SIMP(statut='o',typ='I' ), + NUME_ORDRE_J =SIMP(statut='o',typ='I' ), + FREQ_MIN =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + FREQ_MAX =SIMP(statut='f',typ='R',defaut= 100. ), + PAS =SIMP(statut='f',typ='R',defaut= 1. ), + VALE_R =SIMP(statut='f',typ='R' ), + VALE_C =SIMP(statut='f',typ='C' ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ), + PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE CORUS M.CORUS + +DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op= 98,sd_prod=interf_dyna_clas, + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)}, + fr="Définir les interfaces d'une structure et leur affecter un type", + NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ), + INTERFACE =FACT(statut='o',max='**', + regles=(ENSEMBLE('NOM','TYPE'), +# erreur doc U sur la condition qui suit + UN_PARMI('NOEUD','GROUP_NO'),), + NOM =SIMP(statut='f',typ='TXM' ), + TYPE =SIMP(statut='f',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO","AUCUN") ), + NOEUD =SIMP(statut='f',typ=no,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), +# DDL_ACTIF =SIMP(statut='f',typ='TXM',max='**'), + MASQUE =SIMP(statut='f',typ='TXM',max='**'), + ), + FREQ =SIMP(statut='f',typ='R',defaut= 1.), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis_sdaster, + fr="Définir une liste d'entiers strictement croissante", + reentrant='n', + UIinfo={"groupes":("Fonctions",)}, + + OPERATION =SIMP(statut='o',typ='TXM',defaut='DEFI',into=('DEFI','NUME_ORDRE',)), + + + # définition d'une liste d'entiers + #---------------------------------- + b_defi =BLOC(condition = "OPERATION == 'DEFI'", + regles=(UN_PARMI('VALE','DEBUT'), + EXCLUS('VALE','INTERVALLE'),), + VALE =SIMP(statut='f',typ='I',max='**'), + DEBUT =SIMP(statut='f',typ='I'), + INTERVALLE =FACT(statut='f',max='**', + regles=(UN_PARMI('NOMBRE','PAS'),), + JUSQU_A =SIMP(statut='o',typ='I'), + NOMBRE =SIMP(statut='f',typ='I',val_min=1,), + PAS =SIMP(statut='f',typ='I',val_min=1,), + ), + ), + + + # extraction d'une liste de nume_ordre dans une sd_resultat : + #------------------------------------------------------------ + b_extr =BLOC(condition = "OPERATION == 'NUME_ORDRE'", + RESULTAT =SIMP(statut='o',typ=resultat_sdaster), + PARAMETRE =SIMP(statut='o',typ='TXM',), + INTERV_R =SIMP(statut='o',typ='R',min=2,max=2), + ), + + + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 10/10/2011 AUTEUR GENIAUT S.GENIAUT +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT + + + +# Bloc pour decoupe automatique +bloc_auto =BLOC(fr = "Subdivision de type automatique", + condition = "SUBD_METHODE == 'AUTO'", + SUBD_PAS_MINI = SIMP(fr = "Pas de temps en dessous duquel on ne subdivise plus", + statut = 'f', + typ = 'R', + val_min = 0.0, + max = 1, + defaut = 0., + ), + ) + +# Bloc pour decoupe manuel +bloc_manu =BLOC(fr = "Subdivision de type manuel", + condition = "SUBD_METHODE == 'MANUEL'", + regles = (AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),), + SUBD_PAS = SIMP(fr = "Nombre de subdivision d'un pas de temps", + statut = 'f', + typ = 'I', + val_min = 2, + max = 1, + defaut = 4, + ), + SUBD_NIVEAU = SIMP(fr = "Nombre maximum de niveau de subdivision d'un pas de temps", + statut = 'f', + typ = 'I', + val_min = 2, + max = 1, + defaut = 3, + ), + SUBD_PAS_MINI = SIMP(fr = "Pas de temps en dessous duquel on ne subdivise plus", + statut = 'f', + typ = 'R', + val_min = 0.0, + max = 1, + defaut = 0., + ), + ) + +# Bloc pour decoupe du pas de temps +bloc_deco =BLOC(fr = "Action de decoupe du pas temps", + condition = "ACTION == 'DECOUPE' or ACTION == 'AUTRE_PILOTAGE'", + SUBD_METHODE = SIMP(fr = "Méthode de subdivision des pas de temps en cas de divergence", + statut = 'f', + typ = 'TXM', + max = 1, + into = ("MANUEL","AUTO"), + defaut = "MANUEL", + ), + b_deco_manu = bloc_manu, + b_deco_auto = bloc_auto, + ) + + +# Bloc pour decoupe du pas de temps - special pour collision +bloc_deco2 =BLOC(fr = "Action de decoupe du pas temps", + condition = "ACTION == 'DECOUPE'", + SUBD_METHODE = SIMP(fr = "Méthode de subdivision des pas de temps en cas de collision", + statut = 'f', + typ = 'TXM', + max = 1, + into = ("MANUEL","AUTO"), + defaut = "AUTO", + ), + + PREC_COLLISION = SIMP(fr = "Parametre de decoupe fine du pas de temps", + statut = 'o', + typ = 'R', + val_min = 0.0, + max = 1, + ), + b_deco_manu = bloc_manu, + b_deco_auto = bloc_auto, + ) + +# Bloc pour extrapolation du nombre d'iterations de Newton +bloc_supp =BLOC(fr = "Action d'extrapolation du nombre d'iterations de Newton", + condition = "ACTION == 'ITER_SUPPL'", + PCENT_ITER_PLUS = SIMP(fr = "Pourcentage d'itérations autorisées en plus", + statut = 'f', + typ = 'I', + val_min = 20, + max = 1, + defaut = 50, + ), + SUBD_METHODE = SIMP(fr = "Méthode de subdivision des pas de temps en cas de divergence", + statut = 'f', + typ = 'TXM', + max = 1, + into = ("MANUEL","AUTO"), + defaut = "MANUEL", + ), + b_deco_manu = bloc_manu, + b_deco_auto = bloc_auto, + ) + +# Bloc pour adaptation du coefficient de penalisation +bloc_pene =BLOC(fr = "Action d' adaptation du coefficient de penalisation", + condition = "ACTION == 'ADAPT_COEF_PENA'", + COEF_MAXI = SIMP(fr = "Coefficient multiplicateur maximum du coefficient de penalisation", + statut = 'f', + typ = 'R', + val_min = 1., + max = 1, + defaut = 1E12, + ), + ) + +DEFI_LIST_INST = OPER(nom="DEFI_LIST_INST",op= 28,sd_prod=list_inst,reentrant='n', + UIinfo={"groupes":("Fonctions",)}, + fr="Définition de la gestion de la liste d'instants", + +# ---------------------------------------------------------------------------------------------------------------------------------- +# mot-cle pour la definition a priori de la liste d'instant +# ---------------------------------------------------------------------------------------------------------------------------------- + +DEFI_LIST =FACT(fr = "Definition a priori de la liste d'instants", + statut = 'o', + max = 1, + METHODE = SIMP(fr = "Methode de definition de la liste d'instants", + statut = 'o', + typ = 'TXM', + max = 1, + position = 'global', + into = ("MANUEL","AUTO",), + defaut = "MANUEL", + ), + b_manuel = BLOC(fr = "Liste d'instants donnée par l'utilisateur", + condition = "METHODE == 'MANUEL' ", + regles=(UN_PARMI('LIST_INST','VALE',),), + VALE = SIMP(statut = 'f', + typ = 'R', + max = '**'), + LIST_INST = SIMP(statut = 'f', + typ = listr8_sdaster, + ), + ), + b_auto = BLOC(fr = "Gestion automatique de la liste d'instants", + condition = "(METHODE == 'AUTO') ", + regles=(UN_PARMI('LIST_INST','VALE',),), + VALE = SIMP(statut = 'f', + typ = 'R', + max = '**'), + LIST_INST = SIMP(statut = 'f', + typ = listr8_sdaster, + ), + PAS_MINI = SIMP(statut = 'f', + typ = 'R', + max = 1, + val_min = 1.e-12, + ), + PAS_MAXI = SIMP(statut = 'f', + typ = 'R', + max = 1, + ), + NB_PAS_MAXI = SIMP(statut = 'f', + typ = 'I', + max = 1, + val_max = 1000000, + defaut = 1000000, + ), + ), + ), +# ---------------------------------------------------------------------------------------------------------------------------------- +# mot-cle pour le comportement en cas d'echec (on doit recommencer le meme instant) +# ---------------------------------------------------------------------------------------------------------------------------------- + +ECHEC =FACT(fr = "Comportement en cas d'echec", + statut = 'd', + max = '**', + EVENEMENT = SIMP(fr = "Type de l'evenement", + statut = 'f', + typ = 'TXM', + max = 1, + into = ("ERREUR","DELTA_GRANDEUR","COLLISION","INTERPENETRATION"), + defaut = "ERREUR", + ), + b_erreur = BLOC(fr = "Event: erreur ou iter_maxi", + condition = "EVENEMENT == 'ERREUR' ", + ACTION = SIMP(fr = "Actions possibles", + statut = 'f', + max = 1, + typ = 'TXM', + into = ("ARRET","DECOUPE","ITER_SUPPL", + "AUTRE_PILOTAGE"), + defaut = "DECOUPE", + ), + b_deco = bloc_deco, + b_supp = bloc_supp, + ), + b_edelta = BLOC(fr = "Event: l'increment d'une composante d'un champ depasse le seuil", + condition = "EVENEMENT == 'DELTA_GRANDEUR' ", + VALE_REF = SIMP(fr = "Valeur du seuil", + statut = 'o', + typ = 'R', + max = 1, + ), + NOM_CHAM = SIMP(fr = "Nom du champ", + statut = 'o', + typ = 'TXM', + max = 1, + into = ("DEPL","VARI_ELGA","SIEF_ELGA",), + ), + NOM_CMP = SIMP(fr = "Nom de la composante", + statut = 'o', + typ = 'TXM', + max = 1, + ), + ACTION = SIMP(fr = "Actions possibles", + statut = 'f', + max = 1, + typ = 'TXM', + into = ("ARRET","DECOUPE",), + defaut = "DECOUPE", + ), + b_deco = bloc_deco, + ), + b_colli = BLOC(fr = "Event: collision", + condition = "EVENEMENT == 'COLLISION' ", + ACTION = SIMP(fr = "Actions possibles", + statut = 'f', + max = 1, + typ = 'TXM', + into = ("ARRET","DECOUPE",), + defaut = "DECOUPE", + ), + b_deco2 = bloc_deco2, + ), + b_penetration = BLOC(fr = "Event: interpenetration des surfaces en contact", + condition = "EVENEMENT == 'INTERPENETRATION' ", + PENE_MAXI = SIMP(fr = "Valeur maxi de l'interpenetration", + statut = 'o', + typ = 'R', + max = 1, + ), + + + ACTION = SIMP(fr = "Actions possibles", + statut = 'f', + max = 1, + typ = 'TXM', + into = ("ARRET","ADAPT_COEF_PENA",), + defaut = "ADAPT_COEF_PENA", + ), + b_pene = bloc_pene, + ), + + ), + +# ---------------------------------------------------------------------------------------------------------------------------------- +# Mot-cle pour le comportement en cas de succes (on a bien converge) +# ---------------------------------------------------------------------------------------------------------------------------------- + +b_adap = BLOC(condition="METHODE == 'AUTO'", + +ADAPTATION =FACT(fr = "Parametres de l'evenement declencheur de l'adaptation du pas de temps", + statut = 'd', + max = '**', + EVENEMENT = SIMP(fr = "Nom de l'evenement declencheur de l'adaptation", + statut = 'f', + max = 1, + typ = 'TXM', + into = ("SEUIL","TOUT_INST","AUCUN"), + defaut = "SEUIL", + ), + b_adap_seuil = BLOC(fr = "Seuil d'adaptation", + condition = "EVENEMENT == 'SEUIL' ", + regles = (PRESENT_PRESENT('NB_INCR_SEUIL','NOM_PARA',), + PRESENT_PRESENT('NB_INCR_SEUIL','CRIT_COMP',), + PRESENT_PRESENT('NB_INCR_SEUIL','CRIT_COMP',),), + NB_INCR_SEUIL = SIMP(statut = 'f', + typ = 'I', + defaut = 2, + ), + NOM_PARA = SIMP(statut = 'f', + typ = 'TXM', + into = ("NB_ITER_NEWTON",), + defaut = "NB_ITER_NEWTON", + ), + CRIT_COMP = SIMP(statut = 'f', + typ = 'TXM', + into = ("LT","GT","LE","GE"), + defaut = "LE", + ), + b_vale_I = BLOC(fr = "Valeur entiere", + condition = "NOM_PARA == 'NB_ITER_NEWTON' ", + VALE_I = SIMP(statut='f',typ='I',), + ), + ), + + +# +# Parametres du mode de calcul de dt+ +# dans le cas FIXE :(deltaT+) = (deltaT-)x(1+PCENT_AUGM/100) +# dans le cas DELTA_GRANDEUR : (deltaT+) = (deltaT-)x(VALREF/deltaVAL) : l'acceleration est inversement proportionnelle +# a la variation de la grandeur +# dans le cas ITER_NEWTON : (deltaT+) = (deltaT-) x sqrt(VALREF/N) : l'acceleration est inversement proportionnelle +# au nombre d'iterations de Newton precedent + + MODE_CALCUL_TPLUS = SIMP(fr = "Parametres du mode de calcul de dt+", + statut = 'f', + max = 1, + typ = 'TXM', + into = ("FIXE","DELTA_GRANDEUR","ITER_NEWTON","IMPLEX"), + defaut = 'FIXE', + ), + + b_mfixe = BLOC(fr = "Mode de calcul de dt+: fixe", + condition = "MODE_CALCUL_TPLUS == 'FIXE' ", + PCENT_AUGM = SIMP(statut = 'f', + max = 1, + typ = 'R', + defaut = 100., + val_min = -100., + ), + ), + b_mdelta = BLOC(fr = "Mode de calcul de dt+: increment d'une grandeur", + condition = "MODE_CALCUL_TPLUS == 'DELTA_GRANDEUR' ", + VALE_REF = SIMP(statut = 'o', + max = 1, + typ = 'R', + ), + NOM_CHAM = SIMP(statut = 'o', + max = 1, + typ = 'TXM', + into = ("DEPL","VARI_ELGA","SIEF_ELGA",), + ), + NOM_CMP = SIMP(statut = 'o', + max = 1, + typ = 'TXM',), + ), + b_mitnew = BLOC(fr = "Mode de calcul de dt+: nb iterations de Newton", + condition = "MODE_CALCUL_TPLUS == 'ITER_NEWTON' ", + NB_ITER_NEWTON_REF= SIMP(statut = 'o', + max = 1, + typ = 'I', + ), + ), + +# les schemas pre-definis : +# abaqus : +# EVENEMENT ='SEUIL' +# NB_INCR_SEUIL = 2 +# NOM_PARA ='NB_ITER_NEWTON' +# CRIT_COMP ='LE' +# VALE_I = 5 +# MODE_CALCUL_TPLUS ='FIXE' +# PCENT_AUGM = 50. +# Zebulon 1 : +# EVENEMENT ='TOUT_INST' +# MODE_CALCUL_TPLUS ='DELTA_GRANDEUR' +# VALE_REF = valref +# NOM_CHAM ='VARI_ELGA' +# NOM_CMP ='V1' +# Zebulon 2 : +# EVENEMENT ='TOUT_INST' +# MODE_CALCUL_TPLUS ='ITER_NEWTON' +# NB_ITER_NEWTON_REF= nc +# Tough2 : +# EVENEMENT ='SEUIL' +# NB_INCR_SEUIL = 1 +# NOM_PARA ='NB_ITER_NEWTON' +# CRIT_COMP ='LE' +# VALE_I = n +# MODE_CALCUL_TPLUS ='FIXE' +# PCENT_AUGM = 100. +# Oliver : +# EVENEMENT ='TOUT_INST' +# MODE_CALCUL_TPLUS ='FORMULE' +# NOM_SCHEMA ='OLIVER' + + ), + ), +# b_adaplex = BLOC(condition = "METHODE == 'AUTO' and MODE_CALCUL_TPLUS == 'IMPLEX'", +# +# ADAPTATION =FACT(statut='d',max='**', +# +# 1 parametres de l'evenement declencheur +# ---------------------------------------- +# +# EVENEMENT =SIMP(statut='f',typ='TXM',into=("TOUT_INST",),defaut="TOUT_INST",max=1 ), +# +# +# 2 parametre du mode de calcul de dt+ +# ---------------------------------------- +# +# MODE_CALCUL_TPLUS =SIMP(statut='f',typ='TXM',into=("IMPLEX",),defaut='IMPLEX',max=1,position='global' ), +# +# ), +# ), + +# ---------------------------------------------------------------------------------------------------------------------------------- + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), + +) ; + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8_sdaster, + fr="Définir une liste de réels strictement croissante", + reentrant='n', + UIinfo={"groupes":("Fonctions",)}, + regles=(UN_PARMI('VALE','DEBUT',), + EXCLUS('VALE','INTERVALLE'), + ENSEMBLE('DEBUT','INTERVALLE')), + VALE =SIMP(statut='f',typ='R',max='**'), + DEBUT =SIMP(statut='f',typ='R'), + INTERVALLE =FACT(statut='f',max='**', + regles=(UN_PARMI('NOMBRE','PAS'),), + JUSQU_A =SIMP(statut='o',typ='R'), + NOMBRE =SIMP(statut='f',typ='I'), + PAS =SIMP(statut='f',typ='R'), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage_sdaster, + fr="Définition d'un nouveau maillage à partir de macro-éléments", + reentrant='n', + UIinfo={"groupes":("Maillage",)}, + DEFI_SUPER_MAILLE =FACT(statut='o',max='**', + MACR_ELEM =SIMP(statut='o',typ=(macr_elem_stat,macr_elem_dyna),max='**' ), + SUPER_MAILLE =SIMP(statut='f',typ=ma,max='**'), + TRAN =SIMP(statut='f',typ='R',max=3), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + b_angl_naut =BLOC(condition = "ANGL_NAUT != None", + CENTRE =SIMP(statut='f',typ='R',max=3), + ), + ), + RECO_GLOBAL =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','SUPER_MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + SUPER_MAILLE =SIMP(statut='f',typ=ma,max='**'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + ), + RECO_SUPER_MAILLE =FACT(statut='f',max='**', + SUPER_MAILLE =SIMP(statut='o',typ=ma,max='**'), + GROUP_NO =SIMP(statut='o',typ=grno,max='**'), + OPTION =SIMP(statut='f',typ='TXM',defaut="GEOMETRIQUE",into=("GEOMETRIQUE","NOEUD_A_NOEUD","INVERSE") ), + geometrique =BLOC(condition = "OPTION == 'GEOMETRIQUE'", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + ), + ), + DEFI_NOEUD =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','NOEUD_INIT'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), + fr="Renommage de tous les noeuds" ), + NOEUD_INIT =SIMP(statut='f',typ=no, + fr="Renommage d un seul noeud"), + b_tout =BLOC(condition = "TOUT != None", + PREFIXE =SIMP(statut='f',typ='TXM' ), + INDEX =SIMP(statut='o',typ='I',max='**'), + ), + b_noeud_init =BLOC(condition = "NOEUD_INIT != None", + SUPER_MAILLE =SIMP(statut='o',typ=ma), + NOEUD_FIN =SIMP(statut='o',typ=no), + ), + ), + DEFI_GROUP_NO =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','SUPER_MAILLE'), + AU_MOINS_UN('INDEX','GROUP_NO_FIN'), + ENSEMBLE('GROUP_NO_INIT','GROUP_NO_FIN'),), +# la regle ancien catalogue AU_MOINS_UN__: ( INDEX , GROUP_NO_FIN ) incoherente avec doc U + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), + fr="Création de plusieurs groupes de noeuds" ), + SUPER_MAILLE =SIMP(statut='f',typ=ma, + fr="Création de plusieurs groupes de noeuds"), + GROUP_NO_INIT =SIMP(statut='f',typ=grno, + fr="Création d un seul groupe de noeuds"), + PREFIXE =SIMP(statut='f',typ='TXM' ), + INDEX =SIMP(statut='f',typ='I',max='**'), + GROUP_NO_FIN =SIMP(statut='f',typ=grno), + ), +) ; +#& MODIF COMMANDE DATE 10/10/2011 AUTEUR PROIX J-M.PROIX +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, + fr="Définition des paramètres décrivant le comportement d un matériau", + reentrant='f', + UIinfo={"groupes":("Modélisation",)}, + regles=(EXCLUS('ELAS','ELAS_FO','ELAS_FLUI','ELAS_ISTR','ELAS_ISTR_FO','ELAS_ORTH', + 'ELAS_ORTH_FO','ELAS_COQUE','ELAS_COQUE_FO', + 'ELAS_HYPER','ELAS_2NDG',), + EXCLUS('THER','THER_FO','THER_ORTH','THER_NL'), + EXCLUS('ECRO_LINE','ECRO_LINE_FO','ECRO_PUIS','ECRO_COOK',), + EXCLUS('ENDO_HETEROGENE'), + EXCLUS('TAHERI','TAHERI_FO'), + EXCLUS('ROUSSELIER','ROUSSELIER_FO'), + EXCLUS('VISC_SINH','VISC_SINH_FO'), + PRESENT_PRESENT('ROUSSELIER','TRACTION'), + PRESENT_PRESENT('ROUSSELIER_FO','TRACTION'), + EXCLUS('CIN1_CHAB','CIN1_CHAB_FO'), + EXCLUS('CIN2_CHAB','CIN2_CHAB_FO'), + EXCLUS('VISCOCHAB','VISCOCHAB_FO'), + EXCLUS('LEMAITRE','LEMAITRE_FO','VISC_IRRA_LOG', + 'LEMA_SEUIL','LEMA_SEUIL_FO','LEMAITRE_IRRA','LMARC_IRRA',), + EXCLUS('META_LEMA_ANI','META_LEMA_ANI_FO'), + EXCLUS('VMIS_POUTRE','VMIS_POUTRE_FO'), + EXCLUS('VENDOCHAB','VENDOCHAB_FO'), + EXCLUS('VISC_ENDO','VISC_ENDO_FO'), + PRESENT_PRESENT('BPEL_ACIER','ELAS'), + EXCLUS('RCCM','RCCM_FO'), + EXCLUS('WEIBULL','WEIBULL_FO'), + PRESENT_PRESENT('LAIGLE','ELAS'), + PRESENT_PRESENT('LETK','ELAS'), + PRESENT_PRESENT('DRUCK_PRAGER','ELAS'), + PRESENT_PRESENT('VISC_DRUC_PRAG','ELAS'), + PRESENT_PRESENT('ELAS_GONF','ELAS'), + PRESENT_PRESENT('HOEK_BROWN','ELAS'), + EXCLUS('MAZARS','MAZARS_FO'), + PRESENT_PRESENT('JOINT_BA','ELAS'), + PRESENT_PRESENT('CABLE','ELAS'), + ), + MATER =SIMP(statut='f',typ=mater_sdaster), +# +# comportement élastique +# + ELAS =FACT(statut='f', + E =SIMP(statut='o',typ='R',val_min=0.E+0), + NU =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=0.5E+0), + RHO =SIMP(statut='f',typ='R'), + ALPHA =SIMP(statut='f',typ='R'), + AMOR_ALPHA =SIMP(statut='f',typ='R'), + AMOR_BETA =SIMP(statut='f',typ='R'), + AMOR_HYST =SIMP(statut='f',typ='R'), + ), + ELAS_FO =FACT(statut='f', + regles=(PRESENT_PRESENT('ALPHA','TEMP_DEF_ALPHA'),), + E =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + NU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + RHO =SIMP(statut='f',typ='R'), + TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.), + ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + AMOR_ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + AMOR_BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + AMOR_HYST =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + K_DESSIC =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + B_ENDOGE =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + FONC_DESORP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ELAS_FLUI =FACT(statut='f', + E =SIMP(statut='o',typ='R'), + NU =SIMP(statut='o',typ='R'), + RHO =SIMP(statut='o',typ='R'), + PROF_RHO_F_INT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + PROF_RHO_F_EXT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COEF_MASS_AJOU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ELAS_ISTR =FACT(statut='f', + E_L =SIMP(statut='o',typ='R'), + E_N =SIMP(statut='o',typ='R'), + NU_LT =SIMP(statut='o',typ='R'), + NU_LN =SIMP(statut='o',typ='R'), + G_LN =SIMP(statut='o',typ='R'), + RHO =SIMP(statut='f',typ='R'), + ALPHA_L =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ALPHA_N =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + ELAS_ISTR_FO =FACT(statut='f', + regles=( + PRESENT_PRESENT('ALPHA_L','TEMP_DEF_ALPHA'), + PRESENT_PRESENT('ALPHA_N','TEMP_DEF_ALPHA'), + ), + E_L =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + E_N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + NU_LT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + NU_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + RHO =SIMP(statut='f',typ='R'), + TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.), + ALPHA_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ALPHA_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ELAS_ORTH =FACT(statut='f', + E_L =SIMP(statut='o',typ='R'), + E_T =SIMP(statut='o',typ='R'), + E_N =SIMP(statut='f',typ='R'), + NU_LT =SIMP(statut='o',typ='R'), + NU_LN =SIMP(statut='f',typ='R'), + NU_TN =SIMP(statut='f',typ='R'), + G_LT =SIMP(statut='o',typ='R'), + G_LN =SIMP(statut='f',typ='R'), + G_TN =SIMP(statut='f',typ='R'), + RHO =SIMP(statut='f',typ='R'), + ALPHA_L =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ALPHA_T =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ALPHA_N =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + XT =SIMP(statut='f',typ='R',defaut= 1. ), + XC =SIMP(statut='f',typ='R',defaut= 1. ), + YT =SIMP(statut='f',typ='R',defaut= 1. ), + YC =SIMP(statut='f',typ='R',defaut= 1. ), + S_LT =SIMP(statut='f',typ='R',defaut= 1. ), + AMOR_ALPHA =SIMP(statut='f',typ='R'), + AMOR_BETA =SIMP(statut='f',typ='R'), + AMOR_HYST =SIMP(statut='f',typ='R'), + ), + ELAS_ORTH_FO =FACT(statut='f', + regles=( + PRESENT_PRESENT('ALPHA_L','TEMP_DEF_ALPHA'), + PRESENT_PRESENT('ALPHA_N','TEMP_DEF_ALPHA'), + PRESENT_PRESENT('ALPHA_T','TEMP_DEF_ALPHA'), + ), + E_L =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + E_T =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + E_N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + NU_LT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + NU_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + NU_TN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G_LT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G_TN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + RHO =SIMP(statut='f',typ='R'), + TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'), + PRECISION =SIMP(statut='f',typ='R',defaut= 1. ), + ALPHA_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ALPHA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ALPHA_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + AMOR_ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + AMOR_BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + AMOR_HYST =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ELAS_HYPER =FACT(statut='f', + regles=(UN_PARMI('K','NU'),), + C10 =SIMP(statut='o',typ='R', + fr="Si C10 est le seul coefficient fourni, alors le matériau est Néo-Hookéen."), + C01 =SIMP(statut='f',typ='R',defaut=0.0, + fr="Si l'on fournit C01 en plus de C10, on obtient un matériau de type Mooney-Rivlin."), + C20 =SIMP(statut='f',typ='R',defaut=0.0, + fr="Si l'on fournit C20 en plus de C10 et C01, on obtient un matériau de type Signorini."), + K =SIMP(statut='f',typ='R',fr="Module de compressibilité."), + NU =SIMP(statut='f',typ='R',val_min=-1.E+0,val_max=0.5E+0,fr="Coefficient de Poisson."), + RHO =SIMP(statut='f',typ='R',defaut=0.0,fr="Masse volumique."), + ), + ELAS_COQUE =FACT(statut='f', + regles=(EXCLUS('MEMB_L','M_LLLL',), + PRESENT_PRESENT('MEMB_L','MEMB_LT', 'MEMB_T','MEMB_G_LT','FLEX_L','FLEX_LT', + 'FLEX_T','FLEX_G_LT','CISA_L','CISA_T',), + PRESENT_PRESENT('M_LLLL','M_LLTT','M_LLLT','M_TTTT','M_TTLT','M_LTLT','F_LLLL', + 'F_LLTT','F_LLLT','F_TTTT','F_TTLT','F_LTLT','MF_LLLL', + 'MF_LLTT','MF_LLLT','MF_TTTT','MF_TTLT','MF_LTLT','MC_LLLZ', + 'MC_LLTZ','MC_TTLZ','MC_TTTZ','MC_LTLZ','MC_LTTZ','FC_LLLZ', + 'FC_LLTZ','FC_TTLZ','FC_TTTZ','FC_LTLZ','FC_LTTZ','C_LZLZ', + 'C_LZTZ','C_TZTZ'),), + MEMB_L =SIMP(statut='f',typ='R'), + MEMB_LT =SIMP(statut='f',typ='R'), + MEMB_T =SIMP(statut='f',typ='R'), + MEMB_G_LT =SIMP(statut='f',typ='R'), + FLEX_L =SIMP(statut='f',typ='R'), + FLEX_LT =SIMP(statut='f',typ='R'), + FLEX_T =SIMP(statut='f',typ='R'), + FLEX_G_LT =SIMP(statut='f',typ='R'), + CISA_L =SIMP(statut='f',typ='R'), + CISA_T =SIMP(statut='f',typ='R'), + M_LLLL =SIMP(statut='f',typ='R'), + M_LLTT =SIMP(statut='f',typ='R'), + M_LLLT =SIMP(statut='f',typ='R'), + M_TTTT =SIMP(statut='f',typ='R'), + M_TTLT =SIMP(statut='f',typ='R'), + M_LTLT =SIMP(statut='f',typ='R'), + F_LLLL =SIMP(statut='f',typ='R'), + F_LLTT =SIMP(statut='f',typ='R'), + F_LLLT =SIMP(statut='f',typ='R'), + F_TTTT =SIMP(statut='f',typ='R'), + F_TTLT =SIMP(statut='f',typ='R'), + F_LTLT =SIMP(statut='f',typ='R'), + MF_LLLL =SIMP(statut='f',typ='R'), + MF_LLTT =SIMP(statut='f',typ='R'), + MF_LLLT =SIMP(statut='f',typ='R'), + MF_TTTT =SIMP(statut='f',typ='R'), + MF_TTLT =SIMP(statut='f',typ='R'), + MF_LTLT =SIMP(statut='f',typ='R'), + MC_LLLZ =SIMP(statut='f',typ='R'), + MC_LLTZ =SIMP(statut='f',typ='R'), + MC_TTLZ =SIMP(statut='f',typ='R'), + MC_TTTZ =SIMP(statut='f',typ='R'), + MC_LTLZ =SIMP(statut='f',typ='R'), + MC_LTTZ =SIMP(statut='f',typ='R'), + FC_LLLZ =SIMP(statut='f',typ='R'), + FC_LLTZ =SIMP(statut='f',typ='R'), + FC_TTLZ =SIMP(statut='f',typ='R'), + FC_TTTZ =SIMP(statut='f',typ='R'), + FC_LTLZ =SIMP(statut='f',typ='R'), + FC_LTTZ =SIMP(statut='f',typ='R'), + C_LZLZ =SIMP(statut='f',typ='R'), + C_LZTZ =SIMP(statut='f',typ='R'), + C_TZTZ =SIMP(statut='f',typ='R'), + RHO =SIMP(statut='f',typ='R'), + ALPHA =SIMP(statut='f',typ='R'), + ), + ELAS_COQUE_FO =FACT(statut='f', + regles=(EXCLUS('MEMB_L','M_LLLL',), + PRESENT_PRESENT('MEMB_L','MEMB_LT','MEMB_T','MEMB_G_LT','FLEX_L','FLEX_LT', + 'FLEX_T','FLEX_G_LT','CISA_L','CISA_T',), + PRESENT_PRESENT('M_LLLL','M_LLTT','M_LLLT','M_TTTT','M_TTLT','M_LTLT','F_LLLL', + 'F_LLTT','F_LLLT','F_TTTT','F_TTLT','F_LTLT','MF_LLLL','MF_LLTT', + 'MF_LLLT','MF_TTTT','MF_TTLT','MF_LTLT','MC_LLLZ','MC_LLTZ', + 'MC_TTLZ','MC_TTTZ','MC_LTLZ','MC_LTTZ','FC_LLLZ','FC_LLTZ', + 'FC_TTLZ','FC_TTTZ','FC_LTLZ','FC_LTTZ','C_LZLZ','C_LZTZ','C_TZTZ'),), + MEMB_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MEMB_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MEMB_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MEMB_G_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FLEX_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FLEX_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FLEX_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FLEX_G_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + CISA_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + CISA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + M_LLLL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + M_LLTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + M_LLLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + M_TTTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + M_TTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + M_LTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_LLLL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_LLTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_LLLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_TTTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_TTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_LTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MF_LLLL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MF_LLTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MF_LLLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MF_TTTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MF_TTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MF_LTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MC_LLLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MC_LLTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MC_TTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MC_TTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MC_LTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MC_LTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FC_LLLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FC_LLTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FC_TTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FC_TTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FC_LTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FC_LTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_LZLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_LZTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_TZTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + RHO =SIMP(statut='f',typ='R'), + ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ELAS_2NDG =FACT(statut='f', + A1 =SIMP(statut='o',typ='R'), + A2 =SIMP(statut='f',typ='R'), + A3 =SIMP(statut='f',typ='R'), + A4 =SIMP(statut='f',typ='R'), + A5 =SIMP(statut='f',typ='R'), + ), + CABLE =FACT(statut='f', + EC_SUR_E =SIMP(statut='f',typ='R',defaut= 1.E-4 ), + ), +# +# comportement mécanique non linéaire +# + TRACTION =FACT(statut='f', + SIGM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ECRO_LINE =FACT(statut='f', + D_SIGM_EPSI =SIMP(statut='o',typ='R',), + SY =SIMP(statut='o',typ='R',), + ), + ENDO_HETEROGENE =FACT(statut='f', + WEIBULL =SIMP(statut='o',typ='R',), + SY =SIMP(statut='o',typ='R',), + KI =SIMP(statut='o',typ='R',), + EPAI =SIMP(statut='o',typ='R',), + GR =SIMP(statut='f',typ='R',defaut= 1.0), + ), + ECRO_LINE_FO =FACT(statut='f', + D_SIGM_EPSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ECRO_PUIS =FACT(statut='f', + SY =SIMP(statut='o',typ='R',), + A_PUIS =SIMP(statut='o',typ='R',val_min=0.0), + N_PUIS =SIMP(statut='o',typ='R',val_min=1.E-6), + ), + ECRO_PUIS_FO =FACT(statut='f', + SY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_PUIS =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + N_PUIS =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ECRO_COOK =FACT(statut='f', + regles=(PRESENT_PRESENT('C','EPSP0'), + PRESENT_PRESENT('TROOM','TMELT','M_PUIS'),), + A =SIMP(statut='o',typ='R',val_min=0.0), + B =SIMP(statut='o',typ='R',val_min=0.0), + C =SIMP(statut='f',typ='R',val_min=0.0), + N_PUIS =SIMP(statut='o',typ='R',val_min=0.0), + M_PUIS =SIMP(statut='f',typ='R',val_min=0.0), + EPSP0 =SIMP(statut='f',typ='R',val_min=1.E-6), + TROOM =SIMP(statut='f',typ='R',val_min=0.0), + TMELT =SIMP(statut='f',typ='R',val_min=0.0), + ), + BETON_ECRO_LINE =FACT(statut='f', + D_SIGM_EPSI =SIMP(statut='o',typ='R'), + SYT =SIMP(statut='o',typ='R'), + SYC =SIMP(statut='f',typ='R'), + ), + BETON_REGLE_PR =FACT(statut='f', + D_SIGM_EPSI =SIMP(statut='o',typ='R'), + SYT =SIMP(statut='o',typ='R'), + SYC =SIMP(statut='f',typ='R'), + EPSC =SIMP(statut='f',typ='R'), + N =SIMP(statut='f',typ='R'), + ), + ENDO_ORTH_BETON =FACT(statut='f', + ALPHA =SIMP(statut='f',typ='R',defaut=0.9), + K0 =SIMP(statut='o',typ='R'), + K1 =SIMP(statut='o',typ='R'), + K2 =SIMP(statut='f',typ='R',defaut=7.E-4), + ECROB =SIMP(statut='o',typ='R'), + ECROD =SIMP(statut='o',typ='R'), + ), + PRAGER =FACT(statut='f', + C =SIMP(statut='o',typ='R'), + ), + PRAGER_FO =FACT(statut='f', + C =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ECRO_FLEJOU =FACT(statut='f', + EP =SIMP(statut='o',typ='R'), + SY =SIMP(statut='o',typ='R'), + SU =SIMP(statut='o',typ='R'), + PUISS =SIMP(statut='o',typ='R'), + ), + TAHERI =FACT(statut='f', + R_0 =SIMP(statut='o',typ='R'), + ALPHA =SIMP(statut='o',typ='R'), + M =SIMP(statut='o',typ='R'), + A =SIMP(statut='o',typ='R'), + B =SIMP(statut='o',typ='R'), + C1 =SIMP(statut='o',typ='R'), + C_INF =SIMP(statut='o',typ='R'), + S =SIMP(statut='o',typ='R'), + ), + TAHERI_FO =FACT(statut='f', + R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ALPHA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + A =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_INF =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ROUSSELIER =FACT(statut='f', + D =SIMP(statut='o',typ='R'), + SIGM_1 =SIMP(statut='o',typ='R'), + PORO_INIT =SIMP(statut='o',typ='R'), + PORO_CRIT =SIMP(statut='f',typ='R',defaut= 1. ), + PORO_ACCE =SIMP(statut='f',typ='R',defaut= 1. ), + PORO_LIMI =SIMP(statut='f',typ='R',defaut= 0.999 ), + D_SIGM_EPSI_NORM=SIMP(statut='f',typ='R',defaut= 1. ), + AN =SIMP(statut='f',typ='R',defaut= 0. ), + DP_MAXI =SIMP(statut='f',typ='R',defaut= 0.1), + BETA =SIMP(statut='f',typ='R',defaut=0.85), + ), + ROUSSELIER_FO =FACT(statut='f', + D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + PORO_INIT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + PORO_CRIT =SIMP(statut='f',typ='R',defaut= 1. ), + PORO_ACCE =SIMP(statut='f',typ='R',defaut= 1. ), + PORO_LIMI =SIMP(statut='f',typ='R',defaut= 0.999 ), + D_SIGM_EPSI_NORM=SIMP(statut='f',typ='R',defaut= 1. ), + AN =SIMP(statut='f',typ='R',defaut= 0. ), + DP_MAXI =SIMP(statut='f',typ='R',defaut= 0.1), + BETA =SIMP(statut='f',typ='R',defaut=0.85), + ), + VISC_SINH =FACT(statut='f', + SIGM_0 =SIMP(statut='o',typ='R'), + EPSI_0 =SIMP(statut='o',typ='R'), + M =SIMP(statut='o',typ='R'), + ), + VISC_SINH_FO =FACT(statut='f', + SIGM_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + EPSI_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + CIN1_CHAB =FACT(statut='f', + R_0 =SIMP(statut='o',typ='R'), + R_I =SIMP(statut='f',typ='R'), + B =SIMP(statut='f',typ='R',defaut= 0.0E+0), + C_I =SIMP(statut='o',typ='R'), + K =SIMP(statut='f',typ='R',defaut= 1.0E+0), + W =SIMP(statut='f',typ='R',defaut= 0.0E+0), + G_0 =SIMP(statut='o',typ='R'), + A_I =SIMP(statut='f',typ='R',defaut= 1.0E+0), + ), + CIN1_CHAB_FO =FACT(statut='f', + R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + R_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + W =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + CIN2_CHAB =FACT(statut='f', + R_0 =SIMP(statut='o',typ='R'), + R_I =SIMP(statut='f',typ='R'), + B =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + C1_I =SIMP(statut='o',typ='R'), + C2_I =SIMP(statut='o',typ='R'), + K =SIMP(statut='f',typ='R',defaut= 1.), + W =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + G1_0 =SIMP(statut='o',typ='R'), + G2_0 =SIMP(statut='o',typ='R'), + A_I =SIMP(statut='f',typ='R',defaut= 1.E+0 ), + ), + CIN2_CHAB_FO =FACT(statut='f', + R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + R_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C1_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C2_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + W =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G1_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G2_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + MEMO_ECRO =FACT(statut='f', + MU =SIMP(statut='o',typ='R'), + Q_M =SIMP(statut='o',typ='R'), + Q_0 =SIMP(statut='o',typ='R'), + ETA =SIMP(statut='f',typ='R',defaut= 0.5E+0 ), + ), + MEMO_ECRO_FO =FACT(statut='f', + MU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + Q_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + Q_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ETA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + VISCOCHAB =FACT(statut='f', + K_0 =SIMP(statut='o',typ='R'), + A_K =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + A_R =SIMP(statut='f',typ='R',defaut= 1.E+0 ), + K =SIMP(statut='o',typ='R'), + N =SIMP(statut='o',typ='R'), + ALP =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + B =SIMP(statut='f',typ='R'), + M_R =SIMP(statut='f',typ='R',defaut= 1.E+0 ), + G_R =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + MU =SIMP(statut='o',typ='R',defaut= 0.E+0 ), + Q_M =SIMP(statut='o',typ='R'), + Q_0 =SIMP(statut='o',typ='R'), + QR_0 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ETA =SIMP(statut='f',typ='R',defaut= 0.5E+0 ), + C1 =SIMP(statut='o',typ='R'), + M_1 =SIMP(statut='f',typ='R',defaut= 1.E+0 ), + D1 =SIMP(statut='f',typ='R',defaut= 1.E+0 ), + G_X1 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + G1_0 =SIMP(statut='o',typ='R'), + C2 =SIMP(statut='o',typ='R'), + M_2 =SIMP(statut='f',typ='R',defaut= 1.E+0 ), + D2 =SIMP(statut='f',typ='R',defaut= 1.E+0 ), + G_X2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + G2_0 =SIMP(statut='o',typ='R'), + A_I =SIMP(statut='f',typ='R',defaut= 1.E+0 ), + ), + VISCOCHAB_FO =FACT(statut='f', + K_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_R =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ALP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + M_R =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G_R =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + MU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + Q_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + Q_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + QR_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ETA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + M_1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G_X1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G1_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + M_2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G_X2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + G2_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + LEMAITRE =FACT(statut='f', + N =SIMP(statut='o',typ='R'), + UN_SUR_K =SIMP(statut='o',typ='R'), + UN_SUR_M =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + LEMAITRE_IRRA =FACT(statut='f', + N =SIMP(statut='o',typ='R'), + UN_SUR_K =SIMP(statut='o',typ='R'), + UN_SUR_M =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + QSR_K =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + BETA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + PHI_ZERO =SIMP(statut='f',typ='R',defaut= 1.E+20), + L =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + GRAN_A =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + GRAN_B =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + GRAN_S =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + LMARC_IRRA =FACT(statut='f', + DE_0 =SIMP(statut='o',typ='R'), + R_0 =SIMP(statut='o',typ='R'), + N =SIMP(statut='o',typ='R'), + K =SIMP(statut='o',typ='R'), + Y_I =SIMP(statut='o',typ='R'), + Y_0 =SIMP(statut='o',typ='R'), + B =SIMP(statut='o',typ='R'), + A_0 =SIMP(statut='o',typ='R'), + RM =SIMP(statut='o',typ='R'), + M =SIMP(statut='o',typ='R'), + P =SIMP(statut='o',typ='R'), + P1 =SIMP(statut='o',typ='R'), + P2 =SIMP(statut='o',typ='R'), + M11 =SIMP(statut='o',typ='R'), + M22 =SIMP(statut='o',typ='R'), + M33 =SIMP(statut='o',typ='R'), + M66 =SIMP(statut='o',typ='R'), + N11 =SIMP(statut='o',typ='R'), + N22 =SIMP(statut='o',typ='R'), + N33 =SIMP(statut='o',typ='R'), + N66 =SIMP(statut='o',typ='R'), + Q11 =SIMP(statut='o',typ='R'), + Q22 =SIMP(statut='o',typ='R'), + Q33 =SIMP(statut='o',typ='R'), + Q66 =SIMP(statut='o',typ='R'), + R11 =SIMP(statut='o',typ='R'), + R22 =SIMP(statut='o',typ='R'), + R33 =SIMP(statut='o',typ='R'), + R66 =SIMP(statut='o',typ='R'), + GRAN_A =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + GRAN_B =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + GRAN_S =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + VISC_IRRA_LOG =FACT(statut='f', + A =SIMP(statut='f',typ='R',defaut= 1.28E-1), + B =SIMP(statut='f',typ='R',defaut= 0.01159), + CSTE_TPS =SIMP(statut='f',typ='R',defaut= 0.3540), + ENER_ACT =SIMP(statut='f',typ='R',defaut= 5000.), + FLUX_PHI =SIMP(statut='o',typ='R',), + ), + GRAN_IRRA_LOG =FACT(statut='f', + A =SIMP(statut='f',typ='R',defaut= 1.28E-1), + B =SIMP(statut='f',typ='R',defaut= 0.01159), + CSTE_TPS =SIMP(statut='f',typ='R',defaut= 0.3540), + ENER_ACT =SIMP(statut='f',typ='R',defaut= 5000.), + FLUX_PHI =SIMP(statut='o',typ='R',), + GRAN_A =SIMP(statut='f',typ='R',defaut= 0.E+0), + GRAN_B =SIMP(statut='f',typ='R',defaut= 0.E+0), + GRAN_S =SIMP(statut='f',typ='R',defaut= 0.E+0), + ), + LEMA_SEUIL =FACT(statut='f', + A =SIMP(statut='o',typ='R',), + S =SIMP(statut='o',typ='R',), + ), + LEMA_SEUIL_FO=FACT(statut='f', + A =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + IRRAD3M=FACT(statut='f', + R02 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + EPSI_U =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + RM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + AI0 =SIMP(statut='o',typ='R',val_min=0.0), + ZETA_F =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ETAI_S =SIMP(statut='o',typ='R',val_min=0.0), + RG0 =SIMP(statut='o',typ='R',val_min=0.0), + ALPHA =SIMP(statut='o',typ='R',val_min=0.0), + PHI0 =SIMP(statut='o',typ='R',val_min=0.0), + KAPPA =SIMP(statut='f',typ='R',val_min=0.0,defaut=0.8,val_max=1.0), + ZETA_G =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + TOLER_ET =SIMP(statut='f',typ='R',val_min=0.0,defaut=0.15 ), + ), + LEMAITRE_FO =FACT(statut='f', + N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + UN_SUR_K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + UN_SUR_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + META_LEMA_ANI =FACT(statut='f', + F1_A =SIMP(statut='o',typ='R'), + F2_A =SIMP(statut='o',typ='R'), + C_A =SIMP(statut='o',typ='R'), + F1_M =SIMP(statut='o',typ='R'), + F2_M =SIMP(statut='o',typ='R'), + C_M =SIMP(statut='o',typ='R'), + F1_N =SIMP(statut='o',typ='R'), + F2_N =SIMP(statut='o',typ='R'), + C_N =SIMP(statut='o',typ='R'), + F1_Q =SIMP(statut='o',typ='R'), + F2_Q =SIMP(statut='o',typ='R'), + C_Q =SIMP(statut='o',typ='R'), + F_MRR_RR =SIMP(statut='o',typ='R'), + C_MRR_RR =SIMP(statut='o',typ='R'), + F_MTT_TT =SIMP(statut='o',typ='R'), + C_MTT_TT =SIMP(statut='o',typ='R'), + F_MZZ_ZZ =SIMP(statut='o',typ='R'), + C_MZZ_ZZ =SIMP(statut='o',typ='R'), + F_MRT_RT =SIMP(statut='o',typ='R'), + C_MRT_RT =SIMP(statut='o',typ='R'), + F_MRZ_RZ =SIMP(statut='o',typ='R'), + C_MRZ_RZ =SIMP(statut='o',typ='R'), + F_MTZ_TZ =SIMP(statut='o',typ='R'), + C_MTZ_TZ =SIMP(statut='o',typ='R'), + ), + META_LEMA_ANI_FO =FACT(statut='f', + F1_A =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_A =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_A =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F1_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F1_N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F1_Q =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_Q =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_Q =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_MRR_RR =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_MRR_RR =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_MTT_TT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_MTT_TT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_MZZ_ZZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_MZZ_ZZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_MRT_RT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_MRT_RT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_MRZ_RZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_MRZ_RZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_MTZ_TZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_MTZ_TZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + VMIS_POUTRE =FACT(statut='f', + NP =SIMP(statut='o',typ='R'), + MEY =SIMP(statut='o',typ='R'), + MPY =SIMP(statut='o',typ='R'), + CAY =SIMP(statut='o',typ='R'), + CBY =SIMP(statut='o',typ='R'), + MEZ =SIMP(statut='o',typ='R'), + MPZ =SIMP(statut='o',typ='R'), + CAZ =SIMP(statut='o',typ='R'), + CBZ =SIMP(statut='o',typ='R'), + MPX =SIMP(statut='o',typ='R'), + ), + VMIS_POUTRE_FO =FACT(statut='f', + NP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + MEY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + MPY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + CAY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + CBY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + MEZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + MPZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + CAZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + CBZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + MPX =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ARME =FACT(statut='f', + KYE =SIMP(statut='o',typ='R'), + DLE =SIMP(statut='o',typ='R'), + KYP =SIMP(statut='o',typ='R'), + DLP =SIMP(statut='o',typ='R'), + KYG =SIMP(statut='o',typ='R'), + ), + ASSE_CORN =FACT(statut='f', + NU_1 =SIMP(statut='o',typ='R'), + MU_1 =SIMP(statut='o',typ='R'), + DXU_1 =SIMP(statut='o',typ='R'), + DRYU_1 =SIMP(statut='o',typ='R'), + C_1 =SIMP(statut='o',typ='R'), + NU_2 =SIMP(statut='o',typ='R'), + MU_2 =SIMP(statut='o',typ='R'), + DXU_2 =SIMP(statut='o',typ='R'), + DRYU_2 =SIMP(statut='o',typ='R'), + C_2 =SIMP(statut='o',typ='R'), + KY =SIMP(statut='o',typ='R'), + KZ =SIMP(statut='o',typ='R'), + KRX =SIMP(statut='o',typ='R'), + KRZ =SIMP(statut='o',typ='R'), + R_P0 =SIMP(statut='f',typ='R',defaut= 1.E+4 ), + ), + DIS_CONTACT =FACT(statut='f', + RIGI_NOR =SIMP(statut='f',typ='R' ), + RIGI_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + AMOR_NOR =SIMP(statut='f',typ='R' ), + AMOR_TAN =SIMP(statut='f',typ='R' ), + COULOMB =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + DIST_1 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + DIST_2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + JEU =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + ENDO_SCALAIRE =FACT(statut='f', + GAMMA =SIMP(statut='o',typ='R',), + SY =SIMP(statut='o',typ='R',), + COEF_RIGI_MINI =SIMP(statut='f',typ='R',defaut=1.E-5), + DD_MAXI =SIMP(statut='f',typ='R',defaut= 1.), + ), + DIS_GRICRA =FACT(statut='f', + KN_AX =SIMP(statut='o',typ='R' ), + KT_AX =SIMP(statut='o',typ='R' ), + COUL_AX =SIMP(statut='o',typ='R' ), + F_SER =SIMP(statut='f',typ='R' ), + F_SER_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ET_AX =SIMP(statut='f',typ='R',defaut=1.e-7 ), + ET_ROT =SIMP(statut='f',typ='R',defaut=1.e-7 ), + ANG1 =SIMP(statut='f',typ='R' ), + ANG2 =SIMP(statut='f',typ='R' ), + PEN1 =SIMP(statut='f',typ='R' ), + PEN2 =SIMP(statut='f',typ='R' ), + PEN3 =SIMP(statut='f',typ='R' ), + ANG1_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ANG2_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PEN1_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PEN2_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PEN3_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + regles=(EXCLUS('ANG1','ANG1_FO',), + UN_PARMI('ANG1','ANG1_FO',), + EXCLUS('F_SER','F_SER_FO',), + UN_PARMI('F_SER','F_SER_FO',), + PRESENT_PRESENT('ANG1','ANG2','PEN1','PEN2','PEN3',), + PRESENT_PRESENT('ANG1_FO','ANG2_FO','PEN1_FO','PEN2_FO','PEN3_FO',), + ), + ), + BETON_DOUBLE_DP =FACT(statut='f', + F_C =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_T =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COEF_BIAX =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ENER_COMP_RUPT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ENER_TRAC_RUPT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COEF_ELAS_COMP =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=100.E+0), + LONG_CARA =SIMP(statut='f',typ='R',val_min=0.E+0), + ECRO_COMP_P_PIC =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","PARABOLE") ), + ECRO_TRAC_P_PIC =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","EXPONENT") ), + ), + LABORD_1D=FACT(statut='f',min=0 , + Y01 =SIMP(statut='o',typ='R'), + Y02 =SIMP(statut='o',typ='R'), + A1 =SIMP(statut='o',typ='R'), + A2 =SIMP(statut='o',typ='R'), + B1 =SIMP(statut='o',typ='R'), + B2 =SIMP(statut='o',typ='R'), + BETA1 =SIMP(statut='o',typ='R'), + BETA2 =SIMP(statut='o',typ='R'), + SIGF =SIMP(statut='o',typ='R'), + ), + MAZARS=FACT(statut='f',min=0 , + EPSD0 =SIMP(statut='o',typ='R'), + BETA =SIMP(statut='o',typ='R'), + AC =SIMP(statut='o',typ='R'), + BC =SIMP(statut='o',typ='R'), + AT =SIMP(statut='o',typ='R'), + BT =SIMP(statut='o',typ='R'), + CHI =SIMP(statut='f',typ='R',val_min=0.0E+0,val_max=1.0E+0), + ), + MAZARS_FO=FACT(statut='f',min=0 , + EPSD0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + BETA =SIMP(statut='o',typ='R'), + AC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + BC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + AT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + BT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + CHI =SIMP(statut='f',typ='R'), + ), + JOINT_BA=FACT(statut='f',min=0 ,max=1, + HPEN =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=0.E+0), + GTT =SIMP(statut='o',typ='R',val_min=0.E+0), + GAMD0 =SIMP(statut='o',typ='R',val_min=1.E-4,val_max=1.E-1), + AD1 =SIMP(statut='o',typ='R',val_min=0.E+0), + BD1 =SIMP(statut='o',typ='R',defaut= 5.E-1,val_min=1.E-1), + GAMD2 =SIMP(statut='o',typ='R',val_min=1.E-4,val_max=1.E+0), + AD2 =SIMP(statut='o',typ='R',val_min=0.E+0), + BD2 =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=1.E-1), + VIFROT =SIMP(statut='o',typ='R',val_min=0.E+0), + FA =SIMP(statut='o',typ='R',val_min=0.E+0), + FC =SIMP(statut='o',typ='R',val_min=0.E+0), + EPSTR0 =SIMP(statut='o',typ='R',val_min=1.E-4,val_max=1.E+0), + ADN =SIMP(statut='o',typ='R',val_min=0.E+0), + BDN =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=1.E-1), + ), + VENDOCHAB =FACT(statut='f', + SY =SIMP(statut='o',typ='R',defaut= 0.E+0), + ALPHA_D =SIMP(statut='o',typ='R',defaut= 0.E+0), + BETA_D =SIMP(statut='o',typ='R',defaut= 0.E+0), + R_D =SIMP(statut='o',typ='R'), + A_D =SIMP(statut='o',typ='R'), + K_D =SIMP(statut='o',typ='R'), + ), + VENDOCHAB_FO =FACT(statut='f', + SY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ALPHA_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + BETA_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + R_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + K_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + VISC_ENDO =FACT(statut='f', + SY =SIMP(statut='o',typ='R',defaut= 0.E+0), + R_D =SIMP(statut='o',typ='R'), + A_D =SIMP(statut='o',typ='R'), + ), + VISC_ENDO_FO =FACT(statut='f', + SY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + R_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + PINTO_MENEGOTTO =FACT(statut='f', + SY =SIMP(statut='o',typ='R'), + EPSI_ULTM =SIMP(statut='o',typ='R'), + SIGM_ULTM =SIMP(statut='o',typ='R'), + ELAN =SIMP(statut='f',typ='R',defaut= 4. ), + EPSP_HARD =SIMP(statut='o',typ='R'), + R_PM =SIMP(statut='f',typ='R',defaut= 20. ), + EP_SUR_E =SIMP(statut='f',typ='R'), + A1_PM =SIMP(statut='f',typ='R',defaut= 18.5 ), + A2_PM =SIMP(statut='f',typ='R',defaut= 0.15 ), + A6_PM =SIMP(statut='f',typ='R',defaut= 620. ), + C_PM =SIMP(statut='f',typ='R',defaut= 0.5 ), + A_PM =SIMP(statut='f',typ='R',defaut= 6.0E-3 ), + ), + BPEL_BETON =FACT(statut='f', + PERT_FLUA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + PERT_RETR =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + BPEL_ACIER =FACT(statut='f', + regles=(PRESENT_PRESENT('RELAX_1000','F_PRG',), + PRESENT_PRESENT('MU0_RELAX','F_PRG',),), + RELAX_1000 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + MU0_RELAX =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + F_PRG =SIMP(statut='f',typ='R'), + FROT_COURB =SIMP(statut='f',typ='R',defaut=0.E+0), + FROT_LINE =SIMP(statut='f',typ='R',defaut=0.E+0), + ), + CAM_CLAY =FACT(statut='f', + MU =SIMP(statut='o',typ='R'), + PORO =SIMP(statut='o',typ='R'), + LAMBDA =SIMP(statut='o',typ='R'), + KAPA =SIMP(statut='o',typ='R'), + M =SIMP(statut='o',typ='R'), + PRES_CRIT =SIMP(statut='o',typ='R'), + KCAM =SIMP(statut='f',typ='R',val_min=0.E+0), + PTRAC =SIMP(statut='f',typ='R',val_max=0.E+0), + regles=(PRESENT_PRESENT('PTRAC','KCAM',),), + ), + BARCELONE =FACT(statut='f', + MU =SIMP(statut='o',typ='R'), + PORO =SIMP(statut='o',typ='R'), + LAMBDA =SIMP(statut='o',typ='R'), + KAPA =SIMP(statut='o',typ='R'), + M =SIMP(statut='o',typ='R'), + PRES_CRIT =SIMP(statut='o',typ='R'), + PA =SIMP(statut='o',typ='R'), + R =SIMP(statut='o',typ='R'), + BETA =SIMP(statut='o',typ='R'), + KC =SIMP(statut='o',typ='R'), + PC0_INIT =SIMP(statut='o',typ='R'), + KAPAS =SIMP(statut='o',typ='R'), + LAMBDAS =SIMP(statut='o',typ='R'), + ALPHAB =SIMP(statut='f',typ='R'), + ), + CJS =FACT(statut='f', + BETA_CJS =SIMP(statut='o',typ='R'), + RM =SIMP(statut='o',typ='R'), + N_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + KP =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + RC =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + A_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + B_CJS =SIMP(statut='f',typ='R',defaut= 1.0E+25 ), + C_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + GAMMA_CJS =SIMP(statut='o',typ='R'), + MU_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + PCO =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + PA =SIMP(statut='o',typ='R'), + Q_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + R_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + HUJEUX =FACT(statut='f', + N =SIMP(statut='o',typ='R' ), + BETA =SIMP(statut='o',typ='R' ), + B =SIMP(statut='o',typ='R' ), + D =SIMP(statut='o',typ='R' ), + PHI =SIMP(statut='o',typ='R' ), + ANGDIL =SIMP(statut='o',typ='R' ), + PCO =SIMP(statut='o',typ='R' ), + PREF =SIMP(statut='o',typ='R' ), + ACYC =SIMP(statut='o',typ='R' ), + AMON =SIMP(statut='o',typ='R' ), + CCYC =SIMP(statut='o',typ='R' ), + CMON =SIMP(statut='o',typ='R' ), + RD_ELA =SIMP(statut='o',typ='R' ), + RI_ELA =SIMP(statut='o',typ='R' ), + RHYS =SIMP(statut='o',typ='R' ), + RMOB =SIMP(statut='o',typ='R' ), + XM =SIMP(statut='o',typ='R' ), + RD_CYC =SIMP(statut='o',typ='R' ), + RI_CYC =SIMP(statut='o',typ='R' ), + DILA =SIMP(statut='o',typ='R' ), + PTRAC =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + ECRO_ASYM_LINE =FACT(statut='f', + DC_SIGM_EPSI =SIMP(statut='o',typ='R'), + SY_C =SIMP(statut='o',typ='R'), + DT_SIGM_EPSI =SIMP(statut='o',typ='R'), + SY_T =SIMP(statut='o',typ='R'), + ), + GRANGER_FP =FACT(statut='f', + J1 =SIMP(statut='f',typ='R'), + J2 =SIMP(statut='f',typ='R'), + J3 =SIMP(statut='f',typ='R'), + J4 =SIMP(statut='f',typ='R'), + J5 =SIMP(statut='f',typ='R'), + J6 =SIMP(statut='f',typ='R'), + J7 =SIMP(statut='f',typ='R'), + J8 =SIMP(statut='f',typ='R'), + TAUX_1 =SIMP(statut='f',typ='R'), + TAUX_2 =SIMP(statut='f',typ='R'), + TAUX_3 =SIMP(statut='f',typ='R'), + TAUX_4 =SIMP(statut='f',typ='R'), + TAUX_5 =SIMP(statut='f',typ='R'), + TAUX_6 =SIMP(statut='f',typ='R'), + TAUX_7 =SIMP(statut='f',typ='R'), + TAUX_8 =SIMP(statut='f',typ='R'), + QSR_K =SIMP(statut='f',typ='R'), + ), + GRANGER_FP_INDT =FACT(statut='f', + J1 =SIMP(statut='f',typ='R'), + J2 =SIMP(statut='f',typ='R'), + J3 =SIMP(statut='f',typ='R'), + J4 =SIMP(statut='f',typ='R'), + J5 =SIMP(statut='f',typ='R'), + J6 =SIMP(statut='f',typ='R'), + J7 =SIMP(statut='f',typ='R'), + J8 =SIMP(statut='f',typ='R'), + TAUX_1 =SIMP(statut='f',typ='R'), + TAUX_2 =SIMP(statut='f',typ='R'), + TAUX_3 =SIMP(statut='f',typ='R'), + TAUX_4 =SIMP(statut='f',typ='R'), + TAUX_5 =SIMP(statut='f',typ='R'), + TAUX_6 =SIMP(statut='f',typ='R'), + TAUX_7 =SIMP(statut='f',typ='R'), + TAUX_8 =SIMP(statut='f',typ='R'), + ), + V_GRANGER_FP =FACT(statut='f', + QSR_VEIL =SIMP(statut='f',typ='R'), + FONC_V =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + BETON_UMLV_FP =FACT(statut='f',min=0 , + K_RS =SIMP(statut='o',typ='R'), + ETA_RS =SIMP(statut='o',typ='R'), + K_IS =SIMP(statut='o',typ='R'), + ETA_IS =SIMP(statut='o',typ='R'), + K_RD =SIMP(statut='o',typ='R'), + ETA_RD =SIMP(statut='o',typ='R'), + ETA_ID =SIMP(statut='o',typ='R'), + ETA_FD =SIMP(statut='f',typ='R'), + ), + BETON_RAG =FACT(statut='f', + ACTIV_FL =SIMP(statut='f',typ='R',defaut=1.0 ), + K_RS =SIMP(statut='o',typ='R'), + K_IS =SIMP(statut='o',typ='R'), + ETA_RS =SIMP(statut='o',typ='R'), + ETA_IS =SIMP(statut='o',typ='R'), + K_RD =SIMP(statut='o',typ='R'), + K_ID =SIMP(statut='o',typ='R'), + ETA_RD =SIMP(statut='o',typ='R'), + ETA_ID =SIMP(statut='o',typ='R'), + EPS_0 =SIMP(statut='o',typ='R'), + TAU_0 =SIMP(statut='o',typ='R'), + EPS_FL_L =SIMP(statut='f',typ='R',defaut=3.0e-2 ), + ACTIV_LO =SIMP(statut='f',typ='R',defaut=1.0 ), + F_C =SIMP(statut='o',typ='R'), + F_T =SIMP(statut='o',typ='R'), + ANG_CRIT =SIMP(statut='f',typ='R',defaut=8.594367 ), + EPS_COMP =SIMP(statut='o',typ='R'), + EPS_TRAC =SIMP(statut='o',typ='R'), + LC_COMP =SIMP(statut='o',typ='R',defaut=1.0 ), + LC_TRAC =SIMP(statut='o',typ='R',defaut=1.0 ), + HYD_PRES =SIMP(statut='f',typ='R',defaut=0. ), + A_VAN_GE =SIMP(statut='f',typ='R',defaut=0.0 ), + B_VAN_GE =SIMP(statut='f',typ='R',defaut=1.9 ), + BIOT_EAU =SIMP(statut='o',typ='R',defaut=0.3 ), + MODU_EAU =SIMP(statut='o',typ='R',defaut=0.0 ), + W_EAU_0 =SIMP(statut='o',typ='R'), + BIOT_GEL =SIMP(statut='o',typ='R'), + MODU_GEL =SIMP(statut='o',typ='R'), + VOL_GEL =SIMP(statut='o',typ='R'), + AVANC_LI =SIMP(statut='o',typ='R'), + SEUIL_SR =SIMP(statut='o',typ='R'), + PARA_CIN =SIMP(statut='o',typ='R'), + ENR_AC_G =SIMP(statut='o',typ='R'), + ), + GLRC_DM =FACT(statut='f',min=0,max=1, + regles=(EXCLUS('GAMMA_C','SYC'),), + GAMMA_T =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + GAMMA_C =SIMP(statut='f',typ='R',val_min=-1.E+0,val_max=1.E+0), + GAMMA_F =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), + SYT =SIMP(statut='o',typ='R',val_min=0.E+0), + SYC =SIMP(statut='f',typ='R'), + SYF =SIMP(statut='o',typ='R',val_min=0.E+0), + EF =SIMP(statut='f',typ='R',val_min=0.E+0), + NUF =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=0.5+0), + ), + GATT_MONERIE =FACT(statut='f',min=0,max=1, + D_GRAIN =SIMP(statut='o',typ='R',val_min=0.E+0), + PORO_INIT =SIMP(statut='o',typ='R',val_min=0.E+0), + EPSI_01 =SIMP(statut='o',typ='R',defaut= 2.7252E-10,val_min=0.E+0), + EPSI_02 =SIMP(statut='o',typ='R',defaut= 9.1440E-41,val_min=0.E+0), + ), + CORR_ACIER =FACT(statut='f',min=0 ,max=1, + D_CORR =SIMP(statut='o',typ='R'), + ECRO_K =SIMP(statut='o',typ='R'), + ECRO_M =SIMP(statut='o',typ='R'), + SY =SIMP(statut='o',typ='R'), + ), +# Discrets non-linéaires : début + DIS_ECRO_CINE =FACT(statut='f', + fr="Loi pour les discrets avec écrouissage cinématique.", + regles=(PRESENT_PRESENT('LIMY_DX','KCIN_DX',),PRESENT_PRESENT('PUIS_DX','LIMU_DX',), + PRESENT_PRESENT('LIMY_DY','KCIN_DY',),PRESENT_PRESENT('PUIS_DY','LIMU_DY',), + PRESENT_PRESENT('LIMY_DZ','KCIN_DZ',),PRESENT_PRESENT('PUIS_DZ','LIMU_DZ',), + PRESENT_PRESENT('LIMY_RX','KCIN_RX',),PRESENT_PRESENT('PUIS_RX','LIMU_RX',), + PRESENT_PRESENT('LIMY_RY','KCIN_RY',),PRESENT_PRESENT('PUIS_RY','LIMU_RY',), + PRESENT_PRESENT('LIMY_RZ','KCIN_RZ',),PRESENT_PRESENT('PUIS_RZ','LIMU_RZ',),), + LIMY_DX =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Effort limite élastique suivant l'axe local x de l'élément."), + LIMY_DY =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Effort limite élastique suivant l'axe local y de l'élément."), + LIMY_DZ =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Effort limite élastique suivant l'axe local z de l'élément."), + LIMY_RX =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Moment limite élastique suivant l'axe local x de l'élément."), + LIMY_RY =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Moment limite élastique suivant l'axe local y de l'élément."), + LIMY_RZ =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Moment limite élastique suivant l'axe local z de l'élément."), + KCIN_DX =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Raideur suivant l'axe local x de l'élément."), + KCIN_DY =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Raideur suivant l'axe local y de l'élément."), + KCIN_DZ =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Raideur suivant l'axe local z de l'élément."), + KCIN_RX =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Raideur suivant l'axe local Rx de l'élément."), + KCIN_RY =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Raideur suivant l'axe local Ry de l'élément."), + KCIN_RZ =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Raideur suivant l'axe local Rz de l'élément."), + LIMU_DX =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Effort limite suivant l'axe local x de l'élément."), + LIMU_DY =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Effort limite suivant l'axe local y de l'élément."), + LIMU_DZ =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Effort limite suivant l'axe local z de l'élément."), + LIMU_RX =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Moment limite suivant l'axe local x de l'élément."), + LIMU_RY =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Moment limite suivant l'axe local y de l'élément."), + LIMU_RZ =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Moment limite suivant l'axe local z de l'élément."), + PUIS_DX =SIMP(statut='f',typ='R',val_min = 1.0, + fr="Coefficient de non-linéarité suivant l'axe local x de l'élément."), + PUIS_DY =SIMP(statut='f',typ='R',val_min = 1.0, + fr="Coefficient de non-linéarité suivant l'axe local y de l'élément."), + PUIS_DZ =SIMP(statut='f',typ='R',val_min = 1.0, + fr="Coefficient de non-linéarité suivant l'axe local z de l'élément."), + PUIS_RX =SIMP(statut='f',typ='R',val_min = 1.0, + fr="Coefficient de non-linéarité suivant l'axe local Rx de l'élément."), + PUIS_RY =SIMP(statut='f',typ='R',val_min = 1.0, + fr="Coefficient de non-linéarité suivant l'axe local Ry de l'élément."), + PUIS_RZ =SIMP(statut='f',typ='R',val_min = 1.0, + fr="Coefficient de non-linéarité suivant l'axe local Rz de l'élément."), + ), + DIS_VISC =FACT(statut='f', + fr="Loi pour un discret de type amortisseur visqueux.", + regles=(PRESENT_PRESENT('PUIS_DX','COEF_DX',), + PRESENT_PRESENT('PUIS_DY','COEF_DY',), + PRESENT_PRESENT('PUIS_DZ','COEF_DZ',), + PRESENT_PRESENT('PUIS_RX','COEF_RX',), + PRESENT_PRESENT('PUIS_RY','COEF_RY',), + PRESENT_PRESENT('PUIS_RZ','COEF_RZ',), + ), + PUIS_DX =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Puissance dans la direction locale Dx de l'élément."), + PUIS_DY =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Puissance dans la direction locale Dy de l'élément."), + PUIS_DZ =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Puissance dans la direction locale Dz de l'élément."), + PUIS_RX =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Puissance autour de la direction locale Rx de l'élément."), + PUIS_RY =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Puissance autour de la direction locale Ry de l'élément."), + PUIS_RZ =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Puissance autour de la direction locale Rz de l'élément."), + COEF_DX =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Coefficient C dans la direction locale Dx de l'élément."), + COEF_DY =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Coefficient C dans la direction locale Dy de l'élément."), + COEF_DZ =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Coefficient C dans la direction locale Dz de l'élément."), + COEF_RX =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Coefficient C autour de la direction locale Rx de l'élément."), + COEF_RY =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Coefficient C autour de la direction locale Ry de l'élément."), + COEF_RZ =SIMP(statut='f',typ='R',val_min = 0.0, + fr="Coefficient C autour de la direction locale Rz de l'élément."), + ), + DIS_BILI_ELAS =FACT(statut='f', + fr="Loi bi-linéaire pour les discrets.", + regles=(PRESENT_PRESENT('KDEB_DX','KFIN_DX','FPRE_DX',), + PRESENT_PRESENT('KDEB_DY','KFIN_DY','FPRE_DY',), + PRESENT_PRESENT('KDEB_DZ','KFIN_DZ','FPRE_DZ',),), + KDEB_DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Raideur début suivant l'axe local x de l'élément."), + KDEB_DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Raideur début suivant l'axe local y de l'élément."), + KDEB_DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Raideur début suivant l'axe local z de l'élément."), + KFIN_DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Raideur fin l'axe local x de l'élément."), + KFIN_DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Raideur fin l'axe local y de l'élément."), + KFIN_DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Raideur fin l'axe local z de l'élément."), + FPRE_DX =SIMP(statut='f',typ='R', + fr="Effort de préserrage suivant l'axe local x de l'élément."), + FPRE_DY =SIMP(statut='f',typ='R', + fr="Effort de préserrage suivant l'axe local y de l'élément."), + FPRE_DZ =SIMP(statut='f',typ='R', + fr="Effort de préserrage suivant l'axe local z de l'élément."), + ), +# Discrets non-linéaires : fin +# +# comportement thermique +# + THER_NL =FACT(statut='f', + regles=(UN_PARMI('BETA','RHO_CP', ),), + LAMBDA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + RHO_CP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + THER_HYDR =FACT(statut='f', + LAMBDA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + AFFINITE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + CHALHYDR =SIMP(statut='o',typ='R'), + ), + THER =FACT(statut='f', + LAMBDA =SIMP(statut='o',typ='R'), + RHO_CP =SIMP(statut='f',typ='R'), + ), + THER_FO =FACT(statut='f', + LAMBDA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + RHO_CP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + THER_ORTH =FACT(statut='f', + LAMBDA_L =SIMP(statut='o',typ='R'), + LAMBDA_T =SIMP(statut='o',typ='R'), + LAMBDA_N =SIMP(statut='f',typ='R'), + RHO_CP =SIMP(statut='f',typ='R'), + ), + THER_COQUE =FACT(statut='f', + COND_LMM =SIMP(statut='o',typ='R'), + COND_TMM =SIMP(statut='o',typ='R'), + COND_LMP =SIMP(statut='o',typ='R'), + COND_TMP =SIMP(statut='o',typ='R'), + COND_LPP =SIMP(statut='o',typ='R'), + COND_TPP =SIMP(statut='o',typ='R'), + COND_LSI =SIMP(statut='o',typ='R'), + COND_TSI =SIMP(statut='o',typ='R'), + COND_NMM =SIMP(statut='o',typ='R'), + COND_NMP =SIMP(statut='o',typ='R'), + COND_NPP =SIMP(statut='o',typ='R'), + COND_NSI =SIMP(statut='o',typ='R'), + CMAS_MM =SIMP(statut='f',typ='R'), + CMAS_MP =SIMP(statut='f',typ='R'), + CMAS_PP =SIMP(statut='f',typ='R'), + CMAS_SI =SIMP(statut='f',typ='R'), + ), + THER_COQUE_FO =FACT(statut='f', + COND_LMM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_TMM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_LMP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_TMP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_LPP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_TPP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_LSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_TSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_NMM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_NMP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_NPP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COND_NSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + CMAS_MM =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + CMAS_MP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + CMAS_PP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + CMAS_SI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + SECH_GRANGER =FACT(statut='f', + A =SIMP(statut='o',typ='R'), + B =SIMP(statut='o',typ='R'), + QSR_K =SIMP(statut='o',typ='R'), + TEMP_0_C =SIMP(statut='o',typ='R'), + ), + SECH_MENSI =FACT(statut='f', + A =SIMP(statut='o',typ='R'), + B =SIMP(statut='o',typ='R'), + ), + SECH_BAZANT =FACT(statut='f', + D1 =SIMP(statut='o',typ='R'), + ALPHA_BAZANT =SIMP(statut='o',typ='R'), + N =SIMP(statut='o',typ='R'), + FONC_DESORP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + SECH_NAPPE =FACT(statut='f', + FONCTION =SIMP(statut='o',typ=(nappe_sdaster,formule)), + ), +# +# comportement métallurgique +# + META_ACIER =FACT(statut='f', + TRC =SIMP(statut='o',typ=(table_sdaster) ), + AR3 =SIMP(statut='o',typ='R'), + ALPHA =SIMP(statut='o',typ='R'), + MS0 =SIMP(statut='o',typ='R'), + AC1 =SIMP(statut='o',typ='R'), + AC3 =SIMP(statut='o',typ='R'), + TAUX_1 =SIMP(statut='o',typ='R'), + TAUX_3 =SIMP(statut='o',typ='R'), + LAMBDA0 =SIMP(statut='f',typ='R'), + QSR_K =SIMP(statut='f',typ='R'), + D10 =SIMP(statut='f',typ='R'), + WSR_K =SIMP(statut='f',typ='R'), + ), + META_ZIRC =FACT(statut='f', + TDEQ =SIMP(statut='o',typ='R'), + N =SIMP(statut='o',typ='R'), + K =SIMP(statut='o',typ='R'), + T1C =SIMP(statut='o',typ='R'), + T2C =SIMP(statut='o',typ='R'), + AC =SIMP(statut='o',typ='R'), + M =SIMP(statut='o',typ='R'), + QSR_K =SIMP(statut='o',typ='R'), + T1R =SIMP(statut='o',typ='R'), + T2R =SIMP(statut='o',typ='R'), + AR =SIMP(statut='o',typ='R'), + BR =SIMP(statut='o',typ='R'), + ), + DURT_META =FACT(statut='f', + F1_DURT =SIMP(statut='o',typ='R'), + F2_DURT =SIMP(statut='o',typ='R'), + F3_DURT =SIMP(statut='o',typ='R'), + F4_DURT =SIMP(statut='o',typ='R'), + C_DURT =SIMP(statut='o',typ='R'), + ), + ELAS_META =FACT(statut='f', + E =SIMP(statut='o',typ='R'), + NU =SIMP(statut='o',typ='R'), + F_ALPHA =SIMP(statut='o',typ='R'), + C_ALPHA =SIMP(statut='o',typ='R'), + PHASE_REFE =SIMP(statut='o',typ='TXM',into=("CHAUD","FROID")), + EPSF_EPSC_TREF =SIMP(statut='o',typ='R'), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E+0), + F1_SY =SIMP(statut='f',typ='R'), + F2_SY =SIMP(statut='f',typ='R'), + F3_SY =SIMP(statut='f',typ='R'), + F4_SY =SIMP(statut='f',typ='R'), + C_SY =SIMP(statut='f',typ='R'), + SY_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F1_S_VP =SIMP(statut='f',typ='R'), + F2_S_VP =SIMP(statut='f',typ='R'), + F3_S_VP =SIMP(statut='f',typ='R'), + F4_S_VP =SIMP(statut='f',typ='R'), + C_S_VP =SIMP(statut='f',typ='R' ), + S_VP_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ELAS_META_FO =FACT(statut='f', + regles=( + PRESENT_PRESENT('F_ALPHA','TEMP_DEF_ALPHA'), + PRESENT_PRESENT('C_ALPHA','TEMP_DEF_ALPHA'), + ), + E =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + NU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + F_ALPHA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_ALPHA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + PHASE_REFE =SIMP(statut='o',typ='TXM',into=("CHAUD","FROID")), + EPSF_EPSC_TREF =SIMP(statut='o',typ='R'), + TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E+0), + F1_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F3_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F4_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + SY_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F1_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F3_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F4_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + S_VP_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + META_ECRO_LINE =FACT(statut='f', + F1_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F3_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F4_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + META_TRACTION =FACT(statut='f', + SIGM_F1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_F2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_F3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_F4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + META_VISC_FO =FACT(statut='f', + F1_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F1_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F1_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F1_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F3_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F3_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F3_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F3_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F4_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F4_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F4_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F4_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + C_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + META_PT =FACT(statut='f', + F1_K =SIMP(statut='f',typ='R'), + F2_K =SIMP(statut='f',typ='R'), + F3_K =SIMP(statut='f',typ='R'), + F4_K =SIMP(statut='f',typ='R'), + F1_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F2_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F3_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + F4_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + META_RE =FACT(statut='f', + C_F1_THETA =SIMP(statut='f',typ='R'), + C_F2_THETA =SIMP(statut='f',typ='R'), + C_F3_THETA =SIMP(statut='f',typ='R'), + C_F4_THETA =SIMP(statut='f',typ='R'), + F1_C_THETA =SIMP(statut='f',typ='R'), + F2_C_THETA =SIMP(statut='f',typ='R'), + F3_C_THETA =SIMP(statut='f',typ='R'), + F4_C_THETA =SIMP(statut='f',typ='R'), + ), +# +# comportement fluide +# + FLUIDE =FACT(statut='f', + regles=(EXCLUS('CELE_C','CELE_R'),), + RHO =SIMP(statut='o',typ='R'), + CELE_C =SIMP(statut='f',typ='C'), + CELE_R =SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# COMPORTEMENT THERMO_HYDRO_MECANIQUE +# LES DONNEES NECESSAIRES A LA DEFINITION DU MATERIAU SONT DEPENDANTES +# DE LA LOI DE COUPLAGE THM DE LA RELATION +# LE COMPORTEMENT DE COUPLAGE COMP_THM N EST VALABLE QUE POUR LES LOIS +# DE COUPLAGE : LIQU_SATU,LIQU_GAZ,GAZ,LIQU_GAZ_ATM,LIQU_VAPE_GAZ,LIQU_VAPE +# ET LIQU_AD_GAZ_VAPE +# LA CORRESPONDANCE AVEC LES VARIABLES CACHEES EST LA SUIVANTE : +# 1 --> LIQU_SATU +# 2 --> GAZ +# 3 --> LIQU_VAPE +# 4 --> LIQU_VAPE_GAZ +# 5 --> LIQU_GAZ +# 6 --> LIQU_GAZ_ATM +# 9 --> LIQU_AD_GAZ_VAPE +# 10 --> LIQU_AD_GAZ +# ================================================================================= + COMP_THM = SIMP(statut='f', typ='TXM', + into = ( "LIQU_SATU" , + "LIQU_GAZ" , + "GAZ" , + "LIQU_GAZ_ATM" , + "LIQU_VAPE_GAZ" , + "LIQU_VAPE" , + "LIQU_AD_GAZ_VAPE" , + "LIQU_AD_GAZ" , + ) ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_SATU ------------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU ----------------------------------------------- +# ================================================================================= + b_liqusatu = BLOC(condition = "COMP_THM == 'LIQU_SATU' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_SATU", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + PRE2 = SIMP(statut='f',typ='R'), + PRES_VAPE = SIMP(statut='f',typ='R'), + DEGR_SATU = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 1.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVES ------------------------------------ +# --------------------------------------------------------------------------------- + PESA_MULT = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',), + PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ), + PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINXY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINYZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINZX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_CT = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='f',typ='R'), + EMMAG = SIMP(statut='f',typ='R'), + SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_GAZ -------------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ -------------------------------------- +# ================================================================================= + b_liqugaz = BLOC(condition = "COMP_THM == 'LIQU_GAZ' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PRE2 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + PRES_VAPE = SIMP(statut='f',typ='R'), + DEGR_SATU = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 5.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='o',typ='R'), + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), + SATU_PRES = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_SATU_PRES = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_LIQU = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_LIQU_SATU = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_SATU_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_PRES_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# ---Van Genhuchten et Muallen----------------------------------------------------------------------------- + + VG_N = SIMP(statut='f',typ='R'), + VG_SR = SIMP(statut='f',typ='R'), + VG_PR = SIMP(statut='f',typ='R'), + VG_SMAX = SIMP(statut='f',typ='R'), + VG_SATUR = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVES ------------------------------------ +# --------------------------------------------------------------------------------- + PESA_MULT = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINXY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINYZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINZX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_CT = SIMP(statut='f',typ='R'), +# + regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',), + PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), + ENSEMBLE('SATU_PRES','D_SATU_PRES','PERM_LIQU','D_PERM_LIQU_SATU', + 'PERM_GAZ','D_PERM_SATU_GAZ','D_PERM_PRES_GAZ',), + ENSEMBLE('VG_N','VG_SR','VG_PR','VG_SMAX','VG_SATUR',), + UN_PARMI('VG_N','SATU_PRES'), + ), + +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + EMMAG = SIMP(statut='f',typ='R'), + FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE GAZ ------------------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_GAZ ------------------------------------------------ +# ================================================================================= + b_gaz = BLOC(condition = "COMP_THM == 'GAZ' ", + fr="Paramètres nécessaires pour une loi de couplage de type GAZ", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='o',typ='R'), + PRE1 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + PRE2 = SIMP(statut='f',typ='R'), + PRES_VAPE = SIMP(statut='f',typ='R'), + DEGR_SATU = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 2.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='o',typ='R'), + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVES ------------------------------------ +# --------------------------------------------------------------------------------- + PESA_MULT = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',), + PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ), + PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_CT = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + EMMAG = SIMP(statut='f',typ='R'), + SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_LIQU =FACT(statut='f', + RHO =SIMP(statut='f',typ='R'), + UN_SUR_K =SIMP(statut='f',typ='R'), + ALPHA =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + COEF_HENRY =SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_GAZ_ATM ---------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ -------------------------------------- +# ================================================================================= + b_liqugazatm = BLOC(condition = "COMP_THM == 'LIQU_GAZ_ATM' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ_ATM", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + PRE2 = SIMP(statut='f',typ='R'), + PRES_VAPE = SIMP(statut='f',typ='R'), + DEGR_SATU = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 6.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), + SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVES ------------------------------------ +# --------------------------------------------------------------------------------- + PESA_MULT = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',), + PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ), + PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_CT = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + EMMAG = SIMP(statut='f',typ='R'), + R_GAZ =SIMP(statut='f',typ='R'), + PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_GAZ = FACT(statut='f', + MASS_MOL = SIMP(statut='f',typ='R'), + VISC = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ), + +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_AD_GAZ ------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ, THM_AIR_DISSOUS--------- +# ================================================================================= + b_liquadgaz = BLOC(condition = "COMP_THM == 'LIQU_AD_GAZ' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_AD_GAZ", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PRE2 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), + PRES_VAPE = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + DEGR_SATU = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 10.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='o',typ='R'), + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), + SATU_PRES = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_SATU_PRES = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_LIQU = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_LIQU_SATU = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_SATU_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_PRES_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# ---Van Genhuchten et Muallen----------------------------------------------------------------------------- + VG_N = SIMP(statut='f',typ='R'), + VG_SR = SIMP(statut='f',typ='R'), + VG_PR = SIMP(statut='f',typ='R'), + VG_SMAX = SIMP(statut='f',typ='R'), + VG_SATUR = SIMP(statut='f',typ='R'), +# + FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_T = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVES ------------------------------------ +# --------------------------------------------------------------------------------- + PESA_MULT = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINXY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINYZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINZX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_CT = SIMP(statut='f',typ='R'), +# + regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',), + PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), + ENSEMBLE('SATU_PRES','D_SATU_PRES','PERM_LIQU','D_PERM_LIQU_SATU', + 'PERM_GAZ','D_PERM_SATU_GAZ','D_PERM_PRES_GAZ',), + ENSEMBLE('VG_N','VG_SR','VG_PR','VG_SMAX','VG_SATUR',), + UN_PARMI('VG_N','SATU_PRES'), + ), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVES ------------------------------------ +# --------------------------------------------------------------------------------- + EMMAG = SIMP(statut='f',typ='R'), + FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# + FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + ), +# ================================================================================= +# --- MOT-CLE FACULTATIF --------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ = FACT(statut='f', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + CP = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES CACHEES ------------------------------------------- +# --------------------------------------------------------------------------------- + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_AIR_DISS = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='o',typ='R'), + COEF_HENRY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ), + +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_VAPE_GAZ --------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ, THM_VAPE_GAZ ------------------------ +# ================================================================================= + b_liquvapegaz = BLOC(condition = "COMP_THM == 'LIQU_VAPE_GAZ' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE_GAZ", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PRE2 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), + PRES_VAPE = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + DEGR_SATU = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 4.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='o',typ='R'), + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), + SATU_PRES = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_SATU_PRES = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_LIQU = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_LIQU_SATU = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_SATU_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_PRES_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# ---Van Genhuchten et Muallen----------------------------------------------------------------------------- + + VG_N = SIMP(statut='f',typ='R'), + VG_SR = SIMP(statut='f',typ='R'), + VG_PR = SIMP(statut='f',typ='R'), + VG_SMAX = SIMP(statut='f',typ='R'), + VG_SATUR = SIMP(statut='f',typ='R'), +# + FICKV_T = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVES ------------------------------------ +# --------------------------------------------------------------------------------- + PESA_MULT = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINXY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINYZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINZX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_CT = SIMP(statut='f',typ='R'), +# + regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',), + PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), + ENSEMBLE('SATU_PRES','D_SATU_PRES','PERM_LIQU','D_PERM_LIQU_SATU', + 'PERM_GAZ','D_PERM_SATU_GAZ','D_PERM_PRES_GAZ',), + ENSEMBLE('VG_N','VG_SR','VG_PR','VG_SMAX','VG_SATUR',), + UN_PARMI('VG_N','SATU_PRES'), + ), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVE ---------------------------------- +# --------------------------------------------------------------------------------- + EMMAG = SIMP(statut='f',typ='R'), + FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + CP = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_AD_GAZ_VAPE ------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ, THM_VAPE_GAZ THM_AIR_DISSOUS--------- +# ================================================================================= + b_liquadvape = BLOC(condition = "COMP_THM == 'LIQU_AD_GAZ_VAPE' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_AD_GAZ_VAPE", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PRE2 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), + PRES_VAPE = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + DEGR_SATU = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 9.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='o',typ='R'), + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), + SATU_PRES = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_SATU_PRES = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_LIQU = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_LIQU_SATU = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_SATU_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_PRES_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# ---Van Genhuchten et Muallen----------------------------------------------------------------------------- + VG_N = SIMP(statut='f',typ='R'), + VG_SR = SIMP(statut='f',typ='R'), + VG_PR = SIMP(statut='f',typ='R'), + VG_SMAX = SIMP(statut='f',typ='R'), + VG_SATUR = SIMP(statut='f',typ='R'), +# + FICKV_T = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_T = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVES ------------------------------------ +# --------------------------------------------------------------------------------- + PESA_MULT = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINXY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINYZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINZX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_CT = SIMP(statut='f',typ='R'), +# + regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',), + PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), + ENSEMBLE('SATU_PRES','D_SATU_PRES','PERM_LIQU','D_PERM_LIQU_SATU', + 'PERM_GAZ','D_PERM_SATU_GAZ','D_PERM_PRES_GAZ',), + ENSEMBLE('VG_N','VG_SR','VG_PR','VG_SMAX','VG_SATUR',), + UN_PARMI('VG_N','SATU_PRES'), + ), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVES ------------------------------------ +# --------------------------------------------------------------------------------- + EMMAG = SIMP(statut='f',typ='R'), + FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# + FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + CP = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_AIR_DISS = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='o',typ='R'), + COEF_HENRY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ), +# ================================================================================= +# --- LOI DE COUPLAGE DE TYPE LIQU_VAPE ------------------------------------------- +# ================================================================================= +# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : --------------------------------- +# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_VAPE_GAZ --------------------------------- +# ================================================================================= + b_liquvape = BLOC(condition = "COMP_THM == 'LIQU_VAPE' ", + fr="Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE", +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_INIT = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + PRE1 = SIMP(statut='o',typ='R'), + PORO = SIMP(statut='o',typ='R'), + PRES_VAPE = SIMP(statut='o',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + TEMP = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + PRE2 = SIMP(statut='f',typ='R'), + DEGR_SATU = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEE CACHEE --------------------------------------------- +# --------------------------------------------------------------------------------- + COMP_THM = SIMP(statut='c',typ='R',defaut= 3.0,), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_DIFFU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + R_GAZ = SIMP(statut='o',typ='R'), + RHO = SIMP(statut='o',typ='R'), + BIOT_COEF = SIMP(statut='o',typ='R'), + PESA_X = SIMP(statut='o',typ='R'), + PESA_Y = SIMP(statut='o',typ='R'), + PESA_Z = SIMP(statut='o',typ='R'), + SATU_PRES = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_SATU_PRES = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_LIQU = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_LIQU_SATU = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_SATU_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_PERM_PRES_GAZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# ---Van Genhuchten et Muallen----------------------------------------------------------------------------- + + VG_N = SIMP(statut='f',typ='R'), + VG_SR = SIMP(statut='f',typ='R'), + VG_PR = SIMP(statut='f',typ='R'), + VG_SMAX = SIMP(statut='f',typ='R'), + VG_SATUR = SIMP(statut='f',typ='R'), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES FACULTATIVES ------------------------------------ +# --------------------------------------------------------------------------------- + PESA_MULT = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + CP = SIMP(statut='f',typ='R'), + PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINXY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINYZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PERMINZX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + LAMB_CT = SIMP(statut='f',typ='R'), +# + regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',), + PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), + ENSEMBLE('SATU_PRES','D_SATU_PRES','PERM_LIQU','D_PERM_LIQU_SATU', + 'PERM_GAZ','D_PERM_SATU_GAZ','D_PERM_PRES_GAZ',), + ENSEMBLE('VG_N','VG_SR','VG_PR','VG_SMAX','VG_SATUR',), + UN_PARMI('VG_N','SATU_PRES'), + ), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES INUTILES ---------------------------------------- +# --------------------------------------------------------------------------------- + EMMAG = SIMP(statut='f',typ='R'), + FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ) , +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_LIQU = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + RHO = SIMP(statut='o',typ='R'), + UN_SUR_K = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), +# --------------------------------------------------------------------------------- +# ------------------- DONNEES NECESSAIRE SI THERMIQUE ------------------------- +# --------------------------------------------------------------------------------- + ALPHA = SIMP(statut='f',typ='R'), + CP = SIMP(statut='f',typ='R'), + ), +# ================================================================================= +# --- MOT-CLE OBLIGATOIRE --------------------------------------------------------- +# ================================================================================= + THM_VAPE_GAZ = FACT(statut='o', +# --------------------------------------------------------------------------------- +# ------------------- DONNEES OBLIGATOIRE ------------------------------------- +# --------------------------------------------------------------------------------- + MASS_MOL = SIMP(statut='o',typ='R'), + CP = SIMP(statut='o',typ='R'), + VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), +# ================================================================================= +# --- MOT-CLE INUTILE ------------------------------------------------------------- +# ================================================================================= + THM_GAZ =FACT(statut='f', + MASS_MOL =SIMP(statut='f',typ='R'), + CP =SIMP(statut='f',typ='R'), + VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + ), +# courbes et coefficients associés à la fatigue et au dommage +# + FATIGUE =FACT(statut='f', + regles=(PRESENT_ABSENT('WOHLER','A_BASQUIN','BETA_BASQUIN'), + PRESENT_ABSENT('WOHLER','A0','A1','A2','A3','SL'), + PRESENT_ABSENT('A_BASQUIN','A0','A1','A2','A3','SL'), + ENSEMBLE('A_BASQUIN','BETA_BASQUIN'), + ENSEMBLE('A0','A1','A2','A3','SL'), + PRESENT_PRESENT('A0','E_REFE'), + ENSEMBLE('D0','TAU0'),), + WOHLER =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_BASQUIN =SIMP(statut='f',typ='R'), + BETA_BASQUIN =SIMP(statut='f',typ='R'), + A0 =SIMP(statut='f',typ='R'), + A1 =SIMP(statut='f',typ='R'), + A2 =SIMP(statut='f',typ='R'), + A3 =SIMP(statut='f',typ='R'), + SL =SIMP(statut='f',typ='R'), + MANSON_COFFIN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + E_REFE =SIMP(statut='f',typ='R'), + D0 =SIMP(statut='f',typ='R'), + TAU0 =SIMP(statut='f',typ='R'), + ), + DOMMA_LEMAITRE =FACT(statut='f', + S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + EPSP_SEUIL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + EXP_S =SIMP(statut='f',typ='R',val_min=0.0E0,defaut=1.0), + ), + CISA_PLAN_CRIT =FACT(statut='f', + CRITERE =SIMP(statut='o',typ='TXM',into=("MATAKE_MODI_AC", + "DANG_VAN_MODI_AC", + "DANG_VAN_MODI_AV", + "MATAKE_MODI_AV", + "FATESOCI_MODI_AV", + ) ), + + b_critere_matake =BLOC(condition="CRITERE=='MATAKE_MODI_AC' or CRITERE=='MATAKE_MODI_AV'", + fr="Cisaillement plan critique critère de matake pour les cas amplitude constante et amplitude variable", + MATAKE_A =SIMP(statut='o',typ='R'), + MATAKE_B =SIMP(statut='o',typ='R'), + COEF_FLEX_TORS =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0), + ), + + b_critere_dang_van =BLOC(condition="(CRITERE=='DANG_VAN_MODI_AC' or CRITERE=='DANG_VAN_MODI_AV')", + fr="Critère de Dang Van modifié pour les cas amplitude constante et amplitude variable", + D_VAN_A =SIMP(statut='o',typ='R'), + D_VAN_B =SIMP(statut='o',typ='R'), + COEF_CISA_TRAC =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0), + ), + + b_critere_fate_soci =BLOC(condition="CRITERE=='FATESOCI_MODI_AV'", + fr="Critère de Fatemi et Socie, en élasticité ou élastoplasticité, pour le cas amplitude variable", + FATSOC_A =SIMP(statut='o',typ='R'), + COEF_CISA_TRAC =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0), + ), + ), + + + THM_RUPT =FACT(statut='f', + OUV_FICT =SIMP(statut='o',typ='R'), + UN_SUR_N =SIMP(statut='f',typ='R',defaut= 0.), + ), +# +# autres comportements ... +# + WEIBULL =FACT(statut='f', + M =SIMP(statut='o',typ='R'), + VOLU_REFE =SIMP(statut='o',typ='R'), + SIGM_REFE =SIMP(statut='o',typ='R'), + SEUIL_EPSP_CUMU =SIMP(statut='f',typ='R',defaut= 1.0E-6), + ), + WEIBULL_FO =FACT(statut='f', + M =SIMP(statut='o',typ='R'), + VOLU_REFE =SIMP(statut='o',typ='R'), + SIGM_CNV =SIMP(statut='o',typ='R'), + SIGM_REFE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SEUIL_EPSP_CUMU =SIMP(statut='f',typ='R',defaut= 1.0E-6), + ), + NON_LOCAL =FACT(statut='f', + regles=(AU_MOINS_UN('LONG_CARA','C_GONF','C_GRAD_VARI','PENA_LAGR',),), + LONG_CARA =SIMP(statut='f',typ='R'), + C_GRAD_VARI =SIMP(statut='f',typ='R'), + PENA_LAGR =SIMP(statut='f',typ='R',defaut= 1.0E3), + C_GONF =SIMP(statut='f',typ='R'), + COEF_RIGI_MINI =SIMP(statut='f',typ='R'), + ), + RUPT_FRAG =FACT(statut='f', + GC =SIMP(statut='o',typ='R'), + SIGM_C =SIMP(statut='f',typ='R'), + PENA_ADHERENCE =SIMP(statut='f',typ='R',val_min=1.E-12,val_max=1.E+0), + PENA_CONTACT =SIMP(statut='f',typ='R',defaut=1.), + PENA_LAGR =SIMP(statut='f',typ='R',defaut=1.0E2,val_min=1.01E+0), + RIGI_GLIS =SIMP(statut='f',typ='R',defaut=1.0E1), + ), + RUPT_FRAG_FO =FACT(statut='f', + GC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PENA_ADHERENCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PENA_CONTACT =SIMP(statut='f',typ='R',defaut=1.), + ), + RUPT_DUCT =FACT(statut='f', + GC =SIMP(statut='o',typ='R'), + SIGM_C =SIMP(statut='o',typ='R'), + COEF_EXTR =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=9.99E-1), + COEF_PLAS =SIMP(statut='o',typ='R',val_min=0.E+0,val_max=9.99E-1), + PENA_LAGR =SIMP(statut='f',typ='R',defaut=1.0E2,val_min=1.01E+0), + RIGI_GLIS =SIMP(statut='f',typ='R',defaut=1.0E1), + ), + JOINT_MECA_RUPT =FACT(statut='f', + regles=(EXCLUS('PRES_FLUIDE','PRES_CLAVAGE'), + PRESENT_PRESENT('RHO_FLUIDE','VISC_FLUIDE','OUV_MIN'), + PRESENT_ABSENT('PRES_FLUIDE','RHO_FLUIDE','VISC_FLUIDE','OUV_MIN'), + PRESENT_ABSENT('PRES_CLAVAGE','RHO_FLUIDE','VISC_FLUIDE','OUV_MIN'), + PRESENT_ABSENT('RHO_FLUIDE','PRES_FLUIDE','PRES_CLAVAGE'), + PRESENT_ABSENT('VISC_FLUIDE','PRES_FLUIDE','PRES_CLAVAGE'), + PRESENT_ABSENT('OUV_MIN','PRES_FLUIDE','PRES_CLAVAGE'), + ), + K_N =SIMP(statut='o',typ='R',val_min=1.E-12), + K_T =SIMP(statut='f',typ='R',val_min=1.E-12), + SIGM_MAX =SIMP(statut='o',typ='R',val_min=0.), + ALPHA =SIMP(statut='f',typ='R',defaut=1., val_min=0., val_max=2.), + PENA_RUPTURE =SIMP(statut='f',typ='R',val_min=1.E-12,val_max=10.E+0), + PENA_CONTACT =SIMP(statut='f',typ='R',defaut=1.,val_min=1.E-12), + PRES_FLUIDE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + PRES_CLAVAGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + RHO_FLUIDE =SIMP(statut='f',typ='R',val_min=0.), + VISC_FLUIDE =SIMP(statut='f',typ='R',val_min=1.E-20), + OUV_MIN =SIMP(statut='f',typ='R',val_min=1.E-15), + ), + JOINT_MECA_FROT =FACT(statut='f', + K_N =SIMP(statut='o',typ='R',val_min=1.E-12), + K_T =SIMP(statut='f',typ='R',val_min=1.E-12), + MU =SIMP(statut='o',typ='R',val_min=1.E-3), + PENA_TANG =SIMP(statut='f',typ='R',val_min=0.), + ADHESION =SIMP(statut='f',typ='R',defaut=0., val_min=0.), + ), + RCCM =FACT(statut='f', + regles=(ENSEMBLE('A_AMORC','B_AMORC','D_AMORC','R_AMORC'),), + SY_02 =SIMP(statut='f',typ='R'), + SM =SIMP(statut='f',typ='R'), + SU =SIMP(statut='f',typ='R'), + SC =SIMP(statut='f',typ='R'), + SH =SIMP(statut='f',typ='R'), + N_KE =SIMP(statut='f',typ='R'), + M_KE =SIMP(statut='f',typ='R'), + A_AMORC =SIMP(statut='f',typ='R'), + B_AMORC =SIMP(statut='f',typ='R'), + D_AMORC =SIMP(statut='f',typ='R'), + R_AMORC =SIMP(statut='f',typ='R'), + ), + RCCM_FO =FACT(statut='f', + regles=(ENSEMBLE('A_AMORC','B_AMORC','D_AMORC','R_AMORC'),), + SY_02 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + SM =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + SU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + S =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + N_KE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + M_KE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + A_AMORC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + B_AMORC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + D_AMORC =SIMP(statut='f',typ='R'), + R_AMORC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + LAIGLE =FACT(statut='f', + GAMMA_ULT =SIMP(statut='o',typ='R'), + GAMMA_E =SIMP(statut='o',typ='R'), + M_ULT =SIMP(statut='o',typ='R'), + M_E =SIMP(statut='o',typ='R'), + A_E =SIMP(statut='o',typ='R'), + M_PIC =SIMP(statut='o',typ='R'), + A_PIC =SIMP(statut='o',typ='R'), + ETA =SIMP(statut='o',typ='R'), + SIGMA_C =SIMP(statut='o',typ='R'), + GAMMA =SIMP(statut='o',typ='R'), + KSI =SIMP(statut='o',typ='R'), + GAMMA_CJS =SIMP(statut='o',typ='R'), + SIGMA_P1 =SIMP(statut='o',typ='R'), + PA =SIMP(statut='o',typ='R'), + ), + LETK =FACT(statut='f', + PA =SIMP(statut='o',typ='R',fr="pression atmospherique"), + NELAS =SIMP(statut='o',typ='R',fr="exposant de la loi de variation des modules K et G"), + SIGMA_C =SIMP(statut='o',typ='R',fr="résistance en compression simple "), + H0_EXT =SIMP(statut='o',typ='R',fr="parametre pilotant la résistance en extension"), + GAMMA_CJS =SIMP(statut='o',typ='R',fr="parametre de forme du critere ds le plan déviatoire entre 0 et 1."), + XAMS =SIMP(statut='o',typ='R',fr="parametre non nul intervenant dans les lois d'écrouissage pre pic"), + ETA =SIMP(statut='o',typ='R',fr="parametre non nul intervenant dans les lois d'écrouissage post pic"), + A_0 =SIMP(statut='o',typ='R',fr="a de la limite d'élasticité initiale"), + A_E =SIMP(statut='o',typ='R',fr="a de la limite de clivage ou seuil intermédiaire"), + A_PIC =SIMP(statut='o',typ='R',fr="a du seuil de pic"), + S_0 =SIMP(statut='o',typ='R',fr="s de la limite d'élasticité initiale"), + M_0 =SIMP(statut='o',typ='R',fr="m de la limite d'élasticité initiale"), + M_E =SIMP(statut='o',typ='R',fr="m de la limite de clivage ou seuil intermédiaire"), + M_PIC =SIMP(statut='o',typ='R',fr="m du seuil de pic"), + M_ULT =SIMP(statut='o',typ='R',fr="m du seuil residuel"), + XI_ULT =SIMP(statut='o',typ='R',fr="niveau d écrouissage pour atteindre le seuil résiduel"), + XI_E =SIMP(statut='o',typ='R',fr="niveau d écrouissage pour atteindre le seuil de clivage"), + XI_PIC =SIMP(statut='o',typ='R',fr="niveau d écrouissage pour atteindre le seuil de pic"), + MV_MAX =SIMP(statut='o',typ='R',fr="m du seuil viscoplastique maximal"), + XIV_MAX =SIMP(statut='o',typ='R',fr="niveau d écrouissage pour atteindre le seuil viscoplastique maximal"), + A =SIMP(statut='o',typ='R',fr="parametre carcaterisant l amplitude de la vitesse de fluage"), + N =SIMP(statut='o',typ='R',fr="parametre intervenant dans la formule pilotant la cinetique de fluage"), + SIGMA_P1 =SIMP(statut='o',typ='R',fr="SIG min de l intersection du seuil de pic et intermediaire "), + MU0_V =SIMP(statut='o',typ='R',fr="relatif à l angle de dilatance des mecanismes pre pic et viscoplastique"), + XI0_V =SIMP(statut='o',typ='R',fr="relatif à l angle de dilatance des mecanismes pre pic et viscoplastique"), + MU1 =SIMP(statut='o',typ='R',fr="relatif à l angle de dilatance du mecanisme post pic "), + XI1 =SIMP(statut='o',typ='R',fr="relatif à l angle de dilatance du mecanisme post pic "), + ), + DRUCK_PRAGER =FACT(statut='f', + ALPHA =SIMP(statut='o',typ='R'), + SY =SIMP(statut='o',typ='R'), + P_ULTM =SIMP(statut='o',typ='R'), + ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")), + b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'", + fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire", + H =SIMP(statut='o',typ='R'), + TYPE_DP =SIMP(statut='c',typ='R',defaut= 1.0,), + ), + b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'", + fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique", + SY_ULTM =SIMP(statut='o',typ='R'), + TYPE_DP =SIMP(statut='c',typ='R',defaut= 2.0,), + ), + DILAT =SIMP(statut='f',typ='R',defaut=0.0), + ), + + DRUCK_PRAGER_FO =FACT(statut='f', + ALPHA =SIMP(statut='o',typ=(fonction_sdaster,formule)), + SY =SIMP(statut='o',typ=(fonction_sdaster,formule)), + P_ULTM =SIMP(statut='o',typ=(fonction_sdaster,formule)), + ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")), + b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'", + fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire", + H =SIMP(statut='o',typ=(fonction_sdaster,formule)), + TYPE_DP =SIMP(statut='c',typ='R',defaut= 1.0,), + ), + b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'", + fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique", + SY_ULTM =SIMP(statut='o',typ=(fonction_sdaster,formule)), + TYPE_DP =SIMP(statut='c',typ='R',defaut= 2.0,), + ), + DILAT =SIMP(statut='f',typ='R',defaut=0.0), + ), + + VISC_DRUC_PRAG =FACT(statut='f', + PREF =SIMP(statut='o',typ='R',fr="pression de reference"), + A =SIMP(statut='o',typ='R',fr="parametre carcaterisant l amplitude de la vitesse de fluage"), + N =SIMP(statut='o',typ='R',fr="parametre intervenant dans la formule pilotant la cinetique de fluage"), + P_PIC =SIMP(statut='o',typ='R',fr="niveau d ecrouissage pour atteindre le seuil de pic"), + P_ULT =SIMP(statut='o',typ='R',fr="niveau d ecrouissage pour atteindre le seuil utime"), + ALPHA_0 =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la cohesion au seuil d elasticite"), + ALPHA_PIC =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la cohesion au seuil de pic"), + ALPHA_ULT =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la cohesion au seuil ultime"), + R_0 =SIMP(statut='o',typ='R',fr="parametre d ecrouissage correspondant au seuil d'elasticite"), + R_PIC =SIMP(statut='o',typ='R',fr="parametre d ecrouissage correspondant au seuil de pic"), + R_ULT =SIMP(statut='o',typ='R',fr="parametre d ecrouissage correspondant au seuil ultime"), + BETA_0 =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la dilatance au seuil d elasticite"), + BETA_PIC =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la dilatance au seuil de pic"), + BETA_ULT =SIMP(statut='o',typ='R',fr="parametre d ecrouissage relatif à la dilatance au seuil ultime"), + ), + HOEK_BROWN =FACT(statut='f', + GAMMA_RUP =SIMP(statut='o',typ='R'), + GAMMA_RES =SIMP(statut='o',typ='R'), + S_END =SIMP(statut='o',typ='R'), + S_RUP =SIMP(statut='o',typ='R'), + M_END =SIMP(statut='o',typ='R'), + M_RUP =SIMP(statut='o',typ='R'), + BETA =SIMP(statut='o',typ='R'), + ALPHAHB =SIMP(statut='o',typ='R'), + PHI_RUP =SIMP(statut='o',typ='R'), + PHI_RES =SIMP(statut='o',typ='R'), + PHI_END =SIMP(statut='f',typ='R'), + ), + ELAS_GONF =FACT(statut='f', + BETAM =SIMP(statut='o',typ='R'), + PREF =SIMP(statut='o',typ='R'), + ), + JOINT_BANDIS =FACT(statut='f', + K =SIMP(statut='o',typ='R'), + DMAX =SIMP(statut='o',typ='R'), + GAMMA =SIMP(statut='o',typ='R'), + KT =SIMP(statut='f',typ='R',defaut = 1.E12), + ), +#### MONOCRISTAL + + MONO_VISC1 =FACT(statut='f', + TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), + N =SIMP(statut='o',typ='R'), + K =SIMP(statut='o',typ='R'), + C =SIMP(statut='o',typ='R'), + ), + MONO_VISC2 =FACT(statut='f', + TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), + N =SIMP(statut='o',typ='R'), + K =SIMP(statut='o',typ='R'), + C =SIMP(statut='o',typ='R'), + D =SIMP(statut='o',typ='R'), + A =SIMP(statut='o',typ='R'), + ), + MONO_ISOT1 =FACT(statut='f', + regles=(UN_PARMI('H','H1'), + PRESENT_PRESENT('H1','H2','H3','H4'), + PRESENT_ABSENT('H','H1','H2','H3','H4','H5','H6'), + ), + TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_ISOT",),), + R_0 =SIMP(statut='o',typ='R'), + Q =SIMP(statut='o',typ='R'), + B =SIMP(statut='o',typ='R'), + H =SIMP(statut='f',typ='R'), + H1 =SIMP(statut='f',typ='R'), + H2 =SIMP(statut='f',typ='R'), + H3 =SIMP(statut='f',typ='R'), + H4 =SIMP(statut='f',typ='R'), + H5 =SIMP(statut='f',typ='R'), + H6 =SIMP(statut='f',typ='R'), + ), + MONO_ISOT2 =FACT(statut='f', + regles=(UN_PARMI('H','H1'), + PRESENT_PRESENT('H1','H2','H3','H4'), + PRESENT_ABSENT('H','H1','H2','H3','H4','H5','H6'), + ), + TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_ISOT",),), + R_0 =SIMP(statut='o',typ='R'), + Q1 =SIMP(statut='o',typ='R'), + B1 =SIMP(statut='o',typ='R'), + H =SIMP(statut='f',typ='R'), + H1 =SIMP(statut='f',typ='R'), + H2 =SIMP(statut='f',typ='R'), + H3 =SIMP(statut='f',typ='R'), + H4 =SIMP(statut='f',typ='R'), + H5 =SIMP(statut='f',typ='R'), + H6 =SIMP(statut='f',typ='R'), + Q2 =SIMP(statut='o',typ='R'), + B2 =SIMP(statut='o',typ='R'), + ), + MONO_CINE1 =FACT(statut='f', + TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_CINE",),), + D =SIMP(statut='o',typ='R'), + ), + MONO_CINE2 =FACT(statut='f', + TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_CINE",),), + D =SIMP(statut='o',typ='R'), + GM =SIMP(statut='o',typ='R'), + PM =SIMP(statut='o',typ='R'), + C =SIMP(statut='o',typ='R'), + ), + MONO_DD_KR =FACT(statut='f', + regles=(UN_PARMI('H','H1'), + PRESENT_PRESENT('H1','H2','H3','H4'), + PRESENT_ABSENT('H','H1','H2','H3','H4','H5','H6'), + ), + # TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), + K =SIMP(statut='o',typ='R',fr="Constante de Boltzmann, en eV/K"), + TAUR =SIMP(statut='o',typ='R',fr="Contraintes de cisaillement à T=0K, en unite de contraintes"), + TAU0 =SIMP(statut='o',typ='R',fr="Contraintes critique initiale de cisaillement, en unite de contraintes"), + GAMMA0 =SIMP(statut='o',typ='R',fr="Vitesse d ecoulement initiale"), + DELTAG0 =SIMP(statut='o',typ='R',fr="Gain d energie lie au franchissement d obstacle"), + BSD =SIMP(statut='o',typ='R',fr="fonction de la taille du grain B/D"), + GCB =SIMP(statut='o',typ='R',fr="distance critique d'annihilation GC/B"), + KDCS =SIMP(statut='o',typ='R',fr="Parametre relatif à la direction principale de la dislocation"), + P =SIMP(statut='o',typ='R',fr="Parametre materiau dépendant de la forme de l'obstacle"), + Q =SIMP(statut='o',typ='R',fr="Parametre materiau dépendant de la forme de l'obstacle"), + H =SIMP(statut='f',typ='R'), + H1 =SIMP(statut='f',typ='R'), + H2 =SIMP(statut='f',typ='R'), + H3 =SIMP(statut='f',typ='R'), + H4 =SIMP(statut='f',typ='R'), + H5 =SIMP(statut='f',typ='R'), + H6 =SIMP(statut='f',typ='R'), + ), + MONO_DD_CFC =FACT(statut='f', + regles=(UN_PARMI('H','H1'), + PRESENT_PRESENT('H1','H2','H3','H4','H5'), + PRESENT_ABSENT('H','H1','H2','H3','H4','H5'), + ), + #TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), + GAMMA0 =SIMP(statut='f',typ='R',defaut=0.001,fr="Vitesse d ecoulement initiale en s**-1"), + TAU_F =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"), + A =SIMP(statut='f',typ='R',defaut=0.13,fr="paramètre A, sans unité"), + B =SIMP(statut='f',typ='R',defaut=0.005,fr="paramètre B, sans unité"), + N =SIMP(statut='f',typ='R',defaut=200.,fr="paramètre n, sans unité"), + Y =SIMP(statut='o',typ='R',fr="paramète Y, en unité de longueur ex 2.5 A"), + ALPHA =SIMP(statut='f',typ='R',defaut=0.35,fr="ecrouissage, paramètre alpha"), + BETA =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre b, en unite de longueur"), + RHO_REF =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre rho_ref, en unité de longueur **-2"), + H =SIMP(statut='f',typ='R'), + H1 =SIMP(statut='f',typ='R',defaut=0.124,fr="matrice d'interaction, terme a*",), + H2 =SIMP(statut='f',typ='R',defaut=0.625,fr="matrice d'interaction, terme a_colineaire",), + H3 =SIMP(statut='f',typ='R',defaut=0.137,fr="matrice d'interaction, terme a_glissile",), + H4 =SIMP(statut='f',typ='R',defaut=0.122,fr="matrice d'interaction, terme a_Lomer",), + H5 =SIMP(statut='f',typ='R',defaut=0.07,fr="matrice d'interaction, terme a_Hirth",), + ), + + MONO_DD_FAT =FACT(statut='f', + regles=(UN_PARMI('H','H1'), + PRESENT_PRESENT('H1','H2','H3','H4','H5'), + PRESENT_ABSENT('H','H1','H2','H3','H4','H5'), + ), + #TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), + GAMMA0 =SIMP(statut='o',typ='R',fr="Vitesse d ecoulement initiale en s**-1"), + TAU_F =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"), + BETA =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre b, en unite de longueur"), + N =SIMP(statut='o',typ='R',fr="paramètre n, sans unite"), + UN_SUR_D =SIMP(statut='o',typ='R',fr="paramètre 1/D, en unite de 1/longueur"), + GC0 =SIMP(statut='o',typ='R',fr="paramètre GC0, en unite de longueur"), + K =SIMP(statut='o',typ='R',fr="paramètre K, sans unite"), + H =SIMP(statut='f',typ='R'), + H1 =SIMP(statut='f',typ='R',defaut=0.124,fr="matrice d'interaction, terme a*",), + H2 =SIMP(statut='f',typ='R',defaut=0.625,fr="matrice d'interaction, terme a_colineaire",), + H3 =SIMP(statut='f',typ='R',defaut=0.137,fr="matrice d'interaction, terme a_glissile",), + H4 =SIMP(statut='f',typ='R',defaut=0.122,fr="matrice d'interaction, terme a_Lomer",), + H5 =SIMP(statut='f',typ='R',defaut=0.07,fr="matrice d'interaction, terme a_Hirth",), + ), + + MONO_DD_CC =FACT(statut='f', + regles=(UN_PARMI('H','H1'), + PRESENT_PRESENT('H1','H2','H3','H4','H5','H6'), + PRESENT_ABSENT('H','H1','H2','H3','H4','H5','H6'), + ), + #TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),), + GAMMA0 =SIMP(statut='f',typ='R',defaut=0.001,fr="Vitesse d ecoulement initiale en s**-1"), + TAU_F =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"), + A =SIMP(statut='f',typ='R',defaut=0.13,fr="paramètre A, sans unité"), + B =SIMP(statut='f',typ='R',defaut=0.005,fr="paramètre B, sans unité"), + N =SIMP(statut='f',typ='R',defaut=200.,fr="paramètre n, sans unité"), + Y =SIMP(statut='o',typ='R',fr="paramète Y, en unité de longueur ex 2.5 A"), + ALPHA =SIMP(statut='f',typ='R',defaut=0.35,fr="ecrouissage, paramètre alpha"), + BETA =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre b, en unite de longueur"), + RHO_REF =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre rho_ref, en unité de longueur **-2"), + H =SIMP(statut='f',typ='R'), + H1 =SIMP(statut='f',typ='R'), + H2 =SIMP(statut='f',typ='R'), + H3 =SIMP(statut='f',typ='R'), + H4 =SIMP(statut='f',typ='R'), + H5 =SIMP(statut='f',typ='R'), + H6 =SIMP(statut='f',typ='R'), + ), + + +#### MONOCRISTAL + +### UMAT + UMAT =FACT(statut='f', + C1 =SIMP(statut='f',typ='R'), + C2 =SIMP(statut='f',typ='R'), + C3 =SIMP(statut='f',typ='R'), + C4 =SIMP(statut='f',typ='R'), + C5 =SIMP(statut='f',typ='R'), + C6 =SIMP(statut='f',typ='R'), + C7 =SIMP(statut='f',typ='R'), + C8 =SIMP(statut='f',typ='R'), + C9 =SIMP(statut='f',typ='R'), + C10 =SIMP(statut='f',typ='R'), + C11 =SIMP(statut='f',typ='R'), + C12 =SIMP(statut='f',typ='R'), + C13 =SIMP(statut='f',typ='R'), + C14 =SIMP(statut='f',typ='R'), + C15 =SIMP(statut='f',typ='R'), + C16 =SIMP(statut='f',typ='R'), + C17 =SIMP(statut='f',typ='R'), + C18 =SIMP(statut='f',typ='R'), + C19 =SIMP(statut='f',typ='R'), + C20 =SIMP(statut='f',typ='R'), + C21 =SIMP(statut='f',typ='R'), + C22 =SIMP(statut='f',typ='R'), + C23 =SIMP(statut='f',typ='R'), + C24 =SIMP(statut='f',typ='R'), + C25 =SIMP(statut='f',typ='R'), + C26 =SIMP(statut='f',typ='R'), + C27 =SIMP(statut='f',typ='R'), + C28 =SIMP(statut='f',typ='R'), + C29 =SIMP(statut='f',typ='R'), + C30 =SIMP(statut='f',typ='R'), + C31 =SIMP(statut='f',typ='R'), + C32 =SIMP(statut='f',typ='R'), + C33 =SIMP(statut='f',typ='R'), + C34 =SIMP(statut='f',typ='R'), + C35 =SIMP(statut='f',typ='R'), + C36 =SIMP(statut='f',typ='R'), + C37 =SIMP(statut='f',typ='R'), + C38 =SIMP(statut='f',typ='R'), + C39 =SIMP(statut='f',typ='R'), + C40 =SIMP(statut='f',typ='R'), + C41 =SIMP(statut='f',typ='R'), + C42 =SIMP(statut='f',typ='R'), + C43 =SIMP(statut='f',typ='R'), + C44 =SIMP(statut='f',typ='R'), + C45 =SIMP(statut='f',typ='R'), + C46 =SIMP(statut='f',typ='R'), + C47 =SIMP(statut='f',typ='R'), + C48 =SIMP(statut='f',typ='R'), + C49 =SIMP(statut='f',typ='R'), + C50 =SIMP(statut='f',typ='R'), + C51 =SIMP(statut='f',typ='R'), + C52 =SIMP(statut='f',typ='R'), + C53 =SIMP(statut='f',typ='R'), + C54 =SIMP(statut='f',typ='R'), + C55 =SIMP(statut='f',typ='R'), + C56 =SIMP(statut='f',typ='R'), + C57 =SIMP(statut='f',typ='R'), + C58 =SIMP(statut='f',typ='R'), + C59 =SIMP(statut='f',typ='R'), + C60 =SIMP(statut='f',typ='R'), + C61 =SIMP(statut='f',typ='R'), + C62 =SIMP(statut='f',typ='R'), + C63 =SIMP(statut='f',typ='R'), + C64 =SIMP(statut='f',typ='R'), + C65 =SIMP(statut='f',typ='R'), + C66 =SIMP(statut='f',typ='R'), + C67 =SIMP(statut='f',typ='R'), + C68 =SIMP(statut='f',typ='R'), + C69 =SIMP(statut='f',typ='R'), + C70 =SIMP(statut='f',typ='R'), + C71 =SIMP(statut='f',typ='R'), + C72 =SIMP(statut='f',typ='R'), + C73 =SIMP(statut='f',typ='R'), + C74 =SIMP(statut='f',typ='R'), + C75 =SIMP(statut='f',typ='R'), + C76 =SIMP(statut='f',typ='R'), + C77 =SIMP(statut='f',typ='R'), + C78 =SIMP(statut='f',typ='R'), + C79 =SIMP(statut='f',typ='R'), + C80 =SIMP(statut='f',typ='R'), + C81 =SIMP(statut='f',typ='R'), + C82 =SIMP(statut='f',typ='R'), + C83 =SIMP(statut='f',typ='R'), + C84 =SIMP(statut='f',typ='R'), + C85 =SIMP(statut='f',typ='R'), + C86 =SIMP(statut='f',typ='R'), + C87 =SIMP(statut='f',typ='R'), + C88 =SIMP(statut='f',typ='R'), + C89 =SIMP(statut='f',typ='R'), + C90 =SIMP(statut='f',typ='R'), + C91 =SIMP(statut='f',typ='R'), + C92 =SIMP(statut='f',typ='R'), + C93 =SIMP(statut='f',typ='R'), + C94 =SIMP(statut='f',typ='R'), + C95 =SIMP(statut='f',typ='R'), + C96 =SIMP(statut='f',typ='R'), + C97 =SIMP(statut='f',typ='R'), + C98 =SIMP(statut='f',typ='R'), + C99 =SIMP(statut='f',typ='R'), + C100 =SIMP(statut='f',typ='R'), + C101 =SIMP(statut='f',typ='R'), + C102 =SIMP(statut='f',typ='R'), + C103 =SIMP(statut='f',typ='R'), + C104 =SIMP(statut='f',typ='R'), + C105 =SIMP(statut='f',typ='R'), + C106 =SIMP(statut='f',typ='R'), + C107 =SIMP(statut='f',typ='R'), + C108 =SIMP(statut='f',typ='R'), + C109 =SIMP(statut='f',typ='R'), + C110 =SIMP(statut='f',typ='R'), + C111 =SIMP(statut='f',typ='R'), + C112 =SIMP(statut='f',typ='R'), + C113 =SIMP(statut='f',typ='R'), + C114 =SIMP(statut='f',typ='R'), + C115 =SIMP(statut='f',typ='R'), + C116 =SIMP(statut='f',typ='R'), + C117 =SIMP(statut='f',typ='R'), + C118 =SIMP(statut='f',typ='R'), + C119 =SIMP(statut='f',typ='R'), + C120 =SIMP(statut='f',typ='R'), + C121 =SIMP(statut='f',typ='R'), + C122 =SIMP(statut='f',typ='R'), + C123 =SIMP(statut='f',typ='R'), + C124 =SIMP(statut='f',typ='R'), + C125 =SIMP(statut='f',typ='R'), + C126 =SIMP(statut='f',typ='R'), + C127 =SIMP(statut='f',typ='R'), + C128 =SIMP(statut='f',typ='R'), + C129 =SIMP(statut='f',typ='R'), + C130 =SIMP(statut='f',typ='R'), + C131 =SIMP(statut='f',typ='R'), + C132 =SIMP(statut='f',typ='R'), + C133 =SIMP(statut='f',typ='R'), + C134 =SIMP(statut='f',typ='R'), + C135 =SIMP(statut='f',typ='R'), + C136 =SIMP(statut='f',typ='R'), + C137 =SIMP(statut='f',typ='R'), + C138 =SIMP(statut='f',typ='R'), + C139 =SIMP(statut='f',typ='R'), + C140 =SIMP(statut='f',typ='R'), + C141 =SIMP(statut='f',typ='R'), + C142 =SIMP(statut='f',typ='R'), + C143 =SIMP(statut='f',typ='R'), + C144 =SIMP(statut='f',typ='R'), + C145 =SIMP(statut='f',typ='R'), + C146 =SIMP(statut='f',typ='R'), + C147 =SIMP(statut='f',typ='R'), + C148 =SIMP(statut='f',typ='R'), + C149 =SIMP(statut='f',typ='R'), + C150 =SIMP(statut='f',typ='R'), + C151 =SIMP(statut='f',typ='R'), + C152 =SIMP(statut='f',typ='R'), + C153 =SIMP(statut='f',typ='R'), + C154 =SIMP(statut='f',typ='R'), + C155 =SIMP(statut='f',typ='R'), + C156 =SIMP(statut='f',typ='R'), + C157 =SIMP(statut='f',typ='R'), + C158 =SIMP(statut='f',typ='R'), + C159 =SIMP(statut='f',typ='R'), + C160 =SIMP(statut='f',typ='R'), + C161 =SIMP(statut='f',typ='R'), + C162 =SIMP(statut='f',typ='R'), + C163 =SIMP(statut='f',typ='R'), + C164 =SIMP(statut='f',typ='R'), + C165 =SIMP(statut='f',typ='R'), + C166 =SIMP(statut='f',typ='R'), + C167 =SIMP(statut='f',typ='R'), + C168 =SIMP(statut='f',typ='R'), + C169 =SIMP(statut='f',typ='R'), + C170 =SIMP(statut='f',typ='R'), + C171 =SIMP(statut='f',typ='R'), + C172 =SIMP(statut='f',typ='R'), + C173 =SIMP(statut='f',typ='R'), + C174 =SIMP(statut='f',typ='R'), + C175 =SIMP(statut='f',typ='R'), + C176 =SIMP(statut='f',typ='R'), + C177 =SIMP(statut='f',typ='R'), + C178 =SIMP(statut='f',typ='R'), + C179 =SIMP(statut='f',typ='R'), + C180 =SIMP(statut='f',typ='R'), + C181 =SIMP(statut='f',typ='R'), + C182 =SIMP(statut='f',typ='R'), + C183 =SIMP(statut='f',typ='R'), + C184 =SIMP(statut='f',typ='R'), + C185 =SIMP(statut='f',typ='R'), + C186 =SIMP(statut='f',typ='R'), + C187 =SIMP(statut='f',typ='R'), + C188 =SIMP(statut='f',typ='R'), + C189 =SIMP(statut='f',typ='R'), + C190 =SIMP(statut='f',typ='R'), + C191 =SIMP(statut='f',typ='R'), + C192 =SIMP(statut='f',typ='R'), + C193 =SIMP(statut='f',typ='R'), + C194 =SIMP(statut='f',typ='R'), + C195 =SIMP(statut='f',typ='R'), + C196 =SIMP(statut='f',typ='R'), + C197 =SIMP(statut='f',typ='R'), + C198 =SIMP(statut='f',typ='R'), + C199 =SIMP(statut='f',typ='R'), + C200 =SIMP(statut='f',typ='R'), + ), + UMAT_FO =FACT(statut='f', + C1 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C2 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C3 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C4 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C5 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C6 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C7 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C8 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C9 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C10 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C11 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C12 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C13 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C14 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C15 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C16 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C17 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C18 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C19 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C20 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C21 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C22 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C23 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C24 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C25 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C26 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C27 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C28 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C29 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C30 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C31 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C32 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C33 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C34 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C35 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C36 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C37 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C38 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C39 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C40 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C41 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C42 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C43 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C44 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C45 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C46 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C47 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C48 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C49 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C50 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C51 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C52 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C53 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C54 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C55 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C56 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C57 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C58 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C59 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C60 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C61 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C62 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C63 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C64 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C65 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C66 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C67 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C68 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C69 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C70 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C71 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C72 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C73 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C74 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C75 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C76 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C77 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C78 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C79 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C80 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C81 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C82 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C83 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C84 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C85 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C86 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C87 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C88 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C89 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C90 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C91 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C92 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C93 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C94 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C95 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C96 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C97 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C98 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C99 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C100 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C101 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C102 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C103 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C104 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C105 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C106 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C107 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C108 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C109 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C110 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C111 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C112 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C113 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C114 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C115 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C116 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C117 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C118 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C119 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C120 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C121 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C122 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C123 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C124 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C125 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C126 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C127 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C128 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C129 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C130 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C131 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C132 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C133 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C134 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C135 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C136 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C137 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C138 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C139 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C140 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C141 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C142 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C143 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C144 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C145 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C146 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C147 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C148 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C149 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C150 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C151 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C152 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C153 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C154 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C155 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C156 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C157 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C158 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C159 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C160 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C161 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C162 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C163 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C164 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C165 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C166 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C167 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C168 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C169 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C170 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C171 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C172 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C173 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C174 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C175 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C176 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C177 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C178 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C179 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C180 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C181 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C182 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C183 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C184 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C185 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C186 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C187 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C188 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C189 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C190 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C191 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C192 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C193 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C194 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C195 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C196 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C197 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C198 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C199 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + C200 =SIMP(statut='f',typ=(fonction_sdaster,formule)), + ), +### UMAT + + + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) ; + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR NISTOR I.NISTOR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE BODEL C.BODEL +DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene, + reentrant='n', + fr="Créer la structure globale à partir des sous-structures en sous-structuration dynamique", + UIinfo={"groupes":("Matrices et vecteurs",)}, + SOUS_STRUC =FACT(statut='o',max='**', + NOM =SIMP(statut='o',typ='TXM' ), + MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), + ANGL_NAUT =SIMP(statut='o',typ='R',max=3), + TRANS =SIMP(statut='o',typ='R',max=3), + ), + LIAISON =FACT(statut='o',max='**', + SOUS_STRUC_1 =SIMP(statut='o',typ='TXM' ), + INTERFACE_1 =SIMP(statut='o',typ='TXM' ), + SOUS_STRUC_2 =SIMP(statut='o',typ='TXM' ), + INTERFACE_2 =SIMP(statut='o',typ='TXM' ), + regles=(EXCLUS('GROUP_MA_MAIT_1','GROUP_MA_MAIT_2','MAILLE_MAIT_2'), + EXCLUS('MAILLE_MAIT_1','GROUP_MA_MAIT_2','MAILLE_MAIT_2'),), + GROUP_MA_MAIT_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_MAIT_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA_MAIT_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_MAIT_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + OPTION =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("REDUIT","CLASSIQUE") ), + ), + VERIF =FACT(statut='f',max='**', +# dans la doc U stop_erreur est obligatoire + STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 22/03/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op=4,sd_prod=nappe_sdaster, + fr="Définir une fonction réelle de deux variables réelles", + reentrant='n',UIinfo={"groupes":("Fonctions",)}, + regles=(UN_PARMI('FONCTION','DEFI_FONCTION'), + EXCLUS('FONCTION','NOM_PARA_FONC',), + ENSEMBLE('NOM_PARA_FONC','DEFI_FONCTION'),), + NOM_PARA =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ), + NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), + PARA =SIMP(statut='o',typ='R',max='**'), + FONCTION =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ), + NOM_PARA_FONC =SIMP(statut='f',typ='TXM',into=C_PARA_FONCTION() ), + DEFI_FONCTION =FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ='R',max='**'), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"), + fr="Type d'interpolation pour les abscisses et les ordonnées de la fonction."), + PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"), + fr="Type d'interpolation pour le paramètre de la nappe"), + PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1, 2) ), + VERIF =SIMP(statut='f',typ='TXM',into=("CROISSANT",) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE KHAM M.KHAM +DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op= 73,sd_prod=table_fonction, + fr="Définition d'un obstacle plan perpendiculaire à une structure filaire", + reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + TYPE =SIMP(statut='o',typ='TXM',defaut="CERCLE", + into=("CERCLE","PLAN_Y","PLAN_Z","DISCRET", + "BI_CERCLE","BI_PLAN_Y","BI_PLAN_Z","BI_CERC_INT", + "CRAYON_900","CRAYON_1300","GUID_A_CARTE_900", + "GUID_B_CARTE_900","GUID_C_CARTE_900", + "GUID_D_CARTE_900","GUID_E_CARTE_900", + "GUID_F_CARTE_900","GUID_A_CARTE_1300", + "GUID_B_CARTE_1300","GUID_C_CARTE_1300", + "GUID_D_CARTE_1300","GUID_E_CARTE_1300", + "GUID_F_CARTE_1300","GUID_A_CARSP_900", + "GUID_B_CARSP_900","GUID_C_CARSP_900", + "GUID_D_CARSP_900","GUID_E_CARSP_900", + "GUID_F_CARSP_900","GUID_A_CARSP_1300", + "GUID_B_CARSP_1300","GUID_C_CARSP_1300", + "GUID_D_CARSP_1300","GUID_E_CARSP_1300", + "GUID_F_CARSP_1300","GUID_A_GCONT_900", + "GUID_B_GCONT_900","GUID_C_GCONT_900", + "GUID_D_GCONT_900","GUID_E_GCONT_900", + "GUID_F_GCONT_900","GUID_A_GCONT_1300", + "GUID_B_GCONT_1300","GUID_C_GCONT_1300", + "GUID_D_GCONT_1300","GUID_E_GCONT_1300", + "GUID_F_GCONT_1300","GUID_A_GCOMB_900", + "GUID_B_GCOMB_900","GUID_C_GCOMB_900", + "GUID_D_GCOMB_900","GUID_E_GCOMB_900", + "GUID_F_GCOMB_900","GUID_A_GCOMB_1300", + "GUID_B_GCOMB_1300","GUID_C_GCOMB_1300", + "GUID_D_GCOMB_1300","GUID_E_GCOMB_1300", + "GUID_F_GCOMB_1300",) ), + VALE =SIMP(statut='f',typ='R',max='**'), + VERIF =SIMP(statut='f',typ='TXM',defaut="FERME"), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE GNICOLAS G.NICOLAS +DEFI_PARA_SENSI=OPER(nom="DEFI_PARA_SENSI",op= 2,sd_prod=para_sensi, + fr="Définition d'un paramètre de sensibilité", + ang="Definition of a sensitive parameter", + reentrant='n', + UIinfo={"groupes":("Fonctions",)}, + NOM_RESU =SIMP(statut='c',typ='TXM',into=("TOUTRESU",),defaut="TOUTRESU", + fr="Nom du concept créé", + ang="Name of the concept"), + VALE =SIMP(statut='o',typ='R', + fr="Valeur du parametre", + ang="Value of the parameter"), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE + + +DEFI_PART_FETI=MACRO(nom="DEFI_PART_FETI", + op=OPS('Macro.defi_part_feti_ops.defi_part_feti_ops'), + sd_prod=sd_feti_sdaster, + reentrant='n',UIinfo={"groupes":("Modélisation",)}, + fr="Creation partitionnement en sous-domaines pour FETI", + regles=(UN_PARMI('MAILLAGE','MODELE'),PRESENT_PRESENT('MODELE','EXCIT'),), + + NB_PART =SIMP(statut='o',typ='I',val_min=2), + MAILLAGE =SIMP(statut='f',typ=maillage_sdaster), + MODELE =SIMP(statut='f',typ=modele_sdaster), + EXCIT =FACT(statut='f',max='**', + CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)),), + + # Methode de partitionnement + METHODE =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="KMETIS" ), + + LOGICIEL =SIMP(statut='f',typ='TXM'), + + # Corrige les problemes possibles de non-connexite des sous-domaines + CORRECTION_CONNEX =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')), + + # Permet de grouper des mailles dans un meme sous-doamine + GROUPAGE =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma,), + ), + # Permet d'appliquer des poids sur certaines mailles + POIDS_MAILLES =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma,), + POIDS =SIMP(statut='f',typ='I',val_min=2), + ), + # Prefixe pour le nom des group_ma definissant les sous-domaines + NOM_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='SD' ), + + # Traiter les mailles de bords (elles sont enlevees du graphe puis reinjectees) + TRAITER_BORDS =SIMP(statut='f',typ='TXM',defaut='OUI',into=('OUI','NON') ), + + # Si le mot-clé suivant est renseigné, crée de nouveau group_ma a partir des bords + # Note : le calcul FETI sera impossible + b_traiter_bords =BLOC(condition="TRAITER_BORDS == 'OUI'", fr="Crée t on des nouveaux group_ma", + NOM_GROUP_MA_BORD =SIMP(statut='f',typ='TXM'), + ), + + INFO =SIMP(statut='f',typ='I',into=(1, 2), defaut=1), +); +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE + +DEFI_PART_OPS=OPER(nom="DEFI_PART_OPS",op=21,sd_prod=sd_feti_sdaster, + fr="Creation partitionnement en sous-domaines pour FETI", + docu="U4.23.05",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + MODELE =SIMP(statut='o',typ=(modele_sdaster) ), + MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ), + NOM =SIMP(statut='f',typ='TXM',defaut='SD'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4) ), + DEFI =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma), + GROUP_MA_BORD =SIMP(statut='f',typ=grma), + ), + EXCIT =FACT(statut='f',max='**', + CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)), + ), +); +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2005 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. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE + +DEFI_PART_PA_OPS=PROC(nom="DEFI_PART_PA_OPS",op=29, + fr="Creation partitionnement en sous-domaines pour FETI", + docu="U4.00.00", + UIinfo={"groupes":("Modélisation",)}, + MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster,squelette) ), + MODELE =SIMP(statut='f',typ=(modele_sdaster)), + NB_PART =SIMP(statut='o',typ='I',), + + # Methode de partitionnement + METHODE =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="KMETIS" ), + + LOGICIEL =SIMP(statut='f',typ='TXM'), + + # Corrige les problemes possibles de non-connexite des sous-domaines + CORRECTION_CONNEX =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')), + + # Permet de grouper des mailles dans un meme sous-doamine + GROUPAGE =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma,), + ), + # Permet d'appliquer des poids sur certaines mailles + POIDS_MAILLES =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma,), + POIDS =SIMP(statut='f',typ='I'), + ), + # Prefixe pour le nom des group_ma definissant les sous-domaines + NOM_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='SD' ), + + # Traiter les mailles de bords (elles sont enlevees du graphe puis reinjectees) + TRAITER_BORDS =SIMP(statut='f',typ='TXM',defaut='OUI',into=('OUI','NON') ), + + # Si le mot-clé suivant est renseigné, crée de nouveau group_ma a partir des bords + # Note : le calcul FETI sera impossible + b_traiter_bords =BLOC(condition="TRAITER_BORDS == 'OUI'", fr="Crée t on des nouveaux group_ma", + NOM_GROUP_MA_BORD =SIMP(statut='f',typ='TXM'), + ), + + INFO =SIMP(statut='f',typ='I',into=(1, 2), defaut=1), + +); +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +DEFI_SOL_MISS = MACRO(nom="DEFI_SOL_MISS", + op=OPS('Macro.defi_sol_miss_ops.defi_sol_miss_ops'), + sd_prod=table_sdaster, + fr="Définition des données de sol pour Miss", + reentrant='n', + UIinfo={"groupes":("Modélisation","Outils-métier",)}, + MATERIAU = FACT(statut='o', max='**', + fr="Définition des matériaux", + E = SIMP(statut='o', typ='R', fr="Module d'Young"), + NU = SIMP(statut='o', typ='R', fr="Coefficient de Poisson"), + RHO = SIMP(statut='o', typ='R', fr="Masse volumique"), + AMOR_HYST = SIMP(statut='o', typ='R', fr="Coefficient d'amortissement"), + ), + COUCHE = FACT(statut='o', max='**', + fr="Définition des couches", + regles=(AU_MOINS_UN('EPAIS','SUBSTRATUM'),), + SUBSTRATUM= SIMP(statut='f', typ='TXM', into=("OUI","NON"),), + EPAIS = SIMP(statut='f', typ='R', fr="Epaisseur de la couche"), + RECEPTEUR = SIMP(statut='f', typ='TXM', defaut="NON", into=("OUI", "NON"),), + SOURCE = SIMP(statut='f', typ='TXM', defaut="NON", into=("OUI", "NON"),), + NUME_MATE = SIMP(statut='o', typ='I', fr="Numéro du matériau"), + ), + TITRE = SIMP(statut='f', typ='TXM', max='**', + fr="Titre de la table produite"), + INFO = SIMP(statut='f', typ='I', defaut=1, into=(1,2)), +) + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ADOBES A.ADOBES +DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre_sdaster, + fr="Définition d'un spectre d'excitation turbulente", + reentrant='n', + UIinfo={"groupes":("Modélisation","Outils-métier",)}, + regles=(UN_PARMI('SPEC_LONG_COR_1','SPEC_LONG_COR_2','SPEC_LONG_COR_3', + 'SPEC_LONG_COR_4','SPEC_CORR_CONV_1','SPEC_CORR_CONV_2', + 'SPEC_FONC_FORME','SPEC_EXCI_POINT'),), + SPEC_LONG_COR_1 =FACT(statut='f', + LONG_COR =SIMP(statut='o',typ='R' ), + PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VISC_CINE =SIMP(statut='o',typ='R' ), + ), + SPEC_LONG_COR_2 =FACT(statut='f', + regles=(ENSEMBLE('FREQ_COUP','PHI0','BETA' ),), + LONG_COR =SIMP(statut='o',typ='R' ), + PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FREQ_COUP =SIMP(statut='f',typ='R',defaut= 0.1 ), + PHI0 =SIMP(statut='f',typ='R',defaut= 1.5E-3 ), + BETA =SIMP(statut='f',typ='R',defaut= 2.7 ), + ), + SPEC_LONG_COR_3 =FACT(statut='f', + regles=(ENSEMBLE('PHI0_1','BETA_1','PHI0_2','BETA_2','FREQ_COUP'),), + LONG_COR =SIMP(statut='o',typ='R' ), + PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + FREQ_COUP =SIMP(statut='f',typ='R',defaut= 0.2 ), + PHI0_1 =SIMP(statut='f',typ='R',defaut= 5.E-3 ), + BETA_1 =SIMP(statut='f',typ='R',defaut= 0.5 ), + PHI0_2 =SIMP(statut='f',typ='R',defaut= 4.E-5 ), + BETA_2 =SIMP(statut='f',typ='R',defaut= 3.5 ), + ), + SPEC_LONG_COR_4 =FACT(statut='f', + regles=(ENSEMBLE('BETA','GAMMA'),), + LONG_COR =SIMP(statut='o',typ='R' ), + PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TAUX_VIDE =SIMP(statut='o',typ='R' ), + BETA =SIMP(statut='f',typ='R',defaut= 2. ), + GAMMA =SIMP(statut='f',typ='R',defaut= 4. ), + ), + SPEC_CORR_CONV_1=FACT(statut='f', + LONG_COR_1 =SIMP(statut='o',typ='R' ), + LONG_COR_2 =SIMP(statut='f',typ='R' ), + VITE_FLUI =SIMP(statut='o',typ='R' ), + RHO_FLUI =SIMP(statut='o',typ='R' ), + FREQ_COUP =SIMP(statut='f',typ='R' ), + K =SIMP(statut='f',typ='R',defaut= 5.8E-3 ), + D_FLUI =SIMP(statut='o',typ='R' ), + COEF_VITE_FLUI_A=SIMP(statut='f',typ='R' ), + COEF_VITE_FLUI_O=SIMP(statut='f',typ='R' ), + METHODE =SIMP(statut='f',typ='TXM',defaut="GENERALE", + into=("AU_YANG","GENERALE","CORCOS") ), + ), + SPEC_CORR_CONV_2=FACT(statut='f', + FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VITE_FLUI =SIMP(statut='o',typ='R' ), + FREQ_COUP =SIMP(statut='f',typ='R' ), + METHODE =SIMP(statut='f',typ='TXM',defaut="GENERALE", + into=("AU_YANG","GENERALE","CORCOS",) ), + COEF_VITE_FLUI_A=SIMP(statut='f',typ='R' ), + COEF_VITE_FLUI_O=SIMP(statut='f',typ='R' ), + ), + SPEC_FONC_FORME =FACT(statut='f', + regles=(UN_PARMI('INTE_SPEC','GRAPPE_1'), + ENSEMBLE('INTE_SPEC','FONCTION'),), + INTE_SPEC =SIMP(statut='f',typ=table_fonction), + FONCTION =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'), + GRAPPE_1 =SIMP(statut='f',typ='TXM',into=("DEBIT_180","DEBIT_300",) ), + NOEUD =SIMP(statut='o',typ=no), + CARA_ELEM =SIMP(statut='o',typ=cara_elem ), + MODELE =SIMP(statut='o',typ=modele_sdaster ), + ), + SPEC_EXCI_POINT =FACT(statut='f', + regles=(UN_PARMI('INTE_SPEC','GRAPPE_2'),), + INTE_SPEC =SIMP(statut='f',typ=table_fonction), + GRAPPE_2 =SIMP(statut='f',typ='TXM', + into=("ASC_CEN","ASC_EXC","DES_CEN","DES_EXC",) ), +# Quels sont les statuts des mots cles à l interieur des deux blocs qui suivent + b_inte_spec =BLOC(condition = "INTE_SPEC != None", + NATURE =SIMP(statut='o',typ='TXM',max='**',into=("FORCE","MOMENT",) ), + ANGL =SIMP(statut='o',typ='R',max='**'), + NOEUD =SIMP(statut='o',typ=no,max='**'), + ), + b_grappe_2 =BLOC(condition = "GRAPPE_2 != None", + RHO_FLUI =SIMP(statut='o',typ='R' ), + NOEUD =SIMP(statut='o',typ=no), + ), + CARA_ELEM =SIMP(statut='o',typ=cara_elem ), + MODELE =SIMP(statut='o',typ=modele_sdaster ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 25/01/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BODEL C.BODEL +DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette, + fr="Définit un maillage pour visualiser les résultats d'une sous-structuration dynamique", + reentrant='n', + UIinfo={"groupes":("Maillage","Dynamique",)}, + regles=(UN_PARMI('CYCLIQUE','MODELE_GENE','MAILLAGE'), + PRESENT_PRESENT('CYCLIQUE','SECTEUR'), + EXCLUS('SOUS_STRUC','SECTEUR'), + PRESENT_PRESENT('NOM_GROUP_MA','MODELE_GENE'), + PRESENT_PRESENT('NOM_GROUP_MA','SOUS_STRUC'),), + CYCLIQUE =FACT(statut='f',max='**', + regles=(UN_PARMI('MODE_CYCL','MAILLAGE'), + PRESENT_PRESENT('NB_SECTEUR','MAILLAGE'),), + MODE_CYCL =SIMP(statut='f',typ=mode_cycl ), + NB_SECTEUR =SIMP(statut='f',typ='I',validators=NoRepeat(),max=1 ), + MAILLAGE =SIMP(statut='f',typ=maillage_sdaster ), + ), + MODELE_GENE =SIMP(statut='f',typ=modele_gene ), + SQUELETTE =SIMP(statut='f',typ=squelette ), + RECO_GLOBAL =FACT(statut='f',max='**', + regles=(EXCLUS('TOUT','GROUP_NO_1'), + PRESENT_PRESENT('GROUP_NO_1','GROUP_NO_2'), + PRESENT_PRESENT('GROUP_NO_1','SOUS_STRUC_1'), + PRESENT_PRESENT('GROUP_NO_2','SOUS_STRUC_2'), + PRESENT_PRESENT('SOUS_STRUC_1','SOUS_STRUC_2'),), + TOUT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI",) ), + GROUP_NO_1 =SIMP(statut='f',typ=grno), + SOUS_STRUC_1 =SIMP(statut='f',typ='TXM' ), + GROUP_NO_2 =SIMP(statut='f',typ=grno), + SOUS_STRUC_2 =SIMP(statut='f',typ='TXM' ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + DIST_REFE =SIMP(statut='f',typ='R' ), + ), + NOM_GROUP_MA =FACT(statut='f',max='**', + NOM =SIMP(statut='o',typ='TXM' ), + SOUS_STRUC =SIMP(statut='o',typ='TXM' ), + GROUP_MA =SIMP(statut='o',typ=grma), + ), + EXCLUSIF =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + MAILLAGE =SIMP(statut='f',typ=maillage_sdaster ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + TRANS =SIMP(statut='f',typ='R',min=3,max=3), + ANGL_NAUT =SIMP(statut='f',typ='R',min=3,max=3), + SOUS_STRUC =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','MAILLE','GROUP_MA'),), + NOM =SIMP(statut='o',typ='TXM' ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + ), + SECTEUR =FACT(statut='f',max='**', + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE CANO V.CANO +DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=table_sdaster,reentrant='n', + UIinfo={"groupes":("Modélisation","Thermique",)}, + fr="Définir d'un diagramme de transformations en refroidissement continu (TRC) de référence d'un acier" + +" pour les calculs métallurgiques.", + HIST_EXP =FACT(statut='o',max='**', + VALE =SIMP(statut='o',typ='R',max='**'), + ), + TEMP_MS =FACT(statut='o',max='**', + SEUIL =SIMP(statut='o',typ='R'), + AKM =SIMP(statut='o',typ='R'), + BKM =SIMP(statut='o',typ='R'), + TPLM =SIMP(statut='o',typ='R'), + ), + GRAIN_AUST =FACT(statut='f',max='**', + DREF =SIMP(statut='f',typ='R'), + A =SIMP(statut='f',typ='R'), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +def depl_interne_prod(DEPL_GLOBAL,**args ): + if AsType(DEPL_GLOBAL) == cham_no_sdaster: return cham_no_sdaster + if AsType(DEPL_GLOBAL) == evol_elas : return evol_elas + if AsType(DEPL_GLOBAL) == dyna_trans : return dyna_trans + if AsType(DEPL_GLOBAL) == dyna_harmo : return dyna_harmo + if AsType(DEPL_GLOBAL) == mode_meca : return mode_meca + if AsType(DEPL_GLOBAL) == mode_meca_c : return mode_meca_c + raise AsException("type de concept resultat non prevu") + +DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=depl_interne_prod,reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + fr="Calculer le champ de déplacement à l'intérieur d'une sous-structure statique", + DEPL_GLOBAL =SIMP(statut='o',typ=(cham_no_sdaster,mode_meca,mode_meca_c,evol_elas,dyna_trans,dyna_harmo),), + SUPER_MAILLE =SIMP(statut='o',typ=ma,), + NOM_CAS =SIMP(statut='f',typ='TXM',defaut=" "), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +DETRUIRE=MACRO(nom="DETRUIRE", + op=-7, + UIinfo={"groupes":("Gestion du travail",)}, + fr="Détruit des concepts utilisateurs dans la base GLOBALE ou des objets JEVEUX", + op_init=ops.build_detruire, + regles=(UN_PARMI('CONCEPT', 'OBJET',),), + + CONCEPT = FACT(statut='f',max='**', + regles=(DERIVABLE('NOM'),), + NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'), + SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(), + fr="Paramètre de sensibilité.", + ang="Sensitivity parameter",max='**'), + ), + OBJET = FACT(statut='f',max='**', + CLASSE = SIMP(statut='f', typ='TXM', into=('G', 'V', 'L'), defaut='G'), + CHAINE = SIMP(statut='o', typ='TXM', validators=NoRepeat(), max='**'), + POSITION = SIMP(statut='f', typ='I', max='**'), + ), + ALARME = SIMP(statut='f', typ='TXM', into=('OUI', 'NON'), defaut='OUI',), + INFO = SIMP(statut='f', typ='I', into=(1, 2), defaut=2, ), +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER +DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=table_fonction, + fr="Calcul de la réponse spectrale d'une structure linéaire sous une excitation connue par sa DSP", + reentrant='n', + UIinfo={"groupes":("Résolution","Dynamique",)}, + BASE_MODALE =FACT(statut='o', + regles=(UN_PARMI('NUME_ORDRE','BANDE'),), + MODE_MECA =SIMP(statut='o',typ=mode_meca ), + BANDE =SIMP(statut='f',typ='R',validators=NoRepeat(),max=2), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + b_bande =BLOC(condition = "BANDE != None", + AMOR_UNIF =SIMP(statut='o',typ='R' ), + ), + b_nume_ordre =BLOC(condition = "NUME_ORDRE != None", + AMOR_REDUIT =SIMP(statut='o',typ='R',max='**'), + ), + ), + MODE_STAT =SIMP(statut='f',typ=mode_meca), +# MODE_STAT devrait etre dans EXCIT car est utile et obligatoire que si NOM_CMP=depl_r, on pourrait +# ainsi rajouter un bloc du genre b_mod_stat= BLOC(condition = "(GRANDEUR == None) or (GRANDEUR == 'DEPL_R')", + EXCIT =FACT(statut='o', + INTE_SPEC =SIMP(statut='o',typ=table_fonction), + NUME_VITE_FLUI =SIMP(statut='f',typ='I' ), + OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG",) ), + MODAL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + b_modal_non = BLOC(condition = "(MODAL == None) or (MODAL == 'NON')", + regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I'),), + NUME_ORDRE_I =SIMP(statut='f',typ='I',max='**'), + NOEUD_I =SIMP(statut='f',typ=no,max='**'), + b_nume_ordre_i =BLOC(condition = "NUME_ORDRE_I != None", + regles=(EXCLUS('CHAM_NO','NOEUD'),), +# on devrait rajouter EXCLUS('GRANDEUR','CHAM_NO') pour eviter ambiguite car CHAM_NO => GRANDEUR='EFFO' +# cela impliquerait d'enlever la valeur par defaut a GRANDEUR + NUME_ORDRE_J =SIMP(statut='o',typ='I',max='**'), + CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster), + NOEUD =SIMP(statut='f',typ=no,max='**'), + b_noeud =BLOC(condition = "NOEUD != None", + NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), + ), + GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R", + into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")), +# que se passe-t-il en cas d'incompatibilite entre GRANDEUR et NOM_CMP + DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ), + ), + b_noeud_i =BLOC(condition = "NOEUD_I != None", + NOEUD_J =SIMP(statut='o',typ=no,max='**'), + NOM_CMP_I =SIMP(statut='o',typ='TXM',max='**'), + NOM_CMP_J =SIMP(statut='o',typ='TXM',max='**'), + NOEUD =SIMP(statut='o',typ=no,max='**'), + NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), +# ne serait-il pas bien que NOEUD et NOM_CMP soient facultatifs, car l'information peut etre contenue dans +# NOEUD_I, NOM_CMP_I ... => modif. du Fortran + GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R", + into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")), +# que se passe-t-il en cas d'incompatibilite entre GRANDEUR et NOM_CMP_I + DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ), + ), + ), + b_modal_oui = BLOC(condition = "(MODAL == 'OUI')", +# dans ce cas, y-a-t-il vraiment la possibilite d'une matrice interspectrale avec plusieurs termes + NUME_ORDRE_I =SIMP(statut='o',typ='I',max='**'), + NUME_ORDRE_J =SIMP(statut='o',typ='I',max='**'), + GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R", + into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")), + DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ), +# dans le cas MODAL=OUI, GRANDEUR peut-il etre different de EFFO et doit il etre impose a EFFO On devrait +# pouvoir supprimer GRANDEUR et DERIVATION ici + ), + + ), + REPONSE =FACT(statut='f', + regles=( ENSEMBLE('FREQ_MIN','FREQ_MAX'),), + DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ,) ), + OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ), + FREQ_MIN =SIMP(statut='f',typ='R' ), + FREQ_MAX =SIMP(statut='f',typ='R' ), + PAS =SIMP(statut='f',typ='R' ), + b_defaut_freq =BLOC(condition = "FREQ_MIN == NONE", + FREQ_EXCIT =SIMP(statut='f',typ='TXM',defaut="AVEC",into=("AVEC","SANS") ), + NB_POIN_MODE =SIMP(statut='f',typ='I',defaut= 50 ), + ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 26/07/2011 AUTEUR ZENTNER I.ZENTNER +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER + +def dyna_iss_vari_prod(self, FONC_SIGNAL,**args): + if FONC_SIGNAL !=None : + return tran_gene + else: + return table_fonction + raise AsException("type de concept resultat non prevu") + +DYNA_ISS_VARI=MACRO(nom="DYNA_ISS_VARI", + op=OPS('Macro.dyna_iss_vari_ops.dyna_iss_vari_ops'), + sd_prod=dyna_iss_vari_prod, + fr="Calcul du spectre de réponse ou de la reponse temporelle " \ + "sismique incoherente par decomposition spectrale", + reentrant='n', + UIinfo={"groupes":("Outils métier",)}, + regles=(UN_PARMI('FONC_SIGNAL','NB_FREQ'),), + FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster) ), + NB_FREQ =SIMP(statut='f',typ='I' ), + NOM_CMP =SIMP(statut='o',typ='TXM',into=("DX","DY","DZ") ), + PRECISION =SIMP(statut='f',typ='R',defaut=0.999 ), + INTERF =FACT(statut='o', + GROUP_NO_INTERF =SIMP(statut='o',typ=grno ,max='**'), + MODE_INTERF =SIMP(statut='o',typ='TXM',into=("CORP_RIGI","TOUT")), + ), + MATR_COHE =FACT(statut='o', + TYPE = SIMP(statut='o',typ='TXM' , into=("MITA_LUCO","ABRAHAMSON") ), + b_type_coh = BLOC(condition="TYPE=='MITA_LUCO' ", + VITE_ONDE =SIMP(statut='f',typ='R', defaut=600.), + PARA_ALPHA =SIMP(statut='f',typ='R',defaut=0.5),), + ), +# LIST_FREQ =SIMP(statut='o',typ='liste' ), + UNITE_RESU_FORC = SIMP(statut='f',typ='I',defaut=33), + UNITE_RESU_IMPE = SIMP(statut='f',typ='I',defaut=32), + TYPE = SIMP(statut='f',typ='TXM', into=("BINAIRE","ASCII"), defaut="ASCII"), +# NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE") , validators=NoRepeat(),max=3,defaut="DEPL" ), +# + MATR_GENE = FACT(statut='o', + MATR_MASS = SIMP(statut='o',typ=(matr_asse_gene_r ) ), + MATR_RIGI = SIMP(statut='o',typ=(matr_asse_gene_r,matr_asse_gene_c ) ), + MATR_AMOR = SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c ) ), + ), +# + INFO =SIMP(statut='f',typ='I' ,defaut=1,into=( 1 , 2)), +# + b_type_trans = BLOC(condition="FONC_SIGNAL !=None", + FREQ_MAX =SIMP(statut='f',typ='R' ), + FREQ_PAS =SIMP(statut='f',typ='R' ), + regles=( ENSEMBLE('FREQ_MAX','FREQ_PAS'), ) + + ), + + b_type_spec = BLOC(condition="NB_FREQ != None", + FREQ_INIT =SIMP(statut='o',typ='R' ), + FREQ_PAS =SIMP(statut='o',typ='R' ), + OPTION = SIMP(statut='f',typ='TXM',into=("TOUT","DIAG"),defaut="TOUT"), + ), + + + ) ; +#& MODIF COMMANDE DATE 31/05/2011 AUTEUR NISTOR I.NISTOR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ANDRIAM H.ANDRIAMBOLOLONA +def dyna_line_harm_prod(MATR_RIGI,**args): + if (AsType(MATR_RIGI) == matr_asse_depl_r) : return dyna_harmo + elif (AsType(MATR_RIGI) == matr_asse_depl_c) : return dyna_harmo + elif (AsType(MATR_RIGI) == matr_asse_pres_c) : return acou_harmo + elif (AsType(MATR_RIGI) == matr_asse_gene_r) : return harm_gene + elif (AsType(MATR_RIGI) == matr_asse_gene_c) : return harm_gene + raise AsException("type de concept resultat non prevu") + +DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, + fr="Calcul de la réponse dynamique complexe d'un système à une excitation harmonique", + reentrant='f', + UIinfo={"groupes":("Résolution","Dynamique",)}, + regles=(PRESENT_ABSENT('MATR_AMOR','AMOR_MODAL'), + UN_PARMI('FREQ','LIST_FREQ'), + CONCEPT_SENSIBLE('ENSEMBLE'),), + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + MATR_MASS =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_pres_c,matr_asse_gene_r ) ), + MATR_RIGI =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_pres_c + ,matr_asse_gene_r,matr_asse_gene_c ) ), + MATR_AMOR =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_pres_c,matr_asse_gene_r ) ), + AMOR_MODAL =FACT(statut='f', max=1, + regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), + ), + MATR_IMPE_PHI =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",)), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","VITE","ACCE") ), + b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : RESULTAT obligatoire", + RESULTAT =SIMP(statut='o',typ=(dyna_harmo,harm_gene)), + ), + EXCIT =FACT(statut='o',max='**', + regles=(UN_PARMI('VECT_ASSE','CHARGE'), + UN_PARMI('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'), + ), + VECT_ASSE =SIMP(statut='f',position='global',typ=(cham_no_sdaster,vect_asse_gene) ), + CHARGE =SIMP(statut='f',position='global', typ=char_meca ), + FONC_MULT_C =SIMP(statut='f',typ=(fonction_c,formule_c) ), + COEF_MULT_C =SIMP(statut='f',typ='C' ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + COEF_MULT =SIMP(statut='f',typ='R' ), + PHAS_DEG =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + PUIS_PULS =SIMP(statut='f',typ='I',defaut= 0 ), + ), + b_modele_char =BLOC(condition = " CHARGE != None ", + MODELE =SIMP(statut='o',typ=modele_sdaster ), + ), + b_modele_vect =BLOC(condition = " VECT_ASSE != None ", + MODELE =SIMP(statut='f',typ=modele_sdaster ), + ), + EXCIT_RESU =FACT(statut='f',max='**', + RESULTAT =SIMP(statut='o',typ=(dyna_harmo,harm_gene)), + COEF_MULT_C =SIMP(statut='o',typ='C' ), + ), +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + b_matr_gene =BLOC(condition = "AsType(MATR_MASS) in (matr_asse_gene_r,)", + fr="Methode de resolution matrice generalisee", + SOLVEUR =C_SOLVEUR('DYNA_LINE_HARM','GENE'), + ), + + b_matr_phys =BLOC(condition = "AsType(MATR_MASS) in (matr_asse_depl_r,matr_asse_pres_c,)", + fr="Methode de resolution matrice sur ddl physique", + SOLVEUR =C_SOLVEUR('DYNA_LINE_HARM','PHYS'), + ), +#------------------------------------------------------------------- + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), +) ; +# Rajouter test icompatibilite vect_asse et sensibilite +# Peut-on aussi rajouter ici le test d incompatibilite charge complexe - derivation +# presents dans le Fortran +#& MODIF COMMANDE DATE 31/05/2011 AUTEUR NISTOR I.NISTOR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BOYERE E.BOYERE +DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, + fr="Calcul de la réponse dynamique transitoire à une excitation temporelle quelconque", + reentrant='f', + UIinfo={"groupes":("Résolution","Dynamique",)}, +# regles=(UN_PARMI('WILSON','DIFF_CENTRE','ADAPT'),), + #UN_PARMI('NEWMARK','WILSON','DIFF_CENTRE','ADAPT'), + regles=(CONCEPT_SENSIBLE('ENSEMBLE'),), + MODELE =SIMP(statut='f',typ=modele_sdaster ), + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + MATR_MASS =SIMP(statut='o',typ=matr_asse_depl_r ), + MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r ), + MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r ), + + SCHEMA_TEMPS =FACT(statut='d', + SCHEMA =SIMP(statut='f',typ='TXM',defaut="NEWMARK", + into=("NEWMARK","WILSON","DIFF_CENTRE","ADAPT_ORDRE2")), + b_newmark =BLOC(condition="SCHEMA=='NEWMARK'", + BETA =SIMP(statut='f',typ='R',defaut= 0.25 ), + GAMMA =SIMP(statut='f',typ='R',defaut= 0.5 ), + ), + b_wilson =BLOC(condition="SCHEMA=='WILSON'", + THETA =SIMP(statut='f',typ='R',defaut= 1.4 ), + ), + ), + + ETAT_INIT =FACT(statut='f', + regles=(AU_MOINS_UN('RESULTAT', 'DEPL', 'VITE', 'ACCE'), + PRESENT_ABSENT('RESULTAT', 'DEPL', 'VITE', 'ACCE'),), + RESULTAT =SIMP(statut='f',typ=dyna_trans ), + b_dyna_trans =BLOC(condition = "RESULTAT != None", + regles=(EXCLUS('NUME_ORDRE','INST_INIT' ),), + NUME_ORDRE =SIMP(statut='f',typ='I' ), + INST_INIT =SIMP(statut='f',typ='R' ), + b_inst_init =BLOC(condition = "INST_INIT != None", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + VITE =SIMP(statut='f',typ=cham_no_sdaster), + ACCE =SIMP(statut='f',typ=cham_no_sdaster), + ), + EXCIT =FACT(statut='f',max='**', + regles=(UN_PARMI('CHARGE','VECT_ASSE'), + EXCLUS('CHARGE','COEF_MULT'), + EXCLUS('FONC_MULT','COEF_MULT'), + EXCLUS('ACCE','COEF_MULT'), + PRESENT_ABSENT('ACCE','FONC_MULT'), + PRESENT_PRESENT('ACCE','VITE','DEPL'), + # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'), + ), + VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster), + CHARGE =SIMP(statut='f',typ=char_meca ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + COEF_MULT =SIMP(statut='f',typ='R' ), + ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + b_mult_appui =BLOC(condition = "MULT_APPUI == 'OUI'", + regles=(EXCLUS('NOEUD','GROUP_NO'),), + MODE_STAT =SIMP(statut='f',typ=mode_meca), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ),), + EXCIT_RESU =FACT(statut='f',max='**', + RESULTAT =SIMP(statut='o',typ=dyna_trans ), + COEF_MULT =SIMP(statut='o',typ='R' ), + ), + AMOR_MODAL =FACT(statut='f', + MODE_MECA =SIMP(statut='f',typ=mode_meca ), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ), + ), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('DYNA_LINE_TRAN'), +#------------------------------------------------------------------- + INCREMENT =FACT(statut='o',max='**', + regles=(UN_PARMI('LIST_INST','PAS'),), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + PAS =SIMP(statut='f',typ='R' ), + b_pas =BLOC(condition = "PAS != None", + INST_INIT =SIMP(statut='f',typ='R' ), + INST_FIN =SIMP(statut='o',typ='R' ), + ), + b_list_fonc =BLOC(condition = "LIST_INST != None", + regles=(EXCLUS('INST_FIN','NUME_FIN'),), + NUME_FIN =SIMP(statut='f',typ='I' ), + INST_FIN =SIMP(statut='f',typ='R' ), + ), + VITE_MIN =SIMP(statut='f',typ='TXM',defaut="NORM",into=("MAXI","NORM") ), + COEF_MULT_PAS =SIMP(statut='f',typ='R',defaut= 1.1 ), + COEF_DIVI_PAS =SIMP(statut='f',typ='R',defaut= 1.33334 ), + PAS_LIMI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ), + NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ), + PAS_MINI =SIMP(statut='f',typ='R' ), + ), + # ARCHIVAGE =FACT(statut='f', +# regles=(UN_PARMI('LIST_ARCH','PAS_ARCH', ),), +# LIST_ARCH =SIMP(statut='f',typ=listis_sdaster ), +# PAS_ARCH =SIMP(statut='f',typ='I' ), +# CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE") ), +# ), + ARCHIVAGE =FACT(statut='f',max=1, + regles = (EXCLUS('PAS_ARCH','LIST_INST','INST'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_ARCH = SIMP(statut='f',typ='I' ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE") ), + ), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters", + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 05/09/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', + fr="Calcul de l'évolution dynamique d'une structure dont le matériau ou la géométrie ont un comportement non linéaire", + UIinfo={"groupes":("Résolution","Dynamique",)}, + regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',), + CONCEPT_SENSIBLE('ENSEMBLE'),), + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + MODE_STAT =SIMP(statut='f',typ=mode_meca), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + MASS_DIAG =SIMP(statut='f',typ='TXM',into=("OUI","NON",) ), + EXCIT =FACT(statut='f',max='**', + regles=(PRESENT_ABSENT('FONC_MULT','ACCE'), + PRESENT_PRESENT('ACCE','VITE','DEPL'), + # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'), + ), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", + into=("FIXE_CSTE","SUIV","DIDI")), + CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), + EXCIT_GENE =FACT(statut='f',max='**', + FONC_MULT =SIMP(statut='f',typ=fonction_sdaster,max='**' ), + VECT_GENE =SIMP(statut='f',typ=vect_asse_gene,max='**' ), + ), + CONTACT =SIMP(statut='f',typ=char_contact), + SOUS_STRUC =FACT(statut='f',min=01,max='**', + regles=(UN_PARMI('TOUT','SUPER_MAILLE'),), + CAS_CHARGE =SIMP(statut='o',typ='TXM' ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + SUPER_MAILLE=SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + AMOR_RAYL_RIGI = SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE"),), + AMOR_MODAL =FACT(statut='f', + regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),), + MODE_MECA =SIMP(statut='f',typ=mode_meca), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**' ), + LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), + NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ), + REAC_VITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + PROJ_MODAL =FACT(statut='f',max='**', + MODE_MECA =SIMP(statut='o',typ=mode_meca), + NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ), + regles=(PRESENT_PRESENT('MASS_GENE','RIGI_GENE'),), + MASS_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + RIGI_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + DEPL_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + VITE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + ACCE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene), + ), +#------------------------------------------------------------------- + COMP_INCR =C_COMP_INCR(), +#------------------------------------------------------------------- + COMP_ELAS =C_COMP_ELAS('DYNA_NON_LINE'), +#------------------------------------------------------------------- + b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire", + ETAT_INIT =FACT(statut='o', + regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI',), + # EXCLUS('EVOL_NOLI','DEPL',), + # EXCLUS('EVOL_NOLI','VITE'), + # EXCLUS('EVOL_NOLI','ACCE'), + # EXCLUS('EVOL_NOLI','SIGM',), + # EXCLUS('EVOL_NOLI','VARI',), + EXCLUS('NUME_ORDRE','INST'), ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + VITE =SIMP(statut='f',typ=cham_no_sdaster), + ACCE =SIMP(statut='f',typ=cham_no_sdaster), + SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)), + VARI =SIMP(statut='f',typ=cham_elem), + STRX =SIMP(statut='f',typ=cham_elem), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + NUME_DIDI =SIMP(statut='f',typ='I'), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ),), + b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif", + ETAT_INIT =FACT(statut='f', + regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI',), + # EXCLUS('EVOL_NOLI','DEPL',), + # EXCLUS('EVOL_NOLI','VITE'), + # EXCLUS('EVOL_NOLI','ACCE'), + # EXCLUS('EVOL_NOLI','SIGM',), + # EXCLUS('EVOL_NOLI','VARI',), + EXCLUS('NUME_ORDRE','INST'), ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + VITE =SIMP(statut='f',typ=cham_no_sdaster), + ACCE =SIMP(statut='f',typ=cham_no_sdaster), + SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)), + VARI =SIMP(statut='f',typ=cham_elem), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + NUME_DIDI =SIMP(statut='f',typ='I'), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ),), +#------------------------------------------------------------------- + INCREMENT =C_INCREMENT(), +#------------------------------------------------------------------- + SCHEMA_TEMPS =FACT(statut='o', + SCHEMA =SIMP(statut='o',min=1,max=1,typ='TXM', + into=("DIFF_CENT","TCHAMWA","NEWMARK","HHT","THETA_METHODE","KRENK"),), + COEF_MASS_SHIFT =SIMP(statut='f',typ='R',defaut= 0.0E+0 ), + b_tchamwa = BLOC(condition="SCHEMA=='TCHAMWA'", + PHI =SIMP(statut='f',typ='R',defaut= 1.05),), + + b_newmark = BLOC(condition="SCHEMA=='NEWMARK'", + BETA =SIMP(statut='f',typ='R',defaut= 0.25), + GAMMA =SIMP(statut='f',typ='R',defaut= 0.5),), + + b_hht = BLOC(condition="SCHEMA=='HHT'", + ALPHA =SIMP(statut='f',typ='R',defaut= -0.3 ), + MODI_EQUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),),), + + b_theta = BLOC(condition="SCHEMA=='THETA_METHODE'", + THETA =SIMP(statut='f',typ='R',defaut= 1.,val_min=0.5,val_max=100. ),), + + b_krenk = BLOC(condition="SCHEMA=='KRENK'", + KAPPA =SIMP(statut='f',typ='R',defaut= 1.0,val_min=1.0,val_max=100. ),), + + b_explicit= BLOC(condition="SCHEMA=='TCHAMWA'or SCHEMA=='DIFF_CENT'", + STOP_CFL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),), + FORMULATION =SIMP(statut='o',typ='TXM',into=("ACCELERATION",),),), + + b_implicit= BLOC(condition="SCHEMA!='TCHAMWA'and SCHEMA!='DIFF_CENT'", + FORMULATION =SIMP(statut='o',max=1,typ='TXM',into=("DEPLACEMENT","VITESSE","ACCELERATION"),),), + ), +#------------------------------------------------------------------- + NEWTON =C_NEWTON(), +#------------------------------------------------------------------- + RECH_LINEAIRE =C_RECH_LINEAIRE(), +#------------------------------------------------------------------- + CONVERGENCE =C_CONVERGENCE(), +#------------------------------------------------------------------- + SOLVEUR =C_SOLVEUR('DYNA_NON_LINE'), +#------------------------------------------------------------------- + OBSERVATION =C_OBSERVATION(), +#------------------------------------------------------------------- + SUIVI_DDL =C_SUIVI_DDL(), +#------------------------------------------------------------------- + AFFICHAGE =C_AFFICHAGE(), +#------------------------------------------------------------------- + ARCHIVAGE =C_ARCHIVAGE(), +#------------------------------------------------------------------- + CRIT_FLAMB =FACT(statut='f',min=1,max=1, + NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3), + CHAR_CRIT =SIMP(statut='f',typ='R',min=2,max=2,defaut=(-10.0,10.), + fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"), + RIGI_GEOM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + bloc_ddl_exclus=BLOC(condition="(RIGI_GEOM=='NON')", + DDL_EXCLUS =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=40, + into=('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', + 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2', + 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4', + 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6', + 'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON','DCX', + 'DCY','DCZ','H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z', + 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C','V11','V12','V13','V21','V22', + 'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21','PRES22','PRES23', + 'PRES31','PRES32','PRES33','VARI','LAG_GV')),), + regles = (EXCLUS('PAS_CALC','LIST_INST','INST'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_CALC = SIMP(statut='f',typ='I' ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + MODE_VIBR =FACT(statut='f',min=1,max=1, + MATR_RIGI =SIMP(statut='f',typ='TXM',defaut="ELASTIQUE",into=("ELASTIQUE","TANGENTE","SECANTE",) ), + NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3, + fr="Nombre de fréquences propres à calculer"), + BANDE =SIMP(statut='f',typ='R',min=2,max=2, + fr="Valeur des deux fréquences délimitant la bande de recherche",), + regles = (EXCLUS('PAS_CALC','LIST_INST','INST'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_CALC = SIMP(statut='f',typ='I' ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), +#------------------------------------------------------------------- + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité", + ang="List of sensitivity parameters"), +#------------------------------------------------------------------- + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), + b_info=BLOC(condition="(INFO==2)", + fr="filtre les messages émis dans le .mess selon le type de message demandé", + INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), + into=("CONTACT", + "MECA_NON_LINE", + "PILOTAGE", + "FACTORISATION", + "APPARIEMENT"), + ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ADOBES A.ADOBES +DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=table_fonction, + fr="Calcul de la réponse par recombinaison modale d'une structure linéaire pour une excitation aléatoire", + reentrant='n', + UIinfo={"groupes":("Résolution","Dynamique",)}, + BASE_ELAS_FLUI =SIMP(statut='o',typ=melasflu_sdaster ), + EXCIT =FACT(statut='o', + INTE_SPEC_GENE =SIMP(statut='o',typ=table_fonction), + ), + OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 16/08/2011 AUTEUR NISTOR I.NISTOR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BOYERE E.BOYERE +DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, + fr="Calcul de la réponse dynamique transitoire d'un système amorti ou non en coordonées généralisées" + +" par superposition modale ou par sous structuration", + reentrant='f', + UIinfo={"groupes":("Résolution","Dynamique",)}, + regles=(EXCLUS('AMOR_MODAL','MATR_AMOR'),), + SCHEMA_TEMPS =FACT(statut='d', + SCHEMA =SIMP(statut='f',typ='TXM',defaut="NEWMARK", + into=("NEWMARK","EULER","DEVOGE","ADAPT_ORDRE1","ADAPT_ORDRE2","ITMI")), + b_newmark =BLOC(condition="SCHEMA=='NEWMARK'", + BETA =SIMP(statut='f',typ='R',defaut= 0.25 ), + GAMMA =SIMP(statut='f',typ='R',defaut= 0.5 ), + ), + b_itmi =BLOC(condition = "SCHEMA=='ITMI'", + regles=(ENSEMBLE('BASE_ELAS_FLUI','NUME_VITE_FLUI'),), + BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ), + NUME_VITE_FLUI =SIMP(statut='f',typ='I' ), + ETAT_STAT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + PREC_DUREE =SIMP(statut='f',typ='R',defaut= 1.E-2 ), + CHOC_FLUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + NB_MODE =SIMP(statut='f',typ='I' ), + NB_MODE_FLUI =SIMP(statut='f',typ='I' ), + TS_REG_ETAB =SIMP(statut='f',typ='R' ), + ), + ), + MATR_MASS =SIMP(statut='o',typ=matr_asse_gene_r ), + MATR_RIGI =SIMP(statut='o',typ=matr_asse_gene_r ), + MATR_AMOR =SIMP(statut='f',typ=matr_asse_gene_r ), + AMOR_MODAL =FACT(statut='f', max=1, + regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), + ), + COUPLAGE_EDYOS =FACT(statut='f',max=1, + VITE_ROTA = SIMP(statut='o',typ='R' ), + PAS_TPS_EDYOS = SIMP(statut='o',typ='R' ), + ), + + PALIER_EDYOS =FACT(statut='f',max='**', + regles=(PRESENT_ABSENT('UNITE','GROUP_NO'), + PRESENT_ABSENT('UNITE','TYPE_EDYOS'), + EXCLUS('GROUP_NO','NOEUD'),), + UNITE = SIMP(statut='f',typ='I',), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD = SIMP(statut='f',typ=no), + TYPE_EDYOS = SIMP(statut='f',typ='TXM', + into=("PAPANL","PAFINL","PACONL","PAHYNL",),), + ), + + ETAT_INIT =FACT(statut='f', + regles=(EXCLUS('RESULTAT','DEPL'), + EXCLUS('RESULTAT','VITE'),), + RESULTAT =SIMP(statut='f',typ=tran_gene ), + b_resu =BLOC(condition = "RESULTAT != None", + regles=(EXCLUS('NUME_ORDRE','INST_INIT' ),), + INST_INIT =SIMP(statut='f',typ='R' ), + NUME_ORDRE =SIMP(statut='f',typ='I' ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + DEPL =SIMP(statut='f',typ=vect_asse_gene ), + VITE =SIMP(statut='f',typ=vect_asse_gene ), + ), + INCREMENT =FACT(statut='o',max='**', + regles=(UN_PARMI('LIST_INST','PAS'),), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + b_list_inst =BLOC(condition = "LIST_INST != None", + regles=(EXCLUS('NUME_FIN','INST_FIN'),), + NUME_FIN =SIMP(statut='f',typ='I' ), + INST_FIN =SIMP(statut='f',typ='R' ), + ), + PAS =SIMP(statut='f',typ='R' ), + b_pas =BLOC(condition = "PAS != None", + INST_INIT =SIMP(statut='f',typ='R' ), + INST_FIN =SIMP(statut='o',typ='R' ), + ), + VERI_PAS =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + VITE_MIN =SIMP(statut='f',typ='TXM',defaut="NORM",into=("MAXI","NORM") ), + COEF_MULT_PAS =SIMP(statut='f',typ='R',defaut= 1.1 ), + COEF_DIVI_PAS =SIMP(statut='f',typ='R',defaut= 1.3333334 ), + PAS_LIMI_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6 ), + NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ), + NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ), + PAS_MAXI =SIMP(statut='f',typ='R' ), + PAS_MINI =SIMP(statut='f',typ='R' ), + ), + ARCHIVAGE =FACT(statut='f',max=1, + regles = (EXCLUS('PAS_ARCH','LIST_INST','INST'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_ARCH = SIMP(statut='f',typ='I' ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + + EXCIT =FACT(statut='f',max='**', + regles=(UN_PARMI('FONC_MULT','COEF_MULT','ACCE'), + UN_PARMI('VECT_ASSE','NUME_ORDRE',), + PRESENT_PRESENT('ACCE','VITE','DEPL'), +# PRESENT_ABSENT('NUME_ORDRE','VECT_ASSE','COEF_MULT'), + EXCLUS('MULT_APPUI','CORR_STAT'), + PRESENT_PRESENT('MULT_APPUI','ACCE'),), + VECT_ASSE =SIMP(statut='f',typ=vect_asse_gene ), + NUME_ORDRE =SIMP(statut='f',typ='I' ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + COEF_MULT =SIMP(statut='f',typ='R' ), + ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + b_mult_appui =BLOC(condition = "MULT_APPUI == 'OUI'", + MODE_STAT =SIMP(statut='f',typ=mode_meca ), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + regles=(EXCLUS('NOEUD','GROUP_NO'),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), + CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + b_corr_stat =BLOC(condition = "CORR_STAT == 'OUI'", + regles=(PRESENT_PRESENT('D_FONC_DT','D_FONC_DT2'),), + MODE_CORR =SIMP(statut='f',typ=(mult_elas,mode_meca),), + D_FONC_DT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + D_FONC_DT2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ),), + CHOC =FACT(statut='f',max='**', + regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD_1','GROUP_NO_1' ), + EXCLUS('NOEUD_2','GROUP_NO_2'), + PRESENT_ABSENT('GROUP_MA','NOEUD_2','GROUP_NO_2'), + PRESENT_ABSENT('MAILLE','NOEUD_2','GROUP_NO_2'),), + INTITULE =SIMP(statut='f',typ='TXM' ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + NOEUD_1 =SIMP(statut='f',typ=no), + NOEUD_2 =SIMP(statut='f',typ=no), + GROUP_NO_1 =SIMP(statut='f',typ=grno), + GROUP_NO_2 =SIMP(statut='f',typ=grno), + OBSTACLE =SIMP(statut='o',typ=table_fonction), + ORIG_OBST =SIMP(statut='f',typ='R',min=3,max=3), + NORM_OBST =SIMP(statut='o',typ='R',min=3,max=3), + ANGL_VRIL =SIMP(statut='f',typ='R' ), + JEU =SIMP(statut='f',typ='R',defaut= 1. ), + DIST_1 =SIMP(statut='f',typ='R',val_min=0.E+0 ), + DIST_2 =SIMP(statut='f',typ='R',val_min=0.E+0 ), + SOUS_STRUC_1 =SIMP(statut='f',typ='TXM' ), + SOUS_STRUC_2 =SIMP(statut='f',typ='TXM' ), + REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL"), + RIGI_NOR =SIMP(statut='f',typ='R' ), + AMOR_NOR =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + RIGI_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + AMOR_TAN =SIMP(statut='f',typ='R' ), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","COULOMB","COULOMB_STAT_DYNA") ), + b_coulomb =BLOC(condition="FROTTEMENT=='COULOMB'", + COULOMB =SIMP(statut='o',typ='R' ),), + b_coulomb_stat_dyna =BLOC(condition="FROTTEMENT=='COULOMB_STAT_DYNA'", + COULOMB_STAT =SIMP(statut='o',typ='R' ), + COULOMB_DYNA =SIMP(statut='o',typ='R' ),), + LAME_FLUIDE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + b_lame =BLOC(condition="LAME_FLUIDE=='OUI'", + ALPHA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + BETA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + CHI =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + DELTA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + + ), + ), + PARA_LAME_FLUI =FACT(statut='d', + NMAX_ITER =SIMP(statut='f',typ='I',defaut= 20 ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + LAMBDA =SIMP(statut='f',typ='R',defaut= 10. ),), + VERI_CHOC =FACT(statut='f', + STOP_CRITERE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + SEUIL =SIMP(statut='f',typ='R',defaut= 0.5 ), + ), + FLAMBAGE =FACT(statut='f',max='**', + regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'), + EXCLUS('NOEUD_2','GROUP_NO_2'),), + NOEUD_1 =SIMP(statut='f',typ=no), + NOEUD_2 =SIMP(statut='f',typ=no), + GROUP_NO_1 =SIMP(statut='f',typ=grno), + GROUP_NO_2 =SIMP(statut='f',typ=grno), + OBSTACLE =SIMP(statut='o',typ=table_fonction), + ORIG_OBST =SIMP(statut='f',typ='R',max='**'), + NORM_OBST =SIMP(statut='o',typ='R',max='**'), + ANGL_VRIL =SIMP(statut='f',typ='R' ), + JEU =SIMP(statut='f',typ='R',defaut= 1. ), + DIST_1 =SIMP(statut='f',typ='R' ), + DIST_2 =SIMP(statut='f',typ='R' ), + REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL"), + RIGI_NOR =SIMP(statut='f',typ='R' ), + FNOR_CRIT =SIMP(statut='f',typ='R' ), + FNOR_POST_FL =SIMP(statut='f',typ='R' ), + RIGI_NOR_POST_FL=SIMP(statut='f',typ='R' ), + ), + ANTI_SISM =FACT(statut='f',max='**', + regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'), + UN_PARMI('NOEUD_2','GROUP_NO_2'),), + NOEUD_1 =SIMP(statut='f',typ=no), + NOEUD_2 =SIMP(statut='f',typ=no), + GROUP_NO_1 =SIMP(statut='f',typ=grno), + GROUP_NO_2 =SIMP(statut='f',typ=grno), + RIGI_K1 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + RIGI_K2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + SEUIL_FX =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + C =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + PUIS_ALPHA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + DX_MAX =SIMP(statut='f',typ='R',defaut= 1. ), + ), + RELA_EFFO_DEPL =FACT(statut='f',max='**', + NOEUD =SIMP(statut='o',typ=no), + SOUS_STRUC =SIMP(statut='f',typ='TXM' ), + NOM_CMP =SIMP(statut='f',typ='TXM' ), + RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + RELA_TRANSIS =FACT(statut='f',max='**', + NOEUD =SIMP(statut='o',typ=no), + SOUS_STRUC =SIMP(statut='f',typ='TXM' ), + NOM_CMP =SIMP(statut='f',typ='TXM' ), + RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + RELA_EFFO_VITE =FACT(statut='f',max='**', + NOEUD =SIMP(statut='o',typ=no), + SOUS_STRUC =SIMP(statut='f',typ='TXM' ), + NOM_CMP =SIMP(statut='f',typ='TXM' ), + RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + IMPRESSION =FACT(statut='f', + regles=(EXCLUS('TOUT','NIVEAU'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NIVEAU =SIMP(statut='f',typ='TXM',into=("DEPL_LOC","VITE_LOC","FORC_LOC","TAUX_CHOC") ), + INST_INIT =SIMP(statut='f',typ='R' ), + INST_FIN =SIMP(statut='f',typ='R' ), + ), + + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('DYNA_TRAN_MODAL'), +#------------------------------------------------------------------- + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + ) ; +#& MODIF COMMANDE DATE 26/09/2011 AUTEUR NISTOR I.NISTOR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== + +# RESPONSABLE NISTOR I.NISTOR + +#choix de structure de donnees de sortie en fonction de BASE_CALCUL et TYPE_CALCUL +def dyna_vibra_prod(self,BASE_CALCUL,TYPE_CALCUL,MATR_RIGI,**args): + if BASE_CALCUL == 'PHYS': + if TYPE_CALCUL == 'TRAN': return dyna_trans + else: + if (AsType(MATR_RIGI) == matr_asse_pres_c) : return acou_harmo + else: return dyna_harmo + else: + if TYPE_CALCUL == 'TRAN': return tran_gene + else: return harm_gene + +#from Macro.dyna_vibra_ops import dyna_vibra_ops + +DYNA_VIBRA=MACRO(nom="DYNA_VIBRA", + op=OPS('Macro.dyna_vibra_ops.dyna_vibra_ops'), +# op=dyna_vibra_ops, + sd_prod=dyna_vibra_prod, + reentrant='f', + fr="Calcul dynamique", + UIinfo={"groupes":("Resolution","Dynamique",)}, + BASE_CALCUL =SIMP(statut='o',typ='TXM',position='global',into=("PHYS","GENE") ), + TYPE_CALCUL =SIMP(statut='o',typ='TXM',position='global',into=("HARM","TRAN") ), + +#parametres de mise en donnees + b_donnees =BLOC(condition = "TYPE_CALCUL=='HARM'or (TYPE_CALCUL=='TRAN' and BASE_CALCUL=='PHYS')", + MODELE =SIMP(statut='f',typ=modele_sdaster ), + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + ), + b_matr_tran_phys =BLOC(condition = "TYPE_CALCUL=='TRAN' and BASE_CALCUL=='PHYS'", + MATR_MASS =SIMP(statut='o',typ=matr_asse_depl_r), + MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r), + MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r), + ), + b_matr_tran_gene =BLOC(condition = "TYPE_CALCUL=='TRAN' and BASE_CALCUL=='GENE'", + MATR_MASS =SIMP(statut='o',typ=matr_asse_gene_r), + MATR_RIGI =SIMP(statut='o',typ=matr_asse_gene_r), + MATR_AMOR =SIMP(statut='f',typ=matr_asse_gene_r), + ), + b_reuse_harm =BLOC(condition = "reuse and TYPE_CALCUL == 'HARM'",fr="en mode concept reentrant : RESULTAT obligatoire", + RESULTAT =SIMP(statut='o',typ=(dyna_harmo,harm_gene)), + ), + b_matr_harm =BLOC(condition="TYPE_CALCUL == 'HARM'", + MATR_MASS =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_pres_c,matr_asse_gene_r ) ), + MATR_RIGI =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_pres_c + ,matr_asse_gene_r,matr_asse_gene_c )), + MATR_AMOR =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_pres_c,matr_asse_gene_r) ), + MATR_IMPE_PHI =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ), + ), + + AMOR_MODAL =FACT(statut='f', + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), + b_mode =BLOC(condition = "BASE_CALCUL == 'PHYS' and TYPE_CALCUL == 'TRAN'", + MODE_MECA =SIMP(statut='f',typ=mode_meca ), + NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ), + ), + ), +#introduction parametres du calcul harmonique + b_param_harm =BLOC(condition="TYPE_CALCUL == 'HARM'", + regles=(UN_PARMI('FREQ','LIST_FREQ'), + EXCLUS('NOM_CHAM','TOUT_CHAM')), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","VITE","ACCE") ), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",)), + ), + +#parametrage des calculs transitoires + b_tran = BLOC(condition = "TYPE_CALCUL == 'TRAN'", +#parametrage des schemas d'integration + SCHEMA_TEMPS =FACT(statut='d', + SCHEMA =SIMP(statut='f',typ='TXM',defaut="NEWMARK", + into=("NEWMARK","WILSON","ADAPT_ORDRE2","DIFF_CENTRE","ADAPT_ORDRE1","DEVOGE","EULER","ITMI"),), + b_itmi =BLOC(condition = "SCHEMA == 'ITMI'", +regles=(ENSEMBLE('BASE_ELAS_FLUI','NUME_VITE_FLUI'),), + BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ), + NUME_VITE_FLUI =SIMP(statut='f',typ='I' ), + ETAT_STAT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + PREC_DUREE =SIMP(statut='f',typ='R',defaut= 1.E-2 ), + CHOC_FLUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + NB_MODE =SIMP(statut='f',typ='I' ), + NB_MODE_FLUI =SIMP(statut='f',typ='I' ), + TS_REG_ETAB =SIMP(statut='f',typ='R' ), + ), + b_newmark =BLOC(condition = "SCHEMA == 'NEWMARK'", + BETA =SIMP(statut='f',typ='R',defaut= 0.25 ), + GAMMA =SIMP(statut='f',typ='R',defaut= 0.5 ), + ), + b_wilson =BLOC(condition = "SCHEMA == 'WILSON'", + THETA =SIMP(statut='f',typ='R',defaut= 1.4 ), + ), + ), + + INCREMENT =FACT(statut='o', + regles=(UN_PARMI('LIST_INST','PAS'),), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + PAS =SIMP(statut='f',typ='R' ), + b_pas =BLOC(condition = "PAS != None", + INST_INIT =SIMP(statut='f',typ='R' ), + INST_FIN =SIMP(statut='o',typ='R' ), + ), + b_list =BLOC(condition = "LIST_INST != None", + regles=(EXCLUS('INST_FIN','NUME_FIN'),), + NUME_FIN =SIMP(statut='f',typ='I' ), + INST_FIN =SIMP(statut='f',typ='R' ), + ), + b_veri_pas = BLOC(condition="BASE_CALCUL == 'GENE'", + VERI_PAS =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PAS_MAXI =SIMP(statut='f',typ='R' ), + ), + VITE_MIN =SIMP(statut='f',typ='TXM',defaut="NORM",into=("MAXI","NORM") ), + COEF_MULT_PAS =SIMP(statut='f',typ='R',defaut= 1.1 ), + COEF_DIVI_PAS =SIMP(statut='f',typ='R',defaut= 1.3333334 ), + PAS_LIMI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ), + NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ), + PAS_MINI =SIMP(statut='f',typ='R' ), + ), + +#declaration de l'etat initial + b_init_gene =BLOC(condition="BASE_CALCUL == 'GENE'", + ETAT_INIT =FACT(statut='f', + regles=(EXCLUS('RESULTAT','DEPL'), + EXCLUS('RESULTAT','VITE'),), + RESULTAT =SIMP(statut='f',typ=tran_gene), + b_resu =BLOC(condition = "RESULTAT != NONE", + regles=( EXCLUS('NUME_ORDRE','INST_INIT' ),), + NUME_ORDRE =SIMP(statut='f',typ='I' ), + INST_INIT =SIMP(statut='f',typ='R' ), + b_inst_init =BLOC(condition = "INST_INIT != None", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,), + ), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',), + ), + ), + ), + DEPL =SIMP(statut='f',typ=vect_asse_gene), + VITE =SIMP(statut='f',typ=vect_asse_gene), + ), + ), + b_init_phys =BLOC(condition="BASE_CALCUL == 'PHYS'", + ETAT_INIT =FACT(statut='f', + regles=(AU_MOINS_UN('RESULTAT', 'DEPL', 'VITE', 'ACCE'), + PRESENT_ABSENT('RESULTAT', 'DEPL', 'VITE', 'ACCE'),), + RESULTAT =SIMP(statut='f',typ=dyna_trans), + b_resu =BLOC(condition = "RESULTAT != NONE", + regles=( EXCLUS('NUME_ORDRE','INST_INIT' ),), + NUME_ORDRE =SIMP(statut='f',typ='I' ), + INST_INIT =SIMP(statut='f',typ='R' ), + b_inst_init =BLOC(condition = "INST_INIT != None", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,), + ), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',), + ), + ), + ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + VITE =SIMP(statut='f',typ=cham_no_sdaster), + ACCE =SIMP(statut='f',typ=cham_no_sdaster), + ), + ), + +#parametres d'archivage + ARCHIVAGE =FACT(statut='f', + regles=( EXCLUS('LIST_INST','PAS_ARCH'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + PAS_ARCH =SIMP(statut='f',typ='I' ), + b_cham_exclu =BLOC(condition="BASE_CALCUL == 'PHYS'", + CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE") ), + ), + ), + ), + +#definition du chargement + b_excit_harm =BLOC(condition="TYPE_CALCUL == 'HARM'", + EXCIT =FACT(statut='o',max='**', + regles=(UN_PARMI('VECT_ASSE','CHARGE'), + UN_PARMI('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'), + ), + VECT_ASSE =SIMP(statut='f',typ=(cham_no_sdaster,vect_asse_gene) ), + CHARGE =SIMP(statut='f', typ=char_meca ), + FONC_MULT_C =SIMP(statut='f',typ=(fonction_c,formule_c) ), + COEF_MULT_C =SIMP(statut='f',typ='C' ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + COEF_MULT =SIMP(statut='f',typ='R' ), + PHAS_DEG =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + PUIS_PULS =SIMP(statut='f',typ='I',defaut= 0 ), + + ), + EXCIT_RESU =FACT(statut='f',max='**', + RESULTAT =SIMP(statut='o',typ=(dyna_harmo,harm_gene) ), + COEF_MULT_C =SIMP(statut='o',typ='C' ),), + + ), + b_excit_tran_mod=BLOC(condition="TYPE_CALCUL == 'TRAN' and BASE_CALCUL == 'GENE'", + EXCIT =FACT(statut='f',max='**', + regles=(UN_PARMI('FONC_MULT','COEF_MULT','ACCE'), + UN_PARMI('VECT_ASSE','NUME_ORDRE',), + PRESENT_PRESENT('ACCE','VITE','DEPL'), + EXCLUS('MULT_APPUI','CORR_STAT'), + PRESENT_PRESENT('MULT_APPUI','ACCE'), + ), + VECT_ASSE =SIMP(statut='f',typ=vect_asse_gene ), + NUME_ORDRE =SIMP(statut='f',typ='I' ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + COEF_MULT =SIMP(statut='f',typ='R' ), + ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + b_mult_appui =BLOC(condition = "MULT_APPUI == 'OUI'", + regles=(EXCLUS('NOEUD','GROUP_NO'),), + MODE_STAT =SIMP(statut='f',typ=mode_meca ), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), + CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + b_corr_stat =BLOC(condition = "CORR_STAT == 'OUI'", + regles=(PRESENT_PRESENT('D_FONC_DT','D_FONC_DT2'),), + MODE_CORR =SIMP(statut='f',typ=(mult_elas,mode_meca),), + D_FONC_DT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + D_FONC_DT2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + ), + ), + b_excit_line_tran =BLOC(condition="TYPE_CALCUL == 'TRAN' and BASE_CALCUL == 'PHYS'", + EXCIT =FACT(statut='f',max='**', + regles=(UN_PARMI('CHARGE','VECT_ASSE'), + EXCLUS('CHARGE','COEF_MULT'), + EXCLUS('FONC_MULT','COEF_MULT'), + EXCLUS('ACCE','COEF_MULT'), + PRESENT_ABSENT('ACCE','FONC_MULT'), + PRESENT_PRESENT('ACCE','VITE','DEPL'), + # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'), + ), + VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster), + CHARGE =SIMP(statut='f',typ=char_meca ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + COEF_MULT =SIMP(statut='f',typ='R' ), + ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + b_mult_appui =BLOC(condition = "MULT_APPUI == 'OUI'", + regles=(EXCLUS('NOEUD','GROUP_NO'),), + MODE_STAT =SIMP(statut='f',typ=mode_meca ), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), + ), + EXCIT_RESU =FACT(statut='f', + RESULTAT =SIMP(statut='o',typ=dyna_trans ), + COEF_MULT =SIMP(statut='o',typ='R' ), + ), + ), + +#definition des chocs + b_non_line_loca =BLOC(condition="TYPE_CALCUL == 'TRAN' and BASE_CALCUL=='GENE'", + CHOC =FACT(statut='f',max='**', + regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD_1','GROUP_NO_1' ), + EXCLUS('NOEUD_2','GROUP_NO_2'), + PRESENT_ABSENT('GROUP_MA','NOEUD_2','GROUP_NO_2'), + PRESENT_ABSENT('MAILLE','NOEUD_2','GROUP_NO_2'),), + INTITULE =SIMP(statut='f',typ='TXM' ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + NOEUD_1 =SIMP(statut='f',typ=no), + NOEUD_2 =SIMP(statut='f',typ=no), + GROUP_NO_1 =SIMP(statut='f',typ=grno), + GROUP_NO_2 =SIMP(statut='f',typ=grno), + OBSTACLE =SIMP(statut='o',typ=table_fonction), + ORIG_OBST =SIMP(statut='f',typ='R',min=3,max=3), + NORM_OBST =SIMP(statut='o',typ='R',min=3,max=3), + ANGL_VRIL =SIMP(statut='f',typ='R' ), + JEU =SIMP(statut='f',typ='R',defaut= 1. ), + DIST_1 =SIMP(statut='f',typ='R',val_min=0.E+0 ), + DIST_2 =SIMP(statut='f',typ='R',val_min=0.E+0 ), + SOUS_STRUC_1 =SIMP(statut='f',typ='TXM' ), + SOUS_STRUC_2 =SIMP(statut='f',typ='TXM' ), + REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL"), + RIGI_NOR =SIMP(statut='f',typ='R' ), + AMOR_NOR =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + RIGI_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + AMOR_TAN =SIMP(statut='f',typ='R' ), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","COULOMB","COULOMB_STAT_DYNA") ), + b_coulomb =BLOC(condition="FROTTEMENT=='COULOMB'", + COULOMB =SIMP(statut='o',typ='R' ),), + b_coulomb_stat_dyna =BLOC(condition="FROTTEMENT=='COULOMB_STAT_DYNA'", + COULOMB_STAT =SIMP(statut='o',typ='R' ), + COULOMB_DYNA =SIMP(statut='o',typ='R' ),), + LAME_FLUIDE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + b_lame =BLOC(condition="LAME_FLUIDE=='OUI'", + ALPHA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + BETA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + CHI =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + DELTA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + ), + PARA_LAME_FLUI =FACT(statut='d', + NMAX_ITER =SIMP(statut='f',typ='I',defaut= 20 ), + RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + LAMBDA =SIMP(statut='f',typ='R',defaut= 10. ),), + VERI_CHOC =FACT(statut='f', + STOP_CRITERE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + SEUIL =SIMP(statut='f',typ='R',defaut= 0.5 ), + ), + +#parametres flambage + FLAMBAGE =FACT(statut='f',max='**', + regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'), + EXCLUS('NOEUD_2','GROUP_NO_2'),), + NOEUD_1 =SIMP(statut='f',typ=no), + NOEUD_2 =SIMP(statut='f',typ=no), + GROUP_NO_1 =SIMP(statut='f',typ=grno), + GROUP_NO_2 =SIMP(statut='f',typ=grno), + OBSTACLE =SIMP(statut='o',typ=table_fonction), + ORIG_OBST =SIMP(statut='f',typ='R',max='**'), + NORM_OBST =SIMP(statut='o',typ='R',max='**'), + ANGL_VRIL =SIMP(statut='f',typ='R' ), + JEU =SIMP(statut='f',typ='R',defaut= 1. ), + DIST_1 =SIMP(statut='f',typ='R' ), + DIST_2 =SIMP(statut='f',typ='R' ), + REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL"), + RIGI_NOR =SIMP(statut='f',typ='R' ), + FNOR_CRIT =SIMP(statut='f',typ='R' ), + FNOR_POST_FL =SIMP(statut='f',typ='R' ), + RIGI_NOR_POST_FL=SIMP(statut='f',typ='R' ), + ), + +#non-linearite si dispositif anti-sismique + ANTI_SISM =FACT(statut='f',max='**', + regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'), + UN_PARMI('NOEUD_2','GROUP_NO_2'),), + NOEUD_1 =SIMP(statut='f',typ=no), + NOEUD_2 =SIMP(statut='f',typ=no), + GROUP_NO_1 =SIMP(statut='f',typ=grno), + GROUP_NO_2 =SIMP(statut='f',typ=grno), + RIGI_K1 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + RIGI_K2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + SEUIL_FX =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + C =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + PUIS_ALPHA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + DX_MAX =SIMP(statut='f',typ='R',defaut= 1. ), + ), +#non-linearite effort-deplacement + RELA_EFFO_DEPL =FACT(statut='f',max='**', + NOEUD =SIMP(statut='o',typ=no), + SOUS_STRUC =SIMP(statut='f',typ='TXM' ), + NOM_CMP =SIMP(statut='f',typ='TXM' ), + RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + RELA_TRANSIS =FACT(statut='f',max='**', + NOEUD =SIMP(statut='o',typ=no), + SOUS_STRUC =SIMP(statut='f',typ='TXM' ), + NOM_CMP =SIMP(statut='f',typ='TXM' ), + RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), +#non-linearite effort-vitesse + RELA_EFFO_VITE =FACT(statut='f',max='**', + NOEUD =SIMP(statut='o',typ=no), + SOUS_STRUC =SIMP(statut='f',typ='TXM' ), + NOM_CMP =SIMP(statut='f',typ='TXM' ), + RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + ), +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + b_solv_harm_gene =BLOC(condition = "BASE_CALCUL=='GENE' and TYPE_CALCUL=='HARM'", + fr="Methode de resolution matrice generalisee", + SOLVEUR =C_SOLVEUR('DYNA_LINE_HARM','GENE'), + ), + b_solv_harm_phys =BLOC(condition = "BASE_CALCUL=='PHYS' and TYPE_CALCUL=='HARM'", + fr="Methode de resolution matrice sur ddl physique", + SOLVEUR =C_SOLVEUR('DYNA_LINE_HARM','PHYS'), + ), + b_solv_line_tran =BLOC(condition = "BASE_CALCUL=='PHYS' and TYPE_CALCUL=='TRAN'", + SOLVEUR =C_SOLVEUR('DYNA_LINE_TRAN'), + ), + b_solv_tran_gene =BLOC(condition = "BASE_CALCUL=='GENE' and TYPE_CALCUL=='TRAN'", + SOLVEUR =C_SOLVEUR('DYNA_TRAN_MODAL'), + ), +#------------------------------------------------------------------- + b_sensibilite =BLOC(condition = "TYPE_CALCUL=='HARM'or (TYPE_CALCUL=='TRAN' and BASE_CALCUL=='PHYS')", + regles=(CONCEPT_SENSIBLE('ENSEMBLE'),), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des parametres de sensibilite.", + ang="List of sensitivity parameters",), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), + b_impression = BLOC(condition = "BASE_CALCUL=='GENE' and TYPE_CALCUL=='TRAN'", + IMPRESSION =FACT(statut='f', + regles=(EXCLUS('TOUT','NIVEAU'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NIVEAU =SIMP(statut='f',typ='TXM',into=("DEPL_LOC","VITE_LOC","FORC_LOC","TAUX_CHOC") ), + INST_INIT =SIMP(statut='f',typ='R' ), + INST_FIN =SIMP(statut='f',typ='R' ), + ), + ), + ); + + + + + + + + + + + + + + + + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178, + UIinfo={"groupes":("Impression","Utilitaires",)}, + fr="Engendre des tests pour la non régression du code (pour développeurs)", + UNITE =SIMP(statut='f',typ='I',defaut=8), + FORMAT =SIMP(statut='f',typ='TXM',into=("OBJET",) ), + FORMAT_R =SIMP(statut='f',typ='TXM',defaut="1PE20.13"), + PREC_R =SIMP(statut='f',typ='TXM',defaut="1.E-10"), +#============================================================================ + b_aster =BLOC( condition = "FORMAT==None", + CO =SIMP(statut='o',typ=(cham_gd_sdaster,resultat_sdaster,table_sdaster), + validators=NoRepeat(),max='**'), + TYPE_TEST =SIMP(statut='f',typ='TXM',defaut="SOMM_ABS",into=("SOMME","SOMM_ABS","MAX","MIN") ), + ), +#============================================================================ + b_objet =BLOC( condition = "FORMAT=='OBJET'", + regles=(UN_PARMI('TOUT','CO'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + CO =SIMP(statut='f',typ=assd,validators=NoRepeat(),max='**'), + TYPE_TEST =SIMP(statut='f',typ='TXM',defaut="SOMME",into=("SOMME",) ), + ), +) ; +#& MODIF COMMANDE DATE 14/02/2011 AUTEUR GREFFET N.GREFFET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# ENVOI DES CHAMPS CINEMATIQUES VIA YACS POUR COUPLAGE IFS +# +ENV_CINE_YACS=PROC(nom = "ENV_CINE_YACS", + op = 111, + UIinfo = {"groupes":("Résultats et champs",)}, + fr = "Envoi des champs de deplacement et vitesse via YACS pour Couplage de Code_Aster et Saturne", + regles = (EXCLUS('ETAT_INIT','RESULTAT',),), + MATR_PROJECTION = SIMP(statut='o', typ=corresp_2_mailla,), + VIS_A_VIS = FACT(statut='o', max='**', + GROUP_MA_1=SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO_2=SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),), + RESULTAT = FACT(statut='f', + NUME_ORDRE=SIMP(statut='o', typ='I', validators=NoRepeat()), + RESU =SIMP(statut='o', typ=resultat_sdaster, validators=NoRepeat()),), + ETAT_INIT = FACT(statut='f', + DEPL=SIMP(statut='f', typ=cham_no_sdaster, validators=NoRepeat()), + VITE=SIMP(statut='f', typ=cham_no_sdaster, validators=NoRepeat()), + ACCE=SIMP(statut='f', typ=cham_no_sdaster, validators=NoRepeat()),), + INST = SIMP(statut='o',typ='R', ), + PAS = SIMP(statut='o',typ='R', ), + NUME_ORDRE_YACS = SIMP(statut='o', typ='I',), + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE + +def exec_logiciel_prod(self, MAILLAGE, **args): + if MAILLAGE != None: + mcf = MAILLAGE[0] + self.type_sdprod(mcf['MAILLAGE'], maillage_sdaster) + return None + +EXEC_LOGICIEL = MACRO(nom="EXEC_LOGICIEL", + op=OPS('Macro.exec_logiciel_ops.exec_logiciel_ops'), + sd_prod=exec_logiciel_prod, + fr="Exécute un logiciel ou une commande système depuis Aster", + UIinfo={"groupes":("Gestion du travail","Outils-métier",)}, + + regles = ( AU_MOINS_UN('LOGICIEL', 'MAILLAGE', 'SALOME'), + EXCLUS('MACHINE_DISTANTE','MAILLAGE'), + EXCLUS('MAILLAGE','SALOME'), + ), + + LOGICIEL = SIMP(statut='f', typ='TXM'), + ARGUMENT = SIMP(statut='f', max='**', typ='TXM'), + + + MACHINE_DISTANTE = FACT(statut='f', + SSH_ADRESSE = SIMP(statut='o', typ='TXM', val_min=1, val_max=255, + fr="Adresse IP ou nom de la machine sur laquelle le logiciel/script sera exécuté via SSH"), + SSH_LOGIN = SIMP(statut='f', typ='TXM', val_min=1, val_max=255, + fr="Nom d'utilisateur sur la machine distante"), + SSH_PORT = SIMP(statut='f', typ='I', val_min=1, val_max=65535, defaut=22, + fr="Port SSH de la machien distante"), + ), + + + MAILLAGE = FACT(statut='f', + FORMAT = SIMP(statut='o', typ='TXM', into=("GMSH", "GIBI", "SALOME")), + UNITE_GEOM = SIMP(statut='f', typ='I', val_min=10, val_max=90, defaut=16, + fr="Unité logique définissant le fichier (fort.N) contenant les données géométriques (datg)"), + UNITE = SIMP(statut='f', typ='I', val_min=10, val_max=90, defaut=19, + fr="Unité logique définissant le fichier (fort.N) produit par le mailleur"), + MAILLAGE = SIMP(statut='o', typ=CO), + ), + + + SALOME = FACT(statut='f', + regles=(UN_PARMI('CHEMIN_SCRIPT', 'UNITE_SCRIPT'), + PRESENT_PRESENT('NOM_PARA','VALE'),), + CHEMIN_SCRIPT = SIMP(statut='f', typ='TXM', + fr="Chemin du script Salome"), + UNITE_SCRIPT = SIMP(statut='f', typ='I', val_min=80, val_max=99, + fr="Unité logique du script Salome"), + SALOME_HOST = SIMP(statut='f', typ='TXM', defaut='localhost', + fr="Machine sur laquelle tourne Salome"), + SALOME_PORT = SIMP(statut='f', typ='I', val_min=2800, val_max=2900, defaut=2810, + fr="Port de l'instance Salome (2810 ou supérieur)"), + SALOME_RUNAPPLI = SIMP(statut='f', typ='TXM', + fr="Chemin vers le script de lancement runAppli de Salome"), + FICHIERS_ENTREE = SIMP(statut='f', typ='TXM', validators=NoRepeat(),max='**', + fr="Liste des fichiers d'entrée du script Salome"), + FICHIERS_SORTIE = SIMP(statut='f', typ='TXM', validators=NoRepeat(),max='**', + fr="Liste des fichiers générés par le script Salome"), + NOM_PARA = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), + fr="Liste des noms des paramètres à modifier dans le script Salome"), + VALE = SIMP(statut='f',typ='TXM',max='**', + fr="Valeur des paramètres à) modifier dans le script Salome"), + ), + + CODE_RETOUR_MAXI = SIMP(statut='f', typ='I', defaut=0, val_min=-1, + fr="Valeur maximale du code retour toléré (-1 pour l'ignorer)"), + + INFO = SIMP(statut='f', typ='I', defaut=2, into=(1,2),), +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE NISTOR I.NISTOR + +def extr_mode_prod(FILTRE_MODE,**args): + vale=FILTRE_MODE[0]['MODE'] + if AsType(vale) == mode_meca : return mode_meca + if AsType(vale) == mode_meca_c : return mode_meca_c + if AsType(vale) == mode_gene : return mode_gene + raise AsException("type de concept resultat non prevu") + +EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod, + reentrant='n',fr="Extraire séléctivement des modes des structures de données modales", + UIinfo={"groupes":("Résolution","Dynamique",)}, + FILTRE_MODE =FACT(statut='o',max='**', + regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','NUME_MODE','NUME_MODE_EXCLU','FREQ_MIN','CRIT_EXTR',),), + MODE =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_gene ) ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE_EXCLU =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + FREQ_MIN =SIMP(statut='f',typ='R' ), + CRIT_EXTR =SIMP(statut='f',typ='TXM',into=("MASS_EFFE_UN","MASS_GENE") ), + b_freq_min =BLOC(condition = "FREQ_MIN != None", + FREQ_MAX =SIMP(statut='o',typ='R' ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + ), + b_crit_extr =BLOC(condition = "CRIT_EXTR != None", + regles=(AU_MOINS_UN('SEUIL','SEUIL_X','SEUIL_Y','SEUIL_Z'),), + SEUIL =SIMP(statut='f',typ='R'), + SEUIL_X =SIMP(statut='f',typ='R'), + SEUIL_Y =SIMP(statut='f',typ='R'), + SEUIL_Z =SIMP(statut='f',typ='R'), + ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + IMPRESSION =FACT(statut='f', + CUMUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",into=("MASS_EFFE_UN","MASS_GENE") ), + ), +) ; +#& MODIF COMMANDE DATE 03/10/2011 AUTEUR LEFEBVRE J-P.LEFEBVRE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE + +def extr_resu_prod(RESULTAT,**args): + if AsType(RESULTAT) == evol_elas : return evol_elas + if AsType(RESULTAT) == evol_noli : return evol_noli + if AsType(RESULTAT) == evol_ther : return evol_ther + if AsType(RESULTAT) == evol_varc : return evol_varc + if AsType(RESULTAT) == dyna_trans : return dyna_trans + if AsType(RESULTAT) == dyna_harmo : return dyna_harmo + if AsType(RESULTAT) == acou_harmo : return acou_harmo + if AsType(RESULTAT) == mode_meca : return mode_meca + if AsType(RESULTAT) == mode_acou : return mode_acou + if AsType(RESULTAT) == mult_elas : return mult_elas + if AsType(RESULTAT) == fourier_elas : return fourier_elas + + raise AsException("type de concept resultat non prevu") + +EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,reentrant='f', + UIinfo={"groupes":("Résultats et champs",)}, + fr="Extraire des champs au sein d'une SD Résultat", + regles=(CONCEPT_SENSIBLE('SEPARE'), + #REUSE_SENSIBLE(), + DERIVABLE('RESULTAT'),), + RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,acou_harmo,mode_meca, + mode_acou,evol_ther,evol_noli,evol_varc, + mult_elas,fourier_elas,fourier_ther ) ), + + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), + + ARCHIVAGE =FACT(statut='o', + regles=( UN_PARMI('NUME_ORDRE', 'INST', 'FREQ', 'NUME_MODE', + 'NOEUD_CMP', 'LIST_INST', 'LIST_FREQ', 'LIST_ORDRE', + 'NOM_CAS', 'LIST_ARCH', 'PAS_ARCH' ), + EXCLUS( 'CHAM_EXCLU','NOM_CHAM' ), ), + CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO()), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + LIST_ARCH =SIMP(statut='f',typ=listis_sdaster), + PAS_ARCH =SIMP(statut='f',typ='I'), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM'), + ), + + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +def extr_table_prod(TYPE_RESU,**args): + defs = globals() + typ = TYPE_RESU.lower() + if defs.get(typ) is not None: + return defs[typ] + raise AsException("type de concept resultat non prevu") + +EXTR_TABLE=OPER(nom="EXTR_TABLE", + op=173, + sd_prod=extr_table_prod, + reentrant='n', + UIinfo={"groupes":("Résultats et champs","Tables")}, + fr="Extraire d'une table des concepts Code_Aster", + TYPE_RESU =SIMP(statut='o',typ='TXM', + into=('MATR_ASSE_GENE_R', 'MATR_ELEM_DEPL_R', + 'VECT_ELEM_DEPL_R', + 'CHAM_GD_SDASTER', 'CHAM_NO_SDASTER', + 'CARTE_SDASTER', 'CHAM_ELEM', + 'MODE_MECA', + 'FONCTION_SDASTER', 'FONCTION_C', 'NAPPE_SDASTER', + 'ENTIER',),), + + TABLE =SIMP(statut='o',typ=(table_sdaster,table_container)), + + NOM_PARA =SIMP(statut='o',typ='TXM'), + + FILTRE =FACT(statut='f',min=1,max='**', + NOM_PARA =SIMP(statut='o',typ='TXM'), + CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ", + into=("EQ","LT","GT","NE","LE","GE","VIDE", + "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI") ), + b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))", + regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),), + VALE =SIMP(statut='f',typ='R'), + VALE_I =SIMP(statut='f',typ='I'), + VALE_C =SIMP(statut='f',typ='C'), + VALE_K =SIMP(statut='f',typ='TXM'),), + + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + ), + + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + +def factoriser_prod(MATR_ASSE,**args): + if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_depl_r + if AsType(MATR_ASSE) == matr_asse_depl_c : return matr_asse_depl_c + if AsType(MATR_ASSE) == matr_asse_temp_r : return matr_asse_temp_r + if AsType(MATR_ASSE) == matr_asse_temp_c : return matr_asse_temp_c + if AsType(MATR_ASSE) == matr_asse_pres_r : return matr_asse_pres_r + if AsType(MATR_ASSE) == matr_asse_pres_c : return matr_asse_pres_c + raise AsException("type de concept resultat non prevu") + +FACTORISER=OPER(nom="FACTORISER",op=14,sd_prod=factoriser_prod, + fr="Factoriser une matrice assemblée en un produit de deux matrices triangulaires"+ + "ou construire une matrice de préconditionnement pour une résolution par gradient conjugué", + reentrant='f', UIinfo={"groupes":("Résolution",)}, + regles=(EXCLUS('BLOC_DEBUT','DDL_DEBUT'), + EXCLUS('BLOC_FIN','DDL_FIN'),), + MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r, + matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ), + + # mots clés pour solveur LDLT et MULT_FRONT et MUMPS: + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + NPREC =SIMP(statut='f',typ='I',defaut=8), + + # mots clés pour solveur LDLT : + BLOC_DEBUT =SIMP(statut='f',typ='I',val_min=1,), + DDL_DEBUT =SIMP(statut='f',typ='I',val_min=1,), + BLOC_FIN =SIMP(statut='f',typ='I',val_min=1,), + DDL_FIN =SIMP(statut='f',typ='I',val_min=1,), + + # mots clés pour solveur MUMPS : + TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('NONSYM','SYMGEN','SYMDEF','AUTO')), + PRETRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")), + PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=10,), + ELIM_LAGR2 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + OUT_OF_CORE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + LIBERE_MEMOIRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + + # mots clés pour solveur GCPC et PETSc : + PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ), + b_ldlt_inc =BLOC(condition = "PRE_COND == 'LDLT_INC' ", + NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ), + REMPLISSAGE = SIMP(statut='f',typ='R',defaut= 1.0), + ), + b_ldlt_sp =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision", + REAC_PRECOND =SIMP(statut='f',typ='I',defaut=30, ), + ), + b_jacobi_sor =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", + fr="Paramètres des préconditionneurs JACOBI et SOR", + RENUM =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ), + ), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une étude, fin du travail engagé par une des commandes DEBUT ou POURSUITE", + UIinfo={"groupes":("Gestion du travail",)}, +# +# FIN est appelé prématurément en cas d'exception ("SIGUSR1", ArretCPUError, +# NonConvergenceError..., erreurs ou erreurs récupérées). +# En cas d'ArretCPUError, on limite au maximum le travail à faire dans FIN. +# Pour cela, on force certains mots-clés dans Execution/E_JDC.py. +# + FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f', + typ='TXM',defaut="NON",into=("OUI","NON",) ), + RETASSAGE =SIMP(fr="provoque le retassage de la base GLOBALE", + statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), + INFO_RESU =SIMP(fr="provoque l'impression des informations sur les structures de données", + statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ), + UNITE =SIMP(statut='f',typ='I',defaut=6), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ADOBES A.ADOBES +FONC_FLUI_STRU=OPER(nom="FONC_FLUI_STRU",op= 169,sd_prod=fonction_sdaster, + reentrant='n',fr="Crée une fonction constante paramétrée par l'abscisse curviligne", + UIinfo={"groupes":("Fonctions",)}, + TYPE_FLUI_STRU =SIMP(statut='o',typ=(type_flui_stru) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +def formule_prod(self, VALE, VALE_C, **args): + if VALE != None: + return formule + elif VALE_C != None: + return formule_c + +FORMULE=FORM(nom="FORMULE", + op_init=ops.build_formule, + op=-5, + sd_prod=formule_prod, + UIinfo={"groupes":("Fonctions",)}, + fr="Définit une formule réelle ou complexe à partir de son expression mathématique", + regles = (UN_PARMI('VALE', 'VALE_C',),), + VALE = SIMP(statut='f', typ='TXM'), + VALE_C = SIMP(statut='f', typ='TXM'), + NOM_PARA = SIMP(statut='o', typ='TXM', max='**'), +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER +GENE_FONC_ALEA=OPER(nom="GENE_FONC_ALEA",op= 118,sd_prod=table_fonction, + fr="Génération de la fonction temporelle à partir d une matrice interspectrale", + reentrant='n', + UIinfo={"groupes":("Fonctions",)}, + INTE_SPEC =SIMP(statut='o',typ=table_fonction), + NUME_VITE_FLUI =SIMP(statut='f',typ='I' ), + INTERPOL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ), + b_interpol_oui =BLOC(condition = "INTERPOL == 'OUI' ",fr="Parametres cas interpolation autorisee", + DUREE_TIRAGE =SIMP(statut='f',typ='R' ), + FREQ_INIT =SIMP(statut='f',typ='R' ), + FREQ_FIN =SIMP(statut='f',typ='R' ), + ), + NB_POIN =SIMP(statut='f',typ='I'), + NB_TIRAGE =SIMP(statut='f',typ='I',defaut= 1 ), + INIT_ALEA =SIMP(statut='f',typ='I'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER +def gene_matr_alea_prod(MATR_MOYEN,**args ): + if (AsType(MATR_MOYEN) == matr_asse_gene_r ) : return matr_asse_gene_r + if (AsType(MATR_MOYEN) == macr_elem_dyna) : return macr_elem_dyna + raise AsException("type de concept resultat non prevu") + +GENE_MATR_ALEA=OPER(nom="GENE_MATR_ALEA",op= 27, +#sd_prod=matr_asse_gene_r, +sd_prod=gene_matr_alea_prod, + fr="Générer une réalisation d'une matrice aléatoire réelle sym. déf. positive ou d'un macro élément dynamique", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + MATR_MOYEN = SIMP(statut='o', typ=(matr_asse_gene_r,macr_elem_dyna)), + +# cas matrice generalisee + b_matr =BLOC( condition = "AsType(MATR_MOYEN) in (matr_asse_gene_r,)", + COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1, val_min=0.E+0 , + fr="coefficient de variation de la matrice a generer" ), + ), +# cas macr_elem_dyna + b_macr =BLOC( condition = "AsType(MATR_MOYEN) in (macr_elem_dyna,)", + fr="cas macr_elem_dyna (sous-structuratio)", + COEF_VAR_RIGI = SIMP(statut='f', typ='R', defaut=0.1, val_min=0.E+0 , + fr="coefficient de variation de la matrice de raideur" ), + COEF_VAR_MASS = SIMP(statut='f', typ='R', defaut=0., val_min=0.E+0 , + fr="coefficient de variation de la matrice de masse" ), + COEF_VAR_AMOR = SIMP(statut='f', typ='R', defaut=0., val_min=0.E+0 , + fr="coefficient de variation de la matrice d'amortissement" ),), + + INIT_ALEA =SIMP(statut='f',typ='I'), +) ; + +#& MODIF COMMANDE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER + +GENE_VARI_ALEA=MACRO(nom="GENE_VARI_ALEA", + op_init=ops.build_gene_vari_alea, + op=EMPTY_OPS, + sd_prod=reel, + reentrant='n', + fr="Générer une réalisation d'une variable aléatoire réelle " \ + "de loi de probabilité donnée (Gamma ou Exponentielle)", + UIinfo={"groupes":("Fonctions",)}, + TYPE = SIMP(statut='f', typ='TXM', into=("EXP_TRONQUEE", "EXPONENTIELLE", "GAMMA"), defaut="GAMMA"), + b_gamma =BLOC(condition = "TYPE == 'GAMMA' ",fr="Parametres loi gamma", + VALE_MOY = SIMP(statut='f', typ='R', defaut=1.), + BORNE_INF = SIMP(statut='f', typ='R', defaut=0.), + COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1), + ), + b_expo =BLOC(condition = "TYPE == 'EXPONENTIELLE' ",fr="Parametres loi exponentielle", + VALE_MOY = SIMP(statut='f', typ='R', defaut=0.), + BORNE_INF = SIMP(statut='f', typ='R', defaut=-1.), + ), + b_expo_tronq =BLOC(condition = "TYPE == 'EXP_TRONQUEE' ",fr="Parametres loi exponentielle tronquee", + VALE_MOY = SIMP(statut='f', typ='R', defaut=0.), + BORNE_INF = SIMP(statut='f', typ='R', defaut=-1.), + BORNE_SUP = SIMP(statut='f', typ='R', defaut=1.), + ), + INIT_ALEA =SIMP(statut='f',typ='I'), +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +IMPR_CO=PROC(nom="IMPR_CO",op=17, + UIinfo={"groupes":("Impression","Utilitaires",)}, + fr="Imprimer tous les objets JEVEUX qui constituent un concept utilisateur existant (pour les développeurs)", + regles=(UN_PARMI('CONCEPT','CHAINE','TOUT' ),), + + UNITE =SIMP(statut='f',typ='I',defaut=8), + NIVEAU =SIMP(statut='f',typ='I',defaut=2,into=(-1,0,1,2) ), + ATTRIBUT =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ), + CONTENU =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ), + BASE =SIMP(statut='f',typ='TXM',defaut="G",into=(" ","G","V","L") ), + CONCEPT =FACT(statut='f',max='**', + regles=(DERIVABLE('NOM'),), + NOM =SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(), + fr="Paramètre de sensibilité.", + ang="Sensitivity parameter",max='**'),), + CHAINE =SIMP(statut='f',typ='TXM'), + POSITION =SIMP(statut='f',typ='I',defaut=1), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE Mohamed TORKHANI + + +IMPR_DIAG_CAMPBELL=MACRO(nom="IMPR_DIAG_CAMPBELL", + op=OPS('Macro.impr_diag_campbell_ops.impr_diag_campbell_ops'), + fr="Tracé du Diagramme de Campbell", + UIinfo={"groupes":("Impression","Outils-métier",)}, + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster), + MODES =SIMP(statut='o',typ=table_container), + NFREQ_CAMP =SIMP(statut='o',typ='I' ), + TYP_PREC =SIMP(statut='f',typ='I',defaut= 1, into=(1,2) ), + TYP_TRI =SIMP(statut='f',typ='I',defaut= 2, into=(0,1,2) ), + UNIT_FLE =SIMP(statut='o',typ='I' ,val_min=1), + UNIT_TOR =SIMP(statut='o',typ='I' ,val_min=1), + UNIT_LON =SIMP(statut='o',typ='I' ,val_min=1), + UNIT_TOT =SIMP(statut='o',typ='I' ,val_min=1), + UNIT_INT =SIMP(statut='o',typ='I' ,val_min=1), + L_S =SIMP(statut='f',typ='R', defaut= 1., max='**'), +); +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +IMPR_FONCTION=MACRO(nom="IMPR_FONCTION", + op=OPS('Macro.impr_fonction_ops.impr_fonction_ops'), + sd_prod=None, + fr="Imprime le contenu d'objets de type fonction ou liste de " \ + "réels dans un fichier destiné à un traceur de courbe", + UIinfo={"groupes":("Impression","Fonctions",)}, + FORMAT =SIMP(statut='o',typ='TXM',position='global',defaut='TABLEAU', + into=("TABLEAU","AGRAF","XMGRACE",),), + b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'", + fr="Mots-clés propres à XMGRACE", + PILOTE =SIMP(statut='f',typ='TXM',defaut='', + into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'), + fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"), + UNITE =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29, + fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"), + ), + b_agraf = BLOC(condition = "FORMAT == 'AGRAF'", + fr="Mots-clés propres à AGRAF", + UNITE =SIMP(statut='o',typ='I',defaut=25, + fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"), + UNITE_DIGR =SIMP(statut='o',typ='I',defaut=26, + fr="Unité logique définissant le fichier dans lequel on écrit les directives Agraf"), + ), + # unite pour TABLEAU dans le bloc de mise en forme spécifique + + COURBE =FACT(statut='o',max='**',fr="Définition de la fonction à tracer", + regles=(UN_PARMI('FONCTION','LIST_RESU','FONC_X','ABSCISSE'),), + FONCTION =SIMP(statut='f',typ=(fonction_sdaster, formule, fonction_c, nappe_sdaster), + fr="Fonction réelle ou complexe", ), + LIST_RESU =SIMP(statut='f',typ=listr8_sdaster, + fr="Liste des ordonnees d'une fonction réelle définie par deux listes", ), + FONC_X =SIMP(statut='f',typ=(fonction_sdaster,formule), + fr="Fonction abscisses d'une fonction paramétrique",), + ABSCISSE =SIMP(statut='f',typ='R',max='**', + fr="Valeurs des abscisses", ), + b_fonction =BLOC(condition = "FONCTION != None", + LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ), + ), + b_fonction_c =BLOC(condition = "AsType(FONCTION) in (fonction_c, formule_c)", + fr="Fonction complexe définie par le mot-clé fonction", + PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ), + ), + b_list_resu =BLOC(condition = "LIST_RESU != None", + LIST_PARA =SIMP(statut='o',typ=listr8_sdaster ), + ), + b_fonc_x =BLOC(condition = "FONC_X != None", + FONC_Y =SIMP(statut='o',typ=(fonction_sdaster,formule),fr="Fonction ordonnées d une fonction paramétrique" ), + LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ), + ), + b_vale_resu =BLOC(condition = "ABSCISSE != None", + ORDONNEE =SIMP(statut='o',typ='R',max='**', + fr="Valeurs des ordonnées"), + ), + + # mots-clés utilisant uniquement aux formats autres que TABLEAU + # mais ce serait trop pénible de devoir les supprimer quand on change de format + # donc on ne les met pas dans un bloc + # "pseudo" bloc mise en forme : + LEGENDE =SIMP(statut='f',typ='TXM', + fr="Légende associée à la fonction" ), + STYLE =SIMP(statut='f',typ='I',val_min=0, + fr="Style de la ligne représentant la fonction",), + COULEUR =SIMP(statut='f',typ='I',val_min=0, + fr="Couleur associée à la fonction",), + MARQUEUR =SIMP(statut='f',typ='I',val_min=0, + fr="Type du marqueur associé à la fonction",), + FREQ_MARQUEUR =SIMP(statut='f',typ='I',defaut=0, + fr="Fréquence d impression du marqueur associé à la fonction", ), + # fin bloc mise en forme + + TRI =SIMP(statut='f',typ='TXM',defaut="N", + fr="Choix du tri effectué sur les abscisses ou sur les ordonnées", + into=("N","X","Y","XY","YX") ), + ), + # Mise en page du tableau ou du graphique + b_tableau = BLOC(condition = "FORMAT == 'TABLEAU'", + fr="Mots-clés propres au format Tableau", + UNITE =SIMP(statut='o',typ='I',defaut=8, + fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"), + TITRE =SIMP(statut='f',typ='TXM', + fr="Titre associé au graphique" ), + SOUS_TITRE =SIMP(statut='f',typ='TXM', + fr="Sous-titre du graphique" ), + SEPARATEUR =SIMP(statut='f',typ='TXM',defaut=' ', + fr="Séparateur des colonnes du tableau (ex : ' ', ';'...)"), + COMMENTAIRE =SIMP(statut='f',typ='TXM',defaut='#', + fr="Caractère indiquant au traceur de fonction que la ligne peut etre ignorée"), + COMM_PARA =SIMP(statut='f',typ='TXM',defaut='', + fr="Caractère utilisé pour commentariser la ligne des labels de colonnes"), + DEBUT_LIGNE =SIMP(statut='f',typ='TXM',defaut='', + fr="Caractère de debut de ligne"), + FIN_LIGNE =SIMP(statut='f',typ='TXM',defaut='\n', + fr="Caractère de fin de ligne"), + ), + b_graphique = BLOC(condition = "FORMAT != 'TABLEAU'", + fr="Mise en page du graphique", + TITRE =SIMP(statut='f',typ='TXM', + fr="Titre associé au graphique" ), + SOUS_TITRE =SIMP(statut='f',typ='TXM', + fr="Sous-titre du graphique" ), + BORNE_X =SIMP(statut='f',typ='R',min=2,max=2, + fr="Intervalles de variation des abscisses"), + BORNE_Y =SIMP(statut='f',typ='R',min=2,max=2, + fr="Intervalles de variation des ordonnées"), + ECHELLE_X =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"), + fr="Type d'échelle pour les abscisses" ), + ECHELLE_Y =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"), + fr="Type d'échelle pour les ordonnées" ), + GRILLE_X =SIMP(statut='f',typ='R',max=1,val_min=0., + fr="Pas du quadrillage vertical" ), + GRILLE_Y =SIMP(statut='f',typ='R',max=1,val_min=0., + fr="Pas du quadrillage horizontal" ), + LEGENDE_X =SIMP(statut='f',typ='TXM', + fr="Légende associée à l'axe des abscisses" ), + LEGENDE_Y =SIMP(statut='f',typ='TXM', + fr="Légende associée à l'axe des ordonnées" ), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BOYERE E.BOYERE +IMPR_GENE=PROC(nom="IMPR_GENE",op= 157, + fr="Imprimer le résultat d'un calcul dynamique en variables généralisées au format RESULTAT", + UIinfo={"groupes":("Impression","Dynamique",)}, + FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT",into=("RESULTAT",) ), + UNITE =SIMP(statut='f',typ='I',defaut=8), + GENE =FACT(statut='o',max='**', + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'LIST_INST','LIST_FREQ','TOUT_MODE','TOUT_INST','LIST_ORDRE'), + EXCLUS('TOUT_MODE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'LIST_INST','LIST_FREQ','TOUT_ORDRE','TOUT_INST','LIST_ORDRE'), + EXCLUS('TOUT_INST','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'LIST_INST','LIST_FREQ','TOUT_ORDRE','LIST_ORDRE'), + EXCLUS('TOUT_CMP_GENE','NUME_CMP_GENE'), + EXCLUS('TOUT_CHAM','NOM_CHAM'), + EXCLUS('TOUT_PARA','NOM_PARA'),), +# faut-il faire des blocs selon le type de RESU_GENE + RESU_GENE =SIMP(statut='o',typ=(vect_asse_gene, tran_gene, mode_gene, harm_gene)), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + TOUT_MODE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_CMP_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), + NUME_CMP_GENE =SIMP(statut='f',typ='I',max='**'), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), + NOM_CHAM =SIMP(statut='f',typ='TXM',max='**',into=C_NOM_CHAM_INTO(),), + TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), + NOM_PARA =SIMP(statut='f',typ='TXM',max='**'), + SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO_CMP_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), + INFO_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16, + UIinfo={"groupes":("Impression","Utilitaires",)}, + fr="Imprimer le contenu des objets créés par JEVEUX (pour développeur)", + ENTITE =SIMP(fr="choix de l'observation",statut='o',typ='TXM', + into=("DISQUE","MEMOIRE","REPERTOIRE", + "OBJET","ATTRIBUT","SYSTEME","ENREGISTREMENT") ), + b_objet =BLOC(condition = "(ENTITE=='OBJET')", + NOMOBJ =SIMP(fr="nom d'objet",statut='f',typ='TXM' ), + NUMOC =SIMP(fr="numéro d objet de collection",statut='f',typ='I' ), + NOMOC =SIMP(fr="nom d'objet de collection",statut='f',typ='TXM' ), + ), + b_attribut =BLOC(condition = "(ENTITE=='ATTRIBUT')", + NOMOBJ =SIMP(fr="nom de collection",statut='f',typ='TXM' ), + NOMATR =SIMP(fr="nom d attribut de collection",statut='f',typ='TXM', + into=('$$DESO','$$IADD','$$IADM','$$NOM','$$LONG', + '$$LONO','$$LUTI','$$NUM') ), + ), + b_systeme =BLOC(condition = "(ENTITE=='SYSTEME')", + CLASSE =SIMP(statut='o',typ='TXM',into=('G','V') ), + NOMATR =SIMP(fr="nom d attribut systeme",statut='f',typ='TXM', + into=('$$CARA','$$IADD','$$GENR','$$TYPE','$$MARQ', + '$$DOCU','$$ORIG','$$RNOM','$$LTYP','$$LONG', + '$$LONO','$$DATE','$$LUTI','$$HCOD','$$INDX', + '$$TLEC','$$TECR','$$IADM','$$ACCE','$$USADI') ), + ), + b_repertoire =BLOC(condition = "(ENTITE=='REPERTOIRE')", + CLASSE =SIMP(statut='f',typ='TXM',into=('G','V',' '),defaut=' '), + ), + b_disque =BLOC(condition = "(ENTITE=='DISQUE')", + CLASSE =SIMP(statut='f',typ='TXM' ,into=('G','V',' '),defaut=' '), + ), + b_enregist =BLOC(condition = "(ENTITE=='ENREGISTREMENT')", + CLASSE =SIMP(statut='f',typ='TXM' ,into=('G','V'),defaut='G'), + NUMERO =SIMP(statut='o',typ='I',val_min=1), + INFO =SIMP(statut='f',typ='I',into=(1,2),defaut=1), + ), + IMPRESSION =FACT(statut='f', + NOM =SIMP(statut='f',typ='TXM' ), + UNITE =SIMP(statut='f',typ='I'), + ), + COMMENTAIRE =SIMP(statut='f',typ='TXM' ), +) ; +#& MODIF COMMANDE DATE 01/03/2011 AUTEUR CORUS M.CORUS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE CORUS M.CORUS + +IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160, + UIinfo={"groupes":("Impression","Outils-métier",)}, + fr="Impression d'une structure de données MACR_ELEM_DYNA au format IDEAS MISS3D PLEXUS ou CADYRO", + MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), + FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS", + into=("MISS_3D","IDEAS") ), + + b_ideas =BLOC(condition = "FORMAT == 'IDEAS'", + UNITE =SIMP(statut='f',typ='I',defaut=30), + VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ), + ), + +# b_plexus =BLOC(condition = "FORMAT == 'PLEXUS'", +# UNITE =SIMP(statut='f',typ='I',defaut=30), +# VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ), +# ), + + b_miss_3d =BLOC(condition = "FORMAT == 'MISS_3D'", + regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),), + UNITE =SIMP(statut='f',typ='I',defaut= 26 ), + SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'), + AMOR_REDUIT =SIMP(statut='f',typ='R' ,max='**'), + LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ), + GROUP_MA_INTERF =SIMP(statut='o',typ=grma ,max='**'), + GROUP_MA_FLU_STR=SIMP(statut='f',typ=grma,max='**'), + GROUP_MA_FLU_SOL=SIMP(statut='f',typ=grma,max='**'), + GROUP_MA_SOL_SOL=SIMP(statut='f',typ=grma,max='**'), + GROUP_MA_CONTROL=SIMP(statut='f',typ=grma,max='**'), + FORMAT_R =SIMP(statut='f',typ='TXM',defaut="1PE12.5",into=("1PE12.5","1PE16.9") ), + IMPR_MODE_MECA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + IMPR_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + +# b_cadyro =BLOC(condition = "FORMAT == 'CADYRO'", +# SQUELETTE =SIMP(statut='f',typ=squelette ), +# UNITE_MODE_MECA =SIMP(statut='f',typ='I',defaut= 26 ), +# UNITE_MODE_STAT =SIMP(statut='f',typ='I',defaut= 27 ), +# UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut= 28 ), +# IMPR_MODE_MECA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), +# IMPR_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), +# ), + +) ; +#& MODIF COMMANDE DATE 14/02/2011 AUTEUR GREFFET N.GREFFET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# RECUPERATION DES MAILLAGES IFS VENANT DE SATURNE VIA YACS +# +IMPR_MAIL_YACS=PROC(nom="IMPR_MAIL_YACS",op=43, + UIinfo={"groupes":("Maillage",)}, + fr="Lecture d'un maillage via YACS lors du Couplage de Code_Aster et Saturne", + UNITE_MAILLAGE = SIMP(statut='f',typ='I',defaut=30), + TYPE_MAILLAGE = SIMP(statut='o',typ='TXM',into=("SOMMET","MILIEU")), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA +IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162, + UIinfo={"groupes":("Impression","Outils-métier",)}, + fr="Impression des données d'entrée pour une étude sismique avec MISS3D", + regles=(UN_PARMI('INST_INIT','FREQ_INIT'), + PRESENT_PRESENT('INST_INIT','INST_FIN'), + PRESENT_PRESENT('FREQ_INIT','FREQ_FIN'),), + MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), + EXCIT =FACT(statut='f',max='**', + regles=(UN_PARMI('FONC_MULT','COEF_MULT' ),), + VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),), + COEF_MULT =SIMP(statut='f',typ='R' ), + ), + EXCIT_SOL =FACT(statut='f',max='**', + DIRECTION =SIMP(statut='o',typ='R',min=3,max=3), + FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE","FORC",),), + ), + SOURCE_SOL =FACT(statut='f',max='**', + POINT =SIMP(statut='o',typ='R',min=3,max=3), + DIRECTION =SIMP(statut='o',typ='R',min=3,max=3), + FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE","FORC",),), + ), + SOURCE_FLUIDE =FACT(statut='f',max='**', + POINT =SIMP(statut='o',typ='R',min=3,max=3), + FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE","FORC",),), + ), + DIRE_ONDE =SIMP(statut='f',typ='R',min=3,max=3), + INST_INIT =SIMP(statut='f',typ='R' ), + INST_FIN =SIMP(statut='f',typ='R' ), + FREQ_INIT =SIMP(statut='f',typ='R' ), + FREQ_FIN =SIMP(statut='f',typ='R' ), + PAS =SIMP(statut='o',typ='R' ), + UNITE =SIMP(statut='f',typ='I',defaut= 26 ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE FOURNIER I.FOURNIER +# +IMPR_OAR =MACRO(nom="IMPR_OAR", + op=OPS('Macro.impr_oar_ops.impr_oar_ops'), + sd_prod=None, + fr="Impression au format OAR", + UIinfo={"groupes":("Impression","Outils-métier",)}, + TYPE_CALC = SIMP(statut='o', typ='TXM',into=('COMPOSANT', 'MEF', 'TUYAUTERIE')), + b_composant =BLOC(condition = "TYPE_CALC == 'COMPOSANT' ", + regles = (AU_MOINS_UN('RESU_MECA','RESU_THER')), + DIAMETRE = SIMP(statut='o', typ='R'), + ORIGINE = SIMP(statut='o', typ='TXM', defaut='INTERNE', into=('INTERNE', 'EXTERNE')), + COEF_U = SIMP(statut='f', typ='R', defaut=1.0), + ANGLE_C = SIMP(statut='o', typ='R', defaut=0.0), + REVET = SIMP(statut='f', typ='TXM', defaut='NON', into=('OUI', 'NON')), + RESU_MECA = FACT(statut='f', max='**', + NUM_CHAR = SIMP(statut='o', typ='I'), + TYPE = SIMP(statut='o', typ='TXM', defaut='FX', into=('FX', 'FY', 'FZ', 'MX', 'MY', 'MZ', 'PRE')), + TABLE = SIMP(statut='o', typ=table_sdaster), + TABLE_S = SIMP(statut='f', typ=table_sdaster)), + RESU_THER = FACT(statut='f', max='**', + NUM_TRAN = SIMP(statut='o', typ='I'), + TABLE_T = SIMP(statut='o', typ=table_sdaster), + TABLE_TEMP= SIMP(statut='o', typ=table_sdaster), + TABLE_S = SIMP(statut='f', typ=table_sdaster), + TABLE_ST = SIMP(statut='f', typ=table_sdaster)), + ), + b_mef = BLOC(condition = "TYPE_CALC == 'MEF' ", + regles = (AU_MOINS_UN('RESU_MECA','RESU_THER')), + DIAMETRE = SIMP(statut='o', typ='R'), + ORIGINE = SIMP(statut='o', typ='TXM', defaut='INTERNE', into=('INTERNE', 'EXTERNE')), + COEF_U = SIMP(statut='f', typ='R', defaut=1.0), + RESU_MECA = FACT(statut='f', max='**', + AZI = SIMP(statut='o', typ='R'), + TABLE_T = SIMP(statut='o', typ=table_sdaster), + TABLE_F = SIMP(statut='o', typ=table_sdaster), + TABLE_P = SIMP(statut='o', typ=table_sdaster), + TABLE_CA = SIMP(statut='o', typ=table_sdaster)), + RESU_THER=FACT(statut='f', max='**', + AZI = SIMP(statut='o', typ='R'), + NUM_CHAR = SIMP(statut='o', typ='I'), + TABLE_T = SIMP(statut='o', typ=table_sdaster), + TABLE_TI = SIMP(statut='o', typ=table_sdaster)), + ), + b_tuyauterie = BLOC(condition = "TYPE_CALC == 'TUYAUTERIE' ", + RESU_MECA = FACT(statut='o', max='**', + NUM_CHAR = SIMP(statut='o', typ='I'), + TABLE = SIMP(statut='o', typ=table_sdaster), + MAILLAGE = SIMP(statut='o', typ=maillage_sdaster)), + ), + UNITE = SIMP(statut='f',typ='I',defaut=38), + AJOUT = SIMP(statut='f', typ='TXM', defaut='NON', into=('OUI', 'NON')), + ); +#& MODIF COMMANDE DATE 30/05/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE SELLENET N.SELLENET +IMPR_RESU=PROC(nom="IMPR_RESU",op=39, + UIinfo={"groupes":("Impression","Résultats et champs",)}, + fr="Imprimer un maillage et/ou les résultats d'un calcul (différents formats)", + MODELE =SIMP(statut='f',typ=modele_sdaster), + + FORMAT =SIMP(statut='f',typ='TXM',position='global',defaut="RESULTAT", + into=("RESULTAT","IDEAS","ASTER","CASTEM","ENSIGHT","MED","GMSH") ), + + b_format_resultat =BLOC(condition="FORMAT=='RESULTAT'",fr="unité logique d'impression au format RESULTAT", + UNITE =SIMP(statut='f',typ='I',defaut=8), + ), + + b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="unité logique d'impression et version IDEAS", + UNITE =SIMP(statut='f',typ='I',defaut=30), + VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)), + ), + + b_format_aster =BLOC(condition="FORMAT=='ASTER'",fr="unité logique d'impression au format ASTER", + UNITE =SIMP(statut='f',typ='I',defaut=26), + ), + + b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="unité logique d'impression et version CASTEM", + UNITE =SIMP(statut='f',typ='I',defaut=37), + NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)), + ), + + b_format_ensight =BLOC(condition="FORMAT=='ENSIGHT'",fr="unité logique d'impression au format ENSIGHT", + UNITE =SIMP(statut='f',typ='I',defaut=31), + ), + + b_format_med =BLOC(condition="FORMAT=='MED'",fr="unité logique d'impression au format MED", + UNITE =SIMP(statut='f',typ='I',defaut=80), + ), + + b_format_gmsh =BLOC(condition="FORMAT=='GMSH'",fr="unité logique d'impression et version GMSH", + UNITE =SIMP(statut='f',typ='I',defaut=37), + VERSION =SIMP(statut='f',typ='R',defaut=1.2,into=(1.0,1.2)), + ), + + regles=(AU_MOINS_UN('CONCEPT','RESU',),), + + b_restreint =BLOC(condition="FORMAT=='MED'",fr="Seulement pour les fichiers MED", + RESTREINT =FACT(statut='f', max=1, + fr="Pour réduire une ou plusieurs sd_resultat sur un ensemble de mailles", + regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + TOUT_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + TOUT_GROUP_NO =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),), + ), + ), + + CONCEPT =FACT(statut='f',max='**', + fr='Pour imprimer les champs de "données" à des fins de visualisation (controle des affectations).', + # (valide pour les format RESULTAT et MED) + regles=(UN_PARMI('CHAM_MATER','CARA_ELEM','CHARGE'),), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + CHARGE =SIMP(statut='f',typ=char_meca), + ), + + RESU =FACT(statut='f',max='**', + + regles=(AU_MOINS_UN('CHAM_GD','RESULTAT','MAILLAGE',), + EXCLUS('CHAM_GD','RESULTAT'),), + MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster,squelette)), + CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster), + RESULTAT =SIMP(statut='f',typ=resultat_sdaster), + + b_info_med =BLOC(condition="FORMAT=='MED'", + INFO_MAILLAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + ), + + b_sensibilite =BLOC(condition="RESULTAT != None", + fr="Définition des paramètres de sensibilité", + ang="Definition of sensitivity parameters", + regles=(DERIVABLE('RESULTAT'),), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"),), + + b_partie =BLOC(condition="""(AsType(RESULTAT) in (dyna_harmo, acou_harmo) or + AsType(CHAM_GD) != carte_sdaster) and FORMAT in ('CASTEM', 'GMSH', 'MED')""", + PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ), + ), + b_extrac =BLOC(condition="RESULTAT != None", + fr="extraction d un champ de grandeur", + regles=(EXCLUS('TOUT_CHAM','NOM_CHAM'), + EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP', + 'LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS','ANGL'),), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO()), + + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + ANGL =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + + b_acce_reel =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + ), +### + b_parametres =BLOC(condition="""(RESULTAT != None)and(FORMAT == 'RESULTAT')""", + regles=(EXCLUS('TOUT_PARA','NOM_PARA'),), + TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI","NON",) ), + NOM_PARA =SIMP(statut='f',typ='TXM',max='**'), + FORM_TABL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON","EXCEL") ), + ), +### + b_cmp=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and\ + ((FORMAT == 'CASTEM')or(FORMAT == 'RESULTAT')or(FORMAT == 'IDEAS')or(FORMAT == 'ENSIGHT')or(FORMAT == 'MED'))""", + fr="sélection des composantes", + regles=(EXCLUS('TOUT_CMP','NOM_CMP'),), + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + ), +### + b_med=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and(FORMAT == 'MED')""", + fr="renommage du champ", + regles=(EXCLUS('NOM_CHAM_MED','NOM_RESU_MED'),), + NOM_CHAM_MED =SIMP(statut='f',typ='TXM',validators=(LongStr(1,64),NoRepeat()),max='**'), + NOM_RESU_MED =SIMP(statut='f',typ='TXM'), + ), +### + b_gmsh=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and((FORMAT == 'GMSH'))""", + fr="sélection des composantes et des entités toplogiques", + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TYPE_CHAM =SIMP(statut='f',typ='TXM',defaut="SCALAIRE", + into=("VECT_2D","VECT_3D","SCALAIRE","TENS_2D","TENS_3D"),), + b_scal =BLOC(condition = "TYPE_CHAM=='SCALAIRE'", + NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ),), + b_vect_2d =BLOC(condition = "TYPE_CHAM=='VECT_2D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=2,max=2 ),), + b_vect_3d =BLOC(condition = "TYPE_CHAM=='VECT_3D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=3,max=3 ),), + b_tens_2d =BLOC(condition = "TYPE_CHAM=='TENS_2D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=4,max=4 ),), + b_tens_3d =BLOC(condition = "TYPE_CHAM=='TENS_3D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=6,max=6 ),), + ), +### + b_topologie=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and\ + ((FORMAT == 'RESULTAT')or(FORMAT == 'IDEAS')or(FORMAT == 'MED'))""", + fr="sélection des entités topologiques", + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), +### + b_valeurs=BLOC(condition="(FORMAT == 'RESULTAT')", + fr="sélection sur les valeurs", + VALE_MAX =SIMP(statut='f',typ='TXM',into=("OUI",) ), + VALE_MIN =SIMP(statut='f',typ='TXM',into=("OUI",) ), + BORNE_SUP =SIMP(statut='f',typ='R'), + BORNE_INF =SIMP(statut='f',typ='R'), + IMPR_COOR =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + FORMAT_R =SIMP(statut='f',typ='TXM',defaut="1PE12.5"), + ), + + SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 10/10/2011 AUTEUR BOITEAU O.BOITEAU +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BOITEAU + +IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de valeurs propres dans un contour donné", + UIinfo={"groupes":("Résolution","Dynamique",)}, + MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r, + matr_asse_depl_c,matr_asse_gene_c) ), + MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ), + MATR_C =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ), + UNITE =SIMP(statut='f',typ='I',defaut=8), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",into=("MODE_FLAMB","DYNAMIQUE","MODE_COMPLEXE"), + fr="Type d analyse" ), + b_dynamique =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",fr="Recherche du nombre de fréquences propres", + FREQ_MIN =SIMP(statut='f',typ='R',defaut= 0.E+0 ,fr="Borne inférieure de l intervalle" ), + FREQ_MAX =SIMP(statut='o',typ='R',fr="Borne supérieure de l intervalle" ), + ), + b_mode_complexe =BLOC(condition = "TYPE_RESU == 'MODE_COMPLEXE'",fr="Recherche du nombre de fréquences propres", + FREQ_TYPE_CONTOUR =SIMP(statut='f',typ='TXM',defaut="CERCLE",into=("CERCLE","CERCLE") ), + FREQ_RAYON_CONTOUR =SIMP(statut='o',typ='R',val_min=1.E-2 ), + FREQ_CENTRE_CONTOUR =SIMP(statut='f',typ='C',defaut= 0.0+0.0j), + ), + b_mode_flamb =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'",fr="Recherche du nombre de charges critiques", + CHAR_CRIT_MIN =SIMP(statut='o',typ='R',fr="Borne inférieure de l intervalle" ), + CHAR_CRIT_MAX =SIMP(statut='o',typ='R',fr="Borne supérieure de l intervalle" ), + ), + COMPTAGE =FACT(statut='d', + METHODE =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("STURM","APM","AUTO")), + SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2 ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 1.E-2 ), + NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0), + NBPOINT_CONTOUR =SIMP(statut='f',typ='I',defaut= 40,val_min=10,val_max=1000), + NMAX_ITER_CONTOUR=SIMP(statut='f',typ='I',defaut= 3, val_min=1,val_max=5), + ), +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('IMPR_STURM'), +#------------------------------------------------------------------- + + +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +IMPR_TABLE=MACRO(nom="IMPR_TABLE", + op=OPS('Macro.impr_table_ops.impr_table_ops'), + sd_prod=None, + UIinfo={"groupes":("Impression","Tables",)}, + fr="Impression du contenu d'une table dans un fichier", + regles=(DERIVABLE("TABLE"),), + TABLE =SIMP(statut='o',typ=table_sdaster), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), + FORMAT =SIMP(statut='f',typ='TXM',defaut="TABLEAU", + into=("TABLEAU","ASTER","TABLEAU_CROISE","AGRAF","XMGRACE",),), + b_pilote =BLOC(condition = "FORMAT == 'XMGRACE'", + fr="Mots-clés propres à XMGRACE", + PILOTE =SIMP(statut='f',typ='TXM',defaut='', + into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'), + fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"), + UNITE =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29, + fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"), + ), + b_unite =BLOC(condition = "FORMAT != 'XMGRACE'", + UNITE =SIMP(statut='f',typ='I',defaut=8, + fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"), + ), + FILTRE =FACT(statut='f',max='**', + NOM_PARA =SIMP(statut='o',typ='TXM'), + CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ", + into=("EQ","LT","GT","NE","LE","GE","VIDE", + "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI"),), + b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))", + regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),), + VALE =SIMP(statut='f',typ='R',max='**'), + VALE_I =SIMP(statut='f',typ='I',max='**'), + VALE_C =SIMP(statut='f',typ='C',max='**'), + VALE_K =SIMP(statut='f',typ='TXM',max='**'), + ), + b_crit =BLOC(condition = "CRIT_COMP in ('EQ','NE')", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + ), + ), + TRI =FACT(statut='f', + NOM_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + ORDRE =SIMP(statut='f',typ='TXM',defaut="CROISSANT", # max='**', + into=("CROISSANT","DECROISSANT") ), + ), + PAGINATION =SIMP(statut='f',typ='TXM',max='**'), + FORMAT_R =SIMP(statut='f',typ='TXM',defaut="E12.5"), + FORMAT_C =SIMP(statut='f',typ='TXM',defaut="MODULE_PHASE", + into=("MODULE_PHASE","REEL_IMAG") ), + NOM_PARA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + IMPR_FONCTION =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + + # Mise en page du tableau ou du graphique + b_tableau = BLOC(condition = "FORMAT == 'TABLEAU'", + fr="Mots-clés propres au format Tableau", + SEPARATEUR =SIMP(statut='f',typ='TXM',defaut=' ', + fr="Séparateur des colonnes du tableau (ex : ' ', ';'...)"), + COMMENTAIRE =SIMP(statut='f',typ='TXM',defaut='#', + fr="Caractère indiquant au traceur de fonction que la ligne peut etre ignorée"), + COMM_PARA =SIMP(statut='f',typ='TXM',defaut='', + fr="Caractère utilisé pour commentariser la ligne des labels de colonnes"), + DEBUT_LIGNE =SIMP(statut='f',typ='TXM',defaut='', + fr="Caractère de debut de ligne"), + FIN_LIGNE =SIMP(statut='f',typ='TXM',defaut='\n', + fr="Caractère de fin de ligne"), + ), + + # mise en forme pour les formats qui passent par Graph + b_forme =BLOC(condition = "FORMAT == 'XMGRACE'", + fr="Données de mise en forme du graphique", + # pour la courbe + LEGENDE =SIMP(statut='f',typ='TXM', + fr="Légende associée à la fonction" ), + STYLE =SIMP(statut='f',typ='I',val_min=0, + fr="Style de la ligne représentant la fonction",), + COULEUR =SIMP(statut='f',typ='I',val_min=0, + fr="Couleur associée à la fonction",), + MARQUEUR =SIMP(statut='f',typ='I',val_min=0, + fr="Type du marqueur associé à la fonction",), + FREQ_MARQUEUR =SIMP(statut='f',typ='I',defaut=0, + fr="Fréquence d impression du marqueur associé à la fonction", ), + # format du graphique + BORNE_X =SIMP(statut='f',typ='R',min=2,max=2, + fr="Intervalles de variation des abscisses"), + BORNE_Y =SIMP(statut='f',typ='R',min=2,max=2, + fr="Intervalles de variation des ordonnées"), + ECHELLE_X =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"), + fr="Type d'échelle pour les abscisses" ), + ECHELLE_Y =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"), + fr="Type d'échelle pour les ordonnées" ), + GRILLE_X =SIMP(statut='f',typ='R',max=1,val_min=0., + fr="Pas du quadrillage vertical" ), + GRILLE_Y =SIMP(statut='f',typ='R',max=1,val_min=0., + fr="Pas du quadrillage horizontal" ), + LEGENDE_X =SIMP(statut='f',typ='TXM', + fr="Légende associée à l'axe des abscisses" ), + LEGENDE_Y =SIMP(statut='f',typ='TXM', + fr="Légende associée à l'axe des ordonnées" ), + ), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) +#& MODIF COMMANDE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +INCLUDE=MACRO(nom="INCLUDE", + op=OPS("ops.build_include"), + UIinfo={"groupes":("Gestion du travail",)}, + fr="Débranchement vers un fichier de commandes secondaires", + sd_prod=ops.INCLUDE, + op_init=ops.INCLUDE_context, + fichier_ini=1, + UNITE = SIMP(statut='o',typ='I'), + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +); +#& MODIF COMMANDE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +INCLUDE_MATERIAU = MACRO(nom="INCLUDE_MATERIAU", + op=OPS("Macro.include_materiau_ops.include_materiau_ops"), + sd_prod=mater_sdaster, + UIinfo={"groupes":("Modélisation", "Gestion du travail", )}, + fr="Récupérer les caractéristiques d'un matériau dans le Catalogue Materiaux d'Aster ", + + NOM_AFNOR = SIMP(statut='o', typ='TXM',), + TYPE_MODELE = SIMP(statut='o', typ='TXM', into=("REF", "PAR"),), + VARIANTE = SIMP(statut='o', typ='TXM', + into=("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", + "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", + "U", "V", "W", "X", "Y", "Z",),), + TYPE_VALE = SIMP(statut='o', typ='TXM', into=("NOMI", "MINI", "MAXI"),), + #NOM_MATER = SIMP(statut='o', typ='TXM',), + #UNITE = SIMP(statut='f', typ='I', defaut= 32,), + EXTRACTION = FACT(statut='f', + COMPOR = SIMP(statut='o', typ='TXM', max='**',), + TEMP_EVAL = SIMP(statut='o', typ='R',), + ), + UNITE_LONGUEUR = SIMP(statut='f', typ='TXM', into=("M", "MM"), defaut="M",), + INFO = SIMP(statut='f', typ='I', defaut= 1, into=(1, 2),), +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +INFO_EXEC_ASTER=OPER(nom="INFO_EXEC_ASTER",op=35,sd_prod=table_sdaster, + fr="Récupère différentes informations propres à l'exécution en cours", + reentrant='n', + UIinfo={"groupes":("Gestion du travail",)}, + + regles=(), + LISTE_INFO =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=3, + into=("CPU_RESTANT","UNITE_LIBRE","ETAT_UNITE"),), + b_etat_unite =BLOC(condition = "'ETAT_UNITE' in LISTE_INFO", + regles=(UN_PARMI('UNITE','FICHIER'),), + UNITE =SIMP(statut='f',typ='I',val_min=1,val_max=99,max=1, + fr="Unité logique dont on veut obtenir l'état",), + FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255), + fr="Nom du fichier dont on veut obtenir l'état",), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +def info_fonction_prod(self,ECART_TYPE,RMS,NOCI_SEISME,MAX,NORME, **args): + if (RMS != None): return table_sdaster + if (MAX != None): return table_sdaster + if (NOCI_SEISME != None): return table_sdaster + if (ECART_TYPE != None): return table_sdaster + if (NORME != None): return table_sdaster + raise AsException("type de concept resultat non prevu") + +INFO_FONCTION=MACRO(nom="INFO_FONCTION", + op=OPS('Macro.info_fonction_ops.info_fonction_ops'), + sd_prod=info_fonction_prod, + fr="Opérations mathématiques sur des concepts de type fonction, " \ + "fonction_c ou nappe", + reentrant='n', + UIinfo={"groupes":("Fonctions",)}, + regles=(UN_PARMI('MAX','RMS','NOCI_SEISME','NORME','ECART_TYPE',),), + RMS =FACT(statut='f',fr="Valeur RMS d'une fonction",max='**', + METHODE =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ), + FONCTION =SIMP(statut='o',typ=fonction_sdaster ), + INST_INIT =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ), + INST_FIN =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), + ), + NOCI_SEISME =FACT(statut='f', + regles=(UN_PARMI('FONCTION','SPEC_OSCI',),), + FONCTION =SIMP(statut='f',typ=fonction_sdaster ), + SPEC_OSCI =SIMP(statut='f',typ=nappe_sdaster ), + b_option_f =BLOC(condition="""FONCTION != None""", + OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",validators=NoRepeat(),max='**', + into=("INTE_ARIAS","POUV_DEST","INTE_SPEC","VITE_ABSO_CUMU", + "DUREE_PHAS_FORT","MAXI","ACCE_SUR_VITE","TOUT",), ), + b_amor_red =BLOC(condition="""au_moins_un(OPTION, ("TOUT", "INTE_SPEC")) """, + AMOR_REDUIT =SIMP(statut='o',typ='R'),), + b_pesanteur =BLOC(condition="""au_moins_un(OPTION, ("TOUT", "INTE_ARIAS", "POUV_DEST", "DUREE_PHAS_FORT")) """, + PESANTEUR =SIMP(statut='o',typ='R'),), + ), + b_option_n =BLOC(condition="""SPEC_OSCI !=None""", + OPTION =SIMP(statut='f',typ='TXM',defaut="INTE_SPEC",into=("INTE_SPEC",), ), + NATURE =SIMP(statut='o',typ='TXM',into=("DEPL","VITE","ACCE") ), + AMOR_REDUIT =SIMP(statut='o',typ='R'), ), + INST_INIT =SIMP(statut='f',typ='R'), + INST_FIN =SIMP(statut='f',typ='R'), + COEF =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + FREQ_INIT =SIMP(statut='f',typ='R',defaut= 4.E-1 ), + FREQ_FIN =SIMP(statut='f',typ='R',defaut= 10.E+0 ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + FREQ =SIMP(statut='f',typ='R',max='**'), + NORME =SIMP(statut='f',typ='R',defaut= 1.E+0 ), + BORNE_INF =SIMP(statut='f',typ='R',defaut= 0.05E+0 ), + BORNE_SUP =SIMP(statut='f',typ='R',defaut= 0.95E+0 ), + b_acce_reel =BLOC(condition="(INST_INIT != None)or(INST_FIN != None)or(FREQ_INIT != None)or(FREQ_FIN != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), + ), + ), + MAX =FACT(statut='f',fr="Extrémas locaux d'une fonction", + FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),max='**' ), + INTERVALLE =SIMP(statut='f',typ='R',min=2,max='**', + fr ="définition des bornes des intervalles sous forme de couples (xi_i1,xs_i1,xi_i2,xs_i2)"), + ), + NORME =FACT(statut='f',fr="Norme L2 d'une fonction", + FONCTION =SIMP(statut='o', typ=nappe_sdaster), + ), + ECART_TYPE =FACT(statut='f',fr="Ecart-type d'une fonction", + METHODE =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ), + FONCTION =SIMP(statut='o',typ=fonction_sdaster), + INST_INIT =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ), + INST_FIN =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# 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. +# ====================================================================== +# RESPONSABLE SELLENET N.SELLENET +INFO_RESU=PROC(nom="INFO_RESU",op=40, + UIinfo={"groupes":("Impression","Utilitaires",)}, + fr="Imprimer tous les champs présents dans une structure de données résultat", + RESULTAT=SIMP(statut='f',typ=resultat_sdaster), + UNITE=SIMP(statut='f',typ='I',defaut=6), +); +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# 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. +# ====================================================================== +# RESPONSABLE GREFFET +INIT_COMPO=PROC(nom="INIT_COMPO", + op= 117, + UIinfo={"groupes":("Gestion du travail",)}, + fr="Initialiser adresse component YACS", + COMPO =SIMP(statut='o',typ='I',), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe_sdaster, + UIinfo={"groupes":("Post-traitements",)}, + fr="Définition d'une courbe dans un maillage 2D",reentrant='n', + + MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ), + + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('DEFI_SEGMENT','DEFI_ARC','DEFI_CHEMIN'), + PRESENT_ABSENT('DEFI_CHEMIN','DEFI_SEGMENT','DEFI_ARC'), + PRESENT_ABSENT('DEFI_SEGMENT','NOEUD_ORIG','GROUP_NO_ORIG'), + PRESENT_ABSENT('DEFI_ARC','NOEUD_ORIG','GROUP_NO_ORIG'), + EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'), + EXCLUS('DEFI_CHEMIN','DEFI_SEGMENT'), + EXCLUS('DEFI_CHEMIN','DEFI_ARC'),), + + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + + DEFI_SEGMENT =FACT(statut='f',max='**', + regles=(UN_PARMI('ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'), + UN_PARMI('EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'),), + ORIGINE =SIMP(statut='f',typ='R',min=2,max=2), + NOEUD_ORIG =SIMP(statut='f',typ=no,), + GROUP_NO_ORIG =SIMP(statut='f',typ=grno,), + EXTREMITE =SIMP(statut='f',typ='R',min=2,max=2), + NOEUD_EXTR =SIMP(statut='f',typ=no,), + GROUP_NO_EXTR =SIMP(statut='f',typ=grno,), + ), + + DEFI_ARC =FACT(statut='f',max='**', + regles=(UN_PARMI('CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE'), + UN_PARMI('RAYON','ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'), + UN_PARMI('RAYON','EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'), + PRESENT_PRESENT('RAYON','SECTEUR'),), + CENTRE =SIMP(statut='f',typ='R',min=2,max=2), + NOEUD_CENTRE =SIMP(statut='f',typ=no,), + GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,), + RAYON =SIMP(statut='f',typ='R',val_min=0.E+0), + SECTEUR =SIMP(statut='f',typ='R',min=2,max=2, + val_min=-180.E+0,val_max=180E+0), + ORIGINE =SIMP(statut='f',typ='R',min=2,max=2), + NOEUD_ORIG =SIMP(statut='f',typ=no,), + GROUP_NO_ORIG =SIMP(statut='f',typ=grno,), + EXTREMITE =SIMP(statut='f',typ='R',min=2,max=2), + NOEUD_EXTR =SIMP(statut='f',typ=no,), + GROUP_NO_EXTR =SIMP(statut='f',typ=grno,), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF", + into=("RELATIF","ABSOLU",) ), + ), + + DEFI_CHEMIN =FACT(statut='f',max='**', + regles=(UN_PARMI('MAILLE','GROUP_MA'),), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + + NOEUD_ORIG =SIMP(statut='f',typ=no,), + GROUP_NO_ORIG =SIMP(statut='f',typ=grno,), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface_sdaster, + UIinfo={"groupes":("Post-traitements",)}, + fr="Définir un chemin de type segment de droite dans un maillage 3D",reentrant='n', + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + DEFI_SEGMENT =FACT(statut='o',max='**', + regles=(UN_PARMI('ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'), + UN_PARMI('EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'),), + ORIGINE =SIMP(statut='f',typ='R',min=3,max=3), + NOEUD_ORIG =SIMP(statut='f',typ=no,), + GROUP_NO_ORIG =SIMP(statut='f',typ=grno,), + EXTREMITE =SIMP(statut='f',typ='R',min=3,max=3), + NOEUD_EXTR =SIMP(statut='f',typ=no,), + GROUP_NO_EXTR =SIMP(statut='f',typ=grno,), + ), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +def lire_champ_prod(TYPE_CHAM=None,**args): +# Remarque : si cette liste évolue, il faut penser à mettre à jour son +# homologue dans macr_adap_mail + if TYPE_CHAM[0:5] == "NOEU_" : return cham_no_sdaster + if TYPE_CHAM[0:2] == "EL" : return cham_elem + raise AsException("type de concept resultat non prevu") + +LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod, + UIinfo={"groupes":("Lecture","Résultats et champs",)}, + fr="Lire un champ dans un fichier au format MED et le stocker dans un concept.", + reentrant='n', + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster,), + FORMAT =SIMP(statut='f',typ='TXM',defaut="MED",into=("MED",),), + UNITE =SIMP(statut='f',typ='I',defaut= 81,), + b_format =BLOC(condition = "FORMAT == 'MED'", + regles=( UN_PARMI('NOM_CMP_IDEM','NOM_CMP'), + PRESENT_PRESENT('NOM_CMP','NOM_CMP_MED' ), + EXCLUS('NUME_ORDRE','INST'), + EXCLUS('NUME_PT','INST'),), + NOM_MED =SIMP(statut='o',typ='TXM', ), + NOM_CMP_IDEM =SIMP(statut='f',typ='TXM',into=("OUI",), ), + NOM_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',), + NOM_CMP_MED =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',), + PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",), + fr="Affecte des valeurs nulles la ou le champ n'est pas defini (sinon il y a NaN)"), + NUME_PT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**',), + NUME_ORDRE =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**', + fr="Numero d ordre du champ à lire",ang="Rank of the field to be read" ), + INST =SIMP(statut='f',typ='R',fr="Instant associé",ang="Instant" ), +# + b_precision =BLOC(condition="(INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",), + fr="Critère de précision sur le choix de l'instant associé", + ang="Accuracy criterium over instant choice" ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6, + fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R', + fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),),), +# + NOM_MAIL_MED =SIMP(statut='f',typ='TXM',), + ), +# Remarque : si cette liste évolue, il faut penser à mettre à jour son +# homologue dans macr_adap_mail + TYPE_CHAM =SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO()), + b_modele =BLOC(condition = "TYPE_CHAM!=None and TYPE_CHAM[0:2] == 'EL'", + MODELE =SIMP(statut='o',typ=modele_sdaster, ), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +def lire_fonction_prod(self,TYPE,**args): + if (TYPE == 'FONCTION') : return fonction_sdaster + elif (TYPE == 'FONCTION_C'): return fonction_c + elif (TYPE == 'NAPPE' ) : return nappe_sdaster + raise AsException("type de concept resultat non prevu") + +LIRE_FONCTION=MACRO(nom="LIRE_FONCTION", + op=OPS('Macro.lire_fonction_ops.lire_fonction_ops'), + sd_prod=lire_fonction_prod, + fr="Lit les valeurs réelles dans un fichier de données représentant une " \ + "fonction et crée un concept de type fonction ou nappe", + reentrant='n', + UIinfo={"groupes":("Lecture","Fonctions",)}, + FORMAT =SIMP(statut='f',typ='TXM',into=("LIBRE",),defaut="LIBRE" ), + TYPE =SIMP(statut='f',typ='TXM',into=("FONCTION","FONCTION_C","NAPPE"),defaut="FONCTION" ), + SEPAR =SIMP(statut='f',typ='TXM',into=("None",",",";","/"),defaut="None" ), + INDIC_PARA =SIMP(statut='f',typ='I',min=2,max=2,defaut=[1,1]), + b_fonction =BLOC(condition = "TYPE=='FONCTION' ", + INDIC_RESU =SIMP(statut='f',typ='I',min=2,max=2,defaut=[1,2]), ), + b_fonction_c =BLOC(condition = "TYPE=='FONCTION_C' ", + FORMAT_C =SIMP(statut='f',typ='TXM',defaut="REEL_IMAG",into=("REEL_IMAG","MODULE_PHASE") ), + b_reel_imag =BLOC(condition = "FORMAT_C=='REEL_IMAG' ", + INDIC_REEL =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,2]), + INDIC_IMAG =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,3]), ) , + b_modu_phas =BLOC(condition = "FORMAT_C=='MODULE_PHASE' ", + INDIC_MODU =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,2]), + INDIC_PHAS =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,3]), ), ), + b_nappe =BLOC(condition = "TYPE=='NAPPE' ", + NOM_PARA_FONC =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ), + INDIC_ABSCISSE =SIMP(statut='o',typ='I',min=2,max=2,), + INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"), + fr="Type d'interpolation pour les abscisses et les ordonnées de la fonction"), + PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + DEFI_FONCTION =FACT(statut='f',max='**', + INDIC_RESU =SIMP(statut='o',typ='I',min=2,max=2,),), ), + UNITE =SIMP(statut='o',typ='I' ), + NOM_PARA =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ), + NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG"), + fr="Type d'interpolation pour les abscisses et les ordonnées de la " \ + "fonction ou bien pour le paramètre de la nappe."), + PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ), + VERIF =SIMP(statut='f',typ='TXM',defaut="CROISSANT",into=("CROISSANT","NON") ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2005 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA +LIRE_FORC_MISS=OPER(nom="LIRE_FORC_MISS",op= 179,sd_prod=vect_asse_gene, + fr="Création d'un vecteur assemblé à partir d'une base modale", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs","Outils-métier",)}, + BASE =SIMP(statut='o',typ=mode_meca), + NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), + FREQ_EXTR =SIMP(statut='o',typ='R',max=1), + NOM_CMP =SIMP(statut='f',typ='TXM',into=("DX","DY","DZ") ), + NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE"),defaut="DEPL"), + NUME_CHAR =SIMP(statut='f',typ='I' ), + ISSF =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ), + UNITE_RESU_FORC =SIMP(statut='f',typ='I',defaut=30), + NOM_RESU_FORC =SIMP(statut='f',typ='TXM' ), +) ; + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2005 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA +LIRE_IMPE_MISS=OPER(nom="LIRE_IMPE_MISS",op= 164,sd_prod=matr_asse_gene_c, + fr="Création d une matrice assemblée à partir de base modale", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs","Outils-métier",)}, + BASE =SIMP(statut='o',typ=mode_meca ), + NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), + FREQ_EXTR =SIMP(statut='o',typ='R',max=1), + UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30), + ISSF =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ), + TYPE =SIMP(statut='f',typ='TXM',defaut="ASCII",into=("BINAIRE","ASCII") ), + SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ), +) ; + +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER + + +LIRE_INTE_SPEC=MACRO(nom="LIRE_INTE_SPEC", + op=OPS('Macro.lire_inte_spec_ops.lire_inte_spec_ops'), + sd_prod=table_fonction, + fr="Lecture sur un fichier externe de fonctions complexes pour " \ + "créer une matrice interspectrale", + reentrant='n', + UIinfo={"groupes":("Lecture","Fonctions",)}, + UNITE =SIMP(statut='o',typ='I' ), + FORMAT_C =SIMP(statut='f',typ='TXM',defaut="MODULE_PHASE",into=("REEL_IMAG","MODULE_PHASE") ), + FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","IDEAS") ), + NOM_PARA =SIMP(statut='f',typ='TXM',defaut="FREQ", + into=("DX","DY","DZ","DRX","DRY","DRZ","TEMP", + "INST","X","Y","Z","EPSI","FREQ","PULS","AMOR","ABSC",) ), + NOM_RESU =SIMP(statut='f',typ='TXM',defaut="DSP" ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ), + PROL_DROITE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op= 1,sd_prod=maillage_sdaster, + fr="Crée un maillage par lecture d'un fichier au format Aster ou Med", + ang="Readings of a mesh file", + reentrant='n', + UIinfo={"groupes":("Lecture","Maillage",)}, +# + UNITE =SIMP(statut='f',typ='I',defaut= 20 ), +# + FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","MED"), + fr="Format du fichier : ASTER ou MED.", + ang="Format of the file : ASTER or MED.",), +# + ABSC_CURV =FACT(statut='f',min=0, + TOUT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + ), +# + VERI_MAIL =FACT(statut='d', + VERIF =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + APLAT =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + ), +# + b_format_med =BLOC( condition = " ( FORMAT == 'MED' ) " , + fr="Informations complémentaires pour la lecture MED.", + ang="Further information for MED readings.", +# +# Pour une lecture dans un fichier MED, on peut préciser le nom sous lequel +# le maillage y a été enregistré. Par défaut, on va le chercher sous le nom du concept à créer. + NOM_MED = SIMP(statut='f',typ='TXM', + fr="Nom du maillage dans le fichier MED.", + ang="Name of the mesh into the MED file.",), + INFO_MED = SIMP(statut='f',typ='I',defaut= 1,into=(1,2,3) ), +# + RENOMME = FACT(statut='f', max='**', + fr="Renommer un nom de groupe MED", + NOM_MED = SIMP(statut='o', typ=grma, + fr="Nom du groupe dans le fichier MED"), + NOM = SIMP(statut='o', typ=grma, validators=LongStr(1,8), + fr="Nom du groupe dans le maillage ASTER"), + ), + ), +# + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), +# +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA +def lire_miss_3d_prod(TYPE_RESU,**args): + if TYPE_RESU == "TRANS" : return dyna_trans + if TYPE_RESU == "HARMO" : return dyna_harmo + raise AsException("type de concept resultat non prevu") + +LIRE_MISS_3D=OPER(nom="LIRE_MISS_3D",op= 163,sd_prod=lire_miss_3d_prod, + fr="Restituer sur base physique une réponse harmonique ou transitoire issue de MISS3D", + reentrant='n', + UIinfo={"groupes":("Lecture","Outils-métier",)}, + MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), + UNITE =SIMP(statut='f',typ='I',defaut= 27 ), + NOM =SIMP(statut='f',typ='TXM' ), + TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="TRANS",into=("TRANS","HARMO") ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE POTAPOV S.POTAPOV + +LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char, + fr="Lire le fichier de résultats au format IDEAS produit par le logiciel EUROPLEXUS", + reentrant='n', + UIinfo={"groupes":("Lecture","Outils-métier",)}, + regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),), + UNITE =SIMP(statut='f',typ='I',defaut= 19 ), + FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",into=("IDEAS",)), + MAIL_PLEXUS =SIMP(statut='o',typ=maillage_sdaster ), + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ), + MODELE =SIMP(statut='o',typ=modele_sdaster ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + b_prec_crit =BLOC(condition = "LIST_INST != None or INST != None", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),),), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 03/10/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE + +def lire_resu_prod(TYPE_RESU,**args): + if TYPE_RESU == "EVOL_CHAR" : return evol_char + if TYPE_RESU == "EVOL_THER" : return evol_ther + if TYPE_RESU == "EVOL_ELAS" : return evol_elas + if TYPE_RESU == "EVOL_NOLI" : return evol_noli + if TYPE_RESU == "DYNA_TRANS" : return dyna_trans + if TYPE_RESU == "DYNA_HARMO" : return dyna_harmo + if TYPE_RESU == "HARM_GENE" : return harm_gene + if TYPE_RESU == "MODE_MECA" : return mode_meca + if TYPE_RESU == "MODE_MECA_C" : return mode_meca_c + if TYPE_RESU == "EVOL_VARC" : return evol_varc + raise AsException("type de concept resultat non prevu") + +# pour éviter d'écrire 3 fois cette liste : +def l_nom_cham_pas_elga(): return ( + "ACCE", + "ACCE_ABSOLU", + "CRIT_ELNO", + "DERA_ELNO", + "DERA_NOEU", + "DEDE_ELNO", + "DEDE_NOEU", + "DEGE_ELNO", + "DEGE_NOEU", + "DEPL", + "DEPL_ABSOLU", + "DESI_ELNO", + "DESI_NOEU", + "DETE_ELNO", + "DETE_NOEU", + "DURT_ELNO", + "DURT_NOEU", + "ECIN_ELEM", + "EFCA_ELNO", + "EFGE_ELNO", + "EFCA_NOEU", + "EFGE_NOEU", + "ENDO_ELNO", + "ENDO_NOEU", + "ENEL_ELNO", + "ENEL_NOEU", + "EPTQ_ELNO", + "EPGR_ELNO", + "EPME_ELNO", + "EPMG_ELNO", + "EPMG_NOEU", + "EPOT_ELEM", + "EPSA_ELNO", + "EPSA_NOEU", + "EPSG_ELNO", + "EPSG_NOEU", + "EPSI_ELNO", + "EPTU_ELNO", + "EPSI_NOEU", + "EPSP_ELNO", + "EPSP_NOEU", + "EPMQ_ELNO", + "EPEQ_ELNO", + "SIEQ_ELNO", + "EPMQ_NOEU", + "EPEQ_NOEU", + "SIEQ_NOEU", + "ERRE_ELEM_NOZ1", + "ERRE_ELEM_NOZ2", + "ERRE_ELNO_ELGA", + "ERRE_NOEU_ELGA", + "ERTH_ELEM_TEMP", + "ERTH_ELNO_ELEM", + "ETOT_ELEM", + "ETOT_ELNO", + "FLUX_ELNO", + "FLUX_NOEU", + "FORC_NODA", + "FSUR_2D", + "FSUR_3D", + "FVOL_2D", + "FVOL_3D", + "GRAD_NOEU_THETA", + "HYDR_ELNO", + "HYDR_NOEU", + "INTE_ELNO", + "INTE_NOEU", + "IRRA", + "META_ELNO", + "META_NOEU", + "PMPB_ELNO", + "PMPB_NOEU", + "PRES", + "PRME_ELNO", + "PRAC_ELNO", + "PRAC_NOEU", + "REAC_NODA", + "SIEF_ELNO", + "SIEF_ELNO", + "SIEF_NOEU", + "SIEF_NOEU", + "SITQ_ELNO", + "SICA_ELNO", + "SIGM_ELNO", + "SITU_ELNO", + "SICA_NOEU", + "SIGM_NOEU", + "SIZ1_NOEU", + "SIZ2_NOEU", + "SIPO_ELNO", + "SIPO_NOEU", + "TEMP", + "THETA", + "VALE_CONT", + "VARI_ELNO", + "VACO_ELNO", + "VARI_ELNO", + "VATU_ELNO", + "VARI_NOEU", + "VARI_NOEU", + "VITE", + "VITE_ABSOLU", + "VITE_VENT", + ) + +LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', + UIinfo={"groupes":("Lecture","Resultats et champs",)}, + fr="Lire dans un fichier, soit format IDEAS, soit au format ENSIGHT soit au format MED," + +" des champs et les stocker dans une SD résultat", + + +# 0) mots cles generaux : +#---------------------- + TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_THER","EVOL_ELAS","EVOL_NOLI","MODE_MECA", + "MODE_MECA_C","DYNA_TRANS","DYNA_HARMO","HARM_GENE", + "EVOL_CHAR","EVOL_VARC") ), + + FORMAT =SIMP(statut='o',typ='TXM',into=("IDEAS","IDEAS_DS58","ENSIGHT","MED") ), + + INFO =SIMP(statut='f',typ='I',into=(1,2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + + regles=(UN_PARMI('MAILLAGE','MODELE'),), + MAILLAGE =SIMP(statut='f',typ=maillage_sdaster), + MODELE =SIMP(statut='f',typ=modele_sdaster), + COMP_INCR =C_COMP_INCR(), + NB_VARI =SIMP(statut='f',typ='I' ), + + CHAM_MATER =SIMP(statut='f',typ=cham_mater,), + + CARA_ELEM =SIMP(statut='f',typ=cara_elem,), + + b_evol_elas = BLOC(condition="TYPE_RESU=='EVOL_ELAS'", + EXCIT =FACT(statut='f',max='**', + CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),), + ), + + b_evol_ther = BLOC(condition="TYPE_RESU=='EVOL_THER'", + EXCIT =FACT(statut='f',max='**', + CHARGE =SIMP(statut='o',typ=(char_ther,char_cine_ther)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),), + ), + + b_evol_noli = BLOC(condition="TYPE_RESU=='EVOL_NOLI'", + EXCIT =FACT(statut='f',max='**', + CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", + into=("FIXE_CSTE","FIXE_PILO","SUIV","DIDI")), + DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),), + ), + + +# 1) blocs selon le format choisi : +#--------------------------------- + +# 1-1 ideas dataset-58 : +# ---------------------- + b_dataset_58 = BLOC(condition="FORMAT=='IDEAS_DS58'", + UNITE =SIMP(statut='f',typ='I',defaut= 19 ), + ), + b_dataset_58_b = BLOC(condition="(FORMAT=='IDEAS_DS58') and ((TYPE_RESU=='DYNA_TRANS') or\ + (TYPE_RESU=='DYNA_HARMO') or (TYPE_RESU=='HARM_GENE'))", + NOM_CHAM=SIMP(statut='o',typ='TXM',into=("DEPL","VITE","ACCE","EPSI_NOEU","SIEF_NOEU",),max='**' ), + REDEFI_ORIENT=FACT(statut='f',max='**', + regles=(PRESENT_PRESENT('CODE_DIR','DIRECTION','NOEUD',),), + CODE_DIR =SIMP(statut='f',typ='I',into=(1,2,3,) ), + DIRECTION=SIMP(statut='f',typ='R',min=3,max=3,), + NOEUD =SIMP(statut='f',typ=no,validators=NoRepeat(),max='**'),), + ), + +# 1-2 ideas : +# --------- + b_ideas =BLOC(condition="FORMAT=='IDEAS'", + UNITE =SIMP(statut='f',typ='I',defaut= 19 ), +# TEST =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=l_nom_cham_pas_elga()), + PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",), + fr="Affecte des valeurs nulles la ou le champ n'est pas defini"), + FORMAT_IDEAS =FACT(statut='f',max='**', + regles=(UN_PARMI('POSI_INST','POSI_FREQ'),), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=l_nom_cham_pas_elga()), + NUME_DATASET =SIMP(statut='f',typ='I',into=(55,57,2414) ), + RECORD_3 =SIMP(statut='f',typ='I',max=10), + RECORD_6 =SIMP(statut='f',typ='I',max=10), + RECORD_9 =SIMP(statut='f',typ='I',max=10), + POSI_ORDRE =SIMP(statut='o',typ='I',min=2,max=2), + POSI_NUME_MODE =SIMP(statut='f',typ='I',min=2,max=2), + POSI_MASS_GENE =SIMP(statut='f',typ='I',min=2,max=2), + POSI_AMOR_GENE =SIMP(statut='f',typ='I',min=2,max=2), + POSI_INST =SIMP(statut='f',typ='I',min=2,max=2), + POSI_FREQ =SIMP(statut='f',typ='I',min=2,max=2), + NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),), + ), + +# 1-3 ensight : +# ------------- + b_ensight =BLOC(condition="FORMAT=='ENSIGHT'", + NOM_FICHIER =SIMP(statut='f',typ='TXM'), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=l_nom_cham_pas_elga()), + ), + +# 1-4 med : +# --------- + b_med =BLOC(condition = "FORMAT == 'MED'",fr="Nom du champ dans le fichier MED", + UNITE =SIMP(statut='f',typ='I',defaut= 81, fr="Le fichier est : fort.n.",), + FORMAT_MED =FACT(statut='o',max='**', + regles=(ENSEMBLE('NOM_CMP','NOM_CMP_MED'),UN_PARMI('NOM_CHAM_MED','NOM_RESU'),), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO(),), + NOM_CHAM_MED =SIMP(statut='f',typ='TXM', fr="Nom du champ dans le fichier MED.", ), + NOM_RESU =SIMP(statut='f',typ='TXM', fr="Prefixe du nom de champ dans le fichier MED.", ), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**', fr="Nom des composantes dans ASTER.", ), + NOM_CMP_MED =SIMP(statut='f',typ='TXM',max='**', fr="Nom des composantes dans MED.", ), + ), + PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",), + fr="Affecte des valeurs nulles la ou le champ n'est pas defini (sinon il y a NaN)"), + ), + +# 2) blocs selon le type du resultat : +#--------------------------------- + b_mode_meca =BLOC(condition="(TYPE_RESU=='MODE_MECA')or(TYPE_RESU=='MODE_MECA_C')", + # Ces mots cles sont stockes dans l'objet .REFD des mode_meca + # Ces mots cles sont aussi utilises pour imposer la numerotation des cham_no de DEPL_R + MATR_A =SIMP(statut='f',typ=matr_asse_depl_r,max=1), + MATR_B =SIMP(statut='f',typ=matr_asse_depl_r,max=1), + ), + + +# 3) autres blocs : +#--------------------------------- + b_extrac =BLOC(condition="1",fr="acces a un champ dans la structure de donnees resultat", + regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST','FREQ','LIST_FREQ'),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + + b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +LIRE_TABLE=MACRO(nom="LIRE_TABLE", + op=OPS('Macro.lire_table_ops.lire_table_ops'), + sd_prod=table_sdaster, + fr="Lecture d'un fichier contenant une table", + UIinfo={"groupes":("Lecture","Tables",)}, + UNITE = SIMP(statut='o', typ='I' ), + FORMAT = SIMP(statut='f', typ='TXM', into=("ASTER", "LIBRE"), defaut="ASTER"), + NUME_TABLE = SIMP(statut='f', typ='I', defaut=1), + SEPARATEUR = SIMP(statut='f', typ='TXM', defaut=' '), + RENOMME_PARA = SIMP(statut='f', typ='TXM', into=("UNIQUE",),), + TITRE = SIMP(statut='f', typ='TXM', max='**'), + INFO = SIMP(statut='f', typ='I', into=(1, 2), ), + ) ; + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2005 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. +# ====================================================================== +# RESPONSABLE ANDRIAM H.ANDRIAMBOLOLONA + +MAC_MODES=OPER(nom="MAC_MODES",op= 141,sd_prod=table_sdaster, + fr="Critere orthogonalite de modes propres", + reentrant='n', + UIinfo={"groupes":("Résolution","Dynamique",)}, + regles=(PRESENT_PRESENT('IERI','MATR_ASSE'),), + BASE_1 =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_flamb) ), + BASE_2 =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_flamb) ), + MATR_ASSE =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c) ), + IERI =SIMP(statut='f',typ='TXM',into=("OUI",),), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 12/09/2011 AUTEUR NICOLAS G.NICOLAS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GNICOLAS G.NICOLAS + + + +def macr_adap_mail_prod(self, MAJ_CHAM, ADAPTATION, **args): +# +# 0. Typage des structures produites +# + #print args + if ( args.has_key('MAILLAGE_NP1') ) : + if ( args['MAILLAGE_NP1'] is not None ) : + maillage_np1=args['MAILLAGE_NP1'] + self.type_sdprod(maillage_np1, maillage_sdaster) +# + if ( args.has_key('MAILLAGE_NP1_ANNEXE') ) : + if ( args['MAILLAGE_NP1_ANNEXE'] is not None ) : + maillage_np1_annexe=args['MAILLAGE_NP1_ANNEXE'] + self.type_sdprod(maillage_np1_annexe, maillage_sdaster) +# + if MAJ_CHAM == None:return None +# Remarque : la liste qui suit doit etre conforme à son homologue de LIRE_CHAMP + for ch in MAJ_CHAM: + t=ch['TYPE_CHAM'] + if t[0:5] == "NOEU_":self.type_sdprod(ch['CHAM_MAJ'],cham_no_sdaster) + if t[0:2] == "EL": self.type_sdprod(ch['CHAM_MAJ'],cham_elem) + return None + + +MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL", + op=OPS('Macro.macr_adap_mail_ops.macr_adap_mail_ops'), + sd_prod=macr_adap_mail_prod, + fr="Adapter un maillage avec le logiciel HOMARD.", + ang="Mesh adaptation with the HOMARD software.", + UIinfo={"groupes":("Maillage",)}, +# +# 1. Le niveau d'information +# + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4)), +# +# 2. Version de HOMARD +# + VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V10_2", + into=("V10_2", "V10_N", "V10_N_PERSO"), + fr="Version de HOMARD", + ang="HOMARD release"), +# +# 3. Langue des messages produits par HOMARD +# + LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS", + into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",), + fr="Langue des messages produits par HOMARD.", + ang="Language for the HOMARD messages." ), +# +# 4. Les maillages +# 4.1. Quel que soit le type de traitement, il faut donner le concept du maillage initial (entree) +# + MAILLAGE_N = SIMP(statut='o',typ=maillage_sdaster, + fr="Maillage avant adaptation", + ang="Mesh before adaptation" ), +# +# 4.2. Si ce n'est pas une simple lecture : +# + b_maillage = BLOC( condition = " (ADAPTATION != 'LECTURE') " , + fr="Lectures de champs aux points de Gauss ou aux noeuds par element.", + ang="Readings of the fields over the Gauss points.", +# +# 4.2.1. Le concept du maillage final (sortie) +# + MAILLAGE_NP1 = SIMP(statut='o',typ=CO, + fr="Maillage après adaptation", + ang="Mesh after adaptation" ), +# +# 4.2.2. Eventuellement, on peut produire un maillage annexe +# Actuellement, c'est le maillage n+1, mais de degré différent. +# + MAILLAGE_NP1_ANNEXE = SIMP(statut='f',typ=CO, + fr="Maillage annexe après adaptation", + ang="Additional mesh after adaptation" ), +# + ) , +# +# 5. Le pilotage de l'adaptation, avec les variantes suivantes : +# . Raffinement et deraffinement, selon un champ +# . Raffinement seul, selon un champ +# . Deraffinement seul, selon un champ +# . Raffinement seul, selon des zones geometriques +# . Raffinement uniforme : toutes les mailles sont divisées +# . Deraffinement uniforme : toutes les mailles sont regroupées +# . Modification : le maillage subit des transformations specifiques +# . Rien : le maillage est le meme a la sortie et a l'entree +# + ADAPTATION = SIMP(statut='o',typ='TXM', + into=("RAFF_DERA","RAFFINEMENT","DERAFFINEMENT","RAFFINEMENT_ZONE", \ + "RAFFINEMENT_UNIFORME","DERAFFINEMENT_UNIFORME", \ + "MODIFICATION", "LECTURE", "RIEN"), + fr="Pilotage de l'adaptation : selon un champ ou uniforme.", + ang="Adaptation control : either among an field or uniform" ), +# +# 6. Pour de l'adaptation libre, il faut un champ ou une zone +# + b_champ = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \ + (ADAPTATION == 'RAFFINEMENT') or \ + (ADAPTATION == 'DERAFFINEMENT') " , + fr="Pour une adaptation libre, choix du champ ou d'une zone à raffiner", + ang="For a free adaptation, selection of the field or of a zone", +# + regles=(UN_PARMI('CHAM_GD','RESULTAT_N')), +# +# 6.1. Reperage de la zone a raffiner a l'aide d'un champ +# +# 6.1.1. Sous forme de champ de grandeur +# + CHAM_GD = SIMP(statut='f',typ=cham_gd_sdaster, + fr="Champ de grandeur Code_Aster pilotant l'adaptation", + ang="Code_Aster 'champ de grandeur' governing the adapatation" ), +# +# 6.1.2. Sous forme de concept resultat_sdaster +# + RESULTAT_N = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) , + fr="Concept résultat Code_Aster contenant le champ", + ang="The Code_Aster result with the field" ), +# + b_champ_adaptation = BLOC(condition="(RESULTAT_N != None)", + NOM_CHAM = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO(), + fr="Champ dans le résultat", + ang="The field in the result structure" ), + ), +# +# 6.1.3. Est-ce un champ derive +# + b_sensibilite = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ", + fr="Est-ce un champ dérivé", + ang="Is the field a derivative field", +# + SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom), + fr="Paramètre de sensibilité.", + ang="Sensitivity parameter") +# + ), +# +# 6.1.4. La ou les composantes retenues +# + b_composante = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ", + fr="Choix de la composante ou des composantes pour le champ", + ang="Selection of the component(s) for the field", +# + NOM_CMP = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Liste des composante(s) retenue(s) pour le champ.", + ang="List of the selected component(s) for the field." ), +# + ), +# +# 6.1.5. Le paramètre temporel pour le champ +# + b_parametre_temporel = BLOC(condition="(RESULTAT_N != None)", + fr="Choix éventuel du paramètre temporel pour le champ", + ang="Time selection for the field (option)", +# + regles=(EXCLUS('NUME_ORDRE','INST'),), +# +# 6.1.5.1. Soit le numero d'ordre +# + NUME_ORDRE = SIMP(statut='f',typ='I', + fr="Numéro d ordre", + ang="Rank" ), +# +# 6.1.5.2. Soit l'instant +# 6.1.5.2.1. Sa valeur +# + INST = SIMP(statut='f',typ='R', + fr="Instant associé", + ang="Instant" ), +# +# 6.1.5.2.2. La précision du choix de l'instant +# + b_precision = BLOC(condition="(INST != None)", + fr="Choix de la précision du choix de l'instant", + ang="Precision for the choice of the instant", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",), + fr="Critère de précision sur le choix de l'instant associé", + ang="Accuracy criterium over the choice of the instant"), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6, + fr="Précision relative sur le choix de l'instant associé", + ang="Relative accuracy over the choice of the instant"),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R', + fr="Précision absolue sur le choix de l'instant associé", + ang="Absolute accuracy over the choice of the instant"),), + ), +# + ), +# +# 6.1.6. Usage des composantes : maximum, maximum de la valeur absolue, ou de la norme L2, ou de la norme infinie +# + b_usage_cmp = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ", + fr="Type d'usage de(s) composante(s)", + ang="Type of the use for the component(s)", +# + USAGE_CMP = SIMP(statut='f',typ='TXM',defaut="NORME_L2", + into=("ABSOLU", "NORME_L2", "NORME_INFINIE", "RELATIF"), + fr="Valeur absolue de la composante, ou norme du champ, ou valeur relative de la composante", + ang="Absolute value of the component, or norm of the field, or relative value of the component" ), +# + ), +# +# 6.1.7. Usage du champ : la valeur par maille ou le max du saut entre mailles +# + b_usage_champ = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ", + fr="Usage du champ : par maille ou saut entre mailles voisines", + ang="Use type for the field : direct or jump", +# + USAGE_CHAMP = SIMP(statut='f',typ='TXM',defaut="MAILLE",into=("MAILLE","SAUT"), + fr="Usage du champ : la valeur par maille ou le saut entre mailles voisines", + ang="Use of the field : value over every mesh or jump between the neighbours" ), +# + ), +# + ) , +# +# 7. Les criteres pour de l'adaptation libre avec un champ : +# absolu, relatif, en proportion d'entite +# 7.1. Pour le raffinement : +# + b_critere_de_raffinement = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \ + (ADAPTATION == 'RAFFINEMENT') " , + fr="Critère de raffinement.", + ang="Refinement threshold.", +# + regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),), +# + CRIT_RAFF_ABS = SIMP(statut='f',typ='R', + fr="Critère absolu", + ang="Absolute threshold" ), + CRIT_RAFF_REL = SIMP(statut='f',typ='R', + fr="Critère relatif : fraction réelle entre 0. et 1.", + ang="Relative threshold : ratio between 0. and 1." ), + CRIT_RAFF_PE = SIMP(statut='f',typ='R', + fr="Pourcentage de mailles : fraction réelle entre 0. et 1.", + ang="Percentage of meshes : ratio between 0. and 1." ), + ) , +# +# 7.2. Pour le deraffinement : +# + b_critere_de_deraffinement = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \ + (ADAPTATION == 'DERAFFINEMENT') " , + fr="Critère de déraffinement.", + ang="Unrefinement threshold.", +# + regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),), +# + CRIT_DERA_ABS = SIMP(statut='f',typ='R' , + fr="Critère absolu", + ang="Absolute threshold" ), + CRIT_DERA_REL = SIMP(statut='f',typ='R', + fr="Critère relatif : fraction réelle entre 0. et 1.", + ang="Relative threshold : ratio between 0. and 1." ), + CRIT_DERA_PE = SIMP(statut='f',typ='R', + fr="Pourcentage de mailles : fraction réelle entre 0. et 1.", + ang="Percentage of meshes : ratio between 0. and 1." ), + ) , +# +# 8. Pour de l'adaptation par zone, définitions des zones +# + b_zone = BLOC( condition = " (ADAPTATION == 'RAFFINEMENT_ZONE') " , + fr="Pour une adaptation selon une zone à raffiner", + ang="For adaptation among a zone", +# + ZONE = FACT(statut='o',min=1,max='**', + fr="Définition de zones à raffiner.", + ang="Refined zone definition.", +# +# 8.1. Type de la zone +# + TYPE = SIMP(statut='o',typ='TXM',into=("RECTANGLE", "BOITE", "DISQUE", "SPHERE", "CYLINDRE", "DISQUE_PERCE", "TUYAU"), + fr="Type de la zone", + ang="Type of the zone" ), +# +# Ne sachant pas exploiter les blocs, je mets des regles +# + regles=(AU_MOINS_UN('X_MINI','X_CENTRE','HAUTEUR'), + EXCLUS('X_MINI','X_CENTRE','HAUTEUR',), + EXCLUS('Z_MINI','X_CENTRE','HAUTEUR',), + EXCLUS('X_MINI','Z_CENTRE','HAUTEUR',), + EXCLUS('Z_MINI','Z_CENTRE','HAUTEUR',), + EXCLUS('X_MINI','RAYON',), + EXCLUS('Z_MINI','RAYON',), + EXCLUS('X_MINI','X_CENTRE','RAYON_INT',), + EXCLUS('Z_MINI','X_CENTRE','RAYON_INT',), + EXCLUS('X_MINI','X_CENTRE','RAYON_EXT',), + EXCLUS('Z_MINI','X_CENTRE','RAYON_EXT',), + EXCLUS('RAYON','RAYON_INT',),), +# +# 8.2. Une boite rectangulaire ou parallelepipedique +# 8.2.1. Incontournables +# +##gn b_z_boiteXY = BLOC( condition = " (TYPE == 'RECTANGLE') or (TYPE == 'BOITE') " , +##gn fr="X et Y mini/maxi pour un rectangle ou un parallelepipede.", +##gn ang="X and Y min/max for a rectangle or a parallelepipedic box", + X_MINI = SIMP(statut='f',typ='R', + fr="Abscisse minimum de la boite", + ang="Minimum X for the box"), + X_MAXI = SIMP(statut='f',typ='R', + fr="Abscisse maximum de la boite", + ang="Maximum X for the box"), + Y_MINI = SIMP(statut='f',typ='R', + fr="Ordonnée minimum de la boite", + ang="Minimum Y for the box"), + Y_MAXI = SIMP(statut='f',typ='R', + fr="Abscisse maximum de la boite", + ang="Maximum Y for the box"), +##gn ) , +# +# 8.2.2. Complement pour une boite parallelepipedique +# +##gn b_z_boiteZ = BLOC( condition = " (TYPE == 'BOITE') " , +##gn fr="Z mini/maxi pour un parallelepipede.", +##gn ang="Z min/max for a parallelepipedic box", + Z_MINI = SIMP(statut='f',typ='R', + fr="Cote minimum de la boite", + ang="Minimum Z for the box"), + Z_MAXI = SIMP(statut='f',typ='R', + fr="Cote maximum de la boite", + ang="Maximum Z for the box"), +##gn ) , +# +# 8.3. Rayon pour un disque, une sphere ou un cylindre +# +##gn b_z_rayon = BLOC( condition = " (TYPE == 'DISQUE') or (TYPE == 'SPHERE') or (TYPE == 'CYLINDRE') " , +##gn fr="Le rayon d'un disque, d'une sphere ou d'un cylindre.", +##gn ang="The radius of a disk or of a sphere or of a cylinder.", + RAYON = SIMP(statut='f',typ='R', + fr="Rayon", + ang="Radius"), +##gn ) , +# +# 8.4. Pour un disque plein ou perce, une sphere +# 8.4.1. Incontournables +# +##gn b_z_di_sp_XY = BLOC( condition = " (TYPE == 'DISQUE') or (TYPE == 'SPHERE') or (TYPE == 'DISQUE_PERCE') " , +##gn fr="X et Y du centre d'un disque plein ou perce, d'une sphere.", +##gn ang="X and Y of the centre of a disk or of a sphere.", + X_CENTRE = SIMP(statut='f',typ='R', + fr="Abscisse du centre du disque ou de la sphère", + ang="X for the center of the disk or of the sphere"), + Y_CENTRE = SIMP(statut='f',typ='R', + fr="Ordonnée du centre du disque ou de la sphère", + ang="Y for the center of the disk or of the sphere"), +##gn ) , +# +# 8.4.2. Complement pour une sphere +# +##gn b_z_sp_Z = BLOC( condition = " (TYPE == 'SPHERE') " , +##gn fr="Cote du centre de la sphere.", +##gn ang="Z for the center of the sphere.", + Z_CENTRE = SIMP(statut='f',typ='R', + fr="Cote du centre de la sphère", + ang="Z for the center of the sphere"), +##gn ) , +# +# 8.5. Rayons interieur et exterieur pour un disque perce ou un tuyau +# +##gn b_z_rayon_int_ext = BLOC( condition = " (TYPE == 'DISQUE_PERCE') or (TYPE == 'TUYAU') " , +##gn fr="Le rayon d'un disque perce ou d'un tuyau.", +##gn ang="The radius of a holed disk or of a pipe.", + RAYON_INT = SIMP(statut='f',typ='R', + fr="Rayon intérieur", + ang="Internal radius"), + RAYON_EXT = SIMP(statut='f',typ='R', + fr="Rayon extérieur", + ang="External radius"), +##gn ) , +# +# 8.6. Un cylindre ou un tuyau +# +##gn b_z_cylindre_tuyau = BLOC( condition = " (TYPE == 'CYLINDRE') or (TYPE == 'TUYAU') " , +##gn fr="Pour un cylindre ou un tuyau.", +##gn ang="For a cylinder or a pipe.", + X_AXE = SIMP(statut='f',typ='R', + fr="Abscisse du vecteur directeur de l'axe", + ang="X for the axial vector"), + Y_AXE = SIMP(statut='f',typ='R', + fr="Ordonnée du vecteur directeur de l'axe", + ang="Y for the axial vector"), + Z_AXE = SIMP(statut='f',typ='R', + fr="Cote du vecteur directeur de l'axe", + ang="Z for the axial vector"), + X_BASE = SIMP(statut='f',typ='R', + fr="Abscisse d'un point de la base, sur l'axe", + ang="X for the basis, on the axis"), + Y_BASE = SIMP(statut='f',typ='R', + fr="Ordonnée d'un point de la base, sur l'axe", + ang="Y for the basis, on the axis"), + Z_BASE = SIMP(statut='f',typ='R', + fr="Cote d'un point de la base, sur l'axe", + ang="Z for the basis, on the axis"), + HAUTEUR = SIMP(statut='f',typ='R', + fr="Hauteur", + ang="Height"), +##gn ) , +# + ) , +# + ) , +# +# 9. Les niveaux extremes pour le maillage adapte +# 9.1. Pour le raffinement : +# + b_niveau_maximum = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \ + (ADAPTATION == 'RAFFINEMENT') or \ + (ADAPTATION == 'RAFFINEMENT_UNIFORME') or \ + (ADAPTATION == 'RAFFINEMENT_ZONE') " , + fr="Profondeur maximale de raffinement", + ang="Maximum depth for the refinement", +# + NIVE_MAX = SIMP(statut='f',typ='I', + fr="Niveau maximum de profondeur de raffinement", + ang="Maximum level for the refinement"), +# + DIAM_MIN = SIMP(statut='f',typ='R', + fr="Diamètre minimal de maille", + ang="Minimal diameter for the mesh" ), +# + ) , +# +# 9.2. Pour le deraffinement : +# + b_niveau_minimum = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \ + (ADAPTATION == 'DERAFFINEMENT') or \ + (ADAPTATION == 'DERAFFINEMENT_UNIFORME') " , + fr="Niveau minimum de profondeur de déraffinement", + ang="Minimum level for the unrefinement", + NIVE_MIN = SIMP(statut='f',typ='I', + fr="Niveau minimum de profondeur de déraffinement", + ang="Minimum level for the unrefinement"), + ) , +# +# 10. Filtrage de l'adaptation par des groupes +# + b_filtrage_par_des_groupes = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \ + (ADAPTATION == 'RAFFINEMENT') or \ + (ADAPTATION == 'RAFFINEMENT_UNIFORME') or \ + (ADAPTATION == 'RAFFINEMENT_ZONE') or \ + (ADAPTATION == 'DERAFFINEMENT') or \ + (ADAPTATION == 'DERAFFINEMENT_UNIFORME') " , + fr="Filtrage de l'adaptation par des groupes.", + ang="Filtering of adaptation by the groups.", +# + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Liste des groupes de mailles pour le filtrage de l'adaptation.", + ang="List of the groups of meshes for filtering of the adaptation." ), +# + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**', + fr="Liste des groupes de noeuds pour le filtrage de l'adaptation.", + ang="List of the groups of nodes for filtering of the adaptation." ), + ) , +# +# 11. Suivi d'une frontière +# +# 11.1. Definition d'une frontière par un maillage (valable seulement pour des frontières 1D) +# + MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster, + fr="Maillage de la frontière discrète à suivre", + ang="Discrete boundary mesh" ), +# + b_FRONTIERE = BLOC( condition = " MAILLAGE_FRONTIERE != None " , + fr="Information complémentaire sur la frontière discrète", + ang="Further information about discrete boundary", +# + GROUP_MA_FRONT = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Liste des groupes de mailles définissant la frontière discrète", + ang="Mesh groups which define the discrete boundary" ), +# + ) , +# +# 11.2. Definition analytique d'une frontière +# + FRONTIERE_ANALYTIQUE = FACT(statut='f',max='**', + fr="Definition analytique de frontières a suivre.", + ang="Analytical definition of a boundary.", +# +# 11.2.1. Nom de la frontière +# + NOM = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1, + fr="Nom de la frontière analytique", + ang="Name of the analytic boundary" ), +# +# 11.2.2. Type de la frontière +# + TYPE = SIMP(statut='o',typ='TXM',into=("SPHERE", "CYLINDRE"), + fr="Type de la frontière analytique", + ang="Type of the analytic boundary" ), +# +# 11.2.3. Pour une sphere ou un cylindre : rayon et centre +# + b_fr_rayon = BLOC( condition = " (TYPE == 'SPHERE') or (TYPE == 'CYLINDRE') " , + fr="Le rayon et le centre d'une sphère ou d'un cylindre.", + ang="The radius and the centre of a sphere or of a cylinder.", + RAYON = SIMP(statut='o',typ='R', + fr="Rayon", + ang="Radius"), + X_CENTRE = SIMP(statut='o',typ='R', + fr="Abscisse du centre", + ang="X for the center"), + Y_CENTRE = SIMP(statut='o',typ='R', + fr="Ordonneée du centre", + ang="Y for the center"), + Z_CENTRE = SIMP(statut='o',typ='R', + fr="Cote du centre", + ang="Z for the center"), + ) , +# +# 11.2.4. Complement pour un cylindre +# + b_fr_cylindre = BLOC( condition = " (TYPE == 'CYLINDRE') " , + fr="Pour un cylindre.", + ang="For a cylinder.", + X_AXE = SIMP(statut='o',typ='R', + fr="Abscisse du vecteur directeur de l'axe", + ang="X for the axial vector"), + Y_AXE = SIMP(statut='o',typ='R', + fr="Ordonnée du vecteur directeur de l'axe", + ang="Y for the axial vector"), + Z_AXE = SIMP(statut='o',typ='R', + fr="Cote du vecteur directeur de l'axe", + ang="Z for the axial vector"), + ) , +# +# 11.2.5. Groupe(s) lie(s) a la frontière +# + GROUP_MA = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**', + fr="Liste des groupes de mailles placées sur la frontière", + ang="Groups of meshes which are located on the boundary" ), +# + ) , +# +# 12. mise à jour de champs sur le nouveau maillage +# + MAJ_CHAM = FACT(statut='f',max='**', + fr="Mise à jour de champs sur le nouveau maillage.", + ang="Updating of the fields over the new mesh.", +# +# 12.1. Le nom du champ de grandeur qui contiendra le resultat de la mise a jour +# + CHAM_MAJ = SIMP(statut='o',typ=CO, + fr="Nom du champ de grandeur qui contiendra le champ mis à jour", + ang="Name of the field for the updated field"), +# +# 12.2. Le type du champ qui contiendra le resultat de la mise a jour +# + TYPE_CHAM = SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO( ('NOEU', 'ELEM', 'ELNO', 'ELGA') ), + fr="Type du champ qui contiendra le champ mis à jour", + ang="Type of the field for the updated field" ), +# +# 12.3. Le champ a interpoler +# + regles=(UN_PARMI('CHAM_GD','RESULTAT')), +# +# 12.3.1. Sous forme de champ de grandeur +# + CHAM_GD = SIMP(statut='f',typ=cham_gd_sdaster, + fr="Champ de grandeur Code_Aster contenant le champ à mettre à jour", + ang="Champ de grandeur with the field to be updated" ), +# +# 12.3.2. Sous forme de champ dans un resultat +# + RESULTAT = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther), + fr="Résultat contenant le champ à mettre à jour", + ang="Result with the field to be updated" ), +# + b_nom_du_champ = BLOC(condition="(RESULTAT != None)", + fr="Choix éventuel du nom du champ à interpoler", + ang="Selection for the name of the field (option)", +# + NOM_CHAM = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO(), + fr="Nom du champ à mettre à jour", + ang="Name of the field to be updated" ), +# + ), +# +# 12.4. Les composantes +# + NOM_CMP = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Liste des composante(s) retenue(s) pour le champ.", + ang="List of the selected component(s) for the field." ), +# +# 12.5. Le paramètre temporel pour le champ a interpoler +# + b_parametre_temporel = BLOC(condition="(RESULTAT != None)", + fr="Choix éventuel du paramètre temporel pour le champ à interpoler", + ang="Time selection for the field (option)", +# + regles=(EXCLUS('NUME_ORDRE','INST'),), +# +# 12.5.1. Soit le numero d'ordre +# + NUME_ORDRE = SIMP(statut='f',typ='I', + fr="Numéro d ordre du champ à mettre à jour", + ang="Rank of the field to be updated" ), +# +# 12.5.2. Soit l'instant +# 12.5.2.1. Sa valeur +# + INST = SIMP(statut='f',typ='R', + fr="Instant associé", + ang="Instant" ), +# +# 12.5.2.2. La précision du choix de l'instant +# + b_precision = BLOC(condition="(INST != None)", + fr="Choix de la précision du choix de l'instant", + ang="Selection for the choice of the instant", +# + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",), + fr="Critère de précision sur le choix de l'instant associé", + ang="Accuracy criterium over the choice of the instant"), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6, + fr="Précision relative sur le choix de l'instant associé", + ang="Relative accuracy over the choice of the instant"),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R', + fr="Précision absolue sur le choix de l'instant associé", + ang="Absolute accuracy over the choice of the instant"),), +# + ), +# + ), +# +# 12.6. Type d'interpolation +# + TYPE_MAJ = SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("AUTO", "ISOP2"), + fr="Type de mise à jour : automatique ou iso-P2", + ang="Type of the updating" ), +# +# 12.7. Est-ce un champ dérivé +# + SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom), + fr="Paramètre de sensibilité.", + ang="Sensitivity parameter"), + ), +# +# 13. Les Modifications +# + b_modifications = BLOC( condition = " (ADAPTATION == 'MODIFICATION') " , + fr="Modification de maillage.", + ang="Modification of the mesh.", +# + #regles=(AU_MOINS_UN('DEGRE','JOINT'),), +# +# 13.1. Changement de degre +# + DEGRE = SIMP(statut='o',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Changement de degré du maillage", + ang="Modification of the degree of the mesh" ), +# +# 13.2. Création des joints +# + #JOINT = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + #fr="Creations des joints", + #ang="Creation of the junctions" ), +# + ) , +# +# 14. Le modele pour les lectures de champs aux points de Gauss ou aux noeuds par element +# + b_lectures = BLOC( condition = " (ADAPTATION == 'LECTURE') " , + fr="Lectures de champs aux points de Gauss.", + ang="Readings of the fields over the Gauss points.", +# + MODELE = SIMP(statut='o',typ=modele_sdaster, + fr="Modèle", + ang="Model" ), +# + ) , +# +# 15. Les options d'analyse de maillage ; par defaut, on ne fait que les nombres +# 15.1. Nombre de noeuds et mailles +# + NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"), + fr="Nombre de noeuds et de mailles du maillage", + ang="Number of nodes and meshes in the mesh" ), +# +# 15.2. Determination de la qualité des mailles du maillage +# + QUALITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Qualité du maillage", + ang="Quality of the mesh" ), +# +# 15.3. Connexite du maillage +# + CONNEXITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Connexité du maillage.", + ang="Connexity of the mesh." ), +# +# 15.4. Taille des sous-domaines du maillage +# + TAILLE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Tailles des sous-domaines du maillage.", + ang="Sizes of mesh sub-domains." ), +# +# 15.5. Controle de la non-interpenetration des mailles +# + INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Controle de la non interpénétration des mailles.", + ang="Overlapping checking." ), +# +# 15.6. Propriétés du maillage de calcul +# + PROP_CALCUL = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Propriétés du maillage de calcul.", + ang="Properties of the calculation mesh." ), +# +# 16. Unite logique d'un fichier a ajouter a HOMARD.Configuration +# + b_unite = BLOC( condition = " (VERSION_HOMARD == 'V10_N') or \ + (VERSION_HOMARD == 'V10_N_PERSO') " , + fr="Fichier supplémentaire.", + ang="Additional file.", +# + UNITE = SIMP(statut='f',typ='I', + fr="Unite logique du fichier à ajouter à HOMARD.Configuration", + ang="Additional file to HOMARD.Configuration" ), +# + ) , +# +# 17. Gestion des mailles autres que celles compatibles avec HOMARD +# "REFUSER" : elles sont refusées (defaut) +# "IGNORER" : elles sont ignorées +# + ELEMENTS_NON_HOMARD = SIMP(statut='f',typ='TXM',defaut="REFUSER",into=("REFUSER","IGNORER"), + fr="Acceptation de mailles incompatibles avec HOMARD", + ang="Incompatible meshes for HOMARD" ), +# +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE +def macr_ascouf_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS,RESU_THER,**args): + self.type_sdprod(MODELE,modele_sdaster) + if CHAM_MATER != None:self.type_sdprod(CHAM_MATER,cham_mater) + if CARA_ELEM != None:self.type_sdprod(CARA_ELEM,cara_elem) + if FOND_FISS != None:self.type_sdprod(FOND_FISS,fond_fiss) + if RESU_THER != None:self.type_sdprod(RESU_THER,evol_ther) + return evol_noli + +MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC", + op=OPS('Macro.macr_ascouf_calc_ops.macr_ascouf_calc_ops'), + sd_prod=macr_ascouf_calc_prod, + fr="Réalise l'analyse thermomécanique du coude dont le maillage a " \ + "été concu par MACR_ASCOUF_MAIL", + reentrant='n', + UIinfo={"groupes":("Résolution","Outils-métier",)}, + + TYPE_MAILLAGE =SIMP(statut='o',typ='TXM', + into=("SAIN", + "FISS_COUDE", + "FISS_AXIS_DEB", + "SOUS_EPAIS_COUDE" + ) ), + + CL_BOL_P2_GV =FACT(statut='f', + ANGLE =SIMP(statut='o',typ='R' ), + AZIMUT =SIMP(statut='f',typ='R',defaut= 90. ), + ), + + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ), + MODELE =SIMP(statut='o',typ=CO,), + CHAM_MATER =SIMP(statut='f',typ=CO,), + CARA_ELEM =SIMP(statut='f',typ=CO,), + FOND_FISS =SIMP(statut='f',typ=CO,), + RESU_THER =SIMP(statut='f',typ=CO,), + + AFFE_MATERIAU =FACT(statut='o',max=3, + regles=(UN_PARMI('TOUT','GROUP_MA'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,into=("COUDE","BOL") ), + MATER =SIMP(statut='o',typ=mater_sdaster ), + TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + ), + + PRES_REP =FACT(statut='f', + PRES =SIMP(statut='o',typ='R' ), + EFFE_FOND_P1 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PRES_LEVRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + ECHANGE =FACT(statut='f', + COEF_H =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + TEMP_EXT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + TORS_P1 =FACT(statut='f',max=6, + regles=(AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),), + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + MX =SIMP(statut='f',typ='R' ), + MY =SIMP(statut='f',typ='R' ), + MZ =SIMP(statut='f',typ='R' ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + + + COMP_ELAS =C_COMP_ELAS('MACR_ASCOUF_CALC'), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('MACR_ASCOUF_CALC'), +#------------------------------------------------------------------- + + CONVERGENCE =C_CONVERGENCE(), + + NEWTON =C_NEWTON(), + + RECH_LINEAIRE =C_RECH_LINEAIRE(), + + INCREMENT =C_INCREMENT(), + + THETA_3D =FACT(statut='f',max='**', + R_INF =SIMP(statut='o',typ='R' ), + R_SUP =SIMP(statut='o',typ='R' ), + ), + + IMPR_TABLE =FACT(statut='f', + regles=(UN_PARMI('TOUT_PARA','NOM_PARA', ), + PRESENT_PRESENT('TOUT_PARA','ANGLE', ), + PRESENT_PRESENT('TOUT_PARA','R_CINTR', ), + UN_PARMI('POSI_CURV_LONGI','POSI_ANGUL',),), + NOM_PARA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=4, + into=("TRESCA_MEMBRANE", + "TRESCA_MFLE", + "TRESCA", + "SI_LONG" + "SI_RADI" + "SI_CIRC" + ) ), + TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI",) ), + ANGLE =SIMP(statut='f',typ='R',max='**' ), + R_CINTR =SIMP(statut='f',typ='R',max='**' ), + POSI_CURV_LONGI =SIMP(statut='f',typ='R',max='**' ), + POSI_ANGUL =SIMP(statut='f',typ='R',max='**' ), + TRANSFORMEE =SIMP(statut='f',typ='TXM',defaut="COUDE",into=("COUDE","TUBE") ), + ), + + IMPRESSION =FACT(statut='f', + FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT", + into=("RESULTAT","ASTER","IDEAS","CASTEM") ), + + b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas", + VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)), + ), + + b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem", + NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)), + ), + + ), + + TITRE =SIMP(statut='f',typ='TXM' ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE +MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL", + op=OPS('Macro.macr_ascouf_mail_ops.macr_ascouf_mail_ops'), + sd_prod=maillage_sdaster, + fr="Engendre le maillage d'un coude sain ou comportant une fissure ou une (ou plusieurs) sous-épaisseur(s)", + UIinfo={"groupes":("Maillage","Outils-métier",)}, + reentrant='n', + + regles=(EXCLUS('SOUS_EPAIS_COUDE','FISS_COUDE','SOUS_EPAIS_MULTI'),), + + EXEC_MAILLAGE =FACT(statut='o', + LOGICIEL =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000") ), + UNITE_DATG =SIMP(statut='f',typ='I',defaut=70), + UNITE_MGIB =SIMP(statut='f',typ='I',defaut=19), + NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,4,5,6,7,8,9,10,11)), + ), + + TYPE_ELEM =SIMP(statut='f',typ='TXM',defaut="CU20",into=("CU20","CUB8") ), + + COUDE =FACT(statut='o', + ANGLE =SIMP(statut='o',typ='R' ), + R_CINTR =SIMP(statut='o',typ='R' ), + L_TUBE_P1 =SIMP(statut='o',typ='R' ), + L_TUBE_P2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + NB_ELEM_EPAIS =SIMP(statut='f',typ='I',defaut= 3 ), + SYME =SIMP(statut='f',typ='TXM',defaut="ENTIER",into=("ENTIER","QUART","DEMI") ), + TRANSFORMEE =SIMP(statut='o',typ='TXM',defaut="COUDE",into=("COUDE","TUBE") ), + b_transf_coude =BLOC(condition = "TRANSFORMEE == 'COUDE' ", + DEXT =SIMP(statut='o',typ='R' ), + EPAIS =SIMP(statut='o',typ='R' ), + SUR_EPAIS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + BOL_P2 =SIMP(statut='f',typ='TXM',into=("ASP_MPP","CUVE","GV") ), + ), + b_transf_tube =BLOC(condition = "TRANSFORMEE == 'TUBE' ", + TRAN_EPAIS =SIMP(statut='o',typ='TXM',defaut="NON",into=("OUI","NON") ), + b_trans_epais_oui =BLOC(condition = "TRAN_EPAIS == 'OUI' ", + regles=(ENSEMBLE('ANGL_TETA2','EPAIS_TI'), + UN_PARMI('ABSC_CURV_TRAN','POSI_ANGU_TRAN'),), + DEXT_T1 =SIMP(statut='o',typ='R' ), + EPAIS_T1 =SIMP(statut='o',typ='R' ), + EPAIS_T2 =SIMP(statut='o',typ='R' ), + EPAIS_TI =SIMP(statut='f',typ='R' ), + ANGL_TETA1 =SIMP(statut='o',typ='R' ), + ANGL_TETA2 =SIMP(statut='f',typ='R' ), + ABSC_CURV_TRAN =SIMP(statut='f',typ='R' ), + POSI_ANGU_TRAN =SIMP(statut='f',typ='R' ), + ), + b_trans_epais_non =BLOC(condition = "TRAN_EPAIS == 'NON' ", + DEXT =SIMP(statut='o',typ='R' ), + EPAIS =SIMP(statut='o',typ='R' ), + SUR_EPAIS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + BOL_P2 =SIMP(statut='f',typ='TXM',into=("ASP_MPP","CUVE","GV") ), + ), + ), + ), + + SOUS_EPAIS_COUDE=FACT(statut='f', + regles=(UN_PARMI('POSI_CURV_LONGI','POSI_ANGUL'), + UN_PARMI('POSI_CURV_CIRC','AZIMUT'),), + TYPE =SIMP(statut='o',typ='TXM',into=("AXIS","ELLI") ), + AXE_CIRC =SIMP(statut='f',typ='R' ), + AXE_LONGI =SIMP(statut='o',typ='R' ), + PROFONDEUR =SIMP(statut='o',typ='R' ), + POSI_CURV_LONGI =SIMP(statut='f',typ='R' ), + POSI_ANGUL =SIMP(statut='f',typ='R' ), + POSI_CURV_CIRC =SIMP(statut='f',typ='R' ), + AZIMUT =SIMP(statut='f',typ='R' ), + SOUS_EPAIS =SIMP(statut='o',typ='TXM',into=("INTERNE","EXTERNE") ), + NB_ELEM_LONGI =SIMP(statut='o',typ='I' ), + NB_ELEM_CIRC =SIMP(statut='o',typ='I' ), + NB_ELEM_RADI =SIMP(statut='f',typ='I',defaut= 3 ), + EMPREINTE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + SOUS_EPAIS_MULTI=FACT(statut='f',max='**', + regles=(UN_PARMI('POSI_CURV_LONGI','POSI_ANGUL'), + UN_PARMI('POSI_CURV_CIRC','AZIMUT'),), + TYPE =SIMP(statut='o',typ='TXM',into=("AXIS","ELLI") ), + AXE_CIRC =SIMP(statut='f',typ='R' ), + AXE_LONGI =SIMP(statut='o',typ='R' ), + PROFONDEUR =SIMP(statut='o',typ='R' ), + POSI_CURV_LONGI =SIMP(statut='f',typ='R' ), + POSI_ANGUL =SIMP(statut='f',typ='R' ), + POSI_CURV_CIRC =SIMP(statut='f',typ='R' ), + AZIMUT =SIMP(statut='f',typ='R' ), + SOUS_EPAIS =SIMP(statut='o',typ='TXM',into=("INTERNE","EXTERNE") ), + NB_ELEM_LONGI =SIMP(statut='o',typ='I' ), + NB_ELEM_CIRC =SIMP(statut='o',typ='I' ), + EMPREINTE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + FISS_COUDE =FACT(statut='f', + regles=(UN_PARMI('ABSC_CURV','POSI_ANGUL'),), + AXIS =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ), + b_axis_non =BLOC(condition = "AXIS == 'NON' ", + LONGUEUR =SIMP(statut='o',typ='R' ), + ), + b_axis_oui =BLOC(condition = "AXIS == 'OUI' ", + LONGUEUR =SIMP(statut='f',typ='R' ), + ), + PROFONDEUR =SIMP(statut='o',typ='R' ), + ABSC_CURV =SIMP(statut='f',typ='R' ), + POSI_ANGUL =SIMP(statut='f',typ='R' ), + FISSURE =SIMP(statut='o',typ='TXM',into=("DEB_INT","DEB_EXT") ), + AZIMUT =SIMP(statut='f',typ='R',defaut= 90. ), + ORIEN =SIMP(statut='o',typ='R', + into=(45.,-45.,90.,0.E+0) ), + NB_TRANCHE =SIMP(statut='o',typ='I' ), + NB_SECTEUR =SIMP(statut='o',typ='I' ), + NB_COURONNE =SIMP(statut='o',typ='I' ), + RAYON_TORE =SIMP(statut='f',typ='R' ), + COEF_MULT_RC2 =SIMP(statut='f',typ='R',defaut= 1. ), + COEF_MULT_RC3 =SIMP(statut='f',typ='R' ), + ANGL_OUVERTURE =SIMP(statut='f',typ='R',defaut= 0.5 ), + ), + + IMPRESSION =FACT(statut='f',max='**', + regles=(PRESENT_PRESENT('FICHIER','UNITE'),), + FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER", + into=("ASTER","IDEAS","CASTEM") ), + b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas", + VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)), + ), + b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem", + NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)), + ), + FICHIER =SIMP(statut='f',typ='TXM' ), + UNITE =SIMP(statut='f',typ='I' ), + ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE + +def macr_aspic_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS_1,FOND_FISS_2,RESU_THER,**args): + if MODELE != None:self.type_sdprod(MODELE,modele_sdaster) + if CHAM_MATER != None:self.type_sdprod(CHAM_MATER,cham_mater) + if CARA_ELEM != None:self.type_sdprod(CARA_ELEM,cara_elem) + if FOND_FISS_1 != None:self.type_sdprod(FOND_FISS_1,fond_fiss) + if FOND_FISS_2 != None:self.type_sdprod(FOND_FISS_2,fond_fiss) + if RESU_THER != None:self.type_sdprod(RESU_THER,evol_ther) + return evol_noli + +MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC", + op=OPS('Macro.macr_aspic_calc_ops.macr_aspic_calc_ops'), + sd_prod=macr_aspic_calc_prod, + fr="Réalise un calcul prédéfini de piquages sains ou fissurés " \ + "ainsi que les post-traitements associés ", + UIinfo={"groupes":("Résolution","Outils-métier",)}, + reentrant='n', + + TYPE_MAILLAGE =SIMP(statut='o',typ='TXM', + into=("SAIN_FIN","SAIN_GROS","FISS_COUR_DEB","FISS_COUR_NONDEB","FISS_LONG_DEB", + "FISS_LONG_NONDEB","FISS_AXIS_DEB","FISS_AXIS_NONDEB") ), + + TUBULURE =FACT(statut='o', + TYPE =SIMP(statut='o',typ='TXM',into=("TYPE_1","TYPE_2") ), + ), + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster), + MODELE =SIMP(statut='f',typ=CO,), + CHAM_MATER =SIMP(statut='f',typ=CO,), + CARA_ELEM =SIMP(statut='f',typ=CO,), + FOND_FISS_1 =SIMP(statut='f',typ=CO,), + FOND_FISS_2 =SIMP(statut='f',typ=CO,), + RESU_THER =SIMP(statut='f',typ=CO,), + + AFFE_MATERIAU =FACT(statut='o',max=3, + regles=(UN_PARMI('TOUT','GROUP_MA'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), + GROUP_MA =SIMP(statut='f',typ=grma,into=("TUBU","CORP","SOUD","SOUDCORP","SOUDTUBU") ), + MATER =SIMP(statut='o',typ=mater_sdaster), + TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + RCCM =SIMP(statut='o',typ='TXM',into=("OUI","NON")), + ), + + EQUILIBRE =FACT(statut='o', + NOEUD =SIMP(statut='o',typ=no), + ), + + PRES_REP =FACT(statut='o', + PRES =SIMP(statut='o',typ='R'), + NOEUD =SIMP(statut='f',typ=no), + EFFE_FOND =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PRES_LEVRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + + ECHANGE =FACT(statut='f', + COEF_H_TUBU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + COEF_H_CORP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + TEMP_EXT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + + TORS_CORP =FACT(statut='f',max=6, + regles=(AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),), + NOEUD =SIMP(statut='o',typ=no), + FX =SIMP(statut='f',typ='R'), + FY =SIMP(statut='f',typ='R'), + FZ =SIMP(statut='f',typ='R'), + MX =SIMP(statut='f',typ='R'), + MY =SIMP(statut='f',typ='R'), + MZ =SIMP(statut='f',typ='R'), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + + TORS_TUBU =FACT(statut='f',max=6, + regles=(AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),), + FX =SIMP(statut='f',typ='R'), + FY =SIMP(statut='f',typ='R'), + FZ =SIMP(statut='f',typ='R'), + MX =SIMP(statut='f',typ='R'), + MY =SIMP(statut='f',typ='R'), + MZ =SIMP(statut='f',typ='R'), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + + COMP_ELAS =C_COMP_ELAS('MACR_ASPIC_CALC'), + + THETA_3D =FACT(statut='f',max='**', + R_INF =SIMP(statut='o',typ='R'), + R_SUP =SIMP(statut='o',typ='R'), + ), + + OPTION =SIMP(statut='f',typ='TXM',into=("CALC_G_MAX","CALC_G_MAX_LOCAL") ), + BORNES =FACT(statut='f',max='**', + NUME_ORDRE =SIMP(statut='o',typ='I'), + VALE_MIN =SIMP(statut='o',typ='R'), + VALE_MAX =SIMP(statut='o',typ='R'), + ), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('MACR_ASPIC_CALC'), +#------------------------------------------------------------------- + + CONVERGENCE =C_CONVERGENCE(), + + NEWTON =C_NEWTON(), + + RECH_LINEAIRE =C_RECH_LINEAIRE(), + + INCREMENT =C_INCREMENT(), + + PAS_AZIMUT =SIMP(statut='f',typ='I',defaut=1), + + IMPRESSION =FACT(statut='f', + FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT", + into=("RESULTAT","ASTER","CASTEM","IDEAS")), + + b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas", + VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)), + ), + + b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem", + NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)), + ), + + b_extrac =BLOC(condition="((FORMAT=='IDEAS')or(FORMAT=='CASTEM'))", + fr="extraction d un champ de grandeur", + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST'),), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","SIEQ_ELNO","TEMP")), + + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + ), + ), + + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + + TITRE =SIMP(statut='f',typ='TXM'), +) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE + + +MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL", + op=OPS('Macro.macr_aspic_mail_ops.macr_aspic_mail_ops'), + sd_prod=maillage_sdaster, + reentrant='n', + fr="Engendre le maillage d'un piquage sain ou avec fissure (longue ou courte)", + UIinfo={"groupes":("Maillage","Outils-métier",)}, + + EXEC_MAILLAGE =FACT(statut='o', + LOGICIEL =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000")), + UNITE_DATG =SIMP(statut='f',typ='I',defaut=70), + UNITE_MGIB =SIMP(statut='f',typ='I',defaut=19), + NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,4,5,6,7,8,9,10,11)), + ), + + TYPE_ELEM =SIMP(statut='f',typ='TXM',defaut="CU20",into=("CU20","CUB8")), + + RAFF_MAIL =SIMP(statut='f',typ='TXM',defaut="GROS",into=("GROS","FIN")), + + TUBULURE =FACT(statut='o', + E_BASE =SIMP(statut='o',typ='R'), + DEXT_BASE =SIMP(statut='o',typ='R'), + L_BASE =SIMP(statut='o',typ='R'), + L_CHANF =SIMP(statut='o',typ='R'), + E_TUBU =SIMP(statut='o',typ='R'), + DEXT_TUBU =SIMP(statut='o',typ='R'), + Z_MAX =SIMP(statut='o',typ='R'), + TYPE =SIMP(statut='o',typ='TXM',into=("TYPE_1","TYPE_2")), + L_PENETR =SIMP(statut='f',typ='R',defaut= 0.0E+0), + ), + + SOUDURE =FACT(statut='o', + H_SOUD =SIMP(statut='o',typ='R'), + ANGL_SOUD =SIMP(statut='o',typ='R'), + JEU_SOUD =SIMP(statut='o',typ='R'), + ), + + CORPS =FACT(statut='o', + E_CORP =SIMP(statut='o',typ='R'), + DEXT_CORP =SIMP(statut='o',typ='R'), + X_MAX =SIMP(statut='o',typ='R'), + ), + + FISS_SOUDURE =FACT(statut='f', + TYPE =SIMP(statut='o',typ='TXM',into=("LONGUE","COURTE")), + AXIS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + PROFONDEUR =SIMP(statut='o',typ='R'), + LONGUEUR =SIMP(statut='f',typ='R'), + AZIMUT =SIMP(statut='o',typ='R'), + RAYON_TORE =SIMP(statut='f',typ='R'), + POSITION =SIMP(statut='o',typ='TXM',into=("DROIT","INCLINE")), + FISSURE =SIMP(statut='o',typ='TXM',into=("DEB_INT","DEB_EXT","NON_DEB","TRAVERS")), + LIGA_INT =SIMP(statut='f',typ='R'), + ANGL_OUVERTURE =SIMP(statut='f',typ='R',defaut= 0.0E+0), + COEF_MULT_RC1 =SIMP(statut='f',typ='R'), + COEF_MULT_RC2 =SIMP(statut='f',typ='R'), + COEF_MULT_RC3 =SIMP(statut='f',typ='R'), + NB_TRANCHE =SIMP(statut='f',typ='I'), + NB_SECTEUR =SIMP(statut='f',typ='I'), + NB_COURONNE =SIMP(statut='f',typ='I'), + ), + + IMPRESSION =FACT(statut='f',max='**', + regles=(PRESENT_PRESENT('FICHIER','UNITE'),), + FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","IDEAS","CASTEM")), + + b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas", + VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)), + ), + + b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem", + NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)), + ), + FICHIER =SIMP(statut='f',typ='TXM'), + UNITE =SIMP(statut='f',typ='I'), + ), + + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE FLEJOU J.L.FLEJOU + + +MACR_CARA_POUTRE=MACRO(nom="MACR_CARA_POUTRE", + op=OPS('Macro.macr_cara_poutre_ops.macr_cara_poutre_ops'), + sd_prod=table_sdaster, + reentrant='n', + UIinfo={"groupes":("Modélisation",)}, + fr="Calculer les caractéristiques d'une section transversale de " \ + "poutre à partir d'un maillage 2D de la section", + regles=( EXCLUS('SYME_X','GROUP_MA_BORD'), + EXCLUS('SYME_Y','GROUP_MA_BORD'), + ), + + MAILLAGE =SIMP(statut='f',typ=maillage_sdaster, + fr="Nom du concept maillage"), + b_maillage=BLOC( condition = "MAILLAGE == None", + regles=( PRESENT_PRESENT('FORMAT','UNITE') ), + FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","MED"), + fr="Format du fichier"), + UNITE =SIMP(statut='f',typ='I',defaut= 20, + fr="Unite correspondant au format du fichier maillage"), + ), + + ORIG_INER =SIMP(statut='f',typ='R',max=3,defaut=(0.E+0,0.E+0), + fr="Point par rapport auquel sont calculées les inerties"), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + + SYME_X =SIMP(statut='f',typ='TXM',into=("OUI",), + fr="demi maillage par rapport a x=0"), + SYME_Y =SIMP(statut='f',typ='TXM',into=("OUI",), + fr="demi maillage par rapport a y=0"), + + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Calcul des caractéristiques équivalentes a plusieurs " + "sections disjointes"), + + GROUP_MA_BORD =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Groupe(s) de mailles linéiques, bord(s) de(s) section(s)"), + + b_gma_bord =BLOC( condition = "GROUP_MA_BORD != None", + fr=" calcul des carac. mecaniques", + regles=(UN_PARMI('NOEUD','GROUP_NO')), + NOEUD =SIMP(statut='f',typ=no,max='**', + fr="Simplement pour empecher des pivots nuls le cas echeant. " + "Fournir un noeud quelconque"), + GROUP_NO =SIMP(statut='f',typ=grno,max='**', + fr="Simplement pour empecher des pivots nuls le cas echeant. " + "Fournir un noeud quelconque par GROUP_MA"), + GROUP_MA_INTE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="groupes de mailles linéiques bordant des trous dans la section"), + ), + + b_reseau = BLOC( condition ="""(GROUP_MA_BORD != None) and (GROUP_MA != None)""", + fr=" calcul des coef de cisaillement équivalents a un reseau de poutres", + regles=(ENSEMBLE('LONGUEUR','LIAISON','MATERIAU') ,), + LONGUEUR =SIMP(statut='f',typ='R', + fr="Longueur du réseau de poutres"), + MATERIAU =SIMP(statut='f',typ=mater_sdaster, + fr="Materiau elastique lineaire du reseau"), + LIAISON =SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT"), + fr="type de conditions aux limites sur le plancher supérieur" ), + ), +) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE + + +def macr_ecla_pg_prod(self,RESULTAT,MAILLAGE,RESU_INIT,**args): + self.type_sdprod(RESULTAT,AsType(RESU_INIT)) + self.type_sdprod(MAILLAGE,maillage_sdaster) + return None + + +MACR_ECLA_PG=MACRO(nom="MACR_ECLA_PG", + op=OPS('Macro.macr_ecla_pg_ops.macr_ecla_pg_ops'), + sd_prod=macr_ecla_pg_prod, + reentrant='n', + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + fr="Permettre la visualisation des champs aux points de Gauss d'une " \ + "SD_RESULTAT sans lissage ni interpolation", + + # SD résultat ,modèle et champs à "éclater" : + RESU_INIT =SIMP(statut='o',typ=resultat_sdaster,fr="RESULTAT à éclater",), + MODELE_INIT =SIMP(statut='o',typ=modele_sdaster,fr="MODELE à éclater"), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO('ELGA'),), + + # paramètres numériques de la commande : + SHRINK =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ), + TAILLE_MIN =SIMP(statut='f',typ='R',defaut= 0.0, fr="Taille minimale d'un coté" ), + + # concepts produits par la commande : + RESULTAT =SIMP(statut='o',typ=CO,fr="SD_RESULTAT résultat de la commande"), + MAILLAGE =SIMP(statut='o',typ=CO,fr="MAILLAGE associé aux cham_no de la SD_RESULTAT"), + + # Sélection éventuelle d'un sous-ensemble des éléments à visualiser : + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + + # Sélection des numéros d'ordre : + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BOTTONI M.BOTTONI + + +def macr_ecre_calc_prod(self,TABLE,DEBIT,**args): + + self.type_sdprod(TABLE,table_sdaster) + self.type_sdprod(DEBIT,table_sdaster) + return None + +MACR_ECRE_CALC=MACRO(nom="MACR_ECRE_CALC", + op=OPS('Macro.macr_ecre_calc_ops.macr_ecre_calc_ops'), + sd_prod=macr_ecre_calc_prod, + reentrant='n', + UIinfo={"groupes":("Résolution","Outils-métier",)}, + fr="Procedure de couplage avec Ecrevisse", + + regles = (UN_PARMI('LOGICIEL','VERSION'),), + +# CONCEPTS SORTANT : 2 TABLES POUR LE POST-TRAITEMENT +# ******************************************** + TABLE =SIMP(statut='o',typ=CO), + DEBIT =SIMP(statut='o',typ=CO), + +# DONNEES GEOMETRIQUES RELATIVES A LA FISSURE +# ******************************************* + + FISSURE =FACT(statut='o',min=1,max=1, + LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0,fr="Longueur de la fissure [zl]"), + RUGOSITE =SIMP(statut='o',typ='R',fr="Rugosite absolu (metres) [eps]"), + ANGLE =SIMP(statut='o',typ='R',fr="Angle par rapport a l'ascendante verticale (degres)"), + ZETA =SIMP(statut='o',typ='R',fr="Coefficient de la perte de charge singuliere a l'entree [zeta]"), + SECTION =SIMP(statut='o',typ='TXM',into=("ELLIPSE","RECTANGLE"),fr="Type de section [is]"), + b_section_ellipse =BLOC(condition="SECTION=='ELLIPSE'",fr="Fissure a section elliptique", + LISTE_COTES_AH =SIMP(statut='o',typ='R',max='**', + fr="Liste des cotes des points definissant le grand axe de la section", + validators=NoRepeat()), + LISTE_VAL_AH =SIMP(statut='o',typ='R',max='**', + fr="Liste des valeurs des points definissant le grand axe de la section",), + LISTE_COTES_BL =SIMP(statut='o',typ='R',max='**', + fr="Liste des cotes des points definissant le petit axe de la section", + validators=NoRepeat()), + LISTE_VAL_BL =SIMP(statut='o',typ='R',max='**', + fr="Liste des valeurs des points definissant le petit axe de la section",), + ), + b_section_rectangle =BLOC(condition="SECTION=='RECTANGLE'",fr="Fissure a section rectangulaire", + LISTE_COTES_AH =SIMP(statut='o',typ='R',max='**', + fr="Liste des cotes des points definissant la hauteur de la section", + validators=NoRepeat()), + LISTE_VAL_AH =SIMP(statut='o',typ='R',max='**', + fr="Liste des valeurs des points definissant la hauteur de la section",), + LISTE_COTES_BL =SIMP(statut='o',typ='R',max='**', + fr="Liste des cotes des points definissant la largeur de la section", + validators=NoRepeat()), + LISTE_VAL_BL =SIMP(statut='o',typ='R',max='**', + fr="Liste des valeurs des points definissant la largeur de la section",), + ), + ), + + +# DONNEES RELATIVES A L"ECOULEMENT +# ******************************** + + ECOULEMENT =FACT(statut='f',min=1,max=1, + PRES_ENTREE =SIMP(statut='o',typ='R',fr="Pression de stagnation a l'entree (Pa) [pe]" ), + PRES_SORTIE =SIMP(statut='o',typ='R',fr="Pression de stagnation a la sortie (Pa) [ps]" ), + FLUIDE_ENTREE =SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),fr="Condition du fluide a l'entree [iflow]" ), + b_condition_1 =BLOC(condition="FLUIDE_ENTREE==1",fr="Eau sous-refroidie ou saturee", + TEMP_ENTREE =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + ), + b_condition_2 =BLOC(condition="FLUIDE_ENTREE==2",fr="Fluide diphasique", + TITR_MASS =SIMP(statut='o',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ), + ), + b_condition_3 =BLOC(condition="FLUIDE_ENTREE==3",fr="Vapeur saturee ou surchauffee", + TEMP_ENTREE =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + ), + b_condition_4 =BLOC(condition="FLUIDE_ENTREE==4",fr="Air + vapeur surchauffee", + TEMP_ENTREE =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + PRES_PART =SIMP(statut='o',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ), + ), + b_condition_5 =BLOC(condition="FLUIDE_ENTREE==5",fr="Air + vapeur saturee", + TITR_MASS =SIMP(statut='o',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ), + PRES_PART =SIMP(statut='o',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ), + ), + b_condition_6 =BLOC(condition="FLUIDE_ENTREE==6",fr="Air seul", + TEMP_ENTREE =SIMP(statut='o',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + ), + ), + + +# DONNEES RELATIVES AU PROFIL DE TEMPERATURE A TRAVERS LA PAROI +# ************************************************************* + + TEMPERATURE =FACT(statut='f',min=1,max=1, + GRADIENT =SIMP(statut='o',typ='TXM',into=("FOURNI","IMPOSE","CALCULE"), + fr="Modele de calcul du gradient de temperature [imograd]" ), + b_gradient_fourni =BLOC(condition="GRADIENT=='FOURNI'",fr="Distribution de temperature fournie [imograd=-1]", + LISTE_COTES_TEMP =SIMP(statut='o',typ='R',max='**',fr="Liste des cotes pour les temperatures", + validators=NoRepeat() ), + LISTE_VAL_TEMP =SIMP(statut='o',typ='R',max='**',fr="Liste des valeurs de temperature", ), + ), + b_gradient_impose =BLOC(condition="GRADIENT=='IMPOSE'",fr="Distribution imposee de temperature [imograd=0]", + TEMP1 =SIMP(statut='o',typ='R', + fr="Gradient de temperature de la paroi le long de l'ecoulement (degC/m) [tm1]", ), + TEMP2 =SIMP(statut='o',typ='R',fr="Temperature de la paroi a l'entree (degC) [tm2]", ), + ), + b_gradient_calcule =BLOC(condition="GRADIENT=='CALCULE'",fr="Profil de temperature calcule [imograd=1]", + EPAISSEUR_PAROI =SIMP(statut='o',typ='R',fr="Epaisseur de la paroi (m) [epp]", ), + CONVECTION_AMONT =SIMP(statut='o',typ='R', + fr="Coefficient de convection a la surface de la paroi cote amont (W/degC/m2) [alphe]", ), + CONVECTION_AVAL =SIMP(statut='o',typ='R', + fr="Coefficient de convection a la surface de la paroi cote aval (W/degC/m2) [alphs]", ), + LAMBDA =SIMP(statut='o',typ='R',fr="Conduction thermique de la paroi (W/degC/m) [lambd]", ), + TEMP_FLUIDE_AVAL =SIMP(statut='o',typ='R',fr="Temperature du fluide cote aval (degC) [ts]", ), + ), + ), + + +# CHOIX DES MODELES +# ***************** + + MODELE_ECRE =FACT(statut='f',min=1,max=1, + IVENAC =SIMP(statut='f', typ='I', into=(0,1), defaut=0, + fr="Calcul ECREVISSE avec prise en compte de la vena contracta"), + ECOULEMENT =SIMP(statut='o',typ='TXM',into=("SATURATION","GELE"), + fr="Type de modele d'ecoulement diphasique [imod]" ), + b_ecou_gele =BLOC(condition="ECOULEMENT=='GELE'",fr="Modele d'ecoulement gele", + PRESS_EBULLITION =SIMP(statut='o',typ='R',fr="Pression d'ebullition [corrp*psat(t)]"), + ), + FROTTEMENT =SIMP(statut='o',typ='I',into=(-3,-2,-1,0,1,2,3),fr="Correlation de frottement [ifrot]"), + b_frottement =BLOC(condition="FROTTEMENT<0",fr="Modele d'ecoulement gele", + REYNOLDS_LIM =SIMP(statut='o',typ='R',fr="Coefficient de Reynolds limite [relim]"), + FROTTEMENT_LIM =SIMP(statut='o',typ='R',fr="Coefficient de frottement impose [frtlim]"), + ), + + TRANSFERT_CHAL =SIMP(statut='o',typ='I',into=(-2,-1,0,1,2),fr="Transfert de chaleur [ichal]"), + b_transchal =BLOC(condition="TRANSFERT_CHAL<0", fr="Cas diphasique", + XMINCH =SIMP(statut='o',typ='R',fr="Titre massique gazeux min [xminch]"), + XMAXCH =SIMP(statut='o',typ='R',fr="Titre massique gazeux max [xmaxch]"), + ), + ), + + +# DONNEES RELATIVES A LA CONVERGENCE NUMERIQUE +# ******************************************** + + CONVERGENCE =FACT(statut='f',min=1,max=1, + KGTEST =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 0.5E+0, + fr="Parametre de l'algorithme iteratif [kgtest]" ), + ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 400, + fr="Nombre maximum d'iterations de la methode de Newton [itnmax]" ), + CRIT_CONV_DEBI =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 1.E-5, + fr="Critere de convergence en debit [precdb]" ), + ), + + +# GENERAL +# ******* + + COURBES =SIMP(statut='f',typ='TXM',into=("INTERACTIF","POSTSCRIPT","AUCUNE"),defaut="AUCUNE", + fr="Generation eventuelle des courbes" ), + LOGICIEL =SIMP(statut='f',typ='TXM',validators=LongStr(1,255),), + VERSION =SIMP(statut='f',typ='TXM',into = ("3.1.1","3.1.2","3.2")), + ENTETE =SIMP(statut='f',typ='TXM',max='**',defaut="Titre du calcul Ecrevisse" ), + IMPRESSION =SIMP(statut='f',typ='TXM',defaut='NON',into=( 'OUI','NON') ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), + +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BOTTONI M.BOTTONI + + +def macr_ecrevisse_prod(self,TABLE,TEMPER,DEBIT,**args): + # On definit ici les concepts produits + self.type_sdprod(TABLE,table_sdaster) + self.type_sdprod(TEMPER,evol_ther) + self.type_sdprod(DEBIT,table_sdaster) + # concept retourne + return evol_noli + + + +MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE", + op=OPS('Macro.macr_ecrevisse_ops.macr_ecrevisse_ops'), + sd_prod=macr_ecrevisse_prod, + reentrant='f', + UIinfo={"groupes":("Résolution","Outils-métier",)}, + fr="Procedure de couplage avec Ecrevisse", + + reuse = SIMP(statut='f',typ='evol_noli'), + regles = (EXCLUS('TEMPER','ETAT_INIT'), + UN_PARMI('LOGICIEL','VERSION'),), + +# CONCEPT SORTANT +# ******************************************** + TABLE =SIMP(statut='f',typ=CO), + DEBIT =SIMP(statut='f',typ=CO), + TEMPER =SIMP(statut='f',typ=CO), + +# ETAT_INITIAL +# ******************************************** + ETAT_INIT =FACT(statut='f', + EVOL_NOLI =SIMP(statut='o',typ=evol_noli), + EVOL_THER =SIMP(statut='o',typ=evol_ther), + NUME_ORDRE =SIMP(statut='o',typ='I'), + ), + + +# MODELES MECANIQUES +# ******************************************** + MODELE_MECA =SIMP(statut='o',typ=modele_sdaster), + MODELE_THER =SIMP(statut='o',typ=modele_sdaster), + + +# DONNEES GEOMETRIQUES RELATIVES A LA FISSURE +# ******************************************* + FISSURE =FACT(statut='o',min=1,max='**', + PREFIXE_FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,8)), + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),min=2,max=2, + fr="Groupe(s) des noeuds definissant les levres de la fissure"), + GROUP_NO_ORIG =SIMP(statut='o',typ=grno,validators=NoRepeat(),min=2,max=2), + GROUP_NO_EXTR =SIMP(statut='o',typ=grno,validators=NoRepeat(),min=2,max=2), + ZETA =SIMP(statut='o',typ='R',fr="Coefficient de la perte de charge singuliere a l'entree [zeta]" ), + RUGOSITE =SIMP(statut='o',typ='R',fr="Rugosite absolu (metres) [eps]" ), + TORTUOSITE =SIMP(statut='f',typ='R',defaut=1.0, val_min=0., val_max=1.0, + fr="Coefficient de tortuosite de la fissure" ), + OUVERT_REMANENTE =SIMP(statut='o',typ='R',val_min=0.,fr="Ouverture remanente"), + SECTION =SIMP(statut='o',typ='TXM',into=("ELLIPSE","RECTANGLE"),fr="Type de section [is]" ), + b_section_ellipse =BLOC(condition="SECTION=='ELLIPSE'",fr="Fissure a section elliptique", + LISTE_COTES_BL =SIMP(statut='f',typ='R',max='**', + fr="Liste des cotes des points definissant le petit axe de la section", + validators=NoRepeat() ), + LISTE_VAL_BL =SIMP(statut='o',typ='R',max='**', + fr="Liste des valeurs des points definissant le petit axe de la section", ), + ), + b_section_rectangle =BLOC(condition="SECTION=='RECTANGLE'",fr="Fissure a section rectangulaire", + LISTE_COTES_BL =SIMP(statut='f',typ='R',max='**', + fr="Liste des cotes des points definissant la largeur de la section",validators=NoRepeat()), + LISTE_VAL_BL =SIMP(statut='o',typ='R',max='**', + fr="Liste des valeurs des points definissant la largeur de la section", ), + ), + ), + + +# DONNEES RELATIVES A L"ECOULEMENT +# ******************************** + ECOULEMENT =FACT(statut='o',min=1,max=1, + regles=(UN_PARMI('PRES_ENTREE','PRES_ENTREE_FO'), + UN_PARMI('PRES_SORTIE','PRES_SORTIE_FO'), + ), + PRES_ENTREE =SIMP(statut='f',typ='R',fr="Pression de stagnation a l'entree (Pa) [pe]" ), + PRES_ENTREE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Evolution de la pression de stagnation a l'entree (Pa) [pe]" ), + PRES_SORTIE =SIMP(statut='f',typ='R',fr="Pression de stagnation a la sortie (Pa) [ps]" ), + PRES_SORTIE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Evolution de la pression de stagnation a la sortie (Pa) [ps]" ), + FLUIDE_ENTREE =SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),fr="Condition du fluide a l'entree [iflow]" ), + b_condition_1 =BLOC(condition="FLUIDE_ENTREE==1", + regles=(UN_PARMI('TEMP_ENTREE', 'TEMP_ENTREE_FO')), + fr="Eau sous-refroidie ou saturee", + TEMP_ENTREE =SIMP(statut='f',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + TEMP_ENTREE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Evolution de la temperature a l'entree (degres C) [te]" ), + ), + b_condition_2 =BLOC(condition="FLUIDE_ENTREE==2", + regles=(UN_PARMI('TITR_MASS', 'TITR_MASS_FO')), + fr="Fluide diphasique", + TITR_MASS =SIMP(statut='f',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ), + TITR_MASS_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Evolution du titre massique eau vap/eau tot a l'entree [xe]" ), + ), + b_condition_3 =BLOC(condition="FLUIDE_ENTREE==3", + regles=(UN_PARMI('TEMP_ENTREE', 'TEMP_ENTREE_FO')), + fr="Vapeur saturee ou surchauffee", + TEMP_ENTREE =SIMP(statut='f',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + TEMP_ENTREE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Evolution de la temperature a l'entree (degres C) [te]" ), + ), + b_condition_4 =BLOC(condition="FLUIDE_ENTREE==4", + regles=(UN_PARMI('TEMP_ENTREE', 'TEMP_ENTREE_FO'), + UN_PARMI('PRES_PART', 'PRES_PART_FO')), + fr="Air + vapeur surchauffee", + TEMP_ENTREE =SIMP(statut='f',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + TEMP_ENTREE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Evolution de la temperature a l'entree (degres C) [te]" ), + PRES_PART =SIMP(statut='f',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ), + PRES_PART_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Evolution de la pression partielle air en entree (Pa) [pae]" ), + ), + b_condition_5 =BLOC(condition="FLUIDE_ENTREE==5", + regles=(UN_PARMI('TITR_MASS', 'TITR_MASS_FO'), + UN_PARMI('PRES_PART', 'PRES_PART_FO')), + fr="Air + vapeur saturee", + TITR_MASS =SIMP(statut='f',typ='R',fr="Titre massique eau vap/eau tot a l'entree [xe]" ), + TITR_MASS_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Evolution du titre massique eau vap/eau tot a l'entree [xe]" ), + PRES_PART =SIMP(statut='f',typ='R',fr="Pression partielle air en entree (Pa) [pae]" ), + PRES_PART_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Evolution de la pression partielle air en entree (Pa) [pae]" ), + ), + b_condition_6 =BLOC(condition="FLUIDE_ENTREE==6", + regles=(UN_PARMI('TEMP_ENTREE', 'TEMP_ENTREE_FO')), + fr="Air seul", + TEMP_ENTREE =SIMP(statut='f',typ='R',fr="Temperature a l'entree (degres C) [te]" ), + TEMP_ENTREE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule), + fr="Evolution de la temperature a l'entree (degres C) [te]" ), + ), + ), + + LIST_INST =SIMP(statut='f',typ=(listr8_sdaster), fr="Liste des instants de calcul imposes" ), + +# CHOIX DES MODELES +# ***************** + + MODELE_ECRE =FACT(statut='o',min=1,max=1, + IVENAC =SIMP(statut='f', typ='I', into=(0,1), defaut=0, + fr="Calcul ECREVISSE avec prise en compte de la vena contracta"), + ECOULEMENT =SIMP(statut='o',typ='TXM',into=("SATURATION","GELE"), + fr="Type de modele d'ecoulement diphasique [imod]" ), + b_ecou_gele =BLOC(condition="ECOULEMENT=='GELE'",fr="Modele d'ecoulement gele", + PRESS_EBULLITION =SIMP(statut='o',typ='R',fr="Pression d'ebullition [corrp*psat(t)]" ), + ), + FROTTEMENT =SIMP(statut='o',typ='I',into=(-3,-2,-1,0,1,2,3),fr="Correlation de frottement [ifrot]" ), + b_frottement =BLOC(condition="FROTTEMENT<0",fr="Modele d'ecoulement gele", + REYNOLDS_LIM =SIMP(statut='o',typ='R',fr="Coefficient de Reynolds limite [relim]" ), + FROTTEMENT_LIM =SIMP(statut='o',typ='R',fr="Coefficient de frottement impose [frtlim]" ), + ), + + TRANSFERT_CHAL =SIMP(statut='o',typ='I',into=(-2,-1,0,1,2),fr="Transfert de chaleur [ichal]" ), + b_transchal =BLOC(condition="TRANSFERT_CHAL<0", fr="Cas diphasique", + XMINCH =SIMP(statut='o',typ='R',fr="Titre massique gazeux min [xminch]"), + XMAXCH =SIMP(statut='o',typ='R',fr="Titre massique gazeux max [xmaxch]"), + ), + ), + + +# CRITERE DE CONVERGENCE +# ********************** + + CONV_CRITERE =FACT(statut='o',min=1,max=1, + TEMP_REF =SIMP(statut='o',typ='R',val_min=1.0E-5,fr="Temperature de reference pour le calcul du critere"), + PRES_REF =SIMP(statut='o',typ='R',val_min=1.0E-5,fr="Pression de reference pour le calcul du critere"), + CRITERE =SIMP(statut='o',typ='TXM',defaut="TEMP_PRESS",into=("TEMP_PRESS","EXPLICITE","TEMP","PRESS"), + fr="La nature du critere pour la convergence"), + b_critere_autre =BLOC(condition="CRITERE=='TEMP_PRESS' or CRITERE=='TEMP' or CRITERE=='PRESS'", + fr="Critere de convergence temp_press, temp, ou press", + SUBD_NIVEAU =SIMP(statut='f',typ='I',val_min=2,defaut=3, + fr="Nombre maximum de niveau de subdivision d'un pas de temps"), + SUBD_PAS_MINI =SIMP(statut='f',typ='R',val_min=0.0, fr="Pas de temps en dessous duquel on ne subdivise plus"), + NUME_ORDRE_MIN =SIMP(statut='f',typ='I',val_min=-1,defaut=-1, + fr="Numero d'ordre a partir duquel le critere est pris en compte"), + PREC_CRIT =SIMP(statut='f',typ='R',val_min=1.0E-2,defaut=1.0, + fr="Valeur du critere pour l'erreur de convergence"), + ), + ), + + +# DONNEES RELATIVES A LA CONVERGENCE NUMERIQUE +# ******************************************** + + CONVERGENCE_ECREVISSE =FACT(statut='f',min=1,max=1, + KGTEST =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 0.5E+0, + fr="Parametre de l'algorithme iteratif [kgtest]" ), + ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 400, + fr="Nombre maximum d'iterations de la methode de Newton [itnmax]" ), + CRIT_CONV_DEBI =SIMP(statut='f',typ='R',val_min=0.E+0,val_max=1.E+0,defaut= 1.E-5, + fr="Critere de convergence en debit [precdb]" ), + ), + + +# GENERAL +# ******* + + COURBES = SIMP(statut='f',typ='TXM',into=("INTERACTIF","POSTSCRIPT","AUCUNE"),defaut="AUCUNE", + fr="Generation eventuelle des courbes" ), + LOGICIEL = SIMP(statut='f',typ='TXM',validators=LongStr(1,255),), + VERSION =SIMP(statut='f',typ='TXM',into = ("3.1.1","3.1.2","3.2")), + ENTETE = SIMP(statut='f',typ='TXM',max='**',defaut="Titre du calcul Ecrevisse" ), + IMPRESSION = SIMP(statut='f',typ='TXM',defaut='NON',into=( 'OUI','NON') ), + INFO = SIMP(statut='f',typ='I',defaut="1",into=(1,2) ), + +# DONNEES POUR STAT_NON_LINE ET THER_NON_LINE +# ******************************************* + + # copie de stat_non_line.capy des options des mots cles qui nous interessent + + # donnees communes + + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + + # donnees specifiques a stat_non_line + + EXCIT_MECA =FACT(statut='o',max='**', + CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", + into=("FIXE_CSTE","SUIV","DIDI")), + ), + + CONTACT = SIMP(statut='o',typ=char_contact), + + COMP_INCR =C_COMP_INCR(), + NEWTON =FACT(statut='d', + REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ), + PREDICTION =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ), + MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ), + PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0), + REAC_ITER =SIMP(statut='f',typ='I',defaut=0), + REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + ), + CONVERGENCE =FACT(statut='d',regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),), + b_refe_rela =BLOC(condition = "RESI_REFE_RELA != None", + regles=(AU_MOINS_UN('SIGM_REFE','EPSI_REFE','FLUX_THER_REFE', + 'FLUX_HYD1_REFE','FLUX_HYD2_REFE','VARI_REFE'), + ), + SIGM_REFE =SIMP(statut='f',typ='R'), + EPSI_REFE =SIMP(statut='f',typ='R'), + FLUX_THER_REFE =SIMP(statut='f',typ='R'), + FLUX_HYD1_REFE =SIMP(statut='f',typ='R'), + FLUX_HYD2_REFE =SIMP(statut='f',typ='R'), + VARI_REFE =SIMP(statut='f',typ='R'), + ), + RESI_REFE_RELA =SIMP(statut='f',typ='R'), + RESI_GLOB_MAXI =SIMP(statut='f',typ='R'), + RESI_GLOB_RELA =SIMP(statut='f',typ='R'), + ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10), + ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25), + ARRET =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + ), + + # donnees specifiques a ther_lineaire + + EXCIT_THER =FACT(statut='o',max='**', + CHARGE =SIMP(statut='o',typ=(char_ther,char_cine_ther)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + PARM_THETA =SIMP(statut='f',typ='R',defaut= 0.57), + +) +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE CORUS M.CORUS + +MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna, + fr="Définition d'un macro élément pour analyse modale ou harmonique par sous structuration dynamique", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)}, + regles=(EXCLUS('MATR_AMOR','AMOR_REDUIT' ), + PRESENT_ABSENT('MATR_IMPE','MATR_RIGI','MATR_MASS'),), + BASE_MODALE =SIMP(statut='o',typ=mode_meca ), + MATR_RIGI =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c),), + MATR_MASS =SIMP(statut='f',typ=matr_asse_depl_r ), + MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r ), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno ), + MATR_IMPE =SIMP(statut='f',typ=matr_asse_gene_c ), + b_matr_impe =BLOC(condition = "MATR_IMPE != None", + FREQ_EXTR =SIMP(statut='o',typ='R' ), + AMOR_SOL =SIMP(statut='f',typ='R',defaut=0.E+0 ), + MATR_IMPE_INIT =SIMP(statut='f',typ=matr_asse_gene_c ), + ), + CAS_CHARGE =FACT(statut='f',max='**', + NOM_CAS =SIMP(statut='o',typ='TXM'), + VECT_ASSE_GENE =SIMP(statut='o',typ=vect_asse_gene ), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant='f', + UIinfo={"groupes":("Matrices et vecteurs",)}, + fr="Définition d'un macro-élément pour l'analyse statique par sous-structuration", + regles=(AU_MOINS_UN('DEFINITION','RIGI_MECA','MASS_MECA','CAS_CHARGE'), + ENSEMBLE('DEFINITION','EXTERIEUR'),), + DEFINITION =FACT(statut='f', + regles=(PRESENT_PRESENT('PROJ_MESU','MODE_MESURE'),), + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + CHAR_MACR_ELEM =SIMP(statut='f',typ=char_meca), + INST =SIMP(statut='f',typ='R',defaut=0.0E+0 ), + NMAX_CAS =SIMP(statut='f',typ='I',defaut=10), + NMAX_CHAR =SIMP(statut='f',typ='I',defaut=10), + PROJ_MESU =SIMP(statut='f',typ=(mode_gene,tran_gene,harm_gene),max=1), +# MODE_MESURE =SIMP(statut='f',typ=( mode_meca,base_modale) ), + MODE_MESURE =SIMP(statut='f',typ= mode_meca ), + ), + EXTERIEUR =FACT(statut='f', + regles=(AU_MOINS_UN('NOEUD','GROUP_NO'),), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + ), + RIGI_MECA =FACT(statut='f', + ), + MASS_MECA =FACT(statut='f', + ), + AMOR_MECA =FACT(statut='f', + ), + CAS_CHARGE =FACT(statut='f',max='**', + NOM_CAS =SIMP(statut='o',typ='TXM'), + SUIV =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'), + INST =SIMP(statut='f',typ='R',defaut=0.E+0), + ), + +) ; +#& MODIF COMMANDE DATE 12/09/2011 AUTEUR NICOLAS G.NICOLAS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GNICOLAS G.NICOLAS + + +MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL", + op=OPS('Macro.macr_adap_mail_ops.macr_adap_mail_ops'), + docu="U7.03.02",UIinfo={"groupes":("Maillage",)}, + fr="Donner des informations sur un maillage.", + ang="To give information about a mesh.", +# +# 1. Le niveau d'information +# + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4)), +# +# 2. Version de HOMARD +# + VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V10_2", + into=("V10_2", "V10_N", "V10_N_PERSO"), + fr="Version de HOMARD", + ang="HOMARD release"), +# +# 3. Langue des messages issus de HOMARD +# + LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS", + into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",), + fr="Langue des messages issus de HOMARD.", + ang="Language for HOMARD messages." ), +# +# 4. Le nom du maillage a analyser +# + MAILLAGE = SIMP(statut='o',typ=maillage_sdaster, + fr="Maillage à analyser.", + ang="Mesh to be checked." ), +# +# 5. Suivi d'une frontiere +# + MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster, + fr="Maillage de la frontiere à suivre", + ang="Boundary mesh" ), +# + b_frontiere = BLOC( condition = " MAILLAGE_FRONTIERE != None " , + fr="Information complémentaire sur la frontière", + ang="Further information about boundary", +# + GROUP_MA_FRONT = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Groupes de mailles définissant la frontière", + ang="Mesh groups which define the boundary" ), +# + ) , +# +# 6. Les options ; par defaut, on controle tout, sauf l'interpénétration +# 6.1. Nombre de noeuds et mailles +# + NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"), + fr="Nombre de noeuds et de mailles du maillage", + ang="Number of nodes and meshes in the mesh" ), +# +# 6.2. Determination de la qualite des mailles du maillage +# + QUALITE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"), + fr="Qualité du maillage", + ang="Quality of the mesh" ), +# +# 6.3. Connexite du maillage +# + CONNEXITE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"), + fr="Connexité du maillage.", + ang="Connexity of the mesh." ), +# +# 6.4. Taille des sous-domaines du maillage +# + TAILLE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"), + fr="Tailles des sous-domaines du maillage.", + ang="Sizes of mesh sub-domains." ), +# +# 6.5. Controle de la non-interpénétration des mailles +# + INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Controle de la non interpénétration des mailles.", + ang="Overlapping checking." ), +# +# 6.6. Propriétés du maillage de calcul +# + PROP_CALCUL = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"), + fr="Propriétés du maillage de calcul.", + ang="Properties of the calculation mesh." ), +# +# 7. Unite logique d'un fichier à ajouter a HOMARD.Configuration +# + b_unite = BLOC( condition = " (VERSION_HOMARD == 'V10_N') or \ + (VERSION_HOMARD == 'V10_N_PERSO') " , + fr="Fichier supplementaire.", + ang="Additional file.", +# + UNITE = SIMP(statut='f',typ='I', + fr="Unite logique a ajouter a HOMARD.Configuration", + ang="Additional file to HOMARD.Configuration" ), +# + ) , +# +# 8. Gestion des mailles autres que celles compatibles avec HOMARD +# "REFUSER" : elles sont refusées (defaut) +# "IGNORER" : elles sont ignorées +# + ELEMENTS_NON_HOMARD = SIMP(statut='f',typ='TXM',defaut="REFUSER",into=("REFUSER","IGNORER"), + fr="Acceptation de mailles incompatibles avec HOMARD", + ang="Incompatible meshes for HOMARD" ), +) ; + +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DURAND C.DURAND + + +MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE", + op=OPS('Macro.macr_lign_coupe_ops.macr_lign_coupe_ops'), + sd_prod=table_sdaster, + reentrant='n', + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + fr="Extraction des valeurs d'un résultat dans une ou plusieurs tables sur " \ + "des lignes de coupe définies par deux points et un intervalle", + regles=(UN_PARMI("RESULTAT","CHAM_GD"),), + + RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) ), + CHAM_GD =SIMP(statut='f',typ=(cham_gd_sdaster)), + + b_extrac =BLOC(condition = "RESULTAT != None",fr="extraction des résultats", + regles=(EXCLUS('NUME_ORDRE','LIST_ORDRE','INST','LIST_INST',), ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + +# extraction des résultats + b_meca =BLOC(condition = "AsType(RESULTAT) in (evol_elas,evol_noli)",fr="résultat mécanique", + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='SIGM_NOEU',into=C_NOM_CHAM_INTO(),), + ), + b_ther =BLOC(condition = "AsType(RESULTAT) in (evol_ther,)",fr="résultat thermique", + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='TEMP',into=("TEMP", + "FLUX_ELGA","FLUX_ELNO","FLUX_NOEU", + "META_ELNO","META_NOEU", + "DURT_ELNO","DURT_NOEU", + "HYDR_ELNO","HYDR_NOEU", + "DETE_ELNO","DETE_NOEU", + "SOUR_ELGA","COMPORTHER", + "ERTH_ELEM","ERTH_ELNO","ERTH_NOEU",),),), + b_cham =BLOC(condition = "CHAM_GD!=None", + NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO(),),), + + UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=25), + MODELE =SIMP(statut='f',typ=modele_sdaster ), + + VIS_A_VIS =FACT(statut='f',max='**', + regles=(EXCLUS('GROUP_MA_1','MAILLE_1'),), + GROUP_MA_1 =SIMP(statut='f',typ=grma), + MAILLE_1 =SIMP(statut='f',typ=ma,max='**'),), + + LIGN_COUPE =FACT(statut='o',max='**', + regles=(EXCLUS("NOM_CMP","INVARIANT","ELEM_PRINCIPAUX","RESULTANTE"), + PRESENT_PRESENT("TRAC_DIR","DIRECTION"), + EXCLUS("TRAC_DIR","TRAC_NOR"), + PRESENT_PRESENT("TRAC_DIR","NOM_CMP"), + PRESENT_PRESENT("TRAC_NOR","NOM_CMP"),), + + INTITULE =SIMP(statut='f',typ='TXM',), + TYPE =SIMP(statut='o',typ='TXM',max=1, + into=("GROUP_NO","SEGMENT","ARC","GROUP_MA"),defaut="SEGMENT"), + REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL", + into=("GLOBAL","LOCAL","POLAIRE","UTILISATEUR","CYLINDRIQUE"),), + OPERATION =SIMP(statut='f',typ='TXM',into=("EXTRACTION","MOYENNE",),defaut="EXTRACTION",), + + NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + INVARIANT =SIMP(statut='f',typ='TXM',into=("OUI",),), + ELEM_PRINCIPAUX =SIMP(statut='f',typ='TXM',into=("OUI",),), + RESULTANTE =SIMP(statut='f',typ='TXM',max='**'), + TRAC_NOR =SIMP(statut='f',typ='TXM',into=("OUI",)), + TRAC_DIR =SIMP(statut='f',typ='TXM',into=("OUI",)), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + + + b_local =BLOC(condition = "REPERE=='LOCAL' ", + VECT_Y =SIMP(statut='f',typ='R',min=2,max=3),), + + b_utili =BLOC(condition = "REPERE=='UTILISATEUR'", + ANGL_NAUT =SIMP(statut='o',typ='R',min=3,max=3),), + + b_grno =BLOC(condition = "TYPE=='GROUP_NO'", + GROUP_NO =SIMP(statut='o',typ=grno, max=1),), + + b_grma =BLOC(condition = "TYPE=='GROUP_MA'", + GROUP_MA =SIMP(statut='o',typ=grma, max=1), + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),), + + b_segment =BLOC(condition = "TYPE=='SEGMENT'", + NB_POINTS =SIMP(statut='o',typ='I',max=1), + COOR_ORIG =SIMP(statut='o',typ='R',min=2,max=3), + COOR_EXTR =SIMP(statut='o',typ='R',min=2,max=3),), + + b_arc =BLOC(condition = "TYPE=='ARC'", + NB_POINTS =SIMP(statut='o',typ='I',max=1), + COOR_ORIG =SIMP(statut='o',typ='R',min=2,max=3), + CENTRE =SIMP(statut='o',typ='R',min=2,max=3), + ANGLE =SIMP(statut='o',typ='R',max=1), + DNOR =SIMP(statut='f',typ='R',min=2,max=3),), + + b_cylind =BLOC(condition = ("REPERE=='CYLINDRIQUE' and TYPE!='ARC'"), + ORIGINE =SIMP(statut='f',typ='R',min=2,max=3), + AXE_Z =SIMP(statut='f',typ='R',min=3,max=3),), + + DISTANCE_MAX =SIMP(statut='f',typ='R',defaut=0., + fr="Si la distance entre un noeud de la ligne de coupe et le maillage coupé " + +"est > DISTANCE_MAX, ce noeud sera ignoré."), + + ), +) ; + + +#& MODIF COMMANDE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE + + +def macr_recal_prod(self,**args ): + return listr8_sdaster + +MACR_RECAL = MACRO(nom="MACR_RECAL", + op=OPS('Macro.macr_recal_ops.macr_recal_ops'), + sd_prod=macr_recal_prod, + UIinfo={"groupes":("Résolution","Résultats et champs",)}, + fr="Réalise le recalage des calculs Aster sur des résultats expérimentaux" \ + " ou sur d'autres résultats de calculs", + regles=(UN_PARMI('PARA_OPTI','LIST_PARA'), + PRESENT_PRESENT('PARA_OPTI','COURBE'), + PRESENT_PRESENT('LIST_PARA','RESU_EXP'), + PRESENT_PRESENT('LIST_PARA','RESU_CALC'), + EXCLUS('LIST_POIDS','COURBE'),), + + UNITE_ESCL =SIMP(statut='o',typ='I'), + RESU_EXP =SIMP(statut='f',typ=not_checked,max='**'), + COURBE =FACT(statut='f',max='**', + FONC_EXP =SIMP(statut='o',typ=(fonction_sdaster),), + NOM_FONC_CALC =SIMP(statut='o',typ='TXM',), + PARA_X =SIMP(statut='o',typ='TXM',), + PARA_Y =SIMP(statut='o',typ='TXM',), + POIDS =SIMP(statut='f',typ='R',), + ), + RESU_CALC =SIMP(statut='f',typ=not_checked,max='**'), + LIST_PARA =SIMP(statut='f',typ=not_checked,max='**'), + PARA_OPTI =FACT(statut='f',max='**', + NOM_PARA = SIMP(statut='o',typ='TXM'), + VALE_INI = SIMP(statut='o',typ='R'), + VALE_MIN = SIMP(statut='o',typ='R'), + VALE_MAX = SIMP(statut='o',typ='R'), + ), + LIST_POIDS =SIMP(statut='f',typ=not_checked,max='**'), + + UNITE_RESU =SIMP(statut='f',typ='I',defaut=91), + PARA_DIFF_FINI =SIMP(statut='f',typ='R',defaut=0.001), + + GRAPHIQUE =FACT(statut='f', + FORMAT =SIMP(statut='f',typ='TXM',defaut='XMGRACE',into=("XMGRACE","GNUPLOT"),), + AFFICHAGE =SIMP(statut='f',typ='TXM',defaut='TOUTE_ITERATION',into=("TOUTE_ITERATION","ITERATION_FINALE"),), + b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'", fr="Mots-clés propres à XMGRACE", + PILOTE =SIMP(statut='f',typ='TXM',defaut='', + into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'), + fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"), + UNITE =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29, + fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"), + ), + ), + + + # Methodes d'optimisation + # ----------------------- + METHODE =SIMP(statut='f',typ='TXM',defaut='LEVENBERG',into=("LEVENBERG", "FMIN", "FMINBFGS", "FMINNCG", + "GENETIQUE","HYBRIDE")), + + b_genetique_options=BLOC(condition = "METHODE == 'GENETIQUE' or METHODE == 'HYBRIDE'" , + NB_PARENTS =SIMP(statut='f',typ='I',defaut=10), + NB_FILS =SIMP(statut='f',typ='I',defaut=5), + ECART_TYPE =SIMP(statut='f',typ='R',defaut=1.), + GRAINE =SIMP(statut='f',typ='I'), + ITER_ALGO_GENE =SIMP(statut='f',typ='I',defaut=10), + RESI_ALGO_GENE =SIMP(statut='f',typ='R',defaut=1.E-3), + ), + + + # Criteres d'arret globaux + # ------------------------- + ITER_MAXI =SIMP(statut='f',typ='I',defaut=10, fr="Nombre maximum d'iterations d'optimisation"), + ITER_FONC_MAXI =SIMP(statut='f',typ='I',defaut=1000, fr="Nombre maximum d'evaluations de la focntionnelle"), + RESI_GLOB_RELA =SIMP(statut='f',typ='R',defaut=1.E-3, fr="Critere d'arret sur la valeur du residu"), + TOLE_PARA =SIMP(statut='f',typ='R',defaut=1.E-8, fr="Critere d'arret sur la valeur des parametres"), + TOLE_FONC =SIMP(statut='f',typ='R',defaut=1.E-8, fr="Critere d'arret sur la valeur de la fonctionnelle"), + + + # Calculs des gradients + # --------------------- + b_gradient =BLOC(condition = "METHODE == 'FMINBFGS' or METHODE == 'FMINNCG'" , + GRADIENT =SIMP(statut='f',typ='TXM',defaut='NON_CALCULE', into=("NON_CALCULE", "NORMAL", "ADIMENSIONNE" )), + ), + + b_gradient_levenberg =BLOC(condition = "METHODE == 'LEVENBERG'" , + GRADIENT =SIMP(statut='f',typ='TXM',defaut='NORMAL', into=( "NORMAL", "ADIMENSIONNE" )), + ), + + + # Mode d'evaluation de l'esclave + # ------------------------------ + CALCUL_ESCLAVE =FACT(statut='d', + LANCEMENT =SIMP(statut='f', typ='TXM', defaut='INCLUSION',into=("DISTRIBUTION","INCLUSION"),), + + b_eval_distrib =BLOC(condition = "LANCEMENT == 'DISTRIBUTION'", + UNITE_SUIVI =SIMP(statut='f', typ='I',val_min=10,val_max=99,defaut=29, + fr="Affichage de l'output et/ou error des jobs esclaves dans ce fichier"), + MODE =SIMP(statut='f', typ='TXM', into=("INTERACTIF","BATCH"),), + MEMOIRE =SIMP(statut='f', typ='I', fr="Memoire demandee pour les calculs esclaves (Mo)"), + TEMPS =SIMP(statut='f', typ='I', fr="Temps demandee pour les calculs esclaves (secondes)"), + CLASSE =SIMP(statut='f', typ='TXM', fr="Classe demandee pour les calculs en batch"), + NMAX_SIMULT =SIMP(statut='f', typ='I', + fr="Nombre de calculs esclaves lances en paralle en mode distribution (non precise = automatique)"), + ), + ), + + DYNAMIQUE =FACT(statut='f', + MODE_EXP =SIMP(statut='o',typ='TXM'), + MODE_CALC =SIMP(statut='o',typ='TXM'), + APPARIEMENT_MANUEL =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON")), + ), + + INFO =SIMP(statut='f',typ='I',defaut=1, into=( 1, 2 ) ), +); +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE VOLDOIRE F.VOLDOIRE + + +MACR_SPECTRE=MACRO(nom="MACR_SPECTRE", + op=OPS('Macro.macr_spectre_ops.macr_spectre_ops'), + sd_prod=table_sdaster, + reentrant='n', + UIinfo={"groupes":("Post-traitements","Outils-métier",)}, + fr="Calcul de spectre, post-traitement de séisme", + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster,), + PLANCHER =FACT(statut='o',max='**', + regles=(AU_MOINS_UN('NOEUD','GROUP_NO' ),), + NOM =SIMP(statut='o',typ='TXM',), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), ), + NOM_CHAM =SIMP(statut='o',typ='TXM' ,into=('ACCE','DEPL')), + CALCUL =SIMP(statut='o',typ='TXM' ,into=('ABSOLU','RELATIF'),position='global'), + b_acce =BLOC( condition = "NOM_CHAM=='ACCE'", + regles=(UN_PARMI('LIST_FREQ','FREQ'),), + AMOR_SPEC =SIMP(statut='o',typ='R',max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + FREQ =SIMP(statut='f',typ='R',max='**'), + NORME =SIMP(statut='o',typ='R'), + RESU =FACT(statut='o',max='**', + regles=(UN_PARMI('RESU_GENE','RESULTAT'),), + RESU_GENE =SIMP(statut='f',typ=tran_gene), + RESULTAT =SIMP(statut='f',typ=(dyna_trans,evol_noli)), + b_calc =BLOC( condition = "CALCUL=='RELATIF'", + ACCE_X =SIMP(statut='o',typ=fonction_sdaster), + ACCE_Y =SIMP(statut='o',typ=fonction_sdaster), + ACCE_Z =SIMP(statut='o',typ=fonction_sdaster),), ), + IMPRESSION =FACT(statut='f', + TRI =SIMP(statut='f',typ='TXM',defaut='AMOR_SPEC',into=("AMOR_SPEC","DIRECTION",),), + FORMAT =SIMP(statut='f',typ='TXM',defaut='TABLEAU',into=("TABLEAU","XMGRACE",),), + UNITE =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29, + fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"), + b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'", + PILOTE =SIMP(statut='f',typ='TXM',defaut='', + into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),),), + TOUT =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON",),), + ), + ), + b_depl =BLOC( condition = "NOM_CHAM=='DEPL'", + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + RESU =FACT(statut='o',max=3, + regles=(UN_PARMI('RESU_GENE','RESULTAT'),), + RESU_GENE =SIMP(statut='f',typ=tran_gene), + RESULTAT =SIMP(statut='f',typ=(dyna_trans,evol_noli)), + b_calc =BLOC( condition = "CALCUL=='ABSOLU'", + DEPL_X =SIMP(statut='o',typ=fonction_sdaster), + DEPL_Y =SIMP(statut='o',typ=fonction_sdaster), + DEPL_Z =SIMP(statut='o',typ=fonction_sdaster),),), + ), +) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES + + +def macro_elas_mult_prod(self,NUME_DDL,CAS_CHARGE,**args ): + if isinstance(NUME_DDL,CO) : + self.type_sdprod(NUME_DDL,nume_ddl_sdaster) + else: + self.type_sdprod(NUME_DDL,NUME_DDL.__class__) + if CAS_CHARGE[0]['NOM_CAS'] != None : return mult_elas + if CAS_CHARGE[0]['MODE_FOURIER'] != None : return fourier_elas + raise AsException("type de concept resultat non prevu") + +MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT", + op=OPS('Macro.macro_elas_mult_ops.macro_elas_mult_ops'), + sd_prod=macro_elas_mult_prod, + reentrant='f', + UIinfo={"groupes":("Résolution",)}, + fr="Calculer les réponses statiques linéaires pour différents cas " \ + "de charges ou modes de Fourier", + regles=(UN_PARMI('CHAR_MECA_GLOBAL','LIAISON_DISCRET', ),), + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster,CO)), + CHAR_MECA_GLOBAL=SIMP(statut='f',typ=(char_meca),validators=NoRepeat(),max='**'), + LIAISON_DISCRET =SIMP(statut='f',typ='TXM',into=("OUI",)), + CAS_CHARGE =FACT(statut='o',max='**', + regles=(UN_PARMI('NOM_CAS','MODE_FOURIER'), + UN_PARMI('CHAR_MECA','VECT_ASSE'),), + NOM_CAS =SIMP(statut='f',typ='TXM' ), + MODE_FOURIER =SIMP(statut='f',typ='I' ), + TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ), + CHAR_MECA =SIMP(statut='f',typ=(char_meca),validators=NoRepeat(),max='**'), + OPTION =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', + into=("EFGE_ELNO","EPOT_ELEM","SIGM_ELNO","SIEF_ELGA", + "SICA_ELNO","EFCA_ELNO","DEGE_ELNO","EPSI_ELNO", + "EPSI_ELGA","EPSG_ELNO","EPSG_ELGA","EPSP_ELNO","EPSP_ELGA", + "ECIN_ELEM","FLUX_ELGA","FLUX_ELNO","SOUR_ELGA", + "PRAC_ELNO","INTE_ELNO", + "SIZ1_NOEU","ERZ1_ELEM","SIZ2_NOEU", + "ERZ2_ELEM","VNOR_ELEM_DEPL","ERME_ELNO", + "ERME_ELEM","SIEQ_ELNO","SIEQ_ELGA","EPEQ_ELNO", + "QIRE_ELEM","QIRE_ELNO","QIZ1_ELEM","QIZ2_ELEM", + "EPEQ_ELGA","FORC_NODA","REAC_NODA","EPSI_NOEU","SIGM_NOEU", + "EFGE_NOEU","SIEQ_NOEU","EPEQ_NOEU","FLUX_NOEU") ), + NUME_COUCHE =SIMP(statut='f',typ='I',defaut=1), + NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY")), + SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'), + VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster), + ), + SOLVEUR =FACT(statut='d', + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT") ), + b_mult_front = BLOC ( condition = "METHODE == 'MULT_FRONT' ", + fr="Paramètres de la méthode multi frontale", + RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ), + ), + b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ), + ), + b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ", + fr="Paramètres relatifs à la non inversibilité de la matrice à factorise", + NPREC =SIMP(statut='f',typ='I',defaut= 8 ), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2)), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BODEL C.BODEL + + +def macro_expans_prod(self, MODELE_MESURE, RESU_NX, RESU_EX, RESU_ET, RESU_RD, **args): + RESU_EXP = MODELE_MESURE['MESURE'] + self.type_sdprod(RESU_NX, mode_meca) + for res in (RESU_EX, RESU_ET, RESU_RD): + if isinstance(res, CO): + if AsType(RESU_EXP) == mode_meca: + self.type_sdprod(res, mode_meca) + else: + self.type_sdprod(res, dyna_harmo) + else: + self.type_sdprod(res,res.__class__) + return None + +MACRO_EXPANS=MACRO(nom="MACRO_EXPANS", + op=OPS('Macro.macro_expans_ops.macro_expans_ops'), + sd_prod=macro_expans_prod, + reentrant='n', + UIinfo={"groupes":("Outils-métier","Dynamique",)}, + fr="Outil d'expansion de resultats exprimentaux sur une base definie sur un modele numerique", + MODELE_CALCUL = FACT(statut='o', + MODELE = SIMP(statut='o',typ=(modele_sdaster) ), + BASE = SIMP(statut='o',typ=(mode_meca,) ), + NUME_MODE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0), + + ), + MODELE_MESURE = FACT(statut='o', + MODELE = SIMP(statut='o',typ=(modele_sdaster) ), + MESURE = SIMP(statut='o',typ=(dyna_trans,dyna_harmo,mode_meca,mode_meca_c,) ), + NOM_CHAM = SIMP(statut='f',typ='TXM',defaut="DEPL", + into=("DEPL","VITE","ACCE","SIEF_NOEU","EPSI_NOEU",) ), + NUME_MODE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0), + + ), + NUME_DDL = SIMP(statut='f',typ=(nume_ddl_sdaster)), + RESU_NX = SIMP(statut='f',typ=(mode_meca,dyna_harmo, CO)), + RESU_EX = SIMP(statut='f',typ=(mode_meca,dyna_harmo, CO)), + RESU_ET = SIMP(statut='f',typ=(mode_meca,dyna_harmo, CO)), + RESU_RD = SIMP(statut='f',typ=(mode_meca,dyna_harmo, CO)), + RESOLUTION = FACT(statut='f', + METHODE =SIMP(statut='f',typ='TXM',defaut="LU",into=("LU","SVD",) ), + b_svd =BLOC(condition="METHODE=='SVD'", + EPS=SIMP(statut='f',typ='R',defaut=0. ), + ), + REGUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","NORM_MIN","TIK_RELA",) ), + b_regul =BLOC(condition="REGUL!='NON'", + regles=(PRESENT_ABSENT('COEF_PONDER','COEF_PONDER_F', ),), + COEF_PONDER =SIMP(statut='f',typ='R',defaut=0. ,max='**' ), + COEF_PONDER_F =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ), + ), + ), + ) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET + + +def macro_matr_ajou_prod(self,MATR_AMOR_AJOU,MATR_MASS_AJOU,MATR_RIGI_AJOU,FORC_AJOU,**args): + self.type_sdprod(MATR_AMOR_AJOU,matr_asse_gene_r) + self.type_sdprod(MATR_MASS_AJOU,matr_asse_gene_r) + self.type_sdprod(MATR_RIGI_AJOU,matr_asse_gene_r) + if FORC_AJOU != None: + for m in FORC_AJOU: + self.type_sdprod(m['VECTEUR'],vect_asse_gene) + + return None + +MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU", + op=OPS('Macro.macro_matr_ajou_ops.macro_matr_ajou_ops'), + sd_prod=macro_matr_ajou_prod, + UIinfo={"groupes":("Résolution","Matrices et vecteurs",)}, + fr="Calculer de facon plus condensée qu'avec CALC_MATR_AJOU des " \ + "matrices de masse, d'amortissement ou de rigidité ajoutés", + regles=(AU_MOINS_UN('MODE_MECA','DEPL_IMPO','MODELE_GENE'), + AU_MOINS_UN('MATR_MASS_AJOU','MATR_AMOR_AJOU','MATR_RIGI_AJOU'), + EXCLUS('MODE_MECA','DEPL_IMPO','MODELE_GENE'), + EXCLUS('MONO_APPUI','MODE_STAT',), + ), + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster), + GROUP_MA_FLUIDE =SIMP(statut='o',typ=grma), + GROUP_MA_INTERF =SIMP(statut='o',typ=grma), + MODELISATION =SIMP(statut='o',typ='TXM',into=("PLAN","AXIS","3D")), + FLUIDE =FACT(statut='o',max='**', + RHO =SIMP(statut='o',typ='R'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), + GROUP_MA =SIMP(statut='f',typ=grma), + MAILLE =SIMP(statut='f',typ=ma), + ), + DDL_IMPO =FACT(statut='o',max='**', + regles=(UN_PARMI('NOEUD','GROUP_NO'), + UN_PARMI('PRES_FLUIDE','PRES_SORTIE'),), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + PRES_FLUIDE =SIMP(statut='f',typ='R'), + PRES_SORTIE =SIMP(statut='f',typ='R'), + ), + ECOULEMENT =FACT(statut='f', + GROUP_MA_1 =SIMP(statut='o',typ=grma), + GROUP_MA_2 =SIMP(statut='o',typ=grma), + VNOR_1 =SIMP(statut='o',typ='R'), + VNOR_2 =SIMP(statut='f',typ='R'), + POTENTIEL =SIMP(statut='f',typ=evol_ther), + ), + MODE_MECA =SIMP(statut='f',typ=mode_meca), + DEPL_IMPO =SIMP(statut='f',typ=cham_no_sdaster), + MODELE_GENE =SIMP(statut='f',typ=modele_gene), + NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene), + DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.0E-2), + MATR_MASS_AJOU =SIMP(statut='f',typ=CO,), + MATR_RIGI_AJOU =SIMP(statut='f',typ=CO,), + MATR_AMOR_AJOU =SIMP(statut='f',typ=CO,), + MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",),), + MODE_STAT =SIMP(statut='f',typ=mode_meca,), + FORC_AJOU =FACT(statut='f',max='**', + DIRECTION =SIMP(statut='o',typ='R',max=3), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + VECTEUR =SIMP(statut='o',typ=CO), + ), +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('MACRO_MATR_AJOU'), +#------------------------------------------------------------------- + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), +) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + + +def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args): + if not MATR_ASSE: raise AsException("Impossible de typer les concepts resultats") + if not NUME_DDL : raise AsException("Impossible de typer les concepts resultats") + if isinstance(NUME_DDL,CO) : + self.type_sdprod(NUME_DDL,nume_ddl_sdaster) + else: + self.type_sdprod(NUME_DDL,NUME_DDL.__class__) + for m in MATR_ASSE: + opti=m['OPTION'] + + if opti in ( "RIGI_MECA","RIGI_FLUI_STRU","RIGI_MECA_LAGR" , + "MASS_MECA" , "MASS_FLUI_STRU" ,"RIGI_GEOM" ,"RIGI_ROTA", + "AMOR_MECA","IMPE_MECA", + "ONDE_FLUI","MASS_MECA_DIAG","MECA_GYRO" ) : t=matr_asse_depl_r + + if opti in ( "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",) : t=matr_asse_pres_c + + if opti in ( "RIGI_THER","MASS_THER","RIGI_THER_CONV" , + "RIGI_THER_CONV_D",) : t=matr_asse_temp_r + + if opti == "RIGI_MECA_HYST" : t= matr_asse_depl_c + + self.type_sdprod(m['MATRICE'],t) + return None + +MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE", + op=OPS('Macro.macro_matr_asse_ops.macro_matr_asse_ops'), + UIinfo={"groupes":("Matrices et vecteurs",)}, + sd_prod=macro_matr_asse_prod, + fr="Calcul des matrices assemblées (rigidité, masse, amortissement,...) ", + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + INST =SIMP(statut='f',typ='R',defaut=0.), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**'), + CHAR_CINE =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ), + NUME_DDL =SIMP(statut='o',typ=(nume_ddl_sdaster,CO)), + SOLVEUR =FACT(statut='d', + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ), + b_mult_front =BLOC(condition="METHODE=='MULT_FRONT'",fr="Paramètres associés à la méthode multifrontale", + RENUM =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ), + ), + b_ldlt =BLOC(condition="METHODE=='LDLT'",fr="Paramètres associés à la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), + ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), + ), + b_gcpc =BLOC(condition="METHODE=='GCPC'",fr="Paramètres associés à la méthode gradient conjugué", + RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), + ), + b_petsc =BLOC(condition = "METHODE == 'PETSC'",fr="Paramètres de la méthode PETSC", + RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ), + ), + ), + + MATR_ASSE =FACT(statut='o',max='**', + MATRICE =SIMP(statut='o',typ=CO), + OPTION =SIMP(statut='o',typ='TXM', + into=("RIGI_MECA","MASS_MECA","MASS_MECA_DIAG", + "AMOR_MECA","RIGI_MECA_HYST","IMPE_MECA", + "ONDE_FLUI","RIGI_FLUI_STRU","MASS_FLUI_STRU", + "RIGI_ROTA","RIGI_GEOM","RIGI_MECA_LAGR","MECA_GYRO", + "RIGI_THER","MASS_THER", + "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",) + ), + + b_rigi_meca = BLOC( condition = "OPTION=='RIGI_MECA'", + MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0), + ), + + b_rigi_geom = BLOC( condition = "OPTION=='RIGI_GEOM'", + SIEF_ELGA =SIMP(statut='o',typ=cham_elem), + MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0), + ), + + b_rigi_meca_lagr = BLOC( condition = "OPTION=='RIGI_MECA_LAGR'", + THETA =SIMP(statut='o',typ=theta_geom), + PROPAGATION =SIMP(statut='f',typ='R'), + ), + + b_rigi_ther = BLOC( condition = "OPTION=='RIGI_THER'", + MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0), + ), + + ), # fin MATR_ASSE + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA + + +MACRO_MISS_3D=MACRO(nom="MACRO_MISS_3D", + op=OPS('Macro.macro_miss_3d_ops.macro_miss_3d_ops'), + fr="Préparation des données puis exécution du logiciel MISS3D", + UIinfo={"groupes":("Résolution","Outils-métier",)}, + OPTION =FACT(statut='o', + regles=(UN_PARMI('TOUT','MODULE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), + MODULE =SIMP(statut='f',typ='TXM',into=("PRE_MISS","MISS_EVOL","MISS_IMPE")), + ), + PROJET =SIMP(statut='o',typ='TXM'), + REPERTOIRE =SIMP(statut='f',typ='TXM'), + VERSION =SIMP(statut='f',typ='TXM',into=("V1_3","V1_4","V1_5",),defaut="V1_4"), + UNITE_IMPR_ASTER=SIMP(statut='f',typ='I',defaut=25), + UNITE_OPTI_MISS =SIMP(statut='f',typ='I',defaut=26), + UNITE_MODELE_SOL=SIMP(statut='f',typ='I',defaut=27), + TABLE_SOL =SIMP(statut='f',typ=table_sdaster, fr="Caractéristiques du sol"), + UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30), + UNITE_RESU_FORC =SIMP(statut='f',typ='I',defaut=0), + PARAMETRE =FACT(statut='f', + regles=(PRESENT_PRESENT('FREQ_MIN','FREQ_MAX','FREQ_PAS'), + PRESENT_PRESENT('CONTR_NB','CONTR_LISTE'), + PRESENT_PRESENT('LFREQ_NB','LFREQ_LISTE'), + PRESENT_PRESENT('OFFSET_MAX','OFFSET_NB'), + PRESENT_PRESENT('SPEC_MAX','SPEC_NB'),), + FREQ_MIN =SIMP(statut='f',typ='R'), + FREQ_MAX =SIMP(statut='f',typ='R'), + FREQ_PAS =SIMP(statut='f',typ='R'), + Z0 =SIMP(statut='f',typ='R'), + SURF =SIMP(statut='f',typ='TXM',into=("OUI","NON",),defaut="NON"), + RFIC =SIMP(statut='f',typ='R'), + FICH_RESU_IMPE =SIMP(statut='f',typ='TXM'), + FICH_RESU_FORC =SIMP(statut='f',typ='TXM'), + TYPE =SIMP(statut='f',typ='TXM',into=("BINAIRE","ASCII",),defaut="ASCII"), + DREF =SIMP(statut='f',typ='R'), + ALGO =SIMP(statut='f',typ='TXM',into=("DEPL","REGU")), + OFFSET_MAX =SIMP(statut='f',typ='R'), + OFFSET_NB =SIMP(statut='f',typ='I'), + SPEC_MAX =SIMP(statut='f',typ='R'), + SPEC_NB =SIMP(statut='f',typ='I'), + ISSF =SIMP(statut='f',typ='TXM',into=("OUI","NON",),defaut="NON"), + FICH_POST_TRAI =SIMP(statut='f',typ='TXM'), + CONTR_NB =SIMP(statut='f',typ='I'), + CONTR_LISTE =SIMP(statut='f',typ='R',max='**'), + LFREQ_NB =SIMP(statut='f',typ='I'), + LFREQ_LISTE =SIMP(statut='f',typ='R',max='**'), + DIRE_ONDE =SIMP(statut='f',typ='R',max='**'), + ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE NISTOR I.NISTOR + + +MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA", + op=OPS('Macro.macro_mode_meca_ops.macro_mode_meca_ops'), + sd_prod=mode_meca, + reentrant='n',fr="Lancer une succession de calculs de modes propres réels", + UIinfo={"groupes":("Résolution","Dynamique",)}, + MATR_A =SIMP(statut='o',typ=matr_asse_depl_r ), + MATR_B =SIMP(statut='o',typ=matr_asse_depl_r ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), +# ce mot cle ne devrait il pas etre dans calc_freq + METHODE =SIMP(statut='f',typ='TXM',defaut="SORENSEN", + into=("TRI_DIAG","JACOBI","SORENSEN",) ), + b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'", + PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ), + NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ), + NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), + ), + b_jacobi =BLOC(condition = "METHODE == 'JACOBI'", + PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ), + NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ), + PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ), + ), + b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'", + PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ), + NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ), + PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ), + ), + OPTION =SIMP(statut='f',typ='TXM',defaut="SANS", + into=("MODE_RIGIDE","SANS") ), + CALC_FREQ =FACT(statut='d',min=0, + regles=(UN_PARMI('FREQ','FREQ_MAX'), + PRESENT_PRESENT('FREQ_MIN','FREQ_MAX'), + PRESENT_PRESENT('FREQ_MAX','NB_BLOC_FREQ'), + EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),), + FREQ =SIMP(statut='f',typ='R',min=2,validators=NoRepeat(),max='**', ), + FREQ_MIN =SIMP(statut='f',typ='R' ), + FREQ_MAX =SIMP(statut='f',typ='R' ), + NB_BLOC_FREQ =SIMP(statut='f',typ='I' ), + DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), + COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), + NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5 ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2 ), + SEUIL_FREQ =SIMP(statut='f',typ='R' ,defaut= 1.E-2 ), + STOP_FREQ_VIDE =SIMP(statut='f',typ='TXM',defaut="NON" ,into=("OUI","NON") ), + ), + VERI_MODE =FACT(statut='d',min=0, + STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-3 ), + STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + NORM_MODE =FACT(statut='o',max='**', + NORME =SIMP(statut='f',typ='TXM',defaut="TRAN_ROTA", + into=("MASS_GENE","RIGI_GENE","EUCL", + "EUCL_TRAN","TRAN","TRAN_ROTA") ), + INFO =SIMP(statut='f',typ='I',defaut= 1 ,into=(1,2) ), + ), + FILTRE_MODE =FACT(statut='f', + CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN", + into=("MASS_EFFE_UN","MASS_GENE") ), + SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + ), + IMPRESSION =FACT(statut='d', + TOUT_PARA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + CUMUL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN", + into=("MASS_EFFE_UN","MASS_GENE",) ), + ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BOYERE E.BOYERE + + +def macro_proj_base_prod(self,MATR_ASSE_GENE,VECT_ASSE_GENE,STOCKAGE,**args ): + if MATR_ASSE_GENE != None: + for m in MATR_ASSE_GENE: + self.type_sdprod(m['MATRICE'],matr_asse_gene_r) + if VECT_ASSE_GENE != None: + for v in VECT_ASSE_GENE: + self.type_sdprod(v['VECTEUR'],vect_asse_gene) + return None + +MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE", + op=OPS('Macro.macro_proj_base_ops.macro_proj_base_ops'), + regles=(AU_MOINS_UN('MATR_ASSE_GENE','VECT_ASSE_GENE')), + UIinfo={"groupes":("Matrices et vecteurs","Dynamique",)}, + sd_prod=macro_proj_base_prod, + fr="Projection des matrices et/ou vecteurs assemblés sur une base (modale ou de RITZ)", + BASE =SIMP(statut='o',typ=(mode_meca,mode_gene) ), + NB_VECT =SIMP(statut='f',typ='I',defaut= 9999), + STOCKAGE =SIMP(statut='f',typ='TXM',defaut="PLEIN",into=("PLEIN","DIAG") ), + MATR_ASSE_GENE =FACT(statut='f',max='**', + MATRICE =SIMP(statut='o',typ=CO,), + regles=(UN_PARMI('MATR_ASSE','MATR_ASSE_GENE',),), + MATR_ASSE =SIMP(statut='f',typ=matr_asse_depl_r), + MATR_ASSE_GENE =SIMP(statut='f',typ=matr_asse_gene_r), + ), + VECT_ASSE_GENE =FACT(statut='f',max='**', + VECTEUR =SIMP(statut='o',typ=CO,), + regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE',),), + TYPE_VECT =SIMP(statut='f',typ='TXM',defaut="FORC"), + VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster), + VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 01/03/2011 AUTEUR LEFEBVRE J-P.LEFEBVRE +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +# +MAJ_CATA=PROC(nom="MAJ_CATA",op=20, + UIinfo={"groupes":("Gestion du travail",)}, + fr="Compilation des catalogues d'éléments et couverture des calculs élémentaires", + regles=(UN_PARMI('ELEMENT','TYPE_ELEM', ),), + + ELEMENT =FACT(statut='f',), + + UNITE =SIMP(statut='f',typ='I',defaut=8), + TYPE_ELEM =FACT(statut='f',), +); +#& MODIF COMMANDE DATE 19/05/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas, + fr="Résoudre un problème de mécanique statique linéaire",reentrant='f', + UIinfo={"groupes":("Résolution","Mécanique",)}, + regles=(EXCLUS("INST","LIST_INST"), + AU_MOINS_UN('CHAM_MATER','CARA_ELEM',), + CONCEPT_SENSIBLE('ENSEMBLE'),), + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater, + fr="le CHAM_MATER est nécessaire, sauf si le modèle ne contient que des éléments discrets (modélisations DIS_XXX)", + ang="CHAM_MATER is compulsory, except if the model contains only discret elements (modelizations DIS_XXX)"), + CARA_ELEM =SIMP(statut='f',typ=cara_elem, + fr="le CARA_ELEM est nécessaire dès que le modèle contient des éléments de structure : coques, poutres, ...", + ang="CARA_ELEM is compulsory as soon as the model contains structural elements : plates, beams, ..."), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + EXCIT =FACT(statut='o',max='**', + CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ), + ), + INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + INST_FIN =SIMP(statut='f',typ='R'), + OPTION =SIMP(statut='f',typ='TXM',into=("SIEF_ELGA","SANS"),defaut="SIEF_ELGA",max=1, + fr="seule option : contraintes aux points de Gauss. Utiliser CALC_ELEM pour les autres.", + ), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('MECA_STATIQUE'), +#------------------------------------------------------------------- + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE BODEL C.BODEL +MODE_ITER_CYCL=OPER(nom="MODE_ITER_CYCL",op= 80,sd_prod=mode_cycl, + fr="Calcul des modes propres d'une structure à répétitivité cyclique à partir" + +" d'une base de modes propres réels", + reentrant='n', + UIinfo={"groupes":("Résolution","Dynamique",)}, + BASE_MODALE =SIMP(statut='o',typ=mode_meca ), + NB_MODE =SIMP(statut='f',typ='I',defaut= 999 ), + NB_SECTEUR =SIMP(statut='o',typ='I' ), + LIAISON =FACT(statut='o', + DROITE =SIMP(statut='o',typ='TXM' ), + GAUCHE =SIMP(statut='o',typ='TXM' ), + AXE =SIMP(statut='f',typ='TXM' ), + ), + VERI_CYCL =FACT(statut='f', + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF",) ), + DIST_REFE =SIMP(statut='f',typ='R' ), + ), + CALCUL =FACT(statut='o', + regles=(UN_PARMI('TOUT_DIAM','NB_DIAM'),), + TOUT_DIAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NB_DIAM =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE" + ,into=("PLUS_PETITE","CENTRE","BANDE") ), + b_centre =BLOC(condition = "OPTION == 'CENTRE'", + FREQ =SIMP(statut='o',typ='R',), + ), + b_bande =BLOC(condition = "OPTION == 'BANDE'", + FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2), + ), +# NMAX_FREQ n a-t-il pas un sens qu avec OPTION CENTRE + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10 ), + PREC_SEPARE =SIMP(statut='f',typ='R',defaut= 100. ), + PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-6 ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= 50 ), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 19/05/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE O.BOITEAU + +def mode_iter_inv_prod(MATR_A,MATR_C,TYPE_RESU,**args ): + if TYPE_RESU == "MODE_FLAMB" : return mode_flamb + if AsType(MATR_C) == matr_asse_depl_r : return mode_meca_c + if AsType(MATR_A) == matr_asse_depl_r : return mode_meca + if AsType(MATR_A) == matr_asse_pres_r : return mode_acou + if AsType(MATR_A) == matr_asse_gene_r : return mode_gene + raise AsException("type de concept resultat non prevu") + +MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op= 44,sd_prod=mode_iter_inv_prod + ,fr="Calcul des modes propres par itérations inverses ; valeurs propres et modes réels ou complexes", + reentrant='n', + UIinfo={"groupes":("Résolution","Dynamique",)}, + regles=(CONCEPT_SENSIBLE('ENSEMBLE'),), + MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ), + MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ), + MATR_C =SIMP(statut='f',typ=matr_asse_depl_r ), + TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE", + into=("MODE_FLAMB","DYNAMIQUE"),fr="Type d analyse" ), + b_dynam =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'", + CALC_FREQ =FACT(statut='o',fr="Choix des paramètres pour le calcul des valeurs propres", + + OPTION =SIMP(statut='f',typ='TXM',defaut="AJUSTE",into=("SEPARE","AJUSTE","PROCHE"), + fr="Choix de l option pour estimer les valeurs propres" ), + FREQ =SIMP(statut='o',typ='R',max='**'), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 0,val_min=0 ), + NMAX_ITER_SEPARE=SIMP(statut='f',typ='I' ,defaut= 30,val_min=0 ), + PREC_SEPARE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0 ), + NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15,val_min=0 ), + PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0 ), + + NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0, ), + SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0, ), + ), + ), + b_flamb =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'", + CALC_FREQ =FACT(statut='o',fr="Choix des paramètres pour le calcul des valeurs propres", + + OPTION =SIMP(statut='f',typ='TXM',defaut="AJUSTE",into=("SEPARE","AJUSTE","PROCHE"), + fr="Choix de l option pour estimer les valeurs propres" ), + CHAR_CRIT =SIMP(statut='o',typ='R',validators=NoRepeat(),max='**' ), + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 0,val_min=0 ), + NMAX_ITER_SEPARE=SIMP(statut='f',typ='I' ,defaut= 30,val_min=0 ), + PREC_SEPARE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0, ), + NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15 ), + PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0, ), + + NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0, ), + SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0, ), + ), + ), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('MODE_ITER_INV'), +#------------------------------------------------------------------- + + CALC_MODE =FACT(statut='d',min=0,fr="Choix des paramètres pour le calcul des vecteurs propres", + OPTION =SIMP(statut='f',typ='TXM',defaut="DIRECT",into=("DIRECT","RAYLEIGH") ), + PREC =SIMP(statut='f',typ='R',defaut= 1.E-5,val_min=0.E+0,fr="Précision de convergence" ), + NMAX_ITER =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), + ), + VERI_MODE =FACT(statut='d',min=0, + STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0, + fr="Valeur limite admise pour l ereur a posteriori des modes" ), + ), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des param\350tres de sensibilit\351.", + ang="List of sensitivity parameters", + ), + b_sensibilite =BLOC(condition = "SENSIBILITE != None", + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + EXCIT =FACT(statut='f',max='**',), # que pour NMDOME + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), +) ; +#& MODIF COMMANDE DATE 19/05/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE O.BOITEAU + +def mode_iter_simult_prod(MATR_A,MATR_C,TYPE_RESU,**args ): + if TYPE_RESU == "MODE_FLAMB" : return mode_flamb + if AsType(MATR_C) == matr_asse_depl_r : return mode_meca_c + if AsType(MATR_A) == matr_asse_depl_r : return mode_meca + if AsType(MATR_A) == matr_asse_depl_c : return mode_meca_c + if AsType(MATR_A) == matr_asse_pres_r : return mode_acou + if AsType(MATR_A) == matr_asse_gene_r : return mode_gene + if AsType(MATR_A) == matr_asse_gene_c : return mode_gene + + raise AsException("type de concept resultat non prevu") + +MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_prod, + fr="Calcul des modes propres par itérations simultanées ; valeurs propres et" + +" modes propres réels ou complexes", + reentrant='n', + UIinfo={"groupes":("Résolution","Dynamique",)}, + regles=(CONCEPT_SENSIBLE('ENSEMBLE'),), + MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c, + matr_asse_gene_r,matr_asse_gene_c,matr_asse_pres_r ) ), + MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ), + MATR_C =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ), + METHODE =SIMP(statut='f',typ='TXM',defaut="SORENSEN", + into=("TRI_DIAG","JACOBI","SORENSEN","QZ") ), + b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'", + PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ), + NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ), + NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), + ), + b_jacobi =BLOC(condition = "METHODE == 'JACOBI'", + PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ), + NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ), + PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ), + ), + b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'", + PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ), + NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ), + PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ), + ), + b_qz =BLOC(condition = "METHODE == 'QZ'", + TYPE_QZ =SIMP(statut='f',typ='TXM',defaut="QZ_SIMPLE",into=("QZ_QR","QZ_SIMPLE","QZ_EQUI") ), + ), + TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE", + into=("MODE_FLAMB","DYNAMIQUE"), + fr="Type d analyse" ), + OPTION =SIMP(statut='f',typ='TXM',defaut="SANS",into=("MODE_RIGIDE","SANS"), + fr="Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG" ), + + b_flamb =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'", + CALC_FREQ =FACT(statut='d',min=0, + OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE","TOUT"), + fr="Choix de l option et par conséquent du shift du problème modal" ), + b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres", + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_centre =BLOC(condition = "OPTION == 'CENTRE'", + fr="Recherche des valeurs propres les plus proches d une valeur donnée", + CHAR_CRIT =SIMP(statut='o',typ='R', + fr="Charge critique autour de laquelle on cherche les charges critiques propres"), + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_bande =BLOC(condition = "(OPTION == 'BANDE')", + fr="Recherche des valeurs propres dans une bande donnée", + CHAR_CRIT =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2, + fr="Valeur des deux charges critiques délimitant la bande de recherche"), + ), + APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG"), + fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ), + regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),), + DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), + COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), + NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ), + SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + ), + ), + + b_dynam =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'", + CALC_FREQ =FACT(statut='d',min=0, + OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE","TOUT"), + fr="Choix de l option et par conséquent du shift du problème modal" ), + b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres", + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_centre =BLOC(condition = "OPTION == 'CENTRE'", + fr="Recherche des valeurs propres les plus proches d une valeur donnée", + FREQ =SIMP(statut='o',typ='R', + fr="Fréquence autour de laquelle on cherche les fréquences propres"), + AMOR_REDUIT =SIMP(statut='f',typ='R',), + NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ), + ), + b_bande =BLOC(condition = "(OPTION == 'BANDE')", + fr="Recherche des valeurs propres dans une bande donnée", + FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2, + fr="Valeur des deux fréquences délimitant la bande de recherche"), + ), + APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"), + fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ), + regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),), + DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), + COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), + NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ), + SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + ), + ), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('MODE_ITER_SIMULT'), +#------------------------------------------------------------------- + + VERI_MODE =FACT(statut='d',min=0, + STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-3,val_min=0.E+0 ), + SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0, + fr="Valeur limite admise pour l ereur a posteriori des modes" ), + STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des param\350tres de sensibilit\351.", + ang="List of sensitivity parameters", + ), + b_sensibilite =BLOC(condition = "SENSIBILITE != None", + CHAM_MATER =SIMP(statut='f',typ=cham_mater ), + CARA_ELEM =SIMP(statut='f',typ=cara_elem ), + EXCIT =FACT(statut='f',max='**',), # que pour NMDOME + ), + STOP_FREQ_VIDE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 19/05/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE NISTOR I.NISTOR + +MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca, + fr="Calcul de déformées statiques pour un déplacement, une force ou une accélération unitaire imposé", + reentrant='n', + UIinfo={"groupes":("Résolution","Dynamique",)}, + + regles=(UN_PARMI('MODE_STAT','FORCE_NODALE','PSEUDO_MODE','MODE_INTERF'), + PRESENT_PRESENT('MODE_INTERF','MATR_MASS'), + PRESENT_PRESENT('PSEUDO_MODE','MATR_MASS'), + ), + + + MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r ), + MATR_MASS =SIMP(statut='f',typ=matr_asse_depl_r ), + + + + MODE_STAT =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'), + UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ,), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,max='**'), + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ,), + AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'), + SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), + ), + FORCE_NODALE =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'), + UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), ), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,max='**'), + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",), ), + AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'), + SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), + ), + PSEUDO_MODE =FACT(statut='f',max='**', + regles=(UN_PARMI('AXE','DIRECTION','TOUT','NOEUD','GROUP_NO' ),), + AXE =SIMP(statut='f',typ='TXM',into=("X","Y","Z"),max=3), + DIRECTION =SIMP(statut='f',typ='R',min=3,max=3), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,max='**'), + b_dir =BLOC(condition = "DIRECTION != None", + NOM_DIR =SIMP(statut='f',typ='TXM' ),), + b_cmp =BLOC(condition="TOUT!= None or NOEUD!=None or GROUP_NO!=None", + regles=(UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),), + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ), + AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'), + SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), + ), + ), + MODE_INTERF =FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'), + UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), ), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,max='**'), + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ), + AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'), + SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), + NBMOD =SIMP(statut='o',typ='I',defaut= 1), + FREQ =SIMP(statut='o',typ='R',defaut= 1.0), + + ), + +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('MODE_STATIQUE'), +#------------------------------------------------------------------- + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ADOBES A.ADOBES +MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca, + reentrant='f', + fr="Définir la base modale d'une structure sous écoulement", + UIinfo={"groupes":("Matrices et vecteurs",)}, +# la commande modi_base _modale : reentrant = f ou o + regles=(EXCLUS('AMOR_UNIF','AMOR_REDUIT', ),), + BASE =SIMP(statut='o',typ=mode_meca ), + BASE_ELAS_FLUI =SIMP(statut='o',typ=melasflu_sdaster ), + NUME_VITE_FLUI =SIMP(statut='o',typ='I' ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), + AMOR_UNIF =SIMP(statut='f',typ='R' ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 14/02/2011 AUTEUR GREFFET N.GREFFET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# RECUPERATION DES EFFORTS VIA YACS POUR COUPLAGE IFS +# +MODI_CHAR_YACS=OPER(nom = "MODI_CHAR_YACS", + op = 112, + sd_prod = char_meca, + reentrant = 'o', + UIinfo = {"groupes":("Résultats et champs",)}, + fr = "Reception des forces nodales via YACS lors du couplage de Code_Aster et Saturne", + CHAR_MECA = SIMP(statut ='o', typ = char_meca), + MATR_PROJECTION = SIMP(statut ='o', typ = corresp_2_mailla,), + NOM_CMP_IFS = SIMP(statut ='o', typ = 'TXM',validators = NoRepeat(), max = '**'), + VIS_A_VIS = FACT(statut ='o', max = '**', + GROUP_MA_1 = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO_2 = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**'),), + INST = SIMP(statut='o',typ='R', ), + PAS = SIMP(statut='o',typ='R', ), + NUME_ORDRE_YACS = SIMP(statut='o', typ='I',), + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +); +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster, + fr="Effectuer des modifications sur un maillage existant: réorienter des mailles servant," + +" à l'application d'une pression, à la modélisation du contact,...", + reentrant='o', + UIinfo={"groupes":("Maillage",)}, + regles=(AU_MOINS_UN('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE', + 'TRANSLATION','ROTATION','MODI_BASE','ECHELLE','ORIE_SHB','SYMETRIE', + 'ORIE_LIGNE',), + PRESENT_ABSENT('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE', + 'ORIE_LIGNE'), + PRESENT_ABSENT('DEFORME','ORIE_FISSURE','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE', + 'ORIE_LIGNE'), + PRESENT_ABSENT('EQUE_PIQUA','ORIE_FISSURE','DEFORME','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE', + 'ORIE_LIGNE'), + PRESENT_ABSENT('ORIE_PEAU_2D','ORIE_FISSURE','DEFORME','EQUE_PIQUA', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE', + 'ORIE_LIGNE'), + PRESENT_ABSENT('ORIE_PEAU_3D','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'PLAQ_TUBE','MODI_MAILLE',), + PRESENT_ABSENT('ORIE_NORM_COQUE','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'PLAQ_TUBE','MODI_MAILLE','ORIE_LIGNE'), + PRESENT_ABSENT('PLAQ_TUBE','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','MODI_MAILLE','ORIE_LIGNE'), + PRESENT_ABSENT('MODI_MAILLE','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','ORIE_LIGNE'), + EXCLUS('EQUE_PIQUA','PLAQ_TUBE'), + EXCLUS('EQUE_PIQUA','TUBE_COUDE'), + EXCLUS('ROTATION','MODI_BASE'), + EXCLUS('SYMETRIE','ROTATION'), + EXCLUS('SYMETRIE','TRANSLATION'), + EXCLUS('SYMETRIE','MODI_BASE'), + EXCLUS('SYMETRIE','ECHELLE'), + ), + MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ), + + ORIE_FISSURE =FACT(statut='f', + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + ), + + DEFORME =FACT(statut='f', + OPTION =SIMP(statut='o',typ='TXM',into=("TRAN","TRAN_APPUI") ), + DEPL =SIMP(statut='o',typ=cham_no_sdaster ), + b_deform =BLOC(condition = "OPTION=='TRAN_APPUI'", + GROUP_NO_APPUI = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ), + GROUP_NO_STRU = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),), + ), + + EQUE_PIQUA =FACT(statut='f', + GROUP_NO =SIMP(statut='o',typ=grno), + E_BASE =SIMP(statut='o',typ='R' ), + DEXT_BASE =SIMP(statut='o',typ='R' ), + L_BASE =SIMP(statut='o',typ='R' ), + L_CHANF =SIMP(statut='o',typ='R' ), + TYPE =SIMP(statut='o',typ='TXM',into=("TYPE_1","TYPE_2")), + H_SOUD =SIMP(statut='o',typ='R' ), + ANGL_SOUD =SIMP(statut='o',typ='R' ), + JEU_SOUD =SIMP(statut='o',typ='R' ), + E_CORP =SIMP(statut='o',typ='R' ), + DEXT_CORP =SIMP(statut='o',typ='R' ), + AZIMUT =SIMP(statut='o',typ='R' ), + RAFF_MAIL =SIMP(statut='o',typ='TXM' ), + X_MAX =SIMP(statut='o',typ='R' ), + ), + ORIE_PEAU_2D =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + GROUP_MA_SURF =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + ORIE_PEAU_3D =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + GROUP_MA_VOLU =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + ORIE_SHB =FACT(statut='f',max=1, + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + ), + ORIE_NORM_COQUE =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + VECT_NORM =SIMP(statut='f',typ='R',max=3), + b_vect_norm =BLOC(condition = "VECT_NORM != None", + regles=UN_PARMI('NOEUD','GROUP_NO'), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + ), + ), + ORIE_LIGNE =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + VECT_TANG =SIMP(statut='f',typ='R',max=3), + b_vect_tang =BLOC(condition = "VECT_TANG != None", + regles=UN_PARMI('NOEUD','GROUP_NO'), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + ), + ), + PLAQ_TUBE =FACT(statut='f', + DEXT =SIMP(statut='o',typ='R' ), + EPAIS =SIMP(statut='o',typ='R' ), + L_TUBE_P1 =SIMP(statut='o',typ='R' ), + AZIMUT =SIMP(statut='f',typ='R',defaut= 90. ), + COUTURE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ), + ), + TUBE_COUDE =FACT(statut='f', + ANGLE =SIMP(statut='o',typ='R' ), + R_CINTR =SIMP(statut='o',typ='R' ), + L_TUBE_P1 =SIMP(statut='o',typ='R' ), + ), + MODI_MAILLE =FACT(statut='f',max=1, + regles=(AU_MOINS_UN('GROUP_MA_FOND','MAILLE_FOND','GROUP_NO_FOND','NOEUD_FOND'),), + OPTION =SIMP(statut='o',typ='TXM',into=("NOEUD_QUART",) ), + GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1), + MAILLE_FOND =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max=1), + GROUP_NO_FOND =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1), + NOEUD_FOND =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1), + ), + MODI_BASE =FACT(statut='f', + VECT_X =SIMP(statut='o',typ='R',min=2,max=3), + VECT_Y =SIMP(statut='f',typ='R',min=2,max=3), + ), + ECHELLE =SIMP(statut='f',typ='R',), + TRANSLATION =SIMP(statut='f',typ='R',min=2,max=3), + ROTATION =FACT(statut='f',max='**', + POIN_1 =SIMP(statut='o',typ='R',min=2,max=3), + ANGL =SIMP(statut='o',typ='R',defaut= 0.E+0 ), + regles=(EXCLUS('DIR','POIN_2'),), + POIN_2 =SIMP(statut='f',typ='R',min=2,max=3), + DIR =SIMP(statut='f',typ='R',min=2,max=3), + ), + SYMETRIE =FACT(statut='f',max='**', + fr = "Symétrie du maillage par rapport à un plan en 3D ou à une droite en 2D.", + POINT =SIMP(statut='o',typ='R',min=2,max=3, + fr="Point appartenant à la droite ou au plan."), + AXE_1 =SIMP(statut='o',typ='R',min=2,max=3, + fr="Vecteur directeur de la droite ou 1er vecteur appartenant au plan."), + AXE_2 =SIMP(statut='f',typ='R',min=3,max=3, + fr="2nd vecteur appartenant du plan."), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + +MODI_MODELE=OPER(nom="MODI_MODELE",op= 103,sd_prod=modele_sdaster,reentrant='o', + UIinfo={"groupes":("Modélisation",)}, + fr="Modifier la partition d'un modèle (parallélisme) ", + + MODELE =SIMP(statut='o',typ=modele_sdaster,min=1,max=1,), + + PARTITION =FACT(statut='d', + PARALLELISME =SIMP(statut='f',typ='TXM',defaut="GROUP_ELEM", + into=("MAIL_CONTIGU","MAIL_DISPERSE","SOUS_DOMAINE","CENTRALISE","GROUP_ELEM")), + b_dist_maille =BLOC(condition = "PARALLELISME in ('MAIL_DISPERSE','MAIL_CONTIGU')", + CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,val_min=0), + ), + b_dist_sd =BLOC(condition = "PARALLELISME == 'SOUS_DOMAINE'", + PARTITION =SIMP(statut='o',typ=sd_feti_sdaster), + CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,val_min=0), + ), + ), +) ; +#& MODIF COMMANDE DATE 27/06/2011 AUTEUR MASSIN P.MASSIN +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT + +MODI_MODELE_XFEM=OPER(nom="MODI_MODELE_XFEM",op= 113,sd_prod=modele_sdaster,docu="U4.44.12-e",reentrant='f', + UIinfo={"groupes":("Modélisation","Rupture",)}, + fr="Engendrer ou enrichir une structure de donnees en affectant les cham_gd associes", + + MODELE_IN =SIMP(statut='o',typ=modele_sdaster,min=1,max=1,), + FISSURE =SIMP(statut='o',typ=fiss_xfem,min=1,max='**',), + CRITERE =SIMP(statut='f',typ='R',defaut=1.1E-9), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,)), + CONTACT + =SIMP(statut='f',typ='TXM',defaut='SANS',into=("P1P1","P1P1A","P2P1","SANS"),min=1,max=1,), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE KHAM M.KHAM +MODI_OBSTACLE=OPER(nom="MODI_OBSTACLE",op=182,sd_prod=table_fonction, + fr="Calculer les obstacles dans les systèmes guidage-tube après usure", + reentrant='f', + UIinfo={"groupes":("Modélisation",)}, + regles=(PRESENT_ABSENT('R_MOBILE','CRAYON'), + PRESENT_PRESENT('V_USUR_TUBE','V_USUR_OBST'),), + OBSTACLE =SIMP(statut='f',typ=table_fonction), + GUIDE =SIMP(statut='o',typ=table_sdaster), + CRAYON =SIMP(statut='f',typ=table_sdaster), + TABL_USURE =SIMP(statut='f',typ=table_sdaster), + INST =SIMP(statut='f',typ='R'), + R_MOBILE =SIMP(statut='f',typ='R'), + PERCEMENT =SIMP(statut='f',typ='R',defaut=1), + V_USUR_TUBE =SIMP(statut='f',typ='R',max='**'), + V_USUR_OBST =SIMP(statut='f',typ='R',max='**'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 23/08/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +def modi_repere_prod(RESULTAT,**args): + if AsType(RESULTAT) != None : return AsType(RESULTAT) + +MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,reentrant='n', + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + fr="Calcule des résultats dans le repère cylindrique", + RESULTAT =SIMP(statut='o',typ=resultat_sdaster), + + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_INST','LIST_FREQ','NOM_CAS'),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM' ), + + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + + MODI_CHAM =FACT(statut='o',max='**', + TYPE_CHAM =SIMP(statut='o',typ='TXM', + into=("VECT_2D","VECT_3D","TORS_3D","TENS_2D","TENS_3D","COQUE_GENE"),), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()), + b_vect_2d =BLOC(condition = "TYPE_CHAM=='VECT_2D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=2,max=2 ),), + b_vect_3d =BLOC(condition = "TYPE_CHAM=='VECT_3D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=3,max=3 ),), + b_tors_3d =BLOC(condition = "TYPE_CHAM=='TORS_3D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=6,max=6 ),), + b_tens_2d =BLOC(condition = "TYPE_CHAM=='TENS_2D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=4,max=4 ),), + b_tens_3d =BLOC(condition = "TYPE_CHAM=='TENS_3D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=6,max=6 ),), + b_coque_gene =BLOC(condition = "TYPE_CHAM=='COQUE_GENE'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=8,max=8 ),), + ), + REPERE =SIMP(statut='f',typ='TXM',defaut="UTILISATEUR",position='global', + into=("UTILISATEUR","CYLINDRIQUE","COQUE"),), + AFFE =FACT(statut='o',max='**', + b_cyl =BLOC(condition = "REPERE == 'CYLINDRIQUE'", + ORIGINE =SIMP(statut='f',typ='R',min=2,max=3), + AXE_Z =SIMP(statut='f',typ='R',min=3,max=3),), + b_uti =BLOC(condition = "REPERE == 'UTILISATEUR'", + regles=(UN_PARMI('ANGL_NAUT','VECT_X'), + UN_PARMI('ANGL_NAUT','VECT_Y'), + ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + VECT_X =SIMP(statut='f',typ='R',min=3,max=3 ), + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3 ),), + b_coq =BLOC(condition = "REPERE == 'COQUE'", + regles=(UN_PARMI('ANGL_REP','VECTEUR'),), + ANGL_REP =SIMP(statut='f',typ='R',min=2,max=2), + VECTEUR =SIMP(statut='f',typ='R',min=3,max=3),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE NISTOR I.NISTOR + +def norm_mode_prod(MODE,**args ): + if AsType(MODE) == mode_meca : return mode_meca + if AsType(MODE) == mode_meca_c : return mode_meca_c + if AsType(MODE) == mode_flamb : return mode_flamb + raise AsException("type de concept resultat non prevu") + +NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod, + fr="Normer des modes propres en fonction d'un critère choisi par l'utilisateur", + reentrant='f', + UIinfo={"groupes":("Résolution","Dynamique",)}, + regles=(UN_PARMI('NORME','NOEUD','AVEC_CMP','SANS_CMP'), + CONCEPT_SENSIBLE('SEPARE'), + DERIVABLE('MODE'),), + MODE =SIMP(statut='o',typ=(mode_meca,mode_flamb) ), + NORME =SIMP(statut='f',typ='TXM',fr="Norme prédéfinie : masse généralisée, euclidienne,...", + into=("MASS_GENE","RIGI_GENE","EUCL","EUCL_TRAN","TRAN","TRAN_ROTA") ), + NOEUD =SIMP(statut='f',typ=no, fr="Composante donnée d un noeud spécifié égale à 1"), + b_noeud =BLOC(condition = "NOEUD != None", + NOM_CMP =SIMP(statut='o',typ='TXM' ), + ), + AVEC_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + SANS_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + MODE_SIGNE =FACT(statut='f',fr="Imposer un signe sur une des composantes des modes", + NOEUD =SIMP(statut='o',typ=no,fr="Noeud ou sera imposé le signe"), + NOM_CMP =SIMP(statut='o',typ='TXM',fr="Composante du noeud ou sera imposé le signe" ), + SIGNE =SIMP(statut='f',typ='TXM',defaut="POSITIF",into=("NEGATIF","POSITIF"), + fr="Choix du signe" ), + ), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des param\350tres de sensibilit\351.", + ang="List of sensitivity parameters", + ), +# b_base =BLOC(condition = "AsType(MODE) == base_modale", +# MASSE = SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ), ), +# RAIDE = SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ), ), +# AMOR = SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ), +# ), + MASSE = SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ), ), + RAIDE = SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ), ), + AMOR = SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), +) ; +#& MODIF COMMANDE DATE 18/01/2011 AUTEUR BOITEAU O.BOITEAU +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + fr="Etablissement de la numérotation des ddl avec ou sans renumérotation et du stockage de la matrice", + regles=(UN_PARMI('MATR_RIGI','MODELE'),), + MATR_RIGI =SIMP(statut='f',validators=NoRepeat(),max=100, + typ=(matr_elem_depl_r ,matr_elem_depl_c,matr_elem_temp_r ,matr_elem_pres_c) ), + MODELE =SIMP(statut='f',typ=modele_sdaster ), + b_modele =BLOC(condition = "MODELE != None", + CHARGE =SIMP(statut='f',validators=NoRepeat(),max='**',typ=(char_meca,char_ther,char_acou, ),), + ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","PETSC","MUMPS") ), + b_mult_front =BLOC(condition="METHODE=='MULT_FRONT'",fr="paramètres associés à la méthode multifrontale", + RENUM =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ), + ), + b_ldlt =BLOC(condition="METHODE=='LDLT'",fr="paramètres associés à la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), + ), + b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS", + RENUM =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","SCOTCH","AUTO")), + ), + b_gcpc =BLOC(condition="METHODE=='GCPC' or METHODE=='PETSC'",fr="paramètres associés à la GCPC ou PETSc", + RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), + ), + INFO =SIMP(statut='f',typ='I',into=(1,2)), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BODEL C.BODEL +NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene, + fr="Etablissement de la numérotation des ddl d'un modèle etabli en coordonnées généralisees", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=UN_PARMI('MODELE_GENE','BASE'), + MODELE_GENE =SIMP(statut='f',typ=modele_gene ), + b_modele_gene =BLOC(condition = "MODELE_GENE != None", + STOCKAGE =SIMP(statut='f',typ='TXM',defaut="LIGN_CIEL",into=("LIGN_CIEL","PLEIN") ), + METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("INITIAL","CLASSIQUE","ELIMINE") ), + ), + BASE =SIMP(statut='f',typ=(mode_meca,mode_gene ) ), + b_base =BLOC(condition = "BASE != None", + STOCKAGE =SIMP(statut='f',typ='TXM',defaut="PLEIN",into=("DIAG","PLEIN") ), + NB_VECT =SIMP(statut='f',typ='I',defaut= 9999 ), + ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BODEL C.BODEL + +def observation_prod(self, RESULTAT, **args): + if AsType(RESULTAT) == mode_meca : + return mode_meca + elif AsType(RESULTAT) == evol_elas : + return evol_elas + elif AsType(RESULTAT) == dyna_harmo : + return dyna_harmo + elif AsType(RESULTAT) == dyna_trans : + return dyna_trans + else : + return None + +OBSERVATION=MACRO(nom="OBSERVATION", + op=OPS('Macro.observation_ops.observation_ops'), + UIinfo={"groupes":("Matrices et vecteurs",)}, + sd_prod=observation_prod, + fr="Calcul de l'observabilite d'un champ aux noeuds ", +# + MODELE_1 =SIMP(statut='o',typ=modele_sdaster), + MODELE_2 =SIMP(statut='o',typ=modele_sdaster), + RESULTAT =SIMP(statut='o',typ=(mode_meca,evol_elas,dyna_harmo,dyna_trans,) ), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO(),), + +# ------------------------------------------------------------------ + + regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','FREQ','LIST_FREQ','NUME_MODE','INST','LIST_INST' ),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + +# ------------------------------------------------------------------ +# OPTIONS DE PROJ_CHAMP (SANS MC FACTEUR PARTICULIER) +# ------------------------------------------------------------------ + PROJECTION =SIMP(statut='f',max=1,typ='TXM',into=("OUI","NON"),defaut="OUI"), + CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ), + DISTANCE_MAX =SIMP(statut='f',typ='R', + fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."), + ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + + TYPE_CHAM =SIMP(statut='f',typ='TXM',into=("NOEU",), + fr="Pour forcer le type des champs projetés. NOEU -> cham_no"), + +# PROL_ZERO =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON", +# fr="Si le résultat est un mode_xxx ou une base_xxx, on peut prolonger" +# +" les champs par zéro la ou la projection ne donne pas de valeurs."), + + MATR_A =SIMP(statut='f',typ=(matr_asse_depl_r) ), + MATR_B =SIMP(statut='f',typ=(matr_asse_depl_r) ), + VIS_A_VIS =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT_1','GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), + AU_MOINS_UN('TOUT_2','GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),), + TOUT_1 =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TOUT_2 =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ), + ), + +# ------------------------------------------------------------------ +# MODI_REPERE +# ------------------------------------------------------------------ + MODI_REPERE =FACT(statut='f',max='**', + regles=(UN_PARMI('REPERE'), + AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), +# + TYPE_CHAM =SIMP(statut='f',typ='TXM', + into=("VECT_2D","VECT_3D","TORS_3D","TENS_2D","TENS_3D"), + defaut="VECT_3D"), + b_vect_2d =BLOC(condition = "TYPE_CHAM=='VECT_2D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=2,max=2 ),), + b_vect_3d =BLOC(condition = "TYPE_CHAM=='VECT_3D'", + NOM_CMP =SIMP(statut='f',typ='TXM',min=3,max=3,defaut=('DX','DY','DZ') ),), + b_tors_3d =BLOC(condition = "TYPE_CHAM=='TORS_3D'", + NOM_CMP =SIMP(statut='o',typ='TXM',min=6,max=6 ),), + b_tens_2d =BLOC(condition = "TYPE_CHAM=='TENS_2D'", + NOM_CMP =SIMP(statut='f',typ='TXM',min=4,max=4,defaut=('EPXX','EPYY','EPZZ','EPXY',) ),), + b_tens_3d =BLOC(condition = "TYPE_CHAM=='TENS_3D'", + NOM_CMP =SIMP(statut='f',typ='TXM',min=6,max=6,defaut=('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ',),),), + + REPERE =SIMP(statut='o',typ='TXM', + into=("UTILISATEUR","CYLINDRIQUE","NORMALE","DIR_JAUGE"),), + b_normale =BLOC(condition = "REPERE=='NORMALE'", + regles=(UN_PARMI('VECT_X','VECT_Y')), + VECT_X =SIMP(statut='f',typ='R',min=3,max=3), + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), ), + b_utilisateur =BLOC(condition = "REPERE=='UTILISATEUR'", + ANGL_NAUT =SIMP(statut='o',typ='R',max=3)), + b_cylindrique =BLOC(condition = "REPERE=='CYLINDRIQUE'", + ORIGINE =SIMP(statut='o',typ='R',min=2,max=3), + AXE_Z =SIMP(statut='o',typ='R',min=3,max=3)), + b_dir_jauge =BLOC(condition = "REPERE=='DIR_JAUGE'", + VECT_X =SIMP(statut='f',typ='R',min=3,max=3), + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), ), + ), + +# ------------------------------------------------------------------ +# EPSI_MOYENNE +# ------------------------------------------------------------------ + EPSI_MOYENNE =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + SEUIL_VARI =SIMP(statut='f',typ='R',validators=NoRepeat(),defaut=0.1,), + MASQUE =SIMP(statut='f',typ='TXM',max=6), + ), + +# ------------------------------------------------------------------ +# FILTRE DES DDL +# ------------------------------------------------------------------ + FILTRE =FACT(statut='f',max='**', + regles=(UN_PARMI('DDL_ACTIF'), +# 'MASQUE'), + AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),into=C_NOM_CHAM_INTO(),), + +# + DDL_ACTIF =SIMP(statut='f',typ='TXM',max=6), +# TODO : mettre en place le systeme de masques +# MASQUE =SIMP(statut='f',typ='TXM',max=6), + ), +# ------------------------------------------------------------------ + + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + ) ; +#& MODIF COMMANDE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BARGELLINI R.BARGELLINI + +POST_BORDET =MACRO(nom="POST_BORDET", + op=OPS('Macro.post_bordet_ops.post_bordet_ops'), + sd_prod=table_sdaster, + UIinfo={"groupes":("Outils-métier","Rupture",)}, + reentrant='n', + fr="calcul de la probabilite de clivage via le modele de Bordet", + regles=(UN_PARMI('TOUT','GROUP_MA'), + UN_PARMI('INST','NUME_ORDRE'), + ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="le calcul ne sera effectué que sur ces mailles"), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),), + PRECISION =SIMP(statut='f',typ='R',validators=NoRepeat(),val_min=0.,val_max=1E-3,defaut=1E-6), + CRITERE =SIMP(statut='f',typ='TXM',defaut="ABSOLU",into=("RELATIF","ABSOLU") ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),), + PROBA_NUCL =SIMP(statut='f',typ='TXM',into=("NON","OUI"), defaut="NON", + fr="prise en compte du facteur exponentiel"), + b_nucl =BLOC( condition = "PROBA_NUCL=='OUI'", + PARAM =FACT(statut='o', + M =SIMP(statut='o',typ='R',val_min=0.E+0), + SIGM_REFE =SIMP(statut='o',typ=(fonction_sdaster),val_min=0.E+0), + VOLU_REFE =SIMP(statut='o',typ='R',val_min=0.E+0), + SIG_CRIT =SIMP(statut='o',typ='R',val_min=0.E+0), + SEUIL_REFE =SIMP(statut='o',typ='R',val_min=0.E+0), + SEUIL_CALC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster)), + DEF_PLAS_REFE =SIMP(statut='o',typ='R'),),), + + b_prop =BLOC( condition = "PROBA_NUCL=='NON'", + PARAM =FACT(statut='o', + M =SIMP(statut='o',typ='R',val_min=0.E+0), + SIGM_REFE =SIMP(statut='o',typ=fonction_sdaster,val_min=0.E+0), + VOLU_REFE =SIMP(statut='o',typ='R',val_min=0.E+0), + SIG_CRIT =SIMP(statut='o',typ='R',val_min=0.E+0), + SEUIL_REFE =SIMP(statut='o',typ='R',val_min=0.E+0), + SEUIL_CALC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),), + ), + ), + + RESULTAT =SIMP(statut='o',typ=resultat_sdaster, + fr="Resultat d'une commande globale STAT_NON_LINE"), + TEMP =SIMP(statut='o',typ=(fonction_sdaster,'R')), + COEF_MULT =SIMP(statut='f',typ='R', defaut=1.), + ) +#& MODIF COMMANDE DATE 20/09/2011 AUTEUR MICOL A.MICOL +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT +def post_cham_xfem_prod(RESULTAT,**args ): + + if AsType(RESULTAT) == evol_noli : return evol_noli + if AsType(RESULTAT) == mode_meca : return mode_meca + if AsType(RESULTAT) == evol_elas : return evol_elas + + raise AsException("type de concept resultat non prevu") + +POST_CHAM_XFEM=OPER(nom="POST_CHAM_XFEM",op= 196,sd_prod=post_cham_xfem_prod, + reentrant='n',UIinfo={"groupes":("Post-traitements","Rupture",)}, + fr="Calcul des champs DEPL, SIEF_ELGA et VARI_ELGA sur le maillage de visualisation (fissuré)", + MAILLAGE_SAIN = SIMP(statut='f',typ=maillage_sdaster), + RESULTAT = SIMP(statut='o',typ=resultat_sdaster), + MODELE_VISU = SIMP(statut='o',typ=modele_sdaster,), + INFO = SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), +); +#& MODIF COMMANDE DATE 11/10/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + +def post_champ_prod(RESULTAT,**args): + if AsType(RESULTAT) != None : return AsType(RESULTAT) + raise AsException("type de concept resultat non prevu") + + +POST_CHAMP=OPER(nom="POST_CHAMP",op=155,sd_prod=post_champ_prod, reentrant='n', + UIinfo={"groupes":("Post-traitements","Eléments de structure",)}, + fr="extraction de champs sur un sous-point. ", + + regles=(UN_PARMI('EXTR_COQUE','EXTR_TUYAU','EXTR_PMF','MIN_MAX_SP','COQU_EXCENT'), + UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + + RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_harmo,mult_elas) ), + + +#==== +# Sélection des numéros d'ordre pour lesquels on fait le calcul : +#==== + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + + b_acce_reel =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + + +#==== +# Sélection de la zone géométrique: +#==== + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'), + + + +#==== +# Extraction sur un sous-point d'une coque : +#==== + EXTR_COQUE =FACT(statut='f', max=1, fr="extraction sur un sous-point d'une coque", + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("SIEF_ELGA","SIGM_ELGA","SIGM_ELNO",),), + NUME_COUCHE =SIMP(statut='o',typ='I',val_min=1, + fr="numero de couche dans l'épaisseur de la coque" ), + NIVE_COUCHE =SIMP(statut='o',typ='TXM',into=("SUP","INF","MOY"), + fr="position dans l'épaisseur de la couche" ), + ), + + +#==== +# Extraction sur un sous-point d'un tuyau : +#==== + EXTR_TUYAU =FACT(statut='f', max=1, fr="extraction sur un sous-point d'un tuyau", + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("SIGM_ELGA","SIGM_ELNO",),), + NUME_COUCHE =SIMP(statut='o',typ='I',val_min=1, + fr="numero de couche dans l'épaisseur du tuyau" ), + NIVE_COUCHE =SIMP(statut='o',typ='TXM',into=("SUP","INF","MOY"), + fr="position dans l'épaisseur de la couche" ), + ANGLE =SIMP(statut='o',typ='I',val_min=0,val_max=360, + fr="angle de dépouillement pour les tuyaux, en degrés à partir de la génératrice" ), + ), + + +#==== +# Extraction sur un sous-point d'une poutre multi-fibre : +#==== + EXTR_PMF =FACT(statut='f', max=1, fr="extraction sur un sous-point d'une poutre multi-fibre", + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("SIGM_ELGA","SIGM_ELNO",),), + NUME_FIBRE =SIMP(statut='o',typ='I',val_min=1, + fr="numéro de la fibre dans la poutre multi-fibre" ), + ), + + +#==== +# Extraction des min / max sur les sous-points : +#==== + MIN_MAX_SP =FACT(statut='f', max='**', fr="extraction du min/max d'une composante pour un champ", + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("SIGM_ELGA","SIGM_ELNO", + "SIEF_ELGA","SIEF_ELNO","SIEQ_ELGA","SIEQ_ELNO", + "EPSI_ELGA","EPEQ_ELGA","VARI_ELGA","VARI_ELNO"),), + NOM_CMP =SIMP(statut='o',typ='TXM',fr="nom de la composante", ), + TYPE_MAXI =SIMP(statut='o',typ='TXM',into=("MAXI","MINI","MAXI_ABS","MINI_ABS",) ), + NUME_CHAM_RESU = SIMP(statut='o', typ='I', val_min=1, val_max=20, + fr="Numéro du champ produit. Exemple: 6 produit le champ UT06",), + ), + + +#==== +# Calcul des efforts des coques "excentrées" sur le feuillet moyen de la coque : +#==== + COQU_EXCENT =FACT(statut='f', max=2, fr="Calcul des efforts d'une coque 'excentrée' sur le feuillet moyen de la coque", + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("EFGE_ELNO","EFGE_ELGA",),), + MODI_PLAN =SIMP(statut='o',typ='TXM',into=("OUI",),), + ), + ) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES + +POST_COQUE=MACRO(nom="POST_COQUE", + op=OPS('Macro.post_coque_ops.post_coque_ops'), + sd_prod=table_sdaster, + reentrant='n', + UIinfo={"groupes":("Post-traitements",)}, + fr="Calcul des efforts et déformations en un point et une cote " \ + "quelconque de la coque", + + regles=(EXCLUS('INST','NUME_ORDRE'),), + + # SD résultat et champ à posttraiter : + RESULTAT =SIMP(statut='o',typ=resultat_sdaster,fr="RESULTAT à posttraiter",), + CHAM =SIMP(statut='o',typ='TXM',into=("EFFORT","DEFORMATION",)), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + + # points de post-traitement : + COOR_POINT =FACT(statut='o',max='**',fr="coordonnées et position dans l'épaisseur", + COOR=SIMP(statut='o',typ='R',min=3,max=4),), + + ) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA + + +POST_DECOLLEMENT=MACRO(nom="POST_DECOLLEMENT", + op=OPS('Macro.post_decollement_ops.post_decollement_ops'), + sd_prod=table_sdaster, + fr="calcul du rapport de surfaces de contact radier/sol", + reentrant='n', + UIinfo={"groupes":("Post-traitements",)}, + RESULTAT =SIMP(statut='o',typ=(evol_noli) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='DEPL',into=C_NOM_CHAM_INTO(),max=1), + NOM_CMP =SIMP(statut='f',typ='TXM',defaut='DZ',max=1), + GROUP_MA =SIMP(statut='o',typ=grma,max=1), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER +POST_DYNA_ALEA=MACRO(nom="POST_DYNA_ALEA", + op=OPS('Macro.post_dyna_alea_ops.post_dyna_alea_ops'), + sd_prod=table_sdaster, + fr="Traitements statistiques de résultats de type interspectre " \ + "et impression sur fichiers", + reentrant='n', + UIinfo={"groupes":("Post-traitements","Dynamique",)}, + regles=(UN_PARMI('FRAGILITE','INTE_SPEC'),), + FRAGILITE =FACT(statut='f',fr="donnees pour courbe de fragilite",max='**', + TABL_RESU =SIMP(statut='o',typ=table_sdaster), + regles=(UN_PARMI('VALE','LIST_PARA'),), + VALE = SIMP(statut='f',typ='R', min=1,validators=NoRepeat(),max='**' ), + LIST_PARA = SIMP(statut='f',typ=listr8_sdaster), + AM_INI = SIMP(statut='f',typ='R',defaut= 0.4 ), + BETA_INI = SIMP(statut='f',typ='R',defaut= 0.3 ), + FRACTILE = SIMP(statut='f',typ='R', min=1,validators=NoRepeat(),max='**'), + b_inte_spec_f = BLOC(condition="""FRACTILE !=None""", + NB_TIRAGE =SIMP(statut='f',typ='I' ),), + ), + INTE_SPEC =SIMP(statut='f',typ=table_fonction), + b_inte_spec_f =BLOC(condition="""INTE_SPEC !=None""", + regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I','OPTION'),), + NUME_VITE_FLUI =SIMP(statut='f',typ='I' ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE_I =SIMP(statut='f',typ='I',max='**' ), + NOEUD_I =SIMP(statut='f',typ=no,max='**'), + OPTION =SIMP(statut='f',typ='TXM',into=("DIAG",) ), + b_nume_ordre_i =BLOC(condition = "NUME_ORDRE_I != None", + NUME_ORDRE_J =SIMP(statut='o',typ='I',max='**' ), + ), + b_noeud_i =BLOC(condition = "NOEUD_I != None", + NOEUD_J =SIMP(statut='o',typ=no,max='**'), + NOM_CMP_I =SIMP(statut='o',typ='TXM',max='**' ), + NOM_CMP_J =SIMP(statut='o',typ='TXM',max='**' ), + ), + MOMENT =SIMP(statut='f',typ='I',max='**',fr="Moments spectraux en complément des cinq premiers" ), + DUREE =SIMP(statut='f',typ='R', fr="durée de la phase forte pour facteur de peak" ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE BOYERE E.BOYERE +POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=table_sdaster, + fr="Post-traiter les résultats en coordonnées généralisées produit par DYNA_TRAN_MODAL", + reentrant='n', + UIinfo={"groupes":("Post-traitements","Dynamique",)}, + regles=(UN_PARMI('CHOC','RELA_EFFO_DEPL', ),), + RESU_GENE =SIMP(statut='o',typ=tran_gene ), + CHOC =FACT(statut='f',max='**', + fr="Analyse des non linéarités de choc", + INST_INIT =SIMP(statut='f',typ='R',defaut= -1. ), + INST_FIN =SIMP(statut='f',typ='R',defaut= 999. ), + NB_BLOC =SIMP(statut='f',typ='I',defaut= 1 ), + SEUIL_FORCE =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + DUREE_REPOS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + OPTION =SIMP(statut='f',typ='TXM',defaut="USURE",into=("IMPACT","USURE") ), + NB_CLASSE =SIMP(statut='f',typ='I',defaut= 10 ), + ), + RELA_EFFO_DEPL =FACT(statut='f', + fr="Analyse des relationsnon linéaires effort-déplacement", + NOEUD =SIMP(statut='o',typ=no), + NOM_CMP =SIMP(statut='o',typ='TXM' ), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 22/08/2011 AUTEUR DURAND C.DURAND +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n', + UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + fr="Calcul de quantités globales (masse, inerties, énergie, ...) sur tout ou partie du modèle", + + regles=(UN_PARMI('MASS_INER', 'ENER_POT', 'ENER_CIN','TRAV_EXT','MINMAX', + 'WEIBULL', 'RICE_TRACEY', 'CARA_GEOM','CHAR_LIMITE','NORME', + 'CARA_POUTRE', 'INDIC_ENER', 'INDIC_SEUIL','VOLUMOGRAMME', + 'AIRE_INTERNE','ENER_ELAS','ENER_TOTALE','ENER_DISS','INTEGRALE'), + ), + + MASS_INER = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ORIG_INER = SIMP(statut='f',typ='R',min=3,max=3 ), + ), + b_mass_iner = BLOC(condition = "( MASS_INER != None )", + fr="calcul de la masse, les inerties et le centre de gravité", + regles=(EXCLUS('CHAM_GD','RESULTAT'), + EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),), + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CARA_ELEM = SIMP(statut='f',typ=cara_elem), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1), + NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + GEOMETRIE = SIMP(statut='f',typ='TXM',defaut="INITIALE",into=("INITIALE","DEFORMEE")), + CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), + RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_noli,mult_elas, + fourier_elas,dyna_trans) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + FREQ = SIMP(statut='f',typ='R',), + LIST_FREQ = SIMP(statut='f',typ=listr8_sdaster), + NUME_MODE = SIMP(statut='f',typ='I',), + NOEUD_CMP = SIMP(statut='f',typ='TXM',min=2,validators=NoRepeat(),max=2), + NOM_CAS = SIMP(statut='f',typ='TXM',), + ), + + ENER_POT = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + b_ener_pot = BLOC(condition = "( ENER_POT != None )", + fr="calcul de l'énergie potentielle de déformation", + regles=(UN_PARMI('CHAM_GD','RESULTAT'), + EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),), + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CARA_ELEM = SIMP(statut='f',typ=cara_elem), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1), + NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),), + ANGLE = SIMP(statut='f',typ='I',defaut=0), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), + RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans,mult_elas) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + FREQ = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ = SIMP(statut='f',typ=listr8_sdaster), + NUME_MODE = SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'), + NOEUD_CMP = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + ), + + ENER_CIN = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + OPTION = SIMP(statut='f',typ='TXM', + into=("MASS_MECA","MASS_MECA_DIAG"), + defaut="MASS_MECA" ), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + b_ener_cin = BLOC(condition = "( ENER_CIN != None )", + fr="calcul de l'énergie cinétique", + regles=(UN_PARMI('CHAM_GD','RESULTAT'), + EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', + 'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),), + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CARA_ELEM = SIMP(statut='f',typ=cara_elem), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1), + NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),), + ANGLE = SIMP(statut='f',typ='I',defaut=0), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), + RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + FREQ = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ = SIMP(statut='f',typ=listr8_sdaster), + NUME_MODE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NOEUD_CMP = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + ), + + ENER_DISS = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + b_ener_diss = BLOC(condition = "( ENER_DISS != None )", + fr="calcul de l'énergie dissipée", + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CARA_ELEM = SIMP(statut='f',typ=cara_elem), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1), + NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + RESULTAT = SIMP(statut='o',typ=(evol_noli) ), + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + + ENER_ELAS = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + b_ener_elas = BLOC(condition = "( ENER_ELAS != None )", + fr="calcul de l'énergie de déformation élastique", + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CARA_ELEM = SIMP(statut='f',typ=cara_elem), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1), + NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + RESULTAT = SIMP(statut='o',typ=(evol_noli) ), + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + ENER_TOTALE = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + b_ener_totale = BLOC(condition = "( ENER_TOTALE != None )", + fr="calcul de l'énergie de déformation totale", + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CARA_ELEM = SIMP(statut='f',typ=cara_elem), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1), + NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + RESULTAT = SIMP(statut='o',typ=(evol_noli) ), + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + INTEGRALE = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + NOM_CHAM = SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + NOM_CMP = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + DEJA_INTEGRE = SIMP(statut='f',typ='TXM',into=("OUI","NON",),), + ), + b_integrale = BLOC(condition = "( INTEGRALE != None )", + fr="calcul de la moyenne d'une composante", + regles=(UN_PARMI('CHAM_GD','RESULTAT'), + EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_ORDRE','LIST_INST'),), + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + RESULTAT = SIMP(statut='f',typ=(evol_noli,evol_ther,evol_elas,evol_char) ), + CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + VOLUMOGRAMME = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA = SIMP(statut='f',typ=grma,max=1), + TYPE_MAILLE = SIMP(statut='f',typ='TXM',into=('2D','3D',)), + NOM_CHAM = SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + NOM_CMP = SIMP(statut='o',typ='TXM'), + NB_INTERV = SIMP(statut='f',typ='I',defaut=5), + BORNES = SIMP(statut='f',typ='R',validators=NoRepeat(),min=2,max=2), + NORME = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + ), + b_volumogramme = BLOC(condition = "( VOLUMOGRAMME != None )", + fr="calcul de la distribution du volume d'une structure vis-à-vis d'une composante", + regles=(UN_PARMI('CHAM_GD','RESULTAT'), + EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_ORDRE','LIST_INST'),), + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + RESULTAT = SIMP(statut='f',typ=(evol_noli,evol_ther,evol_elas,evol_char) ), + CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + NORME = FACT(statut='f',max=1, + fr="calcul des extrema en espace d'une CMP d'un champ, pour tous les instants spécifiés", + regles=(UN_PARMI('TOUT','GROUP_MA'), + UN_PARMI('CHAM_GD','RESULTAT'), + PRESENT_PRESENT('CHAM_GD','MODELE'), + PRESENT_PRESENT('RESULTAT','NOM_CHAM'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + TYPE_MAILLE = SIMP(statut='f',typ='TXM',into=('2D','3D',)), + TYPE_NORM = SIMP(statut='f',typ='TXM',into=('L2',)), + RESULTAT = SIMP(statut='f',typ=(evol_noli,evol_ther,evol_elas) ), + NOM_CHAM = SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), + MODELE = SIMP(statut='f',typ=modele_sdaster), + + b_norme = BLOC(condition = "( RESULTAT != None )", + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + ), + + + MINMAX = FACT(statut='f',max=1, + fr="calcul des extrema en espace d'une CMP d'un champ, pour tous les instants spécifiés", + regles=(UN_PARMI('CHAM_GD','RESULTAT'), + PRESENT_PRESENT('CHAM_GD','MODELE'), + PRESENT_PRESENT('RESULTAT','NOM_CHAM'), + UN_PARMI('TOUT','GROUP_MA'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + RESULTAT = SIMP(statut='f',typ=(evol_noli,evol_ther,evol_elas) ), + NOM_CHAM = SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), + MODELE = SIMP(statut='f',typ=modele_sdaster), + NOM_CMP = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'), + b_minmax = BLOC(condition = "( RESULTAT != None )", + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + ), + + WEIBULL = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + OPTION = SIMP(statut='f',typ='TXM', + into=("SIGM_ELGA","SIGM_ELMOY"), + defaut="SIGM_ELGA"), + CORR_PLAST = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + COEF_MULT = SIMP(statut='f',typ='R',defaut=1.), + ), + b_weibull = BLOC(condition = "( WEIBULL != None )", + fr="calcul du champ élémentaire de la puissance m-ième de la contrainte de Weibull", + regles=(UN_PARMI('CHAM_GD','RESULTAT'), + EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CARA_ELEM = SIMP(statut='f',typ=cara_elem), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1), + NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), + RESULTAT = SIMP(statut='f',typ=(evol_noli) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + RICE_TRACEY = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + OPTION = SIMP(statut='f',typ='TXM', + into=("SIGM_ELGA","SIGM_ELMOY"), + defaut="SIGM_ELGA"), + LOCAL = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + ), + b_rice_tracey = BLOC(condition = "( RICE_TRACEY != None )", + fr="calcul du taux de croissance d'une cavité sphérique par rapport à un domaine", + regles=(UN_PARMI('CHAM_GD','RESULTAT'), + EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CARA_ELEM = SIMP(statut='f',typ=cara_elem), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1), + NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ), + RESULTAT = SIMP(statut='f',typ=(evol_noli) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + INDIC_ENER = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + b_indic_ener = BLOC(condition = "( INDIC_ENER != None )", + fr="calcul un indicateur global de perte de proportionnalité du chargement", + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + RESULTAT = SIMP(statut='o',typ=(evol_noli) ), + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + INDIC_SEUIL = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + ), + b_indic_seuil = BLOC(condition = "( INDIC_SEUIL != None )", + fr="calcul un indicateur global de perte de proportionnalité du chargement", + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + RESULTAT = SIMP(statut='o',typ=(evol_noli) ), + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + CHAR_LIMITE = FACT(statut='f',min=0, + CHAR_CSTE = SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON") + ), + b_char_limite = BLOC(condition = "( CHAR_LIMITE != None )", + fr="post-traitement du calcul de la charge limite", + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CARA_ELEM = SIMP(statut='f',typ=cara_elem), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + RESULTAT = SIMP(statut='o',typ=(evol_noli) ), + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST = SIMP(statut='f',typ=listr8_sdaster), + ), + + CARA_GEOM = FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + SYME_X = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + SYME_Y = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + ORIG_INER = SIMP(statut='f',typ='R',min=2,max=2), + ), + b_cara_geom = BLOC(condition = "( CARA_GEOM != None )", + fr="calcul des caractéristiques géométriques d'un section de poutre", + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + ), + + CARA_POUTRE = FACT(statut='f',max='**', + regles=(UN_PARMI('TOUT','GROUP_MA'), + ENSEMBLE('LONGUEUR','LIAISON','MATERIAU'),), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + GROUP_MA_INTE = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + CARA_GEOM = SIMP(statut='o',typ=table_sdaster), + RT = SIMP(statut='f',typ='R'), + LAPL_PHI = SIMP(statut='f',typ=evol_ther), + LAPL_PHI_Y = SIMP(statut='f',typ=evol_ther), + LAPL_PHI_Z = SIMP(statut='f',typ=evol_ther), + LIAISON = SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT")), + LONGUEUR = SIMP(statut='f',typ='R'), + MATERIAU = SIMP(statut='f',typ=mater_sdaster), + OPTION = SIMP(statut='f',typ='TXM', + into=("CARA_TORSION","CARA_CISAILLEMENT","CARA_GAUCHI") ), + ), + b_cara_poutre = BLOC(condition = "( CARA_POUTRE != None )", + fr="calcul des caractéristiques mécaniques d'un section de poutre", + MODELE = SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER = SIMP(statut='f',typ=cham_mater), + CHARGE = SIMP(statut='f',typ=(char_meca,char_cine_meca, + char_ther,char_acou),validators=NoRepeat(),max='**' ), + MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0), + ), + + AIRE_INTERNE = FACT(statut='f',max='**', + GROUP_MA_BORD = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + ), + b_aire_interne = BLOC(condition = "( AIRE_INTERNE != None )", + fr="calcul de l'aire d'un trou dans un maillage 2D", + MODELE = SIMP(statut='f',typ=modele_sdaster), + ), + + TRAV_EXT = FACT(statut='f',), + b_trav_ext = BLOC(condition = "( TRAV_EXT != None )", + fr="calcul du travail des efforts extérieurs", + RESULTAT = SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans) ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ), + ), + + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + + ) ; +#& MODIF COMMANDE DATE 05/09/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE BOTTONI M.BOTTONI + +# --------------------------------------------------------------------------- +# POST_ENDO_FISS +# RECHERCHE DU TRAJET DE FISSURATION SUR UN +# CHAMP SCALAIRE 2D + + + + +def post_endo_fiss_prod(self,TABLE,**args) : + self.type_sdprod(TABLE,table_sdaster) + return maillage_sdaster + +POST_ENDO_FISS=MACRO(nom="POST_ENDO_FISS", + op=OPS('Macro.post_endo_fiss_ops.post_endo_fiss_ops'), + sd_prod=post_endo_fiss_prod, + reentrant='n', + UIinfo={"groupes":("Post-traitements","Outils-métier",)}, + fr="Individuation du trace d'une fissure a partir d'un champ scalaire pertinant", + + TABLE = SIMP(statut = 'o', typ = CO,), + + regles = (UN_PARMI("RESULTAT","CHAM_GD"), + ), + + b_resultat = BLOC(condition = "RESULTAT != None", + regles = (UN_PARMI('NUME_ORDRE','INST'),), + NUME_ORDRE = SIMP(statut = 'f', typ = 'I', validators = NoRepeat(), ), + INST = SIMP(statut = 'f', typ = 'R', validators = NoRepeat(), ), + MODELE = SIMP(statut = 'f', typ = modele_sdaster, + fr = "nom du modele a associer au champ",),), + + b_champ = BLOC(condition = "CHAM_GD != None", + MODELE = SIMP(statut = 'o', typ = modele_sdaster, + fr = "nom du modele a associer au champ",),), + + CHAM_GD = SIMP(statut = 'f',typ = (cham_gd_sdaster)), + RESULTAT = SIMP(statut = 'f',typ = (evol_noli)), + NOM_CMP = SIMP(statut = 'o',typ='TXM',), + NOM_CHAM = SIMP(statut = 'o', typ = 'TXM', + fr = "nom du champ a post-traiter",), + + RECHERCHE = FACT(statut = 'o',min=1,max='**', + regles = ( + PRESENT_ABSENT('TOUT','GROUP_MA',), + ), + LONG_ORTH = SIMP(statut='o', typ='R'), + NB_POINT = SIMP(statut='f', typ='I', defaut = 500), + PAS = SIMP(statut='o', typ='R', ), + LONG_REG = SIMP(statut='o', typ='R'), + SEUIL = SIMP(statut='o', typ='R'), + ANGL_MAX = SIMP(statut='f', typ='R', defaut=180.), + TOUT = SIMP(statut='f', typ='TXM', into=("OUI",) ), + GROUP_MA = SIMP(statut='f', typ=grma, validators=NoRepeat(), ), + ), + ) + + + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER +POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=table_sdaster,reentrant='n', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + fr="Calculer le dommage de fatigue subi par une structure soumise à une sollicitation de type aléatoire", + regles=(ENSEMBLE('MOMENT_SPEC_0','MOMENT_SPEC_2'), + PRESENT_PRESENT( 'MOMENT_SPEC_4','MOMENT_SPEC_0'), + UN_PARMI('TABL_POST_ALEA','MOMENT_SPEC_0'), ), + MOMENT_SPEC_0 =SIMP(statut='f',typ='R'), + MOMENT_SPEC_2 =SIMP(statut='f',typ='R'), + MOMENT_SPEC_4 =SIMP(statut='f',typ='R'), + TABL_POST_ALEA =SIMP(statut='f',typ=table_sdaster), + COMPTAGE =SIMP(statut='o',typ='TXM',into=("PIC","NIVEAU")), + DUREE =SIMP(statut='f',typ='R',defaut= 1.), + CORR_KE =SIMP(statut='f',typ='TXM',into=("RCCM",)), + DOMMAGE =SIMP(statut='o',typ='TXM',into=("WOHLER",)), + MATER =SIMP(statut='o',typ=mater_sdaster), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ANGLES J.ANGLES +POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + fr="Calculer en un point, le dommage de fatigue subi par une structure soumise à une histoire de chargement", + + CHARGEMENT = SIMP(statut='o',typ='TXM',into=("UNIAXIAL","PERIODIQUE","QUELCONQUE")), + + b_uniaxial = BLOC( condition = "CHARGEMENT=='UNIAXIAL'", + regles=(PRESENT_PRESENT('CORR_KE','MATER'), + PRESENT_PRESENT('CORR_SIGM_MOYE','MATER'), + PRESENT_PRESENT('DOMMAGE','MATER'),), + HISTOIRE = FACT(statut='o', + regles=(UN_PARMI('SIGM','EPSI'),), + SIGM = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + EPSI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),), + COMPTAGE = SIMP(statut='o',typ='TXM',into=("RAINFLOW","RCCM","NATUREL")), + DELTA_OSCI = SIMP(statut='f',typ='R',defaut= 0.0E+0), + COEF_MULT = FACT(statut='f', + KT = SIMP(statut='o',typ='R'),), + CORR_KE = SIMP(statut='f',typ='TXM',into=("RCCM",)), + DOMMAGE = SIMP(statut='f',typ='TXM',into=("WOHLER","MANSON_COFFIN", + "TAHERI_MANSON","TAHERI_MIXTE")), + MATER = SIMP(statut='f',typ=mater_sdaster), + CORR_SIGM_MOYE = SIMP(statut='f',typ='TXM',into=("GOODMAN","GERBER")), + TAHERI_NAPPE = SIMP(statut='f',typ=(nappe_sdaster,formule)), + TAHERI_FONC = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + CUMUL = SIMP(statut='f',typ='TXM',into=("LINEAIRE",)), + ), + + b_periodique = BLOC( condition = "CHARGEMENT=='PERIODIQUE'", + HISTOIRE = FACT(statut='o', + SIGM_XX = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_YY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_ZZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_XY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_XZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_YZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),), + CRITERE = SIMP(statut='o',typ='TXM',into=("CROSSLAND","PAPADOPOULOS")), + DOMMAGE = SIMP(statut='f',typ='TXM',into=("WOHLER",)), + MATER = SIMP(statut='o',typ=mater_sdaster), + COEF_CORR = SIMP(statut='f',typ='R'), + ), + + b_quelconque = BLOC( condition = "CHARGEMENT=='QUELCONQUE'", + HISTOIRE = FACT(statut='o', + SIGM_XX = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_YY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_ZZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_XY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_XZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + SIGM_YZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + EPSP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)), + TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),), + DOMMAGE = SIMP(statut='f',typ='TXM',into=("LEMAITRE",),), + MATER = SIMP(statut='o',typ=mater_sdaster), + CUMUL = SIMP(statut='f',typ='TXM',into=("LINEAIRE",)), + ), + + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE WADIER Y.WADIER + + +def post_gp_prod(self, TABL_GPMAX,TABL_GP, **kargs): + """Typage des sd_prod + """ + if TABL_GPMAX != None: + self.type_sdprod(TABL_GPMAX, table_sdaster) + if TABL_GP != None : + if TABL_GPMAX != None: + self.type_sdprod(TABL_GPMAX, table_sdaster) + self.type_sdprod(TABL_GP, table_sdaster) + return table_sdaster + + +POST_GP=MACRO(nom="POST_GP", + op=OPS('Macro.post_gp_ops.post_gp_ops'), + sd_prod=post_gp_prod, + fr="Calcul du critère énergétique Gp suite à un calcul thermo-mécanique", + reentrant='n', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + regles=(UN_PARMI('IDENTIFICATION', 'PREDICTION'), + UN_PARMI('THETA_2D','THETA_3D'),), + + # Résultat, modèle, comportement, chargement + RESULTAT = SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans,mode_meca),), + RESU_THER = SIMP(statut='f',typ=evol_ther,), + MODELE = SIMP(statut='o',typ=modele_sdaster), + MATER = SIMP(statut='o',typ=mater_sdaster), + + COMP_ELAS = C_COMP_ELAS('POST_GP'), + + LIST_INST = SIMP(statut='o',typ=listr8_sdaster), + + TYPE_DEF = SIMP(statut='f',typ='TXM', defaut="PETIT", into=("PETIT","GRAND")), + EXCIT = FACT(statut='f', max='**', + CHARGE = SIMP(statut='o', typ=(char_meca,char_cine_meca)), + FONC_MULT = SIMP(statut='f', typ=(fonction_sdaster,nappe_sdaster,formule)), + TYPE_CHARGE = SIMP(statut='f', typ='TXM', defaut="FIXE", into=("FIXE",)), + ), + SYME_CHAR = SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS")), + + b_direction =BLOC(condition = "(THETA_2D != None) ", + DIRECTION = SIMP(statut='o', typ='R', max=3),), + + THETA_2D = FACT(statut='f', max='**', + fr="paramètres de définition des champs theta", + GROUP_NO = SIMP(statut='o', typ=grno, validators=NoRepeat(), max='**'), + R_INF = SIMP(statut='o', typ='R'), + R_SUP = SIMP(statut='o', typ='R'),), + + b_theta_2d=BLOC(condition="(THETA_2D != None)", + # correction axisymétrie + RAYON_AXIS = SIMP(statut='f', typ='R', val_min=0., defaut=1.), + TRANCHE = FACT(statut='o', max=1, + + GROUP_MA = SIMP(statut='o', typ=grma, validators=NoRepeat(), max='**'), + ),), + + THETA_3D =FACT(statut='f',max='**', + GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'), + R_INF =SIMP(statut='o',typ='R'), + R_SUP =SIMP(statut='o',typ='R'), + ), + b_theta_3d =BLOC(condition="THETA_3D != None", + LISSAGE =FACT(statut='d', + DEGRE =SIMP(statut='f',typ='I',defaut=5,into=(0,1,2,3,4,5,6,7) ), + LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE", + into=("LEGENDRE","LAGRANGE","LAGRANGE_REGU"),), + LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE", + into=("LEGENDRE","LAGRANGE","LAGRANGE_NO_NO","LAGRANGE_REGU"),), + ), + + FOND_FISS =SIMP(statut='o',typ=fond_fiss,max=1,), + TRANCHE = FACT(statut='o', max='**', + GROUP_MA = SIMP(statut='o', typ=grma, validators=NoRepeat(), max='**'), + ),), + + # prise en compte de la traction compression + TRAC_COMP = SIMP(statut='f',typ='TXM',into=("OUI",), + fr="prise en compte de la traction-compression (plus lent)", + ), + + # critère sur Gp + CRIT_MAXI_GP = SIMP(statut='f', typ='TXM', defaut="ABSOLU", + into=("RELATIF","ABSOLU")), + + # identification + IDENTIFICATION = FACT(statut='f', max=1, + KJ_CRIT = SIMP(statut='o', typ='R', val_min=0., max='**'), + TEMP = SIMP(statut='o', typ='R', val_min=0., max='**'), + ), + + # prédiction + PREDICTION = FACT(statut='f', max=1, + GP_CRIT = SIMP(statut='o', typ='R', val_min=0., max='**'), + TEMP = SIMP(statut='o', typ='R', val_min=0., max='**'), + ), + + # table résultat + TABL_GPMAX = SIMP(statut='o', typ=CO,), + TABL_GP = SIMP(statut='f', typ=CO,), + INFO = SIMP(statut='f', typ='I', defaut=1, into=(1, 2),), +) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE +POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3", + op=OPS('Macro.post_k1_k2_k3_ops.post_k1_k2_k3_ops'), + sd_prod=table_sdaster, + fr="Calcul des facteurs d'intensité de contraintes en 2D et en 3D par "\ + "extrapolation des sauts de déplacements sur les lèvres de la fissure", + reentrant='n', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + + regles=(UN_PARMI('RESULTAT','TABL_DEPL_SUP'), + EXCLUS('FISSURE','FOND_FISS'), + PRESENT_PRESENT('FISSURE','RESULTAT'), + PRESENT_PRESENT('FOND_FISS','VECT_K1'), + PRESENT_PRESENT('TABL_DEPL_SUP','VECT_K1'), + #PRESENT_PRESENT('RESULTAT','FOND_FISS'), + ), + + MODELISATION =SIMP(statut='o',typ='TXM', + into=("3D","AXIS","D_PLAN","C_PLAN"),position='global', + fr="Modélisation cohérente avec celle utilisée pour le calcul des déplacements"), + FOND_FISS =SIMP(statut='f',typ=fond_fiss), + FISSURE =SIMP(statut='f',typ=fiss_xfem), + NB_NOEUD_COUPE=SIMP(statut='f',typ='I',defaut=5,val_min = 3), + SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","SANS")), + +# bloc correspondant a la donnee du fond de fissure pour les fissures maillees + b_fond_fiss_res =BLOC (condition="((FOND_FISS!= None)and(RESULTAT!= None))", + + b_ref_3d =BLOC (condition="MODELISATION=='3D'", + TYPE_MAILLAGE = SIMP(statut='f',typ='TXM',into=("LIBRE","REGLE"),defaut="REGLE"), + ), + + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + SANS_NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + EVOL_THER = SIMP(statut='f',typ=(evol_ther),fr="Température sur le fond de fissure") + ), + + b_fond_fiss_tab =BLOC (condition="((FOND_FISS!= None)and(TABL_DEPL_SUP!= None)and(RESULTAT== None))", + + MAILLAGE = SIMP(statut='o',typ=maillage_sdaster), + NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + SANS_NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + SANS_GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ), + EVOL_THER = SIMP(statut='f',typ=(evol_ther),fr="Température sur le fond de fissure") + ), +# bloc correspondant a la donnee de la fissure pour les fissures X-FEM + b_fissure_res =BLOC (condition="((FISSURE!= None)and(RESULTAT!= None))", + NB_POINT_FOND = SIMP(statut='f',typ='I' ,), + NUME_FOND = SIMP(statut='f',typ='I',defaut=1), + DTAN_ORIG = SIMP(statut='f',typ='R',max='**'), + DTAN_EXTR = SIMP(statut='f',typ='R',max='**'), + ), + + b_fissure_tab =BLOC (condition="((FISSURE!= None)and(TABL_DEPL_SUP!= None)and(RESULTAT== None))", + MAILLAGE = SIMP(statut='o',typ=maillage_sdaster), + NB_POINT_FOND = SIMP(statut='f',typ='I' ,), + NUME_FOND = SIMP(statut='f',typ='I',defaut=1), + DTAN_ORIG = SIMP(statut='f',typ='R',max='**'), + DTAN_EXTR = SIMP(statut='f',typ='R',max='**'), + ), + + MATER =SIMP(statut='o',typ=mater_sdaster, + fr="Matériau homogène et isotrope cohérent avec celui utilisé pour le calcul des déplacements"), + RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli), + fr="Déplacement des noeuds de la lèvre supérieure et inférieure"), + TABL_DEPL_SUP =SIMP(statut='f',typ=table_sdaster, + fr="Table issue de post_releve_t sur les noeuds de la lèvre supérieure"), + TABL_DEPL_INF =SIMP(statut='f',typ=table_sdaster, + fr="Table issue de post_releve_t sur les noeuds de la lèvre inférieure"), + ABSC_CURV_MAXI=SIMP(statut='o',typ='R', + fr="Distance maximum à partir du fond de fissure à utiliser pour le calcul"), + PREC_VIS_A_VIS=SIMP(statut='f',typ='R',defaut=0.1), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + VECT_K1 =SIMP(statut='f',typ='R',max=3,min=3, + fr="Vecteur normal au plan de fissure, orienté de la lèvre inférieure vers la lèvre supérieure"), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# RESPONSABLE C.MESSELIER-GOUZE +# +POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=table_sdaster, + fr="Calcul des facteurs d'intensité de contraintes par la méthode K_BETA", + reentrant='n', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + MAILLAGE = SIMP(statut='o',typ=maillage_sdaster), + MATER_REV = SIMP(statut='o',typ=mater_sdaster), + EPAIS_REV = SIMP(statut='o',typ='R'), + FISSURE = FACT(statut='o', + DECALAGE = SIMP(statut='f',typ='R',defaut=-2.e-04), + PROFONDEUR = SIMP(statut='o',typ='R'), + LONGUEUR = SIMP(statut='o',typ='R'), + ORIENTATION = SIMP(statut='o',typ='TXM', + into=("CIRC","LONGI"),), + ), + K1D = FACT(statut='o',max='**', + TABL_MECA_REV = SIMP(statut='o',typ=(table_sdaster)), + TABL_MECA_MDB = SIMP(statut='o',typ=(table_sdaster)), + TABL_THER = SIMP(statut='o',typ=(table_sdaster)), + INTITULE = SIMP(statut='o',typ='TXM' ), + ), + TITRE = SIMP(statut='f',typ='TXM',max='**'), +); +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE + + +POST_K_TRANS=MACRO(nom="POST_K_TRANS", + op=OPS('Macro.post_k_trans_ops.post_k_trans_ops'), + sd_prod=table_sdaster, + fr="Calcul des facteurs d intensite des contrainte par recombinaison modale", + reentrant='n', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + RESU_TRANS =SIMP(statut='o',typ=tran_gene), + K_MODAL =FACT(statut='o', + TABL_K_MODA =SIMP(statut='f',typ=table_sdaster,), + RESU_MODA =SIMP(statut='f',typ=mode_meca,), + FOND_FISS =SIMP(statut='f',typ=fond_fiss,), + FISSURE =SIMP(statut='f',typ=fiss_xfem,), + THETA =SIMP(statut='f',typ=(theta_geom,cham_no_sdaster)), + R_INF =SIMP(statut='f',typ='R'), + R_SUP =SIMP(statut='f',typ='R'), + MODULE =SIMP(statut='f',typ='R'), + DIRE_THETA =SIMP(statut='f',typ=cham_no_sdaster ), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + MODULE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DEGRE =SIMP(statut='f',typ='I',into=(0,1,2,3,4,5,6,7) ), + LISSAGE_THETA =SIMP(statut='f',typ='TXM',into=("LEGENDRE","LAGRANGE","LAGRANGE_REGU"),), + LISSAGE_G =SIMP(statut='f',typ='TXM',into=("LEGENDRE","LAGRANGE","LAGRANGE_NO_NO","LAGRANGE_REGU"),), + + + regles=(UN_PARMI('TABL_K_MODA','RESU_MODA'), + UN_PARMI('FISSURE','FOND_FISS'), + EXCLUS('MODULE','MODULE_FO'), + PRESENT_PRESENT('R_INF','R_SUP'), + PRESENT_PRESENT('R_INF_FO','R_SUP_FO'), ), + ), + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R'),), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + TITRE =SIMP(statut='f',typ='TXM'), +) + +#& MODIF COMMANDE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE FERNANDES R.FERNANDES + +POST_MAC3COEUR = MACRO(nom="POST_MAC3COEUR", + op=OPS("Mac3coeur.post_mac3coeur_ops.post_mac3coeur_ops"), + + TYPE_COEUR = SIMP(statut='o',typ='TXM',into=("TEST","900","1300","N4","EPR") ), + RESULTAT = SIMP(statut='o',typ=evol_noli), # SD_RESULTAT + INST = SIMP(statut='o',typ='R', max=1), # INSTANT + + LAME = FACT(statut='f',max='**', + fr="Post-traitement des lames d'eau, par grille ou valeurs min/max", + regles = UN_PARMI('NUME_GRILLE','TYPE_RESU',), + NUME_GRILLE = SIMP(statut='f',typ='I', max=1), # NUMERO DE LA GRILLE A POST-TRAITER + TYPE_RESU = SIMP(statut='f',typ='TXM',into=("MINI","MAXI")), # EXTREMA POUR LE POST + FORMAT = SIMP(statut='o',typ='TXM',into=("GRACE","TABLE")), + UNITE = SIMP(statut='o',typ='I', max=1), # NUMERO DE L'UNITE LOGIQUE POUR LE POST + ), + + DEFORMATION = FACT(statut='f',max='**', + fr="Post-traitement des deformations, par grille ou valeurs min/max", + regles=UN_PARMI('NUME_GRILLE','TYPE_RESU','POSITION','NOM_CMP'), + + UNITE = SIMP(statut='o',typ='I', max=1), + FORMAT = SIMP(statut='o',typ='TXM',into=("GRACE","TABLE")), + NOM_CMP = SIMP(statut='f',typ='TXM',into=("DY","DZ","NORME")), + + TYPE_VISU = SIMP(statut='f',typ='TXM',into=("AMPLITUDE","MODULE","VECTEUR","DEFORME")), + NUME_GRILLE = SIMP(statut='f',typ='I', max=1), # NUMERO DE LA GRILLE A POST-TRAITER + TYPE_RESU = SIMP(statut='f',typ='TXM',into=("MINI","MAXI")), + POSITION = SIMP(statut='f',typ='TXM', max=1), + CONCEPTION = SIMP(statut='f',typ='TXM', max=1), + ), +) + +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2005 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT +POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster, + reentrant='n',UIinfo={"groupes":("Maillage","Rupture",)}, + fr="Crée un maillage se conformant à la fissure pour le post-traitement des éléments XFEM", + MODELE = SIMP(statut='o',typ=modele_sdaster), + MAILLAGE_SAIN = SIMP(statut='f',typ=maillage_sdaster), + PREF_NOEUD_X =SIMP(statut='f',typ='TXM',defaut="NX",validators=LongStr(1,2),), + PREF_NOEUD_M =SIMP(statut='f',typ='TXM',defaut="NM",validators=LongStr(1,2),), + PREF_NOEUD_P =SIMP(statut='f',typ='TXM',defaut="NP",validators=LongStr(1,2),), + PREF_MAILLE_X =SIMP(statut='f',typ='TXM',defaut="MX",validators=LongStr(1,2),), + PREF_GROUP_CO =SIMP(statut='f',typ=geom ,defaut="NFISSU",), + TITRE = SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), + +); +#& MODIF COMMANDE DATE 02/02/2011 AUTEUR PELLET J.PELLET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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 PARTIC +# +# 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE +POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster, + fr="Vérification des critères de niveau 0 et certains critères de niveau A du RCC-M-B3200 (Edition 1991)", + reentrant='n', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="VALE_MAX",into=("VALE_MAX","DETAILS") ), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + TYPE_RESU_MECA =SIMP(statut='o',typ='TXM',into=("EVOLUTION","UNITAIRE","TUYAUTERIE") ), + +# ====================================================================== + b_evolution =BLOC(condition="(TYPE_RESU_MECA == 'EVOLUTION')", + + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("PM_PB","SN","FATIGUE_ZH210","AMORCAGE") ), + MATER =SIMP(statut='o',typ=mater_sdaster ), + SY_MAX =SIMP(statut='f',typ='R', + fr="limite élastique utilisée pour le calcul du rochet thermique" ), + TYPE_KE =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"), + fr="Ke meca seul ou partition mecanique + thermique" ), + + TRANSITOIRE =FACT(statut='o',max='**',fr="transitoire à dépouiller", + regles=(EXCLUS('TOUT_ORDRE','INST','LIST_INST'), + UN_PARMI('TABL_RESU_MECA','TABL_SIGM_THETA'),), + NB_OCCUR =SIMP(statut='f',typ='I',defaut= 1, + fr="nombre d occurences réelles de ce transitoire" ), + TABL_RESU_MECA =SIMP(statut='f',typ=table_sdaster, + fr="relevé des contraintes sur le chemin"), + TABL_SIGM_THER =SIMP(statut='f',typ=table_sdaster, + fr="résultat sous chargement thermique seul" ), + TABL_RESU_PRES =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes sous chargement de pression" ), + TABL_SIGM_THETA =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes a la distance d de la singularité pour chacun des angles THETA" ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + b_inst =BLOC(condition = "(INST != None) or (LIST_INST != None)" , + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),),), + ), + ), + +# ====================================================================== + b_unitaire =BLOC(condition="(TYPE_RESU_MECA == 'UNITAIRE')", + + OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + into=("PM_PB","SN","FATIGUE") ), + MATER =SIMP(statut='o',typ=mater_sdaster ), + SY_MAX =SIMP(statut='f',typ='R', + fr="limite élastique utilisée pourle calcul du rochet thermique" ), + TYPE_KE =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"), + fr="Ke meca seul ou partition mecanique + thermique" ), + CHAR_MECA =FACT(statut='o',max='**',fr="Chargements mécaniques", + regles=(UN_PARMI('MX','MX_TUBU'),), + NUME_CHAR =SIMP(statut='o',typ='I',fr="numéro du chargement" ), + NOM_CHAR =SIMP(statut='f',typ='TXM',fr="nom du chargement" ), + MX =SIMP(statut='f',typ='R',fr="moment suivant x", ), + MX_TUBU =SIMP(statut='f',typ='R',fr="moment suivant x, tubulure", ), + b_1_tenseur =BLOC( condition = "MX != None", + FX =SIMP(statut='f',typ='R',fr="effort suivant x", ), + FY =SIMP(statut='f',typ='R',fr="effort suivant y", ), + FZ =SIMP(statut='f',typ='R',fr="effort suivant z", ), + MY =SIMP(statut='o',typ='R',fr="moment suivant y", ), + MZ =SIMP(statut='o',typ='R',fr="moment suivant z", ), + ), + b_2_tenseurs =BLOC( condition = "MX_TUBU != None", + FX_TUBU =SIMP(statut='f',typ='R',fr="effort suivant x, tubulure", ), + FY_TUBU =SIMP(statut='f',typ='R',fr="effort suivant y, tubulure", ), + FZ_TUBU =SIMP(statut='f',typ='R',fr="effort suivant z, tubulure", ), + MY_TUBU =SIMP(statut='o',typ='R',fr="moment suivant y, tubulure", ), + MZ_TUBU =SIMP(statut='o',typ='R',fr="moment suivant z, tubulure", ), + FX_CORP =SIMP(statut='f',typ='R',fr="effort suivant x, corps du piquage", ), + FY_CORP =SIMP(statut='f',typ='R',fr="effort suivant y, corps du piquage", ), + FZ_CORP =SIMP(statut='f',typ='R',fr="effort suivant z, corps du piquage", ), + MX_CORP =SIMP(statut='o',typ='R',fr="moment suivant x, corps du piquage", ), + MY_CORP =SIMP(statut='o',typ='R',fr="moment suivant y, corps du piquage", ), + MZ_CORP =SIMP(statut='o',typ='R',fr="moment suivant z, corps du piquage", ), + ), + + ), + RESU_MECA_UNIT =FACT(statut='o',fr="resultats mécaniques unitaires", + regles=(UN_PARMI('TABL_MX','TABL_MX_TUBU'),), + TABL_MX =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire MX"), + TABL_MX_TUBU =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire MX_TUBU"), + b_1_tenseur =BLOC( condition = "TABL_MX != None", + TABL_FX =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire FX"), + TABL_FY =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire FY"), + TABL_FZ =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire FZ"), + TABL_MY =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire MY"), + TABL_MZ =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire MZ"), + ), + b_2_tenseurs =BLOC( condition = "TABL_MX_TUBU != None", + TABL_FX_TUBU =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire FX_TUBU"), + TABL_FY_TUBU =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire FY_TUBU"), + TABL_FZ_TUBU =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire FZ_TUBU"), + TABL_MY_TUBU =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire MY_TUBU"), + TABL_MZ_TUBU =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire MZ_TUBU"), + TABL_FX_CORP =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire FX_CORP"), + TABL_FY_CORP =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire FY_CORP"), + TABL_FZ_CORP =SIMP(statut='f',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire FZ_CORP"), + TABL_MX_CORP =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire MX_CORP"), + TABL_MY_CORP =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire MY_CORP"), + TABL_MZ_CORP =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire MZ_CORP"), + ), + TABL_PRES =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des contraintes pour chargement unitaire de pression"), + ), + + RESU_THER =FACT(statut='f',max='**',fr="resultats thermiques", + NUME_RESU_THER =SIMP(statut='o',typ='I',fr="numéro de la table de résultat thermique" ), + TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des contraintes sous chargement thermique seul" ), + ), + SEISME =FACT(statut='f',max='**',fr="Situation séisme",ang="situation_ang", + NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ), + NB_CYCL_SEISME =SIMP(statut='o',typ='I',fr="nombre de cycles associé au séisme" ), + NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ), + NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), + NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéros du groupe de la situation" ), + CHAR_ETAT =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), + ), + SITUATION =FACT(statut='o',max='**',fr="Situation",ang="situation_ang", + NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ), + NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ), + NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), + COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ), + NUME_GROUPE =SIMP(statut='f',typ='I', + fr="numéros des groupes de la situation" ), + NUME_PASSAGE =SIMP(statut='f',typ='I',min=2,max=2, + fr="numéro des situations de passage" ), + NUME_RESU_THER =SIMP(statut='f',typ='I',max=1,fr="numeros de transitoires thermiques" ), + CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), + CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ), + PRES_A =SIMP(statut='o',typ='R',fr="pression etat A"), + PRES_B =SIMP(statut='o',typ='R',fr="pression etat B"), + TEMP_REF_A =SIMP(statut='f',typ='R',fr="temperature référence etat A"), + TEMP_REF_B =SIMP(statut='f',typ='R',fr="temperature référence etat B"), + ), + ), +# ====================================================================== + b_tuyauterie =BLOC(condition="(TYPE_RESU_MECA == 'TUYAUTERIE')", + + OPTION =SIMP(statut='o',typ='TXM',into=("FATIGUE",) ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + TYPE_KE =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"), + fr="Ke meca seul ou partition mecanique + thermique" ), + MODELE =SIMP(statut='o',typ=modele_sdaster), + CARA_ELEM =SIMP(statut='o',typ=cara_elem), + ZONE_ANALYSE =FACT(statut='o',fr="liste des mailles ou des noeuds analysés", + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + ), + RESU_MECA =FACT(statut='o',max='**',fr="Chargements mécaniques", + regles=(UN_PARMI('CHAM_GD','RESULTAT'),), + NUME_CHAR =SIMP(statut='o',typ='I',fr="numéro du chargement" ), + NOM_CHAR =SIMP(statut='f',typ='TXM',fr="nom du chargement" ), + CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster), + RESULTAT =SIMP(statut='f',typ=resultat_sdaster), + b_extrac =BLOC(condition="RESULTAT != None", + fr="extraction d un champ de grandeur", + regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','NOEUD_CMP'),), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=("EFGE_ELNO","SIEF_ELNO"),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',), + INST =SIMP(statut='f',typ='R',), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + b_acce_reel =BLOC(condition="(INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + ), + ), + INDI_SIGM =FACT(statut='o',max='**',fr="indices de contraintes", + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),), + C1 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes C1 du RCCM"), + K1 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K1 du RCCM"), + C2 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes C2 du RCCM"), + K2 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K2 du RCCM"), + C3 =SIMP(statut='f',typ='R',defaut=0.5,fr="indice de contraintes C3 du RCCM"), + K3 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K3 du RCCM"), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",),), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="groupe(s) de mailles ou sont affectés les indices de contraintes"), + MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**', + fr="liste des mailles ou sont affectés les indices de contraintes"), + b_grma =BLOC(condition="(GROUP_MA != None)or(MAILLE != None)", + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + ), + TYPE_ELEM_STANDARD =SIMP(statut='f',typ='TXM',into=("DRO","COU","TRN","TEE"), + fr="type d'élément de tuyauterie ou sont affectés les indices de contraintes"), + ), + RESU_THER =FACT(statut='f',max='**',fr="resultats thermiques", + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),), + NUME_RESU_THER =SIMP(statut='o',typ='I',fr="numéro de la table de résultat thermique" ), + TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des températures sur la section"), + TABL_MOYE_THER =SIMP(statut='o',typ=table_sdaster, + fr="table relevé des moyennes sur la section"), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + b_grma =BLOC(condition="(GROUP_MA != None)or(MAILLE != None)", + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + ), + ), + SEISME =FACT(statut='f',max='**',fr="Situation séisme",ang="situation_ang", + NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ), + NB_CYCL_SEISME =SIMP(statut='o',typ='I',fr="nombre de cycles associé au séisme" ), + NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ), + NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), + NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéros du groupe de la situation" ), + CHAR_ETAT =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), + TEMP_REF =SIMP(statut='f',typ='R',fr="temperature référence"), + ), + SITUATION =FACT(statut='o',max='**',fr="Situation",ang="situation_ang", + NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ), + NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ), + NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), + COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ), + NUME_GROUPE =SIMP(statut='f',typ='I', + fr="numéros des groupes de la situation" ), + NUME_PASSAGE =SIMP(statut='f',typ='I',min=2,max=2, + fr="numéro des situations de passage" ), + NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ), + CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), + CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ), + PRES_A =SIMP(statut='o',typ='R',fr="pression etat A"), + PRES_B =SIMP(statut='o',typ='R',fr="pression etat B"), + TEMP_REF_A =SIMP(statut='f',typ='R',fr="temperature référence etat A"), + TEMP_REF_B =SIMP(statut='f',typ='R',fr="temperature référence etat B"), + ), + ), +) ; +#& MODIF COMMANDE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# ====================================================================== +# CONFIGURATION MANAGEMENT OF EDF VERSION +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DESROCHES X.DESROCHES +POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f', + fr="Extraire des valeurs de composantes de champs de grandeurs pour y effectuer des calculs (moyenne,invariants,..)" + +" ou pour les exprimer dans d'autres repères", + docu="U4.81.21",UIinfo={"groupes":("Post-traitements","Résultats et champs",)}, + + ACTION =FACT(statut='o',max='**', + regles=(UN_PARMI('RESULTAT','CHAM_GD'),), + + OPERATION =SIMP(statut='o',typ='TXM',into=("EXTRACTION","MOYENNE","MOYENNE_ARITH","EXTREMA"), + validators=NoRepeat(), max=2), + INTITULE =SIMP(statut='o',typ='TXM'), + + CHAM_GD =SIMP(statut='f',typ=(cham_no_sdaster, + cham_elem,),), + RESULTAT =SIMP(statut='f',typ=resultat_sdaster), +# +# 1. Sensibilité +# 1.1. Cas d'un résultat réel +# Cas d'un résultat harmonique dont on veut partie réelle ou imaginaire +# + b_sensibilite =BLOC(condition=" (RESULTAT != None) and \ + ( AsType(RESULTAT) in (evol_elas,evol_ther,evol_noli,dyna_trans, \ + mode_meca,mode_flamb,mode_acou, \ + mult_elas,fourier_elas,fourier_ther) or \ + ( AsType(RESULTAT) in (dyna_harmo,acou_harmo) and FORMAT_C != 'MODULE' ) )", + fr="Définition des paramètres de sensibilité", + ang="Definition of sensitivity parameters", + regles=(CONCEPT_SENSIBLE("SEPARE"), REUSE_SENSIBLE(), + DERIVABLE('RESULTAT'),), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), + + ), +# +# 1.2. Cas d'un résultat harmonique dont on veut le module +# + b_sensibilite_harmo =BLOC(condition=" (RESULTAT != None) and \ + ( AsType(RESULTAT) in (dyna_harmo,acou_harmo) and FORMAT_C == 'MODULE' )", + fr="Définition des paramètres de sensibilité", + ang="Definition of sensitivity parameters", + regles=(CONCEPT_SENSIBLE("SEPARE"), REUSE_SENSIBLE(), + DERIVABLE('RESULTAT'),), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"), + b_sensibilite_harmo =BLOC(condition=" SENSIBILITE != None", + fr="Option pour la sensibilite", + ang="Option for sensitivity", + SENSIBILITE_OPTION =SIMP(statut='o',typ='TXM',into=("MODULE_SENSIBILITE","SENSIBILITE_MODULE",), + fr="Option : module de la dérivée ou dérivée du module", + ang="Option : modulus of derivative or derivative of modulus"), + ), + ), + + b_extrac =BLOC(condition = "RESULTAT != None",fr="extraction des résultats", + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','NUME_MODE','LIST_MODE', + 'INST','LIST_INST','FREQ','LIST_FREQ','NOEUD_CMP','NOM_CAS'), ), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO(),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_MODE =SIMP(statut='f',typ=listis_sdaster), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + + b_extrema =BLOC(condition="'EXTREMA' in OPERATION", + fr="recherche de MIN MAX", + regles=(EXCLUS('TOUT_CMP','NOM_CMP'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",)), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + ), + + b_MOYENNE_ARITH =BLOC(condition="'MOYENNE_ARITH' in OPERATION", + fr="moyenne sur des groupes", + regles=(EXCLUS('TOUT_CMP','NOM_CMP'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",)), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + ), + + b_autre =BLOC(condition="aucun(OPERATION, ('EXTREMA', 'MOYENNE_ARITH'))", + fr="extraction et moyenne", + regles=(AU_MOINS_UN('CHEMIN','GROUP_NO','NOEUD'), + EXCLUS('CHEMIN','GROUP_NO'), + EXCLUS('CHEMIN','NOEUD'), + PRESENT_ABSENT('CHEMIN','GROUP_MA','MAILLE'), + UN_PARMI('TOUT_CMP','NOM_CMP','INVARIANT','ELEM_PRINCIPAUX','RESULTANTE'), + PRESENT_PRESENT('TRAC_DIR','DIRECTION'), + ENSEMBLE('MOMENT','POINT'), + PRESENT_PRESENT('MOMENT','RESULTANTE'), + PRESENT_ABSENT('TOUT_CMP','TRAC_DIR','TRAC_NOR'), + EXCLUS('TRAC_DIR','TRAC_NOR'), + PRESENT_PRESENT('ORIGINE','AXE_Z'),), + + CHEMIN =SIMP(statut='f',typ=(courbe_sdaster,surface_sdaster) ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + + TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",)), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**'), + INVARIANT =SIMP(statut='f',typ='TXM',into=("OUI",)), + ELEM_PRINCIPAUX =SIMP(statut='f',typ='TXM',into=("OUI",) ), + RESULTANTE =SIMP(statut='f',typ='TXM',max='**'), + + MOMENT =SIMP(statut='f',typ='TXM',max='**'), + POINT =SIMP(statut='f',typ='R',max='**'), + + REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL", + into=("GLOBAL","LOCAL","POLAIRE","UTILISATEUR","CYLINDRIQUE"),), + ANGL_NAUT =SIMP(statut='f',typ='R',min=3,max=3), + ORIGINE =SIMP(statut='f',typ='R',min=3,max=3), + AXE_Z =SIMP(statut='f',typ='R',min=3,max=3), + + TRAC_NOR =SIMP(statut='f',typ='TXM',into=("OUI",)), + TRAC_DIR =SIMP(statut='f',typ='TXM',into=("OUI",)), + DIRECTION =SIMP(statut='f',typ='R',max='**'), + + VECT_Y =SIMP(statut='f',typ='R',max='**'), + MOYE_NOEUD =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + ), + + FORMAT_C =SIMP(statut='f',typ='TXM',defaut="MODULE",into=("MODULE","REEL","IMAG")), + + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 20/09/2011 AUTEUR GENIAUT S.GENIAUT +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT + +POST_RUPTURE=MACRO(nom="POST_RUPTURE", + op=OPS("Macro.post_rupture_ops.post_rupture_ops"), + sd_prod=table_sdaster, + fr="post-traitements en Rupture", + reentrant='f', + UIinfo={"groupes":("Résultats et champs","Rupture",)}, + + TABLE = SIMP(statut='o',typ=table_sdaster,max='**'), + +# rq : il est impossible de proposer le bon choix pour OPERATION suivant la valeur de reuse... + OPERATION = SIMP(statut='o',typ='TXM',into=( + 'ABSC_CURV_NORM', + 'ANGLE_BIFURCATION', + 'K_EQ', + 'DELTA_K_EQ', + 'COMPTAGE_CYCLES', + 'LOI_PROPA', + 'CUMUL_CYCLES', + 'PILO_PROPA', + ) + ), + +#----------------------------------------------------------------------------------------------------------------------------------- +# 'ABSC_CURV_NORM' +#----------------------------------------------------------------------------------------------------------------------------------- + + + b_absc = BLOC(condition="OPERATION == 'ABSC_CURV_NORM'",fr="normalise l'abscisse curviligne", + + NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="ABSC_CURV_NORM",fr="Nom de la nouvelle colonne"), + + ), + +#----------------------------------------------------------------------------------------------------------------------------------- +# 'ANGLE_BIFURCATION' +#----------------------------------------------------------------------------------------------------------------------------------- + + b_angle = BLOC(condition="OPERATION == 'ANGLE_BIFURCATION' ",fr="Angle de bifurcation", + + NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="BETA",fr="Nom de la nouvelle colonne"), +# CRITERE = SIMP(statut='f',typ='TXM',max=1,defaut="SITT_MAX",into=('SITT_MAX','K1_MAX','K2_NUL','G_MAX'),), + CRITERE = SIMP(statut='f',typ='TXM',max=1,defaut="SITT_MAX",into=('SITT_MAX','K1_MAX','K2_NUL'),), + b_mate = BLOC(condition="CRITERE == 'G_MAX' ",fr="info pour le calcul du critere en G", + MATER = SIMP(statut='o',typ=mater_sdaster,), + MODELISATION =SIMP(statut='o',typ='TXM',into=("AXIS","D_PLAN","C_PLAN"),), + ), + ), + +#----------------------------------------------------------------------------------------------------------------------------------- +# 'K_EQ' +#----------------------------------------------------------------------------------------------------------------------------------- + + b_Keq = BLOC(condition="OPERATION == 'K_EQ' ",fr="Cumul sur les modes : calcul du K equivalent", + + NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="K_EQ",fr="Nom de la nouvelle colonne"), + CUMUL = SIMP(statut='f',typ='TXM',max=1,defaut="CUMUL_G",fr="Formule de cumul des modes", + into=('LINEAIRE','QUADRATIQUE','CUMUL_G','MODE_I'),), + + b_mater = BLOC(condition="CUMUL in ('QUADRATIQUE','CUMUL_G')",fr="materiau du fond de fissure", + MATER = SIMP(statut='o',typ=mater_sdaster,), + ), + ), + +#----------------------------------------------------------------------------------------------------------------------------------- +# 'DELTA_K_EQ' +#----------------------------------------------------------------------------------------------------------------------------------- + + b_DeltaKeq = BLOC(condition="OPERATION == 'DELTA_K_EQ' ",fr="Cumul sur les modes : calcul du DeltaK equivalent", + + NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="DELTA_K_EQ",fr="Nom de la nouvelle colonne"), + CUMUL = SIMP(statut='f',typ='TXM',max=1,defaut="CUMUL_G",fr="Formule de cumul des modes", + into=('QUADRATIQUE','CUMUL_G','MODE_I'),), + + b_mater = BLOC(condition="CUMUL in ('QUADRATIQUE','CUMUL_G')",fr="materiau du fond de fissure", + MATER = SIMP(statut='o',typ=mater_sdaster,), + ), + + ), + +#----------------------------------------------------------------------------------------------------------------------------------- +# 'COMPTAGE_CYCLES' +#----------------------------------------------------------------------------------------------------------------------------------- + + b_Comptage = BLOC(condition="OPERATION == 'COMPTAGE_CYCLES' ",fr="Comptage des cycles", + + NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**', + fr="Nom des quantités sur lesquelles s'effectuent le comptage"), + COMPTAGE = SIMP(statut='o',typ='TXM',into=("RAINFLOW","RCCM","NATUREL","UNITAIRE")), + DELTA_OSCI = SIMP(statut='f',typ='R',defaut= 0.0E+0), + + b_Comptage_Unitaire = BLOC(condition="COMPTAGE=='UNITAIRE'", + fr="comptage unitaire pour les amplitudes constantes", + + COEF_MULT_MINI = SIMP(statut='o',typ='R',), + COEF_MULT_MAXI = SIMP(statut='o',typ='R',), + + ), + + ), + +#----------------------------------------------------------------------------------------------------------------------------------- +# 'LOI_PROPA' +#----------------------------------------------------------------------------------------------------------------------------------- + + b_Loi_Propa = BLOC(condition="OPERATION == 'LOI_PROPA' ",fr="calcul de l'incrément d'avancée de fissure par cycle", + + NOM_PARA = SIMP(statut='f',typ='TXM',defaut="DELTA_A" ,max=1,fr="Nom de la nouvelle colonne"), + NOM_DELTA_K_EQ = SIMP(statut='f',typ='TXM',defaut="DELTA_K_EQ",max=1,fr="Nom de la quantité correspondant au Delta_K_eq"), + LOI = SIMP(statut='o',typ='TXM',into=("PARIS",)), + + b_paris = BLOC(condition = "LOI=='PARIS'", + C = SIMP(statut='o',typ='R',), + M = SIMP(statut='o',typ='R',), + ), + + ), + +#----------------------------------------------------------------------------------------------------------------------------------- +# 'CUMUL_CYCLES' +#----------------------------------------------------------------------------------------------------------------------------------- + + b_cumul = BLOC(condition="OPERATION == 'CUMUL_CYCLES' ",fr="Cumul sur les cycles", + + NOM_PARA = SIMP(statut='f',typ='TXM',max=1,defaut="DELTA_A",fr="Nom de la colonne à traiter"), + CUMUL = SIMP(statut='f',typ='TXM',max=1,defaut="LINEAIRE",into=('LINEAIRE',)), + + ), + +#----------------------------------------------------------------------------------------------------------------------------------- +# 'PILO_PROPA' +#----------------------------------------------------------------------------------------------------------------------------------- + + b_pilo_propa = BLOC(condition="OPERATION == 'PILO_PROPA' ",fr="Pilotage de la propagation", + + regles = UN_PARMI('DELTA_A_MAX','DELTA_N'), + DELTA_A_MAX = SIMP(statut='f',typ='R',max=1,val_min=0.,fr="Pilotage en incrément d'avancée max"), + DELTA_N = SIMP(statut='f',typ='R',max=1,val_min=1 ,fr="Pilotage en incrément de nombre de blocs"), + + ), + +#----------------------------------------------------------------------------------------------------------------------------------- + +) ; +#& MODIF COMMANDE DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ZENTNER I.ZENTNER +POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=table_sdaster,reentrant='f', + UIinfo={"groupes":("Post-traitements",)}, + fr="Calcul des volumes d'usure et des profondeurs d'usure d'après la puissance d'usure", + regles=(UN_PARMI('TUBE_NEUF','RESU_GENE','PUIS_USURE'), + PRESENT_PRESENT('RESU_GENE','NOEUD','LOI_USURE'), + PRESENT_PRESENT('PUIS_USURE','LOI_USURE'),), + TUBE_NEUF =SIMP(statut='f',typ='TXM',into=("OUI",) ), + ETAT_INIT =FACT(statut='f', + TABL_USURE =SIMP(statut='f',typ=table_sdaster), + INST_INIT =SIMP(statut='f',typ='R'), + ), + RESU_GENE =SIMP(statut='f',typ=tran_gene), + NOEUD =SIMP(statut='f',typ=no,), + INST_INIT =SIMP(statut='f',typ='R',defaut=-1.0E+0), + INST_FIN =SIMP(statut='f',typ='R'), + NB_BLOC =SIMP(statut='f',typ='I',defaut= 1 ), + PUIS_USURE =SIMP(statut='f',typ='R'), + LOI_USURE =SIMP(statut='f',typ='TXM',into=("ARCHARD","KWU_EPRI","EDF_MZ")), + b_archard =BLOC(condition = "LOI_USURE == 'ARCHARD'", + regles=(UN_PARMI('MOBILE','MATER_USURE','SECTEUR'), + EXCLUS('MATER_USURE','OBSTACLE'), + EXCLUS('MOBILE','USURE_OBST'),), + MOBILE =FACT(statut='f', + COEF_USURE =SIMP(statut='o',typ='R'), + ), + OBSTACLE =FACT(statut='f', + COEF_USURE =SIMP(statut='o',typ='R'), + ), + SECTEUR =FACT(statut='f',max='**', + CONTACT =SIMP(statut='f',typ='TXM',into=("TUBE_BAV","TUBE_ALESAGE","TUBE_4_ENCO", + "GRAPPE_ALESAGE","TUBE_3_ENCO","TUBE_TUBE", + "GRAPPE_1_ENCO","GRAPPE_2_ENCO")), + COEF_USUR_MOBILE=SIMP(statut='f',typ='R'), + COEF_USUR_OBST =SIMP(statut='f',typ='R'), + ANGL_INIT =SIMP(statut='f',typ='R'), + ANGL_FIN =SIMP(statut='f',typ='R'), + ), + MATER_USURE =SIMP(statut='f',typ='TXM'), + USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)), + ), + b_kwu_epri =BLOC(condition = "LOI_USURE == 'KWU_EPRI'", + regles=(UN_PARMI('MOBILE','MATER_USURE'), + EXCLUS('MATER_USURE','OBSTACLE'), + EXCLUS('MOBILE','USURE_OBST'),), + MOBILE =FACT(statut='f', + COEF_FNOR =SIMP(statut='f',typ='R'), + COEF_VTAN =SIMP(statut='f',typ='R'), + COEF_USURE =SIMP(statut='f',typ='R'), + COEF_K =SIMP(statut='f',typ='R',defaut=5.0E+0), + COEF_C =SIMP(statut='f',typ='R',defaut=10.0E+0), + ), + OBSTACLE =FACT(statut='f', + COEF_FNOR =SIMP(statut='f',typ='R' ), + COEF_VTAN =SIMP(statut='f',typ='R' ), + COEF_USURE =SIMP(statut='o',typ='R'), + COEF_K =SIMP(statut='f',typ='R',defaut=5.0E+0), + COEF_C =SIMP(statut='f',typ='R',defaut=10.0E+0), + ), + MATER_USURE =SIMP(statut='f',typ='TXM'), + USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)), + FNOR_MAXI =SIMP(statut='f',typ='R' ), + VTAN_MAXI =SIMP(statut='f',typ='R' ), + ), + b_edf_mz =BLOC(condition = "LOI_USURE == 'EDF_MZ'", + regles=(UN_PARMI('MOBILE','MATER_USURE'), + EXCLUS('MATER_USURE','OBSTACLE'), + EXCLUS('MOBILE','USURE_OBST'),), + MOBILE =FACT(statut='f', + COEF_USURE =SIMP(statut='f',typ='R',defaut=1.0E-13), + COEF_B =SIMP(statut='f',typ='R',defaut=1.2E+0), + COEF_N =SIMP(statut='f',typ='R',defaut=2.44E-8), + COEF_S =SIMP(statut='f',typ='R',defaut=1.14E-16), + ), + OBSTACLE =FACT(statut='f', + COEF_USURE =SIMP(statut='o',typ='R',defaut=1.0E-13), + COEF_B =SIMP(statut='f',typ='R',defaut=1.2E+0), + COEF_N =SIMP(statut='f',typ='R',defaut=2.44E-8), + COEF_S =SIMP(statut='f',typ='R',defaut=1.14E-16), + ), + MATER_USURE =SIMP(statut='f',typ='TXM'), + USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)), + ), + b_tube_neuf =BLOC(condition = "TUBE_NEUF == 'OUI'", + TABL_USURE =SIMP(statut='o',typ=table_sdaster), + ), + CONTACT =SIMP(statut='f',typ='TXM',into=("TUBE_BAV","TUBE_ALESAGE","TUBE_4_ENCO", + "GRAPPE_ALESAGE","TUBE_3_ENCO","TUBE_TUBE", + "GRAPPE_1_ENCO","GRAPPE_2_ENCO")), + RAYON_MOBILE =SIMP(statut='f',typ='R'), + RAYON_OBST =SIMP(statut='f',typ='R'), + LARGEUR_OBST =SIMP(statut='f',typ='R'), + ANGL_INCLI =SIMP(statut='f',typ='R'), + ANGL_ISTHME =SIMP(statut='f',typ='R'), + ANGL_IMPACT =SIMP(statut='f',typ='R'), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + COEF_INST =SIMP(statut='f',typ='R',defaut=1.0E+0), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 12/10/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE + +POURSUITE=MACRO(nom="POURSUITE", + op=OPS("ops.build_poursuite"), + repetable='n', + fr="Poursuite d'une étude à partir de la sauvegarde au format JEVEUX " \ + "ou HDF de sa base globale", + sd_prod = ops.POURSUITE, + UIinfo={"groupes":("Gestion du travail",)}, + op_init=ops.POURSUITE_context, + fichier_ini=1, + FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f', + typ='TXM',defaut="NON",into=("OUI","NON",) ), + PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM', + into=("OUI","NON"),defaut="OUI"), + IMPR_MACRO =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess", + statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"), + + BASE =FACT(fr="définition des paramètres associés aux bases JEVEUX", + statut='f',min=1,max=2, + FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM'), + TITRE =SIMP(statut='f',typ='TXM'), + CAS =SIMP(statut='f',typ='TXM'), + NMAX_ENRE =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'), + LONG_ENRE =SIMP(fr="longueur des enregistrements",statut='f',typ='I'), + LONG_REPE =SIMP(fr="longueur du répertoire",statut='f',typ='I'), + ), + +# Le mot cle CATALOGUE n'est jamais utilise en POURSUITE mais sa presence est necessaire au bon fonctionnement +# de la commande, le code source etant commun aux commandes DEBUT et POURSUITE. +# + CATALOGUE =FACT(statut='f',min=1,max=10, + FICHIER =SIMP(statut='o',typ='TXM'), + UNITE =SIMP(statut='f',typ='I'), + ), + + ERREUR =FACT(fr="comportement en cas d'erreur",statut='f',min=1,max=1, + ERREUR_F =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),defaut='ABORT'), + ), + + DEBUG =FACT(fr="option de déboggage reservée aux développeurs", + statut='f',min=1,max=1, + JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire", + statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'), + SDVERI =SIMP(fr="vérifie la conformité des SD produites par les commandes", + statut='f',typ='TXM',into=('OUI','NON')), + JEVEUX =SIMP(fr="force les déchargement sur disque", + statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'), + ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA", + statut='f',typ='TXM',into=('TEST',)), + ), + + MESURE_TEMPS =FACT(fr="Pour choisir les mesures de temps consommé dans les commandes", + statut='d',min=1,max=1, + NIVE_DETAIL =SIMP(fr="niveau de détail des impressions", + statut='f',typ='I',into=(0,1,2,3),defaut=1), + # 0 : rien + # 1 : impression en fin de commande des mesures principales + # 2 : impression en fin de commande des mesures principales et secondaires + # 3 : impression des mesures principales et secondaires pour chaque pas de temps + ), + + MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='d',min=1,max=1, + GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'), + TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1), + TAILLE =SIMP(statut='f',typ='I'), + TAILLE_BLOC =SIMP(statut='f',typ='R',defaut=800.), + PARTITION =SIMP(statut='f',typ='R' ), + DYNAMIQUE =SIMP(statut='f',typ='I',defaut=1), + ), + + RESERVE_CPU =FACT(fr="reserve de temps pour terminer une execution",statut='d',max=1, + regles=(EXCLUS('VALE','POURCENTAGE'),), + VALE =SIMP(statut='f',typ='I',val_min=0), +# valeur par défaut fixée à 10. dans le FORTRAN si CODE présent + POURCENTAGE =SIMP(statut='f',typ='R',val_min=0.,val_max=1.0), +# valeur par défaut fixée à 10% dans le FORTRAN + BORNE =SIMP(statut='f',typ='I',val_min=0,defaut=900) ), +# valeur en pourcentage du temps maximum bornée à 900 secondes + + CODE =FACT("définition d'un nom pour l'ensemble d'une étude", + statut='f',min=1,max=1, + NOM =SIMP(statut='o',typ='TXM'), + ), + + + IGNORE_ALARM = SIMP(statut='f', typ='TXM', max='**', fr="Alarmes que l'utilisateur souhaite délibérément ignorer"), + + LANG = SIMP(statut='f', typ='TXM', into=('FR', 'EN',), + fr="Permet de choisir la langue utilisée pour les messages (si disponible)", + ang="Allows to choose the language used for messages (if available)"), + + INFO = SIMP(statut='f', typ='I', defaut=1, into=(1,2),), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +PRE_GIBI=PROC(nom="PRE_GIBI",op=49, + UIinfo={"groupes":("Gestion du travail",)}, + fr="Conversion d'un fichier de maillage GIBI au format Aster", + UNITE_GIBI =SIMP(statut='f',typ='I',defaut=19), + UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +PRE_GMSH=PROC(nom="PRE_GMSH",op=47, + UIinfo={"groupes":("Gestion du travail",)}, + fr="Conversion d'un fichier de maillage GMSH au format Aster", + UNITE_GMSH =SIMP(statut='f',typ='I',defaut=19), + UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE MIKCHEVITCH A.MIKCHEVITCH +PRE_IDEAS=PROC(nom="PRE_IDEAS",op=47, + UIinfo={"groupes":("Gestion du travail",)}, + fr="Conversion d'un fichier universel IDEAS-SUPERTAB au format Aster", + UNITE_IDEAS =SIMP(statut='f',typ='I',defaut=19), + UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20), + CREA_GROUP_COUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + +PROD_MATR_CHAM=OPER(nom="PROD_MATR_CHAM",op= 156,sd_prod=cham_no_sdaster, + fr="Effectuer le produit d'une matrice par un vecteur", + reentrant='n', + UIinfo={"groupes":("Post-traitements","Matrices et vecteurs",)}, + MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_pres_c ) ), + CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET +def proj_champ_prod(RESULTAT=None,CHAM_GD=None,**args ): + if (RESULTAT == None and CHAM_GD == None) : return corresp_2_mailla + if RESULTAT != None : return AsType(RESULTAT) + if CHAM_GD != None : return AsType(CHAM_GD) + raise AsException("type de concept resultat non prevu") + + + + +PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f', + UIinfo={"groupes":("Résultats et champs",)}, + fr="Projeter des champs d'un maillage sur un autre", + + # faut-il projeter les champs ? + PROJECTION =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",),), + + # pour projeter avec une sd_corresp_2_mailla deja calculée : + MATR_PROJECTION =SIMP(statut='f',typ=corresp_2_mailla,), + + + + #----------------------------------------------------------------------------------------------------------- + # 1er cas : on fait tout d'un coup : creation de la sd_corresp_2_mailla + projection des champs + #----------------------------------------------------------------------------------------------- + b_1_et_2 =BLOC(condition= "PROJECTION == 'OUI' and MATR_PROJECTION == None", + regles=(UN_PARMI('RESULTAT','CHAM_GD'), + UN_PARMI('MODELE_1','MAILLAGE_1'), + UN_PARMI('MODELE_2','MAILLAGE_2'), + ), + RESULTAT =SIMP(statut='f',typ=resultat_sdaster), + CHAM_GD =SIMP(statut='f',typ=(cham_no_sdaster,cham_elem)), + + METHODE =SIMP(statut='f',typ='TXM',defaut="AUTO", + into=("NUAGE_DEG_0","NUAGE_DEG_1","AUTO","COLLOCATION","ECLA_PG",) ), + + + MODELE_1 =SIMP(statut='f',typ=modele_sdaster), + MAILLAGE_1 =SIMP(statut='f',typ=maillage_sdaster), + + MODELE_2 =SIMP(statut='f',typ=modele_sdaster), + MAILLAGE_2 =SIMP(statut='f',typ=maillage_sdaster), + + # Cas de la projection NUAGE_DEG_0/1 : + #-------------------------------------------- + b_nuage =BLOC(condition="METHODE in ('NUAGE_DEG_0','NUAGE_DEG_1')", + CHAM_NO_REFE =SIMP(statut='o',typ=cham_no_sdaster), + ), + + + # Cas de la projection COLLOCATION : + #-------------------------------------------- + b_elem =BLOC(condition="METHODE in ('COLLOCATION','ECLA_PG','AUTO')", + CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",), + fr="Pour indiquer au programme le type de projection souhaité"), + DISTANCE_MAX =SIMP(statut='f',typ='R', + fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."), + + TRANSF_GEOM_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_1 avant la projection."), + TRANSF_GEOM_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_2 avant la projection."), + + ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + + TYPE_CHAM =SIMP(statut='f',typ='TXM',into=("NOEU",), + fr="Pour forcer le type des champs projetés. NOEU -> cham_no"), + + PROL_ZERO =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON", + fr="Pour prolonger les champs par zéro là ou la projection ne donne pas de valeurs."), + ), + + + # Cas de la projection d'une sd_resultat : + #-------------------------------------------- + b_resultat =BLOC(condition="RESULTAT != None", + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','LIST_INST','LIST_FREQ','LIST_ORDRE'), + EXCLUS('TOUT_CHAM','NOM_CHAM',), + CONCEPT_SENSIBLE('SEPARE'), + REUSE_SENSIBLE(), + DERIVABLE('RESULTAT'),), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramétres de sensibilité.", + ang="List of sensitivity parameters",), + + NOM_PARA =SIMP(statut='f',typ='TXM', max='**'), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO(),), + + NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster), + fr="Utile en dynamique pour pouvoir imoser la numérotation des cham_no."), + + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + + b_acce_reel =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + ), + + + VIS_A_VIS =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT_1','GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), + AU_MOINS_UN('TOUT_2','GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),), + TOUT_1 =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TOUT_2 =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + + # les mots clés suivants ne sont actifs que si METHODE='COLLOCATION' mais on ne peut pas le vérifier: + CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ), + TRANSF_GEOM_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_1 avant la projection."), + TRANSF_GEOM_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_2 avant la projection."), + ), + ), # fin bloc b_1_et_2 + + + + #----------------------------------------------------------------------------------------------------------- + # 2eme cas : on s'arrete apres la creation de la sd_corresp_2_mailla + #----------------------------------------------------------------------------------------------- + b_1 =BLOC(condition="PROJECTION == 'NON'", + + METHODE =SIMP(statut='f',typ='TXM',defaut="COLLOCATION", + into=("COLLOCATION","COUPLAGE",) ), + + regles=(UN_PARMI('MODELE_1','MAILLAGE_1'), + UN_PARMI('MODELE_2','MAILLAGE_2'), + ), + MODELE_1 =SIMP(statut='f',typ=modele_sdaster), + MAILLAGE_1 =SIMP(statut='f',typ=maillage_sdaster), + + MODELE_2 =SIMP(statut='f',typ=modele_sdaster), + MAILLAGE_2 =SIMP(statut='f',typ=maillage_sdaster), + + + # Cas de la projection COLLOCATION : + #-------------------------------------------- + b_elem =BLOC(condition="METHODE in ('COLLOCATION',)", + CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",), + fr="Pour indiquer au programme le type de projection souhaité"), + DISTANCE_MAX =SIMP(statut='f',typ='R', + fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."), + + TRANSF_GEOM_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_1 avant la projection."), + TRANSF_GEOM_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_2 avant la projection."), + + ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + + ), + + VIS_A_VIS =FACT(statut='f',max='**', + regles=(AU_MOINS_UN('TOUT_1','GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), + AU_MOINS_UN('TOUT_2','GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),), + TOUT_1 =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + TOUT_2 =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + + # les mots clés suivants ne sont actifs que si METHODE='COLLOCATION' mais on ne peut pas le vérifier: + CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ), + TRANSF_GEOM_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_1 avant la projection."), + TRANSF_GEOM_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3, + fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+ + " aux noeuds du MODELE_2 avant la projection."), + ), + ), # fin bloc b_1 + + + + #----------------------------------------------------------------------------------------------------------- + # 3eme cas : on projette les champs avec une sd_corresp_2_mailla déjé calculée + #----------------------------------------------------------------------------------------------- + b_2 =BLOC(condition="MATR_PROJECTION != None", + regles=(UN_PARMI('RESULTAT','CHAM_GD'),), + RESULTAT =SIMP(statut='f',typ=resultat_sdaster), + CHAM_GD =SIMP(statut='f',typ=(cham_no_sdaster,cham_elem)), + + TYPE_CHAM =SIMP(statut='f',typ='TXM',into=("NOEU",), + fr="Pour forcer le type des champs projetés. NOEU -> cham_no"), + + NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster), + fr="Parfois utile en dynamique pour pouvoir imposer la numérotation des cham_no."), + + # nécessaire si l'on projette des cham_elem : + MODELE_2 =SIMP(statut='f',typ=modele_sdaster), + + PROL_ZERO =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON", + fr="Pour prolonger les champs par zéro là où la projection ne donne pas de valeurs."), + + + + # Cas de la projection d'une sd_resultat : + #-------------------------------------------- + b_resultat =BLOC(condition="RESULTAT != None", + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','LIST_INST','LIST_FREQ','LIST_ORDRE'), + EXCLUS('TOUT_CHAM','NOM_CHAM',), + CONCEPT_SENSIBLE('SEPARE'), + REUSE_SENSIBLE(), + DERIVABLE('RESULTAT'),), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramétres de sensibilité.", + ang="List of sensitivity parameters",), + + NOM_PARA =SIMP(statut='f',typ='TXM', max='**'), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO(),), + + + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'), + + b_acce_reel =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + + ), + ), # fin bloc b_2 + + + + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE BOYERE E.BOYERE +def matr_asse_gene_prod(MATR_ASSE,MATR_ASSE_GENE,**args): + if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_gene_r + if AsType(MATR_ASSE_GENE) == matr_asse_gene_r : return matr_asse_gene_r + if AsType(MATR_ASSE) == matr_asse_depl_c : return matr_asse_gene_c + if AsType(MATR_ASSE_GENE) == matr_asse_gene_c : return matr_asse_gene_c + raise AsException("type de concept resultat non prevu") + +PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op= 71,sd_prod=matr_asse_gene_prod, + fr="Projection d'une matrice assemblée sur une base (modale ou de RITZ)", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=(UN_PARMI('MATR_ASSE','MATR_ASSE_GENE'),), + BASE =SIMP(statut='o',typ=(mode_meca,mode_gene ) ), + NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), + MATR_ASSE =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c) ), + MATR_ASSE_GENE =SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c) ), +) ; + +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ANDRIAM H.ANDRIAMBOLOLONA +def proj_mesu_modal_prod(MODELE_MESURE,**args): + vale=MODELE_MESURE['MESURE'] + if AsType(vale) == dyna_trans : return tran_gene + if AsType(vale) == dyna_harmo : return harm_gene + if AsType(vale) == mode_meca : return mode_gene + if AsType(vale) == mode_meca_c : return mode_gene +# if AsType(vale) == base_modale : return mode_gene + raise AsException("type de concept resultat non prevu") + +PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193, + sd_prod=proj_mesu_modal_prod, + reentrant='n', + UIinfo={"groupes":("Résultats et champs",)}, + fr="Calcul des coordonnees généralisees de mesure experimentale relatives a une base de projection", + + MODELE_CALCUL =FACT(statut='o', + MODELE =SIMP(statut='o',typ=(modele_sdaster) ), +# BASE =SIMP(statut='o',typ=(mode_meca,base_modale,) ), + BASE =SIMP(statut='o',typ= mode_meca, ), + ), + MODELE_MESURE =FACT(statut='o', + MODELE =SIMP(statut='o',typ=(modele_sdaster) ), +# MESURE =SIMP(statut='o',typ=(dyna_trans,dyna_harmo,base_modale,mode_meca,mode_meca_c,) ), + MESURE =SIMP(statut='o',typ=(dyna_trans,dyna_harmo,mode_meca,mode_meca_c,) ), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE", + "SIEF_NOEU","EPSI_NOEU",),max='**'), + ), + CORR_MANU =FACT(statut='f',max='**', + regles=(PRESENT_PRESENT('NOEU_CALCUL','NOEU_MESURE'),), + NOEU_CALCUL =SIMP(statut='f',typ=no), + NOEU_MESURE =SIMP(statut='f',typ=no), + ), + NOM_PARA =SIMP(statut='f',typ='TXM',max='**'), + RESOLUTION =FACT(statut='f', + METHODE =SIMP(statut='f',typ='TXM',defaut="LU",into=("LU","SVD",) ), + b_svd =BLOC(condition="METHODE=='SVD'", + EPS=SIMP(statut='f',typ='R',defaut=0. ), + ), + REGUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","NORM_MIN","TIK_RELA",) ), + b_regul =BLOC(condition="REGUL!='NON'", + regles=(PRESENT_ABSENT('COEF_PONDER','COEF_PONDER_F', ),), + COEF_PONDER =SIMP(statut='f',typ='R',defaut=0. ,max='**' ), + COEF_PONDER_F =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ), + ), + ), + + ); +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE ADOBES A.ADOBES +PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=table_fonction,reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + fr="Projecter un ou plusieurs spectres de turbulence sur une (ou plusieurs) base(s) modale(s) ", + regles=(UN_PARMI('BASE_ELAS_FLUI','MODE_MECA','CHAM_NO'),), + SPEC_TURB =SIMP(statut='o',typ=spectre_sdaster,validators=NoRepeat(),max='**' ), + TOUT_CMP =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ), + MODE_MECA =SIMP(statut='f',typ=mode_meca ), + CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster), + FREQ_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ), + FREQ_FIN =SIMP(statut='o',typ='R',val_min=0.E+0 ), + NB_POIN =SIMP(statut='o',typ='I' ), + OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG")), + GROUP_MA =SIMP(statut='f',typ=grma), +# Quel est le type attendu derriere MODELE_INTERFACE + MODELE_INTERFACE=SIMP(statut='f',typ=modele_sdaster), + VECT_X =SIMP(statut='f',typ='R',min=3,max=3 ), + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3 ), + ORIG_AXE =SIMP(statut='f',typ='R',min=3,max=3 ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE BOYERE E.BOYERE + +PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene, + fr="Projection d'un vecteur assemblé sur une base (modale ou de RITZ)", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE'),), + BASE =SIMP(statut='o',typ=(mode_meca,mode_gene) ), + NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), + TYPE_VECT =SIMP(statut='f',typ='TXM',defaut="FORC"), + VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster), + VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene ), +) ; +#& MODIF COMMANDE DATE 20/09/2011 AUTEUR COLOMBO D.COLOMBO +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GALENNE E.GALENNE + + + +def propa_fiss_prod(self,**args): + if args.has_key('MAIL_TOTAL') : + MAIL_TOTAL = args['MAIL_TOTAL'] + self.type_sdprod(MAIL_TOTAL,maillage_sdaster) + if args.has_key('MAIL_FISS') : + MAIL_FISS = args['MAIL_FISS'] + self.type_sdprod(MAIL_FISS,maillage_sdaster) + if args.has_key('FISSURE') : + FISSURE = args['FISSURE'] + for numfis in FISSURE : + if (args['METHODE_PROPA']=='MAILLAGE') : + self.type_sdprod(numfis['MAIL_PROPAGE'],maillage_sdaster) + else : + self.type_sdprod(numfis['FISS_PROPAGEE'],fiss_xfem) + return None + +PROPA_FISS=MACRO(nom="PROPA_FISS", + op=OPS('Macro.propa_fiss_ops.propa_fiss_ops'), + sd_prod=propa_fiss_prod, + fr="Propagation de fissure avec X-FEM",reentrant='n', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + + METHODE_PROPA = SIMP(statut='o',typ='TXM', + into=("SIMPLEXE","UPWIND","MAILLAGE","INITIALISATION","GEOMETRIQUE") ), + + b_hamilton = BLOC(condition="(METHODE_PROPA=='SIMPLEXE') or (METHODE_PROPA=='UPWIND') or (METHODE_PROPA=='GEOMETRIQUE') ", + MODELE = SIMP(statut='o',typ=modele_sdaster), + TEST_MAIL = SIMP(statut='f',typ='TXM',into=("NON","OUI",),defaut="NON"), + DA_MAX = SIMP(statut='o',typ='R',max=1), + RAYON = SIMP(statut='o',typ='R',), + ZONE_MAJ = SIMP(statut='f',typ='TXM',into=("TOUT","TORE"),defaut="TORE"), + b_tore = BLOC(condition = "ZONE_MAJ == 'TORE' ", + RAYON_TORE = SIMP(statut='f',typ='R',max=1,val_min=0.0), + ), + b_propagation = BLOC(condition = "TEST_MAIL == 'NON' ", + FISSURE = FACT(statut='o',min=1,max='**', + FISS_ACTUELLE = SIMP(statut='o',typ=fiss_xfem,max=1), + FISS_PROPAGEE = SIMP(statut='o',typ=CO,max=1), + NB_POINT_FOND = SIMP(statut='f',typ='I',max='**'), + TABLE = SIMP(statut='o',typ=table_sdaster,max=1), + ), + LOI_PROPA = FACT(statut='o',max=1, + LOI = SIMP(statut='o',typ='TXM',into=("PARIS",),defaut="PARIS"), + b_paris = BLOC(condition = "LOI=='PARIS'", + C = SIMP(statut='o',typ='R',), + N = SIMP(statut='o',typ='R',), + M = SIMP(statut='o',typ='R',), + ), + MATER = SIMP(statut='o',typ=mater_sdaster,), + ), + COMP_LINE = FACT(statut='f',max=1, + COEF_MULT_MINI = SIMP(statut='o',typ='R',), + COEF_MULT_MAXI = SIMP(statut='o',typ='R',), + ), + ), + + b_test_const = BLOC(condition = "TEST_MAIL == 'OUI' ", + FISSURE = FACT(statut='o',min=1,max='**', + FISS_ACTUELLE = SIMP(statut='o',typ=fiss_xfem,max=1), + FISS_PROPAGEE = SIMP(statut='o',typ=CO,max=1), + ), + ITERATIONS = SIMP(statut='f',typ='I',max=1,val_min=3,defaut=5), + TOLERANCE = SIMP(statut='f',typ='R',max=1,val_min=0.0,val_max=100.0,defaut=5.0), + ), + + ), + + b_maillage =BLOC(condition="(METHODE_PROPA=='MAILLAGE')", + MAIL_STRUC = SIMP(statut='o',typ=maillage_sdaster), + ITERATION = SIMP(statut='o',typ='I',max=1), + DA_MAX = SIMP(statut='o',typ='R',max=1), + + FISSURE = FACT(statut='o',min=1,max='**', + MAIL_ACTUEL = SIMP(statut='o',typ=maillage_sdaster,max=1), + GROUP_MA_FOND = SIMP(statut='f',typ=grma,defaut="FOND"), + GROUP_MA_FISS = SIMP(statut='f',typ=grma,defaut="FISS"), + FISS_ACTUELLE = SIMP(statut='o',typ=fiss_xfem,max=1), + MAIL_PROPAGE = SIMP(statut='f',typ=CO,max=1), + TABLE = SIMP(statut='o',typ=table_sdaster,max=1), + DTAN_ORIG = SIMP(statut='f',typ='R',max=3), + DTAN_EXTR = SIMP(statut='f',typ='R',max=3), + ), + MAIL_TOTAL = SIMP(statut='o',typ=CO), + COMP_LINE = FACT(statut='f',max=1, + COEF_MULT_MINI = SIMP(statut='o',typ='R',), + COEF_MULT_MAXI = SIMP(statut='o',typ='R',), + ), + ), + + b_init =BLOC(condition="(METHODE_PROPA=='INITIALISATION')", + MAIL_STRUC = SIMP(statut='o',typ=maillage_sdaster), + FORM_FISS = SIMP(statut='o',typ='TXM', into=("DEMI_DROITE","DEMI_PLAN","ELLIPSE"), ), + GROUP_MA_FOND = SIMP(statut='f',typ=grma,defaut="FOND"), + GROUP_MA_FISS = SIMP(statut='f',typ=grma,defaut="FISS"), + MAIL_TOTAL = SIMP(statut='o',typ=CO), + MAIL_FISS = SIMP(statut='f',typ=CO), + + b_droite = BLOC(condition = "FORM_FISS == 'DEMI_DROITE' ", + PFON = SIMP(statut='o',typ='R',max=3), + DTAN = SIMP(statut='o',typ='R',min=3,max=3), + ), + + b_plan = BLOC(condition = "FORM_FISS == 'DEMI_PLAN' ", + DTAN = SIMP(statut='o',typ='R',min=3,max=3), + POINT_ORIG = SIMP(statut='o',typ='R',min=3,max=3), + POINT_EXTR = SIMP(statut='o',typ='R',min=3,max=3), + NB_POINT_FOND = SIMP(statut='o',typ='I',), + ), + + b_ellipse = BLOC(condition = "FORM_FISS == 'ELLIPSE' ", + CENTRE =SIMP(statut='o',typ='R',min=3,max=3), + DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), + DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.E+0), + VECT_X =SIMP(statut='o',typ='R',min=3,max=3), + VECT_Y =SIMP(statut='o',typ='R',min=3,max=3), + ANGLE_ORIG = SIMP(statut='o',typ='R',), + ANGLE_EXTR = SIMP(statut='o',typ='R',), + NB_POINT_FOND = SIMP(statut='o',typ='I',) + ), + ), + + b_loi_et_comp_line=BLOC(condition="(METHODE_PROPA=='MAILLAGE') ", + LOI_PROPA = FACT(statut='o',max=1, + LOI = SIMP(statut='o',typ='TXM',into=("PARIS",),defaut="PARIS"), + b_paris = BLOC(condition = "LOI=='PARIS'", + C = SIMP(statut='o',typ='R',), + N = SIMP(statut='o',typ='R',), + M = SIMP(statut='o',typ='R',), + ), + MATER = SIMP(statut='o',typ=mater_sdaster,), + ), + ), + + INFO = SIMP(statut='f',typ='I',defaut=1,into=(0,1,2)), +) + +#& MODIF COMMANDE DATE 20/09/2011 AUTEUR COLOMBO D.COLOMBO +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT + +PROPA_XFEM=OPER(nom="PROPA_XFEM",op=10,sd_prod=fiss_xfem,reentrant='n', + UIinfo={"groupes":("Post-traitements","Rupture",)}, + fr="Propagation de fissure avec X-FEM", + + MODELE =SIMP(statut='o',typ=modele_sdaster), + + TEST_MAIL =SIMP(statut='f',typ='TXM',into=("NON","OUI",),defaut="NON"), + + DA_MAX =SIMP(statut='o',typ='R'), + + FISS_PROP =SIMP(statut='o',typ=fiss_xfem), + + ZONE_MAJ =SIMP(statut='f',typ='TXM',into=("TOUT","TORE"),defaut="TORE"), + + RAYON_TORE =SIMP(statut='f',typ='R'), + + LISTE_FISS =SIMP(statut='o',typ=fiss_xfem,min=1,max='**'), + + b_propa =BLOC( condition = "TEST_MAIL == 'NON' ", + NB_POINT_FOND =SIMP(statut='f',typ='I',min=1,max='**'), + TABLE =SIMP(statut='o',typ=table_sdaster,min=1,max='**'), + LOI_PROPA =FACT(statut='o',max=1, + LOI =SIMP(statut='o',typ='TXM',into=("PARIS",),defaut="PARIS"), + b_paris =BLOC( condition = "LOI=='PARIS'", + C =SIMP(statut='o',typ='R',), + N =SIMP(statut='o',typ='R',), + M =SIMP(statut='o',typ='R',), + E =SIMP(statut='o',typ='R',), + NU =SIMP(statut='o',typ='R',),), + ), + + COMP_LINE =FACT(statut='f',max=1, + COEF_MULT_MINI =SIMP(statut='o',typ='R',), + COEF_MULT_MAXI =SIMP(statut='o',typ='R',), + ), + ), + + b_test_mail_const =BLOC( condition = "TEST_MAIL == 'OUI' ", + FISS_INITIALE =SIMP(statut='o',typ=fiss_xfem,max=1), + DISTANCE =SIMP(statut='o',typ='R',max=1), + TOLERANCE =SIMP(statut='o',typ='R',max=1), + ), + + RAYON =SIMP(statut='o',typ='R',), + + METHODE =SIMP(statut='f',typ='TXM',into=("SIMPLEXE","UPWIND","GEOMETRIQUE"),defaut="UPWIND"), + + INFO =SIMP(statut='f',typ='I',defaut= 0,into=(0,1,2) ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GENIAUT S.GENIAUT +RAFF_XFEM=MACRO(nom="RAFF_XFEM", + op=OPS('Macro.raff_xfem_ops.raff_xfem_ops'), + sd_prod=cham_no_sdaster, + fr="Calcul de la distance au fond de fissure le plus proche", + reentrant='n', + UIinfo={"groupes":("Résultats et champs","Rupture",)}, + + FISSURE =SIMP(statut='o',typ=fiss_xfem,min=1,max='**',), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE PARROT A.PARROT +RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=table_sdaster, + fr="Recaler les paramètres du modèle de WEIBULL sur des données expérimentales",reentrant='n', + UIinfo={"groupes":("Post-traitements",)}, + LIST_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2,into=("SIGM_REFE","M",) ), + RESU =FACT(statut='o',max='**', + regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST',), + AU_MOINS_UN('TOUT','GROUP_MA','MAILLE', ),), + EVOL_NOLI =SIMP(statut='o',typ=(evol_noli) ), + MODELE =SIMP(statut='o',typ=(modele_sdaster) ), + CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ), + TEMPE =SIMP(statut='f',typ='R' ), + LIST_INST_RUPT =SIMP(statut='o',typ='R',validators=NoRepeat(),max='**' ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.E0 ), + ), + OPTION =SIMP(statut='f',typ='TXM',defaut="SIGM_ELGA",into=("SIGM_ELGA","SIGM_ELMOY",) ), + CORR_PLAST =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MAXI_VRAI",into=("MAXI_VRAI","REGR_LINE",) ), + INCO_GLOB_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ), + ) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +def recu_fonction_prod(RESULTAT=None,TABLE=None,RESU_GENE=None, + BASE_ELAS_FLUI=None,CHAM_GD=None,NAPPE=None, + NOM_PARA_TABL=None,**args): + if AsType(RESULTAT) == dyna_harmo or \ + AsType(RESU_GENE) == harm_gene or \ + (TABLE != None and NOM_PARA_TABL == "FONCTION_C"): + return fonction_c + else: + return fonction_sdaster + +RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod, + fr="Extraire sous forme d'une fonction, l'évolution d'une grandeur en fonction d'une autre", + reentrant='f', + UIinfo={"groupes":("Résultats et champs","Fonctions",)}, + regles=(UN_PARMI('CHAM_GD','RESULTAT','RESU_GENE','TABLE','BASE_ELAS_FLUI','NAPPE'),), + + CHAM_GD =SIMP(statut='f',typ=(cham_no_sdaster,cham_elem,),), + RESULTAT =SIMP(statut='f',typ=resultat_sdaster), + RESU_GENE =SIMP(statut='f',typ=(tran_gene, mode_gene, harm_gene)), + TABLE =SIMP(statut='f',typ=(table_sdaster,table_fonction)), + BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster), + NAPPE =SIMP(statut='f',typ=nappe_sdaster), + +# ======= SENSIBILITE ================================================= + b_sensibilite =BLOC(condition="RESULTAT != None", + fr="Définition des paramètres de sensibilité", + ang="Definition of sensitivity parameters", + regles=(CONCEPT_SENSIBLE('SEPARE'), REUSE_SENSIBLE(), + DERIVABLE('RESULTAT'),), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters"),), +# ======= ACCES A LA SD RESULTAT ================================================= + b_acces = BLOC ( condition = "(RESULTAT != None) or (RESU_GENE != None)", + fr="acces a une SD résultat", +# on ne peut pas mettre de regles, le défaut TOUT_ORDRE est pris en compte dans le fortran + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ), + TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + b_prec = BLOC ( condition = "(INST != None) or (LIST_INST != None) or (FREQ != None) or (LIST_FREQ != None)", + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + INTERP_NUME =SIMP(statut='f',typ='TXM',into=("NON","LIN") ), + ), + ), +# ======= BASE_ELAS_FLUI ================================================= + b_base_elas_flui = BLOC ( condition = "BASE_ELAS_FLUI != None", + fr="Récupération de la fonction à partir d un concept melasflu", + regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE'),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'), + NUME_MODE =SIMP(statut='o',typ='I' ), + PARA_X =SIMP(statut='o',typ='TXM',into=("VITE_FLU",) ), + PARA_Y =SIMP(statut='o',typ='TXM',into=("FREQ","AMOR") ), + ), + +# ======= TABLE ================================================= + b_table = BLOC ( condition = "TABLE != None", + fr="Récupération de la fonction à partir d un concept table", + regles=(UN_PARMI('PARA_X','NOM_PARA_TABL'), + PRESENT_PRESENT('PARA_X','PARA_Y'),), + PARA_X = SIMP(statut='f',typ='TXM', + fr="1ère colonne de la table qui définit la fonction à récupérer", ), + PARA_Y = SIMP(statut='f',typ='TXM', + fr="2ème colonne de la table qui définit la fonction à récupérer", ), + #b_tabl_fonc = BLOC(condition = "AsType(TABLE) == table_fonction", + NOM_PARA_TABL = SIMP(statut='f',typ='TXM',into=("FONCTION","FONCTION_C"), + fr="Nom du paramètre de la table contenant la fonction" ), + #), + + FILTRE = FACT(statut='f',max='**', + NOM_PARA =SIMP(statut='o',typ='TXM' ), + CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ", + into=("EQ","LT","GT","NE","LE","GE","VIDE", + "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI") ), + b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))", + regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),), + VALE =SIMP(statut='f',typ='R' ), + VALE_I =SIMP(statut='f',typ='I' ), + VALE_C =SIMP(statut='f',typ='C' ), + VALE_K =SIMP(statut='f',typ='TXM' ),), + + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + ), + ), + +# ======= RESULTAT ================================================= + b_resu = BLOC ( condition = "RESULTAT != None", fr="Opérandes en cas de RESULTAT", + regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),), + NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + NOM_PARA_RESU =SIMP(statut='f',typ='TXM' ), + b_cham = BLOC ( condition = "NOM_CHAM != None", + regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD'), + PRESENT_ABSENT('POINT','NOEUD','GROUP_NO'), + PRESENT_ABSENT('SOUS_POINT','NOEUD','GROUP_NO'), + EXCLUS('GROUP_MA','MAILLE'), + EXCLUS('GROUP_NO','NOEUD'),), + NOM_CMP =SIMP(statut='o',typ='TXM' ), + MAILLE =SIMP(statut='f',typ=ma), + GROUP_MA =SIMP(statut='f',typ=grma), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + POINT =SIMP(statut='f',typ='I' ), + SOUS_POINT =SIMP(statut='f',typ='I' ), + ), + ), + +# ======= RESU_GENE ================================================= + b_tran_gene = BLOC ( condition = "AsType(RESU_GENE) == tran_gene", + fr="Récupération d'une fonction à partir d un concept TRAN_GENE", + regles=(UN_PARMI('NOM_CHAM','NOEUD_CHOC','GROUP_NO_CHOC'),), + NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE","PTEM") ), + NOEUD_CHOC =SIMP(statut='f',typ=no), + GROUP_NO_CHOC =SIMP(statut='f',typ=grno), + b_cham = BLOC ( condition = "(NOM_CHAM=='DEPL') or (NOM_CHAM=='VITE') or (NOM_CHAM=='ACCE')", + regles=(UN_PARMI('GROUP_NO','NOEUD','NUME_CMP_GENE',), + UN_PARMI('NOM_CMP','NUME_CMP_GENE',), + EXCLUS('MULT_APPUI','CORR_STAT'),), + NOM_CMP =SIMP(statut='f',typ='TXM' ), + NUME_CMP_GENE =SIMP(statut='f',typ='I' ), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,formule)), + ), + b_choc = BLOC ( condition = "(NOEUD_CHOC != None) or (GROUP_NO_CHOC != None)", + regles=(PRESENT_PRESENT('SOUS_STRUC','INTITULE'),), + PARA_X =SIMP(statut='o',typ='TXM', + into=("INST","FN","FT1","FT2","VN","VT1","VT2","DXLOC","DYLOC","DZLOC") ), + PARA_Y =SIMP(statut='o',typ='TXM', + into=("INST","FN","FT1","FT2","VN","VT1","VT2","DXLOC","DYLOC","DZLOC") ), + LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ), + INTITULE =SIMP(statut='f',typ='TXM' ), + SOUS_STRUC =SIMP(statut='f',typ='TXM' ), + ), + ), + b_harm_gene = BLOC ( condition = "AsType(RESU_GENE)==harm_gene", + fr="Récupération d'une fonction à partir d un concept HARM_GENE", + regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),), + NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + NOM_PARA_RESU =SIMP(statut='f',typ='TXM' ), + b_cham = BLOC ( condition = "NOM_CHAM != None", + regles=(UN_PARMI('NUME_CMP_GENE','NOM_CMP'),), + NUME_CMP_GENE =SIMP(statut='f',typ='I' ), + NOM_CMP =SIMP(statut='f',typ='TXM' ), + b_cmp = BLOC ( condition = "NOM_CMP != None", + regles=(UN_PARMI('NOEUD','GROUP_NO'),), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + ), + ), + ), + b_mode_gene = BLOC ( condition = "AsType(RESU_GENE)==mode_gene", + fr="Récupération d'une fonction à partir d un concept MODE_GENE", + regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),), + NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + NOM_PARA_RESU =SIMP(statut='f',typ='TXM' ), + b_cham = BLOC ( condition = "NOM_CHAM != None", + regles=(UN_PARMI('NUME_CMP_GENE','NOM_CMP'),), + NUME_CMP_GENE =SIMP(statut='f',typ='I' ), + NOM_CMP =SIMP(statut='f',typ='TXM' ), + b_cmp = BLOC ( condition = "NOM_CMP != None", + regles=(UN_PARMI('NOEUD','GROUP_NO'), + UN_PARMI('SQUELETTE','SOUS_STRUC'),), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + SQUELETTE =SIMP(statut='f',typ=squelette ), + SOUS_STRUC =SIMP(statut='f',typ='TXM' ), + ), + ), + ), + +# ======= CHAM_GD ================================================= + b_cham_gd = BLOC ( condition = "(CHAM_GD != None)", fr="Opérandes en cas de CHAM_GD", + regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD'), + PRESENT_ABSENT('POINT','NOEUD','GROUP_NO'), + PRESENT_ABSENT('SOUS_POINT','NOEUD','GROUP_NO'), + EXCLUS('GROUP_MA','MAILLE'), + EXCLUS('GROUP_NO','NOEUD'),), + NOM_CMP =SIMP(statut='o',typ='TXM' ), + MAILLE =SIMP(statut='f',typ=ma), + GROUP_MA =SIMP(statut='f',typ=grma), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + POINT =SIMP(statut='f',typ='I' ), + SOUS_POINT =SIMP(statut='f',typ='I' ), + ), + +# ======= NAPPE ================================================= + b_nappe = BLOC ( condition = "(NAPPE != None)", fr="Opérandes en cas de NAPPE", + VALE_PARA_FONC =SIMP(statut='o',typ='R' ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + ), + +# ======= SURCHARGE DES ATTRIBUTS ================================================= + NOM_PARA =SIMP(statut='f',typ='TXM', into=C_PARA_FONCTION() ), + NOM_RESU =SIMP(statut='f',typ='TXM' ), + INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ), + PROL_DROITE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), + PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE BOYERE E.BOYERE +RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene,reentrant='n', + UIinfo={"groupes":("Résultats et champs",)}, + fr="Extraire d'un champ de grandeur (déplacements, vitesses ou accélérations) à partir de résultats" + +" en coordonnées généralisées", + RESU_GENE =SIMP(statut='o',typ=tran_gene ), + INST =SIMP(statut='o',typ='R' ), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE") ), + INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), +) ; +#& MODIF COMMANDE DATE 14/02/2011 AUTEUR GREFFET N.GREFFET +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE GREFFET N.GREFFET +# +# RECUPERATION DE PARAMETRES DE COUPLAGE VIA YACS +# +RECU_PARA_YACS=OPER(nom="RECU_PARA_YACS",op=114,sd_prod=listr8_sdaster, + reentrant = 'n', + UIinfo={"groupes":("Fonction",)}, + fr = "Gestion des scalaires via YACS pour le coupleur IFS", + DONNEES = SIMP(statut='o',typ='TXM',into=("INITIALISATION","CONVERGENCE","FIN","PAS",) ), + b_init = BLOC(condition= "DONNEES=='INITIALISATION'", + PAS = SIMP(statut='o',typ='R', ),), + b_noinit = BLOC(condition= "(DONNEES=='CONVERGENCE')or(DONNEES=='FIN')", + NUME_ORDRE_YACS = SIMP(statut='o', typ='I',), + INST = SIMP(statut='o',typ='R', ), + PAS = SIMP(statut='o',typ='R', ),), + b_pastps = BLOC(condition= "(DONNEES=='PAS')", + NUME_ORDRE_YACS = SIMP(statut='o', typ='I',), + INST = SIMP(statut='o',typ='R', ), + PAS = SIMP(statut='o',typ='R', ),), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +); +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster, + fr="Récupérer dans une table les valeurs d'un paramètre d'une SD Résultat ou d'extraire une table contenue" + +" dans une autre SD pour celles qui le permettent", + UIinfo={"groupes":("Résultats et champs","Tables",)},reentrant='n', + CO =SIMP(statut='o',typ=assd), + regles=(UN_PARMI('NOM_TABLE','NOM_PARA')), + NOM_TABLE =SIMP(statut='f',typ='TXM' ), + NOM_PARA =SIMP(statut='f',typ='TXM',max='**'), + TITRE =SIMP(statut='f',typ='TXM',max='**'), +) ; +#& MODIF COMMANDE DATE 02/05/2011 AUTEUR DESOZA T.DESOZA +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PELLET J.PELLET + +RESOUDRE=OPER(nom="RESOUDRE",op=15,sd_prod=cham_no_sdaster,reentrant='f', + fr="Résolution par méthode directe un système d'équations linéaires préalablement factorisé par FACT_LDLT"+ + "ou Résolution d'un système linéaire par la méthode du gradient conjugué préconditionné", + UIinfo={"groupes":("Résolution",)}, + MATR =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r, + matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ), + CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), + CHAM_CINE =SIMP(statut='f',typ=cham_no_sdaster), + + # mot-clé commun aux solveurs MUMPS, GCPC et PETSc: + RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6), + + # mot-clé pour les posttraitements de la phase de solve de MUMPS + POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")), + + # mot-clé commun aux solveurs GCPC et PETSc: + NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), + MATR_PREC =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ), + + # mots-clés pour solveur PETSc: + ALGORITHME =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="GMRES" ), + + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), +) ; +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== + +# RESPONSABLE DEVESA G.DEVESA +def rest_cond_tran_prod(RESULTAT,TYPE_RESU,**args ): + + if AsType(RESULTAT) == dyna_trans : return dyna_trans + if (AsType(RESULTAT) == evol_noli and TYPE_RESU == "DYNA_TRANS") : return dyna_trans + if (AsType(RESULTAT) == evol_noli and TYPE_RESU == "EVOL_NOLI") : return evol_noli + + raise AsException("type de concept resultat non prevu") + +REST_COND_TRAN=OPER(nom="REST_COND_TRAN",op= 78,sd_prod=rest_cond_tran_prod, + fr="Restituer dans la base physique des résultats issus d'un calcul" + +"non-lineaire avec projection modale ou d'un calcul transitoire linear" + +"avec condensation dynamique", + reentrant='f', + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=( + EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST'), + EXCLUS('MACR_ELEM_DYNA','BASE_MODALE'),), + RESULTAT =SIMP(statut='f',typ=(evol_noli,dyna_trans) ), + TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNA_TRANS", + into=("DYNA_TRANS","EVOL_NOLI") ), + BASE_MODALE =SIMP(statut='f',typ=mode_meca), +# NUME_DDL =SIMP(statut='f',typ=nume_ddl_sdaster ), + MACR_ELEM_DYNA =SIMP(statut='f',typ=macr_elem_dyna), + TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), + b_nom_cham=BLOC(condition="TOUT_CHAM == None", + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,defaut="ACCE",into=("DEPL", + "VITE","ACCE",),),), + b_base_moda=BLOC(condition="BASE_MODALE != None", + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem),), + RESU_FINAL =SIMP(statut='f',typ=(evol_noli,dyna_trans) ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== + +# RESPONSABLE BOYERE E.BOYERE + +def rest_gene_phys_prod(RESU_GENE,**args ): + if AsType(RESU_GENE) == tran_gene : return dyna_trans + if AsType(RESU_GENE) == mode_gene : return mode_meca + if AsType(RESU_GENE) == harm_gene : return dyna_harmo + + raise AsException("type de concept resultat non prevu") + +REST_GENE_PHYS=OPER(nom="REST_GENE_PHYS",op= 75,sd_prod=rest_gene_phys_prod, + fr="Restituer dans la base physique des résultats en coordonnées généralisées", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=( + EXCLUS('INST','LIST_INST','TOUT_INST', + 'TOUT_ORDRE','NUME_ORDRE','NUME_MODE',), + EXCLUS('FREQ','LIST_FREQ'), + EXCLUS('MULT_APPUI','CORR_STAT'), + EXCLUS('MULT_APPUI','NOEUD','GROUP_NO'), + EXCLUS('CORR_STAT','NOEUD','GROUP_NO'), + EXCLUS('NOEUD','GROUP_NO'), + EXCLUS('MAILLE','GROUP_MA'), + PRESENT_PRESENT('ACCE_MONO_APPUI','DIRECTION'),), + RESU_GENE =SIMP(statut='f',typ=(tran_gene,mode_gene,harm_gene) ), + MODE_MECA =SIMP(statut='f',typ=mode_meca ), + NUME_DDL =SIMP(statut='f',typ=nume_ddl_sdaster ), + TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), + MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), + b_nom_cham=BLOC(condition="TOUT_CHAM == None", + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE",into=("DEPL", + "VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO","SIPO_ELNO","SIGM_ELNO","FORC_NODA",),),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + DIRECTION =SIMP(statut='f',typ='R',min=3,max=3 ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== + +# RESPONSABLE CORUS M.CORUS +def rest_sous_struc_prod(RESU_GENE,RESULTAT,**args ): + if AsType(RESU_GENE) == tran_gene : return dyna_trans + if AsType(RESU_GENE) == mode_gene : return mode_meca + if AsType(RESU_GENE) == mode_cycl : return mode_meca + if AsType(RESU_GENE) == harm_gene : return dyna_harmo + if AsType(RESULTAT) == evol_noli : return evol_noli + if AsType(RESULTAT) == dyna_trans : return dyna_trans + if AsType(RESULTAT) == mode_meca : return mode_meca + raise AsException("type de concept resultat non prevu") + +REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op= 77,sd_prod=rest_sous_struc_prod, + fr="Restituer dans la base physique des résultats obtenus par sous-structuration", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=(UN_PARMI('RESU_GENE','RESULTAT'), +# ajout d'une regle de Ionel et Nicolas: +# UN_PARMI('NOM_CHAM','TOUT_CHAM'), +# + EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST','NUME_MODE', + 'FREQ', 'LIST_FREQ'), +# Doc U à revoir + EXCLUS('NOEUD','GROUP_NO'), + EXCLUS('MAILLE','GROUP_MA'), + PRESENT_PRESENT('RESULTAT','SQUELETTE'), + UN_PARMI('SQUELETTE','SOUS_STRUC','SECTEUR'), + + ), + RESULTAT =SIMP(statut='f',typ=(evol_noli,dyna_trans, + mode_meca) ), + RESU_GENE =SIMP(statut='f',typ=(tran_gene,mode_gene,mode_cycl,harm_gene) ), + NUME_DDL =SIMP(statut='f',typ=nume_ddl_sdaster ), + MODE_MECA =SIMP(statut='f',typ=mode_meca ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), + TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_INST =SIMP(statut='f',typ=listr8_sdaster ), + FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), + b_nom_cham=BLOC(condition="TOUT_CHAM == None", + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE",into=("DEPL", + "VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO","SIPO_ELNO","SIGM_ELNO","FORC_NODA",) ),), + GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'), + NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + CYCLIQUE =FACT(statut='f',max='**', + NB_SECTEUR =SIMP(statut='f',typ='I',validators=NoRepeat(),max=1 ), + NUME_DIAMETRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max=1 ), + RESULTAT2 =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans,evol_char, + mode_meca) ), + ), + + SQUELETTE =SIMP(statut='f',typ=squelette ), + SOUS_STRUC =SIMP(statut='f',typ='TXM' ), + SECTEUR =SIMP(statut='f',typ='I'), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 29/03/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ADOBES A.ADOBES +REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=table_fonction, + reentrant='n', + fr="Calculer la réponse d'une structure dans la base physique", + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=(AU_MOINS_UN('BASE_ELAS_FLUI','MODE_MECA'),), + BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ), + MODE_MECA =SIMP(statut='f',typ=mode_meca,), + BANDE =SIMP(statut='f',typ='R',min=2,validators=NoRepeat(),max=2 ), + NUME_ORDRE =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**' ), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON") ), + INTE_SPEC_GENE =SIMP(statut='o',typ=table_fonction), + NOEUD =SIMP(statut='o',typ=no ,max='**'), + MAILLE =SIMP(statut='f',typ=ma ,max='**'), + NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), + NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=7,into=("DEPL", + "VITE","ACCE","EFGE_ELNO","SIPO_ELNO","SIGM_ELNO","FORC_NODA") ), + MODE_STAT =SIMP(statut='f',typ=mode_meca ), + EXCIT =FACT(statut='f', + NOEUD =SIMP(statut='o',typ=no ,max='**'), + NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), + ), + MOUVEMENT =SIMP(statut='f',typ='TXM',defaut="ABSOLU",into=("RELATIF","ABSOLU","DIFFERENTIEL") ), + OPTION =SIMP(statut='f',typ='TXM',defaut="DIAG_DIAG", + into=("DIAG_TOUT","DIAG_DIAG","TOUT_TOUT","TOUT_DIAG") ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2008 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. +# ====================================================================== +# RESPONSABLE DEVESA G.DEVESA +def rest_spec_temp_prod(RESU_GENE,RESULTAT,**args): + if AsType(RESULTAT) == dyna_harmo : return dyna_trans + if AsType(RESU_GENE) == harm_gene : return tran_gene + if AsType(RESULTAT) == dyna_trans : return dyna_harmo + if AsType(RESU_GENE) == tran_gene : return harm_gene + raise AsException("type de concept resultat non prevu") + + +REST_SPEC_TEMP=OPER(nom="REST_SPEC_TEMP",op=181,sd_prod=rest_spec_temp_prod, + fr="Transformée de Fourier d'un résultat", + reentrant='n', + UIinfo={"groupes":("Matrices et vecteurs",)}, + regles=UN_PARMI('RESU_GENE','RESULTAT'), + RESU_GENE =SIMP(statut='f',typ=(harm_gene,tran_gene,) ), + RESULTAT =SIMP(statut='f',typ=(dyna_harmo,dyna_trans,) ), + METHODE =SIMP(statut='f',typ='TXM',defaut="PROL_ZERO",into=("PROL_ZERO","TRONCATURE") ), + SYMETRIE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",)), + NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","VITE","ACCE") ), +); +#& MODIF COMMANDE DATE 20/09/2011 AUTEUR PROIX J-M.PROIX +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE PROIX J.M.PROIX +# -*- coding: iso-8859-1 -*- + + +SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", + op=OPS('Macro.simu_point_mat_ops.simu_point_mat_ops'), + sd_prod=table_sdaster, + UIinfo={"groupes":("Résolution",)}, + fr="Calcul de l'évolution mécanique, en quasi-statique," \ + " d'un point matériel en non linéaire", + COMP_INCR =C_COMP_INCR(), + COMP_ELAS =C_COMP_ELAS('SIMU_POINT_MAT'), + MATER =SIMP(statut='o',typ=mater_sdaster,max=30), + +## ANGLE : rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées. + ANGLE =SIMP(statut='f',typ='R',max=1, defaut=0.), +# --MASSIF : orientation du materiau (monocristal, orthotropie) + MASSIF =FACT(statut='f',max='**', + regles=(UN_PARMI('ANGL_REP','ANGL_EULER'),), + ANGL_REP =SIMP(statut='f',typ='R',min=1,max=3), + ANGL_EULER =SIMP(statut='f',typ='R',min=1,max=3), + ), + INCREMENT =C_INCREMENT(), + NEWTON =C_NEWTON(), + CONVERGENCE =C_CONVERGENCE(), + + SUPPORT= SIMP(statut='f',typ='TXM',max=1,into=("POINT","ELEMENT",),defaut=("POINT"),), + + b_PM = BLOC(condition="SUPPORT == 'POINT'",fr="Simulation sans élément fini", + FORMAT_TABLE =SIMP(statut='f',typ='TXM',max=1,into=("CMP_COLONNE","CMP_LIGNE",),defaut=("CMP_COLONNE"),), + NB_VARI_TABLE =SIMP(statut='f',typ='I',max=1,), + OPER_TANGENT =SIMP(statut='f',typ='TXM',max=1,into=("OUI","NON",),defaut="NON",), + ARCHIVAGE =FACT(statut='f', + LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ), + INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_ARCH =SIMP(statut='f',typ='I' ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-6), + ), + ), + b_EF = BLOC(condition="SUPPORT == 'ELEMENT'",fr="Simulation sur un élément fini", + MODELISATION =SIMP(statut='f',typ='TXM',max=1,into=("3D","C_PLAN","D_PLAN",)), + RECH_LINEAIRE =C_RECH_LINEAIRE(), + ARCHIVAGE =C_ARCHIVAGE(), + ), + # on permet certaines variables de commandes scalaires, définies par une fonction du temps + b_EFV = BLOC(condition="SUPPORT == 'ELEMENT'",fr="variables de commande sur un élément fini", + # un mot clé caché qui ne sert qu'à boucler sur les VARC possibles : + LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("TEMP","CORR","IRRA","HYDR","SECH","EPSA", + "M_ACIER","M_ZIRC","NEUT1","NEUT2")), + + AFFE_VARC = FACT(statut='f',max='**', + NOM_VARC =SIMP(statut='o',typ='TXM', into=("TEMP","CORR","IRRA","HYDR","SECH","M_ACIER","M_ZIRC", + "EPSA","NEUT1","NEUT2")), + VALE_FONC = SIMP(statut='o',typ=(fonction_sdaster,formule) ), + VALE_REF = SIMP(statut='f',typ='R'), + ), + + SIGM_IMPOSE=FACT(statut='f', + SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + EPSI_IMPOSE=FACT(statut='f', + EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + ), + b_COEF = BLOC(condition="SUPPORT == 'POINT'",fr="matrice de coefficients", + regles = (PRESENT_ABSENT('SIGM_IMPOSE','MATR_C1','MATR_C2','VECT_IMPO'), + PRESENT_ABSENT('EPSI_IMPOSE','MATR_C1','MATR_C2','VECT_IMPO'), + PRESENT_ABSENT('MATR_C1','SIGM_IMPOSE','EPSI_IMPOSE'), + PRESENT_ABSENT('MATR_C2','SIGM_IMPOSE','EPSI_IMPOSE'), + PRESENT_ABSENT('VECT_IMPO', 'SIGM_IMPOSE','EPSI_IMPOSE'), + EXCLUS('EPSI_IMPOSE','GRAD_IMPOSE'), + EXCLUS('SIGM_IMPOSE','GRAD_IMPOSE'), + ), + + SIGM_IMPOSE=FACT(statut='f', + SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + EPSI_IMPOSE=FACT(statut='f', + EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + GRAD_IMPOSE=FACT(statut='f', + regles = ( ENSEMBLE('F11','F12','F13','F21','F22','F23','F31','F32','F33',),), + F11 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F12 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F13 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F21 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F22 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F23 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F31 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F32 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + F33 = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + MATR_C1=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ='R',max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + NUME_COLONNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ), + ), + MATR_C2=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ='R',max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + NUME_COLONNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ), + ), + VECT_IMPO=FACT(statut='f',max='**', + VALE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max=1, ), + NUME_LIGNE =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ), + ), + ), + SIGM_INIT=FACT(statut='f', + SIXX = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + SIYY = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + SIZZ = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + SIXY = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + SIXZ = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + SIYZ = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0), + ), + EPSI_INIT=FACT(statut='f', + EPXX = SIMP(statut='o',typ='R',max=1), + EPYY = SIMP(statut='o',typ='R',max=1), + EPZZ = SIMP(statut='o',typ='R',max=1), + EPXY = SIMP(statut='o',typ='R',max=1), + EPXZ = SIMP(statut='o',typ='R',max=1), + EPYZ = SIMP(statut='o',typ='R',max=1), + ), + VARI_INIT=FACT(statut='f', + VALE = SIMP(statut='o',typ='R',max='**'), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) + +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ASSIRE A.ASSIRE + + +STANLEY=MACRO(nom="STANLEY", + op=OPS('Macro.stanley_ops.stanley_ops'), + sd_prod=None, + reentrant='n', + UIinfo={"groupes":("Post-traitements",)}, + fr="Outil de post-traitement interactif Stanley ", + RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther,mode_meca,dyna_harmo,dyna_trans) ), + MODELE =SIMP(statut='f',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + DISPLAY =SIMP(statut='f',typ='TXM'), + UNITE_VALIDATION=SIMP(statut='f',typ='I',val_min=10,val_max=90, + fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit les md5"), + +) ; +#& MODIF COMMANDE DATE 12/10/2011 AUTEUR BARGELLI R.BARGELLINI +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE ABBAS M.ABBAS +# +STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, + fr="Calcul de l'évolution mécanique ou thermo-hydro-mécanique couplée, en quasi-statique," + +" d'une structure en non linéaire", + reentrant='f', + UIinfo={"groupes":("Résolution","Mécanique",)}, + regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS'), + CONCEPT_SENSIBLE('ENSEMBLE'),), + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + EXCIT =FACT(statut='o',max='**', + CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE", + into=("FIXE_CSTE","FIXE_PILO","SUIV","DIDI")), + ), + CONTACT =SIMP(statut='f',typ=char_contact), + SOUS_STRUC =FACT(statut='f',min=01,max='**', + regles=(UN_PARMI('TOUT','SUPER_MAILLE'),), + CAS_CHARGE =SIMP(statut='o',typ='TXM' ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + SUPER_MAILLE=SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), +#------------------------------------------------------------------- + COMP_INCR =C_COMP_INCR(), +#------------------------------------------------------------------- + COMP_ELAS =C_COMP_ELAS('STAT_NON_LINE'), +#------------------------------------------------------------------- + b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire", + ETAT_INIT =FACT(statut='o', + regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI',), + # EXCLUS('EVOL_NOLI','DEPL',), + # EXCLUS('EVOL_NOLI','SIGM',), + # EXCLUS('EVOL_NOLI','VARI',), + EXCLUS('NUME_ORDRE','INST'), ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)), + VARI =SIMP(statut='f',typ=cham_elem), + STRX =SIMP(statut='f',typ=cham_elem), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + NUME_DIDI =SIMP(statut='f',typ='I'), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ),), + b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif", + ETAT_INIT =FACT(statut='f', + regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI',), + # EXCLUS('EVOL_NOLI','DEPL',), + # EXCLUS('EVOL_NOLI','SIGM',), + # EXCLUS('EVOL_NOLI','VARI',), + EXCLUS('NUME_ORDRE','INST'), ), + DEPL =SIMP(statut='f',typ=cham_no_sdaster), + SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)), + VARI =SIMP(statut='f',typ=cham_elem), + STRX =SIMP(statut='f',typ=cham_elem), + EVOL_NOLI =SIMP(statut='f',typ=evol_noli), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + NUME_DIDI =SIMP(statut='f',typ='I'), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ),), +#------------------------------------------------------------------- + INCREMENT =C_INCREMENT(), +#------------------------------------------------------------------- + METHODE =SIMP(statut='d',typ='TXM',defaut="NEWTON",into=("NEWTON","IMPLEX")), + b_meth_newton = BLOC(condition = "METHODE == 'NEWTON'", + NEWTON = C_NEWTON(), + ), +#------------------------------------------------------------------- + RECH_LINEAIRE =C_RECH_LINEAIRE(), +#------------------------------------------------------------------- + PILOTAGE =C_PILOTAGE(), +#------------------------------------------------------------------- + CONVERGENCE =C_CONVERGENCE(), +#------------------------------------------------------------------- + SOLVEUR =C_SOLVEUR('STAT_NON_LINE'), +#------------------------------------------------------------------- + OBSERVATION =C_OBSERVATION(), +#------------------------------------------------------------------- + SUIVI_DDL =C_SUIVI_DDL(), +#------------------------------------------------------------------- + ARCHIVAGE =C_ARCHIVAGE(), +#------------------------------------------------------------------- + AFFICHAGE = C_AFFICHAGE(), +#------------------------------------------------------------------- + CRIT_FLAMB =FACT(statut='f',min=1,max=1, + NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3), + CHAR_CRIT =SIMP(statut='f',typ='R',min=2,max=2,defaut=(-10.0,10), + fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"), + RIGI_GEOM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + b_ddl_exclus=BLOC(condition="(RIGI_GEOM=='NON')", + DDL_EXCLUS =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=40, + into=('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', + 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2', + 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4', + 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6', + 'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON','DCX', + 'DCY','DCZ','H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z', + 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C','V11','V12','V13','V21','V22', + 'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21','PRES22','PRES23', + 'PRES31','PRES32','PRES33','VARI','LAG_GV')),), + regles = (EXCLUS('PAS_CALC','LIST_INST','INST'),), + LIST_INST = SIMP(statut='f',typ=(listr8_sdaster) ), + INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), + PAS_CALC = SIMP(statut='f',typ='I' ), + CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + ), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité", + ang="List of sensitivity parameters"), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), + b_info=BLOC(condition="INFO==2", + fr="filtre les messages émis dans le .mess selon le type de message demandé", + INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(), + into=("CONTACT", + "MECA_NON_LINE", + "PILOTAGE", + "FACTORISATION", + "APPARIEMENT"), + ), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + ) + +#& MODIF COMMANDE DATE 12/10/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# -*- coding: iso-8859-1 -*- +# RESPONSABLE PROIX J.M.PROIX + + +# MACRO "TEST_THERMOPLASTIQUE" +# ---------------------------- +def test_compor_sdprod(self, COMP_INCR, **kwargs): + """Ne produit une table qu'en présence de COMP_INCR.""" + if COMP_INCR: + return table_sdaster + return None + + +TEST_COMPOR =MACRO(nom="TEST_COMPOR", + op=OPS('Macro.test_compor_ops.test_compor_ops'), + sd_prod=test_compor_sdprod, + docu="",reentrant='n', + fr="macro de test des comportements incrementaux dependant de la temperature", + regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS'),), + + OPTION =SIMP(statut='f',typ='TXM',into=("THER","MECA"),defaut="THER"), + + COMP_INCR =C_COMP_INCR(), + COMP_ELAS =C_COMP_ELAS('SIMU_POINT_MAT'), + NEWTON =C_NEWTON(), + CONVERGENCE =C_CONVERGENCE(), + + b_ther =BLOC(condition = "OPTION == 'THER'", + regles=(EXCLUS('C_PRAG','D_SIGM_EPSI'),), + MATER =SIMP(statut='o',typ=mater_sdaster,max=1,fr="materiau dependant de la temperature"), + ALPHA =SIMP(statut='o',typ=fonction_sdaster, + fr="coefficient de dilatation fonction de la temperature"), + YOUNG =SIMP(statut='o',typ=fonction_sdaster, + fr="module d'Young fonction de la temperature"), + LIST_MATER =SIMP(statut='o',typ=mater_sdaster,max='**', + fr="liste des materiaux constants interpolés à chaque température"), + TEMP_INIT =SIMP(statut='o',typ='R', fr="temperature initiale et de reference"), + TEMP_FIN =SIMP(statut='o',typ='R', fr="temperature finale"), + INST_FIN =SIMP(statut='f',typ='R',defaut=1.,fr="instant final"), + NB_VARI =SIMP(statut='o',typ='I', fr="nombre de variables internes - 0 en elasticité"), + VARI_TEST =SIMP(statut='f',typ='TXM',max='**', + fr="liste de variables internes à tester - par defaut, toutes"), + +# special ecrouissage cinematique + D_SIGM_EPSI =SIMP(statut='f',typ=fonction_sdaster, + fr="module tangent fonction de la temperature- VMIS_CINE_LINE"), + C_PRAG =SIMP(statut='f',typ=fonction_sdaster, + fr="constante de Prager fonction de la temperature- VMIS_ECMI_*"), + ), + b_meca =BLOC(condition = "OPTION == 'MECA'", + LIST_MATER =SIMP(statut='o',typ=mater_sdaster,max=2,min=2, + fr="liste des materiaux en Pa puis MPa "), + YOUNG =SIMP(statut='o',typ='R',fr="module d'Young"), + POISSON =SIMP(statut='o',typ='R',fr="coef de Poisson"), + LIST_NPAS =SIMP(statut='f',typ='I',max='**', + fr="nombre de pas de temps pour chaque discretisation"), + LIST_TOLE =SIMP(statut='f',typ='R',max='**',), + PREC_ZERO =SIMP(statut='f',typ='R',max='**',), + VARI_TEST =SIMP(statut='f',typ='TXM',max='**',defaut=('V1','VMIS','TRACE'), + fr="liste des CMP à tester "), + SUPPORT =SIMP(statut='f',typ='TXM',max=1,into=("POINT","ELEMENT",)), + MODELISATION =SIMP(statut='f',typ='TXM',max=1,into=("3D","C_PLAN"),defaut="3D",), + ANGLE =SIMP(statut='f',typ='R',max=1, defaut=0., + fr='Rotation de ANGLE autour de Z uniquement, et seulement pour les déformations imposées',), + MASSIF =FACT(statut='f',max='**',fr='orientation du materiau (monocristal, orthotropie)', + regles=(UN_PARMI('ANGL_REP','ANGL_EULER'),), + ANGL_REP =SIMP(statut='f',typ='R',min=1,max=3), + ANGL_EULER =SIMP(statut='f',typ='R',min=1,max=3), + ), + VERI_MATR_OPTION =FACT(statut='f',max=1,fr='options pour le test de la matrice tangente', + VALE_PERT_RELA =SIMP(statut='f',typ='R',defaut=1.E-5), + PRECISION =SIMP(statut='f',typ='R',defaut=1.E-4 ), + PREC_ZERO =SIMP(statut='f',typ='R',defaut=1.E-12 ), + ), + ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), + ) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + + +TEST_FICHIER=MACRO(nom="TEST_FICHIER", + op=OPS('Macro.test_fichier_ops.test_fichier_ops'), + UIinfo={"groupes":("Utilitaires",)}, + fr="Tester la non régression de fichiers produits par des commandes aster", + FICHIER =SIMP(statut='o',typ='TXM',validators=LongStr(1,255)), + EXPR_IGNORE =SIMP(statut='f',typ='TXM',max='**', + fr="Liste d'expressions régulières permettant d'ignorer certaines lignes"), + + TYPE_TEST =SIMP(statut='f',typ='TXM',defaut='SOMM',into=("SOMM_ABS","SOMM","MAXI","MINI","MAXI_ABS","MINI_ABS")), + NB_VALE =SIMP(statut='o',typ='I',), + VALE =SIMP(statut='f',typ='R',max='**'), + VALE_K =SIMP(statut='f',typ='TXM'), + + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), + + REFERENCE =SIMP(statut='f',typ='TXM', + into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ), + + b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'", + VERSION =SIMP(statut='f',typ='TXM' ), + ), + + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE SELLENET N.SELLENET + +TEST_FONCTION=MACRO(nom="TEST_FONCTION", + op=OPS('Macro.test_fonction_ops.test_fonction_ops'), + sd_prod=None, + fr="Extraction d'une valeur numérique ou d'un attribut de fonction pour comparaison à une valeur de référence", + UIinfo={"groupes":("Fonctions","Utilitaires",)}, + TEST_NOOK =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + VALEUR =FACT(statut='f',max='**', + fr="Tester la valeur d une fonction ou d une nappe", + regles=(UN_PARMI('VALE_REFE','VALE_REFE_C',), + UN_PARMI('VALE_PARA','INTERVALLE'), + DERIVABLE('FONCTION'),), + FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster,formule) ), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom), + fr="Paramètre de sensibilité.", + ang="Sensitivity parameter"), + NOM_PARA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2), + VALE_PARA =SIMP(statut='f',typ='R' ,validators=NoRepeat(),max=2), + INTERVALLE =SIMP(statut='f',typ='R' ,validators=NoRepeat(),min=2,max=2), + VALE_REFE =SIMP(statut='f',typ='R',max='**' ), + VALE_REFE_C =SIMP(statut='f',typ='C',max='**' ), + VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + LEGENDE =SIMP(statut='f',typ='TXM'), + CRITERE =SIMP(statut='f',typ='TXM',fr="Critère de comparaison avec la solution de référence", + defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION =SIMP(statut='f',typ='R',fr="Ecart maximal autorisé avec la solution de référence", + defaut= 1.E-3 ), + REFERENCE =SIMP(statut='f',typ='TXM', + into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ), + b_version = BLOC (condition = "REFERENCE == 'NON_REGRESSION'", + VERSION =SIMP(statut='f',typ='TXM' ), + ), + ), + ATTRIBUT =FACT(statut='f',max='**', + fr="Tester la valeur d un attribut d une fonction ou d''une nappe", + FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster,formule) ), + PARA =SIMP(statut='f',typ='R' ), + CRIT_PARA =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PREC_PARA =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + ATTR =SIMP(statut='o',typ='TXM', + into=("NOM_PARA","NOM_RESU","PROL_DROITE","PROL_GAUCHE","INTERPOL", + "PROL_GAUCHE_FONC","PROL_DROITE_FONC","INTERPOL_FONC","NOM_PARA_FONC") ), + ATTR_REFE =SIMP(statut='o',typ='TXM' ), + REFERENCE =SIMP(statut='f',typ='TXM', + into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ), + b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'", + VERSION =SIMP(statut='f',typ='TXM' ), + ), + ), + TABL_INTSP =FACT(statut='f',max='**', + fr="Tester la valeur d une fonction contenue dans une table interspectrale", + regles=(UN_PARMI('NUME_ORDRE_I','NOEUD_I'),), + INTE_SPEC =SIMP(statut='o',typ=table_fonction), + NOEUD_I =SIMP(statut='f',typ=no), + NUME_ORDRE_I =SIMP(statut='f',typ='I' ), + b_nume_ordre_i = BLOC (condition = "NUME_ORDRE_I != None", + NUME_ORDRE_J =SIMP(statut='o',typ='I' ), + ), + b_noeud_i = BLOC (condition = "NOEUD_I != None", + NOEUD_J =SIMP(statut='o',typ=no), + NOM_CMP_I =SIMP(statut='o',typ='TXM' ), + NOM_CMP_J =SIMP(statut='o',typ='TXM' ), + ), + NUME_VITE_FLUI =SIMP(statut='f',typ='I' ), + VALE_PARA =SIMP(statut='o',typ='R' ), + VALE_REFE_C =SIMP(statut='o',typ='C',max='**' ), + CRITERE =SIMP(statut='f',typ='TXM',fr="Critère de comparaison avec la solution de référence", + defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION =SIMP(statut='f',typ='R',fr="Ecart maximal autorisé avec la solution de référence", + defaut= 1.E-3 ), + LEGENDE =SIMP(statut='f',typ='TXM'), + REFERENCE =SIMP(statut='f',typ='TXM', + into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ), + b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'", + VERSION =SIMP(statut='f',typ='TXM' ), + ), + ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# +# +# ====================================================================== +# RESPONSABLE LEFEBVRE J.P.LEFEBVRE +TEST_RESU=PROC(nom="TEST_RESU",op=23, + UIinfo={"groupes":("Résultats et champs","Utilitaires",)}, + fr="Extraction d'une valeur d'une structure de donnée et comparaison à une valeur de référence", + regles=(AU_MOINS_UN('CHAM_NO','CHAM_ELEM','RESU','GENE','OBJET','TEST_NAN',)), + + CHAM_NO =FACT(statut='f',max='**', + regles=(UN_PARMI('NOEUD','GROUP_NO','TYPE_TEST'), + EXCLUS('NOEUD','GROUP_NO'), + PRESENT_PRESENT('NOEUD','NOM_CMP'), + PRESENT_PRESENT( 'GROUP_NO','NOM_CMP'), + UN_PARMI('VALE','VALE_I','VALE_C'),), + CHAM_GD =SIMP(statut='o',typ=cham_no_sdaster), + NOEUD =SIMP(statut='f',typ=no ), + GROUP_NO =SIMP(statut='f',typ=grno ), + NOM_CMP =SIMP(statut='f',typ='TXM',max=1), + TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN")), + VALE =SIMP(statut='f',typ='R',max='**'), + VALE_I =SIMP(statut='f',typ='I',max='**'), + VALE_C =SIMP(statut='f',typ='C',max='**'), + VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), + REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE", + "NON_REGRESSION","AUTRE_ASTER")), + VERSION =SIMP(statut='f',typ='TXM'), + LEGENDE =SIMP(statut='f',typ='TXM'), + ), + + CHAM_ELEM =FACT(statut='f',max='**', + regles=(UN_PARMI('MAILLE','TYPE_TEST',), + EXCLUS('NOEUD','GROUP_NO','POINT'), + PRESENT_PRESENT('NOEUD','NOM_CMP'), + PRESENT_PRESENT('GROUP_NO','NOM_CMP'), + PRESENT_PRESENT('POINT','NOM_CMP'), + UN_PARMI('VALE','VALE_I','VALE_C'), ), + CHAM_GD =SIMP(statut='o',typ=cham_elem), + MAILLE =SIMP(statut='f',typ=ma), + POINT =SIMP(statut='f',typ='I' ), + SOUS_POINT =SIMP(statut='f',typ='I'), + NOEUD =SIMP(statut='f',typ=no), + GROUP_NO =SIMP(statut='f',typ=grno), + NOM_CMP =SIMP(statut='f',typ='TXM',max=1), + TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN") ), + VALE =SIMP(statut='f',typ='R',max='**' ), + VALE_I =SIMP(statut='f',typ='I',max='**' ), + VALE_C =SIMP(statut='f',typ='C',max='**' ), + VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE", + "NON_REGRESSION","AUTRE_ASTER") ), + VERSION =SIMP(statut='f',typ='TXM' ), + LEGENDE =SIMP(statut='f',typ='TXM'), + ), + + RESU =FACT(statut='f',max='**', + regles=(UN_PARMI('NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'), + UN_PARMI('NOM_CHAM','PARA'), + PRESENT_ABSENT('PARA','NOEUD','GROUP_NO','POINT','NOM_CMP','TYPE_TEST'), + PRESENT_PRESENT('NOM_CMP','NOM_CHAM'), + EXCLUS('NOEUD','GROUP_NO','POINT','TYPE_TEST'), + PRESENT_PRESENT('NOEUD','NOM_CMP'), + PRESENT_PRESENT('GROUP_NO','NOM_CMP'), + PRESENT_PRESENT('POINT','NOM_CMP'), + UN_PARMI('VALE','VALE_I','VALE_C'), + DERIVABLE('RESULTAT'),), + RESULTAT =SIMP(statut='o',typ=resultat_sdaster), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom), + fr="Paramètre de sensibilité.", + ang="Sensitivity parameter"), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + FREQ =SIMP(statut='f',typ='R'), + NUME_MODE =SIMP(statut='f',typ='I'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',min=2,max=2), + NOM_CAS =SIMP(statut='f',typ='TXM'), + ANGL =SIMP(statut='f',typ='R'), + PARA =SIMP(statut='f',typ='TXM'), + NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + NOM_CMP =SIMP(statut='f',typ='TXM',max=1), + MAILLE =SIMP(statut='f',typ=ma ,max='**'), + NOEUD =SIMP(statut='f',typ=no ,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno ,max='**'), + POINT =SIMP(statut='f',typ='I'), + SOUS_POINT =SIMP(statut='f',typ='I'), + TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN")), + VALE =SIMP(statut='f',typ='R',max='**'), + VALE_I =SIMP(statut='f',typ='I',max='**'), + VALE_C =SIMP(statut='f',typ='C',max='**'), + VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),max=2), + PRECISION =SIMP(statut='f',typ='R',max=2), + REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE", + "NON_REGRESSION","AUTRE_ASTER",) ), + VERSION =SIMP(statut='f',typ='TXM' ), + LEGENDE =SIMP(statut='f',typ='TXM'), + ), + + GENE =FACT(statut='f',max='**', + regles=(UN_PARMI('VALE','VALE_I','VALE_C') ,), + RESU_GENE =SIMP(statut='o',typ=(vect_asse_gene, tran_gene, mode_gene, harm_gene)), + b_vect_asse =BLOC(condition = "AsType(RESU_GENE) == vect_asse_gene", + NUME_CMP_GENE =SIMP(statut='o',typ='I'), + ), + b_mode =BLOC(condition = "(AsType(RESU_GENE) == harm_gene) or (AsType(RESU_GENE) == mode_gene)", + regles=(UN_PARMI('NUME_ORDRE','FREQ','NUME_MODE'), + UN_PARMI('NOM_CHAM','PARA'), + PRESENT_PRESENT('NOM_CHAM','NUME_CMP_GENE'),), + NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()), + NUME_CMP_GENE =SIMP(statut='f',typ='I'), + PARA =SIMP(statut='f',typ='TXM'), + NUME_ORDRE =SIMP(statut='f',typ='I'), + NUME_MODE =SIMP(statut='f',typ='I'), + FREQ =SIMP(statut='f',typ='R'), + ), + b_tran =BLOC(condition = "AsType(RESU_GENE) == tran_gene", + regles=(UN_PARMI('NUME_ORDRE','INST') ,), + NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()), + NUME_CMP_GENE =SIMP(statut='o',typ='I'), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + ), + VALE =SIMP(statut='f',typ='R',max='**'), + VALE_I =SIMP(statut='f',typ='I',max='**'), + VALE_C =SIMP(statut='f',typ='C',max='**'), + VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),max=2), + PRECISION =SIMP(statut='f',typ='R',max=2), + REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE", + "NON_REGRESSION","AUTRE_ASTER",) ), + VERSION =SIMP(statut='f',typ='TXM' ), + LEGENDE =SIMP(statut='f',typ='TXM'), + ), + + OBJET =FACT(statut='f',max='**', + regles=(UN_PARMI('S_I','S_R',), + UN_PARMI('VALE','VALE_I','VALE_C','S_R','S_I'),), + NOM =SIMP(statut='o',typ='TXM'), + S_R =SIMP(statut='f',typ='R'), + S_I =SIMP(statut='f',typ='I'), + VALE =SIMP(statut='f',typ='R'), + VALE_I =SIMP(statut='f',typ='I'), + VALE_C =SIMP(statut='f',typ='C'), + VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), + REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE", + "NON_REGRESSION","AUTRE_ASTER",) ), + VERSION =SIMP(statut='f',typ='TXM' ), + LEGENDE =SIMP(statut='f',typ='TXM'), + ), + + TEST_NAN =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), +) ; +#& MODIF COMMANDE DATE 09/11/2010 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS +TEST_TABLE=PROC(nom="TEST_TABLE",op= 177, + UIinfo={"groupes":("Tables","Utilitaires",)}, + fr="Tester une cellule ou une colonne d'une table", + regles=(UN_PARMI('VALE','VALE_I','VALE_C', ), + DERIVABLE('TABLE'),), +# concept table_sdaster à tester + TABLE =SIMP(statut='o',typ=table_sdaster), + + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom), + fr="Paramètre de sensibilité.", + ang="Sensitivity parameter"), + FILTRE =FACT(statut='f',max='**', + NOM_PARA =SIMP(statut='o',typ='TXM' ), + CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ", + into=("EQ","LT","GT","NE","LE","GE","VIDE", + "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI") ), + b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))", + regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),), + VALE =SIMP(statut='f',typ='R',), + VALE_I =SIMP(statut='f',typ='I',), + VALE_C =SIMP(statut='f',typ='C',), + VALE_K =SIMP(statut='f',typ='TXM' ),), + + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + ), + TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN") ), + NOM_PARA =SIMP(statut='o',typ='TXM' ), + VALE =SIMP(statut='f',typ='R',max='**' ), + VALE_I =SIMP(statut='f',typ='I',max='**' ), + VALE_C =SIMP(statut='f',typ='C',max='**' ), + VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + LEGENDE =SIMP(statut='f',typ='TXM'), + REFERENCE =SIMP(statut='f',typ='TXM', + into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ), + b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'", + VERSION =SIMP(statut='f',typ='TXM' ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), + ), +) ; +#& MODIF COMMANDE DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# -*- coding: iso-8859-1 -*- +# RESPONSABLE COURTOIS M.COURTOIS + + + +TEST_TEMPS=MACRO(nom="TEST_TEMPS", + op=OPS('Macro.test_temps_ops.test_temps_ops'), + sd_prod=None, + UIinfo={"groupes":("Utilitaires",)}, + fr="Permet de vérifier le temps passé dans les commandes", + reentrant='n', + + RESU = FACT(statut='o',max='**', + COMMANDE = SIMP(statut='o', typ='TXM', + fr="Nom de la commande testee"), + NUME_ORDRE = SIMP(statut='f', typ='I', defaut=1, val_min=1, + fr="Numero de l'occurrence de la commande testee"), + MACHINE = SIMP(statut='o', typ='TXM', max='**', + fr="Liste des machines dont on a la référence"), + VALE = SIMP(statut='o', typ='R', max='**', + fr="Temps CPU sur les machines listees en secondes"), + CRITERE = SIMP(statut='f', typ='TXM', defaut='RELATIF', into=('ABSOLU', 'RELATIF')), + PRECISION = SIMP(statut='f', typ='R', defaut=0.01, max='**', + fr="Ecart admissible pour chaque machine"), + TYPE_TEST = SIMP(statut='o', typ='TXM', into=('USER', 'SYSTEM', 'USER+SYS', 'ELAPSED'), + defaut='USER+SYS', + fr="Valeur testee parmi 'USER', 'SYSTEM', 'USER+SYS', 'ELAPSED'"), + ), + + INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), +) + +#& MODIF COMMANDE DATE 19/05/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DURAND C.DURAND +THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f', + UIinfo={"groupes":("Résolution","Thermique",)}, + fr="Résoudre un problème thermique linéaire stationnaire ou transitoire", + regles=(CONCEPT_SENSIBLE('ENSEMBLE'),), + MODELE =SIMP(statut='o',typ=modele_sdaster), + CHAM_MATER =SIMP(statut='o',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + EXCIT =FACT(statut='o',max='**', + CHARGE =SIMP(statut='o',typ=(char_ther,char_cine_ther)), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + INCREMENT =FACT(statut='f', + regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), + EXCLUS('NUME_INST_FIN','INST_FIN'),), + LIST_INST =SIMP(statut='o',typ=listr8_sdaster), + NUME_INST_INIT =SIMP(statut='f',typ='I'), + INST_INIT =SIMP(statut='f',typ='R'), + NUME_INST_FIN =SIMP(statut='f',typ='I'), + INST_FIN =SIMP(statut='f',typ='R'), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), + ), + ETAT_INIT =FACT(statut='f', + regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),), + STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",)), + EVOL_THER =SIMP(statut='f',typ=evol_ther), + CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster), + VALE =SIMP(statut='f',typ='R'), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters", + ), + SENS_INIT =FACT(statut='f', + regles=(EXCLUS('STATIONNAIRE','EVOL_THER', ),), + STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + EVOL_THER =SIMP(statut='f',typ=evol_ther), + NUME_INIT =SIMP(statut='f',typ='I'), + ), +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('THER_LINEAIRE'), +#------------------------------------------------------------------- + PARM_THETA =SIMP(statut='f',typ='R',defaut= 0.57), +#------------------------------------------------------------------- + ARCHIVAGE =C_ARCHIVAGE(), +#------------------------------------------------------------------- + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',into=(1,2)), +) ; +#& MODIF COMMANDE DATE 20/06/2011 AUTEUR ABBAS M.ABBAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DURAND C.DURAND +THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f', + UIinfo={"groupes":("Résolution","Thermique",)}, + fr="Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)" + +" stationnaire ou transitoire" , + regles=(CONCEPT_SENSIBLE('ENSEMBLE'),), + MODELE =SIMP(statut='o',typ=(modele_sdaster) ), + CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ), + CARA_ELEM =SIMP(statut='c',typ=(cara_elem) ), + COMP_THER_NL =FACT(statut='d',max='**', + RELATION =SIMP(statut='f',typ='TXM',defaut="THER_NL", + into=("THER_NL", + "THER_HYDR", + "SECH_GRANGER", + "SECH_MENSI", + "SECH_BAZANT", + "SECH_NAPPE" + ) ), + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'), + MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'), + ), + EVOL_THER_SECH =SIMP(statut='f',typ=evol_ther), + EXCIT =FACT(statut='o',max='**', + CHARGE =SIMP(statut='o',typ=char_ther), + FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)), + ), + INCREMENT =FACT(statut='f', + regles=(EXCLUS('NUME_INST_INIT','INST_INIT'), + EXCLUS('NUME_INST_FIN','INST_FIN'),), + LIST_INST =SIMP(statut='o',typ=listr8_sdaster), + NUME_INST_INIT =SIMP(statut='f',typ='I'), + INST_INIT =SIMP(statut='f',typ='R'), + NUME_INST_FIN =SIMP(statut='f',typ='I'), + INST_FIN =SIMP(statut='f',typ='R'), + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6 ), + ), + ETAT_INIT =FACT(statut='f', + regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),), + STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",)), + EVOL_THER =SIMP(statut='f',typ=evol_ther), + CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster), + VALE =SIMP(statut='f',typ='R'), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')", + PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6,),), + b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')", + PRECISION =SIMP(statut='o',typ='R',),), + INST_ETAT_INIT =SIMP(statut='f',typ='R'), + ), + NEWTON =FACT(statut='d', + REAC_ITER =SIMP(statut='f',typ='I',defaut= 0 ,val_min=0), + RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), + ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 0 ), + ), + CONVERGENCE =FACT(statut='d', + RESI_GLOB_MAXI =SIMP(statut='f',typ='R'), + RESI_GLOB_RELA =SIMP(statut='f',typ='R'), + ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), + ), + SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**', + fr="Liste des paramètres de sensibilité.", + ang="List of sensitivity parameters", + ), +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('THER_NON_LINE'), +#------------------------------------------------------------------- + PARM_THETA =SIMP(statut='f',typ='R',defaut= 0.57 ), +#------------------------------------------------------------------- + ARCHIVAGE =C_ARCHIVAGE(), +#------------------------------------------------------------------- + OBSERVATION =C_OBSERVATION(), +#------------------------------------------------------------------- + TITRE =SIMP(statut='f',typ='TXM',max='**'), + OPTION =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2, + into=("FLUX_ELGA","FLUX_ELNO") ), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), + +) ; +#& MODIF COMMANDE DATE 19/05/2011 AUTEUR DELMAS J.DELMAS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE DURAND C.DURAND +THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther, + fr="Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)" + +" stationnaire avec chargement mobile", + reentrant='n', + UIinfo={"groupes":("Résolution","Thermique",)}, + MODELE =SIMP(statut='o',typ=modele_sdaster ), + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + CARA_ELEM =SIMP(statut='c',typ=cara_elem ), + EXCIT =FACT(statut='o',max='**', + CHARGE =SIMP(statut='o',typ=char_ther ), + FONC_MULT =SIMP(statut='c',typ=(fonction_sdaster,nappe_sdaster,formule) ), + ), + ETAT_INIT =FACT(statut='f', + EVOL_THER =SIMP(statut='f',typ=evol_ther ), + NUME_ORDRE =SIMP(statut='f',typ='I',defaut= 0 ), + ), + CONVERGENCE =FACT(statut='d', + CRIT_TEMP_RELA =SIMP(statut='f',typ='R',defaut= 1.E-3 ), + CRIT_ENTH_RELA =SIMP(statut='f',typ='R',defaut= 1.E-2 ), + ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), + ARRET =SIMP(statut='c',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), +#------------------------------------------------------------------- +# Catalogue commun SOLVEUR + SOLVEUR =C_SOLVEUR('THER_NON_LINE_MO'), +#------------------------------------------------------------------- + TITRE =SIMP(statut='f',typ='TXM',max='**' ), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), +) ; + + + +#& MODIF COMMANDE DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +# Vérification des imports et définitions non autorisés dans le catalogue +UNAUTHORIZED = ("numpy", "UTMESS", "Table", "Graph") + +for _name in UNAUTHORIZED: + _obj = globals().get(_name, None) + assert _obj is None, "Definition de '%s' interdite dans le catalogue." % _name + +assert aster_exists or aster is None + diff --git a/Aster/Cata/cataSTA11/ops.py b/Aster/Cata/cataSTA11/ops.py new file mode 100644 index 00000000..75518a80 --- /dev/null +++ b/Aster/Cata/cataSTA11/ops.py @@ -0,0 +1,478 @@ +#@ MODIF ops Cata DATE 31/10/2011 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +# Modules Python +import os +import traceback +import cPickle as pickle +import re +from math import sqrt, pi, atan2, tan, log, exp + +# Modules Eficas +import Accas +from Accas import ASSD +from Noyau.ascheckers import CheckLog +from Noyau.N_info import message, SUPERV + +try: + import aster + aster_exists = True + # Si le module aster est présent, on le connecte + # au JDC + import Build.B_CODE + Build.B_CODE.CODE.codex=aster + + from Utilitai.Utmess import UTMESS + from Build.B_SENSIBILITE_MEMO_NOM_SENSI import MEMORISATION_SENSIBILITE + from Execution.E_Global import MessageLog +except: + aster_exists = False + + + +def commun_DEBUT_POURSUITE(jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO): + """Fonction sdprod partie commune à DEBUT et POURSUITE. + (on stocke un entier au lieu du logique) + """ + jdc.par_lot = PAR_LOT + jdc.impr_macro = int(IMPR_MACRO == 'OUI') + jdc.jxveri = int(CODE != None or (DEBUG != None and DEBUG['JXVERI'] == 'OUI')) + jdc.sdveri = int(DEBUG != None and DEBUG['SDVERI'] == 'OUI') + jdc.fico = None + jdc.sd_checker = CheckLog() + jdc.info_level = INFO + if CODE != None: + jdc.fico = CODE['NOM'] + if LANG: + from Execution.i18n import localization + localization.install(LANG) + if aster_exists: + # pb en cas d'erreur dans FIN : appeler reset_print_function dans traiter_fin_exec ? + #from functools import partial + #asprint = partial(aster.affiche, 'MESSAGE') + #message.register_print_function(asprint) + # en POURSUITE, ne pas écraser la mémorisation existante. + if not hasattr(jdc, 'memo_sensi'): + jdc.memo_sensi = MEMORISATION_SENSIBILITE() + jdc.memo_sensi.reparent(jdc) + # ne faire qu'une fois + if not hasattr(jdc, 'msg_init'): + # messages d'alarmes désactivés + if IGNORE_ALARM: + if not type(IGNORE_ALARM) in (list, tuple): + IGNORE_ALARM = [IGNORE_ALARM] + for idmess in IGNORE_ALARM: + MessageLog.disable_alarm(idmess) + # en POURSUITE, conserver le catalogue de comportement picklé + if not hasattr(jdc, 'catalc'): + from Comportement import catalc + jdc.catalc = catalc + jdc.msg_init = True + + +def DEBUT(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO, **args): + """ + Fonction sdprod de la macro DEBUT + """ + # La commande DEBUT ne peut exister qu'au niveau jdc + if self.jdc is not self.parent : + raise Accas.AsException("La commande DEBUT ne peut exister qu'au niveau jdc") + commun_DEBUT_POURSUITE(self.jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO) + + +def build_debut(self,**args): + """ + Fonction ops pour la macro DEBUT + """ + self.jdc.UserError=self.codex.error + + if self.jdc.par_lot == 'NON' : + self.jdc._Build() + # On execute la fonction debut pour initialiser les bases + # Cette execution est indispensable avant toute autre action sur ASTER + # op doit être un entier car la fonction debut appelle GCECDU qui demande + # le numéro de l'operateur associé (getoper) + self.definition.op=0 + self.set_icmd(1) + lot,ier=self.codex.debut(self,1) + # On remet op a None juste apres pour eviter que la commande DEBUT + # ne soit executée dans la phase d'execution + self.definition.op=None + return ier + +def POURSUITE(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO, **args): + """ + Fonction sdprod de la macro POURSUITE + """ + # La commande POURSUITE ne peut exister qu'au niveau jdc + if self.jdc is not self.parent : + raise Accas.AsException("La commande POURSUITE ne peut exister qu'au niveau jdc") + + commun_DEBUT_POURSUITE(self.jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, LANG, INFO) + + if (self.codex and os.path.isfile("glob.1") or os.path.isfile("bhdf.1")): + # Le module d'execution est accessible et glob.1 est present + # Pour eviter de rappeler plusieurs fois la sequence d'initialisation + # on memorise avec l'attribut fichier_init que l'initialisation + # est réalisée + if hasattr(self,'fichier_init'):return + self.fichier_init='glob.1' + self.jdc.initexec() + # le sous programme fortran appelé par self.codex.poursu demande le numéro + # de l'operateur (GCECDU->getoper), on lui donne la valeur 0 + self.definition.op=0 + lot,ier,lonuti,concepts=self.codex.poursu(self,1) + # Par la suite pour ne pas executer la commande pendant la phase + # d'execution on le remet à None + self.definition.op=None + # On demande la numérotation de la commande POURSUITE avec l'incrément + # lonuti pour qu'elle soit numérotée à la suite des commandes existantes. + # self.set_icmd(lonuti) Non : on repart à zéro + pos=0 + d={} + while pos+80 < len(concepts)+1: + nomres=concepts[pos:pos+8] + concep=concepts[pos+8:pos+24] + nomcmd=concepts[pos+24:pos+40] + statut=concepts[pos+40:pos+48] + message.info(SUPERV, '%s %s %s %s', nomres, concep, nomcmd, statut) + if nomres[0] not in (' ', '.', '&') and statut != '&DETRUIT': + exec nomres+'='+concep.lower()+'()' in self.parent.g_context,d + elif statut == '&DETRUIT': + self.jdc.nsd = self.jdc.nsd+1 + pos=pos+80 + # ces ASSD seront écrasées par le pick.1, + # on vérifiera la cohérence de type entre glob.1 et pick.1 + for k,v in d.items(): + self.parent.NommerSdprod(v,k) + self.g_context=d + + # Il peut exister un contexte python sauvegardé sous forme pickled + # On récupère ces objets après la restauration des concepts pour que + # la récupération des objets pickled soit prioritaire. + # On vérifie que les concepts relus dans glob.1 sont bien tous + # presents sous le même nom et du même type dans pick.1 + # Le contexte est ensuite updaté (surcharge) et donc enrichi des + # variables qui ne sont pas des concepts. + # On supprime du pickle_context les concepts valant None, ca peut + # être le cas des concepts non executés, placés après FIN. + UTMESS('I', 'SUPERVIS2_1', valk='pick.1') + pickle_context = get_pickled_context() + if pickle_context == None: + UTMESS('F', 'SUPERVIS_86') + return + self.jdc.restore_pickled_attrs(pickle_context) + from Cata.cata import entier + from Noyau.N_CO import CO + for elem in pickle_context.keys(): + if isinstance(pickle_context[elem], ASSD): + pickle_class = pickle_context[elem].__class__ + # on rattache chaque assd au nouveau jdc courant (en poursuite) + pickle_context[elem].jdc = self.jdc + pickle_context[elem].parent = self.jdc + # le marquer comme 'executed' + pickle_context[elem].executed = 1 + # pour que sds_dict soit cohérent avec g_context + self.jdc.sds_dict[elem] = pickle_context[elem] + if elem != pickle_context[elem].nom: + name = re.sub('_([0-9]+)$', '[\\1]', pickle_context[elem].nom) + if self.jdc.info_level > 1: + UTMESS('I', 'SUPERVIS2_3', + valk=(elem, type(pickle_context[elem]).__name__.upper())) + UTMESS('A', 'SUPERVIS_93', valk=(elem, "del %s" % name)) + del pickle_context[elem] + continue + # détecte les incohérences + if elem in self.g_context.keys(): + poursu_class = self.g_context[elem].__class__ + if poursu_class != pickle_class : + UTMESS('F','SUPERVIS_87',valk=[elem]) + return + elif pickle_class not in (CO, entier) : + # on n'a pas trouvé le concept dans la base et sa classe est ASSD : ce n'est pas normal + # sauf dans le cas de CO : il n'a alors pas été typé et c'est normal qu'il soit absent de la base + # même situation pour le type 'entier' produit uniquement par DEFI_FICHIER + UTMESS('F','SUPERVIS_88', valk=[elem,str(pickle_class)]) + return + if pickle_context[elem]==None: + del pickle_context[elem] + self.g_context.update(pickle_context) + return + + else: + # Si le module d'execution n est pas accessible ou glob.1 absent on + # demande un fichier (EFICAS) + # Il faut éviter de réinterpréter le fichier à chaque appel de + # POURSUITE + if hasattr(self,'fichier_init'): + return + if aster_exists: + UTMESS('F','SUPERVIS_89') + self.make_poursuite() + +def get_pickled_context(): + """ + Cette fonction permet de réimporter dans le contexte courant du jdc (jdc.g_context) + les objets python qui auraient été sauvegardés, sous forme pickled, lors d'une + précédente étude. Un fichier pick.1 doit être présent dans le répertoire de travail + """ + fpick = 'pick.1' + if not os.path.isfile(fpick): + return None + + # Le fichier pick.1 est présent. On essaie de récupérer les objets python sauvegardés + context={} + try: + file=open(fpick,'r') + # Le contexte sauvegardé a été picklé en une seule fois. Il est seulement + # possible de le récupérer en bloc. Si cette opération echoue, on ne récupère + # aucun objet. + context=pickle.load(file) + file.close() + except: + # En cas d'erreur on ignore le contenu du fichier + traceback.print_exc() + return None + + return context + +def POURSUITE_context(self,d): + """ + Fonction op_init de la macro POURSUITE + """ + # self représente la macro POURSUITE ... + d.update(self.g_context) + # Une commande POURSUITE n'est possible qu'au niveau le plus haut + # On ajoute directement les concepts dans le contexte du jdc + # XXX est ce que les concepts ne sont pas ajoutés plusieurs fois ?? + for v in self.g_context.values(): + if isinstance(v, ASSD) : + self.jdc.sds.append(v) + +def build_poursuite(self,**args): + """ + Fonction ops pour la macro POURSUITE + """ + # Pour POURSUITE on ne modifie pas la valeur initialisee dans ops.POURSUITE + # Il n y a pas besoin d executer self.codex.poursu (c'est deja fait dans + # la fonction sdprod de la commande (ops.POURSUITE)) + self.set_icmd(1) + self.jdc.UserError = self.codex.error + return 0 + +def INCLUDE(self,UNITE,**args): + """ + Fonction sd_prod pour la macro INCLUDE + """ + if not UNITE : return + if hasattr(self,'unite'):return + self.unite=UNITE + + if self.jdc and self.jdc.par_lot == 'NON': + # On est en mode commande par commande, on appelle la methode speciale + self.Execute_alone() + + self.make_include(unite=UNITE) + +def INCLUDE_context(self,d): + """ + Fonction op_init pour macro INCLUDE + """ + ctxt = self.g_context + d.update(ctxt) + +def build_include(self,**args): + """ + Fonction ops de la macro INCLUDE appelée lors de la phase de Build + """ + # Pour presque toutes les commandes (sauf FORMULE et POURSUITE) + # le numéro de la commande n est pas utile en phase de construction + # La macro INCLUDE ne sera pas numérotée (incrément=None) + ier=0 + self.set_icmd(None) + icmd=0 + # On n'execute pas l'ops d'include en phase BUILD car il ne sert a rien. + #ier=self.codex.opsexe(self,icmd,-1,1) + return ier + +def build_detruire(self,d): + """Fonction op_init de DETRUIRE.""" + list_co = set() + sd = [] + # par nom de concept (typ=assd) + if self["CONCEPT"] != None: + for mc in self["CONCEPT"]: + mcs = mc["NOM"] + if type(mcs) not in (list, tuple): + mcs = [mcs] + list_co.update(mcs) + # par chaine de caractères (typ='TXM') + if self["OBJET"] != None: + for mc in self["OBJET"]: + mcs = mc["CHAINE"] + if type(mcs) not in (list, tuple): + mcs = [mcs] + # longueur <= 8, on cherche les concepts existants + for nom in mcs: + assert type(nom) in (str, unicode), 'On attend une chaine de caractères : %s' % nom + if len(nom.strip()) <= 8: + if self.jdc.sds_dict.get(nom) != None: + list_co.add(self.jdc.sds_dict[nom]) + elif d.get(nom) != None: + list_co.add(d[nom]) + #else uniquement destruction des objets jeveux + + for co in list_co: + assert isinstance(co, ASSD), 'On attend un concept : %s (type=%s)' % (co, type(co)) + nom = co.nom + # traitement particulier pour les listes de concepts, on va mettre à None + # le terme de l'indice demandé dans la liste : + # nomconcept_i est supprimé, nomconcept[i]=None + i = nom.rfind('_') + if i > 0 and not nom.endswith('_'): + concept_racine = nom[:i] + if d.has_key(concept_racine) and type(d[concept_racine]) is list: + try: + num = int(nom[i+1:]) + d[concept_racine][num] = None + except (ValueError, IndexError): + # cas : RESU_aaa ou (RESU_8 avec RESU[8] non initialisé) + pass + # pour tous les concepts : + if d.has_key(nom): + del d[nom] + if self.jdc.sds_dict.has_key(nom): + del self.jdc.sds_dict[nom] + #XXX/memoire suppression du concept et de sa partie SD + #co.supprime() + # On signale au parent que le concept n'existe plus après l'étape self + self.parent.delete_concept_after_etape(self, co) + # marque comme détruit == non executé + co.executed = 0 + + +def build_procedure(self,**args): + """ + Fonction ops de la macro PROCEDURE appelée lors de la phase de Build + """ + ier=0 + # Pour presque toutes les commandes (sauf FORMULE et POURSUITE) + # le numéro de la commande n est pas utile en phase de construction + # On ne numérote pas une macro PROCEDURE (incrément=None) + self.set_icmd(None) + icmd=0 + #ier=self.codex.opsexe(self,icmd,-1,3) + return ier + +def build_DEFI_FICHIER(self,**args): + """ + Fonction ops de la macro DEFI_FICHIER + """ + ier=0 + self.set_icmd(1) + icmd=0 + ier=self.codex.opsexe(self,icmd,-1,26) + return ier + +def build_formule(self, d): + """Fonction ops de FORMULE.""" + NOM_PARA = self.etape['NOM_PARA'] + VALE = self.etape['VALE'] + VALE_C = self.etape['VALE_C'] + if type(NOM_PARA) not in (list, tuple): + NOM_PARA = [NOM_PARA, ] + for para in NOM_PARA: + if para.strip() != para: + raise Accas.AsException("nom de paramètre invalide (contient des blancs)" \ + " : %s" % repr(para)) + if self.sd == None: + return + if VALE != None : + texte = ''.join(VALE.splitlines()) + elif VALE_C != None : + texte = ''.join(VALE_C.splitlines()) + self.sd.setFormule(NOM_PARA, texte.strip()) + +def build_gene_vari_alea(self, d): + """Fonction ops de la macro GENE_VARI_ALEA.""" + from Utilitai.Utmess import UTMESS + a = self.etape['BORNE_INF'] + moyen = self.etape['VALE_MOY' ] + TYPE = self.etape['TYPE'] + if self['INIT_ALEA'] is not None: + jump = self.etape['INIT_ALEA' ] + self.iniran(jump) + if TYPE == 'EXP_TRONQUEE': + b = self.etape['BORNE_SUP'] + if a >= b: + UTMESS('F', 'PROBA0_1', valr=[a, b]) + elif moyen <= a or moyen >= b: + UTMESS('F', 'PROBA0_2', valr=[a, moyen, b]) + k = 1. / (moyen - a) + if exp(-b * k) < 1.e-12: + UTMESS('F', 'PROBA0_3') + # résolution par point fixe + eps = 1.E-4 + nitmax = 100000 + test = 0. + while abs((test - k) / k) > eps: + test = k + k = 1. / (moyen - (a * exp(-a * k) - b * exp(-b * k)) / \ + (exp(-a * k) - exp(-b * k))) + # génération de la variable aléatoire + alpha = exp(-a * k) - exp(-b * k) + self.sd.valeur = -(log(exp(-a * k) - alpha * self.getran()[0])) / k + elif TYPE == 'EXPONENTIELLE': + if moyen <= a: + UTMESS('F', 'PROBA0_4', valr=[moyen, a]) + v = moyen - a + u = self.getran()[0] + x = -log(1 - u) + self.sd.valeur = a + v * x + elif TYPE == 'GAMMA': + delta = self.etape['COEF_VAR' ] + if moyen <= a: + UTMESS('F', 'PROBA0_4', valr=[moyen, a]) + v = moyen - a + alpha = 1. / delta**2 + if alpha <= 1.: + UTMESS('F', 'PROBA0_5') + gamma2 = alpha - 1. + gamm1 = 1. / gamma2 + beta = sqrt(2. * alpha - 1.) + beta2 = 1. / beta**2 + f0 = 0.5 + (1. / pi) * atan2(-gamma2 / beta, 1.) + c1 = 1. - f0 + c2 = f0 - 0.5 + vref = 0. + vv = -1. + while -vv > vref: + u = self.getran()[0] + gamdev = beta * tan(pi * (u * c1 + c2)) + gamma2 + unif = self.getran()[0] + if unif < 0.: + UTMESS('F', 'PROBA0_6') + vv = -log(unif) + vref = log(1 + beta2 * ((gamdev - gamma2)**2)) \ + + gamma2 * log(gamdev * gamm1) - gamdev + gamma2 + if vv <= 0.: + UTMESS('F', 'PROBA0_7') + self.sd.valeur = a + v * delta**2 * gamdev diff --git a/Aster/Cata/cataSTA6/__init__.py b/Aster/Cata/cataSTA6/__init__.py index 10ce4d8a..f9b042ca 100644 --- a/Aster/Cata/cataSTA6/__init__.py +++ b/Aster/Cata/cataSTA6/__init__.py @@ -11,4 +11,4 @@ POURSUITE.itemeditor=pre74.compomacro.POURSUITETreeItem import os,sys import prefs import sys -rep_macro = os.path.join(prefs.REPINI,'Cata/cataSTA6') +rep_macro = os.path.join(prefs.repIni,'Cata/cataSTA6') diff --git a/Aster/Cata/cataSTA74/__init__.py b/Aster/Cata/cataSTA74/__init__.py index 38b937db..17b64ff9 100644 --- a/Aster/Cata/cataSTA74/__init__.py +++ b/Aster/Cata/cataSTA74/__init__.py @@ -1,6 +1,6 @@ import os,sys import prefs import sys -rep_macro = os.path.join(prefs.REPINI,'Cata/cataSTA74') +rep_macro = os.path.join(prefs.repIni,'Cata/cataSTA74') sys.path.insert(0,rep_macro) from cata import * diff --git a/Aster/Cata/cataSTA76/__init__.py b/Aster/Cata/cataSTA76/__init__.py index 61b51b48..7218d945 100644 --- a/Aster/Cata/cataSTA76/__init__.py +++ b/Aster/Cata/cataSTA76/__init__.py @@ -1,6 +1,6 @@ import os,sys import prefs import sys -rep_macro = os.path.join(prefs.REPINI,'Cata/cataSTA76') +rep_macro = os.path.join(prefs.repIni,'Cata/cataSTA76') sys.path.insert(0,rep_macro) from cata import * diff --git a/Aster/Cata/cataSTA9/Macro/calc_table_ops.py b/Aster/Cata/cataSTA9/Macro/calc_table_ops.py index dabeeb7b..4e2be5e7 100644 --- a/Aster/Cata/cataSTA9/Macro/calc_table_ops.py +++ b/Aster/Cata/cataSTA9/Macro/calc_table_ops.py @@ -1,4 +1,4 @@ -#@ MODIF calc_table_ops Macro DATE 05/01/2010 AUTEUR MACOCCO K.MACOCCO +#@ MODIF calc_table_ops Macro DATE 07/09/2010 AUTEUR MACOCCO K.MACOCCO # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -21,6 +21,7 @@ # RESPONSABLE MCOURTOI M.COURTOIS from types import * EnumTypes = (ListType, TupleType) +import os def calc_table_ops(self, TABLE, ACTION, INFO, **args): """ @@ -52,7 +53,6 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args): DETRUIRE = self.get_cmd('DETRUIRE') # 0. faut-il utiliser une table dérivée - form_sens='\n... SENSIBILITE AU PARAMETRE %s (SD COMP %s)' if args['SENSIBILITE']: ncomp = self.jdc.memo_sensi.get_nocomp(TABLE.nom, args['SENSIBILITE'].nom) sdtab = table_jeveux(ncomp) @@ -136,7 +136,8 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args): tab.fromfunction(occ['NOM_PARA'], occ['FORMULE']) if INFO == 2: vectval = getattr(tab, occ['NOM_PARA']).values() - aster.affiche('MESSAGE', 'Ajout de la colonne %s : %s' % (occ['NOM_PARA']+repr(vectval))+'\n') + aster.affiche('MESSAGE', 'Ajout de la colonne %s : %s' \ + % (occ['NOM_PARA'], repr(vectval))) #---------------------------------------------- # 6. Traitement de AJOUT @@ -155,13 +156,12 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args): dprod = tab.dict_CREA_TABLE() if INFO == 2: - echo_mess = [] - echo_mess.append( '@-'*30+'\n' ) - echo_mess.append( tab ) + echo_mess = [''] + echo_mess.append( repr(tab) ) from pprint import pformat echo_mess.append( pformat(dprod) ) - echo_mess.append( '@-'*30+'\n' ) - texte_final = ' '.join(echo_mess) + echo_mess.append('') + texte_final = os.linesep.join(echo_mess) aster.affiche('MESSAGE', texte_final) # surcharge par le titre fourni diff --git a/Aster/Cata/cataSTA9/Macro/recal.py b/Aster/Cata/cataSTA9/Macro/recal.py index 684df91c..c720d923 100644 --- a/Aster/Cata/cataSTA9/Macro/recal.py +++ b/Aster/Cata/cataSTA9/Macro/recal.py @@ -1,4 +1,4 @@ -#@ MODIF recal Macro DATE 29/08/2006 AUTEUR MCOURTOI M.COURTOIS +#@ MODIF recal Macro DATE 29/09/2010 AUTEUR MACOCCO K.MACOCCO # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== diff --git a/Aster/Cata/cataSTA9/Numeric.py b/Aster/Cata/cataSTA9/Numeric.py new file mode 100644 index 00000000..185019ed --- /dev/null +++ b/Aster/Cata/cataSTA9/Numeric.py @@ -0,0 +1 @@ +from numpy.oldnumeric import * diff --git a/Aster/Cata/cataSTA9/SD/utilsd.py b/Aster/Cata/cataSTA9/SD/utilsd.py index 193a3b19..dc031de8 100644 --- a/Aster/Cata/cataSTA9/SD/utilsd.py +++ b/Aster/Cata/cataSTA9/SD/utilsd.py @@ -23,7 +23,7 @@ Utilitaire sur le catalogue des structures de données. """ -__revision__ = "$Id: utilsd.py,v 1.7.4.2 2010-06-03 08:51:16 pnoyret Exp $" +__revision__ = "$Id: utilsd.py,v 1.8.4.3 2010-12-06 13:14:01 pnoyret Exp $" import sys import os diff --git a/Aster/Cata/cataSTA9/cata.py b/Aster/Cata/cataSTA9/cata.py index 30a1ffef..95cf14f0 100644 --- a/Aster/Cata/cataSTA9/cata.py +++ b/Aster/Cata/cataSTA9/cata.py @@ -23,7 +23,7 @@ from __future__ import division __version__ = "$Name: $" -__Id__ = "$Id: cata.py,v 1.7.4.2 2010-06-03 08:50:35 pnoyret Exp $" +__Id__ = "$Id: cata.py,v 1.8.4.3 2010-12-06 13:13:33 pnoyret Exp $" import Accas from Accas import * @@ -12929,7 +12929,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 12/11/2010 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12951,12 +12951,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster, DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene, reentrant='n', fr="Créer la structure globale à partir des sous-structures en sous-structuration dynamique", - UIinfo={"groupes":("Matrices/vecteurs",)}, + UIinfo={"groupes":("Matrices et vecteurs",)}, SOUS_STRUC =FACT(statut='o',max='**', NOM =SIMP(statut='o',typ='TXM' ), MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), - ANGL_NAUT =SIMP(statut='f',typ='R',max=3), - TRANS =SIMP(statut='f',typ='R',max=3), + ANGL_NAUT =SIMP(statut='o',typ='R',max=3), + TRANS =SIMP(statut='o',typ='R',max=3), ), LIAISON =FACT(statut='o',max='**', SOUS_STRUC_1 =SIMP(statut='o',typ='TXM' ), @@ -14048,7 +14048,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/04/2009 AUTEUR ABBAS M.ABBAS +#& MODIF COMMANDE DATE 12/11/2010 AUTEUR MICOL A.MICOL # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14401,7 +14401,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', "MATR_ASSE", "ITER_DEBO", "CTCD_ITER","CTCD_GEOM","CTCD_NOEU", - "CTCC_GEOM","CTCC_FROT","CTCC_CONT", + "BOUC_GEOM","BOUC_FROT","BOUC_CONT", "SUIV_1","SUIV_2","SUIV_3","SUIV_4", ), ), @@ -15133,7 +15133,7 @@ FONC_FLUI_STRU=OPER(nom="FONC_FLUI_STRU",op= 169,sd_prod=fonction_sdaster, UIinfo={"groupes":("Fonction",)}, TYPE_FLUI_STRU =SIMP(statut='o',typ=(type_flui_stru) ), ) ; -#& MODIF COMMANDE DATE 21/04/2008 AUTEUR LEFEBVRE J-P.LEFEBVRE +#& MODIF COMMANDE DATE 02/08/2010 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15158,12 +15158,15 @@ def formule_prod(self,VALE,VALE_C,**args): elif VALE_C != None: return formule_c -def form_pyth_ops(self,d): - NOM_PARA=self.etape['NOM_PARA'] +def form_pyth_ops(self, d): + NOM_PARA = self.etape['NOM_PARA'] VALE =self.etape['VALE'] VALE_C =self.etape['VALE_C'] if type(NOM_PARA) not in (list, tuple): NOM_PARA = [NOM_PARA,] + for para in NOM_PARA: + if para.strip() != para: + raise AsException("nom de paramètre invalide (contient des blancs) : %s" % repr(para)) if self.sd == None: return if VALE != None : @@ -24768,7 +24771,7 @@ REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=table_fonction, into=("DIAG_TOUT","DIAG_DIAG","TOUT_TOUT","TOUT_DIAG") ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 06/10/2008 AUTEUR DEVESA G.DEVESA +#& MODIF COMMANDE DATE 17/11/2010 AUTEUR MACOCCO K.MACOCCO # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2008 EDF R&D WWW.CODE-ASTER.ORG @@ -24787,11 +24790,9 @@ REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=table_fonction, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== # RESPONSABLE DEVESA G.DEVESA -def rest_spec_temp_prod(RESU_GENE,RESULTAT,**args): +def rest_spec_temp_prod(RESULTAT,**args): if AsType(RESULTAT) == dyna_harmo : return dyna_trans - if AsType(RESU_GENE) == harm_gene : return tran_gene if AsType(RESULTAT) == dyna_trans : return dyna_harmo - if AsType(RESU_GENE) == tran_gene : return harm_gene raise AsException("type de concept resultat non prevu") @@ -24799,9 +24800,7 @@ REST_SPEC_TEMP=OPER(nom="REST_SPEC_TEMP",op=181,sd_prod=rest_spec_temp_prod, fr="Transformée de Fourier d'un résultat", reentrant='n', UIinfo={"groupes":("Matrices/vecteurs",)}, - regles=UN_PARMI('RESU_GENE','RESULTAT'), - RESU_GENE =SIMP(statut='f',typ=(harm_gene,tran_gene,) ), - RESULTAT =SIMP(statut='f',typ=(dyna_harmo,dyna_trans,) ), + RESULTAT =SIMP(statut='o',typ=(dyna_harmo,dyna_trans,) ), METHODE =SIMP(statut='f',typ='TXM',defaut="PROL_ZERO",into=("PROL_ZERO","TRONCATURE") ), SYMETRIE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",)), @@ -25050,7 +25049,7 @@ STANLEY=MACRO(nom="STANLEY",op=stanley_ops,sd_prod=None, fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit les md5"), ) ; -#& MODIF COMMANDE DATE 07/04/2009 AUTEUR ABBAS M.ABBAS +#& MODIF COMMANDE DATE 12/11/2010 AUTEUR MICOL A.MICOL # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -25403,7 +25402,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, "MATR_ASSE", "ITER_DEBO", "CTCD_ITER","CTCD_GEOM","CTCD_NOEU", - "CTCC_GEOM","CTCC_FROT","CTCC_CONT", + "BOUC_GEOM","BOUC_FROT","BOUC_CONT", "SUIV_1","SUIV_2","SUIV_3","SUIV_4","ITER_FETI", ), ), diff --git a/Aster/Cata/cataSTA9/ops.py b/Aster/Cata/cataSTA9/ops.py index c9488eb6..880efb58 100644 --- a/Aster/Cata/cataSTA9/ops.py +++ b/Aster/Cata/cataSTA9/ops.py @@ -1,4 +1,4 @@ -#@ MODIF ops Cata DATE 06/10/2009 AUTEUR MACOCCO K.MACOCCO +#@ MODIF ops Cata DATE 12/11/2010 AUTEUR MACOCCO K.MACOCCO # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -212,6 +212,8 @@ def POURSUITE(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, **args): # POURSUITE if hasattr(self,'fichier_init'): return + if aster_exists: + UTMESS('F','SUPERVIS_94') self.make_poursuite() def get_pickled_context(): diff --git a/Aster/Include.com b/Aster/Include.com new file mode 100644 index 00000000..78fdda81 --- /dev/null +++ b/Aster/Include.com @@ -0,0 +1,2 @@ + +MAAA=LIRE_MAILLAGE(UNITE=20,); diff --git a/Aster/a.dat b/Aster/a.dat new file mode 100644 index 00000000..1122ebca --- /dev/null +++ b/Aster/a.dat @@ -0,0 +1,3 @@ +1,2 +3,7 +8,9 diff --git a/Aster/configuration_ASTER.py b/Aster/configuration_ASTER.py index 9a7273d4..379a7b45 100644 --- a/Aster/configuration_ASTER.py +++ b/Aster/configuration_ASTER.py @@ -22,6 +22,7 @@ Ce module sert pour charger les paramètres de configuration d'EFICAS """ # Modules Python +print "dans Aster" import os, sys, string, types, re import traceback @@ -53,6 +54,7 @@ class CONFIGbase: self.lecture_catalogues_standard() self.lecture_fichier_ini_utilisateur() self.init_liste_param() + #-------------------------------------- def lecture_fichier_ini_standard(self): diff --git a/Aster/editeur.ini b/Aster/editeur.ini index f7b3b724..9ce15b53 100644 --- a/Aster/editeur.ini +++ b/Aster/editeur.ini @@ -22,12 +22,12 @@ import os # Répertoire initial import prefs_ASTER -initialdir=prefs_ASTER.REPINI +initialdir=prefs_ASTER.repIni rep_cata = os.path.join(initialdir,'Cata') rep_Pmw = os.path.join(initialdir,'../Pmw') # Accès à la documentation Aster -path_doc = os.path.join(rep_cata,'..','Doc') +path_doc = os.path.abspath(os.path.join(rep_cata,'..','Doc')) exec_acrobat = "acroread" # Utilisateur/Développeur @@ -37,11 +37,13 @@ path_cata_dev = "/tmp/cata" rep_travail = "/tmp" # Choix des catalogues -rep_mat_v88=os.path.join(rep_cata,'cataSTA8','materiau') -rep_mat_v96=os.path.join(rep_cata,'cataSTA9','materiau') -rep_mat_v10=os.path.join(rep_cata,'cataSTA10','materiau') +rep_mat_STA88=os.path.join(rep_cata,'cataSTA8','materiau') +rep_mat_STA98=os.path.join(rep_cata,'cataSTA9','materiau') +rep_mat_STA103=os.path.join(rep_cata,'cataSTA10','materiau') # catalogues=( -('ASTER','v9.6',os.path.join(rep_cata,'cataSTA9'),'python'), -('ASTER','v10.0',os.path.join(rep_cata,'cataSTA10'),'python','defaut'), +('ASTER','STA8.8',os.path.join(rep_cata,'cataSTA8'),'python'), +('ASTER','STA9.8',os.path.join(rep_cata,'cataSTA9'),'python'), +('ASTER','STA10.3',os.path.join(rep_cata,'cataSTA10'),'python'), +('ASTER','STA11',os.path.join(rep_cata,'cataSTA11'),'python','defaut'), ) diff --git a/Aster/editeur.ini.win b/Aster/editeur.ini.win index ac88a1ef..356b91d3 100644 --- a/Aster/editeur.ini.win +++ b/Aster/editeur.ini.win @@ -22,8 +22,8 @@ import os import prefs -rep_cata = os.path.join(prefs.REPINI,'Cata') -rep_Pmw = os.path.join(prefs.REPINI,'../Pmw') +rep_cata = os.path.join(prefs.repIni,'Cata') +rep_Pmw = os.path.join(prefs.repIni,'../Pmw') # Accès à la documentation Aster path_doc = os.path.join(rep_cata,'..','Doc') diff --git a/Aster/editeur_salome.ini b/Aster/editeur_salome.ini index 25ce39b9..398dc653 100644 --- a/Aster/editeur_salome.ini +++ b/Aster/editeur_salome.ini @@ -21,9 +21,8 @@ import os # Répertoire initial -#initialdir=os.curdir -from prefs_ASTER import REPINI -initialdir=REPINI +import prefs_ASTER +initialdir=prefs_ASTER.repIni rep_cata = os.path.join(initialdir,'Cata') rep_Pmw = os.path.join(initialdir,'../Pmw') @@ -38,11 +37,12 @@ path_cata_dev = "/tmp/cata" rep_travail = "/tmp" # Choix des catalogues -rep_mat_v88=os.path.join(rep_cata,'cataSTA8','materiau') -rep_mat_v95=os.path.join(rep_cata,'cataSTA9','materiau') +rep_mat_STA88=os.path.join(rep_cata,'cataSTA8','materiau') +rep_mat_STA98=os.path.join(rep_cata,'cataSTA9','materiau') +rep_mat_STA103=os.path.join(rep_cata,'cataSTA10','materiau') # catalogues=( -#('ASTER','v8.8',os.path.join(rep_cata,'cataSTA8'),'python'), -('ASTER','v9.5',os.path.join(rep_cata,'cataSTA9'),'python'), -('ASTER','v10.0',os.path.join(rep_cata,'cataSTA10'),'python','defaut'), +('ASTER','STA8.8',os.path.join(rep_cata,'cataSTA8'),'python'), +('ASTER','STA9.8',os.path.join(rep_cata,'cataSTA9'),'python'), +('ASTER','STA10.3',os.path.join(rep_cata,'cataSTA10'),'python','defaut'), ) diff --git a/Aster/prefs.py b/Aster/prefs.py index 484e857c..51af86f3 100644 --- a/Aster/prefs.py +++ b/Aster/prefs.py @@ -1 +1,4 @@ code="ASTER" +import sys, os +if os.path.dirname(os.path.abspath(__file__)) not in sys.path : + sys.path.insert(0,os.path.dirname(os.path.abspath(__file__))) diff --git a/Aster/prefs.py.win b/Aster/prefs.py.win index 1ffe8892..c70c90fe 100644 --- a/Aster/prefs.py.win +++ b/Aster/prefs.py.win @@ -21,20 +21,20 @@ import os,sys -# REPINI sert à localiser le fichier editeur.ini +# repIni sert à localiser le fichier editeur.ini # Obligatoire -REPINI=os.path.dirname(os.path.abspath(__file__)) +repIni=os.path.dirname(os.path.abspath(__file__)) # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') # CODE_PATH sert à localiser Noyau et Validation éventuellement # non contenus dans la distribution EFICAS # Par défaut on utilise les modules de INSTALLDIR # Peut valoir None (defaut) CODE_PATH = None -#CODE_PATH = os.path.join(REPINI,'../../Superv') +#CODE_PATH = os.path.join(repIni,'../../Superv') # la variable code donne le nom du code a selectionner code="ASTER" diff --git a/Aster/prefs_ASTER.py b/Aster/prefs_ASTER.py index 46c9e9c8..eb0beef3 100644 --- a/Aster/prefs_ASTER.py +++ b/Aster/prefs_ASTER.py @@ -19,16 +19,13 @@ # # ====================================================================== -import os,sys +import os -# REPINI sert à localiser le fichier editeur.ini +# repIni sert à localiser le fichier editeur.ini # Obligatoire -REPINI=os.path.dirname(os.path.abspath(__file__)) -repIni=REPINI +repIni=os.path.dirname(os.path.abspath(__file__)) +INSTALLDIR=os.path.abspath(os.path.join(repIni,'..')) -# INSTALLDIR sert à localiser l'installation d'Eficas -# Obligatoire -INSTALLDIR=os.path.join(REPINI,'..') # CODE_PATH sert à localiser Noyau et Validation éventuellement # non contenus dans la distribution EFICAS @@ -36,6 +33,7 @@ INSTALLDIR=os.path.join(REPINI,'..') # Peut valoir None (defaut) CODE_PATH = None + # lang indique la langue utilisée pour les chaines d'aide : fr ou ang lang='fr' @@ -43,11 +41,6 @@ lang='fr' encoding='iso-8859-1' -EditeurDir=INSTALLDIR+"/Editeur" -sys.path[:0]=[INSTALLDIR] - -ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') - # Preference if os.name == 'nt': userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ]) @@ -60,7 +53,6 @@ if os.path.isfile(userprefs): except: pass - #------------------------------------------------------------------- # Partie pour TK #------------------------------------------------------------------- diff --git a/Aster/qtEficas_aster.py b/Aster/qtEficas_aster.py index a779bfcb..299b7f64 100755 --- a/Aster/qtEficas_aster.py +++ b/Aster/qtEficas_aster.py @@ -24,13 +24,11 @@ Ce module sert à lancer EFICAS configuré pour Code_Aster """ # Modules Python - # Modules Eficas -import prefs -name='prefs_'+prefs.code -__import__(name) -import sys -from InterfaceQT4 import eficas_go +import sys,os +sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')) +import prefs +from InterfaceQT4 import eficas_go eficas_go.lance_eficas(code=prefs.code) diff --git a/Aster/qtGroup.py b/Aster/qtGroup.py index 930d1cfb..0cf40bcc 100755 --- a/Aster/qtGroup.py +++ b/Aster/qtGroup.py @@ -32,4 +32,4 @@ __import__(name) from InterfaceQT4 import eficas_go -eficas_go.lance_eficas_ssIhm(code=prefs.code,fichier="/local/noyret/Eficas_Aster/cable.comm",version='v10.0') +eficas_go.lance_eficas_ssIhm(code=prefs.code,fichier="/local/noyret/Eficas_Aster/cable.comm",version='v10.2') diff --git a/Aster/test_eficas.py b/Aster/test_eficas.py index 4576e99d..66c40a9d 100755 --- a/Aster/test_eficas.py +++ b/Aster/test_eficas.py @@ -21,7 +21,7 @@ # ====================================================================== """ - Ce module sert à lancer EFICAS configuré pour Code_Aster + Ce module sert à lancer EFICAS configuré pour Code_Aster """ # Modules Python import sys @@ -36,7 +36,8 @@ if hasattr(prefs,'encoding'): del sys.setdefaultencoding # Fin hack -sys.path[:0]=[prefs.INSTALLDIR] +import prefs_ASTER +sys.path[:0]=[prefs_ASTER.INSTALLDIR] import InterfaceTK from InterfaceTK import eficas_test diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f2d52b8..b2259d1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,6 +83,7 @@ option ( WITH_OPENTURNS "Install Open TURNS files" OFF ) option ( WITH_ASTER "Install Aster files" OFF ) option ( WITH_MAP "Install MAP files" OFF ) option ( WITH_SEP "Install SEP files" OFF ) +option ( IN_SALOME_CONTEXT "Configure Eficas for use in Salome" OFF ) set ( _OPTIONLIST WITH_OPENTURNS @@ -97,6 +98,7 @@ set ( _SALOME_MECA_LIST WITH_OPENTURNS WITH_ASTER WITH_SEP + IN_SALOME_CONTEXT ) if (WITH_ALL_PACKAGES) @@ -126,7 +128,11 @@ endif ( NOT ${_VALIDOPT} ) # Detection des prerequis lies aux options if (WITH_OPENTURNS) - find_package ( OpenTURNS REQUIRED ) + if (IN_SALOME_CONTEXT) + SET(OpenTURNS_PYTHON_MODULE_DIR "") + else (IN_SALOME_CONTEXT) + find_package ( OpenTURNS REQUIRED ) + endif (IN_SALOME_CONTEXT) endif (WITH_OPENTURNS) #if (WITH_ASTER) @@ -173,7 +179,7 @@ endif (WITH_TK) # Installation des fichiers : MAP if (WITH_MAP) - add_subdirectory ( Map ) + add_subdirectory ( MAP ) endif (WITH_MAP) # Installation des fichiers : Sep diff --git a/Carmel3D/Carmel3D_cata_etendu.py b/Carmel3D/Carmel3D_cata_etendu.py new file mode 100644 index 00000000..2b1d6c96 --- /dev/null +++ b/Carmel3D/Carmel3D_cata_etendu.py @@ -0,0 +1,672 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# debut entete +# -------------------------------------------------- + +import os +import sys +from Accas import * + +# -------------------------------------------------- +# definition d une classe pour les materiaux +# definition d une classe pour les groupes de mailles +# definition d une classe pour les lois non lineaires +# -------------------------------------------------- +class materiau ( ASSD ) : pass +class grmaille ( ASSD ) : pass +class loiNL ( ASSD ) : pass + +#CONTEXT.debug = 1 +# -------------------------------------------------- +# déclaration du jeu de commandes : 1ere instruction du catalogue obligatoire +#--------------------------------------------------- + +JdC = JDC_CATA ( code = 'CARMEL3D', +# execmodul = None, + regles = ( +# AU_MOINS_UN ('MATERIALS'), + AU_MOINS_UN ('SOURCES'), +# A_CLASSER ('VERSION','SOURCES'), +# A_CLASSER ('MATERIALS','SOURCES'), + ), + ) # Fin JDC_CATA + +# -------------------------------------------------- +# -------------------------------------------------- +# definition de groupe de mailles +# et association du nom du materiau au groupe de mailles +#--------------------------------------------------- + +MESH_GR = OPER (nom = "MESH_GR", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Definition",)}, + fr= "definition du groupe de mailles", + ang = " mesh group definition", + sd_prod= grmaille, + + Material = SIMP (statut="o", + typ=(materiau,), + ang="name of the linked material", + fr ="nom du materiau associe", + ), + ) + +# +# -------------------------------------------------- +# le fichier .PHYS contient 3 blocs et jusqu'a 3 niveaux de sous-blocs +# +#================================ +# 1er bloc : bloc VERSION +# ce bloc est volontairement cache dans l IHM +#================================ + +VERSION = PROC ( nom = "VERSION", + op = None, + repetable = 'n', + UIinfo= {"groupes":("CACHE",)}, + ang= "version block definition", + +#---------------------- +# Liste des parametres +#---------------------- + + NUM = SIMP (statut="o", + typ="I", + defaut=1, + ang="version number of the physical model", + into=( 1,), + ), + FILETYPE = SIMP (statut="o", + typ="TXM", + defaut="PHYS", + ang="file type", + into=( "PHYS",), + ), + +) # Fin PROC VERSION + +#================================ +# 2eme bloc : bloc MATERIALS +#================================ +# definition des 3 types de matériaux isotropiques et homogenes +#----------------------------------------- +# sous bloc niveau 1 : materiau CONDUCTOR +#----------------------------------------- +# +CONDUCTOR = OPER (nom = "CONDUCTOR", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Isotropic Homogeneous Materials",)}, + ang= "CONDUCTOR block definition", + fr= "definition du bloc CONDUCTOR", + sd_prod= materiau, + +#------------------------------------------------ +# sous bloc niveau 2 : CONDUCTIVITY +#------------------------------------------------ + CONDUCTIVITY = FACT ( statut="o", + ang ="Conductivity properties", + fr ="proprietes du bloc CONDUCTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ="TXM", + defaut="LINEAR", + into = ("LINEAR","NONLINEAR"), + ang = "type of law", + fr = "type de loi", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT CONDUCTIVITY + +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ="TXM", + defaut="LINEAR", + into = ("LINEAR","NONLINEAR"), + ang = "type of law", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + ), # fin FACT PERMEABILITY + + + ) # fin OPER conductor + +#------------------------------------------ +# sous bloc niveau 1 : materiau DIELECTRIC +#------------------------------------------ +DIELECTRIC = OPER (nom = "DIELECTRIC", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Isotropic Homogeneous Materials",)}, + ang= "DIELECTRIC block definition", + fr= "definition du bloc DIELECTRIC", + sd_prod= materiau, + + +#------------------------------------------------ +# sous bloc niveau 2 : PERMITTTIVITY +#------------------------------------------------ + PERMITTIVITY = FACT ( statut="o", + ang ="Permittivity properties", + fr ="proprietes du bloc PERMITTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ="TXM", + defaut="LINEAR", + into = ("LINEAR","NONLINEAR"), + ang = "type of law", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMITTIVITY + +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ="TXM", + defaut="LINEAR", + into = ("LINEAR","NONLINEAR"), + ang = "type of law", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + +#------------------------------------------------ +# sous bloc niveau 3 : NONLINEAR +#------------------------------------------------ + NonLinearLaw = BLOC (condition="LAW=='NONLINEAR'", + + NATURE = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into=("SPLINE","MARROCCO","MARROCCO+SATURATION"), + ang="nature of the law", + fr ="nature de la loi", + ), + + SplineParam = BLOC (condition="NATURE=='SPLINE'", + + FILENAME = SIMP (statut="o", + typ=("Fichier",'All Files (*)',), + ang="data file name", + fr ="nom du fichier", + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="spline applied to", + fr ="spline appliquee a ", + ), + ), # fin BLOC SplineParam + + MarroccoParam= BLOC (condition="NATURE=='MARROCCO'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + ), # fin BLOC MarroccoParam + + MarroSatuParam= BLOC (condition="NATURE=='MARROCCO+SATURATION'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + BMAX = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="intersection B", + fr ="intersection B" , + ), + HSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="H value", + fr ="valeur H" , + ), + BSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="B value", + fr ="valeur B" , + ), + JOIN = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into= ("SPLINE","PARABOLIC","LINEAR"), + ang="type of join between laws", + fr ="type de jointure entre les 2 lois" , + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="join applied to", + fr ="jointure appliquee a ", + ), + ), # fin BLOC MarroSatuParam + + ), # fin BLOC NonLinearLaw + ), # fin FACT PERMEABILITY + + ) # fin OPER DIELECTRIC + +#------------------------------------ +# sous bloc niveau 1 : ZSURFACIC +#------------------------------------ +ZSURFACIC = OPER (nom = "ZSURFACIC", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Isotropic Homogeneous Materials",)}, + ang= "ZSURFACIC block definition", + fr= "definition du bloc ZSURFACIC", + sd_prod= materiau, + + +#------------------------------------------------ +# sous bloc niveau 2 : CONDUCTIVITY +#------------------------------------------------ + CONDUCTIVITY = FACT ( statut="o", + ang ="Conductivity properties", + fr ="proprietes du bloc CONDUCTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ="TXM", + defaut="LINEAR", + into = ("LINEAR","NONLINEAR"), + ang = "type of law", + fr = "type de loi", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + + ), # fin FACT CONDUCTIVITY + +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ="TXM", + defaut="LINEAR", + into = ("LINEAR","NONLINEAR"), + ang = "type of law", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + ) # fin OPER ZSURFACIC + + +#=================================== +# 1 type de matériau fictif +#--------------------------------------- +# sous bloc niveau 1 : materiau NILMAT +#--------------------------------------- +NILMAT = OPER (nom = "NILMAT", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Fictitious Materials",)}, + ang= "NILMAT block definition", + fr= "definition du bloc NILMAT", + sd_prod= materiau, + + + ) # fin OPER NILMAT + + +#============================================ +# 1 type de matériau isotropique non homogene +#---------------------------------------- +# sous bloc niveau 1 : EM_ISOTROPIC_FILES +#---------------------------------------- +EM_ISOTROPIC = PROC (nom = "EM_ISOTROPIC", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Isotropic Inhomogeneous Materials",)}, + ang= "EM_ISOTROPIC block definition", + fr= "definition du bloc EM_ISOTROPIC", + + CONDUCTIVITY_File = SIMP (statut="o", + typ=("Fichier",'MED Files (*.med)',), + ang="CONDUCTIVITY MED data file name", + fr ="nom du fichier MED CONDUCTIVITY", + ), + PERMEABILITY_File = SIMP (statut="o", + typ=("Fichier",'MED Files (*.med)',), + ang="PERMEABILITY MED data file name", + fr ="nom du fichier MED PERMEABILITY", + ), + ) # fin PROC EM_ISOTROPIC + +#============================================ +# 1 type de matériau non isotropique +#---------------------------------------- +# sous bloc niveau 1 : EM_ANISOTROPIC_FILES +#---------------------------------------- +EM_ANISOTROPIC = PROC (nom = "EM_ANISOTROPIC", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Anisotropic Materials",)}, + ang= "EM_ANISOTROPIC block definition", + fr= "definition du bloc EM_ANISOTROPIC", + + CONDUCTIVITY_File = SIMP (statut="o", + typ=("Fichier",'.mater Files (*.mater)',), + ang="CONDUCTIVITY .mater data file name", + fr ="nom du fichier .mater CONDUCTIVITY", + ), + PERMEABILITY_File = SIMP (statut="o", + typ=("Fichier",'.mater Files (*.mater)',), + ang="PERMEABILITY .mater data file name", + fr ="nom du fichier .mater PERMEABILITY", + ), + ) # fin PROC EM_ANISOTROPIC + +#================================ +# 3eme bloc : bloc SOURCES +#================================ + +SOURCES = PROC ( nom = "SOURCES", + op = None, + repetable = 'n', + ang = "sources block definition", + + STRANDED_INDUCTOR = FACT (statut="f", + fr="stranded inductor source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + NTURNS = SIMP (statut="o", + typ="I", + defaut=1, + fr="number of tuns in the inductor", + ), + CURJ = SIMP (statut="o", + typ="R", + defaut=0, + fr="intensity", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT + + EPORT = FACT (statut="f", + fr="eport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of eport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT eport + + HPORT = FACT (statut="f", + fr="hport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of hport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT hport + + +) # Fin PROC sources + diff --git a/Carmel3D/Carmel3D_cata_fact.py b/Carmel3D/Carmel3D_cata_fact.py new file mode 100644 index 00000000..f766b8fb --- /dev/null +++ b/Carmel3D/Carmel3D_cata_fact.py @@ -0,0 +1,686 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# -------------------------------------------------- + +import os +import sys +from Accas import * +import types + +# -------------------------------------------------- +# definition d une classe pour les materiaux +# definition d une classe pour les groupes de mailles +# definition d une classe pour les lois non lineaires +# -------------------------------------------------- +class materiau ( ASSD ) : pass +class grmaille ( ASSD ) : pass +class loi ( ASSD ) : pass + +#CONTEXT.debug = 1 +# -------------------------------------------------- +# déclaration du jeu de commandes : 1ere instruction du catalogue obligatoire +#--------------------------------------------------- + +JdC = JDC_CATA ( code = 'CARMEL3D', +# execmodul = None, + regles =( +# regles = ( AU_MOINS_UN ('VERSION'), +# AU_MOINS_UN ('MATERIALS'), + AU_MOINS_UN ('SOURCES'), +# A_CLASSER ('MATERIALS','SOURCES'), + ), + ) # Fin JDC_CATA + +# -------------------------------------------------- +# definition de groupe de mailles +# et association du nom du materiau au groupe de mailles +#--------------------------------------------------- + +MESH_GR = OPER (nom = "MESH_GR", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Definition",)}, + fr= "definition du groupe de mailles", + ang = " mesh group definition", + sd_prod= grmaille, + + Material = SIMP (statut="o", + typ=(materiau,), + ang="name of the linked material", + fr ="nom du materiau associe", + ), + ) + + +#========================================================= +# le fichier .PHYS contient 3 blocs et jusqu'a 3 niveaux de sous-blocs +# +#================================ +# 1er bloc : bloc VERSION +# ce bloc est volontairement cache dans l IHM +#================================ + +VERSION = PROC ( nom = "VERSION", + op = None, + repetable = 'n', + UIinfo= {"groupes":("CACHE",)}, + ang= "version block definition", + +#---------------------- +# Liste des parametres +#---------------------- + + NUM = SIMP (statut="o", + typ="I", + defaut=1, + ang="version number of the physical model", + into=( 1,), + ), + FILETYPE = SIMP (statut="o", + typ="TXM", + defaut="PHYS", + ang="file type", + into=( "PHYS",), + ), + +) # Fin PROC VERSION + +#================================ +# 2eme bloc : bloc MATERIALS +#================================ +#definition des 3 types de matériaux isotropiques et homogenes +#------------------------------------ +# sous bloc niveau 1 : CONDUCTOR +#------------------------------------ +# +CONDUCTOR = OPER (nom = "CONDUCTOR", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Isotropic Homogeneous Materials",)}, + ang= "CONDUCTOR block definition", + fr= "definition du bloc CONDUCTOR", + sd_prod= materiau, + +#------------------------------------------------ +# sous bloc niveau 2 : CONDUCTIVITY +#------------------------------------------------ + CONDUCTIVITY = FACT ( statut="o", + ang ="Conductivity properties", + fr ="proprietes du bloc CONDUCTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT CONDUCTIVITY + +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + + ) # fin OPER conductor + +#------------------------------------ +# sous bloc niveau 1 : DIELECTRIC +#------------------------------------ +DIELECTRIC = OPER (nom = "DIELECTRIC", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Isotropic Homogeneous Materials",)}, + ang= "DIELECTRIC block definition", + fr= "definition du bloc DIELECTRIC", + sd_prod= materiau, + + +#------------------------------------------------ +# sous bloc niveau 2 : PERMITTTIVITY +#------------------------------------------------ + PERMITTIVITY = FACT ( statut="o", + ang ="Permittivity properties", + fr ="proprietes du bloc PERMITTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMITTIVITY + +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + + ), # fin FACT PERMEABILITY + + + ) # fin OPER DIELECTRIC + + +#------------------------------------ +# sous bloc niveau 1 : ZSURFACIC +#------------------------------------ +ZSURFACIC = OPER (nom = "ZSURFACIC", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Isotropic Homogeneous Materials",)}, + ang= "ZSURFACIC block definition", + fr= "definition du bloc ZSURFACIC", + sd_prod= materiau, + +#------------------------------------------------ +# sous bloc niveau 2 : CONDUCTIVITY +#------------------------------------------------ + CONDUCTIVITY = FACT ( statut="o", + ang ="Conductivity properties", + fr ="proprietes du bloc CONDUCTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + + ), # fin FACT CONDUCTIVITY + +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + ) # fin OPER ZSURFACIC + + +#=================================== +# definition d un type de matériau fictif +#------------------------------------ +# sous bloc niveau 1 : NILMAT +#------------------------------------ +NILMAT = OPER (nom = "NILMAT", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Fictitious Materials",)}, + ang= "NILMAT block definition", + fr= "definition du bloc NILMAT", + sd_prod= materiau, + + ) # fin OPER NILMAT + + +#============================================ +# 1 type de matériau isotropique non homogene +#---------------------------------------- +# sous bloc niveau 1 : EM_ISOTROPIC_FILES +#---------------------------------------- +EM_ISOTROPIC = PROC (nom = "EM_ISOTROPIC", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Isotropic Inhomogeneous Materials",)}, + ang= "EM_ISOTROPIC block definition", + fr= "definition du bloc EM_ISOTROPIC", + + CONDUCTIVITY_File = SIMP (statut="o", + typ=("Fichier",'MED Files (*.med)',), + ang="CONDUCTIVITY MED data file name", + fr ="nom du fichier MED CONDUCTIVITY", + ), + PERMEABILITY_File = SIMP (statut="o", + typ=("Fichier",'MED Files (*.med)',), + ang="PERMEABILITY MED data file name", + fr ="nom du fichier MED PERMEABILITY", + ), + + ) # fin PROC EM_ISOTROPIC + +#============================================ +# 1 type de matériau non isotropique +#---------------------------------------- +# sous bloc niveau 1 : EM_ANISOTROPIC_FILES +#---------------------------------------- +EM_ANISOTROPIC = PROC (nom = "EM_ANISOTROPIC", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Anisotropic Materials",)}, + ang= "EM_ANISOTROPIC block definition", + fr= "definition du bloc EM_ANISOTROPIC", + + CONDUCTIVITY_File = SIMP (statut="o", + typ=("Fichier",'.mater Files (*.mater)',), + ang="CONDUCTIVITY .mater data file name", + fr ="nom du fichier .mater CONDUCTIVITY", + ), + PERMEABILITY_File = SIMP (statut="o", + typ=("Fichier",'.mater Files (*.mater)',), + ang="PERMEABILITY .mater data file name", + fr ="nom du fichier .mater PERMEABILITY", + ), + ) # fin PROC EM_ANISOTROPIC + +#========================================================= +# definition des parametres d une loi avec si besoin la constitution du sous bloc NONLINEAR +# +# produit un objet de la class loi +#------------------------------------------------ +LAW = OPER (nom = "LAW", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Definition",)}, + ang= "NONLINEAR block definition", + fr = "definition des parametres de la loi", + sd_prod= loi, + + LINEAR = SIMP (statut="o", + typ="TXM", + defaut="YES", + into = ("YES","NO"), + ang = "linear law or not", + fr = "loi lineaire ou non", + ), + + NonLinearLaw = BLOC (condition="LINEAR=='NO'", + + NATURE = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into=("SPLINE","MARROCCO","MARROCCO+SATURATION"), + ang="nature of the law", + fr ="nature de la loi", + ), + + SplineParam = BLOC (condition="NATURE=='SPLINE'", + + FILENAME = SIMP (statut="o", + typ=("Fichier",'All Files (*)',), + ang="data file name", + fr ="nom du fichier", + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="spline applied to", + fr ="spline appliquee a ", + ), + ), # fin BLOC SplineParam + + MarroccoParam= BLOC (condition="NATURE=='MARROCCO'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + ), # fin BLOC MarroccoParam + + MarroSatuParam= BLOC (condition="NATURE=='MARROCCO+SATURATION'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + BMAX = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="intersection B", + fr ="intersection B" , + ), + HSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="H value", + fr ="valeur H" , + ), + BSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="B value", + fr ="valeur B" , + ), + JOIN = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into= ("SPLINE","PARABOLIC","LINEAR"), + ang="type of join between laws", + fr ="type de jointure entre les 2 lois" , + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="join applied to", + fr ="jointure appliquee a ", + ), + ), # fin BLOC MarroSatuParam + ),# fin BLOC NonLinearLaw + ) # fin OPER +#================================ +# 3eme bloc : bloc SOURCES +#================================ + +SOURCES = PROC ( nom = "SOURCES", + op = None, + repetable = 'n', + ang = "sources block definition", + + STRANDED_INDUCTOR = FACT (statut="f", + fr="stranded inductor source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + NTURNS = SIMP (statut="o", + typ="I", + defaut=1, + fr="number of tuns in the inductor", + ), + CURJ = SIMP (statut="o", + typ="R", + defaut=0, + fr="intensity", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT + + EPORT = FACT (statut="f", + fr="eport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of eport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT eport + + HPORT = FACT (statut="f", + fr="hport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of hport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT hport + + +) # Fin PROC sources + diff --git a/Carmel3D/Carmel3D_cata_mat.py b/Carmel3D/Carmel3D_cata_mat.py new file mode 100644 index 00000000..19a13c0f --- /dev/null +++ b/Carmel3D/Carmel3D_cata_mat.py @@ -0,0 +1,613 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# -------------------------------------------------- + +import os +import sys +from Accas import * +import types + +# -------------------------------------------------- +# definition d une classe pour les materiaux +# definition d une classe pour les groupes de mailles +# definition d une classe pour les lois non lineaires +# -------------------------------------------------- +class materiau ( ASSD ) : pass +class grmaille ( ASSD ) : pass +class loi ( ASSD ) : pass + +#CONTEXT.debug = 1 +# -------------------------------------------------- +# déclaration du jeu de commandes : 1ere instruction du catalogue obligatoire +#--------------------------------------------------- + +JdC = JDC_CATA ( code = 'CARMEL3D', +# execmodul = None, + regles =( +# AU_MOINS_UN ('MATERIALS'), + AU_MOINS_UN ('SOURCES'), +# A_CLASSER ('MATERIALS','SOURCES'), + ), + ) # Fin JDC_CATA + +# -------------------------------------------------- +# definition de groupe de mailles +# et association du nom du materiau au groupe de mailles +#--------------------------------------------------- + +MESH_GR = OPER (nom = "MESH_GR", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Definition",)}, + fr= "definition du groupe de mailles", + ang = " mesh group definition", + sd_prod= grmaille, + + Material = SIMP (statut="o", + typ=(materiau,), + ang="name of the linked material", + fr ="nom du materiau associe", + ), + ) + + +#========================================================= +# le fichier .PHYS contient 3 blocs et jusqu'a 3 niveaux de sous-blocs +# +#================================ +# 1er bloc : bloc VERSION +# ce bloc est volontairement cache dans l IHM +#================================ + +VERSION = PROC ( nom = "VERSION", + op = None, + repetable = 'n', + UIinfo= {"groupes":("CACHE",)}, + ang= "version block definition", + + + NUM = SIMP (statut="o", + typ="I", + defaut=1, + ang="version number of the physical model", + into=( 1,), + ), + FILETYPE = SIMP (statut="o", + typ="TXM", + defaut="PHYS", + ang="file type", + into=( "PHYS",), + ), + +) # Fin PROC VERSION + +#================================ +# 2eme bloc : bloc MATERIALS +#================================ +# definition de matériau non fictif +#------------------------------------ + +MATERIAU = OPER (nom = "MATERIAU", + op = None, + repetable = 'n', +# UIinfo= {"groupes":("Materials",)}, + ang= "non fictitious material definition", + fr= "definition de materiau non fictif", + sd_prod= materiau, + + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + b_ISOTROPIC = BLOC (condition = "ISOTROPIC=='TRUE'", + + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + b_HOMOGENEOUS = BLOC (condition = "HOMOGENEOUS=='TRUE'", + + +#definition des 3 types de matériaux isotropiques et homogenes +#------------------------------------ +# sous bloc niveau 1 : CONDUCTOR +#------------------------------------ +# + CONDUCTOR = FACT ( statut = "f", + ang= "CONDUCTOR block definition", + fr= "definition du bloc CONDUCTOR", +#------------------------------------------------ +# sous bloc niveau 2 : CONDUCTIVITY +#------------------------------------------------ + CONDUCTIVITY = FACT ( statut="o", + ang ="Conductivity properties", + fr ="proprietes du bloc CONDUCTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT CONDUCTIVITY +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + ), # fin FACT CONDUCTOR + +#------------------------------------ +# sous bloc niveau 1 : DIELECTRIC +#------------------------------------ + DIELECTRIC = FACT (statut="f", + ang= "DIELECTRIC block definition", + fr= "definition du bloc DIELECTRIC", + +#------------------------------------------------ +# sous bloc niveau 2 : PERMITTTIVITY +#------------------------------------------------ + PERMITTIVITY = FACT ( statut="o", + ang ="Permittivity properties", + fr ="proprietes du bloc PERMITTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMITTIVITY + +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + ), # fin FACT DIELECTRIC + + +#------------------------------------ +# sous bloc niveau 1 : ZSURFACIC +#------------------------------------ + ZSURFACIC = FACT (statut="f", + ang= "ZSURFACIC block definition", + fr= "definition du bloc ZSURFACIC", + +#------------------------------------------------ +# sous bloc niveau 2 : CONDUCTIVITY +#------------------------------------------------ + CONDUCTIVITY = FACT ( statut="o", + ang ="Conductivity properties", + fr ="proprietes du bloc CONDUCTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT CONDUCTIVITY +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + ), # fin FACT ZSURFACIC + + ), # fin BLOC homogene + +#============================================ +# 1 type de matériau isotropique non homogene +#---------------------------------------- +# sous bloc niveau 1 : EM_ISOTROPIC_FILES +#---------------------------------------- + b_INHOMOGENEOUS= BLOC (condition='HOMOGENEOUS=="FALSE"', + EM_ISOTROPIC = FACT (statut="f", + ang= "EM_ISOTROPIC block definition", + fr= "definition du bloc EM_ISOTROPIC", + + CONDUCTIVITY_File = SIMP (statut="o", + typ=("Fichier",'MED Files (*.med)',), + ang="CONDUCTIVITY MED data file name", + fr ="nom du fichier MED CONDUCTIVITY", + ), + PERMEABILITY_File = SIMP (statut="o", + typ=("Fichier",'MED Files (*.med)',), + ang="PERMEABILITY MED data file name", + fr ="nom du fichier MED PERMEABILITY", + ), + + ) # fin FACT EM_ISOTROPIC + + ), # fin BLOC inhomogene + + ), # fin BLOC isotropique + +#============================================ +# 1 type de matériau non isotropique +#---------------------------------------- +# sous bloc niveau 1 : EM_ANISOTROPIC_FILES +#---------------------------------------- + b_ANISOTROPIC= BLOC (condition='ISOTROPIC=="FALSE"', + EM_ANISOTROPIC = FACT (statut="f", + ang= "EM_ANISOTROPIC block definition", + fr= "definition du bloc EM_ANISOTROPIC", + + CONDUCTIVITY_File = SIMP (statut="o", + typ=("Fichier",'.mater Files (*.mater)',), + ang="CONDUCTIVITY .mater data file name", + fr ="nom du fichier .mater CONDUCTIVITY", + ), + PERMEABILITY_File = SIMP (statut="o", + typ=("Fichier",'.mater Files (*.mater)',), + ang="PERMEABILITY .mater data file name", + fr ="nom du fichier .mater PERMEABILITY", + ), + ) # fin FACT EM_ANISOTROPIC + ), # fin BLOC anisotropique + + ) # fin OPER materiau +#=================================== +# definition d un type de matériau fictif +#------------------------------------ +# sous bloc niveau 1 : NILMAT +#------------------------------------ + +NILMAT = OPER (nom = "NILMAT", + op = None, + repetable = 'n', + ang= "NILMAT block definition", + fr= "definition du bloc NILMAT", + sd_prod= materiau, + + ) # fin OPER nilmat +#================================ +# 3eme bloc : bloc SOURCES +#================================ + +SOURCES = PROC ( nom = "SOURCES", + op = None, + repetable = 'n', + ang = "sources block definition", + + STRANDED_INDUCTOR = FACT (statut="f", + fr="stranded inductor source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + NTURNS = SIMP (statut="o", + typ="I", + defaut=1, + fr="number of tuns in the inductor", + ), + CURJ = SIMP (statut="o", + typ="R", + defaut=0, + fr="intensity", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT + + EPORT = FACT (statut="f", + fr="eport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of eport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT eport + + HPORT = FACT (statut="f", + fr="hport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of hport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT hport + + +) # Fin PROC sources + +#========================================================= +# definition des parametres d une loi avec si besoin la constitution du sous bloc NONLINEAR +# +# produit un objet de la class loi +#------------------------------------------------ +LAW = OPER (nom = "LAW", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Definition",)}, + ang= "NONLINEAR block definition", + fr = "definition des parametres de la loi", + sd_prod= loi, + + LINEAR = SIMP (statut="o", + typ="TXM", + defaut="YES", + into = ("YES","NO"), + ang = "linear law or not", + fr = "loi lineaire ou non", + ), + + NonLinearLaw = BLOC (condition="LINEAR=='NO'", + + NATURE = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into=("SPLINE","MARROCCO","MARROCCO+SATURATION"), + ang="nature of the law", + fr ="nature de la loi", + ), + + SplineParam = BLOC (condition="NATURE=='SPLINE'", + + FILENAME = SIMP (statut="o", + typ=("Fichier",'All Files (*)',), + ang="data file name", + fr ="nom du fichier", + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="spline applied to", + fr ="spline appliquee a ", + ), + ), # fin BLOC SplineParam + + MarroccoParam= BLOC (condition="NATURE=='MARROCCO'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + ), # fin BLOC MarroccoParam + + MarroSatuParam= BLOC (condition="NATURE=='MARROCCO+SATURATION'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + BMAX = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="intersection B", + fr ="intersection B" , + ), + HSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="H value", + fr ="valeur H" , + ), + BSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="B value", + fr ="valeur B" , + ), + JOIN = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into= ("SPLINE","PARABOLIC","LINEAR"), + ang="type of join between laws", + fr ="type de jointure entre les 2 lois" , + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="join applied to", + fr ="jointure appliquee a ", + ), + ), # fin BLOC MarroSatuParam + ),# fin BLOC NonLinearLaw + ) # fin OPER diff --git a/Carmel3D/Carmel3D_cata_matloi.py b/Carmel3D/Carmel3D_cata_matloi.py new file mode 100644 index 00000000..48efd0cc --- /dev/null +++ b/Carmel3D/Carmel3D_cata_matloi.py @@ -0,0 +1,625 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# -------------------------------------------------- + +import os +import sys +from Accas import * +import types + +# -------------------------------------------------- +# definition d une classe pour les materiaux +# definition d une classe pour les groupes de mailles +# definition d une classe pour les lois non lineaires +# -------------------------------------------------- +class materiau ( ASSD ) : pass +class grmaille ( ASSD ) : pass +class loi ( ASSD ) : pass + +#CONTEXT.debug = 1 +# -------------------------------------------------- +# déclaration du jeu de commandes : 1ere instruction du catalogue obligatoire +#--------------------------------------------------- + +JdC = JDC_CATA ( code = 'CARMEL3D', +# execmodul = None, + regles =( +# AU_MOINS_UN ('MATERIALS'), + AU_MOINS_UN ('SOURCES'), +# A_CLASSER ('MATERIALS','SOURCES'), + ), + ) # Fin JDC_CATA + +#========================================================= +# definition des parametres d une loi avec si besoin la constitution du sous bloc NONLINEAR +# +# produit un objet de la class loi +#------------------------------------------------ +L_LAW = OPER (nom = "L_LAW", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Definition",)}, + ang= "LINEAR block definition", + fr = "definition des parametres de la loi", + sd_prod= loi, + ) + +NL_LAW = OPER (nom = "NL_LAW", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Definition",)}, + ang= "NONLINEAR block definition", + fr = "definition des parametres de la loi", + sd_prod= loi, + + + NATURE = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into=("SPLINE","MARROCCO","MARROCCO+SATURATION"), + ang="nature of the law", + fr ="nature de la loi", + ), + + SplineParam = BLOC (condition="NATURE=='SPLINE'", + + FILENAME = SIMP (statut="o", + typ=("Fichier",'All Files (*)',), + ang="data file name", + fr ="nom du fichier", + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="spline applied to", + fr ="spline appliquee a ", + ), + ), # fin BLOC SplineParam + + MarroccoParam= BLOC (condition="NATURE=='MARROCCO'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + ), # fin BLOC MarroccoParam + + MarroSatuParam= BLOC (condition="NATURE=='MARROCCO+SATURATION'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + BMAX = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="intersection B", + fr ="intersection B" , + ), + HSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="H value", + fr ="valeur H" , + ), + BSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="B value", + fr ="valeur B" , + ), + JOIN = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into= ("SPLINE","PARABOLIC","LINEAR"), + ang="type of join between laws", + fr ="type de jointure entre les 2 lois" , + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="join applied to", + fr ="jointure appliquee a ", + ), + ), # fin BLOC MarroSatuParam + ) # fin OPER + + #============================================== + # création d objet de type L_LAW + #---------------------------------- +LINEAR = L_LAW() +# -------------------------------------------------- +# definition de groupe de mailles +# et association du nom du materiau au groupe de mailles +#--------------------------------------------------- + +MESH_GR = OPER (nom = "MESH_GR", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Definition",)}, + fr= "definition du groupe de mailles", + ang = " mesh group definition", + sd_prod= grmaille, + + Material = SIMP (statut="o", + typ=(materiau,), + ang="name of the linked material", + fr ="nom du materiau associe", + ), + ) + + +#========================================================= +# le fichier .PHYS contient 3 blocs et jusqu'a 3 niveaux de sous-blocs +# +#================================ +# 1er bloc : bloc VERSION +# ce bloc est volontairement cache dans l IHM +#================================ + +VERSION = PROC ( nom = "VERSION", + op = None, + repetable = 'n', + UIinfo= {"groupes":("CACHE",)}, + ang= "version block definition", + + + NUM = SIMP (statut="o", + typ="I", + defaut=1, + ang="version number of the physical model", + into=( 1,), + ), + FILETYPE = SIMP (statut="o", + typ="TXM", + defaut="PHYS", + ang="file type", + into=( "PHYS",), + ), + +) # Fin PROC VERSION + +#================================ +# 2eme bloc : bloc MATERIALS +#================================ +# definition de matériau non fictif +#------------------------------------ + +MATERIAU = OPER (nom = "MATERIAU", + op = None, + repetable = 'n', +# UIinfo= {"groupes":("Materials",)}, + ang= "non fictitious material definition", + fr= "definition de materiau non fictif", + sd_prod= materiau, + + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + b_ISOTROPIC = BLOC (condition = "ISOTROPIC=='TRUE'", + + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + b_HOMOGENEOUS = BLOC (condition = "HOMOGENEOUS=='TRUE'", + regles =( AU_MOINS_UN ('CONDUCTOR','DIELECTRIC','ZSURFACIC'), + ), + + +#definition des 3 types de matériaux isotropiques et homogenes +#------------------------------------ +# sous bloc niveau 1 : CONDUCTOR +#------------------------------------ +# + CONDUCTOR = FACT ( statut = "f", + ang= "CONDUCTOR block definition", + fr= "definition du bloc CONDUCTOR", +#------------------------------------------------ +# sous bloc niveau 2 : CONDUCTIVITY +#------------------------------------------------ + CONDUCTIVITY = FACT ( statut="o", + ang ="Conductivity properties", + fr ="proprietes du bloc CONDUCTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + defaut=LINEAR, + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT CONDUCTIVITY +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + defaut=LINEAR, + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + ), # fin FACT CONDUCTOR + +#------------------------------------ +# sous bloc niveau 1 : DIELECTRIC +#------------------------------------ + DIELECTRIC = FACT (statut="f", + ang= "DIELECTRIC block definition", + fr= "definition du bloc DIELECTRIC", + +#------------------------------------------------ +# sous bloc niveau 2 : PERMITTTIVITY +#------------------------------------------------ + PERMITTIVITY = FACT ( statut="o", + ang ="Permittivity properties", + fr ="proprietes du bloc PERMITTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + defaut=LINEAR, + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMITTIVITY + +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + defaut=LINEAR, + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + ), # fin FACT DIELECTRIC + + +#------------------------------------ +# sous bloc niveau 1 : ZSURFACIC +#------------------------------------ + ZSURFACIC = FACT (statut="f", + ang= "ZSURFACIC block definition", + fr= "definition du bloc ZSURFACIC", + +#------------------------------------------------ +# sous bloc niveau 2 : CONDUCTIVITY +#------------------------------------------------ + CONDUCTIVITY = FACT ( statut="o", + ang ="Conductivity properties", + fr ="proprietes du bloc CONDUCTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + defaut=LINEAR, + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT CONDUCTIVITY +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ= (loi,), + defaut=LINEAR, + ang = "Choice of law", + fr = "Choix d une loi", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + ), # fin FACT ZSURFACIC + + ), # fin BLOC homogene + +#============================================ +# 1 type de matériau isotropique non homogene +#---------------------------------------- +# sous bloc niveau 1 : EM_ISOTROPIC_FILES +#---------------------------------------- + b_INHOMOGENEOUS= BLOC (condition='HOMOGENEOUS=="FALSE"', + EM_ISOTROPIC = FACT (statut="f", + ang= "EM_ISOTROPIC block definition", + fr= "definition du bloc EM_ISOTROPIC", + + CONDUCTIVITY_File = SIMP (statut="o", + typ=("Fichier",'MED Files (*.med)',), + ang="CONDUCTIVITY MED data file name", + fr ="nom du fichier MED CONDUCTIVITY", + ), + PERMEABILITY_File = SIMP (statut="o", + typ=("Fichier",'MED Files (*.med)',), + ang="PERMEABILITY MED data file name", + fr ="nom du fichier MED PERMEABILITY", + ), + + ) # fin FACT EM_ISOTROPIC + + ), # fin BLOC inhomogene + + ), # fin BLOC isotropique + +#============================================ +# 1 type de matériau non isotropique +#---------------------------------------- +# sous bloc niveau 1 : EM_ANISOTROPIC_FILES +#---------------------------------------- + b_ANISOTROPIC= BLOC (condition='ISOTROPIC=="FALSE"', + EM_ANISOTROPIC = FACT (statut="f", + ang= "EM_ANISOTROPIC block definition", + fr= "definition du bloc EM_ANISOTROPIC", + + CONDUCTIVITY_File = SIMP (statut="o", + typ=("Fichier",'.mater Files (*.mater)',), + ang="CONDUCTIVITY .mater data file name", + fr ="nom du fichier .mater CONDUCTIVITY", + ), + PERMEABILITY_File = SIMP (statut="o", + typ=("Fichier",'.mater Files (*.mater)',), + ang="PERMEABILITY .mater data file name", + fr ="nom du fichier .mater PERMEABILITY", + ), + ) # fin FACT EM_ANISOTROPIC + ), # fin BLOC anisotropique + + ) # fin OPER materiau +#=================================== +# definition d un type de matériau fictif +#------------------------------------ +# sous bloc niveau 1 : NILMAT +#------------------------------------ + +NILMAT = OPER (nom = "NILMAT", + op = None, + repetable = 'n', + ang= "NILMAT block definition", + fr= "definition du bloc NILMAT", + sd_prod= materiau, + + ) # fin OPER nilmat +#================================ +# 3eme bloc : bloc SOURCES +#================================ + +SOURCES = PROC ( nom = "SOURCES", + op = None, + repetable = 'n', + ang = "sources block definition", + + STRANDED_INDUCTOR = FACT (statut="f", + fr="stranded inductor source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + NTURNS = SIMP (statut="o", + typ="I", + defaut=1, + fr="number of tuns in the inductor", + ), + CURJ = SIMP (statut="o", + typ="R", + defaut=0, + fr="intensity", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT + + EPORT = FACT (statut="f", + fr="eport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of eport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT eport + + HPORT = FACT (statut="f", + fr="hport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of hport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT hport + + +) # Fin PROC sources + diff --git a/Carmel3D/Carmel3D_cata_pa.py b/Carmel3D/Carmel3D_cata_pa.py new file mode 100644 index 00000000..35e198dd --- /dev/null +++ b/Carmel3D/Carmel3D_cata_pa.py @@ -0,0 +1,702 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# -------------------------------------------------- + +import os +import sys +from Accas import * +import types + +# -------------------------------------------------- +# definition d une classe pour les materiaux +# definition d une classe pour les groupes de mailles +# definition d une classe pour les laws non lineaires +# -------------------------------------------------- +class materiau ( ASSD ) : pass +class grmaille ( ASSD ) : pass +class law ( ASSD ) : pass + + +#CONTEXT.debug = 1 +# -------------------------------------------------- +# déclaration du jeu de commandes : 1ere instruction du catalogue obligatoire +#--------------------------------------------------- + +JdC = JDC_CATA ( code = 'CARMEL3D', +# execmodul = None, + regles =( +# AU_MOINS_UN ('MATERIALS'), +# AU_MOINS_UN ('SOURCES'), +# A_CLASSER ('MATERIALS','SOURCES'), + ), + ) # Fin JDC_CATA +##========================================================= +## definition des parametres d une law +## +## Constitution de sous bloc NONLINEAR +## produit un objet "bloc NONLINEAR" de type (classe) lawNL +##------------------------------------------------ + +L_LAW = OPER (nom = "L_LAW", + op = None, + repetable = 'n', + ang= "", + fr= "", + sd_prod= law, + UIinfo= {"groupes":("CACHE",)}, +) +NL_LAW = OPER (nom = "NL_LAW", + op = None, + repetable = 'n', + ang= "", + fr= "", + sd_prod= law, + + NATURE = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into=("SPLINE","MARROCCO","MARROCCO+SATURATION"), + ang="nature of the law", + fr ="nature de la law", + ), + + SplineParam = BLOC (condition="NATURE=='SPLINE'", + + FILENAME = SIMP (statut="o", + typ=("Fichier",'All Files (*)',), + ang="data file name", + fr ="nom du fichier", + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="spline applied to", + fr ="spline appliquee a ", + ), + ), # fin BLOC SplineParam + + MarroccoParam= BLOC (condition="NATURE=='MARROCCO'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + ), # fin BLOC MarroccoParam + + MarroSatuParam= BLOC (condition="NATURE=='MARROCCO+SATURATION'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + BMAX = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="intersection B", + fr ="intersection B" , + ), + HSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="H value", + fr ="valeur H" , + ), + BSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="B value", + fr ="valeur B" , + ), + JOIN = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into= ("SPLINE","PARABOLIC","LINEAR"), + ang="type of join between laws", + fr ="type de jointure entre les 2 law" , + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="join applied to", + fr ="jointure appliquee a ", + ), + ), # fin BLOC MarroSatuParam + ) # fin OPER LAW +LINEAR=L_LAW(), + +# -------------------------------------------------- +# definition de groupe de mailles +# et association du nom du materiau au groupe de mailles +#--------------------------------------------------- + +MESH_GROUPE = OPER (nom = "MESH_GROUPE", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Definition",)}, + fr= "definition du groupe de mailles", + ang = " mesh group definition", + sd_prod= grmaille, + + Material = SIMP (statut="f", + typ=(materiau,), + ang="name of the linked material", + fr ="nom du materiau associe", + ), + ) + + +#========================================================= +# le fichier .PHYS contient 3 blocs et jusqu'a 3 niveaux de sous-blocs +# +#================================ +# 1er bloc : bloc VERSION +# ce bloc est volontairement cache dans l IHM +#================================ + +VERSION = PROC ( nom = "VERSION", + op = None, + repetable = 'n', + UIinfo= {"groupes":("CACHE",)}, + ang= "version block definition", + +#---------------------- +# Liste des parametres +#---------------------- + + NUM = SIMP (statut="o", + typ="I", + defaut=1, + ang="version number of the physical model", + into=( 1,), + ), + FILETYPE = SIMP (statut="o", + typ="TXM", + defaut="PHYS", + ang="file type", + into=( "PHYS",), + ), + +) # Fin PROC VERSION + +#================================ +# 2eme bloc : bloc MATERIALS +#================================ +#definition des 3 types de matériaux isotropiques et homogenes +#------------------------------------ +# sous bloc niveau 1 : CONDUCTOR +#------------------------------------ +# +MATERIAU = OPER (nom = "MATERIAU", + op = None, + repetable = 'n', + ang= "CONDUCTOR block definition", + fr= "definition d un materiau", + sd_prod= materiau, + TYPE = SIMP(statut='o',typ='TXM',into=("CONDUCTOR","DIELECTRIC","ZSURFACIC","NILMAT","EM_ISOTROPIC_FILES","EM_ANISOTROPIC_FILES") ), + +#------------------------------------------------ +# sous bloc niveau 2 : CONDUCTIVITY +#------------------------------------------------ + b_conductor=BLOC(condition="TYPE=='CONDUCTOR'", + + CONDUCTIVITY = FACT ( statut="o", + ang ="Conductivity properties", + fr ="proprietes du bloc CONDUCTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ=law, + defaut=LINEAR, + ang = "type of law", + fr = "type de law", + ), + + HOMOGENEOUS = SIMP (statut="o", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT CONDUCTIVITY + +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ=law, + defaut=LINEAR, + ang = "type of law", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + + ) # fin BLOC conductor + ) # fin OPER Materiau +# +##------------------------------------ +## sous bloc niveau 1 : DIELECTRIC +##------------------------------------ +#DIELECTRIC = OPER (nom = "DIELECTRIC", +# op = None, +# repetable = 'n', +# UIinfo= {"groupes":("Isotropic Homogeneous Materials",)}, +# ang= "DIELECTRIC block definition", +# fr= "definition du bloc DIELECTRIC", +# sd_prod= materiau, +# +# +##------------------------------------------------ +## sous bloc niveau 2 : PERMITTTIVITY +##------------------------------------------------ +# PERMITTIVITY = FACT ( statut="o", +# ang ="Permittivity properties", +# fr ="proprietes du bloc PERMITTIVITY", +# regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), +# ), +# +# LAW = SIMP (statut="o", +# typ="TXM", +# defaut="LINEAR", +# into = ("LINEAR","NONLINEAR"), +# ang = "type of law", +# ), +# HOMOGENEOUS = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is homogeneous", +# fr = "le materiau est homogene", +# ), +# ISOTROPIC = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is isotropic", +# fr = "le materiau est isotrope", +# ), +# VALUE_REAL = SIMP (statut="f", +# typ="R", +# ang = "enter a real value", +# fr = "entrer un reel", +# ), +# VALUE_COMPLEX = SIMP (statut="o", +# typ="C", +# ang = "enter a complex value", +# fr = "entrer un complexe", +# ), +# +# ), # fin FACT PERMITTIVITY +# +##------------------------------------------------ +## sous bloc niveau 2 : PERMEABILITY +##------------------------------------------------ +# PERMEABILITY = FACT ( statut="o", +# ang ="Permeability properties", +# fr ="proprietes du bloc PERMEABILITY", +# regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), +# ), +# +# LAW = SIMP (statut="o", +# typ="TXM", +# defaut="LINEAR", +# into = ("LINEAR","NONLINEAR"), +# ang = "type of law", +# ), +# HOMOGENEOUS = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is homogeneous", +# fr = "le materiau est homogene", +# ), +# ISOTROPIC = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is isotropic", +# fr = "le materiau est isotrope", +# ), +# VALUE_REAL = SIMP (statut="f", +# typ="R", +# ang = "enter a real value", +# fr = "entrer un reel", +# ), +# VALUE_COMPLEX = SIMP (statut="o", +# typ="C", +# ang = "enter a complex value", +# fr = "entrer un complexe", +# ), +# +# NonLinearCond = BLOC (condition="LAW=='NONLINEAR'", +# NONLINEAR = SIMP (statut="o", +# typ= (law,), +# ang = "enter a complex value", +# fr = "parametres de la law non lineaire", +# ), +# ), +# +# ), # fin FACT PERMEABILITY +# +# +# ) # fin OPER DIELECTRIC +# +# +##------------------------------------ +## sous bloc niveau 1 : ZSURFACIC +##------------------------------------ +#ZSURFACIC = OPER (nom = "ZSURFACIC", +# op = None, +# repetable = 'n', +# UIinfo= {"groupes":("Isotropic Homogeneous Materials",)}, +# ang= "ZSURFACIC block definition", +# fr= "definition du bloc ZSURFACIC", +# sd_prod= materiau, +# +##------------------------------------------------ +## sous bloc niveau 2 : CONDUCTIVITY +##------------------------------------------------ +# CONDUCTIVITY = FACT ( statut="o", +# ang ="Conductivity properties", +# fr ="proprietes du bloc CONDUCTIVITY", +# regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), +# ), +# +# LAW = SIMP (statut="o", +# typ="TXM", +# defaut="LINEAR", +# into = ("LINEAR","NONLINEAR"), +# ang = "type of law", +# fr = "type de law", +# ), +# HOMOGENEOUS = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is homogeneous", +# fr = "le materiau est homogene", +# ), +# ISOTROPIC = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is isotropic", +# fr = "le materiau est isotrope", +# ), +# VALUE_REAL = SIMP (statut="f", +# typ="R", +# ang = "enter a real value", +# fr = "entrer un reel", +# ), +# VALUE_COMPLEX = SIMP (statut="o", +# typ="C", +# ang = "enter a complex value", +# fr = "entrer un complexe", +# ), +# +# +# ), # fin FACT CONDUCTIVITY +# +##------------------------------------------------ +## sous bloc niveau 2 : PERMEABILITY +##------------------------------------------------ +# PERMEABILITY = FACT ( statut="o", +# ang ="Permeability properties", +# fr ="proprietes du bloc PERMEABILITY", +# regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), +# ), +# +# LAW = SIMP (statut="o", +# typ="TXM", +# defaut="LINEAR", +# into = ("LINEAR","NONLINEAR"), +# ang = "type of law", +# fr = "type de law", +# ), +# HOMOGENEOUS = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is homogeneous", +# fr = "le materiau est homogene", +# ), +# ISOTROPIC = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is isotropic", +# fr = "le materiau est isotrope", +# ), +# VALUE_REAL = SIMP (statut="f", +# typ="R", +# ang = "enter a real value", +# fr = "entrer un reel", +# ), +# VALUE_COMPLEX = SIMP (statut="o", +# typ="C", +# ang = "enter a complex value", +# fr = "entrer un complexe", +# ), +# +# ), # fin FACT PERMEABILITY +# +# ) # fin OPER ZSURFACIC +# +# +##=================================== +## definition d un type de matériau fictif +##------------------------------------ +## sous bloc niveau 1 : NILMAT +##------------------------------------ +#NILMAT = OPER (nom = "NILMAT", +# op = None, +# repetable = 'n', +# UIinfo= {"groupes":("Fictitious Materials",)}, +# ang= "NILMAT block definition", +# fr= "definition du bloc NILMAT", +# sd_prod= materiau, +# +# ) # fin OPER NILMAT +# +# +##============================================ +## 1 type de matériau isotropique non homogene +##---------------------------------------- +## sous bloc niveau 1 : EM_ISOTROPIC_FILES +##---------------------------------------- +#EM_ISOTROPIC = PROC (nom = "EM_ISOTROPIC", +# op = None, +# repetable = 'n', +# UIinfo= {"groupes":("Isotropic Inhomogeneous Materials",)}, +# ang= "EM_ISOTROPIC block definition", +# fr= "definition du bloc EM_ISOTROPIC", +# +# CONDUCTIVITY_File = SIMP (statut="o", +# typ=("Fichier",'MED Files (*.med)',), +# ang="CONDUCTIVITY MED data file name", +# fr ="nom du fichier MED CONDUCTIVITY", +# ), +# PERMEABILITY_File = SIMP (statut="o", +# typ=("Fichier",'MED Files (*.med)',), +# ang="PERMEABILITY MED data file name", +# fr ="nom du fichier MED PERMEABILITY", +# ), +# +# ) # fin PROC EM_ISOTROPIC +# +##============================================ +## 1 type de matériau non isotropique +##---------------------------------------- +## sous bloc niveau 1 : EM_ANISOTROPIC_FILES +##---------------------------------------- +#EM_ANISOTROPIC = PROC (nom = "EM_ANISOTROPIC", +# op = None, +# repetable = 'n', +# UIinfo= {"groupes":("Anisotropic Materials",)}, +# ang= "EM_ANISOTROPIC block definition", +# fr= "definition du bloc EM_ANISOTROPIC", +# +# CONDUCTIVITY_File = SIMP (statut="o", +# typ=("Fichier",'.mater Files (*.mater)',), +# ang="CONDUCTIVITY .mater data file name", +# fr ="nom du fichier .mater CONDUCTIVITY", +# ), +# PERMEABILITY_File = SIMP (statut="o", +# typ=("Fichier",'.mater Files (*.mater)',), +# ang="PERMEABILITY .mater data file name", +# fr ="nom du fichier .mater PERMEABILITY", +# ), +# ) # fin PROC EM_ANISOTROPIC +# +#================================ +# 3eme bloc : bloc SOURCES +#================================ + +SOURCES = PROC ( nom = "SOURCES", + op = None, + repetable = 'n', + ang = "sources block definition", + + STRANDED_INDUCTOR = FACT (statut="f", + fr="stranded inductor source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + NTURNS = SIMP (statut="o", + typ="I", + defaut=1, + fr="number of tuns in the inductor", + ), + CURJ = SIMP (statut="o", + typ="R", + defaut=0, + fr="intensity", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT + + EPORT = FACT (statut="f", + fr="eport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of eport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT eport + + HPORT = FACT (statut="f", + fr="hport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of hport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT hport + + +) # Fin PROC sources + diff --git a/Carmel3D/Carmel3D_cata_pn.py b/Carmel3D/Carmel3D_cata_pn.py new file mode 100644 index 00000000..84b6b599 --- /dev/null +++ b/Carmel3D/Carmel3D_cata_pn.py @@ -0,0 +1,702 @@ +# -*- coding: utf-8 -*- + +# -------------------------------------------------- +# -------------------------------------------------- + +import os +import sys +from Accas import * +import types + +# -------------------------------------------------- +# definition d une classe pour les materiaux +# definition d une classe pour les groupes de mailles +# definition d une classe pour les laws non lineaires +# -------------------------------------------------- +class materiau ( ASSD ) : pass +class grmaille ( ASSD ) : pass +class law ( ASSD ) : pass + + +#CONTEXT.debug = 1 +# -------------------------------------------------- +# déclaration du jeu de commandes : 1ere instruction du catalogue obligatoire +#--------------------------------------------------- + +JdC = JDC_CATA ( code = 'CARMEL3D', +# execmodul = None, + regles =( +# AU_MOINS_UN ('MATERIALS'), +# AU_MOINS_UN ('SOURCES'), +# A_CLASSER ('MATERIALS','SOURCES'), + ), + ) # Fin JDC_CATA +##========================================================= +## definition des parametres d une law +## +## Constitution de sous bloc NONLINEAR +## produit un objet "bloc NONLINEAR" de type (classe) lawNL +##------------------------------------------------ + +L_LAW = OPER (nom = "L_LAW", + op = None, + repetable = 'n', + ang= "", + fr= "", + sd_prod= law, + UIinfo= {"groupes":("CACHE",)}, +) +LAW = OPER (nom = "LAW", + op = None, + repetable = 'n', + ang= "", + fr= "", + sd_prod= law, + + NATURE = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into=("SPLINE","MARROCCO","MARROCCO+SATURATION"), + ang="nature of the law", + fr ="nature de la law", + ), + + SplineParam = BLOC (condition="NATURE=='SPLINE'", + + FILENAME = SIMP (statut="o", + typ=("Fichier",'All Files (*)',), + ang="data file name", + fr ="nom du fichier", + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="spline applied to", + fr ="spline appliquee a ", + ), + ), # fin BLOC SplineParam + + MarroccoParam= BLOC (condition="NATURE=='MARROCCO'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + ), # fin BLOC MarroccoParam + + MarroSatuParam= BLOC (condition="NATURE=='MARROCCO+SATURATION'", + + ALPHA = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="alpha parameter", + fr ="parametre alpha" , + ), + TAU = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="tau parameter", + fr ="parametre tau" , + ), + C = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="c parameter", + fr ="parametre c" , + ), + EPSILON = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="epsilon parameter", + fr ="parametre epsilon" , + ), + BMAX = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="intersection B", + fr ="intersection B" , + ), + HSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="H value", + fr ="valeur H" , + ), + BSAT = SIMP (statut="o", + typ="R", + defaut=0, + val_min=0, + ang="B value", + fr ="valeur B" , + ), + JOIN = SIMP (statut="o", + typ="TXM", + defaut="SPLINE", + into= ("SPLINE","PARABOLIC","LINEAR"), + ang="type of join between laws", + fr ="type de jointure entre les 2 law" , + ), + APPLIEDTO = SIMP (statut="o", + typ="TXM", + into=("B(H)&H(B)","B(H)","H(B)"), + defaut="B(H)&H(B)", + ang="join applied to", + fr ="jointure appliquee a ", + ), + ), # fin BLOC MarroSatuParam + ) # fin OPER LAW +LINEAR=L_LAW(), + +# -------------------------------------------------- +# definition de groupe de mailles +# et association du nom du materiau au groupe de mailles +#--------------------------------------------------- + +MESH_GROUPE = OPER (nom = "MESH_GROUPE", + op = None, + repetable = 'n', + UIinfo= {"groupes":("Definition",)}, + fr= "definition du groupe de mailles", + ang = " mesh group definition", + sd_prod= grmaille, + + Material = SIMP (statut="f", + typ=(materiau,), + ang="name of the linked material", + fr ="nom du materiau associe", + ), + ) + + +#========================================================= +# le fichier .PHYS contient 3 blocs et jusqu'a 3 niveaux de sous-blocs +# +#================================ +# 1er bloc : bloc VERSION +# ce bloc est volontairement cache dans l IHM +#================================ + +VERSION = PROC ( nom = "VERSION", + op = None, + repetable = 'n', + UIinfo= {"groupes":("CACHE",)}, + ang= "version block definition", + +#---------------------- +# Liste des parametres +#---------------------- + + NUM = SIMP (statut="o", + typ="I", + defaut=1, + ang="version number of the physical model", + into=( 1,), + ), + FILETYPE = SIMP (statut="o", + typ="TXM", + defaut="PHYS", + ang="file type", + into=( "PHYS",), + ), + +) # Fin PROC VERSION + +#================================ +# 2eme bloc : bloc MATERIALS +#================================ +#definition des 3 types de matériaux isotropiques et homogenes +#------------------------------------ +# sous bloc niveau 1 : CONDUCTOR +#------------------------------------ +# +MATERIAU = OPER (nom = "MATERIAU", + op = None, + repetable = 'n', + ang= "CONDUCTOR block definition", + fr= "definition d un materiau", + sd_prod= materiau, + TYPE = SIMP(statut='o',typ='TXM',into=("CONDUCTOR","DIELECTRIC","ZSURFACIC","NILMAT","EM_ISOTROPIC_FILES","EM_ANISOTROPIC_FILES") ), + +#------------------------------------------------ +# sous bloc niveau 2 : CONDUCTIVITY +#------------------------------------------------ + b_conductor=BLOC(condition="TYPE=='CONDUCTOR'", + + CONDUCTIVITY = FACT ( statut="o", + ang ="Conductivity properties", + fr ="proprietes du bloc CONDUCTIVITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ=law, + defaut=LINEAR, + ang = "type of law", + fr = "type de law", + ), + + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="f", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT CONDUCTIVITY + +#------------------------------------------------ +# sous bloc niveau 2 : PERMEABILITY +#------------------------------------------------ + PERMEABILITY = FACT ( statut="o", + ang ="Permeability properties", + fr ="proprietes du bloc PERMEABILITY", + regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), + ), + + LAW = SIMP (statut="o", + typ=law, + defaut="LINEAR", + ang = "type of law", + ), + HOMOGENEOUS = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is homogeneous", + fr = "le materiau est homogene", + ), + ISOTROPIC = SIMP (statut="f", + typ="TXM", + defaut="TRUE", + into = ("TRUE","FALSE"), + ang = "the material is isotropic", + fr = "le materiau est isotrope", + ), + VALUE_REAL = SIMP (statut="f", + typ="R", + ang = "enter a real value", + fr = "entrer un reel", + ), + VALUE_COMPLEX = SIMP (statut="o", + typ="C", + ang = "enter a complex value", + fr = "entrer un complexe", + ), + + ), # fin FACT PERMEABILITY + + + ) # fin BLOC conductor + ) # fin OPER Materiau +# +##------------------------------------ +## sous bloc niveau 1 : DIELECTRIC +##------------------------------------ +#DIELECTRIC = OPER (nom = "DIELECTRIC", +# op = None, +# repetable = 'n', +# UIinfo= {"groupes":("Isotropic Homogeneous Materials",)}, +# ang= "DIELECTRIC block definition", +# fr= "definition du bloc DIELECTRIC", +# sd_prod= materiau, +# +# +##------------------------------------------------ +## sous bloc niveau 2 : PERMITTTIVITY +##------------------------------------------------ +# PERMITTIVITY = FACT ( statut="o", +# ang ="Permittivity properties", +# fr ="proprietes du bloc PERMITTIVITY", +# regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), +# ), +# +# LAW = SIMP (statut="o", +# typ="TXM", +# defaut="LINEAR", +# into = ("LINEAR","NONLINEAR"), +# ang = "type of law", +# ), +# HOMOGENEOUS = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is homogeneous", +# fr = "le materiau est homogene", +# ), +# ISOTROPIC = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is isotropic", +# fr = "le materiau est isotrope", +# ), +# VALUE_REAL = SIMP (statut="f", +# typ="R", +# ang = "enter a real value", +# fr = "entrer un reel", +# ), +# VALUE_COMPLEX = SIMP (statut="o", +# typ="C", +# ang = "enter a complex value", +# fr = "entrer un complexe", +# ), +# +# ), # fin FACT PERMITTIVITY +# +##------------------------------------------------ +## sous bloc niveau 2 : PERMEABILITY +##------------------------------------------------ +# PERMEABILITY = FACT ( statut="o", +# ang ="Permeability properties", +# fr ="proprietes du bloc PERMEABILITY", +# regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), +# ), +# +# LAW = SIMP (statut="o", +# typ="TXM", +# defaut="LINEAR", +# into = ("LINEAR","NONLINEAR"), +# ang = "type of law", +# ), +# HOMOGENEOUS = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is homogeneous", +# fr = "le materiau est homogene", +# ), +# ISOTROPIC = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is isotropic", +# fr = "le materiau est isotrope", +# ), +# VALUE_REAL = SIMP (statut="f", +# typ="R", +# ang = "enter a real value", +# fr = "entrer un reel", +# ), +# VALUE_COMPLEX = SIMP (statut="o", +# typ="C", +# ang = "enter a complex value", +# fr = "entrer un complexe", +# ), +# +# NonLinearCond = BLOC (condition="LAW=='NONLINEAR'", +# NONLINEAR = SIMP (statut="o", +# typ= (law,), +# ang = "enter a complex value", +# fr = "parametres de la law non lineaire", +# ), +# ), +# +# ), # fin FACT PERMEABILITY +# +# +# ) # fin OPER DIELECTRIC +# +# +##------------------------------------ +## sous bloc niveau 1 : ZSURFACIC +##------------------------------------ +#ZSURFACIC = OPER (nom = "ZSURFACIC", +# op = None, +# repetable = 'n', +# UIinfo= {"groupes":("Isotropic Homogeneous Materials",)}, +# ang= "ZSURFACIC block definition", +# fr= "definition du bloc ZSURFACIC", +# sd_prod= materiau, +# +##------------------------------------------------ +## sous bloc niveau 2 : CONDUCTIVITY +##------------------------------------------------ +# CONDUCTIVITY = FACT ( statut="o", +# ang ="Conductivity properties", +# fr ="proprietes du bloc CONDUCTIVITY", +# regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), +# ), +# +# LAW = SIMP (statut="o", +# typ="TXM", +# defaut="LINEAR", +# into = ("LINEAR","NONLINEAR"), +# ang = "type of law", +# fr = "type de law", +# ), +# HOMOGENEOUS = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is homogeneous", +# fr = "le materiau est homogene", +# ), +# ISOTROPIC = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is isotropic", +# fr = "le materiau est isotrope", +# ), +# VALUE_REAL = SIMP (statut="f", +# typ="R", +# ang = "enter a real value", +# fr = "entrer un reel", +# ), +# VALUE_COMPLEX = SIMP (statut="o", +# typ="C", +# ang = "enter a complex value", +# fr = "entrer un complexe", +# ), +# +# +# ), # fin FACT CONDUCTIVITY +# +##------------------------------------------------ +## sous bloc niveau 2 : PERMEABILITY +##------------------------------------------------ +# PERMEABILITY = FACT ( statut="o", +# ang ="Permeability properties", +# fr ="proprietes du bloc PERMEABILITY", +# regles = ( UN_PARMI ('VALUE_REAL','VALUE_COMPLEX'), +# ), +# +# LAW = SIMP (statut="o", +# typ="TXM", +# defaut="LINEAR", +# into = ("LINEAR","NONLINEAR"), +# ang = "type of law", +# fr = "type de law", +# ), +# HOMOGENEOUS = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is homogeneous", +# fr = "le materiau est homogene", +# ), +# ISOTROPIC = SIMP (statut="f", +# typ="TXM", +# defaut="TRUE", +# into = ("TRUE","FALSE"), +# ang = "the material is isotropic", +# fr = "le materiau est isotrope", +# ), +# VALUE_REAL = SIMP (statut="f", +# typ="R", +# ang = "enter a real value", +# fr = "entrer un reel", +# ), +# VALUE_COMPLEX = SIMP (statut="o", +# typ="C", +# ang = "enter a complex value", +# fr = "entrer un complexe", +# ), +# +# ), # fin FACT PERMEABILITY +# +# ) # fin OPER ZSURFACIC +# +# +##=================================== +## definition d un type de matériau fictif +##------------------------------------ +## sous bloc niveau 1 : NILMAT +##------------------------------------ +#NILMAT = OPER (nom = "NILMAT", +# op = None, +# repetable = 'n', +# UIinfo= {"groupes":("Fictitious Materials",)}, +# ang= "NILMAT block definition", +# fr= "definition du bloc NILMAT", +# sd_prod= materiau, +# +# ) # fin OPER NILMAT +# +# +##============================================ +## 1 type de matériau isotropique non homogene +##---------------------------------------- +## sous bloc niveau 1 : EM_ISOTROPIC_FILES +##---------------------------------------- +#EM_ISOTROPIC = PROC (nom = "EM_ISOTROPIC", +# op = None, +# repetable = 'n', +# UIinfo= {"groupes":("Isotropic Inhomogeneous Materials",)}, +# ang= "EM_ISOTROPIC block definition", +# fr= "definition du bloc EM_ISOTROPIC", +# +# CONDUCTIVITY_File = SIMP (statut="o", +# typ=("Fichier",'MED Files (*.med)',), +# ang="CONDUCTIVITY MED data file name", +# fr ="nom du fichier MED CONDUCTIVITY", +# ), +# PERMEABILITY_File = SIMP (statut="o", +# typ=("Fichier",'MED Files (*.med)',), +# ang="PERMEABILITY MED data file name", +# fr ="nom du fichier MED PERMEABILITY", +# ), +# +# ) # fin PROC EM_ISOTROPIC +# +##============================================ +## 1 type de matériau non isotropique +##---------------------------------------- +## sous bloc niveau 1 : EM_ANISOTROPIC_FILES +##---------------------------------------- +#EM_ANISOTROPIC = PROC (nom = "EM_ANISOTROPIC", +# op = None, +# repetable = 'n', +# UIinfo= {"groupes":("Anisotropic Materials",)}, +# ang= "EM_ANISOTROPIC block definition", +# fr= "definition du bloc EM_ANISOTROPIC", +# +# CONDUCTIVITY_File = SIMP (statut="o", +# typ=("Fichier",'.mater Files (*.mater)',), +# ang="CONDUCTIVITY .mater data file name", +# fr ="nom du fichier .mater CONDUCTIVITY", +# ), +# PERMEABILITY_File = SIMP (statut="o", +# typ=("Fichier",'.mater Files (*.mater)',), +# ang="PERMEABILITY .mater data file name", +# fr ="nom du fichier .mater PERMEABILITY", +# ), +# ) # fin PROC EM_ANISOTROPIC +# +#================================ +# 3eme bloc : bloc SOURCES +#================================ + +SOURCES = PROC ( nom = "SOURCES", + op = None, + repetable = 'n', + ang = "sources block definition", + + STRANDED_INDUCTOR = FACT (statut="f", + fr="stranded inductor source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + NTURNS = SIMP (statut="o", + typ="I", + defaut=1, + fr="number of tuns in the inductor", + ), + CURJ = SIMP (statut="o", + typ="R", + defaut=0, + fr="intensity", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT + + EPORT = FACT (statut="f", + fr="eport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of eport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT eport + + HPORT = FACT (statut="f", + fr="hport source", + + NAME = SIMP (statut="o", + typ="TXM", + fr="name of the source", + ), + TYPE = SIMP (statut="o", + typ="TXM", + into=("VOLTAGE","CURRENT"), + fr="type of hport source", + ), + AMP = SIMP (statut="o", + typ="R", + defaut=0, + fr="amplitude", + ), + POLAR = SIMP (statut="o", + typ="R", + defaut=0, + fr="polarization", + ), + + ), # fin FACT hport + + +) # Fin PROC sources + diff --git a/Carmel3D/__init__.py b/Carmel3D/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/Carmel3D/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/Carmel3D/configuration_CARMEL3D.py b/Carmel3D/configuration_CARMEL3D.py new file mode 100644 index 00000000..8b632ed5 --- /dev/null +++ b/Carmel3D/configuration_CARMEL3D.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Ce module sert pour charger les paramètres de configuration d'EFICAS +""" +# Modules Python +import configuration +import os + + +class CONFIG(configuration.CONFIG_BASE): + + #----------------------------------- + def __init__(self,appli,repIni): + #----------------------------------- + + configuration.CONFIG_BASE.__init__(self,appli,repIni,'.Eficas_Carmel3D') + self.INSTALLDIR =os.path.dirname(__file__) + self.REPINI =os.path.dirname(__file__) + + self.labels_user=['exec_acrobat', 'catalogues','savedir','path_doc',] + self.labels_eficas=["rep_user","INSTALLDIR","path_doc","exec_acrobat"] + self.labels_eficas=self.labels_eficas+["rep_cata","initialdir","savedir","catalogues"] + self.cataFile="editeur.ini" + self.setValeurs() + + #--------------------------------------- + def lecture_fichier_ini_standard(self): + #--------------------------------------- + configuration.CONFIG_BASE.lecture_fichier_ini_standard(self) + + #--------------------------------------- + def lecture_fichier_ini_utilisateur(self): + #--------------------------------------- + configuration.CONFIG_BASE.lecture_fichier_ini_utilisateur(self) + +def make_config(appli,rep): + return CONFIG(appli,rep) + diff --git a/Carmel3D/editeur.ini b/Carmel3D/editeur.ini new file mode 100644 index 00000000..6096b491 --- /dev/null +++ b/Carmel3D/editeur.ini @@ -0,0 +1,18 @@ +# Choix des catalogues +import os +import prefs_CARMEL3D +rep_cata=prefs_CARMEL3D.repIni + +catalogues = ( +# (code,version,catalogue,formatIn,formatOut) +# catalogue entier et etendu : tout est decrit avec les repetitions qui en decoulent + ('CARMEL3D','V1',os.path.join(rep_cata,'Carmel3D_cata_etendu.py'),'python','python'), +# catalogue avec essai de mise en commun de certains blocs (loi) + ('CARMEL3D','V2',os.path.join(rep_cata,'Carmel3D_cata_fact.py'),'python','python'), +# catalogue avec materiau en tete + ('CARMEL3D','V3',os.path.join(rep_cata,'Carmel3D_cata_mat.py'),'python','python'), + ('CARMEL3D','V4',os.path.join(rep_cata,'Carmel3D_cata_matloi.py'),'python','python'), + ('CARMEL3D','V5',os.path.join(rep_cata,'Carmel3D_cata_pa.py'),'python','python'), + ('CARMEL3D','V6',os.path.join(rep_cata,'Carmel3D_cata_pn.py'),'python','python'), +) + diff --git a/Carmel3D/jdc_e1.comm b/Carmel3D/jdc_e1.comm new file mode 100644 index 00000000..7357fb58 --- /dev/null +++ b/Carmel3D/jdc_e1.comm @@ -0,0 +1,64 @@ + +cuivre1=CONDUCTOR(CONDUCTIVITY=_F(LAW='LINEAR', + VALUE_COMPLEX=('RI',1.0,4.0,),), + PERMEABILITY=_F(LAW='NONLINEAR', + VALUE_REAL=2,),); + +diel1=DIELECTRIC(PERMITTIVITY=_F(LAW='LINEAR', + VALUE_COMPLEX=('MP',2.0,90.0,),), + PERMEABILITY=_F(LAW='LINEAR', + VALUE_COMPLEX=(2+8j),),); + +diel_nl1=DIELECTRIC(PERMITTIVITY=_F(LAW='LINEAR', + VALUE_REAL=4,), + PERMEABILITY=_F(LAW='NONLINEAR', + VALUE_REAL=0, + NATURE='SPLINE', + FILENAME='/home/G17214/.Eficas_Openturns/jdc1.comm', + APPLIEDTO='B(H)&H(B)',),); + +diel_nl2=DIELECTRIC(PERMITTIVITY=_F(LAW='LINEAR', + VALUE_REAL=5,), + PERMEABILITY=_F(LAW='NONLINEAR', + VALUE_REAL=6.5, + NATURE='MARROCCO', + ALPHA=0, + TAU=0, + C=0, + EPSILON=0,),); + +diel_nl3=DIELECTRIC(PERMITTIVITY=_F(LAW='LINEAR', + VALUE_COMPLEX=('RI',3.4,2.1,),), + PERMEABILITY=_F(LAW='NONLINEAR', + VALUE_REAL=5.34789, + NATURE='MARROCCO+SATURATION', + ALPHA=0, + TAU=0, + C=0, + EPSILON=0, + BMAX=0, + HSAT=0, + BSAT=0, + JOIN='SPLINE', + APPLIEDTO='B(H)&H(B)',),); + +zf1=ZSURFACIC(CONDUCTIVITY=_F(LAW='LINEAR', + VALUE_REAL=0.25638,), + PERMEABILITY=_F(LAW='LINEAR', + VALUE_COMPLEX=(3.1200000000000001+5.8959999999999999j),),); + +nil1=NILMAT(); + +arete1=MESH_GR(Material=diel_nl1,); + +mesh3=MESH_GR(Material=diel_nl1,); + +mesh2=MESH_GR(Material=cuivre1,); + +nilmesh1=MESH_GR(Material=nil1,); + +SOURCES(STRANDED_INDUCTOR=_F(NAME='iiiiii', + NTURNS=1, + CURJ=0, + POLAR=0,),); +#CHECKSUM:557b11cc62f29372c2f1c59266e33885 -:FIN CHECKSUM \ No newline at end of file diff --git a/Carmel3D/jdc_e2.comm b/Carmel3D/jdc_e2.comm new file mode 100644 index 00000000..badcd461 --- /dev/null +++ b/Carmel3D/jdc_e2.comm @@ -0,0 +1,23 @@ + +cond1=CONDUCTOR(CONDUCTIVITY=_F(LAW='LINEAR', + VALUE_REAL=2,), + PERMEABILITY=_F(LAW='LINEAR', + VALUE_COMPLEX=('RI',2.0,4.0,),),); + +diel1=DIELECTRIC(PERMITTIVITY=_F(LAW='LINEAR', + VALUE_REAL=2,), + PERMEABILITY=_F(LAW='LINEAR', + HOMOGENEOUS='TRUE', + ISOTROPIC='TRUE', + VALUE_REAL=2,),); + +EM_ANISOTROPIC(CONDUCTIVITY_File='/home/G17214/.Eficas_Carmel3D/jdc1.mater', + PERMEABILITY_File='/home/G17214/.Eficas_Carmel3D/jdc1.mater',); + +grm1=MESH_GR(Material=cond1,); + +SOURCES(STRANDED_INDUCTOR=_F(NAME='jjjjjjjj', + NTURNS=1, + CURJ=0, + POLAR=0,),); +#CHECKSUM:a6d4c56783d1d09d6b54c996663cef00 -:FIN CHECKSUM \ No newline at end of file diff --git a/Carmel3D/jdc_f1.comm b/Carmel3D/jdc_f1.comm new file mode 100644 index 00000000..44fa4687 --- /dev/null +++ b/Carmel3D/jdc_f1.comm @@ -0,0 +1,83 @@ + +loi_l1=LAW(LINEAR='YES',); + +loi_nl1=LAW(LINEAR='NO', + NATURE='SPLINE', + FILENAME='/home/G17214/.Eficas_Openturns/jdc-sansjdc.comm', + APPLIEDTO='B(H)&H(B)',); + +loi_nl2=LAW(LINEAR='NO', + NATURE='MARROCCO', + ALPHA=0, + TAU=0, + C=0, + EPSILON=0,); + +loi_nl3=LAW(LINEAR='NO', + NATURE='MARROCCO+SATURATION', + ALPHA=0, + TAU=0, + C=0, + EPSILON=0, + BMAX=0, + HSAT=0, + BSAT=0, + JOIN='PARABOLIC', + APPLIEDTO='B(H)',); + +cd3=CONDUCTOR(CONDUCTIVITY=_F(LAW=loi_l1, + VALUE_REAL=2,), + PERMEABILITY=_F(LAW=loi_l1, + VALUE_COMPLEX=1,),); + +cd4=CONDUCTOR(CONDUCTIVITY=_F(LAW=loi_l1, + VALUE_COMPLEX=('RI',1.0,3.0,),), + PERMEABILITY=_F(LAW=loi_l1, + VALUE_COMPLEX=1,),); + +diel1=DIELECTRIC(PERMITTIVITY=_F(LAW=loi_l1, + VALUE_COMPLEX=1,), + PERMEABILITY=_F(LAW=loi_nl3, + VALUE_REAL=2,),); + +diel2=DIELECTRIC(PERMITTIVITY=_F(LAW=loi_l1, + VALUE_REAL=2,), + PERMEABILITY=_F(LAW=loi_nl1, + VALUE_REAL=5,),); + +cd2=CONDUCTOR(CONDUCTIVITY=_F(LAW=loi_l1, + VALUE_REAL=0,), + PERMEABILITY=_F(LAW=loi_l1, + VALUE_COMPLEX=1,),); + +cd10=CONDUCTOR(CONDUCTIVITY=_F(LAW=loi_l1, + HOMOGENEOUS='TRUE', + VALUE_REAL=8,), + PERMEABILITY=_F(LAW=loi_l1, + VALUE_COMPLEX=(2+5j),),); + +cd1=CONDUCTOR(CONDUCTIVITY=_F(LAW=loi_l1, + VALUE_COMPLEX=1,), + PERMEABILITY=_F(LAW=loi_l1, + VALUE_COMPLEX=1,),); + +zf1=ZSURFACIC(CONDUCTIVITY=_F(LAW=loi_l1, + VALUE_REAL=3,), + PERMEABILITY=_F(LAW=loi_l1, + VALUE_COMPLEX=('RI',2.0,0.22323232,),),); + +EM_ISOTROPIC(CONDUCTIVITY_File='/home/G17214/.Eficas_Openturns/jdc1.med', + PERMEABILITY_File='/home/G17214/.Eficas_Openturns/jdc1.med',); + +EM_ANISOTROPIC(CONDUCTIVITY_File='/home/G17214/.Eficas_Openturns/jdc1.mater', + PERMEABILITY_File='/home/G17214/.Eficas_Openturns/jdc1.mater',); + +SOURCES(STRANDED_INDUCTOR=_F(NAME='vvvvvvv', + NTURNS=1, + CURJ=0, + POLAR=0,),); + +arete1=MESH_GR(Material=diel1,); + +surf1=MESH_GR(Material=zf1,); +#CHECKSUM:3d23a16f6fd8628580590ab55ffeca01 -:FIN CHECKSUM \ No newline at end of file diff --git a/Carmel3D/jdc_m1.comm b/Carmel3D/jdc_m1.comm new file mode 100644 index 00000000..957536c0 --- /dev/null +++ b/Carmel3D/jdc_m1.comm @@ -0,0 +1,40 @@ + +loiL1=LAW(LINEAR='YES',); + +loiNL1=LAW(LINEAR='NO', + NATURE='SPLINE', + FILENAME='/home/G17214/.Eficas_Carmel3D/carmel2.comm', + APPLIEDTO='B(H)&H(B)',); + +mat1=MATERIAU(DIELECTRIC=_F(PERMITTIVITY=_F(LAW=loiL1, + VALUE_REAL=2,), + PERMEABILITY=_F(LAW=loiL1, + VALUE_REAL=3,),),); + +mat2=MATERIAU(CONDUCTOR=_F(CONDUCTIVITY=_F(LAW=loiL1, + VALUE_REAL=5,), + PERMEABILITY=_F(LAW=loiNL1, + VALUE_REAL=2,),),); + +mat3=MATERIAU(ZSURFACIC=_F(CONDUCTIVITY=_F(LAW=loiL1, + VALUE_REAL=3,), + PERMEABILITY=_F(LAW=loiNL1, + VALUE_REAL=3,),),); + +mat_emi1=MATERIAU(HOMOGENEOUS='FALSE', + EM_ISOTROPIC=_F(CONDUCTIVITY_File='/home/G17214/.Eficas_Carmel3D/jdc1.med', + PERMEABILITY_File='/home/G17214/.Eficas_Carmel3D/jdc1.med',),); + +mat_ema1=MATERIAU(ISOTROPIC='FALSE', + EM_ANISOTROPIC=_F(CONDUCTIVITY_File='/home/G17214/.Eficas_Carmel3D/jdc1.mater', + PERMEABILITY_File='/home/G17214/.Eficas_Carmel3D/jdc1.mater',),); + +nilmat1=NILMAT(); + +mesh1=MESH_GR(Material=mat1,); + +SOURCES(STRANDED_INDUCTOR=_F(NAME='ttttttt', + NTURNS=1, + CURJ=0, + POLAR=0,),); +#CHECKSUM:7d08ffb0b9773bb5b80682ed5238792d -:FIN CHECKSUM \ No newline at end of file diff --git a/Carmel3D/jdc_ml1.comm b/Carmel3D/jdc_ml1.comm new file mode 100644 index 00000000..853a5a8e --- /dev/null +++ b/Carmel3D/jdc_ml1.comm @@ -0,0 +1,17 @@ + +SOURCES(STRANDED_INDUCTOR=_F(NAME='llllllllll', + NTURNS=1, + CURJ=0, + POLAR=0,),); + +LINEAR=L_LAW(); + +diel1=MATERIAU(DIELECTRIC=_F(PERMITTIVITY=_F(LAW=LINEAR, + VALUE_REAL=1,), + PERMEABILITY=_F(LAW=LINEAR, + VALUE_REAL=4,),),); + +em1=MATERIAU(ISOTROPIC='FALSE', + EM_ANISOTROPIC=_F(CONDUCTIVITY_File='/home/G17214/.Eficas_Carmel3D/jdc1.mater', + PERMEABILITY_File='/home/G17214/.Eficas_Carmel3D/jdc1.mater',),); +#CHECKSUM:5e3593b9a5a59bcea70190f481125e1e -:FIN CHECKSUM \ No newline at end of file diff --git a/Carmel3D/jdc_pa1.comm b/Carmel3D/jdc_pa1.comm new file mode 100644 index 00000000..2de56fad --- /dev/null +++ b/Carmel3D/jdc_pa1.comm @@ -0,0 +1,17 @@ + +cond2=MATERIAU(TYPE='CONDUCTOR', + CONDUCTIVITY=_F(LAW=LINEAR, + HOMOGENEOUS='TRUE', + VALUE_REAL=2.3,), + PERMEABILITY=_F(LAW=LINEAR, + VALUE_REAL=5,),); + +LINEAR=L_LAW(); + +cond1=MATERIAU(TYPE='CONDUCTOR', + CONDUCTIVITY=_F(LAW=LINEAR, + HOMOGENEOUS='TRUE', + VALUE_REAL=2,), + PERMEABILITY=_F(LAW=LINEAR, + VALUE_COMPLEX=('RI',2.0,3.0,),),); +#CHECKSUM:ffb8e67edcb117fb4d6872eb08de66cf -:FIN CHECKSUM \ No newline at end of file diff --git a/Carmel3D/prefs.py b/Carmel3D/prefs.py new file mode 100644 index 00000000..e1d52ad7 --- /dev/null +++ b/Carmel3D/prefs.py @@ -0,0 +1,4 @@ +code="CARMEL3D" +import sys, os +if os.path.dirname(os.path.abspath(__file__)) not in sys.path : + sys.path.insert(0,os.path.dirname(os.path.abspath(__file__))) diff --git a/Carmel3D/prefs_CARMEL3D.py b/Carmel3D/prefs_CARMEL3D.py new file mode 100644 index 00000000..eca54ea0 --- /dev/null +++ b/Carmel3D/prefs_CARMEL3D.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== + +import os + +# repIni sert à localiser le fichier editeur.ini +# Obligatoire +repIni=os.path.dirname(os.path.abspath(__file__)) +REPINI=os.path.dirname(os.path.abspath(__file__)) +INSTALLDIR=os.path.abspath(os.path.join(repIni,'..')) + + +# CODE_PATH sert à localiser Noyau et Validation éventuellement +# non contenus dans la distribution EFICAS +# Par défaut on utilise les modules de INSTALLDIR +# Peut valoir None (defaut) +CODE_PATH = None + + +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' + +# Codage des strings qui accepte les accents (en remplacement de 'ascii') +encoding='iso-8859-1' + + +# Preference +if os.name == 'nt': + userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ]) +else : + userprefs=os.path.expanduser("~/.Eficas_install/prefs.py") + +if os.path.isfile(userprefs): + try: + execfile(userprefs) + except: + pass + +#------------------------------------------------------------------- +# Partie pour TK +#------------------------------------------------------------------- + +labels= ('Fichier','Edition','Jeu de commandes', + 'Options', + 'Aide', + 'Traduction', + ) + +appli_composants=['readercata','bureau', + 'options', + ] + +menu_defs={ 'bureau': [ + ('Fichier',[ + ('Nouveau','newJDC','','Ctrl+N'), + ('Nouvel INCLUDE','newJDC_include'), + ('Ouvrir','openJDC','','Ctrl+O'), + ('Enregistrer','saveJDC','','Ctrl+S'), + ('Enregistrer sous','saveasJDC','','Ctrl+E'), + None, + ('Fermer','closeJDC','','Ctrl+W'), + ('Quitter','exitEFICAS','','Ctrl+Q'), + ] + ), + ('Edition',[ + ('Copier','copy','','Ctrl+C'), + ('Couper','cut','','Ctrl+X'), + ('Coller','paste','','Ctrl+V'), + ] + ), + ('Jeu de commandes',[ + ('Rapport de validation','visuCRJDC','','Ctrl+R'), + ('Fichier source','visu_txt_brut_JDC','','Ctrl+B'), + #('Paramètres Eficas','affichage_fichier_ini'), + ] + ), + ('Traduction',[ + ('Traduction v7 en v8','TraduitFichier7'), + ('Traduction v8 en v9','TraduitFichier8','','Ctrl+T'), + ] + ), + ('Aide',[ + ('Aide EFICAS','aideEFICAS','','Ctrl+A'), + ] + ), + ] + } diff --git a/Carmel3D/properties.py b/Carmel3D/properties.py new file mode 100644 index 00000000..3db8254b --- /dev/null +++ b/Carmel3D/properties.py @@ -0,0 +1,25 @@ +#@ MODIF properties Accas DATE 02/06/2010 AUTEUR aster M.ADMINISTRATEUR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# RESPONSABLE D6BHHHH J-P.LEFEBVRE +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# 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. +# ====================================================================== +# IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR +# DE LA VERSION DU CODE_ASTER ASSOCIE +#---------------------------------------------------------------------- +version = "10.1.27" +date = "02/06/2010" +exploit = False diff --git a/Carmel3D/qtEficas_Carmel3D.py b/Carmel3D/qtEficas_Carmel3D.py new file mode 100755 index 00000000..299b7f64 --- /dev/null +++ b/Carmel3D/qtEficas_Carmel3D.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== + +""" + Ce module sert à lancer EFICAS configuré pour Code_Aster +""" +# Modules Python +# Modules Eficas + +import sys,os +sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')) + +import prefs +from InterfaceQT4 import eficas_go +eficas_go.lance_eficas(code=prefs.code) diff --git a/Carmel3D/style.py b/Carmel3D/style.py new file mode 100644 index 00000000..d4855725 --- /dev/null +++ b/Carmel3D/style.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +""" +Pour modifier le style d'EFICAS il faut ajouter un fichier style.py qui contiendra les +informations sur le style voulu dans son repertoire Eficas_install. + +La methode la plus simple consiste à modifier directement les attributs de l'objet style dans le +fichier style.py d'Eficas_install. Exemple:: + + style.background='yellow' + +pour modifier la couleur du background. + +Il existe une autre méthode qui peut être utilisée quand on veut modifier plusieurs propriétés à la fois. + +Le fichier style.py doit définir une nouvelle classe qui dérive de la classe de base STYLE avec des attributs +de classe qui définiront le nouveau style (par exemple, si on veut modifier le background):: + + class STYLE(STYLE): + background='yellow' + +Il faut ensuite instancier cette classe, dans ce meme fichier, en donnant le nom style à l'objet cree:: + + style=STYLE() + +Tous les attributs de classe possibles sont visibles dans le module Editeur/basestyle.py:: + + background='gray90' + foreground='black' + entry_background='white' + list_background='white' + list_select_background='#00008b' + list_select_foreground='grey' + tooltip_background="yellow" + + standard = ("Helvetica",12) + standard_italique = ("Helvetica",12,'italic') + standard_gras = ("Helvetica",12,'bold') + standard_gras_souligne = ("Helvetica",12,'bold','underline') + + canvas = ('Helvetica',10) + canvas_italique = ('Helvetica',10,'italic') + canvas_gras = ("Helvetica",10,'bold') + canvas_gras_italique = ("Helvetica",12,'bold','italic') + + standard12 = ("Helvetica",14) + standard12_gras = ("Helvetica",14,'bold') + standard12_gras_italique = ( "Helvetica",14,'bold','italic') + + +Le fichier style.py contenu dans le répertoire Aster permet de spécifier des propriétés globales pour une installation. +Les modifications de style contenues dans ce fichier et dans le fichier style.py d'Eficas_install +sont prises en compte dans cet ordre. +""" + +p1=10 +p2=14 +f1="Helvetica" + +style.background='gray90' +style.foreground='black' +style.standard = (f1,p1) +style.standard_italique = (f1,p1,'italic') +style.standard_gras = (f1,p1,'bold') +style.canvas_italique = (f1,p1,'italic') +style.canvas_gras = (f1,p1,'bold') +style.statusfont = (f1,p2) diff --git a/Cuve2dg/prefs_CUVE2DG.py b/Cuve2dg/prefs_CUVE2DG.py index 9398a330..2252bb33 100644 --- a/Cuve2dg/prefs_CUVE2DG.py +++ b/Cuve2dg/prefs_CUVE2DG.py @@ -25,14 +25,14 @@ import os, sys print "import des prefs de CUVE2DG" -# REPINI sert à localiser le fichier +# repIni sert à localiser le fichier # initialdir sert comme directory initial des QFileDialog # positionnee a repin au debut mise a jour dans configuration -REPINI=os.path.dirname(os.path.abspath(__file__)) -initialdir=REPINI +repIni=os.path.dirname(os.path.abspath(__file__)) +initialdir=repIni # INSTALLDIR sert à localiser l'installation d'Eficas -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') # Codage des strings qui accepte les accents (en remplacement de 'ascii') diff --git a/Descartes/editeur.ini b/Descartes/editeur.ini index 99f4d639..0b6172c3 100644 --- a/Descartes/editeur.ini +++ b/Descartes/editeur.ini @@ -2,7 +2,7 @@ import os import prefs -rep_cata = prefs.REPINI +rep_cata = prefs.repIni # Accès à la documentation path_doc = os.path.join(rep_cata,'..','Doc') diff --git a/Descartes/prefs.py b/Descartes/prefs.py index d0cd9255..57d38586 100644 --- a/Descartes/prefs.py +++ b/Descartes/prefs.py @@ -1,20 +1,20 @@ # -*- coding: utf-8 -*- import os -# REPINI sert à localiser le fichier editeur.ini +# repIni sert à localiser le fichier editeur.ini # Obligatoire -REPINI=os.path.dirname(os.path.abspath(__file__)) +repIni=os.path.dirname(os.path.abspath(__file__)) # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') # CODE_PATH sert à localiser Noyau et Validation éventuellement # non contenus dans la distribution EFICAS # Par défaut on utilise les modules de INSTALLDIR # Peut valoir None (defaut) CODE_PATH = None -#CODE_PATH = os.path.join(REPINI,'../../Superv') +#CODE_PATH = os.path.join(repIni,'../../Superv') # ICONDIR sert à localiser le répertoire contenant les icones # Par défaut on utilise le répertoire icons dans Editeur diff --git a/Editeur/analyse_catalogue.py b/Editeur/analyse_catalogue.py index ede00619..752d3948 100644 --- a/Editeur/analyse_catalogue.py +++ b/Editeur/analyse_catalogue.py @@ -24,7 +24,7 @@ import re,string,cPickle,os from Noyau.N_CR import CR # -__Id__="$Id: analyse_catalogue.py,v 1.7.4.1 2008-11-13 10:35:11 cchris Exp $" +__Id__="$Id: analyse_catalogue.py,v 1.9.8.1 2010-12-06 13:22:07 pnoyret Exp $" __version__="$Name: $" # l_noms_commandes = ['OPER','PROC','MACRO','FORM'] diff --git a/Editeur/analyse_catalogue_initial.py b/Editeur/analyse_catalogue_initial.py index 298eac7e..0bedf1d8 100644 --- a/Editeur/analyse_catalogue_initial.py +++ b/Editeur/analyse_catalogue_initial.py @@ -23,8 +23,8 @@ import re,string,os # -__Id__="$Id: analyse_catalogue_initial.py,v 1.1.2.2 2010-03-17 15:49:19 pnoyret Exp $" -__version__="$Name: V2_0 $" +__Id__="$Id: analyse_catalogue_initial.py,v 1.2.4.1 2010-12-06 13:22:07 pnoyret Exp $" +__version__="$Name: $" # diff --git a/Editeur/autre_analyse_cata.py b/Editeur/autre_analyse_cata.py index a9650f06..69ac1888 100644 --- a/Editeur/autre_analyse_cata.py +++ b/Editeur/autre_analyse_cata.py @@ -43,7 +43,7 @@ def traite_entite(entite,liste_simp_reel): Cette fonction ajoute a l'objet entite un attribut de nom ordre_mc qui est une liste contenant le nom des sous entites dans l'ordre de leur apparition dans le catalogue. - L'ordre d'apparition dans le catalogue est donné par l'attribut _no + L'ordre d'apparition dans le catalogue est donné par l'attribut _no de l'entite La fonction active le meme type de traitement pour les sous entites de entite @@ -55,10 +55,22 @@ def traite_entite(entite,liste_simp_reel): else: traite_reel(v,liste_simp_reel) traite_entite(v,liste_simp_reel) + traite_cache(v) l.append((v._no,k)) l.sort() entite.ordre_mc=[ item for index, item in l ] +def traite_cache(objet): + if not hasattr(objet, "cache"): return + if objet.cache == 0 :return + clef=objet.nom + if objet.equiv != None : clef=objet.equiv + if hasattr(objet.pere,"mcOblig"): + objet.pere.mcOblig[clef]=objet.defaut + else : + objet.pere.mcOblig={} + objet.pere.mcOblig[clef]=objet.defaut + def traite_reel(objet,liste_simp_reel): if objet.__class__.__name__ == "SIMP": if ( 'R' in objet.type): @@ -81,10 +93,10 @@ def analyse_niveau(cata_ordonne_dico,niveau,liste_simp_reel): def analyse_catalogue(cata): """ Cette fonction analyse le catalogue cata pour construire avec l'aide - de traite_entite la structure de données ordre_mc qui donne l'ordre - d'apparition des mots clés dans le catalogue + de traite_entite la structure de données ordre_mc qui donne l'ordre + d'apparition des mots clés dans le catalogue Elle retourne un dictionnaire qui contient toutes les commandes - du catalogue indexées par leur nom + du catalogue indexées par leur nom """ cata_ordonne_dico={} liste_simp_reel=[] diff --git a/Editeur/catadesc.py b/Editeur/catadesc.py index ad5d099a..bf54b9ee 100644 --- a/Editeur/catadesc.py +++ b/Editeur/catadesc.py @@ -75,13 +75,9 @@ class CatalogDescription: identifier = cata_tuple[1], cata_file_path = cata_tuple[2], file_format = cata_tuple[3]) - if len(cata_tuple) == 5 : - if cata_tuple[4] == "defaut": - desc.default = True - else: - desc = CatalogDescription(code = cata_tuple[0], - identifier = cata_tuple[1], - cata_file_path = cata_tuple[2], - file_format = cata_tuple[3], - file_format_in = cata_tuple[4]) + if len(cata_tuple) == 5: + if cata_tuple[4] == "defaut": + desc.default = True + else: + desc.file_format_in = cata_tuple[4] return desc diff --git a/Editeur/icons/delete.png b/Editeur/icons/delete.png new file mode 100644 index 00000000..c2a313ef Binary files /dev/null and b/Editeur/icons/delete.png differ diff --git a/Editeur/icons/image240.png b/Editeur/icons/image240.png new file mode 100644 index 00000000..c0562e33 Binary files /dev/null and b/Editeur/icons/image240.png differ diff --git a/Editeur/import_code.py b/Editeur/import_code.py index b4c24b70..2e8790f9 100644 --- a/Editeur/import_code.py +++ b/Editeur/import_code.py @@ -28,14 +28,7 @@ import os import prefs name='prefs_'+prefs.code prefs_Code=__import__(name) - INSTALLDIR=prefs_Code.INSTALLDIR -sys.path.append(INSTALLDIR) -sys.path.append(INSTALLDIR+"/UiQT4") -sys.path.append(INSTALLDIR+"/InterfaceQT4") -#sys.path.append(INSTALLDIR+"/Ui") -#sys.path.append(INSTALLDIR+"/InterfaceQT") -sys.path.append(INSTALLDIR+"/Editeur") # Ce chemin permet d'importer les modules Noyau et Validation # représentant le code utilisé (si fourni) @@ -47,9 +40,4 @@ if hasattr(prefs_Code,'CODE_PATH'): del sys.path[0] sys.path[:0]=[prefs_Code.INSTALLDIR] -# Ensuite on surcharge eventuellement -#if hasattr(prefs_Code,'CODE_PATH_SURCHARGE'): -# if prefs_Code.CODE_PATH_SURCHARGE: -# sys.path.insert(0,prefs_Code.CODE_PATH_SURCHARGE) - import Accas diff --git a/Editeur/listePatrons.py b/Editeur/listePatrons.py index 872f290b..3de4e4f9 100644 --- a/Editeur/listePatrons.py +++ b/Editeur/listePatrons.py @@ -1,7 +1,7 @@ import os import re -sous_menus={"ASTER" : {0:{"3D":"3D.comm"},1:{"poutre":"pou.comm"},2:{"salome":"salome.comm"},3:{"divers":"comm"}}, +sous_menus={ "OPENTURNS_STUDY" : {0:{"Anne":"Std.comm"}}, "OPENTURNS_WRAPPER" : {0:{"Anne":"wrapper_exemple.comm"}}, } diff --git a/Editeur/session.py b/Editeur/session.py index 235e9a4d..e74df5de 100644 --- a/Editeur/session.py +++ b/Editeur/session.py @@ -203,7 +203,7 @@ def print_d_env(): def create_parser(): # creation du parser des options de la ligne de commande - import prefs + #import prefs parser=optparse.OptionParser(usage="usage: %prog [options]",version="%prog 1.13") parser.add_option("-j","--jdc",dest="comm",type='string', @@ -226,7 +226,7 @@ def create_parser(): help="version de catalogue a utiliser") parser.add_option("-k","--kode", action="store", type="string",dest="code", - help="nom du code a utiliser",default=prefs.code) + help="nom du code a utiliser") parser.add_option("-d","--debug", action="store", type="int",dest="debug", help="niveau de debug") diff --git a/Editeur/styles.py b/Editeur/styles.py index 9d1265a3..8a66384b 100644 --- a/Editeur/styles.py +++ b/Editeur/styles.py @@ -6,7 +6,7 @@ prefsCode=__import__(name) import basestyle from basestyle import STYLE,style -inistylefile=os.path.join(prefsCode.REPINI,"style.py") +inistylefile=os.path.join(prefsCode.repIni,"style.py") if os.path.isfile(inistylefile): execfile(inistylefile) diff --git a/Editeur/uiinfo.py b/Editeur/uiinfo.py index 799728d8..3a42c632 100644 --- a/Editeur/uiinfo.py +++ b/Editeur/uiinfo.py @@ -53,15 +53,15 @@ def traite_commande(commande,niveau): uiinfo=commande.UIinfo or {} UI=UIINFO(commande,**uiinfo) commande.UI=UI - if "CACHE" in UI.groupes: + #if "CACHE" in UI.groupes: # La commande est cachee aux utilisateurs #niveau.dict_groupes["CACHE"].append(commande.nom) - pass - else: + #pass + #else: # On ajoute la commande dans tous les groupes specifies - for grp in UI.groupes: - if not niveau.dict_groupes.has_key(grp): niveau.dict_groupes[grp]=[] - niveau.dict_groupes[grp].append(commande.nom) + for grp in UI.groupes: + if not niveau.dict_groupes.has_key(grp): niveau.dict_groupes[grp]=[] + niveau.dict_groupes[grp].append(commande.nom) def traite_niveau(niveau): if niveau.l_niveaux == (): diff --git a/Exemples/ex20/prefs.py b/Exemples/ex20/prefs.py index bae03e07..46c5bc7b 100644 --- a/Exemples/ex20/prefs.py +++ b/Exemples/ex20/prefs.py @@ -1,14 +1,14 @@ # -*- coding: utf-8 -*- import os -# REPINI sert à localiser le fichier editeur.ini -REPINI=os.path.dirname(os.path.abspath(__file__)) +# repIni sert à localiser le fichier editeur.ini +repIni=os.path.dirname(os.path.abspath(__file__)) # ICONDIR sert à localiser le répertoire contenant les icones -ICONDIR=os.path.join(REPINI,'../..','Editeur','icons') +ICONDIR=os.path.join(repIni,'../..','Editeur','icons') # CODE_PATH sert à localiser Accas et Cata (si pas infos dans editeur.ini) -#CODE_PATH = os.path.join(REPINI,'..') +#CODE_PATH = os.path.join(repIni,'..') # INSTALLDIR sert à localiser faqs.txt et les modules Eficas -#INSTALLDIR=os.path.join(REPINI,'..','Editeur') +#INSTALLDIR=os.path.join(repIni,'..','Editeur') diff --git a/Exemples/ex21/prefs.py b/Exemples/ex21/prefs.py index 796e625f..dd475d0e 100644 --- a/Exemples/ex21/prefs.py +++ b/Exemples/ex21/prefs.py @@ -1,17 +1,17 @@ # -*- coding: utf-8 -*- import os -# REPINI sert à localiser le fichier editeur.ini -REPINI=os.path.dirname(os.path.abspath(__file__)) +# repIni sert à localiser le fichier editeur.ini +repIni=os.path.dirname(os.path.abspath(__file__)) # ICONDIR sert à localiser le répertoire contenant les icones -ICONDIR=os.path.join(REPINI,'../..','Editeur','icons') +ICONDIR=os.path.join(repIni,'../..','Editeur','icons') # CODE_PATH sert à localiser Accas et Cata (si pas infos dans editeur.ini) -#CODE_PATH = os.path.join(REPINI,'..') +#CODE_PATH = os.path.join(repIni,'..') # INSTALLDIR sert à localiser faqs.txt et les modules Eficas -#INSTALLDIR=os.path.join(REPINI,'..','Editeur') +#INSTALLDIR=os.path.join(repIni,'..','Editeur') # lang indique la langue utilisée pour les chaines d'aide : fr ou ang lang='fr' diff --git a/Exemples/profile/prefs.py b/Exemples/profile/prefs.py index 1914abe7..634be9d7 100644 --- a/Exemples/profile/prefs.py +++ b/Exemples/profile/prefs.py @@ -21,20 +21,20 @@ import os -# REPINI sert à localiser le fichier editeur.ini +# repIni sert à localiser le fichier editeur.ini # Obligatoire -REPINI=os.path.dirname(os.path.abspath(__file__)) +repIni=os.path.dirname(os.path.abspath(__file__)) # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') # CODE_PATH sert à localiser Noyau et Validation éventuellement # non contenus dans la distribution EFICAS # Par défaut on utilise les modules de INSTALLDIR # Peut valoir None (defaut) CODE_PATH = None -#CODE_PATH = os.path.join(REPINI,'../../Superv') +#CODE_PATH = os.path.join(repIni,'../../Superv') # ICONDIR sert à localiser le répertoire contenant les icones # Par défaut on utilise le répertoire icons dans Editeur diff --git a/Extensions/parametre.py b/Extensions/parametre.py index 2c3ed698..a97a52c6 100644 --- a/Extensions/parametre.py +++ b/Extensions/parametre.py @@ -78,6 +78,18 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) : #if not val : return None valeur = None + if type(val) == types.ListType: + # Un premier traitement a ete fait lors de la saisie + # permet de tester les parametres qui sont des listes + l_new_val = [] + for v in val : + try : + valeur=eval(str(v)) + l_new_val.append(v) + except : + return None + return l_new_val + if type(val) == types.StringType: # on tente l'evaluation dans un contexte fourni par le parent s'il existe if self.parent: @@ -272,6 +284,12 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) : else: return self.nom+' = '+ repr(self.valeur) else: + if type(self.valeur) == types.ListType : + aRetourner=self.nom+' = [' + for l in self.valeur : + aRetourner=aRetourner+str(l) +"," + aRetourner=aRetourner[0:-1]+']' + return aRetourner return self.nom+' = '+ str(self.valeur) def __str__(self): diff --git a/Homard/editeur.ini b/Homard/editeur.ini index fb10e20e..30e40733 100644 --- a/Homard/editeur.ini +++ b/Homard/editeur.ini @@ -2,7 +2,7 @@ import os import prefs -rep_cata = prefs.REPINI +rep_cata = prefs.repIni # Accès à la documentation path_doc = os.path.join(rep_cata,'Doc') diff --git a/Homard/prefs.py b/Homard/prefs.py index f79fe6ef..61cb1f7a 100644 --- a/Homard/prefs.py +++ b/Homard/prefs.py @@ -25,14 +25,14 @@ print "import des prefs de Homard" code = "Homard" -# REPINI sert à localiser le fichier +# repIni sert à localiser le fichier # initialdir sert comme directory initial des QFileDialog # positionnee a repin au debut mise a jour dans configuration -REPINI=os.path.dirname(os.path.abspath(__file__)) -initialdir=REPINI +repIni=os.path.dirname(os.path.abspath(__file__)) +initialdir=repIni # INSTALLDIR sert à localiser l'installation d'Eficas -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') sys.path[:0]=[INSTALLDIR] diff --git a/Ihm/I_JDC.py b/Ihm/I_JDC.py index 600e8d0a..a4e2930e 100644 --- a/Ihm/I_JDC.py +++ b/Ihm/I_JDC.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -852,7 +852,7 @@ class JDC(I_OBJECT.OBJECT): Retourne le nom du fichier correspondant à un numero d'unité logique (entier) ainsi que le source contenu dans le fichier """ - if self.appli : + if self.appli is not None: # Si le JDC est relié à une application maitre, on délègue la recherche file,text= self.appli.get_file(unite,fic_origine) else: diff --git a/Ihm/I_MACRO_ETAPE.py b/Ihm/I_MACRO_ETAPE.py index 8770ce39..b8e62389 100644 --- a/Ihm/I_MACRO_ETAPE.py +++ b/Ihm/I_MACRO_ETAPE.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -536,7 +536,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): except: # Impossible de construire le jdc auxiliaire (sortie par exception) l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1]) - if self.jdc.appli: + if self.jdc.appli is not None: self.jdc.appli.affiche_alerte("Erreur lors de l'evaluation du fichier inclus", message="Ce fichier ne sera pas pris en compte\n"+string.join(l) ) @@ -863,7 +863,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): def make_incl2_except(self,mess=None): l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1]) - if self.jdc.appli: + if self.jdc.appli is not None: if mess == None : self.jdc.appli.affiche_alerte("Erreur lors de l'evaluation du fichier inclus", message="Le contenu de ce fichier ne sera pas pris en compte\n"+string.join(l) diff --git a/Ihm/I_MCCOMPO.py b/Ihm/I_MCCOMPO.py index f9b03c33..8d76911f 100644 --- a/Ihm/I_MCCOMPO.py +++ b/Ihm/I_MCCOMPO.py @@ -60,6 +60,14 @@ class MCCOMPO(I_OBJECT.OBJECT): for arg in liste: objet_cata = dico[arg] dico=objet_cata.entites + l=[] + specifique=0 + for obj in dico.keys() : + if not(hasattr(dico[obj],'cache')) or dico[obj].cache==0 : + l.append(obj) + else : + specifique=1 + if specifique == 1 : return l return objet_cata.ordre_mc def filtre_liste_mc(self,liste_brute): diff --git a/Ihm/I_MCFACT.py b/Ihm/I_MCFACT.py index a5b9df3e..d9bd8154 100644 --- a/Ihm/I_MCFACT.py +++ b/Ihm/I_MCFACT.py @@ -41,11 +41,11 @@ class MCFACT(I_MCCOMPO.MCCOMPO): def getlabeltext(self): """ Retourne le label de self suivant qu'il s'agit d'un MCFACT - isolé ou d'un MCFACT appartenant à une MCList : - utilisée pour l'affichage dans l'arbre + isole ou d'un MCFACT appartenant a une MCList : + utilisee pour l'affichage dans l'arbre """ objet = self.parent.get_child(self.nom) - # objet peut-être self ou une MCList qui contient self ... + # objet peut-etre self ou une MCList qui contient self ... if objet is None or objet is self: return "Erreur - mclist inexistante: "+self.nom diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index 3c4052a3..614d41ce 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -53,6 +53,7 @@ from I_VALIDATOR import ValError,listProto class MCSIMP(I_OBJECT.OBJECT): + def isvalid(self,cr='non'): if self.state == 'unchanged': return self.valid @@ -79,7 +80,7 @@ class MCSIMP(I_OBJECT.OBJECT): def GetText(self): """ - Retourne le texte à afficher dans l'arbre représentant la valeur de l'objet + Retourne le texte a afficher dans l'arbre représentant la valeur de l'objet pointé par self """ @@ -380,7 +381,7 @@ class MCSIMP(I_OBJECT.OBJECT): Inputs : - sd=concept detruit Fonction : - Met a jour la valeur du mot cle simple suite à la disparition + Met a jour la valeur du mot cle simple suite a la disparition du concept sd Attention aux matrices """ @@ -442,7 +443,7 @@ class MCSIMP(I_OBJECT.OBJECT): def set_valeur_co(self,nom_co): """ - Affecte à self l'objet de type CO et de nom nom_co + Affecte a self l'objet de type CO et de nom nom_co """ #print "set_valeur_co",nom_co step=self.etape.parent @@ -482,7 +483,7 @@ class MCSIMP(I_OBJECT.OBJECT): def verif_existence_sd(self): """ Vérifie que les structures de données utilisées dans self existent bien dans le contexte - avant étape, sinon enlève la référence à ces concepts + avant étape, sinon enlève la référea ces concepts """ #print "verif_existence_sd" # Attention : possible probleme avec include @@ -552,7 +553,7 @@ class MCSIMP(I_OBJECT.OBJECT): return 0 def valide_item(self,item): - """Valide un item isolé. Cet item est candidat à l'ajout à la liste existante""" + """Valide un item isolé. Cet item est candidata l'ajout a la liste existante""" valid=1 try: #on verifie le type diff --git a/Ihm/I_OBJECT.py b/Ihm/I_OBJECT.py index d7d7c164..0687c4b7 100644 --- a/Ihm/I_OBJECT.py +++ b/Ihm/I_OBJECT.py @@ -38,13 +38,13 @@ class OBJECT: def isMCList(self): """ - Retourne 1 si self est une MCList (liste de mots-clés), 0 sinon (défaut) + Retourne 1 si self est une MCList (liste de mots-cles), 0 sinon (defaut) """ return 0 def get_regles(self): """ - Retourne les règles de self + Retourne les regles de self """ if hasattr(self,'definition'): return self.definition.regles @@ -55,7 +55,7 @@ class OBJECT: def init_modif(self): """ - Met l'état de l'objet à modified et propage au parent + Met l'etat de l'objet a modified et propage au parent qui vaut None s'il n'existe pas """ self.state = 'modified' @@ -64,11 +64,11 @@ class OBJECT: def fin_modif(self): """ - Méthode appelée après qu'une modification a été faite afin de déclencher - d'éventuels traitements post-modification + Methode appelee apres qu'une modification a ete faite afin de declencher + d'eventuels traitements post-modification """ #print "fin_modif",self - # pour les objets autres que les commandes, aucun traitement spécifique + # pour les objets autres que les commandes, aucun traitement specifique # on remonte l'info de fin de modif au parent CONNECTOR.Emit(self,"valid") if self.parent: @@ -76,13 +76,13 @@ class OBJECT: def isrepetable(self): """ - Indique si l'objet est répétable + Indique si l'objet est repetable """ return 0 def liste_mc_presents(self): """ - Retourne la liste des noms des mots clés présents + Retourne la liste des noms des mots cles presents """ return [] @@ -91,14 +91,14 @@ class OBJECT: def get_liste_mc_inconnus(self): """ - Retourne la liste des mots-clés inconnus dans self + Retourne la liste des mots-cles inconnus dans self """ return [] def verif_condition_regles(self,liste_presents): """ - Retourne la liste des mots-clés à rajouter pour satisfaire les règles - en fonction de la liste des mots-clés présents + Retourne la liste des mots-cles a rajouter pour satisfaire les regles + en fonction de la liste des mots-cles presents """ liste=[] for regle in self.definition.regles: @@ -108,17 +108,17 @@ class OBJECT: def verif_condition_bloc(self): """ Evalue les conditions de tous les blocs fils possibles - (en fonction du catalogue donc de la définition) de self et + (en fonction du catalogue donc de la definition) de self et retourne deux listes : - - la première contient les noms des blocs à rajouter - - la seconde contient les noms des blocs à supprimer + - la premiere contient les noms des blocs a rajouter + - la seconde contient les noms des blocs a supprimer """ return [],[] def get_genealogie(self): """ Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC - ou ETAPE) de self jusqu'au premier objet etape rencontré + ou ETAPE) de self jusqu'au premier objet etape rencontre """ if self.parent: l=self.parent.get_genealogie() @@ -141,9 +141,9 @@ class OBJECT: pass def normalize(self): - """ Retourne l'objet normalisé. En général self sauf si - pour etre inséré dans l'objet père il doit etre - wrappé dans un autre objet (voir mot cle facteur). + """ Retourne l'objet normalise. En general self sauf si + pour etre insere dans l'objet pere il doit etre + wrappe dans un autre objet (voir mot cle facteur). """ return self diff --git a/InterfaceQT/qtEficas.py b/InterfaceQT/qtEficas.py index 31329b42..ca6972b0 100644 --- a/InterfaceQT/qtEficas.py +++ b/InterfaceQT/qtEficas.py @@ -1,8 +1,8 @@ # -*- coding: iso-8859-1 -*- import os, sys -REPINI=os.path.dirname(os.path.abspath(__file__)) -INSTALLDIR=os.path.join(REPINI,'..') +repIni=os.path.dirname(os.path.abspath(__file__)) +INSTALLDIR=os.path.join(repIni,'..') from Editeur import import_code from qt import * @@ -52,8 +52,8 @@ class Appli(Eficas): del sys.setdefaultencoding self.top=self - self.CONFIGURATION = configuration.make_config(self,prefs.REPINI) - self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI) + self.CONFIGURATION = configuration.make_config(self,prefs.repIni) + self.CONFIGStyle = configuration.make_config_style(self,prefs.repIni) self.viewmanager = MyTabview(self, self) #MyTabview, MyWorkspace, Listspace self.setCentralWidget(self.viewmanager) @@ -167,7 +167,7 @@ class Appli(Eficas): self.recentMenu.insertItem(self.trUtf8('&Clear'), self.handleClearRecent) def handleOpenPatrons(self, idx): - fichier=REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx] + fichier=repIni+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx] self.viewmanager.handleOpen(fn=fichier, patron = 1) diff --git a/InterfaceQT4/CMakeLists.txt b/InterfaceQT4/CMakeLists.txt index 8c102b66..ed15ed14 100644 --- a/InterfaceQT4/CMakeLists.txt +++ b/InterfaceQT4/CMakeLists.txt @@ -35,6 +35,7 @@ install ( FILES browser.py compobase.py compobloc.py compocommandecomm.py compoc monUniqueSDCOIntoPanel.py monUniqueSDCOPanel.py monVisu.py politiquesValidation.py qtCommun.py qtEficas.py qtSaisie.py readercata.py typeNode.py utilIcons.py viewManager.py + configuration.py monSelectImage.py DESTINATION ${CMAKE_INSTALL_PREFIX}/InterfaceQT4 ) diff --git a/InterfaceQT4/browser.py b/InterfaceQT4/browser.py index 1a97d5c7..7782eb1b 100644 --- a/InterfaceQT4/browser.py +++ b/InterfaceQT4/browser.py @@ -80,13 +80,11 @@ class JDCTree( QTreeWidget ): def handleOnItem(self,item,int): self.itemCourrant=item - #try : - if 1 : + try : fr = item.item.get_fr() if self.editor: self.editor.affiche_infos(QString.toUtf8(QString(fr))) - #except: - else: + except: pass item.affichePanneau() @@ -121,6 +119,7 @@ class JDCNode(QTreeWidgetItem): self.item.connect("supp" ,self.onSupp,()) self.item.connect("add" ,self.onAdd,()) self.state="" + def build_children(self,posInsertion=10000): @@ -340,9 +339,17 @@ class JDCNode(QTreeWidgetItem): labeltext,fonte,couleur = self.item.GetLabelText() self.setText(0, labeltext) + def update_node_label_in_blue(self): + if hasattr(self.appliEficas,'noeudColore'): + self.appliEficas.noeudColore.setTextColor( 0,Qt.black) + self.appliEficas.noeudColore.update_node_label() + self.setTextColor( 0,Qt.blue ) + labeltext,fonte,couleur = self.item.GetLabelText() + self.setText(0, labeltext) + self.appliEficas.noeudColore=self + def update_node_texte(self): """ Met a jour les noms des SD et valeurs des mots-cles """ - #print "NODE update_node_texte", self.item.GetLabelText() value = self.item.GetText() self.setText(1, value) diff --git a/InterfaceQT4/compomacro.py b/InterfaceQT4/compomacro.py index 961be5be..aec67efe 100644 --- a/InterfaceQT4/compomacro.py +++ b/InterfaceQT4/compomacro.py @@ -53,7 +53,6 @@ class INCLUDENode(browser.JDCNode,typeNode.PopUpMenuNode): def createPopUpMenu(self): typeNode.PopUpMenuNode.createPopUpMenu(self) - #self.menu.insertItem( qApp.translate('Browser','Edit'), self.makeEdit ) def makeEdit(self): #,appli,node if self.item.object.text_converted == 0: @@ -85,7 +84,6 @@ class POURSUITENode(browser.JDCNode, typeNode.PopUpMenuNode): def createPopUpMenu(self): typeNode.PopUpMenuNode.createPopUpMenu(self) - self.menu.insertItem( qApp.translate('Browser','Edit'), self.makeEdit ) def makeEdit(self): #,appli,node if self.item.object.text_converted == 0: @@ -118,7 +116,6 @@ class MATERIAUNode(MACRONode): def createPopUpMenu(self): typeNode.PopUpMenuNode.createPopUpMenu(self) - self.menu.insertItem( qApp.translate('Browser','View'), self.makeView ) def makeView(self) : if hasattr(self.item.object,'fichier_ini') and self.item.object.fichier_ini==None: diff --git a/InterfaceQT4/compooper.py b/InterfaceQT4/compooper.py index a32274d8..7993545a 100644 --- a/InterfaceQT4/compooper.py +++ b/InterfaceQT4/compooper.py @@ -98,7 +98,7 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): def GetIconName(self): """ Retourne le nom de l'icone a afficher dans l'arbre - Ce nom dépend de la validité de l'objet + Ce nom depend de la validite de l'objet """ if not self.object.isactif(): return "ast-white-square" diff --git a/InterfaceQT4/compoparam.py b/InterfaceQT4/compoparam.py index 914132b1..372aa364 100644 --- a/InterfaceQT4/compoparam.py +++ b/InterfaceQT4/compoparam.py @@ -6,7 +6,7 @@ """ # import modules Python -import string +import string, types # import modules EFICAS from Editeur import Objecttreeitem @@ -72,6 +72,11 @@ class PARAMTreeItem(Objecttreeitem.ObjectTreeItem): Ce texte est tronqué à 25 caractêres """ texte=self.object.nom+"="+str(self.object.valeur) + if type(self.object.valeur) == types.ListType : + texte=self.nom+' = [' + for l in self.object.valeur : + texte=texte+str(l) +"," + texte=texte[0:-1]+']' texte = string.split(texte,'\n')[0] if len(texte) < 25 : return texte diff --git a/InterfaceQT4/composimp.py b/InterfaceQT4/composimp.py index fbbf61b4..a2d6e9ab 100644 --- a/InterfaceQT4/composimp.py +++ b/InterfaceQT4/composimp.py @@ -230,7 +230,6 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): def get_liste_param_possible(self): liste_param=[] - print self.object.jdc.params for param in self.object.jdc.params: encorevalide=self.valide_item(param.valeur) if encorevalide: diff --git a/InterfaceQT4/configuration.py b/InterfaceQT4/configuration.py index f3fa8096..a9934a05 100644 --- a/InterfaceQT4/configuration.py +++ b/InterfaceQT4/configuration.py @@ -50,7 +50,6 @@ class CONFIG_BASE: self.code = appli.code self.salome = appli.salome self.repIni = repIni - self.REPINI = repIni self.rep_user = os.path.join(os.environ['HOME'],nomDir) if self.appli: @@ -72,6 +71,8 @@ class CONFIG_BASE: #Lecture des fichiers utilisateurs self.lecture_fichier_ini_standard() + if hasattr(self,'make_ssCode'): + self.make_ssCode(self.ssCode) self.lecture_fichier_ini_utilisateur() self.lecture_catalogues() @@ -80,8 +81,7 @@ class CONFIG_BASE: #-------------------------------------- # Verifie l'existence du fichier "standard" # appelle la lecture de ce fichier - import prefs - name='prefs_'+prefs.code + name='prefs_'+self.appli.code prefsCode=__import__(name) self.prefsUser=name+".py" for k in self.labels_eficas : @@ -90,9 +90,6 @@ class CONFIG_BASE: setattr(self,k,valeur) except : pass - if hasattr(self,'map_path') : - oldPath=self.map_path - #-------------------------------------- def lecture_fichier_ini_utilisateur(self): @@ -155,7 +152,6 @@ class CONFIG_BASE: valeur=getattr(self,clef) texte= texte + clef+" = " + repr(valeur) +"\n" f=open(self.fic_ini_utilisateur,'w+') - print self.fic_ini_utilisateur f.write(texte) f.close() # diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index e1351b90..eacadef0 100644 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -18,15 +18,18 @@ # # ====================================================================== -import types,sys,os +import types,sys,os, re import traceback from PyQt4 import * from PyQt4.QtGui import * from PyQt4.QtCore import * +import time +from datetime import date + # Modules Eficas -import convert,generator +import convert, generator from Editeur import session from Editeur import comploader from Editeur import Objecttreeitem @@ -47,7 +50,6 @@ class JDCEditor(QSplitter): def __init__ (self,appli,fichier = None, jdc = None, QWParent=None, units = None, include=0 , vm=None): #----------------------------------------------------------------------------------------------------------# - #print "fichier", fichier,"jdc",jdc,"units",units,"include",include QSplitter.__init__(self, QWParent) self.appliEficas = appli self.appli = appli #---- attendu par IHM @@ -56,25 +58,31 @@ class JDCEditor(QSplitter): self.jdc = jdc self.QWParent = QWParent - self.test=0 - VERSION_CODE = session.d_env.cata if appli != None : self.salome = self.appliEficas.salome - self.format = self.appliEficas.format_fichier else : self.salome=0 print "dans JDC pas d appli ????????" + # ces attributs sont mis a jour par definitCode appelee par newEditor self.code = self.appliEficas.CONFIGURATION.code - self.version_code = VERSION_CODE + self.version_code = session.d_env.cata + + if not hasattr ( self.appliEficas, 'readercata') or self.appliEficas.multi==True: + self.readercata = readercata.READERCATA( self, self.appliEficas ) + self.appliEficas.readercata=self.readercata + else : + self.readercata=self.appliEficas.readercata + if self.readercata.fic_cata == None : return #Sortie Salome + + self.format = self.appliEficas.format_fichier self.titre=self.appliEficas.VERSION_EFICAS + ' pour '+ self.code self.dict_reels={} self.liste_simp_reel=[] self.ihm="QT" - import prefs - nameConf='configuration_'+prefs.code + nameConf='configuration_'+self.code configuration=__import__(nameConf) self.CONFIGURATION = self.appliEficas.CONFIGURATION self.CONFIGStyle = self.appliEficas.CONFIGStyle @@ -108,15 +116,6 @@ class JDCEditor(QSplitter): self.node_selected = None self.message='' - #if not hasattr( readercata, 'reader' ) : - # readercata.reader = readercata.READERCATA( self, self.appliEficas ) - #self.readercata = readercata.reader - if not hasattr ( self.appliEficas, 'readercata'): - self.readercata = readercata.READERCATA( self, self.appliEficas ) - self.appliEficas.readercata=self.readercata - else : - self.readercata=self.appliEficas.readercata - if self.readercata.fic_cata == None : return #Sortie Salome self.Commandes_Ordre_Catalogue =self.readercata.Commandes_Ordre_Catalogue #------- construction du jdc -------------- @@ -132,7 +131,7 @@ class JDCEditor(QSplitter): self.jdc = self.readFile(self.fichier) else : self.jdc=jdc - if units is not None: + if self.jdc is not None and units is not None: self.jdc.recorded_units=units self.jdc.old_recorded_units=units else: @@ -147,7 +146,19 @@ class JDCEditor(QSplitter): self.jdc.appli = self txt_exception = None if not jdc: - self.jdc.analyse() + if self.appli.code == "CARMEL3D" and self.jdc.procedure == "" : + try : + self.jdc.procedure="LINEAR=L_LAW()" + self.jdc.analyse() + print self.jdc.cr.get_mess_exception() + if self.jdc.cr.get_mess_exception()!="" : + self.jdc = self._newJDC(units=units) + self.jdc.analyse() + except : + self.jdc = self._newJDC(units=units) + self.jdc.analyse() + else : + self.jdc.analyse() txt_exception = self.jdc.cr.get_mess_exception() if txt_exception: self.jdc = None @@ -170,7 +181,8 @@ class JDCEditor(QSplitter): Initialise un nouveau JDC vierge """ CONTEXT.unset_current_step() - jdc=self.readercata.cata[0].JdC( procedure="", + + jdc=self.readercata.cata[0].JdC( procedure ="", appli=self, cata=self.readercata.cata, cata_ord_dico=self.readercata.cata_ordonne_dico, @@ -213,7 +225,7 @@ class JDCEditor(QSplitter): J.old_recorded_units=units return J - #-----------------------# + #-------------------------------# def readFile(self, fn): #--------------------------------# """ @@ -232,13 +244,17 @@ class JDCEditor(QSplitter): # Le convertisseur existe on l'utilise #appli = self p=convert.plugins[self.appliEficas.format_fichier_in]() - p.readfile(fn) + p.readfile(fn) + pareil,texteNew=self.verifieCHECKSUM(p.text) + if pareil == False : + QMessageBox.warning( self, "fichier modifie","Attention! fichier change hors EFICAS") + p.text=texteNew text=p.convert('exec',self.appliEficas) if not p.cr.estvide(): self.affiche_infos("Erreur à la conversion",Qt.red) else : self.affiche_infos("Type de fichier non reconnu",Qt.red) - QMessageBox.critical( self, "Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier") + QMessageBox.critical( self, "Type de fichier non reconnu","EFICAS ne sait pas ouvrir le type de fichier %s" % self.appliEficas.format_fichier_in) return None CONTEXT.unset_current_step() @@ -265,12 +281,11 @@ class JDCEditor(QSplitter): #-----------------------# def get_source(self,file): #-----------------------# - format=self.appliEficas.format_fichier # Il faut convertir le contenu du fichier en fonction du format - if convert.plugins.has_key(format): + if convert.plugins.has_key(self.format): # Le convertisseur existe on l'utilise - p=convert.plugins[format]() + p=convert.plugins[self.format]() p.readfile(file) text=p.convert('execnoparseur') if not p.cr.estvide(): @@ -293,7 +308,6 @@ class JDCEditor(QSplitter): #-----------------------# def viewJdcSource(self): #-----------------------# - format = self.appliEficas.format_fichier f=open(self.fichier,'r') texteSource=f.read() f.close() @@ -302,8 +316,7 @@ class JDCEditor(QSplitter): #-----------------------# def viewJdcPy(self): #-----------------------# - format = self.appliEficas.format_fichier - strSource = str( self.get_text_JDC(format) ) + strSource = str( self.get_text_JDC(self.format) ) self._viewText(strSource, "JDC_RESULTAT") #-----------------------# @@ -388,8 +401,8 @@ class JDCEditor(QSplitter): """ Stocke dans Eficas.noeud_a_editer le noeud a copier """ - #print "handleEditCut" self.chercheNoeudSelectionne() + self.node_selected.update_node_label_in_blue() self.QWParent.edit="copier" self.QWParent.noeud_a_editer = self.node_selected @@ -445,6 +458,7 @@ class JDCEditor(QSplitter): # on rend la copie a nouveau possible en liberant le flag edit self.QWParent.edit="copier" + self.QWParent.noeud_a_editer=child #---------------------# def getFileName(self): @@ -478,13 +492,15 @@ class JDCEditor(QSplitter): fn = unicode(fn) if txt == None : - txt = self.get_text_JDC(self.appliEficas.format_fichier) + txt = self.get_text_JDC(self.format) eol = '\n' if len(txt) >= len(eol): if txt[-len(eol):] != eol: txt += eol else: txt += eol + checksum=self.get_checksum(txt) + txt=txt+checksum try: f = open(fn, 'wb') f.write(txt) @@ -511,82 +527,98 @@ class JDCEditor(QSplitter): return jdc_formate else: # Il n'existe pas c'est une erreur - self.affiche_infos("Format %s non reconnu" % format,Qt.red) - QMessageBox.critical( self, "Format "+format+" non reconnu","EFICAS ne sait pas convertir le JDC selon le format "+format) + self.affiche_infos("Format %s non reconnu" % self.format,Qt.red) + QMessageBox.critical( self, "Format "+self.format+" non reconnu","EFICAS ne sait pas convertir le JDC selon le format "+self.format) return "" #-----------------------------# def run(self,execution="oui"): #-----------------------------# - format=self.appliEficas.format_fichier self.textePython="" - if generator.plugins.has_key(format): + if generator.plugins.has_key(self.format): # Le generateur existe on l'utilise - self.generator=generator.plugins[format]() + self.generator=generator.plugins[self.format]() self.textePython =self.generator.generRUN(self.jdc,format='beautifie',config=self.appliEficas.CONFIGURATION) if execution=="oui" : - os.system(self.textePython) + exec self.textePython else: return self.textePython #------------------------------------------------# def runYACS(self,execution="oui",nomFichier=None): #------------------------------------------------# - format=self.appliEficas.format_fichier - if generator.plugins.has_key(format): + if generator.plugins.has_key(self.format): # Le generateur existe on l'utilise - self.generator=generator.plugins[format]() + self.generator=generator.plugins[self.format]() self.generator.generRUNYACS(self.jdc,format='beautifie',config=self.appliEficas.CONFIGURATION,nomFichier=nomFichier) if execution=="oui" : print "il faut faire le run dans Salome" - #-----------------------------# - def saveRun(self): - #-----------------------------# - texte=self.run(execution="non") - path=self.CONFIGURATION.savedir - fn = QFileDialog.getSaveFileName( self, + + #-----------------------------------------------------# + def determineNomFichier(self,path,extension): + #-----------------------------------------------------# + if DictExtensions.has_key(self.appli.code) : + chaine1="JDC (*"+DictExtensions[self.appli.code]+");;" + extensions= self.trUtf8(chaine1+ "All Files (*)") + else : + extensions= self.trUtf8("JDC (*.comm);;" "All Files (*)") + + if self.appli.code == "MAP" : + extensions = extensions + ";;Schema Yacs (*.xml);; Run (*.py);;" + + fn = QFileDialog.getSaveFileName( self, self.trUtf8("sauvegarde"), path, - self.trUtf8("JDC (*.sh);;" "All Files (*)"),None, + extensions,None, QFileDialog.DontConfirmOverwrite) - if fn.isNull(): return - ext = QFileInfo(fn).suffix() - if ext.isEmpty(): fn.append(".xml") - - if QFileInfo(fn).exists(): - abort = QMessageBox.warning(self, - self.trUtf8("Sauvegarde du Fichier"), - self.trUtf8("Le fichier %1 existe deja.").arg(fn), - self.trUtf8("&Ecraser"), - self.trUtf8("&Abandonner")) - if abort == 1 : return - - fn = unicode(QDir.convertSeparators(fn)) - self.writeFile( fn, txt = texte) + if fn.isNull(): return (0, None) + ext = QFileInfo(fn).suffix() + if ext.isEmpty(): fn.append(extension) + + if QFileInfo(fn).exists(): + abort = QMessageBox.warning(self, + self.trUtf8("Sauvegarde du Fichier"), + self.trUtf8("Le fichier %1 existe deja.").arg(fn), + self.trUtf8("&Ecraser"), + self.trUtf8("&Abandonner")) + if abort == 1 : return (0, "") + return (1,fn) + + def saveRun(self): + #-----------------# + texte=self.run(execution="non") + extension=".py" + + if hasattr(self,'fichierRun'): + self.writeFile( self.fichierRun, txt = texte) + return + + if self.fichier == None : + path=self.CONFIGURATION.savedir + else : + path=QFileInfo(self.fichier).absolutePath()+"/"+QFileInfo(self.fichier).baseName()+".py" + bOK, fn=self.determineNomFichier(path,extension) + if fn == "" : return + self.fichierRun = unicode(QDir.convertSeparators(fn)) + self.writeFile( self.fichierRun, txt = texte) #-----------------------------# def saveYACS(self): #-----------------------------# - path=self.CONFIGURATION.savedir - fn = QFileDialog.getSaveFileName( self, - self.trUtf8("sauvegarde"), path, - self.trUtf8("JDC (*.xml);;" "All Files (*)"),None, - QFileDialog.DontConfirmOverwrite) - if fn.isNull(): return - ext = QFileInfo(fn).suffix() - if ext.isEmpty(): fn.append(".xml") - - if QFileInfo(fn).exists(): - abort = QMessageBox.warning(self, - self.trUtf8("Sauvegarde du Fichier"), - self.trUtf8("Le fichier %1 existe deja.").arg(fn), - self.trUtf8("&Ecraser"), - self.trUtf8("&Abandonner")) - if abort == 1 : return - fn = unicode(QDir.convertSeparators(fn)) - - texte=self.runYACS(execution="non",nomFichier=fn) - #self.writeFile( fn, txt = texte) + if hasattr(self,'fichierYACS'): + self.runYACS(execution="non",nomFichier=self.fichierYACS) + return + + today = str(date.today()) + today = today.replace('-', '') + today+="-"+time.strftime("%H%M%S", time.localtime()) + path=self.CONFIGURATION.PATH_STUDY+"/"+self.CONFIGURATION.NAME_SCHEME+"_"+today+".xml" + extension=".xml" + + bOK, fn=self.determineNomFichier(path,extension) + if fn == "" : return + self.runYACS(execution="non",nomFichier=fn) + #-----------------------------------------# def cherche_Groupes(self): @@ -594,6 +626,16 @@ class JDCEditor(QSplitter): listeMA,listeNO=self.get_text_JDC("GroupMA") return listeMA,listeNO + #-----------------------------------------# + def handleAjoutGroup(self,listeGroup): + #-----------------------------------------# + dernier=self.tree.racine.children[-1] + for groupe in listeGroup : + new_node = dernier.append_brother("MESH_GROUPE",'after') + test,mess = new_node.item.nomme_sd(groupe) + new_node.append_child('Material') + dernier=new_node + #-----------------------------------------# def saveFile(self, path = None, saveas= 0): #-----------------------------------------# @@ -608,88 +650,44 @@ class JDCEditor(QSplitter): if not self.modified and not saveas: return (0, None) # do nothing if text wasn't changed + extension='.py' + if DictExtensions.has_key(self.appli.code) : + extension=DictExtensions[self.appli.code] + else : + extension='.comm' + newName = None + fn = self.fichier if self.fichier is None or saveas: if path is None: path=self.CONFIGURATION.savedir - selectedFilter = QString('') - if DictExtensions.has_key(self.appli.code) : - chaine1="JDC (*"+DictExtensions[self.appli.code]+");;" - extensions= self.trUtf8(chaine1+ "All Files (*)") - else : - extensions= self.trUtf8("JDC (*.comm);;" "All Files (*)") - fn = QFileDialog.getSaveFileName( self, - self.trUtf8("sauvegarde"), path, - extensions,None, - QFileDialog.DontConfirmOverwrite) + bOK, fn=self.determineNomFichier(path,extension) + if fn == None : return (0, None) if fn.isNull(): return (0, None) + ulfile = os.path.abspath(unicode(fn)) self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0] - - ext = QFileInfo(fn).suffix() - if ext.isEmpty(): - if DictExtensions.has_key(self.appli.code) : - fn.append(DictExtensions[self.appli.code]) - else : - fn.append(".comm") - - if QFileInfo(fn).exists(): - abort = QMessageBox.warning(self, - self.trUtf8("Sauvegarde du Fichier"), - self.trUtf8("Le fichier %1 existe deja.").arg(fn), - self.trUtf8("&Ecraser"), - self.trUtf8("&Abandonner")) - if abort == 1 : return (0, None) - fn = unicode(QDir.convertSeparators(fn)) newName = fn - else: - fn = self.fichier - - if self.writeFile(fn): - self.fichier = fn - self.modified = False - if self.fileInfo is None or saveas: - self.fileInfo = QFileInfo(self.fichier) - self.fileInfo.setCaching(0) - self.lastModified = self.fileInfo.lastModified() - if newName is not None: - self.appliEficas.addToRecentList(newName) - self.tree.racine.item.getObject().nom=os.path.basename(newName) - self.tree.racine.update_node_label() - - if self.jdc.isvalid() != 0 : - try : - fileXML = fn[:fn.rfind(".")] + '.xml' - self.generator.writeOpenturnsXML( fileXML ) - except : - pass + if not (self.writeFile(fn)): return (0, None) + self.fichier = fn + self.modified = False + if self.fileInfo is None or saveas: + self.fileInfo = QFileInfo(self.fichier) + self.fileInfo.setCaching(0) + self.lastModified = self.fileInfo.lastModified() + if newName is not None: + self.appliEficas.addToRecentList(newName) + self.tree.racine.item.getObject().nom=os.path.basename(newName) + self.tree.racine.update_node_label() - try : - fileSTD = fn[:fn.rfind(".")] + '.py' - self.generator.writeOpenturnsSTD( fileSTD ) - except : - pass + if self.jdc.isvalid() != 0 and hasattr(self.generator, "writeDefault"): + self.generator.writeDefault(fn) - try: - self.generator.writeDefault(fn) - except: - pass - - try : - fileCuve2DG = fn[:fn.rfind(".")] + '.don' - self.generator.writeCuve2DG(fileCuve2DG) - except : - pass - - - if self.salome : + if self.salome : self.appliEficas.addJdcInSalome( self.fichier) - - return (1, self.fichier) - else: - return (0, None) + return (1, self.fichier) # #---------------------------------# def saveFileAs(self, path = None): @@ -746,9 +744,33 @@ class JDCEditor(QSplitter): jdcText = '' return ulfile, jdcText + + + #------------------------------# + def verifieCHECKSUM(self,text): + #------------------------------# + indexDeb=text.find("#CHECKSUM:") + if indexDeb < 0 : + return 1, text + indexFin=text.find(":FIN CHECKSUM") + checkAvant=text[indexDeb:indexFin+13] + textJDC=text[0:indexDeb]+text[indexFin+13:-1] + checksum=self.get_checksum(textJDC) + pareil=(checkAvant==checksum) + return pareil, textJDC + #---------------------------# + def get_checksum(self,texte): + #---------------------------# + newtexte=texte.replace('"','\\"') + commande='echo "'+newtexte+'"|md5sum' + a=os.popen(commande) + checksum=a.read() + a.close() + ligne="#CHECKSUM:"+checksum[0:-1]+":FIN CHECKSUM" + return ligne if __name__=='__main__': - import prefs # dans main + self.code='ASTER' name='prefs_'+prefs.code prefsCode=__import__(name) diff --git a/InterfaceQT4/eficas_go.py b/InterfaceQT4/eficas_go.py index 97709247..d281e907 100644 --- a/InterfaceQT4/eficas_go.py +++ b/InterfaceQT4/eficas_go.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python # -*- coding: utf-8 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -18,35 +19,38 @@ # # # ====================================================================== -""" - Ce module permet de lancer l'application EFICAS en affichant - un ecran Splash pour faire patienter l'utilisateur -""" # Modules Python -import sys -from PyQt4.QtGui import * -from Editeur import import_code -from Editeur import session -from qtEficas import Appli +import sys,os +repIni=os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"..")) +ihmQTDir=os.path.join(repIni,"UiQT4") +editeurDir=os.path.join(repIni,"Editeur") +ihmDir=os.path.join(repIni,"InterfaceQT4") +if ihmDir not in sys.path : sys.path.append(ihmDir) +if ihmQTDir not in sys.path : sys.path.append(ihmQTDir) +if editeurDir not in sys.path :sys.path.append(editeurDir) + +from PyQt4.QtGui import * -def lance_eficas(code=None,fichier=None,ssCode=None): +def lance_eficas(code=None,fichier=None,ssCode=None,multi=False): """ Lance l'appli EFICAS """ # Analyse des arguments de la ligne de commande + from Editeur import session options=session.parse(sys.argv) - code=options.code + if options.code!= None : code=options.code + from qtEficas import Appli app = QApplication(sys.argv) - Eficas=Appli(code=code,ssCode=ssCode) + Eficas=Appli(code=code,ssCode=ssCode,multi=multi) Eficas.show() res=app.exec_() sys.exit(res) -def lance_eficas_ssIhm(code=None,fichier=None,version='v9.5'): +def lance_eficas_ssIhm(code=None,fichier=None,ssCode=None,version=None): """ Lance l'appli EFICAS pour trouver les noms des groupes """ @@ -54,15 +58,14 @@ def lance_eficas_ssIhm(code=None,fichier=None,version='v9.5'): options=session.parse(sys.argv) code=options.code + from qtEficas import Appli app = QApplication(sys.argv) - Eficas=Appli(code=code) + Eficas=Appli(code=code,ssCode=ssCode) from ssIhm import QWParentSSIhm parent=QWParentSSIhm(code,Eficas,version) import readercata - #if not hasattr( readercata, 'reader' ) : - # readercata.reader = readercata.READERCATA( parent, Eficas ) if not hasattr ( Eficas, 'readercata'): monreadercata = readercata.READERCATA( parent, Eficas ) Eficas.readercata=monreadercata @@ -71,3 +74,33 @@ def lance_eficas_ssIhm(code=None,fichier=None,version='v9.5'): from editor import JDCEditor monEditeur=JDCEditor(Eficas,fichier) print monEditeur.cherche_Groupes() + +def lance_MapToSh(code=None,fichier=None,ssCode='s_polymers_st_1_V1'): + + options=session.parse(sys.argv) + code=options.code + fichier=options.comm[0] + + from qtEficas import Appli + app = QApplication(sys.argv) + Eficas=Appli(code=code,ssCode=ssCode) + + from ssIhm import QWParentSSIhm + parent=QWParentSSIhm(code,Eficas,None,ssCode) + + import readercata + if not hasattr ( Eficas, 'readercata'): + monreadercata = readercata.READERCATA( parent, Eficas ) + Eficas.readercata=monreadercata + + from editor import JDCEditor + monEditeur=JDCEditor(Eficas,fichier) + texte=monEditeur.run("non") + print texte + +if __name__ == "__main__": + import sys + sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..'))) + lance_eficas(code=None,fichier=None,ssCode=None,multi=True) + + diff --git a/InterfaceQT4/gereTraduction.py b/InterfaceQT4/gereTraduction.py index c93edcb0..2efbdda2 100644 --- a/InterfaceQT4/gereTraduction.py +++ b/InterfaceQT4/gereTraduction.py @@ -11,6 +11,9 @@ def traduction(directPath,editor,version): if version == "V8V9" : from Traducteur import traduitV8V9 suffixe="v9.comm" + if version == "V9V10" : + from Traducteur import traduitV9V10 + suffixe="v10.comm" fn = QFileDialog.getOpenFileName( editor.appliEficas, editor.appliEficas.trUtf8('Traduire Fichier'), @@ -28,11 +31,11 @@ def traduction(directPath,editor,version): log=directLog+"/convert.log" os.system("rm -rf "+log) os.system("rm -rf "+FichierTraduit) - print "hhhhhhhhhhhhhhhhhhhhhhhhhhhh" qApp.setOverrideCursor(QCursor(Qt.WaitCursor)) if version == "V7V8" : traduitV7V8.traduc(FichieraTraduire,FichierTraduit,log) if version == "V8V9" : traduitV8V9.traduc(FichieraTraduire,FichierTraduit,log) + if version == "V9V10" : traduitV9V10.traduc(FichieraTraduire,FichierTraduit,log) qApp.setOverrideCursor(QCursor(Qt.ArrowCursor)) Entete="Fichier Traduit : "+FichierTraduit +"\n\n" diff --git a/InterfaceQT4/monChoixCode.py b/InterfaceQT4/monChoixCode.py new file mode 100644 index 00000000..0a81b985 --- /dev/null +++ b/InterfaceQT4/monChoixCode.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +# Modules Python +# Modules Eficas + +import os,sys +from desChoixCode import Ui_ChoixCode +from PyQt4.QtGui import * +from PyQt4.QtCore import * + + + +# Import des panels + +class MonChoixCode(Ui_ChoixCode,QDialog): + """ + Classe définissant le panel associé aux mots-clés qui demandent + à l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discrètes + """ + def __init__(self, parentAppli=None): + QDialog.__init__(self,parentAppli) + self.setModal(True) + self.setupUi(self) + self.parentAppli=parentAppli + self.verifieInstall() + self.code=None + self.connect(self.pB_OK,SIGNAL("clicked()"),self.choisitCode) + + def verifieInstall(self): + self.groupCodes=QButtonGroup(self) + for code in ('Aster','Cuve2dg','Openturns_Study','Openturns_Wrapper','Carmel3D'): + nom='rB_'+code + bouton=getattr(self,nom) + dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code)) + print dirCode + try : + l=os.listdir(dirCode) + self.groupCodes.addButton(bouton) + except : + bouton.close() + + + def choisitCode(self): + bouton=self.groupCodes.checkedButton() + code=str(bouton.text()) + codeUpper=code.upper() + self.parentAppli.code=codeUpper + sys.path.insert(0,os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code))) + self.close() diff --git a/InterfaceQT4/monChoixMap.py b/InterfaceQT4/monChoixMap.py index c0d12fb5..0cdbac6b 100644 --- a/InterfaceQT4/monChoixMap.py +++ b/InterfaceQT4/monChoixMap.py @@ -35,8 +35,9 @@ labels = { "s_scc_st_1" : "Analyse morphologique et mécanique d'une couche d'oxydes", "s_scc_st_2" : "Analyse statistique de données locales et expérimentales \nou numériques", "s_scc_st_3" : "taux de couverture des joints de grains par des précipités", -"s_poly_st_1" : "Estimation numérique 3D de la diffusion effective des gaz dans les polymères chargés", - +"s_polymers_st_1" : "Estimation numérique 3D de la diffusion effective des gaz dans les polymères chargés", +"s_rpv2" : "Essai Pascale", +"s_DIC" : "Essai Felix", } dico={"oxides" : {"irradiation" : "s_oxides_st_1", @@ -46,13 +47,15 @@ dico={"oxides" : {"irradiation" : "s_oxides_st_1", "analyse statistique" : "s_scc_st_2", "taux de couverture" : "s_scc_st_3"}, "concrete" : {}, - "polycristals" : {}, - "polymers" : {"numerique 3D" : "s_poly_st_1"}, + "polycristals" : {"essai Pascale" : "s_rpv2",}, + "polymers" : {"numerique 3D" : "s_polymers_st_1"}, "micro" : {}, "seal" : {}, "mox" : {}, "nano" : {}, - "insulator" : {}} + "insulator" : {}, + "images" : {"Felix" : "s_DIC"} +} # Import des panels @@ -96,6 +99,7 @@ class MonChoixMap(Ui_ChoixMap,QtGui.QDialog): self.groupModules.addButton(self.RBM8) self.groupModules.addButton(self.RBM9) self.groupModules.addButton(self.RBM10) + self.groupModules.addButton(self.RBM11) self.groupScheme=QButtonGroup(self.groupBoxScheme) self.connect(self.groupModules,SIGNAL("buttonClicked (QAbstractButton*)"),self.modifieModule) self.connect(self.groupScheme,SIGNAL("buttonClicked (QAbstractButton*)"),self.choisitSchema) diff --git a/InterfaceQT4/monCommandePanel.py b/InterfaceQT4/monCommandePanel.py index 210ffe59..2f010211 100644 --- a/InterfaceQT4/monCommandePanel.py +++ b/InterfaceQT4/monCommandePanel.py @@ -52,9 +52,9 @@ class DComm(Ui_DComm,QDialog): class MonCommandePanel(DComm,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3): """ - Classe définissant le panel associé aux mots-clés qui demandent - à l'utilisateur de choisir une seule valeur parmi une liste de valeurs - discrètes + Classe définissant le panel associé aux mots-clés qui demandent + à l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discrètes """ def __init__(self,node, parent = None,name = None,fl = 0): #print "MonCommandePanel" @@ -66,7 +66,7 @@ class MonCommandePanel(DComm,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3): self.connecterSignaux() def connecterSignaux(self): - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) + self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListWidgetItem*)"),self.LBNouvCommandeClicked) self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) diff --git a/InterfaceQT4/monCommentairePanel.py b/InterfaceQT4/monCommentairePanel.py index f31efe18..aa9424a7 100644 --- a/InterfaceQT4/monCommentairePanel.py +++ b/InterfaceQT4/monCommentairePanel.py @@ -53,9 +53,9 @@ class DComment(Ui_DComment,QDialog): class MonCommentairePanel(DComment,QTPanelTBW2,QTPanel): """ - Classe définissant le panel associé aux mots-clés qui demandent - à l'utilisateur de choisir une seule valeur parmi une liste de valeurs - discrètes + Classe définissant le panel associé aux mots-clés qui demandent + à l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discrètes """ def __init__(self,node, parent = None,name = None,fl = 0): #print "MonCommentairePanel" @@ -67,7 +67,7 @@ class MonCommentairePanel(DComment,QTPanelTBW2,QTPanel): self.textCommentaire.setFocus() def connecterSignaux(self) : - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) + self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListWidgetItem*)"),self.LBNouvCommandeClicked) self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) diff --git a/InterfaceQT4/monFonctionPanel.py b/InterfaceQT4/monFonctionPanel.py index c35b457a..5c3558fb 100644 --- a/InterfaceQT4/monFonctionPanel.py +++ b/InterfaceQT4/monFonctionPanel.py @@ -87,7 +87,6 @@ class MonFonctionPanel(MonPlusieursBasePanel): for val in valeur : TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", " TupleEnTexte = TupleEnTexte[0:-2] +")" - print TupleEnTexte self.LBValeurs.addItem(TupleEnTexte) else : self.LBValeurs.addItem(QString(str(valeur))) @@ -174,7 +173,9 @@ class MonFonctionPanel(MonPlusieursBasePanel): def Sup1Valeur(self): index=self.LBValeurs.currentRow() if index == None : return - self.LBValeurs.takeItem(index) + removed_item = self.LBValeurs.takeItem(index) + text = removed_item.text()[1:-1] # Remove the parenthesis + self.LEValeur.setText(text) listeVal=[] indexInterdit=[] for i in range(self.nbValeurs): diff --git a/InterfaceQT4/monFormulePanel.py b/InterfaceQT4/monFormulePanel.py index 4bc87d5f..ff8ed1d9 100644 --- a/InterfaceQT4/monFormulePanel.py +++ b/InterfaceQT4/monFormulePanel.py @@ -74,7 +74,7 @@ class MonFormulePanel(DFormule,QTPanelTBW2): self.parent=parent def connecterSignaux(self): - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) + self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListWidgetItem*)"),self.LBNouvCommandeClicked) self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) diff --git a/InterfaceQT4/monInactifPanel.py b/InterfaceQT4/monInactifPanel.py index 94cd999f..d497136b 100644 --- a/InterfaceQT4/monInactifPanel.py +++ b/InterfaceQT4/monInactifPanel.py @@ -16,7 +16,7 @@ class PanelInactif( QTPanel, Ui_DInactif,QDialog ): #print "PanelInactif" QDialog.__init__(self,parent) QTPanel.__init__(self,node,parent) - Ui_DInactif.__init__(self,parent) + Ui_DInactif.__init__(self) if hasattr(parent,"leLayout"): parent.leLayout.removeWidget(parent.leLayout.widgetActive) parent.leLayout.widgetActive.close() diff --git a/InterfaceQT4/monIncludePanel.py b/InterfaceQT4/monIncludePanel.py index 142f9d3d..2262e4ae 100644 --- a/InterfaceQT4/monIncludePanel.py +++ b/InterfaceQT4/monIncludePanel.py @@ -148,12 +148,12 @@ class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3): fn = os.path.abspath((unicode(fn))) ulfile = os.path.abspath(unicode(fn)) - self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0] + self.node.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0] self.LENomFichier.setText(fn) self.LENomFichReturnPressed() def connecterSignaux(self): - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) + self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListWidgetItem*)"),self.LBNouvCommandeClicked) self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) diff --git a/InterfaceQT4/monListeParamPanel.py b/InterfaceQT4/monListeParamPanel.py index 857714b4..8f22a19d 100644 --- a/InterfaceQT4/monListeParamPanel.py +++ b/InterfaceQT4/monListeParamPanel.py @@ -47,7 +47,8 @@ class MonListeParamPanel(DLisParam): self.connecterSignaux() def connecterSignaux(self) : - self.connect(self.LBParam,SIGNAL("itemPressed(QListWidgetItem*)"),self.LBParamItemPressed) + # self.connect(self.LBParam,SIGNAL("itemPressed(QListWidgetItem*)"),self.LBParamItemPressed) + self.connect(self.BOk,SIGNAL("clicked()"),self.valideParam) def initVal(self): self.LBParam.clear() @@ -55,12 +56,19 @@ class MonListeParamPanel(DLisParam): self.LBParam.addItem(QString(repr(param))) self.dictListe[QString(repr(param))] = param - def LBParamItemPressed(self): - #print self.LBParam.selectedItems() + def valideParam(self): if self.LBParam.selectedItems()== None : return - i=self.LBParam.selectedItems()[0].text() - self.panel.Ajout1Valeur(self.dictListe[i]) - - def on_BOk_clicked(self): - self.LBParamItemPressed() + lParam=[] + for indice in range(len(self.LBParam.selectedItems())): + i=self.LBParam.selectedItems()[indice].text() + param=self.dictListe[i] + lParam.append(param) + + try : + self.panel.AjoutNValeur(lParam) + except : + for p in lParam : + self.panel.Ajout1Valeur(p) self.close() + + diff --git a/InterfaceQT4/monMacroPanel.py b/InterfaceQT4/monMacroPanel.py index 19f9f871..089fa844 100644 --- a/InterfaceQT4/monMacroPanel.py +++ b/InterfaceQT4/monMacroPanel.py @@ -51,9 +51,9 @@ class DMacro(Ui_DComm,QDialog): class MonMacroPanel(DMacro,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3): """ - Classe définissant le panel associé aux mots-clés qui demandent - à l'utilisateur de choisir une seule valeur parmi une liste de valeurs - discrètes + Classe définissant le panel associé aux mots-clés qui demandent + à l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discrètes """ def __init__(self,node, parent = None,name = None,fl = 0): #print "MonMacroPanel" @@ -68,7 +68,7 @@ class MonMacroPanel(DMacro,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3): self.TWChoix.removeTab(1) def connecterSignaux(self): - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) + self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListWidgetItem*)"),self.LBNouvCommandeClicked) self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) diff --git a/InterfaceQT4/monOptions_ASTER.py b/InterfaceQT4/monOptions_ASTER.py index eff040ad..5dc7d941 100644 --- a/InterfaceQT4/monOptions_ASTER.py +++ b/InterfaceQT4/monOptions_ASTER.py @@ -16,6 +16,7 @@ class desOptions(Ui_desOptions,QDialog): class Options(desOptions): def __init__(self,parent = None,modal = 0,configuration=None): + self.code='ASTER' desOptions.__init__(self,parent,modal) self.configuration=configuration self.viewMan=parent @@ -151,14 +152,12 @@ class Options(desOptions): old_fic_ini_util=fic_ini_util+"_old" commande="mv "+fic_ini_util+" "+old_fic_ini_util os.system(commande) - import prefs - name='prefs_'+prefs.code + name='prefs_ASTER'+self.code prefsCode=__import__(name) - repIni=prefsCode.REPINI - nameConf='configuration_'+prefs.code + nameConf='configuration_'+self.code configuration=__import__(nameConf) - configNew=configuration.CONFIG(appli,repIni) + configNew=configuration.CONFIG(appli,prefsCode.repIni) self.configuration=configNew appli.CONFIGURATION=configNew self.configuration.save_params() diff --git a/InterfaceQT4/monOptions_CUVE2DG.py b/InterfaceQT4/monOptions_CUVE2DG.py index 9cd85253..435f8776 100644 --- a/InterfaceQT4/monOptions_CUVE2DG.py +++ b/InterfaceQT4/monOptions_CUVE2DG.py @@ -23,6 +23,7 @@ class Options(desOptions): self.dRepCat={} self.connecterSignaux() self.initAll() + self.code='CUVE2DG' def connecterSignaux(self) : self.connect(self.CBVersions,SIGNAL("activated(int)"),self.VersionChoisie) @@ -84,9 +85,7 @@ class Options(desOptions): item[2]=self.dRepCat[version] self.dVersion[version]=tuple(item) else : - import prefs - code=prefs.code - self.dVersion[version]=(code,version,self.dRepCat[version],code.lower()) + self.dVersion[version]=(self.code,version,self.dRepCat[version],self.code.lower()) lItem=[] for version in self.dVersion.keys() : @@ -152,11 +151,10 @@ class Options(desOptions): old_fic_ini_util=fic_ini_util+"_old" commande="mv "+fic_ini_util+" "+old_fic_ini_util os.system(commande) - import prefs - name='prefs_'+prefs.code + name='prefs_'+self.code prefsCode=__import__(name) - repIni=prefsCode.REPINI - nameConf='configuration_'+prefs.code + repIni=prefsCode.repIni + nameConf='configuration_'+self.code configuration=__import__(nameConf) configNew=configuration.CONFIG(appli,repIni) diff --git a/InterfaceQT4/monOptions_MAP.py b/InterfaceQT4/monOptions_MAP.py index 2dc9e49c..20724127 100644 --- a/InterfaceQT4/monOptions_MAP.py +++ b/InterfaceQT4/monOptions_MAP.py @@ -22,6 +22,7 @@ class Options(desOptions): self.dVersion={} self.dRepCat={} self.connecterSignaux() + self.code='MAP' self.initAll() def connecterSignaux(self) : @@ -74,7 +75,7 @@ class Options(desOptions): self.LERepAster.setText(self.configuration.PATH_MAP) return self.configuration.PATH_MAP=str(self.LERepMAP.text()) - self.configuration.PATH_PYGMEE=self.configuration.PATH_MAP+"/components/pygmee_v1" + self.configuration.PATH_PYGMEE=self.configuration.PATH_MAP+"/components/pygmee_v2" self.configuration.PATH_BENHUR=self.configuration.PATH_MAP+"/components/benhur" self.configuration.PATH_FDVGRID=self.configuration.PATH_MAP+"components/fdvgrid/ther2d/bin" self.configuration.PATH_MODULE=self.configuration.PATH_MODULE+"components/fdvgrid/ther2d/bin" @@ -126,9 +127,7 @@ class Options(desOptions): item[2]=self.dRepCat[version] self.dVersion[version]=tuple(item) else : - import prefs - code=prefs.code - self.dVersion[version]=(code,version,self.dRepCat[version],code.lower()) + self.dVersion[version]=(self.code,version,self.dRepCat[version],self.code.lower()) lItem=[] for version in self.dVersion.keys() : @@ -194,14 +193,12 @@ class Options(desOptions): old_fic_ini_util=fic_ini_util+"_old" commande="mv "+fic_ini_util+" "+old_fic_ini_util os.system(commande) - import prefs - name='prefs_'+prefs.code + name='prefs_'+self.code prefsCode=__import__(name) - repIni=prefsCode.REPINI nameConf='configuration_'+prefs.code configuration=__import__(nameConf) - configNew=configuration.CONFIG(appli,repIni) + configNew=configuration.CONFIG(appli,prefsCode.repIni) self.configuration=configNew appli.CONFIGURATION=configNew self.configuration.save_params() diff --git a/InterfaceQT4/monOptions_OPENTURNS_STUDY.py b/InterfaceQT4/monOptions_OPENTURNS_STUDY.py index 95db943a..f5d6bcde 100644 --- a/InterfaceQT4/monOptions_OPENTURNS_STUDY.py +++ b/InterfaceQT4/monOptions_OPENTURNS_STUDY.py @@ -22,6 +22,7 @@ class Options(desOptions): self.dVersion={} self.dRepCat={} self.connecterSignaux() + self.code='OPENTURNS_STUDY' self.initAll() def connecterSignaux(self) : @@ -87,9 +88,7 @@ class Options(desOptions): item[2]=self.dRepCat[version] self.dVersion[version]=tuple(item) else : - import prefs - code=prefs.code - self.dVersion[version]=(code,version,self.dRepCat[version],code.lower()) + self.dVersion[version]=(self.code,version,self.dRepCat[version],self.code.lower()) lItem=[] for version in self.dVersion.keys() : @@ -155,14 +154,12 @@ class Options(desOptions): old_fic_ini_util=fic_ini_util+"_old" commande="mv "+fic_ini_util+" "+old_fic_ini_util os.system(commande) - import prefs - name='prefs_'+prefs.code + name='prefs_'+self.code prefsCode=__import__(name) - repIni=prefsCode.REPINI - nameConf='configuration_'+prefs.code + nameConf='configuration_'+self.code configuration=__import__(nameConf) - configNew=configuration.CONFIG(appli,repIni) + configNew=configuration.CONFIG(appli,prefsCode.repIni) self.configuration=configNew appli.CONFIGURATION=configNew self.configuration.save_params() diff --git a/InterfaceQT4/monOptions_OPENTURNS_WRAPPER.py b/InterfaceQT4/monOptions_OPENTURNS_WRAPPER.py index 95db943a..9e94fa0b 100644 --- a/InterfaceQT4/monOptions_OPENTURNS_WRAPPER.py +++ b/InterfaceQT4/monOptions_OPENTURNS_WRAPPER.py @@ -22,6 +22,7 @@ class Options(desOptions): self.dVersion={} self.dRepCat={} self.connecterSignaux() + self.code='OPENTURNS_WRAPPER' self.initAll() def connecterSignaux(self) : @@ -87,9 +88,7 @@ class Options(desOptions): item[2]=self.dRepCat[version] self.dVersion[version]=tuple(item) else : - import prefs - code=prefs.code - self.dVersion[version]=(code,version,self.dRepCat[version],code.lower()) + self.dVersion[version]=(self.code,version,self.dRepCat[version],self.code.lower()) lItem=[] for version in self.dVersion.keys() : @@ -155,14 +154,12 @@ class Options(desOptions): old_fic_ini_util=fic_ini_util+"_old" commande="mv "+fic_ini_util+" "+old_fic_ini_util os.system(commande) - import prefs - name='prefs_'+prefs.code + name='prefs_'+self.code prefsCode=__import__(name) - repIni=prefsCode.REPINI - nameConf='configuration_'+prefs.code + nameConf='configuration_'+self.code configuration=__import__(nameConf) - configNew=configuration.CONFIG(appli,repIni) + configNew=configuration.CONFIG(appli,prefsCode.repIni) self.configuration=configNew appli.CONFIGURATION=configNew self.configuration.save_params() diff --git a/InterfaceQT4/monParamPanel.py b/InterfaceQT4/monParamPanel.py index dc839047..903ac3a8 100644 --- a/InterfaceQT4/monParamPanel.py +++ b/InterfaceQT4/monParamPanel.py @@ -62,7 +62,7 @@ class MonParamPanel(DParam,QTPanelTBW2,QTPanel): self.lineEditNom.setFocus() def connecterSignaux(self) : - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) + self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListWidgetItem*)"),self.LBNouvCommandeClicked) self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) self.connect(self.bOk,SIGNAL("clicked()"),self.BOkParamPressed) @@ -75,11 +75,17 @@ class MonParamPanel(DParam,QTPanelTBW2,QTPanel): nom=self.node.item.get_nom() self.lineEditNom.setText(nom) valeur=self.node.item.get_valeur() - if valeur != None: - #str=QString("").setNum(valeur) - self.lineEditVal.setText(str(valeur)) - else : + texte="[" + if valeur == None : self.lineEditVal.clear() + return + if type(valeur) == types.ListType : + for l in valeur : + texte=texte+str(l) +"," + texte=texte[0:-1]+"]" + self.lineEditVal.setText(texte) + else : + self.lineEditVal.setText(str(valeur)) def BOkParamPressed(self): val=self.LEValeurPressed() @@ -90,8 +96,8 @@ class MonParamPanel(DParam,QTPanelTBW2,QTPanel): self.Commentaire.setText(QString(commentaire)) self.editor.affiche_infos(commentaire,Qt.red) return - if str(val) == "" : - return + if str(val) == "" : return + if val == None : return self.node.item.set_nom(nom) self.node.item.set_valeur(val) self.node.update_texte() @@ -102,35 +108,29 @@ class MonParamPanel(DParam,QTPanelTBW2,QTPanel): def LEValeurPressed(self): self.Commentaire.setText(QString("")) - commentaire="Valeur incorrecte" qtVal=self.lineEditVal.text() valString=str(self.lineEditVal.text()) - if (valString.find(' ') > -1) or (valString.find(',') > -1) : - commentaire="Valeur incorrecte" - self.Commentaire.setText(QString(commentaire)) - self.editor.affiche_infos(commentaire,Qt.red) - return None - boul=2 + + contexte={} + exec "from math import *" in contexte + jdc=self.node.item.get_jdc() + for p in jdc.params : + try: + tp=p.nom+'='+str(p.val) + exec tp in contexte + except : + pass + + monTexte="monParam="+valString try : - val,boul=QString.toInt(qtVal) - if boul : valString=val + exec monTexte in contexte except : - pass - if boul == 0 : - try : - val,boul=QString.toDouble(qtVal) - if boul : valString=val - except : - pass - if boul == 0 : - try : - val=str(qtVal) - boul=1 - except : - pass - if boul: commentaire="Valeur correcte" - self.Commentaire.setText(QString(commentaire)) - self.editor.affiche_infos(commentaire) + self.Commentaire.setText("Valeur incorrecte") + self.editor.affiche_infos("Valeur incorrecte",Qt.red) + return None + + self.Commentaire.setText("Valeur correcte") + self.editor.affiche_infos("Valeur correcte") return valString def LENomPressed(self): diff --git a/InterfaceQT4/monPlusieursASSDPanel.py b/InterfaceQT4/monPlusieursASSDPanel.py index 91aaf46d..2d56011b 100644 --- a/InterfaceQT4/monPlusieursASSDPanel.py +++ b/InterfaceQT4/monPlusieursASSDPanel.py @@ -66,12 +66,20 @@ class MonPlusieursASSDPanel(MonPlusieursIntoPanel): def InitValeursCourantes(self): self.listNomsValeurs=[] for i in self.listeValeursCourantes : + #pour resoudre le typ= not_checked + try : self.listNomsValeurs.append(i.get_name()) + except : + self.listNomsValeurs.append(i) def BOkPourListePressed(self): if self.listeValeursCourantes == [] : self.editor.affiche_infos("Pas de Validation d un groupe vide",Qt.red) return + try : + if len(self.listeValeursCourantes) == 1 : self.listeValeursCourantes=self.listeValeursCourantes[0] + except : + pass self.node.item.set_valeur(self.listeValeursCourantes) self.editor.affiche_infos("Valeur Acceptée") pass diff --git a/InterfaceQT4/monPlusieursIntoPanel.py b/InterfaceQT4/monPlusieursIntoPanel.py index b1a7da7b..b3dbf92c 100644 --- a/InterfaceQT4/monPlusieursIntoPanel.py +++ b/InterfaceQT4/monPlusieursIntoPanel.py @@ -55,7 +55,7 @@ class DPlusInto(Ui_DPlusInto,QDialog): class MonPlusieursIntoPanel(DPlusInto,QTPanel,SaisieValeur): """ Classe définissant le panel associé aux mots-clés qui demandent - à l'utilisateur de choisir une seule valeur parmi une liste de valeurs + a l'utilisateur de choisir une seule valeur parmi une liste de valeurs discrètes """ def __init__(self,node, parent = None,name = None,fl = 0): @@ -67,6 +67,7 @@ class MonPlusieursIntoPanel(DPlusInto,QTPanel,SaisieValeur): SaisieValeur.BuildLBValeurs(self) self.listeValeursCourantes=self.node.item.GetListeValeurs() SaisieValeur.RemplitPanel(self,self.listeValeursCourantes) + self.alpha=0 self.connecterSignaux() def connecterSignaux(self) : @@ -75,7 +76,16 @@ class MonPlusieursIntoPanel(DPlusInto,QTPanel,SaisieValeur): self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPourListePressed) self.connect(self.BAjout1Val,SIGNAL("clicked()"),self.Ajout1Valeur) self.connect(self.BSup1Val,SIGNAL("clicked()"),self.Sup1Valeur) + self.connect(self.BAlpha,SIGNAL("clicked()"),self.BAlphaPressed) + def BAlphaPressed(self): + if self.alpha==1 : + self.alpha=0 + self.BAlpha.setText(QApplication.translate("DPlusInto", "Tri Alpha",None,QApplication.UnicodeUTF8)) + else : + self.alpha=1 + self.BAlpha.setText(QApplication.translate("DPlusInto", "Tri Cata",None,QApplication.UnicodeUTF8)) + SaisieValeur.RemplitPanel(self,self.listeValeursCourantes, self.alpha) def BOkPourListePressed(self): if self.listeValeursCourantes == [] : diff --git a/InterfaceQT4/monRacinePanel.py b/InterfaceQT4/monRacinePanel.py index 23480ab7..daa1e903 100644 --- a/InterfaceQT4/monRacinePanel.py +++ b/InterfaceQT4/monRacinePanel.py @@ -51,9 +51,9 @@ class DRac(Ui_DRac,QWidget): class MonRacinePanel(DRac,QTPanelTBW2): """ - Classe définissant le panel associé aux mots-clés qui demandent - à l'utilisateur de choisir une seule valeur parmi une liste de valeurs - discrètes + Classe définissant le panel associé aux mots-clés qui demandent + à l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discrètes """ def __init__(self,node, parent = None,name = None,fl = 0): #print "MonRacinePanel" @@ -65,7 +65,7 @@ class MonRacinePanel(DRac,QTPanelTBW2): def connecterSignaux(self): - self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) + self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListWidgetItem*)"),self.LBNouvCommandeClicked) self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged) self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed) self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) diff --git a/InterfaceQT4/monSelectImage.py b/InterfaceQT4/monSelectImage.py new file mode 100644 index 00000000..9daff324 --- /dev/null +++ b/InterfaceQT4/monSelectImage.py @@ -0,0 +1,91 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +# Modules Python +# Modules Eficas + +from desImage import Ui_DSelImage +from PyQt4.QtGui import * +from PyQt4.QtCore import * + +class DSelImage(Ui_DSelImage,QDialog): + def __init__(self,parent ,modal ) : + QDialog.__init__(self,parent) + self.setupUi(self) + +class MonImage (QWidget): + def __init__(self,file,parent): + QWidget.__init__(self,parent) + self.file=file + self.QtParent=parent + self.monRectangle=None + self.dessine=0 + self.readImage() + + + def readImage(self): + if self.file == "" : return + self.image=QPixmap(self.file) + + def paintEvent(self,paintEvent): + self.p= QPainter(self); + self.resize(self.image.width(),self.image.height()) + if self.monRectangle != None: + self.p.eraseRect(self.monRectangle) + self.p.drawPixmap(0,0,self.image.width(),self.image.height(),self.image) + if self.dessine==1: + self.monRectangle=QRect(QPoint(self.xdeb,self.ydeb),QPoint(self.xfin,self.yfin)) + self.p.drawRect(self.monRectangle) + + def changedEvent(self,e): + QWidget.changedEvent(self,e) + + def mousePressEvent(self,e): + self.xdeb=e.x() + self.ydeb=e.y() + self.dessine=0 + self.update() + QWidget.mousePressEvent(self,e) + + def mouseMoveEvent(self,e): + self.xfin=e.x() + self.yfin=e.y() + self.dessine=1 + self.update() + QWidget.mouseMoveEvent(self,e) + +class MonSelectImage(DSelImage): + """ + """ + def __init__(self,file,parent,name = None,fl = 0): + DSelImage.__init__(self,parent,0) + self.file=file + self.parentQT=parent + self.image=MonImage(self.file,self) + + + def accept(self) : + if (not hasattr(self.image,'xdeb')) :self.close() + name='RECT' + self.parentQT.editor.init_modif() + child=self.parentQT.node.append_brother(name) + child.item.set_valeur((self.image.xdeb,self.image.ydeb,self.image.xfin,self.image.yfin)) + child.affichePanneau() + self.close() diff --git a/InterfaceQT4/monUniqueBasePanel.py b/InterfaceQT4/monUniqueBasePanel.py index f8590916..4a4f3073 100644 --- a/InterfaceQT4/monUniqueBasePanel.py +++ b/InterfaceQT4/monUniqueBasePanel.py @@ -29,6 +29,9 @@ from desUniqueBase import Ui_DUnBase from qtCommun import QTPanel from qtSaisie import SaisieValeur from politiquesValidation import PolitiqueUnique +listeSuffixe= ('bmp','png','jpg' ) + + class DUnBase(Ui_DUnBase,QDialog): def __init__(self,parent ,modal ) : @@ -83,7 +86,7 @@ class MonUniqueBasePanel(DUnBase,QTPanel,SaisieValeur): self.BSalome.setIcon(icon) mc = self.node.item.get_definition() #if ( (self.node.item.get_nom() != "FileName" ) and ( mc.type[0]!="Fichier")) : - if ( mc.type[0]!="Fichier") : + if mc.type[0]!="Fichier" and mc.type[0]!="FichierNoAbs": self.BFichier.close() else : self.bParametres.close() @@ -109,6 +112,17 @@ class MonUniqueBasePanel(DUnBase,QTPanel,SaisieValeur): except : str=QString(valeurTexte) self.lineEditVal.setText(str) + mc = self.node.item.get_definition() + if hasattr(self,"BSelectInFile"): return + if (( mc.type[0]=="Fichier") and (QFileInfo(str).suffix() in listeSuffixe )): + self.BSelectInFile = QPushButton(self.Widget8) + self.BSelectInFile.setMinimumSize(QSize(140,40)) + self.BSelectInFile.setObjectName("BSelectInFile") + self.gridLayout.addWidget(self.BSelectInFile,1,1,1,1) + self.BSelectInFile.setText("Selection") + self.image=str + self.connect(self.BSelectInFile,SIGNAL("clicked()"),self.BSelectInFilePressed) + def InitCommentaire(self): @@ -117,7 +131,8 @@ class MonUniqueBasePanel(DUnBase,QTPanel,SaisieValeur): 'R' : "Un réel est attendu", 'I' : "Un entier est attendu", 'Matrice' : 'Une Matrice est attendue', - 'Fichier' : 'Un fichier est attendu'} + 'Fichier' : 'Un fichier est attendu', + 'FichierNoAbs' : 'Un fichier est attendu'} mctype = mc.type[0] if type(mctype) == types.ClassType: @@ -152,6 +167,24 @@ class MonUniqueBasePanel(DUnBase,QTPanel,SaisieValeur): ulfile = os.path.abspath(unicode(fichier)) self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0] self.lineEditVal.setText(fichier) + if (QFileInfo(fichier).suffix() in listeSuffixe ): + self.image=fichier + if (not hasattr(self,"BSelectInFile")): + self.BSelectInFile = QPushButton(self.Widget8) + self.BSelectInFile.setMinimumSize(QSize(140,40)) + self.BSelectInFile.setObjectName("BSelectInFile") + self.gridLayout.addWidget(self.BSelectInFile,1,1,1,1) + self.BSelectInFile.setText("Selection") + self.connect(self.BSelectInFile,SIGNAL("clicked()"),self.BSelectInFilePressed) + else : + self.BSelectInFile.setVisible(1) + elif hasattr(self, "BSelectInFile"): + self.BSelectInFile.setVisible(0) + + + def BSelectInFilePressed(self): + from monSelectImage import MonSelectImage + MonSelectImage(file=self.image,parent=self).show() def LEValeurPressed(self): diff --git a/InterfaceQT4/monUniqueIntoPanel.py b/InterfaceQT4/monUniqueIntoPanel.py index 017ae9fe..d89c4f31 100644 --- a/InterfaceQT4/monUniqueIntoPanel.py +++ b/InterfaceQT4/monUniqueIntoPanel.py @@ -55,6 +55,7 @@ class MonUniqueIntoPanel(DUnIn,QTPanel,SaisieValeur): """ def __init__(self,node, parent = None,name = None,fl = 0): #print "MonUniqueIntoPanel" + self.alpha=0 QTPanel.__init__(self,node,parent) DUnIn.__init__(self,parent,fl) SaisieValeur.RemplitPanel(self) @@ -64,6 +65,7 @@ class MonUniqueIntoPanel(DUnIn,QTPanel,SaisieValeur): def connecterSignaux(self) : self.connect(self.listBoxVal, SIGNAL("itemDoubleClicked(QListWidgetItem*)" ), self.ClicValeur ) self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed) + self.connect(self.BAlpha,SIGNAL("clicked()"),self.BAlphaPressed) def ClicValeur(self): SaisieValeur.ClicValeur(self) @@ -72,3 +74,12 @@ class MonUniqueIntoPanel(DUnIn,QTPanel,SaisieValeur): def BOkPressed(self): SaisieValeur.BOkPressed(self) + def BAlphaPressed(self): + if self.alpha==1 : + self.alpha=0 + self.BAlpha.setText(QApplication.translate("DPlusInto", "Tri Alpha",None,QApplication.UnicodeUTF8)) + else : + self.alpha=1 + self.BAlpha.setText(QApplication.translate("DPlusInto", "Tri Cata",None,QApplication.UnicodeUTF8)) + SaisieValeur.RemplitPanel(self,alpha=self.alpha) + diff --git a/InterfaceQT4/politiquesValidation.py b/InterfaceQT4/politiquesValidation.py index 3c89ba3c..20ded381 100644 --- a/InterfaceQT4/politiquesValidation.py +++ b/InterfaceQT4/politiquesValidation.py @@ -30,6 +30,7 @@ class Validation : self.parent=parent def TesteUneValeur(self,valeurentree): + commentaire = None valeur,validite=self.node.item.eval_valeur(valeurentree) if not validite : commentaire = "impossible d'évaluer : %s " %`valeurentree` @@ -46,7 +47,7 @@ class Validation : validite=valide commentaire=" " - if not validite : + if not validite and commentaire is None: commentaire = "impossible d'évaluer : %s " %`valeurentree` return valeur, validite, commentaire @@ -160,7 +161,6 @@ class PolitiquePlusieurs(Validation): # On teste le type de la valeur valeurScientifique=valeur valide=self.node.item.valide_item(valeur) - print valeur if not valide : try : valeur,valide=self.node.item.eval_valeur(valeur) diff --git a/InterfaceQT4/qtCommun.py b/InterfaceQT4/qtCommun.py index f1c41839..8b019756 100644 --- a/InterfaceQT4/qtCommun.py +++ b/InterfaceQT4/qtCommun.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -42,7 +42,17 @@ class QTPanel: def __init__(self,node, parent = None): self.editor = parent self.node = node - + if hasattr(self,'TWChoix'): + self.connect(self.TWChoix, SIGNAL("currentChanged(QWidget *)"), self.GestionBALpha) + + def GestionBALpha(self,fenetre): + if self.TWChoix.currentIndex()!=0: + if hasattr(self,'BAlpha'): #pour include materiau + self.BAlpha.hide() + else : + self.BAlpha.setVisible(True) + self.BuildLBMCPermis() + def BOkPressed(self): """ Impossible d utiliser les vrais labels avec designer ?? """ label=self.TWChoix.tabText(self.TWChoix.currentIndex()) @@ -103,19 +113,33 @@ class QTPanelTBW1(QTPanel): def __init__(self,node, parent = None): self.editor = parent self.node = node + if not(hasattr(self.node,'alpha')): self.node.alpha = 0 self.BuildLBMCPermis() self.AppelleBuildLBRegles() + if hasattr(self,'BAlpha'): + self.connect(self.BAlpha,SIGNAL("clicked()"),self.BAlphaPressed) + def BAlphaPressed (self): + if self.node.alpha == 0 : + self.node.alpha=1 + self.BAlpha.setText("Tri Cata") + else : + self.node.alpha=0 + self.BAlpha.setText("Tri Alpha") + self.BuildLBMCPermis() + + def BuildLBMCPermis(self): self.LBMCPermis.clear() QObject.connect(self.LBMCPermis,SIGNAL("itemDoubleClicked(QListWidgetItem*)"),self.DefMC) jdc = self.node.item.get_jdc() genea =self.node.item.get_genealogie() liste_mc=self.node.item.get_liste_mc_ordonnee(genea,jdc.cata_ordonne_dico) - for aMc in liste_mc: - self.LBMCPermis.addItem( aMc) - if len(liste_mc) !=0: - self.LBMCPermis.setCurrentItem(self.LBMCPermis.item(0)) + if ((len(liste_mc) < 10) and (hasattr(self,'BAlpha'))): + self.BAlpha.hide() + if self.node.alpha == 1 : liste_mc.sort() + for aMc in liste_mc: self.LBMCPermis.addItem( aMc) + if len(liste_mc) !=0: self.LBMCPermis.setCurrentItem(self.LBMCPermis.item(0)) def DefMC(self,item): @@ -170,12 +194,19 @@ class QTPanelTBW2(QTPanel): self.LBNouvCommande.clear() jdc=self.node.item.object.get_jdc_root() + + listeGroupes,dictGroupes=jdc.get_groups() + if "CACHE" in dictGroupes.keys(): + aExclure=dictGroupes["CACHE"] + else: + aExclure=() if self.editor.mode_nouv_commande == "alpha": self.RBalpha.setChecked(True) self.RBGroupe.setChecked(False) listeCmd = jdc.get_liste_cmd() for aCmd in listeCmd: - self.LBNouvCommande.addItem( aCmd ) + if aCmd not in aExclure : + self.LBNouvCommande.addItem( aCmd ) elif self.editor.mode_nouv_commande== "groupe" : self.RBGroupe.setChecked(True) self.RBalpha.setChecked(False) @@ -188,6 +219,7 @@ class QTPanelTBW2(QTPanel): self.LBNouvCommande.addItem( texte ) self.LBNouvCommande.addItem( " " ) for aCmd in listeCmd: + if aCmd not in aExclure : self.LBNouvCommande.addItem( aCmd) self.LBNouvCommande.addItem( " " ) elif self.editor.mode_nouv_commande== "initial" : @@ -196,7 +228,8 @@ class QTPanelTBW2(QTPanel): if len(listeCmd) != len(listeCmd2): listeCmd = listeCmd2 for aCmd in listeCmd: - self.LBNouvCommande.addItem( aCmd ) + if aCmd not in aExclure : + self.LBNouvCommande.addItem( aCmd ) #QObject.connect( self.LBNouvCommande, SIGNAL("itemClicked(QListWidgetItem*)"),self.DefCmd ) QObject.connect( self.LBNouvCommande, SIGNAL("itemDoubleClicked(QListWidgetItem*)"),self.DefCmd ) @@ -319,9 +352,9 @@ class ViewText(Ui_dView,QDialog): """ Classe permettant la visualisation de texte """ - def __init__(self,parent): + def __init__(self,parent,editor=None): QDialog.__init__(self,parent) - self.parent=parent + self.editor=editor self.setupUi(self) self.resize( QSize(600,600).expandedTo(self.minimumSizeHint()) ) @@ -333,12 +366,16 @@ class ViewText(Ui_dView,QDialog): def saveFile(self): #recuperation du nom du fichier + if self.editor != None : + dir=elf.editor.appliEficas.CONFIGURATION.savedir + else: + dir='/tmp' fn = QFileDialog.getSaveFileName(None, self.trUtf8("Save File"), - self.appliEficas.CONFIGURATION.savedir) + dir) if fn.isNull() : return ulfile = os.path.abspath(unicode(fn)) - self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0] + self.editor.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0] try: f = open(fn, 'wb') f.write(str(self.view.toPlainText())) diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index e25b0626..95828f16 100644 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -15,27 +15,53 @@ class Appli(Ui_Eficas,QMainWindow): """ Class implementing the main user interface. """ - def __init__(self,code="ASTER",salome=0,parent=None,ssCode=None): + def __init__(self,code=None,salome=0,parent=None,ssCode=None,multi=False): """ Constructor """ - self.VERSION_EFICAS="Eficas QT4 V2.0" + QMainWindow.__init__(self,parent) + Ui_Eficas.__init__(self) + self.setupUi(self) - self.ihm="QT" - self.code=code - self.ssCode=ssCode + self.VERSION_EFICAS="Eficas QT4 V6.4" self.salome=salome - self.top = self #(pour CONFIGURATION) + self.ihm="QT" + self.top = self #(pour CONFIGURATION) self.QWParent=None #(Pour lancement sans IHM) self.indice=0 self.dict_reels={} - import prefs - prefs.code=code - name='prefs_'+prefs.code + self.multi=multi + if self.multi == False :self.definitCode(code,ssCode) + self.RepIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'../Editeur/icons') + eficas_root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + self.ajoutIcones() + + + self.viewmanager = MyTabview(self) + self.recentMenu=self.menuFichier.addMenu(self.trUtf8('&Recents')) + self.connecterSignaux() + + self.recent = QStringList() + self.ficPatrons={} + self.initRecents() + + self.ouvreFichiers() + self.setWindowTitle(self.VERSION_EFICAS) + + def definitCode(self,code,ssCode) : + self.code=code + self.ssCode=ssCode + self.cleanPath() + if self.code==None : + from monChoixCode import MonChoixCode + widgetChoix = MonChoixCode(self) + ret=widgetChoix.exec_() + import sys + name='prefs_'+self.code prefsCode=__import__(name) - self.REPINI=prefsCode.REPINI - self.RepIcon=prefsCode.INSTALLDIR+"/Editeur/icons" + + self.repIni=prefsCode.repIni self.INSTALLDIR=prefsCode.INSTALLDIR if ssCode != None : self.format_fichier= ssCode #par defaut @@ -43,70 +69,82 @@ class Appli(Ui_Eficas,QMainWindow): else : self.format_fichier="python" #par defaut - if salome : - import sys - nameConf='configuration_'+prefs.code + nameConf='configuration_'+self.code configuration=__import__(nameConf) - self.CONFIGURATION = configuration.make_config(self,prefsCode.REPINI) + self.CONFIGURATION = configuration.make_config(self,prefsCode.repIni) self.CONFIGStyle = None if hasattr(configuration,'make_config_style'): - self.CONFIGStyle = configuration.make_config_style(self,prefsCode.REPINI) + self.CONFIGStyle = configuration.make_config_style(self,prefsCode.repIni) if hasattr(prefsCode,'encoding'): import sys reload(sys) sys.setdefaultencoding(prefsCode.encoding) - - QMainWindow.__init__(self,parent) - Ui_Eficas.__init__(self) - self.setupUi(self) - self.ajoutIcones() - if code in Appli.__dict__.keys(): - listeTexte=apply(Appli.__dict__[code],(self,)) - - self.viewmanager = MyTabview(self) - self.recentMenu=self.menuFichier.addMenu(self.trUtf8('&Recents')) - self.connecterSignaux() - - - #if self.salome : - # from Editeur import session - # self.ouvreFichiers() - - self.recent = QStringList() - self.ficPatrons={} + if self.code in Appli.__dict__.keys(): + listeTexte=apply(Appli.__dict__[self.code],(self,)) self.initPatrons() self.ficRecents={} - self.initRecents() - self.ouvreFichiers() - self.setWindowTitle(self.VERSION_EFICAS) - def ASTER(self) : self.menuTraduction = self.menubar.addMenu("menuTraduction") self.actionTraduitV7V8 = QAction(self) self.actionTraduitV7V8.setObjectName("actionTraduitV7V8") self.actionTraduitV8V9 = QAction(self) self.actionTraduitV8V9.setObjectName("actionTraduitV8V9") + self.actionTraduitV9V10 = QAction(self) + self.actionTraduitV9V10.setObjectName("actionTraduitV9V10") self.menuTraduction.addAction(self.actionTraduitV7V8) self.menuTraduction.addAction(self.actionTraduitV8V9) + self.menuTraduction.addAction(self.actionTraduitV9V10) self.menuTraduction.setTitle(QApplication.translate("Eficas", "Traduction", None, QApplication.UnicodeUTF8)) self.actionTraduitV7V8.setText(QApplication.translate("Eficas","TraduitV7V8", None, QApplication.UnicodeUTF8)) self.actionTraduitV8V9.setText(QApplication.translate("Eficas","TraduitV8V9", None, QApplication.UnicodeUTF8)) + self.actionTraduitV9V10.setText(QApplication.translate("Eficas","TraduitV9V10", None, QApplication.UnicodeUTF8)) self.connect(self.actionTraduitV7V8,SIGNAL("activated()"),self.traductionV7V8) self.connect(self.actionTraduitV8V9,SIGNAL("activated()"),self.traductionV8V9) + self.connect(self.actionTraduitV9V10,SIGNAL("activated()"),self.traductionV9V10) + + + + def CARMEL3D(self): + if self.salome == 0 : return + self.menuMesh = self.menubar.addMenu("menuMesh") + self.menuMesh.setObjectName("Mesh") + self.actionChercheGrpMesh = QAction(self) + self.actionChercheGrpMesh.setText("Acquiert SubMeshes") + self.menuMesh.addAction(self.actionChercheGrpMesh) + self.connect(self.actionChercheGrpMesh,SIGNAL("activated()"),self.ChercheGrpMesh) + self.actionChercheGrpMaille = QAction(self) + self.actionChercheGrpMaille.setText("Acquiert Groupe Maille") + self.menuMesh.addAction(self.actionChercheGrpMaille) + self.connect(self.actionChercheGrpMaille,SIGNAL("activated()"),self.ChercheGrpMaille) + + def ChercheGrpMesh(self): + Msg,listeGroup=self.ChercheGrpMeshInSalome() + if Msg == None : + self.viewmanager.handleAjoutGroup(listeGroup) + else : + print "il faut gerer les erreurs" + def ChercheGrpMaille(self): + Msg,listeGroup=self.ChercheGrpMailleInSalome() + if Msg == None : + self.viewmanager.handleAjoutGroup(listeGroup) + else : + print "il faut gerer les erreurs" - def Map(self): - self.MAP() def MAP(self): + self.menuExecution = self.menubar.addMenu(QApplication.translate("Eficas", "Execution", None, QApplication.UnicodeUTF8)) + self.menuExecution.setObjectName("menuExecution") + self.menuJdC.setTitle(QApplication.translate("Eficas", "Rapports", None, QApplication.UnicodeUTF8)) + self.actionExecution = QAction(self) icon6 = QIcon(self.RepIcon+"/compute.png") self.actionExecution.setIcon(icon6) self.actionExecution.setObjectName("actionExecution") - self.menuJdC.addAction(self.actionExecution) + self.menuExecution.addAction(self.actionExecution) self.toolBar.addAction(self.actionExecution) - self.actionExecution.setText(QApplication.translate("Eficas", "Execution", None, QApplication.UnicodeUTF8)) + self.actionExecution.setText(QApplication.translate("Eficas", "Execution Python", None, QApplication.UnicodeUTF8)) self.connect(self.actionExecution,SIGNAL("activated()"),self.run) self.actionEnregistrer_Python = QAction(self) @@ -125,11 +163,17 @@ class Appli(Ui_Eficas,QMainWindow): icon7 = QIcon(self.RepIcon+"/application.gif") self.actionExecutionYACS.setIcon(icon7) self.actionExecutionYACS.setObjectName("actionExecutionYACS") - self.menuJdC.addAction(self.actionExecutionYACS) + self.menuExecution.addAction(self.actionExecutionYACS) self.toolBar.addAction(self.actionExecutionYACS) self.actionExecutionYACS.setText(QApplication.translate("Eficas", "Execution YACS", None, QApplication.UnicodeUTF8)) self.connect(self.actionExecutionYACS,SIGNAL("activated()"),self.runYACS) + def OPENTURNS_STUDY(self): + self.menuOptions.setDisabled(True) + + def OPENTURNS_WRAPPER(self): + self.menuOptions.setDisabled(True) + def ajoutIcones(self) : # Pour pallier les soucis de repertoire d icone icon = QIcon(self.RepIcon+"/New24.png") @@ -199,6 +243,12 @@ class Appli(Ui_Eficas,QMainWindow): def initPatrons(self) : # Mise à jour du menu des fichiers recemment ouverts from Editeur import listePatrons + if not(self.code in listePatrons.sous_menus.keys()) : + return + self.menuPatrons = QMenu(self.menubar) + self.menuPatrons.setObjectName("menuPatrons") + self.menubar.addAction(self.menuPatrons.menuAction()) + self.menuPatrons.setTitle(QApplication.translate("Eficas", "Patrons", None, QApplication.UnicodeUTF8)) self.listePatrons = listePatrons.listePatrons(self.code) idx = 0 for nomSsMenu in self.listePatrons.liste.keys(): @@ -267,6 +317,10 @@ class Appli(Ui_Eficas,QMainWindow): from gereTraduction import traduction traduction(self.CONFIGURATION.rep_ini,self.viewmanager,"V8V9") + def traductionV9V10(self): + from gereTraduction import traduction + traduction(self.CONFIGURATION.rep_ini,self.viewmanager,"V9V10") + def version(self) : from monVisu import DVisu titre = "version " @@ -279,19 +333,21 @@ class Appli(Ui_Eficas,QMainWindow): def aidePPal(self) : maD=self.INSTALLDIR+"/Aide" docsPath = QDir(maD).absolutePath() - monAssistant=QAssistantClient(QString(""), self) - arguments=QStringList() - arguments << "-profile" < 0 : self.myQtab.setCurrentIndex(0) - res=self.handleClose(0) + res=self.handleClose(0,texte) if res==2 : return res # l utilsateur a annule return res @@ -130,6 +145,8 @@ class MyTabview: editor.handleSupprimer() def newEditor(self,include=0): + if self.appliEficas.multi==True : + self.appliEficas.definitCode(None,None) maPage=self.getEditor(include=include) def newIncludeEditor(self): @@ -153,9 +170,6 @@ class MyTabview: def saveCurrentEditor(self): index=self.myQtab.currentIndex() if index < 0 : return - print self - print index - print self.dict_editors editor=self.dict_editors[index] if editor in self.doubles.keys() : QMessageBox.warning( @@ -168,6 +182,7 @@ class MyTabview: if ok : fileName=os.path.basename(unicode(newName)) self.myQtab.setTabText(index,fileName) + return ok def saveAsCurrentEditor(self): index=self.myQtab.currentIndex() @@ -180,7 +195,7 @@ class MyTabview: if editor in self.doubles.keys(): if oldName != newName : del self.doubles[editor] - + return ok def displayJDC(self,jdc,fn=None): """ @@ -259,7 +274,7 @@ class MyTabview: return 0 - def checkDirty(self, editor): + def checkDirty(self, editor,texte): """ Private method to check dirty status and open a message window. @@ -272,10 +287,10 @@ class MyTabview: None, self.appliEficas.trUtf8("Fichier Duplique"), self.appliEficas.trUtf8("Le fichier ne sera pas sauvegarde."), - self.appliEficas.trUtf8("&Quitter"), + self.appliEficas.trUtf8(texte), self.appliEficas.trUtf8("&Annuler")) if res == 0 : return 1 - return 0 + return 2 if editor.modified: fn = editor.getFileName() if fn is None: @@ -284,7 +299,7 @@ class MyTabview: self.appliEficas.trUtf8("Fichier Modifie"), self.appliEficas.trUtf8("Le fichier %1 n a pas ete sauvegarde.") .arg(fn), self.appliEficas.trUtf8("&Sauvegarder"), - self.appliEficas.trUtf8("&Quitter "), + self.appliEficas.trUtf8(texte), self.appliEficas.trUtf8("&Annuler") ) if res == 0: (ok, newName) = editor.saveFile() @@ -294,3 +309,8 @@ class MyTabview: self.myQtab.setTabText(index,fileName) return ok return res + + def handleAjoutGroup(self,listeGroup): + index=self.myQtab.currentIndex() + editor=self.dict_editors[index] + editor.handleAjoutGroup(listeGroup) diff --git a/InterfaceTK/appli.py b/InterfaceTK/appli.py index 9a220ba5..7293863e 100644 --- a/InterfaceTK/appli.py +++ b/InterfaceTK/appli.py @@ -57,7 +57,7 @@ import listePatronsTK REPTK=os.path.dirname(os.path.abspath(__file__)) sys.path[:0]=[REPTK] -VERSION="EFICAS v1.17" +VERSION="EFICAS v2.1" class APPLI: def __init__ (self,master,code=prefs.code,fichier=None,test=0,ihm="TK",salome=0) : @@ -141,8 +141,8 @@ class APPLI: if (self.test == 0): splash._splash.configure(text = "Chargement des paramètres utilisateur") import configuration_ASTER - self.CONFIGURATION = configuration_ASTER.make_config(self,prefsCode.REPINI) - self.CONFIGStyle = configuration_ASTER.make_config_style(self,prefsCode.REPINI) + self.CONFIGURATION = configuration_ASTER.make_config(self,prefsCode.repIni) + self.CONFIGStyle = configuration_ASTER.make_config_style(self,prefsCode.repIni) def cree_composants_graphiques(self): """ diff --git a/InterfaceTK/change_comm.py b/InterfaceTK/change_comm.py index de2a6511..c2f5d383 100755 --- a/InterfaceTK/change_comm.py +++ b/InterfaceTK/change_comm.py @@ -50,7 +50,7 @@ class DUP : self.test=2 import configuration_ASTER - self.CONFIGURATION=configuration_ASTER.make_config(self,prefsCode.REPINI) + self.CONFIGURATION=configuration_ASTER.make_config(self,prefsCode.repIni) self.load_readercata() self.cata=self.readercata.cata diff --git a/InterfaceTK/styles.py b/InterfaceTK/styles.py index 5b4a27fc..c1fccf34 100644 --- a/InterfaceTK/styles.py +++ b/InterfaceTK/styles.py @@ -6,7 +6,7 @@ prefsCode=__import__(name) import basestyle from basestyle import STYLE,style -inistylefile=os.path.join(prefsCode.REPINI,"style.py") +inistylefile=os.path.join(prefsCode.repIni,"style.py") if os.path.isfile(inistylefile): execfile(inistylefile) diff --git a/Minicode/editeur.ini b/Minicode/editeur.ini index f46497ee..a0df0797 100644 --- a/Minicode/editeur.ini +++ b/Minicode/editeur.ini @@ -2,7 +2,7 @@ import os import prefs -rep_cata = prefs.REPINI +rep_cata = prefs.repIni # Accès à la documentation path_doc = os.path.join(rep_cata,'Doc') diff --git a/Minicode/prefs.py b/Minicode/prefs.py index 7349c667..fb687b22 100644 --- a/Minicode/prefs.py +++ b/Minicode/prefs.py @@ -1,21 +1,20 @@ # -*- coding: utf-8 -*- import os,sys -# REPINI sert à localiser le fichier editeur.ini +# repIni sert à localiser le fichier editeur.ini # Obligatoire -REPINI=os.path.dirname(os.path.abspath(__file__)) +repIni=os.path.dirname(os.path.abspath(__file__)) # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') # CODE_PATH sert à localiser Noyau et Validation éventuellement # non contenus dans la distribution EFICAS # Par défaut on utilise les modules de INSTALLDIR # Peut valoir None (defaut) CODE_PATH = None -#CODE_PATH = os.path.join(REPINI,'../../Superv') -#CODE_PATH = "/home01/chris/projet_Eficas/Devel/SUPER6_3/Aster6_3/bibpyt" +#CODE_PATH = os.path.join(repIni,'../../Superv') # la variable code donne le nom du code a selectionner code="MINICODE" diff --git a/Noyau/N_ASSD.py b/Noyau/N_ASSD.py index 6a6ccf94..89266a11 100644 --- a/Noyau/N_ASSD.py +++ b/Noyau/N_ASSD.py @@ -1,31 +1,31 @@ -#@ MODIF N_ASSD Noyau DATE 14/12/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_ASSD Noyau DATE 25/10/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. -# -# +# 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 N_utils import import_object +from N_info import message, SUPERV + class ASSD(object): """ Classe de base pour definir des types de structures de donnees ASTER @@ -33,52 +33,75 @@ class ASSD(object): """ idracine="SD" - def __init__(self,etape=None,sd=None,reg='oui'): + def __init__(self, etape=None, sd=None, reg='oui'): """ reg est un paramètre qui vaut oui ou non : - si oui (défaut) : on enregistre la SD auprès du JDC - si non : on ne l'enregistre pas """ - self.etape=etape - self.sd=sd - self.nom=None + self.etape = etape + self.sd = sd + self.nom = None if etape: - self.parent=etape.parent + self.parent = etape.parent else: - self.parent=CONTEXT.get_current_step() + self.parent = CONTEXT.get_current_step() if self.parent : self.jdc = self.parent.get_jdc_root() else: self.jdc = None if not self.parent: - self.id=None + self.id = None elif reg == 'oui' : self.id = self.parent.reg_sd(self) else : self.id = self.parent.o_register(self) # permet de savoir si le concept a été calculé (1) ou non (0) self.executed = 0 - + # permet de savoir si le catalogue de SD a déjà été supprimé (1) ou non (0) + self.sd_deleted = 0 + # attributs pour le Catalogue de Structure de Données Jeveux + # "self.cata_sdj" est un attribut de classe + #XXX si on nomme ces attributs _sdj/_class_sdj, pb en poursuite : + #XXX dans rebuild_sd, self n'a pas ces attributs qui ne sont donc + #XXX pas recopiés... !? + self.ptr_class_sdj = None + self.ptr_sdj = None + + def _get_sdj(self): + """Retourne le catalogue de SD associé au concept.""" + if self.ptr_sdj is None: + cata_sdj = getattr(self, 'cata_sdj', None) + assert cata_sdj, "L'attribut 'cata_sdj' doit être défini pour la classe %s" \ + % self.__class__.__name__ + assert self.nom, "L'attribut 'nom' n'a pas été renseigné !" + if self.ptr_class_sdj is None: + self.ptr_class_sdj = import_object(cata_sdj) + self.ptr_sdj = self.ptr_class_sdj(nomj=self.nom) + return self.ptr_sdj + + def _del_sdj(self): + """Suppression du catalogue de SD.""" + if self.ptr_sdj is not None: + self.ptr_sdj.supprime(True) + self.ptr_sdj = None + self.ptr_class_sdj = None + + sdj = property(_get_sdj, None, _del_sdj) + + def __getitem__(self,key): return self.etape[key] - + def set_name(self, nom): """Positionne le nom de self (et appelle sd_init) """ self.nom = nom - # initialise la partie "sd" (pas pour entier, reel, formule) - sup = super(ASSD, self) - if hasattr(sup, 'nomj'): # == AsBase - sup.__init__(nomj=nom) - self.reparent_sd() - - def reparent_sd(self): - """Repositionne le parent des attributs de la SD associée. - """ - sup = super(ASSD, self) - if hasattr(sup, 'nomj'): # == AsBase - sup.reparent(None, None) + + def change_type(self, new_type): + """Type connu a posteriori (type CO).""" + self.__class__ = new_type def get_name(self): """ @@ -86,22 +109,31 @@ class ASSD(object): """ if not self.nom : try: - self.nom=self.parent.get_name(self) or self.id + self.nom = self.parent.get_name(self) or self.id except: - self.nom="" + self.nom = "" if self.nom.find('sansnom') != -1 or self.nom == '': self.nom = self.id return self.nom def supprime(self): - """ - Cassage des boucles de références pour destruction du JDC """ + Cassage des boucles de références pour destruction du JDC + """ + self.supprime_sd() self.etape = None self.sd = None self.jdc = None self.parent = None + def supprime_sd(self): + """Supprime la partie du catalogue de SD.""" + # 'del self.sdj' appellerait la méthode '_get_sdj()'... + self._del_sdj() + + def __del__(self): + message.debug(SUPERV, "__del__ ASSD %s <%s>", getattr(self, 'nom', 'unknown'), self) + def accept(self,visitor): """ Cette methode permet de parcourir l'arborescence des objets @@ -113,17 +145,19 @@ class ASSD(object): """ Cette methode permet de pickler les objets ASSD Ceci est possible car on coupe les liens avec les objets - parent, etape et jdc qui conduiraient à pickler de nombreux + parent, etape et jdc qui conduiraient à pickler de nombreux objets inutiles ou non picklables. + En sortie, l'objet n'est plus tout à fait le même ! """ - d=self.__dict__.copy() - for key in ('parent','etape','jdc'): - if d.has_key(key):del d[key] + d = self.__dict__.copy() + for key in ('parent', 'etape', 'jdc'): + if d.has_key(key): + del d[key] for key in d.keys(): - if key[0]=='_':del d[key] + if key[0] == '_': + del d[key] return d - def accessible(self): """Dit si on peut acceder aux "valeurs" (jeveux) de l'ASSD. """ @@ -134,8 +168,7 @@ class ASSD(object): def par_lot(self): - """Conserver uniquement pour la compatibilite avec le catalogue v9 dans eficas. - """ + """Conserver uniquement pour la compatibilite avec le catalogue v9 dans eficas.""" #XXX eficas if not hasattr(self, 'jdc') or self.jdc == None: val = None @@ -143,8 +176,22 @@ class ASSD(object): val = self.jdc.par_lot return val == 'OUI' + def rebuild_sd(self): + """Conserver uniquement pour la compatibilite avec le catalogue v10 dans eficas.""" + class assd(ASSD): - def __convert__(cls,valeur): - return valeur - __convert__=classmethod(__convert__) + def __convert__(cls, valeur): + # On accepte les vraies ASSD et les objets 'entier' et 'reel' + # qui font tout pour se faire passer pour de vrais entiers/réels. + if isinstance(valeur, ASSD) or type(valeur) in (int, float): + return valeur + raise ValueError("On attend un objet concept.") + __convert__ = classmethod(__convert__) + + +class not_checked(ASSD): + def __convert__(cls, valeur): + return valeur + __convert__ = classmethod(__convert__) + diff --git a/Noyau/N_BLOC.py b/Noyau/N_BLOC.py index 65617612..93340df8 100644 --- a/Noyau/N_BLOC.py +++ b/Noyau/N_BLOC.py @@ -1,30 +1,30 @@ -#@ MODIF N_BLOC Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_BLOC Noyau DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -""" +""" Ce module contient la classe de definition BLOC - qui permet de spécifier les caractéristiques des blocs de mots clés + qui permet de spécifier les caractéristiques des blocs de mots clés """ import types,string,sys @@ -33,6 +33,7 @@ import traceback import N_ENTITE import N_MCBLOC from N_Exception import AsException +from N_types import force_list class BLOC(N_ENTITE.ENTITE): """ @@ -40,8 +41,8 @@ class BLOC(N_ENTITE.ENTITE): Cette classe a deux attributs de classe : - - class_instance qui indique la classe qui devra etre utilisée - pour créer l'objet qui servira à controler la conformité d'un + - class_instance qui indique la classe qui devra etre utilisée + pour créer l'objet qui servira à controler la conformité d'un bloc de mots-clés avec sa définition - label qui indique la nature de l'objet de définition (ici, BLOC) @@ -51,7 +52,7 @@ class BLOC(N_ENTITE.ENTITE): def __init__(self,fr="",ang="",docu="",regles=(),statut='f',condition=None, **args): - + """ Un bloc est caractérisé par les attributs suivants : @@ -60,9 +61,9 @@ class BLOC(N_ENTITE.ENTITE): - regles : liste d'objets de type REGLE pour vérifier la cohérence des sous-objets - statut : obligatoire ('o') ou facultatif ('f') - condition : chaine de caractère evaluable par l'interpreteur Python - - entites : dictionnaire contenant les sous-objets de self (mots-clés). - La clé du dictionnaire est le nom du mot-clé et la valeur l'objet de - définition correspondant. Cet attribut est initialisé avec l'argument + - entites : dictionnaire contenant les sous-objets de self (mots-clés). + La clé du dictionnaire est le nom du mot-clé et la valeur l'objet de + définition correspondant. Cet attribut est initialisé avec l'argument args de la méthode __init__ """ @@ -109,24 +110,25 @@ class BLOC(N_ENTITE.ENTITE): def verif_presence(self,dict,globs): """ Cette méthode vérifie si le dictionnaire passé en argument (dict) - est susceptible de contenir un bloc de mots-clés conforme à la + est susceptible de contenir un bloc de mots-clés conforme à la définition qu'il porte. Si la réponse est oui, la méthode retourne 1 Si la réponse est non, la méthode retourne 0 - + Le dictionnaire dict a pour clés les noms des mots-clés et pour valeurs les valeurs des mots-clés """ - # On recopie le dictionnaire pour protéger l'original - dico=dict.copy() + # On recopie le dictionnaire pour protéger l'original + dico = bloc_utils() + dico.update(dict) if self.condition != None : try: test = eval(self.condition,globs,dico) return test except NameError: - # erreur 'normale' : un mot-clé n'est pas présent et on veut l'évaluer dans la condition + # erreur 'normale' : un mot-cle n'est pas present et on veut l'evaluer dans la condition if CONTEXT.debug: l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) print "WARNING : Erreur a l'evaluation de la condition "+string.join(l) @@ -143,3 +145,21 @@ class BLOC(N_ENTITE.ENTITE): else : return 0 + +def bloc_utils(): + """Définit un ensemble de fonctions utilisables pour écrire les + conditions de BLOC.""" + def au_moins_un(mcsimp, valeurs): + """Valide si la (ou une) valeur de 'mcsimp' est au moins une fois dans + la ou les 'valeurs'. Similaire à la règle AU_MOINS_UN, 'mcsimp' peut + contenir plusieurs valeurs.""" + test = set(force_list(mcsimp)) + valeurs = set(force_list(valeurs)) + return not test.isdisjoint(valeurs) + + def aucun(mcsimp, valeurs): + """Valide si aucune des valeurs de 'mcsimp' n'est dans 'valeurs'.""" + return not au_moins_un(mcsimp, valeurs) + + return locals() + diff --git a/Noyau/N_ENTITE.py b/Noyau/N_ENTITE.py index 5db7f216..eafce7ad 100644 --- a/Noyau/N_ENTITE.py +++ b/Noyau/N_ENTITE.py @@ -1,32 +1,33 @@ -#@ MODIF N_ENTITE Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_ENTITE Noyau DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -""" +""" Ce module contient la classe ENTITE qui est la classe de base de toutes les classes de definition d'EFICAS. """ +import re import N_CR import N_VALIDATOR @@ -41,14 +42,14 @@ class ENTITE: def __init__(self,validators=None): """ - Initialise les deux attributs regles et entites d'une classe dérivée - à : pas de règles et pas de sous-entités. - - L'attribut regles doit contenir la liste des regles qui s'appliquent - sur ses sous-entités + Initialise les deux attributs regles et entites d'une classe derivee + : pas de regles et pas de sous-entites. + + L'attribut regles doit contenir la liste des regles qui s'appliquent + sur ses sous-entites - L'attribut entités doit contenir le dictionnaires des sous-entités - (clé = nom, valeur=objet) + L'attribut entites doit contenir le dictionnaires des sous-entites + (cle = nom, valeur=objet) """ self.regles=() self.entites={} @@ -60,9 +61,9 @@ class ENTITE: def affecter_parente(self): """ Cette methode a pour fonction de donner un nom et un pere aux - sous entités qui n'ont aucun moyen pour atteindre leur parent + sous entites qui n'ont aucun moyen pour atteindre leur parent directement - Il s'agit principalement des mots cles + Il s'agit principalement des mots cles """ for k,v in self.entites.items(): v.pere = self @@ -70,39 +71,39 @@ class ENTITE: def verif_cata(self): """ - Cette methode sert à valider les attributs de l'objet de définition + Cette methode sert a valider les attributs de l'objet de definition """ - raise "La méthode verif_cata de la classe %s doit etre implémentée" % self.__class__.__name__ + raise "La methode verif_cata de la classe %s doit etre implementee" % self.__class__.__name__ def __call__(self): """ - Cette methode doit retourner un objet dérivé de la classe OBJECT + Cette methode doit retourner un objet derive de la classe OBJECT """ - raise "La méthode __call__ de la classe %s doit etre implémentée" % self.__class__.__name__ + raise "La methode __call__ de la classe %s doit etre implementee" % self.__class__.__name__ def report(self): """ - Cette méthode construit pour tous les objets dérivés de ENTITE un - rapport de validation de la définition portée par cet objet + Cette methode construit pour tous les objets derives de ENTITE un + rapport de validation de la definition portee par cet objet """ self.cr = self.CR() self.verif_cata() for k,v in self.entites.items() : try : cr = v.report() - cr.debut = "Début "+v.__class__.__name__+ ' : ' + k + cr.debut = "Debut "+v.__class__.__name__+ ' : ' + k cr.fin = "Fin "+v.__class__.__name__+ ' : ' + k self.cr.add(cr) except: self.cr.fatal("Impossible d'obtenir le rapport de %s %s" %(k,`v`)) print "Impossible d'obtenir le rapport de %s %s" %(k,`v`) - print "père =",self + print "pere =",self return self.cr def verif_cata_regles(self): """ - Cette méthode vérifie pour tous les objets dérivés de ENTITE que - les objets REGLES associés ne portent que sur des sous-entités + Cette methode verifie pour tous les objets derives de ENTITE que + les objets REGLES associes ne portent que sur des sous-entites existantes """ for regle in self.regles : @@ -112,6 +113,35 @@ class ENTITE: l.append(mc) if l != [] : txt = str(regle) - self.cr.fatal("Argument(s) non permis : %s pour la règle : %s" %(`l`,txt)) + self.cr.fatal("Argument(s) non permis : %s pour la regle : %s" %(`l`,txt)) + def check_definition(self, parent): + """Verifie la definition d'un objet composite (commande, fact, bloc).""" + args = self.entites.copy() + mcs = set() + for nom, val in args.items(): + if val.label == 'SIMP': + mcs.add(nom) + #XXX + #if val.max != 1 and val.type == 'TXM': + #print "#CMD", parent, nom + elif val.label == 'FACT': + val.check_definition(parent) + #PNPNPN surcharge + # CALC_SPEC ! + #assert self.label != 'FACT', \ + # 'Commande %s : Mot-clef facteur present sous un mot-clef facteur : interdit !' \ + # % parent + else: + continue + del args[nom] + # seuls les blocs peuvent entrer en conflit avec les mcs du plus haut niveau + for nom, val in args.items(): + if val.label == 'BLOC': + mcbloc = val.check_definition(parent) + #XXX + #print "#BLOC", parent, re.sub('\s+', ' ', val.condition) + #assert mcs.isdisjoint(mcbloc), "Commande %s : Mot(s)-clef(s) vu(s) plusieurs fois : %s" \ + # % (parent, tuple(mcs.intersection(mcbloc))) + return mcs diff --git a/Noyau/N_ETAPE.py b/Noyau/N_ETAPE.py index baf39a40..5031451b 100644 --- a/Noyau/N_ETAPE.py +++ b/Noyau/N_ETAPE.py @@ -1,29 +1,29 @@ -#@ MODIF N_ETAPE Noyau DATE 16/11/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_ETAPE Noyau DATE 12/10/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -""" - Ce module contient la classe ETAPE qui sert à vérifier et à exécuter +""" + Ce module contient la classe ETAPE qui sert a verifier et a executer une commande """ @@ -39,29 +39,30 @@ from N_Exception import AsException import N_utils from N_utils import AsType from N_ASSD import ASSD +from N_info import message, SUPERV class ETAPE(N_MCCOMPO.MCCOMPO): """ - Cette classe hérite de MCCOMPO car ETAPE est un OBJECT composite + Cette classe herite de MCCOMPO car ETAPE est un OBJECT composite """ nature = "OPERATEUR" - # L'attribut de classe codex est utilisé pour rattacher le module de calcul éventuel (voir Build) - # On le met à None pour indiquer qu'il n'y a pas de module de calcul rattaché + # L'attribut de classe codex est utilise pour rattacher le module de calcul eventuel (voir Build) + # On le met a None pour indiquer qu'il n'y a pas de module de calcul rattache codex=None def __init__(self,oper=None,reuse=None,args={}): """ Attributs : - - definition : objet portant les attributs de définition d'une étape de type opérateur. Il - est initialisé par l'argument oper. + - definition : objet portant les attributs de definition d'une etape de type operateur. Il + est initialise par l'argument oper. - - reuse : indique le concept d'entrée réutilisé. Il se trouvera donc en sortie - si les conditions d'exécution de l'opérateur l'autorise + - reuse : indique le concept d'entree reutilise. Il se trouvera donc en sortie + si les conditions d'execution de l'operateur l'autorise - - valeur : arguments d'entrée de type mot-clé=valeur. Initialisé avec l'argument args. + - valeur : arguments d'entree de type mot-cle=valeur. Initialise avec l'argument args. """ self.definition=oper @@ -80,8 +81,8 @@ class ETAPE(N_MCCOMPO.MCCOMPO): def make_register(self): """ - Initialise les attributs jdc, id, niveau et réalise les - enregistrements nécessaires + Initialise les attributs jdc, id, niveau et realise les + enregistrements necessaires """ if self.parent : self.jdc = self.parent.get_jdc_root() @@ -94,8 +95,8 @@ class ETAPE(N_MCCOMPO.MCCOMPO): def nettoiargs(self): """ - Cette methode a pour fonction de retirer tous les arguments egaux à None - de la liste des arguments. Ils sont supposés non présents et donc retirés. + Cette methode a pour fonction de retirer tous les arguments egaux a None + de la liste des arguments. Ils sont supposes non presents et donc retires. """ for k in self.valeur.keys(): if self.valeur[k] == None:del self.valeur[k] @@ -109,28 +110,29 @@ class ETAPE(N_MCCOMPO.MCCOMPO): def Build_sd(self,nom): """ - Construit le concept produit de l'opérateur. Deux cas - peuvent se présenter : - - - le parent n'est pas défini. Dans ce cas, l'étape prend en charge la création + Construit le concept produit de l'operateur. Deux cas + peuvent se presenter : + + - le parent n'est pas defini. Dans ce cas, l'etape prend en charge la creation et le nommage du concept. - - le parent est défini. Dans ce cas, l'étape demande au parent la création et + - le parent est defini. Dans ce cas, l'etape demande au parent la creation et le nommage du concept. """ + message.debug(SUPERV, "Build_sd %s", self.nom) self.sdnom=nom try: if self.parent: sd= self.parent.create_sdprod(self,nom) - if type(self.definition.op_init) == types.FunctionType: + if type(self.definition.op_init) == types.FunctionType: apply(self.definition.op_init,(self,self.parent.g_context)) else: sd=self.get_sd_prod() - # On n'utilise pas self.definition.op_init car self.parent + # On n'utilise pas self.definition.op_init car self.parent # n'existe pas if sd != None and self.reuse == None: - # On ne nomme le concept que dans le cas de non reutilisation + # On ne nomme le concept que dans le cas de non reutilisation # d un concept sd.set_name(nom) except AsException,e: @@ -157,15 +159,15 @@ class ETAPE(N_MCCOMPO.MCCOMPO): def get_sd_prod(self): """ - Retourne le concept résultat de l'étape + Retourne le concept resultat de l'etape Deux cas : - cas 1 : sd_prod de oper n'est pas une fonction il s'agit d'une sous classe de ASSD - on construit le sd à partir de cette classe + on construit le sd a partir de cette classe et on le retourne - cas 2 : il s'agit d'une fonction - on l'évalue avec les mots-clés de l'étape (mc_liste) - on construit le sd à partir de la classe obtenue + on l'evalue avec les mots-cles de l'etape (mc_liste) + on construit le sd a partir de la classe obtenue et on le retourne """ if type(self.definition.sd_prod) == types.FunctionType: @@ -183,23 +185,23 @@ class ETAPE(N_MCCOMPO.MCCOMPO): # sys.exc_info()[0],sys.exc_info()[1],) else: sd_prod=self.definition.sd_prod - # on teste maintenant si la SD est réutilisée ou s'il faut la créer + # on teste maintenant si la SD est reutilisee ou s'il faut la creer if self.definition.reentrant != 'n' and self.reuse: # Le concept produit est specifie reutilise (reuse=xxx). C'est une erreur mais non fatale. # Elle sera traitee ulterieurement. self.sd=self.reuse else: self.sd= sd_prod(etape=self) - # Si l'operateur est obligatoirement reentrant et reuse n'a pas ete specifie, c'est une erreur. + # Si l'operateur est obligatoirement reentrant et reuse n'a pas ete specifie, c'est une erreur. # On ne fait rien ici. L'erreur sera traiter par la suite. - # précaution + # precaution if self.sd is not None and not isinstance(self.sd, ASSD): raise AsException(""" -Impossible de typer le résultat ! +Impossible de typer le resultat ! Causes possibles : - Utilisateur : Soit la valeur fournie derrière "reuse" est incorrecte, - soit il y a une "," à la fin d'une commande précédente. - Développeur : La fonction "sd_prod" retourne un type invalide.""") + Utilisateur : Soit la valeur fournie derriere "reuse" est incorrecte, + soit il y a une "," a la fin d'une commande precedente. + Developpeur : La fonction "sd_prod" retourne un type invalide.""") return self.sd def get_type_produit(self): @@ -210,14 +212,14 @@ Causes possibles : def get_type_produit_brut(self): """ - Retourne le type du concept résultat de l'étape + Retourne le type du concept resultat de l'etape Deux cas : - cas 1 : sd_prod de oper n'est pas une fonction il s'agit d'une sous classe de ASSD on retourne le nom de la classe - cas 2 : il s'agit d'une fonction - on l'évalue avec les mots-clés de l'étape (mc_liste) - et on retourne son résultat + on l'evalue avec les mots-cles de l'etape (mc_liste) + et on retourne son resultat """ if type(self.definition.sd_prod) == types.FunctionType: d=self.cree_dict_valeurs(self.mc_liste) @@ -228,26 +230,30 @@ Causes possibles : def get_etape(self): """ - Retourne l'étape à laquelle appartient self - Un objet de la catégorie etape doit retourner self pour indiquer que - l'étape a été trouvée + Retourne l'etape a laquelle appartient self + Un objet de la categorie etape doit retourner self pour indiquer que + l'etape a ete trouvee XXX fait double emploi avec self.etape ???? """ return self def supprime(self): """ - Méthode qui supprime toutes les références arrières afin que l'objet puisse - etre correctement détruit par le garbage collector + Methode qui supprime toutes les references arrieres afin que l'objet puisse + etre correctement detruit par le garbage collector """ N_MCCOMPO.MCCOMPO.supprime(self) - self.jdc=None - self.appel=None - if self.sd : self.sd.supprime() + self.jdc = None + self.appel = None + for name in dir(self): + if name.startswith( '_cache_' ): + setattr(self, name, None) + if self.sd: + self.sd.supprime() def isactif(self): - """ - Indique si l'étape est active (1) ou inactive (0) + """ + Indique si l'etape est active (1) ou inactive (0) """ return self.actif @@ -256,27 +262,30 @@ Causes possibles : Methode utilisee pour que l etape self se declare etape courante. Utilise par les macros """ + message.debug(SUPERV, "call etape.set_current_step", stack_id=-1) cs= CONTEXT.get_current_step() if self.parent != cs : - raise "L'étape courante %s devrait etre le parent de self : %s" % (cs,self) + raise AsException("L'etape courante", cs.nom, cs, + "devrait etre le parent de", self.nom, self) else : CONTEXT.unset_current_step() CONTEXT.set_current_step(self) def reset_current_step(self): - """ - Methode utilisee par l'etape self qui remet son etape parent comme - etape courante + """ + Methode utilisee par l'etape self qui remet son etape parent comme + etape courante """ cs= CONTEXT.get_current_step() if self != cs : - raise "L'étape courante %s devrait etre self : %s" % (cs,self) + raise AsException("L'etape courante", cs.nom, cs, + "devrait etre", self.nom, self) else : CONTEXT.unset_current_step() CONTEXT.set_current_step(self.parent) def issubstep(self,etape): - """ + """ Cette methode retourne un entier indiquant si etape est une sous etape de self ou non 1 = oui @@ -286,7 +295,7 @@ Causes possibles : return 0 def get_file(self,unite=None,fic_origine=''): - """ + """ Retourne le nom du fichier associe a l unite logique unite (entier) ainsi que le source contenu dans le fichier """ @@ -296,9 +305,9 @@ Causes possibles : if unite != None: if os.path.exists("fort."+str(unite)): file= "fort."+str(unite) - if file == None : + if file == None : raise AsException("Impossible de trouver le fichier correspondant a l unite %s" % unite) - if not os.path.exists(file): + if not os.path.exists(file): raise AsException("%s n'est pas un fichier existant" % unite) fproc=open(file,'r') text=string.replace(fproc.read(),'\r\n','\n') @@ -325,7 +334,7 @@ Causes possibles : def copy(self): """ Méthode qui retourne une copie de self non enregistrée auprès du JDC - et sans sd + et sans sd """ etape = copy(self) etape.sd = None @@ -341,13 +350,13 @@ Causes possibles : return etape def copy_reuse(self,old_etape): - """ Méthode qui copie le reuse d'une autre étape. + """ Méthode qui copie le reuse d'une autre étape. """ if hasattr(old_etape,"reuse") : self.reuse = old_etape.reuse def copy_sdnom(self,old_etape): - """ Méthode qui copie le sdnom d'une autre étape. + """ Méthode qui copie le sdnom d'une autre étape. """ if hasattr(old_etape,"sdnom") : self.sdnom = old_etape.sdnom @@ -410,7 +419,7 @@ Causes possibles : def is_include(self): - """Permet savoir si on a affaire à une commande de type INCLUDE/INCLUDE_MATERIAU + """Permet savoir si on a affaire à la commande INCLUDE car le comportement de ces macros est particulier. """ return self.nom.startswith('INCLUDE') @@ -427,6 +436,4 @@ Causes possibles : """ # pourrait être appelée par une commande fortran faisant appel à des fonctions python # on passe la main au parent - return self.parent.get_concept() - - + return self.parent.get_concept(nomsd) diff --git a/Noyau/N_FACT.py b/Noyau/N_FACT.py index a7cb8708..ef431a75 100644 --- a/Noyau/N_FACT.py +++ b/Noyau/N_FACT.py @@ -1,9 +1,9 @@ -#@ MODIF N_FACT Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_FACT Noyau DATE 22/03/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -32,6 +32,7 @@ import N_ENTITE import N_MCFACT import N_MCLIST from N__F import _F +from N_types import is_enum import N_OBJECT @@ -105,7 +106,7 @@ class FACT(N_ENTITE.ENTITE): - Si defaut != None, on utilise cette valeur pour calculer la valeur par defaut du mot cle facteur """ - if val == None: + if val is None: if self.defaut == None: val={} elif type(self.defaut) == types.TupleType: @@ -117,6 +118,11 @@ class FACT(N_ENTITE.ENTITE): # On ne devrait jamais passer par la print "On ne devrait jamais passer par la" return None + elif is_enum(val) and len(val) == 0 and self.statut == 'o': + # On est dans le cas où le mcfact est présent mais est une liste/tuple + # vide. Il est obligatoire donc on l'initialise. Les règles, mots-clés + # obligatoires diront si un mcfact vide est accepté. + val = {} # On cree toujours une liste de mcfact l=self.list_instance() diff --git a/Noyau/N_FONCTION.py b/Noyau/N_FONCTION.py index 83d00e3b..971af636 100644 --- a/Noyau/N_FONCTION.py +++ b/Noyau/N_FONCTION.py @@ -1,121 +1,110 @@ -#@ MODIF N_FONCTION Noyau DATE 10/11/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_FONCTION Noyau DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -# attention ! cet import permet d'avoir, dans les formules, le comportement +# Attention : cet import permet d'avoir, en Python, le comportement # de la division réelle pour les entiers, et non la division entière -# 1/2=0.5 (et non 0) +# 1/2=0.5 (et non 0). Comportement par défaut dans Python 3.0. from __future__ import division from N_ASSD import ASSD -from asojb import AsBase +from N_info import message, SUPERV -class FONCTION(ASSD):pass +class FONCTION(ASSD): + pass -class formule(ASSD,AsBase): - def __init__(self,**args): - ASSD.__init__(self,**args) - self.nompar =None - self.expression=None +class formule(ASSD): + def __init__(self, *args, **kwargs): + ASSD.__init__(self, *args, **kwargs) + self.nompar = None + self.expression = None - def __call__(self,*val): - context = {} - # cas de INCLUDE (ou POURSUITE dans Eficas) - context.update(getattr(self.parent, 'contexte_fichier_init', {})) - # récupération des constantes locales en cas de MACRO - context.update(getattr(self.parent, 'macro_const_context', {})) - i=0 - for param in self.nompar : - context[param]=val[i] - i=i+1 - try : - res=eval(self.expression,self.jdc.const_context, context) - except : - print 75*'!' - print '! ' + '%-72s' % ('Erreur evaluation formule '+self.nom) + '!' - print 75*'!' - raise - return res + def __call__(self, *val): + context = {} + # cas de INCLUDE (ou POURSUITE dans Eficas) + context.update(getattr(self.parent, 'contexte_fichier_init', {})) + # récupération des constantes locales en cas de MACRO + context.update(getattr(self.parent, 'macro_const_context', {})) + for param, value in zip(self.nompar, val): + context[param] = value + try: + res = eval(self.expression, self.jdc.const_context, context) + except Exception, exc: + message.error(SUPERV, "ERREUR LORS DE L'ÉVALUATION DE LA FORMULE '%s' " \ + ":\n>> %s",self.nom, str(exc)) + raise + return res - def setFormule(self,nom_para,texte): - """ - Cette methode sert a initialiser les attributs - nompar, expression et code qui sont utilisés - dans l'évaluation de la formule - """ - self.nompar = nom_para - self.expression = texte - try : - self.code=compile(texte,texte,'eval') - except SyntaxError : - print 75*'!' - print '! ' + '%-72s' % ('Erreur evaluation formule '+self.nom) + '!' - print 75*'!' - raise + def setFormule(self, nom_para, texte): + """Cette methode sert a initialiser les attributs + nompar, expression et code qui sont utilisés + dans l'évaluation de la formule.""" + self.nompar = nom_para + self.expression = texte + try : + self.code = compile(texte, texte, 'eval') + except SyntaxError, exc: + message.error(SUPERV, "ERREUR LORS DE LA CREATION DE LA FORMULE '%s' " \ + ":\n>> %s", self.nom, str(exc)) + raise - def __setstate__(self,state): - """ - Cette methode sert a restaurer l'attribut code - lors d'un unpickle - """ - self.__dict__.update(state) # update attributes - self.setFormule(self.nompar,self.expression) # restore code attribute - - def __getstate__(self): - """ - Pour les formules, il faut enlever l'attribut code - qui n'est pas picklable - """ - d=ASSD.__getstate__(self) - del d['code'] - return d + def __setstate__(self,state): + """Cette methode sert a restaurer l'attribut code lors d'un unpickle.""" + self.__dict__.update(state) # update attributes + self.setFormule(self.nompar, self.expression) # restore code attribute - def Parametres(self): - """Equivalent de fonction.Parametres pour pouvoir utiliser des formules - à la place de fonctions dans certaines macro-commandes. - """ - from SD.sd_fonction import sd_formule - from Utilitai.Utmess import UTMESS - if self.accessible(): - TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT', 'I':'INTERPRE' } - sd = sd_formule(self.get_name()) - prol = sd.PROL.get() - nova = sd.NOVA.get() - if prol is None or nova is None: - UTMESS('F', 'SDVERI_2', valk=[objev]) - dico={ - 'INTERPOL' : ['LIN','LIN'], - 'NOM_PARA' : [s.strip() for s in nova], - 'NOM_RESU' : prol[3][0:16].strip(), - 'PROL_DROITE' : TypeProl['E'], - 'PROL_GAUCHE' : TypeProl['E'], - } - else: - raise Accas.AsException("Erreur dans fonction.Parametres en PAR_LOT='OUI'") - return dico + def __getstate__(self): + """Pour les formules, il faut enlever l'attribut code qui n'est + pas picklable.""" + d = ASSD.__getstate__(self) + del d['code'] + return d + def Parametres(self): + """Equivalent de fonction.Parametres pour pouvoir utiliser des formules + à la place de fonctions dans certaines macro-commandes. + """ + from SD.sd_fonction import sd_formule + from Utilitai.Utmess import UTMESS + if self.accessible(): + TypeProl={ 'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT', 'I':'INTERPRE' } + sd = sd_formule(self.get_name()) + prol = sd.PROL.get() + nova = sd.NOVA.get() + if prol is None or nova is None: + UTMESS('F', 'SDVERI_2', valk=[objev]) + dico={ + 'INTERPOL' : ['LIN','LIN'], + 'NOM_PARA' : [s.strip() for s in nova], + 'NOM_RESU' : prol[3][0:16].strip(), + 'PROL_DROITE' : TypeProl['E'], + 'PROL_GAUCHE' : TypeProl['E'], + } + else: + raise Accas.AsException("Erreur dans fonction.Parametres en PAR_LOT='OUI'") + return dico -class formule_c(formule): - pass +class formule_c(formule): + pass diff --git a/Noyau/N_JDC.py b/Noyau/N_JDC.py index 94c46239..e5b967e2 100644 --- a/Noyau/N_JDC.py +++ b/Noyau/N_JDC.py @@ -1,24 +1,24 @@ -#@ MODIF N_JDC Noyau DATE 16/11/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_JDC Noyau DATE 25/10/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== @@ -35,8 +35,7 @@ import N_OBJECT import N_CR from N_Exception import AsException from N_ASSD import ASSD - - +from N_info import message, SUPERV MemoryErrorMsg = """MemoryError : @@ -87,19 +86,20 @@ NONE = None self.procedure=procedure self.definition = definition self.cata=cata - if type(self.cata) != types.TupleType and cata != None: + if type(self.cata) != types.TupleType and cata != None: self.cata=(self.cata,) + self._build_reserved_kw_list() self.cata_ordonne_dico=cata_ord_dico self.nom = nom self.appli=appli self.parent=parent self.context_ini=context_ini - # On conserve les arguments supplémentaires. Il est possible de passer - # des informations globales au JDC par ce moyen. Il pourrait etre plus - # sur de mettre en place le mecanisme des mots-cles pour verifier la + # On conserve les arguments supplémentaires. Il est possible de passer + # des informations globales au JDC par ce moyen. Il pourrait etre plus + # sur de mettre en place le mecanisme des mots-cles pour verifier la # validité des valeurs passées. # Ceci reste à faire - # On initialise avec les parametres de la definition puis on + # On initialise avec les parametres de la definition puis on # update avec ceux du JDC self.args=self.definition.args self.args.update(args) @@ -115,7 +115,7 @@ NONE = None # # Creation de l objet compte rendu pour collecte des erreurs # - self.cr = self.CR(debut = "CR phase d'initialisation", + self.cr = self.CR(debut = "CR phase d'initialisation", fin = "fin CR phase d'initialisation") # on met le jdc lui-meme dans le context global pour l'avoir sous # l'etiquette "jdc" dans le fichier de commandes @@ -136,11 +136,11 @@ NONE = None def compile(self): """ Cette methode compile la chaine procedure - Si des erreurs se produisent, elles sont consignées dans le + Si des erreurs se produisent, elles sont consignées dans le compte-rendu self.cr """ try: - if self.appli != None : + if self.appli != None : self.appli.affiche_infos('Compilation du fichier de commandes en cours ...') self.proc_compile=compile(self.procedure,self.nom,'exec') except SyntaxError, e: @@ -194,13 +194,14 @@ Causes possibles : for sdnom,sd in self.context_ini.items(): if isinstance(sd,ASSD):self.sds_dict[sdnom]=sd - if self.appli != None : - self.appli.affiche_infos('Interpretation du fichier de commandes en cours ...') + if self.appli != None : + self.appli.affiche_infos('Interprétation du fichier de commandes en cours ...') # On sauve le contexte pour garder la memoire des constantes - # En mode edition (EFICAS) ou lors des verifications le contexte + # En mode edition (EFICAS) ou lors des verifications le contexte # est recalculé # mais les constantes sont perdues self.const_context=self.g_context + message.debug(SUPERV, "pass") exec self.proc_compile in self.g_context CONTEXT.unset_current_step() @@ -230,10 +231,10 @@ Causes possibles : etype, value, tb = sys.exc_info() l= traceback.extract_tb(tb) s= traceback.format_exception_only("Erreur de nom",e)[0][:-1] - message = "erreur de syntaxe, %s ligne %d" % (s,l[-1][1]) + msg = "erreur de syntaxe, %s ligne %d" % (s,l[-1][1]) if CONTEXT.debug : traceback.print_exc() - self.cr.exception(message) + self.cr.exception(msg) CONTEXT.unset_current_step() except self.UserError,exc_val: @@ -241,10 +242,10 @@ Causes possibles : CONTEXT.unset_current_step() self.affiche_fin_exec() self.traiter_fin_exec('commande') - + except : # erreur inattendue - # sys_exc_typ,sys_exc_value,sys_exc_frame = sys_exc.info() + # sys_exc_typ,sys_exc_value,sys_exc_frame = sys_exc.info() # (tuple de 3 éléments) if CONTEXT.debug : traceback.print_exc() @@ -271,14 +272,14 @@ Causes possibles : Par defaut il n'y a pas de traitement. Elle doit etre surchargee pour en introduire un """ - print "FIN D'EXECUTION",mode,etape + message.info(SUPERV, "FIN D'EXECUTION %s %s", mode, etape) def traiter_user_exception(self,exc_val): - """Cette methode realise un traitement sur les exceptions utilisateur - Par defaut il n'y a pas de traitement. La méthode doit etre + """Cette methode realise un traitement sur les exceptions utilisateur + Par defaut il n'y a pas de traitement. La méthode doit etre surchargée pour en introduire un. """ - return + return def register(self,etape): """ @@ -287,6 +288,7 @@ Causes possibles : """ self.etapes.append(etape) self.index_etapes[etape] = len(self.etapes) - 1 + message.debug(SUPERV, "#%d %s", self.index_etapes[etape], etape.nom) return self.g_register(etape) def o_register(self,sd): @@ -306,45 +308,45 @@ Causes possibles : return idetape def create_sdprod(self,etape,nomsd): - """ + """ Cette methode doit fabriquer le concept produit retourne par l'etape etape et le nommer. Elle est appelée à l'initiative de l'etape - pendant le processus de construction de cette etape : + pendant le processus de construction de cette etape : methode __call__ de la classe CMD (OPER ou MACRO) - Ce travail est réalisé par le contexte supérieur - (etape.parent) car dans certains cas, le concept ne doit - pas etre fabriqué mais l'etape doit simplement utiliser + Ce travail est réalisé par le contexte supérieur + (etape.parent) car dans certains cas, le concept ne doit + pas etre fabriqué mais l'etape doit simplement utiliser un concept préexistant. Deux cas possibles : - Cas 1 : etape.reuse != None : le concept est réutilisé - - Cas 2 : l'étape appartient à une macro qui a déclaré un - concept de sortie qui doit etre produit par cette + - Cas 2 : l'étape appartient à une macro qui a déclaré un + concept de sortie qui doit etre produit par cette etape. Dans le cas du JDC, le deuxième cas ne peut pas se produire. """ sd= etape.get_sd_prod() if sd != None and (etape.definition.reentrant == 'n' or etape.reuse is None) : - # ATTENTION : On ne nomme la SD que dans le cas de non reutilisation + # ATTENTION : On ne nomme la SD que dans le cas de non reutilisation # d un concept. Commande non reentrante ou reuse absent. self.NommerSdprod(sd,nomsd) return sd def NommerSdprod(self,sd,sdnom,restrict='non'): - """ - Nomme la SD apres avoir verifie que le nommage est possible : nom + """ + Nomme la SD apres avoir verifie que le nommage est possible : nom non utilise Si le nom est deja utilise, leve une exception Met le concept créé dans le concept global g_context """ - if CONTEXT.debug : print "JDC.NommerSdprod ",sd,sdnom - o=self.sds_dict.get(sdnom,None) if isinstance(o,ASSD): raise AsException("Nom de concept deja defini : %s" % sdnom) + if self._reserved_kw.get(sdnom) == 1: + raise AsException("Nom de concept invalide. '%s' est un mot-clé réservé." % sdnom) # ATTENTION : Il ne faut pas ajouter sd dans sds car il s y trouve deja. # Ajoute a la creation (appel de reg_sd). @@ -354,10 +356,11 @@ Causes possibles : # En plus si restrict vaut 'non', on insere le concept dans le contexte du JDC if restrict == 'non': self.g_context[sdnom]=sd + message.debug(SUPERV, "g_context[%r] = %s", sdnom, sd) def reg_sd(self,sd): - """ - Methode appelee dans l __init__ d un ASSD lors de sa creation + """ + Methode appelee dans l __init__ d un ASSD lors de sa creation pour s enregistrer """ self.sds.append(sd) @@ -368,8 +371,8 @@ Causes possibles : Met à jour les étapes du JDC qui sont après etape suite à la disparition du concept sd """ - # Cette methode est définie dans le noyau mais ne sert que pendant - # la phase de creation des etapes et des concepts. Il n'y a aucun + # Cette methode est définie dans le noyau mais ne sert que pendant + # la phase de creation des etapes et des concepts. Il n'y a aucun # traitement particulier à réaliser. # Dans d'autres conditions, il faut surcharger cette méthode return @@ -381,7 +384,7 @@ Causes possibles : def get_file(self,unite=None,fic_origine=''): """ - Retourne le nom du fichier correspondant à un numero d'unité + Retourne le nom du fichier correspondant à un numero d'unité logique (entier) ainsi que le source contenu dans le fichier """ if self.appli : @@ -406,10 +409,10 @@ Causes possibles : return file,text def set_par_lot(self,par_lot): - """ - Met le mode de traitement a PAR LOT + """ + Met le mode de traitement a PAR LOT ou a COMMANDE par COMMANDE - en fonction de la valeur du mot cle PAR_LOT et + en fonction de la valeur du mot cle PAR_LOT et du contexte : application maitre ou pas """ if self.appli == None: @@ -428,7 +431,7 @@ Causes possibles : def interact(self): """ - Cette methode a pour fonction d'ouvrir un interpreteur + Cette methode a pour fonction d'ouvrir un interpreteur pour que l'utilisateur entre des commandes interactivement """ CONTEXT.set_current_step(self) @@ -456,9 +459,9 @@ Causes possibles : comme DETRUIRE ou les macros Si etape == None, on retourne le contexte en fin de JDC """ - # L'étape courante pour laquelle le contexte a été calculé est + # L'étape courante pour laquelle le contexte a été calculé est # mémorisée dans self.index_etape_courante - # XXX on pourrait faire mieux dans le cas PAR_LOT="NON" : en + # XXX on pourrait faire mieux dans le cas PAR_LOT="NON" : en # mémorisant l'étape # courante pendant le processus de construction des étapes. # Si on insère des commandes (par ex, dans EFICAS), il faut préalablement @@ -488,7 +491,15 @@ Causes possibles : return d def get_global_contexte(self): - return self.g_context.copy() + """Retourne "un" contexte global ;-)""" + # N'est utilisé que par INCLUDE (sauf erreur). + # g_context est remis à {} en PAR_LOT='OUI'. const_context permet + # de retrouver ce qui y a été mis par exec_compile. + # Les concepts n'y sont pas en PAR_LOT='OUI'. Ils sont ajoutés + # par get_global_contexte de la MACRO. + d = self.const_context.copy() + d.update(self.g_context) + return d def get_contexte_courant(self, etape_courante=None): @@ -544,3 +555,14 @@ Causes possibles : if CONTEXT.debug: print ' `- JDC sd_accessible : PAR_LOT =', self.par_lot return self.par_lot == 'NON' + + def _build_reserved_kw_list(self): + """Construit la liste des mots-clés réservés (interdits pour le + nommage des concepts).""" + wrk = set() + for cat in self.cata: + wrk.update([kw for kw in dir(cat) if len(kw) <= 8 and kw == kw.upper()]) + wrk.difference_update(['OPER', 'MACRO', 'BLOC', 'SIMP', 'FACT', 'FORM', + 'GEOM', 'MCSIMP', 'MCFACT']) + self._reserved_kw = {}.fromkeys(wrk, 1) + diff --git a/Noyau/N_MACRO.py b/Noyau/N_MACRO.py index 6d5b70fc..dc513333 100644 --- a/Noyau/N_MACRO.py +++ b/Noyau/N_MACRO.py @@ -1,28 +1,28 @@ -#@ MODIF N_MACRO Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_MACRO Noyau DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -""" +""" Ce module contient la classe de definition MACRO qui permet de spécifier les caractéristiques d'une macro-commande """ @@ -31,16 +31,17 @@ import types,string,traceback import N_ENTITE import N_MACRO_ETAPE +import N_OPS import nommage class MACRO(N_ENTITE.ENTITE): """ Classe pour definir une macro-commande - Cette classe a trois attributs de classe + Cette classe a trois attributs de classe - - class_instance qui indique la classe qui devra etre utilisée - pour créer l'objet qui servira à controler la conformité d'un + - class_instance qui indique la classe qui devra etre utilisée + pour créer l'objet qui servira à controler la conformité d'un macro-commande avec sa définition - label qui indique la nature de l'objet de définition (ici, MACRO) @@ -121,7 +122,7 @@ class MACRO(N_ENTITE.ENTITE): self.fichier_ini = fichier_ini # Attribut op_init : Fonction a appeler a la construction de l operateur sauf si == None self.op_init=op_init - self.entites=args + self.entites = args current_cata=CONTEXT.get_current_cata() if niveau == None: self.niveau=None @@ -131,6 +132,7 @@ class MACRO(N_ENTITE.ENTITE): self.niveau.enregistre(self) self.UIinfo=UIinfo self.affecter_parente() + self.check_definition(self.nom) def __call__(self,reuse=None,**args): """ @@ -167,8 +169,8 @@ class MACRO(N_ENTITE.ENTITE): """ if self.op is not None and (type(self.op) != types.IntType or self.op > 0) : self.cr.fatal("L'attribut 'op' doit etre un entier signé : %s" %`self.op`) - if self.proc is not None and type(self.proc) != types.FunctionType: - self.cr.fatal("L'attribut op doit etre une fonction Python : %s" % `self.proc`) + if self.proc is not None and not isinstance(self.proc, N_OPS.OPS): + self.cr.fatal("L'attribut op doit etre une instance d'OPS : %s" % `self.proc`) if type(self.regles) != types.TupleType : self.cr.fatal("L'attribut 'regles' doit etre un tuple : %s" %`self.regles`) if type(self.fr) != types.StringType : @@ -188,4 +190,3 @@ class MACRO(N_ENTITE.ENTITE): """ self.niveau=None - diff --git a/Noyau/N_MACRO_ETAPE.py b/Noyau/N_MACRO_ETAPE.py index 7b59d5c0..efc0380f 100644 --- a/Noyau/N_MACRO_ETAPE.py +++ b/Noyau/N_MACRO_ETAPE.py @@ -1,28 +1,28 @@ -#@ MODIF N_MACRO_ETAPE Noyau DATE 23/03/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_MACRO_ETAPE Noyau DATE 07/11/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -""" +""" Ce module contient la classe MACRO_ETAPE qui sert à vérifier et à exécuter une commande """ @@ -39,6 +39,7 @@ import N_utils from N_utils import AsType from N_CO import CO from N_ASSD import ASSD +from N_info import message, SUPERV class MACRO_ETAPE(N_ETAPE.ETAPE): """ @@ -50,15 +51,15 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): """ Attributs : - - definition : objet portant les attributs de définition d'une étape - de type macro-commande. Il est initialisé par + - definition : objet portant les attributs de définition d'une étape + de type macro-commande. Il est initialisé par l'argument oper. - reuse : indique le concept d'entrée réutilisé. Il se trouvera donc - en sortie si les conditions d'exécution de l'opérateur + en sortie si les conditions d'exécution de l'opérateur l'autorise - - valeur : arguments d'entrée de type mot-clé=valeur. Initialisé + - valeur : arguments d'entrée de type mot-clé=valeur. Initialisé avec l'argument args. """ @@ -80,8 +81,8 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): self.etapes = [] self.index_etapes = {} self.sds = [] - # Dans le cas d'une macro écrite en Python, l'attribut Outputs est un - # dictionnaire qui contient les concepts produits de sortie + # Dans le cas d'une macro écrite en Python, l'attribut Outputs est un + # dictionnaire qui contient les concepts produits de sortie # (nom : ASSD) déclarés dans la fonction sd_prod self.Outputs = {} self.sd = None @@ -108,30 +109,31 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): def Build_sd(self,nom): """ - Construit le concept produit de l'opérateur. Deux cas + Construit le concept produit de l'opérateur. Deux cas peuvent se présenter : - - - le parent n'est pas défini. Dans ce cas, l'étape prend en charge + + - le parent n'est pas défini. Dans ce cas, l'étape prend en charge la création et le nommage du concept. - - le parent est défini. Dans ce cas, l'étape demande au parent la + - le parent est défini. Dans ce cas, l'étape demande au parent la création et le nommage du concept. """ + message.debug(SUPERV, "Build_sd %s", self.nom) self.sdnom=nom try: - # On positionne la macro self en tant que current_step pour que les + # On positionne la macro self en tant que current_step pour que les # étapes créées lors de l'appel à sd_prod et à op_init aient la macro - # comme parent + # comme parent self.set_current_step() if self.parent: sd= self.parent.create_sdprod(self,nom) - if type(self.definition.op_init) == types.FunctionType: + if type(self.definition.op_init) == types.FunctionType: apply(self.definition.op_init,(self,self.parent.g_context)) else: sd=self.get_sd_prod() if sd != None and self.reuse == None: - # On ne nomme le concept que dans le cas de non reutilisation + # On ne nomme le concept que dans le cas de non reutilisation # d un concept sd.set_name(nom) self.reset_current_step() @@ -139,7 +141,7 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): self.reset_current_step() raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], 'fichier : ',self.appel[1],e) - except (EOFError,self.UserError): + except (EOFError, self.UserError): # Le retablissement du step courant n'est pas strictement necessaire. On le fait pour des raisons de coherence self.reset_current_step() raise @@ -160,7 +162,7 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): # On marque les concepts CO pour verification ulterieure de leur bonne utilisation l=self.get_all_co() for c in l: - #if not hasattr(c,"_etape") or c._etape is not c.etape: + #if not hasattr(c,"_etape") or c._etape is not c.etape: c._etape=self return l @@ -195,7 +197,7 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): # les concepts produits dans self.sdprods, il faut le mettre à zéro avant de l'appeler self.sdprods=[] sd_prod= apply(sd_prod,(self,),d) - except (EOFError,self.UserError): + except (EOFError, self.UserError), exc: raise except: if CONTEXT.debug: traceback.print_exc() @@ -213,8 +215,8 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): else: self.sd= sd_prod(etape=self) self.typret=sd_prod - # Si la commande est obligatoirement reentrante et reuse n'a pas ete specifie, c'est une erreur. - # On ne fait rien ici. L'erreur sera traitee par la suite. + # Si la commande est obligatoirement reentrante et reuse n'a pas ete specifie, c'est une erreur. + # On ne fait rien ici. L'erreur sera traitee par la suite. # précaution if self.sd is not None and not isinstance(self.sd, ASSD): raise AsException(""" @@ -266,7 +268,7 @@ Causes possibles : On tient compte des commandes qui modifient le contexte comme DETRUIRE ou les macros """ - # L'étape courante pour laquelle le contexte a été calculé est + # L'étape courante pour laquelle le contexte a été calculé est # mémorisée dans self.index_etape_courante # Si on insère des commandes (par ex, dans EFICAS), il faut # préalablement remettre ce pointeur à 0 @@ -289,11 +291,12 @@ Causes possibles : if e.isactif(): e.update_context(d) self.index_etape_courante=index_etape + message.debug(SUPERV, "returns %s", d.keys()) return d def supprime(self): """ - Méthode qui supprime toutes les références arrières afin que + Méthode qui supprime toutes les références arrières afin que l'objet puisse etre correctement détruit par le garbage collector """ N_MCCOMPO.MCCOMPO.supprime(self) @@ -318,7 +321,7 @@ Causes possibles : if not hasattr(co,'etape'): # Le concept vaut None probablement. On ignore l'appel return - # + # # On cherche a discriminer les differents cas de typage d'un concept # produit par une macro qui est specifie dans un mot cle simple. # On peut passer plusieurs fois par type_sdprod ce qui explique @@ -331,7 +334,7 @@ Causes possibles : # la propriete du concept de la macro parent a la macro courante (self) # en verifiant que le type est valide # Cas 4 : La concept est la propriete d'une etape fille. Ceci veut dire qu'on est - # deja passe par type_sdprod et que la propriete a ete transfere a une + # deja passe par type_sdprod et que la propriete a ete transfere a une # etape fille. Cas semblable a Cas 3. # Cas 5 : Le concept est produit par une etape externe a la macro. # @@ -341,24 +344,21 @@ Causes possibles : # Recherche du mot cle simple associe au concept mcs=self.get_mcs_with_co(co) if len(mcs) != 1: - raise AsException("""Erreur interne. + raise AsException("""Erreur interne. Il ne devrait y avoir qu'un seul mot cle porteur du concept CO (%s)""" % co) mcs=mcs[0] if not self.typeCO in mcs.definition.type: - raise AsException("""Erreur interne. + raise AsException("""Erreur interne. Impossible de changer le type du concept (%s). Le mot cle associe ne supporte pas CO mais seulement (%s)""" %(co,mcs.definition.type)) - co.etape=self + co.etape = self # affectation du bon type du concept et - # initialisation de sa partie "sd" - if CONTEXT.debug:print "changement de type:",co,t co.change_type(t) - self.sdprods.append(co) - elif co.etape== self: + elif co.etape == self: # Cas 2 : le concept est produit par la macro (self) # On est deja passe par type_sdprod (Cas 1 ou 3). - if co.etape==co._etape: + if co.etape == co._etape: #Le concept a été créé par la macro (self) #On peut changer son type co.change_type(t) @@ -366,7 +366,7 @@ Impossible de changer le type du concept (%s). Le mot cle associe ne supporte pa #Le concept a été créé par une macro parente # Le type du concept doit etre coherent avec le type demande (seulement derive) if not isinstance(co,t): - raise AsException("""Erreur interne. + raise AsException("""Erreur interne. Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co.__class__)) self.sdprods.append(co) @@ -375,7 +375,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co # Cas 3 : le concept est produit par la macro parente (self.parent) # on transfere la propriete du concept a la macro fille # et on change le type du concept comme demande - # Au prealable, on verifie que le concept existant (co) est une instance + # Au prealable, on verifie que le concept existant (co) est une instance # possible du type demande (t) # Cette règle est normalement cohérente avec les règles de vérification des mots-clés if not isinstance(co,t): @@ -384,11 +384,11 @@ Impossible de changer le type du concept produit (%s) en (%s). Le type actuel (%s) devrait etre une classe derivee du nouveau type (%s)""" % (co,t,co.__class__,t)) mcs=self.get_mcs_with_co(co) if len(mcs) != 1: - raise AsException("""Erreur interne. + raise AsException("""Erreur interne. Il ne devrait y avoir qu'un seul mot cle porteur du concept CO (%s)""" % co) mcs=mcs[0] if not self.typeCO in mcs.definition.type: - raise AsException("""Erreur interne. + raise AsException("""Erreur interne. Impossible de changer le type du concept (%s). Le mot cle associe ne supporte pas CO mais seulement (%s)""" %(co,mcs.definition.type)) co.etape=self # On ne change pas le type car il respecte la condition isinstance(co,t) @@ -396,13 +396,13 @@ Impossible de changer le type du concept (%s). Le mot cle associe ne supporte pa self.sdprods.append(co) elif self.issubstep(co.etape): - # Cas 4 : Le concept est propriété d'une sous etape de la macro (self). + # Cas 4 : Le concept est propriété d'une sous etape de la macro (self). # On est deja passe par type_sdprod (Cas 3 ou 1). # Il suffit de le mettre dans la liste des concepts produits (self.sdprods) - # Le type du concept et t doivent etre derives. + # Le type du concept et t doivent etre derives. # Il n'y a aucune raison pour que la condition ne soit pas verifiee. if not isinstance(co,t): - raise AsException("""Erreur interne. + raise AsException("""Erreur interne. Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co.__class__)) self.sdprods.append(co) @@ -412,7 +412,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co return def issubstep(self,etape): - """ + """ Cette methode retourne un entier indiquant si etape est une sous etape de la macro self ou non 1 = oui @@ -424,8 +424,8 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co return 0 def register(self,etape): - """ - Enregistrement de etape dans le contexte de la macro : liste etapes + """ + Enregistrement de etape dans le contexte de la macro : liste etapes et demande d enregistrement global aupres du JDC """ self.etapes.append(etape) @@ -434,7 +434,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co return idetape def reg_sd(self,sd): - """ + """ Methode appelee dans l __init__ d un ASSD a sa creation pour s enregistrer (reserve aux ASSD créés au sein d'une MACRO) """ @@ -442,7 +442,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co return self.jdc.o_register(sd) def create_sdprod(self,etape,nomsd): - """ + """ Cette methode doit fabriquer le concept produit retourne par l'etape etape et le nommer. @@ -479,19 +479,19 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co # est bien coherent avec celui initialement affecte par la macro (voir ci dessus) # on affecte au concept ce type car il peut etre plus precis (derive, en general) sd.__class__=sdprod - # On force également le nom stocké dans l'attribut sdnom : on lui donne le nom + # On force également le nom stocké dans l'attribut sdnom : on lui donne le nom # du concept associé à nomsd etape.sdnom=sd.nom elif etape.definition.reentrant != 'n' and etape.reuse != None: # On est dans le cas d'une commande avec reutilisation d'un concept existant - # get_sd_prod fait le necessaire : verifications, associations, etc. mais ne cree + # get_sd_prod fait le necessaire : verifications, associations, etc. mais ne cree # pas un nouveau concept. Il retourne le concept reutilise sd= etape.get_sd_prod() # Dans le cas d'un concept nomme automatiquement : _xxx, __xxx, - # On force le nom stocke dans l'attribut sdnom de l'objet etape : on lui donne le nom + # On force le nom stocke dans l'attribut sdnom de l'objet etape : on lui donne le nom # du concept reutilise (sd ou etape.reuse c'est pareil) # Ceci est indispensable pour eviter des erreurs lors des verifications des macros - # En effet une commande avec reutilisation d'un concept verifie que le nom de + # En effet une commande avec reutilisation d'un concept verifie que le nom de # la variable a gauche du signe = est le meme que celui du concept reutilise. # Lorsqu'une telle commande apparait dans une macro, on supprime cette verification. if (etape.sdnom == '' or etape.sdnom[0] == '_'): @@ -504,7 +504,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co return sd def NommerSdprod(self,sd,sdnom,restrict='non'): - """ + """ Cette methode est appelee par les etapes internes de la macro La macro appelle le JDC pour valider le nommage On considere que l espace de nom est unique et géré par le JDC @@ -518,16 +518,9 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co # est de verifier que le nom n'est pas deja attribue. Ceci est fait en delegant # au JDC par l'intermediaire du parent. - #XXX attention inconsistence : prefix et gcncon ne sont pas - # définis dans le package Noyau. La methode NommerSdprod pour + #XXX attention inconsistence : gcncon n'est pas + # défini dans le package Noyau. La methode NommerSdprod pour # les macros devrait peut etre etre déplacée dans Build ??? - - if CONTEXT.debug : print "MACRO.NommerSdprod: ",sd,sdnom - - if hasattr(self,'prefix'): - # Dans le cas de l'include_materiau on ajoute un prefixe au nom du concept - if sdnom != self.prefix:sdnom=self.prefix+sdnom - if self.Outputs.has_key(sdnom): # Il s'agit d'un concept de sortie de la macro produit par une sous commande sdnom=self.Outputs[sdnom].nom @@ -549,7 +542,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co else: sdnom=self.gcncon('_') else: - # On est dans le cas d'un nom de concept global. + # On est dans le cas d'un nom de concept global. pass if restrict == 'non': @@ -559,6 +552,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co # On ajoute dans le contexte de la macro les concepts nommes # Ceci est indispensable pour les CO (macro) dans un INCLUDE self.g_context[sdnom]=sd + message.debug(SUPERV, "g_context[%s] = %s", sdnom, sd) else: # La demande de nommage vient probablement d'une macro qui a mis # le concept dans son contexte. On ne traite plus que le nommage (restrict="oui") @@ -625,12 +619,14 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co # on execute le texte fourni dans le contexte forme par # le contexte de l etape pere (global au sens Python) # et le contexte de l etape (local au sens Python) - code=compile(text,f,'exec') - d={} + code = compile(text,f,'exec') + d = self.macro_const_context self.g_context = d self.contexte_fichier_init = d - globs=self.parent.get_global_contexte() - exec code in globs,d + globs = self.get_global_contexte() + exec code in globs, d + # pour ne pas conserver des références sur tout + self.macro_const_context = {} def get_global_contexte(self): """ @@ -642,6 +638,9 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co # du parent de self et de celui de l'etape elle meme (self) d=self.parent.get_global_contexte() d.update(self.g_context) + # en PAR_LOT='OUI', les concepts n'étant pas dans jdc.g_context, + # on demande au parent le contexte courant. + d.update(self.parent.get_contexte_avant(self)) return d def get_contexte_courant(self, etape_fille_du_jdc=None): @@ -649,7 +648,9 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co Retourne le contexte tel qu'il est au moment de l'exécution de l'étape courante. """ - ctx = self.parent.get_contexte_courant(self) + ctx = {} + # update car par ricochet on modifierait jdc.current_context + ctx.update( self.parent.get_contexte_courant(self) ) # on peut mettre None car toujours en PAR_LOT='NON', donc la dernière ctx.update( self.get_contexte_avant(None) ) return ctx @@ -675,7 +676,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co return etape def copy_intern(self,etape): - """ Cette méthode effectue la recopie des etapes internes d'une macro + """ Cette méthode effectue la recopie des etapes internes d'une macro passée en argument (etape) """ self.etapes=[] @@ -695,7 +696,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co new_etp.copy_intern(etp) self.etapes.append(new_etp) self.index_etapes[new_etp] = len(self.etapes) - 1 - + def reset_jdc(self,new_jdc): """ @@ -731,8 +732,8 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co def sd_accessible(self): """On peut acceder aux "valeurs" (jeveux) des ASSD dans les macro-commandes qui sont localement en PAR_LOT="NON" - sauf pour INCLUDE et INCLUDE_MATERIAU. + sauf pour INCLUDE. """ if CONTEXT.debug: print ' `- MACRO sd_accessible :', self.nom - return self.parent.sd_accessible() or not self.nom.startswith('INCLUDE') + return self.parent.sd_accessible() or not self.is_include() diff --git a/Noyau/N_MCCOMPO.py b/Noyau/N_MCCOMPO.py index cca7f6fe..7092fd34 100644 --- a/Noyau/N_MCCOMPO.py +++ b/Noyau/N_MCCOMPO.py @@ -1,29 +1,29 @@ -#@ MODIF N_MCCOMPO Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_MCCOMPO Noyau DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -""" - Ce module contient la classe MCCOMPO qui sert à factoriser les comportements +""" + Ce module contient la classe MCCOMPO qui sert à factoriser les comportements des OBJECT composites """ @@ -33,11 +33,11 @@ import N_OBJECT class MCCOMPO(N_OBJECT.OBJECT): """ Classe support d'un OBJECT composite - + """ def build_mc(self): - """ + """ Construit la liste des sous-entites du MCCOMPO à partir du dictionnaire des arguments (valeur) """ @@ -66,7 +66,7 @@ class MCCOMPO(N_OBJECT.OBJECT): # si une valeur existe dans args ou est obligatoire (generique si toutes les # entites ont l attribut statut ) # - objet=self.definition.entites[k](val=args.get(k,None),nom=k,parent=self) + objet=v(val=args.get(k,None),nom=k,parent=self) mc_liste.append(objet) # Si l'objet a une position globale on l'ajoute aux listes correspondantes if hasattr(objet.definition,'position'): @@ -77,7 +77,8 @@ class MCCOMPO(N_OBJECT.OBJECT): if args.has_key(k): del args[k] - # Phase 1.2 : on traite les autres entites que SIMP + # Phase 1.2 : on traite les autres entites que SIMP + # (FACT en fait car un BLOC ne peut avoir le meme nom qu'un mot-clef) for k,v in self.definition.entites.items(): if v.label == 'SIMP':continue if args.has_key(k) or v.statut=='o' : @@ -86,7 +87,7 @@ class MCCOMPO(N_OBJECT.OBJECT): # si une valeur existe dans args ou est obligatoire (generique si toutes les # entites ont l attribut statut ) # - objet=self.definition.entites[k](val=args.get(k,None),nom=k,parent=self) + objet=v(val=args.get(k,None),nom=k,parent=self) mc_liste.append(objet) if args.has_key(k): del args[k] @@ -116,7 +117,7 @@ class MCCOMPO(N_OBJECT.OBJECT): # On conserve les arguments superflus dans l'attribut reste_val self.reste_val=args - # On ordonne la liste ainsi créée suivant l'ordre du catalogue + # On ordonne la liste ainsi créée suivant l'ordre du catalogue # (utile seulement pour IHM graphique) mc_liste = self.ordonne_liste(mc_liste) # on retourne la liste ainsi construite @@ -135,28 +136,28 @@ class MCCOMPO(N_OBJECT.OBJECT): return mc_liste def cree_dict_valeurs(self,liste=[],condition=0): - """ + """ Cette méthode crée un contexte (sous la forme d'un dictionnaire) à partir des valeurs des mots clés contenus dans l'argument liste. - L'opération consiste à parcourir la liste (d'OBJECT) et à la + L'opération consiste à parcourir la liste (d'OBJECT) et à la transformer en un dictionnaire dont les clés sont les noms des mots clés et les valeurs dépendent du type d'OBJECT. Ce dictionnaire servira de liste d'arguments d'appel pour les fonctions sd_prod de commandes et ops de macros ou de contexte d'évaluation des conditions de présence de BLOC. - Si l'argument condition de la méthode vaut 1, on ne + Si l'argument condition de la méthode vaut 1, on ne remonte pas les valeurs des mots clés contenus dans des blocs pour eviter les bouclages. - Cette méthode réalise les opérations suivantes en plus de transformer + Cette méthode réalise les opérations suivantes en plus de transformer la liste en dictionnaire : - ajouter tous les mots-clés non présents avec la valeur None - - ajouter tous les mots-clés globaux (attribut position = 'global' + - ajouter tous les mots-clés globaux (attribut position = 'global' et 'global_jdc') - L'argument liste est, en général, une mc_liste en cours de + L'argument liste est, en général, une mc_liste en cours de construction, contenant les mots-clés locaux et les blocs déjà créés. """ @@ -167,16 +168,22 @@ class MCCOMPO(N_OBJECT.OBJECT): # représentatif du contexte. Les blocs sont retournés par get_valeur # sous la forme d'un dictionnaire : les mots-clés fils de blocs sont # donc remontés au niveau du contexte. - if not condition:dico.update(v.get_valeur()) + if not condition: + dadd = v.get_valeur() + assert intersection_vide(dico, dadd) + dico.update(dadd) else: + assert not dico.has_key(v.nom), "deja vu : %s" % v.nom dico[v.nom]=v.get_valeur() - # On rajoute tous les autres mots-clés locaux possibles avec la valeur + # On rajoute tous les autres mots-clés locaux possibles avec la valeur # par défaut ou None # Pour les mots-clés facteurs, on ne traite que ceux avec statut défaut ('d') # et caché ('c') # On n'ajoute aucune information sur les blocs. Ils n'ont pas de défaut seulement # une condition. + #XXX remplacer le not has_key par un dico différent et faire dico2.update(dico) + # ce n'est qu'un pb de perf for k,v in self.definition.entites.items(): if not dico.has_key(k): if v.label == 'SIMP': @@ -215,7 +222,7 @@ class MCCOMPO(N_OBJECT.OBJECT): return dico def recherche_mc_globaux(self): - """ + """ Retourne la liste des mots-clés globaux de l'étape à laquelle appartient self et des mots-clés globaux du jdc """ @@ -224,7 +231,7 @@ class MCCOMPO(N_OBJECT.OBJECT): dict_mc_globaux_fac = self.recherche_mc_globaux_facultatifs() for k,v in etape.mc_globaux.items(): dict_mc_globaux_fac[k]=v.get_valeur() - if self.jdc : + if self.jdc : for k,v in self.jdc.mc_globaux.items(): dict_mc_globaux_fac[k]=v.get_valeur() return dict_mc_globaux_fac @@ -232,9 +239,10 @@ class MCCOMPO(N_OBJECT.OBJECT): return {} def recherche_mc_globaux_facultatifs(self): - """ + """ Cette méthode interroge la définition de self et retourne la liste des mots-clés fils - directs de self de type 'global' + directs de self de type 'global'. + position='global' n'est donc possible (et n'a de sens) qu'au plus haut niveau. """ dico={} etape = self.get_etape() @@ -248,7 +256,7 @@ class MCCOMPO(N_OBJECT.OBJECT): return dico def supprime(self): - """ + """ Méthode qui supprime toutes les références arrières afin que l'objet puisse etre correctement détruit par le garbage collector """ @@ -264,8 +272,8 @@ class MCCOMPO(N_OBJECT.OBJECT): def get_mocle(self,key): """ - Retourne la valeur du sous mot-clé key - Ce sous mot-clé peut exister, avoir une valeur par defaut ou etre + Retourne la valeur du sous mot-clé key + Ce sous mot-clé peut exister, avoir une valeur par defaut ou etre dans un BLOC fils de self """ # on cherche dans les mots cles presents, le mot cle de nom key @@ -297,7 +305,7 @@ class MCCOMPO(N_OBJECT.OBJECT): if not mc.isBLOC() : continue try: return mc.get_mocle(key) - except: + except: # On n a rien trouve dans ce bloc, on passe au suivant pass # On a rien trouve, le mot cle est absent. @@ -305,10 +313,10 @@ class MCCOMPO(N_OBJECT.OBJECT): raise IndexError,"Le mot cle %s n existe pas dans %s" % (key,self) def get_child(self,name,restreint = 'non'): - """ + """ Retourne le fils de self de nom name ou None s'il n'existe pas Si restreint vaut oui : ne regarde que dans la mc_liste - Si restreint vaut non : regarde aussi dans les entites possibles + Si restreint vaut non : regarde aussi dans les entites possibles avec defaut (Ce dernier cas n'est utilisé que dans le catalogue) """ for v in self.mc_liste: @@ -333,8 +341,8 @@ class MCCOMPO(N_OBJECT.OBJECT): etape.mc_globaux[nom]=mc def append_mc_global_jdc(self,mc): - """ - Ajoute le mot-clé mc à la liste des mots-clés globaux du jdc + """ + Ajoute le mot-clé mc à la liste des mots-clés globaux du jdc """ nom = mc.nom self.jdc.mc_globaux[nom]=mc @@ -368,9 +376,9 @@ class MCCOMPO(N_OBJECT.OBJECT): mocle.reparent(self) def get_sd_utilisees(self): - """ + """ Retourne la liste des concepts qui sont utilisés à l'intérieur de self - ( comme valorisation d'un MCS) + ( comme valorisation d'un MCS) """ l=[] for child in self.mc_liste: @@ -378,13 +386,13 @@ class MCCOMPO(N_OBJECT.OBJECT): return l def get_sd_mcs_utilisees(self): - """ + """ Retourne la ou les SD utilisée par self sous forme d'un dictionnaire : - Si aucune sd n'est utilisée, le dictionnaire est vide. - Sinon, les clés du dictionnaire sont les mots-clés derrière lesquels on trouve des sd ; la valeur est la liste des sd attenante. Exemple :: - + { 'VALE_F': [ , ], 'MODELE': [] } @@ -399,7 +407,7 @@ class MCCOMPO(N_OBJECT.OBJECT): def get_mcs_with_co(self,co): """ - Cette methode retourne l'objet MCSIMP fils de self + Cette methode retourne l'objet MCSIMP fils de self qui a le concept co comme valeur. En principe, elle ne doit etre utilisee que pour les concepts instances de la classe CO @@ -417,3 +425,14 @@ class MCCOMPO(N_OBJECT.OBJECT): for child in self.mc_liste: l.extend(child.get_all_co()) return l + + +def intersection_vide(dict1, dict2): + """Verification qu'il n'y a pas de clé commune entre 'dict1' et 'dict2'.""" + sk1 = set(dict1.keys()) + sk2 = set(dict2.keys()) + inter = sk1.intersection(sk2) + ok = len(inter) == 0 + if not ok: + print 'ERREUR: Mot(s)-clef(s) vu(s) plusieurs fois :', tuple(inter) + return ok diff --git a/Noyau/N_MCSIMP.py b/Noyau/N_MCSIMP.py index ba769bbd..2ff4d1f9 100644 --- a/Noyau/N_MCSIMP.py +++ b/Noyau/N_MCSIMP.py @@ -1,36 +1,36 @@ -#@ MODIF N_MCSIMP Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_MCSIMP Noyau DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -""" - Ce module contient la classe MCSIMP qui sert à controler la valeur - d'un mot-clé simple par rapport à sa définition portée par un objet +""" + Ce module contient la classe MCSIMP qui sert a controler la valeur + d'un mot-cle simple par rapport a sa definition portee par un objet de type ENTITE """ from copy import copy -from Noyau.N_ASSD import ASSD,assd +from Noyau.N_ASSD import ASSD from Noyau.N_CO import CO import N_OBJECT from N_CONVERT import ConversionFactory @@ -42,18 +42,13 @@ class MCSIMP(N_OBJECT.OBJECT): def __init__(self,val,definition,nom,parent): """ Attributs : - - - val : valeur du mot clé simple - + - val : valeur du mot cle simple - definition - - nom - - parent - Autres attributs : - - valeur : valeur du mot-clé simple en tenant compte de la valeur par défaut + - valeur : valeur du mot-cle simple en tenant compte de la valeur par defaut """ self.definition=definition @@ -67,15 +62,15 @@ class MCSIMP(N_OBJECT.OBJECT): self.niveau = self.parent.niveau self.etape = self.parent.etape else: - # Le mot cle simple a été créé sans parent + # Le mot cle simple a ete cree sans parent self.jdc = None self.niveau = None self.etape = None def GETVAL(self,val): - """ - Retourne la valeur effective du mot-clé en fonction - de la valeur donnée. Defaut si val == None + """ + Retourne la valeur effective du mot-cle en fonction + de la valeur donnee. Defaut si val == None """ if (val is None and hasattr(self.definition,'defaut')) : val = self.definition.defaut @@ -85,22 +80,32 @@ class MCSIMP(N_OBJECT.OBJECT): def get_valeur(self): """ - Retourne la "valeur" d'un mot-clé simple. - Cette valeur est utilisée lors de la création d'un contexte - d'évaluation d'expressions à l'aide d'un interpréteur Python + Retourne la "valeur" d'un mot-cle simple. + Cette valeur est utilisee lors de la creation d'un contexte + d'evaluation d'expressions a l'aide d'un interpreteur Python """ v = self.valeur - # Singleton : on retourne l'element - # Permet aussi d'ignorer l'erreur : concept=COMMANDE(), - # ou 'concept' est un tuple de longueur 1 a cause de la virgule. - if type(v) in (list, tuple) and len(v) == 1: + # Si singleton et max=1, on retourne la valeur. + # Si une valeur simple et max='**', on retourne un singleton. + # (si liste de longueur > 1 et max=1, on sera arrete plus tard) + # Pour accepter les numpy.array, on remplace : "type(v) not in (list, tuple)" + # par "not has_attr(v, '__iter__')". + if v is None: + pass + elif type(v) in (list, tuple) and len(v) == 1 and self.definition.max == 1: v = v[0] + elif not hasattr(v, '__iter__') and self.definition.max != 1: + v = (v, ) + # traitement particulier pour les complexes ('RI', r, i) + if 'C' in self.definition.type and self.definition.max != 1 \ + and v[0] in ('RI', 'MP'): + v = (v, ) return v def get_val(self): """ - Une autre méthode qui retourne une "autre" valeur du mot clé simple. - Elle est utilisée par la méthode get_mocle + Une autre methode qui retourne une "autre" valeur du mot cle simple. + Elle est utilisee par la methode get_mocle """ return self.valeur @@ -115,7 +120,7 @@ class MCSIMP(N_OBJECT.OBJECT): """ Retourne une copie de self """ objet = self.makeobjet() # il faut copier les listes et les tuples mais pas les autres valeurs - # possibles (réel,SD,...) + # possibles (reel,SD,...) if type(self.valeur) in (list, tuple): objet.valeur = copy(self.valeur) else: @@ -135,8 +140,8 @@ class MCSIMP(N_OBJECT.OBJECT): self.etape=parent.etape def get_sd_utilisees(self): - """ - Retourne une liste qui contient la ou les SD utilisée par self si c'est le cas + """ + Retourne une liste qui contient la ou les SD utilisee par self si c'est le cas ou alors une liste vide """ l=[] @@ -149,10 +154,10 @@ class MCSIMP(N_OBJECT.OBJECT): return l def get_sd_mcs_utilisees(self): - """ - Retourne la ou les SD utilisée par self sous forme d'un dictionnaire : - - Si aucune sd n'est utilisée, le dictionnaire est vide. - - Sinon, la clé du dictionnaire est le mot-clé simple ; la valeur est + """ + Retourne la ou les SD utilisee par self sous forme d'un dictionnaire : + - Si aucune sd n'est utilisee, le dictionnaire est vide. + - Sinon, la cle du dictionnaire est le mot-cle simple ; la valeur est la liste des sd attenante. Exemple :: @@ -179,7 +184,7 @@ class MCSIMP(N_OBJECT.OBJECT): def get_all_co(self): """ Cette methode retourne la liste de tous les concepts co - associés au mot cle simple + associes au mot cle simple """ lval=self.valeur if type(self.valeur) not in (list, tuple): diff --git a/Noyau/N_OPER.py b/Noyau/N_OPER.py index 7f2d1ffc..648d9b05 100644 --- a/Noyau/N_OPER.py +++ b/Noyau/N_OPER.py @@ -1,28 +1,28 @@ -#@ MODIF N_OPER Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_OPER Noyau DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -""" +""" Ce module contient la classe de definition OPER qui permet de spécifier les caractéristiques d'un opérateur """ @@ -37,10 +37,10 @@ class OPER(N_ENTITE.ENTITE): """ Classe pour definir un opérateur - Cette classe a trois attributs de classe + Cette classe a trois attributs de classe - - class_instance qui indique la classe qui devra etre utilisée - pour créer l'objet qui servira à controler la conformité d'un + - class_instance qui indique la classe qui devra etre utilisée + pour créer l'objet qui servira à controler la conformité d'un opérateur avec sa définition - label qui indique la nature de l'objet de définition (ici, OPER) @@ -118,6 +118,7 @@ class OPER(N_ENTITE.ENTITE): self.niveau.enregistre(self) self.UIinfo=UIinfo self.affecter_parente() + self.check_definition(self.nom) def __call__(self,reuse=None,**args): """ @@ -130,10 +131,10 @@ class OPER(N_ENTITE.ENTITE): return etape.Build_sd(nomsd) def make_objet(self,mc_list='oui'): - """ + """ Cette méthode crée l'objet ETAPE dont la définition est self sans l'enregistrer ni créer sa sdprod. - Si l'argument mc_list vaut 'oui', elle déclenche en plus la construction + Si l'argument mc_list vaut 'oui', elle déclenche en plus la construction des objets MCxxx. """ etape= self.class_instance(oper=self,reuse=None,args={}) diff --git a/Noyau/N_OPS.py b/Noyau/N_OPS.py new file mode 100644 index 00000000..6d537097 --- /dev/null +++ b/Noyau/N_OPS.py @@ -0,0 +1,45 @@ +#@ MODIF N_OPS Noyau DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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 N_utils import import_object + +class OPS: + """Wrapper to ops functions. + This allows to import them only when they are needed.""" + + def __init__(self, uri): + """Initialization""" + self.uri = uri + + def __call__(self, *args, **kwargs): + """Import the real function and call it.""" + func = import_object(self.uri) + return func(*args, **kwargs) + + +# utilisé par exemple par des macros où tout est fait dans l'init. +class NOTHING(OPS): + """OPS which does nothing.""" + + def __call__(self, macro, *args, **kwargs): + macro.set_icmd(1) + return 0 + +EMPTY_OPS = NOTHING(None) diff --git a/Noyau/N_PROC.py b/Noyau/N_PROC.py index c19db8b4..ccef6948 100644 --- a/Noyau/N_PROC.py +++ b/Noyau/N_PROC.py @@ -1,28 +1,28 @@ -#@ MODIF N_PROC Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_PROC Noyau DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -""" +""" Ce module contient la classe de definition PROC qui permet de spécifier les caractéristiques d'une procédure """ @@ -36,10 +36,10 @@ class PROC(N_ENTITE.ENTITE): """ Classe pour definir un opérateur - Cette classe a deux attributs de classe + Cette classe a deux attributs de classe - - class_instance qui indique la classe qui devra etre utilisée - pour créer l'objet qui servira à controler la conformité d'un + - class_instance qui indique la classe qui devra etre utilisée + pour créer l'objet qui servira à controler la conformité d'un opérateur avec sa définition - label qui indique la nature de l'objet de définition (ici, PROC) @@ -111,6 +111,7 @@ class PROC(N_ENTITE.ENTITE): self.niveau.enregistre(self) self.UIinfo=UIinfo self.affecter_parente() + self.check_definition(self.nom) def __call__(self,**args): """ diff --git a/Noyau/N_SIMP.py b/Noyau/N_SIMP.py index bba73d60..35a35712 100644 --- a/Noyau/N_SIMP.py +++ b/Noyau/N_SIMP.py @@ -37,9 +37,9 @@ class SIMP(N_ENTITE.ENTITE): Cette classe a deux attributs de classe - - class_instance qui indique la classe qui devra etre utilisée - pour créer l'objet qui servira à controler la conformité d'un - mot-clé simple avec sa définition + - class_instance qui indique la classe qui devra etre utilisee + pour creer l'objet qui servira a controler la conformite d'un + mot-cle simple avec sa définition - label qui indique la nature de l'objet de définition (ici, SIMP) @@ -52,32 +52,20 @@ class SIMP(N_ENTITE.ENTITE): val_min = '**',val_max='**',docu="",validators=None): """ - Un mot-clé simple est caractérisé par les attributs suivants : + Un mot-cle simple est caracterise par les attributs suivants : - type : cet attribut est obligatoire et indique le type de valeur attendue - - fr : - - ang : - - statut : - - into : - - defaut : - - min - - max - - homo - - position - - val_min - - val_max - - docu """ N_ENTITE.ENTITE.__init__(self,validators) @@ -101,7 +89,7 @@ class SIMP(N_ENTITE.ENTITE): def verif_cata(self): """ - Cette methode sert à valider les attributs de l'objet de définition + Cette methode sert a valider les attributs de l'objet de definition de la classe SIMP """ if type(self.min) != types.IntType : @@ -134,7 +122,3 @@ class SIMP(N_ENTITE.ENTITE): return self.class_instance(nom=nom,definition=self,val=val,parent=parent) - - - - diff --git a/Noyau/N_VALIDATOR.py b/Noyau/N_VALIDATOR.py index 7a1c67e7..05f9e8da 100644 --- a/Noyau/N_VALIDATOR.py +++ b/Noyau/N_VALIDATOR.py @@ -1,4 +1,4 @@ -#@ MODIF N_VALIDATOR Noyau DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_VALIDATOR Noyau DATE 11/10/2010 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION @@ -116,6 +116,7 @@ class TypeProtocol(PProtocol): self.typ=typ def default(self,obj,typ): + help = "" for type_permis in typ: if type_permis == 'R': @@ -133,6 +134,11 @@ class TypeProtocol(PProtocol): if (len(typ) > 2 and typ[2] == "Sauvegarde") or os.path.isfile(obj): return obj else : raise ValError("%s n'est pas un fichier valide" % repr(obj)) + elif type_permis == 'FichierNoAbs' : + import os + if (len(typ) > 2 and typ[2] == "Sauvegarde") or isinstance(obj, type("")): + return obj + else : raise ValError("%s n'est pas un fichier valide" % repr(obj)) elif type(type_permis) == types.ClassType or isinstance(type_permis,type): try: if self.is_object_from(obj,type_permis): return obj @@ -569,6 +575,38 @@ class LongStr(ListVal): raise ValError("%s n'est pas de la bonne longueur" % repr(valeur)) return valeur +class OnlyStr(ListVal): + """ + Validateur operationnel + Valide que c'est une chaine + """ + def __init__(self): + ListVal.__init__(self) + self.cata_info="" + + def info(self): + return "regarde si c'est une chaine" + + def info_erreur_item(self): + return "Ce n'est pas une chain" + + def convert(self,valeur): + for val in valeur: + v=self.adapt(val) + return valeur + + def verif_item(self,valeur): + try: + self.adapt(valeur) + return 1 + except: + return 0 + + def default(self,valeur): + if not is_str(valeur): + raise ValError("%s n'est pas une string" % repr(valeur)) + return valeur + class OrdList(ListVal): """ Validateur operationnel @@ -803,7 +841,6 @@ class AndVal(Valid): return chaine def verif(self,valeur): - print "je suis dans le verif du AndVal" for validator in self.validators: v=validator.verif(valeur) if not v : @@ -1262,12 +1299,14 @@ class VerifTypeTuple(Valid,ListVal) : def verif_item(self,valeur): try : - if len(valeur) != len(self.typeDesTuples): return 0 - for i in range(len(valeur)) : - ok=self.verifType(valeur[i],self.typeDesTuples[i]) - if ok!=1 : return 0 - except : + if len(valeur) != len(self.typeDesTuples): return 0 + for i in range(len(valeur)) : + ok=self.verifType(valeur[i],self.typeDesTuples[i]) + if ok!=1: + return 0 + except : + return 0 return 1 def verifType(self,valeur,type_permis): diff --git a/Noyau/N__F.py b/Noyau/N__F.py index 87fa725b..78789894 100644 --- a/Noyau/N__F.py +++ b/Noyau/N__F.py @@ -1,24 +1,24 @@ -#@ MODIF N__F Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N__F Noyau DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== @@ -26,13 +26,16 @@ import UserDict class _F(UserDict.UserDict): """ - Cette classe a un comportement semblable à un + Cette classe a un comportement semblable à un dictionnaire Python et permet de donner - la valeur d'un mot-clé facteur avec pour les sous + la valeur d'un mot-clé facteur avec pour les sous mots-clés la syntaxe motcle=valeur """ - def __init__(self,**args): + def __init__(self, *pos, **args): + if len(pos) != 0: + raise SyntaxError("Valeur invalide pour '_F('. "\ + "On attend cette syntaxe : _F(MOTCLE=valeur, ...)") self.data=args def supprime(self): @@ -46,11 +49,11 @@ class _F(UserDict.UserDict): else: return cmp(self.data, dict) + def __iter__(self): + return iter(self.data) + def copy(self): import copy c= copy.copy(self) c.data=self.data.copy() return c - - - diff --git a/Noyau/N_info.py b/Noyau/N_info.py new file mode 100644 index 00000000..59a66217 --- /dev/null +++ b/Noyau/N_info.py @@ -0,0 +1,269 @@ +#@ MODIF N_info Noyau DATE 17/08/2011 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2011 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. +# ====================================================================== +# RESPONSABLE COURTOIS M.COURTOIS + +"""Module to manage information printing : debug, info, error. +Should replace 'print' and 'UTMESS' calls at least in the supervisor +modules. +Only used for debug right now. +""" + +import os +import os.path as osp +import re +import traceback +from functools import partial +from subprocess import Popen, PIPE + +from N_utils import Enum + +def default_print(text): + """Basic print function.""" + print text + +LEVEL = Enum( + 'DEBUG', + 'INFO', + 'WARN', + 'ERROR' +) + +class Category(object): + """Define a category of message for different parts of the code. + This allows to store different parameters for each category of message.""" + def __init__(self): + self._level = LEVEL.INFO + self._fmt = "%-8s" + self._header = { + LEVEL.DEBUG : "DEBUG", + LEVEL.INFO : None, + LEVEL.WARN : "WARNING", + LEVEL.ERROR : "ERROR", + } + + def set_level(self, level): + """Set the current level.""" + self._level = level + + def get_level(self): + """Return the current level.""" + return self._level + + def set_header(self, level, header): + """Set the header of ``level`` messages.""" + self._header[level] = header + + def get_header(self, level): + """Return the header at this ``level``.""" + header = self._header.get(level, "") + if header: + header = self._fmt % header + return header + + def active(self, level): + """Tell if a message should be print at this ``level``.""" + return self._level <= level + + +ALL = Category() +SUPERV = Category() +SUPERV.set_header(LEVEL.ERROR, None) +MISS = Category() + +REGEXP_ORIG = re.compile('File [\'\"]*(.*?)[\'\"]*, *line ([0-9]+), *in (.*)') + +# slighty different and very simplier than logger objects +# from the logging module. +class InfoLevel(object): + """Store informations level.""" + def __init__(self, level): + """Initialization""" + self._parts = [] + for part in self._parts: + part.level = level + self.reset_print_function() + self._msg_callback = [] + #self.extend_message(ALL, stack_header_callback) + self.extend_message(ALL, insert_header) + + def add(self, category): + """Add a category of message.""" + self._parts.append(category) + + def set_level(self, category, level): + """Set the current level for ``category``.""" + assert category in self._parts, "unknown category : %s" % category + assert LEVEL.exists(level), "unknown level : %s" % level + category.set_level(level) + if category == ALL: + for part in self._parts: + part.set_level(level) + + def set_debug(self): + """Set debug level for all categories.""" + self.set_level(ALL, LEVEL.DEBUG) + + def set_header(self, category, level, header): + """Set the header of ``level`` messages.""" + category.set_header(level, header) + + def register_print_function(self, print_function): + """Define the `print_function` to use.""" + self._print = print_function + + def reset_print_function(self): + """Register the default 'print function'.""" + self._print = default_print + + def extend_message(self, category, callback): + """Allow to extend the message calling an external function.""" + self._msg_callback.append((category, callback)) + + def _message(self, category, level, msg, args, kwargs): + """Print the message if the level is reached.""" + if category.active(level): + if kwargs.get('utmess'): + func = self._message_utmess + else: + func = self._message_print + func = self._message_print + apply(func, (category, level, msg, args, kwargs)) + + def _message_print(self, category, level, msg, args, kwargs): + """Print the message if the level is reached.""" + for cat, cbk in self._msg_callback: + if cat in (ALL, category): + msg, args = cbk(category, level, msg, args, kwargs) + if len(args) > 0: + try: + msg = msg % args + except Exception, err: + msg = repr((msg, args, err)) + self._print(msg) + + def _message_utmess(self, category, level, msg, args, kwargs): + """Print the message if the level is reached.""" + # how to use callbacks ? valk ? + from Utilitai.Utmess import MessageLog + code = { + LEVEL.DEBUG : 'I', + LEVEL.INFO : 'I', + LEVEL.WARN : 'A', + LEVEL.ERROR : 'F', + } + valk = kwargs.get('valk', ()) + vali = kwargs.get('vali', ()) + valr = kwargs.get('valr', ()) + msg = MessageLog.GetText(code[level], msg, valk, vali, valr) + for cat, cbk in self._msg_callback: + if cat in (ALL, category): + msg, args = cbk(category, level, msg, args, kwargs) + self._print(msg) + + def debug(self, category, msg, *args, **kwargs): + """Print a debug message.""" + self._message(category or ALL, LEVEL.DEBUG, msg, args, kwargs) + + def info(self, category, msg, *args, **kwargs): + """Print an information message.""" + self._message(category or ALL, LEVEL.INFO, msg, args, kwargs) + + def warn(self, category, msg, *args, **kwargs): + """Print a warning message.""" + self._message(category or ALL, LEVEL.WARN, msg, args, kwargs) + + def error(self, category, msg, *args, **kwargs): + """Print an error message.""" + self._message(category or ALL, LEVEL.ERROR, msg, args, kwargs) + + critical = error + + def add_memory_info(self, category): + """Shortcut to add memory informations.""" + self.extend_message(category, mem_msg_callback) + + def use_aster_print(self): + """Shortcut to use aster.affiche function to print the messages.""" + import aster + self.register_print_function(partial(aster.affiche, 'MESSAGE')) + + +# defined extensions +def insert_header(category, level, msg, args, kwargs): + """Insert the header.""" + header = category.get_header(level) + if header: + msg = header + msg + return msg, args + +def stack_header_callback(category, level, msg, args, kwargs): + """To insert the origin.""" + if level <= LEVEL.DEBUG: + stack_id = -5 + kwargs.get('stack_id', 0) + stack = traceback.format_stack(limit=10)[stack_id] + mat = REGEXP_ORIG.search(stack) + origin = '[%s:%s in %s] ' % (osp.basename(mat.group(1)), mat.group(2), mat.group(3)) + msg = origin + msg + return msg, args + + +# objet singleton +message = InfoLevel(LEVEL.INFO) +message.add(ALL) +message.add(SUPERV) +message.add(MISS) + +# callback to add memory information +_pid = os.getpid() + +RE_VMPEAK = re.compile('VmPeak:\s*([0-9]+)\s*([kMGBo]+)', re.M | re.I) + +def memory_used(pid): + """Return the current VmPeak value.""" + p = Popen(['cat', '/proc/%s/status' % pid], stdout=PIPE) + output = p.communicate()[0] + mat = RE_VMPEAK.search(output) + return int(mat.group(1)) / 1024. + +current_memory_used = partial(memory_used, _pid) + +def mem_msg_callback(category, level, msg, args, kwargs): + """Callback to add memory infos to message.""" + if level <= LEVEL.DEBUG: + msg = msg + " - VmPeak : %.2f Mo" + args = tuple(list(args) + [current_memory_used(), ]) + return msg, args + + +if __name__ == "__main__": + message.set_level(SUPERV, LEVEL.WARN) + message.set_level(MISS, LEVEL.DEBUG) + message.debug(None, "debug message") + message.info(ALL, "information message") + message.warn(None, "warning message") + message.error(ALL, "error message") + message.add_memory_info() + message.debug(MISS, "debug supervisor message") + message.info(SUPERV, "information supervisor message") + message.warn(SUPERV, "warning supervisor message") + message.error(SUPERV, "error supervisor message") + message.critical(MISS, "test the critical alias") + + diff --git a/Noyau/N_types.py b/Noyau/N_types.py index be4e9726..3a5c0358 100644 --- a/Noyau/N_types.py +++ b/Noyau/N_types.py @@ -1,8 +1,8 @@ -#@ MODIF N_types Noyau DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_types Noyau DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2010 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -23,8 +23,6 @@ Ce module contient des fonctions utilitaires pour tester les types """ -from N_ASSD import ASSD - # use isinstance() instead of type() because objects returned from numpy arrays # inherit from python scalars but are numpy.float64 or numpy.int32... @@ -56,6 +54,15 @@ def is_enum(obj): return is_list(obj) or is_tuple(obj) def is_assd(obj): + from N_ASSD import ASSD return isinstance(obj, ASSD) +def force_list(obj): + """Retourne `obj` si c'est une liste ou un tuple, + sinon retourne [obj,] (en tant que list). + """ + if not is_enum(obj): + obj = [obj,] + return list(obj) + diff --git a/Noyau/N_utils.py b/Noyau/N_utils.py index 50198669..4641ee64 100644 --- a/Noyau/N_utils.py +++ b/Noyau/N_utils.py @@ -1,24 +1,22 @@ -#@ MODIF N_utils Noyau DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS +#@ MODIF N_utils Noyau DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. +# 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. -# -# +# 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. # ====================================================================== @@ -36,11 +34,11 @@ from N_types import is_int, is_float, is_complex, is_str, is_enum, is_assd SEP='_' try: - # Si la version de Python possède la fonction _getframe + # Si la version de Python possede la fonction _getframe # on l'utilise. cur_frame=sys._getframe except: - # Sinon on l'émule + # Sinon on l'emule def cur_frame(offset=0): """ Retourne la frame d execution effective eventuellement en remontant de offset niveaux dans la pile d execution @@ -57,8 +55,8 @@ except: def callee_where(niveau=4): - """ - recupere la position de l appel + """ + recupere la position de l appel """ frame=cur_frame(niveau) if frame == None: return 0,"inconnu",0,{} @@ -71,7 +69,7 @@ def callee_where(niveau=4): def AsType(a): """ Retourne le type d'un concept (a) à partir - des caractéristiques de l'objet Python + des caracteristiques de l'objet Python """ if is_enum(a): return AsType(a[0]) if is_assd(a): return type(a) @@ -90,9 +88,9 @@ def prbanner(s): def repr_float(valeur): - """ - Cette fonction représente le réel valeur comme une chaine de caractères - sous forme mantisse exposant si nécessaire cad si le nombre contient plus de + """ + Cette fonction represente le reel valeur comme une chaine de caracteres + sous forme mantisse exposant si necessaire cad si le nombre contient plus de 5 caractères NB : valeur est un réel au format Python ou une chaine de caractères représentant un réel """ @@ -151,3 +149,49 @@ def repr_float(valeur): s=s+'E'+neg*'-'+repr(cpt) return s + +def import_object(uri): + """Load and return a python object (class, function...). + Its `uri` looks like "mainpkg.subpkg.module.object", this means + that "mainpkg.subpkg.module" is imported and "object" is + the object to return. + """ + path = uri.split('.') + modname = '.'.join(path[:-1]) + if len(modname) == 0: + raise ImportError(u"invalid uri: %s" % uri) + mod = object = '?' + objname = path[-1] + try: + __import__(modname) + mod = sys.modules[modname] + except ImportError, err: + raise ImportError(u"can not import module : %s (%s)" % (modname, str(err))) + try: + object = getattr(mod, objname) + except AttributeError, err: + raise AttributeError(u"object (%s) not found in module '%s'. " + "Module content is: %s" % (objname, modname, tuple(dir(mod)))) + return object + + +class Enum(object): + """ + This class emulates a C-like enum for python. It is initialized with a list + of strings to be used as the enum symbolic keys. The enum values are automatically + generated as sequencing integer starting at 0. + """ + def __init__(self, *keys): + """Constructor""" + self._dict_keys = {} + for inum, key in enumerate(keys): + setattr(self, key, 2**inum) + self._dict_keys[2**inum] = key + + def exists(self, value): + """Tell if value is in the enumeration""" + return self.get_id(value) is not None + + def get_id(self, value): + """Return the key associated to the given value""" + return self._dict_keys.get(value, None) diff --git a/Noyau/__init__.py b/Noyau/__init__.py index 5a85d29d..e956f6ca 100644 --- a/Noyau/__init__.py +++ b/Noyau/__init__.py @@ -1,27 +1,27 @@ -#@ MODIF __init__ Noyau DATE 16/05/2007 AUTEUR COURTOIS M.COURTOIS +#@ MODIF __init__ Noyau DATE 12/10/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== -""" +""" Ce package fournit les classes de base d'EFICAS. Ces classes permettent d'effectuer quelques opérations basiques : @@ -38,6 +38,12 @@ import context import __builtin__ __builtin__.CONTEXT=context +def _(msg): + """Differs translation.""" + # 'codex' should install its translation functions later + return msg +__builtin__._ = _ + # Classes de base from N_SIMP import SIMP from N_FACT import FACT diff --git a/Noyau/asojb.py b/Noyau/asojb.py index a5f2fc99..8b0176cb 100644 --- a/Noyau/asojb.py +++ b/Noyau/asojb.py @@ -1,9 +1,9 @@ -#@ MODIF asojb Noyau DATE 21/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF asojb Noyau DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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 @@ -22,7 +22,7 @@ """ Description des OJB jeveux """ -from basetype import Type, MetaType +from basetype import Type from asnom import SDNom from ascheckers import CheckLog import traceback,sys diff --git a/Noyau/basetype.py b/Noyau/basetype.py index 5eb7449f..601809df 100644 --- a/Noyau/basetype.py +++ b/Noyau/basetype.py @@ -1,22 +1,22 @@ -#@ MODIF basetype Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF basetype Noyau DATE 28/06/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # 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. +# COPYRIGHT (C) 1991 - 2011 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. # ====================================================================== """ @@ -38,7 +38,7 @@ C'est ce comportement qui est captur La classe `Type` hérite de BaseType et y associe la métaclasse MetaType. """ -from copy import copy,deepcopy + import cPickle __docformat__ = "restructuredtext" @@ -131,26 +131,35 @@ class BaseType(object): obj = getattr( self, nam ) obj.reparent( self, nam ) + def supprime(self, delete=False): + """Permet de casser les boucles de références pour que les ASSD + puissent être détruites. + Si `delete` vaut True, on supprime l'objet lui-même et pas + seulement les références remontantes.""" + self._parent = None + self._name = None + for nam in self._subtypes: + obj = getattr(self, nam) + obj.supprime(delete) + #XXX MC : avec ce code, j'ai l'impression qu'on supprime aussi + # des attributs de classe, ce qui pose problème pour une + # instanciation future... + # Dans une version précédente, on utilisait l'attribut + # sd_deleted pour ne faire qu'une fois, à voir. + # Supprimer les références remontantes devrait suffir. + #if delete: + #while len(self._subtypes): + #nam = self._subtypes.pop(0) + #try: + #delattr(self, nam) + #except AttributeError: + #pass + def base( self ): if self._parent is None: return self return self._parent.base() - def change_type(self, new_type, nomj=None): - """Méthode appelée quand on change a posteriori le type - du concept (pour les 'CO'). - Si `nomj` est None, on prend `self.nom`. - """ - self.__class__ = new_type - nomj = nomj or self.nom - new_type.dup_attr(self) - - # Comment appeler AsBase.__init__ ? - # type(nomj)=str donc plus simple que dans AsBase.__init__... - assert isinstance(nomj, str), 'Valeur inattendue pour nomj : %s' % nomj - assert self.nomj is not self.__class__.nomj - self.nomj.nomj = nomj - class Type(BaseType): __metaclass__ = MetaType diff --git a/Noyau/context.py b/Noyau/context.py index 27c2528e..bdd8c50e 100644 --- a/Noyau/context.py +++ b/Noyau/context.py @@ -1,30 +1,36 @@ -#@ MODIF context Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF context Noyau DATE 15/11/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== - _root=None _cata=None debug=0 +from Noyau.N_info import message, SUPERV + +# Le "current step" est l'étape courante. +# Une macro se déclare étape courante dans sa méthode Build avant de construire +# ses étapes filles ou dans BuildExec avant de les exécuter. +# Les étapes simples le font aussi : dans Execute et BuildExec. +# (Build ne fait rien pour une étape) def set_current_step(step): """ @@ -33,6 +39,7 @@ def set_current_step(step): global _root if _root : raise "Impossible d'affecter _root. Il devrait valoir None" _root=step + message.debug(SUPERV, "current_step = %s", step and step.nom, stack_id=-1) def get_current_step(): """ diff --git a/Noyau/nommage.py b/Noyau/nommage.py index 56988b6d..431d3b06 100644 --- a/Noyau/nommage.py +++ b/Noyau/nommage.py @@ -1,24 +1,24 @@ -#@ MODIF nommage Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF nommage Noyau DATE 25/10/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== @@ -26,7 +26,7 @@ Ce module sert à nommer les concepts produits par les commandes. Le nom du concept est obtenu en appelant la fonction GetNomConceptResultat du module avec le nom de la commande en argument. - + Cette fonction parcourt le source dans lequel la commande se trouve, parse le fichier et retrouve le nom du concept qui se trouve à gauche du signe = précédant le nom de la commande. @@ -40,6 +40,7 @@ # Modules Python import re,string import linecache +from functools import partial # Modules EFICAS import N_utils @@ -48,7 +49,7 @@ regex1='=?\s*%s\s*\(' #commentaire standard precede d'un nombre quelconque de blancs (pas multiligne) pattern_comment = re.compile(r"^\s*#.*") -def GetNomConceptResultat(ope): +def _GetNomConceptResultat(ope, level=2): """ Cette fonction recherche dans la pile des appels, l'appel à la commande qui doit etre situé à 2 niveaux au-dessus (cur_frame(2)). @@ -58,14 +59,14 @@ def GetNomConceptResultat(ope): et on vérifie que cette ligne correspond véritablement à l'appel. En effet, lorsque les commandes tiennent sur plusieurs lignes, on retrouve - la dernière ligne. Il faut donc remonter dans le source jusqu'à la première + la dernière ligne. Il faut donc remonter dans le source jusqu'à la première ligne. Enfin la fonction evalnom forme un nom acceptable lorsque le concept est un élément d'une liste, par exemple. """ - f=N_utils.cur_frame(2) + f=N_utils.cur_frame(level) lineno = f.f_lineno # XXX Too bad if -O is used #lineno = f_lineno(f) # Ne marche pas toujours co = f.f_code @@ -148,3 +149,24 @@ def f_lineno(f): line = line + ord(tab[i+1]) return line + +class NamingSystem: + """Cette classe définit un système de nommage dynamique des concepts.""" + def __init__(self): + """Initialisation""" + self.native = _GetNomConceptResultat + self.use_global_naming() + + def use_naming_function(self, function): + """Utilise une fonction particulière de nommage.""" + self.naming_func = function + + def use_global_naming(self): + """Utilise la fonction native de nommage.""" + self.naming_func = partial(self.native, level=3) + + def __call__(self, *args): + """Appel à la fonction de nommage.""" + return self.naming_func(*args) + +GetNomConceptResultat = NamingSystem() diff --git a/Openturns_Study/OpenTURNS_Cata_Study_V8.py b/Openturns_Study/OpenTURNS_Cata_Study_V8.py index 6a43ee35..e19a5a3f 100644 --- a/Openturns_Study/OpenTURNS_Cata_Study_V8.py +++ b/Openturns_Study/OpenTURNS_Cata_Study_V8.py @@ -836,6 +836,7 @@ DETERMINISTICVARIABLE = OPER ( nom = "DETERMINISTICVARIABLE", op = None, fr = "Variable deterministe", ang = "Deterministic variable", + UIinfo = {"groupes": ("CACHE")}, N = SIMP ( statut = 'o', typ = "TXM", diff --git a/Openturns_Study/catalogues_openturns.ini b/Openturns_Study/catalogues_openturns.ini index 35cd8c86..54f17f95 100644 --- a/Openturns_Study/catalogues_openturns.ini +++ b/Openturns_Study/catalogues_openturns.ini @@ -1,10 +1,10 @@ -# Choix des catalogues import os -#rep_cata=os.path.dirname(os.path.abspath(__file__)) -rep_cata=os.getcwd() +from Editeur.catadesc import CatalogDescription + +# Choix des catalogues catalogues = ( -# (code,version,catalogue,formatIn,formatOut) - ('OPENTURNS_STUDY','V8',os.path.join(rep_cata,'OpenTURNS_Cata_Study_V10.py'),'openturns_study','wrapper'), + CatalogDescription(identifier = "OPENTURNS_STUDY_V8", + cata_file_path = os.path.join(os.path.abspath(os.path.dirname(fic_ini)), 'OpenTURNS_Cata_Study_V8.py'), + file_format = "openturns_study"), ) - diff --git a/Openturns_Study/configuration_OPENTURNS_STUDY.py b/Openturns_Study/configuration_OPENTURNS_STUDY.py index 7eab3837..e6e8d9eb 100644 --- a/Openturns_Study/configuration_OPENTURNS_STUDY.py +++ b/Openturns_Study/configuration_OPENTURNS_STUDY.py @@ -19,7 +19,7 @@ # # ====================================================================== """ - Ce module sert pour charger les paramètres de configuration d'EFICAS + Ce module sert pour charger les paramètres de configuration d'EFICAS """ # Modules Python import configuration @@ -38,8 +38,8 @@ class CONFIG(configuration.CONFIG_BASE): self.labels_user=['exec_acrobat', 'catalogues','savedir','path_doc','OpenTURNS_path'] self.labels_eficas=["OpenTURNS_path","rep_user","INSTALLDIR","path_doc","exec_acrobat"] self.labels_eficas=self.labels_eficas+["rep_cata","initialdir","savedir","catalogues"] - self.setValeurs() self.cataFile="catalogues_openturns.ini" + self.setValeurs() #--------------------------------------- def lecture_fichier_ini_standard(self): diff --git a/Openturns_Study/prefs.py b/Openturns_Study/prefs.py index 84f4d9a3..346915de 100644 --- a/Openturns_Study/prefs.py +++ b/Openturns_Study/prefs.py @@ -1 +1,4 @@ code='OPENTURNS_STUDY' +import sys, os +if os.path.abspath(__file__) not in sys.path : + sys.path.insert(0,os.path.dirname(os.path.abspath(__file__))) diff --git a/Openturns_Study/prefs_OPENTURNS_STUDY.py b/Openturns_Study/prefs_OPENTURNS_STUDY.py index 7b643304..7f544647 100644 --- a/Openturns_Study/prefs_OPENTURNS_STUDY.py +++ b/Openturns_Study/prefs_OPENTURNS_STUDY.py @@ -23,18 +23,18 @@ import os, sys # Les variables pouvant positionnees sont : print "import des prefs de OPENTURNS" -# REPINI sert à localiser le fichier +# repIni sert à localiser le fichier # initialdir sert comme directory initial des QFileDialog # positionnee a repin au debut mise a jour dans configuration -REPINI=os.path.dirname(os.path.abspath(__file__)) -initialdir=REPINI +repIni=os.path.dirname(os.path.abspath(__file__)) +initialdir=repIni -# INSTALLDIR sert à localiser l'installation d'Eficas -INSTALLDIR=os.path.join(REPINI,'..') +# INSTALLDIR sert à localiser l'installation d'Eficas +INSTALLDIR=os.path.join(repIni,'..') # Codage des strings qui accepte les accents (en remplacement de 'ascii') -# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang lang='fr' encoding='iso-8859-1' @@ -46,6 +46,8 @@ savedir = os.environ['HOME'] # OpenTURNS Python module -OpenTURNS_path="/local00/home/dutka/OpenTURNS/dutka/build/install/lib/python2.4/site-packages" +OpenTURNS_path="" # Choix des catalogues -sys.path[:0]=[INSTALLDIR, OpenTURNS_path] +if len(OpenTURNS_path) > 0: + sys.path[:0]=[OpenTURNS_path] +sys.path[:0]=[INSTALLDIR] diff --git a/Openturns_Study/prefs_OPENTURNS_STUDY.py.in b/Openturns_Study/prefs_OPENTURNS_STUDY.py.in index e9454058..d927f9e4 100644 --- a/Openturns_Study/prefs_OPENTURNS_STUDY.py.in +++ b/Openturns_Study/prefs_OPENTURNS_STUDY.py.in @@ -23,18 +23,18 @@ import os, sys # Les variables pouvant positionnees sont : print "import des prefs de OPENTURNS" -# REPINI sert à localiser le fichier +# repIni sert à localiser le fichier # initialdir sert comme directory initial des QFileDialog # positionnee a repin au debut mise a jour dans configuration -REPINI=os.path.dirname(os.path.abspath(__file__)) -initialdir=REPINI +repIni=os.path.dirname(os.path.abspath(__file__)) +initialdir=repIni -# INSTALLDIR sert à localiser l'installation d'Eficas -INSTALLDIR=os.path.join(REPINI,'..') +# INSTALLDIR sert à localiser l'installation d'Eficas +INSTALLDIR=os.path.join(repIni,'..') # Codage des strings qui accepte les accents (en remplacement de 'ascii') -# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang lang='fr' encoding='iso-8859-1' @@ -48,4 +48,6 @@ savedir = os.environ['HOME'] # OpenTURNS Python module OpenTURNS_path="@OpenTURNS_PYTHON_MODULE_DIR@" # Choix des catalogues -sys.path[:0]=[INSTALLDIR, OpenTURNS_path] +if len(OpenTURNS_path) > 0: + sys.path[:0]=[OpenTURNS_path] +sys.path[:0]=[INSTALLDIR] diff --git a/Openturns_Wrapper/catalogues_openturns.ini b/Openturns_Wrapper/catalogues_openturns.ini index cbc9643b..46ffc331 100644 --- a/Openturns_Wrapper/catalogues_openturns.ini +++ b/Openturns_Wrapper/catalogues_openturns.ini @@ -1,11 +1,10 @@ -# Choix des catalogues import os -rep_cata=os.getcwd() +from Editeur.catadesc import CatalogDescription + +# Choix des catalogues catalogues = ( -# (code,version,catalogue,formatIn,formatOut) - #('OPENTURNS_WRAPPER','V1',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V1.py'),'openturns_wrapper','wrapper'), - ('OPENTURNS_WRAPPER','V3',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V4.py'),'openturns_wrapper','wrapper'), - #('OPENTURNS','Wrapper',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V1.py'),'openturns'), + CatalogDescription(identifier = "OPENTURNS_WRAPPER_V4", + cata_file_path=os.path.join(os.path.abspath(os.path.dirname(fic_ini)),'OpenTURNS_Cata_Wrapper_V4.py'), + file_format = "openturns_wrapper"), ) - diff --git a/Openturns_Wrapper/configuration_OPENTURNS_WRAPPER.py b/Openturns_Wrapper/configuration_OPENTURNS_WRAPPER.py index f15bcd99..20dfb33d 100644 --- a/Openturns_Wrapper/configuration_OPENTURNS_WRAPPER.py +++ b/Openturns_Wrapper/configuration_OPENTURNS_WRAPPER.py @@ -19,7 +19,7 @@ # # ====================================================================== """ - Ce module sert pour charger les paramètres de configuration d'EFICAS + Ce module sert pour charger les paramètres de configuration d'EFICAS """ # Modules Python import configuration @@ -38,8 +38,8 @@ class CONFIG(configuration.CONFIG_BASE): self.labels_user=['exec_acrobat', 'catalogues','savedir','path_doc','OpenTURNS_path'] self.labels_eficas=["OpenTURNS_path","rep_user","INSTALLDIR","path_doc","exec_acrobat"] self.labels_eficas=self.labels_eficas+["rep_cata","initialdir","savedir","catalogues"] - self.setValeurs() self.cataFile="catalogues_openturns.ini" + self.setValeurs() #--------------------------------------- diff --git a/Openturns_Wrapper/prefs.py b/Openturns_Wrapper/prefs.py index a1c7888e..6bf5fd50 100644 --- a/Openturns_Wrapper/prefs.py +++ b/Openturns_Wrapper/prefs.py @@ -19,3 +19,6 @@ # # ====================================================================== code = "OPENTURNS_WRAPPER" +import sys, os +if os.path.dirname(os.path.abspath(__file__)) not in sys.path : + sys.path.insert(0,os.path.dirname(os.path.abspath(__file__))) diff --git a/Openturns_Wrapper/prefs_OPENTURNS_WRAPPER.py b/Openturns_Wrapper/prefs_OPENTURNS_WRAPPER.py index 7b643304..50616278 100644 --- a/Openturns_Wrapper/prefs_OPENTURNS_WRAPPER.py +++ b/Openturns_Wrapper/prefs_OPENTURNS_WRAPPER.py @@ -23,18 +23,18 @@ import os, sys # Les variables pouvant positionnees sont : print "import des prefs de OPENTURNS" -# REPINI sert à localiser le fichier +# repIni sert à localiser le fichier # initialdir sert comme directory initial des QFileDialog # positionnee a repin au debut mise a jour dans configuration -REPINI=os.path.dirname(os.path.abspath(__file__)) -initialdir=REPINI - -# INSTALLDIR sert à localiser l'installation d'Eficas -INSTALLDIR=os.path.join(REPINI,'..') +repIni=os.path.dirname(os.path.abspath(__file__)) +initialdir=repIni +# INSTALLDIR sert à localiser l'installation d'Eficas +INSTALLDIR=os.path.abspath(os.path.join(repIni,'..')) +sys.path.insert(0,INSTALLDIR) # Codage des strings qui accepte les accents (en remplacement de 'ascii') -# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang lang='fr' encoding='iso-8859-1' @@ -46,6 +46,7 @@ savedir = os.environ['HOME'] # OpenTURNS Python module -OpenTURNS_path="/local00/home/dutka/OpenTURNS/dutka/build/install/lib/python2.4/site-packages" +OpenTURNS_path="" # Choix des catalogues -sys.path[:0]=[INSTALLDIR, OpenTURNS_path] +if len(OpenTURNS_path) > 0: + sys.path[:0]=[OpenTURNS_path] diff --git a/Openturns_Wrapper/prefs_OPENTURNS_WRAPPER.py.in b/Openturns_Wrapper/prefs_OPENTURNS_WRAPPER.py.in index e9454058..d37dc624 100644 --- a/Openturns_Wrapper/prefs_OPENTURNS_WRAPPER.py.in +++ b/Openturns_Wrapper/prefs_OPENTURNS_WRAPPER.py.in @@ -23,18 +23,18 @@ import os, sys # Les variables pouvant positionnees sont : print "import des prefs de OPENTURNS" -# REPINI sert à localiser le fichier +# repIni sert à localiser le fichier # initialdir sert comme directory initial des QFileDialog # positionnee a repin au debut mise a jour dans configuration -REPINI=os.path.dirname(os.path.abspath(__file__)) -initialdir=REPINI - -# INSTALLDIR sert à localiser l'installation d'Eficas -INSTALLDIR=os.path.join(REPINI,'..') +repIni=os.path.dirname(os.path.abspath(__file__)) +initialdir=repIni +# INSTALLDIR sert à localiser l'installation d'Eficas +INSTALLDIR=os.path.abspath(os.path.join(repIni,'..')) +sys.path.insert(0,INSTALLDIR) # Codage des strings qui accepte les accents (en remplacement de 'ascii') -# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang lang='fr' encoding='iso-8859-1' @@ -48,4 +48,5 @@ savedir = os.environ['HOME'] # OpenTURNS Python module OpenTURNS_path="@OpenTURNS_PYTHON_MODULE_DIR@" # Choix des catalogues -sys.path[:0]=[INSTALLDIR, OpenTURNS_path] +if len(OpenTURNS_path) > 0: + sys.path[:0]=[OpenTURNS_path] diff --git a/Saturne/editeur.ini b/Saturne/editeur.ini index 8d77961e..fdac536a 100644 --- a/Saturne/editeur.ini +++ b/Saturne/editeur.ini @@ -2,7 +2,7 @@ import os import prefs -rep_cata = prefs.REPINI +rep_cata = prefs.repIni # Accès à la documentation path_doc = os.path.join(rep_cata,'..','Doc') diff --git a/Saturne/prefs.py b/Saturne/prefs.py index d0cd9255..57d38586 100644 --- a/Saturne/prefs.py +++ b/Saturne/prefs.py @@ -1,20 +1,20 @@ # -*- coding: utf-8 -*- import os -# REPINI sert à localiser le fichier editeur.ini +# repIni sert à localiser le fichier editeur.ini # Obligatoire -REPINI=os.path.dirname(os.path.abspath(__file__)) +repIni=os.path.dirname(os.path.abspath(__file__)) # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') # CODE_PATH sert à localiser Noyau et Validation éventuellement # non contenus dans la distribution EFICAS # Par défaut on utilise les modules de INSTALLDIR # Peut valoir None (defaut) CODE_PATH = None -#CODE_PATH = os.path.join(REPINI,'../../Superv') +#CODE_PATH = os.path.join(repIni,'../../Superv') # ICONDIR sert à localiser le répertoire contenant les icones # Par défaut on utilise le répertoire icons dans Editeur diff --git a/Sep/SEP_Cata_V0.py b/Sep/SEP_Cata_V0.py index 9a0097be..0e0957b3 100644 --- a/Sep/SEP_Cata_V0.py +++ b/Sep/SEP_Cata_V0.py @@ -5,29 +5,110 @@ ## -------------------------------------------------- # from Accas import * + # #CONTEXT.debug = 1 JdC = JDC_CATA ( code = 'SEP', - execmodul = None, - # regles = ( AU_MOINS_UN ( 'M_TUBE','MAILLAGE_COUDE','CHARGE_LIMITE ), ), - regles = ( AU_MOINS_UN ( 'S_EP_INTERNE',), ), - ) # Fin JDC_CATA + execmodul = None, + # regles=(AU_MOINS_UN('STRUCTURE_SIMPLE','STRUCTURE_COMPOSEE',),), + regles=(AU_PLUS_UN('STRUCTURE_SIMPLE',),), + )# Fin JDC_CATA # -S_EP_INTERNE= MACRO (nom = 'S_EP_INTERNE', + +STRUCTURE_SIMPLE= MACRO (nom = 'STRUCTURE_SIMPLE', op = None, sd_prod = None, reentrant = 'n', UIinfo = {"groupes":("Outils métier",)}, - fr = "Sous epaisseur ", + fr = "sous epaisseur ", dir_name = SIMP(statut='o', typ='TXM',), - methode = SIMP(statut='o', typ='TXM',into=('generatrices','tortue',),), - PARA_GEOM = FACT( statut='o', - max=1, - r_ext=SIMP(statut='o', typ='R', defaut=228.6,val_min=100,val_max=300), - unite=SIMP(statut='o', typ='TXM', defaut='mm',into=('mm',),), - ep_nominale=SIMP(statut='o', typ='R', defaut=22.000), - ), -) + + + TYPE_SEP = SIMP(statut='o', typ='TXM',into=('TUBE_SOUS_EP_INTERNE','COUDE_SOUS_EP_INTERNE')), + + CHARGE_LIMITE = SIMP(statut='o', typ='TXM',into=('OUI', 'NON')), + + b_tube_sous_epaisseur =BLOC(condition="(TYPE_SEP=='TUBE_SOUS_EP_INTERNE') ", + + MAIL_TUBE = FACT( statut='o', + fr = "Parametres maillage du tube ", + POINTS_DE_MESURE = FACT( statut='o', + FICHIER1 =SIMP(statut='f',typ='Fichier', + fr="Format du fichier : CSV.",), + FICHIER2 =SIMP(statut='f',typ='Fichier', + fr="Format du fichier : CSV.",), + ), + R_EXT =SIMP(statut='o', typ='R', fr="rayon exterieur du tube"), + EP_NOMINALE =SIMP(statut='o', typ='R', fr="epaisseur nominale du tube sans sous epaisseur"), + NB_SEG_AMORTISSEMENT =SIMP(statut='o', typ='I', defaut=11 , val_min=1, fr="nombre de segments dans la longueur d'amortissement"), + NB_SEG_TRANSITION =SIMP(statut='o', typ='I', defaut=4 , val_min=1, fr="nombre de segments dans longueur de transition"), + NB_SEG_GENERATRICES =SIMP(statut='o', typ='I', defaut=5 , val_min=1, fr="nombre de segments dans la longueur des generatrices dans la zone de sous épaisseur"), + PETITE_DISTANCE =SIMP(statut='o', typ='R', defaut=100.0 , fr="distance entre deux abscisses de points de mesure au dessous de laquelle on discrétise avec nb_seg_petites_distances au lieu de nb_seg_generatrices"), + NB_SEG_PETITES_DISTANCES =SIMP(statut='o', typ='I', defaut=3 , val_min=3 , fr="nombre de segments dans les aretes dont la longueur est inferieur a petite distance"), + NB_SEG_ARC =SIMP(statut='o', typ='I', defaut=5 , val_min=2 , fr="nombre de segments dans l'arc du tube entre deux generatrices"), + NB_SEG_EP =SIMP(statut='o', typ='I', defaut=3 , val_min=1 , fr="nombre de segments dans l'epaisseur du tube"), + ), + + INFO = SIMP(statut='f',typ='I',defaut=1,into=(0,1,2)), + ), + + b_coude_sous_epaisseur =BLOC(condition="(TYPE_SEP=='COUDE_SOUS_EP_INTERNE') ", + + MAIL_COUDE = FACT( statut='o', + fr = "Parametres maillage du coude ", + POINTS_DE_MESURE = FACT( statut='o', + FICHIER1 =SIMP(statut='f',typ='Fichier', + fr="Format du fichier : CSV.",), + ), + R_COUDE =SIMP(statut='o', typ='R', fr="rayon du coude"), + R_EXT =SIMP(statut='o', typ='R', fr="rayon exterieur"), + EP_NOMINALE =SIMP(statut='o', typ='R', fr="epaisseur nominale sans sous epaisseur"), + ANGLE_COUDE =SIMP(statut='o', typ='R', defaut=90 , val_min=90. , val_max=90. ,fr="angle du coude"), + ORIENTATION_COUDE =SIMP(statut='o', typ='TXM',defaut='D',into=('D','G'),fr="orientation du coude"), + LONGUEUR_PROLONGEMENT_AMONT=SIMP(statut='o', typ='R', fr="longueur du prolongement amont"), + LONGUEUR_PROLONGEMENT_AVAL =SIMP(statut='o', typ='R', fr="longueur du prologenment aval"), + PAS_MESURE =SIMP(statut='o', typ='I', fr="pas de la mesure"), + DEBUT_MESURE =SIMP(statut='o', typ='R', fr="distance de la premiere mesure"), + ANGLE_MESURE =SIMP(statut='o', typ='R', defaut=45. ,fr="angle entre deux generatrices"), + NB_SEG_PROLONGEMENT_AMONT =SIMP(statut='o', typ='I', defaut=6 , val_min=1 ,fr="nombre de segments dans la longueur de prolongement amont"), + NB_SEG_PROLONGEMENT_AVAL =SIMP(statut='o', typ='I', defaut=6 , val_min=1 ,fr="nombre de segments dans la longueur de prolongement aval"), + NB_SEG_AMORTISSEMENT =SIMP(statut='o', typ='I', defaut=10 , val_min=1 ,fr="nombre de segments dans la longueur d'amortissement"), + NB_SEG_TRANSITION =SIMP(statut='o', typ='I', defaut=5 , val_min=1 ,fr="nombre de segments dans longueur de transition"), + NB_SEG_GENERATRICES =SIMP(statut='o', typ='I', defaut=25 , val_min=25 ,fr="nombre de segments dans la longueur des generatrices dans la zone de sous épaisseur"), + NB_SEG_ARC =SIMP(statut='o', typ='I', defaut=7 , val_min=2 ,fr="nombre de segments dans l'arc du coude entre deux generatrices"), + NB_SEG_EP =SIMP(statut='o', typ='I', defaut=3 , val_min=1 ,fr="nombre de segments dans l'epaissuer"), + ), + + INFO = SIMP(statut='f',typ='I',defaut=1,into=(0,1,2)), + ), + + + b_charge_limite_non=BLOC(condition = "CHARGE_LIMITE == 'NON' ", + INFO = SIMP(statut='f',typ='I',defaut=1,into=(0,1,2)), + ), + + b_charge_limite_oui=BLOC(condition = "((CHARGE_LIMITE == 'OUI') )", + + TYPE_CHARGE_LIMITE= SIMP(statut='o', typ='TXM', into=('CHARGE_LIMITE_INF','CHARGE_LIMITE_SUP',),), + + PARAMETRES_CALCUL = FACT( statut='o', + fr = "Parametres pour calcul de charge limite ", + + MEMOIRE=SIMP(statut='o', typ='I', ), + TEMPS =SIMP(statut='o', typ='I', ), + MACHINE=SIMP(statut='o', typ='TXM', defaut='LOCAL',into=('LOCAL','DISTANT'),), + + ), + PARAMETRES_CHARGE_LIMITE = FACT( statut='o', + fr = "Parametres materiau pour calcul de charge limite ", + + E =SIMP(statut='o', typ='R', fr="Module d'Young"), + NU=SIMP(statut='o', typ='R', fr="coefficient de poisson"), + SY=SIMP(statut='o', typ='R', fr="limite d'elasticite"), + ), + + ), +) diff --git a/Sep/catalogues_sep.ini b/Sep/catalogues_sep.ini index ca1eb025..7aee501b 100644 --- a/Sep/catalogues_sep.ini +++ b/Sep/catalogues_sep.ini @@ -9,6 +9,6 @@ catalogues = ( #('SEP','V1_1',os.path.join(rep_cata,'SEP_Cata_V1_1.py'),'SEP','SEP'), #('SEP','V1_2',os.path.join(rep_cata,'SEP_Cata_V1_2.py'),'SEP','SEP'), # ('SEP','V1_3',os.path.join(rep_cata,'SEP_Cata_V1_3.py'),'SEP','SEP'), - ('SEP','V1',os.path.join(rep_cata,'SEP_Cata_V0_1.py'),'SEP','SEP'), + ('SEP','V1',os.path.join(rep_cata,'SEP_Cata_V0.py'),'SEP','SEP'), ) diff --git a/Sep/editeur.ini b/Sep/editeur.ini index 4ee8cc32..83dff66c 100644 --- a/Sep/editeur.ini +++ b/Sep/editeur.ini @@ -22,7 +22,7 @@ import os from Sous_epaisseur import prefs -rep_cata = os.path.join(prefs.REPINI,'Cata') +rep_cata = os.path.join(prefs.repIni,'Cata') print rep_cata # Accès à la documentation Aster diff --git a/Sep/prefs.py b/Sep/prefs.py index c29caf84..016a9cc4 100644 --- a/Sep/prefs.py +++ b/Sep/prefs.py @@ -21,14 +21,13 @@ import os,sys -# REPINI sert à localiser le fichier editeur.ini +# repIni sert à localiser le fichier editeur.ini # Obligatoire -REPINI=os.path.dirname(os.path.abspath(__file__)) -repIni=REPINI +repIni=os.path.dirname(os.path.abspath(__file__)) # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') # CODE_PATH sert à localiser Noyau et Validation éventuellement # non contenus dans la distribution EFICAS @@ -47,7 +46,7 @@ encoding='iso-8859-1' EditeurDir=INSTALLDIR+"/Editeur" -sys.path[:0]=[INSTALLDIR] +sys.path.insert(0,INSTALLDIR) ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') diff --git a/Sep/prefs_SEP.py b/Sep/prefs_SEP.py index c29caf84..8ef08530 100644 --- a/Sep/prefs_SEP.py +++ b/Sep/prefs_SEP.py @@ -21,14 +21,14 @@ import os,sys -# REPINI sert à localiser le fichier editeur.ini +# repIni sert à localiser le fichier editeur.ini # Obligatoire -REPINI=os.path.dirname(os.path.abspath(__file__)) -repIni=REPINI +repIni=os.path.dirname(os.path.abspath(__file__)) # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') +sys.path.insert(0,INSTALLDIR) # CODE_PATH sert à localiser Noyau et Validation éventuellement # non contenus dans la distribution EFICAS @@ -47,8 +47,6 @@ encoding='iso-8859-1' EditeurDir=INSTALLDIR+"/Editeur" -sys.path[:0]=[INSTALLDIR] - ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') # Preference diff --git a/Syrthes/editeur.ini b/Syrthes/editeur.ini index b7ac1321..d3911813 100644 --- a/Syrthes/editeur.ini +++ b/Syrthes/editeur.ini @@ -2,7 +2,7 @@ import os import prefs -rep_cata = prefs.REPINI +rep_cata = prefs.repIni # Accès à la documentation path_doc = os.path.join(rep_cata,'..','Doc') diff --git a/Syrthes/prefs.py b/Syrthes/prefs.py index d0cd9255..7ee4d6b5 100644 --- a/Syrthes/prefs.py +++ b/Syrthes/prefs.py @@ -1,20 +1,19 @@ # -*- coding: utf-8 -*- import os -# REPINI sert à localiser le fichier editeur.ini +# repIni sert à localiser le fichier editeur.ini # Obligatoire -REPINI=os.path.dirname(os.path.abspath(__file__)) +repIni=os.path.dirname(os.path.abspath(__file__)) # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') # CODE_PATH sert à localiser Noyau et Validation éventuellement # non contenus dans la distribution EFICAS # Par défaut on utilise les modules de INSTALLDIR # Peut valoir None (defaut) CODE_PATH = None -#CODE_PATH = os.path.join(REPINI,'../../Superv') # ICONDIR sert à localiser le répertoire contenant les icones # Par défaut on utilise le répertoire icons dans Editeur diff --git a/Tests/editeur.ini b/Tests/editeur.ini index d4118db0..55246c0f 100644 --- a/Tests/editeur.ini +++ b/Tests/editeur.ini @@ -22,8 +22,8 @@ import os import prefs -rep_cata = os.path.abspath(os.path.join(prefs.REPINI,'../Aster/Cata')) -rep_Pmw = os.path.join(prefs.REPINI,'../Pmw') +rep_cata = os.path.abspath(os.path.join(prefs.repIni,'../Aster/Cata')) +rep_Pmw = os.path.join(prefs.repIni,'../Pmw') # Accès à la documentation Aster path_doc = os.path.join(rep_cata,'..','Doc') diff --git a/Tests/prefs.py b/Tests/prefs.py index 7f943db9..7c3ebd00 100644 --- a/Tests/prefs.py +++ b/Tests/prefs.py @@ -21,14 +21,13 @@ import os,sys -# REPINI sert à localiser le fichier editeur.ini +# repIni sert à localiser le fichier editeur.ini # Obligatoire -REPINI=os.path.dirname(os.path.abspath(__file__)) -repIni=REPINI +repIni=os.path.dirname(os.path.abspath(__file__)) # INSTALLDIR sert à localiser l'installation d'Eficas # Obligatoire -INSTALLDIR=os.path.join(REPINI,'..') +INSTALLDIR=os.path.join(repIni,'..') # CODE_PATH sert à localiser Noyau et Validation éventuellement # non contenus dans la distribution EFICAS diff --git a/Traducteur/CMakeLists.txt b/Traducteur/CMakeLists.txt index 5884431e..d1c51c80 100644 --- a/Traducteur/CMakeLists.txt +++ b/Traducteur/CMakeLists.txt @@ -24,7 +24,7 @@ install ( FILES calcG.py changeValeur.py dictErreurs.py __init__.py inseremocle.py load.py log.py mocles.py movemocle.py parseur.py regles.py removemocle.py - renamemocle.py traduitV7V8.py traduitV8V9.py utils.py + renamemocle.py traduitV7V8.py traduitV8V9.py traduitV9V10.py utils.py visiteur.py DESTINATION ${CMAKE_INSTALL_PREFIX}/Traducteur ) diff --git a/Traducteur/dictErreurs.py b/Traducteur/dictErreurs.py index 85d9fe66..086da0ec 100644 --- a/Traducteur/dictErreurs.py +++ b/Traducteur/dictErreurs.py @@ -55,3 +55,37 @@ def GenereErreurMotCleInFact(jdc,command,fact,mocle): else : EcritErreur((command,fact,mocle,),c.lineno) +def GenereErreurMCF(jdc,command,fact): + for c in jdc.root.childNodes: + if c.name != command:continue + for mc in c.childNodes: + if mc.name != fact: + continue + else : + EcritErreur((command,fact,),c.lineno) + +def GenereErreurValeur(jdc,command,fact,list_valeur): + for c in jdc.root.childNodes: + if c.name != command:continue + for mc in c.childNodes: + if mc.name != fact:continue + texte=mc.getText(jdc) + for valeur in list_valeur: + trouve=texte.find(valeur) + if trouve > -1 : + logging.warning("%s doit etre supprimee ou modifiee dans %s : ligne %d",valeur,c.name,mc.lineno) + +def GenereErreurValeurDsMCF(jdc,command,fact,mocle,list_valeur): + for c in jdc.root.childNodes: + if c.name != command:continue + for mc in c.childNodes: + if mc.name != fact:continue + l=mc.childNodes[:] + for ll in l: + for n in ll.childNodes: + if n.name != mocle:continue + texte=n.getText(jdc) + for valeur in list_valeur: + trouve=texte.find(valeur) + if trouve > -1 : + logging.warning("%s doit etre supprimee ou modifiee dans %s : ligne %d",valeur,c.name,n.lineno) diff --git a/Traducteur/inseremocle.py b/Traducteur/inseremocle.py index f8307f5e..e5d712fd 100644 --- a/Traducteur/inseremocle.py +++ b/Traducteur/inseremocle.py @@ -32,7 +32,7 @@ def insereMotCleDansCommande(jdc,command,texte): if numcol > 0 : jdc.splitLine(command.lineno,numcol) indice = -1 - while texte[indice] == " " : + while texte[indice] == " " or texte[indice] == "\n": indice = indice -1 if texte[indice] != "," : texte=texte+"," texteinfo=texte @@ -204,6 +204,14 @@ def chercheOperInsereFacteurSiRegle(jdc,nomcommande,nouveau,liste_regles, estunF if nomcommande not in jdcSet : return mesRegles=regles.ensembleRegles(liste_regles) chercheOperInsereFacteur(jdc,nomcommande,nouveau,mesRegles,estunFacteur) + +#---------------------------------------------------------------------------------------- +def chercheOperInsereMotCleSiRegle(jdc,nomcommande,nouveau,liste_regles, estunFacteur=0): +#---------------------------------------------------------------------------------------- + if nomcommande not in jdcSet : return + mesRegles=regles.ensembleRegles(liste_regles) + chercheOperInsereFacteur(jdc,nomcommande,nouveau,mesRegles,estunFacteur) + #--------------------------------------------------------------------------------------------------------- def chercheOperInsereFacteurSiRegleAvecAvertissement(jdc,nomcommande,nouveau,liste_regles, estunFacteur=1): @@ -247,3 +255,31 @@ def AjouteMotClefDansFacteurSiRegle(jdc,commande,fact,nouveau,liste_regles,estun mesRegles=regles.ensembleRegles(liste_regles) AjouteMotClefDansFacteur(jdc,commande,fact,nouveau,mesRegles,estunFacteur) +#------------------------------------------------------------------------------------------- +def AjouteMotClefDansFacteurCourantSiRegle(jdc,commande,fact,nouveau,liste_regles): +#------------------------------------------------------------------------------------------- +# + if commande not in jdcSet : return + ensemble=regles.ensembleRegles(liste_regles) + commands= jdc.root.childNodes[:] + commands.reverse() + boolChange=0 + for c in commands: + if c.name != commande : continue + for mcF in c.childNodes: + if mcF.name != fact : continue + l=mcF.childNodes[:] + l.reverse() + for ll in l: + if ensemble.verif(ll) == 0 : continue + boolChange=1 + n=ll.childNodes[0] + ligneaCouper=n.lineno-1 + numcol=n.colno + jdc.splitLine(ligneaCouper+1,numcol) + texte=nouveau+",\n" + jdc.addLine(texte,ligneaCouper+1) + logging.info("Insertion de %s dans %s : ligne %d", nouveau,c.name,ligneaCouper+1) + if numcol > 0 : + jdc.joinLineandNext(ligneaCouper+1) + if boolChange : jdc.reset(jdc.getSource()) diff --git a/Traducteur/movemocle.py b/Traducteur/movemocle.py index fef05893..293d4b0a 100644 --- a/Traducteur/movemocle.py +++ b/Traducteur/movemocle.py @@ -3,7 +3,7 @@ import logging import removemocle import inseremocle -from parseur import FactNode +from parseur import lastparen from dictErreurs import jdcSet debug=0 @@ -18,18 +18,22 @@ def moveMotCleFromFactToFather(jdc,command,fact,mocle): commands.reverse() for c in commands: if c.name != command:continue + boolchange_c=0 for mc in c.childNodes: if mc.name != fact:continue l=mc.childNodes[:] for ll in l: for n in ll.childNodes: if n.name != mocle:continue + # test boolchange_c :il faut le faire une seule fois par commande sinon duplication du mot clé + if boolchange_c != 0 :continue if debug : print "Changement de place :", n.name, n.lineno, n.colno MonTexte=n.getText(jdc); boolChange=1 + boolchange_c=1 inseremocle.insereMotCle(jdc,c,MonTexte) logging.info("Changement de place %s ligne %s ",n.name, n.lineno) - + if boolChange : jdc.reset(jdc.getSource()) removemocle.removeMotCleInFact(jdc,command,fact,mocle) @@ -127,3 +131,92 @@ def moveMotClefInOperToFact(jdc,oper,mocle,factcible): inseremocle.insereMotCleDansFacteur(jdc,cible,MonTexte) if boolChange : jdc.reset(jdc.getSource()) removemocle.removeMotCle(jdc,oper,mocle) + +#------------------------------------------------------ +def copyMotClefInOperToFact(jdc,oper,mocle,factcible): +#------------------------------------------------------ + + if oper not in jdcSet : return + if debug : print "movemocleinoper pour " ,oper,mocle,factcible + boolChange=9 + commands= jdc.root.childNodes[:] + commands.reverse() + for c in commands: + if c.name != oper : continue + cible=None + for mc in c.childNodes: + if mc.name != factcible : + continue + else : + cible=mc + break + if cible==None : + if debug : print "Pas de changement pour ", oper, " ", factcible, " ", "cible non trouvée" + continue + + source=None + for mc in c.childNodes: + if mc.name != mocle: + continue + else : + source=mc + break + if source==None : + if debug : print "Pas de changement pour ", oper, " ", mocle, " source non trouvée" + continue + MonTexte=source.getText(jdc); + boolChange=1 + inseremocle.insereMotCleDansFacteur(jdc,cible,MonTexte) + if boolChange : jdc.reset(jdc.getSource()) + +#---------------------------------------------------------------------- +def moveMCFToCommand(jdc,command,factsource,commandcible,factcible): +#---------------------------------------------------------------------- +# exemple CONTACT en 10 +# CONTACT devient commande DEFI_CONTACT/ZONE +# + if command not in jdcSet : return + boolChange=0 + commands= jdc.root.childNodes[:] + commands.reverse() + for c in commands: + if c.name != command : continue + for mcF in c.childNodes: + if mcF.name != factsource : continue + l=mcF.getText(jdc) + texte=l.replace(factsource,factcible) + texte='xxxx='+commandcible+'('+texte+')\n' + jdc.splitLine(c.lineno,0) + jdc.addLine(texte,c.lineno) + logging.info("Deplacement de %s dans %s ligne %s",factsource,commandcible,c.lineno) + boolChange=1 + if boolChange : + jdc.reset(jdc.getSource()) + jdcSet.add(commandcible) + +#-------------------------------------------------------------------- +def EclaMotCleToFact(jdc,command,motcle,mot1,mot2,defaut=0): +#-------------------------------------------------------------------------- +# exemple STA10 pesanteur devient MCF avec eclatement des valeurs dans les MC +# On suppose que le MC est sur une seule ligne + if command not in jdcSet : return + boolChange=0 + for c in jdc.root.childNodes: + if c.name != command : continue + trouveUnMC=0 + for mc in c.childNodes: + if mc.name != motcle : continue + trouveUnMC=1 + TexteMC=mc.getText(jdc) + indexLigneGlob=mc.lineno-1 + MaLigneGlob=jdc.getLines()[indexLigneGlob] + Ligne=TexteMC.split('(')[1].split(')')[0].split(',') + motcle1=mot1+"="+Ligne[0] + motcle2=mot2+"=("+Ligne[1]+','+Ligne[2]+','+Ligne[3]+')' + texte=motcle+'=_F('+motcle1+','+motcle2+')' + num=lastparen(TexteMC) + Nouveau=MaLigneGlob.replace(TexteMC[0:num],texte) + jdc.getLines()[indexLigneGlob]=Nouveau + logging.info("Transformation de %s dans %s ligne %s",motcle,command,c.lineno) + boolChange=1 + if boolChange : jdc.reset(jdc.getSource()) diff --git a/Traducteur/regles.py b/Traducteur/regles.py index d07c7b9c..e9d48d08 100644 --- a/Traducteur/regles.py +++ b/Traducteur/regles.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import logging import string -from parseur import FactNode +#from parseur import FactNode debug=0 @@ -79,7 +79,23 @@ class existeMCsousMCF : if mc.name != self.MC : continue bool=1 return bool - + +#---------------------- +class existeMCsousMCFcourant : +#---------------------- + def __init__(self,list_arg): + self.liste=list_arg; + self.MC=self.liste[0] + + def verif(self,mcf): + bool=0 + l=mcf.childNodes[:] + l.reverse() + for mc in l: + if mc.name != self.MC : continue + bool=1 + return bool + #----------------------------------------- class nexistepasMCsousMCF(existeMCsousMCF): #----------------------------------------- @@ -92,6 +108,18 @@ class nexistepasMCsousMCF(existeMCsousMCF): if bool : return 0 return 1 +#----------------------------------------- +class nexistepasMCsousMCFcourant(existeMCsousMCFcourant): +#----------------------------------------- + def __init__(self,list_arg): + existeMCsousMCFcourant.__init__(self,list_arg) + + + def verif(self,commande): + bool=existeMCsousMCFcourant.verif(self,commande) + if bool : return 0 + return 1 + #------------- class existe : #-------------- @@ -159,6 +187,76 @@ class MCsousMCFaPourValeur : bool=1 return bool +#------------------------------- +class MCsousMCFcourantaPourValeur : +#------------------------------ + def __init__(self,list_arg): + assert (len(list_arg)==3) + self.genea=list_arg[0:-1] + self.MC=list_arg[0] + self.Val=list_arg[1] + self.Jdc=list_arg[2] + + def verif(self,mcf): + bool=0 + l=mcf.childNodes[:] + l.reverse() + for mc in l: + if mc.name != self.MC : continue + TexteMC=mc.getText(self.Jdc) + if (TexteMC.find(self.Val) < 0 ): continue + bool=1 + return bool + + +#----------------------------- +class MCsousMCFaPourValeurDansListe : +#---------------------------- + def __init__(self,list_arg): + assert (len(list_arg)==4) + self.genea=list_arg[0:-2] + self.MCF=list_arg[0] + self.MC=list_arg[1] + self.LVal=list_arg[2] + self.Jdc=list_arg[3] + + def verif(self,commande): + bool=0 + for mcf in commande.childNodes : + if mcf.name != self.MCF : continue + l=mcf.childNodes[:] + l.reverse() + for ll in l: + for mc in ll.childNodes: + if mc.name != self.MC : continue + TexteMC=mc.getText(self.Jdc) + for Val in self.LVal: + if (TexteMC.find(Val) < 0 ): continue + bool=1 + return bool + +#----------------------------- +class MCsousMCFcourantaPourValeurDansListe : +#---------------------------- + def __init__(self,list_arg): + assert (len(list_arg)==3) + self.genea=list_arg[0:-1] + self.MC=list_arg[0] + self.LVal=list_arg[1] + self.Jdc=list_arg[2] + + def verif(self,mcf): + bool=0 + l=mcf.childNodes[:] + l.reverse() + for mc in l: + if mc.name != self.MC : continue + TexteMC=mc.getText(self.Jdc) + for Val in self.LVal: + if (TexteMC.find(Val) < 0 ): continue + bool=1 + return bool + #------------------------------- class MCaPourValeur : #------------------------------ @@ -177,5 +275,5 @@ class MCaPourValeur : bool=1 return bool -dictionnaire_regle={"existe":existe,"nexistepas":nexistepas,"existeMCFParmi":existeMCFParmi,"existeMCsousMCF":existeMCsousMCF,"nexistepasMCsousMCF":nexistepasMCsousMCF,"MCsousMCFaPourValeur":MCsousMCFaPourValeur,"MCaPourValeur":MCaPourValeur} +dictionnaire_regle={"existe":existe,"nexistepas":nexistepas,"existeMCFParmi":existeMCFParmi,"existeMCsousMCF":existeMCsousMCF,"nexistepasMCsousMCF":nexistepasMCsousMCF,"MCsousMCFaPourValeur":MCsousMCFaPourValeur,"MCsousMCFaPourValeurDansListe":MCsousMCFaPourValeurDansListe,"MCaPourValeur":MCaPourValeur,"existeMCsousMCFcourant":existeMCsousMCFcourant,"nexistepasMCsousMCFcourant":nexistepasMCsousMCFcourant,"MCsousMCFcourantaPourValeur":MCsousMCFcourantaPourValeur,"MCsousMCFcourantaPourValeurDansListe":MCsousMCFcourantaPourValeurDansListe} SansRegle=pasDeRegle() diff --git a/Traducteur/removemocle.py b/Traducteur/removemocle.py index 5f633578..d90ad636 100644 --- a/Traducteur/removemocle.py +++ b/Traducteur/removemocle.py @@ -64,7 +64,7 @@ def removeCommande(jdc,command,ensemble=regles.SansRegle,erreur=0): boolChange=1 if erreur : EcritErreur((command,),c.lineno) jdc.supLignes(c.lineno,c.endline) - logging.warning("Suppression de: %s ligne %s",c.name,c.lineno) + logging.warning("Suppression de %s ligne %s",c.name,c.lineno) if boolChange : jdc.reset(jdc.getSource()) #------------------------------------------------------------- @@ -78,7 +78,7 @@ def removeCommandeSiRegleAvecErreur(jdc,command,liste_regles): def removeMC(jdc,c,mc): #--------------------------------- if debug : print "Suppression de:",c.name,mc.name,mc.lineno,mc.colno,mc.endline,mc.endcol - logging.info("Suppression de: %s, %s, ligne %d",c.name,mc.name,mc.lineno) + logging.info("Suppression de %s dans %s ligne %d",mc.name,c.name,mc.lineno) if mc.endline > mc.lineno: if debug:print "mocle sur plusieurs lignes--%s--" % jdc.getLines()[mc.lineno-1][mc.colno:] @@ -135,6 +135,30 @@ def removeMotCleInFactSiRegleAvecErreur(jdc,command,fact,mocle,liste_regles): removeMotCleInFact(jdc,command,fact,mocle,mesRegles,erreur) +#---------------------------------------------------------------------- +def removeMotCleInFactCourantSiRegle(jdc,command,fact,mocle,liste_regles,erreur=0): +#---------------------------------------------------------------------- + if command not in jdcSet : return + ensemble=regles.ensembleRegles(liste_regles) + commands= jdc.root.childNodes[:] + commands.reverse() + boolChange=0 + for c in commands: + if c.name != command:continue + for mc in c.childNodes: + if mc.name != fact:continue + l=mc.childNodes[:] + l.reverse() + for ll in l: + if ensemble.verif(ll) == 0 : continue + for n in ll.childNodes: + if n.name != mocle:continue + if erreur : EcritErreur((command,fact,mocle),c.lineno) + boolChange=1 + removeMC(jdc,c,n) + + if boolChange : jdc.reset(jdc.getSource()) + #------------------------------------------ def fusionne(jdc,numLigne): #------------------------------------------ diff --git a/Traducteur/renamemocle.py b/Traducteur/renamemocle.py index 90c0aa35..f0f99b96 100644 --- a/Traducteur/renamemocle.py +++ b/Traducteur/renamemocle.py @@ -111,6 +111,33 @@ def renameMotCleInFactSiRegle(jdc,command,fact,mocle,new_name,liste_regles): mesRegles=regles.ensembleRegles(liste_regles) renameMotCleInFact(jdc,command,fact,mocle,new_name,mesRegles) +def renameMotCleInFactCourantSiRegle(jdc,command,fact,mocle,new_name,liste_regles,erreur=0): +#-------------------------------------------------------------------------- + if command not in jdcSet : return + ensemble=regles.ensembleRegles(liste_regles) + boolChange=0 + for c in jdc.root.childNodes: + if c.name != command:continue + for mc in c.childNodes: + if mc.name != fact:continue + l=mc.childNodes[:] + #on itere a l'envers + l.reverse() + for ll in l: + if ensemble.verif(ll) == 0 : continue + for n in ll.childNodes: + if n.name != mocle:continue + s=jdc.getLines()[n.lineno-1] + jdc.getLines()[n.lineno-1]=s[:n.colno]+new_name+s[n.colno+len(mocle):] + boolChange=1 + if erreur : + EcritErreur((command,fact,mocle),c.lineno) + else : + logging.info("Renommage de: %s, ligne %s, en %s",n.name,n.lineno,new_name) + + if boolChange : jdc.reset(jdc.getSource()) + + #----------------------------------------------------------------- def renameCommande(jdc,command,new_name,ensemble=regles.SansRegle): #----------------------------------------------------------------- diff --git a/Traducteur/traduitV9V10.py b/Traducteur/traduitV9V10.py new file mode 100755 index 00000000..0330043f --- /dev/null +++ b/Traducteur/traduitV9V10.py @@ -0,0 +1,731 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +""" +usage="""usage: %prog [options] +Typical use is: + python traduitV9V10.py --infile=xxxx --outfile=yyyy +""" + +import log +import optparse +import sys + +from load import getJDC +from mocles import parseKeywords +from removemocle import * +from renamemocle import * +from renamemocle import * +from inseremocle import * +from changeValeur import * +from movemocle import * +from dictErreurs import * +from regles import pasDeRegle + +atraiter=("AFFE_CARA_ELEM","AFFE_CHAR_CINE","AFFE_CHAR_MECA","AFFE_CHAR_MECA_F","AFFE_MATERIAU","AFFE_MODELE", + "CALC_CHAM_ELEM","CALC_ELEM","CALC_G","CALC_META","CALC_MODAL","CALC_PRECONT","CALCUL","CALC_MISS","CALC_NO", + "COMB_FOURIER","COMB_SISM_MODAL","CREA_CHAMP","CREA_RESU", + "DEFI_BASE_MODALE","DEFI_COMPOR","DEFI_CONTACT","DEFI_GLRC","DEFI_LIST_INST","DEFI_MATERIAU", + "DYNA_ISS_VARI","DYNA_LINE_HARM","DYNA_LINE_TRAN","DYNA_NON_LINE","DYNA_TRAN_MODAL", + "EXTR_RESU","IMPR_MACR_ELEM","IMPR_MATRICE","IMPR_RESU","LIRE_RESU", + "MACR_ADAP_MAIL","MACR_ASCOUF_CALC","MACR_ASPIC_CALC","MACR_ECREVISSE", + "MACR_INFO_MAIL","MACR_LIGN_COUPE","MACRO_ELAS_MULT","MACRO_MATR_AJOU","MACRO_MISS_3D", + "MECA_STATIQUE","MODE_ITER_INV","MODE_ITER_SIMULT","MODE_STATIQUE","MODI_REPERE", + "POST_CHAM_XFEM","POST_ELEM","POST_GP","POST_K1_K2_K3","POST_RCCM","POST_RELEVE_T","POST_ZAC", + "PROJ_CHAMP","PROJ_MESU_MODAL","RECU_FONCTION","REST_SOUS_STRUC","REST_GENE_PHYS","REST_SPEC_PHYS", + "STAT_NON_LINE","SIMU_POINT_MAT","TEST_RESU","THER_LINEAIRE","THER_NON_LINE","THER_NON_LINE_MO",) + +dict_erreurs={ +# STA10 +# + "AFFE_CHAR_MECA_CONTACT":"Attention, modification de la définition du CONTACT : nommer DEFI_CONTACT,verifier les paramètres globaux et le mettre dans le calcul", + "AFFE_CHAR_MECA_LIAISON_UNILATER":"Attention, modification de la définition du CONTACT : nommer DEFI_CONTACT,verifier les paramètres globaux et le mettre dans le calcul", + "AFFE_CHAR_MECA_F_LIAISON_UNILATER":"Attention, modification de la définition du CONTACT : nommer DEFI_CONTACT,verifier les paramètres globaux et le mettre dans le calcul", + "AFFE_CHAR_MECA_GRAPPE_FLUIDE":"Resorption de GRAPPE_FLUIDE en version 10", + "DEFI_MATERIAU_LMARC":"Resorption loi LMARC en version 10", + "DEFI_MATERIAU_LMARC_FO":"Resorption loi LMARC en version 10", + "POST_ZAC":"Resorption POST_ZAC en version 10", + "AFFE_CHAR_MECA_ARLEQUIN":"Resorption ARLEQUIN en version 10", + + "PROJ_CHAMP_CHAM_NO":"Attention, verifier pour PROJ_CHAMP la présence de MODELE1/MAILLAGE1 et MODELE2/MAILLAGE2", + + "COMB_SISM_MODAL_COMB_MULT_APPUI":"Attention, verifier GROUP_APPUI pour COMB_SISM_MODAL car on est dans le cas MULTI_APPUI=DECORRELE", + + "CALC_PRECONT_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "CALC_PRECONT_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "DYNA_LINE_HARM_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "DYNA_LINE_HARM_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "DYNA_LINE_TRAN_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "DYNA_LINE_TRAN_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "DYNA_TRAN_MODAL_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "DYNA_TRAN_MODAL_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "MACR_ASCOUF_CALC_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "MACR_ASCOUF_CALC_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "MACR_ASPIQ_CALC_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "MACR_ASPIQ_CALC_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "MACRO_MATR_AJOU_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "MACRO_MATR_AJOU_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "MECA_STATIQUE_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "MECA_STATIQUE_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "MODE_STATIQUE_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "MODE_STATIQUE_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "STAT_NON_LINE_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "STAT_NON_LINE_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "THER_LINEAIRE_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "THER_LINEAIRE_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "THER_NON_LINE_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "THER_NON_LINE_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "DYNA_NON_LINE_SOLVEUR_PARALLELISME":"Modification du PARALLELISME qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + "DYNA_NON_LINE_SOLVEUR_PARTITION":"Modification de PARTITION qui se definit au niveau de AFFE_MODELE ou MODI_MODELE", + + "STAT_NON_LINE_INCREMENT":"Attention, modification de la subdivision des pas : nommer DEFI_LIST_INST et verifier son appel dans STAT_NON_LINE", + "CALC_PRECONT_INCREMENT":"Attention, modification de la subdivision des pas : nommer DEFI_LIST_INST et verifier son appel dans CALC_PRECONT", + "DYNA_NON_LINE_INCREMENT":"Attention, modification de la subdivision des pas : nommer DEFI_LIST_INST et verifier son appel dans DYNA_NON_LINE", + "MACR_ASCOUF_CALC_INCREMENT":"Attention, modification de la subdivision des pas : nommer DEFI_LIST_INST et verifier son appel dans MACR_ASCOUF_CALC", + "MACR_ASPIQ_CALC_INCREMENT":"Attention, modification de la subdivision des pas : nommer DEFI_LIST_INST et verifier son appel dans MACR_ASPIQ_CALC", + "SIMU_POINT_MAT_INCREMENT":"Attention, modification de la subdivision des pas : nommer DEFI_LIST_INST et verifier son appel dans SIMU_POINT_MAT", + + "CALC_ELEM_SENSIBILITE":"Le post-traitement SENSIBILITE est à supprimer de CALC_ELEM et à faire via CALC_SENSI", + + "CALC_MISS_OPTION":"Attention, transfert MACRO_MISS_3D en CALC_MISS : utiliser un DEFI_SOL_MISS pour obtenir TABLE_SOL", + } + +sys.dict_erreurs=dict_erreurs + +def traduc(infile,outfile,flog=None): + + hdlr=log.initialise(flog) + jdc=getJDC(infile,atraiter) + root=jdc.root + + #Parse les mocles des commandes + parseKeywords(root) + + ####################### initialisation et traitement des erreurs ######################### + + + #####RESORPTION + + GenereErreurPourCommande(jdc,("POST_ZAC",)) + GenereErreurMCF(jdc,"AFFE_CHAR_MECA","GRAPPE_FLUIDE") + GenereErreurMCF(jdc,"DEFI_MATERIAU","LMARC") + GenereErreurMCF(jdc,"DEFI_MATERIAU","LMARC_FO") + GenereErreurMCF(jdc,"AFFE_CHAR_MECA","ARLEQUIN") + + + #####SOLVEUR + + ####################### traitement MUMPS/PARALELLISME-PARTITION ################## + #commandes concernes en plus : CALC_FORC_AJOU?,CALC_MATR_AJOU? + # */SOLVEUR/CHARGE_PROCO_MA(SD)--> AFFE_MODELE (ou MODI_MODELE)/PARTITION/. + # */SOLVEUR/PARALLELISME =CENTRALISE--> AFFE_MODELE (ou MODI_MODELE)/PARTITION/PARALLELISME = CENTRALISE + # */SOLVEUR/PARALLELISME = "DISTRIBUE_MC/MD/SD"--> AFFE_MODELE/PARTITION/PARALLELISME = "MAIL_CONTIGU/MAIL_DISPERSE/SOUS_DOMAINE" + # */SOLVEUR/PARTITION --> AFFE_MODELE (ou MODI_MODELE)/PARTITION/PARTITION + + + GenereErreurMotCleInFact(jdc,"CALC_PRECONT","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"CALC_PRECONT","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"DYNA_LINE_HARM","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"DYNA_LINE_HARM","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"DYNA_TRAN_MODAL","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"DYNA_TRAN_MODAL","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"MACR_ASCOUF_CALC","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"MACR_ASCOUF_CALC","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"MACR_ASPIQ_CALC","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"MACR_ASPIQ_CALC","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"MACRO_MATR_AJOU","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"MACRO_MATR_AJOU","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"MECA_STATIQUE","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"MECA_STATIQUE","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"MODE_STATIQUE","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"MODE_STATIQUE","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"STAT_NON_LINE","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"STAT_NON_LINE","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"THER_LINEAIRE","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"THER_LINEAIRE","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"THER_NON_LINE","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"THER_NON_LINE","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"THER_NON_LINE_MO","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"THER_NON_LINE_MO","SOLVEUR","PARTITION") + GenereErreurMotCleInFact(jdc,"DYNA_NON_LINE","SOLVEUR","PARALLELISME") + GenereErreurMotCleInFact(jdc,"DYNA_NON_LINE","SOLVEUR","PARTITION") + + ####################### traitement mot cle INCREMENT redecoupage en temps ####################### + renameMotCleSiRegle(jdc,"STAT_NON_LINE","INCREMENT","INCREMENT_NEW",((("INCREMENT","SUBD_METHODE"),"existeMCsousMCF"),),1) + moveMCFToCommand(jdc,"STAT_NON_LINE","INCREMENT_NEW","DEFI_LIST_INST","ECHEC") + removeMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT_NEW","SUBD_COEF_PAS_1",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT_NEW","SUBD_ITER_FIN",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT_NEW","SUBD_ITER_IGNO",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT_NEW","SUBD_ITER_PLUS",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT_NEW","SUBD_METHODE",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT_NEW","SUBD_NIVEAU",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT_NEW","SUBD_OPTION",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT_NEW","SUBD_PAS",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT_NEW","SUBD_PAS_MINI",pasDeRegle(),0) + renameMotCle(jdc,"STAT_NON_LINE","INCREMENT_NEW","INCREMENT") + + renameMotCleSiRegle(jdc,"CALC_PRECONT","INCREMENT","INCREMENT_NEW",((("INCREMENT","SUBD_METHODE"),"existeMCsousMCF"),),1) + moveMCFToCommand(jdc,"CALC_PRECONT","INCREMENT_NEW","DEFI_LIST_INST","ECHEC") + removeMotCleInFact(jdc,"CALC_PRECONT","INCREMENT_NEW","SUBD_COEF_PAS_1",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_PRECONT","INCREMENT_NEW","SUBD_ITER_FIN",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_PRECONT","INCREMENT_NEW","SUBD_ITER_IGNO",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_PRECONT","INCREMENT_NEW","SUBD_ITER_PLUS",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_PRECONT","INCREMENT_NEW","SUBD_METHODE",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_PRECONT","INCREMENT_NEW","SUBD_NIVEAU",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_PRECONT","INCREMENT_NEW","SUBD_OPTION",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_PRECONT","INCREMENT_NEW","SUBD_PAS",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_PRECONT","INCREMENT_NEW","SUBD_PAS_MINI",pasDeRegle(),0) + renameMotCle(jdc,"CALC_PRECONT","INCREMENT_NEW","INCREMENT") + + + renameMotCleSiRegle(jdc,"DYNA_NON_LINE","INCREMENT","INCREMENT_NEW",((("INCREMENT","SUBD_METHODE"),"existeMCsousMCF"),),1) + moveMCFToCommand(jdc,"DYNA_NON_LINE","INCREMENT_NEW","DEFI_LIST_INST","ECHEC") + removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT_NEW","SUBD_COEF_PAS_1",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT_NEW","SUBD_ITER_FIN",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT_NEW","SUBD_ITER_IGNO",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT_NEW","SUBD_ITER_PLUS",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT_NEW","SUBD_METHODE",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT_NEW","SUBD_NIVEAU",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT_NEW","SUBD_OPTION",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT_NEW","SUBD_PAS",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT_NEW","SUBD_PAS_MINI",pasDeRegle(),0) + renameMotCle(jdc,"DYNA_NON_LINE","INCREMENT_NEW","INCREMENT") + + renameMotCleSiRegle(jdc,"MACR_ASCOUF_CALC","INCREMENT","INCREMENT_NEW",((("INCREMENT","SUBD_METHODE"),"existeMCsousMCF"),),1) + moveMCFToCommand(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","DEFI_LIST_INST","ECHEC") + removeMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","SUBD_COEF_PAS_1",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","SUBD_ITER_FIN",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","SUBD_ITER_IGNO",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","SUBD_ITER_PLUS",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","SUBD_METHODE",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","SUBD_NIVEAU",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","SUBD_OPTION",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","SUBD_PAS",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","SUBD_PAS_MINI",pasDeRegle(),0) + renameMotCle(jdc,"MACR_ASCOUF_CALC","INCREMENT_NEW","INCREMENT") + + renameMotCleSiRegle(jdc,"MACR_ASPIQ_CALC","INCREMENT","INCREMENT_NEW",((("INCREMENT","SUBD_METHODE"),"existeMCsousMCF"),),1) + moveMCFToCommand(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","DEFI_LIST_INST","ECHEC") + removeMotCleInFact(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","SUBD_COEF_PAS_1",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","SUBD_ITER_FIN",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","SUBD_ITER_IGNO",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","SUBD_ITER_PLUS",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","SUBD_METHODE",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","SUBD_NIVEAU",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","SUBD_OPTION",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","SUBD_PAS",pasDeRegle(),0) + removeMotCleInFact(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","SUBD_PAS_MINI",pasDeRegle(),0) + renameMotCle(jdc,"MACR_ASPIQ_CALC","INCREMENT_NEW","INCREMENT") + + renameMotCleSiRegle(jdc,"SIMU_POINT_MAT","INCREMENT","INCREMENT_NEW",((("INCREMENT","SUBD_METHODE"),"existeMCsousMCF"),),1) + moveMCFToCommand(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","DEFI_LIST_INST","ECHEC") + removeMotCleInFact(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","SUBD_COEF_PAS_1",pasDeRegle(),0) + removeMotCleInFact(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","SUBD_ITER_FIN",pasDeRegle(),0) + removeMotCleInFact(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","SUBD_ITER_IGNO",pasDeRegle(),0) + removeMotCleInFact(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","SUBD_ITER_PLUS",pasDeRegle(),0) + removeMotCleInFact(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","SUBD_METHODE",pasDeRegle(),0) + removeMotCleInFact(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","SUBD_NIVEAU",pasDeRegle(),0) + removeMotCleInFact(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","SUBD_OPTION",pasDeRegle(),0) + removeMotCleInFact(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","SUBD_PAS",pasDeRegle(),0) + removeMotCleInFact(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","SUBD_PAS_MINI",pasDeRegle(),0) + renameMotCle(jdc,"SIMU_POINT_MAT","INCREMENT_NEW","INCREMENT") + + removeMotCleInFact(jdc,"DEFI_LIST_INST","ECHEC","INST_INIT") + removeMotCleInFact(jdc,"DEFI_LIST_INST","ECHEC","INST_FIN") + removeMotCleInFact(jdc,"DEFI_LIST_INST","ECHEC","NUME_INST_FIN") + removeMotCleInFact(jdc,"DEFI_LIST_INST","ECHEC","NUME_INST_INIT") + removeMotCleInFact(jdc,"DEFI_LIST_INST","ECHEC","PRECISION") + chercheOperInsereFacteur(jdc,"DEFI_LIST_INST","DEFI_LIST",pasDeRegle(),1) + moveMotCleFromFactToFact(jdc,"DEFI_LIST_INST","ECHEC","LIST_INST","DEFI_LIST") + removeMotCleInFact(jdc,"DEFI_LIST_INST","ECHEC","LIST_INST") + + ###################### traitement de NPREC_SOLVEUR ########## + removeMotCleInFact(jdc,"MODE_ITER_SIMULT","CALC_FREQ","NPREC_SOLVEUR",pasDeRegle(),0) + removeMotCleInFact(jdc,"MODE_ITER_INV","CALC_FREQ","NPREC_SOLVEUR",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_MODAL","CALC_FREQ","NPREC_SOLVEUR",pasDeRegle(),0) + removeMotCle(jdc,"IMPR_STURM","NPREC_SOLVEUR") + removeMotCleInFact(jdc,"MACRO_MATR_AJOU","CALC_FREQ","NPREC_SOLVEUR",pasDeRegle(),0) + + ###################### traitement CALC_MODAL SOLVEUR ############ + removeMotCle(jdc,"CALC_MODAL","SOLVEUR",pasDeRegle()) + + ##################### traitement DYNA_TRAN-MODAL ADAPT ################# + ChangementValeur(jdc,"DYNA_TRAN_MODAL","METHODE",{"ADAPT":"ADAPT_ORDRE2"}) + + #################### traitement STAT/DYNA_NON_LINE OBSERVATION SUIVI_DDL=NON ########### + removeMotCleInFactCourantSiRegle(jdc,"STAT_NON_LINE","OBSERVATION","SUIVI_DDL",((("SUIVI_DDL","NON",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"DYNA_NON_LINE","OBSERVATION","SUIVI_DDL",((("SUIVI_DDL","NON",jdc),"MCsousMCFcourantaPourValeur"),)) + + ################### traitement STAT/DYNA_NON_LINE ARCH_ETAT_INIT ########### + removeMotCleInFact(jdc,"STAT_NON_LINE","ARCHIVAGE","ARCH_ETAT_INIT",pasDeRegle(),0) + removeMotCleInFact(jdc,"SIMU_POINT_MAT","ARCHIVAGE","ARCH_ETAT_INIT",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","ARCHIVAGE","ARCH_ETAT_INIT",pasDeRegle(),0) + + ################### traitement STAT/DYNA_NON_LINE CRIT_FLAMB ############### + removeMotCleInFactCourantSiRegle(jdc,"STAT_NON_LINE","CRIT_FLAMB","INST_CALCUL",((("INST_CALCUL","TOUT_PAS",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"DYNA_NON_LINE","CRIT_FLAMB","INST_CALCUL",((("INST_CALCUL","TOUT_PAS",jdc),"MCsousMCFcourantaPourValeur"),)) + + #####COMPORTEMENT/CARA + + ################### traitement AFFE_MODELE/SHB8 ########################## + ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",{"SHB8":"SHB"}) + + ################### traitement COMP_ELAS et COMP_INCR DEFORMATION = GREEN ##############" + dGREEN={"GREEN_GR":"GROT_GDEP","GREEN":"GROT_GDEP","REAC_GEOM":"GROT_GDEP","EULER_ALMANSI":"GROT_GDEP","COROTATIONNEL":"GDEF_HYPO_ELAS"} + ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_ELAS","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_ELAS","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_ELAS","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"CALCUL","COMP_ELAS","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"POST_GP","COMP_ELAS","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"CALC_G","COMP_ELAS","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"CALCUL","COMP_INCR","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"CALC_NO","COMP_INCR","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"LIRE_RESU","COMP_INCR","DEFORMATION",dGREEN) + ChangementValeurDsMCF(jdc,"MACR_ECREVISSE","COMP_INCR","DEFORMATION",dGREEN) + + ###################### traitement COMP_INCR/COMP_ELAS RESO_INTE ########## + dALGOI={"RUNGE_KUTTA_2":"RUNGE_KUTTA","RUNGE_KUTTA_4":"RUNGE_KUTTA"} + removeMotCleInFactCourantSiRegle(jdc,"STAT_NON_LINE","COMP_ELAS","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"STAT_NON_LINE","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"DYNA_NON_LINE","COMP_ELAS","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"DYNA_NON_LINE","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"CALCUL","COMP_ELAS","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"CALCUL","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"MACR_ASCOUF_CALC","COMP_ELAS","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"MACR_ASCOUF_CALC","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"MACR_ASPIQ_CALC","COMP_ELAS","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"MACR_ASPIQ_CALC","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"SIMU_POINT_MAT","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"CALC_PRE_CONT","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"CALC_NO","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"LIRE_RESU","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFactCourantSiRegle(jdc,"MACR_ECREVISSE","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),)) + + ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_ELAS","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_ELAS","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"CALCUL","COMP_ELAS","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"CALCUL","COMP_INCR","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"MACR_ASCOUF_CALC","COMP_ELAS","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"MACR_ASCOUF_CALC","COMP_INCR","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"MACR_ASPIQF_CALC","COMP_ELAS","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"MACR_ASPIQ_CALC","COMP_INCR","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"CALC_NO","COMP_INCR","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"LIRE_RESU","COMP_INCR","RESO_INTE",dALGOI) + ChangementValeurDsMCF(jdc,"MACR_ECREVISSE","COMP_INCR","RESO_INTE",dALGOI) + + renameMotCleInFact(jdc,"STAT_NON_LINE","COMP_ELAS","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"STAT_NON_LINE","COMP_INCR","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"DYNA_NON_LINE","COMP_ELAS","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"DYNA_NON_LINE","COMP_INCR","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"CALCUL","COMP_ELAS","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"CALCUL","COMP_INCR","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"MACR_ASCOUF_CALC","COMP_ELAS","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"MACR_ASCOUF_CALC","COMP_INCR","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"MACR_ASPIQF_CALC","COMP_ELAS","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"MACR_ASPIQ_CALC","COMP_INCR","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"SIMU_POINT_MAT","COMP_INCR","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"CALC_PRECONT","COMP_INCR","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"CALC_NO","COMP_INCR","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"LIRE_RESU","COMP_INCR","RESO_INTE","ALGO_INTE") + renameMotCleInFact(jdc,"MACR_ECREVISSE","COMP_INCR","RESO_INTE","ALGO_INTE") + + ###################### traitement COMP_ELAS/ITER_INTE_PAS ###### + removeMotCleInFact(jdc,"CALCUL","COMP_ELAS","ITER_INTE_PAS",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","COMP_ELAS","ITER_INTE_PAS",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","COMP_ELAS","ITER_INTE_PAS",pasDeRegle(),0) + + ###################### traitement CALC_G/COMP_INCR/RELATION ELAS_VMIS_PUIS #### + ChangementValeurDsMCF(jdc,"CALC_G","COMP_INCR","RELATION",{"ELAS_VMIS_PUIS":"VMIS_ISOT_PUIS"}) + + ########################" traitement DEFI_COMPOR/MULTIFIBRE/DEFORMATION=REAC_GEOM ######### + ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MULTIFIBRE","DEFORMATION",dGREEN) + + ####################### traitement DEFI_COMPOR/MONOCRISTAL/ECOULEMENT ############# + dECOULEMENT={"ECOU_VISC1":"MONO_VISC1","ECOU_VISC2":"MONO_VISC2","ECOU_VISC3":"MONO_VISC3","KOCKS_RAUCH":"MONO_DD_KR"} + ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECOULEMENT",dECOULEMENT) + dISOT={"ECRO_ISOT1":"MONO_ISOT1","ECRO_ISOT2":"MONO_ISOT2"} + dCINE={"ECRO_CINE1":"MONO_CINE1","ECRO_CINE2":"MONO_CINE2"} + ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECRO_ISOT",dISOT) + ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECRO_CINE",dCINE) + + ################### traitement DEFI_MATERIAU monocristallin ####### + renameMotCle(jdc,"DEFI_MATERIAU","ECOU_VISC1","MONO_VISC1") + renameMotCle(jdc,"DEFI_MATERIAU","ECOU_VISC2","MONO_VISC2") + renameMotCle(jdc,"DEFI_MATERIAU","ECOU_VISC3","MONO_VISC3") + renameMotCle(jdc,"DEFI_MATERIAU","ECRO_CINE1","MONO_CINE1") + renameMotCle(jdc,"DEFI_MATERIAU","ECRO_CINE2","MONO_CINE2") + renameMotCle(jdc,"DEFI_MATERIAU","ECRO_ISOT1","MONO_ISOT1") + renameMotCle(jdc,"DEFI_MATERIAU","ECRO_ISOT2","MONO_ISOT2") + renameMotCle(jdc,"DEFI_MATERIAU","KOCKS_RAUCH","MONO_DD_KR") + + ################ traitement DEFI_MATERIAU/THER_HYDR ####### + removeMotCleInFact(jdc,"DEFI_MATERIAU","THER_HYDR","QSR_K") + + ##################### traitement AFFE_CARA_ELEM/DISCRET ###############" + dDISCRET={"K_T_N_NS":"K_T_N", "K_T_L_NS":"K_T_L", "K_TR_N_NS":"K_TR_N", "K_TR_L_NS":"K_TR_L", + "M_T_N_NS":"M_T_N", "M_T_L_NS":"M_T_L", "M_TR_N_NS":"M_TR_N", "M_TR_L_NS":"M_TR_L", + "A_T_N_NS":"A_T_N", "A_T_L_NS":"A_T_L", "A_TR_N_NS":"A_TR_N", "A_TR_L_NS":"A_TR_L"} + dlist_DISCRET=["K_T_N_NS","K_T_L_NS", "K_TR_N_NS","K_TR_L_NS","M_T_N_NS","M_T_L_NS","M_TR_N_NS","M_TR_L_NS","A_T_N_NS","A_T_L_NS","A_TR_N_NS","A_TR_L_NS"] + + removeMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET_2D","SYME") + removeMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET","SYME") + AjouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CARA_ELEM","DISCRET","SYME='NON'",((("CARA",dlist_DISCRET,jdc),"MCsousMCFcourantaPourValeurDansListe"),)) + AjouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CARA_ELEM","DISCRET_2D","SYME='NON'",((("CARA",dlist_DISCRET,jdc),"MCsousMCFcourantaPourValeurDansListe"),)) + ChangementValeurDsMCF(jdc,"AFFE_CARA_ELEM","DISCRET_2D","CARA",dDISCRET) + ChangementValeurDsMCF(jdc,"AFFE_CARA_ELEM","DISCRET","CARA",dDISCRET) + + #####CHARGEMENT + + ####################### traitement CONTACT ############################################### + + + renameMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","ITER_MULT_MAXI","ITER_CONT_MULT") + renameMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","NB_REAC_GEOM","NB_ITER_GEOM") + AjouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CHAR_MECA","CONTACT","RESOLUTION='NON'",((("METHODE","VERIF",jdc),"MCsousMCFcourantaPourValeur"),)) + copyMotClefInOperToFact(jdc,"AFFE_CHAR_MECA","MODELE","CONTACT") + moveMCFToCommand(jdc,"AFFE_CHAR_MECA","CONTACT","DEFI_CONTACT","ZONE") + removeMotCle(jdc,"AFFE_CHAR_MECA","CONTACT",pasDeRegle(),1) + + + removeMotCleInFact(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","METHODE") + AjouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","METHODE='LIAISON_UNIL'",pasDeRegle()) + copyMotClefInOperToFact(jdc,"AFFE_CHAR_MECA","MODELE","LIAISON_UNILATER") + moveMCFToCommand(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","DEFI_CONTACT","ZONE") + removeMotCle(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER",pasDeRegle(),1) + + removeMotCleInFact(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","METHODE") + AjouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","METHODE='LIAISON_UNIL'",pasDeRegle()) + AjouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","FORMULATION='LIAISON_UNIL'",pasDeRegle()) + copyMotClefInOperToFact(jdc,"AFFE_CHAR_MECA_F","MODELE","LIAISON_UNILATER") + moveMCFToCommand(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","DEFI_CONTACT","ZONE") + removeMotCle(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER",pasDeRegle(),1) + + chercheOperInsereMotCleSiRegle(jdc,"DEFI_CONTACT","FORMULATION='XFEM'",((("ZONE","METHODE","XFEM",jdc),"MCsousMCFaPourValeur"),)) + chercheOperInsereMotCleSiRegle(jdc,"DEFI_CONTACT","FORMULATION='CONTINUE'",((("ZONE","METHODE","CONTINUE",jdc),"MCsousMCFaPourValeur"),)) + chercheOperInsereMotCleSiRegle(jdc,"DEFI_CONTACT","FORMULATION='VERIF'",((("ZONE","METHODE","VERIF",jdc),"MCsousMCFaPourValeur"),)) + chercheOperInsereMotCleSiRegle(jdc,"DEFI_CONTACT","FORMULATION='LIAISON_UNIL'",((("ZONE","METHODE","LIAISON_UNIL",jdc),"MCsousMCFaPourValeur"),)) + liste_meth_ZONE=["GCP","CONTRAINTE","LAGRANGIEN","PENALISATION"] + chercheOperInsereMotCleSiRegle(jdc,"DEFI_CONTACT","FORMULATION='DISCRETE'",((("ZONE","METHODE",liste_meth_ZONE,jdc),"MCsousMCFaPourValeurDansListe"),)) + AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='LAGRANGIEN'",((("METHODE","LAGRANGIEN",jdc),"MCsousMCFcourantaPourValeur"),)) + AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT='LAGRANGIEN'",((("METHODE","LAGRANGIEN",jdc),"MCsousMCFcourantaPourValeur"),(("COULOMB",),"existeMCsousMCFcourant"),)) + AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='GCP'",((("METHODE","GCP",jdc),"MCsousMCFcourantaPourValeur"),)) + AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='PENALISATION'",((("METHODE","PENALISATION",jdc),"MCsousMCFcourantaPourValeur"),)) + AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT='PENALISATION'",((("METHODE","PENALISATION",jdc),"MCsousMCFcourantaPourValeur"),(("COULOMB",),"existeMCsousMCFcourant"),)) + AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='CONTRAINTE'",((("METHODE","CONTRAINTE",jdc),"MCsousMCFcourantaPourValeur"),)) + removeMotCleInFact(jdc,"DEFI_CONTACT","ZONE","METHODE") + + + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","COEF_RESI") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","FROTTEMENT") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","ITER_CONT_MAXI") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","ITER_FROT_MAXI") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","ITER_GCP_MAXI") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","ITER_GEOM_MAXI") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","LISSAGE") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","NB_RESOL") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","PRE_COND") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","REAC_GEOM") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","REAC_ITER") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","RECH_LINEAIRE") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","STOP_INTERP") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","STOP_SINGULIER") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","RESI_ABSO") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","ITER_CONT_MULT") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","ITER_PRE_MAXI") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","NB_ITER_GEOM") + moveMotCleFromFactToFather(jdc,"DEFI_CONTACT","ZONE","MODELE") + + + # FORMULATION = DEPL/VITE + # Si EXCL_FROT_1 + # Si EXCL_FROT_2 + + + ####################### traitement DCX/DCY/DCZ ############################# + dDC={"DCX":"DX","DCY":"DY","DCZ":"DZ"} + renameMotCleInFact(jdc,"AFFE_CHAR_MECA","DDL_IMPO","DCX","DX") + renameMotCleInFact(jdc,"AFFE_CHAR_MECA","DDL_IMPO","DCY","DY") + renameMotCleInFact(jdc,"AFFE_CHAR_MECA","DDL_IMPO","DCZ","DZ") + renameMotCleInFact(jdc,"AFFE_CHAR_MECA_F","DDL_IMPO","DCX","DX") + renameMotCleInFact(jdc,"AFFE_CHAR_MECA_F","DDL_IMPO","DCY","DY") + renameMotCleInFact(jdc,"AFFE_CHAR_MECA_F","DDL_IMPO","DCZ","DZ") + renameMotCleInFact(jdc,"AFFE_CHAR_CINE","MECA_IMPO","DCX","DX") + renameMotCleInFact(jdc,"AFFE_CHAR_CINE","MECA_IMPO","DCY","DY") + renameMotCleInFact(jdc,"AFFE_CHAR_CINE","MECA_IMPO","DCZ","DZ") + # QUESTION Non pris en compte : AFFE_CHAR_MECA/LIAISON_DDL","DDL",Liste de valeurs avec DC*) + # peut_etre avec changeTouteValeur ? + + ######################### traitement COMB_SISM_MODAL APPUI #######################"" + # attention il faut traiter d'abord DECORRELE avant CORRELE sinon CORRELE apparaît dans DECORELLE + moveMotCleFromFactToFather(jdc,"COMB_SISM_MODAL","EXCIT","MONO_APPUI") + moveMotCleFromFactToFather(jdc,"COMB_SISM_MODAL","EXCIT","MULTI_APPUI") + removeMotCleInFactSiRegle(jdc,"COMB_SISM_MODAL","COMB_MULT_APPUI","TYPE_COMBI",((("MULTI_APPUI","DECORRELE",jdc),"MCaPourValeur"),)) + renameMotCleSiRegle(jdc,"COMB_SISM_MODAL","COMB_MULT_APPUI","GROUP_APPUI",((("MULTI_APPUI","DECORRELE",jdc),"MCaPourValeur"),),1) + + ######################## traitement DYNA_TRAN_MODAL ################## + AjouteMotClefDansFacteurCourantSiRegle(jdc,"DYNA_TRAN_MODAL","CHOC","FROTTEMENT='COULOMB'",((("COULOMB",),"existeMCsousMCFcourant"),)) + + ######################### traitement AFFE_CHAR_MECA PESANTEUR ROTATION################# + EclaMotCleToFact(jdc,"AFFE_CHAR_MECA","PESANTEUR","GRAVITE","DIRECTION") + EclaMotCleToFact(jdc,"AFFE_CHAR_MECA","ROTATION","VITESSE","AXE") + moveMotClefInOperToFact(jdc,"AFFE_CHAR_MECA","CENTRE","ROTATION") + + ######################## traitement DEFI_BASE_MODALE ############## + renameMotCleInFact(jdc,"DEFI_BASE_MODALE","RITZ","MODE_STAT","MODE_INTF") + renameMotCleInFact(jdc,"DEFI_BASE_MODALE","RITZ","MULT_ELAS","MODE_INTF") + + ####################### traitement DYNA_ISS_VARI ################# + renameMotCle(jdc,"DYNA_ISS_VARI","PAS","FREQ_PAS") + + + #####IMPRESSION + + #################### traitement IMPR_RESU ####################### + removeMotCleInFact(jdc,"IMPR_RESU","RESU","INFO_RESU") + + ######################### traitement IMPR_MATRICE #################### + removeCommande(jdc,"IMPR_MATRICE") + + ####################### traitement PROJ_CHAMP ##################### + renameMotCle(jdc,"PROJ_CHAMP","CHAM_NO","CHAM_GD",1,pasDeRegle()) + ChangementValeur(jdc,"PROJ_CHAMP","METHODE",{ "ELEM":"COLLOCATION"}) + + ####################### traitement MACR_ADAP_MAIL ##############" + ChangementValeur(jdc,"MACR_ADAP_MAIL","TYPE_VALEUR_INDICA",{"V_ABSOLUE":"ABSOLU","V_RELATIVE":"RELATIF"}) + renameMotCle(jdc,"MACR_ADAP_MAIL","INDICATEUR","NOM_CHAM") + renameMotCle(jdc,"MACR_ADAP_MAIL","NOM_CMP_INDICA","NOM_CMP") + renameMotCle(jdc,"MACR_ADAP_MAIL","TYPE_OPER_INDICA","USAGE_CHAMP") + renameMotCle(jdc,"MACR_ADAP_MAIL","TYPE_VALEUR_INDICA","USAGE_CMP") + AjouteMotClefDansFacteurCourantSiRegle(jdc,"MACR_ADAP_MAIL","ZONE","TYPE='BOITE'",((("RAYON",),"nexistepasMCsousMCFcourant"),)) + AjouteMotClefDansFacteurCourantSiRegle(jdc,"MACR_ADAP_MAIL","ZONE","TYPE='SPHERE'",((("RAYON",),"existeMCsousMCFcourant"),)) + ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V9_5":"V10_1"}) + ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V9_N":"V10_1_N"}) + ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V9_5":"V10_1"}) + ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V9_N":"V10_1_N"}) + + ###################### traitement de POST_CHAM_XFEM ################# + removeMotCle(jdc,"POST_CHAM_XFEM","MODELE",pasDeRegle(),0) + removeMotCle(jdc,"POST_CHAM_XFEM","MAILLAGE_FISS",pasDeRegle(),0) + removeMotCle(jdc,"POST_CHAM_XFEM","NOM_CHAM",pasDeRegle(),0) + + ##################### traitement de SIMU_POINT_MAT/SUPPORT ############# + chercheOperInsereFacteur(jdc,"SIMU_POINT_MAT","SUPPORT='POINT'",pasDeRegle(),0) + + ###################### traitement AFFE_CARA_ELEM/UNITE_EUROPLEXUS ###### + renameMotCleInFact(jdc,"AFFE_CARA_ELEM","RIGI_PARASOL","UNITE_EUROPLEXUS","UNITE",pasDeRegle(),0) + + #################### traitement DEFI_GLRC/IMPRESSION ############# + removeMotCle(jdc,"DEFI_GLRC","IMPRESSION",pasDeRegle(),0) + + ################### traitement AFFICHAGE ##### + removeMotCleInFact(jdc,"DYNA_NON_LINE","AFFICHAGE","LONG_I",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","AFFICHAGE","LONG_R",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","AFFICHAGE","NOM_COLONNE",pasDeRegle(),0) + removeMotCleInFact(jdc,"DYNA_NON_LINE","AFFICHAGE","PREC_R",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","AFFICHAGE","LONG_I",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","AFFICHAGE","LONG_R",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","AFFICHAGE","NOM_COLONNE",pasDeRegle(),0) + removeMotCleInFact(jdc,"STAT_NON_LINE","AFFICHAGE","PREC_R",pasDeRegle(),0) + + ################### traitement CALC_NO *RESU ######### + removeMotCle(jdc,"CALC_NO","GROUP_MA_RESU",pasDeRegle(),0) + removeMotCle(jdc,"CALC_NO","MAILLE_RESU",pasDeRegle(),0) + removeMotCle(jdc,"CALC_NO","GROUP_NO_RESU",pasDeRegle(),0) + removeMotCle(jdc,"CALC_NO","NOEUD_RESU",pasDeRegle(),0) + + ################## traitement POST_K1_K2_K3/MAILLAGE ###### + removeMotCleSiRegle(jdc,"POST_K1_K2_K3","MAILLAGE",((("RESULTAT"),"existeMCFParmi"),)) + + ######### traitement CALC_ELEM/TYPE_ESTI #### + dESTI={"ERRE_ELEM_SIGM":"ERME_ELEM","ERZ1_ELEM_SIGM":"ERZ1_ELEM","ERZ2_ELEM_SIGM":"ERZ2_ELEM", + "QIRE_ELEM_SIGM":"QIRE_ELEM","QIZ1_ELEM_SIGM":"QIZ1_ELEM","QIZ2_ELEM_SIGM":"QIZ2_ELEM"} + ChangementValeur(jdc,"CALC_ELEM","TYPE_ESTI",dESTI) + + ######### suppression CALC_ELEM/NORME ###### + removeMotCle(jdc,"CALC_ELEM","NORME",pasDeRegle(),0) + + ########## traitement CALC_ELEM/CALC_NO OPTION + #dSENSI={"DEDE_ELNO_DLDE":"DEDE_ELNO","DEDE_NOEU_DLDE":"DEDE_NOEU","DESI_ELNO_DLSI":"DESI_ELNO","DESI_NOEU_DLSI":"DESI_NOEU", + # "DETE_ELNO_DLTE":"DETE_ELNO","DETE_NOEU_DLTE":"DETE_NOEU"} + dOPTION={"DEDE_ELNO_DLDE":"DEDE_ELNO","DEDE_NOEU_DLDE":"DEDE_NOEU","DESI_ELNO_DLSI":"DESI_ELNO","DESI_NOEU_DLSI":"DESI_NOEU", + "DETE_ELNO_DLTE":"DETE_ELNO","DETE_NOEU_DLTE":"DETE_NOEU", + "INTE_ELNO_ACTI":"INTE_ELNO","INTE_ELNO_REAC":"INTE_ELNO","INTE_NOEU_ACTI":"INTE_NOEU","INTE_NOEU_REAC":"INTE_NOEU", + "PRES_DBEL_DEPL":"PRME_ELNO","PRES_ELNO_IMAG":"PRAC_ELNO","PRES_ELNO_REEL":"PRAC_ELNO", + "PRES_NOEU_DBEL":"PRAC_NOEU","PRES_NOEU_IMAG":"PRAC_NOEU","PRES_NOEU_REEL":"PRAC_NOEU", + "ARCO_ELNO_SIGM":"SIRO_ELEM","ARCO_NOEU_SIGM":"SIRO_ELEM", + "ENDO_ELNO_ELGA":"ENDO_ELNO","ENDO_ELNO_SIGA":"ENDO_ELNO","ENDO_ELNO_SINO":"ENDO_ELNO","ENDO_NOEU_SINO":"ENDO_NOEU", + "ERRE_ELEM_SIGM":"ERME_ELEM","ERRE_ELEM_TEMP":"ERTH_ELEM", + "CRIT_ELNO_RUPT":"CRIT_ELNO","DEGE_ELNO_DEPL":"DEGE_ELNO","DEGE_NOEU_DEPL":"DEGE_NOEU", + "DURT_ELNO_META":"DURT_ELNO","DURT_NOEU_META":"DURT_NOEU","ECIN_ELEM_DEPL":"ECIN_ELEM","ENEL_ELNO_ELGA":"ENEL_ELNO", + "ENEL_NOEU_ELGA":"ENEL_NOEU","EPEQ_ELNO_TUYO":"EPTQ_ELNO","EPME_ELGA_DEPL":"EPME_ELGA","EPME_ELNO_DEPL":"EPME_ELNO", + "EPMG_ELGA_DEPL":"EPMG_ELGA","EPMG_ELNO_DEPL":"EPMG_ELNO","EPMG_NOEU_DEPL":"EPMG_NOEU","EPOT_ELEM_DEPL":"EPOT_ELEM", + "EPSG_ELGA_DEPL":"EPSG_ELGA","EPSG_ELNO_DEPL":"EPSG_ELNO","EPSG_NOEU_DEPL":"EPSG_NOEU", + "EPSI_ELGA_DEPL":"EPSI_ELGA","EPSI_NOEU_DEPL":"EPSI_NOEU","EPSI_ELNO_DEPL":"EPSI_ELNO","EPSI_ELNO_TUYO":"EPTU_ELNO", + "ERZ1_ELEM_SIGM":"ERZ1_ELEM","ERZ2_ELEM_SIGM":"ERZ2_ELEM", + "ETOT_ELNO_ELGA":"ETOT_ELNO","EXTR_ELGA_VARI":"VAEX_ELGA","EXTR_ELNO_VARI":"VAEX_ELNO","EXTR_NOEU_VARI":"VAEX_NOEU", + "FLUX_ELGA_TEMP":"FLUX_ELGA","FLUX_ELNO_TEMP":"FLUX_ELNO","FLUX_NOEU_TEMP":"FLUX_NOEU", + "HYDR_NOEU_ELGA":"HYDR_NOEU","HYDR_ELNO_ELGA":"HYDR_ELNO", + "META_ELNO_TEMP":"META_ELNO","META_NOEU_TEMP":"META_NOEU", + "PMPB_ELGA_SIEF":"PMPB_ELGA","PMPB_ELNO_SIEF":"PMPB_ELNO","PMPB_NOEU_SIEF":"PMPB_NOEU", + "QIRE_ELEM_SIGM":"QIRE_ELEM","QIRE_ELNO_ELEM":"QIRE_ELNO","QIRE_NOEU_ELEM":"QIRE_NOEU", + "QIZ1_ELEM_SIGM":"QIZ1_ELEM","QIZ2_ELEM_SIGM":"QIZ2_ELEM", + "SIEF_ELGA_DEPL":"SIEF_ELGA","SIEF_ELNO_ELGA":"SIEF_ELNO","SIEF_NOEU_ELGA":"SIEF_NOEU", + "SIEQ_ELNO_TUYO":"SITQ_ELNO","SING_ELNO_ELEM":"SING_ELNO","SIPO_ELNO_DEPL":"SIPO_ELNO","SIPO_NOEU_DEPL":"SIPO_NOEU", + "SOUR_ELGA_ELEC":"SOUR_ELGA", + "DCHA_ELGA_SIGM":"DERA_ELGA","DCHA_ELNO_SIGM":"DERA_ELNO","DCHA_NOEU_SIGM":"DERA_NOEU", + "RADI_ELGA_SIGM":"DERA_ELGA","RADI_ELNO_SIGM":"DERA_ELNO","RADI_NOEU_SIGM":"DERA_NOEU", + "EFGE_ELNO_CART":"EFCA_ELNO","EFGE_NOEU_CART":"EFCA_NOEU","EFGE_ELNO_DEPL":"EFGE_ELNO","EFGE_NOEU_DEPL":"EFGE_NOEU", + "EQUI_ELGA_EPME":"EPMQ_ELGA","EQUI_ELNO_EPME":"EPMQ_ELNO","EQUI_NOEU_EPME":"EPMQ_NOEU", + "EQUI_ELGA_EPSI":"EPEQ_ELGA","EQUI_ELNO_EPSI":"EPEQ_ELNO","EQUI_NOEU_EPSI":"EPEQ_NOEU", + "EQUI_ELGA_SIGM":"SIEQ_ELGA","EQUI_ELNO_SIGM":"SIEQ_ELNO","EQUI_NOEU_SIGM":"SIEQ_NOEU", + "SIGM_ELNO_CART":"SICA_ELNO","SIGM_NOEU_CART":"SICA_NOEU","SIGM_ELNO_COQU":"SICO_ELNO","SIGM_NOEU_COQU":"SICO_ELNO", + "SIGM_ELNO_TUYO":"SITU_ELNO", + "SIGM_ELNO_DEPL":"SIGM_ELNO","SIGM_NOEU_DEPL":"SIGM_NOEU","SIGM_NOZ1_ELGA":"SIZ1_ELGA","SIGM_NOZ2_ELGA":"SIZ2_ELGA", + "VALE_NCOU_MAXI":"SPMX_ELGA","VARI_ELNO_COQU":"VACO_ELNO","VARI_ELNO_TUYO":"VATU_ELNO", + "VARI_NOEU_ELGA":"VARI_NOEU","VARI_ELNO_ELGA":"VARI_ELNO", + "INDI_LOCA_ELGA":"INDL_ELGA"} + #"FORC_NODA":"FORC_NOEU","REAC_NODA":"REAC_NOEU" + ChangementValeurDsMCF(jdc,"AFFE_MATERIAU","AFFE_VARC","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"COMB_FOURIER","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"CREA_CHAMP","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"CREA_RESU","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"EXTR_RESU","ARCHIVAGE","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"LIRE_RESU","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"MACR_ADAP_MAIL","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"MACR_ASPIC_CALC","IMPRESSION","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"MACR_LIGN_COUPE","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"MODI_REPERE","MODI_CHAM","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"POST_ELEM","INTEGRALE","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"POST_ELEM","MINMAX","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"POST_RCCM","RESU_MECA","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"POST_RELEVE_T","ACTION","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"PROJ_CHAMP","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"PROJ_MESU_MODAL","MODELE_MESURE","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"RECU_FONCTION","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"REST_GENE_PHYS","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"REST_SOUS_STRUC","NOM_CHAM",dOPTION) + ChangementValeur(jdc,"REST_SPEC_PHYS","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"TEST_RESU","RESU","NOM_CHAM",dOPTION) + ChangementValeurDsMCF(jdc,"TEST_RESU","GENE","NOM_CHAM",dOPTION) + + ChangementValeur(jdc,"CALC_CHAM_ELEM","OPTION",dOPTION) + ChangementValeur(jdc,"CALC_ELEM","OPTION",dOPTION) + ChangementValeur(jdc,"CALC_META","OPTION",dOPTION) + ChangementValeur(jdc,"CALC_NO","OPTION",dOPTION) + ChangementValeur(jdc,"COMB_SISM_MODAL","OPTION",dOPTION) + ChangementValeur(jdc,"MECA_STATIQUE","OPTION",dOPTION) + ChangementValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",dOPTION) + ChangementValeur(jdc,"THER_NON_LINE","OPTION",dOPTION) + + ############ Message si SuppressionValeurs ou Valeurs ambigue CALC_ELEM/OPTION + rOPTION=("'DEUL_ELGA_DEPL'","'DEUL_ELGA_TEMP'","'DURT_ELGA_META'", + "'ERRE_ELNO_DEPL'", "'ERRE_NOEU_ELEM'", "'ERRE_ELNO_ELEM'","'EPSP_NOEU_ZAC'","'HYDR_ELNO_ELGA'", + "'SIGM_NOEU_ZAC'","'SIGM_ELNO_SIEF'","'SIGM_NOEU_SIEF'","'SIPO_ELNO_SIEF'","'SIPO_NOEU_SIEF'", + "'SIRE_ELNO_DEPL'","'SIRE_NOEU_DEPL'","'SIEF_NOEU'", + "'PRES_ELNO_DBEL'", "'VARI_NOEU'") + # Options ambigue : PRES_ELNO_DBEL --> prac_elno/prme_elno, ERRE* --> ERME_ELNO ou ERTH_ELNO selon PHENOMENE + # En commentaires les commandes non concernees par rOPTION + + GenereErreurValeurDsMCF(jdc,"AFFE_MATERIAU","AFFE_VARC","NOM_CHAM",rOPTION) + #GenereErreurValeur(jdc,"COMB_FOURIER","NOM_CHAM",rOPTION) + GenereErreurValeur(jdc,"CREA_CHAMP","NOM_CHAM",rOPTION) + GenereErreurValeur(jdc,"CREA_RESU","NOM_CHAM",rOPTION) + GenereErreurValeurDsMCF(jdc,"EXTR_RESU","ARCHIVAGE","NOM_CHAM",rOPTION) + GenereErreurValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",rOPTION) + GenereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",rOPTION) + GenereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",rOPTION) + GenereErreurValeur(jdc,"LIRE_RESU","NOM_CHAM",rOPTION) + GenereErreurValeur(jdc,"MACR_ADAP_MAIL","NOM_CHAM",rOPTION) + #GenereErreurDsMCF(jdc,"MACR_ASPIC_CALC","IMPRESSION","NOM_CHAM",rOPTION) + GenereErreurValeur(jdc,"MACR_LIGN_COUPE","NOM_CHAM",rOPTION) + GenereErreurValeurDsMCF(jdc,"MODI_REPERE","MODI_CHAM","NOM_CHAM",rOPTION) + #GenereErreurValeurDsMCF(jdc,"POST_RCCM","RESU_MECA","NOM_CHAM",rOPTION) + GenereErreurValeurDsMCF(jdc,"POST_ELEM","INTEGRALE","NOM_CHAM",rOPTION) + GenereErreurValeurDsMCF(jdc,"POST_ELEM","MINMAX","NOM_CHAM",rOPTION) + GenereErreurValeurDsMCF(jdc,"POST_RELEVE_T","ACTION","NOM_CHAM",rOPTION) + GenereErreurValeur(jdc,"PROJ_CHAMP","NOM_CHAM",rOPTION) + #GenereErreurValeurDsMCF(jdc,"PROJ_MESU_MODAL","MODELE_MESURE","NOM_CHAM",rOPTION) + GenereErreurValeur(jdc,"RECU_FONCTION","NOM_CHAM",rOPTION) + #GenereErreurValeur(jdc,"REST_GENE_PHYS","NOM_CHAM",rOPTION) + #GenereErreurValeur(jdc,"REST_SOUS_STRUC","NOM_CHAM",rOPTION) + #GenereErreurValeur(jdc,"REST_SPEC_PHYS","NOM_CHAM",rOPTION) + GenereErreurValeurDsMCF(jdc,"TEST_RESU","RESU","NOM_CHAM",rOPTION) + GenereErreurValeurDsMCF(jdc,"TEST_RESU","GENE","NOM_CHAM",rOPTION) + + GenereErreurValeur(jdc,"CALC_CHAM_ELEM","OPTION",rOPTION) + GenereErreurValeur(jdc,"CALC_ELEM","OPTION",rOPTION) + #GenereErreurValeur(jdc,"CALC_META","OPTION",rOPTION) + GenereErreurValeur(jdc,"CALC_NO","OPTION",rOPTION) + #GenereErreurValeur(jdc,"COMB_SISM_MODAL","OPTION",rOPTION) + #GenereErreurValeur(jdc,"MECA_STATIQUE","OPTION",rOPTION) + GenereErreurValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",rOPTION) + #GenereErreurValeur(jdc,"THER_NON_LINE","OPTION",rOPTION) + + ########### Message si CALC_ELEM/SENSIBILITE + GenereErreurMCF(jdc,"CALC_ELEM","SENSIBILITE") + + # non fait CALC_NO OPTION=FORC_NODA_NONL + + ########## Traitement MACRO_MISS_3D --> CALC_MISS + renameCommandeSiRegle(jdc,"MACRO_MISS_3D","CALC_MISS",((("OPTION","MODULE","MISS_IMPE",jdc),"MCsousMCFaPourValeur"),(("PARAMETRE","ISSF"),"nexistepasMCsousMCF"),(("PARAMETRE","DIRE_ONDE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_LISTE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_NB"),"nexistepasMCsousMCF"),)) + renameCommandeSiRegle(jdc,"MACRO_MISS_3D","CALC_MISS",((("OPTION","MODULE","MISS_IMPE",jdc),"MCsousMCFaPourValeur"),(("PARAMETRE","ISSF","NON",jdc),"MCsousMCFaPourValeur"),(("PARAMETRE","DIRE_ONDE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_LISTE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_NB"),"nexistepasMCsousMCF"),)) + removeMotCleInFact(jdc,"CALC_MISS","PARAMETRE","FICH_RESU_IMPE",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_MISS","PARAMETRE","FICH_RESU_FORC",pasDeRegle(),0) + removeMotCleInFact(jdc,"CALC_MISS","PARAMETRE","FICH_POST_TRAI",pasDeRegle(),0) + removeMotCle(jdc,"CALC_MISS","UNITE_OPTI_MISS",pasDeRegle()) + removeMotCle(jdc,"CALC_MISS","UNITE_MODELE_SOL",pasDeRegle()) + removeMotCle(jdc,"CALC_MISS","OPTION",pasDeRegle(),1) + ChangementValeur(jdc,"CALC_MISS","VERSION",{"V1_4":"V6.5"}) + ChangementValeur(jdc,"CALC_MISS","VERSION",{"V1_5":"V6.6"}) + ChangementValeur(jdc,"CALC_MISS","VERSION",{"V1_3":"V6.5"}) + + macr="" + interf="" + amor="" + for c in jdc.root.childNodes: + if c.name != "IMPR_MACR_ELEM" : continue + for mc in c.childNodes: + if mc.name == "MACR_ELEM_DYNA" : macr=mc.getText(jdc) + if mc.name == "GROUP_MA_INTERF": interf=mc.getText(jdc) + if mc.name == "AMOR_REDUIT": amor=mc.getText(jdc) + if amor != "" : chercheOperInsereFacteur(jdc,"CALC_MISS",amor,pasDeRegle(),0) + if interf != "" : chercheOperInsereFacteur(jdc,"CALC_MISS",interf,pasDeRegle(),0) + if macr != "" : chercheOperInsereFacteur(jdc,"CALC_MISS",macr,pasDeRegle(),0) + + chercheOperInsereFacteur(jdc,"CALC_MISS","TABLE_SOL=''",pasDeRegle(),0) + chercheOperInsereFacteur(jdc,"CALC_MISS","TYPE_RESU='FICHIER'",pasDeRegle(),0) + + ################################################################# + f=open(outfile,'w') + f.write(jdc.getSource()) + f.close() + + log.ferme(hdlr) + +def main(): + parser = optparse.OptionParser(usage=usage) + + parser.add_option('-i','--infile', dest="infile", default='toto.comm', + help="Le fichier à traduire") + parser.add_option('-o','--outfile', dest="outfile", default='tutu.comm', + help="Le fichier traduit") + + options, args = parser.parse_args() + traduc(options.infile,options.outfile) + +if __name__ == '__main__': + main() + diff --git a/UiQT4/CMakeLists.txt b/UiQT4/CMakeLists.txt index c1a94251..87e9573a 100644 --- a/UiQT4/CMakeLists.txt +++ b/UiQT4/CMakeLists.txt @@ -37,6 +37,7 @@ eficas_compile_ui ( OptionsOT.ui ) eficas_compile_ui ( OptionsPdf.ui ) eficas_compile_ui ( aideQT.ui ) eficas_compile_ui ( desChoixCata.ui ) +eficas_compile_ui ( desChoixCode.ui ) eficas_compile_ui ( desChoixMap.ui ) eficas_compile_ui ( desCommande.ui ) eficas_compile_ui ( desCommentaire.ui ) diff --git a/UiQT4/OptionsCuve.ui b/UiQT4/OptionsCuve.ui index cac61d7b..adeb183d 100644 --- a/UiQT4/OptionsCuve.ui +++ b/UiQT4/OptionsCuve.ui @@ -1,7 +1,8 @@ - + + desOptions - - + + 0 0 @@ -9,341 +10,319 @@ 645 - + Option TURNS - - - - + + + + 635 - 252 + 200 - + 16777215 252 - + Configurer une Version - - - - 10 - 30 - 121 - 40 - - - - - 0 - 40 - - - - - 121 - 40 - - - - - - - 500 - 30 - 121 - 40 - - - - - 90 - 40 - - - - - 121 - 40 - - - - Valider - - - false - - - - - - 10 - 200 - 106 - 43 - - - - - 101 - 41 - - - - Ajouter + + + + + + + + 120 + 40 + + + + + 121 + 40 + + + + + + + + + 120 + 0 + + + + Qt::Horizontal + + + + 117 + 20 + + + + + + + + + 120 + 40 + + + + + 121 + 40 + + + + Valider + + + false + + + + + + + + + + + Fichier catalogue (chemin complet) : + + + false + + + + + + + + 501 + 41 + + + + + + + + + + + + + + + + 101 + 41 + + + + Ajouter Version : - - - - - - 122 - 200 - 154 - 43 - - - - - 101 - 41 - - - - - - - 360 - 200 - 106 - 43 - - - - - 101 - 41 - - - - Supprimer + + + + + + + + 101 + 41 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 101 + 41 + + + + Supprimer Version : - - - - - - 470 - 200 - 155 - 43 - - - - - 0 - 41 - - - - - - - 7 - 100 - 621 - 65 - - - - - - - Fichier catalogue (chemin complet) : - - - false - - - - - - - - 501 - 41 - - - - - - - - - + + + + + + + + 0 + 41 + + + + + + + - - - + + + 548 - 90 + 0 - + Doc - - - - 11 - 28 - 617 - 41 - - - - - 613 - 41 - - - - - 16777215 - 41 - - - - Répertoire d'accès à la documentation : - - - false - - - - - - 11 - 74 - 617 - 41 - - - - - 520 - 41 - - - - - - + + + + + + 0 + 0 + + + + + 16777215 + 41 + + + + Répertoire d'accès à la documentation : + + + false + + + + + + + + 520 + 40 + + + + + + + + - - - + + + 548 - 90 + 0 - + Espace de travail - - - - 11 - 28 - 617 - 41 - - - - - 613 - 41 - - - - - 16777215 - 41 - - - - Répertoire de sauvegarde par défaut : - - - false - - - - - - 11 - 74 - 617 - 41 - - - - - 520 - 41 - - - - - - + + + + + + 0 + 0 + + + + + 16777215 + 41 + + + + Répertoire de sauvegarde par défaut : + + + false + + + + + + + + 520 + 41 + + + + + + + + - - - + + + Qt::Horizontal - - + + 340 41 - + 16777215 41 - + 12 - + Réinitialiser avec les valeurs par defaut - - + + 151 31 - + Quitter @@ -351,7 +330,7 @@ Version : - + qPixmapFromMimeSource diff --git a/UiQT4/OptionsOT.ui b/UiQT4/OptionsOT.ui index 0ed9364e..91178149 100644 --- a/UiQT4/OptionsOT.ui +++ b/UiQT4/OptionsOT.ui @@ -1,7 +1,8 @@ - + + desOptions - - + + 0 0 @@ -9,389 +10,357 @@ 794 - + + + 0 + 0 + + + Option TURNS - - - - + + + + 635 - 252 + 200 - + 16777215 252 - + Configurer une Version - - - - 10 - 30 - 121 - 40 - - - - - 0 - 40 - - - - - 121 - 40 - - - - - - - 500 - 30 - 121 - 40 - - - - - 90 - 40 - - - - - 121 - 40 - - - - Valider - - - false - - - - - - 10 - 200 - 106 - 43 - - - - - 101 - 41 - - - - Ajouter + + + + + + + + 120 + 40 + + + + + 121 + 40 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 120 + 40 + + + + + 121 + 40 + + + + Valider + + + false + + + + + + + + + + + Fichier catalogue (chemin complet) : + + + false + + + + + + + + 501 + 41 + + + + + + + + + + + + + + + + 101 + 41 + + + + Ajouter Version : - - - - - - 122 - 200 - 154 - 43 - - - - - 101 - 41 - - - - - - - 360 - 200 - 106 - 43 - - - - - 101 - 41 - - - - Supprimer + + + + + + + + 101 + 41 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 101 + 41 + + + + Supprimer Version : - - - - - - 470 - 200 - 155 - 43 - - - - - 0 - 41 - - - - - - - 7 - 100 - 621 - 65 - - - - - - - Fichier catalogue (chemin complet) : - - - false - - - - - - - - 501 - 41 - - - - - - - - - + + + + + + + + 0 + 41 + + + + + + + - - - + + + 548 - 90 + 0 - + Configurer la bibliothèque Open TURNS - - - - 11 - 28 - 617 - 17 - - - - Répertoire d'installation d'Open TURNS : - - - false - - - - - - 11 - 50 - 617 - 41 - - - - - 520 - 41 - - - - - - + + + + + Répertoire d'installation d'Open TURNS : + + + false + + + + + + + + 520 + 41 + + + + + + + + - - - + + + 548 - 90 + 0 - + Doc - - - - 11 - 28 - 617 - 41 - - - - - 613 - 41 - - - - - 16777215 - 41 - - - - Répertoire d'accès à la documentation : - - - false - - - - - - 11 - 74 - 617 - 41 - - - - - 520 - 41 - - - - - - + + + + + + 613 + 0 + + + + + 16777215 + 41 + + + + Répertoire d'accès à la documentation : + + + false + + + + + + + + 520 + 41 + + + + + + + + - - - + + + 548 - 90 + 0 - + Espace de travail - - - - 11 - 28 - 617 - 41 - - - - - 613 - 41 - - - - - 16777215 - 41 - - - - Répertoire de sauvegarde par défaut : - - - false - - - - - - 11 - 74 - 617 - 41 - - - - - 520 - 41 - - - - - - + + + + + + 613 + 0 + + + + + 16777215 + 41 + + + + Répertoire de sauvegarde par défaut : + + + false + + + + + + + + 520 + 41 + + + + + + + + - - - + + + Qt::Horizontal - - + + 340 41 - + 16777215 41 - + 12 - + Réinitialiser avec les valeurs par defaut - - + + 151 31 - + Quitter @@ -399,7 +368,7 @@ Version : - + qPixmapFromMimeSource diff --git a/UiQT4/OptionsPdf.ui b/UiQT4/OptionsPdf.ui index 83a4a41e..4128a1da 100644 --- a/UiQT4/OptionsPdf.ui +++ b/UiQT4/OptionsPdf.ui @@ -1,81 +1,98 @@ - - - - - desPdf - - - - 0 - 0 - 538 - 142 - - - - desPdf - - - - - 20 - 10 - 280 - 20 - - - - Lecteur Pdf - - + + desPdf + + + + 0 + 0 + 538 + 142 + + + + Lire les Pdf + + + + + + + + Lecteur Pdf : + + false - - - - - - 450 - 90 - 70 - 31 - - - - Cancel - - + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + - - - 20 - 40 - 501 - 31 - - - - acroread - + + + 0 + 30 + + + + acroread + - - - - 350 - 90 - 70 - 31 - - - + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + Ok - - - - - qPixmapFromMimeSource - - LERepPdf - Bok - BCancel - + + + + + + + Cancel + + + + + + + + + qPixmapFromMimeSource + + LERepPdf + Bok + BCancel + + + diff --git a/UiQT4/desChoixCata.ui b/UiQT4/desChoixCata.ui index 07de1233..da0461f2 100644 --- a/UiQT4/desChoixCata.ui +++ b/UiQT4/desChoixCata.ui @@ -1,145 +1,223 @@ - + + DChoixCata - - + + 0 0 - 547 - 215 + 465 + 271 - + Choix d'une version du code Aster - + true - - - - - - 30 - 0 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + + + + + 0 + 0 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">2 versions sont disponibles</span></p></body></html> - - - false - - +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">2 versions sont disponibles</span></p></body></html> + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - - - true - - - - 125 - 41 - + + + + Qt::Vertical - + - 150 - 16777215 + 20 + 45 - + - - - - - 60 - 60 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:large;">Veuillez choisir celle avec laquelle</span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:large;"><span style=" font-size:large;"> vous souhaitez travailler</span></p></body></html> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:large;">Veuillez choisir celle avec laquelle</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:large;"> vous souhaitez travailler</span></p></td></tr></table></body></html> + + + false + + + false + + + + + + + Qt::Horizontal + + + + 38 + 20 + + + + + + + + true + + + + 125 + 41 + + + + + 150 + 16777215 + + + + + + + + + + Qt::Vertical - - false + + + 20 + 45 + - + - - - + + + QFrame::StyledPanel - + QFrame::Raised - - - - 11 - 13 - 91 - 41 - - - - &OK - - - - - - true - - - true - - - - - - 437 - 13 - 81 - 41 - - - - - 81 - 41 - - - - &Cancel - - - - - - true - - + + + + + + 81 + 41 + + + + &OK + + + + + + true + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 81 + 41 + + + + &Cancel + + + + + + true + + + + - TLNb - textLabel1_2 - CBChoixCata - frame3 - + qPixmapFromMimeSource diff --git a/UiQT4/desChoixCode.ui b/UiQT4/desChoixCode.ui new file mode 100644 index 00000000..2006fc34 --- /dev/null +++ b/UiQT4/desChoixCode.ui @@ -0,0 +1,246 @@ + + + ChoixCode + + + + 0 + 0 + 508 + 442 + + + + Choix du code + + + + + + + + + 0 + 30 + + + + Veuillez choisir un code : + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 70 + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 40 + 20 + + + + + + + + + + + + 0 + 30 + + + + Aster + + + true + + + + + + + + 0 + 30 + + + + Carmel3D + + + + + + + + 0 + 30 + + + + Cuve2dg + + + + + + + + 0 + 30 + + + + MAP + + + + + + + + 0 + 30 + + + + Openturns_Study + + + + + + + + 0 + 30 + + + + Openturns_Wrapper + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 58 + + + + + + + + + + + 80 + 30 + + + + OK + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 80 + 30 + + + + Cancel + + + + + + + + + + diff --git a/UiQT4/desChoixMap.ui b/UiQT4/desChoixMap.ui index dc8e8a83..4fc16cf6 100644 --- a/UiQT4/desChoixMap.ui +++ b/UiQT4/desChoixMap.ui @@ -1,200 +1,245 @@ - + + ChoixMap - - + + 0 0 788 - 752 + 610 - + Dialog - - - - 10 - 370 - 141 - 41 - - - - scheme description : - - - - - - 10 - 440 - 83 - 30 - - - - Doc - - - - - - 10 - 30 - 83 - 91 - - - - - - - - ../../../map.ppm../../../map.ppm - - - - 160 - 160 - - - - - - - 670 - 30 - 81 - 101 - - - - - - - - image120.pngimage120.png - - - - 160 - 160 - - - - - - - 390 - 20 - 261 - 311 - - - - Scheme - - - - - - 110 - 20 - 261 - 311 - - - - Modules - - - - - - oxides - - - - - - - scc - - - - - - - concrete - - - - - - - polycristals - - - - - - - polymers - - - - - - - micro - - - - - - - seal - - - - - - - mox - - - - - - - nano - - - - - - - insulator - - - - - - - - - 160 - 380 - 551 - 31 - - - - - - + + + + + + + + + + 81 + 91 + + + + + + + + ../../../map.ppm../../../map.ppm + + + + 160 + 160 + + + + + + + + Qt::Vertical + + + + 20 + 264 + + + + + + + + + + Modules + + + + + + oxides + + + + + + + scc + + + + + + + concrete + + + + + + + polycristals + + + + + + + polymers + + + + + + + micro + + + + + + + seal + + + + + + + mox + + + + + + + nano + + + + + + + insulator + + + + + + + images + + + + + + + + + + Scheme + + + + + + + + + + 81 + 101 + + + + + + + + image120.pngimage120.png + + + + 160 + 160 + + + + + + + + Qt::Vertical + + + + 17 + 278 + + + + + + + + + + + + + + scheme description : + + + + + + + + + + + + + + + + + + Doc + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + PBIconeMap + pushButton_3 + groupBoxScheme + groupBoxModule + verticalSpacer + verticalSpacer_2 diff --git a/UiQT4/desCommande.ui b/UiQT4/desCommande.ui index 434caad0..9a5cc827 100644 --- a/UiQT4/desCommande.ui +++ b/UiQT4/desCommande.ui @@ -342,6 +342,13 @@ + + + + Tri Alpha + + + @@ -349,7 +356,7 @@ - 263 + 198 27 diff --git a/UiQT4/desError.ui b/UiQT4/desError.ui index f265353e..afee2cc7 100644 --- a/UiQT4/desError.ui +++ b/UiQT4/desError.ui @@ -1,7 +1,8 @@ - + + DError - - + + 0 0 @@ -9,44 +10,69 @@ 480 - + 350 0 - + DInactif - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + + + 130 + 120 + + + + + 16777215 + 16777215 + + + + + 0 + 0 + + + + QTextEdit::AutoNone + + + false + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;"></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;"></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;">Le noeud selectionné</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;">ne correspond pas</p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;">à un noeud actif</p></body></html> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Le noeud selectionné</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">ne correspond pas</span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">à un noeud actif</span></p></td></tr></table></body></html> - - + + - - + + Qt::Horizontal - + QSizePolicy::Expanding - + 171 20 @@ -55,30 +81,30 @@ p, li { white-space: pre-wrap; } - - + + suppression du mot clef - + &Supprimer - + Alt+S - + true - - + + Qt::Horizontal - + QSizePolicy::Expanding - + 171 20 @@ -90,7 +116,7 @@ p, li { white-space: pre-wrap; } - + qPixmapFromMimeSource diff --git a/UiQT4/desImage.ui b/UiQT4/desImage.ui new file mode 100644 index 00000000..513831b0 --- /dev/null +++ b/UiQT4/desImage.ui @@ -0,0 +1,68 @@ + + + DSelImage + + + + 0 + 0 + 400 + 329 + + + + Image Selection + + + + + 10 + 280 + 371 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + BSelect + accepted() + DSelImage + accept() + + + 248 + 254 + + + 157 + 274 + + + + + BSelect + rejected() + DSelImage + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/UiQT4/desInclude.ui b/UiQT4/desInclude.ui index 4ab0ed9a..3fd283fe 100644 --- a/UiQT4/desInclude.ui +++ b/UiQT4/desInclude.ui @@ -19,31 +19,6 @@ DMacro - - - - - 0 - 30 - - - - validation de la saisie - - - &Valider - - - Shift+A, Alt+A, Alt+A, Alt+A - - - true - - - true - - - @@ -299,17 +274,58 @@ p, li { white-space: pre-wrap; } + + + + Tri Alpha + + + + + + + + 161 + 30 + + + + validation de la saisie + + + &Valider + + + Shift+A, Alt+A, Alt+A, Alt+A + + + true + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + - bOk - Commentaire - TWChoix qPixmapFromMimeSource LEFiltre LENomFichier - bOk TWChoix LBMCPermis LBRegles diff --git a/UiQT4/desListeParam.ui b/UiQT4/desListeParam.ui index f7eb2483..6cd58761 100644 --- a/UiQT4/desListeParam.ui +++ b/UiQT4/desListeParam.ui @@ -15,7 +15,11 @@ - + + + QAbstractItemView::MultiSelection + + diff --git a/UiQT4/desMCFact.ui b/UiQT4/desMCFact.ui index b7d6966f..776d36e1 100644 --- a/UiQT4/desMCFact.ui +++ b/UiQT4/desMCFact.ui @@ -79,8 +79,14 @@ - + + + + 159 + 0 + + validation de la saisie @@ -98,6 +104,26 @@ + + + + Tri Alpha + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + diff --git a/UiQT4/desPlusieursBase.ui b/UiQT4/desPlusieursBase.ui index d94ed6da..f55efe66 100644 --- a/UiQT4/desPlusieursBase.ui +++ b/UiQT4/desPlusieursBase.ui @@ -1,7 +1,8 @@ - + + DPlusBase - - + + 0 0 @@ -9,40 +10,40 @@ 728 - + 350 0 - + DUnIn - - - - - + + + + + Saisir Valeur - - - + + + - - - <u><font size="+1">Valeur(s) actuelle(s)</font></u> + + + <u><font size="+1">Valeur(s) actuelle(s)</font></u> - + false - - + + - 200 + 0 0 @@ -50,41 +51,41 @@ - - - - + + + + - - + + 61 21 - + 61 21 - - <font size="+1">Valeur</font> + + <font size="+1">Valeur</font> - + false - - + + Qt::Horizontal - + QSizePolicy::Expanding - + 168 18 @@ -94,41 +95,41 @@ - - - - + + + + 0 0 - + 40 30 - + ajoute la valeur saisie sous l occurence selectionnée (en fin de liste si il n y a pas de selection) - + - + ../Editeur/icons/arrow_left.png../Editeur/icons/arrow_left.png - - - - + + + + 0 0 - + 220 30 @@ -136,79 +137,79 @@ - - - - + + + + 0 0 - + 40 30 - + enleve l occurence selectionnee - + - + ../Editeur/icons/arrow_right.png../Editeur/icons/arrow_right.png - - - - + + + + 0 0 - + 40 30 - + ajoute la valeur saisie sous l occurence selectionnée (en fin de liste si il n y a pas de selection) - + - + image240.pngimage240.png - - - + + + - 120 + 0 30 - + Visualiser - - - + + + Qt::Vertical - + 20 158 @@ -216,17 +217,17 @@ - - + + - - + + Qt::Horizontal - + QSizePolicy::Expanding - + 150 20 @@ -235,59 +236,59 @@ - + - - + + 100 30 - + 100 30 - + suppression du mot clef - + &Parametres - + Alt+P - + true - - + + 100 30 - + 100 30 - + suppression du mot clef - + &Importer - + Alt+I - + true @@ -296,15 +297,15 @@ - - - + + + Qt::Vertical - + QSizePolicy::Expanding - + 289 100 @@ -312,28 +313,28 @@ - - - + + + 298 61 - + - - - + + + Qt::Vertical - + QSizePolicy::Expanding - + 265 48 @@ -341,14 +342,14 @@ - - + + - - + + Qt::Horizontal - + 118 27 @@ -357,32 +358,32 @@ - - + + 160 30 - + 160 30 - + validation de la saisie - + &Valider - + Shift+A, Alt+A, Alt+A, Alt+A - + true - + false @@ -395,7 +396,7 @@ - + LEValeur tabuniqueinto diff --git a/UiQT4/desPlusieursInto.ui b/UiQT4/desPlusieursInto.ui index a44f52e5..ca5dd757 100644 --- a/UiQT4/desPlusieursInto.ui +++ b/UiQT4/desPlusieursInto.ui @@ -173,8 +173,8 @@ - 40 - 20 + 148 + 27 @@ -211,12 +211,19 @@ - 40 - 20 + 58 + 27 + + + + Tri Alpha + + + diff --git a/UiQT4/desPoursuite.ui b/UiQT4/desPoursuite.ui index 7fc41bf7..43dddc8f 100644 --- a/UiQT4/desPoursuite.ui +++ b/UiQT4/desPoursuite.ui @@ -248,11 +248,21 @@ - + + + + + + + false + + + + - 0 + 161 30 @@ -273,16 +283,26 @@ - - + + - - - - false + BAlpha + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -295,7 +315,6 @@ LBRegles LBNouvCommande RBalpha - bOk diff --git a/UiQT4/desSelectVal.ui b/UiQT4/desSelectVal.ui index 48eb58c8..35bf3ab2 100644 --- a/UiQT4/desSelectVal.ui +++ b/UiQT4/desSelectVal.ui @@ -1,110 +1,126 @@ - + + DSelVal - - + + 0 0 - 469 - 624 + 468 + 610 - + Sélection de valeurs - - - - 9 - 9 - 451 - 476 - - - - - - - 220 - 520 - 208 - 27 - - - - Ajouter Selection - - - - - - 220 - 560 - 208 - 27 - - - - Importer Tout - - - - - - 20 - 500 - 188 - 103 - - - - Separateur - - - - - 20 - 20 - 148 - 23 - - - - espace - - - true - - - - - - 20 - 40 - 148 - 23 - - - - virgule - - - - - - 20 - 60 - 148 - 23 - - - - point-virgule - - - + + + + + + 0 + 400 + + + + + + + + Qt::Vertical + + + + 20 + 73 + + + + + + + + + + Separateur + + + + + + espace + + + true + + + + + + + virgule + + + + + + + point-virgule + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 17 + 13 + + + + + + + + Ajouter Selection + + + + + + + Importer Tout + + + + + + + + - + qPixmapFromMimeSource diff --git a/UiQT4/desUniqueASSD.ui b/UiQT4/desUniqueASSD.ui index 5f205a7e..8a62b41b 100644 --- a/UiQT4/desUniqueASSD.ui +++ b/UiQT4/desUniqueASSD.ui @@ -1,7 +1,8 @@ - + + DUnASSD - - + + 0 0 @@ -9,67 +10,67 @@ 480 - + - 350 + 0 0 - + DUnIn - - - - - + + + + + Saisir Valeur - - - - + + + + 436 50 - - <font size="+1"><p align="center">Structures de données du type -requis par l'objet courant :</p></font> + + <font size="+1"><p align="center">Structures de données du type +requis par l'objet courant :</p></font> - + false - - + + - - - + + + 380 30 - + - + false - - + + - - + + Qt::Horizontal - + 138 20 @@ -78,36 +79,36 @@ requis par l'objet courant :</p></font> - - + + 160 30 - + validation de la saisie - + &Valider - + Shift+A, Alt+A, Alt+A, Alt+A - + true - + true - - + + Qt::Horizontal - + 138 20 @@ -123,7 +124,7 @@ requis par l'objet courant :</p></font> - + qPixmapFromMimeSource diff --git a/UiQT4/desUniqueBase.ui b/UiQT4/desUniqueBase.ui index 4fd89972..e72877ad 100644 --- a/UiQT4/desUniqueBase.ui +++ b/UiQT4/desUniqueBase.ui @@ -10,12 +10,6 @@ 480 - - - 350 - 0 - - DUnIn diff --git a/UiQT4/desUniqueComp.ui b/UiQT4/desUniqueComp.ui index f7a21519..54e87d57 100644 --- a/UiQT4/desUniqueComp.ui +++ b/UiQT4/desUniqueComp.ui @@ -1,7 +1,8 @@ - + + DUnComp - - + + 0 0 @@ -9,38 +10,32 @@ 529 - - - 350 - 0 - - - + DUnComp - - - - - + + + + + Saisir Valeur - - - + + + - - - <font size="+2">Complexe de la forme : a+bj</font> + + + <font size="+2">Complexe de la forme : a+bj</font> - + false - - + + 390 40 @@ -50,14 +45,14 @@ - - + + - - + + Qt::Vertical - + 20 40 @@ -66,21 +61,21 @@ - - + + Ou - - - - + + + + RI : Réel Imaginaire - - - + + + MP : Module Phase @@ -90,11 +85,11 @@ - - + + - - + + 190 40 @@ -103,8 +98,8 @@ - - + + 190 40 @@ -114,24 +109,24 @@ - - + + - - - <font size="+2">Un complexe est attendu</font> + + + <font size="+2">Un complexe est attendu</font> - + false - - + + Qt::Vertical - + 20 40 @@ -140,13 +135,13 @@ - + - - + + Qt::Horizontal - + 40 20 @@ -155,42 +150,42 @@ - - + + 160 30 - + 160 30 - + validation de la saisie - + &Valider - + Shift+A, Alt+A, Alt+A, Alt+A - + true - + true - - + + Qt::Horizontal - + 40 20 @@ -208,7 +203,7 @@ - + qPixmapFromMimeSource LEcomp diff --git a/UiQT4/desUniqueInto.ui b/UiQT4/desUniqueInto.ui index 0023c022..7f9b33e6 100644 --- a/UiQT4/desUniqueInto.ui +++ b/UiQT4/desUniqueInto.ui @@ -64,8 +64,8 @@ - 138 - 20 + 118 + 27 @@ -108,12 +108,19 @@ - 118 + 40 20 + + + + Tri alpha + + + diff --git a/UiQT4/desUniqueSDCOInto.ui b/UiQT4/desUniqueSDCOInto.ui index ad293273..a8c5e0c1 100644 --- a/UiQT4/desUniqueSDCOInto.ui +++ b/UiQT4/desUniqueSDCOInto.ui @@ -1,7 +1,8 @@ - + + DUnSDCOInto - - + + 0 0 @@ -9,83 +10,83 @@ 480 - + - 350 + 0 0 - + DUnIn - - - - - + + + + + Saisir Valeur - - - - - <font size="+1"><u>Structures de données du type requis par l'objet courant </u></font> + + + + + <font size="+1"><u>Structures de données du type requis par l'objet courant </u></font> - + false - - + + - - - - <font size="+1">Un objet de type CO est attendu</font> + + + + <font size="+1">Un objet de type CO est attendu</font> - + false - - - + + + 420 30 - + - + false - - + + - - + + - - + + 190 50 - + QFrame::StyledPanel - + QFrame::Raised - - + + 20 10 @@ -93,18 +94,18 @@ 30 - - <font size="+1"> Nom concept : </font> + + <font size="+1"> Nom concept : </font> - + false - - + + 220 40 @@ -114,27 +115,27 @@ - - - + + + 0 30 - + validation de la saisie - + &Valider - + Shift+A, Alt+A, Alt+A, Alt+A - + true - + true @@ -145,7 +146,7 @@ - + qPixmapFromMimeSource LESDCO diff --git a/UiQT4/makefile b/UiQT4/makefile index 241af709..03c68280 100644 --- a/UiQT4/makefile +++ b/UiQT4/makefile @@ -9,7 +9,7 @@ PY_FILES = desChoixCata.py desCommande.py desCommentaire.py desError.py desFormu desUniqueASSD.py desUniqueBase.py desUniqueComp.py desUniqueInto.py desUniqueSDCOInto.py \ desUniqueSDCO.py desVisu.py aideQT.py OptionsEditeur.py OptionsPdf.py myMain.py \ desViewTexte.py desPixmap.py desMatrice.py OptionsOT.py OptionsCuve.py desChoixMap.py \ - OptionsMAP.py + OptionsMAP.py desImage.py desChoixCode.py %.py:%.ui ${PYUIC} -x -o $@ $< diff --git a/UiQT4/myMain.ui b/UiQT4/myMain.ui index cf9dbea5..33765370 100644 --- a/UiQT4/myMain.ui +++ b/UiQT4/myMain.ui @@ -68,17 +68,11 @@ - - - Patrons - - - @@ -95,9 +89,10 @@ - + + @@ -250,6 +245,10 @@ + + + ../Editeur/icons/delete.png../Editeur/icons/delete.png + Supprimer diff --git a/Validation/V_AU_PLUS_UN.py b/Validation/V_AU_PLUS_UN.py index ddc76132..d2f9fe06 100644 --- a/Validation/V_AU_PLUS_UN.py +++ b/Validation/V_AU_PLUS_UN.py @@ -1,4 +1,4 @@ -#@ MODIF V_AU_PLUS_UN Validation DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF V_AU_PLUS_UN Validation DATE 09/11/2010 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION @@ -29,7 +29,7 @@ class AU_PLUS_UN: d'une liste de noms de mots-clés ou d'un dictionnaire dont les clés sont des noms de mots-clés. """ - def verif(self,args): + def verif(self, args): """ La méthode verif vérifie que l'on trouve 1 (au plus) des mos-clés de la liste self.mcs parmi les éléments de args @@ -38,13 +38,23 @@ class AU_PLUS_UN: sont soit les éléments de la liste soit les clés du dictionnaire. """ # on compte le nombre de mots cles presents - text ='' - count=0 + text = '' + count = 0 args = self.liste_to_dico(args) for mc in self.mcs: - if args.has_key(mc):count=count+1 + count = count + args.get(mc, 0) if count > 1: - text = "- Il ne faut qu'un mot-clé (au plus) parmi : "+`self.mcs`+'\n' - return text,0 - return text,1 + text = "- Il ne faut qu'un mot-clé (au plus) parmi : "+`self.mcs`+'\n' + return text, 0 + return text, 1 + def liste_to_dico(self, args) : + if type(args) is dict: + return args + elif type(args) in (list, tuple): + dico={} + for arg in args: + dico[arg] = dico.get(arg, 0) + 1 + return dico + else : + raise "Erreur ce n'est ni un dictionnaire ni une liste", args diff --git a/Validation/V_MCCOMPO.py b/Validation/V_MCCOMPO.py index ff80d087..02c2e6b8 100644 --- a/Validation/V_MCCOMPO.py +++ b/Validation/V_MCCOMPO.py @@ -1,24 +1,24 @@ -#@ MODIF V_MCCOMPO Validation DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +#@ MODIF V_MCCOMPO Validation DATE 30/08/2011 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- # RESPONSABLE COURTOIS M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2011 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. +# 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. # -# 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. -# -# # ====================================================================== @@ -36,7 +36,7 @@ from Noyau.N_Exception import AsException class MCCOMPO: """ - L'attribut mc_liste a été créé par une classe dérivée de la + L'attribut mc_liste a été créé par une classe dérivée de la classe MCCOMPO du Noyau """ @@ -54,8 +54,8 @@ class MCCOMPO: self.parent.state = 'modified' def report(self): - """ - Génère le rapport de validation de self + """ + Génère le rapport de validation de self """ self.cr=self.CR() self.cr.debut = self.txt_nat+self.nom @@ -71,19 +71,19 @@ class MCCOMPO: return self.cr def verif_regles(self): - """ - A partir du dictionnaire des mots-clés présents, vérifie si les règles + """ + A partir du dictionnaire des mots-clés présents, vérifie si les règles de self sont valides ou non. Retourne une string et un booléen : - texte = la string contient le message d'erreur de la (les) règle(s) violée(s) ('' si aucune) - - testglob = booléen 1 si toutes les règles OK, 0 sinon + - testglob = booléen 1 si toutes les règles OK, 0 sinon """ #dictionnaire=self.dict_mc_presents(restreint='oui') dictionnaire=self.dict_mc_presents(restreint='non') # On verifie les regles avec les defauts affectés - texte='' + texte='\n' testglob = 1 for r in self.definition.regles: erreurs,test=r.verif(dictionnaire) @@ -96,7 +96,7 @@ class MCCOMPO: return texte,testglob def dict_mc_presents(self,restreint='non'): - """ + """ Retourne le dictionnaire {mocle : objet} construit à partir de self.mc_liste Si restreint == 'non' : on ajoute tous les mots-clés simples du catalogue qui ont une valeur par défaut diff --git a/Validation/V_MCSIMP.py b/Validation/V_MCSIMP.py index 88b55e52..f0fc7147 100644 --- a/Validation/V_MCSIMP.py +++ b/Validation/V_MCSIMP.py @@ -22,12 +22,12 @@ # ====================================================================== """ - Ce module contient la classe mixin MCSIMP qui porte les méthodes - nécessaires pour réaliser la validation d'un objet de type MCSIMP - dérivé de OBJECT. + Ce module contient la classe mixin MCSIMP qui porte les methodes + necessaires pour realiser la validation d'un objet de type MCSIMP + derive de OBJECT. Une classe mixin porte principalement des traitements et est - utilisée par héritage multiple pour composer les traitements. + utilisee par heritage multiple pour composer les traitements. """ # Modules Python import string,types @@ -42,20 +42,20 @@ from Noyau.N_VALIDATOR import listProto class MCSIMP: """ COMMENTAIRE CCAR: - Cette classe est quasiment identique à la classe originale d'EFICAS - a part quelques changements cosmétiques et des chagements pour la - faire fonctionner de facon plus autonome par rapport à l'environnement + Cette classe est quasiment identique a la classe originale d'EFICAS + a part quelques changements cosmetiques et des chagements pour la + faire fonctionner de facon plus autonome par rapport a l'environnement EFICAS - A mon avis, il faudrait aller plus loin et réduire les dépendances - amont au strict nécessaire. + A mon avis, il faudrait aller plus loin et reduire les dependances + amont au strict necessaire. - - Est il indispensable de faire l'évaluation de la valeur dans le contexte + - Est il indispensable de faire l'evaluation de la valeur dans le contexte du jdc dans cette classe. - - Ne pourrait on pas doter les objets en présence des méthodes suffisantes - pour éviter les tests un peu particuliers sur GEOM, PARAMETRE et autres. J'ai - d'ailleurs modifié la classe pour éviter l'import de GEOM + - Ne pourrait on pas doter les objets en presence des methodes suffisantes + pour eviter les tests un peu particuliers sur GEOM, PARAMETRE et autres. J'ai + d'ailleurs modifie la classe pour eviter l'import de GEOM """ CR=N_CR.CR @@ -82,14 +82,14 @@ class MCSIMP: def isvalid(self,cr='non'): """ - Cette méthode retourne un indicateur de validité de l'objet de type MCSIMP + Cette methode retourne un indicateur de validite de l'objet de type MCSIMP - 0 si l'objet est invalide - 1 si l'objet est valide - Le paramètre cr permet de paramétrer le traitement. Si cr == 'oui' - la méthode construit également un comte-rendu de validation - dans self.cr qui doit avoir été créé préalablement. + Le parametre cr permet de parametrer le traitement. Si cr == 'oui' + la methode construit egalement un comte-rendu de validation + dans self.cr qui doit avoir ete cree prealablement. """ if self.state == 'unchanged': return self.valid @@ -99,14 +99,14 @@ class MCSIMP: # verification presence if self.isoblig() and v == None : if cr == 'oui' : - self.cr.fatal(string.join(("Mot-clé : ",self.nom," obligatoire non valorisé"))) + self.cr.fatal(string.join(("Mot-cle : ",self.nom," obligatoire non valorise"))) valid = 0 lval=listProto.adapt(v) if lval is None: valid=0 if cr == 'oui' : - self.cr.fatal("None n'est pas une valeur autorisée") + self.cr.fatal("None n'est pas une valeur autorisee") else: # type,into ... #typeProto=TypeProtocol("type",typ=self.definition.type) @@ -119,7 +119,7 @@ class MCSIMP: intoProto=self.intoProto cardProto=self.cardProto if cr == 'oui' : - #un cr est demandé : on collecte tous les types d'erreur + #un cr est demande : on collecte tous les types d'erreur try: for val in lval: typeProto.adapt(val) @@ -144,7 +144,7 @@ class MCSIMP: try: self.definition.validators.convert(lval) except ValError,e: - self.cr.fatal(string.join(("Mot-clé",self.nom,"invalide :",str(e),"\nCritere de validite:",self.definition.validators.info()))) + self.cr.fatal(string.join(("Mot-cle",self.nom,"invalide :",str(e),"\nCritere de validite:",self.definition.validators.info()))) valid=0 else: #si pas de cr demande, on sort a la toute premiere erreur @@ -164,29 +164,29 @@ class MCSIMP: return self.valid def isoblig(self): - """ indique si le mot-clé est obligatoire + """ indique si le mot-cle est obligatoire """ return self.definition.statut=='o' def init_modif_up(self): """ - Propage l'état modifié au parent s'il existe et n'est l'objet + Propage l'etat modifie au parent s'il existe et n'est l'objet lui-meme """ if self.parent and self.parent != self : self.parent.state = 'modified' def report(self): - """ génère le rapport de validation de self """ + """ genere le rapport de validation de self """ self.cr=self.CR() - self.cr.debut = "Mot-clé simple : "+self.nom - self.cr.fin = "Fin Mot-clé simple : "+self.nom + self.cr.debut = "Mot-cle simple : "+self.nom + self.cr.fin = "Fin Mot-cle simple : "+self.nom self.state = 'modified' try: self.isvalid(cr='oui') except AsException,e: if CONTEXT.debug : traceback.print_exc() - self.cr.fatal(string.join(("Mot-clé simple : ",self.nom,str(e)))) + self.cr.fatal(string.join(("Mot-cle simple : ",self.nom,str(e)))) return self.cr diff --git a/Validation/V_MEME_NOMBRE.py b/Validation/V_MEME_NOMBRE.py new file mode 100644 index 00000000..e07bb302 --- /dev/null +++ b/Validation/V_MEME_NOMBRE.py @@ -0,0 +1,66 @@ +#@ MODIF V_MEME_NOMBRE Validation DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS +# -*- coding: iso-8859-1 -*- +# RESPONSABLE COURTOIS M.COURTOIS +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== + + + +class MEME_NOMBRE: + """ + La règle MEME_NOMBRE vérifie que l'on trouve au moins un des mots-clés + de la règle parmi les arguments d'un OBJECT. + + Ces arguments sont transmis à la règle pour validation sous la forme + d'une liste de noms de mots-clés ou d'un dictionnaire dont + les clés sont des noms de mots-clés. + """ + def verif(self,args): + """ + La méthode verif vérifie que l'on trouve au moins un des mos-clés + de la liste self.mcs parmi les éléments de args + + args peut etre un dictionnaire ou une liste. Les éléments de args + sont soit les éléments de la liste soit les clés du dictionnaire. + """ + # on compte le nombre de mots cles presents + text ='' + args = self.liste_to_dico(args) + size = -1 + + for mc in self.mcs: + if mc not in args.keys(): + text = "Une clé dans la régle n'existe pas %s" % mc + return text,0 + + val = args[mc].valeur + len_val = 0 + if not isinstance(val,type([])): + len_val = 1 + else: + len_val = len(val) + + if size == -1: + size = len_val + elif size != len_val: + text = "Pas la même longeur" + return text,0 + return text,1 + diff --git a/convert/convert_openturns_study.py b/convert/convert_openturns_study.py index ba62b9f9..d1727ad3 100644 --- a/convert/convert_openturns_study.py +++ b/convert/convert_openturns_study.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -18,22 +17,33 @@ # # # ====================================================================== -""" -""" -import parseur_python -from convert_python import * +import re +from convert_python import PythonParser def entryPoint(): """ - Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire + Return a dictionary containing the description needed to load the plugin """ return { - # Le nom du plugin 'name' : 'openturns_study', - # La factory pour créer une instance du plugin - 'factory' : PythonParser, + 'factory' : OTStudyParser } +class OTStudyParser(PythonParser): + """ + This converter works like PythonParser, except that it also initializes all + model variables to None in order to avoid Python syntax errors when loading + a file with a different or inexistent definition of variables. + """ + # We look for pattern "ModelVariable=NOMVAR," + pattern_model_variable = re.compile(r'ModelVariable\s*=\s*(\w+)\s*,') + def convert(self, outformat, appli=None): + text = PythonParser.convert(self, outformat, appli) + varnames = self.pattern_model_variable.findall(text) + newtext = "" + for var in varnames: + newtext += "%s = None\n" % var + newtext += text + return newtext diff --git a/generator/OpenturnsSTD.py b/generator/OpenturnsSTD.py index 7b845bcb..56187753 100644 --- a/generator/OpenturnsSTD.py +++ b/generator/OpenturnsSTD.py @@ -8,8 +8,6 @@ Ce module contient le generateur Etude pour Openturns __revision__ = "V1.0" -import os - defaultSTD = """#! /usr/bin/env python class StudyFileGenerationError: @@ -269,13 +267,11 @@ class STDGenerateur : ''' Importe le modele physique ''' - fonction = None if ( self.DictMCVal.has_key( 'FileName' ) ): name = self.DictMCVal[ 'FileName' ] - #fonction = name[name.rfind('/')+1:name.rfind('.xml')] txt = "# Charge le modele physique\n" - txt = "%s = WrapperFile( '%s' )\n" % (self.variable["wrapper"], name) + txt += "%s = WrapperFile( '%s' )\n" % (self.variable["wrapper"], name) txt += "%s = %s.getWrapperData()\n" % (self.variable["wrapperdata"], self.variable["wrapper"]) txt += "# Ces lignes sont utiles pour le fonctionnement du script sous Salome\n" @@ -289,7 +285,7 @@ class STDGenerateur : txt += "# Fin des lignes pour Salome\n" txt += "%s = NumericalMathFunction( %s )\n" % (self.variable["model"], self.variable["wrapper"],) - txt += "%s = %s.getInputNumericalPointDimension()\n" % (self.variable["n"], self.variable["model"]) + txt += "%s = %s.getInputDimension()\n" % (self.variable["n"], self.variable["model"]) txt += "\n" return txt diff --git a/generator/generator_cuve2dg.py b/generator/generator_cuve2dg.py index f1bb0b26..e109c493 100644 --- a/generator/generator_cuve2dg.py +++ b/generator/generator_cuve2dg.py @@ -589,7 +589,7 @@ class Cuve2dgGenerator(PythonGenerator): "SurfaceEchange_FluideStructure_mess" : "TRANSITOIRE", } - def gener(self,obj,format='brut'): + def gener(self,obj,format='brut',config=None): self.text='' self.textCuve='' self.dico_mot={} @@ -606,7 +606,8 @@ class Cuve2dgGenerator(PythonGenerator): s=PythonGenerator.generMCSIMP(self,obj) return s - def writeCuve2DG(self, filename): + def writeDefault(self, fn): + filename = fn[:fn.rfind(".")] + '.don' print "je passe dans writeCuve2DG" self.genereTexteCuve() f = open( filename, 'wb') diff --git a/generator/generator_homard.py b/generator/generator_homard.py index 09a20a9d..751be8a0 100644 --- a/generator/generator_homard.py +++ b/generator/generator_homard.py @@ -37,14 +37,14 @@ from generator_python import PythonGenerator def entryPoint(): """ - Retourne les informations nécessaires pour le chargeur de plugins + Retourne les informations necessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire + Ces informations sont retournees dans un dictionnaire """ return { # Le nom du plugin 'name' : 'homard', - # La factory pour créer une instance du plugin + # La factory pour creer une instance du plugin 'factory' : HomardGenerator, } @@ -56,7 +56,7 @@ class HomardGenerator(PythonGenerator): un texte au format homard """ - # Les extensions de fichier préconisées + # Les extensions de fichier preconis�es extensions=('.comm',) def __init__(self,cr=None): @@ -66,7 +66,7 @@ class HomardGenerator(PythonGenerator): else: self.cr=N_CR.CR(debut='CR generateur format homard pour homard', fin='fin CR format homard pour homard') - # Le texte au format homard est stocké dans l'attribut text + # Le texte au format homard est stock� dans l'attribut text self.dico_mot_clef={} self.assoc={} self.init_assoc() @@ -125,7 +125,7 @@ class HomardGenerator(PythonGenerator): def generMCSIMP(self,obj) : """ - Convertit un objet MCSIMP en une liste de chaines de caractères à la + Convertit un objet MCSIMP en une liste de chaines de caract�res � la syntaxe homard """ s=PythonGenerator.generMCSIMP(self,obj) @@ -154,7 +154,7 @@ class HomardGenerator(PythonGenerator): self.textehomard=[] for mot in self.lmot_clef: -# on verifie d'abord que le mot clef doit bien être calculé +# on verifie d'abord que le mot clef doit bien etre calcule if self.dico_mot_depend.has_key(mot) : if self.cherche_dependance(mot) == 0 : continue diff --git a/generator/generator_map.py b/generator/generator_map.py index 9835fe77..4766a880 100644 --- a/generator/generator_map.py +++ b/generator/generator_map.py @@ -25,14 +25,21 @@ """ import traceback import types,string,re,os +import time +from datetime import date from generator_python import PythonGenerator +try : + sys.path.append(os.path.join(os.getenv('MAP_DIRECTORY'),'classes/python/')) + from class_MAP_parameters import * +except : + pass + def entryPoint(): """ Retourne les informations necessaires pour le chargeur de plugins - Ces informations sont retournees dans un dictionnaire """ return { @@ -61,39 +68,42 @@ class MapGenerator(PythonGenerator): os.makedirs(self.nom_racine) self.listeCODE=[] self.text="" - self.textCode="" - self.texteExecution="" - self.ssCode=self.config.appli.ssCode - def verifie(self): - print 'verification generique' + self.ssCode=self.config.appli.ssCode + self.INSTALLDIR=self.config.appli.INSTALLDIR + self.ssCodeDir=os.path.join(self.INSTALLDIR,'MAP/Templates',self.ssCode) + self.fichierYacs=self.ssCode+"_YACS_nodes" + self.texteExecution="import os,sys\n" + self.texteExecution+="sys.path.append('"+self.ssCodeDir+"')\n" + self.texteExecution+="from " + self.fichierYacs +" import *\n" def gener(self,obj,format='brut',config=None): - print 'generation dans generator_map' self.initialise(config) text=PythonGenerator.gener(self,obj,format) - self.verifie() - self.generePythonMap("non") return text def generRUN(self,obj,format='brut',config=None,): - print 'generRUN dans generator_map' self.initialise(config) text=PythonGenerator.gener(self,obj,format) - self.verifie() - self.generePythonMap("oui") + for elt in self.listeCODE: + code=elt.keys()[0] + self.dico=elt[code] + if code in self.__class__.__dict__.keys(): + texteCode=apply(self.__class__.__dict__[code],(self,)) + self.texteExecution += texteCode return self.texteExecution def generRUNYACS(self,obj,format='brut',config=None,nomFichier=None): self.initialise(config) text=PythonGenerator.gener(self,obj,format) + #self.generePythonMap("non") + import sys - sys.path.append('/local/noyret/Salome_5.1.3/Install/YACS/lib/python2.5/site-packages/salome/') - self.verifie() + sys.path.append(os.path.join(os.getenv("YACS_ROOT_DIR"),"lib/python2.4/site-packages/salome/")) import monCreateYacs self.monSchema=monCreateYacs.getSchema(config) - self.proc=self.monSchema.createProc() + self.proc=self.monSchema.createProc(self) for elt in self.listeCODE: code=elt.keys()[0] dico=elt[code] @@ -102,6 +112,8 @@ class MapGenerator(PythonGenerator): if hasattr(self.monSchema, codeYACS): fct=getattr(self.monSchema, codeYACS) fct(self.proc,dico) + + print str(nomFichier) self.monSchema.write_yacs_proc(self.proc,str(nomFichier)) def generePythonMap(self,execution) : @@ -121,25 +133,30 @@ class MapGenerator(PythonGenerator): self.texteExecution=self.texteExecution+texteCode def generPROC_ETAPE(self,obj): - clefDico=obj.nom self.DictTemp={} s=PythonGenerator.generPROC_ETAPE(self,obj) dico={} dico[obj.nom]=self.DictTemp self.listeCODE.append(dico) + if hasattr(obj.definition,"mcOblig") : + for clef in obj.definition.mcOblig.keys(): + setattr(self,clef,obj.definition.mcOblig[clef]) return s def generMCSIMP(self,obj) : """ Convertit un objet MCSIMP en texte python - Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable """ s=PythonGenerator.generMCSIMP(self,obj) - clef="" - for i in obj.get_genealogie() : - clef=clef+"_"+i - self.DictTemp[clef]=obj.valeur + #clef="" + #for i in obj.get_genealogie() : + # clef=clef+"_"+i + self.DictTemp[obj.nom]=obj.valeur + if hasattr(obj.definition,'equiv') and obj.definition.equiv!= None: + setattr(self,obj.definition.equiv,obj.valeur) + else : + setattr(self,obj.nom,obj.valeur) return s @@ -150,6 +167,7 @@ class MapGenerator(PythonGenerator): chaine=result return chaine + def remplaceDICO(self,chaine,dico) : for mot in dico.keys() : rplact="%"+mot+"%" diff --git a/generator/generator_openturns_study.py b/generator/generator_openturns_study.py index e743d6ec..9a2854dc 100644 --- a/generator/generator_openturns_study.py +++ b/generator/generator_openturns_study.py @@ -125,8 +125,9 @@ class OpenturnsGenerator(PythonGenerator): else : self.texteSTD="Il y a un pb a la Creation du STD" - def writeOpenturnsSTD(self, filename): - f = open( str(filename), 'wb') + def writeDefault(self, fn): + fileSTD = fn[:fn.rfind(".")] + '.py' + f = open( str(fileSTD), 'wb') f.write( self.texteSTD ) f.close() diff --git a/generator/generator_openturns_wrapper.py b/generator/generator_openturns_wrapper.py index 33923bec..8c1c94b4 100644 --- a/generator/generator_openturns_wrapper.py +++ b/generator/generator_openturns_wrapper.py @@ -129,13 +129,13 @@ class OpenturnsGenerator(PythonGenerator): print "dictMCVal", self.dictMCVal, "dictVariables", self.dictVariables MonBaseGenerateur=Generateur(self.appli,self.dictMCVal, [], {} ,self.dictVariables) MonGenerateur=MonBaseGenerateur.getXMLGenerateur() - #try : - if 1== 1 : + try : + #if 1== 1 : self.wrapperXML=MonGenerateur.CreeXML() - #except : - else : + except : + #else : self.wrapperXML=None - def writeOpenturnsXML(self, filename): - self.wrapperXML.writeFile( str(filename) ) - + def writeDefault(self, filename): + fileXML = filename[:filename.rfind(".")] + '.xml' + self.wrapperXML.writeFile( str(fileXML) ) diff --git a/generator/generator_s_DIC.py b/generator/generator_s_DIC.py new file mode 100644 index 00000000..cc0ffeb0 --- /dev/null +++ b/generator/generator_s_DIC.py @@ -0,0 +1,85 @@ +# -* coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Ce module contient le plugin generateur de fichier au format + SEP pour EFICAS. + +""" +import traceback +import types,string,re,os + +from generator_map import MapGenerator + +import sys +try : + sys.path.append(os.path.join(os.getenv('MAP_DIRECTORY'),'classes/python/')) + from class_MAP_parameters import * +except : + pass + + +def entryPoint(): + """ + Retourne les informations necessaires pour le chargeur de plugins + + Ces informations sont retournees dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 's_DIC', + # La factory pour creer une instance du plugin + 'factory' : s_DICGenerator, + } + + +class s_DICGenerator(MapGenerator): + """ + Ce generateur parcourt un objet de type JDC et produit + un texte au format eficas et + un texte au format py + + """ + + def LIST_IMAGES(self): + print "je ne sais pas ce qu il faut faire" + commande="print 'je ne sais pas ce qu il faut faire avec le fichier :" + commande += str(self.FILE) +" '\n" + return commande + + def RBM(self): + print self.dico + if not self.dico.has_key('CSJ') : self.dico['CSJ']=self.dico['CS'] + if not self.dico.has_key('GSJ') : self.dico['GSJ']=self.dico['GS'] + if not self.dico.has_key('VMAXJ') : self.dico['VMAXJ']=self.dico['VMAX'] + commande="execRBM=component_RBM("+str(self.dico['CS'])+","+str(self.dico['CSJ'])+"," + commande+=str(self.dico['GS'])+","+str(self.dico['GSJ'])+"," + commande+=str(self.dico['VMAX'])+","+str(self.dico['VMAXJ'])+",'"+str(self.study_path)+"')\n" + return commande + + def DISPL(self): + print self.dico + if not self.dico.has_key('CSJ') : self.dico['CSJ']=self.dico['CS'] + if not self.dico.has_key('GSJ') : self.dico['GSJ']=self.dico['GS'] + if not self.dico.has_key('VMAXJ') : self.dico['VMAXJ']=self.dico['VMAX'] + commande="execDISPL=component_DISPL("+str(self.dico['CS'])+","+str(self.dico['CSJ'])+"," + commande+=str(self.dico['GS'])+","+str(self.dico['GSJ'])+"," + commande+=str(self.dico['VMAX'])+","+str(self.dico['VMAXJ'])+",'"+str(self.study_path)+"')\n" + return commande diff --git a/generator/generator_s_polymers_st_1.py b/generator/generator_s_polymers_st_1.py index 8b4bca8e..f89bfd09 100644 --- a/generator/generator_s_polymers_st_1.py +++ b/generator/generator_s_polymers_st_1.py @@ -28,38 +28,15 @@ import types,string,re,os from generator_map import MapGenerator +import sys +try : + sys.path.append(os.path.join(os.getenv('MAP_DIRECTORY'),'classes/python/')) + from class_MAP_parameters import * +except : + pass #____________________________________________________________________________________ -# PYGMEEDict contient une equivalence entre le catalogue Map et les lignes generees -# comme entete (commentaire ?) dans le fichier d'input de pygmee # - CONFIGliste=('NAME_SCHEME', 'PATH_ASTER', 'PATH_BENHUR', 'PATH_MODULE', 'PATH_PYGMEE', 'PATH_STUDY', 'repIni') -PYGMEEDict={ - "_PYGMEE_FUSEAU1_b_forme_FICHIER" : "#fuseau 1 (entree de lecfus) format : diametre DCE croissant / fraction cumulee decroisant ", - "FUSEAU2" : "#fuseau 2 (entree de lecfus) format : diametre DCE croissant / fraction cumulee decroisant", - "_PYGMEE_TAILLE" : "# taille du VER en microns ", - "_PYGMEE_DISTANCE" : "# distance de repulsion :", - } - -#_______________________________________________________________________________________________________ -# listeOrdonneeMCPygmee contient une liste (donc ordonnee) des mots clefs pour -# imposer l'ordre des lignes generees -listeOrdonneeMCPygmee =('_PYGMEE_FUSEAU1_b_forme_FICHIER', 'FUSEAU2', '_PYGMEE_TAILLE','_PYGMEE_DISTANCE') - - -BENHURDict={ - "_BENHUR_FINESSE" : "discretisation des arretes du VER ", - } - -ASTERDict={ - "_ASTER_LANCEMENT" : "execution de Code_Aster", - "_ASTER_CONDUCTIVITE_I" : "conductivite des inclusions", - "_ASTER_CONDUCTIVITE_M" : "conductivite de la matrice", - } - -GMSHDict={ - "_GMSH_LANCEMENT" : "execution de GMSH", - } def entryPoint(): """ @@ -83,135 +60,151 @@ class s_poly_st_1Generator(MapGenerator): """ - def verifie(self): - liste=[] - for i in self.listeCODE: - liste.append(i.keys()[0]) - if len(liste) != len(set(liste)): - raise AsException("il n'est pas prevu d avoir deux fois le meme code dans ce schema") - - - def PYGMEE(self,execution) : - dicoPygmee=self.dictMCVal["PYGMEE"] - self.dictPYGMEE=dicoPygmee - monFichier=self.config.PATH_PYGMEE+"/pygmee_input.txt" - - #Lecture du fichier a trous - f = file(self.config.repIni+"/pygmee_input.txt","r") - chaine = f.read() - f.close() - chaine2=self.remplaceCONFIG(chaine,CONFIGliste) - chaine=self.remplaceDICO(chaine2,dicoPygmee) - - if os.path.isfile(monFichier) : - print "je detruis pygmee_input.txt" - commande="rm -rf " + monFichier - os.system (commande) - f=open(monFichier,'wb') - f.write(chaine) - f.close() - if execution=="non" : return "" - - if ('_PYGMEE_LANCEMENT' in dicoPygmee.keys()) and dicoPygmee['_PYGMEE_LANCEMENT'] == 'oui': - commande="echo '__________________';\n" - commande=commande + "echo 'execution de PYGMEE';\n" - commande=commande + "cd "+self.config.PATH_PYGMEE+";\n" - commande=commande + "python "+self.config.PATH_PYGMEE+"/pygmee_v1.py;\n" - commande=commande + "echo 'fin execution de PYGMEE';\n" - commande=commande + "echo '_____________________';\n\n\n" - return commande - else: - return "" - - def BENHUR(self,execution) : - dicoBenhur=self.dictMCVal["BENHUR"] - if hasattr(self,'dictPYGMEE') and '_PYGMEE_TAILLE' in self.dictMCVal['PYGMEE']: - dicoBenhur["_PYGMEE_TAILLE"]=self.dictPYGMEE['_PYGMEE_TAILLE'] - else : - dicoBenhur["_PYGMEE_TAILLE"]=0 - print "Attention la variable Taille_VER non definie" - - finesse=str(dicoBenhur["_BENHUR_FINESSE"]) - nom_fichier_BHR=self.config.PATH_STUDY+"/"+self.config.NAME_SCHEME+"_benhur_"+finesse+".bhr" - nom_BHR_Files=self.config.PATH_BENHUR+"/BHR_files.txt" - - #Lecture du fichier a trous - f = file(self.config.repIni+"/benhur_pygmee.txt","r") - chaine = f.read() - f.close() - chaine2=self.remplaceCONFIG(chaine,CONFIGliste) - chaine=self.remplaceDICO(chaine2,dicoBenhur) - - try : - f=open(nom_fichier_BHR,'wb') - except : - print "Pb de Generation de BENHUR" - return "" - f.write(chaine) - f.close() - - f=open(nom_BHR_Files,'wb') - f.write(nom_fichier_BHR) - f.write("\n\n\n") - f.close() - - if execution=="non" : return "" - if ('_BENHUR_LANCEMENT' in dicoBenhur.keys()) and dicoBenhur['_BENHUR_LANCEMENT'] == 'oui': - commande="echo '__________________';\n" - commande=commande + "echo 'execution de BENHUR';\n" - commande=commande + "cd "+self.config.PATH_BENHUR+";\n" - commande=commande + "./benhur;\n" - commande=commande + "echo 'fin execution de BENHUR';\n" - commande=commande + "echo '________________________';\n\n\n" - return commande - else: - return "" - - - - def ASTER(self,execution) : - print "Generation de ASTER" - dicoAster=self.dictMCVal["ASTER"] - nom_racine=self.config.PATH_MODULE+"/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME - nom_fichier_ASTER=nom_racine+"_aster.comm" - - #Lecture du fichier a trous - f = file(self.config.repIni+"/s_poly_st_1_aster_template.comm","r") - chaine = f.read() - f.close() - chaine2=self.remplaceDICO(chaine,self.dictPYGMEE) - chaine=self.remplaceDICO(chaine2,dicoAster) - - f=open(nom_fichier_ASTER,'wb') - f.write(chaine) - f.close() - - if ('_ASTER_LANCEMENT' in dicoAster.keys()) and dicoAster['_ASTER_LANCEMENT'] == 'oui': - commande="cd "+self.config.PATH_MODULE+";" - commande=commande + self.config.PATH_ASTER + "/as_run "+self.config.PATH_MODULE - commande=commande + "/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME+"_aster.export" - os.system(commande) - else: - return "" - - def GMSH(self,execution) : - dicoGmsh=self.dictMCVal["GMSH"] - if ('_GMSH_LANCEMENT' in dicoGmsh.keys()) and dicoGmsh['_GMSH_LANCEMENT'] == 'oui': - commande="cd "+self.config.PATH_MODULE+";" - commande=commande + "gmsh "+self.config.PATH_MODULE+"/"+self.config.NAME_SCHEME+"/"+self.config.NAME_SCHEME+"_aster.resu.msh" - print commande - os.system(commande) - else: - return "" - - def METHODE(self,execution) : - print "METHODE" - return "" - - def MATERIAUX(self,execution) : - print "MATERIAUX" - return "" - - def DISCRETISATION(self,execution) : - print "DISCRETISATION" - return "" + +#_________________________________ +# - YACS functions +#_________________________________ + + def PYGMEEYACS(self, SchemaYacs, proc): + monFichierInput=self.config.PATH_STUDY+"/"+self.config.NAME_SCHEME+"/pygmee_input.txt" + factoryNode = SchemaYacs.monCata._nodeMap["pygmee_v2"] + SchemaYacs.pygmeeNode = factoryNode.cloneNode("pygmee_v2") + SchemaYacs.pygmeeNode.getInputPort("phase_number").edInitPy(1) + SchemaYacs.pygmeeNode.getInputPort("sieve_curve_in").edInitPy(self.sieve_curve_in) + SchemaYacs.pygmeeNode.getInputPort("sieve_curve_out").edInitPy(self.sieve_curve_out) + SchemaYacs.pygmeeNode.getInputPort("repulsion_distance").edInitPy(self.repulsion_distance) + SchemaYacs.pygmeeNode.getInputPort("file_result_inclusions").edInitPy(self.inclusion_name) + SchemaYacs.pygmeeNode.getInputPort("file_result_rve").edInitPy(self.rve_name) + SchemaYacs.pygmeeNode.getInputPort("rve_size").edInitPy(self.rve_size) + SchemaYacs.pygmeeNode.getInputPort("study_name").edInitPy(self.study_name) + SchemaYacs.pygmeeNode.getInputPort("study_path").edInitPy(self.study_path) + proc.edAddChild(SchemaYacs.pygmeeNode) + if SchemaYacs.nodeAvant != None : + proc.edAddCFLink(SchemaYacs.nodeAvant,SchemaYacs.pygmeeNode) + SchemaYacs.nodeAvant=SchemaYacs.pygmeeNode + print "PYGMEEYACS node Ok" + + def FDVGRIDYACS(self, SchemaYacs, proc): + factoryNode = SchemaYacs.monCata._nodeMap["fdvgrid"] + SchemaYacs.fdvgridNode = factoryNode.cloneNode("fdvgrid") + + SchemaYacs.fdvgridNode.getInputPort("rve_size").edInitPy(self.rve_size) + SchemaYacs.fdvgridNode.getInputPort("lambda_I").edInitPy(self.lambda_I) + SchemaYacs.fdvgridNode.getInputPort("lambda_M").edInitPy(self.lambda_M) + SchemaYacs.fdvgridNode.getInputPort("finesse").edInitPy(self.finesse) + SchemaYacs.fdvgridNode.getInputPort("study_name").edInitPy(self.study_name) + SchemaYacs.fdvgridNode.getInputPort("study_path").edInitPy(self.study_path) + + proc.edAddChild(SchemaYacs.fdvgridNode) + pout=SchemaYacs.pygmeeNode.getOutputPort("result_inclusions") + pin=SchemaYacs.fdvgridNode.getInputPort("file_inclusions") + proc.edAddLink(pout,pin) + + if SchemaYacs.nodeAvant != None : + proc.edAddCFLink(SchemaYacs.nodeAvant,SchemaYacs.fdvgridNode) + SchemaYacs.nodeAvant=SchemaYacs.fdvgridNode + print "FDVGRIDYACS node Ok" + + def BENHURYACS(self, SchemaYacs, proc): + factoryNode = SchemaYacs.monCata._nodeMap["benhur"] + SchemaYacs.benhurNode = factoryNode.cloneNode("benhur") + + SchemaYacs.benhurNode.getInputPort("rve_size").edInitPy(self.rve_size) + SchemaYacs.benhurNode.getInputPort("finesse").edInitPy(self.finesse) + SchemaYacs.benhurNode.getInputPort("study_name").edInitPy(self.study_name) + SchemaYacs.benhurNode.getInputPort("study_path").edInitPy(self.study_path) + + proc.edAddChild(SchemaYacs.benhurNode) + pout=SchemaYacs.pygmeeNode.getOutputPort("result_inclusions") + pin=SchemaYacs.benhurNode.getInputPort("file_inclusions") + proc.edAddLink(pout,pin) + + if SchemaYacs.nodeAvant != None : + proc.edAddCFLink(SchemaYacs.nodeAvant,SchemaYacs.benhurNode) + SchemaYacs.nodeAvant=SchemaYacs.benhurNode + print "BENHURYACS node Ok" + + def ASTERYACS(self, SchemaYacs, proc): + factoryNode = SchemaYacs.monCata._nodeMap["aster_s_polymers_st_1"] + SchemaYacs.aster_s_polymers_st_1Node = factoryNode.cloneNode("aster_s_polymers_st_1") + + SchemaYacs.aster_s_polymers_st_1Node.getInputPort("lambda_I").edInitPy(self.lambda_I) + SchemaYacs.aster_s_polymers_st_1Node.getInputPort("lambda_M").edInitPy(self.lambda_M) + SchemaYacs.aster_s_polymers_st_1Node.getInputPort("study_name").edInitPy(self.study_name) + SchemaYacs.aster_s_polymers_st_1Node.getInputPort("study_path").edInitPy(self.study_path) + SchemaYacs.aster_s_polymers_st_1Node.getInputPort("rve_size").edInitPy(self.rve_size) + SchemaYacs.aster_s_polymers_st_1Node.getInputPort("finesse").edInitPy(self.finesse) + SchemaYacs.aster_s_polymers_st_1Node.getInputPort("aster_path").edInitPy(self.config.PATH_ASTER) + + proc.edAddChild(SchemaYacs.aster_s_polymers_st_1Node) + pout=SchemaYacs.benhurNode.getOutputPort("result_mesh") + pin=SchemaYacs.aster_s_polymers_st_1Node.getInputPort("mesh") + proc.edAddLink(pout,pin) + + if SchemaYacs.nodeAvant != None : + proc.edAddCFLink(SchemaYacs.nodeAvant,SchemaYacs.aster_s_polymers_st_1Node) + SchemaYacs.nodeAvant=SchemaYacs.aster_s_polymers_st_1Node + print "ASTERYACS node Ok" + + + def GMSHYACS(self, SchemaYacs, proc): + factoryNode = SchemaYacs.monCata._nodeMap["gmsh_post"] + SchemaYacs.gmsh_postNode = factoryNode.cloneNode("gmsh_post") + + proc.edAddChild(SchemaYacs.gmsh_postNode) + pout=SchemaYacs.aster_s_polymers_st_1Node.getOutputPort("result_gmsh") + pin=SchemaYacs.gmsh_postNode.getInputPort("result_gmsh") + proc.edAddLink(pout,pin) + + if SchemaYacs.nodeAvant != None : + proc.edAddCFLink(SchemaYacs.nodeAvant,SchemaYacs.gmsh_postNode) + SchemaYacs.nodeAvant=SchemaYacs.gmsh_postNode + print "GMSHYACS node Ok" + + def METHODEYACS(self, SchemaYacs, proc): + self.PYGMEEYACS(SchemaYacs, proc) + if (self.CHOIX=="FD+grid") : + self.FDVGRIDYACS(SchemaYacs,proc) + if (self.CHOIX=="FEM+mesh") : + self.BENHURYACS(SchemaYacs,proc) + self.ASTERYACS(SchemaYacs,proc) + self.GMSHYACS(SchemaYacs,proc) + +#_________________________________ +# - shell functions +#_________________________________ + + def METHODE(self) : + commande=self.PYGMEE() + if (self.CHOIX=="FD+grid") : + commande+= self.FDVGRID() + elif (self.CHOIX=="FEM+mesh") : + commande+= self.BENHUR() + commande+= self.ASTER_s_polymers_st_1() + commande+= self.GMSH() + return commande + +#_________________________________ +# - code and component functions +#_________________________________ + + def PYGMEE(self) : + commande="volume_fraction=component_pygmee_v2("+str(self.rve_size)+",1,'"+str(self.sieve_curve_in)+"','"+str(self.sieve_curve_out)+"',"+str(self.repulsion_distance)+",'"+str(self.study_name)+"','"+str(self.study_path)+"','"+str(self.inclusion_name)+"','"+str(self.rve_name)+"')\n" + return commande + + def FDVGRID(self): + commande="lambda_x=component_fdvgrid("+str(self.lambda_I)+","+str(self.lambda_M)+","+str(self.rve_size)+",'"+str(self.inclusion_name)+"',"+str(self.finesse)+",'"+str(self.study_path)+"')\n" + return commande + + def BENHUR(self): + commande="component_benhur("+str(self.finesse)+","+str(self.rve_size)+",'"+str(self.inclusion_name)+"','"+str(self.study_name)+"','"+str(self.study_path)+"');\n" + return commande + + def ASTER_s_polymers_st_1(self) : + commande="component_aster_s_polymers_st_1("+str(self.rve_size)+","+str(self.finesse)+","+str(self.lambda_I)+","+str(self.lambda_M)+",'"+str(self.study_name)+"','"+str(self.study_path)+"','"+self.config.PATH_ASTER+"');\n" + return commande + + def GMSH(self) : + commande="component_gmsh_post('"+str(self.study_path+"/s_polymers_st_1_aster.resu.msh")+"');\n" + return commande + diff --git a/generator/generator_vers3DSalome.py b/generator/generator_vers3DSalome.py index 59496b15..3cf1840d 100644 --- a/generator/generator_vers3DSalome.py +++ b/generator/generator_vers3DSalome.py @@ -39,14 +39,14 @@ from generator_python import PythonGenerator def entryPoint(): """ - Retourne les informations nécessaires pour le chargeur de plugins + Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire + Ces informations sont retournées dans un dictionnaire """ return { # Le nom du plugin 'name' : 'vers3DSalome', - # La factory pour créer une instance du plugin + # La factory pour créer une instance du plugin 'factory' : vers3DSalomeGenerator, } @@ -120,7 +120,7 @@ class vers3DSalomeGenerator(PythonGenerator): """ """ if obj.isvalid() == 0 : - #showerror("Element non valide","Salome ne sait pas traiter les élements non valides") + #showerror("Element non valide","Salome ne sait pas traiter les elements non valides") return for v in obj.mc_liste: liste=self.generator(v) @@ -142,7 +142,7 @@ class vers3DSalomeGenerator(PythonGenerator): def generMCFACT(self,obj): """ - Convertit un objet MCFACT en une liste de chaines de caractères à la + Convertit un objet MCFACT en une liste de chaines de caractères à la syntaxe python """ self.init_ligne() @@ -193,6 +193,8 @@ class vers3DSalomeGenerator(PythonGenerator): for k in range(len(atraiter)) : clef=self.clefs[k] val =atraiter[k] + if isinstance(val, (types.TupleType, types.ListType)) and len(val) == 1: + val = val[0] if isinstance (val, Extensions.parametre.PARAMETRE): val=val.valeur print val.__class__ diff --git a/generator/monCreateYacs.py b/generator/monCreateYacs.py index 2d495d7f..368e416c 100755 --- a/generator/monCreateYacs.py +++ b/generator/monCreateYacs.py @@ -1,11 +1,14 @@ #!/usr/bin/env python + +import sys, os +sys.path.append(os.path.join(os.getenv('YACS_ROOT_DIR'),'lib/python2.5/site-packages/salome/')) + import pilot import SALOMERuntime import loader import logging import traceback -import os class CreeSchemaYacs : def __init__(self,config): @@ -24,17 +27,19 @@ class CreeSchemaYacs : def addCatalog(self): try: - monCataFile= os.environ["EFICAS_ROOT_DIR"] - monCataFile=monCataFile+"/share/salome/resources/eficas/cata" - monCataFile=monCataFile+self.ssCode+".xml" - print monCataFile + # modifs CTL 20101121 : generic scheme template name + monCataFile=self.config.INSTALLDIR+"/MAP/Templates/" + monCataFile+=self.config.ssCode + monCataFile+="/cata_"+self.config.ssCode+".xml" + print 'YACS xml scheme template :', monCataFile self.monCata = self.runtime.loadCatalog("proc",monCataFile) except: logging.fatal("Exception in loading MAP catalog") traceback.print_exc() sys.exit(1) - def createProc(self): + def createProc(self, generator): + self.generator=generator proc = self.runtime.createProc("proc") proc.setTypeCode("pyobj", self.runtime.getTypeCode("pyobj")) t_pyobj = proc.getTypeCode("pyobj") @@ -44,53 +49,21 @@ class CreeSchemaYacs : def write_yacs_proc(self,proc, yacs_schema_filename): proc.saveSchema(yacs_schema_filename) -class s_poly_st_1(CreeSchemaYacs) : - - def BENHURYACS(self,proc,dico): - monFichierInput=self.config.PATH_BENHUR+"/BHR_files.txt" - factoryNode = self.monCata._nodeMap["benhur"] - self.benhurNode = factoryNode.cloneNode("benhur") - self.benhurNode.getInputPort("fileInput").edInitPy(monFichierInput) - self.benhurNode.getInputPort("pathBenhur").edInitPy(self.config.PATH_BENHUR) - proc.edAddChild(self.benhurNode) - if self.nodeAvant != None : - proc.edAddCFLink(self.nodeAvant,self.benhurNode) - self.nodeAvant=self.benhurNode - - def PYGMEEYACS(self,proc,dico): - monFichierInput=self.config.PATH_STUDY+"/"+self.config.NAME_SCHEME+"/pygmee_input.txt" - factoryNode = self.monCata._nodeMap["pygmee"] - self.pygmeeNode = factoryNode.cloneNode("pygmee") - self.pygmeeNode.getInputPort("pathPygmee").edInitPy(self.config.PATH_PYGMEE) - self. pygmeeNode.getInputPort("fileInput").edInitPy(monFichierInput) - proc.edAddChild(self.pygmeeNode) - if self.nodeAvant != None : - proc.edAddCFLink(self.nodeAvant,self.pygmeeNode) - self.nodeAvant=self.pygmeeNode - - def ASTERYACS(self,proc,dico): - factoryNode = self.monCata._nodeMap["asterRun"] - self.asterNode = factoryNode.cloneNode("asterRun") - nom_racine=self.config.PATH_STUDY+"/"+self.config.NAME_SCHEME+"/" - monFichierExport=nom_racine+"s_poly_st_1_aster.export" - monFichierMed=nom_racine+"s_poly_st_1_aster.resu.med" - self.asterNode.getInputPort("pathAster").edInitPy(self.config.PATH_ASTER+"/bin") - self.asterNode.getInputPort("fileExport").edInitPy(monFichierExport) - self.asterNode.getInputPort("fileMed").edInitPy(monFichierMed) - - proc.edAddChild(self.asterNode) - if self.nodeAvant != None : - proc.edAddCFLink(self.nodeAvant,self.asterNode) - self.nodeAvant=self.asterNode - -dictKlass={'s_poly_st_1':s_poly_st_1} +# pour l instant on garde cette classe +# pour pouvoir specialiser si necessaire +# pour d autres schema +class s_polymers_st_1(CreeSchemaYacs) : + def METHODEYACS(self,proc,dico): + self.generator.METHODEYACS(self,proc) + +dictKlass={'s_polymers_st_1':s_polymers_st_1} def getSchema(config): schema=config.appli.ssCode return dictKlass[schema](config) if __name__ == "__main__": - monCreator=getSchema('s_poly_st_1') + monCreator=getSchema('s_polymers_st_1') proc=monCreator.createProc() monCreator.ajoutPygmee(proc) monCreator.ajoutBenhur(proc)