-
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
Feature suggestion: Support for adding custom subspaces #100
Comments
Cheers for the bug report @obackhouse ! Update: See below. |
On second thought, this is probably going to happen for |
Ah wait ... I was reading to quickly. You are combining in one For the foreseeable time, the only way I think this sort of stuff can be achieved is to zero-pad the sto-3g results and place them into the full cc-pvtz spaces using numpy arrays. This is not super efficient ... and of course it means that your sto-3g tensors blow up into tensors with quite a number of zero blocks. Hope this helps. |
Also: Can you give a bit of context what you actually want to do with this sort of workflow? |
Understood - if this is just something that libtensor doesn't support then fair enough. The padding would indeed be a bit of a pain. As for workflows where this would be needed, for me that is in AGF2 where one iterates a quasiparticle basis and requires to partially transform ERIs i.e. (pq|rs) -> (pi|jk), where pqrs are MOs and ijkl are a basis defined by a subsequent iteration. The iterated basis is not the same size as the MO space, hence why I just used two different basis set MO spaces in my example - it wouldn't be exactly this but would be functionally similar. This is of course only tangential to ADC(2) and likely won't be a problem for any standard ADC method. Possibly a more common place this may be needed is in density fitting. In that case you have i.e. (Q|ij) which is a tensor in two different spaces (auxiliary, MO, MO). I suppose that this is different to my above case, since there isn't an occupancy in that space - does libtensor provide support for DF integrals? If so, how does it handle the space of the auxiliary basis? |
Yes indeed that is related to density-fitting, which is supported in libtensor, but we have not yet made effort to get that into adcc. I should say that this is on the medium-term list of things we would like to support. Whether there is occupancy or not is not quite the issue by the way. It's more that right now the "o1", "v1" etc spaces are hard-coded and for now it is not possible to "define your own subspace". This is not a limitation in libtensor, but just of the interface. Actually support for defining custom subspaces is quite a bit simpler to achieve than what I originally thought you wanted. I first thought you wanted to split an existing orbital subspace into two. But your alternative suggestion (add a new subspace and than transform existing tensors to that subspace using some form of projection / unitary rotation) is much simpler and something I could well see supported. I'll keep this in mind when I think about density-fitting. |
When attempting to form a
Tensor
which has two axes in differentMoSpaces
, anlibtensor
exception is raised if the axes are both either'v1'
or'f'
subspaces. This isn't exactly when both are in the same subspaces, because it seems to work fine if they are both'o1'
.The text was updated successfully, but these errors were encountered: