Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Variantenuntersuchung

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:  Variantenuntersuchung (1082 mal gelesen)
lukasz
Mitglied



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

Beiträge: 157
Registriert: 25.11.2005

erstellt am: 23. Aug. 2006 08: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

Ich habe ein kleines Problem mit CAE.

Zwecks Parameteruntersuchung muß ich 48 verschiedene Varianten eines Models rechnen. Sie unterscheiden sich in Materialparametern und Randbedingungen.
Bei jeder Variante muß ich so 6 bis 8 verschiedene BCs erstellen. Diese sind aber weitestgehend gleich. Also habe ich vlt insgesamt 12 verschieden BCs für alle 48 Varianten.
Die Varianten werden in einem Job als lineare perturbation Steps gerechnet. Allerdings stelle ich fest dass ich bei jedem Step die BCs neu definieren muß. Der Aufwand ist beträchtlich.
Weiß jemand wie ich das geschickt anstelle ? Lassen sich die Bcs von einem perturbation Step in das nächste übernehmen ? Oder kann man das gut mit einem Skript oder Protokoll erschlagen ?
Habe keine Lust ca. 300 BCs "per Hand" definieren zu müssen.

Vlt sollte ich noch anmerken dass ich was CAE angeht ein absoluter Neuling bin. Ich arbeite normalerweise mit Inputfiles bzw. anderen Preprozessoren.
Allerdings ist es hier die Vorgabe des Auftraggebers, dass die Berechnung komplett in CAE abgewickelt werden soll.

vg
Lukasz

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: 3554
Registriert: 04.08.2005

Abaqus

erstellt am: 23. Aug. 2006 12: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 Nur für lukasz 10 Unities + Antwort hilfreich

Mhhh, deine Frage ist schwierig zu beantworten. Ich fasse erstmal zusammen wie ich die Frage verstanden habe (um Missverständnissen vorzubeugen):

- du berechnest für 4 verschiedene Materialparameter jeweils 12 verschiedene Varianten -> =48
- d.h. dass du mindestens 4 Jobs aufsetzen musst
- hast du eine Materialvariante in CAE vollständig definiert, brauchst du für die anderen 3 nur noch das Material modifizieren
- pro Job rechnest du 12 "Probleme"
- BC die im "Initial"-Step definiert wurden, gelten für alle Steps
- die Frage ist also, wie du die Lasten der 12 Probleme am effektivsten erstellst, richtig?


Wenn die Lasten/Randbedingungen größtenteils identisch sind, würde ich ein "Problem" mit den übergreifenden Definitionen (Steps, Output, BC, Loads) vollständig in /CAE definieren. Von dieser Definition würde ich mir die "Mitschrift" aus der .rpy-Datei kopieren und in eine andere Datei legen. Ich empfehle bei der Definition in CAE mit Sets und Surface-Sets zu arbeiten. So wird die Mitschrift wesentlich einfacher zu verstehen.

Jetzt kannst du in dieser neuen Datei mit Copy&Paste oder einer Schleife die Definition der anderen Steps, BC usw. einfügen. Du musst den Steps natürlich jeweils einen neuen Namen geben und musst dann jeweils die Definitionen der BC, Loads usw. auf den neuen Step anwenden.

Falls du Phyton etwas kannst ist das mit der schleife nicht schwer. Du machst am Anfang eine Liste oder ein Dictionary, wo du den Ziffern i=1 bis 12 (oder in Phyton 0 bis 11) einen Namen (den Stepnamen) zuweist. Dann baust du eine Schleife um eine komplette Definitionen. Bei jedem Schleifendurchlauf wird i um 1 erhöht. Den Stepnamen bzw. Step in dem eine Last oder BC erstellt wird, ziehst du nun aus der Liste oder dem Dict., so dass mit jedem Schleifendurchlauf ein neuer Step mit allen Definitionen erstellt wird.

Noch einfacher wird es, wenn du die Stepnamen durchnummerieren kannst. Dann kannst du den Namen auch in der Schleife erzeugen. Also "Step-i" bzw. in Phyton-Syntax 'Step-%i'%i

Hier mal ein Beispiel. Kopiere das Script in eine leere Datei (Endung .py). Erzeuge in CAE in "Model-1" ein beliebiges Bauteil und eine Instance davon. Definiere ein Set mit dem Namen "Bereich-Last". Dann lass dieses Script ablaufen (File->Run Script).

Code:
from abaqus import *
from abaqusConstants import *
for i in range(12, 0, -1):
  mdb.models['Model-1'].StaticLinearPerturbationStep(name='Step-%i'%i,
        previous='Initial')
    a = mdb.models['Model-1'].rootAssembly
    region = a.sets['Bereich-Last']
    mdb.models['Model-1'].DisplacementBC(name='Last-%i'%i, createStepName='Step-%i'%i,
        region=region, u1=UNSET, u2=-10.0, u3=UNSET, ur1=UNSET, ur2=UNSET,
        ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM,
        localCsys=None)


Es werden 12 Perturbation Steps und jeweils eine Last/BC erstellt. Nicht wundern, die Steps werden rückwärts erstellt (range(12, 0,-1)). Der Grund ist dieses "previous='Initial'". Das lässt sich schlecht parametrisieren.

In diese Schleife kannst natürlich noch mehr tun. Mehr Lasten, BC, Output Request usw. Das soll nur als Beispiel dienen.
Nun musst du nur noch für jedes "Problem" die Definitionen erstellen, welche jeweils unterschiedlich sind.

Ob das Ganze nun schneller und einfacher ist als die 12 Probleme per Hand zu definieren musst du selbst wissen.


PS: Wenn das Model viele DOF hat, macht es eventuell Sinn die 12 "Probleme" mit 1 Perturbation Step und 12 Loadcases zu rechnen. Siehe Manual 6.1.3 "Multiple load case analysis"
Das Vorgehen würde aber genauso funktionieren. Nur das du jetzt in der Schleife die Loadcases erstellst usw.

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

lukasz
Mitglied



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

Beiträge: 157
Registriert: 25.11.2005

erstellt am: 23. Aug. 2006 15: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

Danke für die ausführliche Antwort und vor allem das Skriptbeispiel. Genau nach so einer Möglichkeit habe ich gesucht. Habe mir schon gedacht dass es die Möglichkeit gibt in CAE mit Skripten zu arbeiten. Python kann ich zwar nicht, allerdings sieht es nicht so wild aus, da komme ich denke ich klar. Scheint Perl ähnlich zu sein - das kenne ich ein wenig - für ein paar if und for -Befehle sollte es reichen 

Nochmal danke !!!

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: 3554
Registriert: 04.08.2005

Abaqus

erstellt am: 23. Aug. 2006 16:35    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 lukasz 10 Unities + Antwort hilfreich

Freut mich dass ich dir helfen konnte.

Phyton ist wirklich nicht schwer und es gibt viele Tutorials in Netz um die Grundlagen zu erlernen. Und den ABAQUS-spezifischen Syntax bekommt man aus den Mitschriften. Damit kommt man dann schon sehr weit.

Bei meinem Script sind übrigens die 4. und die 4.-letzte Zeile etwas verrutscht. Die 4. Zeile sollte da anfangen wo die 6. anfängt ("a =");
die 4.-letzte da wo die 3.-letzte anfängt.

In Phyton wird nämlich das Ende einer Schleife nicht durch ein "Ende"-Kommando oder sowas angegeben. Der Körper/Inhalt einer Schleife wird über Einrückungen vorgegeben.

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

lukasz
Mitglied



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

Beiträge: 157
Registriert: 25.11.2005

erstellt am: 31. Aug. 2006 09:38    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 Mustaine,

DAs mit den Skripten hat sehr gut funktioniert, allerdings habe ich manches nicht so elegant umsetzen können, wie ich es gern würde. Da muß ich mich erstmal etwas ausführlicher mit Python auseinandersetzen.
Eine Frage hätte ich noch. Wie ist die richtige Syntax  wenn ich zwei verschachtelte Schleifen benutzen will ? So etwas (nur ein Beispiel) habe ich probiert, allerdings scheint die Syntax falsch zu sein.

Code:

from abaqus import *
from abaqusConstants import *
for i in range(4, 0, -1):
  for j in range(4, 0, -1): 
    mdb.models['Model-1'].StaticLinearPerturbationStep(name='Step-%i%j'%i%j, previous='Initial')

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: 3554
Registriert: 04.08.2005

Abaqus

erstellt am: 31. Aug. 2006 13:04    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 lukasz 10 Unities + Antwort hilfreich

Hallo,

das Problem ist ganz einfach. Das % im Namen ist der Platzhalter. Das i sagt, dass eine Integer-Variable kommt. Vielleicht war mein Beispielscript nicht so günstig, da man doch das i=Integer mit i=Zählvariable verwechseln kann.

Hier dein Script korrekt:

Code:

from abaqus import *
from abaqusConstants import *
for i in range(4, 0, -1):
    for j in range(4, 0, -1):
      mdb.models['Model-1'].StaticLinearPerturbationStep
          (name='Step-%i%i'%(i,j),previous='Initial')

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



Entwicklungsingenieur mit Schwerpunkt Konstruktion (m/w/d)

Als Mechanical Engineer (m/w/d) bist du bei uns im Bereich der Serienbetreuung für die Entwicklung und Konstruktion von Fahrzeugfunktionen und -komponenten verantwortlich.


  • Eine kreative und abwechslungsreiche Tätigkeit in einem internationalen Umfeld, in der du Mitverantwortung für die Wettbewerbsfähigkeit unserer Produkte übernimmst ...

Anzeige ansehenEntwicklung
lukasz
Mitglied



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

Beiträge: 157
Registriert: 25.11.2005

erstellt am: 31. Aug. 2006 14: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

...und wieder etwas schlauer... Danke !

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