Hopp til innhold

Miller Indeks Kalkulator - Konverter Krystallplan Skjæringspunkter til (hkl)

Beregn Miller indekser (hkl) fra krystallplan skjæringspunkter. Rask, nøyaktig konvertering for krystallografi, XRD analyse og materialvitenskap. Fungerer for alle krystallsystemer.

Miller Indeks Kalkulator

Krystallplan Skjæringspunkter

Skriv inn skjæringspunktene til krystallplanet med x-, y- og z-aksene. Bruk '∞' eller 'uendelig' for plan parallelle med en akse.

Skriv inn et tall eller ∞ for uendelig (parallell med akse)

Skriv inn et tall eller ∞ for uendelig (parallell med akse)

Skriv inn et tall eller ∞ for uendelig (parallell med akse)

Miller indeksene for dette planet er:
(1,1,1)

Visualisering

Hva er Miller Indekser?

Miller indekser er et notasjonssystem som brukes i krystallografi for å spesifisere plan og retninger i krystallgitter.

For å beregne Miller indekser (h,k,l) fra skjæringspunkter (a,b,c):

1. Ta resiprokene av skjæringspunktene: (1/a, 1/b, 1/c) 2. Konverter til det minste settet av heltall med samme forhold 3. Hvis et plan er parallelt med en akse (skjæringspunkt = uendelig), er dets tilsvarende Miller indeks 0

  • Negative indekser angis med en strek over tallet, f.eks. (h̄,k,l)
  • Notasjonen (hkl) representerer et spesifikt plan, mens {hkl} representerer en familie av ekvivalente plan
  • Retningsindekser skrives i hakeparenteser [hkl], og familier av retninger betegnes med <hkl>
Lastekalkulator...
📚

Dokumentasjon

Forstå Miller-indekser: En praktisk guide til krystallplan-notasjon

Hvis du noen gang har arbeidet med krystallografi eller materialvitenskap, vet du at det å beskrive krystallplan nøyaktig er avgjørende. Miller-indekser gir nettopp det—en systematisk måte å identifisere ethvert plan i et krystallgitter ved hjelp av bare tre heltall (h,k,l).

Denne kalkulatoren konverterer planintercept langs krystallografiske akser til standard Miller-indekser-notasjon. Når du analyserer krystallstrukturer eller tolker røntgendiffraksjonsdata, vil du hyppig trenge å referere til spesifikke plan. I stedet for å beskrive hvert plan ved dets geometriske intercept (som kan være tungvint), gir Miller-indekser deg en konsis, universelt forstått notasjon.

Det som gjør denne notasjonen spesielt nyttig, er hvordan den forenkler kommunikasjonen mellom forskere. I stedet for å si "planet som skjærer x-aksen ved 2, y-aksen ved 3 og z-aksen ved 6", refererer du ganske enkelt til (321)-planet. Denne standardiseringen har vært avgjørende for krystallografien siden William Hallowes Miller introduserte den i 1839.

Hva er Miller-indekser?

Miller-indekser er tre heltall (h,k,l) som entydig identifiserer en familie av parallelle plan i et krystallgitter. Her er hovedinnsikten: de er avledet fra resiprokene av hvor et plan skjærer krystallografiske akser.

Tenk på det slik—hvis et plan skjærer gjennom en krystall ved bestemte punkter langs x-, y- og z-aksene, tar du resiprokene av disse skjæringsverdiene og reduserer dem til de minste hele tallene. Denne matematiske tilnærmingen, som i begynnelsen kan virke abstrakt, har en praktisk fordel: plan som er strukturelt like får like indekser, og parallelle plan deler samme indekser uavhengig av deres posisjon.

Visuell fremstilling av Miller-indekser

[Hele SVG-innholdet forblir uendret]

Hvordan beregne Miller-indekser: Kjerneformelen

Beregning av Miller-indekser følger en enkel firetrinns prosess:

  1. Identifiser skjæringspunktene - Bestem hvor planet krysser x-, y- og z-krystallografiske aksene (kall disse a, b og c)
  2. Ta resiprokene - Beregn 1/a, 1/b og 1/c
  3. Fjern brøker - Multipliser alle tre verdiene med samme tall for å eliminere brøker
  4. Reduser til laveste ledd - Del på den største fellesnevneren for å få de minste heltallige verdiene

Den matematiske sammenhengen uttrykkes som:

h:k:l=1a:1b:1ch : k : l = \frac{1}{a} : \frac{1}{b} : \frac{1}{c}

