]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA9/SD/co_cham_no.py
Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / Aster / Cata / cataSTA9 / SD / co_cham_no.py
1 #@ MODIF co_cham_no SD  DATE 06/08/2007   AUTEUR TARDIEU N.TARDIEU 
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 import Accas
22 from SD import *
23 from sd_cham_no import sd_cham_no
24 from co_champ   import cham_gd_sdaster
25
26 import Numeric
27
28 # -----------------------------------------------------------------------------
29 # post-traitement :
30 class post_comp_cham_no :
31   def __init__(self,valeurs,noeud=None) :
32     self.valeurs=valeurs
33     self.noeud=noeud
34
35 # -----------------------------------------------------------------------------
36 class cham_no_sdaster(cham_gd_sdaster, sd_cham_no):
37    def EXTR_COMP(self,comp,lgno,topo=0) :
38       """ retourne les valeurs de la composante comp du champ sur la liste
39         de groupes de noeuds lgno avec eventuellement l'info de la
40         topologie si topo>0. Si lgno est une liste vide, c'est equivalent
41         a un TOUT='OUI' dans les commandes aster
42         Attributs retourne
43           - self.valeurs : Numeric.array contenant les valeurs
44         Si on a demande la topo (i.e. self.topo = 1) :
45           - self.noeud  : numero de noeud """
46       if self.par_lot() :
47          raise Accas.AsException("Erreur dans cham_no.EXTR_COMP en PAR_LOT='OUI'")
48
49       ncham=self.get_name()
50       ncham=ncham+(8-len(ncham))*' '
51       nchams=ncham[0:7]+'S'
52       ncmp=comp+(8-len(comp))*' '
53
54       aster.prepcompcham(ncham,nchams,ncmp,"NO      ",topo,lgno)
55
56       valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
57
58       if (topo>0) :
59          noeud=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.N'))
60       else :
61          noeud=None
62
63       aster.prepcompcham("__DETR__",nchams,ncmp,"NO      ",topo,lgno)
64
65       return post_comp_cham_no(valeurs,noeud)
66       
67    def __add__(self, other):
68       from SD.sd_nume_equa import sd_nume_equa
69       from SD.sd_maillage import sd_maillage
70       from SD.co_maillage import maillage_sdaster
71       from Cata.cata import CREA_CHAMP,_F
72       from Noyau.nommage import GetNomConceptResultat
73       # on recupere le type
74       __nume_ddl=sd_nume_equa(self.REFE.get()[1])
75       __gd=__nume_ddl.REFN.get()[1].strip()
76       __type='NOEU_'+__gd
77       # on recupere le nom du maillage
78       __nomMaillage=self.REFE.get()[0].strip()
79       # on recupere l'objet du maillage
80       __maillage=CONTEXT.get_current_step().sds_dict[__nomMaillage]
81       # on recupere le nom a gauche du signe "="
82       toto=GetNomConceptResultat(self)
83       print 50*'#','\n',toto,50*'#','\n'
84       __CHAM = CREA_CHAMP(OPERATION='ASSE',
85                           MAILLAGE=__maillage,
86                           TYPE_CHAM=__type,
87                           INFO=1,
88                           ASSE=(_F(CHAM_GD=self,
89                                    TOUT='OUI',
90                                    CUMUL='OUI',
91                                    COEF_R=1.),
92                                 _F(CHAM_GD=other,
93                                    TOUT='OUI',
94                                    CUMUL='OUI',
95                                    COEF_R=1.),  
96                                ))
97       return __CHAM
98
99
100
101
102
103