--- /dev/null
+#@ MODIF creation_donnees_homard Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE MCOURTOI M.COURTOIS
+__all__ = [ ]
+"""
+Cette classe crée le fichier de configuration permettant de lancer HOMARD depuis Code_Aster.
+"""
+__revision__ = "V1.0"
+
+import os
+import os.path
+
+try:
+ from Utilitai.Utmess import UTMESS
+except ImportError:
+ def UTMESS(code, sprg, texte) :
+ """Clone de utmess si on ne reussit pas à le charger
+ """
+ fmt = '\n <%s> <%s> %s\n\n'
+ print fmt % (code, sprg, texte)
+
+# ------------------------------------------------------------------------------
+class creation_donnees_homard:
+ """Cette classe crée les données permettant de lancer HOMARD depuis Code_Aster.
+ Ce sont :
+ . le fichier de configuration
+ . le fichier des données dans le cas d'information
+
+ Arguments (stockés en tant qu'attribut) :
+ . nom_macro : nom de la macro-commande qui appelle :
+ 'MACR_ADAP_MAIL' pour une adaptation
+ 'MACR_INFO_MAIL' pour une information sur un maillage
+ . mots_cles : mots-clés de la macro-commande
+ . dico_configuration : dictionnaire des options
+
+ Attributs :
+ . Nom_Fichier_Configuration : nom du fichier de configuration (immuable)
+ . Nom_Fichier_Donnees : nom du fichier de données (immuable)
+ . mode_homard : le mode pour filtrer ici ("ADAP" ou "INFO")
+ . ModeHOMA : le mode pour HOMARD (1 ou 2)
+ . mode_homard_texte : le mode d'utilisation, en francais ("ADAPTATION" ou "INFORMATION")
+ . elements_incompatibles : que faire des éléments incompatibles avec HOMARD
+ """
+# ------------------------------------------------------------------------------
+ def __init__(self, nom_macro, mots_cles, dico_configuration ) :
+ """Construction + valeurs par défaut des attributs
+ """
+#
+# 1. Vérification de la macro qui appelle
+#
+ d_aux = {}
+ d_aux["MACR_ADAP_MAIL"] = ( "ADAP", 1, "ADAPTATION" )
+ d_aux["MACR_INFO_MAIL"] = ( "INFO", 2, "INFORMATION" )
+ if d_aux.has_key(nom_macro) :
+ self.mode_homard = d_aux[nom_macro][0]
+ self.ModeHOMA = d_aux[nom_macro][1]
+ self.mode_homard_texte = d_aux[nom_macro][2]
+ else :
+ UTMESS("F", nom_macro, "Cette macro commande est inconnue.")
+#
+# 2. Données générales de cette initialisation
+#
+#gn for mot_cle in mots_cles.keys() :
+#gn print "mots_cles[", mot_cle, "] = ", mots_cles[mot_cle]
+#gn for mot_cle in dico_configuration.keys() :
+#gn print "dico_configuration[", mot_cle, "] = ", dico_configuration[mot_cle]
+#
+ self.nom_macro = nom_macro
+ self.mots_cles = mots_cles
+ self.dico_configuration = dico_configuration
+#
+# 3. Quel type de traitement des elemenst incompatibles
+#
+ if mots_cles.has_key("ELEMENTS_NON_HOMARD") :
+ d_aux = {}
+ d_aux["REFUSER"] = "TOUS"
+ d_aux["IGNORER"] = "IGNORE_QUAD"
+ self.elements_incompatibles = d_aux[mots_cles["ELEMENTS_NON_HOMARD"]]
+ else :
+ self.elements_incompatibles = None
+#
+# 4. Attributs immuables
+#
+ self.Nom_Fichier_Configuration = "HOMARD.Configuration"
+ self.Nom_Fichier_Donnees = "HOMARD.Donnees"
+#
+# ------------------------------------------------------------------------------
+ def int_to_str2 (self, entier) :
+ """
+ Transforme un entier compris entre 0 et 99 en une chaine sur deux caractères
+ """
+# print "\nArguments a l'entree de", __name__, ":", entier
+#
+ try:
+ la_chaine = '%02d' % entier
+ except TypeError:
+ la_chaine = None
+#
+ return la_chaine
+# ------------------------------------------------------------------------------
+ def quel_mode (self) :
+ """Informe sur le mode de lancement de HOMARD
+ """
+### print self.mode_homard_texte
+ print "Lancement de creation_donnees_homard en mode", self.mode_homard_texte
+ return
+# ------------------------------------------------------------------------------
+ def creation_configuration (self) :
+ """Crée les données nécessaires à la configuration
+ """
+#
+ message_erreur = None
+#
+ while message_erreur is None :
+#
+# 1. Les chaines liées aux numéros d'itération
+#
+ if self.mode_homard == "ADAP" :
+ niter = self.dico_configuration["niter"]
+ self.str_niter = self.int_to_str2 (niter)
+ self.str_niterp1 = self.int_to_str2 (niter+1)
+ self.niter_vers_niterp1 = self.str_niter + ".vers." + self.str_niterp1
+#
+# 2. La liste standard
+#
+ if self.mode_homard == "INFO" :
+ aux = "Liste.info"
+ else :
+ aux = "Liste." + self.niter_vers_niterp1
+ self.ListeStd = aux
+#
+# 3. Le type de bilan : il faut convertir la donnée textuelle en un entier,
+# produit de nombres premiers.
+# Si rien n'est demandé, on met 0.
+#
+ aux = 1
+ dico_aux = {}
+ dico_aux["INTERPENETRATION"] = 3
+ dico_aux["NOMBRE"] = 7
+ dico_aux["QUALITE"] = 5
+ dico_aux["CONNEXITE"] = 11
+ dico_aux["TAILLE"] = 13
+ l_aux = dico_aux.keys()
+ for choix in l_aux :
+ if self.mots_cles.has_key(choix) :
+ if self.mots_cles[choix] == "OUI" :
+ aux = aux * dico_aux[choix]
+ if aux == 1 :
+ aux = 0
+ self.TypeBila = aux
+#
+# 4. Les entrées/sorties au format MED
+#
+ self.CCNoMN__ = self.dico_configuration["NOM_MED_MAILLAGE_N"]
+ if self.mode_homard == "ADAP" :
+ self.CCNoMNP1 = self.dico_configuration["NOM_MED_MAILLAGE_NP1"]
+ if self.dico_configuration.has_key("NOM_MED_MAILLAGE_NP1_ANNEXE") :
+ self.CCMaiAnn = self.dico_configuration["NOM_MED_MAILLAGE_NP1_ANNEXE"]
+#
+# 5. Les entrées/sorties au format HOMARD
+#
+ if self.mode_homard == "ADAP" :
+ self.fic_homard_niter = "M_" + self.str_niter + ".hom"
+ self.fic_homard_niterp1 = "M_" + self.str_niterp1 + ".hom"
+ else :
+ self.fic_homard_niter = None
+#
+# 6.1. Le pilotage de l'adaptation
+#
+ if self.mode_homard == "ADAP" :
+#
+# 6.1. Le type d'adaptation
+#
+ if self.mots_cles["ADAPTATION"] == "RAFFINEMENT" or self.mots_cles["ADAPTATION"] == "RAFFINEMENT_ZONE" :
+ self.TypeRaff = "libre"
+ self.TypeDera = "non"
+ elif self.mots_cles["ADAPTATION"] == "DERAFFINEMENT" :
+ self.TypeRaff = "non"
+ self.TypeDera = "libre"
+ elif self.mots_cles["ADAPTATION"] == "RAFF_DERA" :
+ self.TypeRaff = "libre"
+ self.TypeDera = "libre"
+ elif self.mots_cles["ADAPTATION"] == "RAFFINEMENT_UNIFORME" :
+ self.TypeRaff = "uniforme"
+ self.TypeDera = "non"
+ elif self.mots_cles["ADAPTATION"] == "DERAFFINEMENT_UNIFORME" :
+ self.TypeRaff = "non"
+ self.TypeDera = "uniforme"
+ elif self.mots_cles["ADAPTATION"] == "RIEN" :
+ self.TypeRaff = "non"
+ self.TypeDera = "non"
+#gn print "... self.TypeRaff = ",self.TypeRaff
+#gn print "... self.TypeDera = ",self.TypeDera
+#
+# 6.2. L'éventuel seuil de raffinement
+#
+ if self.TypeRaff == "libre" and self.mots_cles["ADAPTATION"] != "RAFFINEMENT_ZONE" :
+ d_aux = {}
+ d_aux["CRIT_RAFF_ABS"] = ("SeuilHau", 1)
+ d_aux["CRIT_RAFF_REL"] = ("SeuilHRe", 100)
+ d_aux["CRIT_RAFF_PE" ] = ("SeuilHPE", 100)
+ l_aux = d_aux.keys()
+ for mot_cle in l_aux :
+ if self.mots_cles[mot_cle] is not None :
+ aux = self.mots_cles[mot_cle]*d_aux[mot_cle][1]
+ self.critere_raffinement = (d_aux[mot_cle][0], aux)
+ else :
+ self.critere_raffinement = None
+#gn print "... self.critere_raffinement = ", self.critere_raffinement
+#
+# 6.3. L'éventuel seuil de déraffinement
+#
+ if self.TypeDera == "libre" :
+ d_aux = {}
+ d_aux["CRIT_DERA_ABS"] = ("SeuilBas", 1)
+ d_aux["CRIT_DERA_REL"] = ("SeuilBRe", 100)
+ d_aux["CRIT_DERA_PE" ] = ("SeuilBPE", 100)
+ l_aux = d_aux.keys()
+ for mot_cle in l_aux :
+ if self.mots_cles[mot_cle] is not None :
+ aux = self.mots_cles[mot_cle]*d_aux[mot_cle][1]
+ self.critere_deraffinement = (d_aux[mot_cle][0], aux)
+ else :
+ self.critere_deraffinement = None
+#gn print "... self.critere_deraffinement = ", self.critere_deraffinement
+#
+# 6.4. Les niveaux extremes
+#
+ self.niveau = []
+ for mot_cle in [ "NIVE_MIN", "NIVE_MAX" ] :
+ if self.mots_cles.has_key(mot_cle) :
+ if self.mots_cles[mot_cle] is not None :
+ if mot_cle == "NIVE_MIN" :
+ aux = "NiveauMi"
+ else :
+ aux = "NiveauMa"
+ self.niveau.append((aux, self.mots_cles[mot_cle]))
+ if len(self.niveau) == 2 :
+#gn print self.mots_cles["NIVE_MIN"]
+#gn print self.mots_cles["NIVE_MAX"]
+ if self.mots_cles["NIVE_MIN"] >= self.mots_cles["NIVE_MAX"] :
+ message_erreur = "Le niveau mini ,"+str(self.mots_cles["NIVE_MIN"])+\
+ ", doit etre < au niveau maxi, "+str(self.mots_cles["NIVE_MAX"])+"."
+ break
+#
+# 6.5. Les éventuelles zones de raffinement
+#
+ if self.dico_configuration.has_key("Zones") :
+ iaux = 0
+ for zone in self.dico_configuration["Zones"] :
+ iaux = iaux + 1
+ s_aux_1 = "Zone numero "+str(iaux)+" : "
+ s_aux_2 = ", doit etre < au "
+ if zone.has_key("X_MINI") :
+ if zone["X_MINI"] >= zone["X_MAXI"] :
+ message_erreur = s_aux_1+"X mini ,"+str(zone["X_MINI"])+s_aux_2+"X maxi, "+str(zone["X_MAXI"])+"."
+ if zone["Y_MINI"] >= zone["Y_MAXI"] :
+ message_erreur = s_aux_1+"Y mini ,"+str(zone["Y_MINI"])+s_aux_2+"Y maxi, "+str(zone["Y_MAXI"])+"."
+ if zone.has_key("Z_MINI") :
+ if zone["Z_MINI"] >= zone["Z_MAXI"] :
+ message_erreur = s_aux_1+"Z mini ,"+str(zone["Z_MINI"])+s_aux_2+"Z maxi, "+str(zone["Z_MAXI"])+"."
+#
+ break
+#
+ if message_erreur is not None :
+ UTMESS("F", self.nom_macro, message_erreur)
+#
+ return self.fic_homard_niter
+# ------------------------------------------------------------------------------
+ def ouvre_fichier (self, nomfic_local) :
+ """Ouvre en écriture un fichier après l'avoir éventuellement détruit
+ """
+ codret_partiel = [0]
+### print nomfic_local
+ Rep_Calc_HOMARD_global = self.dico_configuration["Rep_Calc_HOMARD_global"]
+ nomfic = os.path.join ( Rep_Calc_HOMARD_global , nomfic_local )
+#
+ if os.path.isfile (nomfic) :
+ try :
+ os.remove (nomfic)
+ except os.error, codret_partiel :
+ print "Probleme au remove, erreur numéro ", codret_partiel[0], ":", codret_partiel[1]
+ UTMESS("F", self.nom_macro, "Impossible de tuer le fichier "+nomfic)
+#
+ fichier = open (nomfic,"w")
+ self.fichier = fichier
+#
+ return fichier, nomfic
+# ------------------------------------------------------------------------------
+ def ecrire_ligne_configuration_0 (self, commentaire) :
+ """Ecrit une ligne de commentaires du fichier de configuration
+ Arguments :
+ . commentaire : le commentaire à écrire
+ """
+#
+ ligne = "#\n"
+ ligne = ligne + "# " + commentaire + "\n"
+ ligne = ligne + "#\n"
+ self.fichier.write(ligne)
+#
+ return
+# ------------------------------------------------------------------------------
+ def ecrire_ligne_configuration_2 (self, motcle, valeur) :
+ """Ecrit une ligne du fichier de configuration dans le cas : motcle + valeur
+ Arguments :
+ . motcle : le mot-clé HOMARD à écrire
+ . valeur : la valeur associée
+ """
+#
+ ligne = motcle + " " + str(valeur) + "\n"
+ self.fichier.write(ligne)
+#
+ return
+# ------------------------------------------------------------------------------
+ def ecrire_ligne_configuration_3 (self, motcle, valeur1, valeur2) :
+ """Ecrit une ligne du fichier de configuration dans le cas : motcle + valeur1 + valeur2
+ Arguments :
+ . motcle : le mot-clé HOMARD à écrire
+ . valeur : la valeur associée
+ """
+#
+ ligne = motcle + " " + str(valeur1) + " " + str(valeur2) + "\n"
+ self.fichier.write(ligne)
+#
+ return
+# ------------------------------------------------------------------------------
+ def ecrire_fichier_configuration (self) :
+ """Ecrit le fichier de configuration
+ """
+ message_erreur = None
+#
+ while message_erreur is None :
+#
+# 1. Ouverture du fichier
+#
+ fichier, nomfic_global = self.ouvre_fichier(self.Nom_Fichier_Configuration)
+#
+# 2. Généralités
+#
+ self.ecrire_ligne_configuration_0("Generalites")
+ self.ecrire_ligne_configuration_2("ModeHOMA", self.ModeHOMA)
+ self.ecrire_ligne_configuration_2("ListeStd", self.ListeStd)
+ self.ecrire_ligne_configuration_2("TypeBila", self.TypeBila)
+ self.ecrire_ligne_configuration_2("CCAssoci", "MED")
+ self.ecrire_ligne_configuration_2("NumeIter", self.dico_configuration["niter"])
+#
+# 3. Les fichiers externes
+#
+ self.ecrire_ligne_configuration_0("Les fichiers au format MED")
+ self.ecrire_ligne_configuration_2("CCNoMN__", self.CCNoMN__)
+ self.ecrire_ligne_configuration_2("CCMaiN__", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
+ if self.mode_homard == "ADAP" :
+ self.ecrire_ligne_configuration_2("CCNoMNP1", self.CCNoMNP1)
+ self.ecrire_ligne_configuration_2("CCMaiNP1", self.dico_configuration["Fichier_HOMARD_vers_ASTER"])
+#
+ self.ecrire_ligne_configuration_0("Les fichiers de bilan")
+ self.ecrire_ligne_configuration_2("PPBasFic", "info")
+#
+# 4. Les fichiers HOMARD
+#
+ self.ecrire_ligne_configuration_0("Les fichiers au format HOMARD")
+ if self.mode_homard == "ADAP" :
+ self.ecrire_ligne_configuration_3("HOMaiN__", "M_"+self.str_niter , self.fic_homard_niter )
+ self.ecrire_ligne_configuration_3("HOMaiNP1", "M_"+self.str_niterp1, self.fic_homard_niterp1)
+ aux = "oui"
+ else :
+ aux = "non"
+ self.ecrire_ligne_configuration_2("EcriFiHO", aux)
+#
+# 5. Le pilotage de l'adaptation
+#
+ if self.mode_homard == "ADAP" :
+ self.ecrire_ligne_configuration_0("Le pilotage de l'adaptation")
+#
+# 5.1. Type d'adaptation
+#
+ self.ecrire_ligne_configuration_2("TypeRaff", self.TypeRaff)
+ if self.critere_raffinement is not None :
+ self.ecrire_ligne_configuration_2(self.critere_raffinement[0], self.critere_raffinement[1])
+ self.ecrire_ligne_configuration_2("TypeDera", self.TypeDera)
+ if self.critere_deraffinement is not None :
+ self.ecrire_ligne_configuration_2(self.critere_deraffinement[0], self.critere_deraffinement[1])
+#
+# 5.2. L'eventuel indicateur d'erreur
+#
+ if self.dico_configuration.has_key("Indicateur") :
+#
+ self.ecrire_ligne_configuration_0("L'indicateur d'erreur")
+ self.ecrire_ligne_configuration_2("CCIndica", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
+ self.ecrire_ligne_configuration_2("CCNoChaI", self.dico_configuration["Indicateur"]["NOM_MED"])
+ self.ecrire_ligne_configuration_2("CCCoChaI", self.dico_configuration["Indicateur"]["COMPOSANTE"])
+ if self.dico_configuration["Indicateur"].has_key("NUME_ORDRE") :
+ self.ecrire_ligne_configuration_2("CCNumOrI", self.dico_configuration["Indicateur"]["NUME_ORDRE"])
+ self.ecrire_ligne_configuration_2("CCNumPTI", self.dico_configuration["Indicateur"]["NUME_ORDRE"])
+#
+# 5.3. Les niveaux extremes
+#
+ for aux in self.niveau :
+ self.ecrire_ligne_configuration_2(aux[0], aux[1])
+#
+# 6. Les éventuelles zones de raffinement
+#
+ if self.dico_configuration.has_key("Zones") :
+ iaux = 0
+ for zone in self.dico_configuration["Zones"] :
+ iaux = iaux + 1
+ self.ecrire_ligne_configuration_0("Zone de raffinement numéro "+str(iaux))
+ if zone.has_key("X_MINI") :
+ self.ecrire_ligne_configuration_3("ZoRaXmin", iaux, zone["X_MINI"])
+ self.ecrire_ligne_configuration_3("ZoRaXmax", iaux, zone["X_MAXI"])
+ self.ecrire_ligne_configuration_3("ZoRaYmin", iaux, zone["Y_MINI"])
+ self.ecrire_ligne_configuration_3("ZoRaYmax", iaux, zone["Y_MAXI"])
+ if zone.has_key("Z_MINI") :
+ self.ecrire_ligne_configuration_3("ZoRaZmin", iaux, zone["Z_MINI"])
+ self.ecrire_ligne_configuration_3("ZoRaZmax", iaux, zone["Z_MAXI"])
+ if zone.has_key("X_CENTRE") :
+ self.ecrire_ligne_configuration_3("ZoRaXCen", iaux, zone["X_CENTRE"])
+ self.ecrire_ligne_configuration_3("ZoRaYCen", iaux, zone["Y_CENTRE"])
+ self.ecrire_ligne_configuration_3("ZoRaRayo", iaux, zone["RAYON"])
+ if zone.has_key("Z_CENTRE") :
+ self.ecrire_ligne_configuration_3("ZoRaZCen", iaux, zone["Z_CENTRE"])
+#
+# 7. Les éventuels champs à mettre à jour
+#
+ if self.dico_configuration.has_key("Champs") :
+ self.ecrire_ligne_configuration_0("Champs à mettre à jour")
+ self.ecrire_ligne_configuration_2("CCSolN__", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
+ self.ecrire_ligne_configuration_2("CCSolNP1", self.dico_configuration["Fichier_HOMARD_vers_ASTER"])
+ iaux = 0
+ for maj_champ in self.dico_configuration["Champs"] :
+ iaux = iaux + 1
+ self.ecrire_ligne_configuration_0("Mise à jour du champ numéro "+str(iaux))
+ self.ecrire_ligne_configuration_3("CCChaNom", iaux, maj_champ["NOM_MED"])
+ if maj_champ.has_key("NUME_ORDRE") :
+ self.ecrire_ligne_configuration_3("CCChaNuO", iaux, maj_champ["NUME_ORDRE"])
+ self.ecrire_ligne_configuration_3("CCChaPdT", iaux, maj_champ["NUME_ORDRE"])
+ elif maj_champ.has_key("INST") :
+ self.ecrire_ligne_configuration_3("CCChaIns", iaux, maj_champ["INST"])
+#
+# 8. L'éventuel maillage de frontière
+#
+ if self.dico_configuration.has_key("NOM_MED_MAILLAGE_FRONTIERE") :
+ self.ecrire_ligne_configuration_0("Maillage de frontière")
+ self.ecrire_ligne_configuration_2("SuivFron", "oui")
+ self.ecrire_ligne_configuration_2("CCFronti", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
+ self.ecrire_ligne_configuration_2("CCNoMFro", self.dico_configuration["NOM_MED_MAILLAGE_FRONTIERE"])
+ if self.mots_cles.has_key("GROUP_MA") :
+ if self.mots_cles["GROUP_MA"] is not None :
+ for group_ma in self.mots_cles["GROUP_MA"] :
+ self.ecrire_ligne_configuration_2("CCGroFro", group_ma)
+#
+# 9. L'usage des éléments incompatibles avec HOMARD
+#
+ if self.elements_incompatibles is not None :
+ self.ecrire_ligne_configuration_0("Les éléments incompatibles avec HOMARD")
+ self.ecrire_ligne_configuration_2("TypeElem", self.elements_incompatibles)
+#
+# 10. Options particulières
+#
+ self.ecrire_ligne_configuration_0("Autres options")
+ if self.mots_cles.has_key("LANGUE") :
+ self.ecrire_ligne_configuration_2("Langue", self.mots_cles["LANGUE"])
+ self.ecrire_ligne_configuration_2("MessInfo", self.dico_configuration["INFO"])
+ if self.dico_configuration["version_perso"] :
+ VERSION_HOMARD = self.dico_configuration["VERSION_HOMARD"]
+ self.ecrire_ligne_configuration_2("DicoOSGM", "$HOMARD_USER/"+VERSION_HOMARD+"/CONFIG/typobj.stu")
+#
+# 11. Fermeture du fichier
+#
+ fichier.close()
+ break
+#
+ if message_erreur is not None :
+ message_erreur = "Ecriture de "+nomfic_global+". "+message_erreur
+ UTMESS("F", self.nom_macro, message_erreur)
+#
+ return
+# ------------------------------------------------------------------------------
+ def ecrire_fichier_donnees (self) :
+ """Ecrit le fichier des donnees dans le cas d'une demande d'information
+ """
+ message_erreur = None
+#
+ while message_erreur is None :
+#
+# 1. Ouverture du fichier
+#
+ fichier, nomfic_global = self.ouvre_fichier(self.Nom_Fichier_Donnees)
+#
+# 2. On ne demande rien pour le moment
+#
+ fichier.write("0\n")
+ fichier.write("0\n")
+ fichier.write("0\n")
+ fichier.write("q\n")
+#
+# n. Fermeture du fichier
+#
+ fichier.close()
+ break
+#
+ if message_erreur is not None :
+ UTMESS("F", self.nom_macro, message_erreur)
+#
+ return nomfic_global
-#@ MODIF macr_adap_mail_ops Macro DATE 04/07/2005 AUTEUR GNICOLAS G.NICOLAS
+#@ MODIF macr_adap_mail_ops Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# RESPONSABLE GNICOLAS G.NICOLAS
#
def macr_adap_mail_ops ( self,
- INFO, VERSION_HOMARD, LANGUE,
- NOMBRE, QUALITE, CONNEXITE, TAILLE, INTERPENETRATION,
- NON_SIMPLEXE, MAILLAGE_FRONTIERE,
+ INFO, VERSION_HOMARD, MAILLAGE_FRONTIERE,
**args):
"""
- Ecriture des macros MACR_ADAP_MAIL/MACR_INFO_MAIL
- Remarque : on ne mentionne explicitement que les mots-clés communs aux
- deux macros. Les autres sont dans le dictionnaire args
+ Traitement des macros MACR_ADAP_MAIL/MACR_INFO_MAIL
"""
#
# 1. args est le dictionnaire des arguments
# dictionnaires que de maillages manipulés. L'ensemble de ces dictionnaires est conservé
# dans la liste Liste_Maillages.
# Description du dictionnaire de maillages :
-# dico["Type_Maillage"] = o ; string ; "MAILLAGE_N", "MAILLAGE_NP1" ou "MAILLAGE_FRONTIERE"
+# dico["Type_Maillage"] = o ; string ; "MAILLAGE_N", "MAILLAGE_NP1", "MAILLAGE_NP1_ANNEXE" ou "MAILLAGE_FRONTIERE"
# dico["Nom_ASTER"] = o ; concept ASTER associé
# dico["Action"] = o ; string ; "A_ecrire" ou "A_lire"
# dico["NOM_MED"] = o ; string ; Nom MED du maillage
# dico["NOM_MED"] = o ; string ; Nom MED du champ
#
from Accas import _F
+ from Macro import creation_donnees_homard
+ from Utilitai.Utmess import UTMESS
import aster
import string
- import types
import os
- import shutil
+#gn import shutil
#
global Liste_Passages
#
-#--------------------------------------------------------------------
+#====================================================================
# 1. Préalables
-#--------------------------------------------------------------------
+#====================================================================
#
# 1.1. ==> La macro compte pour 1 dans la numerotation des commandes
#
except :
self.jdc.indice_macro_homard = 1
Liste_Passages = []
- Numero_Passage_Fonction = self.jdc.indice_macro_homard
-### print "Numero_Passage_Fonction = ",Numero_Passage_Fonction
+ numero_passage_fonction = self.jdc.indice_macro_homard
+### print "numero_passage_fonction = ",numero_passage_fonction
#
# 1.3. ==> On importe les definitions des commandes a utiliser dans la macro
#
DEFI_FICHIER = self.get_cmd("DEFI_FICHIER")
IMPR_RESU = self.get_cmd("IMPR_RESU")
EXEC_LOGICIEL = self.get_cmd("EXEC_LOGICIEL")
- IMPR_FICO_HOMA = self.get_cmd("IMPR_FICO_HOMA")
LIRE_MAILLAGE = self.get_cmd("LIRE_MAILLAGE")
LIRE_CHAMP = self.get_cmd("LIRE_CHAMP")
- DETRUIRE = self.get_cmd('DETRUIRE')
#
# 1.4. ==> Le nom du programme HOMARD à lancer
#
#
# 1.5. ==> Initialisations
#
- codret = 0
codret_partiel = [0]
Rep_Calc_ASTER = os.getcwd()
#
Liste_Maillages = []
Liste_Champs = []
+ Liste_Zones = []
dico_indi = {}
#
- ADAPTATION = None
- MAJ_CHAM = None
+ LISTE_ADAPTATION_LIBRE = ("RAFF_DERA" , "RAFFINEMENT" , "DERAFFINEMENT")
#
- unite = 71
-#
-#--------------------------------------------------------------------
+#====================================================================
# 2. Décodage des arguments de la macro-commande
-#--------------------------------------------------------------------
+#====================================================================
# 2.1. ==> Données de pilotage de l'adaptation
#
if ( self.nom == "MACR_ADAP_MAIL" ) :
#
- modhom = "ADAP"
-#
- ADAPTATION = args["ADAPTATION"]
- if args.has_key("MAJ_CHAM") :
- MAJ_CHAM = args["MAJ_CHAM"]
+ mode_homard = "ADAP"
#
# 2.1.1. ==> Les concepts "maillage"
#
- for mot_cle in ["MAILLAGE_N","MAILLAGE_NP1"] :
+#gn print "\n.. Debut de 2.1.1"
+# for mot_cle in ["MAILLAGE_N" , "MAILLAGE_NP1"] :
+ for mot_cle in ["MAILLAGE_N" , "MAILLAGE_NP1" , "MAILLAGE_NP1_ANNEXE"] :
+#gn print "\nmot_cle = ",mot_cle
dico = {}
dico["Type_Maillage"] = mot_cle
- dico["Nom_ASTER"] = ADAPTATION[mot_cle]
- if ( mot_cle == "MAILLAGE_N" ) :
- dico["Action"] = "A_ecrire"
+ if ( args[mot_cle] != None ) :
+#gn print "==> args[",mot_cle,"] = ",args[mot_cle]
+ dico["Nom_ASTER"] = args[mot_cle]
+ if ( mot_cle == "MAILLAGE_N" ) :
+ dico["Action"] = "A_ecrire"
+ else :
+ dico["Action"] = "A_lire"
else :
- dico["Action"] = "A_lire"
+ dico["Action"] = "Rien"
+#gn print "dico = ",dico
Liste_Maillages.append(dico)
#
# 2.1.2. ==> L'éventuel indicateur d'erreur
#
- if ADAPTATION["LIBRE"] != None :
+#gn print "\n.. Debut de 2.1.2"
+ if args["ADAPTATION"] in LISTE_ADAPTATION_LIBRE :
dico = {}
dico["Type_Champ"] = "INDICATEUR"
- if ( ADAPTATION["RESULTAT_N"] != None ) :
+ if ( args["RESULTAT_N"] != None ) :
lresu = 1
- dico["RESULTAT"] = ADAPTATION["RESULTAT_N"]
+ dico["RESULTAT"] = args["RESULTAT_N"]
noresu = dico["RESULTAT"].nom
- dico["NOM_CHAM"] = ADAPTATION["INDICATEUR"]
+ dico["NOM_CHAM"] = args["INDICATEUR"]
nomsym = dico["NOM_CHAM"]
- if ( ADAPTATION["NUME_ORDRE"] != None ) :
- dico["NUME_ORDRE"] = ADAPTATION["NUME_ORDRE"]
- if ( ADAPTATION["INST"] != None ) :
- dico["INST"] = ADAPTATION["INST"]
+ if ( args["NUME_ORDRE"] != None ) :
+ dico["NUME_ORDRE"] = args["NUME_ORDRE"]
+ if ( args["INST"] != None ) :
+ dico["INST"] = args["INST"]
for cle in [ "PRECISION", "CRITERE" ] :
- if ( ADAPTATION[cle] != None ) :
- dico[cle] = ADAPTATION[cle]
+ if ( args[cle] != None ) :
+ dico[cle] = args[cle]
else :
lresu = 0
- dico["CHAM_GD"] = ADAPTATION["CHAM_GD"]
+ dico["CHAM_GD"] = args["CHAM_GD"]
noresu = dico["CHAM_GD"].nom
nomsym = " "
nopase = " "
### print "Avant appel a aster.mdnoch, lresu = ",lresu,", noresu =", noresu ,", nomsym = ", nomsym ,", nopase = ", nopase
dico["NOM_MED"] = aster.mdnoch ( lresu, noresu, nomsym, nopase )
### print "dico[\"NOM_MED\"] = ", dico["NOM_MED"]
- dico["COMPOSANTE"] = ADAPTATION["NOM_CMP_INDICA"]
+ dico["COMPOSANTE"] = args["NOM_CMP_INDICA"]
Liste_Champs.append(dico)
dico_indi = dico
### print dico
#
# 2.1.3. ==> Les champs à mettre à jour
#
-### print ".. Debut de 2.1.3."
+#gn print "\n.. Debut de 2.1.3."
+#
+ if args.has_key("MAJ_CHAM") :
#
- if ( MAJ_CHAM != None ) :
+ if args["MAJ_CHAM"] is None :
+ les_champs = []
+ else :
+ les_champs = args["MAJ_CHAM"]
#
- for maj_cham in MAJ_CHAM :
-### print maj_cham
+ for maj_cham in les_champs :
+#gn print maj_cham
+#gn print type(maj_cham)
#
dico = {}
dico["Type_Champ"] = "CHAMP_MAJ"
### print dico
Liste_Champs.append(dico)
#
+# 2.1.4. ==> Les zones de raffinement
+#
+### print "\n.. Debut de 2.1.4."
+#
+ if args.has_key("ZONE") :
+#
+ if args["ZONE"] is None :
+ les_zones = []
+ else :
+ les_zones = args["ZONE"]
+#
+ for zone in les_zones :
+### print zone
+### print type(zone)
+ dico = {}
+ for aux in ['X_MINI','X_MAXI','Y_MINI','Y_MAXI','Z_MINI','Z_MAXI','X_CENTRE','Y_CENTRE','Z_CENTRE','RAYON'] :
+ if ( zone[aux] != None ) :
+ dico[aux] = zone[aux]
+### print dico
+ Liste_Zones.append(dico)
+#
+### print Liste_Zones
+#
# 2.2. ==> Données de pilotage de l'information
#
else :
#
- modhom = "INFO"
+ mode_homard = "INFO"
#
dico = {}
dico["Type_Maillage"] = "MAILLAGE_N"
#
# 2.3. ==> Suivi de frontière
#
-### print ".. Debut de 2.3."
+#gn print "\n.. Debut de 2.3."
#
if ( MAILLAGE_FRONTIERE != None ) :
#
dico["Action"] = "A_ecrire"
Liste_Maillages.append(dico)
#
-#--------------------------------------------------------------------
+# 2.4. ==> Le numéro de version de HOMARD
+# Remarque : dans la donnée de la version de HOMARD, il faut remplacer
+# le _ de la donnee par un ., qui est interdit dans la
+# syntaxe du langage de commandes ASTER
+# Remarque : il faut remplacer le N majuscule de la donnee par
+# un n minuscule, qui est interdit dans la syntaxe du langage
+# de commandes ASTER
+#
+#gn print "\n.. Debut de 2.4. avec VERSION_HOMARD = ", VERSION_HOMARD
+ VERSION_HOMARD = string.replace(VERSION_HOMARD,"_" , ".")
+ VERSION_HOMARD = string.replace(VERSION_HOMARD,"N" , "n")
+#
+ if ( VERSION_HOMARD[-6:]==".PERSO" ):
+ VERSION_HOMARD = VERSION_HOMARD[:-6]
+ version_perso = 1
+ else :
+ version_perso = 0
+#gn print ".... VERSION_HOMARD = ", VERSION_HOMARD
+#gn print ".... version_perso = ", version_perso
+#
+#====================================================================
# 3. Préparation du lancement des commandes
-#--------------------------------------------------------------------
+#====================================================================
#
# 3.1. ==> . Elaboration des noms MED des concepts de maillage
# . Memorisation des noms ASTER du maillage en entrée et en sortie (sous forme string)
+#
# On crée une nouvelle liste des dictionnaires décrivant les maillages
# et à la fin on écrase l'ancienne liste par cette nouvelle.
#
-### print ".. Debut de 3.1."
+#gn print "\n.. Debut de 3.1."
#
- L = []
+ Nom_Concept_Maillage_NP1_ANNEXE = None
+ l_aux = []
for dico in Liste_Maillages :
- dico["NOM_MED"] = aster.mdnoma(dico["Nom_ASTER"].nom)
- L.append(dico)
- if ( dico["Type_Maillage"] == "MAILLAGE_N" ) :
- Nom_Concept_Maillage_N = dico["Nom_ASTER"].nom
- elif ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) :
- Nom_Concept_Maillage_NP1 = dico["Nom_ASTER"].nom
- Liste_Maillages = L
+#gn print "\ndico avant = ",dico
+ if ( dico["Action"] != "Rien" ) :
+ dico["NOM_MED"] = aster.mdnoma(dico["Nom_ASTER"].nom)
+ l_aux.append(dico)
+ if ( dico["Type_Maillage"] == "MAILLAGE_N" ) :
+ Nom_Concept_Maillage_N = dico["Nom_ASTER"].nom
+ elif ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) :
+ Nom_Concept_Maillage_NP1 = dico["Nom_ASTER"].nom
+ elif ( dico["Type_Maillage"] == "MAILLAGE_NP1_ANNEXE" ) :
+ Nom_Concept_Maillage_NP1_ANNEXE = dico["Nom_ASTER"].nom
+#gn print "\ndico apres = ",dico
+ Liste_Maillages = l_aux
#
# 3.2. ==> Recherche du numéro d'itération et du répertoire de travail
#
# . le nom du répertoire de lancement de HOMARD est construit sur le nom
# du maillage en entrée et le numéro de passage dans la fonction
#
-### print ".. Debut de 3.2.1."
+#gn print "\.. Debut de 3.2.1."
#
niter = 0
- Nom_Rep_local = Nom_Concept_Maillage_N + "_" + modhom + "_" + str(Numero_Passage_Fonction)
- Rep_Calc_HOMARD_local = os.path.join(".",Nom_Rep_local)
- Rep_Calc_HOMARD_global = os.path.join(Rep_Calc_ASTER,Nom_Rep_local)
+ Nom_Rep_local = Nom_Concept_Maillage_N + "_" + mode_homard + "_" + str(numero_passage_fonction)
+ Rep_Calc_HOMARD_local = os.path.join(".", Nom_Rep_local)
+ Rep_Calc_HOMARD_global = os.path.join(Rep_Calc_ASTER, Nom_Rep_local)
### print "Rep_Calc_HOMARD_local = ", Rep_Calc_HOMARD_local
### print "Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
#
-# 3.2.2. ==> En adaptation :
+# 3.2.2. ==> En adaptation : il faut repartir du répertoire de l'itération précédente
+#
+#gn print "\.. Debut de 3.2.2."
#
- if ( modhom == "ADAP" ) :
+ if ( mode_homard == "ADAP" ) :
#
# 3.2.2.1. ==> On recherche si dans les passages déjà effectués, il en existe un
# dont le maillage d'arrivée était l'actuel maillage d'entrée. Si c'est
# le cas, cela veut dire que l'adaptation en cours est la suite d'une
# précédente. On doit donc utiliser le meme répertoire. Le numéro
# d'itération est celui de l'adaptation précédente augmenté de 1.
+#
+#gn print "\.. Debut de 3.2.2.1."
#
for dico in Liste_Passages :
if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) :
#
# 3.2.2.2. ==> Memorisation de ce passage
#
+#gn print "\.. Debut de 3.2.2.2."
+#
# 3.2.2.2.1. ==> Enregistrement d'un nouveau cas de figure
#
if ( niter == 0 ) :
dico = {}
dico["Maillage_0"] = Nom_Concept_Maillage_N
dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1
+ dico["Maillage_NP1_ANNEXE"] = Nom_Concept_Maillage_NP1_ANNEXE
dico["Rep_Calc_HOMARD_local"] = Rep_Calc_HOMARD_local
dico["Rep_Calc_HOMARD_global"] = Rep_Calc_HOMARD_global
dico["niter"] = niter
# 3.2.2.2.2. ==> Modification du cas en cours
#
else :
- L = []
+ l_aux = []
for dico in Liste_Passages :
if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) :
dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1
+ dico["Maillage_NP1_ANNEXE"] = Nom_Concept_Maillage_NP1_ANNEXE
dico["niter"] = niter
- L.append(dico)
- Liste_Passages = L
+ l_aux.append(dico)
+ Liste_Passages = l_aux
#
### print "niter = ", niter, ", Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
#
-#--------------------------------------------------------------------
-# 4. Ecriture des commandes
-#--------------------------------------------------------------------
+# 3.2.3. Création du répertoire pour homard
+# attention : on ne fait cette creation qu'une seule fois par cas
+# d'adaptation ou d'information
#
-# 4.1. ==> Création du répertoire pour homard
-# attention : on ne fait cette creation qu'une seule fois par cas
-# d'adaptation ou d'information
+#gn print "\.. Debut de 3.2.3."
#
if ( niter == 0 ) :
#
os.mkdir(Rep_Calc_HOMARD_global)
except os.error,codret_partiel :
self.cr.warn("Code d'erreur de mkdir : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Impossible de créer le répertoire de travail pour HOMARD : "+Rep_Calc_HOMARD_global)
- codret = codret + 1
+ UTMESS("F", self.nom, "Impossible de créer le répertoire de travail pour HOMARD : "+Rep_Calc_HOMARD_global)
+#
+#====================================================================
+# 4. Ecriture des commandes de creation des donnees MED
+#====================================================================
#
-# 4.2. ==> Ecriture des commandes de creation des donnees MED
+#gn print "\.. Debut de 4."
#
# On doit écrire : le maillage,
# le champ d'indicateur d'erreur
#
# Chacune de ces écritures est optionnelle selon le contexte.
#
- if ( INFO > 1 ) : infomail = "OUI"
- else : infomail = "NON"
-#
-# 4.2.1. ==> Noms des fichiers d'ASTER vers HOMARD et éventuellement de HOMARD vers ASTER
-# Remarque : aujourd'hui, les écritures ou les lectures au format MED se font obligatoirement sur
-# un fichier de nom fort.n, placé dans le répertoire de calcul
-# Dans le fichier de configuration, on donne comme nom MAILL.(niter).MED en entrée et
-# MAILL.(niter+1).MED en sortie (cf. adhc00)
-# Tant que les E/S MED n'ont pas évolué, on fait un lien pour assurer la cohérence.
+ if ( INFO > 1 ) :
+ infomail = "OUI"
+ else :
+ infomail = "NON"
#
-# 4.2.1.1. ==> D'ASTER vers HOMARD
+# 4.1. ==> Noms des fichiers d'ASTER vers HOMARD et éventuellement de HOMARD vers ASTER
+# Remarque : aujourd'hui, les écritures ou les lectures au format MED se font obligatoirement sur
+# un fichier de nom fort.n, placé dans le répertoire de calcul
+##
+# 4.1.1. ==> D'ASTER vers HOMARD
#
- Unite_Fichier_ASTER_vers_HOMARD = 1787 + 2*Numero_Passage_Fonction
+ Unite_Fichier_ASTER_vers_HOMARD = 1787 + 2*numero_passage_fonction
Fichier_ASTER_vers_HOMARD = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_ASTER_vers_HOMARD))
- Fichier_HOMARD_Entree = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".MED")
### print "Fichier_ASTER_vers_HOMARD = ",Fichier_ASTER_vers_HOMARD
-### print "Fichier_HOMARD_Entree = ",Fichier_HOMARD_Entree
- try :
- os.symlink(Fichier_ASTER_vers_HOMARD,Fichier_HOMARD_Entree)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de symlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Probleme au lien entre " + Fichier_ASTER_vers_HOMARD + " et " + Fichier_HOMARD_Entree)
- codret = codret + 1
#
-# 4.2.1.2. ==> De HOMARD vers ASTER
+# 4.1.2. ==> De HOMARD vers ASTER
#
- if ( modhom == "ADAP" ) :
+ if ( mode_homard == "ADAP" ) :
Unite_Fichier_HOMARD_vers_ASTER = Unite_Fichier_ASTER_vers_HOMARD + 1
Fichier_HOMARD_vers_ASTER = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_HOMARD_vers_ASTER))
- Fichier_HOMARD_Sortie = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter+1)+".MED")
### print "Fichier_HOMARD_vers_ASTER = ",Fichier_HOMARD_vers_ASTER
-### print "Fichier_HOMARD_Sortie = ",Fichier_HOMARD_Sortie
- try :
- os.symlink(Fichier_HOMARD_vers_ASTER,Fichier_HOMARD_Sortie)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de symlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Probleme au lien entre " + Fichier_HOMARD_vers_ASTER + " et " + Fichier_HOMARD_Sortie)
- codret = codret + 1
#
-# 4.2.2. La définition du fichier de ASTER vers HOMARD
+# 4.2. La définition du fichier de ASTER vers HOMARD
#
DEFI_FICHIER ( ACTION= "ASSOCIER",
UNITE = Unite_Fichier_ASTER_vers_HOMARD,
TYPE = "LIBRE",
INFO = INFO )
#
-# 4.2.3. Le(s) maillage(s)
+# 4.3. Le(s) maillage(s)
# Le maillage de calcul et l'éventuel maillage de la frontiere sont écrits
# dans le meme fichier MED
# En fait, on pourrait s'en passer au dela de la 1ère itération
#
for dico in Liste_Maillages :
if ( dico["Action"] == "A_ecrire" ) :
- motscsi={}
+ motscsi = {}
motscsi["MAILLAGE"] = dico["Nom_ASTER"]
- motscfa={}
- motscfa["RESU"]=_F( INFO_MAILLAGE=infomail,
+ motscfa = {}
+ motscfa["RESU"] = _F( INFO_MAILLAGE=infomail,
**motscsi )
#
IMPR_RESU ( INFO = INFO,
FORMAT ='MED', UNITE = Unite_Fichier_ASTER_vers_HOMARD,
**motscfa )
#
-# 4.2.4. Le(s) champ(s)
+# 4.4. Le(s) champ(s)
# Attention : il se peut que l'on demande la mise à jour du champ qui a servi comme
# indicateur d'erreur. Si c'est le cas, il ne faut pas demander son
# impression sinon il y a plantage d'IMPR_RESU qui ne sait pas substituer
# dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage
# dico["NOM_MED"] = o ; string ; Nom MED du champ
#
-# 4.2.4.1. Recherche d'un doublon éventuel sur le champ d'indicateur d'erreur
+# 4.4.1. Recherche d'un doublon éventuel sur le champ d'indicateur d'erreur
#
### print "dico_indi = ",dico_indi
if len(dico_indi) > 0 :
# Si le champ d'indicateur n'a toujours pas été repéré comme champ à mettre à jour :
if not indic_est_deja_imprime :
# Est-ce le meme champ ?
- ok = 1
+ on_a_le_champ = 1
for cle in Liste_aux :
if ( dico.has_key(cle) ) :
### print "...... dico_indi[cle] = ",dico_indi[cle]
### print "...... dico[cle] = ",dico[cle]
if ( dico_indi[cle] != dico[cle] ) :
- ok = 0
+ on_a_le_champ = 0
break
else :
- ok = 0
+ on_a_le_champ = 0
break
# Si oui, est-ce au meme moment ? (remarque : si rien n'est désigné, c'est qu'il n'y a qu'un
# seul instant ... donc c'est le meme ! En revanche, on ne sait pas comparer une donnée
# en numéro d'ordre et une donnée en instant. On croise les doigts.)
- if ok :
+ if on_a_le_champ :
for cle in [ "NUME_ORDRE", "INST" ] :
if dico.has_key(cle) :
if ( dico[cle] != None ) :
if dico_indi.has_key(cle) :
if ( dico_indi[cle] != dico[cle] ) :
- ok = 0
+ on_a_le_champ = 0
break
- if ok : indic_est_deja_imprime = 1
+ if on_a_le_champ :
+ indic_est_deja_imprime = 1
### print "\n\nFin de la boucle .. indic_est_deja_imprime = ",indic_est_deja_imprime
# Si le champ d'indicateur n'a pas été repéré comme champ à mettre à jour, il faut
# l'inclure dans les champs à imprimer
- if not indic_est_deja_imprime : Liste_Champs_imprime.append(dico_indi)
+ if not indic_est_deja_imprime :
+ Liste_Champs_imprime.append(dico_indi)
#
-# 4.2.4.2. Impressions après le filtrage précédent
-### print ".. Debut de 4.2.4.2."
+# 4.4.2. Impressions après le filtrage précédent
+#gn print "\n.... Debut de 4.2.4.2."
#
for dico in Liste_Champs_imprime :
- motscsi={}
+ motscsi = {}
for cle in [ "RESULTAT", "NOM_CHAM", "CHAM_GD", "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
if dico.has_key(cle) :
if ( dico[cle] != None ) :
motscsi[cle] = dico[cle]
if dico.has_key("COMPOSANTE") :
motscsi["NOM_CMP"] = dico["COMPOSANTE"]
- motscfa={}
- motscfa["RESU"]=_F( INFO_MAILLAGE=infomail,
+ motscfa = {}
+ motscfa["RESU"] = _F( INFO_MAILLAGE=infomail,
**motscsi
)
### print ".. motscfa = ",motscfa
FORMAT ='MED', UNITE = Unite_Fichier_ASTER_vers_HOMARD,
**motscfa )
#
-# 4.3. ==> Ecriture de la commande d'écriture des fichiers de données pour HOMARD
+#====================================================================
+# 5. ==> Création des fichiers de données pour HOMARD
+#====================================================================
#
- motscfa={}
-#
-# 4.3.1. ==> Le traitement
+#gn print "\.. Debut de 5."
#
- motscsi={}
+ dico_configuration = {}
#
-# 4.3.1.1. ==> Le type de traitement
+# 5.1. ==> Les généralités
#
- if ( modhom == "ADAP" ) :
- if ( ADAPTATION["UNIFORME"] != None ) :
- motscsi["UNIFORME"] = ADAPTATION["UNIFORME"]
- else :
- motscsi["ADAPTATION"] = ADAPTATION["LIBRE"]
- else :
- motscsi["INFORMATION"] = "OUI"
+ dico_configuration["INFO"] = INFO
#
-# 4.3.1.2. ==> Les noms med des maillages
+ dico_configuration["Rep_Calc_HOMARD_global"] = Rep_Calc_HOMARD_global
+ dico_configuration["VERSION_HOMARD"] = VERSION_HOMARD
+ dico_configuration["version_perso"] = version_perso
+#
+ dico_configuration["niter"] = niter
+ dico_configuration["Fichier_ASTER_vers_HOMARD"] = Fichier_ASTER_vers_HOMARD
+ if ( mode_homard == "ADAP" ) :
+ dico_configuration["Fichier_HOMARD_vers_ASTER"] = Fichier_HOMARD_vers_ASTER
+#
+# 5.2. ==> Les noms med des maillages
#
for dico in Liste_Maillages :
-### print "Nom MED de " + dico["Type_Maillage"] + " = " + dico["NOM_MED"]
- motscsi[ "NOM_MED_"+dico["Type_Maillage"] ] = dico["NOM_MED"]
+#gn print "Nom MED de " + dico["Type_Maillage"] + " = " + dico["NOM_MED"]
+ dico_configuration[ "NOM_MED_"+dico["Type_Maillage"] ] = dico["NOM_MED"]
#
-# 4.3.1.3. ==> Les caracteristiques de l'éventuel indicateur d'erreur
+# 5.3. ==> Les caracteristiques de l'éventuel indicateur d'erreur
#
for dico in Liste_Champs :
+ dico_aux = {}
if ( dico["Type_Champ"] == "INDICATEUR" ) :
Liste_aux = [ "NOM_MED", "COMPOSANTE" ]
if dico.has_key("NUME_ORDRE") :
Liste_aux.append("NUME_ORDRE")
- else :
- for cle in [ "RESULTAT", "NOM_CHAM", "INST", "PRECISION", "CRITERE" ] :
- Liste_aux.append(cle)
for cle in Liste_aux :
- if dico.has_key(cle) :
- if ( dico[cle] != None ) :
- motscsi[cle] = dico[cle]
+ if ( dico[cle] != None ) :
+ dico_aux[cle] = dico[cle]
+ dico_configuration["Indicateur"] = dico_aux
+#gn if dico_configuration.has_key("Indicateur") :
+#gn print "dico_configuration[Indicateur] = ", dico_configuration["Indicateur"]
#
-# 4.3.1.4. ==> Les critères de raffinement et les niveaux extremes
+# 5.4. ==> Les zones de raffinement
#
- if ( modhom == "ADAP" ) :
- Liste_aux = [ ]
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "RAFFINEMENT" ) :
- Liste_aux.append("CRIT_RAFF_ABS")
- Liste_aux.append("CRIT_RAFF_REL")
- Liste_aux.append("CRIT_RAFF_PE")
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "DERAFFINEMENT" ) :
- Liste_aux.append("CRIT_DERA_ABS")
- Liste_aux.append("CRIT_DERA_REL")
- Liste_aux.append("CRIT_DERA_PE")
- niveau = 0
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "RAFFINEMENT" or ADAPTATION["UNIFORME"] == "RAFFINEMENT" ) :
- Liste_aux.append("NIVE_MAX")
- niveau = niveau + 1
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "DERAFFINEMENT" or ADAPTATION["UNIFORME"] == "DERAFFINEMENT" ) :
- Liste_aux.append("NIVE_MIN")
- niveau = niveau + 2
- for mot_cle in Liste_aux :
- if ( ADAPTATION[mot_cle] != None ) :
- motscsi[mot_cle] = ADAPTATION[mot_cle]
-#
- if ( niveau == 2 ) :
- if ( ADAPTATION["NIVE_MIN"] > ADAPTATION["NIVE_MAX"] ) :
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Le niveau minimum doit etre inferieur au niveau maximum.")
- codret = codret + 1
-#
-# 4.3.1.5. ==> Numéro d'itération
-#
- if ( modhom == "ADAP" ) :
- motscsi["NITER"] = niter
-#
-# 4.3.1.6. ==> Suivi de la frontiere
-#
- if args.has_key("GROUP_MA") :
- if ( args["GROUP_MA"] != None ) :
- motscsi["GROUP_MA"] = args["GROUP_MA"]
-#
-# 4.3.1.7. ==> Bilan
-#
- motscfa["TRAITEMENT"] = _F(**motscsi)
-#
-# 4.3.2. ==> L'analyse
-#
- motscsi={}
- if ( NOMBRE != None ) : motscsi["NOMBRE" ] = NOMBRE
- if ( QUALITE != None ) : motscsi["QUALITE" ] = QUALITE
- if ( CONNEXITE != None ) : motscsi["CONNEXITE" ] = CONNEXITE
- if ( TAILLE != None ) : motscsi["TAILLE" ] = TAILLE
- if ( INTERPENETRATION != None ) : motscsi["INTERPENETRATION" ] = INTERPENETRATION
-#
- motscfa["ANALYSE"] = _F(**motscsi)
-#
-# 4.3.3. ==> La mise à jour de champs
+ prem = 1
+ for dico in Liste_Zones :
+ if prem :
+ l_aux = [dico]
+ prem = 0
+ else :
+ l_aux = dico_configuration["Zones"]
+ l_aux.append(dico)
+ dico_configuration["Zones"] = l_aux
+### if dico_configuration.has_key("Zones") :
+### print "dico_configuration[Zones] = ", dico_configuration["Zones"]
+#
+# 5.5. ==> La mise à jour de champs
#
prem = 1
for dico in Liste_Champs :
- motscsi={}
+ dico_aux = {}
if ( dico["Type_Champ"] == "CHAMP_MAJ" ) :
Liste_aux = [ "NOM_MED", "COMPOSANTE" ]
if dico.has_key("NUME_ORDRE") :
for cle in Liste_aux :
if dico.has_key(cle) :
if ( dico[cle] != None ) :
- motscsi[cle] = dico[cle]
-### print motscsi
+ dico_aux[cle] = dico[cle]
+#gn print dico_aux
if prem :
- motscfa["MAJ_CHAM"] = [_F(**motscsi),]
+ l_aux = [dico_aux]
prem = 0
else :
- motscfa["MAJ_CHAM"].append(_F(**motscsi))
-#
-# 4.3.4. ==> La commande
-#
-# 4.3.4.1. ==> Les fichiers annexes
-#
- dico = {}
-#
- Nom_Fichier_Configuration = "HOMARD.Configuration"
- Fichier_Configuration = os.path.join(Rep_Calc_HOMARD_global,Nom_Fichier_Configuration)
- dico[Fichier_Configuration] = ("HOMARD_CONFIG","UNITE_CONF",unite)
-#
- if ( modhom != "ADAP" ) :
- unite = unite + 1
- Nom_Fichier_Donnees = "HOMARD.Donnees"
- Fichier_Donnees = os.path.join(Rep_Calc_HOMARD_global,Nom_Fichier_Donnees)
-# 1234567890123456
- dico[Fichier_Donnees] = ("HOMARD_DONN","UNITE_DONN",unite)
-#
-# 4.3.4.2. ==> L'ouverture de ces fichiers
-#
- for fic in dico.keys() :
- DEFI_FICHIER ( ACTION= "ASSOCIER", FICHIER = fic, UNITE = dico[fic][2],
- TYPE = "ASCII", ACCES = "NEW", INFO = INFO )
- motscfa[dico[fic][1]] = dico[fic][2]
-#
-# 4.3.4.3. ==> Ecriture
-#
-### print motscfa
- IMPR_FICO_HOMA ( INFO=INFO, LANGUE = LANGUE, NON_SIMPLEXE = NON_SIMPLEXE, **motscfa )
-#
-### for fic in dico.keys() :
-### print "\nContenu de ", fic
-### fichier = open (fic,"r")
-### les_lignes = fichier.readlines()
-### fichier.close()
-### for ligne in les_lignes :
-### print ligne[:-1]
-#
-# 4.3.4.4. ==> La fermeture des fichiers locaux
-# Remarque : il faut le faire ici pour que le gestionnaire de DEFI_FICHIER soit à jour
-# Remarque : aujourd'hui on est obligé de passer par le numéro d'unité logique
-#
- for fic in dico.keys() :
- DEFI_FICHIER ( ACTION= "LIBERER", UNITE = dico[fic][2], INFO = INFO )
+ l_aux = dico_configuration["Champs"]
+ l_aux.append(dico_aux)
+ dico_configuration["Champs"] = l_aux
+#gn if dico_configuration.has_key("Champs") :
+#gn print "dico_configuration[Champs] = ", dico_configuration["Champs"]
+#
+# 5.6. ==> Appel de la fonction de création
+#
+ donnees_homard = creation_donnees_homard.creation_donnees_homard ( self.nom, args, dico_configuration )
+ if ( INFO > 1 ) :
+ donnees_homard.quel_mode ( )
+ fic_homard_niter = donnees_homard.creation_configuration ( )
+ donnees_homard.ecrire_fichier_configuration ( )
+ if ( mode_homard == "INFO" ) :
+ Nom_Fichier_Donnees = donnees_homard.ecrire_fichier_donnees ( )
+ else :
+ Nom_Fichier_Donnees = "0"
#
-# 4.4. ==> Ecriture de la commande d'exécution de homard
-# Remarque : dans la donnée de la version de HOMARD, il faut remplacer
-# le _ de la donnee par un ., qui
-# est interdit dans la syntaxe du langage de commandes ASTER
-# Remarque : il faut remplacer le N majuscule de la donnee par
-# un n minuscule, qui est interdit dans la syntaxe du langage
-# de commandes ASTER
-# Remarque : pour le nommage des fichiers d'échange entre ASTER et HOMARD, on utilise
-# la convention implicite du fort.n des entrees/sorties au format MED
+# 5.7. ==> Impression eventuelle des fichiers créés
#
-### Fichier_ASTER_vers_HOMARD_2 = os.path.join("/home/gnicolas","fort." + str(Unite_Fichier_ASTER_vers_HOMARD))
+#gn#gn print "Répertoire ",Rep_Calc_HOMARD_global
+ os.system("ls -la "+Rep_Calc_HOMARD_global)
+ if ( INFO > 1 ) :
+ L_aux = ["HOMARD.Donnees" , "HOMARD.Configuration"]
+ else :
+ L_aux = [ ]
+ for nomfic in L_aux :
+ fic = os.path.join(Rep_Calc_HOMARD_global, nomfic)
+ if os.path.isfile (fic) :
+ print "\n\n=============================================================="
+ print "Contenu de", nomfic
+ fichier = open (fic,"r")
+ les_lignes = fichier.readlines()
+ fichier.close()
+ for ligne in les_lignes :
+ print ligne[:-1]
+ print "==============================================================\n"
+#gn if ( mode_homard == "ADAP" ) :
+#gn if args.has_key("MAJ_CHAM") :
+#gn if args["MAJ_CHAM"] is not None :
+#gn os.system("sleep 1000")
+#
+#====================================================================
+# 6. Ecriture de la commande d'exécution de homard
+#====================================================================
+#
+#
+#gn print "\.. Debut de 7."
+### Fichier_ASTER_vers_HOMARD_2 = os.path.join("/home/gnicolas" , "fort." + str(Unite_Fichier_ASTER_vers_HOMARD))
### shutil.copyfile(Fichier_ASTER_vers_HOMARD,Fichier_ASTER_vers_HOMARD_2)
-#
- VERSION_HOMARD=string.replace(VERSION_HOMARD,"_",".")
- VERSION_HOMARD=string.replace(VERSION_HOMARD,"N","n")
- if ( VERSION_HOMARD[-6:]=="_PERSO" ):
-# motscsi["ARGUMENT"]=_F("TYPEXE"="-PERSO")
- VERSION_HOMARD=VERSION_HOMARD[:-6]
-#
- if ( modhom == "ADAP" ) :
- Nom_Fichier_Donnees = "0"
#
EXEC_LOGICIEL ( ARGUMENT = (_F(NOM_PARA=Rep_Calc_HOMARD_global), # nom du repertoire
_F(NOM_PARA=VERSION_HOMARD), # version de homard
LOGICIEL = homard
)
#
-### if ( modhom == "ADAP" ) :
-### Fichier_HOMARD_vers_ASTER_2 = os.path.join("/home/gnicolas","fort." + str(Unite_Fichier_HOMARD_vers_ASTER))
+### if ( mode_homard == "ADAP" ) :
+### Fichier_HOMARD_vers_ASTER_2 = os.path.join("/home/gnicolas" , "fort." + str(Unite_Fichier_HOMARD_vers_ASTER))
### shutil.copyfile(Fichier_HOMARD_vers_ASTER,Fichier_HOMARD_vers_ASTER_2)
#
-# 4.5. ==> Ecriture de la commande de lecture des resultats med
-# Remarque :
-# La fonction self.DeclareOut(a,b) focntionne ainsi :
-# a est une chaine de caracteres
-# b est la variable déclarée dans la commande
-# le but est de associer le contenu de b à la variable locale qui sera désignée par a
-# Exemple :
-# self.DeclareOut("maillage_np1",ADAPTATION["MAILLAGE_NP1"])
-# ==> la variable maillage_np1 est identifiée à l'argument "MAILLAGE_NP1" du mot-clé ADAPTATION
+#====================================================================
+# 7. ==> Ecriture de la commande de lecture des resultats med
+# Remarque :
+# La fonction self.DeclareOut(a,b) fonctionne ainsi :
+# a est une chaine de caracteres
+# b est la variable déclarée dans la commande
+# le but est de associer le contenu de b à la variable locale qui sera désignée par a
+# Exemple :
+# self.DeclareOut("maillage_a_lire",args["MAILLAGE_NP1"])
+# ==> la variable maillage_a_lire est identifiée à l'argument "MAILLAGE_NP1"
+#====================================================================
#
- if ( modhom == "ADAP" ) :
+ if ( mode_homard == "ADAP" ) :
#
-# 4.5.1. ==> Le maillage
+# 7.1. ==> Le maillage
#
- self.DeclareOut("maillage_np1",ADAPTATION["MAILLAGE_NP1"])
+#gn print "args = ",args
for dico in Liste_Maillages :
+#gn print dico
if ( dico["Action"] == "A_lire" ) :
- maillage_np1 = LIRE_MAILLAGE ( UNITE = Unite_Fichier_HOMARD_vers_ASTER,
+ self.DeclareOut("maillage_a_lire", dico["Nom_ASTER"])
+ maillage_a_lire = LIRE_MAILLAGE ( UNITE = Unite_Fichier_HOMARD_vers_ASTER,
FORMAT = "MED",
NOM_MED = dico["NOM_MED"],
VERI_MAIL = _F(VERIF="NON"), INFO_MED = INFO, INFO = INFO )
+ if ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) :
+ maillage_np1 = maillage_a_lire
#
-# 4.5.2. ==> Les champs
+# 7.2. ==> Les champs
#
for dico in Liste_Champs :
if ( dico["Type_Champ"] == "CHAMP_MAJ" ) :
-### print dico
- self.DeclareOut("champ_maj",dico["CHAM_MAJ"])
- motscsi={}
+#gn print dico
+ self.DeclareOut("champ_maj", dico["CHAM_MAJ"])
+ motscsi = {}
for cle in [ "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
if dico.has_key(cle) :
if ( dico[cle] != None ) :
NOM_MED = dico["NOM_MED"], NOM_CMP_IDEM = "OUI", TYPE_CHAM = dico["TYPE_CHAM"],
INFO = INFO, **motscsi )
#
-#--------------------------------------------------------------------
-# 5. Menage des fichiers MED et HOMARD devenus inutiles
-#--------------------------------------------------------------------
+#====================================================================
+# 8. Menage des fichiers MED et HOMARD devenus inutiles
+#====================================================================
#
- fic = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".HOM")
- Liste_aux = [ Fichier_ASTER_vers_HOMARD, Fichier_HOMARD_Entree, fic ]
- if ( modhom == "ADAP" ) :
+ Liste_aux = [ Fichier_ASTER_vers_HOMARD ]
+ if ( mode_homard == "ADAP" ) :
Liste_aux.append(Fichier_HOMARD_vers_ASTER)
- Liste_aux.append(Fichier_HOMARD_Sortie)
+ fic = os.path.join(Rep_Calc_HOMARD_global, fic_homard_niter)
+ Liste_aux.append(fic)
+#gn print "Liste_aux = ",Liste_aux
#
for fic in Liste_aux :
- if ( INFO > 1 ) : print "Destruction du fichier ", fic
- if os.path.islink(fic) :
- try :
- os.unlink(fic)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de unlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.warn("Impossible d'enlever le lien sur le fichier : "+fic)
- codret = codret + 1
+ if ( INFO > 1 ) :
+ print "Destruction du fichier ", fic
if os.path.isfile(fic) :
try :
os.remove(fic)
except os.error,codret_partiel :
self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.warn("Impossible de détruire le fichier : "+fic)
- codret = codret + 1
-### print os.listdir(Rep_Calc_ASTER)
-### print os.listdir(Rep_Calc_HOMARD_global)
+ UTMESS("F", self.nom, "Impossible de détruire le fichier : "+fic)
+#gn print "Répertoire ",Rep_Calc_HOMARD_global
+#gn os.system("ls -la "+Rep_Calc_HOMARD_global)
+#gn print "Répertoire ",Rep_Calc_ASTER
+#gn os.system("ls -la "+Rep_Calc_ASTER)
+#
+#====================================================================
+# C'est fini !
+#====================================================================
#
-#--------------------------------------------------------------------
-# 6. C'est fini !
-#--------------------------------------------------------------------
+#gn if ( mode_homard == "ADAP" ) :
+#gn os.system("sleep 1")
#
- return codret
+ return
-#@ MODIF macr_ascouf_calc_ops Macro DATE 09/05/2006 AUTEUR REZETTE C.REZETTE
+#@ MODIF macr_ascouf_calc_ops Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
fonfis=DEFI_FOND_FISS(MAILLAGE=MAILLAGE,
LEVRE_SUP=_F(GROUP_MA='FACE1'),
LEVRE_INF=_F(GROUP_MA='FACE2'),
- INFO=2,**motscles
+ INFO=INFO,**motscles
);
if THETA_3D!=None :
for thet in THETA_3D:
-#@ MODIF macr_ascouf_mail_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
+#@ MODIF macr_ascouf_mail_ops Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ======================================================================
-
+import os.path
from math import sqrt,cos,sin,pi,tan,log,fabs,ceil,fmod,floor
import aster
import string
texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
texte=texte+'*\n'
texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_fiss_v4.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_fiss_v4.datg'), 'r').read()
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
texte=texte+" sousep . 1 = 'non'"+POIVIR
texte=texte+'*\n'
texte=texte+'* FIN PARAMETRES UTILISATEUR \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_ssep_mono_v1.datg'+"'"+POIVIR
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_ssep_mono_v1.datg'), 'r').read()
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
texte=texte+'axisym = table '+POIVIR
texte=texte+'sousep = table '+POIVIR
texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_ssep_mult_v1.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_ssep_mult_v1.datg'), 'r').read()
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
texte=texte+'nzgv = '+str(NZGV) +POIVIR
texte=texte+'*\n'
texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_regl_v1.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_regl_v1.datg'), 'r').read()
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
-#@ MODIF macr_aspic_mail_ops Macro DATE 19/09/2005 AUTEUR DURAND C.DURAND
+#@ MODIF macr_aspic_mail_ops Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ======================================================================
-
-from math import sqrt,cos,sin,pi,pow,tan
+import os.path
+from math import sqrt, cos, sin, pi, pow, tan
# Ecriture du fichier GIBI principal (dgib) - ASPID0
def write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
- ITYPSO, DPENE, NIVMAG, loc_datg) :
-
+ ITYPSO, DPENE, NIVMAG, loc_datg):
import aster
# Ouverture du fichier d'entrée de commandes
fdgib=open(nomFichierDATG,'w')
- POIVIR = ' ; \n'
- texte='****************************************************************\n'
- texte=texte+'opti echo 0 ; \n'
- texte=texte+'epT1 = '+str(EPT1) +POIVIR
- texte=texte+'DeT1 = '+str(DET1) +POIVIR
- texte=texte+'d1 = '+str(D1) +POIVIR
- texte=texte+'d2 = '+str(D2) +POIVIR
- texte=texte+'epT2 = '+str(EPT2) +POIVIR
- texte=texte+'DeT2 = '+str(DET2) +POIVIR
- texte=texte+'Zmax = '+str(ZMAX) +POIVIR
- texte=texte+'type_s = '+str(ITYPSO) +POIVIR
- texte=texte+'d_pene = '+str(DPENE) +POIVIR
- texte=texte+'h = '+str(H) +POIVIR
- texte=texte+'angl_s = '+str(ALPHA) +POIVIR
- texte=texte+'jeu = '+str(JEU) +POIVIR
- texte=texte+'epC = '+str(EPC) +POIVIR
- texte=texte+'DeC = '+str(DEC) +POIVIR
- texte=texte+'Xmax = '+str(XMAX) +POIVIR
- texte=texte+'typmai = MOT '+TYPMAI +POIVIR
- texte=texte+'theta = '+str(THETA) +POIVIR
- texte=texte+'typele = MOT '+TYPELE +POIVIR
- texte=texte+'typ_eque = MOT '+'SAINE' +POIVIR
- texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
- texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
- aster.affiche('MESSAGE',texte)
+ texte = """
+****************************************************************
+opti echo 0;
+epT1 = %s;
+DeT1 = %s;
+d1 = %s;
+d2 = %s;
+epT2 = %s;
+DeT2 = %s;
+Zmax = %s;
+type_s = %s;
+d_pene = %s;
+h = %s;
+angl_s = %s;
+jeu = %s;
+epC = %s;
+DeC = %s;
+Xmax = %s;
+typmai = MOT %s;
+theta = %s;
+typele = MOT %s;
+typ_eque = MOT SAINE;
+nivmag = %s;
+****************************************************************
+""" % (EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, ITYPSO, DPENE, H,
+ ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE, NIVMAG)
+ aster.affiche('MESSAGE',texte + ' + aspic.datg...\n')
+ texte = texte + open(os.path.join(loc_datg, 'aspic.datg'), 'r').read()
fdgib.write(texte)
fdgib.close()
texte=texte+'typ_eque = MOT '+'FISS_LON' +POIVIR
texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic_v2.datg'+"';\n"
- aster.affiche('MESSAGE',texte)
+ aster.affiche('MESSAGE',texte + ' + aspic_v2.datg...\n')
+ texte = texte + open(os.path.join(loc_datg, 'aspic_v2.datg'), 'r').read()
fdgib.write(texte)
fdgib.close()
texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
texte=texte+'* \n'
texte=texte+'list epc ;\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
- aster.affiche('MESSAGE',texte)
+ aster.affiche('MESSAGE',texte + ' + aspic.datg...\n')
+ texte = texte + open(os.path.join(loc_datg, 'aspic.datg'), 'r').read()
fdgib.write(texte)
fdgib.close()
-#@ MODIF post_k1_k2_k3_ops Macro DATE 09/05/2006 AUTEUR GALENNE E.GALENNE
+#@ MODIF post_k1_k2_k3_ops Macro DATE 22/05/2006 AUTEUR REZETTE C.REZETTE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ---------- CALCUL PROP. MATERIAU AVEC TEMPERATURE -----------
if Tempe3D :
tempeno=tabtemp.NOEUD==Lnofon[ino]
- tempeno=tempeno.INST.__eq__(VALE=inst,CRITERE=CRITERE,PRECISION=PRECISION)
+ tempeno=tempeno.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION)
nompar = ('TEMP',)
- valpar = (tempeno.values(),)
+ valpar = (tempeno.TEMP.values()[0],)
nomres=['E','NU']
valres,codret = MATER.RCVALE('ELAS',nompar,valpar,nomres,'F')
e = valres[0]
-#@ MODIF test_fichier_ops Macro DATE 13/03/2006 AUTEUR CIBHHLV L.VIVAN
+#@ MODIF test_fichier_ops Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
import sys
import os.path
import re
-import string
-import math
+from math import floor, log10
+from types import StringType
import md5
#-------------------------------------------------------------------------------
'a une tolerance' pres pour les nombres reels en calculant
le md5sum.
"""
- import aster
- from Accas import _F
- ier=0
+ ier = 0
# La macro compte pour 1 dans la numerotation des commandes
self.set_icmd(1)
DETRUIRE = self.get_cmd('DETRUIRE')
CREA_TABLE = self.get_cmd('CREA_TABLE')
TEST_TABLE = self.get_cmd('TEST_TABLE')
-
- import os.path
- import re
- from types import StringType
import aster
+ from Accas import _F
from Macro.test_fichier_ops import md5file
from Utilitai.Utmess import UTMESS
# vérifie la syntaxe des expressions régulières fournies
- l_regexp=[]
+ l_regexp = []
if args['EXPR_IGNORE']:
if type(args['EXPR_IGNORE']) is StringType:
lexp = [args['EXPR_IGNORE']]
lexp = args['EXPR_IGNORE']
for exp in lexp:
try:
- obj=re.compile(exp)
+ obj = re.compile(exp)
except re.error, s:
UTMESS('F', 'TEST_FICHIER',
'<INVALID_REGEXP> %s pour %s' % (str(s), repr(exp)))
else:
l_regexp.append(exp)
- if len(l_regexp) < len(lexp):
- self.cr.fatal(' <F> <TEST_FICHIER> Expression régulière invalide (voir <INVALID_REGEXP>)')
-
- is_ok=0
+ is_ok = 0
# vérifier que le fichier a été fermé
tinfo__ = INFO_EXEC_ASTER(LISTE_INFO='ETAT_UNITE', FICHIER=FICHIER)
- if tinfo__['ETAT_UNITE',1].find('OUVERT')>-1:
+ if tinfo__['ETAT_UNITE', 1].find('OUVERT')>-1:
UTMESS('A', 'TEST_FICHIER',
"LE FICHIER N'A PAS ETE FERME :\n%s" % FICHIER)
# calcule le md5sum du fichier
ier, mdsum = md5file(FICHIER, NB_CHIFFRE, EPSILON, l_regexp, INFO)
if ier != 0:
- if ier==4:
- texte_erreur='Fichier inexistant : '+FICHIER
+ if ier == 4:
+ texte_erreur = 'Fichier inexistant : '+FICHIER
else:
- texte_erreur='Erreur dans md5file, code retour = '+str(ier)
- texte_erreur='<S> <TEST_FICHIER> '+texte_erreur
+ texte_erreur = 'Erreur dans md5file, code retour = '+str(ier)
+ texte_erreur = '<S> <TEST_FICHIER> '+texte_erreur
# aujourd'hui, je ne sais pas déclencher autre chose que <F>...
self.cr.fatal(texte_erreur)
return ier
# comparaison a la reference
if INFO > 0 :
- aster.affiche('MESSAGE',' %-20s : %32s\n' % ('REFERENCE',VALE_K))
+ aster.affiche('MESSAGE', ' %-20s : %32s\n' % ('REFERENCE', VALE_K))
if mdsum == VALE_K:
- is_ok=1
+ is_ok = 1
# produit le TEST_TABLE
- tab1__=CREA_TABLE(LISTE=(_F(PARA='TEST',
- TYPE_K='K8',
- LISTE_K='VALEUR ',),
- _F(PARA='BOOLEEN',
- LISTE_I=is_ok,),),)
+ tab1__ = CREA_TABLE(LISTE=(_F(PARA='TEST',
+ TYPE_K='K8',
+ LISTE_K='VALEUR ',),
+ _F(PARA='BOOLEEN',
+ LISTE_I=is_ok,),),)
if args['REFERENCE'] == 'NON_REGRESSION':
TEST_TABLE(TABLE=tab1__,
FILTRE=_F(NOM_PARA='TEST',
#-------------------------------------------------------------------------------
-def md5file(fich, nbch, epsi, regexp_ignore=[], info=0, output=None):
+def sign(x):
+ return int(x/abs(x))
+
+def _round(x, n, exp):
+ v = x * 10**(-exp+n)
+ val = int(v + sign(x)*0.4999)
+ return val
+
+def entier_ini(x, nbch, exp=None):
+ #if exp is None:
+ #exp = int(floor(log10(abs(x))))
+ val = _round(x, nbch-1, exp)
+ return val, exp-nbch+1
+
+def entier_triple(x, nbch, exp_epsi):
+ #if abs(x) <= 10**exp_epsi:
+ #return '0'
+ y = _round(x * 10**(-exp_epsi), 0, 0) * 10**exp_epsi
+ exp = int(floor(log10(abs(y))))
+ z1, e1 = entier_ini(y, nbch+2, exp)
+ z2, e2 = entier_ini(z1 * 10**e1, nbch+1, exp)
+ z3, e3 = entier_ini(z2 * 10**e2, nbch, exp)
+ return '%sE%d' % (z3, e3)
+
+#-------------------------------------------------------------------------------
+def md5file(fich, nbch, epsi,
+ regexp_ignore=[], info=0, output=None, format_func=entier_triple):
"""
Cette methode retourne le md5sum d'un fichier en arrondissant les nombres
reels a la valeur significative.
regexp_ignore : liste d'expressions régulières permettant d'ignorer
certaines lignes
output : pour rediriger l'interprétation du fichier (INFO=2)
- dans le fichier de nom `output`.
+ dans le fichier de nom `output`,
+ info : on affiche le résumé si info>0
+ format_func : on peut préciser une autre fonction pour formatter
+ les réels...
OUT :
code retour : 0 si ok, >0 sinon
md5sum
NE PAS AJOUTER D'IMPORT QUI RENDRAIT CETTE FONCTION
INUTILISABLE EN DEHORS DE CODE_ASTER.
"""
- if output<>None:
+ if output != None:
try:
- sys.stdout=open(output, 'w')
+ sys.stdout = open(output, 'w')
except IOError, msg:
- print "Erreur d'écriture sur %s : %s" % (fout, msg)
+ print "Erreur d'écriture sur %s : %s" % (output, msg)
# 1 Mo 10 Mo 100 Mo
# v0 2.6 s 20.4 s 196.6 s
# v1 2.0 s 10.3 s 94.9 s (pas de distinction entier/reel)
# remplacer le try/except par if re.search(...), 80% plus lent
+ # v2 10.7 s
if not os.path.isfile(fich):
return 4, ''
- f=open(fich,'r')
- format_float='%'+str(nbch+7)+'.'+str(nbch)+'g'
- m=md5.new()
- i=0
+ f = open(fich,'r')
+ m = md5.new()
+ exp_epsi = int(floor(log10(abs(epsi))))
+ i = 0
for ligne in f:
- i=i+1
- if info>=2:
- print 'LIGNE',i,
- keep=True
+ i = i+1
+ if info >= 2:
+ print 'LIGNE', i,
+ keep = True
for exp in regexp_ignore:
- if re.search(exp,ligne):
- keep=False
- if info>=2:
+ if re.search(exp, ligne):
+ keep = False
+ if info >= 2:
print ' >>>>>>>>>> IGNOREE <<<<<<<<<<',
break
if keep:
# découpe des nombres collés : 1.34E-142-1.233D+09
- ligne=re.sub('([0-9]+)\-','\g<1> -',ligne)
+ ligne = re.sub('([0-9]+)\-', '\g<1> -', ligne)
# conversion des DOUBLE fortran en 'E'
- ligne=re.sub('([0-9]+)[dD]([\-\+]{0,1}[0-9]+)','\g<1>E\g<2>',ligne)
- r=string.split(ligne)
+ ligne = re.sub('([0-9]+)[dD]([\-\+]{0,1}[0-9]+)', '\g<1>E\g<2>', ligne)
+ r = ligne.split()
for x in r:
try:
- if abs(float(x))<epsi:
- s='0'
+ xv = float(x)
+ if abs(xv)<epsi:
+ s = '0'
else:
- s=format_float % float(x)
+ #s = format_float % float(x)
+ s = format_func(xv, nbch, exp_epsi)
except ValueError:
- s=x
- if info>=2:
+ s = x
+ if info >= 2:
print (' %'+str(nbch+7)+'s') % s,
m.update(s)
- if info>=2:
+ if info >= 2:
print
f.close()
- md5sum=m.hexdigest()
+ md5sum = m.hexdigest()
- affich_resu=True
- if info>=1:
+ affich_resu = True
+ if info >= 1:
while affich_resu:
- form=' %-20s : %32s'
- print form % ('Fichier',fich)
- print form % ('Nombre de lignes',str(i))
- print form % ('Format des reels',format_float)
- print form % ('Epsilon',str(epsi))
- print form % ('md5sum',md5sum)
- if output==None:
- affich_resu=False
+ form = ' %-20s : %32s'
+ print form % ('Fichier', fich)
+ print form % ('Nombre de lignes', str(i))
+ #print form % ('Format des reels',format_float)
+ print form % ('Nombre de chiffres', str(nbch))
+ print form % ('Epsilon', str(epsi))
+ print form % ('md5sum', md5sum)
+ if output == None:
+ affich_resu = False
else:
- sys.stdout=sys.__stdout__
- output=None
+ sys.stdout = sys.__stdout__
+ output = None
return 0, md5sum
if __name__ == '__main__':
from optparse import OptionParser, OptionGroup
- p=OptionParser(usage='usage: %s a_tester [options]' % sys.argv[0])
+ p = OptionParser(usage='usage: %s a_tester [options]' % sys.argv[0])
p.add_option('-n', '--nbch',
action='store', dest='nbch', type='int', default=6,
help='nombre de chiffres significatifs')
p.add_option('-e', '--epsilon',
action='store', dest='epsi', type='float', default=1.e-14,
help='epsilon en dessous duquel on considère les nombres nuls')
+ p.add_option('--expr_ignore',
+ action='store', dest='exp', type='string',
+ help='expression régulière à ignorer')
p.add_option('-o', '--output',
action='store', dest='output', type='string', default='output.txt',
help='fichier de sortie')
if len(args)<1:
p.print_usage()
sys.exit(1)
+ if opts.exp is None:
+ exp = []
+ else:
+ exp = [opts.exp]
print 'Lignes retenues dans %s' % opts.output
- iret = md5file(args[0], opts.nbch, opts.epsi, info=2, output=opts.output)
+ iret = md5file(args[0], opts.nbch, opts.epsi,
+ regexp_ignore=exp, info=2, output=opts.output)
+
-#& MODIF ENTETE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
+#& MODIF ENTETE DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
def __init__(self,valeur=None,**args):
ASSD.__init__(self,**args)
self.valeur=valeur
+
+ def __adapt__(self,validator):
+ if validator.name == "list":
+ #validateur liste,cardinalité
+ return (self,)
+ elif validator.name == "type":
+ #validateur type
+ return validator.adapt(self.valeur or 0)
+ else:
+ #validateur into et valid
+ return self
+
class reel(ASSD):
def __init__(self,valeur=None,**args):
ASSD.__init__(self,**args)
self.valeur=valeur
+
def __call__(self):
return self.valeur
+ def __adapt__(self,validator):
+ if validator.name == "list":
+ #validateur liste,cardinalité
+ return (self,)
+ elif validator.name == "type":
+ #validateur type
+ return validator.adapt(self.valeur or 0.)
+ else:
+ #validateur into et valid
+ return self
+
+
# -----------------------------------------------------------------------------
# Type geometriques
class no (GEOM):pass
POSITION =SIMP(statut='f',typ='I',defaut=1),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
) ;
-#& MODIF COMMANDE DATE 04/07/2005 AUTEUR GNICOLAS G.NICOLAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-IMPR_FICO_HOMA=PROC(nom="IMPR_FICO_HOMA",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. Le niveau d'information
-#
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-#
-# 2. 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." ),
-#
-# 3. Le nom local du fichier de configuration HOMARD
-#
- UNITE_CONF =SIMP(statut='o',typ='I'),
-#
-# 4. Le nom local du fichier de données HOMARD
-#
- UNITE_DONN =SIMP(statut='f',typ='I'),
-#
-# 5. Gestion des éléments autres que des simplexes
-# 0 : autres elements refuses (defaut)
-# 1 : raffinement sur les simplexes, mais autres acceptes
-# 2 : tous
-#
- NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=0,into=(0,1,2),
- fr="Type d'éléments acceptés.",
- ang="Type of authorized elements." ),
-#
-# 6. Le type de traitement :
-#
- TRAITEMENT =FACT(statut='o',
-#
-# 6.1. TROIS CHOIX EXCLUSIFS :
-#
-# A. ADAPTATION PAR UN INDICATEUR D'ERREUR, AVEC TROIS VARIANTES :
-# . RAFFINEMENT ET DERAFFINEMENT
-# . RAFFINEMENT SEUL
-# . DERAFFINEMENT SEUL
-# B. ADAPTATION UNIFORME, AVEC DEUX VARIANTES :
-# . RAFFINEMENT SEUL
-# . DERAFFINEMENT SEUL
-# . RIEN : LE MAILLAGE EST LE MEME A LA SORTIE ET A L'ENTREE
-# C. INFORMATION SUR UN MAILLAGE
-#
- regles=( UN_PARMI('ADAPTATION','UNIFORME','INFORMATION'),),
- ADAPTATION =SIMP(statut='f',typ='TXM',
- fr="Adaptation libre",
- ang="Free adaptation",
- into=("RAFFINEMENT","DERAFFINEMENT","RAFF_DERA") ),
- UNIFORME =SIMP(statut='f',typ='TXM',
- fr="Adaptation uniforme",
- ang="Uniforme adaptation",
- into=("RAFFINEMENT","DERAFFINEMENT","RIEN") ),
- INFORMATION =SIMP(statut='f',typ='TXM',
- fr="Information sur un maillage",
- ang="Information on a mesh",
- into=("OUI",) ),
-#
-# 6.2. LES CONTRAINTES :
-#
-# 6.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
-#
-# 6.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
-#
-# 6.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
-#
- b_maillage_initial =BLOC(condition = "( INFORMATION != None ) or ( ADAPTATION != None ) ",
- fr="Nom MED du maillage en entrée",
- ang="MED name of the in-mesh",
- NOM_MED_MAILLAGE_N =SIMP(statut='o',typ='TXM',),
- ) ,
-#
- b_maillage_initial_uniforme =BLOC(condition = "( UNIFORME != None ) ",
- fr="Nom MED du maillage en entrée",
- ang="MED name of the in-mesh",
- NOM_MED_MAILLAGE_N =SIMP(statut='f',typ='TXM',),
- ) ,
-#
- b_iteration =BLOC(condition = "( UNIFORME != None ) or ( ADAPTATION != None ) ",
- fr="Nom MED du maillage en sortie, numero d'iteration",
- ang="MED name of the out-mesh, iteration rank",
- NITER =SIMP(statut='o',typ='I',
- fr="Numéro d'itération.",
- ang="Iteration number." ),
- 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 = "ADAPTATION != None",
- fr="Indicateur d'erreur",
- ang="Error indicator",
- regles=(EXCLUS('NUME_ORDRE','INST'),
- EXCLUS('NUME_ORDRE','RESULTAT'),
- PRESENT_PRESENT('RESULTAT','NOM_CHAM'),),
- 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.",),
- INST =SIMP(statut='f',typ='R',
- fr="Instant de l'indicateur.",
- ang="Instant of the error indicator.",),
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
- fr="Concept contenant l'indicateur.",
- ang="Conceipt wich contains the error indicator.",),
- NOM_CHAM =SIMP(statut='f',typ='TXM',
- fr="Nom du champ dans le résultat de l'indicateur.",
- ang="Name of the field of the error indicator.",),
- ) ,
-#
- b_critere_de_raffinement =BLOC( condition = "( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'RAFFINEMENT' )" ,
- 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 = "( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'DERAFFINEMENT' )" ,
- 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 = " ( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'RAFFINEMENT' ) or \
- ( UNIFORME == 'RAFFINEMENT' )" ,
- NIVE_MAX =SIMP(statut='f',typ='I',
- fr="Niveau maximum de profondeur de raffinement",
- ang="Maximum level for refinement"),
- ) ,
-#
- b_niveau_minimum =BLOC ( condition = " ( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'DERAFFINEMENT' ) or \
- ( UNIFORME == 'DERAFFINEMENT' )" ,
- NIVE_MIN =SIMP(statut='f',typ='I',
- fr="Niveau minimum de déraffinement",
- ang="Minimum level for unrefinement" ),
- ) ,
-#
-# 6.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" ),
- ) ,
-#
- ),
-#
-# 7. Mise à jour de champs sur le nouveau maillage
-#
- MAJ_CHAM =FACT(statut='f',max='**',
- fr="Mise à jour de champs sur le nouveau maillage.",
- ang="Updating of fields over the new mesh.",
- regles=(EXCLUS('NUME_ORDRE','INST'),
- EXCLUS('NUME_ORDRE','RESULTAT'),
- PRESENT_PRESENT('RESULTAT','NOM_CHAM'),),
- NOM_MED =SIMP(statut='o',typ='TXM',
- fr="Nom MED du champ à mettre à jour.",
- ang="MED name of field.",),
- NUME_ORDRE =SIMP(statut='f',typ='I',
- fr="Numero d'ordre du champ à mettre à jour.",
- ang="Rank number of field.",),
- INST =SIMP(statut='f',typ='R',
- fr="Instant du champ à mettre à jour.",
- ang="Instant of field.",),
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
- fr="Concept contenant le champ à mettre à jour.",
- ang="Conceipt wich contains the field.",),
- NOM_CHAM =SIMP(statut='f',typ='TXM',
- fr="Nom du champ dans le résultat du champ à mettre à jour.",
- ang="Name of the field.",),
- ),
-#
-# 8. 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="OUI",into=("OUI","NON"),
- fr="Qualité du maillage",
- ang="Mesh quality" ),
-#
- INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Controle de la non interpénétration des éléments.",
- ang="Overlapping checking." ),
-#
- CONNEXITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Connexité du maillage.",
- ang="Mesh connexity." ),
-#
- TAILLE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Tailles des sous-domaines du maillage.",
- ang="Sizes of mesh sub-domains." ),
-#
- ),
-#
-) ;
#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
),
),
) ;
-#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
from Macro.macr_adap_mail_ops import macr_adap_mail_ops
def macr_adap_mail_prod(self,MAJ_CHAM,ADAPTATION,**args):
- maillage_np1=ADAPTATION['MAILLAGE_NP1']
+#
+# 0. Typage des structures produites
+#
+ maillage_np1=args['MAILLAGE_NP1']
self.type_sdprod(maillage_np1,maillage_sdaster)
+#
+ if ( args['MAILLAGE_NP1_ANNEXE'] is not None ) :
+ maillage_np1_annexe=args['MAILLAGE_NP1_ANNEXE']
+ self.type_sdprod(maillage_np1_annexe,maillage_sdaster)
+#
if MAJ_CHAM == None:return None
# Remarque : la liste qui suit doit etre conforme à son homologue de LIRE_CHAMP
for ch in MAJ_CHAM:
#
# 1. Le niveau d'information
#
- INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
#
# 2. Version de HOMARD
#
- VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V7_7",
- into=("V7_7", "V7_N", "V7_N_PERSO", "V8_N"),
- fr="Version de HOMARD",
- ang="HOMARD release"),
+ VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V8_2",
+ into=("V8_2", "V8_N", "V8_N_PERSO"),
+ fr="Version de HOMARD",
+ ang="HOMARD release"),
#
-# 3. Langue des messages issus de HOMARD
+# 3. Langue des messages produits par 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." ),
+ LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
+ into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
+ fr="Langue des messages produits par HOMARD.",
+ ang="Language for HOMARD messages." ),
#
-# 4. Gestion des éléments autres que des simplexes
-# 0 : autres elements refuses
-# 1 : raffinement sur les simplexes, mais autres acceptes
-# 2 : tous (defaut)
+# 4. Les maillages
+# 4.1. Quel que soit le type de traitement, il faut donner :
+# A. Le concept du maillage initial (entree)
+# B. Le concept du maillage final (sortie)
#
- NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=2,into=(0,1,2),
- fr="Type d'éléments acceptés.",
- ang="Type of authorized elements." ),
+ MAILLAGE_N = SIMP(statut='o',typ=maillage_sdaster,
+ fr="Maillage avant adaptation",
+ ang="Mesh before adaptation" ),
#
-# 5. Le type de traitement :
+ MAILLAGE_NP1 = SIMP(statut='o',typ=CO,
+ fr="Maillage apres adaptation",
+ ang="Mesh after adaptation" ),
#
- ADAPTATION =FACT(statut='o',
- fr="Type d'adaptation",
- ang="Type of adaptation",
+# 4.2. Eventuellement, on peut produire un maillage annexe
+# Actuellement, c'est le maillage n+1, mais de degré différent.
#
-# 5.1. Deux choix d'adaptation exclusifs :
+ MAILLAGE_NP1_ANNEXE = SIMP(statut='f',typ=CO,
+ fr="Maillage annexe apres adaptation",
+ ang="Additional mesh after adaptation" ),
#
-# 5.1.
-# A. Pilote par une consigne, avec trois variantes :
-# . Raffinement et deraffinement
-# . Raffinement seul
-# . Deraffinement seul
-# B. Uniforme, avec trois variantes :
-# . Raffinement seul
-# . Deraffinement seul
-# . Rien : le maillage est le meme a la sortie et a l'entree
+# 5. Le pilotage de l'adaptation, avec les variantes suivantes :
+# . Raffinement et deraffinement, selon un champ d'indicateurs d'erreur
+# . Raffinement seul, selon un champ d'indicateurs d'erreur
+# . Deraffinement seul, selon un champ d'indicateurs d'erreur
+# . Raffinement uniforme : toutes les mailles sont divisées
+# . Deraffinement uniforme : toutes les mailles sont regroupées
+# . Rien : le maillage est le meme a la sortie et a l'entree
#
- regles=(
- UN_PARMI('LIBRE','UNIFORME'),
- ),
- LIBRE = SIMP(statut='f',typ='TXM',
- into=("RAFF_DERA","RAFFINEMENT","DERAFFINEMENT"),
- fr="Adaptation selon un indicateur d'erreur.",
- ang="Adaptation among an error indicator" ),
- UNIFORME = SIMP(statut='f',typ='TXM',
- into=("RAFFINEMENT","DERAFFINEMENT","RIEN"),
- fr="Adaptation uniforme.",
- ang="Uniform adaptation" ),
+ ADAPTATION = SIMP(statut='f',typ='TXM',
+ into=("RAFF_DERA","RAFFINEMENT","DERAFFINEMENT","RAFFINEMENT_ZONE", \
+ "RAFFINEMENT_UNIFORME","DERAFFINEMENT_UNIFORME","RIEN"),
+ fr="Pilotage de l'adaptation : selon un indicateur d'erreur ou uniforme.",
+ ang="Adaptation control : among an error indicator or uniform" ),
#
-# 5.2. Quel que soit le type de traitement, il faut donner :
-# A. Le concept du maillage initial
-# B. Le concept du maillage final
+# 6. Pour de l'adaptation libre, il faut un indicateur d'erreur
#
- MAILLAGE_N = SIMP(statut='o',typ=maillage_sdaster,
- fr="Maillage avant adaptation",
- ang="Mesh before adaptation" ),
- MAILLAGE_NP1 = SIMP(statut='o',typ=CO,
- fr="Maillage apres adaptation",
- ang="Mesh after adaptation" ),
+ b_indicateur_d_erreur = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+ (ADAPTATION == 'RAFFINEMENT') or \
+ (ADAPTATION == 'DERAFFINEMENT') " ,
+ fr="Pour une adaptation libre, choix de l'indicateur d'erreur ou d'une zone à raffiner",
+ ang="For free adaptation, selection of error indicator or zone",
#
-# 5.3. Pour de l'adaptation libre, il faut un indicateur d'erreur et/ou des definitions de zones
+ regles=(UN_PARMI('CHAM_GD','RESULTAT_N')),
#
- b_indicateur_d_erreur =BLOC( condition = " LIBRE != None " ,
- fr="Choix de l'indicateur d'erreur",
- ang="Selection of error indicator",
+# 6.1. Repérage de la zone à raffiner à l'aide d'un indicateur
#
-# 5.3.1. L'indicateur
+# 6.1.1. Sous forme de champ de grandeur
#
- regles=(UN_PARMI('CHAM_GD','RESULTAT_N')),
+ CHAM_GD = SIMP(statut='f',typ=cham_gd_sdaster,
+ fr="Champ de grandeur Code_Aster contenant l'indicateur d'erreur",
+ ang="Code_Aster champ de grandeur with error indicator" ),
#
-# 5.3.1.1. Sous forme de champ de grandeur
+# 6.1.2. Sous forme de concept resultat_sdaster
#
- CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster,
- fr="Champ de grandeur Code_Aster contenant l'indicateur d'erreur",
- ang="Champ de grandeur with error indicator" ),
+ RESULTAT_N = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) ,
+ fr="Concept resultat Code_Aster contenant l'indicateur d'erreur",
+ ang="Code_Aster result with error indicator" ),
#
-# 5.3.1.2. Sous forme de concept resultat_sdaster
+ b_champ_indicateur = BLOC(condition="(RESULTAT_N != None)",
+ INDICATEUR = SIMP(statut='o',typ='TXM',
+ fr="Champ de l'indicateur d'erreur dans le résultat",
+ ang="Error indicator field in the result structure" ),
+ ),
#
- RESULTAT_N = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) ,
- fr="Concept resultat Code_Aster contenant l'indicateur d'erreur",
- ang="Result with error indicator" ),
+# 6.1.3. La composante retenue
#
- b_champ_indicateur =BLOC(condition="(RESULTAT_N != None)",
- INDICATEUR = SIMP(statut='o',typ='TXM',
- fr="Champ de l'indicateur d'erreur",
- ang="Error indicator field" ),
- ),
+ b_composante = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ",
+ fr="Choix de la composante pour l'indicateur",
+ ang="Component selection for error indicator",
#
-# 5.3.2. La composante retenue
+ NOM_CMP_INDICA = SIMP(statut='o',typ='TXM',
+ fr="Composante retenue pour l'indicateur d'erreur",
+ ang="Selected component for error indicator" ),
#
- NOM_CMP_INDICA = SIMP(statut='o',typ='TXM',
- fr="Composante retenue",
- ang="Selected component" ),
+ ),
#
-# 5.3.3. Le paramètre temporel pour l'indicateur
+# 6.1.4. Le paramètre temporel pour l'indicateur
#
- b_parametre_temporel =BLOC(condition="(RESULTAT_N != None)",
+ b_parametre_temporel = BLOC(condition="(RESULTAT_N != None)",
+ fr="Choix éventuel du paramètre temporel pour l'indicateur",
+ ang="Time selection for error indicator (option)",
#
- regles=(EXCLUS('NUME_ORDRE','INST'),),
+ regles=(EXCLUS('NUME_ORDRE','INST'),),
#
-# 5.3.3.1. Soit le numero d'ordre
+# 6.1.4.1. Soit le numero d'ordre
#
- NUME_ORDRE = SIMP(statut='f',typ='I',
- fr="Numero d ordre",
- ang="Rank" ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',
+ fr="Numero d ordre",
+ ang="Rank" ),
#
-# 5.3.3.2. Soit l'instant
-# 5.3.3.2.1. Sa valeur
+# 6.1.4.2. Soit l'instant
+# 6.1.4.2.1. Sa valeur
#
- INST = SIMP(statut='f',typ='R',
- fr="Instant associé",
- ang="Instant" ),
+ INST = SIMP(statut='f',typ='R',
+ fr="Instant associé",
+ ang="Instant" ),
#
-# 5.3.3.2.2. La précision du choix de l'instant
+# 6.1.4.2.2. La précision du choix de l'instant
#
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),
- ),
+ b_precision = BLOC(condition="(INST != None)",
+ fr="Choix de la précision du choix de l'instant",
+ ang="Selection for instant choice",
+ PRECISION = SIMP(statut='f',typ='R',defaut=1.0E-3,
+ fr="Précision sur le choix de l'instant associé",
+ ang="Accuracy over instant choice" ),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
+ fr="Critère de précision sur le choix de l'instant associé",
+ ang="Accuracy criterium over instant choice" ),
+ ),
#
- ),
+ ),
#
- ) ,
+ ) ,
#
-# 5.4. Les criteres pour de l'adaptation libre :
+# 7. Les criteres pour de l'adaptation libre avec un indicateur d'erreur :
# absolu, relatif, en proportion d'entite
-# 5.4.1. Pour le raffinement :
-#
- b_critere_de_raffinement =BLOC( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'RAFFINEMENT' ) " ,
- 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 : fraction entre 0 et 1",
- ang="Relative threshold : ratio between 0 and 1" ),
- CRIT_RAFF_PE = SIMP(statut='f',typ='R',
- fr="Pourcentage d'éléments : fraction entre 0 et 1",
- ang="Percentage of elements : ratio between 0 and 1" ),
- ) ,
-#
-# 5.4.2. Pour le deraffinement :
-#
- b_critere_de_deraffinement =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'DERAFFINEMENT' ) " ,
- 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 : fraction entre 0 et 1",
- ang="Relative threshold : ratio between 0 and 1" ),
- CRIT_DERA_PE = SIMP(statut='f',typ='R',
- fr="Pourcentage d'éléments : fraction entre 0 et 1",
- ang="Percentage of elements : ratio between 0 and 1" ),
- ) ,
-#
-# 5.5. Les niveaux extremes pour le maillage adapte
-# 5.5.1. Pour le raffinement :
-#
- b_niveau_maximum =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'RAFFINEMENT' ) or \
- ( UNIFORME == 'RAFFINEMENT' ) " ,
+# 7.1. Pour le raffinement :
+#
+ b_critere_de_raffinement = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+ (ADAPTATION == 'RAFFINEMENT') " ,
+ 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 : fraction réelle entre 0. et 1.",
+ ang="Relative threshold : ratio between 0. and 1." ),
+ CRIT_RAFF_PE = SIMP(statut='f',typ='R',
+ fr="Pourcentage d'éléments : fraction réelle entre 0. et 1.",
+ ang="Percentage of elements : ratio between 0. and 1." ),
+ ) ,
+#
+# 7.2. Pour le deraffinement :
+#
+ b_critere_de_deraffinement = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+ (ADAPTATION == 'DERAFFINEMENT') " ,
+ 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 : fraction réelle entre 0. et 1.",
+ ang="Relative threshold : ratio between 0. and 1." ),
+ CRIT_DERA_PE = SIMP(statut='f',typ='R',
+ fr="Pourcentage d'éléments : fraction réelle entre 0. et 1.",
+ ang="Percentage of elements : ratio between 0. and 1." ),
+ ) ,
+#
+# 8. Pour de l'adaptation par zone, définitions des zones
+# Remarque : on impose le 3D
+#
+ b_zone = BLOC( condition = " (ADAPTATION == 'RAFFINEMENT_ZONE') " ,
+ fr="Pour une adaptation selon une zone à raffiner",
+ ang="For adaptation among zone",
+ ZONE = FACT(statut='f',max='**',
+ fr="Définition de zones à raffiner.",
+ ang="Refined zone definition.",
+#
+ regles=(AU_MOINS_UN('X_MINI','X_CENTRE'),
+ EXCLUS('X_MINI','X_CENTRE',),
+ PRESENT_PRESENT('X_MINI','X_MAXI','Y_MINI','Y_MAXI','Z_MINI','Z_MAXI'),
+ PRESENT_PRESENT('X_CENTRE','Y_CENTRE','Z_CENTRE','RAYON'),),
+#
+# 6.2.1. Une boite parallelepipedique
+#
+ X_MINI = SIMP(statut='f',typ='R',
+ fr="Abscisse minimum de la boite",
+ ang="Minimum X for the box"),
+ X_MAXI = SIMP(statut='f',typ='R',
+ fr="Abscisse maximum de la boite",
+ ang="Maximum X for the box"),
+#
+ Y_MINI = SIMP(statut='f',typ='R',
+ fr="Orodnnée minimum de la boite",
+ ang="Minimum Y for the box"),
+ Y_MAXI = SIMP(statut='f',typ='R',
+ fr="Abscisse maximum de la boite",
+ ang="Maximum Y for the box"),
+#
+ Z_MINI = SIMP(statut='f',typ='R',
+ fr="Cote minimum de la boite",
+ ang="Minimum Z for the box"),
+ Z_MAXI = SIMP(statut='f',typ='R',
+ fr="Cote maximum de la boite",
+ ang="Maximum Z for the box"),
+#
+# 6.2.2. Une sphere
+#
+ X_CENTRE = SIMP(statut='f',typ='R',
+ fr="Abscisse du centre de la sphere",
+ ang="X for the center of the sphere"),
+ Y_CENTRE = SIMP(statut='f',typ='R',
+ fr="Ordonnee du centre de la sphere",
+ ang="Y for the center of the sphere"),
+ Z_CENTRE = SIMP(statut='f',typ='R',
+ fr="Cote du centre de la sphere",
+ ang="Z for the center of the sphere"),
+ RAYON = SIMP(statut='f',typ='R',
+ fr="Rayon de la sphere",
+ ang="Radius of the sphere"),
+#
+ ) ,
+#
+ ) ,
+#
+# 9. Les niveaux extremes pour le maillage adapte
+# 9.1. Pour le raffinement :
+#
+ b_niveau_maximum = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+ (ADAPTATION == 'RAFFINEMENT') or \
+ (ADAPTATION == 'RAFFINEMENT_UNIFORME') or \
+ (ADAPTATION == 'RAFFINEMENT_ZONE') " ,
fr="Niveau maximum de profondeur de raffinement",
ang="Maximum level for refinement",
- NIVE_MAX = SIMP(statut='f',typ='I' ),
- ) ,
+ NIVE_MAX = SIMP(statut='f',typ='I',
+ fr="Niveau maximum de profondeur de raffinement",
+ ang="Maximum level for refinement"),
+ ) ,
#
-# 5.5.2. Pour le deraffinement :
+# 9.2. Pour le deraffinement :
#
- b_niveau_minimum =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'DERAFFINEMENT' ) or \
- ( UNIFORME == 'DERAFFINEMENT' ) " ,
+ b_niveau_minimum = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+ (ADAPTATION == 'DERAFFINEMENT') or \
+ (ADAPTATION == 'DERAFFINEMENT_UNIFORME') " ,
fr="Niveau minimum de profondeur de déraffinement",
ang="Minimum level for unrefinement",
- NIVE_MIN = SIMP(statut='f',typ='I' ),
- ) ,
+ NIVE_MIN = SIMP(statut='f',typ='I',
+ fr="Niveau minimum de profondeur de déraffinement",
+ ang="Minimum level for unrefinement"),
+ ) ,
#
- ),
+# 10. Suivi d'une frontiere
#
-# 6. Suivi d'une frontiere
-#
- MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
+ MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
fr="Maillage de la frontiere à suivre",
ang="Boundary mesh" ),
#
- b_frontiere =BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
- fr="Groupes définissant la frontière",
- ang="Groups which define the boundary",
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ),
- ) ,
+ b_frontiere = BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
+ fr="Information complémentaire sur la frontière",
+ ang="Further information about boundary",
#
-# 7. Mise à jour de champs sur le nouveau maillage
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="Liste des groupes de mailles définissant la frontière",
+ ang="Mesh groups which define the boundary" ),
#
- MAJ_CHAM =FACT(statut='f',max='**',
- fr="Mise à jour de champs sur le nouveau maillage.",
- ang="Updating of fields over the new mesh.",
+ ) ,
#
-# 7.1. Le nom du champ qui contiendra le resultat de la mise a jour
+# 11. Mise à jour de champs sur le nouveau maillage
#
- CHAM_MAJ = SIMP(statut='o',typ=CO,
- fr="Nom du champ qui contiendra le champ mis à jour",
- ang="Name of the field for the updated field"),
+ MAJ_CHAM = FACT(statut='f',max='**',
+ fr="Mise à jour de champs sur le nouveau maillage.",
+ ang="Updating of fields over the new mesh.",
#
-# 7.2. Le type du champ qui contiendra le resultat de la mise a jour
+# 11.1. Le nom du champ de grandeur qui contiendra le resultat de la mise a jour
#
- TYPE_CHAM = SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO(),
- fr="Type du champ qui contiendra le champ mis à jour",
- ang="Type of the field for the updated field" ),
+ CHAM_MAJ = SIMP(statut='o',typ=CO,
+ fr="Nom du champ de grandeur qui contiendra le champ mis à jour",
+ ang="Name of the field for the updated field"),
#
-# 7.3. Le champ a interpoler
+# 11.2. Le type du champ qui contiendra le resultat de la mise a jour
#
- regles=(UN_PARMI('CHAM_GD','RESULTAT')),
+ TYPE_CHAM = SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO(),
+ fr="Type du champ qui contiendra le champ mis à jour",
+ ang="Type of the field for the updated field" ),
#
-# 7.3.1. Sous forme de champ de grandeur
+# 11.3. Le champ a interpoler
#
- CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster,
- fr="Champ de grandeur Code_Aster contenant le champ à mettre à jour",
- ang="Champ de grandeur with field to be updated" ),
+ regles=(UN_PARMI('CHAM_GD','RESULTAT')),
#
-# 7.3.2. Le nom du resultat du champ a interpoler
+# 11.3.1. Sous forme de champ de grandeur
#
- RESULTAT = SIMP(statut='f',
- typ=(evol_elas,evol_noli,evol_ther),
- fr="Resultat contenant le champ à mettre à jour",
- ang="Result with field to be updated" ),
+ CHAM_GD = SIMP(statut='f',typ=cham_gd_sdaster,
+ fr="Champ de grandeur Code_Aster contenant le champ à mettre à jour",
+ ang="Champ de grandeur with field to be updated" ),
#
- NOM_CHAM = SIMP(statut='f',typ='TXM',
- fr="Nom du champ à mettre à jour",
- ang="Name of the field to be updated" ),
+# 11.3.2. Sous forme de champ dans un resultat
#
-# 7.4. Le paramètre temporel pour le champ a interpoler
+ RESULTAT = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
+ fr="Resultat contenant le champ à mettre à jour",
+ ang="Result with field to be updated" ),
#
- b_parametre_temporel =BLOC(condition="(RESULTAT != None)",
+ NOM_CHAM = SIMP(statut='f',typ='TXM',
+ fr="Nom du champ à mettre à jour",
+ ang="Name of the field to be updated" ),
#
- regles=(EXCLUS('NUME_ORDRE','INST'),),
+# 11.4. Le paramètre temporel pour le champ a interpoler
#
-# 7.4.1. Soit le numero d'ordre
+ b_parametre_temporel = BLOC(condition="(RESULTAT != None)",
+ fr="Choix éventuel du paramètre temporel pour l'indicateur",
+ ang="Time selection for error indicator (option)",
#
- NUME_ORDRE = SIMP(statut='f',typ='I',
- fr="Numero d ordre du champ à mettre à jour",
- ang="Rank of the field to be updated" ),
+ regles=(EXCLUS('NUME_ORDRE','INST'),),
#
-# 7.4.2. Soit l'instant
-# 7.4.2.1. Sa valeur
+# 11.4.1. Soit le numero d'ordre
#
- INST = SIMP(statut='f',typ='R',
- fr="Instant associé",
- ang="Instant" ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',
+ fr="Numero d ordre du champ à mettre à jour",
+ ang="Rank of the field to be updated" ),
#
-# 7.4.2.2. La précision du choix de l'instant
+# 11.4.2. Soit l'instant
+# 11.4.2.1. Sa valeur
#
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
+ INST = SIMP(statut='f',typ='R',
+ fr="Instant associé",
+ ang="Instant" ),
#
- ),
- ),
+# 11.4.2.2. La précision du choix de l'instant
#
-# 8. Les options d'analyse de maillage ; par defaut, on ne fait que les nombres
-# 8.1. Nombre de noeuds et éléments
+ b_precision = BLOC(condition="(INST != None)",
+ fr="Choix de la précision du choix de l'instant",
+ ang="Selection for instant choice",
#
- NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ PRECISION = SIMP(statut='f',typ='R',defaut=1.0E-3,
+ fr="Précision sur le choix de l'instant associé",
+ ang="Accuracy over instant choice" ),
+#
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
+ fr="Critère de précision sur le choix de l'instant associé",
+ ang="Accuracy criterium over instant choice" ),
+#
+ ),
+#
+ ),
+ ),
+#
+# 12. Les options d'analyse de maillage ; par defaut, on ne fait que les nombres
+# 12.1. Nombre de noeuds et éléments
+#
+ 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 éléments in the mesh" ),
#
-# 8.2. Determination de la qualité des éléments du maillage
+# 12.2. Determination de la qualité des éléments du maillage
#
- QUALITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ QUALITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
fr="Qualité du maillage",
ang="Mesh quality" ),
#
-# 8.3. Connexite du maillage
+# 12.3. Connexite du maillage
#
- CONNEXITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ CONNEXITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
fr="Connexité du maillage.",
ang="Mesh connexity." ),
#
-# 8.4. Taille des sous-domaines du maillage
+# 12.4. Taille des sous-domaines du maillage
#
- TAILLE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ TAILLE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
fr="Tailles des sous-domaines du maillage.",
ang="Sizes of mesh sub-domains." ),
#
-# 8.5. Controle de la non-interpenetration des éléments
+# 12.5. Controle de la non-interpenetration des éléments
#
- INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ 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." ),
#
-) ;
+# 13. Gestion des éléments autres que ceux compatibles avec HOMARD
+# "REFUSER" : ils sont refuses (defaut)
+# "IGNORER" : ils sont ignorés
+#
+ ELEMENTS_NON_HOMARD = SIMP(statut='f',typ='TXM',defaut="REFUSER",into=("REFUSER","IGNORER"),
+ fr="Acceptation d'éléments incompatibles avec HOMARD",
+ ang="Incompatible elements for HOMARD" ),
+#
+) ;
#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,3,) ),
) ;
-#& MODIF COMMANDE DATE 07/11/2005 AUTEUR GNICOLAS G.NICOLAS
+#& MODIF COMMANDE DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
#
# 1. Le niveau d'information
#
- INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
#
# 2. Version de HOMARD
#
- VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V7_7",
- into=("V7_7", "V7_N", "V7_N_PERSO", "V8_N"),
- fr="Version de HOMARD",
- ang="HOMARD release"),
+ VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V8_2",
+ into=("V8_2", "V8_N", "V8_N_PERSO"),
+ fr="Version de HOMARD",
+ ang="HOMARD release"),
#
# 3. 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." ),
+ 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." ),
#
-# 4. Gestion des éléments autres que des simplexes
-# 0 : autres elements refusés
-# 1 : analyse exclusivement sur les simplexes, mais autres éléments acceptés
-# 2 : tous (defaut)
+# 4. Le nom du maillage a analyser
#
- NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=2,into=(0,1,2),
- fr="Acceptation d'éléments quad, hexa et penta",
- ang="quad, hexa and penta elements allowed" ),
+ MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,
+ fr="Maillage à analyser.",
+ ang="Mesh to be checked." ),
#
-# 5. Le nom du maillage a analyser
+# 5. Suivi d'une frontiere
#
- MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,
- fr="Maillage à analyser.",
- ang="Mesh to be checked." ),
-#
-# 6. Suivi d'une frontiere
-#
- MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
+ MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
fr="Maillage de la frontiere à suivre",
ang="Boundary mesh" ),
#
- b_frontiere =BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
- fr="Groupes définissant la frontière",
- ang="Groups which define the boundary",
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ),
- ) ,
+ b_frontiere = BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
+ fr="Information complémentaire sur la frontière",
+ ang="Further information about boundary",
#
-# 7. Les options ; par defaut, on ne fait que les nombres
-# 7.1. Nombre de noeuds et elements
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="Groupes de mailles définissant la frontière",
+ ang="Mesh groups which define the boundary" ),
#
- 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" ),
+ ) ,
#
-# 7.2. Determination de la qualite des elements du maillage
+# 6. Les options ; par defaut, on controle tout
+# 6.1. Nombre de noeuds et elements
#
- QUALITE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Qualité du maillage",
- ang="Mesh quality" ),
+ 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" ),
#
-# 7.3. Connexite du maillage
+# 6.2. Determination de la qualite des elements du maillage
#
- CONNEXITE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Connexité du maillage.",
- ang="Mesh connexity." ),
+ QUALITE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Qualité du maillage",
+ ang="Mesh quality" ),
#
-# 7.4. Taille des sous-domaines du maillage
+# 6.3. Connexite du maillage
#
- TAILLE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Tailles des sous-domaines du maillage.",
- ang="Sizes of mesh sub-domains." ),
+ CONNEXITE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Connexité du maillage.",
+ ang="Mesh connexity." ),
#
-# 7.5. Controle de la non-interpenetration des elements
+# 6.4. Taille des sous-domaines du maillage
#
- INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Controle de la non interpénétration des éléments.",
- ang="Overlapping checking." ),
+ TAILLE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Tailles des sous-domaines du maillage.",
+ ang="Sizes of mesh sub-domains." ),
+#
+# 6.5. Controle de la non-interpenetration des elements
+#
+ INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Controle de la non interpénétration des éléments.",
+ ang="Overlapping checking." ),
#
+# 7. Gestion des éléments autres que ceux compatibles avec HOMARD
+# "REFUSER" : ils sont refuses (defaut)
+# "IGNORER" : ils sont ignorés
+#
+ ELEMENTS_NON_HOMARD = SIMP(statut='f',typ='TXM',defaut="REFUSER",into=("REFUSER","IGNORER"),
+ fr="Acceptation d'éléments incompatibles avec HOMARD",
+ ang="Incompatible elements for HOMARD" ),
) ;
#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
UNITE =SIMP(statut='f',typ='I',defaut=15),
),
) ;
-#& MODIF COMMANDE DATE 13/03/2006 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
UIinfo={"groupes":("Impression",)},
fr="Tester la non régression de fichiers produits par des commandes aster",
FICHIER =SIMP(statut='o',typ='TXM',validators=LongStr(1,255)),
- NB_CHIFFRE =SIMP(statut='f',typ='I',defaut=6),
- EPSILON =SIMP(statut='f',typ='R',defaut=1.E-14),
+ NB_CHIFFRE =SIMP(statut='o',typ='I',), # defaut=6 pas de defaut, il faut
+ EPSILON =SIMP(statut='o',typ='R',), # defaut=1.E-12 se poser la question !
EXPR_IGNORE =SIMP(statut='f',typ='TXM',max='**',
fr="Liste d'expressions régulières permettant d'ignorer certaines lignes"),
VALE_K =SIMP(statut='o',typ='TXM' ),
UNITE_RESU_FORC =SIMP(statut='f',typ='I',defaut=30),
) ;
-#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG
-#@ MODIF N_SENSIBILITE Noyau DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF N_SENSIBILITE Noyau DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
-#@ MODIF V_MCCOMPO Validation DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF V_MCCOMPO Validation DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================