PrintExpectationValues(psiList, Hamiltonian, opList, options) (old order) or PrintExpectationValues(psiList, opList, Hamiltonian, extraLists, options) (new order) takes a table of wavefunctions, a table of operators, a Hamiltonian operator, extraLists, and a list of options, and prints out expectation values. Note that restrictions placed on the operators in opList are not currently respected. The Hamiltonian is treated separately here because it is possible to sort the output by energy and/or to print the standard deviation in energy. It can be omitted. The (otpional) extraLists need to be given in pairings of name and list of numbers. They can for example be used to include values that cannot be expressed as Hermitian operators. The Options are also optional.
The function prints a header based on the name of the operator (except in the case of the Hamiltonian, where it uses “E”).
Verbosity(0)
orbs = {"1s","2s","2p"}
Ind, NF = CreateAtomicIndicesDict(orbs)
psiList = {}
for key1,orb1 in pairs(orbs) do
for key2, orb2 in pairs(orbs) do
if key1 == key2 then
det1 = DeterminantString(NF, Ind[orb1])
psiList[#psiList + 1] = NewWavefunction(NF, 0, {{det1,1}})
elseif key1 < key2 then
det1 = DeterminantString(NF, Ind[orb1])
det2 = DeterminantString(NF, Ind[orb2])
psiList[#psiList + 1] = NewWavefunction(NF, 0, {{det1,math.sqrt(1/2)}, {det2,math.sqrt(1/2)}})
end
end
end
Hamil = NewOperator("Number",NF,Ind["1s"],Ind["1s"],{0.1,0.2})
Hamil = Hamil + NewOperator("Number",NF,Ind["2s"],Ind["2s"],{0.3,0.4})
Hamil = Hamil + NewOperator("Number",NF,Ind["2p"],Ind["2p"],{0.5,0.6,0.7,0.8,0.9,1.0})
Hamil = Hamil + NewOperator("U",NF,Ind["1s_Up"],Ind["1s_Dn"],Ind["2p_Up"],Ind["2p_Dn"],{0.6},{0.7})
Hamil = Hamil + NewOperator("U",NF,Ind["2s_Up"],Ind["2s_Dn"],Ind["2p_Up"],Ind["2p_Dn"],{0.8},{0.9})
Hamil = Hamil + NewOperator("U",NF,Ind["2p_Up"],Ind["2p_Dn"],{0.5,sqrt(2)})
Hamil = Hamil + 1e-5*NewOperator("Lz",NF,Ind["2p_Up"],Ind["2p_Dn"])
Hamil = Hamil - 4
Hamil = Hamil/2
Hamil = Hamil + ConjugateTranspose(Hamil)
Hamil.Name = "H"
opList = {}
opList[#opList + 1] = NewOperator("Number",NF,Ind["1s"],Ind["1s"],{1,1})
opList[#opList].Name = "N_1s"
opList[#opList + 1] = NewOperator("Number",NF,Ind["2s"],Ind["2s"],{1,1})
opList[#opList].Name = "N_2s"
opList[#opList + 1] = NewOperator("Number",NF,Ind["2p"],Ind["2p"],{1,1,1,1,1,1})
opList[#opList].Name = "N_2p"
opList[#opList + 1] = NewOperator("U",NF,Ind["2p_Up"],Ind["2p_Dn"],{1,0})
opList[#opList].Name = "F0_2p"
opList[#opList + 1] = NewOperator("U",NF,Ind["2p_Up"],Ind["2p_Dn"],{0,1})
opList[#opList].Name = "F2_2p"
opList[#opList + 1] = NewOperator("U",NF,Ind["2p_Up"],Ind["2p_Dn"],{0,1})
opList[#opList].Name = "Operator with a long name"
opList[#opList + 1] = NewOperator("U",NF,Ind["2p_Up"],Ind["2p_Dn"],{0,1})
opList[#opList].Name = "An Operator with small lexicographical value"
StartRestrictions = {NF,0}
StartRestrictions[3] = {DeterminantString(NF, Ind["1s"]),2,2}
StartRestrictions[4] = {DeterminantString(NF, Ind["2s"]),2,2}
Restrictions = {NF,0}
Restrictions[3] = {DeterminantString(NF, Ind["2p"]),0,1}
NPsi = 15
psiList = Eigensystem(Hamil,StartRestrictions,NPsi)
extraList1 = {"Extra1",{}}
extraList2 = {"Extra2",{}}
for i = 1, NPsi do
extraList1[2][i] = 0.5*i
extraList2[2][i] = 5/i
end
extraLists = {extraList1, extraList2}
Options = {{"colWidth",10},{"printHeaderEvery",10},{"printSigma",true},{"sortByEnergy",true},{"zero",1E-7}}
print("\n\n\nPrintExpectationValues(psiList,opList):")
PrintExpectationValues(psiList,opList)
print("\n\n\nPrintExpectationValues(psiList,opList,Hamil):")
PrintExpectationValues(psiList,opList,Hamil)
print("\n\n\nPrintExpectationValues(psiList,opList,extraLists):")
PrintExpectationValues(psiList,opList,extraLists)
print("\n\n\nPrintExpectationValues(psiList,opList,Options):")
PrintExpectationValues(psiList,opList,Options)
print("\n\n\nPrintExpectationValues(psiList,opList,Hamil,extraLists):")
PrintExpectationValues(psiList,opList,Hamil,extraLists)
print("\n\n\nPrintExpectationValues(psiList,opList,Hamil,Options):")
PrintExpectationValues(psiList,opList,Hamil,Options)
print("\n\n\nPrintExpectationValues(psiList,opList,Hamil,extraLists,Options):")
PrintExpectationValues(psiList,opList,Hamil,extraLists,Options)
print("\n\n\nPrintExpectationValues(psiList,opList,-Hamil,extraLists,Options):")
PrintExpectationValues(psiList,opList,-Hamil,extraLists,Options)
PrintExpectationValues(psiList,opList):
N_1s N_2s N_2p F0_2p F2_2p Operato An Oper
1 2 2 0 0 0 0 0
2 2 2 1 0 0 0 0
3 2 2 1 0 0 0 0
4 2 2 1 0 0 0 0
5 2 2 1 0 0 0 0
6 2 2 1 0 0 0 0
7 2 2 1 0 0 0 0
8 2 2 2 1 -0.2 -0.2 -0.2
9 2 2 2 1 -0.2 -0.2 -0.2
10 2 2 2 1 -0.2 -0.2 -0.2
11 2 2 2 1 -0.2 -0.2 -0.2
12 2 2 2 1 0.04 0.04 0.04
13 2 2 2 1 -0.2 -0.2 -0.2
14 2 2 2 1 -0.2 -0.2 -0.2
15 2 2 2 1 -0.2 -0.2 -0.2
PrintExpectationValues(psiList,opList,Hamil):
E N_1s N_2s N_2p F0_2p F2_2p Operato An Oper
1 -3 2 2 0 0 0 0 0
2 -0.2333 2 2 1 0 0 0 0
3 -0.1333 2 2 1 0 0 0 0
4 -0.0333 2 2 1 0 0 0 0
5 0.06667 2 2 1 0 0 0 0
6 0.16668 2 2 1 0 0 0 0
7 0.26668 2 2 1 0 0 0 0
8 2.95048 2 2 2 1 -0.2 -0.2 -0.2
9 3.05048 2 2 2 1 -0.2 -0.2 -0.2
10 3.15048 2 2 2 1 -0.2 -0.2 -0.2
11 3.15049 2 2 2 1 -0.2 -0.2 -0.2
12 3.18988 2 2 2 1 0.04 0.04 0.04
13 3.25049 2 2 2 1 -0.2 -0.2 -0.2
14 3.35049 2 2 2 1 -0.2 -0.2 -0.2
15 3.3505 2 2 2 1 -0.2 -0.2 -0.2
PrintExpectationValues(psiList,opList,extraLists):
N_1s N_2s N_2p F0_2p F2_2p Operato An Oper Extra1 Extra2
1 2 2 0 0 0 0 0 0.5 5
2 2 2 1 0 0 0 0 1 2.5
3 2 2 1 0 0 0 0 1.5 1.66667
4 2 2 1 0 0 0 0 2 1.25
5 2 2 1 0 0 0 0 2.5 1
6 2 2 1 0 0 0 0 3 0.83333
7 2 2 1 0 0 0 0 3.5 0.71429
8 2 2 2 1 -0.2 -0.2 -0.2 4 0.625
9 2 2 2 1 -0.2 -0.2 -0.2 4.5 0.55556
10 2 2 2 1 -0.2 -0.2 -0.2 5 0.5
11 2 2 2 1 -0.2 -0.2 -0.2 5.5 0.45455
12 2 2 2 1 0.04 0.04 0.04 6 0.41667
13 2 2 2 1 -0.2 -0.2 -0.2 6.5 0.38462
14 2 2 2 1 -0.2 -0.2 -0.2 7 0.35714
15 2 2 2 1 -0.2 -0.2 -0.2 7.5 0.33333
PrintExpectationValues(psiList,opList,Options):
N_1s N_2s N_2p F0_2p F2_2p Operator An Operat
1 2 2 0 0 0 0 0
2 2 2 1 0 0 0 0
3 2 2 1 0 0 0 0
4 2 2 1 0 0 0 0
5 2 2 1 0 0 0 0
6 2 2 1 0 0 0 0
7 2 2 1 0 0 0 0
8 2 2 2 1 -0.2 -0.2 -0.2
9 2 2 2 1 -0.2 -0.2 -0.2
10 2 2 2 1 -0.2 -0.2 -0.2
N_1s N_2s N_2p F0_2p F2_2p Operator An Operat
11 2 2 2 1 -0.2 -0.2 -0.2
12 2 2 2 1 0.04 0.04 0.04
13 2 2 2 1 -0.2 -0.2 -0.2
14 2 2 2 1 -0.2 -0.2 -0.2
15 2 2 2 1 -0.2 -0.2 -0.2
PrintExpectationValues(psiList,opList,Hamil,extraLists):
E N_1s N_2s N_2p F0_2p F2_2p Operato An Oper Extra1 Extra2
1 -3 2 2 0 0 0 0 0 0.5 5
2 -0.2333 2 2 1 0 0 0 0 1 2.5
3 -0.1333 2 2 1 0 0 0 0 1.5 1.66667
4 -0.0333 2 2 1 0 0 0 0 2 1.25
5 0.06667 2 2 1 0 0 0 0 2.5 1
6 0.16668 2 2 1 0 0 0 0 3 0.83333
7 0.26668 2 2 1 0 0 0 0 3.5 0.71429
8 2.95048 2 2 2 1 -0.2 -0.2 -0.2 4 0.625
9 3.05048 2 2 2 1 -0.2 -0.2 -0.2 4.5 0.55556
10 3.15048 2 2 2 1 -0.2 -0.2 -0.2 5 0.5
11 3.15049 2 2 2 1 -0.2 -0.2 -0.2 5.5 0.45455
12 3.18988 2 2 2 1 0.04 0.04 0.04 6 0.41667
13 3.25049 2 2 2 1 -0.2 -0.2 -0.2 6.5 0.38462
14 3.35049 2 2 2 1 -0.2 -0.2 -0.2 7 0.35714
15 3.3505 2 2 2 1 -0.2 -0.2 -0.2 7.5 0.33333
PrintExpectationValues(psiList,opList,Hamil,Options):
E N_1s N_2s N_2p F0_2p F2_2p Operator An Operat std-dev
1 -3 2 2 0 0 0 0 0 7.3e-8
2 -0.233343 2 2 1 0 0 0 0 1.2633e-8
3 -0.133343 2 2 1 0 0 0 0 2.2039e-8
4 -0.033333 2 2 1 0 0 0 0 3.0052e-8
5 0.0666667 2 2 1 0 0 0 0 5.4281e-8
6 0.166677 2 2 1 0 0 0 0 3.96e-8
7 0.266677 2 2 1 0 0 0 0 4.8141e-8
8 2.95048 2 2 2 1 -0.2 -0.2 -0.2 5.9605e-8
9 3.05048 2 2 2 1 -0.2 -0.2 -0.2 1.0324e-7
10 3.15048 2 2 2 1 -0.2 -0.2 -0.2 7.3e-8
E N_1s N_2s N_2p F0_2p F2_2p Operator An Operat std-dev
11 3.15049 2 2 2 1 -0.2 -0.2 -0.2 4.2147e-8
12 3.18988 2 2 2 1 0.04 0.04 0.04 7.3e-8
13 3.25049 2 2 2 1 -0.2 -0.2 -0.2 1.3979e-7
14 3.35049 2 2 2 1 -0.2 -0.2 -0.2 0
15 3.3505 2 2 2 1 -0.2 -0.2 -0.2 5.9605e-8
PrintExpectationValues(psiList,opList,Hamil,extraLists,Options):
E N_1s N_2s N_2p F0_2p F2_2p Operator An Operat Extra1 Extra2 std-dev
1 -3 2 2 0 0 0 0 0 0.5 5 7.3e-8
2 -0.233343 2 2 1 0 0 0 0 1 2.5 1.2633e-8
3 -0.133343 2 2 1 0 0 0 0 1.5 1.66667 2.2039e-8
4 -0.033333 2 2 1 0 0 0 0 2 1.25 3.0052e-8
5 0.0666667 2 2 1 0 0 0 0 2.5 1 5.4281e-8
6 0.166677 2 2 1 0 0 0 0 3 0.833333 3.96e-8
7 0.266677 2 2 1 0 0 0 0 3.5 0.714286 4.8141e-8
8 2.95048 2 2 2 1 -0.2 -0.2 -0.2 4 0.625 5.9605e-8
9 3.05048 2 2 2 1 -0.2 -0.2 -0.2 4.5 0.555556 1.0324e-7
10 3.15048 2 2 2 1 -0.2 -0.2 -0.2 5 0.5 7.3e-8
E N_1s N_2s N_2p F0_2p F2_2p Operator An Operat Extra1 Extra2 std-dev
11 3.15049 2 2 2 1 -0.2 -0.2 -0.2 5.5 0.454545 4.2147e-8
12 3.18988 2 2 2 1 0.04 0.04 0.04 6 0.416667 7.3e-8
13 3.25049 2 2 2 1 -0.2 -0.2 -0.2 6.5 0.384615 1.3979e-7
14 3.35049 2 2 2 1 -0.2 -0.2 -0.2 7 0.357143 0
15 3.3505 2 2 2 1 -0.2 -0.2 -0.2 7.5 0.333333 5.9605e-8
PrintExpectationValues(psiList,opList,-Hamil,extraLists,Options):
E N_1s N_2s N_2p F0_2p F2_2p Operator An Operat Extra1 Extra2 std-dev
1 -3.3505 2 2 2 1 -0.2 -0.2 -0.2 7.5 0.333333 5.9605e-8
2 -3.35049 2 2 2 1 -0.2 -0.2 -0.2 7 0.357143 0
3 -3.25049 2 2 2 1 -0.2 -0.2 -0.2 6.5 0.384615 1.3979e-7
4 -3.18988 2 2 2 1 0.04 0.04 0.04 6 0.416667 7.3e-8
5 -3.15049 2 2 2 1 -0.2 -0.2 -0.2 5.5 0.454545 4.2147e-8
6 -3.15048 2 2 2 1 -0.2 -0.2 -0.2 5 0.5 7.3e-8
7 -3.05048 2 2 2 1 -0.2 -0.2 -0.2 4.5 0.555556 1.0324e-7
8 -2.95048 2 2 2 1 -0.2 -0.2 -0.2 4 0.625 5.9605e-8
9 -0.266677 2 2 1 0 0 0 0 3.5 0.714286 4.8141e-8
10 -0.166677 2 2 1 0 0 0 0 3 0.833333 3.96e-8
E N_1s N_2s N_2p F0_2p F2_2p Operator An Operat Extra1 Extra2 std-dev
11 -0.066667 2 2 1 0 0 0 0 2.5 1 5.4281e-8
12 0.0333333 2 2 1 0 0 0 0 2 1.25 3.0052e-8
13 0.133343 2 2 1 0 0 0 0 1.5 1.66667 2.2039e-8
14 0.233343 2 2 1 0 0 0 0 1 2.5 1.2633e-8
15 3 2 2 0 0 0 0 0 0.5 5 7.3e-8