dict_fichier_unite={}
+
+ def SALOME_DONNEES_HOMARD_FICHIERS_NOM_MED_MAILLAGE_N(self):
+ entrychaine=salome.sg.getAllSelected()
+ if entrychaine != '':
+ self.entry2.delete(0,END)
+ try:
+ print salome.myStudy
+ SO = salome.myStudy.FindObjectID(entrychaine[0])
+ except:
+ boo = 0
+ SO = None
+
+ FileName=''
+ if SO != None:
+ myBuilder = salome.myStudy.NewBuilder()
+ boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeFileType")
+ if boo:
+ val=FileAttr.Value()
+ if (val !="FICHIERMED"):
+ boo=0
+ showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
+ else:
+ boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeExternalFileDef")
+ if boo :
+ FileName=FileAttr.Value()
+ else:
+ showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
+ if FileName != '' :
+ self.entry2.insert(0,FileName)
+ self.entry.delete(0,END)
+ self.entry.insert(0,FileName)
+ self.valid_valeur()
+
+
+ def SALOME_DONNEES_HOMARD_FICHIERS_NOM_MED_MAILLAGE_NP1(self):
+ self.SALOME_DONNEES_HOMARD_FICHIERS_NOM_MED_MAILLAGE_N()
+
+
def SALOME_LIRE_MAILLAGE_UNITE(self):
unite=self.node.item.get_valeur()
myBuilder = salome.myStudy.NewBuilder()
boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeComment")
- if boo == 0 :
- FileName=''
- print "a"
- else :
- Comment=FileAttr.Value()
- print Comment
- if Comment.find("FICHIERMED")== -1 :
- FileName=''
- else :
- FileName=Comment[10:]
-
+ FileName=''
+ if SO != None:
+ myBuilder = salome.myStudy.NewBuilder()
+ boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeFileType")
+ if boo:
+ boo=0
+ val=FileAttr.Value()
+ if (val !="FICHIERMED"):
+ showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
+ else:
+ boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeExternalFileDef")
+ if boo :
+ FileName=FileAttr.Value()
+ else:
+ showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
print "FileName = " , FileName
- if FileName != '' :
+ if FileName != '' :
print FileName
- self.entry2.insert(0,FileName)
+ self.entry2.insert(0,FileName)
typefic='D'
SALOME_UNIQUE_BASE_Panel.dict_fichier_unite[unite]=typefic+FileName
else :
- print "il faut afficher une Fenetre d impossibilité"
- showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associé")
+ print "il faut afficher une Fenetre d impossibilit\xe9"
+ showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
- def makeValeurPage(self,page):
+ def redistribue_selon_simp(self):
+ genea = self.node.item.get_genealogie()
+ commande="SALOME"
+ for i in range(0,len( genea )) :
+ commande=commande+"_"+ genea[i]
+ print SALOME_UNIQUE_BASE_Panel.__dict__[commande]
+ (SALOME_UNIQUE_BASE_Panel.__dict__[commande])(self)
+
+
+ makeValeurPage(self,page):
"""
Génère la page de saisie de la valeur du mot-clé simple courant qui doit être de type
de base cad entier, réel, string ou complexe
self.entry.bind("<Return>",lambda e,c=self.valid_valeur:c())
# PN : Ajout d'un bouton pour selectionner à partir de Salome
- self.b = Button(self.frame_valeur,text='Relier a selection',command=self.SALOME_LIRE_MAILLAGE_UNITE)
- self.b.place(relx=0.1,rely=0.1)
+ self.b = Button(self.frame_valeur,text='Relier selection',command=self.redistribue_selon_simp)
+ self.b.place(relx=0.05,rely=0.1)
unite=self.node.item.get_valeur()
self.entry2 = Entry(self.frame_valeur,relief='sunken')
self.entry2.place(relx=0.3,rely=0.1)
--- /dev/null
+# --------------------------------------------------
+# debut entete
+# --------------------------------------------------
+
+import Accas
+from Accas import *
+
+#CONTEXT.debug=1
+
+JdC = JDC_CATA(code='HOMARD',
+ execmodul=None,
+ regles = (AU_MOINS_UN('DONNEES_HOMARD'),),
+ )
+
+# Type le plus general
+class entier (ASSD):pass
+class reel (ASSD):pass
+class complexe(ASSD):pass
+class liste (ASSD):pass
+class chaine (ASSD):pass
+
+# Types geometriques
+class no (GEOM):pass
+class grno(GEOM):pass
+class ma (GEOM):pass
+class grma(GEOM):pass
+
+# --------------------------------------------------
+# fin entete
+# --------------------------------------------------
+
+
+DONNEES_HOMARD=PROC(nom="DONNEES_HOMARD",op= 189, docu="U7.04.01-b",
+ UIinfo={"groupes":("Fonction",)},
+ fr="Imprime le fichier de configuration de HOMARD.",
+ ang="Writes the configuration file for HOMARD.",
+#
+# 1. Langue des messages issus de HOMARD
+#
+ LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
+ into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
+ fr="Langue des messages issus de HOMARD.",
+ ang="Language for HOMARD messages." ),
+#
+# 2. Les fichiers en entree/sortie
+#
+ FICHIERS = FACT(statut='o',
+ NOM_MED_MAILLAGE_N = SIMP(statut='o' ,typ='TXM',
+ fr="Nom du fichier contenant le maillage à adapter",
+ ang="File name including the in-mesh"),
+ NOM_MED_MAILLAGE_NP1 = SIMP(statut='o' ,typ='TXM',
+ fr="Nom du fichier qui contiendra le maillage adapté",
+ ang="File name for resulting out-mesh"),
+ INFORMATION = SIMP(statut='o' ,typ='TXM',
+ fr="Nom du fichier contenant les informations de sortie",
+ ang="Log File"),
+ ),
+#
+# 3. Le type de traitement :
+#
+ TRAITEMENT =FACT(statut='o',
+#
+# 3.1. DEUX CHOIX EXCLUSIFS :
+#
+# A. ADAPTATION AVEC DES VARIANTES SUR LE MODE DE RAFFINEMENT/DERAFFINEMENT
+# . RAFFINEMENT ET DERAFFINEMENT
+# . RAFFINEMENT SEUL
+# . DERAFFINEMENT SEUL
+# B. INFORMATION SUR UN MAILLAGE
+#
+ regles=( AU_MOINS_UN('RAFFINEMENT','DERAFFINEMENT','INFORMATION'),
+ EXCLUS('RAFFINEMENT','INFORMATION'),
+ EXCLUS('DERAFFINEMENT','INFORMATION'),),
+ RAFFINEMENT =SIMP(statut='f',typ='TXM',
+ fr="Choix du mode de raffinement.",
+ ang="Choice of refinement mode.",
+ defaut="LIBRE",
+ into=("LIBRE","UNIFORME","NON","NON-CONFORME","NON-CONFORME-INDICATEUR") ),
+ DERAFFINEMENT =SIMP(statut='f',typ='TXM',
+ fr="Choix du mode de deraffinement.",
+ ang="Choice of unrefinement mode.",
+ defaut="LIBRE",
+ into=("LIBRE","UNIFORME","NON") ),
+ INFORMATION =SIMP(statut='f',typ='TXM',
+ fr="Information sur un maillage",
+ ang="Information on a mesh",
+ into=("OUI",) ),
+#
+# 3.2. LES CONTRAINTES :
+#
+# 3.2.1. POUR DE L'ADAPTATION LIBRE, IL FAUT :
+# A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+# B. LE NOM MED DU MAILLAGE D'ENTREE
+# C. LE NOM MED DE L'INDICATEUR D'ERREUR
+# D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+# E. LA MISE A JOUR DE SOLUTION
+# F. LE NOM MED DU MAILLAGE DE SORTIE
+# REMARQUE : IL FAUT DES CRITERES, MAIS ON NE SAIT PAS LESQUELS
+#
+# 3.2.2. POUR DE L'ADAPTATION UNIFORME
+# IL FAUT :
+# A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+# B. LE NOM MED DU MAILLAGE DE SORTIE
+# IL NE FAUT PAS :
+# A. LE NOM MED DE L'INDICATEUR D'ERREUR
+# B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
+# C. LES CRITERES
+# REMARQUE : A L'ITERATION 0, OU AUX ITERATIONS SUIVANTES SI MAJ DE SOLUTION,
+# IL FAUT LE NOM MED DU MAILLAGE D'ENTREE
+#
+# 3.2.3. POUR DE L'INFORMATION :
+# IL FAUT :
+# A. LE NOM MED DU MAILLAGE D'ENTREE
+# IL NE FAUT PAS :
+# A. LE NOM MED DE L'INDICATEUR D'ERREUR
+# B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
+# C. LES CRITERES
+# D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+# E. LA MISE A JOUR DE SOLUTION
+#
+ NOM_MED_MAILLAGE_N =SIMP(statut='o',typ='TXM',
+ fr="Nom MED du maillage en entrée",
+ ang="MED name of the in-mesh",),
+#
+ b_iteration_maj_champ =BLOC(condition = "( RAFFINEMENT != None ) or ( DERAFFINEMENT != None ) ",
+ fr="Nom MED du maillage en sortie, numero d'iteration et mise à jour de champs",
+ ang="MED name of the out-mesh, iteration rank and field updating",
+ NITER =SIMP(statut='o',typ='I',
+ fr="Numéro d'itération avant l'adaptation.",
+ ang="Iteration number before adaptation." ),
+ NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
+ fr="Nom MED du maillage en sortie",
+ ang="MED name of the out-mesh" ),
+ ) ,
+#
+ b_indicateur_d_erreur =BLOC(condition = "( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
+ ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) or ( DERAFFINEMENT == 'LIBRE' ) ",
+ fr="Indicateur d'erreur",
+ ang="Error indicator",
+ NOM_MED =SIMP(statut='o',typ='TXM',
+ fr="Nom MED de l'indicateur d'erreur.",
+ ang="MED name of error indicator.",),
+ COMPOSANTE =SIMP(statut='o',typ='TXM',
+ fr="Nom de la composante de l'indicateur d'erreur retenue.",
+ ang="Name of the selected component of the error indicator.",),
+ NUME_ORDRE =SIMP(statut='f',typ='I',
+ fr="Numero d'ordre de l'indicateur.",
+ ang="Rank number of the error indicator.",),
+ ) ,
+#
+ b_critere_de_raffinement =BLOC( condition = "( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
+ ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) ",
+ fr="Critère de raffinement.",
+ ang="Refinement threshold.",
+ regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
+ CRIT_RAFF_ABS =SIMP(statut='f',typ='R',
+ fr="Critère absolu",
+ ang="Absolute threshold" ),
+ CRIT_RAFF_REL =SIMP(statut='f',typ='R',
+ fr="Critère relatif",
+ ang="Relative threshold" ),
+ CRIT_RAFF_PE =SIMP(statut='f',typ='R',
+ fr="Pourcentage d'éléments",
+ ang="Percentage of elements" ),
+ ) ,
+#
+ b_critere_de_deraffinement =BLOC ( condition = "( DERAFFINEMENT == 'LIBRE' ) ",
+ fr="Critère de déraffinement.",
+ ang="Unrefinement threshold.",
+ regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
+ CRIT_DERA_ABS =SIMP(statut='f',typ='R' ,
+ fr="Critère absolu",
+ ang="Absolute threshold" ),
+ CRIT_DERA_REL =SIMP(statut='f',typ='R',
+ fr="Critère relatif",
+ ang="Relative threshold" ),
+ CRIT_DERA_PE =SIMP(statut='f',typ='R',
+ fr="Pourcentage d'éléments",
+ ang="Percentage of elements" ),
+ ) ,
+#
+ b_niveau_maximum =BLOC ( condition = " ( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
+ ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) or ( RAFFINEMENT == 'UNIFORME' ) ",
+ NIVE_MAX =SIMP(statut='f',typ='I',
+ fr="Niveau maximum de profondeur de raffinement",
+ ang="Maximum level for refinement"),
+ ) ,
+#
+ b_niveau_minimum =BLOC ( condition = " ( DERAFFINEMENT == 'LIBRE' ) or ( DERAFFINEMENT == 'UNIFORME' ) ",
+ NIVE_MIN =SIMP(statut='f',typ='I',
+ fr="Niveau minimum de déraffinement",
+ ang="Minimum level for unrefinement" ),
+ ) ,
+#
+# 3.3. Le suivi de frontiere eventuel :
+#
+ NOM_MED_MAILLAGE_FRONTIERE =SIMP(statut='f',typ='TXM',
+ fr="Nom MED du maillage de la frontiere à suivre",
+ ang="MED name of the boundary mesh" ),
+#
+ b_frontiere_1 =BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="Groupes définissant la frontière",
+ ang="Groups which define the boundary" ),
+ ) ,
+ fichier_frontiere=BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
+ FIC_FRON = SIMP(statut='f',typ='TXM',
+ fr="Nom du fichier MED contenant le maillage frontiere",
+ ang="MED File including the boundary mesh" ),
+ ),
+#
+ ),
+#
+# 4. L'ANALYSE DU MAILLAGE
+#
+ ANALYSE =FACT(statut='f',
+ fr="Analyse du maillage.",
+ ang="Mesh analysis.",
+#
+# 5 CHOIX NON EXCLUSIFS, AVEC DEUX VARIANTES (OUI/NON) :
+# A. NOMBRE DES ELEMENTS
+# B. QUALITE DES ELEMENTS
+# C. INTERPENETRATION DES ELEMENTS
+# D. CONNEXITE DU MAILLAGE
+# E. TAILLE DES DIFFERENTS SOUS-DOMAINES
+#
+ regles=(AU_MOINS_UN('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'),),
+#
+ NOMBRE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Nombre de noeuds et éléments du maillage",
+ ang="Number of nodes and elements in the mesh" ),
+#
+ QUALITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Qualité du maillage",
+ ang="Mesh quality" ),
+#
+ INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Controle de la non interpénétration des éléments.",
+ ang="Overlapping checking." ),
+#
+ CONNEXITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Connexité du maillage.",
+ ang="Mesh connexity." ),
+#
+ TAILLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Tailles des sous-domaines du maillage.",
+ ang="Sizes of mesh sub-domains." ),
+#
+ ),
+#
+) ;