Bose-Einsteinkondensation Lars Gislén, Malin Sjödahl, Patrik Sahlin 3 mars, 009
Inledning Denna laboration går ut på att studera Bose-Einsteinkondensation för bosoner i en tredimensionell harmonisk-oscillatorpotential. Vi kommer först att titta på teorin för ett sådant system och sedan att konstruera ett program i MATLAB som simulerar Bose-Einsteinkondensationen. Ett Bose- Einsteinkondensat är intressant eftersom man har ett makroskopiskt antal partiklar som befinner sig i ett enda kvantmekaniskt tillstånd. Man har tänkt sig att använda sådana system i t.ex. framtidens kvantdatorer. Teori För partiklar med massan m som rör sig i en tredimensionell harmoniskoscillatorpotential har vi energiegenvärdesekvationen ( ) h m + 1 mω (x + y + z ) Φ = EΦ (1) (jfr Bengtsson om statistisk fysik s 10). Som visas på föreläsningarna är denna differentialekvation separabel, d v s vi kan ansätta en lösning av formen Φ(x, y, z) = X(x)Y(y)Z(z) och då erhålla tre differentialekvationer, en i vardera cartesiska koordinaten: Den totala energin ges av h d X m dx + 1 mω x X = E (x) X () h d Y m dy + 1 mω y Y = E (y) Y (3) h d Z m dz + 1 mω z Z = E (z) Z (4) E = E (x) + E (y) + E (z). (5) Från lösningarna till den endimensionella harmoniska oscillatorn får vi då energiegenvärdena ( E = n (x) + 1 = ) ( hω + ( n (x) + n (y) + n (z) + 3 n (y) + 1 ) ( hω + n (z) + 1 ) hω ) hω, (6) 1
för n (x), n (y), n (z) = 0, 1,, 3... (jfr Bengtsson om statistisk fysik s 116-7). Om vi inför huvudkvanttalet n = n (x) + n (y) + n (z) kan vi uttrycka energinivåerna ( E n = n + 3 ) hω, n = 0, 1,, 3... (7) Urartningen för givet n kan visas vara G n = (n + 1)(n + )/. Vi lägger nu nollnivån för energi i grundtillståndet och får E n = n hω, n = 0, 1,, 3... (8) Om partiklarna i den harmoniska oscillatorpotentialen är bosoner ges fördelningen av antalet partiklar i en given nivå N n vid en viss temperatur av Bose-Einsteinfördelningen (jfr Bengtsson om statistisk fysik s 17) och vi har G N n = n (n + 1)(n + )/ e β(en µ) = e β(n hω µ) (9) där β som vanligt står för 1/kT och normeringsfunktionen µ, även kallad den kemiska potentialen, bestäms av normeringsvillkoret (n + 1)(n + )/ N n = n=0 n=0 e β(n hω µ) = N tot (10) för det totala antalet partiklar, N tot. Vi kan även definiera en funktion S(µ) (n + 1)(n + )/ n=0 e β(n hω µ) N tot. (11) Kemiska potentialen ges då av lösningen till ekvationen S(µ) = 0. Eftersom antalet partiklar för varje energinivå (även den motsvarande n = 0 och E = 0) måste vara positivt, måste den kemiska potentialen vara negativ. Vi kommer så småningom att lösa denna ekvation numeriskt. När väl µ är känt kan vi sedan beräkna antalet partiklar N n för de olika energinivåerna och därmed även den inre energin E tot = n hω(n + 1)(n + )/ N n E n = n=0 n=0 e β(n hω µ) (1) och värmekapaciteten C = de tot dt. (13) Bose-Einsteinkondensationen kännetecknas av att under en viss kritisk temperatur T c, Bose-Einsteintemperaturen, kommer väsentligen alla partiklar att befinna sig i samma tillstånd, grundtillståndet. Övergången vid den kritiska temperaturen visar typiska egenskaper för en fasövergång, till exempel ändrar sig värmekapaciteten drastiskt vid övergången.
Innan vi gör de numeriska beräkningarna skall vi göra en uppskattning av Bose-Einsteintemperaturen. Vi studerar därför normeringsekvationen ovan. Vi har med n = E n / hω: (E n / hω + 1)(E n / hω + )/ n=0 e β(en µ) = N tot. (14) Om n 1, dvs n hω är det en god approximation att stryka 1:an och :an i parenteserna ovan. Detta innebär dock att grundtillståndet med n = 0 får den statistiska vikten 0 vilket borde orsaka problem då T 0 och partiklarna tvingas ner i grundtillståndet. Vi behandlar därför grundtillståndet separat och skriver N 0 + 1 ( hω) n=1 Låter vi nu summan övergå till en integral har vi N 0 + 1 ( hω) n=1 En e β(en µ) N 0 + 1 ( hω) 3 0 E n e β(e n µ) = N tot. (15) E e β(e µ) de = N tot (16) där den extra faktorn 1/ hω i andra steget kommer från variabelbytet från n till E, 1 = n = E n / hω. (Jämför gärna med Bengtsson om statistisk fysik kap 37, men notera skillnaden i tillståndstäthetens energiberoende.) Efter ytterligare en variabelsubstitution till x = E/kT får vi N 0 + 1 Vi inför en beteckning för integralen ovan och har ( ) kt 3 x dx hω 0 e x βµ. (17) ( µ I = T) 0 N 0 + 1 x dx e x kt µ (18) ( ) kt 3 ( µ I = N tot. (19) hω T) Så länge temperaturen är så hög att vi kan bortse från partiklarna i grundtillsåndet (d v s sätta N 0 = 0 i ekvationen ovan) måste integralens värde måste ändras som T 3 eftersom vi har ett konstant antal partiklar. Detta innebär att µ(t) måste ändras på ett sådant sätt att I T 3. Vi vill nu studera likheten för låga temperaturer. Vi kan få integralens värde att öka genom att låta den kemiska potentialen gå mot noll (snabbare än T går mot noll). Emellertid visar det sig att integralens värde för µ = 0 är ändligt, I(0) =, 404. Den temperatur, den kritiska, då det hela bryter samman och 3
partiklar nödvändigtvis måste populera grundtillståndet kan approximeras med ( ) 3 1 kt c I(0) = N tot. (0) hω eller T c = För temperaturer under den kritiska (då µ = 0) får vi eller N 0 + 1 vilket ger oss antalet partiklar i grundtillståndet: ( ) 1/3 Ntot hω, 404 k. (1) ( ) kt 3 I(0) = N tot () hω ( ) T 3 N 0 + N tot = N tot (3) T c ( ) ) T 3 N 0 = N tot (1. (4) T c Som väntat ser vi att för låga temperaturer kommer mer eller mindre alla partiklar att ligga i grundtillståndet. Föreberedelseuppgift: Bestäm E tot på samma sätt som N tot i ekvation (3). Sätt upp en integral som approximerar den inre energin, E tot (T) på samma sätt som vi approximerade nomreringssumman ovan. Hur kommer den att bära sig åt som funktion av temperaturen vid låga temperaturer, d v s vilken potens av temperaturen har vi. Vad medför detta för värmekapacitetens temperaturberoende vid låga temperaturer? 4
Simulering i Java Som alltid i programmering finns det ett otal olika sätt att lösa samma problem på. Denna handledning kommer inte att presentera ett färdigt recept utan endast att ge vägledning. Vi ska beräkna antalet partiklar i grundtillståndet, N 0, den inre energin, E tot och dess derivata, C. För att göra detta måste vi först ta reda på den kemiska potentialen µ(t). Det ska vi göra genom att numeriskt söka nollställen till ekvation (11). Detta vill vi göra för ett lämpligt temperaturintervall som naturligtvis ska inkludera Bose-Einsteintemperaturen. Vi har beräknat T c approximativt i ekvation (1). Denna ekvation innehåller dock de fundamentala naturkonstanterna h och k som har mycket små numeriska värden i SI enheter. Beräkningar med mycket små eller stora tal kan ibland orsaka problem med numerisk precision och dessutom har vi ingen anledning att dra runt en massa konstanter i beräkningarna. Vi väljer därför enheter så att h = k = 1. Vi har heller inget skäl att vara intresserade av någon speciell grundfrekvens så vi låter även ω = 1. Om vi har t ex 10 000 partiklar får vi då från ekvation (1) ( ) 10 000 1/3 T c = = 0, 3. (5), 404 Med en kritisk temperatur kring 0 är det lämpligt att låta tempraturen i labben variera från 1 till 100. Det ger dessutom en hyfsad temperaturupplösning att låta T ta steg om 1. Vi vill alltså lösa för T = 1,,..., 100. S(µ) = (n + 1)(n + )/ N n=0 e (n µ)/t tot = 0. (6) För att lösa ekvation (6) ska ni skriva två konkreta klasser som implementerar två givna interface. Skapa först en klass som representerar funktionen S(µ) som ska implementera Function. Därefter skapar ni en klass för en lösare av ekvationen S(µ) = 0 som implementerar Solver. Solver har medlemsfunktionen solve som tar tre argument, en referens till ett Function-objekt, samt två flyttal som anger inom vilket intervall en eventuell lösning söks. Kan inte medlemsfunktionen hitta en lösning ska ett UnableToFindSolutionException-exception kastas. För fysikaliska värden på µ (µ < 0) finns det bara ett nollställe till S(µ). Därför är intervallhalvering en enkel, men effektiv metod att använda för att hitta ett nollställe. En algoritm som använder intervallhantering kan i pseudokod se ut som följande. 5
u = f(x1) v = f(x) e = x - x1 if sign(u) = sign(v) then exit with error loop start e = 0.5 * e c = x1 + e w = f(c) if w < error then exit with c as solution if sign(w) = sign(u) then x1 = c u = w else x = c v = w end if loop end Variabeln error bestämmer precisionen för lösaren. I klassen BoseEinstein finns enmain-funktion där ni ska skriva kod som gör följande: Stega temperaturen från 1 till 100 med lämplig steglängd (till exempel 1.0). För varje värde påtemperaturen ska ni hitta nollstället till S(µ) med hjälp av er implementering avsolver. För de givna värdena för konstanterna ska intervallet [-1000, -0.00001] vara tillräckligt. Med en given temperatur och tillhörande värde på µ ska ni därefter beräkna antalet partiklar i grundtillståndet, den totala energin, samt värmekapaciteten. I slutändan ska ni ha data för µ, N 0, E tot, och C som funktioner av temperaturen T. Användgnuplot för att plotta resultaten. 6
Uppgifter 1. Vad blir Bose-Einsteintemperaturen i simuleringen? Hur stämmer den med det approximerade värdet i ekvation (5)?. Vad är det förväntade teoretiska högtemperaturuppförandet för den inre energin? Använd metoden med att räkna frihetsgrader. Verkar det stämma? 3. Vad blir motsvarande för värmekapaciteten? 4. Verkar approximation av E tot (T) för låga T som du gjorde som förberedelseuppgift stämma i simuleringen? Anpassa en kurva i gnuplot för att se hur det stämmer. Kolla också värmekapaciteten. 7