yambo-code / yambo

This is the official GPL repository of the yambo code
http://www.yambo-code.eu/
GNU General Public License v2.0
98 stars 38 forks source link

Is the EXP integrator formally correct? #93

Closed andreamarini closed 1 month ago

andreamarini commented 4 months ago

In yambo_rt there is one integrator named EXP

! 2 - Exp integrator: G(t+dt) = G(t) - i*dt *[H(t'),G(t)] - dt^2 *[H(t'),[H(t'),G(t)]] + .... [Can be expanded up to order 6]

that assumes that the n-th derivative of G(t) is obtained by iterating the commutator.

I attach notes where I demonstrate that this is not the case and additional terms appear.

Let me know if you agree.

scan.pdf

sangallidavide commented 4 months ago

that assumes that the n-th derivative of G(t) is obtained by iterating the commutator.

The expansion does not come from "iterating the commutator", but from the expansion of the expression

exp(+i*H*t) * G(t,t') * exp(-i*H*t)

There should be notes / papers on this

andreamarini commented 4 months ago

The expansion obtained by iterating the commutator is what it is normally used to expand in powers the time-evolution of an operator under the action of a time-independent Hamiltonian.

This is another way to see that the EXP integrator applies only to static Hamiltonians

attacc commented 4 months ago

Why but I think for short Time steps, It should work Claudio

Il mer 29 mag 2024, 14:10 Andrea Marini @.***> ha scritto:

The expansion obtained by iterating the commutator is what it is normally used to expand in powers the time-evolution of an operator under the action of a time-independent Hamiltonian.

This is another way to see that the EXP integrator applies only to static Hamiltonians

— Reply to this email directly, view it on GitHub https://github.com/yambo-code/yambo/issues/93#issuecomment-2137258853, or unsubscribe https://github.com/notifications/unsubscribe-auth/AED6PCKFEPJSFX62U3W5O7TZEXAU7AVCNFSM6AAAAABIOXVYEKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZXGI2TQOBVGM . You are receiving this because you were assigned.Message ID: @.***>

andreamarini commented 4 months ago

Claudio, it does not make sense. There is no way to estimate the error induced by neglecting the missing terms.

It is not a matter of the length of the time step. If the electric field is strong and/or rapid oscillating the result can be arbitrary wrong.

I suggest to remove it.

sangallidavide commented 4 months ago

This is another way to see that the EXP integrator applies only to static Hamiltonians

Yeah. It is also written in the description of the subroutine image

Still in these cases it is useful.

andreamarini commented 4 months ago

Ok.

I do think it is to be removed because:

a. it is not exact b. there is no way for any user to realize the limitations

I will clean the RT_integrator in my branch and I will propose a tech branch for that. We will discuss it at the moment of the merging.

sangallidavide commented 4 months ago

There are reasons for which the Exp integrator is better than simple Euler for example. e.g. the Exp integrator is unitary.

Some of them are discussed in the paper pointed out by Daniele: https://doi.org/10.1063/1.1774980 If you combine this with RK2, I think you get the "Exponential mid point" discussed in the reference.

Also see the Octopus documentation: https://www.octopus-code.org/documentation/13/variables/time-dependent/propagation/

For the user, if he does not know what he is doing, he should not try randomly all the possible propagators, but just stick to the default or to the ones he understands, or study before trying others.

andreamarini commented 4 months ago

I provided an exact (simple) derivation.

I believe we should support the coding with more clear math.

In any case after re-coding the integration I will check on the validity and report the results in preparation of the merging.

sangallidavide commented 1 month ago

Closing issue. The discussion in proceeding here: https://github.com/yambo-code/yambo/issues/95