-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Row-ify atom positions. #84
Comments
Two quick comments:
|
|
Can you link your implementation? @jon-wurtz |
Also for some graphs you are showing it looks like there are multiple length scales. Have you thought about the two length scales separately? One could treat the larger length scale with a weighted MIS problem with nodes tightly clustered together being treated as a node with a different weights. Then run a weighted MIS on the effective nodes with a background value determined by the larger scale solution. |
Yes, this is actually one idea for the BP project-- identify cliques and squish them into one effective node. I believe the giant blob is Springfield MA. I don't like the above implementation (it is slightly unpredictable) and am currently working on a more stable method based on tree/forest aggregation |
Experimental implementations will be here https://github.com/QuEra-AnA/rowify |
Issue
One complaint we commonly see is that the row constraints of the lattice makes it difficult to create a task.
Proposed solution
One method to get around this is to create a function that automatically generates a new set of positions that fits the constraints of the lattice.
The implementation of how to do this is pretty tricky. Ideally, the algorithm should modify the atom positions as little as possible while also working within the constraints of the device.
One thought I had is to come up with a generic algorithm that forces the atom positions into rows of fixed y-values, but as a layer on top, we have a first pass that will try every valid rotation of the atom positions.
What is a valid rotation is taking any two pairs of atoms and making that the x-axis of your system. Then you can rotate the current coordinates and check to see if those rotated positions fit the length and width constraints of the device.
If that rotation fits that constraint it next goes into the "rowify" calculation, after which, the average displacement is calculated for all the atoms.
The final transformation chosen is the rotation that is valid and has the minimum displacement of atoms.
Row-ify lattice
To "rowify" the atoms, the idea would be to calculate all groups of positions that fall within the minimum row spacing and then replace those values with their average y-value to get the new positions.
Finally the x-positions need to be changed so that the atoms do not violate the minimum distance constraint.
Here is a code snippet to do the first part:
The text was updated successfully, but these errors were encountered: