Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  SIMULIA/ABAQUS
  Ergebnisausgabe in externe Datei ueber Subroutinen (OHNE CAE)

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 CATIA & Co.
  
KISTERS 3DViewStation: verbesserte Effizienz durch optimierte Bedienoberfläche, eine Pressemitteilung
Autor Thema:  Ergebnisausgabe in externe Datei ueber Subroutinen (OHNE CAE) (2716 mal gelesen)
Nicksen
Mitglied
wissenschaftlicher Mitarbeiter


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

Beiträge: 239
Registriert: 04.05.2007

erstellt am: 18. Sep. 2008 13:00    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

Hallo liebe Gemeinde,

nachdem ich die Suchfunktion dieses Bereiches eine ganze Weile benutzt und noch nichts gefunden habe, moechte ich eine Frage in den Raum stellen, welche den einen oder anderen evtl. auch interessieren koennte.

Die Sache ist eigentlich ganz einfach. Ich moechte waehrend einer Rechnung fuer einzelne Knoten oder auch Elemente bestimmte Ergebnisse in eine externe Datei schreiben. Diese Ausgabe moechte ich selbst formatieren, damit ich effektiv damit weiterarbeiten kann.
Mustaine und andere verweisen sehr oft auf die Report- Funktion. Mir scheint jedoch, dass diese nur ueber CAE verwendbar ist. Auch die Ausgabe in das *.dat File ist zur Nachbearbeitung ungeeignet.

Hier mein Wunsch:
Ich wuerde gern meinen Job mit einer USER-Subroutine abschicken, welche nach jedem Inkrement mir die gewuenschten Ergebnisse sucht und in meine Datei ausgibt. Mit entsprechenden Zeilen im *.inp File muesste das ja irgendwie gehen.

Im Manual hab ich gesehen, dass Ergebnisse ueber UVARM erreichbar sind. Diese Routine wird allerdings nur von UMESHMOTION aufgerufen, welche ich wiederum nicht brauche. Die Rechnung selbst und auch das Netz und das Material moechte ich NICHT BEEINFLUSSEN. Das rechnet alles wunderbar, aber ich haette am Ende gern eine Datei, die mir ueber bestimmte Dinge Auskunft erteilt, OHNE das CAE nutzen zu muessen.
In meinen Augen kann das ja nicht so schwierig sein, denn der Verschiebungsvektor und die Verzerrungen und Spannungen sind ja nach der Loesung des Gleichungssystems vorhanden. Gibt es eine solche Moeglichkeit?

Fuer Vorschlaege waere ich sehr dankbar.

beste Grueße
vom Nicksen

------------------
==========
==  Dingsen  ==
==========

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

milasan
Mitglied



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

Beiträge: 165
Registriert: 24.04.2007

erstellt am: 18. Sep. 2008 13:34    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 Nicksen 10 Unities + Antwort hilfreich

Hallo Nicksen,

das geht über die Subroutine UEXTERNALDB. Die UEXTERNALDB wird für jedes Increment aufgerufen und gibt Dir die Möglichkeit mit externen Programmen (oder eigenen Dateien) zu kommunizieren. Innerhalb des Aufrufes von UEXTERNALDB kannst Du dann an Deine Daten kommen. Entweder mit einer weiteren Subroutine, z.B. USDFLD oder UVARM oder auch über ein Python-script, denn das Ergebnis eines fertig gerechneten Increments kann man schon aus der Odb auslesen.

Gruß,
M.

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

Mustaine
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 3585
Registriert: 04.08.2005

Abaqus

erstellt am: 18. Sep. 2008 13:53    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 Nicksen 10 Unities + Antwort hilfreich

Woher hast du die Information dass UVARM nur in Verbindung mit UMESHMOTION funktioniert? Bei der Beschreibung der User Subroutine steht das nicht. Und wenn ich dem Link ganz unten zu den Beispielen im Verification Manual folge, kann ich dort auch keinen Zusammenhang zu UMESHMOTION erkennen. Insofern sehe ich nicht was gegen die Verwendung von UVARM spricht.

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

Nicksen
Mitglied
wissenschaftlicher Mitarbeiter


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

Beiträge: 239
Registriert: 04.05.2007

erstellt am: 18. Sep. 2008 13: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

Hi milasan,

ueber ein python script??? Wie geht das? Ich meine, sind das dieselben Befehle, die man auch im CLI nutzt? Manche dieser Befehle funktionieren doch nur mit dem CAE oder?

UVARM nutzen...
Versteh ich das richtig, dass ich folgendes schreiben kann:

  SUBROUTINE UEXTERNALDB(...)
  call GETJOBNAME(job,Ljob)
  fout = 'job.out'
  open(101,FILE=fout,STATUS='UNKNOWN')
  write(101,*)'blabla'

  IF(LOP.EQ.3) THEN                      (LOP=3 => sollte Ende der Rechnung sein)
  SUBROUTINE UVARM(...)
  call GETVRN('S',...)
  UVAR(1) = ARRAY(1)
  UVAR(2) = ARRAY(2)
  ...

  111 FORMAT(...)
  write(101,111) UVAR(1)
  ...

