When i wanna calculate excited electrons in each kpoint using ‘PROJ_x.OUT’, according to the formula given in the tutorial, I only found the initial occupation number of the corresponding KS state in EIGVAL_RTTDDFT.OUT file.
So, how can i get the current occupation number in corresponding time?
In the paper “All-electron full-potential implementation of real-time TDDFT in exciting”, the statement about occupation number is
In RT-TDDFT, the occupation number fjk of a KS state is kept fixed to its initial value.
Therefore, can i use occupation number in EIGVAL_RTTDDFT.OUT,
EIGVAL_RTTDDFT.OUT (91.6 KB)
like, (2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0) in this file, to represent fjk?
IF that worked,I get the wrong number that couldn’t consistent with NEXC.OUT.
I’d be appreciate if someone could help!
exciting calculates the number of excitations according to the formula given in the tutorial.
But, I’m afraid, you may not be able to reproduce it following
PROJ_*.OUT due to a limitation in the number of decimal digits in this file. In fact, you can verify that, to keep the size of the file small, the numbers in
PROJ_*.OUT are printed out with 5 decimal digits.
If your purpose is only to play around and cross-check this kind of calculation, you may want to use a very intense field. It then excites the electrons in a such way, that their wavefunctions will have a large overlap with the excited states (at least much larger than 0.00001).
Many thanks for your reply！Sorry for bothering you, but i still get confused about the detail for calculating the number of excitations.
The problem that i meet may not precision of value. When i deal with the projection in PROJ_*.OUT, I first get the squares of all the values, then i only calculate the triangles under the matrix (excluding diagonal lines). Cause the paper said
we define the number of electrons that have been excited to an unoccupied KS state, labeled j, as
Is that mean the process of projection on the ground state only take place on more higher state? And the results i get is about 0.52 contrast to the value of 1.15 in NEXC.OUT, is this normal?
But when i sum all values except diagonal lines in PROJ_*.OUT, i get the value of 0.5665.
By the way, i already multiply the occupation number and kpoints weight in this process.
I’d appreciate if you give me some hints!
probably I need to update the documentation, but the default is that the numbers printed out in PROJ_.OUT are already the square of the projections: something like
So you don’t need to square them further.
I worked out the correct results under your guidance.
For example, the structure i use is MoS2, the pulse setting is same as in the “All-electron full-potential implementation of real-time TDDFT in exciting ” , and here is my input.xml,
input.xml (1.6 KB)
When i check the excited electrons at the time 300 a.u., the value i get is 1.275657 and the result in NEXC.OUT is 1.2756785437, the difference shows after the 4th decimal place. So as the other time.
But when i output the electrons at different k points and different conduct bands, the things goes strange. The first conduct band at M point, I get very small value at the time 400 a.u. while the paper shows a big contribution near the M point. As shown below,
In this figure, i didn’t multiply the weight of k-points for convenient, cause they all the same. As you can see, the first conduct band around M point is too small at the time 400 a.u.
Due to the two-dimensional, I interpolate the other points according to the nearest 4 vertex k-points in uniform k-grid of KPOINTS_RTTDDFT.OUT . eg, the point (0.05, 0.06, 0.0) is in the sub-k-mesh (0.0, 0.0, 0.0), (0.1, 0.0, 0.0), (0.1, 0.1, 0.0) and (0.0, 0.1, 0.0).
And what can i do to get rid of this problem? Many thanks for your help!
if your goal is to reproduce the results published in Electron. Struct. 3, 037001 (2021), you can check the data here: NOMAD.