Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  ANSYS
  mehrere Lastfälle per Do-Schleife

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Ansys
Autor Thema:  mehrere Lastfälle per Do-Schleife (1914 mal gelesen)
magerhirn
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von magerhirn an!   Senden Sie eine Private Message an magerhirn  Schreiben Sie einen Gästebucheintrag für magerhirn

Beiträge: 25
Registriert: 15.10.2010

erstellt am: 15. Dez. 2010 00:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


shell.txt

 
Hallo liebe Experten,

ich möchte mehrere Lastfälle per Do-Schleife nacheinander durchrechnen. Dabei treffe ich auf mehrere Probleme:

zwar wird die Last per *set Befehl tatsächlich um 50mm weitergesetzt, allerdings wird das nicht bei der Berechnung berücksichtigt. Die Do-Schleife wird mit der korrekten Anzahl an Wiederholungen durchgeführt.
Das Ergebnis ist dabei bei jedem Durchlauf dasselbe, obwohl die Lasteinleitungsstelle (LF) verändert wird..
Die input-file beginnt mit einem

Code:

FINISH
PARSAV
/CLEAR,NOSTART
PARRES

...
Das zweite Problem ist, dass das Ergebnis des *get-Befehls nur im ersten Durchlauf in die output-Datei geschrieben wird. Woran liegt das?

Danke schon mal!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Rico80634
Mitglied



Sehen Sie sich das Profil von Rico80634 an!   Senden Sie eine Private Message an Rico80634  Schreiben Sie einen Gästebucheintrag für Rico80634

Beiträge: 82
Registriert: 20.07.2010

erstellt am: 15. Dez. 2010 08:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für magerhirn 10 Unities + Antwort hilfreich

In einer *do Schleife wird nur der erste Durchgang in den Output geschrieben.
Wenn du Ergebnisse innerhalb der *do Schleife auslesen willst, musst du mit dem *vwrite Befehl arbeiten. Mehr dazu in anderen Forenbeiträgen.

Jetzt weiss man natürlich nicht, was dein

"/INPUT,'file_e1.mac',,'pfad',0,0" genau macht, vielleicht hierzu das Macro online stellen?

Wenn du deine Variable LF neu definierst, also LF = LF+50 schreibst, heisst das noch lange nicht, dass die Last neu aufgebracht wird.
Es ist NICHT so, dass der Ort der Lasteinleitung automatisch aktualisiert wird. Du musst die alte Last löschen, und dann die neue Last definieren. Hierzu kannst du dann den gleichen Befehl, der von LF abhängig ist, verwenden.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

magerhirn
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von magerhirn an!   Senden Sie eine Private Message an magerhirn  Schreiben Sie einen Gästebucheintrag für magerhirn

Beiträge: 25
Registriert: 15.10.2010

erstellt am: 15. Dez. 2010 08:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hey danke für die schnelle Antwort erstmal!

Die input-Datei beinhaltet die komplette Modell-, Netz- und Lastgenerierung, sowie die solution, als auch den postprocess. Dachte, die Variable LF wird dahingehend geändert, dass bei dem nächsten Schleifendurchlauf bei der Lastaufbringung der neue Wert der Variable genutzt wird?

Hab hier noch so einen Schnipsel mit einer *vwrite-Anweisung herumliegen. Allerdings bekomme ich da die Fehlermeldung:"Label MAXE not recognized"

Code:

*cfopen,file,txt,,APPEND                        !Ergebnis-Datei öffnen
*set,report                                      !Definion Werte-Array
*dim,report,,4,,,MAXEQV,                        !mit 4 Spalten pro Zeile
*vget,report(1,1),node,max_eqv_node,MAXEQV      !Einlesen der interessanten Werte
*vget,report(1,2),node,max_eqv_node,MAXEQV,loc,X
*vget,report(1,3),node,max_eqv_node,MAXEQV,loc,Y
*vget,report(1,4),node,max_eqv_node,MAXEQV,loc,Z
/nopr
*vwrite,report(1,1),report(1,2),report(1,3),report(1,4)
(4f6.3)
*cfclos

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Rico80634
Mitglied



Sehen Sie sich das Profil von Rico80634 an!   Senden Sie eine Private Message an Rico80634  Schreiben Sie einen Gästebucheintrag für Rico80634

Beiträge: 82
Registriert: 20.07.2010

erstellt am: 15. Dez. 2010 08:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für magerhirn 10 Unities + Antwort hilfreich

Fall du in Deiner zweiten Input-Datei ein RESUME oder CLEAR hast, wird LF natürlich auch zurückgesetzt. Es ist nicht so, dass dann nur das Unterprogramm behandelt wird, sondern immer die komplette ANSYS db.

Übergib doch einfach dem Macro ein Argument, indem du

file_e1,LF mit LF als Argument 1 eingibst.

Dann innerhlab von file_e1 statt mit LF einfach mit arg1 arbeiten.

Zu deinem *vwrite: du hast *vget falsch definiert, einfach nochmal in der Hilfe nachlesen.

[Diese Nachricht wurde von Rico80634 am 15. Dez. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

magerhirn
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von magerhirn an!   Senden Sie eine Private Message an magerhirn  Schreiben Sie einen Gästebucheintrag für magerhirn

Beiträge: 25
Registriert: 15.10.2010

erstellt am: 15. Dez. 2010 15:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die Hilfe. LF=arg1 funktioniert wunderbar.
Das Problem mit der Ausgabe habe ich jetzt etwas unelegant gelöst, indem ich ein /gopr in die Do-Schleife eingebaut habe. So wird jetzt das MAXEQV bei jedem Durchgang in die output-Datei geschrieben.
Zwar nicht so schön wie das Speichern in ein Array und die Ausgabe über *vwrite aber es funktioniert.

Was ist an dem *vget falsch definiert? max_eqv_node ist der Knoten, an dem MAXEQV auftritt.

Code:
*get,max_eqv_node,sort,,imax

oder habe ich was übersehen?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz