User login

Navigation

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])
                  

 

 

 

Subscribe to Comments for "getting max prin stress out by python script from ABAqUS"

More comments

Syndicate

Subscribe to Syndicate