Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
documentation:language_reference:objects:responsefunction:functions:new [2024/12/22 20:50] Maurits W. Haverkortdocumentation:language_reference:objects:responsefunction:functions:new [2024/12/30 09:46] (current) Maurits W. Haverkort
Line 3: Line 3:
  
 ### ###
-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. Arbitrary values here means physically non-relevant and weird but allowed.+ 
 +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. 
 + 
 +### 
 + 
 +### 
 + 
 +The input table contains the elements 
 +  * "type" a string equal to "ListOfPoles", "Tri", "And", or "Nat" defining the type used for the internal storage of a response functoin 
 +  * "name" an arbitrary string used to recognise the response function 
 +  * "mu" a double giving the chemical potential. We highly recommend to shift the energy scale such that $\mu=0$. Documentation for the behaviour of several functions at finite chemical potential, $\mu$ is still missing. You can always shift the chemical potential to zero by shifting the onsite energy of all orbitals by $-\mu$. 
 +  * Depending on the type lists of doubles, matrices, or complex matrices $A$ and $B$. Each section below starts by defining $G(\omega,\Gamma)$ in terms of $A$'s and $B$'s, the input below uses these variables. We use capital font for matrices and small font for numbers. Note that the matrices $A$ and $B$ must fulfil several conditions for the response function to be physical. Only physical response functions can be transformed between all types as unitary transformations. 
 ### ###
  
Line 95: Line 107:
 ==== Single valued functions ==== ==== Single valued functions ====
 <code Quanty Example.Quanty> <code Quanty 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))
 </code> </code>
 Generates the output Generates the output
 <file Quanty_Output> <file Quanty_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)
 </file> </file>
  
Line 105: Line 133:
 ==== Matrix valued functions ==== ==== Matrix valued functions ====
 <code Quanty Example.Quanty> <code Quanty Example.Quanty>
--- some example code+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))
 </code> </code>
  
 Generates the output Generates the output
 <file Quanty_Output> <file Quanty_Output>
-text produced as 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) } }
 </file> </file>
  
Line 123: Line 199:
 ==== Single valued functions ==== ==== Single valued functions ====
 <code Quanty Example.Quanty> <code Quanty 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))
 </code> </code>
 Generates the output Generates the output
 <file Quanty_Output> <file Quanty_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)
 </file> </file>
  
Line 133: Line 226:
 ==== Matrix valued functions ==== ==== Matrix valued functions ====
 <code Quanty Example.Quanty> <code Quanty Example.Quanty>
--- some example code+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))
 </code> </code>
  
 Generates the output Generates the output
 <file Quanty_Output> <file Quanty_Output>
-text produced as 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) } }
 </file> </file>
  
Line 150: Line 290:
 ==== Single valued functions ==== ==== Single valued functions ====
 <code Quanty Example.Quanty> <code Quanty 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))
 </code> </code>
 Generates the output Generates the output
 <file Quanty_Output> <file Quanty_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)
 </file> </file>
  
Print/export