# Fix GlobalLinSys generation for different variable coefficient entries

This MR fixes the issue reported by @xfempty, in which two calls to `HelmSolve`

with matrix keys that had different values of variable coefficients resulted in the same global system being used to perform the solve. This is achieved by changing the `VarCoeffMap`

data structure, to allow for the efficient hashing of values in the coefficient map (and thus avoid computing a hash of the data every time `HelmSolve`

is called).

Two additional issues are fixed:

- a minor fix to the PETScFull solver, which had a small regression owing to !963 (merged);
- fix for 3D element Helmholtz matrix construction, which did not pass matrix keys through to StdRegions correctly, meaning that variable-coefficient mass matrices did not work.