Ich habe ein Skript um nachträglich die Odb zu bearbeiten um die Triaxialität und den Lodewinkel einzufügen. Jedoch bekomme ich einen Fehler in der letzten Zeile:
Code:triax = allFields[Stress].getScalarField(invariant=PRESS)/allFields[Stress].getScalarField(invariant=MISES) xi = power(allFields[Stress].getScalarField(invariant=INV3)/allFields[Stress].getScalarField(invariant=MISES),3)
lode = 1-2/pi*acos(xi)
damit xi im Definitionsbereich zwischen -1 und 1 liegt habe ich folgende if Bedingung eingebaut.
Code:if xi < -1: xi = -1 elif xi > 1: xi = 1
diese if Funktion scheint hier nicht zu Funktionieren.
Ich hoffe es kann mir jemand sagen, mit welchem Code ich xi im Definitionsbereich der Arcus-Cosinus Funktion halten kann. Vielen Dank im Vorraus
[Diese Nachricht wurde von Harr am 02. Okt. 2013 editiert.]
erstellt am: 07. Okt. 2013 12:53 <-- editieren / zitieren --> Unities abgeben: Nur für Harr
Die Operation (FieldOutput / FieldOutput) ist nicht vorgesehen, siehe 9.8.2 Valid mathematical operations (Scripting User's Manual) Der erste Fehler liegt bereits in Zeile 134 vor. in Zeile 136 kommt der Fehler. (Error: Value out of range) [/QUOTE]
Also beim ersten Umwandeln der Odbs hat es Funktioniert, und die Werte sind auch i.O. was die Triaxialität angeht. (PRESS/MISES) -- (FieldOutput/FieldOutput)
erstellt am: 07. Okt. 2013 18:19 <-- editieren / zitieren --> Unities abgeben: Nur für Harr
9.8.1: Arguments to the trigonometric functions must be in radians.
Table 9-3: all / float acos(all)
Wie gesagt: Deine Division ist so für FieldOutput objects nicht vorgesehen. Acos(FieldOutput objects) geht. Ärgerlich ist aber die unvollständige abaqus-Doku. Nicht einmaml die __doc__ Function ist für die Methoden sinnvoll belegt worden...