-
Notifications
You must be signed in to change notification settings - Fork 6
Description
I would like to extend TAPP for index permutation symmetry (with a draft on a branch first).
I think it's enough to declare which groups of indices are mutually symmetric or antisymmetric using the proposed key-value pair storage (hashtable) parameter of TAPP_create_tensor_info.
(example for T3 amplitude tensor in coupled cluster)
Approach 1:
This information could be passed by adding these keys to the hashtable:
key: AS_ngroups, val: 2 // two groups
key: AS_groups_nmodes, val: {3, 3} (pointer to int64_t array) // first and second AS groups all have 3 indices
key: AS_indices, value: {0,1,2,3,4,5} (pointer to int64_t array) // list of all indices involved in groups
key: S_ngroups, val: 0
Approach 2:
key: perm_symm_size, value: 25 (int64_t) // number of characters
key: perm_symm, value "AS:{{0,1,2},{3,4,5}},S:{}" (pointer to int64_t array) // ASCII char numbers
This is just 'a' solution (in fact 2), but I'd be happy to see more elegant ways!
I prefer approach 2!