Hvor (h,k,l) er Miller-indeksene og a, b, c er skjæringspunktene langs hver akse.

En vanlig forvirring: hvorfor bruke resiprokere? Det viser seg at dette valget har praktiske fordeler. Plan som aldri skjærer en akse (parallelt med den) ville ha et uendelig skjæringspunkt—men 1/∞ er lik null, noe som gir oss en ren numerisk representasjon. Denne elegansen er grunnen til at Miller-notasjonen har holdt seg i nesten to århundrer.

Spesialtilfeller du vil støte på

Når du arbeider med Miller-indekser, vil du støte på flere grensetilfeller som i begynnelsen kan virke vanskelige:

Parallelle plan - Når et plan løper parallelt med en akse (aldri skjærende), er det skjæringspunktet ved uendelig. Siden 1/∞ = 0, blir den tilsvarende indeksen null. Så et plan parallelt med y-aksen kan være (201), der den midterste nullen indikerer at det aldri krysser y-aksen.

Negative skjæringspunkter - Plan kan skjære aksene på den negative siden av origo. I formell krystallografisk notasjon vises negative indekser med en strek over tallet: (h̄kl). I digitale sammenhenger vil du ofte se dette skrevet som (-h,k,l) av praktiske årsaker.

Brøkaktige skjæringspunkter - Noen ganger kommer dine opprinnelige skjæringspunkter ut som brøker. Ikke noe problem—multipliser bare alle resiprokere med den minste fellesnevneren for å fjerne nevnerne. Forholdet er det som betyr noe, ikke de absolutte verdiene.

Alltid forenkle - En vanlig feil er å la indekser forbli i en ureduserbar form. (622) og (311) representerer samme planfamilie, men krystallografer bruker alltid (311)—settet med laveste heltall. Tenk på det som å forenkle brøker: del alltid på den største fellesnevneren.

Hvordan bruke denne kalkulatoren

Bruk av kalkulatoren er enkelt:

  1. Angi dine skjæringspunkter - Legg inn hvor planet krysser x-, y- og z-aksene

    • Positive tall for positive skjæringspunkter
    • Negative tall for negative skjæringspunkter
    • Null eller uendelig for plan parallelle med en akse
  2. Få øyeblikkelige resultater - Kalkulatoren beregner Miller-indeksene automatisk

  3. Sjekk visualiseringen - En 3D-representasjon viser planets orientering i krystallgitteret

  4. Kopier til ditt arbeid - Overfør resultatene direkte til analyseprogramvaren eller notatene dine

Gjennomgått Eksempel

La oss gå gjennom en konkret situasjon. La oss si at du har et plan som skjærer:

  • x-aksen ved 2
  • y-aksen ved 3
  • z-aksen ved 6

Her er beregningen:

  1. Start med skjæringspunkter: (2, 3, 6)
  2. Ta resiprokene: (1/2, 1/3, 1/6)
  3. Fjern brøkene ved å multiplisere med LCM(2,3,6) = 6: (3, 2, 1)
  4. Sjekk om den er reduserbar: GCD(3,2,1) = 1, så vi er ferdige

Resultat: (321) plan

Dette er et vanlig eksempel fordi det viser hele prosessen. I praksis vil du ofte støte på enklere tilfeller som (100) eller (110) plan, som representerer store krystalloverlater.

Praktiske Bruksområder for Miller-indekser

Miller-indekser dukker opp på tvers av flere felt der krystallstruktur er viktig. Her er stedene du oftest vil støte på dem:

Røntgendiffraksjon Analyse

Når du analyserer røntgendiffraksjon (XRD) mønstre, er Miller-indekser uunnværlige. Hver diffraksjonstopp tilsvarer et spesifikt sett med krystallplan. Forholdet mellom planeavstand og diffraksjonsvinkel følger Braggs lov:

nλ=2dhklsinθn\lambda = 2d_{hkl}\sin\theta

Der dhkld_{hkl} er avstanden mellom plan med indekser (h,k,l), λ\lambda er røntgenbølgelengden, og θ\theta er diffraksjonsvinkel.

I praktisk XRD-arbeid må du ofte indeksere diffraksjonstoppene—ved å matche observerte topper med spesifikke (hkl) plan. Denne prosessen er grunnleggende for å identifisere ukjente krystallinske materialer eller bekrefte krystallstruktur etter syntese.

Materialteknologi

