Differences

This shows you the differences between two versions of the page.

 documentation:language_reference:functions:ytokmatrix [2018/09/25 13:42]Simon Heinze created documentation:language_reference:functions:ytokmatrix [2018/09/25 16:28] (current)Simon Heinze Filled with content 2018/09/25 16:28 Simon Heinze Filled with content2018/09/25 13:42 Simon Heinze created 2018/09/25 16:28 Simon Heinze Filled with content2018/09/25 13:42 Simon Heinze created Line 2: Line 2: ### ### - alligned paragraph text + YtoKMatrix($orb$) takes the angular momentum $l$ or the name of a non-relativistic atomic orbital and returns the corresponding matrix to rotate from a basis of spherical harmonics to cubic harmonics. It is also possible to give a list of $l$ numbers or orbital names, in which case the output is a block diagonal matrix with the rotation matrices as entries. ### ### ===== Input ===== ===== Input ===== - * bla : Integer + * $orb$ : An integer number, or a list of integer numbers, or a string that can be interpreted as a non-relativistic atomic orbital, or a list or strings. - * bla2 : Real + * Options: + * "​addSpin"​ : bool determining if spin-space is considered in the matrix (resulting in matrices double in size). (Default true) ===== Output ===== ===== Output ===== - * bla : real + * $R$ : Rotation Matrix from a basis of spherical to cubic harmonics. ===== Example ===== ===== Example ===== - ### - description text - ### ==== Input ==== ==== Input ==== ​ - -- some example code + print(""​) + print("​YtoKMatrix(0)"​) + print(YtoKMatrix(0)) + + print(""​) + print("​YtoKMatrix(\"​s\",​ {{\"​addSpin\",​false}})"​) + print(YtoKMatrix("​s",​ {{"​addSpin",​false}})) + + print(""​) + print("​YtoKMatrix(1)"​) + print(YtoKMatrix(1)) + + print(""​) + print("​YtoKMatrix(\"​p\"​)"​) + print(YtoKMatrix("​p"​)) + + print(""​) + print("​YtoKMatrix(2)"​) + print(YtoKMatrix(2)) + + print(""​) + print("​YtoKMatrix(\"​d\"​)"​) + print(YtoKMatrix("​d"​)) + + print(""​) + print("​YtoKMatrix({0,​1,​2},​ {{\"​addSpin\",​false}})"​) + print(YtoKMatrix({0,​1,​2},​ {{"​addSpin",​false}})) + + print(""​) + print("​YtoKMatrix({\"​s\",​\"​p\",​\"​d\"​},​ {{\"​addSpin\",​false}})"​) + print(YtoKMatrix({"​s","​p","​d"​},​ {{"​addSpin",​false}})) + + print("​\n\n"​) + print("​A more realistic example"​) + Orbitals = {"​1s","​2s","​2p"​} + Indices, NF = CreateAtomicIndicesDict(Orbitals) + + --Some Operator definition on spherical harmonics + op = NewOperator("​U",​ NF, Indices["​2p_Up"​],​ Indices["​2p_Dn"​],​{0,​1}) + print("​Operator on a basis of spherical harmonics"​) + print(op) + + opK = Rotate(op, YtoKMatrix(Orbitals)) + print("​Operator on a basis of cubic harmonics"​) + print(opK) ​ ==== Result ==== ==== Result ==== ​ - text produced as output + YtoKMatrix(0) + { { 1 , 0 } , + { 0 , 1 } } + + YtoKMatrix("​s",​ {{"​addSpin",​false}}) + { { 1 } } + + YtoKMatrix(1) + { { 0.70710678118655 , 0 , 0 , 0 , -0.70710678118655 , 0 } , + { 0 , 0.70710678118655 , 0 , 0 , 0 , -0.70710678118655 } , + { (0 + 0.70710678118655 I) , 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 } , + { 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , (0 + 0.70710678118655 I) } , + { 0 , 0 , 1 , 0 , 0 , 0 } , + { 0 , 0 , 0 , 1 , 0 , 0 } } + + YtoKMatrix("​p"​) + { { 0.70710678118655 , 0 , 0 , 0 , -0.70710678118655 , 0 } , + { 0 , 0.70710678118655 , 0 , 0 , 0 , -0.70710678118655 } , + { (0 + 0.70710678118655 I) , 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 } , + { 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , (0 + 0.70710678118655 I) } , + { 0 , 0 , 1 , 0 , 0 , 0 } , + { 0 , 0 , 0 , 1 , 0 , 0 } } + + YtoKMatrix(2) + { { 0.70710678118655 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0.70710678118655 , 0 } , + { 0 , 0.70710678118655 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0.70710678118655 } , + { 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 } , + { 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 } , + { 0 , 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 } , + { 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 , 0 } , + { 0 , 0 , 0.70710678118655 , 0 , 0 , 0 , -0.70710678118655 , 0 , 0 , 0 } , + { 0 , 0 , 0 , 0.70710678118655 , 0 , 0 , 0 , -0.70710678118655 , 0 , 0 } , + { (0 + 0.70710678118655 I) , 0 , 0 , 0 , 0 , 0 , 0 , 0 , (0 - 0.70710678118655 I) , 0 } , + { 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , 0 , 0 , 0 , 0 , (0 - 0.70710678118655 I) } } + + YtoKMatrix("​d"​) + { { 0.70710678118655 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0.70710678118655 , 0 } , + { 0 , 0.70710678118655 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0.70710678118655 } , + { 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 } , + { 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 } , + { 0 , 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 } , + { 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 , 0 } , + { 0 , 0 , 0.70710678118655 , 0 , 0 , 0 , -0.70710678118655 , 0 , 0 , 0 } , + { 0 , 0 , 0 , 0.70710678118655 , 0 , 0 , 0 , -0.70710678118655 , 0 , 0 } , + { (0 + 0.70710678118655 I) , 0 , 0 , 0 , 0 , 0 , 0 , 0 , (0 - 0.70710678118655 I) , 0 } , + { 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , 0 , 0 , 0 , 0 , (0 - 0.70710678118655 I) } } + + YtoKMatrix({0,​1,​2},​ {{"​addSpin",​false}}) + { { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , + { 0 , 0.70710678118655 , 0 , -0.70710678118655 , 0 , 0 , 0 , 0 , 0 } , + { 0 , (0 + 0.70710678118655 I) , 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , 0 , 0 } , + { 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } , + { 0 , 0 , 0 , 0 , 0.70710678118655 , 0 , 0 , 0 , 0.70710678118655 } , + { 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 } , + { 0 , 0 , 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 , (0 + 0.70710678118655 I) , 0 } , + { 0 , 0 , 0 , 0 , 0 , 0.70710678118655 , 0 , -0.70710678118655 , 0 } , + { 0 , 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , (0 - 0.70710678118655 I) } } + + YtoKMatrix({"​s","​p","​d"​},​ {{"​addSpin",​false}}) + { { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , + { 0 , 0.70710678118655 , 0 , -0.70710678118655 , 0 , 0 , 0 , 0 , 0 } , + { 0 , (0 + 0.70710678118655 I) , 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , 0 , 0 } , + { 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } , + { 0 , 0 , 0 , 0 , 0.70710678118655 , 0 , 0 , 0 , 0.70710678118655 } , + { 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 } , + { 0 , 0 , 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 , (0 + 0.70710678118655 I) , 0 } , + { 0 , 0 , 0 , 0 , 0 , 0.70710678118655 , 0 , -0.70710678118655 , 0 } , + { 0 , 0 , 0 , 0 , (0 + 0.70710678118655 I) , 0 , 0 , 0 , (0 - 0.70710678118655 I) } } + + + + A more realistic example + Operator on a basis of spherical harmonics + + Operator: Coulomb Operator + QComplex ​        ​= ​         0 (Real==0 or Complex==1 or Mixed==2) + MaxLength ​       =          4 (largest number of product of lader operators) + NFermionic modes =         10 (Number of fermionic modes (site, spin, orbital, ...) in the one particle basis) + NBosonic modes   ​= ​         0 (Number of bosonic modes (phonon modes, ...) in the one particle basis) + + Operator of Length ​  4 + QComplex ​     =          0 (Real==0 or Complex==1) + N             ​= ​        25 (number of operators of length ​  4) + C  5 C  4 A  5 A  4 | -3.999999999999999E-02 + C  7 C  5 A  7 A  5 |  2.000000000000000E-01 + C  6 C  5 A  6 A  5 |  7.999999999999999E-02 + C  7 C  4 A  7 A  4 |  7.999999999999999E-02 + C  6 C  4 A  6 A  4 |  2.000000000000000E-01 + C  9 C  5 A  9 A  5 |  2.000000000000000E-01 + C  8 C  5 A  8 A  5 | -3.999999999999999E-02 + C  9 C  4 A  9 A  4 | -3.999999999999999E-02 + C  8 C  4 A  8 A  4 |  2.000000000000000E-01 + C  7 C  6 A  7 A  6 | -1.600000000000000E-01 + C  9 C  7 A  9 A  7 |  2.000000000000000E-01 + C  8 C  7 A  8 A  7 |  7.999999999999999E-02 + C  9 C  6 A  9 A  6 |  7.999999999999999E-02 + C  8 C  6 A  8 A  6 |  2.000000000000000E-01 + C  9 C  8 A  9 A  8 | -3.999999999999999E-02 + C  6 C  5 A  7 A  4 |  1.200000000000000E-01 + C  7 C  4 A  6 A  5 |  1.200000000000000E-01 + C  8 C  5 A  7 A  6 | -1.200000000000000E-01 + C  9 C  4 A  7 A  6 |  1.200000000000000E-01 + C  8 C  5 A  9 A  4 |  2.400000000000000E-01 + C  9 C  4 A  8 A  5 |  2.400000000000000E-01 + C  7 C  6 A  8 A  5 | -1.200000000000000E-01 + C  7 C  6 A  9 A  4 |  1.200000000000000E-01 + C  8 C  7 A  9 A  6 |  1.200000000000000E-01 + C  9 C  6 A  8 A  7 |  1.200000000000000E-01 + + + Operator on a basis of cubic harmonics + + Operator: Coulomb Operator + QComplex ​        ​= ​         0 (Real==0 or Complex==1 or Mixed==2) + MaxLength ​       =          4 (largest number of product of lader operators) + NFermionic modes =         10 (Number of fermionic modes (site, spin, orbital, ...) in the one particle basis) + NBosonic modes   ​= ​         0 (Number of bosonic modes (phonon modes, ...) in the one particle basis) + + Operator of Length ​  4 + QComplex ​     =          0 (Real==0 or Complex==1) + N             ​= ​        27 (number of operators of length ​  4) + C  5 C  4 A  5 A  4 | -1.599999999999999E-01 + C  7 C  6 A  5 A  4 | -1.200000000000000E-01 + C  7 C  4 A  7 A  4 |  7.999999999999997E-02 + C  6 C  5 A  7 A  4 |  1.200000000000000E-01 + C  7 C  4 A  6 A  5 |  1.200000000000000E-01 + C  6 C  5 A  6 A  5 |  7.999999999999997E-02 + C  5 C  4 A  7 A  6 | -1.200000000000000E-01 + C  7 C  6 A  7 A  6 | -1.599999999999999E-01 + C  9 C  5 A  9 A  5 |  1.999999999999999E-01 + C  9 C  7 A  9 A  7 |  1.999999999999999E-01 + C  8 C  5 A  8 A  5 |  7.999999999999997E-02 + C  8 C  7 A  8 A  7 |  7.999999999999997E-02 + C  9 C  4 A  9 A  4 |  7.999999999999997E-02 + C  9 C  6 A  9 A  6 |  7.999999999999997E-02 + C  8 C  4 A  8 A  4 |  1.999999999999999E-01 + C  8 C  6 A  8 A  6 |  1.999999999999999E-01 + C  7 C  5 A  7 A  5 |  1.999999999999999E-01 + C  6 C  4 A  6 A  4 |  1.999999999999999E-01 + C  9 C  8 A  9 A  8 | -1.600000000000000E-01 + C  8 C  5 A  9 A  4 |  1.200000000000000E-01 + C  8 C  7 A  9 A  6 |  1.200000000000000E-01 + C  9 C  4 A  8 A  5 |  1.200000000000000E-01 + C  9 C  6 A  8 A  7 |  1.200000000000000E-01 + C  5 C  4 A  9 A  8 | -1.200000000000000E-01 + C  7 C  6 A  9 A  8 | -1.200000000000000E-01 + C  9 C  8 A  5 A  4 | -1.200000000000000E-01 + C  9 C  8 A  7 A  6 | -1.200000000000000E-01