Salome HOME
updated copyright message
[modules/homard.git] / doc / files / yacs_script.py
index 7a869d16e2aca2cb6c590c246b0fd103e3e36121..9641bca28f122b46a07c2ca6d1361ce7e2e41c87 100755 (executable)
@@ -1,9 +1,28 @@
-#!/usr/bin/env python
-# -*- coding: iso-8859-1 -*-
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Copyright (C) 2013-2023  CEA, EDF
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
 """
 Lancement d'un calcul ASTER
 """
-__revision__ = "V5.5"
+__revision__ = "V5.11"
 #
 import sys
 import os
@@ -15,25 +34,6 @@ import time
 # opt1_defaut, opt2_defaut : les valeurs par defaut de ces options, selon les cas
 opt1_defaut = {}
 opt2_defaut = {}
-# liste_cas_tr : liste des cas transitoires
-liste_cas_tr = []
-#
-nro_couche = 1
-opt1_defaut["couche"] = str(nro_couche)
-nro_adap = 0
-opt2_defaut["couche"] = str(nro_adap)
-#
-liste_cas_tr.append("tet_aster_ther_tr")
-opt1_defaut["tet_aster_ther_tr"] = "0"
-opt2_defaut["tet_aster_ther_tr"] = "25"
-#
-liste_cas_tr.append("ssnp142d")
-opt1_defaut["ssnp142d"] = "0.0"
-opt2_defaut["ssnp142d"] = "4.0"
-#
-liste_cas_tr.append("Riete")
-opt1_defaut["Riete"] = "0.0"
-opt2_defaut["Riete"] = "8.0"
 #
 # ==== Fin de personnalisation ====
 #
@@ -41,22 +41,25 @@ class Script :
 #
   """
 Mode d'emploi :
----------------
+==============
 
-Cette procedure lance un calcul Aster. Avant de lancer ce script, il faut avoir cree un repertoire pour le calcul. Dans ce repertoire, on aura mis le fichier de commandes sous le nom 'calcul.comm'. Apres un premier calcul, lance traditionnellement, on aura copie le fichier '*export' sous le nom 'calcul.ref.export' dans ce repertoire.
+Cette procedure lance un calcul Aster. Avant de lancer ce script, il faut avoir cree un repertoire pour le calcul. Apres un premier calcul, qui aura ete lance traditionnellement, on aura copie le fichier '*export' sous le nom 'calcul.ref.export' dans ce repertoire.
 
 Le mode de lancement est le suivant :
 
-ScriptAster --rep_calc=rep_calc --num=nro --mesh_file=mesh_file [-dump] [-h|-help] [-v] [-v_max] options
+ScriptAster --rep_calc=rep_calc --mesh_file=mesh_file --num=nro [-dump] [-tr [--opt1=inst_deb] [--opt2=inst_fin]] [-h|-help] [-v] [-v_max]
 
 Arguments obligatoires :
+------------------------
 --rep_calc=rep_calc : le repertoire du calcul.
+--mesh_file=mesh_file : le fichier contenant le maillage sur lequel on veut calculer. Le nom est absolu ou relatif par rapport au repertoire de calcul ou a $HOME.
 --num=nro : le numero du calcul, depuis 0.
---mesh_file=mesh_file : le fichier contenant le maillage sur lequel on veut calculer. Le nom est absolu ou relatif par rapport au repertoire de calcul.
 
 Options supplementaires, selon les cas :
-. Pour un cas transitoire :
-Les numeros des instants varient de 0 a N. On fournit le numero ou l'instant ; le jeu de commandes fait le tri entre les deux options.
+----------------------------------------
+. Pour un cas transitoire avec changement des instants de debut et fin :
+On doit faire le choix -tr
+Les numeros des instants varient de 0 a N. On fournit le numero ou l'instant selon les commandes.
 --opt1=inst_deb : le numero ou l'instant initial ; si absent, on prend 0.
 --opt2=inst_fin : le numero ou l'instant final ; si absent, on va jusqu'au bout du transitoire.
 . Pour l'excavation :
@@ -66,18 +69,19 @@ Les numeros des instants varient de 0 a N. On fournit le numero ou l'instant ; l
 Aucune option supplementaire.
 
 Arguments optionnels :
-
+----------------------
+--tr=1 : le calcul est transitoire et on change les instants ; par defaut, pas de changement.
 --wait=wait : temps d'attente en secondes entre deux examens de l'etat d'un calcul batch ; si absent, on prend 10.
-
 -dump : produit le fichier dump du fichier med de resultats ; par defaut, pas de dump.
 
 -h|-help : produit l'aide, quels que soient les autres arguments
 -v : mode verbeux simple
 -v_max : mode verbeux intensif
 
-Exemple :
-./ScriptAster.py --rep_calc=`pwd` --num=0 --mesh_file=maill.00.med -dump
-./ScriptAster.py --rep_calc=/scratch/D68518/HOMARD_SVN/trunk/training/tet_aster_ther --num=2 --mesh_file=/scratch/D68518/Salome/Adapt/resu/maill.02.med
+Exemples :
+----------
+./ScriptAster.py --rep_calc=`pwd` --mesh_file=maill.00.med --num=0 -dump
+./ScriptAster.py --rep_calc=/scratch/D68518/HOMARD_SVN/trunk/training/tet_aster_ther --mesh_file=/scratch/D68518/Salome/Adapt/resu/maill.02.med --num=2
   """
 #
 #====
