From: Christian Caremoli <> Date: Mon, 29 May 2006 07:48:38 +0000 (+0000) Subject: mise a niveau aster 8.2.22 X-Git-Tag: V1_10b2~27 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=514a51ca1a1dbe30fdfd34e2bd3b772997951b81;p=modules%2Feficas.git mise a niveau aster 8.2.22 --- diff --git a/Aster/Cata/cataSTA81/Macro/creation_donnees_homard.py b/Aster/Cata/cataSTA81/Macro/creation_donnees_homard.py new file mode 100644 index 00000000..3c41eccf --- /dev/null +++ b/Aster/Cata/cataSTA81/Macro/creation_donnees_homard.py @@ -0,0 +1,522 @@ +#@ 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 diff --git a/Aster/Cata/cataSTA81/Macro/macr_adap_mail_ops.py b/Aster/Cata/cataSTA81/Macro/macr_adap_mail_ops.py index 6c7afabb..0d1234c4 100644 --- a/Aster/Cata/cataSTA81/Macro/macr_adap_mail_ops.py +++ b/Aster/Cata/cataSTA81/Macro/macr_adap_mail_ops.py @@ -1,4 +1,4 @@ -#@ 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 # ====================================================================== @@ -20,14 +20,10 @@ # 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 @@ -57,7 +53,7 @@ def macr_adap_mail_ops ( self, # 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 @@ -79,17 +75,18 @@ def macr_adap_mail_ops ( self, # 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 # @@ -102,18 +99,16 @@ def macr_adap_mail_ops ( self, 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 # @@ -122,65 +117,67 @@ def macr_adap_mail_ops ( self, # # 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 = " " @@ -188,19 +185,25 @@ def macr_adap_mail_ops ( self, ### 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" @@ -231,11 +234,34 @@ def macr_adap_mail_ops ( self, ### 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" @@ -245,7 +271,7 @@ def macr_adap_mail_ops ( self, # # 2.3. ==> Suivi de frontière # -### print ".. Debut de 2.3." +#gn print "\n.. Debut de 2.3." # if ( MAILLAGE_FRONTIERE != None ) : # @@ -255,26 +281,53 @@ def macr_adap_mail_ops ( self, 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 # @@ -283,24 +336,28 @@ def macr_adap_mail_ops ( self, # . 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 ) : @@ -310,12 +367,15 @@ def macr_adap_mail_ops ( self, # # 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 @@ -324,23 +384,22 @@ def macr_adap_mail_ops ( self, # 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 ) : # @@ -348,10 +407,13 @@ def macr_adap_mail_ops ( self, 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(" 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 @@ -360,53 +422,36 @@ def macr_adap_mail_ops ( self, # # 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(" 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(" 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 @@ -416,17 +461,17 @@ def macr_adap_mail_ops ( self, # 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 @@ -446,7 +491,7 @@ def macr_adap_mail_ops ( self, # 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 : @@ -470,47 +515,49 @@ def macr_adap_mail_ops ( self, # 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 @@ -519,104 +566,67 @@ def macr_adap_mail_ops ( self, 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(" 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") : @@ -627,79 +637,62 @@ def macr_adap_mail_ops ( self, 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 @@ -709,39 +702,45 @@ def macr_adap_mail_ops ( self, 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 ) : @@ -753,37 +752,36 @@ def macr_adap_mail_ops ( self, 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 diff --git a/Aster/Cata/cataSTA81/Macro/macr_ascouf_calc_ops.py b/Aster/Cata/cataSTA81/Macro/macr_ascouf_calc_ops.py index 1d48ecf9..fcb37351 100644 --- a/Aster/Cata/cataSTA81/Macro/macr_ascouf_calc_ops.py +++ b/Aster/Cata/cataSTA81/Macro/macr_ascouf_calc_ops.py @@ -1,4 +1,4 @@ -#@ 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 # ====================================================================== @@ -616,7 +616,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA 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: diff --git a/Aster/Cata/cataSTA81/Macro/macr_ascouf_mail_ops.py b/Aster/Cata/cataSTA81/Macro/macr_ascouf_mail_ops.py index 8aae3f82..3495d88d 100644 --- a/Aster/Cata/cataSTA81/Macro/macr_ascouf_mail_ops.py +++ b/Aster/Cata/cataSTA81/Macro/macr_ascouf_mail_ops.py @@ -1,4 +1,4 @@ -#@ 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 # ====================================================================== @@ -19,7 +19,7 @@ # ====================================================================== - +import os.path from math import sqrt,cos,sin,pi,tan,log,fabs,ceil,fmod,floor import aster import string @@ -1484,8 +1484,7 @@ def write_file_dgib_ASCFDO(nomFichierDATG,RM,RC,ALPHA,NBTRAN,EP1,EP2,EPI,TETA1, 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() @@ -1602,8 +1601,7 @@ def write_file_dgib_ASCSQO(nomFichierDATG,TYPELE,RM,RC,ALPHA,NBTRAN,EP1,EP2, 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() @@ -1744,8 +1742,7 @@ def write_file_dgib_ASCSP1(nomFichierDATG,TYPELE,MCL_SOUS_EPAIS,NIVMAG,loc_datg) 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() @@ -2013,8 +2010,7 @@ def write_file_dgib_ASCRDO(nomFichierDATG,TYPELE,NIVMAG,TYPBOL,ALPHA,RC,RM,EP,SU 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() diff --git a/Aster/Cata/cataSTA81/Macro/macr_aspic_mail_ops.py b/Aster/Cata/cataSTA81/Macro/macr_aspic_mail_ops.py index 11af02c8..783db3ab 100644 --- a/Aster/Cata/cataSTA81/Macro/macr_aspic_mail_ops.py +++ b/Aster/Cata/cataSTA81/Macro/macr_aspic_mail_ops.py @@ -1,4 +1,4 @@ -#@ 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 # ====================================================================== @@ -19,44 +19,44 @@ # ====================================================================== - -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() @@ -105,9 +105,8 @@ def write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, 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() @@ -396,9 +395,8 @@ def write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, 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() diff --git a/Aster/Cata/cataSTA81/Macro/post_k1_k2_k3_ops.py b/Aster/Cata/cataSTA81/Macro/post_k1_k2_k3_ops.py index d621503a..5f3f5533 100644 --- a/Aster/Cata/cataSTA81/Macro/post_k1_k2_k3_ops.py +++ b/Aster/Cata/cataSTA81/Macro/post_k1_k2_k3_ops.py @@ -1,4 +1,4 @@ -#@ 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 # ====================================================================== @@ -704,9 +704,9 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,MATER,RESULTAT, # ---------- 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] diff --git a/Aster/Cata/cataSTA81/Macro/test_fichier_ops.py b/Aster/Cata/cataSTA81/Macro/test_fichier_ops.py index 878b8783..35d34da1 100644 --- a/Aster/Cata/cataSTA81/Macro/test_fichier_ops.py +++ b/Aster/Cata/cataSTA81/Macro/test_fichier_ops.py @@ -1,4 +1,4 @@ -#@ 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 # ====================================================================== @@ -21,8 +21,8 @@ import sys import os.path import re -import string -import math +from math import floor, log10 +from types import StringType import md5 #------------------------------------------------------------------------------- @@ -32,9 +32,7 @@ def test_fichier_ops(self, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args): '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) @@ -44,17 +42,14 @@ def test_fichier_ops(self, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args): 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']] @@ -62,22 +57,19 @@ def test_fichier_ops(self, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args): 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', ' %s pour %s' % (str(s), repr(exp))) else: l_regexp.append(exp) - if len(l_regexp) < len(lexp): - self.cr.fatal(' Expression régulière invalide (voir )') - - 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) @@ -86,28 +78,28 @@ def test_fichier_ops(self, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args): # 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=' '+texte_erreur + texte_erreur = 'Erreur dans md5file, code retour = '+str(ier) + texte_erreur = ' '+texte_erreur # aujourd'hui, je ne sais pas déclencher autre chose que ... 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', @@ -134,7 +126,33 @@ def test_fichier_ops(self, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args): #------------------------------------------------------------------------------- -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. @@ -145,7 +163,10 @@ def md5file(fich, nbch, epsi, regexp_ignore=[], info=0, output=None): 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 @@ -153,69 +174,73 @@ def md5file(fich, nbch, epsi, regexp_ignore=[], info=0, output=None): 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))=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 @@ -223,13 +248,16 @@ def md5file(fich, nbch, epsi, regexp_ignore=[], info=0, output=None): 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') @@ -238,6 +266,12 @@ if __name__ == '__main__': 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) + diff --git a/Aster/Cata/cataSTA81/cata.py b/Aster/Cata/cataSTA81/cata.py index ad2f62f1..62014c23 100755 --- a/Aster/Cata/cataSTA81/cata.py +++ b/Aster/Cata/cataSTA81/cata.py @@ -1,4 +1,4 @@ -#& 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 # ====================================================================== @@ -49,13 +49,38 @@ class entier (ASSD): 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 @@ -13670,304 +13695,6 @@ IMPR_CO=PROC(nom="IMPR_CO",op=17, 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 # ====================================================================== @@ -15210,7 +14937,7 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', ), ), ) ; -#& 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 @@ -15234,8 +14961,16 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n', 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: @@ -15252,312 +14987,395 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada # # 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 # ====================================================================== @@ -16420,7 +16238,7 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='n' ), 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 @@ -16449,80 +16267,82 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops, # # 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 @@ -19629,7 +19449,7 @@ POURSUITE=MACRO(nom="POURSUITE",op=ops.build_poursuite,repetable='n', 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 @@ -19656,8 +19476,8 @@ TEST_FICHIER=MACRO(nom="TEST_FICHIER", op=test_fichier_ops, 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' ), @@ -23631,7 +23451,7 @@ LIRE_FORC_MISS=OPER(nom="LIRE_FORC_MISS",op= 179,sd_prod=vect_asse_gene, 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 diff --git a/Noyau/N_SENSIBILITE.py b/Noyau/N_SENSIBILITE.py index ba405c00..29ffc1de 100644 --- a/Noyau/N_SENSIBILITE.py +++ b/Noyau/N_SENSIBILITE.py @@ -1,4 +1,4 @@ -#@ 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 # ====================================================================== diff --git a/Validation/V_MCCOMPO.py b/Validation/V_MCCOMPO.py index e55e8d7d..00b82091 100644 --- a/Validation/V_MCCOMPO.py +++ b/Validation/V_MCCOMPO.py @@ -1,4 +1,4 @@ -#@ 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 # ======================================================================