Mal sehen, ob das klappt. Im *.inp File muss ich dann ja nur eine Zeile einfuegen:
*USER OUTPUT VARIABLES
<<<Anzahl>>>

Danke erstmal. Ich probier das mal aus.

@mustaine: Mein Fehler! Das war GETVRN. Sorry, zuviele Gedanken und zuwenig Uebersicht ;o)

------------------
==========
==  Dingsen  ==
==========

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

Mustaine
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 3585
Registriert: 04.08.2005

Abaqus

erstellt am: 18. Sep. 2008 14:24    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 Nicksen 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Nicksen:

ueber ein python script??? Wie geht das? Ich meine, sind das dieselben Befehle, die man auch im CLI nutzt? Manche dieser Befehle funktionieren doch nur mit dem CAE oder?

Man kann mit Python oder C++ auch ohne CAE auf die ODB zugreifen und Daten lesen oder schreiben. Schau mal ins Scripting Users Manual (v6.8) Kapitel
9. Using the Abaqus Scripting Interface to access an output database
und
10. Using C++ to access an output database

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

milasan
Mitglied



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

Beiträge: 165
Registriert: 24.04.2007

erstellt am: 18. Sep. 2008 14:33    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 Nicksen 10 Unities + Antwort hilfreich

Hallo Nicksen,

der Aufruf eines Pythonscriptes sieht etwa so aus:

--------------
      subroutine uexternaldb(lop,lrestart,time,dtime,kstep,kinc)
C
      INCLUDE 'ABA_PARAM.INC'
      character*256 command
c
      command = "abaqus script=meinscript.py"
c
      if (kstep.eq.XX) then
        if (lop.eq.YY) then
            call system(command)
        endif
      endif

      return
      end
-----------

Im Pythonscript greifst Du dann einfach auf die Odb zu, wie im Scripting Handbuch beschrieben, ich glaube da sind auch Beispiele drin.

So hast Du die Wahl und kannst den Zugriff auf die Daten in der Sprache programmieren, in der Du besser zurechtkommst: Fortran wie in Deinem Beispiel oder eben über Python.

Gruß,
M.

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

Nicksen
Mitglied
wissenschaftlicher Mitarbeiter


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

Beiträge: 239
Registriert: 04.05.2007

erstellt am: 18. Sep. 2008 14:36    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

Vielen Dank an alle.

Ich mach mich sofort mal drueber her. Klingt alles sehr vielversprechend.
Riesendank fuer die mehr als schnelle Antwort!!!

------------------
==========
==  Dingsen  ==
==========

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

Nicksen
Mitglied
wissenschaftlicher Mitarbeiter


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

Beiträge: 239
Registriert: 04.05.2007

erstellt am: 19. Sep. 2008 12:13    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


test.f.txt


test.inp.txt

 
So Leute,

ich hab da mal was geschrieben und es funktioniert auch. Ich kann die Spannungen und die Verzerrungen ausgeben, genau wie ich es auch wollte.
Im Anhang findet ihr eine moegliche inp-Datei und die Routine. Im Moment funktioniert das zwar nur fuer ein einziges Element, aber eine Erweiterung ist kein Problem. Die Loesung mag ein wenig umstaendlich erscheinen, denn ich speichere die Spannungen und Verzerrungen fuer jeden Integrationspunkt in ein Feld, das global zugaenglich ist und schreibe am Ende jeden Inkrementes dieses Feld in eine Datei heraus.
Wer sich den Quellcode anschaut, sollte sich mal nicht von den vielen ueberfluessigen Format-Definitionen verwirren lassen. Ich habe eine alte bestehende Routine als "Geruest" genommen und noch nicht bereinigt.

Wie gesagt, es funktioniert fuer Ergebnisse an Integrationspunkten.

Meine weitere Frage ist nun: Wie klappt das mit den Knotenverschiebungen? Ich habe versucht, GETVRN in der UVAR aufzurufen und die Verschiebungswerte in ein weiteres Feld zu speichern. Da gab es eigenartige Effekte. Deshalb hab ich mir nach dem GETVRN Aufruf die Variable NODE ausgeben lassen. Ergebnis waren utopische Zahlen. Die Hilfe sagt, dass NODE die Knotennummer sein soll, aber mein Element hat nur 8 Knoten. In meiner Ausgabedatei erscheinen 5stellige Zahlen und der Durchlauf bricht mit Fehlern ab.
Ist denn GETVRN ausschließlich aus der UMESHMOTION aufrufbar? Oder muss ich selbst die Variable NODE besetzen und so die Abfrage der Verschiebungswerte steuern?
Die Philosophie ist mir im Moment nicht so ganz klar und vielleicht kann mir da einer von euch auf die Spruenge helfen.
Dankbar waere ich natuerlich in jedem Fall. Und wenn die Routine dann ueberarbeitet und lauffaehig ist, stelle ich sie natuerlich auch zur Verfuegung. Kann ja sein, dass der ein oder andere daran Interesse hat.

Grueße vom Nicksen

------------------
==========
==  Dingsen  ==
==========

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)2025 CAD.de | Impressum | Datenschutz