Python Skript soll Abaqus-INPs gleichzeitig starten

porenbeton

Lt. Junior Grade
Registriert
Nov. 2014
Beiträge
290
Hallo zusammen,

ich führe zur Zeit eine Parameterstudie mit Abaqus durch. Dafür muss ich viele Simulationen starten, was ich aktuell durch das folgende Python-Skript bewerkstellige. Das Skript habe ich im Netz gefunden, ich habe keine Erfahrung mit der Sprache. Soweit funktioniert das auch alles gut, nur dass die Simulationen alle nacheinander gestartet werden. Eine einzelne Simulation dauert bei mir 1 Minute, starte ich alle elf Simulationen händisch gleichzeitig dauert das etwa 3 Minuten. Es wäre also besser, per Skript alles gleichzeitig zu starten.

Wie baue ich das Skript um, damit alle Simulationen gleichzeitig starten? Das ganze darf gerne festverdrahtet sein: es sind immer elf Simulationen mit den immer gleichen Namen (durchnummeriert, 0.inp bis 10.inp). Die *.INPs liegen im selben Verzeichnis wie das Skript. Im besagten Verzeichnis wird auch simuliert.

Python:
# Python script to execute all input decks
# within the directory from which this script is run
#
import sys
import os
#
i=0
run=[]
#
COMMAND = os.environ['ABA_COMMAND']
print
print 'NOTE all input files in this directory will be executed with ',COMMAND
files = os.listdir('.')
print
#
while i < len(files):
   nameall = files[i]
   ext = nameall[(len(nameall)-3):]
   if ext == 'inp':
     run.append(nameall[:(len(nameall)-4)])
   i=i+1
#
i=0
#
while i < len(run):
   name = run[i]
   cmd = COMMAND+' -j '+str(name)+' inter'+' cpus=4'
   print 'Executing '+cmd
   os.system(cmd)
   i=i+1
#
print
print '***'
print '**Completed all analysis runs**'

Wie gesagt, ich habe keine Ahnung von Python und bin für jede Hilfe dankbar.
 
zu den imports Eine weitere Zeile hinzufügen:
Python:
import subprocess
Und
Python:
os.system(cmd)
durch
Python:
subprocess.Popen(cmd)
ersetzen.

Einfach mal ausprobieren ;)
 
  • Gefällt mir
Reaktionen: porenbeton
Zurück
Oben