Piezoelectric tensor

Dear community, i’m trying to perform a d33 calculation of BaTiO3 but the anaddb code failed and give this message :
Calculation of the internal-strain tensor

instrflag=1, so extract the internal strain constant from the 2DTE

— !ERROR
src_file: anaddb.F90
src_line: 840
mpi_rank: 0
message: |
DDB file must contain both uniaxial and shear strain for piezoelectric, Check your calculations

abinit_abort: decision taken to exit. Check above messages for more info


this is my input file :

ndtset 3
paral_rf2 1
paral_rf3 1

#Definition of the elementary cell
#*********************************
rprim 1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
acell 7.6152197110E+00 7.6152197110E+00 7.6152197110E+00 # relaxation value

#Definition of the atoms
#***********************

xred 0.000000 0.000000 0.000000
0.500000 0.500000 0.500000
0.000000 0.500000 0.500000
0.500000 0.000000 0.500000
0.500000 0.500000 0.000000

nband 32 # total valence electron/2 + 10
natom 5
ntypat 3
znucl 56 22 8
typat 1 2 3 3 3

#Definition of the SCF procedure
#*******************************
nstep 200
fftalg 401
diemac 4.0

#Definition of the plane wave basis set
#**************************************
ecut 32
pawecutdg 90
ecutsm 0.5
dilatmx 1.05

ngkpt 6 6 6
nshiftk 1
shiftk 0.5 0.5 0.5

#Ground state calculation
kptopt1 1 # Automatic generation of k points, taking
# into account the symmetry
toldfe1 1.0d-12 # SCF stopping criterion

#Response Function calculation : d/dk
rfelfd2 2 # Activate the calculation of the d/dk perturbation
rfdir2 1 1 1 # Need to consider the perturbation in the x-direction only
# This is rather specific, due to the high symmetry of the AlAs crystal
# In general, just use rfdir 1 1 1
# In the present version of ABINIT (v4.6), symmetry cannot be used
# to reduce the number of ddk perturbations
nqpt2 1
qpt2 0.0 0.0 0.0 # This is a calculation at the Gamma point
getwfk2 -1 # Uses as input the output wf of the previous dataset
kptopt2 2 # Automatic generation of k points,
# using only the time-reversal symmetry to decrease
# the size of the k point set.
iscf2 -3
tolwfr2 1.0d-22 # Must use tolwfr for non-self-consistent calculations
# Here, the value of tolwfr is very low.

#Response Function calculation : electric field perturbation and phonons
rfphon3 1 # Activate the calculation of the atomic dispacement perturbations
rfatpol3 1 5 # All the atoms will be displaced
rfelfd3 3 # Activate the calculation of the electric field perturbation
rfdir3 1 1 1 # All directions are selected. However, symmetries will be used to decrease
# the number of perturbations, so only the x electric field is needed
# (and this explains why in the second dataset, rfdir was set to 1 0 0).
nqpt3 1
qpt3 0.0 0.0 0.0 # This is a calculation at the Gamma point
getwfk3 -2 # Uses as input wfs the output wfs of the dataset 1
getddk3 -1 # Uses as input ddk wfs the output of the dataset 2
kptopt3 2 # Automatic generation of k points,
# using only the time-reversal symmetry to decrease
# the size of the k point set.
toldfe3 1.0d-12
pawxcdev3 0

add to conserve old < 6.7.2 behavior for calculating forces at each SCF step

optforces 1

is there any suggestions ?

Dear Ayman,
If I’m not mistaken, I do not see any perturbation for the strain in your input ( see DFPT - abinit), right? If so, it is normal that the piezo cannot be calculated.
Best wishes,
Eric

Hi,
I noticed that mistake and I added rfstrs = 3 but I get a negative value of the d33 which should be positive as the experimental value !!
Best regards

OK, did you check that all of your calculations (ground state = deep relaxation of the forces and stress, DFTP scf or ecut and kpoints) are well converged?

Yeah, i did all of that, maybe the experimental value is negative !

The sign is positive if I remember well, to be checked, how much did you get for the amplitude?
I also see that you have a dilatmx of 1.05, which is large, check that the ground state WF calculation has a stress as small as at the end of the relaxation.

Sorry I did not check that it is a physics problem that you have here, you try to compute the piezo response of the cubic phase of BaTiO3 which is not piezoelectric. You have to do the calculations in one of the 3 ferroelectric phases, ideally in R3m phase to have no remaining unstable mode in the structure but the other phases can be calculated knowing the remaining instabilities in some directions.