Salome HOME
modif Adao 7 6
[tools/eficas.git] / Tests / testelem / testjdc1.py
1 # coding=utf-8
2
3 import os
4 import unittest
5 import difflib
6 import compare
7
8 import prefs
9 from InterfaceTK import appli
10 #from Editeur import appli
11
12 def add_param(j,pos,nom,valeur):
13     co=j.addentite("PARAMETRE",pos)
14     co.set_nom(nom)
15     co.set_valeur(valeur)
16     return co
17
18 def add_mcsimp(obj,nom,valeur):
19     mcs=obj.get_child(nom,restreint='oui')
20     if mcs is None:
21        pos=obj.get_index_child(nom)
22        mcs=obj.addentite(nom,pos)
23     mcs.set_valeur(mcs.eval_val(valeur))
24     return mcs
25
26 def cdiff(text1,text2):
27     return " ".join(difflib.context_diff(text1.splitlines(1),text2.splitlines(1)))
28
29 version='v9'
30
31 class TestCase(unittest.TestCase):
32    def setUp(self):
33       pass
34
35    def tearDown(self):
36       CONTEXT.unset_current_step()
37
38    def test000(self):
39       app=appli.STANDALONE(version=version)
40       j=app.newJDC()
41
42 # commande DEBUT
43       co=j.addentite("DEBUT",0)
44       co=add_param(j,1,"P1",None)
45       x=co.valeur or "coucou"
46       assert x == "coucou"
47       assert len(co) == 0
48       co.set_valeur(1)
49       assert len(co) == 1
50       co.set_valeur([1,2])
51       assert len(co) == 2
52
53    def test001(self):
54       """ Test d'insertion de commandes dans fichier toto.comm"""
55       app=appli.STANDALONE(version=version)
56       file=os.path.join(prefs.INSTALLDIR,"Tests/testelem/toto.comm")
57       j=app.openJDC(file=file)
58       expected="""DEBUT CR validation : toto.comm
59 FIN CR validation :toto.comm
60 """
61       cr=str(j.report())
62       assert cr == expected, cr + "!=" + expected
63       co=j.etapes[1]
64       mcs=co.addentite("INFO")
65       
66       cr=app.get_text_JDC(j,'python')
67       expected="""
68 DEBUT();
69
70 MA=LIRE_MAILLAGE(INFO=1,);
71
72 FIN();
73 """
74       assert cr == expected, cr + "!=" + expected
75       co=j.addentite("LIRE_MAILLAGE",2)
76       test,mess=co.nomme_sd("MA2")
77       assert test == 1
78
79       cr=app.get_text_JDC(j,'python')
80       expected="""
81 DEBUT();
82
83 MA=LIRE_MAILLAGE(INFO=1,);
84
85 MA2=LIRE_MAILLAGE();
86
87 FIN();
88 """
89       assert cr == expected, cr + "!=" + expected
90
91    def test002(self):
92       """ Test de construction du fichier de commandes az.comm de zero"""
93
94       app=appli.STANDALONE(version=version)
95       j=app.newJDC()
96 # commande DEBUT
97       co=j.addentite("DEBUT",0)
98 # commande FIN
99       co=j.addentite("FIN",1)
100 # parametres
101       pos=0
102       pos=pos+1
103       co=add_param(j,pos,"P1","9.8")
104       pos=pos+1
105       co=add_param(j,pos,"P2","8.8")
106       pos=pos+1
107       co=add_param(j,pos,"P3","7")
108       pos=pos+1
109       co=add_param(j,pos,"P5","P3*P1")
110       pos=pos+1
111       co=add_param(j,pos,"P6","P1-3")
112       pos=pos+1
113       co=add_param(j,pos,"P4","[2,3,4]")
114 # commentaire
115       pos=pos+1
116       co=j.addentite("COMMENTAIRE",pos)
117       co.set_valeur("Pas trouve   shellpanel")
118 # commande LIRE_MAILLAGE
119       pos=pos+1
120       co=j.addentite("LIRE_MAILLAGE",pos)
121       test,mess=co.nomme_sd("MAILLA2")
122       mcs=co.addentite("UNITE")
123       valeur=mcs.eval_val("P4[1]")
124       test=mcs.set_valeur(valeur)
125 # formule
126       pos=pos+1
127       co=j.addentite("FORMULE",pos)
128       co.update_formule_python(("aaa","REEL","a+z","(a,z)"))
129 # commande LIRE_MAILLAGE
130       pos=pos+1
131       ma=co=j.addentite("LIRE_MAILLAGE",pos)
132       test,mess=co.nomme_sd("MAIL")
133       mcs=co.addentite("UNITE")
134       valeur,validite=mcs.eval_valeur("P3")
135       test=mcs.set_valeur(valeur)
136 #
137       pos=pos+1
138       co=j.addentite("COMMENTAIRE",pos)
139       co.set_valeur(" 'LIRE_MAILLAGE', 'UNITE'            --> uniquebasepanel")
140 # formule
141       pos=pos+1
142       co=j.addentite("FORMULE",pos)
143       co.update_formule_python(("az","REEL","aaaaa","(ae,inst)"))
144 # commande AFFE_MODELE
145       pos=pos+1
146       co=j.addentite("AFFE_MODELE",pos)
147       mcs=co.get_child("MAILLAGE")
148       valeur,validite=mcs.eval_valeur("MAIL")
149       assert valeur == ma.sd
150       test=mcs.set_valeur(valeur)
151       assert valeur == co["MAILLAGE"]
152       mcf=co.addentite("AFFE")
153       mcs=mcf[0].get_child("PHENOMENE")
154       valeur=mcs.eval_val_item('MECANIQUE')
155       assert valeur=='MECANIQUE',str(valeur)
156       test=mcs.set_valeur(valeur)
157       assert mcf["PHENOMENE"] == 'MECANIQUE'
158       mcs=mcf[0].get_child("b_mecanique").get_child("MODELISATION")
159       mcs.set_valeur(mcs.eval_val_item('DIS_T'))
160       assert mcf["MODELISATION"] == 'DIS_T'
161       mcs=add_mcsimp(mcf[0],"GROUP_MA",('RESSORT','eee',))
162
163       mcf=co.addentite("AFFE")
164       mcs=mcf[1].get_child("PHENOMENE")
165       mcs.set_valeur(mcs.eval_val_item('MECANIQUE'))
166       mcs=mcf[1].get_child("b_mecanique").get_child("MODELISATION")
167       mcs.set_valeur(mcs.eval_val_item('DIS_T'))
168       mcs=add_mcsimp(mcf[1],"GROUP_MA",'MASSES')
169
170       mcf=co.addentite("AFFE")
171       mcs=mcf[2].get_child("PHENOMENE")
172       mcs.set_valeur(mcs.eval_val_item('ACOUSTIQUE'))
173       mcs=mcf[2].get_child("b_acoustique").get_child("MODELISATION")
174       mcs.set_valeur(mcs.eval_val_item('PLAN'))
175       #mcs=add_mcsimp(mcf[2],"GROUP_NO",'GNP3,GNP5,GNP6,GNP7,GNP8,GNP9,GNP10,GNP11,GNP12')
176       mcs=add_mcsimp(mcf[2],"GROUP_NO","'GNP3','GNP5','GNP6','GNP7','GNP8','GNP9','GNP10','GNP11','GNP12'")
177
178       co.nomme_sd("AFFE1")
179 # commande AFFE_MODELE
180       pos=pos+1
181       co=j.addentite("AFFE_MODELE",pos)
182       mcs=co.get_child("MAILLAGE")
183       mcs.set_valeur(mcs.eval_val("MAIL"))
184
185       mcf=co.addentite("AFFE")
186       mcs=mcf[0].get_child("PHENOMENE")
187       valeur=mcs.eval_val_item('MECANIQUE')
188       test=mcs.set_valeur(valeur)
189       mcs=mcf[0].get_child("b_mecanique").get_child("MODELISATION")
190       mcs.set_valeur(mcs.eval_val_item('DIS_T'))
191       mcs=add_mcsimp(mcf[0],"GROUP_MA",'RESSORT')
192
193       mcf=co.addentite("AFFE")
194       mcs=mcf[1].get_child("PHENOMENE")
195       mcs.set_valeur(mcs.eval_val_item('MECANIQUE'))
196       mcs=mcf[1].get_child("b_mecanique").get_child("MODELISATION")
197       mcs.set_valeur(mcs.eval_val_item('DIS_T'))
198       mcs=add_mcsimp(mcf[1],"GROUP_MA",'MASSES')
199
200       mcf=co.addentite("AFFE")
201       mcs=mcf[2].get_child("PHENOMENE")
202       mcs.set_valeur(mcs.eval_val_item('THERMIQUE'))
203       mcs=mcf[2].get_child("b_thermique").get_child("MODELISATION")
204       mcs.set_valeur(mcs.eval_val_item('COQUE'))
205       mcs=add_mcsimp(mcf[2],"TOUT",'OUI')
206
207       co.nomme_sd("MOD")
208 #CARA=AFFE_CARA_ELEM(MODELE=MOD,
209 #                    POUTRE=_F(GROUP_MA='MA',
210 #                              SECTION='CERCLE',
211 #                              CARA='R',
212 #                              VALE=(3.0,P6,),),);
213       pos=pos+1
214       co=j.addentite("AFFE_CARA_ELEM",pos)
215       mcs=co.get_child("MODELE")
216       mcs.set_valeur(mcs.eval_val("MOD"))
217       mcf=co.addentite("POUTRE")
218       mcs=mcf[0].get_child("SECTION")
219       mcs.set_valeur(mcs.eval_val('CERCLE'))
220       assert mcf[0]["SECTION"] == 'CERCLE'
221       mcs=add_mcsimp(mcf[0],"GROUP_MA",'MA')
222       mcs=mcf[0].get_child("b_cercle").get_child("b_constant").get_child("CARA")
223       mcs.set_valeur(mcs.eval_val('R'))
224       mcs=mcf[0].get_child("b_cercle").get_child("b_constant").get_child("VALE")
225       mcs.set_valeur(mcs.eval_val('3.0,P6'))
226       co.nomme_sd("CARA")
227 # commentaire
228       pos=pos+1
229       co=j.addentite("COMMENTAIRE",pos)
230       text=""" 'AFFE_MODELE', 'MAILLAGE'           --> uniqueassdpanel
231   AFFE_MODELE', 'AFFE', 'GROUP_MA'   --> plusieursbasepanel 
232  'AFFE_MODELE', 'AFFE', 'PHENOMENE'  --> uniqueintopanel
233  'AFFE_MODELE', 'AFFE', 'b_mecanique'--> plusieursintopanel"""
234       co.set_valeur(text)
235 #F1=DEFI_FONCTION(NOM_PARA='DX',
236 #                 VALE=(5.0,3.0,P4[1],P3,),);
237       pos=pos+1
238       co=j.addentite("DEFI_FONCTION",pos)
239       mcs=co.get_child("NOM_PARA")
240       mcs.set_valeur(mcs.eval_val("DX"))
241       mcs=co.addentite("VALE")
242       mcs.set_valeur(mcs.eval_val("5.0,3.0,P4[1],P3"))
243       co.nomme_sd("F1")
244 #F3=DEFI_FONCTION(NOM_PARA='DRX',
245 #                 VALE_C=(5.0,7.0,9.0,9.0,8.0,7.0,),);
246       pos=pos+1
247       co=j.addentite("DEFI_FONCTION",pos)
248       mcs=co.get_child("NOM_PARA")
249       mcs.set_valeur(mcs.eval_val("DRX"))
250       mcs=co.addentite("VALE_C")
251       mcs.set_valeur(mcs.eval_val("5.0,7.0,9.0,9.0,8.0,7.0"))
252       co.nomme_sd("F3")
253 # commentaire
254       pos=pos+1
255       co=j.addentite("COMMENTAIRE",pos)
256       co.set_valeur(" 'DEFI_FONCTION', 'VALE'             --> fonctionpanel  ")
257 #MATER2=DEFI_MATERIAU(ELAS=_F(E=100000000000.0,
258 #                             NU=0.0,),
259 #                     ECRO_ASYM_LINE=_F(DC_SIGM_EPSI=0.0,
260 #                                       SY_C=200000000.0,
261 #                                       DT_SIGM_EPSI=0.0,
262 #                                       SY_T=50000000.0,),);
263       pos=pos+1
264       co=j.addentite("DEFI_MATERIAU",pos)
265       mcf=co.addentite("ELAS")
266       mcs=mcf[0].get_child("E")
267       mcs.set_valeur(mcs.eval_val("100000000000.0"))
268       mcs=mcf[0].get_child("NU")
269       mcs.set_valeur(mcs.eval_val("0.0"))
270       mcf=co.addentite("ECRO_ASYM_LINE")
271       mcs=mcf[0].get_child("DC_SIGM_EPSI")
272       mcs.set_valeur(mcs.eval_val("0.0"))
273       mcs=mcf[0].get_child("DT_SIGM_EPSI")
274       mcs.set_valeur(mcs.eval_val("0.0"))
275       mcs=mcf[0].get_child("SY_C")
276       mcs.set_valeur(mcs.eval_val("200000000.0"))
277       mcs=mcf[0].get_child("SY_T")
278       mcs.set_valeur(mcs.eval_val("50000000.0"))
279       co.nomme_sd("MATER2")
280 #PS1=DEFI_PARA_SENSI(VALE=1.0,);
281 #PS2=DEFI_PARA_SENSI(VALE=1.0,);
282 #PS3=DEFI_PARA_SENSI(VALE=1.0,);
283       pos=pos+1
284       co=j.addentite("DEFI_PARA_SENSI",pos)
285       mcs=co.get_child("VALE")
286       mcs.set_valeur(mcs.eval_val("1.0"))
287       co.nomme_sd("PS1")
288       pos=pos+1
289       co=j.addentite("DEFI_PARA_SENSI",pos)
290       mcs=co.get_child("VALE")
291       mcs.set_valeur(mcs.eval_val("1.0"))
292       co.nomme_sd("PS2")
293       pos=pos+1
294       co=j.addentite("DEFI_PARA_SENSI",pos)
295       mcs=co.get_child("VALE")
296       mcs.set_valeur(mcs.eval_val("1.0"))
297       co.nomme_sd("PS3")
298 #CHMAT2=AFFE_MATERIAU(MAILLAGE=MAIL,
299 #                     AFFE=_F(TOUT='OUI',
300 #                             MATER=MATER2,),);
301       pos=pos+1
302       co=j.addentite("AFFE_MATERIAU",pos)
303       add_mcsimp(co,"MAILLAGE","MAIL")
304       mcf=co.get_child("AFFE")
305       add_mcsimp(mcf[0],"TOUT","OUI")
306       add_mcsimp(mcf[0],"MATER","MATER2")
307       co.nomme_sd("CHMAT2")
308 #AAAZ=AFFE_CHAR_THER(MODELE=AFFE1,
309 #                    TEMP_IMPO=_F(TOUT='OUI',
310 #                                 TEMP=0.0,),);
311       pos=pos+1
312       co=j.addentite("AFFE_CHAR_THER",pos)
313       add_mcsimp(co,"MODELE","AFFE1")
314       mcf=co.addentite("TEMP_IMPO")
315       add_mcsimp(mcf[0],"TOUT","OUI")
316       add_mcsimp(mcf[0],"TEMP","0.0")
317       co.nomme_sd("AAAZ")
318 #TH1=THER_LINEAIRE(MODELE=AFFE1,
319 #                  CHAM_MATER=CHMAT2,
320 #                  EXCIT=_F(CHARGE=AAAZ,),
321 #                  SENSIBILITE=(PS1,PS2,),);
322       pos=pos+1
323       co=j.addentite("THER_LINEAIRE",pos)
324       add_mcsimp(co,"MODELE","AFFE1")
325       add_mcsimp(co,"CHAM_MATER","CHMAT2")
326       mcf=co.get_child("EXCIT")
327       add_mcsimp(mcf[0],"CHARGE","AAAZ")
328       add_mcsimp(co,"SENSIBILITE","PS1,PS2")
329       co.nomme_sd("TH1")
330 # commentaire
331       pos=pos+1
332       co=j.addentite("COMMENTAIRE",pos)
333       co.set_valeur(" 'THER_LINEAIRE', 'SENSIBILITE'       --> plusieursassdpanel")
334 #ACA1=AFFE_CHAR_ACOU(MODELE=AFFE1,
335 #                    PRES_IMPO=_F(TOUT='OUI',
336 #                                 PRES=('RI',3.0,3.0,),),);
337       pos=pos+1
338       co=j.addentite("AFFE_CHAR_ACOU",pos)
339       add_mcsimp(co,"MODELE","AFFE1")
340       mcf=co.addentite("PRES_IMPO")
341       add_mcsimp(mcf[0],"TOUT","OUI")
342       add_mcsimp(mcf[0],"PRES","'RI',3.0,3.0")
343       co.nomme_sd("ACA1")
344 # commentaire
345       pos=pos+1
346       co=j.addentite("COMMENTAIRE",pos)
347       co.set_valeur(" 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel")
348
349 # 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel
350
351 #MACRO_MATR_ASSE(MODELE=AFFE1,
352 #                NUME_DDL=CO('DDL1'),
353 #                MATR_ASSE=_F(MATRICE=CO('MAT1'),
354 #                             OPTION='RIGI_THER',),);
355       pos=pos+1
356       co=j.addentite("MACRO_MATR_ASSE",pos)
357       add_mcsimp(co,"MODELE","AFFE1")
358       mcs=co.get_child("NUME_DDL")
359       mcs.set_valeur_co('DDL1')
360       mcf=co.get_child("MATR_ASSE")
361       add_mcsimp(mcf[0],"OPTION","RIGI_THER")
362       mcs=mcf[0].get_child("MATRICE")
363       mcs.set_valeur_co('MAT1')
364 # commentaire
365       pos=pos+1
366       co=j.addentite("COMMENTAIRE",pos)
367       co.set_valeur(" 'MACRO_MATR_ASSE', 'MATR_ASSE', 'MATRICE'  --> uniquesdcopanel")
368
369       assert j.isvalid(),j.report()
370
371       text1=app.get_text_JDC(j,'python')
372       file=os.path.join(prefs.INSTALLDIR,"Tests/testelem/az.comm")
373       f=open(file)
374       text2=f.read()
375       f.close()
376       assert text1 == text2 , cdiff(text1,text2)
377
378    def test003(self):
379       """ Test de construction du fichier de commandes az.comm de zero"""
380
381       app=appli.STANDALONE(version=version)
382       j=app.newJDC()
383 # commande DEBUT
384       co=j.addentite("DEBUT",0)
385 # commande FIN
386       co=j.addentite("FIN",1)
387 #parametre
388       pos=0
389       pos=pos+1
390       co=add_param(j,pos,"P1","9.8")
391       pos=pos+1
392       co=add_param(j,pos,"P2","sin(P1)")
393 # formule
394       pos=pos+1
395       co=j.addentite("FORMULE",pos)
396       co.update_formule_python(("aaa","REEL","a+z","(a,z)"))
397 #parametre de formule
398       pos=pos+1
399       co=add_param(j,pos,"P3","aaa(P1,2.)")
400 #commande defi_list_reel
401       pos=pos+1
402       co=j.addentite("DEFI_LIST_REEL",pos)
403       add_mcsimp(co,"VALE","1.,2.,3.")
404       co.nomme_sd("LI1")
405 #commande defi_list_reel
406       pos=pos+1
407       co=j.addentite("DEFI_LIST_REEL",pos)
408       add_mcsimp(co,"VALE","sin(1.)")
409       co.nomme_sd("LI2")
410 #commande defi_list_reel
411       pos=pos+1
412       co=j.addentite("DEFI_LIST_REEL",pos)
413       add_mcsimp(co,"VALE","aaa(1.,2.)")
414       co.nomme_sd("LI3")
415 #commande defi_list_reel
416       pos=pos+1
417       co=j.addentite("DEFI_LIST_REEL",pos)
418       add_mcsimp(co,"VALE","sin(1.,2)")
419       co.nomme_sd("LI4")
420 #commande defi_list_reel
421       pos=pos+1
422       co=j.addentite("DEFI_LIST_REEL",pos)
423       add_mcsimp(co,"VALE","aaa(1.)")
424       co.nomme_sd("LI5")
425 #commande defi_list_reel
426       pos=pos+1
427       co=j.addentite("DEFI_LIST_REEL",pos)
428       add_mcsimp(co,"VALE","1,sin(1.),2")
429       co.nomme_sd("LI6")
430
431       expected="""DEBUT CR validation : SansNom
432    Etape : DEFI_LIST_REEL    ligne : ...
433       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
434       ! Concept retourné non défini !
435       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
436       Mot-clé simple : VALE
437          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
438          ! 'sin(1.,2)' (de type <type 'str'>) n'est pas d'un type autorisé: ('R',) !
439          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
440       Fin Mot-clé simple : VALE
441    Fin Etape : DEFI_LIST_REEL
442    Etape : DEFI_LIST_REEL    ligne : ...
443       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
444       ! Concept retourné non défini !
445       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
446       Mot-clé simple : VALE
447          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
448          ! 'aaa(1.)' (de type <type 'str'>) n'est pas d'un type autorisé: ('R',) !
449          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
450       Fin Mot-clé simple : VALE
451    Fin Etape : DEFI_LIST_REEL
452 FIN CR validation :SansNom
453 """
454       msg=str( j.report())
455       assert compare.check(expected,msg),cdiff(expected,msg)