Overflateegenskaper - Forskjellige krystallplan eksponerer ulike atomære arrangementer, noe som betyr at de har forskjellige overflateenergier. (111)-flaten til et kubisk flatesentrert metall har for eksempel lavere overflateenergi enn (100)- eller (110)-flater. Dette er svært viktig innen katalyse, hvor reaksjonshastigheter avhenger av hvilke krystallflater som er eksponert.

Mekanisk oppførsel - Metaller deformeres langs spesifikke krystallografiske glidningssystemer. I kubisk flatesentrerte metaller som aluminium skjer glidning på {111} plan i <110> retninger. Forståelse av hvilke plan som er aktive under deformasjon hjelper med å forutsi materialoppførsel under stress.

Halvleder-produksjon - Silisiumskiver kuttes langs spesifikke krystallografiske plan, oftest (100) eller (111). Valget påvirker epitaksial vekstrate, dopingsoppførsel og enhetens ytelse. I følge IEEE-standarder for halvlederkrystaller dominerer (100)-orienteringen moderne CMOS-produksjon.

Teksturanalyse - Når metaller valses, smijes eller trekkes, utvikler korn foretrukne retninger (tekstur). Beskrivelse av denne teksturen krever Miller-indekser for å spesifisere hvilke plan som rettes inn med prosessretninger. Denne teksturen påvirker direkte egenskaper som magnetisk oppførsel i elektriske stål og duktilitet i aluminiumsark.

Mineralogi

Geologer beskriver mineralske krystallflater ved hjelp av Miller-indekser. Når du undersøker en kvartskrystall, tilsvarer disse flate flatene spesifikke (hkl) plan. Spalting—hvordan mineraler brytes langs bestemte plan—beskrives også ved hjelp av denne notasjonen. Den perfekte {100} spaltingen av halitt (bordsalt) eller {111} spaltingen av fluoritt er klassiske eksempler.

Alternative notasjonssystemer

Mens Miller-indekser dominerer krystallografien, vil du av og til støte på alternative notasjoner:

Miller-Bravais-indekser - For heksagonale krystaller, et fire-indeks system (hkil) hvor i=-(h+k) bedre fanger opp den heksagonale symmetrien. Du vil se dette i arbeid med sink, magnesium og mange halvledere som GaN. Den redundante fjerde indeksen gjør det enklere å gjenkjenne ekvivalente plan - noe som ikke er åpenbart i tre-indeks notasjon for heksagonale systemer.

Weber-symboler og Naumann-notasjon - Disse dukker hovedsakelig opp i eldre mineralogisk litteratur. De fleste moderne arbeider har gått over til Miller-indekser, men du kan støte på disse ved lesing av historiske papirer.

Direkte gittervektor - Noen teoretiske arbeider beskriver plan ved bruk av direkte gittervektorer i stedet for Miller-indekser. Denne tilnærmingen er vanlig i computational materials science hvor du arbeider direkte med atomære koordinater.

Til tross for disse alternativene, forblir Miller-indekser lingua franca i krystallografien fordi de fungerer for alle syv krystallsystemer og gir et intuitivt rammeverk for de fleste anvendelser.

Historisk Utvikling

William Hallowes Miller, en britisk mineralog, introduserte dette notasjonssystemet i 1839 i sin "Treatise on Crystallography". Det interessante er at Miller ikke oppfant ideen om indeksering av krystallflater - tidligere systemer som Weiss-parametere eksisterte allerede. Millers gjennombrudd var bruken av resiproke skjæringspunkter, som elegant håndterte parallelle plan (der skjæringspunkter er uendelige) og forenklet mange beregninger.

Systemets virkelige verdi ble tydelig med Max von Laues oppdagelse av røntgendiffraksjon i 1912. William Henry Bragg og William Lawrence Bragg (far og sønn) gjenkjente umiddelbart hvordan Miller-indekser perfekt beskrev planene som var ansvarlige for diffraksjonstopper. Deres 1913-arbeid om krystallstrukturbestemmelse sementerte Miller-indekser som essensielle verktøy.

Gjennom hele det 20. århundret, ettersom røntgenkrystallografi utvidet seg fra mineralogi til metallurgi, faststatsfysikk og til slutt proteinkreystallografi, fulgte Miller-indekser med. I dag er de uunnværlige innen felt Miller aldri kunne forestille seg - fra analyse av halvleder-heterostrukturer til design av nanopartikkel-katalysatorer.

Implementasjonseksempler

Hvis du trenger å beregne Miller-indekser programmatisk—kanskje du behandler store datasett eller bygger analysepipelines—her er implementasjoner i flere språk. Hver håndterer de viktige utfordringene: ta resiprokaler, rydde brøker og redusere til laveste termer.

