]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA9/Intranet/macro_bascule_schema_ops.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / Aster / Cata / cataSTA9 / Intranet / macro_bascule_schema_ops.py
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.                                                  
10 #                                                                       
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.                              
15 #                                                                       
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 # ======================================================================
20
21 def macro_bascule_schema_ops (self,MODE,MATE,CARA,
22                         INCR_I,INCR_E,
23                         SCH_TEMPS_I,SCH_TEMPS_E,SCH_TEMPS_EQ,
24                         C_INCR_I,C_INCR_E,
25                         EXC_T,NEWT,INIT,TP_BAS,SCH_INI,EQUILIBRAGE,**args):
26   ier=0
27   import copy
28   import aster
29   import string
30   import types
31   from Accas import _F
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
39   self.set_icmd(1)
40   # Le concept sortant (de type evol_noli) est nommé
41   # 'nomres' dans le contexte de la macro
42   self.DeclareOut('nomres',self.sd)
43   #
44   #
45   dexct=[]
46   for j in EXC_T :
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]
50   #
51   dComp_incri=[]
52   for j in C_INCR_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]
56   #
57   dComp_incre=[]
58   for j in C_INCR_E :
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]
62   #
63   dincri=[]
64   for j in INCR_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]
68   #
69   dincre=[]
70   for j in INCR_E :
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]
74   #
75   dschi=[]
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]
80   #        
81   dsche=[]
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]
86   #        
87   dscheq=[]
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]
92   #     
93   dnew=[]
94   for j in NEWT :
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]    
98   #       
99   dini=[]
100   for j in INIT :
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]            
104   #
105   dequi=[]
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]  
110   #
111   __L0   = TP_BAS['VALE']
112   dincri1=copy.copy(dincri)
113   dincri1[-1]['INST_FIN']= __L0[0]
114   #
115   __dtimp=dequi[-1]['DT_IMP']
116   __dtexp=dequi[-1]['DT_EXP']
117   #
118   __dim=(-1)*len(dComp_incri)
119   __lis=range(0,__dim,-1)
120   __non_lin='NON'
121   for i in __lis :
122       if (dComp_incri[i]['RELATION']!='DIS_CHOC' and dComp_incri[i]['RELATION']!='ELAS'):
123           __non_lin='OUI'
124           break             
125   #   
126   #
127   if SCH_INI=='IMPLICITE':
128        dincri1=copy.copy(dincri)
129        dincri1[-1]['INST_FIN']= __L0[0]
130        nomres=DYNA_NON_LINE(MODELE      =MODE,
131                             CHAM_MATER  =MATE,
132                             CARA_ELEM   =CARA,
133                             EXCIT       =dexct,
134                             COMP_INCR   =dComp_incri,
135                             INCREMENT   =dincri1,
136                             SCHEMA_TEMPS=dschi,
137                             NEWTON=dnew,
138                             ETAT_INIT=dini,           ) 
139        __prc = 'IMPLICITE'                    
140   #
141   if SCH_INI=='EXPLICITE':
142        dincre1=copy.copy(dincre)
143        dincre1[-1]['INST_FIN']= __L0[0]
144        nomres=DYNA_NON_LINE(MODELE      =MODE,
145                             CHAM_MATER  =MATE,
146                             MASS_DIAG='OUI',
147                             CARA_ELEM   =CARA,
148                             EXCIT       =dexct,
149                             COMP_INCR   =dComp_incre,
150                             INCREMENT   =dincre1,
151                             SCHEMA_TEMPS=dsche,
152                             NEWTON=dnew,
153                             ETAT_INIT=dini,           ) 
154                             
155        __prc = 'EXPLICITE'                       
156                        
157  #  
158   __nb=len(__L0)
159   j = 1                 
160   while 1:
161      #
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],)
165         #                                              
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],)                                 
168         #
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],)
171         #            
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],)                  
174         #          
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, 
181                              MODELE=MODE,
182                              MASS_DIAG='OUI',
183                              CHAM_MATER=MATE,
184                              CARA_ELEM=CARA,
185                              EXCIT=dexct,
186                              ETAT_INIT=_F(DEPL=__Ue, VITE=__Ve, ACCE=__Ae, 
187                                           SIGM=__Ce, VARI=__Vae,),
188                              COMP_INCR=dComp_incre,
189                              INCREMENT=dincre1,
190                              SCHEMA_TEMPS=dsche,
191                              NEWTON=dnew,) 
192         #                     
193         __prc='EXPLICITE' 
194         j = j + 1   
195         bool = (j!=(__nb))
196         if (not bool): break                   
197         #        
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],)
203             #                                              
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],)                                 
206             #
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],)
209             #            
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],)                  
212             #          
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],)              
215             #
216             __lrec=DEFI_LIST_REEL(DEBUT=__L0[j-1],
217                                   INTERVALLE=_F(JUSQU_A=(__L0[j-1])+(10*(__dtexp)),
218                                                 PAS=__dtexp),)
219             __u_rec=DYNA_NON_LINE(MODELE=MODE,
220                                   CHAM_MATER=MATE,
221                                   MASS_DIAG='OUI',
222                                   CARA_ELEM=CARA,
223                                   EXCIT=dexct,
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,
228                                                INST_INIT=__L0[j-1],
229                                                INST_FIN=(__L0[j-1])+(10*(__dtexp))),
230                                   SCHEMA_TEMPS=dscheq,
231                                   NEWTON=dnew,) 
232             #
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)),)
235             #                                              
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)),)                                 
238             #
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)),)                               
241             #          
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,
248                                  MODELE=MODE,
249                                  CHAM_MATER=MATE,
250                                  CARA_ELEM=CARA,
251                                  EXCIT=dexct,
252                                  ETAT_INIT=_F(DEPL=__Ui, VITE=__Vi, ACCE=__Ai, 
253                                               SIGM=__C1, VARI=__Va1,),
254                                  COMP_INCR=dComp_incri,
255                                  INCREMENT=dincri1,
256                                  SCHEMA_TEMPS=dschi,
257                                  NEWTON=dnew,)            
258             #
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)),)
261             #                                              
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)),)                                 
264             #
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)),)
267             #            
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)),)                  
270             #          
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)),)
273             #                                                                          
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,
279                                  MODELE=MODE,
280                                  CHAM_MATER=MATE,
281                                  CARA_ELEM=CARA,
282                                  EXCIT=dexct,
283                                  ETAT_INIT=_F(DEPL=__Ui, VITE=__Vi, ACCE=__Ai, 
284                                               SIGM=__Ci, VARI=__Vai,
285                                              ),
286                                  COMP_INCR=dComp_incri,
287                                  INCREMENT=dincri1,
288                                  SCHEMA_TEMPS=dschi,
289                                  NEWTON=dnew,)  
290             #      
291             __prc='IMPLICITE'
292             j = j + 1 
293             bool = (j!=(__nb))
294             if (not bool): break                       
295   #            
296   return ier