| | | KISTERS 3DViewStation: Mehr CAD Lizenzen durch 3D-Viewer ersetzen und Geld sparen, eine Pressemitteilung
|
Autor
|
Thema: Node Set ohne orphan mesh (556 / mal gelesen)
|
Database91 Mitglied Student
Beiträge: 20 Registriert: 18.01.2021
|
erstellt am: 29. Jan. 2021 15:44 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bräuchte mal wieder Hilfe in Sachen skripting. Ich habe mein Modell vernetzt und die Berechnung funktioniert auch wunderbar. Mein Wunsch ist es jetzt die Spannungen an einem Set von Knoten auszuwerten. Da ich die .cae nicht anhängen kann, ist im Anhang ein Bild des Knotensets und mein SKript. Ich möchte ein Knotenset erstellen, bei dem ich über eine Schleife die Knoten auswähle und aus der Liste dann ein entsprechendes Set erstellt. Im Postprocessing möchte ich dann für genau dieses Set die Hauptspannungen S11, S22, S33 abgreifen. Damit es dabei nicht zu einfach und langweilig wird bräuchte ich sowohl die drei Hauptspannungen im globalen Koordinatensystem wie auch in dem MaterialOrientation Koordinatensystem Ich weiß, es ist viel, was ich möchte. Daher will ich versuchen es runter zu brechen.
1) Wie kann ich eine Schleife über die Knoten in einer "Cell" laufen lassen und dabei Knoten nach verschiedenen Kriterien selektieren? 2) Wie kann ich im Postprocessing wieder auf die "globalen" Hauptspannunge zugreifen? Angezeigt werden mir ja die Spannungen im veränderten Koordinatensystem. 3) Wie kann ich die Spannungen je Knoten auslesen? Da ich nicht weiß, ob es relevant ist, ich nutze Abaqus 6.14-4 Über jegliche Hilfe wäre ich sehr dankbar!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 29. Jan. 2021 16:56 <-- editieren / zitieren --> Unities abgeben: Nur für Database91
Zitat:
1) Wie kann ich eine Schleife über die Knoten in einer "Cell" laufen lassen und dabei Knoten nach verschiedenen Kriterien selektieren?
Du kannst relativ einfach die Knoten in jeder Zelle abgreifen. Bsp.: x=mdb.models['Model-1'].parts['block'].cells[0].getNodes() x ist dann eine Liste mit den Knoten. Mit der kannst du dann arbeiten und z.B. die Position von jedem Knoten abfragen. Meist ist es aber einfacher mit der Geometrie zu arbeiten um Sets zu erzeugen. Dafür müsstest du die Geometrie so partitionieren, dass du eine (oder mehrere) Punkte/Kante/Fläche/Zelle für die Sets wählen kannst. Daraus wird dann automatisch je ein Knotenset wenn die Inputdatei erzeugt wird. Zitat:
2) Wie kann ich im Postprocessing wieder auf die "globalen" Hauptspannunge zugreifen? Angezeigt werden mir ja die Spannungen im veränderten Koordinatensystem.
Da würde ich die eingebaute Option im Postprocessing verwenden und später mit Python ansprechen. Erstelle in der GUI eine neues CSYS und transformiere die Ergebnisse in dieses CSYS. Die .rpy gibt dir dann die Befehle.
Zitat:
3) Wie kann ich die Spannungen je Knoten auslesen?
Das einfachste ist, wenn du einen Report (Report->Field) erstellst und diesen dann ausliest. Das hätte den Vorteil, dass du direkt die gemittelten Knotenwerte bekommst und dies auch für die transformierten Werte funktioniert - je nachdem welche Orientierung aktiv war beim erstellen des Reports. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Database91 Mitglied Student
Beiträge: 20 Registriert: 18.01.2021
|
erstellt am: 31. Jan. 2021 08:32 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen und Danke für die Antwort. Zitat: Meist ist es aber einfacher mit der Geometrie zu arbeiten um Sets zu erzeugen. Dafür müsstest du die Geometrie so partitionieren, dass du eine (oder mehrere) Punkte/Kante/Fläche/Zelle für die Sets wählen kannst. Daraus wird dann automatisch je ein Knotenset wenn die Inputdatei erzeugt wird.
Ich kann die Geometrie an der Stelle nicht weiter partitionieren, da sich dadurch mein Netz verändern würde. Außerdem erhalte ich durch die Partitionierung doch nur neue Elemente, dann muss ich immer noch schauen, wie ich an die entsprechenden Knoten komme. Denn ich brauche genau die Knotenreihe, die exakt bei Z=0 entlang der x-Achse an der Oberfläche des Modells liegen. Aber der getNodes Befehlt ist schon mal gut. Kann ich dann mit x.getSize() die Koordinaten abfragen? Wie schreibe ich denn eine for-Schleife? Ich habe dazu zwar schon einiges gesehen, aber bin ich verwirrt, dass die Schleife kein Ende hat. Also sowas wie "next" oder ähnliches. Code:
p = mdb.models['Model-1'].parts['ungekerbteProbe'] Nodes=mdb.models['Model-1'].parts['ungekerbteProbe'].cells[1].getNodes() Nodes_z= [] p.Set(nodes=Nodes, name='Node-Set') zKriterium=0for i in range(len(Nodes)): if Nodes[i].getSize()[2]==zKriterium: Nodes_z[i]=Nodes[i]
So hatte ich die Selektion der Knoten jetzt versucht aufzubauen. Allerdings bekomme ich dann als Fehler "AttributeError: 'MeshNode' object has no attribute 'getSize'". Geht das also gar nicht mit getSize? zu 3): Du sagtest, ich kann dann die gemittelten Knotenwerte auslesen. Ist es auch möglich direkt die Knotenwerte auszulesen ohne Mittelung? [Diese Nachricht wurde von Database91 am 31. Jan. 2021 editiert.]
[Diese Nachricht wurde von Database91 am 31. Jan. 2021 editiert.] [Diese Nachricht wurde von Database91 am 31. Jan. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3585 Registriert: 04.08.2005 Abaqus
|
erstellt am: 01. Feb. 2021 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für Database91
Du solltest den Command Line Interpreter (CLI) in A/CAE verwenden um interaktiv Dinge abzufragen. Wenn du das eingibst: p = mdb.models['Model-1'].parts['ungekerbteProbe'] Nodes=mdb.models['Model-1'].parts['ungekerbteProbe'].cells[1].getNodes() solltest du danach mal das eingeben: print Nodes[0] Damit kannst du dir den ersten Eintrag der Knotenliste ausgeben lassen und sieht was für Informationen noch dranhängen, wie z.B. Koordinaten und Knotennummer. Mit diesem Wissen kannst du dann auch direkt darauf zugreifen. In diesem Fall Nodes[0].coordinates Zu deiner anderen Frage: Ja, du kannst in dem Report auch die ungemittelte Knotenwerte ausgeben lassen (Option: Element Nodal). Damit bekommst du halt pro Knoten mehrere Werte, abhängig davon wie viele Elemente an dem Knoten hängen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Database91 Mitglied Student
Beiträge: 20 Registriert: 18.01.2021
|
erstellt am: 03. Feb. 2021 10:34 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank. Für alle, die vielleicht noch mal auf das Problem hier stoßen, meine Lösung sieht folgendedrmaßen aus: Code:
### Sets für die Auswertung anlegen p = mdb.models['Model-1'].parts['ungekerbteProbe'] n=p.nodes Mantel=c.findAt(((0.0,D_klein/2,0.0),),) p.Set(cells=Mantel, name='Mantel') Nodes=mdb.models['Model-1'].parts['ungekerbteProbe'].sets['Mantel'].cells[0].getNodes() Nodes_z= []for i in range(1, SA_a+2): x_Koord=-Sehne/4+((Sehne/2)/SA_a)*(i-1) y_Koord=(R_mitte+D_klein/2)-(cos(alpha_oeffnung_0+alpha_oeffnung_Schritt*(i-1))*R_mitte) Node=n.getByBoundingBox(x_Koord-HB_t/2, y_Koord-(3*HB_t/4), -HB_t/2 , x_Koord+HB_t/2, y_Koord+HB_t, HB_t/2) Nodes_z.extend(Node) print i print x_Koord, y_Koord Node_list=mesh.MeshNodeArray(Nodes_z) p.Set(nodes=Node_list, name='Node_Auswertung')
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|