Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  [PYTHON] Sectionassignment

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:   [PYTHON] Sectionassignment (1265 mal gelesen)
  
Die Gewinne der Zukunft werden mit intelligenten, autonomen Elektrofahrzeugen eingefahren. (3DEXPERIENCE)
slein89
Mitglied



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

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 08. Mai. 2013 15: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

Hallo.

Ich bin gerade dabei SOLIDS und TRUSS Elemente zu kombinieren. Bis jetzt klappt auch alles ganz gut, d.h. mein Pythonskript erstellt mein Modell, merged die Knoten der SOLID und TRUSS Elemente und gibt die gewünschten Randbedingungen auf. Bloß beim zuweisen des Materials gibt es noch Probleme. Wenn ich einen Data Check durchführe, erhalte ich den Fehler, dass allen Elementen keine Property zugewiesen wurde. Hier zunächst mal mein Code für die Materialzuweisung:

Code:

##################################################################################################
# Material
##################################################################################################

K_M = 1000
G_M = {}
G_M[0] = 10
G_M[30] = 9
G_M[60] = 7.5
G_M[90] = 5.7
G_M[120] = 3.5
G_M[150] = 1

D1 = 2/K_M
C10 = {}
for i in G_M.keys():
C10[i] = G_M[i] / 2

mdb.models[model].Material(name='Matrix_' + str(i))
mdb.models[model].materials['Matrix_' + str(i)].Hyperelastic(materialType=ISOTROPIC, \
testData=OFF, type=NEO_HOOKE, volumetricResponse=VOLUMETRIC_DATA, \
table=((C10[i], D1), ))

G_F, K_F = 10, 1000
C10, D1 = G_F / 2 , 2/K_F

mdb.models[model].Material(name='Faser')
mdb.models[model].materials['Faser'].Hyperelastic(materialType=ISOTROPIC, \
testData=OFF, type=NEO_HOOKE, volumetricResponse=VOLUMETRIC_DATA, \
table=((C10, D1), ))

##################################################################################################
# Section
##################################################################################################

mdb.models[model].HomogeneousSolidSection(name='Matrix_150', material='Matrix_150', thickness=None)
mdb.models[model].TrussSection(name='Faser', material='Faser', area=querschnitt)

##################################################################################################
# Sectionassignment
##################################################################################################

instanz = 'Block-'+str(count)
a.regenerate()

elements = a.instances[instanz].elements.sequenceFromLabels(labels = truss_elemente)
region = regionToolset.Region(elements=elements)
p = mdb.models[model].parts[instanz]
p.SectionAssignment(region=region, sectionName='Faser', offset=0.0, offsetType=MIDDLE_SURFACE, \
offsetField='', thicknessAssignment=FROM_SECTION)

a.regenerate()

elements = a.instances[instanz].elements.sequenceFromLabels(labels = solid_elemente)
region = regionToolset.Region(elements=elements)
p = mdb.models[model].parts[instanz]
p.SectionAssignment(region=region, sectionName='Matrix_150', offset=0.0, offsetType=MIDDLE_SURFACE, \
offsetField='', thicknessAssignment=FROM_SECTION)

a.regenerate()


Dabei habe ich verschiedene Neo-Hooke Materialien erstellt, entsprechende Sections definiert und anschließend das Sectionassignment durchgeführt. "a" ist das rootAssembly, "truss_elemente" und "solid_elemente" sind Listen mit Elementlabels. "instanz" ist der Name des Parts und gleichzeitig der Instanz. Dabei handelt es sich um ein OrphanMesh, weil ich vorher mehrere Instanzen gemerget habe.

Sieht jemand bei dem Code einen Fehler? Wenn nicht kann ich auch noch mehr Code schreiben.

LG

Slein

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

slein89
Mitglied



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

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 10. Mai. 2013 08:46    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

Okay nachdem ich das Manual noch mal genau gelesen habe hier eine Variante die funktioniert:

Code:

p = mdb.models[model].parts[instanz]
elements = p.elements.sequenceFromLabels(labels = truss_elemente)
region = p.Set(name = 'Truss_Elemente', elements=elements)
p.SectionAssignment(region=region, sectionName='Faser', thicknessAssignment=FROM_SECTION)

Zum einen arbeite ich jetzt direkt auf dem Part und zum anderen verlangt das Objekt SectionAssignment bei "region" ein Set und keine Region, ist ja logisch^^ Ich hoffe ich konnte damit helfen, wenn zukünftig mal jemand vor einem ähnlichen Problem steht.

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

adaptiveMesh
Mitglied



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

Beiträge: 66
Registriert: 25.05.2006

erstellt am: 13. Mai. 2013 12:23    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 slein89 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von slein89:

... mein Modell, merged die Knoten der SOLID und TRUSS Elemente ...

Das solltest du nicht tun. Binde den Truss mittels MPC o. Ä. an die Solidknoten, wobei die angebundenen Solidknoten die Kontur des Trussquerschnitts wiedergeben sollen.

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

slein89
Mitglied



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

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 14. Mai. 2013 10:11    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.

Warum sollte ich das nicht tun? Mit einem MPC würde doch am Ende genau das gleiche, nämlich die Eliminierung der TRUSS Freiheitsgrade, herauskommen. Und das mit der Querschnittskontur der SOLIDS musst du mir bitte auch noch mal erläutern. Wenn die angebundenen SOLID Knoten zum Beispiel einen Rechteckquerschnitt darstellen, habe ich am Ende aber keinen Rechteck TRUSS sondern 4 kreisförmige TRUSS Elemente an den 4 Ecken des Rechtecks. Oder verstehe ich dich falsch?

Grüße

Slein

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

adaptiveMesh
Mitglied



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

Beiträge: 66
Registriert: 25.05.2006

erstellt am: 14. Mai. 2013 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 slein89 10 Unities + Antwort hilfreich

Du kannst auch TIED oder COUPLING nehmen. Wessen Freiheitsgrad eliminiert wird hängt dann davon ab was Master und was Slave ist.
Ums plastisch zu machen: Eine Stütze (TRUSS) steht auf/unter einer dicken Betondecke (SOLID). Die singuläre Anbindung eines Knotens kann zu numerischen Problemen in Verbindung mit großen Verformungen führen. Sie führt aber auf jeden Fall zu falschen Spannungen in der weiteren Umgebung der Anbindung.
(Für ein Modell, dass sinnvolle Spannungen im Nahbereich hergibt wählte man aber sowieso eine andere Anbindung: TRUSS -> SHELL -> SOLID. Oder zöge die Solidmodellierung bis in den Bereich der Stütze.)
Das Hauptproblem ist aber, das bei der Modellierung (TRUSS -> SOLID) mit singulärer Anbindung selbst die globalen Verschiebungen falsch ausgerechnet werden, weil die Ergebnisse (auch die Verschiebungen) netzabhängig sind.
Sinnvolle Ergebnisse erhieltest Du (z. B. auch für das Durchstanzproblem), wenn Du den Querschnitt der Stütze entsprechend (z. B. 20cm*20cm) alle Solidknoten in diesem Stoßbereich auch an die Stütze anbändest.

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