Bonjour à tous,
j'essaie actuellement de lancer plusieurs simulations numériques à la suite. je me sert donc de python pour créer les fichier de configuration du logiciel de simulation (mécanique des milieux anisotropes), puis je me sert de la commande "os.system('Craft',Name,'.in')" avec Name qui est le nom du fichier de configuration, in l'extension, et Craft le logiciel que j'utilise.
ceci fait, je voudrai traiter les fichiers résultats, modifie les conditions de chargement et relancer les calculs. Si je met la ligne citée au dessus en commentaire, le programme marche (à ceci prés qu'il ne simule rien). Mais si je lance le calcul sur le logiciel Craft, il se lance, mais une fois au bout, python ne reprend pas la suite des instruction, et le script s'arrête. Sauriez vous d'où cela peux venir ?
Merci d'avance

Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# -*- coding: utf-8 -*-
"""
Created on Wed May 21 13:29:17 2014
 
@author: Mats
"""
import os
Name = raw_input("Entrez le nom du fichier que vous voulez: (sans l'extension)")
Traction = [0,0,0,0,0,0] # configuration du chargement [sigma11,sigma22,sigma33,sigma12,sigma13,sigma23]
Result = [0,0,0,0,0] #Variables de la matrice de rigidité 5 variables car materiau isotrope transverse
i = 0
ResultFile = open('Resultats.res','w')
while i <= 4:
    ## Configuration du fichier de chargement Traction.dat ##
    Tractiof = open("Traction.dat",'w')
    Traction = [0,0,0,0,0,0]
    Traction[i] = 1
    Tractiof.write('s')
    Tractiof.write(Traction[0],' ',Traction[1],' ',Traction[2],' ',Traction[3],' ',Traction[4],' ',Traction[5])
    Tractiof.close()
    ## Appel de Craft ##
    os.system('Craft',Name,'.in')
    ## traitement des résultats ##
    FEntry = open(Name,'.res')
    TableSigma = []
    TableEpsilon = []
    CurrentLine = FEntry.readline()
    while len(CurrentLine) > 0:
        if CurrentLine[0] != '#':
            CurrentlineList = CurrentLine.split()
            if len(CurrentlineList) > 0:
                TableEpsilon.append([float(CurrentlineList[5]),float(CurrentlineList[6]),float(CurrentlineList[7]),float(CurrentlineList[8]),float(CurrentlineList[9]),float(CurrentlineList[10])])
                TableSigma.append([float(CurrentlineList[11]),float(CurrentlineList[12]),float(CurrentlineList[13]),float(CurrentlineList[14]),float(CurrentlineList[15]),float(CurrentlineList[16])])
        CurrentLine = FEntry.readline()
    FEntry.close()
    if i == 0:
        ## Determination des 3 premieres variables materiaux ##
        Result[0] = (float(TableEpsilon[0][0])/float(TableSigma[0][0]))
        Result[2] = (float(TableEpsilon[0][1])/float(TableSigma[0][1]))
        Result[3] = (float(TableEpsilon[0][2])/float(TableSigma[0][2]))
        i += 2  # on peux sauter i = 1 car il y a redondance des variables materiau #
    if i == 2: 
        ## Determination de la 4eme variable materiau ##
        Result[1] = (float(TableEpsilon[0][2])/float(TableSigma[0][2]))
        i += 2 # on peux sauter i = 3 car il y a redondance des variables materiau #
    if i == 4:
        ## Determination de la 5eme variable materiau ##
        Result[4] = (float(TableEpsilon[0][4])/float(TableSigma[0][4]))
        i += 1000
#Sortie des resultats dans un fichier texte
ResultFile.write('a =', Result[0])
ResultFile.write('b =', Result[1])
ResultFile.write('c =', Result[2])
ResultFile.write('d =', Result[3])
ResultFile.write('e =', Result[4])