Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Spannungen mit Phyton in eine Datei schreiben

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:  Spannungen mit Phyton in eine Datei schreiben (2095 mal gelesen)
node
Mitglied
Student


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

Beiträge: 98
Registriert: 19.11.2009

erstellt am: 01. Jul. 2010 15: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


STRESS_Element.txt

 
Hallo liebe ABAQUS-Gemeine,

ich habe mir einen Phyton gebastelt, um die Spannungen und eine SDV-Variable aus dem odb.file in eine separate Datei zu schreiben. Doch leider habe ich eineige Syntax-Fehler. Kann mir da jemand helfen. Ich möchte z.B. Spannungen und SDV's aus dem 100-ten Element am 1-Gausspunkt mir in einer Datei ausgeben lassen. Doch leider schein es nicht wirklich zu funktionieren. Bitte um Hilfe....

Ich hänge meine Datei an, vielleicht schaut jemand mal drüber?!

Bedanke mich bereits im Voraus!

MfG

------------------
-Nils-

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

HerrHansen
Mitglied
Dipl.-Ing.


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

Beiträge: 257
Registriert: 03.12.2005

Abaqus/CAE 6.3 bis 6.12

erstellt am: 01. Jul. 2010 19:25    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 node 10 Unities + Antwort hilfreich

Kannst du mal die Fehler posten?

Edit:
Was mir zuerst auffällt:
1.) die Variable "daten" ist nicht definiert
2.) die Variable "each" ist nicht definiert
3.) ich wage zu bezweifeln, dass "frame" ein Attribut integrationPoint hat. (Kann mich auch irren, hab grade kein Manual zur Hand).
4.) Die if-Schleife über frame.integrationPoint (siehe dazu Punkt 3.)) kannst du dir sparen, zumal du ja eh nicht über die Element-Labels iterierst. Wenn du wirklich bloß vom Element 100 die Spannungen haben willst, kannst du es direkt ansprechen.

[Diese Nachricht wurde von HerrHansen am 01. Jul. 2010 editiert.]

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

node
Mitglied
Student


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

Beiträge: 98
Registriert: 19.11.2009

erstellt am: 01. Jul. 2010 19:55    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 HerrHansen,

ich kriege folgenden Fehler:  File "STRESS_Element.py", line 62
    if frame.elementLabel=100:                        ^
SyntaxError: invalid syntax

Ich habe erst vor wenigen Tagen mit Python wieder angefangen. Ich möchte nicht nur die Spannungen mir ausgeben lassen, sondern auch die SDV's, die ich in meiner UMAT verwende(aber wie schon gesagt für einen bestimmten Gausspunkt).


MfG

------------------
-Nils-

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

node
Mitglied
Student


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

Beiträge: 98
Registriert: 19.11.2009

erstellt am: 02. Jul. 2010 13:40    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 Abaqus -Gemeinde,

habe jetzt nun meinen Python geschrieben. Ich definiere in meinem Model 1Set=1Element. Über Python gebe ich mir die Spannungen aus. Doch ich habe immer noch nicht raus gekriegt, wie ich meine SDV1 bis SDV6 in dem selben Datei ausgebe.

So kriege ich meine Spanunngen und NPT's für mein Element raus...

####################################################################################
elsetname='SET-1'
elset  = odb.rootAssembly.elementSets[elsetname]

                  elset_results = odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['S'].getSubset(region=elset)

          for each in elset_results.values:
                                      Element = each.elementLabel
                                      NPT = each.integrationPoint
                                      S11 = each.data[0]
                                      S22 = each.data[1]
                                      S12 = each.data[3]
########################################################################################

Muss ich für die SDV's neue Zeile schreiben?!
z.B.  elset_daten = elset_results.odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['SDV'].getSubset(region=elset)
                      for each in elset_daten.values:
                              SDV1=each.SDV[1]

Es funktioniert leider nicht....

Kann mir da jemand helfen? Oder einen Tip geben....

Bedanke mich bereits im Voraus!

MfG

------------------
-Nils-

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

HerrHansen
Mitglied
Dipl.-Ing.


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

Beiträge: 257
Registriert: 03.12.2005

Abaqus/CAE 6.3 bis 6.12

erstellt am: 05. Jul. 2010 19: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 Nur für node 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von node:
if frame.elementLabel=100:

Der Syntax-Error kommt hier, weil Vergleiche in Python mit einem Doppel-= getätigt werden. Ein einfaches "=" entspricht immer einer Zuweisung.

Zum SDV-Problem:
Probier mal folgendes:

Code:
for each in elset_daten.values:
  SDV1=each.data[1]

Die SDVs sind auch bloß Field-Outputs und müssten auch genauso anzusprechen sein.
Im Zweifelsfall kannst du die Prozedur im /CAE "per Hand" durchführen, dir dann im rpy-File den Syntax anschauen und in leicht abgewandelter Form (es müssen die Session-Referenzen gelöscht werden) in dein Skript übernehmen: Stelle deine Elset im CAE dar, drücke auf Report -> Field Output und klicke im erscheinenden Fenster alle SDVs an. Dann sollte meiner Meinung nach im rpy-File genau dastehen, wie man die SDVs aus der ODB holt.

