In a previous tutorial, we have calculated the elastic properties of TiO2 compound using an indirect way through 4 steps (How to calculate the Elastic Constants of TiO2 in tetragonal structure). In this tutorial, we will use a new task developed in the new version of 2025.
There are 2 ways to use this new task:
1- Perturbation theory
2- Finite displacement
1- Perturbation theory: DFPT
TiO2-LDA.cell
#TiO2.cell
%BLOCK LATTICE_ABC
4.552678 4.552678 2.916623
90.000000 90.000000 90.000000
%ENDBLOCK LATTICE_ABC
%BLOCK POSITIONS_FRAC
O 0.304078 0.304078 -0.000000
O 0.804078 0.195922 0.500000
O 0.195922 0.804078 0.500000
O 0.695922 0.695922 -0.000000
Ti 0.000000 0.000000 0.000000
Ti 0.500000 0.500000 0.500000
%ENDBLOCK POSITIONS_FRAC
%block species_pot
NCP19
%endblock species_pot
symmetry_generate
kpoint_mp_grid 4 4 4TiO2-LDA.param
#TiO2.param
task : geom opt
#task : elastic
cutoff_energy : 1000 eV
xc_functional : LDA_PW
max_scf_cycles : 100
opt_strategy : memory
num_dump_cycles : 0
elec_energy_tol : 1.0E-9 eV
geom_force_tol : 1.0E-3 eV/ang
#continuation : defaultSteps of calculation
Task 1: Perform a variable cell geometry optimization. Test the kinetic energy cut-off and k-point grid such that the force is converged to within the default geom_force_tol value.
$ mpirun -np 4 castep.mpi TiO2-LDA
Task 2: Make the following modification to the param file
#task : geom opt
task : elastic
........
.........
continuation : default
The continuation option used in the param file means that the optimized structure is read from the check file and there is no need to update the cell file which still contains the old structure.
This calculation is tested with LDA_PW xc-functional and there are some queries with the PBE xc-functional on the rutile compound.
$ mpirun -np 4 castep.mpi TiO2-LDA
We got the following elastic constants from the file TiO2-LDA.elastic
===============================================================================
Elastic Constants Tensor (Frozen Ion) (GPa)
-------------------------------------------------------------------------------
339.156774 174.252050 174.043905 0.000000 0.000000
0.000000
174.252050 339.156774 174.043905 0.000000 0.000000
0.000000
174.043905 174.043905 530.753440 0.000000 0.000000
0.000000
0.000000 0.000000 0.000000 151.088284 0.000000
0.000000
0.000000 0.000000 0.000000 0.000000 151.088284
0.000000
0.000000 0.000000 0.000000 0.000000 0.000000
227.078481
===============================================================================
1- Finite displacement
TiO2-PBE.cell
#TiO2.cell
%BLOCK LATTICE_ABC
4.552678 4.552678 2.916623
90.000000 90.000000 90.000000
%ENDBLOCK LATTICE_ABC
%BLOCK POSITIONS_FRAC
O 0.304078 0.304078 -0.000000
O 0.804078 0.195922 0.500000
O 0.195922 0.804078 0.500000
O 0.695922 0.695922 -0.000000
Ti 0.000000 0.000000 0.000000
Ti 0.500000 0.500000 0.500000
%ENDBLOCK POSITIONS_FRAC
%block species_pot
NCP19
%endblock species_pot
symmetry_generate
kpoint_mp_grid 8 8 12TiO2-PBE.param
#TiO2.param
task : geom opt
# task : elastic
cutoff_energy : 1000 eV
xc_functional : PBE
max_scf_cycles : 100
opt_strategy : memory
num_dump_cycles : 0
fine_grid_scale : 4.0
elec_energy_tol : 1.0E-9 eV
geom_force_tol : 4.0E-3 eV/Ang
#elastic_method : FINITEDISPLACEMENT
WRITE_CELL_STRUCTURE : trueSteps of calculation
Task 1: Perform a variable cell geometry optimization. Test the kinetic energy cut-off and k-point grid such that the force is converged to within the default geom_force_tol value.
$ mpirun -np 4 castep.mpi TiO2-PBE
Task 2: Make the following modification to the param file
# task : geom opt
task : elastic
.....
.....
elastic_method : FINITEDISPLACEMENT
Since the continuation option is not used in the param file means that we need to use the optimized structure in the cell file as follows:
$ mv TiO2.cell TiO2_old.cell
$ cp TiO2_out.cell TiO2.cell
Which gives the following content of the TiO2.cell
#TiO2.cell
#8x8x12
%block lattice_abc
4.64430546629963 4.64430546629963 2.96566885567127
90.0 90.0 90.0
%endblock lattice_abc
%BLOCK positions_frac
O 0.305199369651207 0.305199369651207 0.000000000000000
O -0.305199369651207 -0.305199369651207 0.000000000000000
O 0.805199369651207 0.194800630348793 0.500000000000000
O -0.805199369651207 -0.194800630348793 0.500000000000000
Ti 0.000000000000000 0.000000000000000 0.000000000000000
Ti 0.500000000000000 0.500000000000000 0.500000000000000
%ENDBLOCK positions_frac
%block species_pot
# NCP19
O O_NCP19_PBE_OTF.usp
Ti Ti_NCP19_PBE_OTF.usp
%endblock species_pot
symmetry_generate
kpoint_mp_grid 8 8 12
%block phonon_kpoint_list
0 0 0
%endblock phonon_kpoint_list
$ mpirun -np 4 castep.mpi TiO2-PBE
We got the following elastic constants from the file TiO2-PBE.elastic
===============================================================================
Elastic Constants Tensor (GPa)
-------------------------------------------------------------------------------
338.699402 173.646861 173.435554 0.000000 0.000000
0.000000
173.646861 338.699402 173.435554 0.000000 0.000000
0.000000
173.435554 173.435554 530.112817 0.000000 0.000000
0.000000
0.000000 0.000000 0.000000 150.926612 0.000000
0.000000
0.000000 0.000000 0.000000 0.000000 150.926612
0.000000
0.000000 0.000000 0.000000 0.000000 0.000000
226.667229
===============================================================================
Reference: You can compare the results with the following

0 Comments