MultipletCombiner-0.0.2: A Haskell implementation for combining SU(n) multiplets.
Copyright(c) Michael Dressel 2023
LicenseBSD3 (see LICENSE)
MaintainerMichael Dressel <michael.dressel@kloenplatz.de>
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

Physics.MultipletCombiner

Description

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 combinaing 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

Kroneker 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

Multiplicitiy calculation

multi :: [Int] -> Int Source #

Calculate the multiplicity of a multiplet

multis :: [[Int]] -> [Int] Source #

Calculate the multiplicities of a list of multiplets

Basic data type

data Tableau Source #

Basic type used for a Tableau/Diagram

Instances

Instances details
Show Tableau Source # 
Instance details

Defined in Physics.MultipletCombiner

Eq Tableau Source # 
Instance details

Defined in Physics.MultipletCombiner

Lower level functions

ytSymbols :: [Int] -> Tableau Source #

Build a tableau bottom up from it's label.

ytsSymbols :: [[Int]] -> [Tableau] Source #

Build multiple tableaux from multiple labels.

showt :: [Tableau] -> String Source #

Show like function to display a list of tableaux.

ytNums :: Tableau -> [Int] Source #

Calculate the number representation from a tableau.

ytsNums :: [Tableau] -> [[Int]] Source #

Calculate the list of labels fro a list of tableaux.

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 admissable
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 "

allTsFromSyms :: Tableau -> Tableau -> [Tableau] Source #

Create all tableaux from two given tableaux.

allTs :: [Int] -> [Int] -> [Tableau] Source #

allTs [1,0] [1,1]

Create all tableau from two tableaux identified by their labels.

  putStrLn $ showt $ noDoubs.admisTabs $ allTs [1,1] [1,1]
  ytsNums $ noDoubs.admisTabs $ allTs [1,1] [1,1]
  [[2,2],[3,0],[0,3],[1,1],[1,1],[0,0]]