Python-implementasjon

1import math
2import numpy as np
3
4def calculate_miller_indices(intercepts):
5    """
6    Beregn Miller-indekser fra skjæringspunkter
7    
8    Args:
9        intercepts: Liste over tre skjæringspunkter [a, b, c]
10        
11    Returns:
12        Liste over tre Miller-indekser [h, k, l]
13    """
14    # Håndter uendelige skjæringspunkter (parallell med akse)
15    reciprocals = []
16    for intercept in intercepts:
17        if intercept == 0 or math.isinf(intercept):
18            reciprocals.append(0)
19        else:
20            reciprocals.append(1 / intercept)
21    
22    # Finn ikke-null verdier for GCD-beregning
23    non_zero = [r for r in reciprocals if r != 0]
24    
25    if not non_zero:
26        return [0, 0, 0]
27    
28    # Skaler til fornuftige heltall (unngå flyttallsproblemer)
29    scale = 1000
30    scaled = [round(r * scale) for r in non_zero]
31    
32    # Finn GCD
33    gcd_value = np.gcd.reduce(scaled)
34    
35    # Konverter tilbake til minste heltall
36    miller_indices = []
37    for r in reciprocals:
38        if r == 0:
39            miller_indices.append(0)
40        else:
41            miller_indices.append(round((r * scale) / gcd_value))
42    
43    return miller_indices
44
45# Eksempel på bruk
46intercepts = [2, 3, 6]
47indices = calculate_miller_indices(intercepts)
48print(f"Miller-indekser for skjæringspunkter {intercepts}: {indices}")  # Utdata: [3, 2, 1]
49

JavaScript-implementasjon

1function gcd(a, b) {
2  a = Math.abs(a);
3  b = Math.abs(b);
4  
5  while (b !== 0) {
6    const temp = b;
7    b = a % b;
8    a = temp;
9  }
10  
11  return a;
12}
13
14function gcdMultiple(numbers) {
15  return numbers.reduce((result, num) => gcd(result, num), numbers[0]);
16}
17
18function calculateMillerIndices(intercepts) {
19  // Håndter uendelige skjæringspunkter
20  const reciprocals = intercepts.map(intercept => {
21    if (intercept === 0 || !isFinite(intercept)) {
22      return 0;
23    }
24    return 1 / intercept;
25  });
26  
27  // Finn ikke-null verdier for GCD-beregning
28  const nonZeroReciprocals = reciprocals.filter(val => val !== 0);
29  
30  if (nonZeroReciprocals.length === 0) {
31    return [0, 0, 0];
32  }
33  
34  // Skaler til heltall for å unngå flyttallsproblemer
35  const scale = 1000;
36  const scaled = nonZeroReciprocals.map(val => Math.round(val * scale));
37  
38  // Finn GCD
39  const divisor = gcdMultiple(scaled);
40  
41  // Konverter til minste heltall
42  const millerIndices = reciprocals.map(val => 
43    val === 0 ? 0 : Math.round((val * scale) / divisor)
44  );
45  
46  return millerIndices;
47}
48
49// Eksempel
50const intercepts = [2, 3, 6];
51const indices = calculateMillerIndices(intercepts);
52console.log(`Miller-indekser for skjæringspunkter ${intercepts}: (${indices.join(',')})`);
53// Utdata: Miller-indekser for skjæringspunkter 2,3,6: (3,2,1)
54

Java-implementasjon

