Header Ads Widget

Ab initio Calculations Using Wien2k Code

Last Posts

10/recent/ticker-posts

How to calculate the Electric Spontaneous Polarization in BaTiO3

1- Definition of Electric Polarization: There exists a Electric Polarization when the centers of the positive and negative charges in the crystal structure do not coincid.



 There are two types of electric polarization:

- Natural or Spontaneous Polarization which occurs when the centers of the opposite charges separate naturally (nternal electric field).

- Forced Polarization which occurs when the centers of the opposite charges separate because of an external contraints.

2- Installation of the BerryPI code:
   

- Go to the folder BerryPI in the wien2k repertory

 Algerien1970@linux-sb1z:~/soft/wien2k/SRC_BerryPI/BerryPI>

-  Install the numphy package for python

 Algerien1970@linux-sb1z:~/soft/wien2k/SRC_BerryPI/BerryPI> sudo zypper install python3-numpy

- Install the BerryPi code as follows:

Algerien1970@linux-sb1z:~/soft/wien2k/SRC_BerryPI/BerryPI> chmod +x init.sh
Algerien1970@linux-sb1z:~/soft/wien2k/SRC_BerryPI/BerryPI> init.sh



3- How to calculate the Spontaneous Polarization of BaTiO3:

BaTiO3 is a ferroelectric material that exhibits a spontaneous polarization. For the calculation of spontaneous polarization of BaTiO3 two reference structures have been chosen. One is tetragonal non-centrosymmetric (lambda1), where the atoms are displaced from their equilibrium centrosymmetric positions in Z direction, and another structure is a centrosymmetric structure (lambda0).

To download the both structures lambda0 and lambda1 click on the following link:

https://github.com/rubel75/BerryPI

1- We begin with the low symmetry structure lambda1 (non-centrosymmetric). The structure file is located in ../BerryPI/tutorials/tutorial1/lambda1. The head of the file lambda1.struct is shown below:

BaTiO3min                                                                      
P                            4 99 P4mm                                         
           RELA                                                              
7.547566  7.547566  7.626934 90.000000 90.000000 90.000000                   
ATOM  -1: X=0.00000000 Y=0.00000000 Z=0.00000000
        MULT= 1          ISPLIT=-2
Ba1        NPT=  781  R0=0.00001000 RMT=    2.5000   Z:  56.00000              
LOCAL ROT MATRIX:    1.0000000 0.0000000 0.0000000
                   0.0000000 1.0000000 0.0000000
                   0.0000000 0.0000000 1.0000000
ATOM  -2: X=0.50000000 Y=0.50000000 Z=0.51517436
        MULT= 1          ISPLIT=-2
Ti1        NPT=  781  R0=0.00005000 RMT=    1.6400   Z:  22.00000              
LOCAL ROT MATRIX:    1.0000000 0.0000000 0.0000000
                   0.0000000 1.0000000 0.0000000
                   0.0000000 0.0000000 1.0000000
ATOM  -3: X=0.50000000 Y=0.50000000 Z=0.97356131
        MULT= 1          ISPLIT=-2
O 1        NPT=  781  R0=0.00010000 RMT=    1.5400   Z:   8.00000              
LOCAL ROT MATRIX:    1.0000000 0.0000000 0.0000000
                   0.0000000 1.0000000 0.0000000
                   0.0000000 0.0000000 1.0000000
ATOM  -4: X=0.50000000 Y=0.00000000 Z=0.48343742
        MULT= 2          ISPLIT= 8
    -4: X=0.00000000 Y=0.50000000 Z=0.48343742
O 2        NPT=  781  R0=0.00010000 RMT=    1.5400   Z:   8.00000              
LOCAL ROT MATRIX:    1.0000000 0.0000000 0.0000000
                   0.0000000 1.0000000 0.0000000
                   0.0000000 0.0000000 1.0000000
 8      NUMBER OF SYMMETRY OPERATIONS
...


Note: Z-coordinates of atoms that deviate from "ideal" centrosymmetric positions.
  
 Use the terminal and do the following command:

Algerien1970@linux-sb1z:~> cd Tutorials
Algerien1970@linux-sb1z:~/Tutorials> ls
BaTiO3-Polarization
Algerien1970@linux-sb1z:~/Tutorials> cd BaTiO3-Polarization
Algerien1970@linux-sb1z:~/Tutorials/BaTiO3-Polarization> ls
lambda1
Algerien1970@linux-sb1z:~/Tutorials/BaTiO3-Polarization> cd lambda1
Algerien1970@linux-sb1z:~/Tutorials/BaTiO3-Polarization/lambda1> ls
lambda1.png  lambda1.struct
Algerien1970@linux-sb1z:~/Tutorials/BaTiO3-Polarization/lambda1>


NB: lambda1.png means that we have to view the structure to verify that it's ok before doing calculation.


2- Initialize calculation

Algerien1970@linux-sb1z:~/Tutorials/BaTiO3-Polarization/lambda1> init_lapw -b -vxc 13 -ecut -6 -numk 230


next is setrmt
 next is nn
 specify nn-bondlength factor: (usually=2) [and optionally dlimit, dstmax (about
.

.
.
.


DSTART ENDS
2.439u 0.019s 0:03.14 77.7%     0+0k 15504+2808io 34pf+0w

-----> new lambda1.in0 generated
  init_lapw finished ok 



3- Run SCF calculation

 Algerien1970@linux-sb1z:~/Tutorials/BaTiO3-Polarization/lambda1> run_lapw 



You are welcome to specify additional convergence criteria using -ec and -cc flags. It is the user's responsibility to check the convergence with respect to the quantity of interest (polarization in this case). Laurence Marks's suggestion is to change TOT to FOR in case.in2c and then monitor :FCHECK in case.scfm, checking that the calculation is converged to some adequate level (perhaps 2.0 or better). More details on convergence studies can be found at the end of this tutorial.

 4- Run BerryPI

 Algerien1970@linux-sb1z:~/Tutorials/BaTiO3-Polarization/lambda1> berrypi -k 6:6:6




To be continued


Post a Comment

1 Comments