@@ -94,7 +98,7 @@ Exemple :
 #
 # 0.2. ==> Le user
 #
-  if os.environ.has_key("LOGNAME") :
+  if "LOGNAME" in os.environ :
     user = os.environ ["LOGNAME"]
   else :
     user = "salome"
@@ -131,11 +135,12 @@ Le constructeur de la classe Script
 # 1. Decodage des arguments
 #
     self.rep_calc = None
-    self.num = None
+    self.numero = None
     self.mesh_file = None
     self.opt1 = None
     self.opt2 = None
     self.version = None
+    self.tr = 0
 #
     for argu in liste_arg :
 #
@@ -151,6 +156,8 @@ Le constructeur de la classe Script
           self.numero = int(l_aux[1])
         elif l_aux[0] == "--mesh_file" :
           self.mesh_file = l_aux[1]
+        elif l_aux[0] == "--tr" :
+          self.tr = l_aux[1]
         elif l_aux[0] == "--opt1" :
           self.opt1 = l_aux[1]
         elif l_aux[0] == "--opt2" :
@@ -171,21 +178,22 @@ Le constructeur de la classe Script
         elif saux == "-DUMP" :
           self.dump = 1
 #
-# 2. Les paramètres de base
+# 2. Les paramètres de base
 #
     self.dico = {}
     self.nomfic_export = None
     self.nomcas = ""
+    self.numero_str = None
 #
     if self.verbose_max :
       nom_fonction = __name__ + "/__init__"
-      print "\nDans " + nom_fonction + ","
-      print ". rep_calc  :", self.rep_calc
-      print ". numero    :", self.numero
-      print ". mesh_file :", self.mesh_file
-      print ". opt1      :", self.opt1
-      print ". opt2      :", self.opt2
-      print ". attente   :", self.attente
+      print("\nDans " + nom_fonction + ",")
+      print(". rep_calc       :", self.rep_calc)
+      print(". mesh_file      :", self.mesh_file)
+      print(". numero         :", self.numero)
+      print(". opt1           :", self.opt1)
+      print(". opt2           :", self.opt2)
+      print(". attente        :", self.attente)
 #
 #=========================  Fin de la fonction ===================================
 #
@@ -249,8 +257,8 @@ Lancement d'un calcul
       break
 #
     if self.verbose_max :
-      print blabla
-      print ". erreur :", erreur
+      print(blabla)
+      print(". erreur :", erreur)
 #
     return erreur, message_erreur, dico_resu
 #
@@ -263,8 +271,6 @@ Lancement d'un calcul
     """
 Preparation d'un calcul
     """
-#
-    messages_erreur = { 0 : None }
 #
     nom_fonction = __name__ + "/prepa_calcul"
     blabla = "\nDans " + nom_fonction + ","
@@ -273,10 +279,10 @@ Preparation d'un calcul
     message_erreur = " "
 #
     if self.verbose_max :
