6
1

Hallo,

die folgende Frage wurde bereits im golatex-Forum gepostet, wo man mich hierher verwies.

Ich möchte die Anisotropie eines Einkristalls mittels des E-Moduls im dreidimensionalen Raum in Abhängigkeit der Kristallrichtungen darstellen.

Dazu soll zunächst die Elastizitätsmatrix von Silizium genutzt werden:

$\boldsymbol{C} = 
\begin{bmatrix}
C_{11} & C_{12} & C_{12} &0&0&0 \\ 
C_{12} & C_{11} & C_{12} &0&0&0 \\ 
C_{12} & C_{12} & C_{11} &0&0&0 \\ 
0&0&0&C_{44}&0&0\\  
0&0&0&0&C_{44}&0\\ 
0&0&0&0&0&C_{44}\\ 
\end{bmatrix}$

Elastischen Konstanten:

 $C_{11} = 165,7\,\mathrm{GPa}, \; C_{12} = 63,9\,\mathrm{GPa}, \; C_{44} = 79,6\,\mathrm{GPa}$

Diese Konstanten gelten für ein parallel zu den <100> -Richtungen ausgerichtetes Koordinatensystem. Geht man von einem einachsigen Spannungszustand in einer bestimmten Richtung aus, so kann man den E-Modul für diese Richtung berechnen. Führt man diese Rechnung für beliebige Richtungen durch und trägt die erhaltenen Werte als Abstand um einen Mittelpunkt in ihrer jeweiligen Richtung ab, so entsteht der angehangene Körper.

alt text

Zur Umsetzung bin ich auf das Paket tikz-3dplot gestoßen. Dazu hangele ich mich an folgendem Minimalbeispiel entlang.

\documentclass{minimal}
\usepackage{verbatim}
\usepackage{tikz}
\usepackage{3dplot}

\begin{document}
\tdplotsetmaincoords{70}{135}
\begin{tikzpicture}[scale=1,line join=bevel,tdplot_main_coords, fill opacity=.7]
\pgfsetlinewidth{.1pt}
\tdplotsphericalsurfaceplot[parametricfill]{72}{36}%
{sqrt(15/2)*sin(\tdplottheta)*cos(\tdplottheta)}{black}{\tdplotphi}%
{\draw[color=black,-latex] (0,0,0) -- (2,0,0) node[anchor=north east]{$x$};}%
{\draw[color=red,-latex] (0,0,0) -- (0,2,0) node[anchor=north west]{$y$};}%
{\draw[color=black,-latex] (0,0,0) -- (0,0,2) node[anchor=south]{$z$};}%
\end{tikzpicture}
\end{document}

Nun ist jedoch die Frage, wie ich meine Elastizitätsmatrix hier implementiere und diese dann auch zum Rotieren um den Koordinatenursprung bringe.

Kann hier jemand einen Tip geben bzw. gibt es alternative Lösungsmöglichkeiten?

pgfplots kenne ich ganz gut da ich jeden Tag damit arbeite. Bei der vorliegenden Problemstellung war es mir jedoch noch nicht behilflich.

Zur Formel... Komponenten der Steifigkeitstetrade bezogen auf eine Orthonormalbasis:

$\boldsymbol{C} = C_{ijkl} \boldsymbol{e}_i \otimes \boldsymbol{e}_j \otimes \boldsymbol{e}_k \otimes \boldsymbol{e}_l$

Eine Rotation des Koordinatensystems mit einem Winkel $\omega$ um eine beliebige Achse, deren Lage durch den Einheitsvektor $\boldsymbol{e}$ festgelegt ist, kann durch folgenden (orthogonalen) Tensor vorgenommen werden:

$\boldsymbol{Q} = \boldsymbol{1} \mathrm{cos}\omega +\boldsymbol{e} \otimes \boldsymbol{e} (1-\mathrm{cos}\omega) -\boldsymbol{1} \times \boldsymbol{e} \mathrm{sin}\omega$

Einsteinsche Summenkonvention gilt, $\otimes$ - dyadisches Produkt, $\times$ - Kreuzprodukt

In Mathematica hat es schon einmal jemand umgesetzt. Ein Code-Beispiel gibt es dort auch: Anisotropic Elasticity

Ich habe es mal nachgebastelt: Seite 1 Seite 2

Vielleicht wird die Mathematik hierbei klarer.

Eine exemplarische Plot-Funktion sollte lauten:

63.19/(1.*Cos[theta]^4 + 1.51*Cos[phi]^2*Cos[theta]^2*Sin[theta]^2 + 1.*Cos[phi]^4*Sin[theta]^4 + 0.99*Sin[phi]^4*Sin[theta]^4 + 0.37*Sin[2*phi]^2*Sin[theta]^4 + 0.38*Sin[phi]^2*Sin[2*theta]^2)