1import java.util.Arrays;
2
3public class MillerIndicesCalculator {
4    
5    public static int gcd(int a, int b) {
6        a = Math.abs(a);
7        b = Math.abs(b);
8        
9        while (b != 0) {
10            int temp = b;
11            b = a % b;
12            a = temp;
13        }
14        
15        return a;
16    }
17    
18    public static int gcdMultiple(int[] numbers) {
19        int result = numbers[0];
20        for (int i = 1; i < numbers.length; i++) {
21            result = gcd(result, numbers[i]);
22        }
23        return result;
24    }
25    
26    public static int[] calculateMillerIndices(double[] intercepts) {
27        double[] reciprocals = new double[intercepts.length];
28        
29        // Beregn resiprokaler
30        for (int i = 0; i < intercepts.length; i++) {
31            if (intercepts[i] == 0 || Double.isInfinite(intercepts[i])) {
32                reciprocals[i] = 0;
33            } else {
34                reciprocals[i] = 1 / intercepts[i];
35            }
36        }
37        
38        // Tell ikke-null verdier
39        int nonZeroCount = 0;
40        for (double r : reciprocals) {
41            if (r != 0) nonZeroCount++;
42        }
43        
44        if (nonZeroCount == 0) {
45            return new int[]{0, 0, 0};
46        }
47        
48        // Skaler til heltall
49        int scale = 1000;
50        int[] scaled = new int[nonZeroCount];
51        int index = 0;
52        
53        for (double r : reciprocals) {
54            if (r != 0) {
55                scaled[index++] = (int) Math.round(r * scale);
56            }
57        }
58        
59        // Finn GCD
60        int divisor = gcdMultiple(scaled);
61        
62        // Konverter til minste heltall
63        int[] millerIndices = new int[reciprocals.length];
64        for (int i = 0; i < reciprocals.length; i++) {
65            if (reciprocals[i] == 0) {
66                millerIndices[i] = 0;
67            } else {
68                millerIndices[i] = (int) Math.round((reciprocals[i] * scale) / divisor);
69            }
70        }
71        
72        return millerIndices;
73    }
74    
75    public static void main(String[] args) {
76        double[] intercepts = {2, 3, 6};
77        int[] indices = calculateMillerIndices(intercepts);
78        
79        System.out.println("Miller-indekser for skjæringspunkter " + 
80                           Arrays.toString(intercepts) + ": " + 
81                           Arrays.toString(indices));
82        // Utdata: Miller-indekser for skjæringspunkter [2.0, 3.0, 6.0]: [3, 2, 1]
83    }
84}
85

Excel VBA-implementasjon

1' Excel VBA-funksjon for Miller-indekser-beregning
2Function CalculateMillerIndices(x As Double, y As Double, z As Double) As String
3    Dim recipX As Double, recipY As Double, recipZ As Double
4    Dim nonZeroCount As Integer, i As Integer
5    Dim scale As Long, gcdVal As Long
6    Dim scaledVals() As Long
7    Dim millerH As Long, millerK As Long, millerL As Long
8    
9    ' Beregn resiprokaler
10    If x = 0 Then
11        recipX = 0
12    Else
13        recipX = 1 / x
14    End If
15    
16    If y = 0 Then
17        recipY = 0
18    Else
19        recipY = 1 / y
20    End If
21    
22    If z = 0 Then
23        recipZ = 0
24    Else
25        recipZ = 1 / z
26    End If
27    
28    ' Tell ikke-null verdier
29    nonZeroCount = 0
30    If recipX <> 0 Then nonZeroCount = nonZeroCount + 1
31    If recipY <> 0 Then nonZeroCount = nonZeroCount + 1
32    If recipZ <> 0 Then nonZeroCount = nonZeroCount + 1
33    
34    If nonZeroCount = 0 Then
35        CalculateMillerIndices = "(0,0,0)"
36        Exit Function
37    End If
38    
39    ' Skaler til heltall
40    scale = 1000
41    ReDim scaledVals(1 To nonZeroCount)
42    i = 1
43    
44    If recipX <> 0 Then
45        scaledVals(i) = Round(recipX * scale)
46        i = i + 1
47    End If
48    
49    If recipY <> 0 Then
50        scaledVals(i) = Round(recipY * scale)
51        i = i + 1
52    End If
53    
54    If recipZ <> 0 Then
55        scaledVals(i) = Round(recipZ * scale)
56    End If
57    
58    ' Finn GCD
59    gcdVal = scaledVals(1)
60    For i = 2 To nonZeroCount
61        gcdVal = GCD(gcdVal, scaledVals(i))
62    Next i
63    
64    ' Beregn Miller-indekser
65    If recipX = 0 Then
66        millerH = 0
67    Else
68        millerH = Round((recipX * scale) / gcdVal)
69    End If
70    
71    If recipY = 0 Then
72        millerK = 0
73    Else
74        millerK = Round((recipY * scale) / gcdVal)
75    End If
76    
77    If recipZ = 0 Then
78        millerL = 0
79    Else
80        millerL = Round((recipZ * scale) / gcdVal)
81    End If
82    
83    CalculateMillerIndices = "(" & millerH & "," & millerK & "," & millerL & ")"
84End Function
85
86Function GCD(a As Long, b As Long) As Long
87    Dim temp As Long
88    
89    a = Abs(a)
90    b = Abs(b)
91    
92    Do While b <> 0
93        temp = b
94        b = a Mod b
95        a = temp
96    Loop
97    
98    GCD = a
99End Function
100
101' Bruk i Excel:
102' =CalculateMillerIndices(2, 3, 6)
103' Resultat: (3,2,1)
104