-      print blabla
-      print ". numero    :", self.numero
-      print ". mesh_file :", self.mesh_file
-      print ". rep_calc  :", self.rep_calc
+      print(blabla)
+      print(". rep_calc       :", self.rep_calc)
+      print(". mesh_file      :", self.mesh_file)
+      print(". tr             :", self.tr)
 #
     while not erreur :
 #
@@ -295,7 +301,7 @@ Preparation d'un calcul
 # 3. Modifications du fichier de commandes
 # 3.1. Pour un cas transitoire
 #
-      if self.nomcas in liste_cas_tr :
+      if self.tr :
         erreur, message_erreur = self.modif_cas_transitoire()
         if erreur :
           break
@@ -310,8 +316,8 @@ Preparation d'un calcul
       break
 #
     if self.verbose_max :
-      print blabla, "a la fin"
-      print ". erreur :", erreur
+      print(blabla, "a la fin")
+      print(". erreur :", erreur)
 #
     return erreur, message_erreur
 #
@@ -327,14 +333,14 @@ Controle les arguments et stockage de quelques informations
 #
     messages_erreur = { 0 : None,
                        -1 : "Quel repertoire de calcul ?",
-                       -2 : "Quel fichier de maillage ?",
-                       -3 : "Ce repertoire est inconnu.",
-                       -4 : "Ce fichier est inconnu.",
-                       -5 : "Quel temps d'attente ?",
-                       -6 : "Quel numero de calcul ?",
-                       -7 : "Numeros de pas de temps invalides.",
-                       -8 : "Numero de couche invalide.",
-                       -9 : "Numero d'adaptation invalide." }
+                       -3 : "Quel fichier de maillage ?",
+                       -4 : "Ce repertoire est inconnu.",
+                       -5 : "Ce fichier est inconnu.",
+                       -8 : "Quel temps d'attente ?",
+                       -9 : "Quel numero de calcul ?",
+                      -20 : "Numeros de pas de temps invalides.",
+                      -30 : "Numero de couche invalide.",
+                      -31 : "Numero d'adaptation invalide." }
 #
     nom_fonction = __name__ + "/controle_argument"
     blabla = "\nDans " + nom_fonction + ","
@@ -343,59 +349,61 @@ Controle les arguments et stockage de quelques informations
     message_erreur = " "
 #
     if self.verbose_max :
-      print blabla
-      print ". rep_calc  :", self.rep_calc
-      print ". mesh_file :", self.mesh_file
-      print ". numero    :", self.numero
-      print ". attente   :", self.attente
-      print ". opt1      :", self.opt1
-      print ". opt2      :", self.opt2
+      print(blabla)
+      print(". rep_calc       :", self.rep_calc)
+      print(". mesh_file      :", self.mesh_file)
+      print(". numero         :", self.numero)
+      print(". tr             :", self.tr)
+      print(". opt1           :", self.opt1)
+      print(". opt2           :", self.opt2)
+      print(". attente        :", self.attente)
 #
     while not erreur :
 #
 # 1. Les repertoire et fichier
+# 1.1. Il y a bien eu une donnee
 #
       if self.rep_calc == None :
         erreur = -1
       elif self.mesh_file == None :
-        erreur = -2
+        erreur = -3
       if erreur < 0 :
         self.message_info += "Relancer avec -h pour avoir le mode d'emploi."
         break
 #
-      if os.environ.has_key("HOME") :
-        HOME = os.environ ["HOME"]
-      else :
-        HOME = "/local/home/salome"
+# 1.2. Le repertoire de calcul
 #
-      if ( self.rep_calc[:1] == "~" ) :
-        self.rep_calc = os.path.join(HOME, self.rep_calc[2:])
+      self.rep_calc = os.path.expanduser(self.rep_calc)
       if not os.path.isdir(self.rep_calc) :
         self.message_info += "Repertoire " + self.rep_calc
-        erreur = -3
+        erreur = -4
         break
       else :
-        aux = os.path.join(os.getcwd(),self.rep_calc)
+        aux = os.path.join(os.getcwd(), self.rep_calc)
         self.rep_calc = os.path.normpath(aux)
 #
