Copyright | (c) Michael Dressel 2023 |
---|---|
License | BSD3 (see LICENSE) |
Maintainer | Michael Dressel <michael.dressel@kloenplatz.de> |
Stability | experimental |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
This module contains operators and functions for combining SU(n) multiplets according to the algorithm presented by C.G. Wohl in the PDG book 2021 section 48 https://pdg.lbl.gov/2022/reviews/rpp2022-rev-young-diagrams.pdf.
It provides the operators (><)
and (>><)
for combining multiplets,
and the function multi
and multis
to calculate the multiplicities, e.g.:
[1,0]><
[0,1] = [[1,1],[0,0]]multi
[1,0] = 3 [1,0]><
[1,0]>><
[1,0] = [[3,0],[1,1],[1,1],[0,0]]multis
$ [1,0]><
[1,0]>><
[1,0] = [10,8,8,1]
Example for combining two multiplets using Young-Diagrams:
(0,0)x(0,0) = (0,0) # a # a # a # a # (x) b = # > # b > # b # c # # # c (1,0)x(1,0) = (step ->) (2,0) + (step ->) (0,1) # # a a # # a a # # a a # # a # # a # x b = # > # b + # a > # a b # c # # c # # c
Synopsis
- (><) :: [Int] -> [Int] -> [[Int]]
- (>><) :: [[Int]] -> [Int] -> [[Int]]
- (><^) :: [Int] -> Int -> [[Int]]
- multi :: [Int] -> Int
- multis :: [[Int]] -> [Int]
- data Tableau
- ytSymbols :: [Int] -> Tableau
- ytsSymbols :: [[Int]] -> [Tableau]
- showt :: [Tableau] -> String
- ytNums :: Tableau -> [Int]
- ytsNums :: [Tableau] -> [[Int]]
- admis :: String -> Bool
- unchain :: Char -> String -> Maybe String
- sym2letter :: Tableau -> Tableau
- appendAt :: Int -> String -> Tableau -> Tableau
- readTab :: Tableau -> String
- combis :: Int -> Int -> [[Int]]
- tabs1 :: Tableau -> String -> [Tableau]
- allTsFromSyms :: Tableau -> Tableau -> [Tableau]
- allTs :: [Int] -> [Int] -> [Tableau]
Kronecker product like operators
(><) :: [Int] -> [Int] -> [[Int]] Source #
Produce multiplet structure from combining two SU(n) multiplets
(>><) :: [[Int]] -> [Int] -> [[Int]] Source #
Produce multiplet structure from combining a list of multiplets with another multiplet
(><^) :: [Int] -> Int -> [[Int]] Source #
Produce multiplet structure by combining one multiplet repeatedly
Multiplicity calculation
Basic data type
Lower level functions
ytsSymbols :: [[Int]] -> [Tableau] Source #
Build multiple tableaux from multiple labels.
admis :: String -> Bool Source #
Check for the string for being composed of admissible letters. Admissible and not admissible examples:
admis "aabacdaebbcbd" = True last letter not admissible admis "abacae" = False admis "abacdec" = False
unchain :: Char -> String -> Maybe String Source #
Extract one strictly ordered chain from the given string, starting at the given character.
sym2letter :: Tableau -> Tableau Source #
Convert a tableau of symbols into a tableau of letters
appendAt :: Int -> String -> Tableau -> Tableau Source #
Append a string to the i'th line of a tableau.
readTab :: Tableau -> String Source #
Read a string of letters from a given tableau to be checked for admissibility.
combis :: Int -> Int -> [[Int]] Source #
Produce a list of placing-coordinates of all combinations for a tableau with t rows to place c character.
E.g.: 3 rows, two characters -> 3*3 possible placements:
1:1, 1:2, 1:3, 2:1, 2:2, 2:3, 3:1, 3:2, 3:3
tabs1 :: Tableau -> String -> [Tableau] Source #
Create multiple new tableau using newtab given one tableau and one line of a right side tableau.
e.g.: tabs1 (ytSymbols [1,1,1]) "a a "