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