Calculating eigenvectors for the dielectric tensor of Hafnia
Moderators: mverstra, joaocarloscabreu
Calculating eigenvectors for the dielectric tensor of Hafnia
Hello
I want to find the eigenvectors, the full dielectric (also the relaxed ion part) and piezoelectric tensor of Hafnia . So I followed the DFPT RF2 tutorial.
first I generate a set of k points (kpt.in) like it is explained in the tutorial. I used these points for the new input file (kpt2.in), but here i get the following error message:
--- !ERROR
message: |
The file ./tmp/kpt2_o_DS1_WFK cannot be used to start the
present calculation. It was asked that the wavefunctions be accurate, but
at least one of the k points could not be generated from a symmetrical one.
dksqmax= 7.611730E-05
Action: check your wf file and k point input variables
(e.g. kptopt or shiftk might be wrong in the present dataset or the preparatory one.
src_file: inwffil.F90
src_line: 417
I cannot understand what I should change for the kptopt or the shiftk. In the next steps I want to use the dieflag, piezoflag and the eivec.
I work with PAW's, so my input file for kpt2.in looks like the following:
kpt.in
./out/kpt.out
./tmp/tmp_kpti
./tmp/tmp_kpto
./tmp/tmp_kpt
./ps/Hf.LDA_PW-JTH.xml
./ps/O.LDA_PW-JTH.xml
Can somebody explain me what is wrong in the file?
Thanks a lot!
I want to find the eigenvectors, the full dielectric (also the relaxed ion part) and piezoelectric tensor of Hafnia . So I followed the DFPT RF2 tutorial.
first I generate a set of k points (kpt.in) like it is explained in the tutorial. I used these points for the new input file (kpt2.in), but here i get the following error message:
--- !ERROR
message: |
The file ./tmp/kpt2_o_DS1_WFK cannot be used to start the
present calculation. It was asked that the wavefunctions be accurate, but
at least one of the k points could not be generated from a symmetrical one.
dksqmax= 7.611730E-05
Action: check your wf file and k point input variables
(e.g. kptopt or shiftk might be wrong in the present dataset or the preparatory one.
src_file: inwffil.F90
src_line: 417
I cannot understand what I should change for the kptopt or the shiftk. In the next steps I want to use the dieflag, piezoflag and the eivec.
I work with PAW's, so my input file for kpt2.in looks like the following:
kpt.in
./out/kpt.out
./tmp/tmp_kpti
./tmp/tmp_kpto
./tmp/tmp_kpt
./ps/Hf.LDA_PW-JTH.xml
./ps/O.LDA_PW-JTH.xml
Can somebody explain me what is wrong in the file?
Thanks a lot!
Re: Calculating eigenvectors for the dielectric tensor of Hafnia
Dear qwin,
At which dataset do you have this error message?
A question: do you only want to compute dielectric constant and piezoelectric tensor? If so, they are only qpt=Gamma (0 0 0) point properties such that you do not need all these different qpt phonons to be calculated.
Best wishes,
Eric
At which dataset do you have this error message?
A question: do you only want to compute dielectric constant and piezoelectric tensor? If so, they are only qpt=Gamma (0 0 0) point properties such that you do not need all these different qpt phonons to be calculated.
Best wishes,
Eric
Re: Calculating eigenvectors for the dielectric tensor of Hafnia
Thank you Eric for your fast answer!
My main goal is to find the full dielectric tensor(purley electronic contribution + contribution from the phonon modes) and the full piezoelectric tensor. And more for interests it would be nice to generate also the phonon band structure.
If i compare my result to other papers, I just found just the optical or purely electronic part of the dielectric tensor
So I thought i would try calculating it with help of the RF2-tutorial and set the dieflag = 3.
But It does not work. I generated 65 k points, I think I did it like the tutorial told it, but i just can generate {DS1_DDB, DS3_DDB, DS4_DDB, DS5_DDB , DS6_DDB, DS7_DDB} (I expected 65 DDB files), afterwards it aborts. So kpt2.in generates just 6 files. I still merged them and tried to calculate the dielectric tensor, But than i get the message:
Information is missing in the DDB.
The dynamical matrix number 8 cannot be built,
Could you may give me a hint, what the best way is to calculate the full tensors.
Thanks many time for you help!
My main goal is to find the full dielectric tensor(purley electronic contribution + contribution from the phonon modes) and the full piezoelectric tensor. And more for interests it would be nice to generate also the phonon band structure.
If i compare my result to other papers, I just found just the optical or purely electronic part of the dielectric tensor
So I thought i would try calculating it with help of the RF2-tutorial and set the dieflag = 3.
But It does not work. I generated 65 k points, I think I did it like the tutorial told it, but i just can generate {DS1_DDB, DS3_DDB, DS4_DDB, DS5_DDB , DS6_DDB, DS7_DDB} (I expected 65 DDB files), afterwards it aborts. So kpt2.in generates just 6 files. I still merged them and tried to calculate the dielectric tensor, But than i get the message:
Information is missing in the DDB.
The dynamical matrix number 8 cannot be built,
Could you may give me a hint, what the best way is to calculate the full tensors.
Thanks many time for you help!
Re: Calculating eigenvectors for the dielectric tensor of Hafnia
Dear qwin,
OK, this means that you should at least get the epsilon (elec and total) and piezo tensor right now with only Gamma point (if you forget about the phonon dispersion)?
Regarding the phonon dispersion, I think you mist one point is that Abinit can use interpolation of phonon dispersion between DFPT calculated points (very useful for insulator to reduce the number of DFPT calculations). The interpolation is done with anaddb on a grid of q-point that has "brav"(https://docs.abinit.org/variables/anaddb/#brav) possibilities. The grid of DFPT should correspond to the ngqpt grid (2 2 2 or 4 4 4 or etc) with or without a shift (nqshft).
In your case you can set brav to 1 and ngqpt to 2 2 2 (and no shift) to start with such that you need only Gamma and zone boundary points, which is already a good start. You can go to 4 4 4 to improve the interpolation but you don't need to do all qpt points with DFPT... (see section 4 of the RF2 tuto for the details).
Best wishes,
Eric
OK, this means that you should at least get the epsilon (elec and total) and piezo tensor right now with only Gamma point (if you forget about the phonon dispersion)?
Regarding the phonon dispersion, I think you mist one point is that Abinit can use interpolation of phonon dispersion between DFPT calculated points (very useful for insulator to reduce the number of DFPT calculations). The interpolation is done with anaddb on a grid of q-point that has "brav"(https://docs.abinit.org/variables/anaddb/#brav) possibilities. The grid of DFPT should correspond to the ngqpt grid (2 2 2 or 4 4 4 or etc) with or without a shift (nqshft).
In your case you can set brav to 1 and ngqpt to 2 2 2 (and no shift) to start with such that you need only Gamma and zone boundary points, which is already a good start. You can go to 4 4 4 to improve the interpolation but you don't need to do all qpt points with DFPT... (see section 4 of the RF2 tuto for the details).
Best wishes,
Eric
Re: Calculating eigenvectors for the dielectric tensor of Hafnia
Hello Eric
Thank you for your helpful answers!
I think I need also to calculate the uniaxial and shear strain to find the whole dielectrical tensor. I am not sure if I did it correctly:
Now I generate another dataset for the strain:
#DS 4 Strain Pertubation of Q=0
#*************************************************
qpt4 0.00000000E+00 0.00000000E+00 0.00000000E+00
getddk4 2 #from the ddk part
getwfk4 1 #from the ground state data set
kptopt4 2
rfstrs4 3 #now i want uniaxial and shear stress
rfphon4 1
rfatpol4 1 12
rfdir4 1 1 1
tolvrs4 1.0d-8
So at the end I have 11 Datasets:
And than I can calculate the full dielectric tensor with
!Flags
dieflag 4
elaflag 3
instrflag 1
!Wavevector grid number 1
brav 1
ngqpt 2 2 2
Kind Regards
Qwin
Thank you for your helpful answers!
I think I need also to calculate the uniaxial and shear strain to find the whole dielectrical tensor. I am not sure if I did it correctly:
Now I generate another dataset for the strain:
#DS 4 Strain Pertubation of Q=0
#*************************************************
qpt4 0.00000000E+00 0.00000000E+00 0.00000000E+00
getddk4 2 #from the ddk part
getwfk4 1 #from the ground state data set
kptopt4 2
rfstrs4 3 #now i want uniaxial and shear stress
rfphon4 1
rfatpol4 1 12
rfdir4 1 1 1
tolvrs4 1.0d-8
So at the end I have 11 Datasets:
- DS 1: Ground State
- DS 2 : Response function calculation of d/dk wave function (at Q=0)
- DS 3 : Response function calculation of Q=0 phonons and electric field pert.
- DS 4: Strain Pertubation of Q=0
- DS 5-11: Dynamical Matrix at wavevectors other than Gamma
And than I can calculate the full dielectric tensor with
!Flags
dieflag 4
elaflag 3
instrflag 1
!Wavevector grid number 1
brav 1
ngqpt 2 2 2
Kind Regards
Qwin
Re: Calculating eigenvectors for the dielectric tensor of Hafnia
Also with this new Database where i calculate the strain I could not calculate the full dielectric tensor. Sadly I have no further idea how to get more than the optical part.
mpi_rank: 0
message: |
matrginv : BUG -
The matrix that has been passed in argument of this subroutine
is probably either singular or nearly singular.
The LAPACK routine dgetrf failed.
Action: Contact ABINIT group
if I set dieflag 3, I get:
--- !ERROR
src_file: m_ddb_diel.F90
src_line: 368
mpi_rank: 0
message: |
The lowest mode appears to be a "true" negative mode,
and not an acoustic mode. This precludes the computation
of the frequency-dependent dielectric tensor.
Action : likely there is no action to be taken, although you,
could try to raise your convergence parameters (ecut and k-points).
For your information, here are the four lowest frequencies :
-6.86186463E-04 -4.51226777E-04 -1.12986344E-06 -8.52060867E-07
...
Kind regards
mpi_rank: 0
message: |
matrginv : BUG -
The matrix that has been passed in argument of this subroutine
is probably either singular or nearly singular.
The LAPACK routine dgetrf failed.
Action: Contact ABINIT group
if I set dieflag 3, I get:
--- !ERROR
src_file: m_ddb_diel.F90
src_line: 368
mpi_rank: 0
message: |
The lowest mode appears to be a "true" negative mode,
and not an acoustic mode. This precludes the computation
of the frequency-dependent dielectric tensor.
Action : likely there is no action to be taken, although you,
could try to raise your convergence parameters (ecut and k-points).
For your information, here are the four lowest frequencies :
-6.86186463E-04 -4.51226777E-04 -1.12986344E-06 -8.52060867E-07
...
Kind regards
- Attachments
-
- die1_strainpertubation.in
- (4.47 KiB) Downloaded 422 times
-
- die_wS3.in
- (200 Bytes) Downloaded 393 times
-
- die_wS4.in
- (84 Bytes) Downloaded 418 times
Re: Calculating eigenvectors for the dielectric tensor of Hafnia
Dear Qwin,
The last error message you report is quite clear I think: you have an unstable phonon mode at Gamma (probably polar) such that the dielectric is not defined.
It is possible that the space group in which you are running corresponds to a high-symmetry phase which is not stable and you'll not be able to compute the dielectric constant of this phase due to the presence of unstable modes.
But the unstable phonons could be an artefact of the numerical calculation if you did not impose the acoustic sum rules, did you set asr flag in your input (I do not see it)?
Best wishes,
Eric
The last error message you report is quite clear I think: you have an unstable phonon mode at Gamma (probably polar) such that the dielectric is not defined.
It is possible that the space group in which you are running corresponds to a high-symmetry phase which is not stable and you'll not be able to compute the dielectric constant of this phase due to the presence of unstable modes.
But the unstable phonons could be an artefact of the numerical calculation if you did not impose the acoustic sum rules, did you set asr flag in your input (I do not see it)?
Best wishes,
Eric