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