abacus-develop icon indicating copy to clipboard operation
abacus-develop copied to clipboard

the output occupation of ks state is wrong?

Open Satinelamp opened this issue 1 year ago • 10 comments

Describe the bug

I am trying use this feature(https://github.com/deepmodeling/abacus-develop/issues/4714) with the examples shipped with ABACUS. Why the occupation number at the 1st ionic step is not the same as istate.info? There is no laser stimulation at all. Snipaste_2024-08-08_20-47-43

Expected behavior

No response

To Reproduce

No response

Environment

No response

Additional Context

No response

Task list for Issue attackers (only for developers)

  • [ ] Verify the issue is not a duplicate.
  • [ ] Describe the bug.
  • [ ] Steps to reproduce.
  • [ ] Expected behavior.
  • [ ] Error message.
  • [ ] Environment details.
  • [ ] Additional context.
  • [ ] Assign a priority level (low, medium, high, urgent).
  • [ ] Assign the issue to a team member.
  • [ ] Label the issue with relevant tags.
  • [ ] Identify possible related issues.
  • [ ] Create a unit test or automated test to reproduce the bug (if applicable).
  • [ ] Fix the bug.
  • [ ] Test the fix.
  • [ ] Update documentation (if necessary).
  • [ ] Close the issue and inform the reporter (if applicable).

Satinelamp avatar Aug 08 '24 13:08 Satinelamp

As I have mentioned in #4714, index is not the ionic step.

istate.info is the result of the final ion step.

YuLiu98 avatar Aug 08 '24 13:08 YuLiu98

@lyb9812 Could you explain this question?

YuLiu98 avatar Aug 08 '24 13:08 YuLiu98

You can obtain the ks occupation of TDDFT per MD step from running_md.log using the develop branch.

YuLiu98 avatar Aug 08 '24 13:08 YuLiu98

In the running_md.log, the occupation number is unchanged during MD. but in the example(https://github.com/deepmodeling/abacus-develop/issues/4714), the occupation number is changing during MD. Maybe in the example I share, the occupation number is about how many electrons occupy the KS energy level in the ground state? image

Satinelamp avatar Aug 08 '24 15:08 Satinelamp

@AsTonyshment could you look into the issue?

YuLiu98 avatar Aug 09 '24 03:08 YuLiu98

I will have a look very soon.

AsTonyshment avatar Aug 09 '24 09:08 AsTonyshment

@Satinelamp What do you mean by "occupation" (that you require for)? In fact, in the usual context, when we refer to "occupation", we mean $f_{j\boldsymbol{k}}$, which does not change with time after setting ocp_set. However, in RT-TDDFT, we can study the so-called "number of excitations". There are two mainstream schemes to represent the number of excitations (see figure below):

  1. Projecting $\psi_{i\boldsymbol{k}}(t)$ onto the adiabatic ground state of the eigenfunctions of $\hat{H}(t)$
  2. Projecting $\psi_{i\boldsymbol{k}}(t)$ onto the reference ground state at $t = 0$

I think No.2 is easier to implement.

img_v3_02dj_e977348f-9a24-4491-993b-7948fc42c63g

AsTonyshment avatar Aug 09 '24 09:08 AsTonyshment

The second definition works for us when studying the photocatalytic cases.

Satinelamp avatar Aug 09 '24 09:08 Satinelamp

Okay, I will have a look at this issue.

AsTonyshment avatar Aug 09 '24 09:08 AsTonyshment

to be more specific, i think for a ultrafast process, e.g. 0-100fs, the second definition is good. but if we are considering the time scale in 100-1000fs, maybe the 1st definition is needed. In other subtle cases like proton coupling electron transfer, maybe the 1st definition works better than the 2nd one. But anyway, currently, the 2nd definition will work for us.

Satinelamp avatar Aug 09 '24 09:08 Satinelamp

Seems that we have a solution in #5477

mohanchen avatar Nov 23 '24 03:11 mohanchen