]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/Utilitai/macro_rota_globale.py
Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / Aster / Cata / Utilitai / macro_rota_globale.py
1 #@ MODIF macro_rota_globale Utilitai  DATE 18/09/2007   AUTEUR DURAND C.DURAND 
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 from Cata.cata import *
21
22 # ===========================================================================
23 #           CORPS DE LA MACRO "MACR_ROTA_GLOBALE"
24 #           -------------------------------------
25 # USAGE :
26 #  RESULTAT : resultat
27 #  GROUP_NO_ORIG : un groupe d un noeud definissant l entree du coude (A)
28 #  GROUP_NO_EXTR : un groupe d un noeud definissant la sortie du coude (B)
29
30 #              /
31 #           A /
32 #            (______
33 #            B
34 #  
35 # ===========================================================================
36 # script PYTHON : rotation globale sur une tuyauterie
37
38
39 def macr_rota_globale_ops(self,RESULTAT,GROUP_NO_ORIG,GROUP_NO_EXTR,**args):
40
41
42   """
43      Ecriture de la macro MACR_ROTA_GLOBALE
44   """
45   import os
46   from Accas import _F
47   from Noyau.N_utils import AsType
48   ier=0
49
50   # On importe les definitions des commandes a utiliser dans la macro
51   POST_RELEVE_T  = self.get_cmd('POST_RELEVE_T')
52   DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL')
53   DEFI_FONCTION  = self.get_cmd('DEFI_FONCTION')
54
55   # La macro compte pour 1 dans la numerotation des commandes
56   self.set_icmd(1)
57
58   # Le concept sortant (de type fonction) est nomme ROTGD dans 
59   # le contexte de la macro
60
61   self.DeclareOut('ROTGD',self.sd)
62
63   # Commandes de la macro
64   
65   __ROTAB=POST_RELEVE_T(ACTION=_F(INTITULE='__ROTAB',
66                                 GROUP_NO=GROUP_NO_ORIG,
67                                 RESULTAT=RESULTAT,
68                                 NOM_CHAM='DEPL',
69                                 NOM_CMP=('DRX','DRY','DRZ',),
70                                 OPERATION='EXTRACTION',),
71                                 )
72
73   __ROTAC=POST_RELEVE_T(ACTION=_F(INTITULE='__ROTAC',
74                                 GROUP_NO=GROUP_NO_EXTR,
75                                 RESULTAT=RESULTAT,
76                                 NOM_CHAM='DEPL',
77                                 NOM_CMP=('DRX','DRY','DRZ',),
78                                 OPERATION='EXTRACTION',),);
79   
80   __ROTABt=__ROTAB.EXTR_TABLE()
81   __ROTACt=__ROTAC.EXTR_TABLE()
82   __DRXC  = __ROTACt.Array('INST','DRX')
83   __DRYC  = __ROTACt.Array('INST','DRY')
84   __DRZC  = __ROTACt.Array('INST','DRZ')
85   __DRXB  = __ROTABt.Array('INST','DRX')
86   __DRYB  = __ROTABt.Array('INST','DRY')
87   __DRZB  = __ROTABt.Array('INST','DRZ')
88   __DRXBC = __DRXC-__DRXB
89   __DRYBC = __DRYC-__DRYB
90   __DRZBC = __DRZC-__DRZB
91   __ROTG  = __DRXBC*__DRXBC
92   __ROTG  = __ROTG+__DRYBC*__DRYBC
93   __ROTG  = __ROTG+__DRZBC*__DRZBC
94   __ROTG  = __ROTG**(0.5)
95   
96   __livalr = []
97   __livali = []
98   for i in range(len(__ROTG)):
99     __livalr.append(__ROTG[i,1])
100     __livali.append(__DRXC[i,0])
101
102   print __livalr
103   print __livali
104
105   __LROTG = DEFI_LIST_REEL(VALE=__livalr)
106   __LINST = DEFI_LIST_REEL(VALE=__livali)
107
108   ROTGD = DEFI_FONCTION(NOM_PARA='INST',
109                         VALE_PARA=__LINST,
110                         VALE_FONC=__LROTG,
111                        )
112
113   return ier
114
115
116
117 # ===========================================================================
118 #           CATALOGUE DE LA MACRO "MACR_ROTA_GLOBALE"
119 #           -----------------------------------------
120 # USAGE :
121 #  RESULTAT : resultat
122 #  GROUP_NO_ORIG : un groupe d un noeud definissant l entree du coude (A)
123 #  GROUP_NO_EXTR : un groupe d un noeud definissant la sortie du coude (B)
124
125 #              /
126 #           A /
127 #            (______
128 #            B
129 #  
130 # ===========================================================================
131
132
133
134 MACR_ROTA_GLOBALE=MACRO(nom="MACR_ROTA_GLOBALE",op=macr_rota_globale_ops,sd_prod=fonction_sdaster,
135                        docu="",reentrant='n',
136                        fr="calcul de la rotation globale dans un coude.",
137          RESULTAT        =SIMP(statut='o',typ=(evol_elas,evol_noli,evol_ther) ),
138          GROUP_NO_ORIG   =SIMP(statut='o',typ=grno,max=1),
139          GROUP_NO_EXTR   =SIMP(statut='o',typ=grno,max=1),
140 )  ;
141
142
143