-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Third-order ISR properties #155
base: master
Are you sure you want to change the base?
Conversation
…rrected permutation symmetry in make_symmetry.cc
…of third order tdm and s2s. Second order triples amplitude will be added soon.#
…of third order tdm and s2s. Second order triples amplitude will be added soon.
…econd order triples MP amplitude, as well as the third order properties. No symmetry function is included yet, but since the second order triples MP amplitude doesn't provide symmetry by swapping two indices, only spin symmetry for restricted case should be included (tbd).
…ts, that use or return a tensor of maximum dimension 6
…of third order tdm and s2s.
…of third order tdm and s2s. Includes Bugfixes.
…of third order tdm and s2s. Includes Bugfixes. Base version (working)
…hird order tdm and s2s. t-amps and tdm already sped up
…s working third order
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some initial comments. Regarding the implementation, this looks pretty good already. We'll figure out the test system changes, should not be too hard.
adcc/ElectronicTransition.py
Outdated
@cached_property | ||
@mark_excitation_property() | ||
@timed_member_call(timer="_property_timer") | ||
def s2s_transition_dipole_moments(self): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should not be here, it's already implemented here.
BTW transition dipole moments should not include the permanent ground state dipole moment 😄
adcc/ExcitedStates.py
Outdated
@cached_property | ||
@mark_excitation_property() | ||
@timed_member_call(timer="_property_timer") | ||
def s2s_transition_dm(self): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See comment above.
adcc/ExcitedStates.py
Outdated
def describe(self, oscillator_strengths=True, rotatory_strengths=False, | ||
state_dipole_moments=False, transition_dipole_moments=False, | ||
block_norms=True): | ||
block_norms=True, s2s_transition_dipole_moments=False): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please remove this as per comment above.
adcc/LazyMp.py
Outdated
@@ -93,6 +93,93 @@ def td2(self, space): | |||
- 0.5 * self.t2eri(b.oovv, b.oo) | |||
) / denom | |||
|
|||
@cached_member_function | |||
def tt2(self, space): | |||
"""Second prder triple amplitudes""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"""Second prder triple amplitudes""" | |
"""Second order triples amplitudes""" |
+ einsum('ib,ab->ia', ts3, dipop.vv) | ||
- einsum('ja,ji->ia', ts3, dipop.oo) | ||
- einsum('ijab,jb->ia', td3, dipop.ov) | ||
+ einsum('ijab,kb,jk->ia', t2, p0.ov, dipop.oo) | ||
+ einsum('jkab,kb,ji->ia', t2, p0.ov, dipop.oo) | ||
- einsum('ijbc,jc,ab->ia', t2, p0.ov, dipop.vv) | ||
- einsum('ijab,jc,cb->ia', t2, p0.ov, dipop.vv) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add the 1.0
prefactors for consistency with the rest of the code block. This is whay we (hopefully) do throughout adcc
.
@@ -327,4 +327,76 @@ std::shared_ptr<Symmetry> make_symmetry_operator_basis( | |||
return sym; | |||
} | |||
|
|||
/** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are these changes commented out? Are they required/will they be required for future work?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the libadcc backend I introduced two things, which I commented out.
The first one is straightforward, where we initially also wanted to include quadruples for testing purposes, and since they might be required by a certain other member of the group in the near future I just commented them out, instead of removing them. I agree however, since they are straightforward, to just leave them out, if you want me to.
The second one, which is also what you are pointing at, was an initial approach to build a proper object, which makes use of the symmetry (also regarding spin-symmetry) of the triples tensor. I wanted to come back to this symmetry object, but at least for the third order properties it's not worth it, as you will see from a benchmark, which will be published in the near future. However, I left it in there, because other approaches, which include triples, might be worth the effort.
Implemented with @BauerMarco
Features:
Consistent third order properties for
Keywords:
Additional comments:
Default property level for ADC(3) calculations remains ADC(3/2). Consistent third order properties can be requested using the properties_level keyword.
Testing procedure still has to be adapted.