Get mag.sh: Difference between revisions

From Wiki
Jump to navigation Jump to search
New page: #!/usr/bin/env bash # Written by Qiang # To get the Magnetization of specific atoms # To use it: ###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Method A : If yo...
 
No edit summary
Line 1: Line 1:
#!/usr/bin/env bash
This script will do the following:
# Written by Qiang
1) Reads CONTCAR and calculate the total atom numbers;
# To get the Magnetization of specific atoms
2) Extracts the magnetization information from the OUTCAR to a file named mag-temp ;
# To use it:  
3) Prints the magnetization of the atoms you want to check.  
###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
# Method A : If you want to get the information of the 14th atom
###########  bash get_mag.sh 14
# Method B : If you want to get the information of atoms: 2 4 6 8 10
###########  for i in 2 4 6 8 10 ; do bash get_mag.sh $i ; done
###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


## Get the line number of the last magnetization (x)
Note1:  
Nline=$(grep -nr 'magnetization (x)'  OUTCAR  | tail -n 1 | awk '{print $1}' |sed  's/://g')


## Get the total atoms number
To get the magnetization information, we need set  
Natom=$(sed -n 7p CONTCAR  |tr ' ' '\n'  |  sed '/^$/d' | paste -sd+ | bc)
ISPIN = 2
LORBIT = 11


## Start line of Magnetization part
Note2 :
Nstart=$(($Nline+4))


## End line of Magnetization part
The total magnetization in OUTCAR is less than the value from OSZICAR. This is because:
Nend=$(($Nstart+$Natom-1))


## Extract the Magnetization part
The difference in the values roots in the fact that, when you project the magnetization on the atoms, you use a default value (RWIGS) to define the radius of each atom. For this reason, even if you compute the magnetization for all the atoms, the sum of their "volume" does not fill up the total volume of the unit cell, and so the sum of the projections of the magnetization on each atom is different from the overall magnetization, written in the OSZICAR.
if [ ! -e mag-temp ]; 
then
sed -n "$Nstart, $Nend p" OUTCAR > mag-temp
fi 
 
## Read and print the specific atom's magnetization  
sed -n "$1 p" mag-temp
 
## Remove the temp file: mag-temp contains all atoms' magnetization information
# rm mag-temp -f

Revision as of 10:39, 31 August 2017

This script will do the following: 1) Reads CONTCAR and calculate the total atom numbers; 2) Extracts the magnetization information from the OUTCAR to a file named mag-temp ; 3) Prints the magnetization of the atoms you want to check.

Note1:

To get the magnetization information, we need set ISPIN = 2 LORBIT = 11

Note2 :

The total magnetization in OUTCAR is less than the value from OSZICAR. This is because:

The difference in the values roots in the fact that, when you project the magnetization on the atoms, you use a default value (RWIGS) to define the radius of each atom. For this reason, even if you compute the magnetization for all the atoms, the sum of their "volume" does not fill up the total volume of the unit cell, and so the sum of the projections of the magnetization on each atom is different from the overall magnetization, written in the OSZICAR.