-      if ( self.mesh_file[:1] == "~" ) :
-        self.mesh_file = os.path.join(HOME, self.mesh_file[2:])
-      if not os.path.isfile(self.mesh_file) :
-        aux = os.path.join(self.rep_calc, self.mesh_file)
+# 1.3. Les fichiers
+#
+      fic = self.mesh_file
+#
+      fic = os.path.expanduser(fic)
+      if not os.path.isfile(fic) :
+        aux = os.path.join(self.rep_calc, fic)
         if not os.path.isfile(aux) :
-          self.message_info += "Fichier " + self.mesh_file
-          erreur = -4
+          self.message_info += "Fichier : " + fic
+          erreur = -5
           break
         else :
-          self.mesh_file = os.path.normpath(aux)
-      aux = os.path.join(os.getcwd(),self.mesh_file)
+          fic = os.path.normpath(aux)
+      aux = os.path.join(os.getcwd(), fic)
+#
       self.mesh_file = os.path.normpath(aux)
 #
 # 2. On en deduit le cas
 #
       self.nomcas = os.path.basename(self.rep_calc)
       if self.verbose_max :
-        print ". Cas :", self.nomcas
+        print(". Cas :", self.nomcas)
 #
 # 3. Le temps d'attente
 #
@@ -403,28 +411,39 @@ Controle les arguments et stockage de quelques informations
       try :
         iaux = int(self.attente)
       except :
-        erreur = -5
+        erreur = -8
         break
       self.attente = iaux
 #
 # 4. Le numero du calcul
 #
       if self.numero == None :
-        erreur = -6
+        erreur = -9
+#
+      if ( self.numero < 100 ) :
+        self.numero_str = "%02d" % self.numero
+      elif ( self.numero < 1000 ) :
+        self.numero_str = "%03d" % self.numero
+      elif ( self.numero < 10000 ) :
+        self.numero_str = "%04d" % self.numero
+      else :
+        self.numero_str = "%d" % self.numero
 #
 # 5. Options speciales pour les cas transitoires et pour l'excavation
 #
-      if ( self.nomcas in liste_cas_tr ) or ( self.nomcas[:6] == "couche" ) :
+      if ( self.tr or ( self.nomcas[:6] == "couche" ) ) :
 #
         if self.opt1 == None :
           self.opt1 = opt1_defaut[self.nomcas]
+          #print ". opt1 defaut :", self.opt1
 #
         if self.opt2 == None :
           self.opt2 = opt2_defaut[self.nomcas]
+          #print ". opt2 defaut :", self.opt2
 #
 # 5.1. Pour un cas transitoire
 #
-      if self.nomcas in liste_cas_tr :
+      if self.tr :
 #
         iaux1 = None
         daux1 = None
@@ -432,6 +451,8 @@ Controle les arguments et stockage de quelques informations
           iaux1 = int(self.opt1)
         except :
           daux1 = float(self.opt1)
+        if ( iaux1 == 0 ) :
+          daux1 = 0.
 #
         iaux2 = None
         daux2 = None
@@ -440,16 +461,18 @@ Controle les arguments et stockage de quelques informations
         except :
           daux2 = float(self.opt2)
 #
-        if ( ( daux1 == None ) and  ( daux2 == None ) ) :
+        if ( ( daux1 == None ) or  ( daux2 == None ) ) :
+          #print "------------ ( daux1 == None ) or  ( daux2 == None ) ------------"
           #print "iaux1, iaux2 =", iaux1, iaux2
           if iaux2 < iaux1 :
-            erreur = -7
-        elif ( ( iaux1 == None ) and  ( iaux2 == None ) ) :
+            erreur = -20
+        elif ( ( iaux1 == None ) or  ( iaux2 == None ) ) :
+          #print "------------ ( iaux1 == None ) or  ( iaux2 == None ) ------------"
           #print "daux1, daux2 =", daux1, daux2
           if daux2 < daux1 :
-            erreur = -7
+            erreur = -20
         else :
-          erreur = -7
+          erreur = -20
 #
         if erreur :
           self.message_info += "opt1 = " + self.opt1
@@ -463,21 +486,21 @@ Controle les arguments et stockage de quelques informations
         try :
           iaux1 = int(self.opt1)
         except :
-          erreur = -8
+          erreur = -30
 #
         if ( ( iaux1 < 1 ) or ( iaux1 > 20 ) ) :
           #print "iaux1 =", iaux1
