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.
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 # ======================================================================
20 from Cata.cata import *
22 # ===========================================================================
23 # CORPS DE LA MACRO "MACR_ROTA_GLOBALE"
24 # -------------------------------------
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)
35 # ===========================================================================
36 # script PYTHON : rotation globale sur une tuyauterie
39 def macr_rota_globale_ops(self,RESULTAT,GROUP_NO_ORIG,GROUP_NO_EXTR,**args):
43 Ecriture de la macro MACR_ROTA_GLOBALE
47 from Noyau.N_utils import AsType
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')
55 # La macro compte pour 1 dans la numerotation des commandes
58 # Le concept sortant (de type fonction) est nomme ROTGD dans
59 # le contexte de la macro
61 self.DeclareOut('ROTGD',self.sd)
63 # Commandes de la macro
65 __ROTAB=POST_RELEVE_T(ACTION=_F(INTITULE='__ROTAB',
66 GROUP_NO=GROUP_NO_ORIG,
69 NOM_CMP=('DRX','DRY','DRZ',),
70 OPERATION='EXTRACTION',),
73 __ROTAC=POST_RELEVE_T(ACTION=_F(INTITULE='__ROTAC',
74 GROUP_NO=GROUP_NO_EXTR,
77 NOM_CMP=('DRX','DRY','DRZ',),
78 OPERATION='EXTRACTION',),);
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)
98 for i in range(len(__ROTG)):
99 __livalr.append(__ROTG[i,1])
100 __livali.append(__DRXC[i,0])
105 __LROTG = DEFI_LIST_REEL(VALE=__livalr)
106 __LINST = DEFI_LIST_REEL(VALE=__livali)
108 ROTGD = DEFI_FONCTION(NOM_PARA='INST',
117 # ===========================================================================
118 # CATALOGUE DE LA MACRO "MACR_ROTA_GLOBALE"
119 # -----------------------------------------
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)
130 # ===========================================================================
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),