1 # CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
21 Ce module contient le plugin generateur de fichier au format
26 import types,string,re
28 from Noyau import N_CR
29 from Noyau.N_utils import repr_float
30 from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE
31 from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL
32 from Accas import GEOM,ASSD,MCNUPLET
33 from Accas import COMMENTAIRE,PARAMETRE, PARAMETRE_EVAL,COMMANDE_COMM
34 from Formatage import Formatage
35 from generator_python import PythonGenerator
39 Retourne les informations nécessaires pour le chargeur de plugins
41 Ces informations sont retournées dans un dictionnaire
46 # La factory pour créer une instance du plugin
47 'factory' : HomardGenerator,
51 class HomardGenerator(PythonGenerator):
53 Ce generateur parcourt un objet de type JDC et produit
54 un texte au format eficas et
55 un texte au format homard
58 # Les extensions de fichier préconisées
61 def __init__(self,cr=None):
62 # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard
66 self.cr=N_CR.CR(debut='CR generateur format homard pour homard',
67 fin='fin CR format homard pour homard')
68 # Le texte au format homard est stocké dans l'attribut text
71 self.lmots_clef_calcules = ('SuivFron','TypeBila','ModeHOMA','CCAssoci', 'CCNoChaI','HOMaiN__','HOMaiNP1')
72 self.lmots_genea = ('NOM_MED_MAILLAGE_N','NOM_MED_MAILLAGE_NP1')
73 #,'COMPOSANTE','NUME_ORDRE','INST','PRECISION','CRITERE')
79 self.lmot_clef = ('CCMaiN__', 'CCNoMN__', 'CCIndica', 'CCSolN__', 'CCFronti', 'CCNoMFro', 'CCMaiNP1',
80 'CCNoMNP1', 'CCSolNP1', 'TypeRaff', 'TypeDera', 'NiveauMa', 'SeuilHau', 'SeuilHRe',
81 'SeuilHPE', 'NiveauMi', 'SeuilBas', 'SeuilBRe', 'SeuilBPE', 'ListeStd', 'NumeIter',
82 'Langue ', 'CCGroFro', 'CCNoChaI', 'CCNumOrI', 'CCNumPTI', 'SuivFron', 'TypeBila',
83 'ModeHOMA', 'HOMaiN__', 'HOMaiNP1')
85 # Bizarre demander a Gerald :
87 self.assoc['CCMaiN__']='FICHIERS:NOM_MED_MAILLAGE_N'
88 self.assoc['CCNoMN__']='TRAITEMENT:NOM_MED_MAILLAGE_N'
89 self.assoc['CCIndica']='FICHIERS:NOM_MED_MAILLAGE_N'
90 self.assoc['CCSolN__']='FICHIERS:NOM_MED_MAILLAGE_N'
91 self.assoc['CCFronti']='FIC_FRON'
92 self.assoc['CCNoMFro']='NOM_MED_MAILLAGE_FRONTIERE'
93 self.assoc['CCMaiNP1']='FICHIERS:NOM_MED_MAILLAGE_NP1'
94 self.assoc['CCNoMNP1']='TRAITEMENT:NOM_MED_MAILLAGE_NP1'
95 self.assoc['CCSolNP1']='FICHIERS:NOM_MED_MAILLAGE_NP1'
96 self.assoc['TypeRaff']='RAFFINEMENT'
97 self.assoc['TypeDera']='DERAFFINEMENT'
98 self.assoc['NiveauMa']='NIVE_MAX'
99 self.assoc['SeuilHau']='CRIT_RAFF_ABS'
100 self.assoc['SeuilHRe']='CRIT_RAFF_REL'
101 self.assoc['SeuilHPE']='CRIT_RAFF_PE'
102 self.assoc['NiveauMi']='NIVE_MIN'
103 self.assoc['SeuilBas']='CRIT_DERA_ABS'
104 self.assoc['SeuilBRe']='CRIT_DERA_REL'
105 self.assoc['SeuilBPE']='CRIT_DERA_PE'
106 self.assoc['ListeStd']='INFORMATION'
107 self.assoc['NumeIter']='NITER'
108 self.assoc['Langue ']='LANGUE'
109 self.assoc['CCGroFro']='GROUP_MA'
110 # self.assoc['CCNoChaI']='NOM_MED' (on doit aussi ajouter 'COMPOSANTE')
111 self.assoc['CCNumOrI']='NUME_ORDRE'
112 self.assoc['CCNumPTI']='NUME_ORDRE'
115 def gener(self,obj,format='brut'):
116 self.text=PythonGenerator.gener(self,obj,format)
117 self.genereConfiguration()
120 def generMCSIMP(self,obj) :
122 Convertit un objet MCSIMP en une liste de chaines de caractères à la
125 s=PythonGenerator.generMCSIMP(self,obj)
126 if obj.nom in self.lmots_genea:
127 genea = obj.get_genealogie()
128 clef=genea[1]+":"+genea[-1]
131 self.dico_mot_clef[clef]=obj.val
134 def genereConfiguration(self):
137 for mot in self.lmot_clef:
138 if mot not in self.lmots_clef_calcules :
139 clef_eficas=self.assoc[mot]
140 if self.dico_mot_clef.has_key(clef_eficas):
141 val=self.dico_mot_clef[clef_eficas]
146 ligne=mot+' '+repr(val)
148 self.textehomard.append(ligne)
150 val=apply(HomardGenerator.__dict__[mot],(self,))
155 self.textehomard.append(ligne)
157 def get_homard(self):
158 return self.textehomard
162 if self.dico_mot_clef.has_key('NOM_MED_MAILLAGE_FRONTIERE'):
163 if self.dico_mot_clef['NOM_MED_MAILLAGE_FRONTIERE'] != None:
170 dict_val={'NOMBRE':7,'INTERPENETRATION':3,'QUALITE':5,'CONNEXITE':11,'TAILLE':13}
171 for mot in ('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'):
172 if self.dico_mot_clef.has_key(mot):
173 if (self.dico_mot_clef[mot] == "OUI"):
174 inttypeBilan=inttypeBilan*dict_val[mot]
175 retour = repr(inttypeBilan)
181 if self.dico_mot_clef.has_key('INFORMATION'):
182 if self.dico_mot_clef['INFORMATION'] == "OUI":
184 return repr(intModeHOMA)
190 if not (self.dico_mot_clef.has_key('NOM_MED')):
192 if (self.dico_mot_clef['NOM_MED']== None):
194 if not (self.dico_mot_clef.has_key('COMPOSANTE')):
196 if (self.dico_mot_clef['COMPOSANTE']== None):
198 chaine=self.dico_mot_clef['NOM_MED']+' '+self.dico_mot_clef['COMPOSANTE']
203 if self.dico_mot_clef.has_key('NITER'):
204 if self.dico_mot_clef['NITER'] != None :
205 num="M"+repr(self.dico_mot_clef['NITER'])
206 chaine=num+" "+num+".hom"
211 if self.dico_mot_clef.has_key('NITER'):
212 if self.dico_mot_clef['NITER'] != None :
213 num="M"+repr(self.dico_mot_clef['NITER']+1)
214 chaine=num+" "+num+".hom"