Max Stressknoten

Ich versuche, Skripte zu generieren, um automatisch Ansichten eines Modells an der maximalen Stressposition zu erstellen. Ich weiß, ich könnte jeden Knoten lesen und den Stress von jedem mit Python überprüfen, aber das wird eine Weile wegen der Größe des Modells dauern. Wie diese Funktion in CAE erscheint, gibt es eine einfache Möglichkeit, dies zu schreiben? Sobald ich den Knoten kenne, bin ich interessiert an Ich kann dann den Ort nutzen, um die Ansichten zu generieren, die ich will.

2 Solutions collect form web for “Max Stressknoten”

FWIW hier ist der beste Ansatz, den ich kenne ..:

  field=frame.fieldOutputs['S'].getScalarField(componentLabel='S11') maxp = max([ (g.data,g.elementLabel,g.integrationPoint) for g in field.values ]) 

(242.4324, 10333, 1)

Wenn man bedenkt, was du tust, denke ich, dass der Maximal-Integrationspunkt Wert wahrscheinlich ist, was du willst. Das Erhalten des Knotenmittelwertes wird viel langsamer und komplizierter.

Berechnung der einzigartigen Knotenbelastungen

Zuerst musst du darüber nachdenken, welche Stresswerte du nicht haben sollst. (Max einmalige nodal Stress des ganzen Tensors, Mises, MaxPrincipal, …) Wenn Sie wan't zum Beispiel einmalige nodal Mises betont, können Sie Mises-Spannungen für jeden extrapolierten Stress-Tensor berechnen und die einmaligen Knotenstresse oder die andere Weise berechnen um. Sie finden diese Option auch im Abaqus CAE Gui.

In dieser Antwort werde ich zeigen, wie man den maximalen Stresswert für einen ganzen einzigartigen Knotenstress-Tensor berechnet.

Zuerst bekommst du die Stresswerte. Wenn Sie Abaqus Python 6.13 oder neuere installiert haben, verwenden Sie die FieldBulkData-Methode, um Ihre Daten zu erhalten. Es ist viel schneller als die Wertmethode in der Antwort von agentp gezeigt. Beispielsweise:

 Field=odb.steps[Steps[0]].frames[1].fieldOutputs['S'] Field = Field.getSubset(position = ELEMENT_NODAL) Values=Field.bulkDataBlocks[0].data NodeLabels=Field.bulkDataBlocks[0].nodeLabels 

Jetzt haben wir die extrapolierten Stresswerte. Die Berechnung der eindeutigen Werte wird aus dem Durchschnitt aller Zeilen kopiert , die allen eindeutigen Zeilen entsprechen

 NodeLabels_unique, unq_idx = np.unique(NodeLabels, return_inverse=True) Values_Averaged=np.zeros((NodeLabels_unique.size,Values.shape[1])) unq_counts = np.bincount(unq_idx) for i in xrange(0,Values.shape[1]): unq_sum = np.bincount(unq_idx, weights=Values[:,i]) Values_Averaged[:,i] = unq_sum / unq_counts #Index of max stress value max_ind=np.unravel_index(np.argmax(Values_Averaged),Values_Averaged.shape) #Print the results print("The max stress is at NodeLabel "+str(NodeLabels_unique[max_ind[0]])+ " its value is "+ str(Values_Averaged[max_ind]) +" MPa.") 

Bei meinem Notebook dauert der gesamte Mittelungsprozess etwa 9s für 17.000.000 Element_Nodale Werte.

Python ist die beste Programmiersprache der Welt.