htpolynet 2.10.2__tar.gz → 2.11.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. {htpolynet-2.10.2 → htpolynet-2.11.0}/CHANGELOG.md +185 -12
  2. {htpolynet-2.10.2 → htpolynet-2.11.0}/PKG-INFO +1 -1
  3. {htpolynet-2.10.2 → htpolynet-2.11.0}/ROADMAP.md +426 -0
  4. {htpolynet-2.10.2 → htpolynet-2.11.0}/docker/Dockerfile +16 -2
  5. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/htpolynetpackage.rst +20 -0
  6. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/container-usage.rst +7 -1
  7. {htpolynet-2.10.2 → htpolynet-2.11.0}/pyproject.toml +1 -1
  8. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/core/configuration.py +2 -0
  9. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/core/molecule.py +142 -46
  10. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/core/paramcache.py +32 -1
  11. htpolynet-2.11.0/src/htpolynet/core/productsplice.py +266 -0
  12. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/core/runtime.py +185 -1
  13. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/core/topocoord.py +11 -0
  14. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/core/topology.py +24 -0
  15. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/cure/curecontroller.py +20 -3
  16. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/cure/expandreactions.py +11 -1
  17. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/cure/reaction.py +89 -0
  18. htpolynet-2.11.0/src/htpolynet/cure/ringcontroller.py +303 -0
  19. htpolynet-2.11.0/src/htpolynet/cure/triplesearch.py +251 -0
  20. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/external/gromacs.py +47 -1
  21. htpolynet-2.11.0/src/htpolynet/geometry/placement.py +100 -0
  22. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/schema/base.yaml +81 -0
  23. htpolynet-2.11.0/tests/unit/test_mdrun_gpu_options.py +87 -0
  24. htpolynet-2.11.0/tests/unit/test_multibody_reactions.py +253 -0
  25. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_paramcache.py +36 -2
  26. htpolynet-2.11.0/tests/unit/test_placement_and_ringclose.py +133 -0
  27. htpolynet-2.11.0/tests/unit/test_productsplice.py +219 -0
  28. htpolynet-2.11.0/tests/unit/test_ringcontroller.py +224 -0
  29. htpolynet-2.11.0/tests/unit/test_triplesearch.py +208 -0
  30. htpolynet-2.10.2/tests/unit/test_mdrun_gpu_options.py +0 -49
  31. {htpolynet-2.10.2 → htpolynet-2.11.0}/.claude/settings.json +0 -0
  32. {htpolynet-2.10.2 → htpolynet-2.11.0}/.claude/skills/htpolynet/SKILL.md +0 -0
  33. {htpolynet-2.10.2 → htpolynet-2.11.0}/.envrc +0 -0
  34. {htpolynet-2.10.2 → htpolynet-2.11.0}/.github/workflows/conda-forge-sync.yml +0 -0
  35. {htpolynet-2.10.2 → htpolynet-2.11.0}/.github/workflows/docker.yml +0 -0
  36. {htpolynet-2.10.2 → htpolynet-2.11.0}/.github/workflows/docs.yml +0 -0
  37. {htpolynet-2.10.2 → htpolynet-2.11.0}/.github/workflows/release.yaml +0 -0
  38. {htpolynet-2.10.2 → htpolynet-2.11.0}/.github/workflows/test.yml +0 -0
  39. {htpolynet-2.10.2 → htpolynet-2.11.0}/.gitignore +0 -0
  40. {htpolynet-2.10.2 → htpolynet-2.11.0}/.readthedocs.yaml +0 -0
  41. {htpolynet-2.10.2 → htpolynet-2.11.0}/CITATION.cff +0 -0
  42. {htpolynet-2.10.2 → htpolynet-2.11.0}/CLAUDE.md +0 -0
  43. {htpolynet-2.10.2 → htpolynet-2.11.0}/LICENSE +0 -0
  44. {htpolynet-2.10.2 → htpolynet-2.11.0}/MANIFEST.in +0 -0
  45. {htpolynet-2.10.2 → htpolynet-2.11.0}/README.md +0 -0
  46. {htpolynet-2.10.2 → htpolynet-2.11.0}/docker/compose.yml +0 -0
  47. {htpolynet-2.10.2 → htpolynet-2.11.0}/docker/docker-entrypoint.sh +0 -0
  48. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/Makefile +0 -0
  49. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/README.rst +0 -0
  50. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/make.bat +0 -0
  51. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/requirements.txt +0 -0
  52. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/_static/.gitkeep +0 -0
  53. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/_static/htpolynet-favicon.ico +0 -0
  54. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/_static/htpolynet-landing.jpg +0 -0
  55. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/_static/htpolynet-logo-dark.png +0 -0
  56. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/_static/htpolynet-logo-light.png +0 -0
  57. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/changelog.rst +0 -0
  58. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/conf.py +0 -0
  59. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/0-liquid-styrene/configuration.rst +0 -0
  60. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/0-liquid-styrene/index.rst +0 -0
  61. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/0-liquid-styrene/introduction.rst +0 -0
  62. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst +0 -0
  63. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst +0 -0
  64. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/0-liquid-styrene/results.rst +0 -0
  65. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/0-liquid-styrene/run.rst +0 -0
  66. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/configuration.rst +0 -0
  67. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/index.rst +0 -0
  68. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/introduction.rst +0 -0
  69. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/monomer.rst +0 -0
  70. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/STY.png +0 -0
  71. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png +0 -0
  72. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/buildtraces.png +0 -0
  73. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png +0 -0
  74. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/densification-density.png +0 -0
  75. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png +0 -0
  76. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/reaction_network.png +0 -0
  77. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-coloring.tcl +0 -0
  78. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png +0 -0
  79. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-detail.png +0 -0
  80. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png +0 -0
  81. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/pics/styrene-polymerization.png +0 -0
  82. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/postsim.rst +0 -0
  83. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/reactions.rst +0 -0
  84. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/results.rst +0 -0
  85. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/1-polystyrene/run.rst +0 -0
  86. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/configuration.rst +0 -0
  87. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/index.rst +0 -0
  88. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/introduction.rst +0 -0
  89. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/BPA.png +0 -0
  90. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/GMA.png +0 -0
  91. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/HIE.png +0 -0
  92. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/buildtraces.png +0 -0
  93. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/cure_info.png +0 -0
  94. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/densification-density.png +0 -0
  95. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.eps +0 -0
  96. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.fig +0 -0
  97. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.png +0 -0
  98. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-coloring.tcl +0 -0
  99. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-cured.png +0 -0
  100. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-detail.png +0 -0
  101. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-liq.png +0 -0
  102. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/p1-traces.png +0 -0
  103. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/reaction_network.png +0 -0
  104. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.eps +0 -0
  105. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.fig +0 -0
  106. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.png +0 -0
  107. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/postsim.rst +0 -0
  108. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/reactions.rst +0 -0
  109. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/results.rst +0 -0
  110. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/run.rst +0 -0
  111. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/configuration.rst +0 -0
  112. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/index.rst +0 -0
  113. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/introduction.rst +0 -0
  114. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/monomers.rst +0 -0
  115. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-epoxy.png +0 -0
  116. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-labelled.png +0 -0
  117. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-2d.png +0 -0
  118. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-labelled.png +0 -0
  119. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/buildtraces.png +0 -0
  120. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/cure_info.png +0 -0
  121. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/densification-density.png +0 -0
  122. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-coloring.tcl +0 -0
  123. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-cured.png +0 -0
  124. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-detail.png +0 -0
  125. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-liq.png +0 -0
  126. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.eps +0 -0
  127. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.fig +0 -0
  128. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.png +0 -0
  129. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/equil-rho_v_ns.png +0 -0
  130. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/postsim-typical.png +0 -0
  131. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-e.png +0 -0
  132. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-equil-rho_v_ns.png +0 -0
  133. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-rho_v_ns.png +0 -0
  134. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-tg.png +0 -0
  135. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r1.png +0 -0
  136. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r2.png +0 -0
  137. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r3.png +0 -0
  138. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/reaction_network.png +0 -0
  139. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/rho_v_ns.png +0 -0
  140. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-e.png +0 -0
  141. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-tg.png +0 -0
  142. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/postsim.rst +0 -0
  143. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/reactions.rst +0 -0
  144. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/results.rst +0 -0
  145. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/run.rst +0 -0
  146. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/configuration.rst +0 -0
  147. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/index.rst +0 -0
  148. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/introduction.rst +0 -0
  149. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/monomers.rst +0 -0
  150. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/buildtraces.png +0 -0
  151. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/cure_info.png +0 -0
  152. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/densification-density.png +0 -0
  153. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-coloring.tcl +0 -0
  154. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-cured.png +0 -0
  155. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-detail.png +0 -0
  156. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-liq.png +0 -0
  157. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/reaction_network.png +0 -0
  158. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/postsim.rst +0 -0
  159. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/reactions.rst +0 -0
  160. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/results.rst +0 -0
  161. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/run.rst +0 -0
  162. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/configuration.rst +0 -0
  163. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/index.rst +0 -0
  164. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/introduction.rst +0 -0
  165. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/monomers.rst +0 -0
  166. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/buildtraces.png +0 -0
  167. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/cure_info.png +0 -0
  168. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/densification-density.png +0 -0
  169. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-coloring.tcl +0 -0
  170. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-cured.png +0 -0
  171. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-detail.png +0 -0
  172. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-liq.png +0 -0
  173. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/reaction_network.png +0 -0
  174. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/postsim.rst +0 -0
  175. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/reactions.rst +0 -0
  176. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/results.rst +0 -0
  177. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/5-htpb-ipdi/run.rst +0 -0
  178. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/configuration.rst +0 -0
  179. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/index.rst +0 -0
  180. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/introduction.rst +0 -0
  181. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/monomers.rst +0 -0
  182. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-coloring.tcl +0 -0
  183. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-cured.png +0 -0
  184. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-detail.png +0 -0
  185. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-liq.png +0 -0
  186. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/pics/buildtraces.png +0 -0
  187. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/pics/cure_info.png +0 -0
  188. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/pics/densification-density.png +0 -0
  189. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/pics/reaction_network.png +0 -0
  190. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/postsim.rst +0 -0
  191. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/reactions.rst +0 -0
  192. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/results.rst +0 -0
  193. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/6-cyanate-ester/run.rst +0 -0
  194. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/example-tutorials/index.rst +0 -0
  195. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/index.rst +0 -0
  196. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/install.rst +0 -0
  197. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/references/index.rst +0 -0
  198. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/references/mol2-reference.pdf +0 -0
  199. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/references.bib +0 -0
  200. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/CURE.odg +0 -0
  201. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/bond_filter.odg +0 -0
  202. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/building-a-system.rst +0 -0
  203. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/configs/configs-for-analyze.rst +0 -0
  204. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/configs/configs-for-postsim.rst +0 -0
  205. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/configs/configs-for-run.rst +0 -0
  206. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/configuration-files.rst +0 -0
  207. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/flow1.odg +0 -0
  208. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/flow1yaml.odg +0 -0
  209. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/hydrogenated.eps +0 -0
  210. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/hydrogenated.fig +0 -0
  211. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/index.rst +0 -0
  212. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/molecular-structure-inputs.rst +0 -0
  213. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/periodic-networks.rst +0 -0
  214. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/pics/STY.png +0 -0
  215. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/pics/STYCC.png +0 -0
  216. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/pics/TypicalUsageFlow.png +0 -0
  217. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/pics/bond_filter.png +0 -0
  218. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/pics/chemdoodle-2dsketcher-emb.png +0 -0
  219. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/pics/chemdoodle-2dsketcher-styrene.png +0 -0
  220. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/pics/hydrogenated.png +0 -0
  221. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/pics/ring_pierce/ring_pierce_cases.png +0 -0
  222. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/pics/ring_pierce/ring_pierce_linkcell.png +0 -0
  223. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/postcure-repair.rst +0 -0
  224. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/program-flow.rst +0 -0
  225. {htpolynet-2.10.2 → htpolynet-2.11.0}/docs/source/user-guide/usage.rst +0 -0
  226. {htpolynet-2.10.2 → htpolynet-2.11.0}/scripts/check-conda-sync.py +0 -0
  227. {htpolynet-2.10.2 → htpolynet-2.11.0}/scripts/release.sh +0 -0
  228. {htpolynet-2.10.2 → htpolynet-2.11.0}/scripts/render-detail.sh +0 -0
  229. {htpolynet-2.10.2 → htpolynet-2.11.0}/scripts/render-detail.tcl +0 -0
  230. {htpolynet-2.10.2 → htpolynet-2.11.0}/scripts/render-snapshot.sh +0 -0
  231. {htpolynet-2.10.2 → htpolynet-2.11.0}/scripts/run_all_examples.sh +0 -0
  232. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/__init__.py +0 -0
  233. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/analysis/__init__.py +0 -0
  234. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/analysis/analyze.py +0 -0
  235. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/analysis/plot.py +0 -0
  236. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/analysis/postsim.py +0 -0
  237. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/analysis/utils.py +0 -0
  238. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/cli.py +0 -0
  239. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/core/__init__.py +0 -0
  240. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/core/bondtemplate.py +0 -0
  241. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/core/coordinates.py +0 -0
  242. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/core/projectfilesystem.py +0 -0
  243. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/cure/__init__.py +0 -0
  244. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/cure/chain.py +0 -0
  245. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/external/__init__.py +0 -0
  246. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/external/ambertools.py +0 -0
  247. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/external/command.py +0 -0
  248. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/external/slurm.py +0 -0
  249. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/external/smiles_input.py +0 -0
  250. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/external/software.py +0 -0
  251. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/geometry/__init__.py +0 -0
  252. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/geometry/bondlist.py +0 -0
  253. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/geometry/lattice.py +0 -0
  254. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/geometry/linkcell.py +0 -0
  255. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/geometry/matrix4.py +0 -0
  256. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/geometry/ring.py +0 -0
  257. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/io/__init__.py +0 -0
  258. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/io/gro.py +0 -0
  259. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/io/mol2.py +0 -0
  260. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/io/pdb.py +0 -0
  261. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/repair/__init__.py +0 -0
  262. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/repair/cyanate_cap.py +0 -0
  263. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/repair/topology_surgery.py +0 -0
  264. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/README.md +0 -0
  265. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/__init__.py +0 -0
  266. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/claude/SKILL.md +0 -0
  267. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/example_depot/0-liquid-styrene.yaml +0 -0
  268. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/example_depot/1-polystyrene.yaml +0 -0
  269. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/example_depot/2-bisgma-styrene-thermoset.yaml +0 -0
  270. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/example_depot/3-pacm-dgeba-epoxy-thermoset.yaml +0 -0
  271. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/example_depot/4-dfda-fde-epoxy-thermoset.yaml +0 -0
  272. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/example_depot/5-htpb-ipdi.yaml +0 -0
  273. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/example_depot/6-cyanate-ester.yaml +0 -0
  274. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/README.md +0 -0
  275. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/drag-min.mdp +0 -0
  276. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/drag-npt.mdp +0 -0
  277. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/drag-nvt.mdp +0 -0
  278. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/min.mdp +0 -0
  279. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/npt.mdp +0 -0
  280. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/nvt.mdp +0 -0
  281. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/relax-min.mdp +0 -0
  282. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/relax-npt.mdp +0 -0
  283. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/relax-nvt.mdp +0 -0
  284. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/single-molecule-min.mdp +0 -0
  285. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/mdp/single-molecule-nvt.mdp +0 -0
  286. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/inputs/DFA.pdb +0 -0
  287. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/inputs/DGE.mol2 +0 -0
  288. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/inputs/EMB.mol2 +0 -0
  289. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/inputs/FDE.pdb +0 -0
  290. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/inputs/GMA.mol2 +0 -0
  291. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/inputs/PAC.mol2 +0 -0
  292. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/inputs/STY.mol2 +0 -0
  293. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/make-monomers.sh +0 -0
  294. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/pics/DFA.png +0 -0
  295. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/pics/DGE.png +0 -0
  296. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/pics/EMB.png +0 -0
  297. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/pics/FDE.png +0 -0
  298. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/pics/GMA.png +0 -0
  299. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/pics/PAC.png +0 -0
  300. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/pics/STY.png +0 -0
  301. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/sample-inputs/DFA.pdb +0 -0
  302. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/sample-inputs/DGE.mol2 +0 -0
  303. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/sample-inputs/EMB.mol2 +0 -0
  304. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/sample-inputs/FDE.pdb +0 -0
  305. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/sample-inputs/GMA.mol2 +0 -0
  306. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/sample-inputs/PAC.mol2 +0 -0
  307. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/molecules/sample-inputs/STY.mol2 +0 -0
  308. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/tcl/readbonds.tcl +0 -0
  309. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/tcl/readgrx.tcl +0 -0
  310. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/resources/tcl/render.tcl +0 -0
  311. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/utils/__init__.py +0 -0
  312. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/utils/banner.py +0 -0
  313. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/utils/checkpoint.py +0 -0
  314. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/utils/convergence.py +0 -0
  315. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/utils/dataframetools.py +0 -0
  316. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/utils/inputcheck.py +0 -0
  317. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/utils/logsetup.py +0 -0
  318. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/utils/profiling.py +0 -0
  319. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/utils/stringthings.py +0 -0
  320. {htpolynet-2.10.2 → htpolynet-2.11.0}/src/htpolynet/utils/vmd_viz.py +0 -0
  321. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/__init__.py +0 -0
  322. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/conftest.py +0 -0
  323. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/__init__.py +0 -0
  324. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/fixtures/config1.gro +0 -0
  325. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/fixtures/config1.top +0 -0
  326. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/fixtures/config2.gro +0 -0
  327. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/fixtures/config2.top +0 -0
  328. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/fixtures/items31.edr +0 -0
  329. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/fixtures/items43.edr +0 -0
  330. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/fixtures/items45.edr +0 -0
  331. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/fixtures/short.mdp +0 -0
  332. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_bondtemplate.py +0 -0
  333. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_cap_placement.py +0 -0
  334. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_chain.py +0 -0
  335. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_completion_bias.py +0 -0
  336. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_conda_sync.py +0 -0
  337. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_configuration.py +0 -0
  338. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_convergence.py +0 -0
  339. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_cure_site_functionality.py +0 -0
  340. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_dataframetools.py +0 -0
  341. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_density_gate.py +0 -0
  342. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_gpu_usability.py +0 -0
  343. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_gromacs_get_energy_menu.py +0 -0
  344. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_gromacs_gmx_energy_trace.py +0 -0
  345. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_inputcheck.py +0 -0
  346. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_linkcell_pierce.py +0 -0
  347. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_mol2_bond_fallback.py +0 -0
  348. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_molecule_charge_report.py +0 -0
  349. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_moleculetype_name.py +0 -0
  350. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_paramcache_ambertools.py +0 -0
  351. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_parameterize_react.py +0 -0
  352. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_plot_smoke.py +0 -0
  353. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_projectfilesystem.py +0 -0
  354. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_relax_instrumentation.py +0 -0
  355. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_repair_charge_neutrality.py +0 -0
  356. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_repair_conversion.py +0 -0
  357. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_resources.py +0 -0
  358. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_ring.py +0 -0
  359. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_ring_pierce_figs.py +0 -0
  360. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_setup_claude.py +0 -0
  361. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_sibling_templates.py +0 -0
  362. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_slurm_script.py +0 -0
  363. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_smiles_input.py +0 -0
  364. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_software_provenance.py +0 -0
  365. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_topology/test.top +0 -0
  366. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_topology.py +0 -0
  367. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_transrot_turn_scan.py +0 -0
  368. {htpolynet-2.10.2 → htpolynet-2.11.0}/tests/unit/test_user_frcmod.py +0 -0
