Differences

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

Link to this comparison view

Next revision
Previous revision
documentation:language_reference:functions:newoperator [2016/10/09 21:48] – created Maurits W. Haverkortdocumentation:language_reference:functions:newoperator [2024/10/01 11:40] (current) Henrik hahn
Line 1: Line 1:
 +====== NewOperator ======
  
 +###
 +//NewOperator(name, ...)// creates one of the standard operators as described in the section on standard operators.
 +###
 +
 +###
 +//NewOperator(Nf, Nb, CreationTable)// can be used to create any operator of the form:
 +\begin{eqnarray}
 +\nonumber  O =         && \alpha^{(0,0)}  1 \\
 +\nonumber + \sum_i     && \alpha^{(1,0)}_i a^{\dagger}_i + \alpha^{(0,1)}_i a_i \\
 +\nonumber + \sum_{i,j} && \alpha^{(2,0)}_{i,j} a^{\dagger}_ia^{\dagger}_j + \alpha^{(1,1)}_{i,j} a^{\dagger}_ia_j + \alpha^{(0,2)}_{i,j} a_ia_j \\
 +          + \sum_{i,j,k} && ... .
 +\end{eqnarray}
 +The format of //CreationTable// for the above listed operator is:
 +//NewOperator(Nf, Nb, { {$i_1$,$j_1$,$k_1$,$\alpha_{i,j,k}$},{$i_1$,$j_1$,$\alpha_{i,j}$},...})//
 +Whereby positive indices create a particle, negative indices annihilate a particle. Index $i$ for 0 to Nf-1 label Fermions, from Nf to Nf+Nb label Bosons. $\alpha$ can be either a real or a complex number. NewOperator can take a forth element specifying options.
 +###
 +
 +===== Input =====
 +
 +  * Nf : Integer
 +  * Nb : Integer
 +  * CreationTable : Table of tables, whereby each table is a list of orbital indices where a particle needs to be created (positive) or annihilated (negative) and a prefactor (real or complex number). Note that -0 and +0 are different.
 +  * Possible options
 +    * "Restrictions" A list specifying restrictions when applying the operator to a wave-function.
 +    * "Name" a string specifying the name of the operator
 +    * "NBitsKey" a list of integers specifying the number of bits in the key used for the hash lookup tables. Only useful when a lot of operations are done on the operators. Not used when Operator * Wavefunction is calculated.
 +
 +
 +===== Output =====
 +
 +  * O : Operator
 +
 +===== Example =====
 +
 +###
 +description text
 +###
 +
 +==== Input ====
 +<code Quanty NewOperator.Quanty>
 +Nf = 5
 +Nb = 0
 +O = NewOperator(Nf, Nb, {{             10},
 +                         {0,-0,         3},
 +                         {0,1,2,3,4,  1+I}},
 +                {{"Name","Liberty"}})
 +print(O)
 +</code>
 +
 +==== Result ====
 +<file Quanty_Output NewOperator.out>
 +Operator: Liberty
 +QComplex                  2 (Real==0 or Complex==1 or Mixed==2)
 +MaxLength        =          5 (largest number of product of lader operators)
 +NFermionic modes =          5 (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   0
 +QComplex      =          0 (Real==0 or Complex==1)
 +N                      1 (number of operators of length   0)
 +|  1.00000000000000E+01
 +
 +Operator of Length   2
 +QComplex      =          0 (Real==0 or Complex==1)
 +N                      1 (number of operators of length   2)
 +C  0 A  0 |  3.00000000000000E+00
 +
 +Operator of Length   5
 +QComplex      =          1 (Real==0 or Complex==1)
 +N                      1 (number of operators of length   5)
 +C  4 C  3 C  2 C  1 C  0 |  1.00000000000000E+00  1.00000000000000E+00
 +</file>
 +
 +===== Table of contents =====
 +{{indexmenu>.#1}}
Print/export