-          erreur = -8
+          erreur = -30
 #
         iaux2 = None
         try :
           iaux2 = int(self.opt2)
         except :
-          erreur = -9
+          erreur = -31
 #
         if ( iaux2 < 0 ) :
           #print "iaux1 =", iaux1
-          erreur = -9
+          erreur = -31
 #
         if erreur :
           self.message_info += "nro_mail = " + self.numero
@@ -494,8 +517,10 @@ Controle les arguments et stockage de quelques informations
       message_erreur = messages_erreur[erreur]
 #
     if self.verbose_max :
-      print ". rep_calc  :", self.rep_calc
-      print ". mesh_file :", self.mesh_file
+      print(". rep_calc  :", self.rep_calc)
+      print(". mesh_file :", self.mesh_file)
+      print(". opt1      :", self.opt1)
+      print(". opt2      :", self.opt2)
 #
     return erreur, message_erreur
 #
@@ -518,16 +543,16 @@ Modification du fichier export et reperage de quelques informations
     message_erreur = " "
 #
     if self.verbose_max :
-      print blabla
-      print ". numero    :", self.numero
-      print ". mesh_file :", self.mesh_file
+      print(blabla)
+      print(". numero     :", self.numero)
+      print(". mesh_file  :", self.mesh_file)
 #
     while not erreur :
 #
 # 1. Lecture du fichier export original
 #
-      nomfic_export = os.path.join(self.rep_calc, "calcul.ref.export")
-      fic = open (nomfic_export, "r")
+      fic_export_ref = os.path.join(self.rep_calc, "calcul.ref.export")
+      fic = open (fic_export_ref, "r")
       les_lignes = fic.readlines()
       fic.close()
 #
@@ -536,8 +561,10 @@ Modification du fichier export et reperage de quelques informations
       nomfic = "calcul"
       if self.nomcas[:6] == "couche" :
         nomfic += ".%02d" % self.nro_couche
-      nomfic += ".%03d.export" % self.numero
+      nomfic += "." + self.numero_str + ".export"
       self.nomfic_export = os.path.join(self.rep_calc, nomfic)
+      if self.verbose_max :
+        print(". nouveau fic_export :", self.nomfic_export)
       fic = open (self.nomfic_export, "w")
 #
 # 3. Exploration des lignes
@@ -552,10 +579,13 @@ Modification du fichier export et reperage de quelques informations
 # 3.2. Decodage des composants de la ligne pour un fichier
 #
         if ligne[0:2] == "F " :
+#
+          chgt = False
 #
           laux = ligne.split()
           #print laux
           typfic = laux[1]
+          statut = laux[3]
           #print typfic
 #
           nomfic_0 = laux[2]
@@ -566,60 +596,58 @@ Modification du fichier export et reperage de quelques informations
 #
 # 3.2.1. Si c'est le fichier de commandes, mise a jour du nom du repertoire
 #
-          if typfic == "comm" :
+          if ( typfic == "comm" ) :
 #
+            if self.verbose_max :
+              print(". Commandes : mise a jour du nom du repertoire")
+            chgt = True
             nomfic_l_0 = os.path.basename(nomfic_0)
             nomfic = os.path.join(self.rep_calc, nomfic_l_0)
 #
-# 3.2.2. Si ce n'est pas le fichier de commandes, mise a jour du nom
+# 3.2.2. Si c'est un fichier de resultats ou le fichier de maillage, mise a jour du nom
 #
-          else :
+          elif ( ( statut == "R" ) or ( typfic == "mmed" ) ) :
+            if self.verbose_max :
+              print(". Mise a jour du nom")
+            chgt = True
 #
 # 3.2.2.1. Le fichier de maillage est celui passe en argument
 #
             if typfic == "mmed" :
               nomfic = self.mesh_file
 #
-# 3.2.2.2. Pour les autres fichiers, on recupère le nom initial
+# 3.2.2.2. Pour les autres fichiers, on recupère le nom initial
 #
             else :
               nomfic_l_0 = os.path.basename(nomfic_0)
               laux1 = nomfic_l_0.split(".")
