qiskit-community / qiskit-dynamics

Tools for building and solving models of quantum systems in Qiskit
https://qiskit-community.github.io/qiskit-dynamics/
Apache License 2.0
106 stars 60 forks source link

Adding state shape preservation to Solver.solve #99

Closed DanPuzzuoli closed 2 years ago

DanPuzzuoli commented 2 years ago

Summary

Closes #96 Resolves the issue raised in discussion #95

Solver.solve respects input state type in the sense that if y0 is a quantum info type, then the returned solution is wrapped in the same class. However, as pointed out in discussion #95, the dimension data of y0 was not preserved when wrapping the solutions. This PR ensures updates Solver.solve to fix this.

Details and comments

The state type handling in Solver.solve is handled by initial_state_converter and final_state_converter. This PR updates initial_state_converter to also return a wrapper function to call to wrap the final states. This wrapper function is setup to include any additional kwargs needed beyond the array at construction - in this case dimension data. The function final_state_converter is removed as it is now redundant.

A test is also added to verify correct behaviour for various input types.