# Self-Consistency With Approximate Linear Response

### Table of Contents

### Purpose

This tutorial, which also acts as documentation, outlines the steps needed to estimate the self-consistent density given some dielectric response function. The codes have some capability to generate this dielectric response function approximately however this is less good than when calculated explicitly - this tutorial will detail both the explicit steps you can perform yourself and the commands required for the suite to calculate it for you.

### Preliminaries

### Tutorial

First, you need to care the ASA bare response function , which will be defined as:

is the constant potential shift in the channel of sphere , and is the induced change in the 0th moment in channel *L* of sphere *R*, without taking into account interactions between electrons (noninteracting susceptibility). The static dielectric response function is:

where

+ (on-site term = something like the intraatomic U)

and

Madelung Matrix

**lm** and **lmgf** can both generate , and store it on the disk. If you have generated , you can have the mxing precedure construct and then screen by . More exactly, it replaces the raw *qout* (generated by **lm** or **lmgf**) by:

and then it proceeds with self-consistency in the usual way, using *quot** in place of the usual *qout*. It is not difficult to show that if is the exact inverse dielectric function, *qout** is the RPA estimate of the self-consistent density. See, for example, Richard Martin’s book, *Electronic Structure*. Indeed, is sometimes called the “density-density response function”.

To tell the code to do this screening, set *OPTIONS_SC*=2. The program will crash if it can’t read from the disk ( is stored in the file *psta.ext*). You can create either with the band program **lm** or the Green’s function code **lmgf**. Since the metals treatment of is very primitive in the **lm** coce, it is better to use the **lmgf** to create for metals. **lmgf** can also make for the noncollinear case. To run **lmgf**, you need to add a couple of tokens to the *ctrl* file. For either program, set *OPTIONS_SCR*=1 to create .

The intraatomic *U* is esimated from the second derivative of the sphere total energy wrt to charge. You can update it every iteration by adding *10*k* to the token *SCR=*… thus *SCR*=52 will update the *U* each iteration in the sphere program.

If you don’t want to make , you can let the codes make a model estimate for you. It saves you the trouble of making , but it is less good than when is calculated explicitly.

All of these functionalities can be enabled through the *OPTIONS_SCR* token:

```
OPTIONS_SCR opt i4 1, 1 default = 0
Use scr to accelerate convergence:
0 do nothing
1 Make ASA static response function (see documentation)
2 Use response to screen output q and ves
4 Use model response to screen output q
6 Use response to screen output ves only
Add 1 to combine mode 1 with another mode
Add 10*k to compute intra-site contribution to vbare each kth iteration
Add 100*k to compute response function on every kth iteration
```

Edit This Page