Interstitielle posisjoner

En tetrahedral posisjon er posisjonen i midten av et tetrahedron. Dette er altså senteret til hulrommet mellom fire atom.

Tetrahedrale posisjoner i BCC kan være litt vanskelig se umiddelbart i en enkelt enhetscelle, men er rimelig greit å få øye på dersom vi tar med senter-atomet ved posisjon $p_2$ til en nabocell som vist i følgende figur:

image.png

En tetrahedral posisjon ligger dermed midt mellom følgende fire punk:

$$p_1 = \frac{1}{2} \text{ } \frac{1}{2} \text{ } \frac{1}{2} \quad p_2 = \frac{1}{2} \text{ } \frac{3}{2} \text{ } \frac{1}{2} \quad p_3 = 1 \text{ } 1 \text{ } 0 \quad p_4= 0 \text{ } 1 \text{ } 0 $$

Legger de 4 punkte i en numpy.array() slik at det blir lett å regner ut gjennomsnittskomponentene i $x$, $y$ og $z$:

In [1]:
import numpy as np

ps = np.array( [ [1/2, 1/2, 1/2],  [1/2, 3/2, 1/2],   [  1,   1,   0],    [  0,   1,   0] ] )

p_tet = sum(ps)/4     # gjennomsnitt av hver komponent

print('Tetrahedral posisjon:', p_tet)
Tetrahedral posisjon: [0.5  1.   0.25]

Altså,

$$p_{tet} = \frac{1}{2} \text{ } 1 \text{ } \frac{1}{4}$$

Sjekker at avstanden fra p_tet til hvert av de fire punkta er identiske ved å regne ut lengden $|\mathbf{v}|$ av vektoren $\mathbf{v}$ mellom dem ved hjelp av numpy.linalg.norm():

In [2]:
for p in ps:
    vektor = p_tet - p                 # vektor mellom tetrahedral punkt og p1 ... p4
    lengde = np.linalg.norm(vektor)    # vektorens lengde (norm) er lik avstand
    print(lengde, vektor)
0.5590169943749475 [ 0.    0.5  -0.25]
0.5590169943749475 [ 0.   -0.5  -0.25]
0.5590169943749475 [-0.5   0.    0.25]
0.5590169943749475 [0.5  0.   0.25]

... og resultatet bekrefter at det er gjort noe veldig fornuftig her...

Merk at $\mathbf{v}$ er i krystallsystemets enhet, så lengden må multipliseres med cellens dimensjon $a$. Fra BCC vet vi at dimensjonen til enhetscellen er

$$a=\frac{4R}{\sqrt{3}}$$

slik at maks radius for et interstitielt atom er (se figur over)

$$ r = a \cdot |\mathbf{v}| - R$$
In [3]:
R=1                    # med R=1
a=4*R/(3**0.5)         # dimensjon til en BCC enhetscelle
r = a*lengde - R       # bruker siste lengde fra forrige kode (0.5590...)
print('r = {:.4f}R'.format(r))
r = 0.2910R

I hver flate vil det være 4 tetrahedrale posisjoner. Eksempelvis flaten som har normal i positiv x-retning:

$$1\text{ }\frac{1}{4}\text{ }\frac{1}{2}, \quad 1\text{ }\frac{1}{2}\text{ }\frac{1}{4}, \quad 1\text{ }\frac{3}{4}\text{ }\frac{1}{2}, \quad 1\text{ }\frac{1}{2}\text{ }\frac{3}{4}$$

Illustrerer disse med radius $r$ når $R=1$:

In [4]:
tet_punkt = [ [0.25*a, 0.5*a], [0.75*a, 0.5*a], [0.5*a,0.25*a], [0.5*a, 0.75*a] ] 

import matplotlib.pyplot as plt
fig,ax=plt.subplots(figsize=(1*a,1*a))
ax.set_xlim(0,a)
ax.set_ylim(0,a)
ax.set_axis_off()
for p in [(a/2,a/2), (0,0), (a,0), (a,a), (0,a)]:
    ax.add_artist( plt.Circle(p, R, color='black',fc='silver',alpha=0.8) )
for p in tet_punkt:
    ax.add_artist( plt.Circle(p, r, color='red',fc='pink',alpha=0.8) )   
plt.show()   

Oktahedrale posisjoner er posisjoner som er omgitt av 6 atom, og disse er lett å identifisere i i FCC. Eksemplevis er posisjonen i midten av cellen en slik posisjon, som altså er omgitt av de 6 atomene som ligger på flatene:

In [5]:
p =     np.array([0, 0.5, 0.5])            # på en av flatene
p_tet = np.array([0.5, 0.5, 0.5])          # senter
vektor = p_tet - p                         # vektor mellom tetrahedral punkt og p
lengde = np.linalg.norm(vektor)            # vektorens lengde (norm) er lik avstand
print('vektorlengde=',lengde)

R = 1
a = 2*(2**0.5)*R                 # se FCC
r = a*lengde - R
print('r = {:.4f}R'.format(r))
vektorlengde= 0.5
r = 0.4142R

Der vil også være en oktahedral posisjon på midten av hver sidekant som illustrert under:

In [6]:
fig,ax=plt.subplots(figsize=(1*a,1*a))
ax.set_xlim(0,a)
ax.set_ylim(0,a)
ax.set_axis_off()
for p in [(a/2,a/2)]:
    ax.add_artist( plt.Circle(p, r, color='red',fc='pink',alpha=0.8) ) 
for p in [(a/2,0), (a,a/2), (a/2,a), (0,a/2)]:
    ax.add_artist( plt.Circle(p, R, color='black',fc='silver',alpha=0.8) )
for p in [(a/2, a/2), (0,0), (a,0), (a,a), (0,a)]:
    ax.add_artist( plt.Circle(p, R, color='black',fc='silver',alpha=0.9) )
for p in [(a/2,0), (a,a/2), (a/2,a), (0,a/2)]:
    ax.add_artist( plt.Circle(p, r, color='red',fc='pink',alpha=0.8) )   
plt.show()   

Disclaimer:This site is designed for educational purposes only. There are most likely errors, mistakes, typos, and poorly crafted statements that are not detected yet... www.ntnu.edu/employees/nils.p.vedvik

Copyright 2023, All rights reserved