New

ResponseFunction.New(Table) creates a new response function object according to the values in Table. Response functions can be of 4 different types (ListOfPoles, Tri, And, or Nat) and single-valued or matrix-valued. Below 8 examples for creating each of these response functions by hand at some arbitrary values.

ListOfPoles representation

Response functions stored as list of poles are defined via $$ G(\omega,\Gamma) = A_0 + \sum_{i=1}^{n} \frac{B_{i-1}}{\omega + \mathrm{i}\Gamma/2 - a_i} $$

Single valued functions

Example.Quanty
a = {10, -1,-0.5, 0,   0.5,  1,  1.5}
b = {  0.1, 0.1, 0.1, 0.1, 0.2, 0.3}
G = ResponseFunction.New( {a,b,mu=0,type="ListOfPoles", name="A"} )
print("The resposne function definition is")
print(G)
omega = 1.1
Gamma = 0.001
print()
print("Evaluated at omega =",omega," and Gamma =",Gamma," yields ",G(omega,Gamma))

Generates the output

The resposne function definition is
{ { 10 , -1 , -0.5 , 0 , 0.5 , 1 , 1.5 } , 
  { 0.1 , 0.1 , 0.1 , 0.1 , 0.2 , 0.3 } ,
  name = A ,
  type = ListOfPoles ,
  mu = 0 }
 
Evaluated at omega =	1.1	 and Gamma =	0.001	 yields 	(11.617645834991 - 0.011148328755289 I)

Matrix valued functions

Example.Quanty
A0 = Matrix.New( {{0,0,0},{0,0,0},{0,0,0}} )
a1 = -1
a2 = 1/2
a3 = 1
B1s = Matrix.New( {{1,1,3},{1,5,6},{3,6,9}} )
B1 = B1s * B1s
B2s = Matrix.New( {{2,0,3},{0,5,6},{3,6,9}} )
B2 = B2s * B2s
B3s = Matrix.New( {{3,0,3},{0,5,6},{3,6,9}} )
B3 = B3s * B3s
G = ResponseFunction.New( { {A0,a1,a2,a3}, {B1,B2,B3}, mu=0, type="ListOfPoles", name="ML"} )
print("The resposne function definition is")
print(G)
omega = 1.1
Gamma = 0.001
print()
print("Evaluated at omega =",omega," and Gamma =",Gamma," yields ")
print(G(omega,Gamma))

Generates the output

{ { { { 0 , 0 , 0 } , 
  { 0 , 0 , 0 } , 
  { 0 , 0 , 0 } } , -1 , 0.5 , 1 } , 
  { { { 11 , 24 , 36 } , 
  { 24 , 62 , 87 } , 
  { 36 , 87 , 126 } } , 
  { { 13 , 18 , 33 } , 
  { 18 , 61 , 84 } , 
  { 33 , 84 , 126 } } , 
  { { 18 , 18 , 36 } , 
  { 18 , 61 , 84 } , 
  { 36 , 84 , 126 } } } ,
  type = ListOfPoles ,
  name = ML ,
  mu = 0 }
 
Evaluated at omega =	1.1	 and Gamma =	0.001	 yields 
{ { (206.90024667403 - 0.91928020904165 I) , (221.42405005987 - 0.9276985714825 I) , (432.13381820162 - 1.8498699350513 I) } , 
  { (221.42405005987 - 0.9276985714825 I) , (741.17515429623 - 3.1416753933531 I) , (1021.4074723828 - 4.3264255332922 I) } , 
  { (432.13381820162 - 1.8498699350513 I) , (1021.4074723828 - 4.3264255332922 I) , (1529.9683515529 - 6.4891280958856 I) } }

Tridiagonal representation

Response functions stored in tridiagonal format are defined via $$ G(\omega,\Gamma) = A_0 + B_0^* \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_1 - B_{1}^{\phantom{\dagger}} \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_2 - B_{2}^{\phantom{\dagger}} \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_2 - B_{3}^{\phantom{\dagger}} \frac{...}{\omega + \mathrm{i}\Gamma/2 - A_{n-1} - B_{n-1}^{\phantom{\dagger}} \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_n } B_{n-1}^{\dagger}} B_{3}^{\dagger} } B_{2}^{\dagger} } B_{1}^{\dagger} } B_0^T $$

Single valued functions

Example.Quanty
a = {0, 1,   1,   1,   1,   1,  1}
b = {   1, 0.5, 0.5, 0.5, 0.5, 0.5}
G = ResponseFunction.New( {a,b,mu=0,type="Tri", name="GT"} )
print("The resposne function definition is")
print(G)
omega = 1.1
Gamma = 0.001
print()
print("Evaluated at omega =",omega," and Gamma =",Gamma," yields ")
print(G(omega,Gamma))

Generates the output

{ { 0 , 1 , 1 , 1 , 1 , 1 , 1 } , 
  { 1 , 0.5 , 0.5 , 0.5 , 0.5 , 0.5 } ,
  name = GT ,
  type = Tri ,
  mu = 0 }
 
