Double Bonds Not Preserved When Building Supercell

Not sure if I am experiencing a bug, or incomplete feature.

Environment Information

Avogadro version: 1.91.0
Operating system and version: Windows 11

I need to take a single monomer and duplicate it with many unit cells to create a “block” of uniform Nylon 6,6 strands. (pictured below)

When I use the “Build Supercell” feature, it creates a proper supercell (example pictured above), but fails to keep the bonds of the original. Going to “Build>Bond>Bond Atoms” would theoretically solve this, but it makes only single bonds, and the oxygen has a double-bond. This is fine to correct manually for a small supercell, but I need to make very large ones. I’m kind of stuck on what to do, because if the double-bond and other bonds were preserved, using “Build>Bond>Bond Atoms” would be okay since it will only need to create single carbon-carbon bonds.

Not sure how to proceed, or if there is a setting/tool/feature I missed?

Any advice is appreciated.

It’s partly an incomplete feature, and partly an old version that you’re using.

From https://two.avogadro.cc:

With the newer release, you can choose Bond => Perceive Bond Orders, which will fix your C=O and friends.

The incomplete feature is that yes, building a super cell should copy bond orders, but does not yet. There’s an issue: building supercell adds atoms without bonds · Issue #655 · OpenChemistry/avogadrolibs · GitHub but I haven’t had the time to fix it

Incidentally, I’d be curious if you’re willing to share the supercell, since we don’t have many polymer examples. :slight_smile:

Oh, and to be clear, if you have the supercell from the figure above, you can just re-open in 1.97 or later and choose the “Perceive Bond Orders” command and it should fix it up.

The bond order perception code isn’t perfect yet, but for C=O bonds it should have no problems.

Thank you so much for your reply. I have attached the polymer strand “crystal” cell I made for generating the supercell.

Nylon_66_Base_Mol_Unit5.cml (5.5 KB)

I’m still a little confused. If I use this to generate a supercell, then, in any order use “Bond Atoms”, “Perceive Bonds”, or save and re-open the generated supercell, all bonds become single by the end.

There seems to be a bug in the Perceive Bond Orders code. I’ll look at it.