Nachtrag: Was genau funktioniert denn in deinem obigen Skript nicht? Wie lautet die Fehlermeldung?
Du kannst auch deinen Code der Reihe nach in das command line interface vom CAE eintippen. Da siehst du genau, wo's hängt und kannst dir mit der Tab-Taste auch den Syntax vorschlagen lassen.

[Diese Nachricht wurde von HerrHansen am 05. Jul. 2010 editiert.]

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

node
Mitglied
Student


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

Beiträge: 98
Registriert: 19.11.2009

erstellt am: 07. Jul. 2010 15: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

Hallo HerrHansen,

habe meinen Code jetzt geändert:
------------------------------------------------------------------------------------------------------------------------------
#######  if each.integrationPoint==8 (Zeile ausgeblendet, da ich eine SyntaxFehler kriege! Ursachenforschung!!!)
                elset_results = odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['S'].getSubset(region=elset)         
        for each in elset_results.values:
                              Element = each.elementLabel
                              NPT = each.integrationPoint
                              S11 = each.data[0]
                              S22 = each.data[1]
                              S12 = each.data[3]                                   
                elset_daten = elset_results.odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['SDV'].getSubset(region=elset)
                for each in elset_daten.values:
                              SDV1=each.data[1]
                              textdatei.write('%d %d %14.5E %14.5E  %14.5E %14.5E\n' % (Element, NPT, SDV1,S11, S22, S12))
----------------------------------------------------

Ohne letzten 3 Zeilen funktioniert mein Python ohne Probleme. Will ich SDV's mit ausgeben, kriege ich folgende Fehlermeldung!

FEHLERMELDUNG:
=================================================================================================================================
Traceback (most recent call last):
  File "STRESS_Element.py", line 91, in ?
    elset_daten = elset_results.odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['SDV'].getSubset(region=elset)
AttributeError: 'FieldOutput' object has no attribute 'odb'
=================================================================================================================================

Man komme einfach nicht weiter....

MfG

------------------
-Nils-

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

node
Mitglied
Student


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

Beiträge: 98
Registriert: 19.11.2009

erstellt am: 07. Jul. 2010 15:28    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 HerrHansen,

Fehler mit IntegrationPoint behoben, nur mit SDV noch nicht..
---------------------------------------------------------       
        for each in elset_results.values:
                        if each.integrationPoint==8:
                              Element = each.elementLabel
                                      .
                                      .
                                      . 
----------------------------------------------------------

MfG

------------------
-Nils-

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

HerrHansen
Mitglied
Dipl.-Ing.


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

Beiträge: 257
Registriert: 03.12.2005

Abaqus/CAE 6.3 bis 6.12

erstellt am: 08. Jul. 2010 13:29    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 node 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von node:
Hallo HerrHansen,

habe meinen Code jetzt geändert:


Die Fehlermeldung zeigt dir, wo dein Fehler liegt. Ich habe hier deinen Code mal kopiert und Zeilennummern davorgeschrieben:

Code:
               
1 elset_results = odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['S'].getSubset(region=elset)         
2        for each in elset_results.values:
3                              Element = each.elementLabel
4                              NPT = each.integrationPoint
5                              S11 = each.data[0]
6                              S22 = each.data[1]
7                              S12 = each.data[3]                                   
8                elset_daten = elset_results.odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['SDV'].getSubset(region=elset)
9                for each in elset_daten.values:
10                              SDV1=each.data[1]
11                              textdatei.write('%d %d %14.5E %14.5E  %14.5E %14.5E\n' % (Element, NPT, SDV1,S11, S22, S12))

In Zeile 1 hast du eine Variable "elset_results" definiert. Diese Variable hat den Wert "odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['S'].getSubset(region=elset)".
In Zeile 8 beziehst du dich auf genau diese Variable und versuchst auf das Attribut "odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['SDV'].getSubset(region=elset)" zuzugreifen, welche die Variable aber nicht hat. Jeder Punkt in dieser Zeile bedeutet eine Weiterverzweigung zu Unterattributen. Das hört sich ziemlich theoretisch an, ist aber ganz einfach.
Zur Verdeutlichung habe ich dir hier mal die Zeile 8 unabgekürzt hingeschrieben (also das, was der Python-Interpreter hier versteht):

Code:

8-1                elset_daten = odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['S'].getSubset(region=elset).odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['SDV'].ge tSubset(region=elset)


Deine Code ist also doppelt gemoppelt. Und jetzt verstehst du auch die Fehlermeldung "Attribut Error": An der oben fett kursiv markierten Stelle (sieht man mit dieser bescheidenen Schriftart leider schlecht) versuchst du, auf ein Unterattribut "odb" weiter zu verzeigen. Hier geht es aber nicht weiter, hier ist Endstation.

Lösung:
Ändere einfach deine Zeile 8 in

Code:

                elset_daten = odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['SDV'].getSubset(region=elset)


ab.

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

node
Mitglied
Student


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

Beiträge: 98
Registriert: 19.11.2009

erstellt am: 09. Jul. 2010 13: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

