Salome HOME
merge avec les devloppts de l ete
[tools/eficas.git] / MED / CataAZ.py
1 # coding: utf-8\r
2 import types\r
3 from Accas import *\r
4 \r
5 class grno(GEOM):\r
6     """\r
7     Classe servant à définir le nom d'un groupe de noeuds dans le fichier de commande\r
8     En clair : un chaine de longueur 24.\r
9     """\r
10     def __convert__(cls,valeur):\r
11         """\r
12         Fonction de verification de la longueur de la chaine\r
13         """\r
14         if isinstance(valeur, (str,unicode)) and len(valeur.strip()) <= 24:\r
15             return valeur.strip()\r
16         raise ValueError(_(u'On attend une chaine de caractères (de longueur <= 24).'))\r
17     __convert__ = classmethod(__convert__)\r
18 \r
19 class grma(GEOM):\r
20     """\r
21     Classe servant à définir le nom d'un groupe de mailles dans le fichier de commande\r
22     En clair : un chaine de longueur 24.\r
23     """\r
24     def __convert__(cls,valeur):\r
25         """\r
26         Fonction de verification de la longueur de la chaine\r
27         """\r
28         if isinstance(valeur, (str,unicode)) and len(valeur.strip()) <= 24:\r
29             return valeur.strip()\r
30         raise ValueError(_(u'On attend une chaine de caractères (de longueur <= 24).'))\r
31     __convert__ = classmethod(__convert__)\r
32 \r
33 \r
34 class Tuple:\r
35   def __init__(self,ntuple):\r
36     self.ntuple=ntuple\r
37 \r
38   def __convert__(self,valeur):\r
39     if type(valeur) == types.StringType: return None\r
40     if len(valeur) != self.ntuple: return None\r
41     return valeur\r
42 \r
43   def info(self):\r
44     return "Tuple de %s elements" % self.ntuple\r
45 \r
46   __repr__=info\r
47   __str__=info\r
48 \r
49 class ObjetUtilisateur(ASSD): pass\r
50 \r
51 \r
52 JdC = JDC_CATA(code='PATTERNS',\r
53                execmodul=None,\r
54                 )\r
55 \r
56 \r
57 EXAMPLE = PROC (nom = 'EXAMPLE',\r
58     op=None,\r
59 \r
60     TITRE =  SIMP(statut ='o', typ = 'TXM', defaut = 'Mon Etude',),\r
61     TITRE2 =  SIMP(statut ='f', typ = 'TXM', ),\r
62 )\r
63 CREEOBJET = OPER (nom="CREEOBJET",\r
64     op=None,\r
65     sd_prod=ObjetUtilisateur,\r
66     UIinfo={"groupes":("Group1",)},\r
67 \r
68     TITLE     = SIMP(statut ='o', typ = 'TXM', defaut = '',),\r
69     RB1       = SIMP(statut ='o', typ = 'I', into = [1,2,3],),\r
70     RB2       = SIMP(statut ='o', typ = 'I', into = [1,2,3,4,5,6,],),\r
71     CB        = SIMP(statut ='o', typ = 'I', into = [1,2,3,4,5,6,7,8,9],),\r
72     MBool     = SIMP(statut ='o', typ = bool,),\r
73     MFile     = SIMP(statut ='o', typ = ('Fichier','All Files (*)')),\r
74     MDir      = SIMP(statut ='o', typ = 'Repertoire'),\r
75     Reel1     = SIMP(statut ='o', typ = 'R'),\r
76     Compl     = SIMP(statut ='o', typ = 'C'),\r
77     Tuple2    = SIMP(statut ='o', typ = Tuple(2), validators=VerifTypeTuple(('R','R'))),\r
78     Tuple3    = SIMP(statut ='o', typ = Tuple(3), validators=VerifTypeTuple(('R','R','R'))),\r
79     InSalome  = SIMP(statut ='o', typ = SalomeEntry),\r
80 \r
81     LTITLE    = SIMP(statut ='o', typ = 'TXM', max='**', defaut = '',),\r
82     LRB2      = SIMP(statut ='o', typ = 'I', max = '**', into = [1,2,3,4,5,6,],),\r
83     LCB       = SIMP(statut ='o', typ = 'I', max = '**', homo="SansOrdreNiDoublon", into = [1,2,3,4,5,6,7,8,9],),\r
84     LReel1    = SIMP(statut ='o', typ = 'R', max = "**"),\r
85     LCompl    = SIMP(statut ='o', typ = 'C', max = "**"),\r
86     LTuple2   = SIMP(statut ='o', typ = Tuple(2), validators=VerifTypeTuple(('R','R')), max = "**"),\r
87     LTuple3   = SIMP(statut ='o', typ = Tuple(3), validators=VerifTypeTuple(('R','R','R')), max = "**"),\r
88     LInSalome = SIMP(statut ='o', typ = SalomeEntry, max="**"),\r
89 \r
90     LREEL    = SIMP(statut ='f', typ = 'R', max='**', defaut = '',),\r
91 )\r
92 \r
93 UTILISEOBJET = PROC (nom="UTILISEOBJET",\r
94     op=None,\r
95     UIinfo={"groupes":("Group1",)},\r
96     Obj   = SIMP (statut ='o', typ = ObjetUtilisateur,)\r
97 )\r
98 \r
99 ESSAI_FACT=OPER(nom="ESSAI_FACT",\r
100    sd_prod=ObjetUtilisateur,\r
101    op=None,\r
102    fr="Affectation de caractéristiques à des éléments de structure",\r
103    regles = (AU_MOINS_UN('Poutre','Barre'),\r
104              EXCLUS('Discret','Discret_2D'),),\r
105    Info   = SIMP(statut='f',typ='I', defaut= 1 ,into=(1,2) ),\r
106    Verif  = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("Maille","Noeud") ),\r
107 #\r
108 # ==============================================================================\r
109     Poutre  = FACT(statut= 'f',max= '**',\r
110         Section = SIMP(statut= 'o',typ= 'TXM' ,into= ("GENERALE","RECTANGLE","CERCLE") ),\r
111 \r
112         b_generale = BLOC(condition = " Section == 'GENERALE'",\r
113             regles = (UN_PARMI('Maille','GroupeMailles'),),\r
114             Maille    = SIMP(statut= 'f',typ= 'TXM'  ,validators= NoRepeat(),max= '**'),\r
115             GroupeMailles  = SIMP(statut= 'f',typ= grma,validators= NoRepeat(),max= '**'),\r
116 \r
117             Vari = SIMP(statut= 'f',typ= 'TXM',into= ("CONSTANT","HOMOTHETIQUE"),defaut= "CONSTANT"),\r
118 \r
119             b_constant = BLOC(condition = "Vari == 'CONSTANT'",\r
120                 regles = (PRESENT_ABSENT('Table','Cara'),\r
121                           PRESENT_PRESENT('Table','Nom'),\r
122                           PRESENT_PRESENT('Cara','Valeur'),),\r
123                 Table = SIMP(statut= 'f',typ='TXM'),\r
124                 Nom    = SIMP(statut= 'f',typ= 'TXM'),\r
125                 Cara       = SIMP(statut= 'o',typ= 'TXM',min= 4 ,max= 5,\r
126                     fr= "A,IY,IZ,JX sont des paramètres obligatoires",\r
127                     validators= [NoRepeat(), Compulsory(['A','IY','IZ','JX'])],\r
128                     into= ("A","IY","IZ","AY","AZ","EY","EZ","JX","RY","RZ","RT","JG","IYR2","IZR2","AI") ),\r
129                 Valeur       = SIMP(statut= 'f',typ= 'R',min= 4 ,max= 15),\r
130             ),\r
131         ),\r
132         b_rectangle = BLOC(condition = "Section == 'RECTANGLE'",\r
133             regles = (UN_PARMI('Maille','GroupeMailles'),),\r
134             Maille    = SIMP(statut= 'f',typ= 'TXM'  ,validators= NoRepeat(),max= '**'),\r
135             GroupeMailles  = SIMP(statut= 'f',typ= grma,validators= NoRepeat(),max= '**'),\r
136             Vari = SIMP(statut= 'f',typ= 'TXM',into= ("CONSTANT","HOMOTHETIQUE","AFFINE"),defaut= "CONSTANT"),\r
137             b_constant = BLOC(condition = "Vari == 'CONSTANT'",\r
138                 Cara  = SIMP(statut= 'o',typ= 'TXM',min= 1 ,max= 4,\r
139                     validators = [NoRepeat(),\r
140                                   OrVal( [AndVal( [Compulsory(['H']),Absent(['HY','HZ','EPY','EPZ'])] ),\r
141                                           AndVal( [Compulsory(['HY','HZ']),Together(['EPY','EPZ']),Absent(['H','EP'])] )] )],\r
142                     into= ("H","EP", "HY","HZ","EPY","EPZ"),),\r
143                 Valeur  = SIMP(statut= 'o',typ= 'R',min= 1 ,max= 4),\r
144             ),\r
145 \r
146             Metrique = SIMP(statut= 'f',typ= 'TXM',defaut= "NON",into= ("OUI","NON") ),\r
147             Fcx           = SIMP(statut= 'f',typ= 'R'),\r
148             Tuyau    = SIMP(statut= 'f',typ= 'I',val_max= 10,defaut= 3),\r
149         ),\r
150     ),\r
151 #\r
152 # ==============================================================================\r
153     Barre = FACT(statut='f',max='**',\r
154         regles = (UN_PARMI('Maille','GroupeMailles'),),\r
155         Maille   = SIMP(statut='f',typ='TXM'  ,validators=NoRepeat(),max='**'),\r
156         GroupeMailles = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),\r
157         Section  = SIMP(statut='o',typ='TXM',into=("GENERALE","RECTANGLE","CERCLE") ),\r
158         b_generale = BLOC(condition = "Section=='GENERALE'",\r
159             regles = (PRESENT_ABSENT('Table','Cara'),\r
160                       PRESENT_PRESENT('Table','Nom'),\r
161                       PRESENT_PRESENT('Cara','Valeur')),\r
162             Table = SIMP(statut='f',typ='TXM'),\r
163             Nom    = SIMP(statut='f',typ='TXM',validators=LongStr(1,24) ),\r
164             Cara       = SIMP(statut='f',typ='TXM',into=("A",) ),\r
165             Valeur       = SIMP(statut='f',typ='R',min=1,max=1 ),\r
166         ),\r
167         b_rectangle = BLOC(condition = "Section=='RECTANGLE'",\r
168             Cara = SIMP(statut='o',typ='TXM', min=1, max=4,\r
169                 validators = [NoRepeat(),\r
170                               OrVal( [AndVal( [Compulsory(['H']),Absent(['HY','HZ','EPY','EPZ'])] ),\r
171                                       AndVal( [Compulsory(['HY','HZ']),Together(['EPY','EPZ']),Absent(['H','EP'])] )] )],\r
172                 into=("H","EP","HZ","HY","EPY","EPZ"), ),\r
173             Valeur = SIMP(statut='o',typ='R',min=1,max=4 ), ),\r
174         b_cercle = BLOC(condition = "Section=='CERCLE'",\r
175             Cara = SIMP(statut='o',typ='TXM',validators=[NoRepeat(),Compulsory(['R'])],min=1,max=2,into=("R","EP") ),\r
176             Valeur = SIMP(statut='o',typ='R',min=1,max=2 ), ),\r
177     ),\r
178 #\r
179 # ==============================================================================\r
180     Discret = FACT(statut='f',max='**',\r
181         REPERE    = SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),\r
182         AMOR_HYST = SIMP(statut='f',typ='R' ),\r
183         SYME      = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),),\r
184         b_SYME_OUI = BLOC(condition="SYME=='OUI'",\r
185             fr="SYMETRIQUE: Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",\r
186             Cara = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,defaut="None",\r
187             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",\r
188                     "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",\r
189                     "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",),),\r
190             #  Affection des caractéristiques de RIGIDITE/AMORTISSEMENT/MASSE\r
191             b_AK_T_D_N = BLOC(condition = "((Cara=='K_T_D_N')or(Cara=='A_T_D_N'))",\r
192                 fr       = "Noeud: 3 valeurs (triangulaire supérieure par colonne)",\r
193                 regles   = (UN_PARMI('Maille','GroupeMailles','Noeud','GROUP_NO'),),\r
194                 Noeud    = SIMP(statut='f',typ='TXM'  ,validators=NoRepeat(),max='**'),\r
195                 GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),\r
196                 Maille   = SIMP(statut='f',typ='TXM'  ,validators=NoRepeat(),max='**'),\r
197                 GroupeMailles = SIMP(statut='f',typ=grma,validators=NoRepeat(),homo='SansOrdreNiDoublon',max='**'),\r
198                 Valeur     = SIMP(statut='o',typ='R',min=3 ,max=3 ),),\r
199         ),\r
200     ),\r
201 #\r
202 # ==============================================================================\r
203     Discret_2D = FACT(statut='f',max='**',\r
204         REPERE    = SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),\r
205         AMOR_HYST = SIMP(statut='f',typ='R' ),\r
206         SYME      = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),),\r
207         ),\r
208 )\r
209 \r
210 \r