htpolynet 2.6.1__tar.gz → 2.7.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 (340) hide show
  1. {htpolynet-2.6.1 → htpolynet-2.7.0}/CHANGELOG.md +208 -0
  2. {htpolynet-2.6.1 → htpolynet-2.7.0}/PKG-INFO +1 -1
  3. {htpolynet-2.6.1 → htpolynet-2.7.0}/ROADMAP.md +459 -32
  4. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/results.rst +4 -1
  5. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/configs/configs-for-run.rst +4 -4
  6. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/postcure-repair.rst +139 -48
  7. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/program-flow.rst +54 -0
  8. {htpolynet-2.6.1 → htpolynet-2.7.0}/pyproject.toml +1 -1
  9. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/cure/curecontroller.py +207 -26
  10. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/repair/cyanate_cap.py +43 -5
  11. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/npt.mdp +2 -1
  12. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/nvt.mdp +2 -1
  13. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_completion_bias.py +58 -7
  14. htpolynet-2.7.0/tests/unit/test_relax_instrumentation.py +151 -0
  15. htpolynet-2.7.0/tests/unit/test_repair_conversion.py +118 -0
  16. htpolynet-2.6.1/tests/unit/test_repair_conversion.py +0 -63
  17. {htpolynet-2.6.1 → htpolynet-2.7.0}/.claude/settings.json +0 -0
  18. {htpolynet-2.6.1 → htpolynet-2.7.0}/.claude/skills/htpolynet/SKILL.md +0 -0
  19. {htpolynet-2.6.1 → htpolynet-2.7.0}/.envrc +0 -0
  20. {htpolynet-2.6.1 → htpolynet-2.7.0}/.github/workflows/conda-forge-sync.yml +0 -0
  21. {htpolynet-2.6.1 → htpolynet-2.7.0}/.github/workflows/docker.yml +0 -0
  22. {htpolynet-2.6.1 → htpolynet-2.7.0}/.github/workflows/release.yaml +0 -0
  23. {htpolynet-2.6.1 → htpolynet-2.7.0}/.github/workflows/test.yml +0 -0
  24. {htpolynet-2.6.1 → htpolynet-2.7.0}/.gitignore +0 -0
  25. {htpolynet-2.6.1 → htpolynet-2.7.0}/.readthedocs.yaml +0 -0
  26. {htpolynet-2.6.1 → htpolynet-2.7.0}/CITATION.cff +0 -0
  27. {htpolynet-2.6.1 → htpolynet-2.7.0}/CLAUDE.md +0 -0
  28. {htpolynet-2.6.1 → htpolynet-2.7.0}/LICENSE +0 -0
  29. {htpolynet-2.6.1 → htpolynet-2.7.0}/MANIFEST.in +0 -0
  30. {htpolynet-2.6.1 → htpolynet-2.7.0}/README.md +0 -0
  31. {htpolynet-2.6.1 → htpolynet-2.7.0}/docker/Dockerfile +0 -0
  32. {htpolynet-2.6.1 → htpolynet-2.7.0}/docker/compose.yml +0 -0
  33. {htpolynet-2.6.1 → htpolynet-2.7.0}/docker/docker-entrypoint.sh +0 -0
  34. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/Makefile +0 -0
  35. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/README.rst +0 -0
  36. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/make.bat +0 -0
  37. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/requirements.txt +0 -0
  38. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/_static/.gitkeep +0 -0
  39. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/changelog.rst +0 -0
  40. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/conf.py +0 -0
  41. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/0-liquid-styrene/configuration.rst +0 -0
  42. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/0-liquid-styrene/index.rst +0 -0
  43. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/0-liquid-styrene/introduction.rst +0 -0
  44. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst +0 -0
  45. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst +0 -0
  46. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/0-liquid-styrene/results.rst +0 -0
  47. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/0-liquid-styrene/run.rst +0 -0
  48. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/configuration.rst +0 -0
  49. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/index.rst +0 -0
  50. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/introduction.rst +0 -0
  51. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/monomer.rst +0 -0
  52. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/STY.png +0 -0
  53. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png +0 -0
  54. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/buildtraces.png +0 -0
  55. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png +0 -0
  56. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/densification-density.png +0 -0
  57. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png +0 -0
  58. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/reaction_network.png +0 -0
  59. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-coloring.tcl +0 -0
  60. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png +0 -0
  61. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-detail.png +0 -0
  62. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png +0 -0
  63. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/pics/styrene-polymerization.png +0 -0
  64. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/postsim.rst +0 -0
  65. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/reactions.rst +0 -0
  66. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/results.rst +0 -0
  67. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/1-polystyrene/run.rst +0 -0
  68. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/configuration.rst +0 -0
  69. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/index.rst +0 -0
  70. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/introduction.rst +0 -0
  71. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/BPA.png +0 -0
  72. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/GMA.png +0 -0
  73. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/HIE.png +0 -0
  74. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/buildtraces.png +0 -0
  75. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/cure_info.png +0 -0
  76. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/densification-density.png +0 -0
  77. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.eps +0 -0
  78. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.fig +0 -0
  79. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.png +0 -0
  80. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-coloring.tcl +0 -0
  81. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-cured.png +0 -0
  82. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-detail.png +0 -0
  83. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-liq.png +0 -0
  84. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/p1-traces.png +0 -0
  85. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/reaction_network.png +0 -0
  86. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.eps +0 -0
  87. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.fig +0 -0
  88. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.png +0 -0
  89. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/postsim.rst +0 -0
  90. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/reactions.rst +0 -0
  91. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/results.rst +0 -0
  92. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/run.rst +0 -0
  93. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/configuration.rst +0 -0
  94. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/index.rst +0 -0
  95. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/introduction.rst +0 -0
  96. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/monomers.rst +0 -0
  97. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-epoxy.png +0 -0
  98. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-labelled.png +0 -0
  99. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-2d.png +0 -0
  100. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-labelled.png +0 -0
  101. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/buildtraces.png +0 -0
  102. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/cure_info.png +0 -0
  103. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/densification-density.png +0 -0
  104. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-coloring.tcl +0 -0
  105. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-cured.png +0 -0
  106. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-detail.png +0 -0
  107. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-liq.png +0 -0
  108. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.eps +0 -0
  109. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.fig +0 -0
  110. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.png +0 -0
  111. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/equil-rho_v_ns.png +0 -0
  112. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/postsim-typical.png +0 -0
  113. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-e.png +0 -0
  114. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-equil-rho_v_ns.png +0 -0
  115. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-rho_v_ns.png +0 -0
  116. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-tg.png +0 -0
  117. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r1.png +0 -0
  118. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r2.png +0 -0
  119. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r3.png +0 -0
  120. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/reaction_network.png +0 -0
  121. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/rho_v_ns.png +0 -0
  122. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-e.png +0 -0
  123. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-tg.png +0 -0
  124. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/postsim.rst +0 -0
  125. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/reactions.rst +0 -0
  126. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/results.rst +0 -0
  127. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/run.rst +0 -0
  128. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/configuration.rst +0 -0
  129. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/index.rst +0 -0
  130. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/introduction.rst +0 -0
  131. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/monomers.rst +0 -0
  132. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/buildtraces.png +0 -0
  133. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/cure_info.png +0 -0
  134. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/densification-density.png +0 -0
  135. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-coloring.tcl +0 -0
  136. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-cured.png +0 -0
  137. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-detail.png +0 -0
  138. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-liq.png +0 -0
  139. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/reaction_network.png +0 -0
  140. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/postsim.rst +0 -0
  141. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/reactions.rst +0 -0
  142. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/results.rst +0 -0
  143. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/run.rst +0 -0
  144. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/configuration.rst +0 -0
  145. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/index.rst +0 -0
  146. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/introduction.rst +0 -0
  147. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/monomers.rst +0 -0
  148. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/buildtraces.png +0 -0
  149. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/cure_info.png +0 -0
  150. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/densification-density.png +0 -0
  151. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-coloring.tcl +0 -0
  152. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-cured.png +0 -0
  153. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-detail.png +0 -0
  154. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-liq.png +0 -0
  155. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/pics/reaction_network.png +0 -0
  156. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/postsim.rst +0 -0
  157. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/reactions.rst +0 -0
  158. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/results.rst +0 -0
  159. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/5-htpb-ipdi/run.rst +0 -0
  160. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/configuration.rst +0 -0
  161. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/index.rst +0 -0
  162. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/introduction.rst +0 -0
  163. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/monomers.rst +0 -0
  164. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-coloring.tcl +0 -0
  165. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-cured.png +0 -0
  166. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-detail.png +0 -0
  167. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-liq.png +0 -0
  168. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/pics/buildtraces.png +0 -0
  169. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/pics/cure_info.png +0 -0
  170. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/pics/densification-density.png +0 -0
  171. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/pics/reaction_network.png +0 -0
  172. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/postsim.rst +0 -0
  173. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/reactions.rst +0 -0
  174. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/6-cyanate-ester/run.rst +0 -0
  175. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/example-tutorials/index.rst +0 -0
  176. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/htpolynetpackage.rst +0 -0
  177. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/index.rst +0 -0
  178. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/install.rst +0 -0
  179. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/references/index.rst +0 -0
  180. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/references/mol2-reference.pdf +0 -0
  181. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/references.bib +0 -0
  182. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/release-history.rst +0 -0
  183. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/CURE.odg +0 -0
  184. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/bond_filter.odg +0 -0
  185. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/building-a-system.rst +0 -0
  186. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/configs/configs-for-analyze.rst +0 -0
  187. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/configs/configs-for-postsim.rst +0 -0
  188. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/configuration-files.rst +0 -0
  189. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/container-usage.rst +0 -0
  190. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/flow1.odg +0 -0
  191. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/flow1yaml.odg +0 -0
  192. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/hydrogenated.eps +0 -0
  193. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/hydrogenated.fig +0 -0
  194. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/index.rst +0 -0
  195. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/molecular-structure-inputs.rst +0 -0
  196. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/pics/STY.png +0 -0
  197. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/pics/STYCC.png +0 -0
  198. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/pics/TypicalUsageFlow.png +0 -0
  199. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/pics/bond_filter.png +0 -0
  200. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/pics/chemdoodle-2dsketcher-emb.png +0 -0
  201. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/pics/chemdoodle-2dsketcher-styrene.png +0 -0
  202. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/pics/hydrogenated.png +0 -0
  203. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/pics/ring_pierce/ring_pierce_cases.png +0 -0
  204. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/pics/ring_pierce/ring_pierce_linkcell.png +0 -0
  205. {htpolynet-2.6.1 → htpolynet-2.7.0}/docs/source/user-guide/usage.rst +0 -0
  206. {htpolynet-2.6.1 → htpolynet-2.7.0}/scripts/check-conda-sync.py +0 -0
  207. {htpolynet-2.6.1 → htpolynet-2.7.0}/scripts/release.sh +0 -0
  208. {htpolynet-2.6.1 → htpolynet-2.7.0}/scripts/render-detail.sh +0 -0
  209. {htpolynet-2.6.1 → htpolynet-2.7.0}/scripts/render-detail.tcl +0 -0
  210. {htpolynet-2.6.1 → htpolynet-2.7.0}/scripts/render-snapshot.sh +0 -0
  211. {htpolynet-2.6.1 → htpolynet-2.7.0}/scripts/run_all_examples.sh +0 -0
  212. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/__init__.py +0 -0
  213. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/analysis/__init__.py +0 -0
  214. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/analysis/analyze.py +0 -0
  215. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/analysis/plot.py +0 -0
  216. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/analysis/postsim.py +0 -0
  217. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/analysis/utils.py +0 -0
  218. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/cli.py +0 -0
  219. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/core/__init__.py +0 -0
  220. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/core/bondtemplate.py +0 -0
  221. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/core/configuration.py +0 -0
  222. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/core/coordinates.py +0 -0
  223. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/core/molecule.py +0 -0
  224. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/core/paramcache.py +0 -0
  225. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/core/projectfilesystem.py +0 -0
  226. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/core/runtime.py +0 -0
  227. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/core/topocoord.py +0 -0
  228. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/core/topology.py +0 -0
  229. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/cure/__init__.py +0 -0
  230. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/cure/chain.py +0 -0
  231. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/cure/expandreactions.py +0 -0
  232. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/cure/reaction.py +0 -0
  233. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/external/__init__.py +0 -0
  234. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/external/ambertools.py +0 -0
  235. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/external/command.py +0 -0
  236. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/external/gromacs.py +0 -0
  237. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/external/slurm.py +0 -0
  238. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/external/smiles_input.py +0 -0
  239. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/external/software.py +0 -0
  240. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/geometry/__init__.py +0 -0
  241. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/geometry/bondlist.py +0 -0
  242. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/geometry/lattice.py +0 -0
  243. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/geometry/linkcell.py +0 -0
  244. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/geometry/matrix4.py +0 -0
  245. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/geometry/ring.py +0 -0
  246. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/io/__init__.py +0 -0
  247. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/io/gro.py +0 -0
  248. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/io/mol2.py +0 -0
  249. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/io/pdb.py +0 -0
  250. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/repair/__init__.py +0 -0
  251. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/repair/topology_surgery.py +0 -0
  252. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/README.md +0 -0
  253. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/__init__.py +0 -0
  254. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/claude/SKILL.md +0 -0
  255. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/example_depot/0-liquid-styrene.yaml +0 -0
  256. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/example_depot/1-polystyrene.yaml +0 -0
  257. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/example_depot/2-bisgma-styrene-thermoset.yaml +0 -0
  258. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/example_depot/3-pacm-dgeba-epoxy-thermoset.yaml +0 -0
  259. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/example_depot/4-dfda-fde-epoxy-thermoset.yaml +0 -0
  260. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/example_depot/5-htpb-ipdi.yaml +0 -0
  261. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/example_depot/6-cyanate-ester.yaml +0 -0
  262. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/README.md +0 -0
  263. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/drag-min.mdp +0 -0
  264. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/drag-npt.mdp +0 -0
  265. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/drag-nvt.mdp +0 -0
  266. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/min.mdp +0 -0
  267. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/relax-min.mdp +0 -0
  268. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/relax-npt.mdp +0 -0
  269. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/relax-nvt.mdp +0 -0
  270. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/single-molecule-min.mdp +0 -0
  271. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/mdp/single-molecule-nvt.mdp +0 -0
  272. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/inputs/DFA.pdb +0 -0
  273. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/inputs/DGE.mol2 +0 -0
  274. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/inputs/EMB.mol2 +0 -0
  275. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/inputs/FDE.pdb +0 -0
  276. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/inputs/GMA.mol2 +0 -0
  277. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/inputs/PAC.mol2 +0 -0
  278. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/inputs/STY.mol2 +0 -0
  279. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/make-monomers.sh +0 -0
  280. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/pics/DFA.png +0 -0
  281. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/pics/DGE.png +0 -0
  282. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/pics/EMB.png +0 -0
  283. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/pics/FDE.png +0 -0
  284. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/pics/GMA.png +0 -0
  285. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/pics/PAC.png +0 -0
  286. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/pics/STY.png +0 -0
  287. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/sample-inputs/DFA.pdb +0 -0
  288. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/sample-inputs/DGE.mol2 +0 -0
  289. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/sample-inputs/EMB.mol2 +0 -0
  290. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/sample-inputs/FDE.pdb +0 -0
  291. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/sample-inputs/GMA.mol2 +0 -0
  292. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/sample-inputs/PAC.mol2 +0 -0
  293. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/molecules/sample-inputs/STY.mol2 +0 -0
  294. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/tcl/readbonds.tcl +0 -0
  295. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/tcl/readgrx.tcl +0 -0
  296. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/resources/tcl/render.tcl +0 -0
  297. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/utils/__init__.py +0 -0
  298. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/utils/banner.py +0 -0
  299. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/utils/checkpoint.py +0 -0
  300. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/utils/dataframetools.py +0 -0
  301. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/utils/inputcheck.py +0 -0
  302. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/utils/logsetup.py +0 -0
  303. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/utils/profiling.py +0 -0
  304. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/utils/stringthings.py +0 -0
  305. {htpolynet-2.6.1 → htpolynet-2.7.0}/src/htpolynet/utils/vmd_viz.py +0 -0
  306. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/__init__.py +0 -0
  307. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/conftest.py +0 -0
  308. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/__init__.py +0 -0
  309. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/fixtures/config1.gro +0 -0
  310. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/fixtures/config1.top +0 -0
  311. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/fixtures/config2.gro +0 -0
  312. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/fixtures/config2.top +0 -0
  313. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/fixtures/items31.edr +0 -0
  314. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/fixtures/items43.edr +0 -0
  315. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/fixtures/items45.edr +0 -0
  316. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/fixtures/short.mdp +0 -0
  317. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_bondtemplate.py +0 -0
  318. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_cap_placement.py +0 -0
  319. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_chain.py +0 -0
  320. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_configuration.py +0 -0
  321. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_dataframetools.py +0 -0
  322. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_gpu_usability.py +0 -0
  323. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_gromacs_get_energy_menu.py +0 -0
  324. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_gromacs_gmx_energy_trace.py +0 -0
  325. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_inputcheck.py +0 -0
  326. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_linkcell_pierce.py +0 -0
  327. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_paramcache.py +0 -0
  328. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_paramcache_ambertools.py +0 -0
  329. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_parameterize_react.py +0 -0
  330. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_plot_smoke.py +0 -0
  331. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_projectfilesystem.py +0 -0
  332. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_resources.py +0 -0
  333. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_ring.py +0 -0
  334. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_ring_pierce_figs.py +0 -0
  335. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_setup_claude.py +0 -0
  336. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_slurm_script.py +0 -0
  337. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_smiles_input.py +0 -0
  338. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_software_provenance.py +0 -0
  339. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_topology/test.top +0 -0
  340. {htpolynet-2.6.1 → htpolynet-2.7.0}/tests/unit/test_topology.py +0 -0
