Discussions
Håkan - 2011/03/25
Med kommentarer/ändringar av CF. Rena tillägg i kursiv text.
Blandade minnesanteckningar / frågor. Säg till om något är fel.
Enpartikelbastillstånd (spbs)
- Ett en-partikeltillstånd kan karaktäriseras av n, l, j, m.
- j är inte så intressant, eftersom det är dåligt definierat. (Vad som är dåligt definierat är snarare vektorsumman av alla j. För vårt ändamål kan j betraktas som en extra etikett utan värde för de grupperingar av spbs som vi kan tänkas göra)
- Både j och m kan vara halvtaliga tal och sparas oftast som 2*j samt 2*m vilket är heltal (integer).
- m är det enda av dessa kvanttal som kan vara negativt
Mångkropparsbastillstånd (mbbs)
Ett egentillstånd {$ \Psi $} beskrivs som en vektor i en mångkropparsbas. Varje bastillstånd i mångkropparsbasen motsvarar en Slater determinant av A st enpartikeltillstånd. Varje sådant mbbs karakteriseras av
- En uppsättning med A st spbs, {$ a_i, \quad i = 1, \ldots, A $}
- Totalt {$ M = \sum_i m_i $}. Detta är fixt, dvs samma för alla mbbs.
- Paritet {$ \Pi = (-1)^{\sum_i l_i} $}. Denna är fix, dvs summan är antingen udda eller jämn för alla mbbs.
- Energi: {$ N = \sum_i (2*n_i + l_i) $}. Denna har ett maxvärde, dvs {$N \leq N_m$}
Detta gör att för att ni från tex Antoine-beräkningar ska få med alla möjliga tillstånd för en viss kärna, måste flera beräkningar göras, med olika paritet och M (och J). (N_max är en beräkningstrunkering.).
Notera att alla tillstånd med en viss paritet egentligen ryms i mångkropparsbasen med lägsta möjliga M (0 för jämna och 1/2 för udda isotoper). Anledningen till varför man ibland vill specificera ett högre M är snarare att (1) något minska storleken på basen, samt (2) av praktiska anledningar får vi bara några av de lägsta egenvektorerna, att specificera ett högre M kan vara enda sättet att få tillstånd med högre J. (3) En tredje anledning är att väntevärden för vissa operatorer, som t.ex. GT-övergångar, är noll mellan M=0 tillstånd. T.ex. är <J=1, M=0|GT|J=0, M=0>=0.
Med ovanstående villkor på våra mbbs kan alltså endast energin N användas för att gruppera.
Vi kan få ytterligare sätt att gruppera genom att utnyttja att enpartiklarna är antingen neutroner eller protoner. Vi kan betrakta dem som primära (p) resp. sekundära (s), valfritt vilka.
Den operator man vill applicera, tex a+aa är alltid sådan att den totalt alltid förstör/skapar lika många primära och sekundära. Dvs om \Psi_i och \Psi_f har samma antal primära och samma antal sekundära, så kan tex a+a antingen göra primär-skapa och primär-förstöra eller sekundär-skapa och sekundär-förstöra men inte bland-termerna primär-skapa och sekundär-förstöra. Kan också ses som att vi måsta dels måste överbrygga eventuella N-Z-skillnader i \Psi_i och \Psi_f, och eventuellt fler a+a-termer måste vara av samma typ.
Efter att en-partiklarna delats i primära och sekundära, kan vi även ha väldefinierade bidrag till M, \Pi och N per primär och sekundär. Låt oss definiera {$ M_{p,s}, \Pi_{p,s}, N_{p,s} $} som totalvärden för enbart primär- respektive sekundärpartiklarna. Dvs ett mbbs I, består av ett primär-mbbs (p) samt ett sekundär-mbbs (s): {$ |I> = |p,s> $}. Dessa villkor sätter ingen bra gräns på om ett tillstånd kan vara med överhuvudtaget, men är per tillstånd väldefinierat, så att om vi i hash-listan kan välja ut samtliga tillstånd för primära som uppfyller tex {$ M_\mathrm{min} \leq M_p \leq M_\mathrm{max} $}, {$ \Pi_\mathrm{min} \leq \Pi_p \leq \Pi_\mathrm{max} $}, samt {$ N_\mathrm{min} \leq N_p \leq N_\mathrm{max} $} (ej samma som ovan). Då måste vi hitta sådana (och endast sådana) tillstånd mha vår operator arbetande på varje \Phi_i.
Givet spbs m,l,n, samt ett givet {$ \Phi_i $} är M, \pi och N (samt dessa per primär och sekundär) triviala summor, och vi kan sortera samtliga tillstånd med avseende på detta. N kan användas som sorteringsbegrepp både som N_totalt och N_p, och sedan M_p, \Pi_p.
Givet en viss \Phi_i, samt den nuvarande listan i hash-tabellen, är det kanske bäst att först göra samtliga skapelse/förintelse-operationer på primär-sidan. Så att vi skapar tillstånd som finns. Därefter banka på sekundärsidan (dels så att våra total-M,\Pi uppfylls, och N är inom accepterat intervall). Det är därför lämpligt att om minnet inte tål hela \Phi_f-listan, så hellre i varje steg begränsa antalet primär-konfigurationer och ha med så många N_total som möjligt, så att vi bara behöver på operatorn att göra varje primär-konfiguration så få gånger som möjligt. Det här kan vi diskutera i något mer detalj.
Oavsett vilket program som skapat vågfunktionerna, är faktoriseringen av deras {$ \Phi_i $}, dvs (mbbs) eller {$ |I> = |p,s> $} effektiv såtillvida att antalet mbbs av primära eller sekundära partiklar {$ |p> $} och {$ |s> $} är avsevärt mindre än det totala antalet tillstånd. Så få att de rimligen alla kan hållas i minne samtidigt.
Dimension | 6-He, Nmax=10 | 6-Li, Nmax=10 | 6-Li, Nmax=16 | 16-C, Nmax=6 | Förklaring |
---|---|---|---|---|---|
NSD | 7.055.153 | 9.357.885 | 789.146.798 | 249.209.123 | (antalet Slater Determinanter i sexkropparsbasen, dvs det totala antalet mbbs) |
NSD_n | 590.716 | 124.871 | 2.161.390 | 9.684.206 | (antalet SD i neutronbasen, mbbs_n) |
NSD_p | 11.480 | 124.871 | 2.161.390 | 496.501 | (antalet SD i protonbasen, mbbs_p) |
spbs | 728 | 728 | 2.280 | 330 | (antalet enpartikel-bastillstånd, spbs) |
Då kan förprocessteget få i uppgift att utföra denna separation, och sedan låta varje I vara lagrat som två index, för p och s. Vid genereringen av tillstånd mha operatorn på \Phi_i (initialt) arbetas först färdigt på primärsidan. Då detta är gjort slås tillståndet upp i en hashtabell för primära tillstånd för att få ett index. (Osäkert om detta då garanterat skall finnas.) Detta används för alla operator-operationer som slår på sekundärsidan. Primärindexet kan dels används som frö till hashen som sedan bara behöver innehålla sekundärsidan, och är även enklare att prova vid hashmatchningen(verifikation) än hela primärbitvektorn.
Detta ger ordningen (loop över) \Phi_i -> (loop över) förstör primära -> (loop över) skapa primära -> slå upp primär-tillstånd (index) -> (loop över) förstör sekundära -> (loop över) skapa sekundära -> slå upp det nya totaltillstånd i listan över \Phi_f. De skapande looparna är begränsade genom listor av vilka spbs som fortfarande kan användas så att de tillgängliga intervallen av M, \Pi och N inte över(under)skrids.
Möjligen är det vettigt att byta ordning på delen ... (loop över) förstör sekundära -> (loop över) skapa primära -> slå upp primär-tillstånd (index) ... eftersom vi efter att ha förstört mesta möjliga mängd partiklar, även N_m (total energi) kan användas för att begränsa de primärpartiklar som kan användas. (alternativt kan man ju se hur mycket N_m som värst behövs som marginal, eftersom vi ju känner exakt vilka sekundära partiklar som finns för varje \Phi_i och därmed kan förstöras)