Autor
|
Thema: Materialorientierung ändern (2785 mal gelesen)
|
Tschorsch Mitglied
Beiträge: 22 Registriert: 14.07.2009 proe wf4 abaqus 6.9.1
|
erstellt am: 15. Jul. 2009 08:03 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bin relativ neu in der FEM-Szene und habe ein für mich relativ schwieriges Problem. Ich habe eine Piezoaktor (2D), dem ich wie in dem angehängten Bild die Materialorientierung in x-Richtung zugewiesen habe. Das elektrische Feld ist durch die roten Linien dargestellt. Die Berechnung klappt auch wunderbar. Das Problem ist jetzt, dass in Wirklichkeit die Materialorientierung nicht in x-Richtung vorliegt, sondern sich entlang den Feldlinien ausbildet. Sprich jedes Element müsste gedreht werden. Jetzt meine Frage: Wie kann ich die Orientierung des Feldes aus dem odb-File auslesen, und danach die Richtung des Feldes dem Material zuweisen? Über eure Hilfe wäre ich sehr dankbar. Tschorsch [/IMG] ------------------ Irgendwas geht immer kaputt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
femchen Mitglied wiss. MA
Beiträge: 166 Registriert: 25.06.2009
|
erstellt am: 16. Jul. 2009 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für Tschorsch
Das ist etwas kniffelig. Du müßtest wohl aus der Odb für jedes Element das Feld auslesen, das Deine Feldrichtung bestimmt, z.B. irgendwelche Principal-Werte. Damit müßtest Du aus diesen Werten für dieses Element eine Materialrichtung errechnen, die Du dann in eine Datei schreiben kannst. Schließlich kannst Du beim nächsten Lauf aus dieser Datei die Materialrichtungen für jedes Element auslesen und aufbringen, evtl. über die Subroutine Orient. Richtig cool wäre es, aus dem errechneten Feldlinienfeld eine analytische Funktion zu ermitteln, die den Feldverlauf beschreibt. Dann könntest Du die Materialorientierung über eine Distribution angeben.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tschorsch Mitglied
Beiträge: 22 Registriert: 14.07.2009 proe wf4 abaqus 6.9.1
|
erstellt am: 20. Jul. 2009 14:10 <-- editieren / zitieren --> Unities abgeben:
Danke für die Hinweise. Ich hab es mit der Subroutine Orient probiert, hab aber noch nicht herausgefunden, wie man die Richtung des Feldes aus dem Obd ausließt und dann in Subroutine schreibt. Kann mit du diesem Sachverhalt noch mal nähere Tipps geben. ------------------ Irgendwas geht immer kaputt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tschorsch Mitglied
Beiträge: 22 Registriert: 14.07.2009 proe wf4 abaqus 6.9.1
|
erstellt am: 23. Jul. 2009 09:01 <-- editieren / zitieren --> Unities abgeben:
Ich irgendwie noch immer nicht weitergekommen. In der Hilfe stehen ja folgende Zeilen für die Subroutine ORIENT: SUBROUTINE ORIENT(T,NOEL,NPT,LAYER,KSPT,COORDS,BASIS,ANAME, 1 NNODES,CNODES,JNNUM) C INCLUDE 'ABA_PARAM.INC' C CHARACTER*80 ANAME DIMENSION T(3,3),COORDS(3),BASIS(3,3),CNODES(3,NNODES) DIMENSION JNNUM(NNODES) XLEN=SQRT(COORDS(1)**2+COORDS(2)**2) T(1,1)=COORDS(1)/XLEN T(2,1)=COORDS(2)/XLEN T(3,1)=0.0 T(1,2)=-COORDS(2)/XLEN T(2,2)=COORDS(1)/XLEN T(3,2)=0.0 T(1,3)=0.0 T(2,3)=0.0 T(3,3)=1.0 RETURN END Kann mir bitte jemand verraten, wie ich die x- und y-Koordinaten des elektr. Feldes aus dem odb an das entsprechende T bringe? ------------------ Irgendwas geht immer kaputt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
femchen Mitglied wiss. MA
Beiträge: 166 Registriert: 25.06.2009
|
erstellt am: 23. Jul. 2009 09:58 <-- editieren / zitieren --> Unities abgeben: Nur für Tschorsch
Selbst gemacht habe ich das noch nicht, daher kann ich nur raten. Soweit ich das sehe, brauchst Du für die ORIENT nur die Elementnummer NOEL anzugeben, Koordinaten des Feldes brauchst Du nicht, nur die Richtungsdefinition. In der Odb müßtest Du für jedes Element EPG oder EFLX auswerten (beides wird in Magnitude und Komponenten ausgegeben) und aus den Komponenten das gewünschte Materialkoordinatensystem als direction cosines errechnen. Ich vermute, daß Du die Komponenten irgendwie in so etwas wie "Hauptrichtungen" umrechnen mußt. Schau mal, ob das Sinn macht.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tschorsch Mitglied
Beiträge: 22 Registriert: 14.07.2009 proe wf4 abaqus 6.9.1
|
erstellt am: 24. Jul. 2009 15:17 <-- editieren / zitieren --> Unities abgeben:
So, die Daten (jeweiligen Richtungskosinüsse - oder wie die Mehrzahl auch heißt) hab ich in eine txt-Datei geschrieben. Erst die Elementnummer und dann die jeweiligen Werte. Mit welchem Befehl in der Subroutine kann ich denn jetzt die Werte aus dieser Datei aufrufen? Sprich: welcher Befehl muss hinter T(1,1) usw.? ------------------ Irgendwas geht immer kaputt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
femchen Mitglied wiss. MA
Beiträge: 166 Registriert: 25.06.2009
|
erstellt am: 27. Jul. 2009 14:09 <-- editieren / zitieren --> Unities abgeben: Nur für Tschorsch
Wenn Du die Daten hast, kannst Du sie einfach in die Subroutine einfügen. Beim Aufruf der Subroutine bekommst Du die jeweilige Elementnummer NOEL, also mußt Du die Routine so programmieren, daß die T(i,j) in Abhängigkeit der Elementnummer definiert werden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tschorsch Mitglied
Beiträge: 22 Registriert: 14.07.2009 proe wf4 abaqus 6.9.1
|
erstellt am: 27. Jul. 2009 16:17 <-- editieren / zitieren --> Unities abgeben:
Das ist mir klar, nur viel Ahnung von dieser Programmierung hab ich nicht. In der txt-Datei steht Elementnummer, x-Wert, y-Wert, z-Wert. Mein großes Problem ist, mit welchem Befehl (nach T(ij)) ich diese aus der Datei auslese. Es wäre schön, wenn mir jemand mal so eine Beispielzeile hier rein stellen könnte. ------------------ Irgendwas geht immer kaputt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tschorsch Mitglied
Beiträge: 22 Registriert: 14.07.2009 proe wf4 abaqus 6.9.1
|
erstellt am: 04. Aug. 2009 12:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich hab es jetzt hinbekommen, mir die Werte benötigten Werte auszulesen und als Feld in die Datei datei.f (Subroutine ORIENT) zu schreiben. Für Simulationen mit geringen Elementzahlen funktioniert die Sache einwandfrei. Übersteigt die Elementzahl den Wert 512, erscheint folgende Fehlermeldung: fortcom: Error: datei.f, line 524: Too many continuation lines 1 513, 3.806, -3.176, _____^ compilation aborted for datei.f (code 1) Abaqus Error: Problem during compilation – datei.f Weiß jemand, was ich ändern müsste, dass das für beliebig viele Elemente funktioniert?
------------------ Irgendwas geht immer kaputt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten1983 Mitglied Doktorand
Beiträge: 125 Registriert: 11.10.2007
|
erstellt am: 04. Aug. 2009 13:35 <-- editieren / zitieren --> Unities abgeben: Nur für Tschorsch
|
Tschorsch Mitglied
Beiträge: 22 Registriert: 14.07.2009 proe wf4 abaqus 6.9.1
|
erstellt am: 10. Aug. 2009 14:29 <-- editieren / zitieren --> Unities abgeben:
Mit einem Python-Script lese ich die Daten aus und erstelle gleichzeitig mit diesem Schript ein Fortran-File, in welchem die Daten als Feld stehen. Somit kann ich die diech im Feld befindlichen Koordinaten den T(i,j) zuweisen. Das oben beschriebene Problem mit der Elementzahl hab ich auch gelöst, indem ich mehrere Felder angelegt habe. Nun habe ich aber ein weiteres Problem: Bisher ist es mir nur gelungen, die Richtung elementweise zuzurodnen. Geht das mit der Suroutine auch für jeden einzelnen Integrationspunkt? ------------------ Irgendwas geht immer kaputt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
femchen Mitglied wiss. MA
Beiträge: 166 Registriert: 25.06.2009
|
erstellt am: 12. Aug. 2009 10:28 <-- editieren / zitieren --> Unities abgeben: Nur für Tschorsch
|