C++-implementasjon

1#include <iostream>
2#include <vector>
3#include <cmath>
4#include <numeric>
5#include <algorithm>
6
7// Beregn GCD for to tall
8int gcd(int a, int b) {
9    a = std::abs(a);
10    b = std::abs(b);
11    
12    while (b != 0) {
13        int temp = b;
14        b = a % b;
15        a = temp;
16    }
17    
18    return a;
19}
20
21// Beregn GCD for flere tall
22int gcdMultiple(const std::vector<int>& numbers) {
23    int result = numbers[0];
24    for (size_t i = 1; i < numbers.size(); ++i) {
25        result = gcd(result, numbers[i]);
26    }
27    return result;
28}
29
30// Beregn Miller-indekser fra skjæringspunkter
31std::vector<int> calculateMillerIndices(const std::vector<double>& intercepts) {
32    std::vector<double> reciprocals;
33    
34    // Beregn resiprokaler
35    for (double intercept : intercepts) {
36        if (intercept == 0 || std::isinf(intercept)) {
37            reciprocals.push_back(0);
38        } else {
39            reciprocals.push_back(1.0 / intercept);
40        }
41    }
42    
43    // Finn ikke-null verdier
44    std::vector<double> nonZeroReciprocals;
45    for (double r : reciprocals) {
46        if (r != 0) {
47            nonZeroReciprocals.push_back(r);
48        }
49    }
50    
51    if (nonZeroReciprocals.empty()) {
52        return {0, 0, 0};
53    }
54    
55    // Skaler til heltall
56    const int scale = 1000;
57    std::vector<int> scaled;
58    for (double r : nonZeroReciprocals) {
59        scaled.push_back(std::round(r * scale));
60    }
61    
62    // Finn GCD
63    int divisor = gcdMultiple(scaled);
64    
65    // Konverter til minste heltall
66    std::vector<int> millerIndices;
67    for (double r : reciprocals) {
68        if (r == 0) {
69            millerIndices.push_back(0);
70        } else {
71            millerIndices.push_back(std::round((r * scale) / divisor));
72        }
73    }
74    
75    return millerIndices;
76}
77
78int main() {
79    std::vector<double> intercepts = {2, 3, 6};
80    std::vector<int> indices = calculateMillerIndices(intercepts);
81    
82    std::cout << "Miller-indekser for skjæringspunkter [";
83    for (size_t i = 0; i < intercepts.size(); ++i) {
84        std::cout << intercepts[i];
85        if (i < intercepts.size() - 1) std::cout << ", ";
86    }
87    std::cout << "]: (";
88    
89    for (size_t i = 0; i < indices.size(); ++i) {
90        std::cout << indices[i];
91        if (i < indices.size() - 1) std::cout << ",";
92    }
93    std::cout << ")" << std::endl;
94    
95    // Utdata: Miller-indekser for skjæringspunkter [2, 3, 6]: (3,2,1)
96    
97    return 0;
98}
99

Øvingsproblemer og løsninger

Å arbeide gjennom eksempler hjelper med å befeste beregningsprosessen:

Tilfelle 1: Standard beregning

  • Skjæringspunkter: (2, 3, 6) → Resiproke verdier: (1/2, 1/3, 1/6) → Fjern brøker (×6): (3, 2, 1)
  • Resultat: (321)

Tilfelle 2: Plan parallelt med en akse

  • Skjæringspunkter: (1, ∞, 2) → Resiproke verdier: (1, 0, 1/2) → Fjern brøker (×2): (2, 0, 1)
  • Resultat: (201) - Nullen indikerer at planet aldri krysser y-aksen

Tilfelle 3: Negativt skjæringspunkt

  • Skjæringspunkter: (-1, 2, 3) → Resiproke verdier: (-1, 1/2, 1/3) → Fjern brøker (×6): (-6, 3, 2)
  • Resultat: (-6,3,2) eller skrevet krystallografisk som (6̄32)

Tilfelle 4: Brøkaktige skjæringspunkter

  • Skjæringspunkter: (1/2, 1/3, 1/4) → Resiproke verdier: (2, 3, 4) → Allerede heltall
  • Resultat: (234) - Når skjæringspunkter er brøker, kommer resiproke verdier ofte ut rene