@@ -7,6 +7,178 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.11.0] - 2026-09-22
11
+
12
+ ### Added
13
+
14
+ - **A three-body cure reaction: cyclotrimerization** (see `ROADMAP.md`). A
15
+ `reactions` entry whose bonds close a ring among three reactants, plus a
16
+ `ring_cure` configuration block, now build a network by the real cyanate-ester
17
+ chemistry -- three -O-C#N groups closing one triazine -- instead of the
18
+ pre-formed-triazine surrogate that needs postcure repair. CURE is untouched
19
+ and remains the default; a configuration without a ring-closing reaction
20
+ behaves exactly as before.
21
+
22
+ Verified end to end twice. On 90 methyl cyanates, which can only trimerize:
23
+ 19 triazines, 63% conversion, every ring six-membered with three aromatic
24
+ carbons and three aromatic nitrogens, bonds averaging 1.351 A (a triazine's
25
+ is 1.34) and planar to 0.065 A, the 33 unreacted groups keeping their C#N at
26
+ 1.153 A, and all 52 molecules neutral. Then on 100 ethylene dicyanates,
27
+ which gel: 50 triazines, 75% conversion, ring bonds averaging 1.347 A, 55
28
+ monomers reacted through both arms and 40 through one, no chemically
29
+ impossible bond, and the largest of the 8 remaining molecules holding 1068 of
30
+ 1200 atoms -- a percolating network.
31
+
32
+ Then at scale, on 150 bisphenol A dicyanates -- the real monomer, 35 atoms
33
+ rather than 12, with a rigid aromatic backbone and its two arms about 0.9 nm
34
+ apart: 61 triazines at 61% conversion, every unit six-membered with three
35
+ aromatic nitrogens and three ring carbons still carrying their ester oxygen,
36
+ ring bonds averaging 1.347 A, no bond anywhere longer than 2.5 A, 54 monomers
37
+ reacted through both arms and 75 through one, all 150 molecules neutral, and
38
+ the largest of the 30 remaining components holding 1295 of 5250 atoms.
39
+
40
+ A monomer with more than one reactive site needs two things beyond the
41
+ single-site case, both of which the difunctional build exposed:
42
+ - **Only the reacting site's share of a residue is spliced.** A dicyanate can
43
+ join two rings, and the trimer template shows one arm reacted, so splicing
44
+ the whole residue reset the other ring's arm -- 36 bonds between an aromatic
45
+ nitrogen and an unreacted cyanate carbon in the first attempt. Each atom is
46
+ assigned to whichever site is nearer through the residue's own bonds.
47
+ - **The template's atom names are translated for a residue that rings through
48
+ its other site.** That exchange moves every atom of the arm, hydrogens
49
+ included, so it is derived as an automorphism of the monomer's bond graph
50
+ rather than read off `symmetry_equivalent_atoms`, which names only the
51
+ reactive atoms. The sets are still consulted for which sites exist.
52
+
53
+ A ring-closing reaction is also exempt from symmetry expansion, which permutes
54
+ each reactive atom independently: for three dicyanates that produced 64
55
+ reactions, most of them mixing the two arms of one site, and a template for
56
+ each.
57
+ - A reaction's residue-offset arithmetic now works for any number of
58
+ reactants. It was written for exactly two, so a bond between the first and
59
+ third reactant of a three-reactant reaction resolved to the wrong residue.
60
+ - `reaction.is_ring_closing` recognizes a reaction whose bonds close a cycle
61
+ among its reactants, which a cyclotrimerization does (1-2, 2-3, 3-1) even
62
+ though its new bonds alone form no cycle -- the ring closes through bonds
63
+ each reactant already had.
64
+ - The pairwise bond search now skips such a reaction with a warning naming
65
+ it, rather than treating its bonds as three unrelated pairwise candidates
66
+ and forming them in separate iterations, which would not build a ring.
67
+ - A reaction bond can declare `sacrificial_h: false`, for an addition where
68
+ nothing is lost. Every reaction htpolynet had before is a condensation
69
+ that deletes one hydrogen from each of the bond's atoms, which stays the
70
+ default; cyclotrimerization forms three bonds and deletes no atom.
71
+ - `reaction.spanning_and_closing_bonds` separates the bonds that assemble a
72
+ product from the bond that closes its ring. A template build positions
73
+ each incoming piece as it bonds it, which a closing bond cannot do: the
74
+ residues it joins are already placed, so it is skipped there and its
75
+ geometry handled separately.
76
+ - `Runtime.do_ring_cure` runs it as a workflow stage, with restart state
77
+ beside the cure's. `do_cure` now returns early when every cure reaction
78
+ closes a ring: the pairwise search skips those, so it would otherwise
79
+ iterate to its limit forming nothing. (The `CURE` block is present even
80
+ when a configuration omits it, since the schema supplies its defaults.)
81
+ - `cure.ringcontroller` runs the loop: search, pull every chosen ring shut,
82
+ form its bonds, splice the trimer template over its three residues, settle
83
+ the charge, and count what was consumed. Conversion is counted in reactive **groups**, three per
84
+ ring, which is what this chemistry reports -- the pre-formed-triazine route
85
+ has to infer it from a bond count instead. The search widens until an
86
+ iteration yields `min_rings_per_iteration` rings, as the pairwise cure's
87
+ does for bonds. Its state round-trips to YAML for restart, carrying the
88
+ widened radius with it.
89
+ - `cure.triplesearch` finds the triangles of reactive groups one ring-closing
90
+ reaction can join. The pairwise search cannot: it asks which A atom is near
91
+ which B atom, while a cyclotrimerization needs three groups mutually close,
92
+ and two well-chosen groups can still leave the third far off. Candidates
93
+ are scored as whole triangles by their total new-bond length, both ring
94
+ orientations are tried, each group may join only one triple, and a group is
95
+ identified by residue *and* atom names -- a bisphenol dicyanate carries two,
96
+ which is what makes it a crosslinker. Two groups of one residue, or of one
97
+ molecule, are excluded by default. On a 720-molecule box (1440 groups) at
98
+ a 0.5 nm radius it finds 358 candidates in half a second and packs 148
99
+ triples from them.
100
+ - A reaction bond that consumes no hydrogen is positioned by
101
+ `Molecule.place_for_addition` rather than `transrot`, which aligns two
102
+ reactants on the hydrogens they are about to lose and so cannot place an
103
+ addition at all: in a cyclotrimerization neither the cyanate carbon nor its
104
+ nitrogen carries one. The new placement puts the incoming piece a bond
105
+ length away, in the direction and at the turn that leave the most room,
106
+ using one shared copy of that geometry in `geometry.placement`.
107
+ - `Molecule.close_ring_geometry` pulls a ring shut before its bonds exist,
108
+ by restraining every pair of the ring and stepping the restraints down to a
109
+ bond length under minimization. The merged reactants' topology is already
110
+ valid for MD, and a type-6 restraint needs no atom types, so this needs
111
+ nothing parameterized.
112
+ - `Topology.set_restraint_parameters` prescribes a restraint's length and
113
+ stiffness outright. `attenuate_bond_parameters` cannot serve here: it
114
+ reads each bond's reference values from the row it overwrites, which is
115
+ stable for a real bond, whose reference comes from its atom types, but
116
+ compounds on a restraint carrying explicit parameters -- an eight-stage
117
+ ladder ended 400 times too weak to pull anything.
118
+ - `core.productsplice.map_product_from_template` makes the residues of one
119
+ reaction event match a product template exactly -- atom types, charges, and
120
+ every bond, angle, dihedral and 1-4 pair among them, replacing the
121
+ instance's parameters where they exist and adding them where they do not.
122
+ This is what a ring closure needs and what the per-bond splice cannot do:
123
+ among the interactions a triazine closure changes are ones wholly inside a
124
+ residue (a cyanate C#N becoming a ring bond), which contain no new bond and
125
+ so are never revisited by `map_from_templates`. It takes the residue
126
+ correspondence from its caller rather than inferring it from local context,
127
+ refuses a residue map that does not explain the bonds it was given, and
128
+ refuses by default to run before those bonds exist.
129
+
130
+ ### Fixed
131
+
132
+ - **A ring cure now widens its search radius when an iteration is short of
133
+ rings, not only when it finds none.** The pairwise cure has always grown its
134
+ radius within an iteration until it has `min_bonds_per_iteration` bonds; the
135
+ ring loop instead widened only after an iteration that found nothing at all.
136
+ A floppy monomer never noticed, but a rigid one keeps trickling one or two
137
+ rings at the starting radius, so the radius never grew: 150 bisphenol A
138
+ dicyanates stopped at conversion 0.40 after eight iterations, having asked for
139
+ 0.60 and never once widened. With the same rule the pairwise cure uses --
140
+ counted in rings, and clamped against the rings still needed to reach the
141
+ target -- the same system reaches 0.61 in eight iterations. The floor is
142
+ `ring_cure: min_rings_per_iteration`, default 4.
143
+
144
+ - **A GPU build died at its first minimization when the configuration set
145
+ `ntomp`.** GROMACS refuses OpenMP threads together with a GPU unless it is
146
+ also told how many ranks to run: "Please specify the number of thread-MPI
147
+ ranks as well (option -ntmpi)." Nothing supplied one, so every such build
148
+ failed about a minute in, after parameterization had already been paid for.
149
+ htpolynet now passes `-ntmpi 1` when a configuration asks for a GPU, sets
150
+ `ntomp`, and gives no rank count of its own. A rank count in the
151
+ configuration (`ntmpi`, `nt` or `npme`) is left as it is, and so is an MPI
152
+ `mdrun`, which takes its ranks from `mpirun` or `srun` and rejects
153
+ `-ntmpi`. Reported by htpolynet-study from a 9-task GPU build where every
154
+ task failed.
155
+
156
+ - **`ntmpi` passed as a keyword argument to `grompp_and_mdrun` was dropped**,
157
+ because the passthrough list spelled it `ntpmi`. Configurations were
158
+ unaffected: `mdrun_options` is copied whole.
159
+
160
+ ## [2.10.3] - 2026-09-17
161
+
162
+ ### Fixed
163
+
164
+ - **The CPU and CUDA container images shipped different AmberTools.** The
165
+ CUDA images, `:cuda-v2.10.0` through `:cuda-v2.10.2`, had AmberTools 24.8,
166
+ while the CPU images had 26.0. Nobody chose that: conda-forge can't install
167
+ AmberTools 26 alongside CUDA GROMACS, and the unpinned Dockerfile line fell
168
+ back silently. So the same configuration was parameterized by different
169
+ AmberTools releases depending on which image ran it. Both images now
170
+ install AmberTools in their own conda environment, pinned to one version
171
+ (26.0, set by the `AMBERTOOLS_VERSION` build argument). A future conflict
172
+ now fails the build instead of quietly downgrading.
173
+
174
+ - **A cached parameterization is no longer reused across AmberTools
175
+ versions.** The cache record now includes the AmberTools version, and a
176
+ run on a different version re-parameterizes instead of reusing the entry.
177
+ Records written before this, and runs that can't tell their version, still
178
+ match. A cache filled with a CUDA image up to v2.10.2 (AmberTools 24.8)
179
+ has no version in its records, so it would still be reused by a newer
180
+ image. Refill it if the charges must come from one AmberTools release.
181
+
10
182
  ## [2.10.2] - 2026-09-17
11
183
 
12
184
  ### Fixed
@@ -14,23 +186,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
14
186
  - **Templates for crowded monomers could start with atoms on top of each
15
187
  other, and AM1-BCC/ABCG2 charges then failed.** When htpolynet built a
16
188
  linked-product template, it attached the incoming molecule along the new
17
- bond but never turned it about that bond. Its clash check also compared the
18
- moved piece with its own pre-move position. With tetramethylbisphenol F
19
- (TMB), whose methyls flank each reacting oxygen, every triazine template
189
+ bond but never turned it about that bond. Its clash check also compared
190
+ the moved piece with its own pre-move position. With tetramethylbisphenol
191
+ F (TMB), whose methyls flank each reacting oxygen, every triazine template
20
192
  started with a methyl hydrogen 0.65-1.26 A from a ring atom. On one triply
21
- substituted template, AmberTools 26's sqm then failed to converge ("Cannot
22
- properly run sqm"), which stopped parameterization.
193
+ substituted template, sqm (AmberTools 24.8, as shipped in the `:cuda`
194
+ image) then failed to converge ("Cannot properly run sqm"), which stopped
195
+ parameterization.
23
196
 
24
197
  The placement now scans turns about the new bond, in 10 degree steps, and
25
198
  keeps the one farthest from the residues that stay put. Every TMB template
26
199
  now starts at 1.50 A or more. The six triply substituted TMB templates
27
- were run with ABCG2 on AmberTools 26: five, including the geometry that
28
- failed before, completed, and the sixth converged its SCF and was still
29
- optimizing when this was written. On these crowded molecules the
30
- optimization is slow, 40 minutes to 2.6 hours each, run three at a time. Charges and atom types of all 123
31
- templates in the shipped examples, which use gas charges, are unchanged. A
32
- template that still starts with a contact under 1 A is now logged as a
33
- warning.
200
+ were run with ABCG2 on that same AmberTools 24.8: five, including the
201
+ geometry that failed before, completed, and the sixth converged its SCF
202
+ and was still optimizing when this was written. On these crowded molecules
203
+ the optimization is slow, 40 minutes to 2.6 hours each, run three at a
204
+ time. Charges and atom types of all 123 templates in the shipped examples,
205
+ which use gas charges, are unchanged. A template that still starts with a
206
+ contact under 1 A is now logged as a warning.
34
207
 
35
208
  ## [2.10.1] - 2026-09-16
36
209
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: htpolynet
3
- Version: 2.10.2
3
+ Version: 2.11.0
4
4
  Summary: Automated MD System Builder for Amorphous Network Polymers
5
5
  Project-URL: Source, https://github.com/cameronabrams/htpolynet
6
6
  Project-URL: Documentation, https://htpolynet.readthedocs.io/