+              #print "laux1 =", laux1
 #
 # 3.2.2.2.1. Base des noms de fichiers si excavation
 #
               if laux1[0] == "couche_n" :
                 saux0 = "couche_%02d" % self.nro_couche
               else :
-                saux0 = laux1[0]
+                iaux = len(laux1[-1]) + 1
+                saux0 = nomfic_l_0[:-iaux]
+              #print "saux0 =", saux0
 #
 # 3.2.2.2.2. Indicage des fichiers
 #
-              if len(laux1) >= 3 :
-                iaux = len(laux1[1])
-                if iaux == 2 :
-                  saux1 = "%02d" % self.numero
-                elif iaux == 3 :
-                  saux1 = "%03d" % self.numero
-                elif iaux == 4 :
-                  saux1 = "%04d" % self.numero
-                else :
-                  saux1 = "%d" % self.numero
-                nomfic_l = saux0 + "." + saux1 + "." + laux1[2]
-              else :
-                nomfic_l = saux0 + "." + laux1[1]
-#
+              nomfic_l = saux0 + "." + self.numero_str + "." + laux1[-1]
               nomfic_l_1 = os.path.dirname(nomfic_0)
               nomfic = os.path.join(nomfic_l_1, nomfic_l)
+            #print "   ==> ", nomfic
 #
-          ligne_bis  = laux[0] + " " + laux[1] + " " + saux
-          ligne_bis += nomfic + " "
-          ligne_bis += laux[3] + " " + laux[4] + "\n"
+          if chgt :
+            ligne_bis  = laux[0] + " " + laux[1] + " " + saux
+            ligne_bis += nomfic + " "
+            ligne_bis += laux[3] + " " + laux[4] + "\n"
 #
 # 3.2.2.3. On detruit preventivement les fichiers des resultats
 #
-          if self.nomcas[:6] != "couche" :
-            if laux[3] == "R" :
+          if ( statut == "R" ) :
+            if ( self.nomcas[:6] != "couche" ) :
               if os.path.isfile(nomfic) :
                 os.remove(nomfic)
 #
@@ -648,16 +676,7 @@ Modification du fichier export et reperage de quelques informations
             nomfic_l_0 = os.path.basename(nomfic_0)
             laux1 = nomfic_l_0.split(".")
             if len(laux1) >= 3 :
-              iaux = len(laux1[1])
-              if iaux == 2 :
-                saux1 = "%02d" % self.numero
-              elif iaux == 3 :
-                saux1 = "%03d" % self.numero
-              elif iaux == 4 :
-                saux1 = "%04d" % self.numero
-              else :
-                saux1 = "%d" % self.numero
-              nomfic_l = laux1[0] + "." + saux1 + "." + laux1[2]
+              nomfic_l = laux1[0] + "." + self.numero_str + "." + laux1[2]
             elif len(laux1) >= 2 :
               if laux1[0] == "couche_nm1" :
                 saux0 = "couche_%02d" % (self.nro_couche-1)
@@ -713,13 +732,13 @@ Modification du fichier export et reperage de quelques informations
       message_erreur = messages_erreur[erreur]
 #
     if self.verbose_max :
-      print ". mclient    ", self.mclient
-      print ". uclient    ", self.uclient
-      print ". serveur    ", self.serveur
-      print ". username   ", self.username
-      print ". aster_root ", self.aster_root
-      print ". nomjob     ", self.nomjob
-      print ". mode       ", self.mode
+      print(". mclient    ", self.mclient)
+      print(". uclient    ", self.uclient)
+      print(". serveur    ", self.serveur)
+      print(". username   ", self.username)
+      print(". aster_root ", self.aster_root)
+      print(". nomjob     ", self.nomjob)
+      print(". mode       ", self.mode)
 #
     return erreur, message_erreur
 #
@@ -743,9 +762,9 @@ Modification du fichier de commandes lie au cas transitoire
     message_erreur = " "
 #
     if self.verbose_max :
-      print blabla
-      print ". opt1 :", self.opt1
-      print ". opt2 :", self.opt2
+      print(blabla)
+      print(". opt1 :", self.opt1)
+      print(". opt2 :", self.opt2)
 #
     while not erreur :
 #
