1 #@ MODIF defi_part_feti_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
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 # ======================================================================
20 # RESPONSABLE ASSIRE A.ASSIRE
23 # ===========================================================================
24 # CORPS DE LA MACRO "DEFI_PART_FETI"
25 # -------------------------------------
27 # MAILLAGE maillage a partitionner
28 # MODELE modele (facultatif)
29 # NB_PART nb de sous-domaines
30 # EXCIT liste des chargements
31 # METHODE PMETIS, KMETIS ou AUTRE
32 # LOGICIEL si AUTRE alors on attend un chemin complet vers executable
33 # NOM_GROUP_MA Un nom de base pour les group_ma contenant les SD
36 # ===========================================================================
37 # script PYTHON : appel a Metis et lancement de DEFI_PART_OPS
40 def defi_part_feti_ops(self,MAILLAGE,MODELE,NB_PART,EXCIT,METHODE,NOM_GROUP_MA,INFO,**args):
42 import aster, string, sys
45 from Noyau.N_utils import AsType
47 from Utilitai import partition
52 INCLUSE='NON' # On cree des GROUP_MA pour les mailles de bords (pour developpeur)
54 # Nom des GROUP_MA générés
55 NOM_GROUP_MA = string.strip(NOM_GROUP_MA)
56 NOM_GROUP_MA_BORD = '_' + NOM_GROUP_MA
58 # Test sur le nombre de caractères de NOM_GROUP_MA
59 if ( len(NOM_GROUP_MA)+len(str(NB_PART)) > 7 ):
60 print '\n\n ERREUR : Afin de pouvoir générer les GROUP_MA, réduisez le nombre \n de caractères de NOM_GROUP_MA à un maximum de :', 7-len(str(NB_PART))
64 # Verification que des GROUP_MA ne portent pas deja les memes noms
66 for i in MAILLAGE.LIST_GROUP_MA():
67 _lst.append( string.strip(i[0]) )
68 for i in range(NB_PART):
69 if ( NOM_GROUP_MA+str(i) in _lst ):
70 print '\n\n ERREUR : Il existe déjà un GROUP_MA nommé : ', NOM_GROUP_MA+str(i)
73 if ( NOM_GROUP_MA_BORD+str(i) in _lst ):
74 print '\n\n ERREUR : Il existe déjà un GROUP_MA nommé : ', NOM_GROUP_MA_BORD+str(i)
78 # Executable du partitionneur
80 exe_metis = arg['LOGICIEL']
82 exe_metis = aster.repout() + string.lower(METHODE)
84 # On importe les definitions des commandes a utiliser dans la macro
85 DEFI_PART_OPS = self.get_cmd('DEFI_PART_OPS')
86 INFO_EXEC_ASTER = self.get_cmd('INFO_EXEC_ASTER')
87 DEFI_FICHIER = self.get_cmd('DEFI_FICHIER')
88 DETRUIRE = self.get_cmd('DETRUIRE')
90 # La macro compte pour 1 dans la numerotation des commandes
93 # Le concept sortant dans le contexte de la macro
94 self.DeclareOut('_SDFETI',self.sd)
99 # ---------------------------------------------------------------------------
100 # MACRO-COMMANDE : DEFI_PART_FETI
105 _part = partition.PARTITION(jdc=self);
107 # Recuperation de deux UL libres
108 _UL=INFO_EXEC_ASTER(LISTE_INFO='UNITE_LIBRE')
109 ul1=_UL['UNITE_LIBRE',1]
110 DETRUIRE(CONCEPT=(_F(NOM=_UL),), INFO=1)
111 DEFI_FICHIER(UNITE=ul1)
112 _UL=INFO_EXEC_ASTER(LISTE_INFO='UNITE_LIBRE')
113 ul2=_UL['UNITE_LIBRE',1]
114 DEFI_FICHIER(ACTION='LIBERER',UNITE=ul1)
116 fichier_in = 'fort.' + str(ul1)
117 fichier_out = 'fort.' + str(ul2)
119 # Options de la classe Partition
120 _part.OPTIONS['exe_metis'] = exe_metis
121 _part.OPTIONS['fichier_in'] = fichier_in
122 _part.OPTIONS['fichier_out'] = fichier_out
127 _part.Partitionne_Aster(
135 _part.Partitionne_Aster(
142 # Creation des group_ma dans le maillage Aster
143 _part.Creation_Group_ma_Aster_par_SD(NOM=NOM_GROUP_MA, NOM2=NOM_GROUP_MA_BORD, INCLUSE=INCLUSE)
146 # Creation de la SDFETI
149 for i in range(NB_PART):
150 txt = { 'GROUP_MA': NOM_GROUP_MA + str(i) }
151 if ( NOM_GROUP_MA_BORD+str(i) in _part.ASTER['GROUP_MA_BORD'] ):
152 txt['GROUP_MA_BORD'] = NOM_GROUP_MA_BORD + str(i)
155 motscle2= {'DEFI': _tmp }
157 # Regeneration des mots-cles EXCIT passés en argument de la macro
161 dExcit.append(j.cree_dict_valeurs(j.mc_liste))
162 for i in dExcit[-1].keys():
163 if dExcit[-1][i]==None : del dExcit[-1][i]
164 motscle2['EXCIT']=dExcit
166 _SDFETI=DEFI_PART_OPS(NOM='SDD',
178 % FIN MACRO-COMMANDE: DEFI_PART_FETI