gefragt 26 Nov '13, 08:57

Dirk's gravatar image

Dirk
2654610
Akzeptiert-Rate: 40%

geschlossen 17 Nov '14, 06:47

Ich meinte eigentlich eher eine Formel der Form $f(x,y,z)=\ldots$.

(28 Nov '13, 13:33) sudo

AFAIK ist es am besten, wenn du die Formel noch von Kugelkoordinaten in Kartesische Koordinaten umrechnest.

(16 Dez '13, 10:04) sudo

Wie Du in dem oberen Beispiel siehst, kann tikz-3dplot auch mit Polarkoordinaten umgehen. Es sollte also möglich sein, r in Abhängigkeit von phi und theta zu plotten. Eigentlich wollte ich die Eingabe nicht einmal auf die oben angegebene, exemplarische Plot-Funktion herunter brechen.

(16 Dez '13, 19:29) Dirk

@Dirk Sorry, du hast recht mit den Kugelkoordinaten, aber deine Formel scheint nicht zu stimmen. Das Ergebnis stimmt nicht mit deiner Graphik überein.

(17 Dez '13, 08:05) sudo

Oh Mann, immer wenn man denkt, man hätte alles gesehen... :)

(16 Nov '14, 23:13) cis
2

Ich habe die Frage wieder geöffnet. Das Schließen hat eigentlich den Sinn, Fragen, die doppelt gestellt sind (Duplikate) zusammenzuführen, Offtopic-Fragen „abzuwehren“ etc. Dass die Frage beantwortet wurde und die Antwort akzeptiert wurde, sieht man auch so. Wenn man die Frage aber schließt, verhindert man aber auch, dass irgendwann in der Zukunft vielleicht noch jemand mit einer Alternative antworten kann... daher ist es besser, diese Frage offen (was nicht das gleiche wie unbeantwortet ist) zu lassen.

(17 Nov '14, 12:08) cgnieder

ODer vielleicht besser gesagt, offen für Alternativvorschläge. Denn die Frage an sich scheint ja beantwortet.

(17 Nov '14, 15:58) Johannes
Ergebnis 5 von 7 show 2 more comments

Wenn du die richtige Formel gefunden hast, ist der Rest recht einfach: Du ersetzt alle theta durch \tdplottheta, alle phi durch \tdplotphi, Cos[] durch cos(), Sin[] durch sin() und x^y durch pow(x,y) oder du multipizierst x einfach y-mal mit sich selbst. Damit du keine Dimension too large-Fehler erhältst, muss du nun noch deinen Faktor von 63.19 z.B. auf 6.319 reduzieren. Dann musst du noch die Länge der Achsen anpassen, da diese sonst in dem Gebilde verschwinden.

Mir scheint, dass

alt text

die richtige Formel ist. Mit dieser Formel und dem Code unten erhalte ich folgendes Bild.

alt text

\documentclass[margin=2mm]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{50}{165}
\begin{tikzpicture}[scale=20,line join=bevel,tdplot_main_coords, fill opacity=.7]
\pgfsetlinewidth{.1pt}
\tdplotsphericalsurfaceplot[parametricfill]{72}{36}%
{1/(7.74-1.8*(1-cos(2*\tdplottheta))*((1+cos(2*\tdplottheta))+0.25*(1-cos(2*\tdplottheta))*(1-0.5*(1+cos(4*\tdplotphi)))))}%
{black}{10*abs(\tdplotr)}%
{\draw[color=black,-latex] (0,0,0) -- (0.17,0,0) node[anchor=north east]{$x$};}%
{\draw[color=red,-latex] (0,0,0) -- (0,0.3,0) node[anchor=north west]{$y$};}%
{\draw[color=black,-latex] (0,0,0) -- (0,0,0.25) node[anchor=south]{$z$};}%
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 17 Dez '13, 08:55

sudo's gravatar image

sudo
2.0k51521
Akzeptiert-Rate: 39%

bearbeitet 17 Dez '13, 09:49

Danke für die Antwort!

An dieser Stelle möchte ich noch eine Frage nachschieben. Welche Möglichkeiten der Farbdarstellungen gibt es für diesen Plot? Sind monochromatische Farbabstufungen möglich?

(14 Nov '14, 20:02) Dirk
3

@Dirk kannst du die Frage extra posten? Ich denke das wäre auch unabhängig von der Eingangsfrage interessant.

(15 Nov '14, 16:55) sudo
(16 Nov '14, 18:21) Dirk
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×730
×28
×13

gestellte Frage: 26 Nov '13, 08:57

Frage wurde gesehen: 14,670 Mal

zuletzt geändert: 17 Nov '14, 15:58