@@ -769,7 +788,7 @@ Modification du fichier de commandes lie au cas transitoire
       for ligne in les_lignes :
 #
         if self.verbose_max :
-          print "ligne =", ligne[:-1]
+          print("ligne =", ligne[:-1])
 #
 # 3.1. Pas de modification, a priori
 #
@@ -849,10 +868,10 @@ Modification du fichier de commandes lie au cas de l'excavation
     message_erreur = " "
 #
     if self.verbose_max :
-      print blabla
-      print ". numero     :", self.numero
-      print ". nro_couche :", self.nro_couche
-      print ". nro_adap   :", self.nro_adap
+      print(blabla)
+      print(". numero     :", self.numero)
+      print(". nro_couche :", self.nro_couche)
+      print(". nro_adap   :", self.nro_adap)
 #
     while not erreur :
 #
@@ -876,7 +895,7 @@ Modification du fichier de commandes lie au cas de l'excavation
       for ligne in les_lignes :
 #
         if self.verbose_max :
-          print "ligne =", ligne[:-1]
+          print("ligne =", ligne[:-1])
 #
 # 3.1. Pas de modification, a priori
 #
@@ -948,8 +967,8 @@ Lancement d'un calcul
     message_erreur = " "
 #
     if self.verbose_max :
-      print ". mclient    ", self.mclient
-      print ". serveur    ", self.serveur
+      print(". mclient    ", self.mclient)
+      print(". serveur    ", self.serveur)
 #
 # 1. Copie du fichier export sur le serveur de calcul
 #
@@ -958,8 +977,8 @@ Lancement d'un calcul
       nomfic_export_dist = self.nomjob + ".export"
       commande = "scp " + self.nomfic_export + " " + self.username + "@" + self.serveur + ":" + nomfic_export_dist
       if self.verbose_max :
-        print "Copie du fichier export vers", self.serveur, ":"
-        print commande
+        print("Copie du fichier export vers", self.serveur, ":")
+        print(commande)
       erreur = os.system(commande)
 #
 # 2. Commande du lancement
@@ -972,8 +991,10 @@ Lancement d'un calcul
     #if self.verbose_max :
       #print commande_base
 #
-    fic_caract   = tempfile.mktemp()
-    fic_caract_2 = tempfile.mktemp()
+    t_aux = tempfile.mkstemp()
+    fic_caract   = t_aux[1]
+    t_aux = tempfile.mkstemp()
+    fic_caract_2 = t_aux[1]
 #
 # 3. Lancement
 # 3.1. Commande finale
@@ -987,8 +1008,8 @@ Lancement d'un calcul
     commande += " 1>" + fic_caract
     commande += " 2>" + fic_caract_2
     if self.verbose_max :
-      print "Lancement sur", self.serveur, ":"
-      print commande
+      print("Lancement sur", self.serveur, ":")
+      print(commande)
 #
 # 3.2. Lancement vrai
 #
@@ -1001,10 +1022,10 @@ Lancement d'un calcul
       self.message_info += self.dico["rmed"]+"\n"
 #
     if self.verbose_max :
-      print blabla
-      print ". erreur     :", erreur
-      print ". self.mode  :", self.mode
-      print ". fic_caract :", fic_caract
+      print(blabla)
+      print(". erreur     :", erreur)
+      print(". self.mode  :", self.mode)
+      print(". fic_caract :", fic_caract)
 #
     if erreur :
       message_erreur = messages_erreur[erreur]
@@ -1029,11 +1050,11 @@ fic_caract : fichier caracteristique du job
     message_erreur = " "
 #
     if self.verbose_max :
-      print ". fic_caract :", fic_caract
-      print ". nomjob     :", self.nomjob
-      print ". rep_calc   :", self.rep_calc
-      print ". mode       :", self.mode
-      print ". attente    :", self.attente
+      print(". fic_caract :", fic_caract)
+      print(". nomjob     :", self.nomjob)
+      print(". rep_calc   :", self.rep_calc)
+      print(". mode       :", self.mode)
+      print(". attente    :", self.attente)
 #
     if ( self.mode != "interactif" ) :
 #
@@ -1060,16 +1081,17 @@ fic_caract : fichier caracteristique du job
             numjob = laux1[0]
   #
       if self.verbose :