Evaluated at omega =	1.1	 and Gamma =	0.001	 yields 
(-1.4800882525182 - 0.010904814637879 I)

Matrix valued functions

Example.Quanty
A0 = Matrix.New( {{0,0,0},{0,0,0},{0,0,0}} )
A1 = Matrix.New( {{1,2,3},{2,5,6},{3,6,9}} )
A2 = Matrix.New( {{2,2,3},{2,5,6},{3,6,9}} )
A3 = Matrix.New( {{3,2,3},{2,5,6},{3,6,9}} )
B0s = Matrix.New( {{1,0,0},{0,1,0},{0,0,1}} )
B0 = B0s * B0s
B1s = Matrix.New( {{1,1,3},{1,5,6},{3,6,9}} )
B1 = B1s * B1s
B2s = Matrix.New( {{2,0,3},{0,5,6},{3,6,9}} )
B2 = B2s * B2s
B3s = Matrix.New( {{3,0,3},{0,5,6},{3,6,9}} )
B3 = B3s * B3s
G = ResponseFunction.New( { {A0,A1,A2,A3}, {B0,B1,B2}, mu=0, type="Tri", name="MT"} )
print("The resposne function definition is")
print(G)
omega = 1.1
Gamma = 0.001
print()
print("Evaluated at omega =",omega," and Gamma =",Gamma," yields ")
print(G(omega,Gamma))

Generates the output

{ { { { 0 , 0 , 0 } , 
  { 0 , 0 , 0 } , 
  { 0 , 0 , 0 } } , 
  { { 1 , 2 , 3 } , 
  { 2 , 5 , 6 } , 
  { 3 , 6 , 9 } } , 
  { { 2 , 2 , 3 } , 
  { 2 , 5 , 6 } , 
  { 3 , 6 , 9 } } , 
  { { 3 , 2 , 3 } , 
  { 2 , 5 , 6 } , 
  { 3 , 6 , 9 } } } , 
  { { { 1 , 0 , 0 } , 
  { 0 , 1 , 0 } , 
  { 0 , 0 , 1 } } , 
  { { 11 , 24 , 36 } , 
  { 24 , 62 , 87 } , 
  { 36 , 87 , 126 } } , 
  { { 13 , 18 , 33 } , 
  { 18 , 61 , 84 } , 
  { 33 , 84 , 126 } } } ,
  type = Tri ,
  mu = 0 ,
  BlockSize = { 3 , 3 , 3 , 3 } ,
  name = MT }
 
Evaluated at omega =	1.1	 and Gamma =	0.001	 yields 
{ { (0.82041346528466 - 0.0005287731551253 I) , (-0.10773626514221 + 0.00047135055668369 I) , (-0.18782055050369 - 0.00021908813997981 I) } , 
  { (-0.10773626514222 + 0.00047135055668371 I) , (0.9906660606812 - 0.0018715007457328 I) , (-0.67958409204703 + 0.0013049040629232 I) } , 
  { (-0.18782055050369 - 0.00021908813997982 I) , (-0.67958409204703 + 0.0013049040629232 I) , (0.51775011277794 - 0.00095267059250443 I) } }

Anderson representation

Response functions stored in Anderson format are defined via $$ G(\omega,\Gamma) = A_0 + B_0^* \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_1 - \sum_{i=2}^{n} B_{i-1}^{\phantom{\dagger}} \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_{i} } B_{i-1}^{\dagger} } B_0^T $$

Single valued functions

Example.Quanty
a = {0, 1, 1.5,   2, 2.5,   3, 3.5}
b = {   1, 0.5, 0.5, 0.5, 0.5, 0.5}
G = ResponseFunction.New( {a,b,mu=0,type="And", name="GA"} )
print("The resposne function definition is")
print(G)
omega = 1.1
Gamma = 0.001
print()
print("Evaluated at omega =",omega," and Gamma =",Gamma," yields ")
print(G(omega,Gamma))

Generates the output

The resposne function definition is
{ { 0 , 1 , 1.5 , 2 , 2.5 , 3 , 3.5 } , 
  { 1 , 0.5 , 0.5 , 0.5 , 0.5 , 0.5 } ,
  type = And ,
  name = GA ,
  mu = 0 }
 
Evaluated at omega =	1.1	 and Gamma =	0.001	 yields 
(0.70566877797716 - 0.00077467678957667 I)

Matrix valued functions