@@ -7,6 +7,214 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.7.0] - 2026-09-08
11
+
12
+ ### Changed
13
+
14
+ - **The per-iteration equilibration now constrains hydrogen bonds only, not
15
+ all bonds.** The packaged `npt.mdp` and `nvt.mdp` paired `dt = 0.002` with
16
+ `constraints = all-bonds` and set no `lincs_order`, so GROMACS used its
17
+ default LINCS accuracy (order 4). That is marginal whenever heavy-atom
18
+ bonds are constrained, and for a halogenated monomer it was fatal: a
19
+ fluorinated bisphenol died at `4-cure_equilibrate-npt` in **7 of 7** build
20
+ attempts, at cure iteration 5-7 of ~10, with exit codes 1 and 139. `LINCS`
21
+ appeared 14 times in that bridge's `diagnostics.log` and **zero** times in
22
+ each of seven other bridges built identically -- a perfect discriminator
23
+ across eight chemistries. In a melt of pristine, uncrosslinked monomers at
24
+ production density, with no cure at all, step-0 pressure was -1.34e5 bar;
25
+ `h-bonds` took it to -495 bar and the LINCS constraint rmsd from 4.5e-4 to
26
+ 7.3e-7. With the new settings the whole eight-bridge series rebuilt **32 of
27
+ 32**, the fluorinated one reaching a bond conversion of 0.900 in all four
28
+ replicates. `h-bonds` is also the conventional pairing with a 2 fs
29
+ timestep.
30
+
31
+ **This changes the sampled ensemble**, so structures and densities from
32
+ earlier versions are not strictly comparable with new ones, and because
33
+ `postsim` inherits `npt.mdp` it changes the production measurement too, not
34
+ just the cure. The drag and relax ladders are unaffected -- they always ran
35
+ unconstrained at 1 fs.
36
+
37
+ - **`lincs_order = 8` in the packaged `npt.mdp` and `nvt.mdp`.** Independent
38
+ of the constraint change: it improves the accuracy of the constraint solve
39
+ without changing which bonds are constrained, so it does not itself alter
40
+ the ensemble. On the diagnostic melt above, order 8 alone reduced the
41
+ pressure artifact 4.8-fold.
42
+
43
+ ### Added
44
+
45
+ - **The CURE relax stages now report the density they produce.** The relax
46
+ ladder is the only above-`Tg` constant-pressure time in a cure -- roughly
47
+ 120 ps of it, at the defaults -- and nothing looked at the density it
48
+ produced: `_do_relax` delegates to `_distance_attenuation`, which never
49
+ calls `TopoCoord.equilibrate()`, the only method that traced Density. The
50
+ per-stage relax table gains a `Density (kg/m3)` column, read from the NPT
51
+ `.edr` each stage already wrote. Drag is deliberately excluded, since it
52
+ runs under restraints and its density is not comparable.
53
+
54
+ - **The CURE relax stages now report reactive-species mobility (Varshney's
55
+ criterion).** After each relax ladder, htpolynet reports the rmsd
56
+ displacement of atoms that still carry an unused reactive site, and what
57
+ fraction of them moved at least one `CURE.controls.search_radius` during
58
+ the window. Varshney sized the original 40 ps relaxation window on exactly
59
+ this requirement -- that unreacted species diffuse far enough between
60
+ reactions to find new partners -- but the requirement decays over a cure as
61
+ those species are bonded into the growing network, and until now nothing
62
+ reported when a window had stopped satisfying it. A build where fewer than
63
+ 25 % of still-reactive atoms cross a search radius now says so, because its
64
+ later bonds are being chosen from a nearly frozen neighborhood.
65
+
66
+ Both reports are pure observation: they change no simulation input and
67
+ gate nothing. Every failure path is swallowed and logged at debug level,
68
+ so instrumentation cannot fail a build. A run resuming mid-ladder skips
69
+ the mobility report rather than measuring only the tail of its window.
70
+
71
+ - **`repair-summary.yaml` now reports the pre-repair bond histogram.** A new
72
+ `prerepair_bond_counts` key gives how many crosslinkers carried 0, 1, ... up
73
+ to `full_bond_count` bonds *before* repair dismantled any of them. Repair
74
+ rewrites the topology and the final structure does not record which cap came
75
+ from which ring, so this distribution was previously unrecoverable after the
76
+ fact -- only `n_complete`, its top bin, survived. It is the statistic that
77
+ makes the independence assumption behind "crosslinker conversion = bond
78
+ conversion cubed" directly testable, and that relationship is now known to
79
+ be wrong in a way that matters: audited against 54 builds, the effective
80
+ exponent runs about 3.5 near a bond conversion of 0.55, 3.0 near 0.73 and
81
+ 2.6-2.7 near 0.90, so the deviation from the cube changes sign and no single
82
+ power law fits. The histogram is zero-filled, so the shape of the summary
83
+ does not depend on the box, and it is cross-checked against the completion
84
+ count on every build -- the two are computed independently, and a
85
+ disagreement now warns.
86
+
87
+ ### Documentation
88
+
89
+ - **The constraint trap is documented where someone hitting it will look.**
90
+ The failure above surfaces at the equilibration step immediately after the
91
+ relax ladder, so the natural diagnosis is that the relax schedule is too
92
+ coarse. It is not: the drag and relax ladders run unconstrained at a 1 fs
93
+ timestep and cannot be responsible, and refining them makes matters worse --
94
+ a three-variant array (increment 0.08 to 0.04 to 0.02, plus a double-MD arm)
95
+ confirmed that, with quadrupling the stage count degrading the result. The
96
+ CURE section of the program-flow page now says which stages are constrained
97
+ and which are not, and says to look at the constraints rather than the
98
+ ladder when LINCS warnings appear at `cure_equilibrate`.
99
+
100
+ - **Four defaults in the `CURE.controls` table were wrong.** The table and
101
+ `curedict_defaults` had drifted apart: `radial_increment` is 0.05 and was
102
+ documented as 0.25, `max_iterations` is 100 and was documented as 150,
103
+ `desired_conversion` is 0.5 and was documented as 0.95, and
104
+ `min_allowable_bondcycle_length` is -1 rather than 0 (any value <= 0
105
+ disallows all cycles, so the documented *behavior* was right and only the
106
+ literal was wrong). `desired_conversion` is the costly one: a user who
107
+ read "default 0.95" and omitted the key got a half-cure. Every shipped
108
+ example that cures sets it explicitly, which is why nothing caught this.
109
+
110
+ - **`desired_conversion` now says which conversion it means.** The
111
+ `CURE.controls` table described it as "target conversion", which every
112
+ reader takes to be the crosslinker conversion an experiment measures. It
113
+ is the *bond* conversion -- bonds formed over bonds possible -- and the
114
+ crosslinker conversion is lower: at a nominal 90 % cure, an audit of 30
115
+ builds found 75.2 triazines complete per 100, not 90. The row now says
116
+ so and links to the fuller explanation under postcure repair.
117
+
118
+ ## [2.6.2] - 2026-08-31
119
+
120
+ ### Fixed
121
+
122
+ - **The too-few-iterations warning was silent on the failure it exists to
123
+ catch.** `check_iterations_vs_functionality` returned early whenever the
124
+ cure ran at least `f` iterations, so it fired only for the counting
125
+ impossibility `n < f`. But `n >= f` only makes completion *possible*. The
126
+ bonds a cure forms are not spread evenly across its iterations -- the
127
+ per-iteration count decays steeply, and it is the last iteration that has to
128
+ supply each crosslinker its final bond -- so a cure that runs exactly `f`
129
+ iterations and spends its last one on almost nothing arrives at the same
130
+ place as one that ran too few. A build did exactly that: three iterations
131
+ against a functionality of three, target bond conversion reached, last
132
+ iteration spent on 9 bonds, and **one complete crosslinker out of 240**,
133
+ with nothing in the log about it. The system it wrote is a monomer melt
134
+ that equilibrates and reports a sensible density.
135
+
136
+ The check now tests the outcome rather than the precondition, which needs no
137
+ new measurement: by the time it runs, how many crosslinkers reacted at all
138
+ of their sites is exactly known. It logs that count on every cure and warns
139
+ when the fraction falls below the crosslinker conversion an ideal randomly
140
+ branching network of the same functionality would show at its gel point --
141
+ 12.5 % for a trifunctional crosslinker. That figure is an idealization and
142
+ is used only to decide when to raise the volume; the count itself is exact
143
+ and is reported either way. The `n < f` case keeps its own message, because
144
+ there the cause is known exactly and worth naming.
145
+
146
+ The regression test suite had the bug written into it: a test asserted that
147
+ a run at exactly `f` iterations with no complete crosslinkers stays silent.
148
+
149
+ ### Changed
150
+
151
+ - **`min_clearance_nm` is documented as a placement outcome, not a tail
152
+ statistic.** 2.6.1's docs said `min_clearance_nm` and `n_below_target` were
153
+ the tail and were what `cap_min_clearance` should be calibrated against.
154
+ The first half is wrong for the same reason the median was: the direction
155
+ search exits at the first direction reaching the target, so whenever it
156
+ succeeds for every cap the worst-placed cap is one that only just cleared,
157
+ and the reported minimum is pinned to the threshold by construction. Across
158
+ 14 independent real boxes it came in at 0.1503 +/- 0.0006 nm against a
159
+ 0.150 nm target, and the single box that fell below it was the single box
160
+ with a non-zero `n_below_target`. The minimum therefore carries nothing
161
+ `n_below_target` does not already say. `blind_min_clearance_nm`, which
162
+ ranged 0.006-0.048 nm over the same boxes, is the real tail statistic, and
163
+ the `blind_*` fields are what to calibrate the target against.
164
+
165
+ - **The cube law is documented as an estimate over a measured band, not as a
166
+ floor.** The docs said crosslinker conversion sits at or above the cube of
167
+ bond conversion in the many-iteration limit. It does not, and the band over
168
+ which the cube is even a good estimate is narrower than that claim implied.
169
+
170
+ *Where it holds*: across 14 trifunctional runs at 1.7-2.7 `f` iterations and
171
+ bond conversions of 0.74-0.90, the crosslinker conversion sits +2.0 % from
172
+ the cube with a standard deviation of 2.9 %, and 3 of the 14 land *below*
173
+ it, to -3.7 %, against a replicate scatter of 0.8-1.8 % -- so the excursions
174
+ below are real and it is a two-sided estimate, good to about 3 %.
175
+
176
+ *Below that band*: on 12 further builds at bond conversions of 0.40-0.73 it
177
+ is neither mild nor two-sided. 11 of the 12 fall below the cube, by -19.9 %
178
+ on average, worsening monotonically as the bond conversion falls and
179
+ reaching -93.6 % at 0.40. Carrying +/- 3 % down to a bond conversion of 0.5
180
+ understates the error by an order of magnitude, in a predictable direction.
181
+
182
+ *Above it*: the four runs of the nine-iteration cohort all landed +0.6 % to
183
+ +3.5 % above the cube, which reads like a bound but cannot establish one --
184
+ four points cannot separate a bound from the upper tail of a two-sided
185
+ distribution, and the scatter measured at 1.7-2.7 `f` cannot be carried to
186
+ 3 `f` when regime dependence is exactly what is at issue. The docs say 3 `f`
187
+ is untested rather than either way.
188
+
189
+ *What sets the shortfall*: not the iteration count. Four runs that each took
190
+ exactly three iterations span 15x in ratio-to-cube (0.06, 0.63, 0.80, 0.94).
191
+ It is how the bonds were distributed across those iterations, and
192
+ specifically how many the last one formed, since that is the iteration which
193
+ has to supply each crosslinker its final bond -- per-iteration bond counts
194
+ decay steeply, so the average is not the operative number. The run at 0.06
195
+ spent its last iteration on 9 bonds against an average of 96; a run at the
196
+ same bond conversion five months earlier, under an older htpolynet, spent its
197
+ own last iteration on 10 and reached the same ratio to three digits.
198
+
199
+ *Which variable to read it against*: bond conversion, because that is what
200
+ the shortfall tracks -- r = +0.81, against +0.57 for the iteration count,
201
+ over 26 runs. The docs are explicit that this is not the mechanism. Within
202
+ a fixed iteration count the *average* bonds formed per iteration is exactly
203
+ proportional to the bond conversion, so no set of runs sharing an iteration
204
+ count can distinguish those two, and none here does.
205
+
206
+ - **The placement documentation now quotes real-box numbers instead of
207
+ synthetic ones.** `cap_min_clearance`'s "demanding default" was described
208
+ from a synthetic sweep that put the blind median at 0.143 nm and had about
209
+ half of caps needing a search. On real cured boxes at the same heavy-atom
210
+ density the blind median is 0.120 nm -- ~16 % tighter, in the direction the
211
+ sweep's own caveat predicted -- so the search runs for well over half of all
212
+ caps and 37 % of them would have been placed inside 0.10 nm blind. It
213
+ nonetheless reaches the target for all but 1 cap in 1955, so the default is
214
+ demanding and reachable at once. `n_preferred_out_of_angle` came in at 6 %,
215
+ which the docs now give as the scale for reading that field: the 90-150
216
+ degree window is not what is sending caps to the search.
217
+
10
218
  ## [2.6.1] - 2026-08-27
11
219
 
12
220
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: htpolynet
3
- Version: 2.6.1
3
+ Version: 2.7.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/