1 #@ MODIF macro_bascule_schema_ops Intranet DATE 17/12/2007 AUTEUR GREFFET N.GREFFET
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
9 # (AT YOUR OPTION) ANY LATER VERSION.
11 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
12 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
13 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
14 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
16 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
17 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
18 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
21 def macro_bascule_schema_ops (self,MODE,MATE,CARA,
23 SCH_TEMPS_I,SCH_TEMPS_E,SCH_TEMPS_EQ,
25 EXC_T,NEWT,INIT,TP_BAS,SCH_INI,EQUILIBRAGE,**args):
32 from Noyau.N_utils import AsType
33 from Utilitai.Utmess import UTMESS
34 # On importe les definitions des commandes a utiliser dans la macro
35 DYNA_NON_LINE =self.get_cmd('DYNA_NON_LINE')
36 CREA_CHAMP =self.get_cmd('CREA_CHAMP')
37 DEFI_LIST_REEL =self.get_cmd('DEFI_LIST_REEL')
38 # La macro compte pour 1 dans la numerotation des commandes
40 # Le concept sortant (de type evol_noli) est nommé
41 # 'nomres' dans le contexte de la macro
42 self.DeclareOut('nomres',self.sd)
47 dexct.append(j.cree_dict_valeurs(j.mc_liste))
48 for i in dexct[-1].keys():
49 if dexct[-1][i]==None : del dexct[-1][i]
53 dComp_incri.append(j.cree_dict_valeurs(j.mc_liste))
54 for i in dComp_incri[-1].keys():
55 if dComp_incri[-1][i]==None : del dComp_incri[-1][i]
59 dComp_incre.append(j.cree_dict_valeurs(j.mc_liste))
60 for i in dComp_incre[-1].keys():
61 if dComp_incre[-1][i]==None : del dComp_incre[-1][i]
65 dincri.append(j.cree_dict_valeurs(j.mc_liste))
66 for i in dincri[-1].keys():
67 if dincri[-1][i]==None : del dincri[-1][i]
71 dincre.append(j.cree_dict_valeurs(j.mc_liste))
72 for i in dincre[-1].keys():
73 if dincre[-1][i]==None : del dincre[-1][i]
76 for j in SCH_TEMPS_I :
77 dschi.append(j.cree_dict_valeurs(j.mc_liste))
78 for i in dschi[-1].keys():
79 if dschi[-1][i]==None : del dschi[-1][i]
82 for j in SCH_TEMPS_I :
83 dsche.append(j.cree_dict_valeurs(j.mc_liste))
84 for i in dsche[-1].keys():
85 if dsche[-1][i]==None : del dsche[-1][i]
88 for j in SCH_TEMPS_I :
89 dscheq.append(j.cree_dict_valeurs(j.mc_liste))
90 for i in dscheq[-1].keys():
91 if dscheq[-1][i]==None : del dscheq[-1][i]
95 dnew.append(j.cree_dict_valeurs(j.mc_liste))
96 for i in dnew[-1].keys():
97 if dnew[-1][i]==None : del dnew[-1][i]
101 dini.append(j.cree_dict_valeurs(j.mc_liste))
102 for i in dini[-1].keys():
103 if dini[-1][i]==None : del dini[-1][i]
106 for j in EQUILIBRAGE :
107 dequi.append(j.cree_dict_valeurs(j.mc_liste))
108 for i in dequi[-1].keys():
109 if dequi[-1][i]==None : del dequi[-1][i]
111 __L0 = TP_BAS['VALE']
112 dincri1=copy.copy(dincri)
113 dincri1[-1]['INST_FIN']= __L0[0]
115 __dtimp=dequi[-1]['DT_IMP']
116 __dtexp=dequi[-1]['DT_EXP']
118 __dim=(-1)*len(dComp_incri)
119 __lis=range(0,__dim,-1)
122 if (dComp_incri[i]['RELATION']!='DIS_CHOC' and dComp_incri[i]['RELATION']!='ELAS'):
127 if SCH_INI=='IMPLICITE':
128 dincri1=copy.copy(dincri)
129 dincri1[-1]['INST_FIN']= __L0[0]
130 nomres=DYNA_NON_LINE(MODELE =MODE,
134 COMP_INCR =dComp_incri,
141 if SCH_INI=='EXPLICITE':
142 dincre1=copy.copy(dincre)
143 dincre1[-1]['INST_FIN']= __L0[0]
144 nomres=DYNA_NON_LINE(MODELE =MODE,
149 COMP_INCR =dComp_incre,
162 if __prc=='IMPLICITE' :
163 __Ue=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
164 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL', INST=__L0[j-1],)
166 __Ve=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
167 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE', INST=__L0[j-1],)
169 __Ae=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
170 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE', INST=__L0[j-1],)
172 __Ce=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
173 TYPE_CHAM='ELGA_SIEF_R', NOM_CHAM='SIEF_ELGA', INST=__L0[j-1],)
175 __Vae=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
176 TYPE_CHAM='ELGA_VARI_R', NOM_CHAM='VARI_ELGA', INST=__L0[j-1],)
177 dincre1=copy.copy(dincre)
178 dincre1[-1]['INST_FIN'] = __L0[j]
179 dincre1[-1]['INST_INIT']= __L0[j-1]
180 nomres=DYNA_NON_LINE(reuse=nomres,
186 ETAT_INIT=_F(DEPL=__Ue, VITE=__Ve, ACCE=__Ae,
187 SIGM=__Ce, VARI=__Vae,),
188 COMP_INCR=dComp_incre,
198 if __prc=='EXPLICITE' :
199 # calcul sur la zone de recouvrement
200 print('calcul d''une solution explicite stabilisée')
201 __U1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
202 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL', INST=__L0[j-1],)
204 __V1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
205 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE', INST=__L0[j-1],)
207 __A1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
208 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE', INST=__L0[j-1],)
210 __C1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
211 TYPE_CHAM='ELGA_SIEF_R', NOM_CHAM='SIEF_ELGA', INST=__L0[j-1],)
213 __Va1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
214 TYPE_CHAM='ELGA_VARI_R', NOM_CHAM='VARI_ELGA', INST=__L0[j-1],)
216 __lrec=DEFI_LIST_REEL(DEBUT=__L0[j-1],
217 INTERVALLE=_F(JUSQU_A=(__L0[j-1])+(10*(__dtexp)),
219 __u_rec=DYNA_NON_LINE(MODELE=MODE,
224 ETAT_INIT=_F(DEPL=__U1, VITE=__V1, ACCE=__A1,
225 SIGM=__C1, VARI=__Va1,),
226 COMP_INCR=dComp_incre,
227 INCREMENT=_F(LIST_INST=__lrec,
229 INST_FIN=(__L0[j-1])+(10*(__dtexp))),
233 __Ui =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=__u_rec,
234 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL', INST=(__L0[j-1])+(10*(__dtexp)),)
236 __Vi =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=__u_rec,
237 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE', INST=(__L0[j-1])+(10*(__dtexp)),)
239 __Ai =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=__u_rec,
240 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE', INST=(__L0[j-1])+(10*(__dtexp)),)
242 # equilibrage du premier pas implicite
243 print('equilibrage du pas explicite stabilisée')
244 dincri1=copy.copy(dincri)
245 dincri1[-1]['INST_FIN'] = ((__L0[j-1])+(10*(__dtexp)))
246 dincri1[-1]['INST_INIT']= (__L0[j-1])
247 nomres=DYNA_NON_LINE(reuse=nomres,
252 ETAT_INIT=_F(DEPL=__Ui, VITE=__Vi, ACCE=__Ai,
253 SIGM=__C1, VARI=__Va1,),
254 COMP_INCR=dComp_incri,
259 __Ui =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
260 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL', INST=(__L0[j-1])+(10*(__dtexp)),)
262 __Vi =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
263 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE', INST=(__L0[j-1])+(10*(__dtexp)),)
265 __Ai =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
266 TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE', INST=(__L0[j-1])+(10*(__dtexp)),)
268 __Ci =CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
269 TYPE_CHAM='ELGA_SIEF_R', NOM_CHAM='SIEF_ELGA', INST=(__L0[j-1])+(10*(__dtexp)),)
271 __Vai=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
272 TYPE_CHAM='ELGA_VARI_R', NOM_CHAM='VARI_ELGA', INST=(__L0[j-1])+(10*(__dtexp)),)
274 print('calcul implicite après équilibrage')
275 dincri1=copy.copy(dincri)
276 dincri1[-1]['INST_FIN'] = __L0[j]
277 dincri1[-1]['INST_INIT']= ((__L0[j-1])+(10*(__dtexp)))
278 nomres=DYNA_NON_LINE(reuse=nomres,
283 ETAT_INIT=_F(DEPL=__Ui, VITE=__Vi, ACCE=__Ai,
284 SIGM=__Ci, VARI=__Vai,
286 COMP_INCR=dComp_incri,