Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
documentation:standard_operators:atomic_coulomb_repulsion [2026/11/12 18:35] – Maurits W. Haverkortdocumentation:standard_operators:atomic_coulomb_repulsion [2026/11/12 23:07] (current) – Maurits W. Haverkort
Line 45: Line 45:
  
  
- 
-{{indexmenu_n>999}} 
-====== Atomic coulomb repulsion ====== 
-Note: parts of the functionality of this function will be available in the release of October 2019 
-### 
-NewOperator("AtomicU",indices,RadialWavefunctions1,RadialWavefunctions2,options) calculates the full Coulomb interaction operator between all given atomic orbitals. 
-### 
- 
-===== Input ===== 
- 
-  * indices : indices of atomic orbitals belonging to the radial wave-functions 
-  * RadialWavefunctions1 : table of InterpolatingFunction objects  
-  * RadialWavefunctions2 : optional - table of InterpolatingFunction objects - if given, the function calculates relativistic Slater integrals where RadialWavefunctions1 are the large parts and RadialWavefunctions2 the small ones 
-  * options : possible Options are {"conserve", bool} and {"1P-Operator", bool} 
-              * "conserve" : if true only occupation conserving Slater integrals are calculated 
-              * "1P-Operator" : only if "conserve" is true and additional arguments are given, transforms interaction to 1-particle operator (see example) 
- 
-===== Example ===== 
- 
-### 
-The example below shows how to create the full Coulomb interaction between multiple atomic orbitals with relativistic wave-functions. It is recommended to use CreateAtomicIndicesList(orbitallabels,{ {"Kappas",true} }) for index creation, since it automatically calculates the quantum numbers kappa and stores them in the field ind.kappas which needs to be set when calling NewOperator("AtomicU",...) with relativistic wave-functions. 
-### 
- 
-==== Input ==== 
-<code Quanty Example.Quanty> 
-orbitallabels = {"1s1/2","2s1/2","2p1/2","2p3/2"} 
-ind, NF = CreateAtomicIndicesList(orbitallabels,{ {"Kappas",true} }) 
-G, F = ReadFPLOBasisFunctions(orbitallabels,"+fval.001.1", "+fval.001.2") 
- 
-U = NewOperator("AtomicU",NF,ind,G,F) -- creates full Coulomb interaction 
- 
--- now occupation of the s-orbitals shall be conserved 
- 
-function Take(list,n1,n2) 
-  local result={} 
-  if n2== nil then 
-    if n1 > 0 then 
-      for i = 1, n1 do 
-        result[i]=list[i] 
-      end 
-    else 
-      for i=1,-n1 do 
-        result[i]=list[#list+n1+i] 
-      end 
-    end 
-   else 
-     for i = n1, n2 do 
-       result[i+1-n1] = list[i] 
-     end 
-   end 
-  return result 
-end 
- 
-n0 = 3 
-n1 = 4 
- 
-indConserved = Take(ind,1,n0-1) 
-indConserved.kappas = Take(ind.kappas,1,n0-1) 
-GConserved = Take(G,1,n0-1) 
-FConserved = Take(F,1,n0-1) 
- 
-indNonCnsrvd = Take(ind,n0,n1) 
-indNonCnsrvd.kappas = Take(ind.kappas,n0,n1) 
-GNonCnsrvd = Take(G,n0,n1) 
-FNonCnsrvd = Take(F,n0,n1) 
- 
-U0 = NewOperator("AU",NF,indConserved,GConserved,FConserved,{ {"conserve",true} }) -- Coulomb interaction between conserved orbitals only 
- 
-U1 = NewOperator("AU",NF,ind,G,F,indConserved.kappas,indNonCnsrvd.kappas,{ {"conserve",true},{"1P-Operator",true} }) -- Coulomb interaction between conserved orbitals and others transformed to a one-particle operator given that the conserved orbitals are always completely filled. 
- 
-U2 = NewOperator("AU",NF,indNonCnsrvd,GNonCnsrvd,FNonCnsrvd) -- Coulomb interaction between non-conserved orbitals 
- 
-Uconserved = U0 + U1 + U2 
-</code> 
- 
- 
-===== Table of contents ===== 
-{{indexmenu>.#1|msort}} 
  
Print/export