dftd3 1.3.0__tar.gz → 1.3.2__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.
- {dftd3-1.3.0 → dftd3-1.3.2}/PKG-INFO +3 -2
- {dftd3-1.3.0 → dftd3-1.3.2}/README.rst +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/__init__.py +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/meson.build +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/pyproject.toml +2 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/.github/workflows/build.yml +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/.github/workflows/wheel.yml +41 -7
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/CMakeLists.txt +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/comparison.rst +4 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/fpm.toml +3 -3
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/meson.build +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/README.rst +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/__init__.py +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/meson.build +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/pyproject.toml +2 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/api.f90 +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/damping/atm.f90 +3 -3
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/disp.f90 +1 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/version.f90 +2 -2
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/subprojects/mctc-lib.wrap +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/subprojects/toml-f.wrap +1 -1
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/unit/test_periodic.f90 +192 -30
- {dftd3-1.3.0 → dftd3-1.3.2}/.gitignore +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/COPYING +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/COPYING.LESSER +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/ase.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/interface.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/library.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/parameters.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/parameters.toml +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/py.typed +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/pyscf.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/qcschema.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/test_ase.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/test_interface.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/test_library.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/test_parameters.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/test_pyscf.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/dftd3/test_qcschema.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/ffibuilder.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/include/_dftd3.h +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/meson_options.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/.codecov.yml +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/.github/dco.yml +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/.github/workflows/codeql.yml +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/.github/workflows/docs.yml +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/.gitignore +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/.readthedocs.yaml +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/CONTRIBUTING.md +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/COPYING +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/COPYING.LESSER +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/README.md +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/app/CMakeLists.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/app/argument.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/app/cli.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/app/driver.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/app/example.xyz +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/app/help.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/app/main.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/app/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/app/toml.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/assets/ci/build-env.yaml +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/assets/ci/python-env.yaml +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/assets/ci/setup-intel.sh +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/assets/ci/wheel-req.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/assets/parameters.toml +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/config/CMakeLists.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/config/cmake/Findmctc-lib.cmake +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/config/cmake/Findmstore.cmake +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/config/cmake/Findtoml-f.cmake +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/config/cmake/s-dftd3-utils.cmake +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/config/install-mod.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/config/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/config/template.cmake +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/config/template.pc +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/_static/references.bib +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/api/ase.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/api/c.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/api/fortran.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/api/index.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/api/pyscf.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/api/python.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/api/qcschema.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/conf.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/guide/citing.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/guide/index.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/guide/minimal-example/energy.c +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/guide/minimal-example/energy.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/guide/minimal-example/energy.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/guide/minimal-example.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/index.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/installation.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/requirements.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/tutorial/first-steps-cli.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/tutorial/first-steps-fortran/app/main.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/tutorial/first-steps-fortran/fpm.toml +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/tutorial/first-steps-fortran/src/scan.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/tutorial/first-steps-fortran.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/doc/tutorial/index.rst +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/docs.md +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/include/dftd3.h +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/include/s-dftd3.h +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/man/s-dftd3.1.adoc +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/meson_options.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/.gitignore +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/COPYING +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/COPYING.LESSER +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/ase.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/interface.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/library.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/parameters.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/py.typed +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/pyscf.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/qcschema.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/test_ase.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/test_interface.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/test_library.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/test_parameters.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/test_pyscf.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/dftd3/test_qcschema.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/ffibuilder.py +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/include/_dftd3.h +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/python/meson_options.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/CMakeLists.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/CMakeLists.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/citation.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/cutoff.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/damping/CMakeLists.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/damping/cso.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/damping/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/damping/mzero.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/damping/optimizedpower.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/damping/rational.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/damping/zero.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/damping.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/data/CMakeLists.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/data/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/data/r4r2.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/data/vdwrad.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/data.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/gcp/CMakeLists.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/gcp/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/gcp/param.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/gcp.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/model.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/ncoord.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/output.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/param.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/reference.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3/utils.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/dftd3.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/src/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/subprojects/.gitignore +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/subprojects/mstore.wrap +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/CMakeLists.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/api/api-test.c +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/api/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/unit/CMakeLists.txt +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/unit/main.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/unit/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/unit/test_dftd3.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/unit/test_gcp.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/unit/test_model.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/unit/test_pairwise.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/unit/test_param.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/unit/test_regression.f90 +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/01-energy-d3-bj.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/01-energy-d3-bj.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/01-tyr-xab.xyz +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/02-energy-d3-zero.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/02-energy-d3-zero.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/02-ser-xad.gen +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/03-energy-d3-bjm.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/03-energy-d3-bjm.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/03-met-xag.coord +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/04-energy-d3-zerom.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/04-energy-d3-zerom.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/04-val-xad.mol +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/05-cys-xag.sdf +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/05-energy-d3-op.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/05-energy-d3-op.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/06-229.xyz +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/06-gradient-d3-bj.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/06-gradient-d3-bj.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/07-bih3-nh3.tmol +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/07-gradient-d3-zero.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/07-gradient-d3-zero.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/08-gradient-d3-bjm.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/08-gradient-d3-bjm.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/08-teh2-hbr.mol +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/09-0a.pdb +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/09-gradient-d3-zerom.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/09-gradient-d3-zerom.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/10-but14diol.log +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/10-gradient-d3-op.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/10-gradient-d3-op.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/11-cf3br-benzene.xyz +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/11-pairwise-d3-bj.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/11-pairwise-d3-bj.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/12-butane.gen +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/12-pairwise-d3-zero.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/12-pairwise-d3-zero.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/13-c60.coord +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/13-pairwise-d3-bjm.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/13-pairwise-d3-bjm.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/14-anthracene2.xyz +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/14-pairwise-d3-zerom.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/14-pairwise-d3-zerom.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/15-pairwise-d3-op.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/15-pairwise-d3-op.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/15-pxylene.mol +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/16-db-d3-bj.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/16-db-d3-bj.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/16-i10e.gen +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/17-db-d3-zero.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/17-db-d3-zero.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/17-li2-ch4.sdf +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/18-c1.pdb +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/18-db-d3-bjm.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/18-db-d3-bjm.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/19-db-d3-zerom.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/19-db-d3-zerom.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/19-g1.mol +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/20-db-d3-op.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/20-db-d3-op.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/20-i21p.tmol +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/21-ad3.coord +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/21-gcp-pbeh3c.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/21-gcp-pbeh3c.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/22-benI-acetone.xyz +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/22-gcp-b973c.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/22-gcp-b973c.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/23-444.sdf +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/23-gcp-hf3c.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/23-gcp-hf3c.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/24-gcp-hf-deftzvp.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/24-gcp-hf-deftzvp.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/24-h2o_6.qchem +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/25-g3.gen +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/25-gcp-b3lyp-631gd.json +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/25-gcp-b3lyp-631gd.resp +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/meson.build +0 -0
- {dftd3-1.3.0 → dftd3-1.3.2}/subprojects/s-dftd3/test/validation/tester.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dftd3
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.2
|
|
4
4
|
Summary: Python API of the DFT-D3 project
|
|
5
5
|
License: LGPL-3.0-or-later
|
|
6
6
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -12,6 +12,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
16
|
Classifier: Topic :: Scientific/Engineering :: Chemistry
|
|
16
17
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
17
18
|
Project-URL: repository, https://github.com/dftd3/simple-dftd3
|
|
@@ -254,7 +255,7 @@ Now you are ready to use ``dftd3``, check if you can import it with
|
|
|
254
255
|
>>> import dftd3
|
|
255
256
|
>>> from dftd3.library import get_api_version
|
|
256
257
|
>>> get_api_version()
|
|
257
|
-
'1.3.
|
|
258
|
+
'1.3.2'
|
|
258
259
|
|
|
259
260
|
|
|
260
261
|
Building the extension module
|
|
@@ -9,7 +9,7 @@ build-backend = "mesonpy"
|
|
|
9
9
|
|
|
10
10
|
[project]
|
|
11
11
|
name = "dftd3"
|
|
12
|
-
version = "1.3.
|
|
12
|
+
version = "1.3.2"
|
|
13
13
|
description = "Python API of the DFT-D3 project"
|
|
14
14
|
readme = "README.rst"
|
|
15
15
|
license.text = "LGPL-3.0-or-later"
|
|
@@ -25,6 +25,7 @@ classifiers = [
|
|
|
25
25
|
"Programming Language :: Python :: 3.11",
|
|
26
26
|
"Programming Language :: Python :: 3.12",
|
|
27
27
|
"Programming Language :: Python :: 3.13",
|
|
28
|
+
"Programming Language :: Python :: 3.14",
|
|
28
29
|
"Topic :: Scientific/Engineering :: Chemistry",
|
|
29
30
|
"Topic :: Scientific/Engineering :: Physics",
|
|
30
31
|
]
|
|
@@ -92,7 +92,7 @@ jobs:
|
|
|
92
92
|
cibw-${{ runner.os }}-
|
|
93
93
|
|
|
94
94
|
- name: Install cibuildwheel
|
|
95
|
-
run: python -m pip install "cibuildwheel==
|
|
95
|
+
run: python -m pip install "cibuildwheel==3.4.1"
|
|
96
96
|
|
|
97
97
|
- name: Download sdist
|
|
98
98
|
uses: actions/download-artifact@v4
|
|
@@ -156,9 +156,43 @@ jobs:
|
|
|
156
156
|
tag: ${{ github.ref }}
|
|
157
157
|
overwrite: true
|
|
158
158
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
159
|
+
publish-to-pypi:
|
|
160
|
+
name: Publish to PyPI
|
|
161
|
+
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
|
|
162
|
+
needs:
|
|
163
|
+
- sdist
|
|
164
|
+
- wheels
|
|
165
|
+
runs-on: ubuntu-latest
|
|
166
|
+
environment:
|
|
167
|
+
name: pypi
|
|
168
|
+
url: https://pypi.org/p/dftd3
|
|
169
|
+
permissions:
|
|
170
|
+
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
171
|
+
|
|
172
|
+
steps:
|
|
173
|
+
- name: Download sdist
|
|
174
|
+
uses: actions/download-artifact@v4
|
|
175
|
+
with:
|
|
176
|
+
name: dftd3-python-sdist
|
|
177
|
+
path: dist/
|
|
178
|
+
|
|
179
|
+
- name: Download manylinux wheels
|
|
180
|
+
uses: actions/download-artifact@v4
|
|
181
|
+
with:
|
|
182
|
+
name: dftd3-python-ubuntu-latest
|
|
183
|
+
path: dist/
|
|
184
|
+
|
|
185
|
+
- name: Download windows wheels
|
|
186
|
+
uses: actions/download-artifact@v4
|
|
187
|
+
with:
|
|
188
|
+
name: dftd3-python-windows-latest
|
|
189
|
+
path: dist/
|
|
190
|
+
|
|
191
|
+
- name: Download osx wheels
|
|
192
|
+
uses: actions/download-artifact@v4
|
|
193
|
+
with:
|
|
194
|
+
name: dftd3-python-macos-14
|
|
195
|
+
path: dist/
|
|
196
|
+
|
|
197
|
+
- name: Publish distribution to PyPI
|
|
198
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -70,6 +70,10 @@ A list of projects currently using this DFT-D3 implementation is given here.
|
|
|
70
70
|
All-electron electronic structure theory with numeric atom-centered orbitals.\ :footcite:`blum2009`
|
|
71
71
|
`VASP <https://www.vasp.at/>`_: (since 6.6.0)
|
|
72
72
|
The Vienna Ab initio Simulation Package: atomic scale materials modelling from first principles.\ :footcite:`kresse1999`
|
|
73
|
+
`REST <https://gitee.com/RESTGroup/rest>`_:
|
|
74
|
+
Rust-based Electronic Structure Toolkit is a next-generation electronic structure calculation platform
|
|
75
|
+
developed by the Research Center for Chemical Theory (RCCT) at Fudan University.
|
|
76
|
+
Provides Rust bindings in `dftd3-rs <https://github.com/RESTGroup/dftd3-rs>`_.
|
|
73
77
|
|
|
74
78
|
If your project is using *s-dftd3* feel free to add your project to this list.
|
|
75
79
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
name = "s-dftd3"
|
|
2
|
-
version = "1.3.
|
|
2
|
+
version = "1.3.2"
|
|
3
3
|
license = "LGPL-3.0-or-later"
|
|
4
4
|
maintainer = ["@awvwgk"]
|
|
5
5
|
author = ["Sebastian Ehlert"]
|
|
6
|
-
copyright = "2019-
|
|
6
|
+
copyright = "2019-2026 Sebastian Ehlert"
|
|
7
7
|
description = "Simple reimplementation of the DFT-D3 method"
|
|
8
8
|
keywords = ["dispersion-correction", "quantum-chemistry"]
|
|
9
9
|
|
|
10
10
|
[dependencies]
|
|
11
11
|
mctc-lib.git = "https://github.com/grimme-lab/mctc-lib"
|
|
12
|
-
mctc-lib.tag = "v0.
|
|
12
|
+
mctc-lib.tag = "v0.5.0"
|
|
13
13
|
|
|
14
14
|
[dev-dependencies]
|
|
15
15
|
mstore.git = "https://github.com/grimme-lab/mstore"
|
|
@@ -9,7 +9,7 @@ build-backend = "mesonpy"
|
|
|
9
9
|
|
|
10
10
|
[project]
|
|
11
11
|
name = "dftd3"
|
|
12
|
-
version = "1.3.
|
|
12
|
+
version = "1.3.2"
|
|
13
13
|
description = "Python API of the DFT-D3 project"
|
|
14
14
|
readme = "README.rst"
|
|
15
15
|
license.text = "LGPL-3.0-or-later"
|
|
@@ -25,6 +25,7 @@ classifiers = [
|
|
|
25
25
|
"Programming Language :: Python :: 3.11",
|
|
26
26
|
"Programming Language :: Python :: 3.12",
|
|
27
27
|
"Programming Language :: Python :: 3.13",
|
|
28
|
+
"Programming Language :: Python :: 3.14",
|
|
28
29
|
"Topic :: Scientific/Engineering :: Chemistry",
|
|
29
30
|
"Topic :: Scientific/Engineering :: Physics",
|
|
30
31
|
]
|
|
@@ -964,7 +964,7 @@ end subroutine set_gcp_realspace_cutoff
|
|
|
964
964
|
subroutine delete_gcp_api(vgcp) &
|
|
965
965
|
& bind(C, name=namespace//"delete_gcp")
|
|
966
966
|
type(c_ptr), intent(inout) :: vgcp
|
|
967
|
-
type(
|
|
967
|
+
type(vp_gcp), pointer :: gcp
|
|
968
968
|
|
|
969
969
|
if (c_associated(vgcp)) then
|
|
970
970
|
call c_f_pointer(vgcp, gcp)
|
|
@@ -329,9 +329,9 @@ subroutine get_atm_dispersion_derivs(mol, trans, cutoff, s9, rs9, alp, rvdw, c6,
|
|
|
329
329
|
energy_local(jat) = energy_local(jat) - dE/3.0_wp
|
|
330
330
|
energy_local(kat) = energy_local(kat) - dE/3.0_wp
|
|
331
331
|
|
|
332
|
-
gradient_local(:, iat) = gradient_local(:, iat) - dGij
|
|
333
|
-
gradient_local(:, jat) = gradient_local(:, jat) + dGij - dGjk
|
|
334
|
-
gradient_local(:, kat) = gradient_local(:, kat) + dGik + dGjk
|
|
332
|
+
gradient_local(:, iat) = gradient_local(:, iat) - (dGij + dGik) * triple
|
|
333
|
+
gradient_local(:, jat) = gradient_local(:, jat) + (dGij - dGjk) * triple
|
|
334
|
+
gradient_local(:, kat) = gradient_local(:, kat) + (dGik + dGjk) * triple
|
|
335
335
|
|
|
336
336
|
do ic = 1, 3
|
|
337
337
|
do jc = 1, 3
|
|
@@ -99,6 +99,7 @@ subroutine get_dispersion_atomic(mol, disp, param, cutoff, energies, gradient, s
|
|
|
99
99
|
call param%get_dispersion3(mol, lattr, cutoff%disp3, disp%rvdw, disp%r4r2, c6, dc6dcn, &
|
|
100
100
|
& energies, dEdcn, gradient, sigma)
|
|
101
101
|
if (grad) then
|
|
102
|
+
call get_lattice_points(mol%periodic, mol%lattice, cutoff%cn, lattr)
|
|
102
103
|
call add_coordination_number_derivs(mol, lattr, cutoff%cn, disp%rcov, dEdcn, &
|
|
103
104
|
& gradient, sigma)
|
|
104
105
|
end if
|
|
@@ -24,10 +24,10 @@ module dftd3_version
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
!> String representation of the s-dftd3 version
|
|
27
|
-
character(len=*), parameter :: dftd3_version_string = "1.3.
|
|
27
|
+
character(len=*), parameter :: dftd3_version_string = "1.3.2"
|
|
28
28
|
|
|
29
29
|
!> Numeric representation of the s-dftd3 version
|
|
30
|
-
integer, parameter :: dftd3_version_compact(3) = [1, 3,
|
|
30
|
+
integer, parameter :: dftd3_version_compact(3) = [1, 3, 2]
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
contains
|
|
@@ -51,10 +51,10 @@ subroutine collect_periodic(testsuite)
|
|
|
51
51
|
& new_unittest("M06L-D3(0)", test_m06ld3zero_cyanamide), &
|
|
52
52
|
& new_unittest("rPW86PBE-D3(0)", test_rpw86pbed3zero_co2), &
|
|
53
53
|
& new_unittest("revSSB-D3(0)", test_revssbd3zero_cytosine), &
|
|
54
|
-
|
|
54
|
+
& new_unittest("HSEsol-D3(BJ)-ATM", test_hsesold3bjatm_oxacb), &
|
|
55
55
|
! new_unittest("PWGGA-D3(BJ)-ATM", test_pwggad3bjatm_pyrazine), &
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
& new_unittest("B3PW91-D3(0)-ATM", test_b3pw91d3zeroatm_urea), &
|
|
57
|
+
& new_unittest("RPBE-D3(0)-ATM", test_rpbed3zeroatm_hexamine), &
|
|
58
58
|
& new_unittest("revPBE-D3(BJ)", test_revpbed3bj_1d), &
|
|
59
59
|
& new_unittest("BP86-D3(0)", test_bp86d3zero_2d) &
|
|
60
60
|
& ]
|
|
@@ -90,7 +90,7 @@ subroutine test_dftd3_gen(error, mol, param, ref)
|
|
|
90
90
|
end subroutine test_dftd3_gen
|
|
91
91
|
|
|
92
92
|
|
|
93
|
-
subroutine test_numgrad(error, mol, param)
|
|
93
|
+
subroutine test_numgrad(error, mol, param, thr_in)
|
|
94
94
|
|
|
95
95
|
!> Error handling
|
|
96
96
|
type(error_type), allocatable, intent(out) :: error
|
|
@@ -101,37 +101,112 @@ subroutine test_numgrad(error, mol, param)
|
|
|
101
101
|
!> Damping parameters
|
|
102
102
|
class(damping_param), intent(in) :: param
|
|
103
103
|
|
|
104
|
+
!> Gradient threshold
|
|
105
|
+
real(wp), intent(in), optional :: thr_in
|
|
106
|
+
|
|
104
107
|
integer :: iat, ic
|
|
105
108
|
type(d3_model) :: d3
|
|
106
|
-
real(wp) :: energy, er, el, sigma(3, 3)
|
|
109
|
+
real(wp) :: energy, er, el, sigma(3, 3), thr_grad, numerr
|
|
107
110
|
real(wp), allocatable :: gradient(:, :), numgrad(:, :)
|
|
108
111
|
real(wp), parameter :: step = 1.0e-6_wp
|
|
112
|
+
logical :: tight
|
|
109
113
|
|
|
110
114
|
allocate(gradient(3, mol%nat), numgrad(3, mol%nat))
|
|
111
115
|
call new_d3_model(d3, mol)
|
|
116
|
+
thr_grad = thr2
|
|
117
|
+
if (present(thr_in)) thr_grad = thr_in
|
|
118
|
+
tight = present(thr_in)
|
|
112
119
|
|
|
113
120
|
do iat = 1, mol%nat
|
|
114
121
|
do ic = 1, 3
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
122
|
+
if (tight) then
|
|
123
|
+
call ridders_cartesian(ic, iat, numgrad(ic, iat), numerr)
|
|
124
|
+
else
|
|
125
|
+
mol%xyz(ic, iat) = mol%xyz(ic, iat) + step
|
|
126
|
+
call get_dispersion(mol, d3, param, cutoff, er)
|
|
127
|
+
mol%xyz(ic, iat) = mol%xyz(ic, iat) - 2*step
|
|
128
|
+
call get_dispersion(mol, d3, param, cutoff, el)
|
|
129
|
+
mol%xyz(ic, iat) = mol%xyz(ic, iat) + step
|
|
130
|
+
numgrad(ic, iat) = 0.5_wp*(er - el)/step
|
|
131
|
+
end if
|
|
121
132
|
end do
|
|
122
133
|
end do
|
|
123
134
|
|
|
124
135
|
call get_dispersion(mol, d3, param, cutoff, energy, gradient, sigma)
|
|
125
136
|
|
|
126
|
-
if (any(abs(gradient - numgrad) >
|
|
137
|
+
if (any(abs(gradient - numgrad) > thr_grad)) then
|
|
127
138
|
call test_failed(error, "Gradient of dispersion energy does not match")
|
|
128
139
|
print'(3es21.14)', gradient-numgrad
|
|
129
140
|
end if
|
|
130
141
|
|
|
142
|
+
contains
|
|
143
|
+
|
|
144
|
+
subroutine ridders_cartesian(ic, iat, deriv, err)
|
|
145
|
+
|
|
146
|
+
integer, intent(in) :: ic, iat
|
|
147
|
+
real(wp), intent(out) :: deriv, err
|
|
148
|
+
|
|
149
|
+
integer, parameter :: max_tab = 10
|
|
150
|
+
real(wp), parameter :: initial_step = 1.0e-4_wp
|
|
151
|
+
real(wp), parameter :: step_div = sqrt(2.0_wp)
|
|
152
|
+
real(wp), parameter :: step_div_2 = step_div**2
|
|
153
|
+
integer :: iter, order
|
|
154
|
+
real(wp) :: table(max_tab, max_tab), factor, err_est, prev_deriv, prev_err
|
|
155
|
+
real(wp) :: h, x0
|
|
156
|
+
|
|
157
|
+
x0 = mol%xyz(ic, iat)
|
|
158
|
+
h = initial_step
|
|
159
|
+
err = huge(1.0_wp)
|
|
160
|
+
prev_err = err
|
|
161
|
+
|
|
162
|
+
mol%xyz(ic, iat) = x0 + h
|
|
163
|
+
call get_dispersion(mol, d3, param, cutoff, er)
|
|
164
|
+
mol%xyz(ic, iat) = x0 - h
|
|
165
|
+
call get_dispersion(mol, d3, param, cutoff, el)
|
|
166
|
+
table(1, 1) = 0.5_wp*(er - el)/h
|
|
167
|
+
deriv = table(1, 1)
|
|
168
|
+
prev_deriv = deriv
|
|
169
|
+
|
|
170
|
+
do iter = 2, max_tab
|
|
171
|
+
h = h / step_div
|
|
172
|
+
mol%xyz(ic, iat) = x0 + h
|
|
173
|
+
call get_dispersion(mol, d3, param, cutoff, er)
|
|
174
|
+
mol%xyz(ic, iat) = x0 - h
|
|
175
|
+
call get_dispersion(mol, d3, param, cutoff, el)
|
|
176
|
+
table(iter, 1) = 0.5_wp*(er - el)/h
|
|
177
|
+
|
|
178
|
+
factor = step_div_2
|
|
179
|
+
do order = 1, iter - 1
|
|
180
|
+
factor = factor * step_div_2
|
|
181
|
+
table(iter, order + 1) = (factor*table(iter, order) &
|
|
182
|
+
& - table(iter - 1, order))/(factor - 1.0_wp)
|
|
183
|
+
err_est = max(abs(table(iter, order + 1) - table(iter, order)), &
|
|
184
|
+
& abs(table(iter, order + 1) - table(iter - 1, order)))
|
|
185
|
+
if (err_est <= err) then
|
|
186
|
+
err = err_est
|
|
187
|
+
deriv = table(iter, order + 1)
|
|
188
|
+
end if
|
|
189
|
+
end do
|
|
190
|
+
|
|
191
|
+
if (abs(table(iter, iter) - table(iter - 1, iter - 1)) >= 2*err &
|
|
192
|
+
& .and. iter > 2) then
|
|
193
|
+
deriv = prev_deriv
|
|
194
|
+
err = prev_err
|
|
195
|
+
exit
|
|
196
|
+
end if
|
|
197
|
+
|
|
198
|
+
prev_deriv = deriv
|
|
199
|
+
prev_err = err
|
|
200
|
+
end do
|
|
201
|
+
|
|
202
|
+
mol%xyz(ic, iat) = x0
|
|
203
|
+
|
|
204
|
+
end subroutine ridders_cartesian
|
|
205
|
+
|
|
131
206
|
end subroutine test_numgrad
|
|
132
207
|
|
|
133
208
|
|
|
134
|
-
subroutine test_numsigma(error, mol, param)
|
|
209
|
+
subroutine test_numsigma(error, mol, param, thr_in)
|
|
135
210
|
|
|
136
211
|
!> Error handling
|
|
137
212
|
type(error_type), allocatable, intent(out) :: error
|
|
@@ -142,44 +217,131 @@ subroutine test_numsigma(error, mol, param)
|
|
|
142
217
|
!> Damping parameters
|
|
143
218
|
class(damping_param), intent(in) :: param
|
|
144
219
|
|
|
220
|
+
!> Strain derivative threshold
|
|
221
|
+
real(wp), intent(in), optional :: thr_in
|
|
222
|
+
|
|
145
223
|
integer :: ic, jc
|
|
146
224
|
type(d3_model) :: d3
|
|
147
225
|
real(wp) :: energy, er, el, sigma(3, 3), eps(3, 3), numsigma(3, 3), lattice(3, 3)
|
|
226
|
+
real(wp) :: thr_sigma, numerr
|
|
148
227
|
real(wp), allocatable :: gradient(:, :), xyz(:, :)
|
|
149
228
|
real(wp), parameter :: unity(3, 3) = reshape(&
|
|
150
229
|
& [1, 0, 0, 0, 1, 0, 0, 0, 1], shape(unity))
|
|
151
230
|
real(wp), parameter :: step = 1.0e-7_wp
|
|
231
|
+
logical :: tight
|
|
152
232
|
|
|
153
233
|
allocate(gradient(3, mol%nat), xyz(3, mol%nat))
|
|
154
234
|
call new_d3_model(d3, mol)
|
|
235
|
+
thr_sigma = thr3
|
|
236
|
+
if (present(thr_in)) thr_sigma = thr_in
|
|
237
|
+
tight = present(thr_in)
|
|
155
238
|
|
|
156
239
|
eps(:, :) = unity
|
|
157
240
|
xyz(:, :) = mol%xyz
|
|
158
241
|
lattice(:, :) = mol%lattice
|
|
159
242
|
do ic = 1, 3
|
|
160
243
|
do jc = 1, 3
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
244
|
+
if (tight) then
|
|
245
|
+
call ridders_strain(ic, jc, numsigma(jc, ic), numerr)
|
|
246
|
+
else
|
|
247
|
+
eps(jc, ic) = eps(jc, ic) + step
|
|
248
|
+
mol%xyz(:, :) = matmul(eps, xyz)
|
|
249
|
+
mol%lattice(:, :) = matmul(eps, lattice)
|
|
250
|
+
call get_dispersion(mol, d3, param, cutoff, er)
|
|
251
|
+
eps(jc, ic) = eps(jc, ic) - 2*step
|
|
252
|
+
mol%xyz(:, :) = matmul(eps, xyz)
|
|
253
|
+
mol%lattice(:, :) = matmul(eps, lattice)
|
|
254
|
+
call get_dispersion(mol, d3, param, cutoff, el)
|
|
255
|
+
eps(jc, ic) = eps(jc, ic) + step
|
|
256
|
+
mol%xyz(:, :) = xyz
|
|
257
|
+
mol%lattice(:, :) = lattice
|
|
258
|
+
numsigma(jc, ic) = 0.5_wp*(er - el)/step
|
|
259
|
+
end if
|
|
173
260
|
end do
|
|
174
261
|
end do
|
|
175
262
|
|
|
176
263
|
call get_dispersion(mol, d3, param, cutoff, energy, gradient, sigma)
|
|
177
264
|
|
|
178
|
-
if (any(abs(sigma - numsigma) >
|
|
265
|
+
if (any(abs(sigma - numsigma) > thr_sigma)) then
|
|
179
266
|
call test_failed(error, "Strain derivatives do not match")
|
|
180
267
|
print'(3es21.14)', sigma-numsigma
|
|
181
268
|
end if
|
|
182
269
|
|
|
270
|
+
contains
|
|
271
|
+
|
|
272
|
+
subroutine ridders_strain(ic, jc, deriv, err)
|
|
273
|
+
|
|
274
|
+
integer, intent(in) :: ic, jc
|
|
275
|
+
real(wp), intent(out) :: deriv, err
|
|
276
|
+
|
|
277
|
+
integer, parameter :: max_tab = 10
|
|
278
|
+
real(wp), parameter :: initial_step = 5.0e-8_wp
|
|
279
|
+
real(wp), parameter :: step_div = sqrt(2.0_wp)
|
|
280
|
+
real(wp), parameter :: step_div_2 = step_div**2
|
|
281
|
+
integer :: iter, order
|
|
282
|
+
real(wp) :: table(max_tab, max_tab), factor, err_est, prev_deriv, prev_err
|
|
283
|
+
real(wp) :: h
|
|
284
|
+
|
|
285
|
+
h = initial_step
|
|
286
|
+
err = huge(1.0_wp)
|
|
287
|
+
prev_err = err
|
|
288
|
+
|
|
289
|
+
call strain_energy(ic, jc, h, er)
|
|
290
|
+
call strain_energy(ic, jc, -h, el)
|
|
291
|
+
table(1, 1) = 0.5_wp*(er - el)/h
|
|
292
|
+
deriv = table(1, 1)
|
|
293
|
+
prev_deriv = deriv
|
|
294
|
+
|
|
295
|
+
do iter = 2, max_tab
|
|
296
|
+
h = h / step_div
|
|
297
|
+
call strain_energy(ic, jc, h, er)
|
|
298
|
+
call strain_energy(ic, jc, -h, el)
|
|
299
|
+
table(iter, 1) = 0.5_wp*(er - el)/h
|
|
300
|
+
|
|
301
|
+
factor = step_div_2
|
|
302
|
+
do order = 1, iter - 1
|
|
303
|
+
factor = factor * step_div_2
|
|
304
|
+
table(iter, order + 1) = (factor*table(iter, order) &
|
|
305
|
+
& - table(iter - 1, order))/(factor - 1.0_wp)
|
|
306
|
+
err_est = max(abs(table(iter, order + 1) - table(iter, order)), &
|
|
307
|
+
& abs(table(iter, order + 1) - table(iter - 1, order)))
|
|
308
|
+
if (err_est <= err) then
|
|
309
|
+
err = err_est
|
|
310
|
+
deriv = table(iter, order + 1)
|
|
311
|
+
end if
|
|
312
|
+
end do
|
|
313
|
+
|
|
314
|
+
if (abs(table(iter, iter) - table(iter - 1, iter - 1)) >= 2*err &
|
|
315
|
+
& .and. iter > 2) then
|
|
316
|
+
deriv = prev_deriv
|
|
317
|
+
err = prev_err
|
|
318
|
+
exit
|
|
319
|
+
end if
|
|
320
|
+
|
|
321
|
+
prev_deriv = deriv
|
|
322
|
+
prev_err = err
|
|
323
|
+
end do
|
|
324
|
+
|
|
325
|
+
mol%xyz(:, :) = xyz
|
|
326
|
+
mol%lattice(:, :) = lattice
|
|
327
|
+
|
|
328
|
+
end subroutine ridders_strain
|
|
329
|
+
|
|
330
|
+
subroutine strain_energy(ic, jc, step, energy)
|
|
331
|
+
|
|
332
|
+
integer, intent(in) :: ic, jc
|
|
333
|
+
real(wp), intent(in) :: step
|
|
334
|
+
real(wp), intent(out) :: energy
|
|
335
|
+
real(wp) :: strain(3, 3)
|
|
336
|
+
|
|
337
|
+
strain(:, :) = unity
|
|
338
|
+
strain(jc, ic) = strain(jc, ic) + step
|
|
339
|
+
mol%xyz(:, :) = matmul(strain, xyz)
|
|
340
|
+
mol%lattice(:, :) = matmul(strain, lattice)
|
|
341
|
+
call get_dispersion(mol, d3, param, cutoff, energy)
|
|
342
|
+
|
|
343
|
+
end subroutine strain_energy
|
|
344
|
+
|
|
183
345
|
end subroutine test_numsigma
|
|
184
346
|
|
|
185
347
|
|
|
@@ -340,7 +502,7 @@ subroutine test_hsesold3bjatm_oxacb(error)
|
|
|
340
502
|
|
|
341
503
|
call get_structure(mol, "X23", "oxacb")
|
|
342
504
|
call new_rational_damping(param, inp)
|
|
343
|
-
call test_numgrad(error, mol, param)
|
|
505
|
+
call test_numgrad(error, mol, param, 1.0e-11_wp)
|
|
344
506
|
|
|
345
507
|
end subroutine test_hsesold3bjatm_oxacb
|
|
346
508
|
|
|
@@ -358,7 +520,7 @@ subroutine test_pwggad3bjatm_pyrazine(error)
|
|
|
358
520
|
|
|
359
521
|
call get_structure(mol, "X23", "pyrazine")
|
|
360
522
|
call new_rational_damping(param, inp)
|
|
361
|
-
call test_numsigma(error, mol, param)
|
|
523
|
+
call test_numsigma(error, mol, param, 1.0e-8_wp)
|
|
362
524
|
|
|
363
525
|
end subroutine test_pwggad3bjatm_pyrazine
|
|
364
526
|
|
|
@@ -376,7 +538,7 @@ subroutine test_b3pw91d3zeroatm_urea(error)
|
|
|
376
538
|
|
|
377
539
|
call get_structure(mol, "X23", "urea")
|
|
378
540
|
call new_zero_damping(param, inp)
|
|
379
|
-
call test_numgrad(error, mol, param)
|
|
541
|
+
call test_numgrad(error, mol, param, 1.0e-11_wp)
|
|
380
542
|
|
|
381
543
|
end subroutine test_b3pw91d3zeroatm_urea
|
|
382
544
|
|
|
@@ -394,7 +556,7 @@ subroutine test_rpbed3zeroatm_hexamine(error)
|
|
|
394
556
|
|
|
395
557
|
call get_structure(mol, "X23", "hexamine")
|
|
396
558
|
call new_zero_damping(param, inp)
|
|
397
|
-
call test_numsigma(error, mol, param)
|
|
559
|
+
call test_numsigma(error, mol, param, 1.0e-8_wp)
|
|
398
560
|
|
|
399
561
|
end subroutine test_rpbed3zeroatm_hexamine
|
|
400
562
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|