Add frequency-dependent LoProp polarizabilities
This MR adds frequency-dependent loprop polarizabilities.
The existing infrastructure is mostly unmodified, i.e., the polarizabilities still use the same polarizability_method and polarizability_model and so on.
I added a polarizability_frequency method, which is used in the InputWriters
if the frequency is non-zero (default).
The ScriptWriters
does not know anything about what frequency is being run (and this an argument to the loprop run-script), so I grep it from the .dal
file if needed.
The regular loprop readers should work for both normal and frequency-dependent polarizabilities, as they still have the same format, and only a single frequency (either 0.0 or some number) is being outputted.
The loprop program has support for two types frequency-dependent polarizabilities.
- normal frequency-dependent polarizabilities (goes to +/- infinity at excitation energies)
- damped response frequency-dependent polarizabilities (i.e., via *ABSORP)
I implemented the first one, but maybe the latter could also be relevant?
Todo:
-
Add tests - No tests (or coverage) for the
-
Discuss writer input format - Is there a way to avoid ugly if-statements in the runner-scripts?
- Is this the type of output we want? For "practical" use, at least two sets of polarizabilities (static + frequency-depenedent) are required, since some operators are frequency-independent (see "Assessing frequency-dependent site polarisabilities in linear response polarisable embedding").
-
Discuss type of frequency-dependent polarizability - Should we use damped or not?
-
Add to changelog
Description
Adds frequency-dependent loprop polarizabilities.
Types of changes
- New feature (non-breaking change which adds functionality)