From c4831a0a7bc6a8807ab05dd5cb592c934ed51dce Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 25 Jan 2024 16:00:06 -0600 Subject: [PATCH 1/5] backup [skip ci] --- CMakeLists.txt | 2 +- README.md | 36 ++- docs/source/assets/logo.png | Bin 0 -> 90834 bytes docs/source/background/index.rst | 29 ++ docs/source/background/motivation.rst | 49 ++++ docs/source/background/overview.rst | 0 docs/source/background/statement_of_need.rst | 49 ++++ docs/source/{ => developer}/design_notes.rst | 5 + docs/source/developer/index.rst | 29 ++ docs/source/{ => developer}/structure.rst | 9 +- docs/source/index.rst | 3 +- docs/source/install.rst | 280 ++++++++++++------- 12 files changed, 376 insertions(+), 115 deletions(-) create mode 100644 docs/source/assets/logo.png create mode 100644 docs/source/background/index.rst create mode 100644 docs/source/background/motivation.rst create mode 100644 docs/source/background/overview.rst create mode 100644 docs/source/background/statement_of_need.rst rename docs/source/{ => developer}/design_notes.rst (98%) create mode 100644 docs/source/developer/index.rst rename docs/source/{ => developer}/structure.rst (88%) diff --git a/CMakeLists.txt b/CMakeLists.txt index e74cff16..c69bf6e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ nwx_cxx_api_docs("${SIMDE_SOURCE_DIR}" "${SIMDE_INCLUDE_DIR}") ### Options ### cmaize_option_list( BUILD_TESTING OFF "Should we build the tests?" - BUILD_PYBIND11_PYBINDINGS OFF "Build pybind11 python3 bindings?" + BUILD_PYBIND11_PYBINDINGS ON "Build pybind11 python3 bindings?" ENABLE_EXPERIMENTAL_FEATURES OFF "Build features which are not 1.0-ed yet?" ) diff --git a/README.md b/README.md index 150d7a19..09a4ccb3 100644 --- a/README.md +++ b/README.md @@ -14,11 +14,37 @@ ~ limitations under the License. --> -[![Actions](https://github.com/NWChemEx/SimDE/workflows/C_C++_CI/badge.svg)](https://github.com/NWChemEx/SimDE) +![SimDE Logo](docs/source/assets/logo.png) -[![Codecov](https://codecov.io/github/NWChemEx/PropertyTypes/branch/master/graphs/sunburst.svg?token=pnZIgAq5yN)](https://codecov.io/github/NWChemEx/PropertyTypes/branch/master) +[Documentation](https://nwchemex.github.io/SimDE) -# Simulation Development Environment (SimDE) +[![Citation Badge](https://api.juleskreuer.eu/citation-badge.php?doi=10.1109/MCSE.2018.2884921)](https://juleskreuer.eu/projekte/citation-badge/) -The Simulation Development Environment defines a plugin-based framework for -writing software capable of simulating chemical systems. +The Simulation Development Environment (SimDE) is the... + +# Features + +# Installation + +SimDE ultimately uses CMake for configuring and building. This means that +installation is usually achieved via a variation on: + +```.sh +git clone https://github.com/NWChemEx/simde +cd simde +cmake -H. -Bbuild -D... +cmake --build build --target install +``` +More detailed install instructions can be found +[here](https://nwchemex.github.io/simde/install.html). + +# Contributing + +- [Contributor Guidelines](https://github.com/NWChemEx/.github/blob/1a883d64519f62da7c8ba2b28aabda7c6f196b2c/.github/CONTRIBUTING.md) +- [Contributor License Agreement](https://github.com/NWChemEx/.github/blob/master/.github/CONTRIBUTING.md#contributor-license-agreement-cla) +- [Developer Documentation](https://nwchemex.github.io/PluginPlay/developer/index.html) +- [Code of Conduct](https://github.com/NWChemEx/.github/blob/master/.github/CODE_OF_CONDUCT.md) + +# Acknowledgments + +This research was supported by the Exascale Computing Project (17-SC-20-SC), a collaborative effort of the U.S. Department of Energy Office of Science and the National Nuclear Security Administration. diff --git a/docs/source/assets/logo.png b/docs/source/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dd52ed5dc8568be2e6b7184455a8307ee7b452ef GIT binary patch literal 90834 zcmd43bySwwyFZMCq=1xkhctqONJ@i9qckGjsdOqKNGYLosPG`5l!BxnNH+*dBLYgN z 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 in order to provide the +infrastructure needed to manage software comprised of modular code. In +particular PluginPlay facilitates the: discovery, loading, and selecting of +modules. SimDE is needed because.In PluginPlay parlance these standardized interfaces are called +property types and they are to be defined by the domain experts. Ultimately, +the creation for SimDE was motivated by the need for a centralized location to +store standardized interfaces used in computational chemistry. + + + +TODO: Explain how SimDE eases plugin development + +TODO: Other standardization options diff --git a/docs/source/design_notes.rst b/docs/source/developer/design_notes.rst similarity index 98% rename from docs/source/design_notes.rst rename to docs/source/developer/design_notes.rst index dad70545..d0f54207 100644 --- a/docs/source/design_notes.rst +++ b/docs/source/developer/design_notes.rst @@ -16,6 +16,11 @@ Design Notes ************ +.. note:: + + TensorRepresentation is an experimental feature and subject to change. + + TensorRepresentation ==================== diff --git a/docs/source/developer/index.rst b/docs/source/developer/index.rst new file mode 100644 index 00000000..0e142ccc --- /dev/null +++ b/docs/source/developer/index.rst @@ -0,0 +1,29 @@ +.. Copyright 2024 NWChemEx-Project +.. +.. Licensed under the Apache License, Version 2.0 (the "License"); +.. you may not use this file except in compliance with the License. +.. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. + +####################### +Developer Documentation +####################### + +Topics in this section are concerned with helping the reader understand the +design of SimDE, and how to develop/contribute to the SimDE repository. It +assumed that the reader is already familiar with :ref:`simde_background`. + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + design_notes + structure + NWChemEx author documentation diff --git a/docs/source/structure.rst b/docs/source/developer/structure.rst similarity index 88% rename from docs/source/structure.rst rename to docs/source/developer/structure.rst index c1c5e732..2f431254 100644 --- a/docs/source/structure.rst +++ b/docs/source/developer/structure.rst @@ -17,8 +17,13 @@ Structure of the SimDE Repo ########################### Ultimately there's a lot of property types used throughout an electronic -structure code. To make the user's life easier we have organized the property -types into groups. This page provides an explanation of the groups +structure code. To make the developer's life easier we have organized the +property types into groups. This page provides an explanation of the groups + +.. note:: + + Many of the property types on this page are experimental features and the + groupings are thus subject to change ******* Density diff --git a/docs/source/index.rst b/docs/source/index.rst index 94563c85..d5d72b06 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -25,5 +25,6 @@ plugins compatible with PluginPlay. :caption: Contents: install - structure + background/index + developer/index C++ API diff --git a/docs/source/install.rst b/docs/source/install.rst index fb6b03fd..656d98a7 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -1,4 +1,4 @@ -.. Copyright 2023 NWChemEx-Project +.. Copyright 2022 NWChemEx-Project .. .. Licensed under the Apache License, Version 2.0 (the "License"); .. you may not use this file except in compliance with the License. @@ -12,141 +12,209 @@ .. See the License for the specific language governing permissions and .. limitations under the License. +.. _installing_simde: + ################ Installing SimDE ################ -For the purposes of this tutorial we will assume you want to make a local -installation of SimDE (and its dependencies). To that end, we assume you have -created a directory ``nwx_workspace`` where you would like to install SimDE and -other NWChemEx projects. The full path to ``nwx_workspace`` will be denoted as -``${NWX_WORKSPACE}`` in the following code snippets. - -*********************************** -Pre-Requisites for Installing SimDE -*********************************** +SimDE uses `CMaize `__ as +its build system, more detailed build instructions can be found +`here `__. .. note:: - Pre-installing TiledArray is presently required to avoid runtime linking - issues. When those issues are resolved, pre-installing TiledArray will be - optional. - -Before we can build SimDE we must build TiledArray. TiledArray depends on -several common dependencies, dependencies it's build process can not install -on its own. These dependencies are: - -- MPI (Ubuntu package: libopenmpi-dev) -- BLAS (Ubuntu package: libopenblas-dev) -- LAPACK (Ubuntu package: liblapack-dev) - -For convenience we have listed the name of the Ubuntu package which provides the -dependency; however, we also stress that while packages provided by most package -managers will provide adequate performance, they usually suffer from a -performance penalty associated with their portability. Point being, if you are -doing performance critical work, you may want install these dependencies -yourself. Also note these are very common libraries in the HPC community and -are likely already installed (in a performant configuration) on most clusters -you may run on. - -It is assumed that you have previously installed these dependencies and that -CMake is able to find these dependencies, either because they are installed to -a location where CMake looks by default (*e.g.*, ``/usr/lib``) or because you -will ensure that their install locations are part of ``CMAKE_PREFIX_PATH``. -To install TiledArray: - -.. code-block:: terminal - - git clone https://github.com/valeevgroup/tiledarray - cd tiledarray - git checkout ${NWX_TILEDARRAY_VERSION} - cmake -H. \ - -Bbuild \ - -DCMAKE_INSTALL_PREFIX:PATH=${NWX_WORKSPACE}/tiledarray \ - -DBUILD_SHARED_LIBS:BOOL=TRUE \ - -DCMAKE_INSTALL_RPATH="\$ORIGIN" - cmake --build build --target install --parallel 2 - -where ``${NWX_TILEDARRAY_VERSION}`` should be replaced by the value of the -CMake variable specified `here `__ and you should feel free to -change the ``2`` on the last line to the number of CPU cores on your computer -(the ``2`` specifies how many CPU cores will be used to compile). - -*********************** -Installing SimDE Proper -*********************** - -After a successful installation of TiledArray we are ready to install SimDE -proper. First we obtain the source for SimDE: - -.. code-block:: terminal + We strongly recommend users use CMake toolchains to pass arguments to the + ``cmake`` command. Typically CMake toolchains live in files named + ``-toolchain.cmake``, where ``-`` is an optional prefix to + distinguish among toolchains. The contents of the CMake toolchain file + usually just sets configuration values set via the standard CMake ``set`` + function, *i.e.*, ``set( )``. + +*************** +Install Command +*************** + +In many cases SimDE can be installed by: + +.. code-block:: console git clone https://github.com/NWChemEx/SimDE cd SimDE + cmake -H. -Bbuild -DCMAKE_TOOLCHAIN_FILE= \ + -DCMAKE_INSTALL_PREFIX= + cmake --build build --target install -Now we strongly recommend making a toolchain file (see -`here `__ for more details). We will assume that you have -called your toolchain file ``toolchain.cmake``, that you made it inside the -``SimDE`` directory you just cloned, and that the toolchain minimally contains: +Where ```` should be replaced by the path to your +toolchain file, and ```` should be replaced +with where you want to put the installed library (absolute path is recommended +in both cases). + +.. note:: + + The above command will build serially. To build SimDE with ``N`` + processors additionally pass ``--parallel `` to the last command in the + above code block, *i.e.*, + + .. code-block:: console + + cmake --build build --parallel --target install + +********************* +Configuration Options +********************* + +This is a list of configuration options recognized by SimDE's build +system. + +``BUILD_TESTING``. + Off by default. Set to a truth-y value to enable testing. +``BUILD_DOCS``. + Off by default. Set to a truth-y value to build the C++ API documentation. + This variable is defined by the ``nwx_cxx_api_docs`` CMake module. +``ONLY_BUILD_DOCS``. + Off by default. If ``BUILD_DOCS`` is set to a truth-y value and + ``ONLY_BUILD_DOCS`` is also set to a truth-y value, then the configure + process will skip all other aspects of the configuration aside from creating + the ``simde_cxx_api`` target. This variable is defined by the + ``nwx_cxx_api_docs`` CMake module. +``BUILD_PYBIND11_PYBINDINGS``. + On by default. When enabled the optional Python API is built. +``ENABLE_EXPERIMENTAL_FEATURES``. + Off by default. When set to a truth-y value classes and functions which are in + a pre-release state will be built. + + +****************** +SimDE Dependencies +****************** + +If you have a problem building SimDE it's most likely because you +don't have a new enough version of CMake installed or because CMake can't find +one of SimDE's dependencies. This section enumerates SimDE's dependencies. + +Required Dependencies +===================== + +These are dependencies which must be pre-installed and can not be built by +SimDE's build system. + +Boost +----- + +SimDE's Chemist and PluginPlay dependencies need access to some of Boost's +header-only libraries. If SimDE is building either Chemist or PluginPlay then +SimDE will need to know where to find Boost. Boost is a very common C++ +dependency so check your OS's package manager. + +C++ Compiler +------------ + +SimDE relies on the C++17 standard and should work with any C++17 +compliant compiler (GCC 9.x or newer). C++ compilers can often be installed by +your OS's package manager. CMake detects your C++ compiler via the value of +``CMAKE_CXX_COMPILER``. So ensure ``CMAKE_CXX_COMPILER`` is set to the C++ +compiler you want to use. + +MPI +---- + +SimDE's parallel runtime, ParallelZone, implicitly brings in MPI (the message +passing interface). Users must have an MPI distribution +installed prior to building ParallelZone. MPI distributions exist in most +major OS-level package managers, so check your package manager before +installing MPI from source.While CMake can find MPI if it is installed in your +OS's standard spot, you may need to give CMake a hint in some cases. MPI +provides compiler wrappers and it's best to let CMake discover MPI via the C++ +wrapper. Add: .. code-block:: cmake - set(NWX_WORKSPACE #[[The full path to nwx_workspace goes here #]]) - set(CMAKE_PREFIX_PATH ${NWX_WORKSPACE}/tiledarray) - set(BUILD_PYBIND11_PYBINDINGS ON) # Highly recommended - set(BUILD_SHARED_LIBRARIES TRUE) # Needed for Python bindings + set(MPI_CXX_COMPILER ) + +to your toolchain to point CMake to MPI's C++ compiler wrapper. + +Optional Dependencies +===================== + +These are dependencies that SimDE's build system can not build; however, +they are only required if certain features are enabled. + +Doxygen +------- + +`Home Page `__ + +Used to generate the C++ API documentation. Only needed if ``BUILD_DOCS`` is +set to a truth-y value. + +Python +------ + +Needed if ``BUILD_PYBIND11_PYTHONBINDINGS`` is enabled. You will need the +developer headers and libraries for Python. + +Other Dependencies +================== + +The dependencies in this section can be built by SimDE's build system +when they are not located. Under normal circumstances users can ignore them. +They are listed here primarily for completeness. + +Catch2 +------ + +URL: ``__ + +Used for unit testing. Only needed if unit testing is enabled (controlled by +the CMake variable ``BUILD_TESTING``, which is ``OFF`` by default). - # This is where NWChemEx Python modules will be installed - set(NWX_MODULE_DIR ${NWX_WORKSPACE}/nwx_modules) -Now we are ready to compile SimDE: +Chemist +------- -.. code-block:: terminal +URL: `https://github.com/NWChemEx/Chemist`__ - cmake -H. \ - -Bbuild \ - -DCMAKE_INSTALL_PREFIX:PATH=${NWX_WORKSPACE}/simde \ - -DCMAKE_TOOLCHAIN_FILE:PATH=${PWD}/toolchain.cmake - cmake --build build --target install --parallel 2 +Provides the computational chemistry classes used to define the property types +contained in SimDE. -Here ``${PWD}`` is the full path to the current directory (this variable is set -by default by most Linux shells), and again you may increase ``2`` if your -system has more CPU cores available. +CMaize +------ -********************** -Hello World With SimDE -********************** +URL: ``__ -After executing the above commands you should have a working SimDE installation, -this can be tested by creating a Python script, ``run_simde.py``, containing: +Used to simplify writing a CMake-based build system. The build system will grab +it for you. -.. code-block:: python +ParallelZone +------------ - import simde +URL: ``__ - print("Getting here means Python found SimDE, oh and Hello World!!!") +Parallel runtime system built and maintained by the NWChemEx team. As a +slight caveat, SimDE's build system can only automatically build +ParallelZone if MPI is installed and visible to CMake. +PluginPlay +---------- -This script can then be run by: +URL: ``__ -.. code-block:: terminal +Interfaces defined by SimDE are designed to be used as property types in the +PluginPlay framework. - PYTHONPATH=${NWX_WORKSPACE}/nwx_modules python3 run_simde.py +TensorWrapper +------------- -(assuming ``${NWX_WORKSPACE}/nwx_modules`` isn't already included in your -Python path). +URL: ``__ -***************************** -Troubleshooting SimDE Install -***************************** +Provides a unified API to a number of tensor libraries. TensorWrapper is +currently under heavy development and not considered stable. It is only needed +when ``ENABLE_EXPERIMENTAL_FEATURES`` is set to a truth-y value. -The contents of the toolchain above are fairly minimal. Depending on how far -your system differs from ideality you may need to set additional variables. The -most common ones are: +utilities +--------- +URL: ``__ -- ``CMAKE_C_COMPILER``/ ``CMAKE_CXX_COMPILER`` the full path to your C and C++ - compilers, respectively. -- ``CMAIZE_GITHUB_TOKEN`` this needs to be set to a GitHub PAT while the - NWChemEx repos are still private. -- ``Python3_EXECUTABLE`` point this to the Python command you want to use. +Utility classes used throughout the NWChemEx stack. From a72ac9dfc4915b49d8c1618a919a1171dc3d2369 Mon Sep 17 00:00:00 2001 From: ryan Date: Fri, 26 Jan 2024 13:04:17 -0600 Subject: [PATCH 2/5] backup [skip ci] --- docs/source/background/motivation.rst | 33 +++++++++++++------- docs/source/background/statement_of_need.rst | 6 +++- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/docs/source/background/motivation.rst b/docs/source/background/motivation.rst index 3d76bb37..589aa4a5 100644 --- a/docs/source/background/motivation.rst +++ b/docs/source/background/motivation.rst @@ -36,14 +36,25 @@ facilitates among other things: - Adoption (code that is easier to use gets adopted faster). - Reusability (easy to call from different contexts). -Arguably the largest disadvantage of modular software is that without community -standards developers are unlikely to develop compatible software. In other -words, if each developer writes their modules in isolation, it is very likely -that the resulting modules will rely on different data layouts, argument orders, -conventions, etc. This pitfall is avoided by creating modular software as a -community and adhering to community standards. - -As a community it - -Many of these pitfalls of modularity can be avoided by adhering to community -standards for data classes and module interfaces. +Compared to monolithic software packages, software packages assembled from +modular components can face unique challenges. In particular, if each modular +component is developed in relative isolation (e.g., little to no communication +among development teams) the resulting modules are unlikely to be compatible +with each other. Examples of compatibility issues can include the presence of +different: + +- input/return orderings, +- data structures, +- implicit conventions, +- resource management strategies, and +- parallel runtime systems. + +Left unchecked, developers and maintainers can quickly spend a significant +fraction of their time addressing incompatibilities, thereby negating the +benefits of writing modular software in the first place. Thankfully there is a +straightforward solution, i.e., community standards. + +Ultimately the NWChemEx Community develops and maintains SimDE to provide a +resource for members of the computational chemistry community who want to +develop modular software and ensure that software is compatible with other +modular software within the NWChemEx Community. diff --git a/docs/source/background/statement_of_need.rst b/docs/source/background/statement_of_need.rst index ae477a1f..8b18902f 100644 --- a/docs/source/background/statement_of_need.rst +++ b/docs/source/background/statement_of_need.rst @@ -12,12 +12,16 @@ .. See the License for the specific language governing permissions and .. limitations under the License. +.. _simde_statement_of_need: + ####################### SimDE Statement of Need ####################### The :ref:`simde_motivation` provided some background on developing and working -with modular software. +with modular software and the importance of community standards. Ultimately, +we argue that the creation of a computational chemistry development environment +is needed thus motivating the development of SimDE. ********************************** Enforcement of Community Standards From 0dd2642518ecb51371fa9778b521a22fcee06969 Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 31 Jan 2024 14:58:09 -0600 Subject: [PATCH 3/5] 1.0.0 release candidate --- CMakeLists.txt | 2 +- README.md | 20 ++- docs/requirements.txt | 4 +- .../background/assets/property_types.png | Bin 0 -> 63425 bytes docs/source/background/assets/sdk.png | Bin 0 -> 100893 bytes docs/source/background/index.rst | 1 + docs/source/background/overview.rst | 114 +++++++++++++++ docs/source/background/statement_of_need.rst | 80 +++++++--- docs/source/background/terminology.rst | 30 ++++ docs/source/conf.py | 36 +++-- docs/source/developer/design/architecture.rst | 137 ++++++++++++++++++ .../developer/design/assets/architecture.png | Bin 0 -> 46653 bytes .../developer/{ => design}/design_notes.rst | 0 docs/source/developer/design/index.rst | 25 ++++ .../design/property_types/basis_set.rst | 27 ++++ .../design/property_types/chemical_system.rst | 28 ++++ .../design/property_types/energy.rst | 27 ++++ .../developer/design/property_types/index.rst | 25 ++++ docs/source/developer/index.rst | 3 +- docs/source/developer/structure.rst | 80 ---------- docs/source/index.rst | 4 +- docs/source/install.rst | 28 +--- .../atomic_basis_set.hpp | 0 .../basis_set.hpp} | 4 +- .../molecular_basis_set.hpp | 0 .../Z_from_symbol.hpp | 0 .../simde/{atoms => chemical_system}/atom.hpp | 0 .../chemical_system.hpp} | 7 +- .../molecule_from_string.hpp | 0 .../symbol_from_Z.hpp | 0 include/simde/energy/ao_energy.hpp | 4 +- include/simde/energy/energy.hpp | 4 +- .../{energy_class.hpp => total_energy.hpp} | 15 +- include/simde/simde.hpp | 5 +- src/python/basis_set/export_basis_set.hpp | 4 +- .../export_chemical_system.hpp} | 5 +- src/python/energy/export_energy.hpp | 2 +- src/python/module.cpp | 4 +- .../basis_set}/atomic_basis_set.cpp | 4 +- .../basis_set}/molecular_basis_set.cpp | 4 +- .../chemical_system}/Z_from_symbol.cpp | 4 +- .../chemical_system}/atom.cpp | 4 +- .../chemical_system}/molecule_from_string.cpp | 4 +- .../chemical_system}/symbol_from_Z.cpp | 4 +- .../{unit => unit_tests}/energy/energy.cpp | 6 +- tests/cxx/{unit => unit_tests}/test_main.cpp | 0 .../test_property_type.hpp | 0 .../{atoms => chemical_system}/__init__.py | 0 .../test_chemical_system.py} | 0 tests/python/unit_tests/energy/test_energy.py | 6 +- version.txt | 1 - 51 files changed, 558 insertions(+), 204 deletions(-) create mode 100644 docs/source/background/assets/property_types.png create mode 100644 docs/source/background/assets/sdk.png create mode 100644 docs/source/background/terminology.rst create mode 100644 docs/source/developer/design/architecture.rst create mode 100644 docs/source/developer/design/assets/architecture.png rename docs/source/developer/{ => design}/design_notes.rst (100%) create mode 100644 docs/source/developer/design/index.rst create mode 100644 docs/source/developer/design/property_types/basis_set.rst create mode 100644 docs/source/developer/design/property_types/chemical_system.rst create mode 100644 docs/source/developer/design/property_types/energy.rst create mode 100644 docs/source/developer/design/property_types/index.rst delete mode 100644 docs/source/developer/structure.rst rename include/simde/{basis_sets => basis_set}/atomic_basis_set.hpp (100%) rename include/simde/{basis_sets/basis_sets.hpp => basis_set/basis_set.hpp} (85%) rename include/simde/{basis_sets => basis_set}/molecular_basis_set.hpp (100%) rename include/simde/{atoms => chemical_system}/Z_from_symbol.hpp (100%) rename include/simde/{atoms => chemical_system}/atom.hpp (100%) rename include/simde/{atoms/atoms.hpp => chemical_system/chemical_system.hpp} (75%) rename include/simde/{ => chemical_system}/molecule_from_string.hpp (100%) rename include/simde/{atoms => chemical_system}/symbol_from_Z.hpp (100%) rename include/simde/energy/{energy_class.hpp => total_energy.hpp} (75%) rename src/python/{atoms/export_atoms.hpp => chemical_system/export_chemical_system.hpp} (84%) rename tests/cxx/{unit/basis_sets => unit_tests/basis_set}/atomic_basis_set.cpp (94%) rename tests/cxx/{unit/basis_sets => unit_tests/basis_set}/molecular_basis_set.cpp (93%) rename tests/cxx/{unit/atoms => unit_tests/chemical_system}/Z_from_symbol.cpp (93%) rename tests/cxx/{unit/atoms => unit_tests/chemical_system}/atom.cpp (94%) rename tests/cxx/{unit => unit_tests/chemical_system}/molecule_from_string.cpp (92%) rename tests/cxx/{unit/atoms => unit_tests/chemical_system}/symbol_from_Z.cpp (93%) rename tests/cxx/{unit => unit_tests}/energy/energy.cpp (82%) rename tests/cxx/{unit => unit_tests}/test_main.cpp (100%) rename tests/cxx/{unit => unit_tests}/test_property_type.hpp (100%) rename tests/python/unit_tests/{atoms => chemical_system}/__init__.py (100%) rename tests/python/unit_tests/{atoms/test_atoms.py => chemical_system/test_chemical_system.py} (100%) delete mode 100644 version.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index c69bf6e1..c3997622 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,7 +105,7 @@ if("${BUILD_TESTING}") cmaize_add_tests( test_unit_${PROJECT_NAME} - SOURCE_DIR "${CXX_TEST_DIR}/unit" + SOURCE_DIR "${CXX_TEST_DIR}/unit_tests" INCLUDE_DIRS "${SIMDE_SOURCE_DIR}/${PROJECT_NAME}" DEPENDS Catch2 ${PROJECT_NAME} ) diff --git a/README.md b/README.md index 09a4ccb3..36acc5fb 100644 --- a/README.md +++ b/README.md @@ -20,10 +20,26 @@ [![Citation Badge](https://api.juleskreuer.eu/citation-badge.php?doi=10.1109/MCSE.2018.2884921)](https://juleskreuer.eu/projekte/citation-badge/) -The Simulation Development Environment (SimDE) is the... +The Simulation Development Environment (SimDE) includes software designed to +facilitate the creation of modular computational chemistry software. The name +"Development Environment" is an unfortunate misnomer, as SimDE is really a +software development kit. # Features +SimDE functions as a bit of a meta-target in that one of its primary goals is +to provide a single software package which provides: + +- [PluginPlay](https://github.com/NWChemEx/PluginPlay) - a framework for + managing modular, performant, scientific software. +- [Chemist](https://github.com/NWChemEx/Chemist) - a set of high-performance + data structures for computational chemistry. +- Standardized [property types](https://nwchemex.github.io/PluginPlay/background/terminology.html#property-type) for computational chemistry. + +In turn, developers need only pull SimDE and they are ready to start writing +computational chemistry plugins that are compatible with PluginPlay and the +NWChemEx community's ecosystem. + # Installation SimDE ultimately uses CMake for configuring and building. This means that @@ -42,7 +58,7 @@ More detailed install instructions can be found - [Contributor Guidelines](https://github.com/NWChemEx/.github/blob/1a883d64519f62da7c8ba2b28aabda7c6f196b2c/.github/CONTRIBUTING.md) - [Contributor License Agreement](https://github.com/NWChemEx/.github/blob/master/.github/CONTRIBUTING.md#contributor-license-agreement-cla) -- [Developer Documentation](https://nwchemex.github.io/PluginPlay/developer/index.html) +- [Developer Documentation](https://nwchemex.github.io/SimDE/developer/index.html) - [Code of Conduct](https://github.com/NWChemEx/.github/blob/master/.github/CODE_OF_CONDUCT.md) # Acknowledgments diff --git a/docs/requirements.txt b/docs/requirements.txt index 82133027..414087aa 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,2 +1,4 @@ sphinx -sphinx_rtd_theme +sphinx_rtd_theme==1.3.0 +sphinxcontrib-bibtex +sphinx_tabs diff --git a/docs/source/background/assets/property_types.png b/docs/source/background/assets/property_types.png new file mode 100644 index 0000000000000000000000000000000000000000..904027ebca017cd5be10aae422d9ef898c27d8d6 GIT binary patch literal 63425 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