-        print ". numjob :", numjob
+        print(". numjob :", numjob)
 #
 # 2. Commande de l'examen de l'etat du job,
 #
       fic_etat = os.path.join(self.rep_calc, self.nomjob+".etat")
-      fic_etat_2 = tempfile.mktemp()
+      t_aux = tempfile.mkstemp()
+      fic_etat_2   = t_aux[1]
       commande_base  = os.path.join(self.aster_root, "bin", "as_run")
       commande_base += " --actu " + numjob + " " + self.nomjob + " " + self.mode
       if self.verbose_max :
-        print "commande_base =", commande_base
+        print("commande_base =", commande_base)
       if ( self.mclient == self.serveur ) :
         commande  = commande_base
       else :
@@ -1078,8 +1100,8 @@ fic_caract : fichier caracteristique du job
       commande += " 1>" + fic_etat
       commande += " 2>" + fic_etat_2
       if self.verbose_max :
-        print "Examen sur", self.serveur, ":"
-        print commande
+        print("Examen sur", self.serveur, ":")
+        print(commande)
 #
 # 3. Examen de l'etat du job, jusqu'a la fin
 #
@@ -1088,7 +1110,7 @@ fic_caract : fichier caracteristique du job
   #
         if encore % 4 == 0 :
           aux = ((encore-1)*self.attente) / 60
-          print "..", aux, "mn"
+          print("..", aux, "mn")
           #print diag
   #
         time.sleep(self.attente)
@@ -1109,7 +1131,7 @@ fic_caract : fichier caracteristique du job
               laux1 = laux[1].split("=")
               diag = laux1[1]
               if self.verbose_max :
-                print etat, diag
+                print(etat, diag)
               if etat in ( "RUN", "PEND" ) :
                 encore += 1
               else :
@@ -1134,8 +1156,8 @@ fic_caract : fichier caracteristique du job
       os.remove(fic_etat_2)
 #
     if self.verbose_max :
-      print blabla
-      print ". erreur :", erreur
+      print(blabla)
+      print(". erreur :", erreur)
 #
     if erreur :
       message_erreur = "Erreur dans le calcul"
@@ -1162,8 +1184,7 @@ Affichage de resultats selon les cas
     message_erreur = " "
 #
     dico_resu = {}
-    for cle in dico_resu_init.keys() :
-      dico_resu[cle] = dico_resu_init[cle]
+    dico_resu.update(dico_resu_init)
 #
     while not erreur :
 #
@@ -1241,9 +1262,9 @@ Affichage de resultats selon les cas
       break
 #
     if self.verbose :
-      print blabla
-      print ". erreur :", erreur
-      print ". dico_resu :", dico_resu
+      print(blabla)
+      print(". erreur :", erreur)
+      print(". dico_resu :", dico_resu)
 #
     if erreur :
       message_erreur = messages_erreur[erreur]
@@ -1277,7 +1298,7 @@ info = la ou les lignes recherchees
     nom_fonction = __name__ + "/post_aster_1"
     blabla = "\nDans " + nom_fonction + " :"
     if self.verbose_max :
-      print blabla, "nomfic =", nomfic, "chaine =", chaine, ", nuocc =", nuocc
+      print(blabla, "nomfic =", nomfic, "chaine =", chaine, ", nuocc =", nuocc)
 #
     trouve = False
     erreur = 0
@@ -1324,8 +1345,8 @@ info = la ou les lignes recherchees
       erreur = -1
 #
     if ( self.verbose_max or ( erreur>0 ) ) :
-      print blabla, "nomfic =", nomfic, "chaine =", chaine, ", nuocc =", nuocc
-      print ". erreur =", erreur
+      print(blabla, "nomfic =", nomfic, "chaine =", chaine, ", nuocc =", nuocc)
+      print(". erreur =", erreur)
 #
     if erreur :
       message_erreur = messages_erreur[erreur]
@@ -1367,8 +1388,8 @@ Dump du resultat du calcul
       self.message_info += fic_dump+"\n"
 #
     if self.verbose_max :
-      print blabla
-      print ". erreur :", erreur
+      print(blabla)
+      print(". erreur :", erreur)
 #
     os.remove(nomfic_donn)
 #