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