Example.Quanty
A0 = Matrix.New( {{0,0,0},{0,0,0},{0,0,0}} )
A1 = Matrix.New( {{1,2,3},{2,5,6},{3,6,9}} )
A2 = Matrix.New( {{2,2,3},{2,5,6},{3,6,9}} )
A3 = Matrix.New( {{3,2,3},{2,5,6},{3,6,9}} )
B0s = Matrix.New( {{1,0,0},{0,1,0},{0,0,1}} )
B0 = B0s * B0s
B1s = Matrix.New( {{1,1,3},{1,5,6},{3,6,9}} )
B1 = B1s * B1s
B2s = Matrix.New( {{2,0,3},{0,5,6},{3,6,9}} )
B2 = B2s * B2s
B3s = Matrix.New( {{3,0,3},{0,5,6},{3,6,9}} )
B3 = B3s * B3s
G = ResponseFunction.New( { {A0,A1,A2,A3}, {B0,B1,B2}, mu=0, type="And", name="MA"} )
print("The resposne function definition is")
print(G)
omega = 1.1
Gamma = 0.001
print()
print("Evaluated at omega =",omega," and Gamma =",Gamma," yields ")
print(G(omega,Gamma))

Generates the output

{ { { { 0 , 0 , 0 } , 
  { 0 , 0 , 0 } , 
  { 0 , 0 , 0 } } , 
  { { 1 , 2 , 3 } , 
  { 2 , 5 , 6 } , 
  { 3 , 6 , 9 } } , 
  { { 2 , 2 , 3 } , 
  { 2 , 5 , 6 } , 
  { 3 , 6 , 9 } } , 
  { { 3 , 2 , 3 } , 
  { 2 , 5 , 6 } , 
  { 3 , 6 , 9 } } } , 
  { { { 1 , 0 , 0 } , 
  { 0 , 1 , 0 } , 
  { 0 , 0 , 1 } } , 
  { { 11 , 24 , 36 } , 
  { 24 , 62 , 87 } , 
  { 36 , 87 , 126 } } , 
  { { 13 , 18 , 33 } , 
  { 18 , 61 , 84 } , 
  { 33 , 84 , 126 } } } ,
  mu = 0 ,
  name = MA ,
  type = And }
 
Evaluated at omega =	1.1	 and Gamma =	0.001	 yields 
{ { (0.079202023515427 - 0.00018271816123949 I) , (0.019672301598063 - 0.00021050428128743 I) , (-0.033329362936266 + 0.00019529208541705 I) } , 
  { (0.019672301598062 - 0.00021050428128743 I) , (-0.028178571653589 - 0.00029307470840254 I) , (0.014801870346139 + 0.00026254621032145 I) } , 
  { (-0.033329362936266 + 0.00019529208541705 I) , (0.014801870346139 + 0.00026254621032145 I) , (-0.0017775335507766 - 0.00023672956892774 I) } }

Natural impurity orbital representation

Response functions stored in Natural impurity format are defined via $$ G(\omega,\Gamma) = A_0 + B_0^* \left( G_{val}(\omega,\Gamma) + G_{con}(\omega,\Gamma) \right) B_0^T$$, with $G_{val}(\omega,\Gamma)$ and $G_{con}(\omega,\Gamma)$ as response functions with poles either at positive energy ($G_{con}(\omega,\Gamma)$) or poles at negative energy ($G_{val}(\omega,\Gamma)$).

Single valued functions

Example.Quanty
acon = {0,         1,   1,   1,   1,   1,  1}
bcon = {   sqrt(1/2), 0.5, 0.5, 0.5, 0.5, 0.5}
Gcon = ResponseFunction.New(  {acon,bcon,mu=0,type="Tri"} )
aval = {0,        -1,  -1,  -2,  -1,  -1, -1}
bval = {   sqrt(1/2), 0.5, 0.5, 0.5, 0.5, 0.5}
Gval = ResponseFunction.New( {aval,bval,mu=0,type="Tri"} )
a0=0
b0=1
G = ResponseFunction.New( {{a0,b0},val=Gval,con=Gcon,mu=0,type="Nat", name="GD"} )
print("The resposne function definition is")
print(G)
omega = 1.1
Gamma = 0.001
print()
print("Evaluated at omega =",omega," and Gamma =",Gamma," yields ")
print(G(omega,Gamma))

Generates the output

The resposne function definition is
{ { 0 , 1 } ,
  type = NaturalImpurityOrbital ,
  name = GD ,
  mu = 0 ,
  con = { { 0 , 1 , 1 , 1 , 1 , 1 , 1 } , 
  { 0.70710678118655 , 0.5 , 0.5 , 0.5 , 0.5 , 0.5 } ,
  mu = 0 ,
  type = Tri ,
  name = Matrix } ,
  epsilon = 0 ,
  val = { { 0 , -1 , -1 , -2 , -1 , -1 , -1 } , 
  { 0.70710678118655 , 0.5 , 0.5 , 0.5 , 0.5 , 0.5 } ,
  mu = 0 ,
  type = Tri ,
  name = Matrix } }
 
Evaluated at omega =	1.1	 and Gamma =	0.001	 yields 
(-0.48700605787262 - 0.0055204934115643 I)

Matrix valued functions

Example.Quanty
-- some example code

Generates the output

text produced as output

Table of contents

Print/export