11. hét

5. adag kis házi feladat megoldásai

Az egyik (50 %-os véletlen ötvözet) szimuláció forráskódja: verlet-crystal.ver03.phonons.c

Általános
Az egész szimulációt egy for-ciklusba foglaljuk; ez a ciklus fogja a k hullámszámot végigléptetni a beprogramozott vonalon a reciprok térben. Az origóban lévő atom pozícióját Δt = 1-enként mintavételezzük, és csak ezeket az értékeket másoljuk be a Fourier-transzformálandó adatokat tároló fftdata tömbbe. (Beégetett érték – nem a legszebb megoldás...) Minden egyes k-pont szimulációja után az elmentett időfüggvényre meghívjuk az FFT-t, és a spektrumot (+1 üres elválasztó sort) kiírjuk a dispersion.dat adatfájlba.

Sakktábla mintázatú rács
A legbelső ciklus (amely az atomokon lépked végig a diff.egy. megoldása során) elejére beírjuk a
// Problem 2: sublattice:
if ((i+j)%2) m = 14.0/12.0; else m = 1.0;
sort. Ez pont a megfelelső sakktábla mintázatot szerint fogja beállítani az aktuális atom tömegét.

Véletlen ötvözet
Az alábbi sort kell ugyanoda beszúrni:
// problem 3: 50-50% alloy:
if (gsl_rng_uniform_int(rng, 2)) m = 1.0; else m = 14.0/12.0;
Így minden atom 1/2 valószínűséggel lesz könnyű, 1/2 valószínűséggel nehéz. Figyelem: természetesen az egész számolás során egy adott atom tömege nem változhat meg. Minden időlépés kezdetén a rács-for-ciklusok előtt egy rögzített seed-re állítjuk be a véletlenszám generátort, így a generált véletlen sorozat mindig pont ugyanaz lesz, vagyis pont ugyanazokat az atomokat választja ki könnyűnek, ill. nehéznek minden ciklusban. (Ez nem a legelegánsabb megoldás, viszont nem kellett tárolnunk minden egyes atom tömegét. Ezt a véletlenszám generátort máshol a programban tilos használni, mert akkor felborul a fenti gondolatmenet.) A seed különböző értékeire az ötvözet különböző konfigurációi keletkeznek.

Ábrázolás
A 3 szakaszból álló Γ → X → M → Γ vonal mindegyik egyenes szakaszát egy-egy futtatás számolta ki. (Így volt könnyű beprogramozni a ciklusokat.) Egy apró módosításra volt szükség: a hullámszám kiíratásánál (1. oszlop) hozzá kellett adni a korábbi futások által már kiszámolt vonalszakaszok hosszait. Ezután az eredményeket egymás után egy fájllá összemásolva ábrázolható az eredmény. Gnuplot szkript: dispersion.gnuplot.

Eredmények


1. feladat: Egyszerű négyzetrács.


2. feladat: Sakktábla-mintázatű rács
Itt a rács elemi cellája tulajdonképp megváltozik, √2-szeresére nő a rácsállandó, 45 fokkal elfordul a négyzetrács, és 2-atomos lesz az elemi cella. Az új (helyes) Brillouin-zóna Γ pontja a régi (ld.: az ábrán) Brillouin-zóna M pontjába kerül. Azaz ott látható az optikai fononág. Az akusztikus és az optikai ágak kereszteződése épp jó helyre, az új Brillouin-zóna határára esik.


3. feladat: 50-50%-os véletlen ötvözet két különböző konfigurációja.