Skip to content

Commit

Permalink
[doc] more doc fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
the-hampel committed May 24, 2024
1 parent a07d27d commit 1327b3a
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 17 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ POTCAR
vasp*.tgz

doc/input_output/DMFT_input/advanced.rst
doc/input_output/DMFT_input/gw.rst
doc/input_output/DMFT_input/dft.rst
doc/input_output/DMFT_input/general.rst
doc/input_output/DMFT_input/input.rst
Expand Down
7 changes: 2 additions & 5 deletions doc/cRPA_VASP/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,6 @@ ulimit -s unlimited
and is written in the OUTCAR as two sets of bare interaction, where for one of them
it says: low cutoff result for V_ijkl. Here ENCUT was used and for the one above 1.1*ENCUT or VCUTOFF was used.
* usually a converged ENCUT gives also a reasonably high VCUTOFF, so that explicitly setting VCUTOFF is not necessary. Moreover, the effect of the VCUTOFF convergence is included by subtracting the constant shift between LOW and HIGH VCUTOFF test output in the OUTCAR
* One can see in the convergence plot "debugging_examples/LaTiO3/VCUTOFF_convergence.png" the effect of ENCUT and VCUTOFF:

![vcutoff_test](VCUTOFF_convergence.png)

## convergency tests:
$`E_{corr}^{RPA}`$ converges for NBANDS,ENCUT to $`\infty`$, where the asymptotic
Expand All @@ -90,10 +87,10 @@ The procedure is then to first convergence KPOINTS and ENCUT, where KPOINTS depe

## Parameterization of U and J from cRPA calculations
`eval_u.py` provides four different methods:
- Kanamori: `calc_kan_params(...)` for extracting Kanamori parameters for a cubic system
- Kanamori: `calc_kan_params(...)` for extracting Kanamori parameters for a cubic system
- Slater 1: `calc_u_avg_fulld(...)` using averaging and symmetries: $`U_\mathrm{cubic} = \frac1{2l+1} \sum_i (U_{iiii})`$, $`J_\mathrm{cubic} = \frac1{2l(2l+1)} \sum_{i, j\neq i} U_{ijji}`$. Then, the interaction parameters follow from the conversion $`U = U_\mathrm{cubic} - \frac85 J_\mathrm{cubic}, J = \frac75 J_\mathrm{cubic}`$.
- Slater 2: `calculate_interaction_from_averaging(...)` using direct averaging: $`U = \frac1{(2l+1)^2} \sum_{i, j} U_{iijj}`$ and $`J = U - \frac1{2l(2l+1)} \sum_{i, j} U_{ijij}`$. This is more straight forward that Slater 1, but ignores the basis in which the cRPA Uijkl matrix is written. For a perfect Slater matrix this gives the same results if applied in cubic or spherical harmonics basis.
- Slater 3: `fit_slater_fulld(...) `using an least-square fit (summed over the matrix elements) of the two-index matrices $`U_{iijj}`$ and $`U_{ijij}`$ to the Slater Hamiltonian.
- Slater 3: `fit_slater_fulld(...) `using an least-square fit (summed over the matrix elements) of the two-index matrices $`U_{iijj}`$ and $`U_{ijij}`$ to the Slater Hamiltonian.

These three methods give the same results if the cRPA matrix is of the Slater type already. Be aware of the order of your basis functions and the basis in which the $U$ tensor is written!

Expand Down
23 changes: 12 additions & 11 deletions python/solid_dmft/gw_embedding/bdft_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,16 +175,14 @@ def calc_Sigma_DC_gw(Wloc_dlr, Gloc_dlr, Vloc, verbose=False):

def calc_W_from_Gloc(Gloc_dlr, U):
r"""
Calculate Wijkl from given constant U tensor and Gf on DLRMesh
triqs notation for Uijkl:
triqs notation for Uijkl = phi*_i(r) phi*_j(r') U(r,r') phi_l'(r') phi_k(r)
= Uijkl c^+_i c^+_j' c_l' c_k
phi*_i(r) phi*_j(r') U(r,r') phi_l'(r') phi_k(r) = Uijkl c^+_i c^+_j' c_l' c_k
where the ' denotes a spin index different from the other without '
the according diagram is (left and right have same spin):
the according diagram is (left and right have same spin)::
j (phi) k' (phi)
\ /
Expand All @@ -196,7 +194,7 @@ def calc_W_from_Gloc(Gloc_dlr, U):
i (phi*) l'
we now have to move to a product basis form to combine two indices
i.e. go from nb,nb,nb,nb to nb**2,nb**2 tensors:
i.e. go from nb,nb,nb,nb to nb**2,nb**2 tensors::
Uji,kl = phi*_i(r) phi_j(r) U(r,r') phi*_k(r') phi_l(r')
= Psi*_ji(r) U(r,r') Psi_kl(r')
Expand All @@ -209,11 +207,12 @@ def calc_W_from_Gloc(Gloc_dlr, U):
Pi_ab,kl(tau) = -2 G_bl(tau) G_ka(beta - tau)
So that
So that::
[ U Pi(iwn) ]_ji,kl = sum_ab U_ji,ab Pi_ab,kl(iwn)
[ U Pi(iwn) ]_ji,kl = sum_ab U_ji,ab Pi_ab,kl(iwn)
i.e.::
i.e.
j' a ___
\ / \ k
< < \
Expand All @@ -223,18 +222,20 @@ def calc_W_from_Gloc(Gloc_dlr, U):
/ \___/ l
i' b
then the screened Coulomb interaction in product basis is:
then the screened Coulomb interaction in product basis is::
W_ji,kl(iwn) = [1 - U Pi(iwn) ]^-1_ji,kl Uji,kl - Uji,kl
W_ji,kl(iwn) = [1 - U Pi(iwn) ]^-1_ji,kl Uji,kl - Uji,kl
(subtract static shift here), and finally convert back to triqs notation.
Parameters
----------
Gloc_dlr : BlockGf or Gf with MeshDLR
local Green's function
U : np.ndarray of with shape [Gloc_dlr.target_shape]*4 or dict of np.ndarray
constant U tensor
Returns
-------
Expand Down
1 change: 1 addition & 0 deletions python/solid_dmft/gw_embedding/iaft.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ def __str__(self):
def wn_mesh(self, stats, ir_notation= True):
"""
Return Matsubara frequency indices.
:param stats: str
statistics: 'f' for fermions and 'b' for bosons
:param ir_notation: bool
Expand Down
5 changes: 4 additions & 1 deletion python/solid_dmft/postprocessing/eval_U_cRPA_RESPACK.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,12 +191,14 @@ def construct_Uijkl(Uijij, Uiijj):
construct full 4 index Uijkl tensor from respack data
assuming Uijji = Uiijj
----------
Parameters:
-----------
Uijij: np.ndarray
Uijij matrix
Uiijj: np.ndarray
Uiijj matrix
Returns:
-------
uijkl : numpy array
uijkl Coulomb tensor
Expand Down Expand Up @@ -236,6 +238,7 @@ def fit_slater(u_ijij_crpa, u_ijji_crpa, U_init, J_init, fixed_F4_F2=True):
inital value of J for optimization
fixed_F4_F2: bool, optional default=True
fix F4/F2 ratio to 0.625
Returns:
--------
U_int: float
Expand Down

0 comments on commit 1327b3a

Please sign in to comment.