htpolynet 2.10.2__tar.gz → 2.10.3__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 (358) hide show
  1. {htpolynet-2.10.2 → htpolynet-2.10.3}/CHANGELOG.md +35 -12
  2. {htpolynet-2.10.2 → htpolynet-2.10.3}/PKG-INFO +1 -1
  3. {htpolynet-2.10.2 → htpolynet-2.10.3}/docker/Dockerfile +16 -2
  4. {htpolynet-2.10.2 → htpolynet-2.10.3}/pyproject.toml +1 -1
  5. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/paramcache.py +32 -1
  6. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_paramcache.py +36 -2
  7. {htpolynet-2.10.2 → htpolynet-2.10.3}/.claude/settings.json +0 -0
  8. {htpolynet-2.10.2 → htpolynet-2.10.3}/.claude/skills/htpolynet/SKILL.md +0 -0
  9. {htpolynet-2.10.2 → htpolynet-2.10.3}/.envrc +0 -0
  10. {htpolynet-2.10.2 → htpolynet-2.10.3}/.github/workflows/conda-forge-sync.yml +0 -0
  11. {htpolynet-2.10.2 → htpolynet-2.10.3}/.github/workflows/docker.yml +0 -0
  12. {htpolynet-2.10.2 → htpolynet-2.10.3}/.github/workflows/docs.yml +0 -0
  13. {htpolynet-2.10.2 → htpolynet-2.10.3}/.github/workflows/release.yaml +0 -0
  14. {htpolynet-2.10.2 → htpolynet-2.10.3}/.github/workflows/test.yml +0 -0
  15. {htpolynet-2.10.2 → htpolynet-2.10.3}/.gitignore +0 -0
  16. {htpolynet-2.10.2 → htpolynet-2.10.3}/.readthedocs.yaml +0 -0
  17. {htpolynet-2.10.2 → htpolynet-2.10.3}/CITATION.cff +0 -0
  18. {htpolynet-2.10.2 → htpolynet-2.10.3}/CLAUDE.md +0 -0
  19. {htpolynet-2.10.2 → htpolynet-2.10.3}/LICENSE +0 -0
  20. {htpolynet-2.10.2 → htpolynet-2.10.3}/MANIFEST.in +0 -0
  21. {htpolynet-2.10.2 → htpolynet-2.10.3}/README.md +0 -0
  22. {htpolynet-2.10.2 → htpolynet-2.10.3}/ROADMAP.md +0 -0
  23. {htpolynet-2.10.2 → htpolynet-2.10.3}/docker/compose.yml +0 -0
  24. {htpolynet-2.10.2 → htpolynet-2.10.3}/docker/docker-entrypoint.sh +0 -0
  25. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/Makefile +0 -0
  26. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/README.rst +0 -0
  27. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/make.bat +0 -0
  28. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/requirements.txt +0 -0
  29. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/_static/.gitkeep +0 -0
  30. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/_static/htpolynet-favicon.ico +0 -0
  31. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/_static/htpolynet-landing.jpg +0 -0
  32. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/_static/htpolynet-logo-dark.png +0 -0
  33. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/_static/htpolynet-logo-light.png +0 -0
  34. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/changelog.rst +0 -0
  35. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/conf.py +0 -0
  36. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/configuration.rst +0 -0
  37. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/index.rst +0 -0
  38. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/introduction.rst +0 -0
  39. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst +0 -0
  40. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst +0 -0
  41. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/results.rst +0 -0
  42. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/0-liquid-styrene/run.rst +0 -0
  43. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/configuration.rst +0 -0
  44. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/index.rst +0 -0
  45. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/introduction.rst +0 -0
  46. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/monomer.rst +0 -0
  47. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/STY.png +0 -0
  48. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png +0 -0
  49. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/buildtraces.png +0 -0
  50. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png +0 -0
  51. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/densification-density.png +0 -0
  52. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png +0 -0
  53. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/reaction_network.png +0 -0
  54. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/sty-coloring.tcl +0 -0
  55. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png +0 -0
  56. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/sty-detail.png +0 -0
  57. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png +0 -0
  58. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/pics/styrene-polymerization.png +0 -0
  59. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/postsim.rst +0 -0
  60. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/reactions.rst +0 -0
  61. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/results.rst +0 -0
  62. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/1-polystyrene/run.rst +0 -0
  63. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/configuration.rst +0 -0
  64. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/index.rst +0 -0
  65. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/introduction.rst +0 -0
  66. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/BPA.png +0 -0
  67. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/GMA.png +0 -0
  68. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/HIE.png +0 -0
  69. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/buildtraces.png +0 -0
  70. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/cure_info.png +0 -0
  71. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/densification-density.png +0 -0
  72. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.eps +0 -0
  73. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.fig +0 -0
  74. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.png +0 -0
  75. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-coloring.tcl +0 -0
  76. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-cured.png +0 -0
  77. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-detail.png +0 -0
  78. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-liq.png +0 -0
  79. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/p1-traces.png +0 -0
  80. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/reaction_network.png +0 -0
  81. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.eps +0 -0
  82. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.fig +0 -0
  83. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.png +0 -0
  84. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/postsim.rst +0 -0
  85. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/reactions.rst +0 -0
  86. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/results.rst +0 -0
  87. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/run.rst +0 -0
  88. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/configuration.rst +0 -0
  89. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/index.rst +0 -0
  90. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/introduction.rst +0 -0
  91. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/monomers.rst +0 -0
  92. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-epoxy.png +0 -0
  93. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-labelled.png +0 -0
  94. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-2d.png +0 -0
  95. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-labelled.png +0 -0
  96. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/buildtraces.png +0 -0
  97. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/cure_info.png +0 -0
  98. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/densification-density.png +0 -0
  99. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-coloring.tcl +0 -0
  100. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-cured.png +0 -0
  101. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-detail.png +0 -0
  102. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-liq.png +0 -0
  103. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.eps +0 -0
  104. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.fig +0 -0
  105. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.png +0 -0
  106. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/equil-rho_v_ns.png +0 -0
  107. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/postsim-typical.png +0 -0
  108. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-e.png +0 -0
  109. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-equil-rho_v_ns.png +0 -0
  110. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-rho_v_ns.png +0 -0
  111. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-tg.png +0 -0
  112. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r1.png +0 -0
  113. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r2.png +0 -0
  114. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r3.png +0 -0
  115. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/reaction_network.png +0 -0
  116. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/rho_v_ns.png +0 -0
  117. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-e.png +0 -0
  118. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-tg.png +0 -0
  119. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/postsim.rst +0 -0
  120. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/reactions.rst +0 -0
  121. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/results.rst +0 -0
  122. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/run.rst +0 -0
  123. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/configuration.rst +0 -0
  124. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/index.rst +0 -0
  125. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/introduction.rst +0 -0
  126. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/monomers.rst +0 -0
  127. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/buildtraces.png +0 -0
  128. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/cure_info.png +0 -0
  129. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/densification-density.png +0 -0
  130. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-coloring.tcl +0 -0
  131. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-cured.png +0 -0
  132. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-detail.png +0 -0
  133. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-liq.png +0 -0
  134. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/reaction_network.png +0 -0
  135. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/postsim.rst +0 -0
  136. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/reactions.rst +0 -0
  137. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/results.rst +0 -0
  138. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/run.rst +0 -0
  139. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/configuration.rst +0 -0
  140. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/index.rst +0 -0
  141. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/introduction.rst +0 -0
  142. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/monomers.rst +0 -0
  143. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/buildtraces.png +0 -0
  144. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/cure_info.png +0 -0
  145. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/densification-density.png +0 -0
  146. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-coloring.tcl +0 -0
  147. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-cured.png +0 -0
  148. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-detail.png +0 -0
  149. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-liq.png +0 -0
  150. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/pics/reaction_network.png +0 -0
  151. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/postsim.rst +0 -0
  152. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/reactions.rst +0 -0
  153. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/results.rst +0 -0
  154. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/5-htpb-ipdi/run.rst +0 -0
  155. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/configuration.rst +0 -0
  156. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/index.rst +0 -0
  157. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/introduction.rst +0 -0
  158. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/monomers.rst +0 -0
  159. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-coloring.tcl +0 -0
  160. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-cured.png +0 -0
  161. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-detail.png +0 -0
  162. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-liq.png +0 -0
  163. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/buildtraces.png +0 -0
  164. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/cure_info.png +0 -0
  165. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/densification-density.png +0 -0
  166. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/pics/reaction_network.png +0 -0
  167. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/postsim.rst +0 -0
  168. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/reactions.rst +0 -0
  169. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/results.rst +0 -0
  170. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/6-cyanate-ester/run.rst +0 -0
  171. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/example-tutorials/index.rst +0 -0
  172. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/htpolynetpackage.rst +0 -0
  173. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/index.rst +0 -0
  174. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/install.rst +0 -0
  175. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/references/index.rst +0 -0
  176. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/references/mol2-reference.pdf +0 -0
  177. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/references.bib +0 -0
  178. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/CURE.odg +0 -0
  179. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/bond_filter.odg +0 -0
  180. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/building-a-system.rst +0 -0
  181. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/configs/configs-for-analyze.rst +0 -0
  182. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/configs/configs-for-postsim.rst +0 -0
  183. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/configs/configs-for-run.rst +0 -0
  184. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/configuration-files.rst +0 -0
  185. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/container-usage.rst +0 -0
  186. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/flow1.odg +0 -0
  187. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/flow1yaml.odg +0 -0
  188. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/hydrogenated.eps +0 -0
  189. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/hydrogenated.fig +0 -0
  190. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/index.rst +0 -0
  191. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/molecular-structure-inputs.rst +0 -0
  192. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/periodic-networks.rst +0 -0
  193. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/STY.png +0 -0
  194. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/STYCC.png +0 -0
  195. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/TypicalUsageFlow.png +0 -0
  196. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/bond_filter.png +0 -0
  197. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/chemdoodle-2dsketcher-emb.png +0 -0
  198. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/chemdoodle-2dsketcher-styrene.png +0 -0
  199. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/hydrogenated.png +0 -0
  200. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/ring_pierce/ring_pierce_cases.png +0 -0
  201. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/pics/ring_pierce/ring_pierce_linkcell.png +0 -0
  202. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/postcure-repair.rst +0 -0
  203. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/program-flow.rst +0 -0
  204. {htpolynet-2.10.2 → htpolynet-2.10.3}/docs/source/user-guide/usage.rst +0 -0
  205. {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/check-conda-sync.py +0 -0
  206. {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/release.sh +0 -0
  207. {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/render-detail.sh +0 -0
  208. {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/render-detail.tcl +0 -0
  209. {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/render-snapshot.sh +0 -0
  210. {htpolynet-2.10.2 → htpolynet-2.10.3}/scripts/run_all_examples.sh +0 -0
  211. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/__init__.py +0 -0
  212. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/analysis/__init__.py +0 -0
  213. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/analysis/analyze.py +0 -0
  214. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/analysis/plot.py +0 -0
  215. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/analysis/postsim.py +0 -0
  216. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/analysis/utils.py +0 -0
  217. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cli.py +0 -0
  218. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/__init__.py +0 -0
  219. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/bondtemplate.py +0 -0
  220. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/configuration.py +0 -0
  221. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/coordinates.py +0 -0
  222. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/molecule.py +0 -0
  223. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/projectfilesystem.py +0 -0
  224. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/runtime.py +0 -0
  225. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/topocoord.py +0 -0
  226. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/core/topology.py +0 -0
  227. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cure/__init__.py +0 -0
  228. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cure/chain.py +0 -0
  229. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cure/curecontroller.py +0 -0
  230. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cure/expandreactions.py +0 -0
  231. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/cure/reaction.py +0 -0
  232. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/__init__.py +0 -0
  233. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/ambertools.py +0 -0
  234. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/command.py +0 -0
  235. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/gromacs.py +0 -0
  236. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/slurm.py +0 -0
  237. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/smiles_input.py +0 -0
  238. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/external/software.py +0 -0
  239. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/__init__.py +0 -0
  240. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/bondlist.py +0 -0
  241. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/lattice.py +0 -0
  242. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/linkcell.py +0 -0
  243. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/matrix4.py +0 -0
  244. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/geometry/ring.py +0 -0
  245. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/io/__init__.py +0 -0
  246. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/io/gro.py +0 -0
  247. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/io/mol2.py +0 -0
  248. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/io/pdb.py +0 -0
  249. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/repair/__init__.py +0 -0
  250. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/repair/cyanate_cap.py +0 -0
  251. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/repair/topology_surgery.py +0 -0
  252. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/README.md +0 -0
  253. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/__init__.py +0 -0
  254. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/claude/SKILL.md +0 -0
  255. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/0-liquid-styrene.yaml +0 -0
  256. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/1-polystyrene.yaml +0 -0
  257. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/2-bisgma-styrene-thermoset.yaml +0 -0
  258. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/3-pacm-dgeba-epoxy-thermoset.yaml +0 -0
  259. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/4-dfda-fde-epoxy-thermoset.yaml +0 -0
  260. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/5-htpb-ipdi.yaml +0 -0
  261. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/example_depot/6-cyanate-ester.yaml +0 -0
  262. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/README.md +0 -0
  263. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/drag-min.mdp +0 -0
  264. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/drag-npt.mdp +0 -0
  265. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/drag-nvt.mdp +0 -0
  266. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/min.mdp +0 -0
  267. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/npt.mdp +0 -0
  268. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/nvt.mdp +0 -0
  269. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/relax-min.mdp +0 -0
  270. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/relax-npt.mdp +0 -0
  271. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/relax-nvt.mdp +0 -0
  272. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/single-molecule-min.mdp +0 -0
  273. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/mdp/single-molecule-nvt.mdp +0 -0
  274. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/DFA.pdb +0 -0
  275. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/DGE.mol2 +0 -0
  276. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/EMB.mol2 +0 -0
  277. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/FDE.pdb +0 -0
  278. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/GMA.mol2 +0 -0
  279. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/PAC.mol2 +0 -0
  280. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/inputs/STY.mol2 +0 -0
  281. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/make-monomers.sh +0 -0
  282. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/DFA.png +0 -0
  283. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/DGE.png +0 -0
  284. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/EMB.png +0 -0
  285. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/FDE.png +0 -0
  286. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/GMA.png +0 -0
  287. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/PAC.png +0 -0
  288. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/pics/STY.png +0 -0
  289. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/DFA.pdb +0 -0
  290. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/DGE.mol2 +0 -0
  291. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/EMB.mol2 +0 -0
  292. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/FDE.pdb +0 -0
  293. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/GMA.mol2 +0 -0
  294. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/PAC.mol2 +0 -0
  295. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/molecules/sample-inputs/STY.mol2 +0 -0
  296. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/tcl/readbonds.tcl +0 -0
  297. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/tcl/readgrx.tcl +0 -0
  298. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/resources/tcl/render.tcl +0 -0
  299. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/schema/base.yaml +0 -0
  300. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/__init__.py +0 -0
  301. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/banner.py +0 -0
  302. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/checkpoint.py +0 -0
  303. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/convergence.py +0 -0
  304. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/dataframetools.py +0 -0
  305. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/inputcheck.py +0 -0
  306. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/logsetup.py +0 -0
  307. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/profiling.py +0 -0
  308. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/stringthings.py +0 -0
  309. {htpolynet-2.10.2 → htpolynet-2.10.3}/src/htpolynet/utils/vmd_viz.py +0 -0
  310. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/__init__.py +0 -0
  311. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/conftest.py +0 -0
  312. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/__init__.py +0 -0
  313. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/config1.gro +0 -0
  314. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/config1.top +0 -0
  315. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/config2.gro +0 -0
  316. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/config2.top +0 -0
  317. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/items31.edr +0 -0
  318. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/items43.edr +0 -0
  319. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/items45.edr +0 -0
  320. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/fixtures/short.mdp +0 -0
  321. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_bondtemplate.py +0 -0
  322. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_cap_placement.py +0 -0
  323. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_chain.py +0 -0
  324. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_completion_bias.py +0 -0
  325. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_conda_sync.py +0 -0
  326. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_configuration.py +0 -0
  327. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_convergence.py +0 -0
  328. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_cure_site_functionality.py +0 -0
  329. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_dataframetools.py +0 -0
  330. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_density_gate.py +0 -0
  331. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_gpu_usability.py +0 -0
  332. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_gromacs_get_energy_menu.py +0 -0
  333. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_gromacs_gmx_energy_trace.py +0 -0
  334. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_inputcheck.py +0 -0
  335. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_linkcell_pierce.py +0 -0
  336. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_mdrun_gpu_options.py +0 -0
  337. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_mol2_bond_fallback.py +0 -0
  338. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_molecule_charge_report.py +0 -0
  339. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_moleculetype_name.py +0 -0
  340. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_paramcache_ambertools.py +0 -0
  341. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_parameterize_react.py +0 -0
  342. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_plot_smoke.py +0 -0
  343. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_projectfilesystem.py +0 -0
  344. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_relax_instrumentation.py +0 -0
  345. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_repair_charge_neutrality.py +0 -0
  346. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_repair_conversion.py +0 -0
  347. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_resources.py +0 -0
  348. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_ring.py +0 -0
  349. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_ring_pierce_figs.py +0 -0
  350. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_setup_claude.py +0 -0
  351. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_sibling_templates.py +0 -0
  352. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_slurm_script.py +0 -0
  353. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_smiles_input.py +0 -0
  354. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_software_provenance.py +0 -0
  355. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_topology/test.top +0 -0
  356. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_topology.py +0 -0
  357. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_transrot_turn_scan.py +0 -0
  358. {htpolynet-2.10.2 → htpolynet-2.10.3}/tests/unit/test_user_frcmod.py +0 -0
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.10.3] - 2026-09-17
11
+
12
+ ### Fixed
13
+
14
+ - **The CPU and CUDA container images shipped different AmberTools.** The
15
+ CUDA images, `:cuda-v2.10.0` through `:cuda-v2.10.2`, had AmberTools 24.8,
16
+ while the CPU images had 26.0. Nobody chose that: conda-forge can't install
17
+ AmberTools 26 alongside CUDA GROMACS, and the unpinned Dockerfile line fell
18
+ back silently. So the same configuration was parameterized by different
19
+ AmberTools releases depending on which image ran it. Both images now
20
+ install AmberTools in their own conda environment, pinned to one version
21
+ (26.0, set by the `AMBERTOOLS_VERSION` build argument). A future conflict
22
+ now fails the build instead of quietly downgrading.
23
+
24
+ - **A cached parameterization is no longer reused across AmberTools
25
+ versions.** The cache record now includes the AmberTools version, and a
26
+ run on a different version re-parameterizes instead of reusing the entry.
27
+ Records written before this, and runs that can't tell their version, still
28
+ match. A cache filled with a CUDA image up to v2.10.2 (AmberTools 24.8)
29
+ has no version in its records, so it would still be reused by a newer
30
+ image. Refill it if the charges must come from one AmberTools release.
31
+
10
32
  ## [2.10.2] - 2026-09-17
11
33
 
12
34
  ### Fixed
@@ -14,23 +36,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
14
36
  - **Templates for crowded monomers could start with atoms on top of each
15
37
  other, and AM1-BCC/ABCG2 charges then failed.** When htpolynet built a
16
38
  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
39
+ bond but never turned it about that bond. Its clash check also compared
40
+ the moved piece with its own pre-move position. With tetramethylbisphenol
41
+ F (TMB), whose methyls flank each reacting oxygen, every triazine template
20
42
  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.
43
+ substituted template, sqm (AmberTools 24.8, as shipped in the `:cuda`
44
+ image) then failed to converge ("Cannot properly run sqm"), which stopped
45
+ parameterization.
23
46
 
24
47
  The placement now scans turns about the new bond, in 10 degree steps, and
25
48
  keeps the one farthest from the residues that stay put. Every TMB template
26
49
  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.
50
+ were run with ABCG2 on that same AmberTools 24.8: five, including the
51
+ geometry that failed before, completed, and the sixth converged its SCF
52
+ and was still optimizing when this was written. On these crowded molecules
53
+ the optimization is slow, 40 minutes to 2.6 hours each, run three at a
54
+ time. Charges and atom types of all 123 templates in the shipped examples,
55
+ which use gas charges, are unchanged. A template that still starts with a
56
+ contact under 1 A is now logged as a warning.
34
57
 
35
58
  ## [2.10.1] - 2026-09-16
36
59
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: htpolynet
3
- Version: 2.10.2
3
+ Version: 2.10.3
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/
@@ -42,7 +42,7 @@ FROM condaforge/miniforge3:latest
42
42
  # Links the published GHCR package to its source repository.
43
43
  LABEL org.opencontainers.image.source="https://github.com/cameronabrams/htpolynet"
44
44
 
45
- # Install Gromacs and AmberTools (latest available on conda-forge).
45
+ # Install Gromacs (latest available on conda-forge); AmberTools follows below.
46
46
  # Miniforge ships with mamba for fast solves; conda-forge is the only
47
47
  # channel. No Anaconda Inc. ToS dependency.
48
48
  RUN apt-get update && apt-get install -y --no-install-recommends \
@@ -68,12 +68,26 @@ ARG CONDA_OVERRIDE_CUDA=
68
68
  # clean dies, taking the whole RUN with it. conda clean handles the same cache
69
69
  # correctly. Reproduced locally in both directions before changing this.
70
70
  RUN CONDA_OVERRIDE_CUDA="${CONDA_OVERRIDE_CUDA}" mamba install -y -n base -c conda-forge \
71
- ambertools \
72
71
  "gromacs${GROMACS_BUILD:+=*=${GROMACS_BUILD}*}" \
73
72
  parmed \
74
73
  rdkit \
75
74
  && conda clean -afy
76
75
 
76
+ # AmberTools lives in its own environment, pinned, in both images. Solved
77
+ # together with the CUDA Gromacs, conda-forge silently fell back to AmberTools
78
+ # 24.8 (the CUDA toolkit's nsight-compute needs an older krb5 than AmberTools
79
+ # 26 allows), so the CPU and CUDA images parameterized molecules with different
80
+ # AmberTools releases. A separate environment keeps the two solves apart, and
81
+ # the pin keeps the images identical and makes a future conflict a build error
82
+ # instead of a quiet downgrade. The environment is not activated: its
83
+ # wrappers (antechamber, tleap, parmchk2) set AMBERHOME from their own
84
+ # location, so putting its bin last on PATH is enough, and base's python and
85
+ # gmx still come first.
86
+ ARG AMBERTOOLS_VERSION=26.0
87
+ RUN mamba create -y -n amber -c conda-forge "ambertools=${AMBERTOOLS_VERSION}" \
88
+ && conda clean -afy
89
+ ENV PATH=${PATH}:/opt/conda/envs/amber/bin
90
+
77
91
  # Install HTPolyNet
78
92
  COPY . /htpolynet
79
93
  WORKDIR /htpolynet
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "htpolynet"
7
- version = "2.10.2"
7
+ version = "2.10.3"
8
8
  authors = [
9
9
  { name="Cameron F Abrams", email="cfa22@drexel.edu" },
10
10
  ]
@@ -18,6 +18,7 @@ libraries keep working rather than silently re-parameterizing wholesale.
18
18
  Author: Cameron F. Abrams <cfa22@drexel.edu>
19
19
  """
20
20
  import hashlib
21
+ import re
21
22
  import json
22
23
  import logging
23
24
  import os
@@ -34,6 +35,15 @@ _KEY_FIELDS = (
34
35
  )
35
36
  """Fields that determine the parameters, with human-readable labels."""
36
37
 
38
+ VERSION_FIELD = 'ambertools_version'
39
+ """Record field holding the AmberTools version that produced the parameters.
40
+
41
+ The same directives give different numbers under different AmberTools
42
+ releases, and htpolynet's CPU and CUDA images have not always shipped the same
43
+ one. Compared only when both the record and the current run know it, so
44
+ records written before it existed, or runs that cannot tell, still match.
45
+ """
46
+
37
47
  FRCMOD_FIELD = 'frcmod'
38
48
  """Record field holding a digest of the user frcmod files loaded after parmchk2's.
39
49
 
@@ -59,7 +69,19 @@ def frcmod_digest(frcmods):
59
69
  return h.hexdigest()[:16]
60
70
 
61
71
 
62
- def build_key(ambertools=None):
72
+ def ambertools_version():
73
+ """Returns the AmberTools version of the running installation, or None if unknown.
74
+
75
+ Returns:
76
+ str or None: version string, e.g. '26.0'
77
+ """
78
+ from ..external import software
79
+ v = software.versions.get('ambertools', '')
80
+ m = re.search(r'ver\.\s*([0-9][0-9A-Za-z.\-]*)', v or '')
81
+ return m.group(1) if m else None
82
+
83
+
84
+ def build_key(ambertools=None, version='detect'):
63
85
  """Returns the provenance record describing a parameterization run under
64
86
  the given AmberTools directives.
65
87
 
@@ -68,6 +90,8 @@ def build_key(ambertools=None):
68
90
 
69
91
  Args:
70
92
  ambertools (dict, optional): ambertools configuration directives
93
+ version (str, optional): AmberTools version to record; 'detect' (the default) asks the
94
+ running installation, and None records none
71
95
 
72
96
  Returns:
73
97
  dict: provenance record
@@ -79,6 +103,10 @@ def build_key(ambertools=None):
79
103
  digest = frcmod_digest(ambertools.get(FRCMOD_FIELD))
80
104
  if digest:
81
105
  key[FRCMOD_FIELD] = digest
106
+ if version == 'detect':
107
+ version = ambertools_version()
108
+ if version:
109
+ key[VERSION_FIELD] = version
82
110
  return key
83
111
 
84
112
 
@@ -158,6 +186,9 @@ def describe_mismatch(stored, requested):
158
186
  continue
159
187
  if stored[field] != requested.get(field):
160
188
  diffs.append(f'{label} {stored[field]!r} cached, {requested.get(field)!r} requested')
189
+ stored_v, requested_v = stored.get(VERSION_FIELD), requested.get(VERSION_FIELD)
190
+ if stored_v and requested_v and stored_v != requested_v:
191
+ diffs.append(f'AmberTools {stored_v} cached, {requested_v} running')
161
192
  # unlike the fields above, an absent frcmod digest is a statement: none was loaded
162
193
  if stored.get(FRCMOD_FIELD) != requested.get(FRCMOD_FIELD):
163
194
  diffs.append(f'user frcmod {stored.get(FRCMOD_FIELD) or "none"} cached, '
@@ -83,7 +83,7 @@ def _mismatch_and_runtime(name='TAZ', **ambertools):
83
83
 
84
84
  class TestBuildKey:
85
85
  def test_defaults_come_from_ambertools(self):
86
- assert paramcache.build_key({}) == AMBERTOOLS_DEFAULTS
86
+ assert paramcache.build_key({}, version=None) == AMBERTOOLS_DEFAULTS
87
87
 
88
88
  def test_none_is_the_same_as_empty(self):
89
89
  assert paramcache.build_key(None) == paramcache.build_key({})
@@ -95,7 +95,7 @@ class TestBuildKey:
95
95
  assert key['atom_type'] == AMBERTOOLS_DEFAULTS['atom_type']
96
96
 
97
97
  def test_ignores_directives_that_do_not_affect_parameters(self):
98
- assert paramcache.build_key({'nonsense': 1}) == AMBERTOOLS_DEFAULTS
98
+ assert paramcache.build_key({'nonsense': 1}, version=None) == AMBERTOOLS_DEFAULTS
99
99
 
100
100
  def test_net_charge_default_preserves_the_old_hardcoded_nc(self):
101
101
  # antechamber was invoked with a literal -nc 0 before net_charge became
@@ -342,3 +342,37 @@ class TestUnverifiedSummary:
342
342
  def test_a_molecule_reported_twice_is_listed_once(self, caplog):
343
343
  text = self._report(['TAZ', 'TAZ'], caplog, charge_method='bcc')
344
344
  assert '1 parameterization reused without provenance' in text
345
+
346
+
347
+ class TestAmberToolsVersion:
348
+ """The same directives give different numbers under different AmberTools
349
+ releases, and the CPU and CUDA images once shipped different ones."""
350
+
351
+ def test_detected_from_the_running_installation(self, monkeypatch):
352
+ from htpolynet.external import software
353
+ monkeypatch.setitem(software.versions, 'ambertools', 'ver. 26.0 (conda)')
354
+ assert paramcache.ambertools_version() == '26.0'
355
+ assert paramcache.build_key({})[paramcache.VERSION_FIELD] == '26.0'
356
+
357
+ def test_unknown_version_is_not_recorded(self, monkeypatch):
358
+ from htpolynet.external import software
359
+ monkeypatch.setitem(software.versions, 'ambertools', 'installed (version unknown)')
360
+ assert paramcache.VERSION_FIELD not in paramcache.build_key({})
361
+
362
+ def test_a_different_version_is_a_miss(self):
363
+ diffs = paramcache.describe_mismatch(paramcache.build_key({}, version='24.8'),
364
+ paramcache.build_key({}, version='26.0'))
365
+ assert diffs == ['AmberTools 24.8 cached, 26.0 running']
366
+
367
+ def test_the_same_version_matches(self):
368
+ key = paramcache.build_key({}, version='26.0')
369
+ assert paramcache.describe_mismatch(key, key) == []
370
+
371
+ def test_a_record_without_a_version_still_matches(self):
372
+ # records written before the field existed, like every cache in use today
373
+ assert paramcache.describe_mismatch(paramcache.build_key({}, version=None),
374
+ paramcache.build_key({}, version='26.0')) == []
375
+
376
+ def test_a_run_that_cannot_tell_still_matches(self):
377
+ assert paramcache.describe_mismatch(paramcache.build_key({}, version='26.0'),
378
+ paramcache.build_key({}, version=None)) == []
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes