1 #@ MODIF lire_inte_spec_ops Macro DATE 10/10/2006 AUTEUR MCOURTOI M.COURTOIS
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2004 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 lire_inte_spec_ops(self,UNITE,FORMAT,NOM_PARA,NOM_RESU,INTERPOL,
22 PROL_DROITE,PROL_GAUCHE,TITRE,INFO,**args):
27 from math import cos,sin
28 from Utilitai.Utmess import UTMESS
29 from Utilitai.UniteAster import UniteAster
30 # On importe les definitions des commandes a utiliser dans la macro
31 DEFI_FONCTION =self.get_cmd('DEFI_FONCTION')
32 CREA_TABLE =self.get_cmd('CREA_TABLE')
34 # La macro compte pour 1 dans la numerotation des commandes
36 nompro='LIRE_INTE_SPEC'
38 # Lecture de la fonction dans un fichier d unité logique UNITE
41 if not os.path.isfile(nomfich):
42 UTMESS('F', nompro, "le fichier '%s' est introuvable" % nomfich)
43 file=open(nomfich,'r')
47 list_fonc=texte.split('FONCTION_C')
48 entete=list_fonc.pop(0)
50 entete=entete[entete.index('DIM'):]
51 dim=int(entete[entete.index('=')+1:entete.index('\n')])
53 UTMESS('F', nompro, "la dimension DIM n est pas précisée dans le fichier lu")
55 if len(list_fonc)!=(dim*(dim+1)/2):
56 UTMESS('F', nompro, "nombre de fonctions incorrect")
61 for i in range(dim*(dim+1)/2):
62 numi=list_fonc[i][list_fonc[i].index('I =')+3:]
63 numi=numi[:numi.index('\n')]
64 nume_i.append(int(numi))
65 numj=list_fonc[i][list_fonc[i].index('J =')+3:]
66 numj=numj[:numj.index('\n')]
67 nume_j.append(int(numj))
69 vale_fonc=list_fonc[i][list_fonc[i].index('VALEUR =\n')+9:list_fonc[i].index('FINSF\n')]
70 vale_fonc=vale_fonc.replace('\n',' ')
71 vale_fonc=map(float,vale_fonc.split())
73 UTMESS('F', nompro, "erreur dans les données de fonctions")
76 if FORMAT=='REEL_IMAG':
78 elif FORMAT=='MODULE_PHASE':
79 for i in range(len(vale_fonc)/3) :
80 module=vale_fonc[3*i+1]
81 phase =vale_fonc[3*i+2]
82 liste=liste+[vale_fonc[3*i],module*cos(phase),module*sin(phase)]
84 # création de la fonction ASTER :
85 _fonc=DEFI_FONCTION( NOM_PARA =NOM_PARA,
87 PROL_DROITE=PROL_DROITE,
88 PROL_GAUCHE=PROL_GAUCHE,
93 l_fonc.append(_fonc.nom)
98 for j in range(i,dim):
101 if nume_i!=nume_ib or nume_j!=nume_jb :
102 UTMESS('F', nompro, "erreur dans les indices")
104 mcfact.append(_F(PARA='NOM_CHAM' ,LISTE_K=(NOM_RESU),NUME_LIGN=(1,)))
105 mcfact.append(_F(PARA='OPTION' ,LISTE_K=('TOUT',) ,NUME_LIGN=(1,)))
106 mcfact.append(_F(PARA='DIMENSION' ,LISTE_I=(dim,) ,NUME_LIGN=(1,)))
107 mcfact.append(_F(PARA='NUME_ORDRE_I',LISTE_I=nume_i ,NUME_LIGN=range(2,len(nume_i)+2)))
108 mcfact.append(_F(PARA='NUME_ORDRE_J',LISTE_I=nume_j ,NUME_LIGN=range(2,len(nume_j)+2)))
109 mcfact.append(_F(PARA='FONCTION_C' ,LISTE_K=l_fonc ,NUME_LIGN=range(2,len(list_fonc)+2)))
110 self.DeclareOut('tab_inte',self.sd)
111 tab_inte=CREA_TABLE(LISTE=mcfact,
113 TYPE_TABLE='TABLE_FONCTION')
115 # remet UNITE dans son état initial