Skip to content

Release v2.11.1

Choose a tag to compare

@github-actions github-actions released this 23 Sep 00:31
· 75 commits to main since this release

Fixed

  • A cyclotrimerization's charges were computed on a ring that was never closed. The
    trimer template reached antechamber with its three ring bonds recorded but still about
    2.2 A long: the closure ladder cannot beat the reactants' own C#N, whose sp parameters
    hold each group linear, and no force constant wins that. Charges come from the
    geometry, so the semiempirical step charged three separate cyanates rather than a
    triazine, leaving every ring carbon about 0.21 e low with the deficit smeared over
    the rest of the molecule.

    Nothing caught it. The atom types were right, because antechamber perceives those from
    the connectivity, which was right; the molecules were neutral, because the error sums
    to zero; and the system's own ring bonds relaxed to 1.347 A after the splice, because
    the bonded parameters were fine. It surfaced only when htpolynet-study ran a campaign
    with bcc charges and half their builds died in a 500 K anneal -- the release smoke
    test had used gas charges, which are computed from the topology and could not have
    seen it.

    A product whose reaction closes a ring is now relaxed against its own connectivity
    before it is parameterized, and refused if the ring is still open afterward.
    Measured on a methyl cyanate trimer, ring-carbon charge: +0.699 before, +0.909
    after, against +0.909
    for the same molecule built independently from SMILES.
    htpolynet-study measured the same 0.21 e deficit on a bisphenol A dicyanate trimer.

    Two things fell out of the investigation that are worth knowing:

    • Correcting the bond orders does not fix it. An addition bond leaves the cyanate
      carbon pentavalent -- it keeps its C#N, gains the ring bond, and still carries its
      ester oxygen -- and that is now repaired too, since RDKit cannot read a molecule with
      an impossible valence. But repairing the orders alone produced charges identical to
      the broken ones, because the semiempirical step reads coordinates, not bond orders.
    • antechamber's output geometry is its input geometry. It is not evidence about
      what the charge calculation did or did not relax, and it should not be read as such.
  • A ring the closure ladder could not pull shut is now declined rather than bonded
    long.
    Late in a cure the matrix is rigid enough that a ring sometimes stops well
    short -- one batch at conversion 0.95 ended 0.327 nm apart against a target of 0.150 --
    and forming the bond anyway leaves it long for good: two ring bonds survived relaxation
    and a 500 K anneal still 2.6 A apart, strained but stable, a defect the network then
    carries permanently. Declining costs almost nothing, since the groups stay unreacted
    and are offered again next iteration once the neighbourhood has moved. The limit is
    ring_cure: closure: max_accept, default 0.30 nm; 0 restores the old behavior. Only
    visible now because the charge fix let a build reach conversion 0.95 for the first
    time.

  • Topology.rebalance_mol2_bond_orders reduces a multiple bond when an addition would
    otherwise leave an atom over-valent, preferring a bond that is over-valent at both ends
    because reducing it repairs two atoms at once.