yc7G@gFRQh`xMx^ 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 Bq|5*S literal 0 HcmV?d00001 diff --git a/docs/source/background/assets/sdk.png b/docs/source/background/assets/sdk.png new file mode 100644 index 0000000000000000000000000000000000000000..da564861a4dfc60ce9221f398bc3d9ae2ad651fa GIT binary patch literal 100893 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 HOaK1|W_hS+ literal 0 HcmV?d00001 diff --git a/docs/source/background/index.rst b/docs/source/background/index.rst index 1a4d7777..c9597bb6 100644 --- a/docs/source/background/index.rst +++ b/docs/source/background/index.rst @@ -27,3 +27,4 @@ project. motivation statement_of_need overview + terminology diff --git a/docs/source/background/overview.rst b/docs/source/background/overview.rst index e69de29b..ac7557a0 100644 --- a/docs/source/background/overview.rst +++ b/docs/source/background/overview.rst @@ -0,0 +1,114 @@ +.. Copyright 2024 NWChemEx-Project +.. +.. Licensed under the Apache License, Version 2.0 (the "License"); +.. you may not use this file except in compliance with the License. +.. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. + +.. _simde_overview: + +############## +SimDE Overview +############## + +:ref:`simde_statement_of_need` listed the reasons that SimDE was necessary. The +present section provides a high-level overview of SimDE. + +********************************** +NWChemEx Ecosystem Development Kit +********************************** + +We presume that most users of SimDE are using SimDE as an :term:`SDK` for +creating plugins and/or modules which are compatible with the NWChemEx +ecosystem. + +.. _fig_simde_sdk: + +.. figure:: assets/sdk.png + :align: center + + Overview of the SimDE SDK. + +:numref:`fig_simde_sdk` summarizes the structure of the SDK provided by SimDE. + +At the base of the SDK are three, somewhat independent, libraries: + +- `ParallelZone `__ is a parallel + runtime system. ParallelZone provides abstractions for interacting with + the resources (e.g., GPUs, CPUs, memory, processes, and file system) available + to the program. +- `PluginPlay `__ is an inversion-of- + control framework which facilitates creating software packages from modular + components. The resulting software package can be easily extended by users + and developers by adding new modules. +- `Chemist `__ provides data structures + for concepts commonly encountered in computational chemistry (e.g. atoms, + molecules, and wavefunctions). + +Users of SimDE have direct access to all three of these libraries and are +encouraged to use these libraries directly. Generally speaking SimDE users +should NOT have to work with the dependencies underpinning ParallelZone, +PluginPlay, or Chemist. + +.. note:: + + If you encounter performance issues with any part of SimDE which would + require bypassing the abstractions provided by that component please open + an issue with the developers. + +*********************** +NWChemEx Property Types +*********************** + +In addition to serving as a meta-package, SimDE also provides the computational +chemistry property types used throughout NWChemEx. Property types help ensure +that modular software that is meant to be interoperable adheres to the same +interfaces. + +.. _fig_property_types: + +.. figure:: assets/property_types.png + :align: center + + Grouping of property types in SimDE. Within each component are high-level + examples of the types of properties property types in that component can + compute. + +:numref:`fig_property_types` shows the categories of property types presently +in SimDE and the types of properties which can be computed. These categories +are summarized below. + +Chemical System +=============== + +Property types in this category are designed to facilitate the creation of +objects from the Chemical System component of Chemist. Examples of property +types in this category include: + +- Creation of ``Atom`` instances given the atomic number or atomic symbol. +- Mapping of string representations of a molecule to ``Molecule`` instances. + +Basis Set +========= + +Property types in this category help create molecular basis sets. Examples of +property types include: + +- Creation of ``AtomicBasisSet`` objects from atomic number. +- Creation of ``AOBasisSet`` objects from ``Molecule`` objects. + +Energy +====== + +Property types in this category compute energies of chemical systems. Examples +of property types include: + +- Computing the total energy of a ``ChemicalSystem``. +- Computing the total energy given a ``ChemicalSystem`` and an ``AOBasisSet``. diff --git a/docs/source/background/statement_of_need.rst b/docs/source/background/statement_of_need.rst index 8b18902f..fe0f36cb 100644 --- a/docs/source/background/statement_of_need.rst +++ b/docs/source/background/statement_of_need.rst @@ -18,36 +18,68 @@ SimDE Statement of Need ####################### -The :ref:`simde_motivation` provided some background on developing and working -with modular software and the importance of community standards. Ultimately, -we argue that the creation of a computational chemistry development environment -is needed thus motivating the development of SimDE. +:ref:`simde_motivation` provided some background on developing and working +with modular software and the importance of community standards. The NWChemEx +community has developed a number of software products to serve as the +infrastructure base for developing high-performance computational chemistry +software. Given that said infrastructure is new to the broader community, it is +no surprise that the community has yet to develop standards around it. SimDE +rectifies this problem, by providing a software development kit for writing +plugins within the NWChemEx ecosystem. The specific needs addressed by SimDE +are detailed on this page. -********************************** -Enforcement of Community Standards -********************************** +***************************************** +Enforcement of Interoperability Standards +***************************************** -Modular software is most impactful when paired with interoperability (the -requirement that two components can be swapped out without needing to alter -the calling code). Key to interoperability is the use of standardized -interfaces. +The end goal of modular scientific software should be reusability. Reusability +is greatly enhanced by also striving for interoperability, i.e.,the idea that +two components providing the same feature can be swapped and the code will "just +work". Community standards for data structures and :term:`APIs ` are +essential to interoperability efforts, and we need tools to help enforce these +standards. +The establishment of community standards is beyond our scope. Rather we assume +such standards already exist and focus one enforcing these standards within +`PluginPlay `__. In PluginPlay +standardized interfaces are enforced by writing +`property types `__. Thus we have a need to develop +infrastructure for writing computational chemistry property types (think type +traits, for example) and to a need to use this infrastructure to produce +property types for quantities of interest in computational chemistry. -************** -Property Types -************** +********************* +Property Type Hosting +********************* -The NWChemEx team wrote -`PluginPlay `__ in order to provide the -infrastructure needed to manage software comprised of modular code. In -particular PluginPlay facilitates the: discovery, loading, and selecting of -modules. SimDE is needed because.In PluginPlay parlance these standardized interfaces are called -property types and they are to be defined by the domain experts. Ultimately, -the creation for SimDE was motivated by the need for a centralized location to -store standardized interfaces used in computational chemistry. +PluginPlay strives to make writing property types as easy as possible. Even if +property types are easy to write, best practice is to avoid having the community +need to write the same property type multiple times. To this end, we need a +centralized place for hosting already developed property types. Having a +centralized repo also makes it easier for developers to check if a property +type has already been standardized. +******************************************* +NWChemEx Community Software Development Kit +******************************************* +The NWChemEx software stack is modular, and layered, in order to promote reuse +by other projects. While useful from the perspective of reuse, this complicates +development because developers need to wrangle together several components +before they can begin development. The traditional solution to this problem is +to provide developers a software development kit. After installing the software +development kit, developers are ready to develop, i.e., no need to install the +pieces individually. -TODO: Explain how SimDE eases plugin development +*********************************************** +Developer Tutorials for Writing Plugins/Modules +*********************************************** -TODO: Other standardization options +PluginPlay is designed to be domain agnostic. Thus we limited PluginPlay's +tutorials to fundamental science concepts in order to appeal to wide set of +potential users. That said, we also realize that many developers may prefer +domain-specific tutorials as they provide less of a cognitive leap from tutorial +to practice. SimDE is the first place in the NWChemEx Community stack which +assumes PluginPlay is being used and that the application is computational +chemistry. SimDE is thus a logical home for tutorials on developing +plugins/modules which leverage computational chemistry concepts. diff --git a/docs/source/background/terminology.rst b/docs/source/background/terminology.rst new file mode 100644 index 00000000..9dce182c --- /dev/null +++ b/docs/source/background/terminology.rst @@ -0,0 +1,30 @@ +.. Copyright 2024 NWChemEx-Project +.. +.. Licensed under the Apache License, Version 2.0 (the "License"); +.. you may not use this file except in compliance with the License. +.. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. + +############################# +Terminology and Abbreviations +############################# + + +.. glossary:: + + API + Short for application programming interface. This is the interface a + program exposes so that it can be called by other software. + + SDK + Short for software development kit. SDKs are packages meant to facilitate + developing software for specific platforms. Most SDKs contain the + libraries and tools necessary to deploy on the platform as well as + extensions which facilitate development and/or deployment. diff --git a/docs/source/conf.py b/docs/source/conf.py index 0226384f..d5883ffe 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -27,11 +27,7 @@ project = u'SimDE' copyright = u'2020, NWChemEx Team' author = u'NWChemEx Team' - -# Get the version from version.txt -with open('../../version.txt', 'r') as file: - version = file.read().replace('\n', '') -# The full version, including alpha/beta/rc tags +version = '1.0.0' release = version ############################################################################## @@ -42,19 +38,20 @@ # If your documentation needs a minimal Sphinx version, state it here. # -# needs_sphinx = '1.0' +needs_sphinx = '1.3' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', - 'sphinx.ext.doctest', - 'sphinx.ext.intersphinx', - 'sphinx.ext.todo', - 'sphinx.ext.coverage', 'sphinx.ext.mathjax', - 'sphinx.ext.githubpages' + 'sphinx.ext.githubpages', + 'sphinx.ext.autosummary', + 'sphinx_rtd_theme', + # 'sphinxcontrib.bibtex', + 'sphinx_tabs.tabs', + 'sphinx.ext.intersphinx', ] dir_path = os.path.dirname(os.path.realpath(__file__)) doc_path = os.path.dirname(dir_path) @@ -77,7 +74,7 @@ # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +language = 'en' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. @@ -87,6 +84,8 @@ # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' +numfig = True +numfig_secnum_depth = 0 # -- Options for HTML output ------------------------------------------------- @@ -95,11 +94,15 @@ # html_theme = 'sphinx_rtd_theme' +html_logo = "assets/logo.png" + # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # -# html_theme_options = {} +html_theme_options = { + 'logo_only': True +} # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -176,9 +179,4 @@ # -- Options for intersphinx extension --------------------------------------- # Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'https://docs.python.org/': None} - -# -- Options for todo extension ---------------------------------------------- - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = True +intersphinx_mapping = {'python': ('https://docs.python.org/3', None)} diff --git a/docs/source/developer/design/architecture.rst b/docs/source/developer/design/architecture.rst new file mode 100644 index 00000000..d7b6fdad --- /dev/null +++ b/docs/source/developer/design/architecture.rst @@ -0,0 +1,137 @@ +.. Copyright 2024 NWChemEx-Project +.. +.. Licensed under the Apache License, Version 2.0 (the "License"); +.. you may not use this file except in compliance with the License. +.. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. + +.. _architecture_of_simde: + +##################### +Architecture of SimDE +##################### + +In :ref:`simde_statement_of_need` we described the needs SimDE was designed +to address. The actual SimDE library is largely a meta-package, i.e., it bundles +a number of development libraries together into a single package. Architecture +and design of those libraries is outside our present scope and falls under the +purview of the respective libraries. The discussions here focus on the +architecture and design of the pieces of SimDE for which development occurs in +the SimDE repo. For the most part, this limits our discussion to computational +chemistry property types. + +*************************** +Architecture Considerations +*************************** + +The present architecture of SimDE was developed from the following +considerations. + +.. _as_parallel_chemist_architecture: + +parallel Chemist architecture + From a computer science perspective, modules are pure functions. Pure + functions are maps from inputs to results. Having a module map to multiple + results has its time and place, but most modules will map to a single result. + Since these results are usually Chemist objects, there is a natural mapping + from the architecture of Chemist to the architecture of SimDE. + + - The consequences of this consideration are that developers will have an + easier time finding things and figuring out where to put things if we + define the same components as Chemist. + +properties beyond Chemist + While many property types will result in Chemist objects, not all will. For + example a number of property types will result in plain old data or tensors. + + - The consequence here is that the :ref:`as_parallel_chemist_architecture` + consideration alone is not sufficient for defining all of SimDE's + architecture. + +.. _as_energies: + +energies + One of the most important properties in computational chemistry are + "energies". This includes not only total energies, but also relative + energies, and components of total/relative energies. + +******************************** +Overview of SimDE's Architecture +******************************** + +.. _fig_simde_architecture: + +.. figure:: assets/architecture.png + :align: center + + Architecture of the SimDE library. + +:numref:`fig_simde_architecture` shows the current architecture of SimDE. At +present SimDE's source consists of a single property type component. + +Property Types +============== + +Following from :ref:`as_parallel_chemist_architecture`, SimDE's property type +component is structured to contain sub-components for each component of Chemist. + +.. note:: + + Modules are assumed to wrap algorithms, so property types should only be + defined when there is a need for an algorithm to convert from the inputs to + the result. For example, modules should not be used for trivial calls to an + object's constructor. + +Basis Set +--------- + +Main page: :ref:`design_of_basis_set_property_types`. + +Property types in the "Basis Set" sub-component of SimDE define APIs for +creating Chemist objects such as ``AOBasisSet`` and ``AtomicBasisSet``. +Typically these property types are used for modules which go from more +traditional user inputs such as a molecular geometry and an atomic basis set +specification like "6-31G*" to an actual ``AOBasisSet`` object. + +Chemical System +--------------- + +Main page: :ref:`design_of_chemical_system_property_types`. + +Property types in the "Chemical System" sub-component of SimDE define APIs for +creating Chemist objects such as ``Molecule`` and ``ChemicalSystem``. Like the +"Basis Set" sub-component, many of these modules are primarily used to convert +from more traditional user inputs like atomic symbols and Cartesian coordinates +to an actual ``Molecule`` object. + +Energy +------ + +Main page: :ref:`design_of_energy_property_types`. + +The energy of a chemical system is a fundamental property in computational +chemistry. Unsurprisingly many computational chemistry methods strive to be +black boxes for computing the total energy of a chemical system. The mapping +from a ``ChemicalSystem`` object to a total energy defines the ``TotalEnergy`` +property type. In practice, methods often require additional inputs in order +to compute the total energy. The "Energy" sub-component collects property types +for computing the total energy, relative energies, and components of the +other energies. + +******* +Summary +******* + +:ref:`as_parallel_chemist_architecture` + The "Property Types" component contains sub-components for each component of + Chemist. + +:ref:`as_energies` + SimDE's "Property Type" component contains an "Energy" sub-component. diff --git a/docs/source/developer/design/assets/architecture.png b/docs/source/developer/design/assets/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7f150dcf3937dc0bf796c0663da8c654595940 GIT binary patch literal 46653 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 literal 0 HcmV?d00001 diff --git a/docs/source/developer/design_notes.rst b/docs/source/developer/design/design_notes.rst similarity index 100% rename from docs/source/developer/design_notes.rst rename to docs/source/developer/design/design_notes.rst diff --git a/docs/source/developer/design/index.rst b/docs/source/developer/design/index.rst new file mode 100644 index 00000000..d84d63ce --- /dev/null +++ b/docs/source/developer/design/index.rst @@ -0,0 +1,25 @@ +.. Copyright 2024 NWChemEx-Project +.. +.. Licensed under the Apache License, Version 2.0 (the "License"); +.. you may not use this file except in compliance with the License. +.. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. + +########################## +SimDE Design Documentation +########################## + +.. toctree:: + :maxdepth: 2 + :caption: Contents + + architecture + property_types/index + design_notes diff --git a/docs/source/developer/design/property_types/basis_set.rst b/docs/source/developer/design/property_types/basis_set.rst new file mode 100644 index 00000000..ebe97bc8 --- /dev/null +++ b/docs/source/developer/design/property_types/basis_set.rst @@ -0,0 +1,27 @@ +.. Copyright 2024 NWChemEx-Project +.. +.. Licensed under the Apache License, Version 2.0 (the "License"); +.. you may not use this file except in compliance with the License. +.. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. + +.. _design_of_basis_set_property_types: + +################################## +Design of Basis Set Property Types +################################## + +The need for property types to define interfaces for creating objects from +Chemist's "Basis Set" component was motivated in :ref:`architecture_of_simde`. +This page details the design of those property types. + +.. note:: + + TODO: Write me!!! diff --git a/docs/source/developer/design/property_types/chemical_system.rst b/docs/source/developer/design/property_types/chemical_system.rst new file mode 100644 index 00000000..5ee8b603 --- /dev/null +++ b/docs/source/developer/design/property_types/chemical_system.rst @@ -0,0 +1,28 @@ +.. Copyright 2024 NWChemEx-Project +.. +.. Licensed under the Apache License, Version 2.0 (the "License"); +.. you may not use this file except in compliance with the License. +.. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. + +.. _design_of_chemical_system_property_types: + +######################################## +Design of Chemical System Property Types +######################################## + +The need for property types to define interfaces for creating objects from +Chemist's "Chemical System" component was motivated in +:ref:`architecture_of_simde`. This page details the design of those property +types. + +.. note:: + + TODO: Write me!!! diff --git a/docs/source/developer/design/property_types/energy.rst b/docs/source/developer/design/property_types/energy.rst new file mode 100644 index 00000000..6d4e3e7d --- /dev/null +++ b/docs/source/developer/design/property_types/energy.rst @@ -0,0 +1,27 @@ +.. Copyright 2024 NWChemEx-Project +.. +.. Licensed under the Apache License, Version 2.0 (the "License"); +.. you may not use this file except in compliance with the License. +.. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. + +.. _design_of_energy_property_types: + +############################### +Design of Energy Property Types +############################### + +The need for property types to define interfaces for modules capable of +computing energies was described in the :ref:`architecture_of_simde` section. +This page details the design of those property types. + +.. note:: + + TODO: Write me!!! diff --git a/docs/source/developer/design/property_types/index.rst b/docs/source/developer/design/property_types/index.rst new file mode 100644 index 00000000..90d2d2eb --- /dev/null +++ b/docs/source/developer/design/property_types/index.rst @@ -0,0 +1,25 @@ +.. Copyright 2024 NWChemEx-Project +.. +.. Licensed under the Apache License, Version 2.0 (the "License"); +.. you may not use this file except in compliance with the License. +.. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. + +######################################## +SimDE Property Type Design Documentation +######################################## + +.. toctree:: + :maxdepth: 2 + :caption: Contents + + basis_set + chemical_system + energy diff --git a/docs/source/developer/index.rst b/docs/source/developer/index.rst index 0e142ccc..19f8a9ea 100644 --- a/docs/source/developer/index.rst +++ b/docs/source/developer/index.rst @@ -24,6 +24,5 @@ assumed that the reader is already familiar with :ref:`simde_background`. :maxdepth: 2 :caption: Contents: - design_notes - structure + design/index NWChemEx author documentation diff --git a/docs/source/developer/structure.rst b/docs/source/developer/structure.rst deleted file mode 100644 index 2f431254..00000000 --- a/docs/source/developer/structure.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. Copyright 2022 NWChemEx-Project -.. -.. Licensed under the Apache License, Version 2.0 (the "License"); -.. you may not use this file except in compliance with the License. -.. You may obtain a copy of the License at -.. -.. http://www.apache.org/licenses/LICENSE-2.0 -.. -.. Unless required by applicable law or agreed to in writing, software -.. distributed under the License is distributed on an "AS IS" BASIS, -.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -.. See the License for the specific language governing permissions and -.. limitations under the License. - -########################### -Structure of the SimDE Repo -########################### - -Ultimately there's a lot of property types used throughout an electronic -structure code. To make the developer's life easier we have organized the -property types into groups. This page provides an explanation of the groups - -.. note:: - - Many of the property types on this page are experimental features and the - groupings are thus subject to change - -******* -Density -******* - -Property types focused on computing electron densities. These include property -types for computing and updating guesses for mean-field theories (*i.e.*, -respectively the ``GuessDensity`` and ``UpdateDenstiy`` property types). - -****** -Energy -****** - -Property types focused on computing energies. For the most part these property -types differ from one another in terms of the inputs they accept. For example -``Energy`` serves as a base property type which takes a ``ChemicalSystem`` and -computes the energy of it, whereas ``AOEnergy`` takes an ``AOSpace`` and a -``ChemicalSystem``. - -************** -Linear Algebra -************** - -These are property types related to performing numeric linear algebra on -tensors. - -********* -Operators -********* - -These are property types which compute operators, for example ``Fock`` takes a -``Hamiltonian`` instance and a one-electron desnity and turns it into a ``Fock`` -operator. - -************** -Orbital Spaces -************** - -These are property types which focus on computing new orbital spaces. For -example ``LocalizedOrbitals`` takes an existing orbital space and localizes it. - -********************** -Tensor Representations -********************** - -These are property types which deal with formation of tensor representations of -operators. Also included are property types which perform orbital -transformations of tensor representations. - -************* -Wavefunctions -************* - -These are property types which deal with computing wavefunctions. diff --git a/docs/source/index.rst b/docs/source/index.rst index d5d72b06..ead35951 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -16,8 +16,8 @@ SimDE: The Simulation Development Environment ############################################# -SimDE provides a development environment for writing computational chemistry -plugins compatible with PluginPlay. +SimDE provides a development kit for writing computational chemistry +plugins compatible with PluginPlay and the NWChemEx Community. .. toctree:: diff --git a/docs/source/install.rst b/docs/source/install.rst index 656d98a7..284e8f81 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -99,14 +99,6 @@ Required Dependencies These are dependencies which must be pre-installed and can not be built by SimDE's build system. -Boost ------ - -SimDE's Chemist and PluginPlay dependencies need access to some of Boost's -header-only libraries. If SimDE is building either Chemist or PluginPlay then -SimDE will need to know where to find Boost. Boost is a very common C++ -dependency so check your OS's package manager. - C++ Compiler ------------ @@ -116,24 +108,6 @@ your OS's package manager. CMake detects your C++ compiler via the value of ``CMAKE_CXX_COMPILER``. So ensure ``CMAKE_CXX_COMPILER`` is set to the C++ compiler you want to use. -MPI ----- - -SimDE's parallel runtime, ParallelZone, implicitly brings in MPI (the message -passing interface). Users must have an MPI distribution -installed prior to building ParallelZone. MPI distributions exist in most -major OS-level package managers, so check your package manager before -installing MPI from source.While CMake can find MPI if it is installed in your -OS's standard spot, you may need to give CMake a hint in some cases. MPI -provides compiler wrappers and it's best to let CMake discover MPI via the C++ -wrapper. Add: - -.. code-block:: cmake - - set(MPI_CXX_COMPILER ) - -to your toolchain to point CMake to MPI's C++ compiler wrapper. - Optional Dependencies ===================== @@ -173,7 +147,7 @@ the CMake variable ``BUILD_TESTING``, which is ``OFF`` by default). Chemist ------- -URL: `https://github.com/NWChemEx/Chemist`__ +URL: ``__ Provides the computational chemistry classes used to define the property types contained in SimDE. diff --git a/include/simde/basis_sets/atomic_basis_set.hpp b/include/simde/basis_set/atomic_basis_set.hpp similarity index 100% rename from include/simde/basis_sets/atomic_basis_set.hpp rename to include/simde/basis_set/atomic_basis_set.hpp diff --git a/include/simde/basis_sets/basis_sets.hpp b/include/simde/basis_set/basis_set.hpp similarity index 85% rename from include/simde/basis_sets/basis_sets.hpp rename to include/simde/basis_set/basis_set.hpp index 1c838c8a..e7934ef5 100644 --- a/include/simde/basis_sets/basis_sets.hpp +++ b/include/simde/basis_set/basis_set.hpp @@ -15,5 +15,5 @@ */ #pragma once -#include "simde/basis_sets/atomic_basis_set.hpp" -#include "simde/basis_sets/molecular_basis_set.hpp" \ No newline at end of file +#include +#include diff --git a/include/simde/basis_sets/molecular_basis_set.hpp b/include/simde/basis_set/molecular_basis_set.hpp similarity index 100% rename from include/simde/basis_sets/molecular_basis_set.hpp rename to include/simde/basis_set/molecular_basis_set.hpp diff --git a/include/simde/atoms/Z_from_symbol.hpp b/include/simde/chemical_system/Z_from_symbol.hpp similarity index 100% rename from include/simde/atoms/Z_from_symbol.hpp rename to include/simde/chemical_system/Z_from_symbol.hpp diff --git a/include/simde/atoms/atom.hpp b/include/simde/chemical_system/atom.hpp similarity index 100% rename from include/simde/atoms/atom.hpp rename to include/simde/chemical_system/atom.hpp diff --git a/include/simde/atoms/atoms.hpp b/include/simde/chemical_system/chemical_system.hpp similarity index 75% rename from include/simde/atoms/atoms.hpp rename to include/simde/chemical_system/chemical_system.hpp index d8769f7b..55d77c8a 100644 --- a/include/simde/atoms/atoms.hpp +++ b/include/simde/chemical_system/chemical_system.hpp @@ -15,6 +15,7 @@ */ #pragma once -#include "simde/atoms/Z_from_symbol.hpp" -#include "simde/atoms/atom.hpp" -#include "simde/atoms/symbol_from_Z.hpp" +#include +#include +#include +#include diff --git a/include/simde/molecule_from_string.hpp b/include/simde/chemical_system/molecule_from_string.hpp similarity index 100% rename from include/simde/molecule_from_string.hpp rename to include/simde/chemical_system/molecule_from_string.hpp diff --git a/include/simde/atoms/symbol_from_Z.hpp b/include/simde/chemical_system/symbol_from_Z.hpp similarity index 100% rename from include/simde/atoms/symbol_from_Z.hpp rename to include/simde/chemical_system/symbol_from_Z.hpp diff --git a/include/simde/energy/ao_energy.hpp b/include/simde/energy/ao_energy.hpp index 0b7106b0..09fff881 100644 --- a/include/simde/energy/ao_energy.hpp +++ b/include/simde/energy/ao_energy.hpp @@ -16,12 +16,12 @@ #pragma once #include -#include +#include #include namespace simde { -DECLARE_DERIVED_PROPERTY_TYPE(AOEnergy, Energy); +DECLARE_DERIVED_PROPERTY_TYPE(AOEnergy, TotalEnergy); PROPERTY_TYPE_INPUTS(AOEnergy) { using ao_basis = const type::ao_basis_set&; diff --git a/include/simde/energy/energy.hpp b/include/simde/energy/energy.hpp index eaed986b..6dcf7836 100644 --- a/include/simde/energy/energy.hpp +++ b/include/simde/energy/energy.hpp @@ -21,5 +21,5 @@ */ #pragma once -#include "simde/energy/ao_energy.hpp" -#include "simde/energy/energy_class.hpp" +#include +#include diff --git a/include/simde/energy/energy_class.hpp b/include/simde/energy/total_energy.hpp similarity index 75% rename from include/simde/energy/energy_class.hpp rename to include/simde/energy/total_energy.hpp index 8ec8af84..35b1cb39 100644 --- a/include/simde/energy/energy_class.hpp +++ b/include/simde/energy/total_energy.hpp @@ -20,19 +20,18 @@ namespace simde { -/** @brief The property type for modules that compute energies and energy - * derivatives of molecular systems. +/** @brief The property type for modules that compute the total energy of a + * chemical system. * * Arguably one of the most important quantities in electronic structure theory - * is the energy of the system. Modules that are capable of computing the - * energy of a molecular system satisfy the Energy property type. + * is the total energy of the system. Modules that are capable of computing the + * total energy of a chemical system satisfy the TotalEnergy property type. * - * @tparam ElementType The type of the elements in the tensors. */ -DECLARE_PROPERTY_TYPE(Energy); +DECLARE_PROPERTY_TYPE(TotalEnergy); //-------------------------------Implementations-------------------------------- -PROPERTY_TYPE_INPUTS(Energy) { +PROPERTY_TYPE_INPUTS(TotalEnergy) { using chem_sys_t = const type::chemical_system&; auto rv = pluginplay::declare_input().add_field("Chemical System"); @@ -40,7 +39,7 @@ PROPERTY_TYPE_INPUTS(Energy) { return rv; } -PROPERTY_TYPE_RESULTS(Energy) { +PROPERTY_TYPE_RESULTS(TotalEnergy) { auto rv = pluginplay::declare_result().add_field("Energy"); rv["Energy"].set_description("The computed energy"); return rv; diff --git a/include/simde/simde.hpp b/include/simde/simde.hpp index 66fc908a..6414cc02 100644 --- a/include/simde/simde.hpp +++ b/include/simde/simde.hpp @@ -15,8 +15,7 @@ */ #pragma once -#include -#include +#include +#include #include -#include #include diff --git a/src/python/basis_set/export_basis_set.hpp b/src/python/basis_set/export_basis_set.hpp index 5c46eb50..3d43ba3e 100644 --- a/src/python/basis_set/export_basis_set.hpp +++ b/src/python/basis_set/export_basis_set.hpp @@ -17,8 +17,8 @@ #pragma once #include "../export_simde.hpp" #include -#include -#include +#include +#include namespace simde { diff --git a/src/python/atoms/export_atoms.hpp b/src/python/chemical_system/export_chemical_system.hpp similarity index 84% rename from src/python/atoms/export_atoms.hpp rename to src/python/chemical_system/export_chemical_system.hpp index caf3c285..9c016a0d 100644 --- a/src/python/atoms/export_atoms.hpp +++ b/src/python/chemical_system/export_chemical_system.hpp @@ -17,15 +17,16 @@ #pragma once #include "../export_simde.hpp" #include -#include +#include namespace simde { -inline void export_atoms(python_module_reference m) { +inline void export_chemical_system(python_module_reference m) { EXPORT_PROPERTY_TYPE(AtomFromZ, m); EXPORT_PROPERTY_TYPE(AtomFromSym, m); EXPORT_PROPERTY_TYPE(SymbolFromZ, m); EXPORT_PROPERTY_TYPE(ZFromSymbol, m); + EXPORT_PROPERTY_TYPE(MoleculeFromString, m); } } // namespace simde diff --git a/src/python/energy/export_energy.hpp b/src/python/energy/export_energy.hpp index 757e207b..c22d4290 100644 --- a/src/python/energy/export_energy.hpp +++ b/src/python/energy/export_energy.hpp @@ -22,7 +22,7 @@ namespace simde { inline void export_energy(python_module_reference m) { - EXPORT_PROPERTY_TYPE(Energy, m); + EXPORT_PROPERTY_TYPE(TotalEnergy, m); EXPORT_PROPERTY_TYPE(AOEnergy, m); } diff --git a/src/python/module.cpp b/src/python/module.cpp index 6603846f..148a80aa 100644 --- a/src/python/module.cpp +++ b/src/python/module.cpp @@ -14,8 +14,8 @@ * limitations under the License. */ -#include "atoms/export_atoms.hpp" #include "basis_set/export_basis_set.hpp" +#include "chemical_system/export_chemical_system.hpp" #include "energy/export_energy.hpp" #include "export_simde.hpp" @@ -24,7 +24,7 @@ namespace simde { PYBIND11_MODULE(simde, m) { m.doc() = "PySimDE: Python bindings for the Simulation development environment"; - export_atoms(m); + export_chemical_system(m); export_basis_set(m); export_energy(m); } diff --git a/tests/cxx/unit/basis_sets/atomic_basis_set.cpp b/tests/cxx/unit_tests/basis_set/atomic_basis_set.cpp similarity index 94% rename from tests/cxx/unit/basis_sets/atomic_basis_set.cpp rename to tests/cxx/unit_tests/basis_set/atomic_basis_set.cpp index 8fc4b451..11d6897a 100644 --- a/tests/cxx/unit/basis_sets/atomic_basis_set.cpp +++ b/tests/cxx/unit_tests/basis_set/atomic_basis_set.cpp @@ -15,9 +15,9 @@ */ #include "../test_property_type.hpp" -#include "simde/basis_sets/atomic_basis_set.hpp" +#include TEST_CASE("AtomicBasisSet") { test_property_type({"Atom ID"}, {"Atomic Basis Set"}); -} \ No newline at end of file +} diff --git a/tests/cxx/unit/basis_sets/molecular_basis_set.cpp b/tests/cxx/unit_tests/basis_set/molecular_basis_set.cpp similarity index 93% rename from tests/cxx/unit/basis_sets/molecular_basis_set.cpp rename to tests/cxx/unit_tests/basis_set/molecular_basis_set.cpp index 3a1ff52f..70ec2b7c 100644 --- a/tests/cxx/unit/basis_sets/molecular_basis_set.cpp +++ b/tests/cxx/unit_tests/basis_set/molecular_basis_set.cpp @@ -15,9 +15,9 @@ */ #include "../test_property_type.hpp" -#include "simde/basis_sets/molecular_basis_set.hpp" +#include TEST_CASE("MolecularBasisSet") { test_property_type({"Molecule"}, {"Molecular Basis Set"}); -} \ No newline at end of file +} diff --git a/tests/cxx/unit/atoms/Z_from_symbol.cpp b/tests/cxx/unit_tests/chemical_system/Z_from_symbol.cpp similarity index 93% rename from tests/cxx/unit/atoms/Z_from_symbol.cpp rename to tests/cxx/unit_tests/chemical_system/Z_from_symbol.cpp index 70576bef..667b1abb 100644 --- a/tests/cxx/unit/atoms/Z_from_symbol.cpp +++ b/tests/cxx/unit_tests/chemical_system/Z_from_symbol.cpp @@ -15,8 +15,8 @@ */ #include "../test_property_type.hpp" -#include "simde/atoms/Z_from_symbol.hpp" +#include TEST_CASE("ZFromSymbol") { test_property_type({"Symbol"}, {"Z"}); -} \ No newline at end of file +} diff --git a/tests/cxx/unit/atoms/atom.cpp b/tests/cxx/unit_tests/chemical_system/atom.cpp similarity index 94% rename from tests/cxx/unit/atoms/atom.cpp rename to tests/cxx/unit_tests/chemical_system/atom.cpp index 29865973..c7da5615 100644 --- a/tests/cxx/unit/atoms/atom.cpp +++ b/tests/cxx/unit_tests/chemical_system/atom.cpp @@ -15,8 +15,8 @@ */ #include "../test_property_type.hpp" -#include "simde/atoms/atom.hpp" +#include TEST_CASE("Atom") { test_property_type({"Atom ID"}, {"Atom"}); -} \ No newline at end of file +} diff --git a/tests/cxx/unit/molecule_from_string.cpp b/tests/cxx/unit_tests/chemical_system/molecule_from_string.cpp similarity index 92% rename from tests/cxx/unit/molecule_from_string.cpp rename to tests/cxx/unit_tests/chemical_system/molecule_from_string.cpp index 970fbcb9..7c58f2c5 100644 --- a/tests/cxx/unit/molecule_from_string.cpp +++ b/tests/cxx/unit_tests/chemical_system/molecule_from_string.cpp @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "simde/molecule_from_string.hpp" #include "test_property_type.hpp" +#include TEST_CASE("MoleculeFromString") { test_property_type({"String"}, {"Molecule"}); -} \ No newline at end of file +} diff --git a/tests/cxx/unit/atoms/symbol_from_Z.cpp b/tests/cxx/unit_tests/chemical_system/symbol_from_Z.cpp similarity index 93% rename from tests/cxx/unit/atoms/symbol_from_Z.cpp rename to tests/cxx/unit_tests/chemical_system/symbol_from_Z.cpp index bc3e296e..5b6e4cf6 100644 --- a/tests/cxx/unit/atoms/symbol_from_Z.cpp +++ b/tests/cxx/unit_tests/chemical_system/symbol_from_Z.cpp @@ -15,8 +15,8 @@ */ #include "../test_property_type.hpp" -#include "simde/atoms/symbol_from_Z.hpp" +#include TEST_CASE("SymbolFromZ") { test_property_type({"Z"}, {"Symbol"}); -} \ No newline at end of file +} diff --git a/tests/cxx/unit/energy/energy.cpp b/tests/cxx/unit_tests/energy/energy.cpp similarity index 82% rename from tests/cxx/unit/energy/energy.cpp rename to tests/cxx/unit_tests/energy/energy.cpp index f1904148..84dc2bbb 100644 --- a/tests/cxx/unit/energy/energy.cpp +++ b/tests/cxx/unit_tests/energy/energy.cpp @@ -15,10 +15,10 @@ */ #include "../test_property_type.hpp" -#include "simde/energy/energy_class.hpp" +#include using namespace simde; -TEST_CASE("Energy") { - test_property_type({"Chemical System"}, {"Energy"}); +TEST_CASE("TotalEnergy") { + test_property_type({"Chemical System"}, {"Energy"}); } diff --git a/tests/cxx/unit/test_main.cpp b/tests/cxx/unit_tests/test_main.cpp similarity index 100% rename from tests/cxx/unit/test_main.cpp rename to tests/cxx/unit_tests/test_main.cpp diff --git a/tests/cxx/unit/test_property_type.hpp b/tests/cxx/unit_tests/test_property_type.hpp similarity index 100% rename from tests/cxx/unit/test_property_type.hpp rename to tests/cxx/unit_tests/test_property_type.hpp diff --git a/tests/python/unit_tests/atoms/__init__.py b/tests/python/unit_tests/chemical_system/__init__.py similarity index 100% rename from tests/python/unit_tests/atoms/__init__.py rename to tests/python/unit_tests/chemical_system/__init__.py diff --git a/tests/python/unit_tests/atoms/test_atoms.py b/tests/python/unit_tests/chemical_system/test_chemical_system.py similarity index 100% rename from tests/python/unit_tests/atoms/test_atoms.py rename to tests/python/unit_tests/chemical_system/test_chemical_system.py diff --git a/tests/python/unit_tests/energy/test_energy.py b/tests/python/unit_tests/energy/test_energy.py index f7b620d2..f7269b9a 100644 --- a/tests/python/unit_tests/energy/test_energy.py +++ b/tests/python/unit_tests/energy/test_energy.py @@ -15,9 +15,9 @@ import simde from test_property_type import BaseTestPropertyType -class TestEnergy(BaseTestPropertyType): +class TestTotalEnergy(BaseTestPropertyType): def setUp(self): - self.pt = simde.Energy() + self.pt = simde.TotalEnergy() self.input_labels= ['Chemical System'] self.result_labels = ['Energy'] @@ -25,4 +25,4 @@ class TestAOEnergy(BaseTestPropertyType): def setUp(self): self.pt = simde.AOEnergy() self.input_labels= ['Chemical System', 'AOs'] - self.result_labels = ['Energy'] \ No newline at end of file + self.result_labels = ['Energy'] diff --git a/version.txt b/version.txt deleted file mode 100644 index 3eefcb9d..00000000 --- a/version.txt +++ /dev/null @@ -1 +0,0 @@ -1.0.0 From 7ab3b8d9d3f16e6ca76d57fe71002765b88a2aea Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 31 Jan 2024 15:12:46 -0600 Subject: [PATCH 4/5] pin Sphinx version --- docs/requirements.txt | 3 ++- docs/source/conf.py | 33 +++++++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index 414087aa..a6580bd4 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,4 +1,5 @@ -sphinx +GitPython +sphinx==v7.2.6 sphinx_rtd_theme==1.3.0 sphinxcontrib-bibtex sphinx_tabs diff --git a/docs/source/conf.py b/docs/source/conf.py index d5883ffe..841afdd7 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -21,24 +21,47 @@ # http://www.sphinx-doc.org/en/master/config import os +import git # -- Project information ----------------------------------------------------- project = u'SimDE' copyright = u'2020, NWChemEx Team' author = u'NWChemEx Team' -version = '1.0.0' -release = version ############################################################################## # Shouldn't need to change anything below this point # ############################################################################## +# -- Project Paths ----------------------------------------------------------- + +dir_path = os.path.dirname(os.path.realpath(__file__)) +doc_path = os.path.dirname(dir_path) +root_path = os.path.dirname(doc_path) + +# -- Package Version --------------------------------------------------------- + +# Read the git tags, from ../../.git and find the most recent one +repo = git.Repo(root_path) +tags = sorted(repo.tags, key=lambda t: t.commit.committed_datetime) + +if len(tags): + last_tag = tags[-1] +else: + last_tag = "1.0.0" + +# This is the strictly numeric version (e.g., no "beta" qualifier) +version = str(last_tag) + +# This is the full version (includes qualifiers like "beta" or +# "release candidate") +release = version + # -- General configuration --------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. # -needs_sphinx = '1.3' +needs_sphinx = 'v7.2.6' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom @@ -53,9 +76,7 @@ 'sphinx_tabs.tabs', 'sphinx.ext.intersphinx', ] -dir_path = os.path.dirname(os.path.realpath(__file__)) -doc_path = os.path.dirname(dir_path) -root_path = os.path.dirname(doc_path) + # Add any paths that contain templates here, relative to this directory. #templates_path = ['_templates'] From 0a13111180d0e9632a79d5f8b9c7dbae086ab6df Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 31 Jan 2024 15:39:27 -0600 Subject: [PATCH 5/5] remove 'v' in version --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 841afdd7..69eb6835 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -61,7 +61,7 @@ # If your documentation needs a minimal Sphinx version, state it here. # -needs_sphinx = 'v7.2.6' +needs_sphinx = '7.2.6' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom