Is your feature request related to a problem? Please describe.
smol's canonical swap is not very easy to use, because it disallows cross-sublattice swaps, such as tet-Li to oct-Li swap in a spinel.
In the current version, one has to use TableFlip as the usher, where the flip_table of this TableFlip usher is manually set up to only include the said tet-Li to oct-Li swap.
Describe the solution you'd like
For now think of creating a new MCUsher called OverlapSwap that allows for this. Once we have that we can simply make a common Swap interface with an option like allow_overlap_swaps and instantiate the appropriate class. This way the user only needs to set step_type="swap" and allow_overlap_swap=True without having to care or know about the differences between a naive Swap and an OverlapSwap.
Is your feature request related to a problem? Please describe.
smol's canonical swap is not very easy to use, because it disallows cross-sublattice swaps, such as tet-Li to oct-Li swap in a spinel.
In the current version, one has to use TableFlip as the usher, where the flip_table of this TableFlip usher is manually set up to only include the said tet-Li to oct-Li swap.
Describe the solution you'd like
For now think of creating a new MCUsher called OverlapSwap that allows for this. Once we have that we can simply make a common Swap interface with an option like allow_overlap_swaps and instantiate the appropriate class. This way the user only needs to set step_type="swap" and allow_overlap_swap=True without having to care or know about the differences between a naive Swap and an OverlapSwap.