Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Inputwerte von cae in UVARM-subroutine uebergeben

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
Autor Thema:  Inputwerte von cae in UVARM-subroutine uebergeben (903 mal gelesen)
DDsDDe
Mitglied



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

Beiträge: 102
Registriert: 04.02.2009

erstellt am: 27. Mrz. 2019 14:50    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!

Ich habe eine Simulation die linear-elastisch ausgefuehrt wird, also keine Besonderheiten bei der eigentlichen Berechnung. Ich möchte mir ausserdem ein mehr-axielles Kriterium berechnen lassen indem ich eine UVARM-subroutine dazuschalte. Auch noch kein Problem.

Nun suche ich eine Möglichkeit, ueber CAE (oder die inp-Datei) die Festigkeitswerte festlegen zu können welche die UVARM heranzieht um daraus zB. ein quadratisches Kriterium auszuwerten. Ich habe aber keine Idee, wie ich das bewerkstelligen kann.

Irgendjemand aus dem Forum mit einem Hinweis?

lg!
DDsDDe

------------------
--
nix zu sehen

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

Mefh
Mitglied



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

Beiträge: 45
Registriert: 04.03.2015

erstellt am: 28. Mrz. 2019 07: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 Nur für DDsDDe 10 Unities + Antwort hilfreich

Bei ähnlichen Problemen sind uns 2 Lösungen eingefallen, die sich mit Python realisieren lassen. Das war notwendig, da wir mit Matlab eine Optimierung durchgeführt haben, bei der die anzupassenden Randbedingungen über DFLUX angegeben werden mussten.

1. Die Subroutine liest eine Text-Datei ein, in die die notwendige Werte mittels Python geschrieben werden. Mit entsprechenden Flags wird diese Datei auch nur beim 1. Aufruf der Subroutine eingelesen und dann die Daten gespeichert.

2. Mit Python wird die Subroutine selber geschrieben. Dann lassen sich die notwendigen Werte dynamisch implementieren.

Viel Spass beim Programmieren.

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

DDsDDe
Mitglied



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

Beiträge: 102
Registriert: 04.02.2009

erstellt am: 29. Mrz. 2019 15:27    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

Hej!

An 1) hatte ich auch eventuell schon gedacht. Das könnte funktionieren.

2) Ich verstehe die Idee (glaube ich halt) aber zu wenig wie es bewerkstelligt werden könnte. Meinst du, dass im Postprocessing eine neue Variable berechnet wird die dann ins odb geschrieben wird? Hast du einen Link auf ein Tutorial oder so? Insgesamt wirds mir aber zuviel vermutlich, sowas zu machen.

3) Auch beispielsweise die Werte im Materialnamen zu "verstecken". Den Namen sollte man von der UVARM aus mit CMNAME erreichen können?

Was ich gerne hätte wäre es ähnlich wie zB in einer UMAT machen zu können, also direkt Werte ein einer Tabelle zu uebergeben.


Vielen Dank jedenfalls und lg!
DDsDDe

------------------
--
nix zu sehen

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

Mefh
Mitglied



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

Beiträge: 45
Registriert: 04.03.2015

erstellt am: 04. Apr. 2019 08:06    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 DDsDDe 10 Unities + Antwort hilfreich

Ich habe es nicht herausbekommen, ob man es direkt über eine Tabelle angeben kann; wohl eher nicht.
Indirekt über CMNAME wiederum war mir zu viel Programmierarbeit. Tutorial kenn ich nicht; das haben wir selber entwickelt.

Beispiel zu 2 (für DFLUX); Details hängen von den Compilereinstellungen ab:

waermeuebergangskoeffizient = 20e-6

fo = open( 'DFLUX.f', 'w')
fo.write( '        SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT,COORDS,JLTYP,TEMP,PRESS,SNAME) \n')
...
fo.write( '        DOUBLE PRECISION                            :: wuk\n')
...
fo.write( '        wuk = '+str(waermeuebergangskoeffizient)+'\n') 
...
fo.write( '        FLUX(1) = wuk * (20.0 - SOL) \n')
fo.write( '        RETURN \n')
fo.write( '        END \n')
fo.close()

Im Prinzip kann man also die Subroutine hernehmen und ein fo.write davorschreiben.

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

DDsDDe
Mitglied



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

Beiträge: 102
Registriert: 04.02.2009

erstellt am: 07. Apr. 2019 09:57    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

Hej!

Ich verstehe, ist aber in meinem Fall nicht anwendbar da ich keinen Compiler auf dem "Zielrechner" habe. Die UVARM soll ein einziges mal kompiliert werden, dann auf einem anderen Rechner (ohne fortran) verwendet werden.

Ich habe nun eine Version programmiert, die CMNAME verwendet (entspricht also Idee 3). Werden komplizierte Materialnamen aber es funktioniert.

Ob dies sehr effizient ist weiss ich natuerlich nicht. Ich kann mir denken, dass das auslesen von insgesamt 15 Eigenschaften relativ aufwändig ist.

Aber besser kriege ich es im Moment nicht hin. Bin aber weiterhin fuer Ideen offen! Man lernt nie aus!

lg!

------------------
--
nix zu sehen

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