Tilfelle 5: Primær kubisk flate

  • Skjæringspunkter: (1, ∞, ∞) → Resiproke verdier: (1, 0, 0)
  • Resultat: (100) - En av de seks primære flatene i en kubisk krystall

Ofte stilte spørsmål

Hva brukes Miller-indekser til?

Miller-indekser identifiserer spesifikke plan i krystallgitter. Du vil bruke dem konstant i røntgendiffraksjon (indeksering av topper), materialteknologi (beskrivelse av glidplan og spalteplan), halvlederframstilling (spesifisering av waferorientering) og mineralogi (karakterisering av krystalloverlater). De er standardspråket for å diskutere krystallografiske plan på tvers av alle disse feltene.

Hvordan håndterer jeg plan parallelle med en akse?

Når et plan løper parallelt med en akse og aldri krysser den, er det interceptet ved uendelig. Siden 1/∞ = 0, er den tilsvarende Miller-indeksen null. Et plan parallelt med y-aksen får en null i midtposisjonen: (h,0,l). Dette er en av de elegante egenskapene ved Miller-notasjonen—den håndterer denne grensesituasjonen naturlig.

Hva betyr negative indekser?

Negative indekser betyr at planet skjærer den aksen på den negative siden av origo. Krystallografer skriver dette med en strek over tallet: (h̄kl). Når det gjelder fysiske egenskaper, er (321) og (3̄2̄1̄) plan ekvivalente—de er parallelle plan på motsatte sider av origo. Forskjellen betyr hovedsakelig noe når du beskriver en spesifikk krystalloverfate eller analyserer orienteringsforhold.

Hvordan henger Miller-indekser sammen med krystallstruktur?

Miller-indekser beskriver sett av parallelle plan som skjærer gjennom krystallgitteret. Avstanden mellom disse planene (d-avstand) avhenger både av indeksene og krystallens gitterparametere. Høyere indekser betyr tettere plan. I røntgendiffraksjon fungerer plan med spesifikke (hkl)-verdier som speil for røntgenstråler, og d-avstanden bestemmer diffraksjonsvinkelen i henhold til Braggs lov. Denne sammenhengen er grunnen til at indeksering av diffraksjonsmonster—tilordning av (hkl)-verdier til observerte topper—er grunnleggende for strukturbestemmelse.

Hva er forskjellen mellom Miller- og Miller-Bravais-indekser?

Miller-indekser (hkl) fungerer for alle krystallsystemer, men heksagonale krystaller byr på en spesiell utfordring. I heksagonale systemer har krystallografisk ekvivalente plan ikke åpenbart like Miller-indekser. Miller-Bravais-indekser (hkil) legger til en overflødig fjerde indeks der i = -(h+k). Dette gjør den heksagonale symmetrien eksplisitt—ekvivalente plan har lignende indekser. Du vil støte på dette hovedsakelig når du arbeider med heksagonale metaller (Mg, Zn, Ti) eller wurtzite-halvledere (GaN, ZnO).

Hvordan beregner jeg vinkler mellom krystallplan?

For kubiske krystaller er vinkelen θ mellom plan (h₁k₁l₁) og (h₂k₂l₂):

cosθ=h1h2+k1k2+l1l2(h12+k12+l12)(h22+k22+l22)\cos\theta = \frac{h_1h_2 + k_1k_2 + l_1l_2}{\sqrt{(h_1^2 + k_1^2 + l_1^2)(h_2^2 + k_2^2 + l_2^2)}}

Dette er i hovedsak et prikkprodukt av normalvektorene. For ikke-kubiske systemer (ortorhombisk, tetragonal, osv.) trenger du metrikktensjoren, som tar hensyn til ikke-perpendikulære akser eller ulike gitterparametere. De fleste krystallografiprogrammer håndterer disse beregningene automatisk.

Hvordan henger d-avstand sammen med Miller-indekser?

D-avstanden—den loddrette avstanden mellom tilstøtende parallelle plan—avtar når indeksene øker. For kubiske krystaller med gitterparameter a:

dhkl=ah2+k2+l2d_{hkl} = \frac{a}{\sqrt{h^2 + k^2 + l^2}}

Denne enkle formelen er grunnen til at kubiske systemer er praktiske for undervisning. For andre krystallsystemer inkorporerer formelen ytterligere gitterparametere (b, c og vinkler α, β, γ). International Tables for Crystallography gir formler for alle syv krystallsystemer.

Kan Miller-indekser være brøker?