Hallo HerrHansen,

vielen Dank für deinen Hilfe. Habe aber noch ein kleines Problem. Will ich die Spannungen und SDV's in einer Datei schreiben, bekomme ich folgende Fehlermeldung: 
File "STRESS_Element.py", line 8
    elset_daten = odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['SDV3'].getSubset(region=elset)
    IndentationError: unindent does not match any outer indentation level
--------------------------------------------------------------------------
mein Code lautet nun:

1 elset_results = odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['S'].getSubset(region=elset)       
2        for each in elset_results.values:
3                              Element = each.elementLabel
4                              NPT = each.integrationPoint
5                              S11 = each.data[0]
6                              S22 = each.data[1]
7                              S12 = each.data[3]                                 
8                elset_daten = elset_results.odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['SDV1'].getSubset(region=elset)
9                for each in elset_daten.values:
10                              SDV1=each.data
11                              textdatei.write('%d %d %14.5E %14.5E %14.5E %14.5E\n' % (Element, NPT, SDV1,S11, S22, S12))
-----------------------------------------------------------------------------------------------------
Die SDV's werden einzeln im odb-file geschrieben, deshalb SDV1.

Einzelnen elset_ result (Element, NPT, S11, S22, S12)oder elset_daten (SDV1)Code laufen ohne Probleme und ich kriege die gewünschten Ergebnisse raus. Nur wenn ich alle Werte(Element, NPT, SDV1,S11, S22, S12) in einer Datei mir ausgeben möchte, kriege ich eine Fehlermeldung(siehe oben). Wie kann ich denn alle Ergebnisse in einer Datei ausgeben lassen? Habe schon einiges ausprobiert, klappt aber nicht so richtig. Hast du vielleicht eine Ahnung?


MfG

------------------
-Nils-

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

node
Mitglied
Student


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

Beiträge: 98
Registriert: 19.11.2009

erstellt am: 09. Jul. 2010 13:29    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 HerrHansen,

sorry vorher habe leider Fehlerhafte Codierung geschickt, die richtige lautet:

1 elset_results = odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['S'].getSubset(region=elset)     
2        for each in elset_results.values:
3                              Element = each.elementLabel
4                              NPT = each.integrationPoint
5                              S11 = each.data[0]
6                              S22 = each.data[1]
7                              S12 = each.data[3]                               
8                elset_daten = odb.steps[step.name].frames[frame.incrementNumber].fieldOutputs['SDV1'].getSubset(region=elset)
9                for each in elset_daten.values:
10                              SDV1=each.data
11                              textdatei.write('%d %d %14.5E %14.5E %14.5E %14.5E\n' % (Element, NPT, SDV1,S11, S22, S12))
-----------------------------------------------------------------------------------------------------

MfG

------------------
-Nils-

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

HerrHansen
Mitglied
Dipl.-Ing.


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

Beiträge: 257
Registriert: 03.12.2005

Abaqus/CAE 6.3 bis 6.12

erstellt am: 09. Jul. 2010 14:42    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 node 10 Unities + Antwort hilfreich

In Python wird im Gegensatz zu C oder TP nicht mit irgendwelchen Klammern für Beginn und Ende einer Schleife gearbeitet, sondern mit Einrückungen (engl. Indentation)! Jede Einrückung (mit Tabulator oder Leerzeichen) ist ein Level.
De Fehlermeldung "IndentationError: unindent does not match any outer indentation level" sagt eigentlich alles. Ab Zeile 8 hast du den Code zwar wieder ausgerückt, aber zu wenig. Es gibt keine Schleife, die zu deiner Einrückung passt.
Du musst also Zeile 8 wieder auf das Level 0 (null) bringen. Konkret: Lösche die Tabs (oder Leerzeichen). Aber Vorsicht: in Zeile 10 wird wieder eine Indentation benötigt, weil die hier ja wieder eine for-Schleife hast.

Ich empfehle dir:
1.) mal eine ganz einfaches Python-Tutorial durchzugehen (siehe google)
2.) einen vernünftigen Editor zu verwenden, z.B. Scite. Dieser bietet Syntax-Highlighting, womit du o.g. Problem schon rein optisch gesehen hättest.

[Diese Nachricht wurde von HerrHansen am 09. Jul. 2010 editiert.]

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

node
Mitglied
Student


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

Beiträge: 98
Registriert: 19.11.2009

erstellt am: 09. Jul. 2010 15:15    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 HerrHansen,

habe jetzt hinbekommen, dank deiner Hilfe! Habe mir einen Python Tutorial rein gezogen und alle Fehler behoben. Es läuft.....
Ich habe einige Leerzeichen in der elset_daten Zeile zu viel, also falschen Level-Zuweisung.

Vielen Dank für deine Hilfe.    Echt klasse!!!


MfG

------------------
-Nils-

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

HerrHansen
Mitglied
Dipl.-Ing.


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

Beiträge: 257
Registriert: 03.12.2005

Abaqus/CAE 6.3 bis 6.12

erstellt am: 12. Jul. 2010 08:54    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 node 10 Unities + Antwort hilfreich

Immer gerne 

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