Indexing and assignment for Hamiltonian #25
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #24
Implements a variant of #22 (comment)
With this we can directly access the
HamiltonianHarmonic
matrix ofh::Hamiltonian
withh[n1, n2,...]
where the n tuple is an integer cell distance (Harmonic vector, calleddn
in ELSA)To add new (empty) harmonics do
push!(h, dn)
. If it is already present, h will not be modified. (dn can be a tuple, a splatted tuple or anSVector
)To check if a harmonic is present do
isassigned(h, dn)
To delete a harmonic do
deleteat!(h, dn)
To assign an element
i,j
in harmonicdn
doh[dn][i,j] = value
Broadcasting is allowed, so that
h[dn...][is, js] .= value_matrix
, to enable bulk assignment without intermediate allocations (at least ifh
is dense - a sparse matrix will typically require internal reshuffling to insert new elements).