You are here
getting max prin stress out by python script from ABAqUS
hi all,
some how i was able to make a model by importing data in pro/e and then in abaqus.
i have a problem now that I have to take out TRESCA value and max and Min priciple stresses, for all nodes.
i was able to extract coordinates by my programm but when i substitutes "S.Tresca" for COORD in the program, it doesnt work.
there has been a question that stresses are only at elements but , i think abaqus by itself extrapolates by shape functions,to the nodes, and gives value, because that is possible in post processing by abaqus, but when i write in program it doesnt work.
please help soon as I have to do it till the end of january.
i am including the program in here.
input=getInputs(('plz specify the dierectory you want to search for*.odb durchsucht werden soll :','E:\spring test 1\final study\Test'))
Home=str(input[0])
os.chdir(Home) #Angegebenes Verzeichnis als Arbeitsverzeichniss definieren
akPfad = getcwd() #Aktueller Pfad auslesen
Liste = listdir(curdir) #alle Dateien im Pfad in eine Liste übertragen
#'For'-loop to go to the first step frame
for datei in Liste:
if datei[-3:] == "odb": #Alle .odb-Dateien der Liste werden ab hier bearbeitet
akPfad_neu=str(akPfad).replace('\\','/') #Umschreibung der Pfadbezeichnung,z.B. aus 'I:\Tutorium\Tiefziehen\' wird 'I:/Tutorium/Tiefziehen/' , damit ein bearbeiten in Abaqus möglich wird
ODB_Pfad=akPfad_neu+'/'+datei #Dateipfad und Dateiname(einschließlich .odb) verknüpfen
o1 = session.openOdb(name=ODB_Pfad) #.odb öffnen
session.viewports['Viewport: 1'].setValues(displayedObject=o1)
odb = session.odbs[ODB_Pfad] #Auch hier muss der genaue Dateiname inklusive Pfad eingetragen werden
nodeSetName='SET-1' #Hier Bezeichnung des Node-Sets der Blechunterseite eintragen
nodeSetName_Stem='SET-RP' #Hier Bezeichnung des Node-Set(s) des Stempel-RP's eintragen
stepName='Step-1' #Hier Bezeichnung des Auswerte-Steps eintragen
SpringName='CURVE1-1'
###############################################################################################################################################################################################################################################
#################################################################################################################################################################################################################################################
#############################
## Knoten Sets sortieren ##
#############################
modelName=session.viewports['Viewport: 1'].displayedObject.name #Angezeigter Modelname im .odb auslesen
dispFileName=modelName[:-4]+'_s11.xls' #Definition der Ausgabedateiname (Excel-Datei)
dispFile=open(dispFileName,'w') #Erstellen+Schreibzugriff auf Ausgabedatei
dispFile.write('Knoten \tX-Position_Blechunterseite \tY-Position_Blechunterseite \tZ-Position_Blechunterseite \n') #Überschriftenzeile
step = odb.steps[stepName] #Auswerte-Step definieren
Anzahl_Knoten = len(odb.rootAssembly.instances[SpringName].nodeSets[nodeSetName].nodes) #Anzahl der vorhandenen Knoten des NodeSets auslesen
FirstFrame = odb.steps[stepName].frames[-1] #Zugriff auf ersten Frame (Ausgangsposition)
variable1=FirstFrame.fieldOutputs['S.Max.Principle'] #Zugriff auf Knoten-Koordinaten (im Auswerte Set)
## variable1 = FirstFrame.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=((
## 'S', INTEGRATION_POINT, ((INVARIANT, 'Tresca'), )), ), nodeSets=(
## 'SET-1', ))
for i in range(Anzahl_Knoten): #In der Schleife werden die X- und Y-Koordinaten der einzelnen Punkte auf der Ober-/Unterseite ausgelesen und in eine Excel-Datei geschrieben
set = odb.rootAssembly.instances[SpringName].nodeSets[nodeSetName]
tresca=variable1.getSubset(region=set).values[i].data[0] #Z-Koordinate (.data[2])
#NodeSet Blechunterseite
## koord_x_unten=variable1.getSubset(region=set).values[i].data[0] #X-Koordinate (.data[0])
## koord_y_unten=variable1.getSubset(region=set).values[i].data[1] #Y-Koordinate (.data[1])
## koord_z_unten=variable1.getSubset(region=set).values[i].data[2] #Z-Koordinate (.data[2])
if i==0: #Für i==0 wird eine Liste mit dem ersten Eintrag erstellt
start1=[[tresca, i]] #Erster Werte in der Liste ist die Z-Koordinate da nach dieser später sortiert wird. Es wird zusätzlich als
# letzten Wert i eingetragen, dadurch können alle weiteren Listen nach dieser Reihenfolge sortiert werden
else: #Für alle weiteren i's werden die Koordinaten in der Liste angehängt
start1.append([tresca, i])
#print start
# start1.sort() #Sortieren der Liste nach der Z-Koordinate der Blechunterseite, (i - Reihenfolge nun, Sortierbedingung für alle weiteren Werte)
#dispFile.write('time \t 'start\t'+' \n')
for i in range(Anzahl_Knoten):
## key += [start1[i]]
dispFile.write('%f \t '%start1[i][0])
- hermatician's blog
- Log in or register to post comments
- 16035 reads
Recent comments