Nei, alltid heltall etter konvensjon. Hvis beregningen din produserer brøker som (3/2, 1, 1/2), multipliser alt med LCM til nevneren for å få (3, 2, 1). Kravet om heltall holder notasjonen standardisert—alle beskriver det samme planet på samme måte.

Hvordan bestemmer jeg Miller-indekser eksperimentelt?

For store enkeltkrystaller måler optisk goniometri vinklene mellom krystalloverflatene, som kan konverteres til Miller-indekser. Mer vanlig er røntgen- eller elektrondiffraksjon. Diffraksjonsmonsteret viser punkter eller topper ved spesifikke vinkler, hver tilsvarende et sett med gitterplan. Ved å måle disse vinklene og anvende Braggs lov kan du tilordne (hkl)-verdier til hver refleksjon—en prosess kalt indeksering. Moderne diffraktometere med programvare automatiserer det meste av dette, men forståelsen av den underliggende geometrien forblir viktig.

Hva er de vanligste Miller-indeksene?

I kubiske krystaller vil du hyppig støte på:

  • (100), (010), (001) - De seks kubeflatene
  • (110), (101), (011) - Diagonale plan som skjærer gjennom to akser
  • (111) - Det oktaedriske planet, som skjærer gjennom alle tre akser likt
  • (112) - Vanlig glidplan i BCC-metaller som jern

Disse lavindeks-planene har den største d-avstanden og laveste overflateenergien, noe som gjør dem til de oftest observerte krystalloverflatene og foretrukne glidplanene.

Fungerer dette for alle syv krystallsystemer?

Ja. Miller-indekser-notasjonen gjelder universelt for kubiske, tetragonale, ortorhombiske, heksagonale, trigonale, monoklinske og trikliniske systemer. Beregningsprosessen (intercepter → resiproke → heltall) forblir den samme uavhengig av krystallsystem. Heksagonale systemer bruker imidlertid ofte fire-indeks Miller-Bravais-notasjonen for klarhet.

Hva er nøyaktigheten til beregningen?

Kalkulatoren bruker eksakt heltallsaritmetikk etter konvertering fra flytende komma-resiproke, noe som sikrer at resultatene er matematisk presise. Hovedkilden til usikkerhet er vanligvis i å bestemme interceptene selv—spesielt når man måler fra eksperimentelle data eller krystallstrukturmodeller. Algoritmen håndterer alle grensetilfeller: parallelle plan, negative intercepter og brøkdelte intercepter.

Referanser

  1. Miller, W. H. (1839). En avhandling om krystallografi. Cambridge: For J. & J.J. Deighton.

  2. Ashcroft, N. W., & Mermin, N. D. (1976). Faststatsfysikk. Holt, Rinehart and Winston.

  3. Hammond, C. (2015). Grunnleggende krystallografi og diffraksjon (4. utg.). Oxford University Press.

  4. Cullity, B. D., & Stock, S. R. (2014). Elementer av røntgendiffraksjon (3. utg.). Pearson Education.

  5. Kittel, C. (2004). Innføring i faststatsfysikk (8. utg.). Wiley.

  6. Kelly, A., & Knowles, K. M. (2012). Krystallografi og krystallfeil (2. utg.). Wiley.

  7. International Union of Crystallography. (2016). Internasjonale tabeller for krystallografi, bind A: Romgruppesymmetri. Wiley.

  8. Giacovazzo, C., Monaco, H. L., Artioli, G., Viterbo, D., Ferraris, G., Gilli, G., Zanotti, G., & Catti, M. (2011). Grunnleggende krystallografi (3. utg.). Oxford University Press.

  9. Buerger, M. J. (1978). Elementær krystallografi: En innføring i krystallenes grunnleggende geometriske egenskaper. MIT Press.

  10. Tilley, R. J. (2006). Krystaller og krystallstrukturer. Wiley.

Rask referanseoversikt

Miller-indekser (hkl) gir en standardisert måte å identifisere krystallplan ved hjelp av tre heltall som er avledet fra resiprokene til planets skjæringspunkter. Notasjonen fungerer på tvers av alle krystallsystemer og har vært standarden innen krystallografi siden 1839.

Enten du indekserer diffraksjonsmonster, beskriver glidningssystemer i metaller, spesifiserer halvlederwaferorientering eller identifiserer mineralklyvningsplan, er Miller-indekser verktøyet du vil bruke. Denne kalkulatoren håndterer aritmetikken - tar resiproke verdier, fjerner brøker og reduserer til laveste betegnelse - slik at du kan fokusere på å tolke den krystallografiske betydningen.