Skip to content

Commit

Permalink
Release 4.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
reiher-research-group committed Dec 15, 2021
1 parent 87998c1 commit 493b8db
Show file tree
Hide file tree
Showing 477 changed files with 46,676 additions and 5,757 deletions.
7 changes: 5 additions & 2 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Checks: '-*,
-clang-analyzer-optin.cplusplus.VirtualCall,
-clang-analyzer-core.NullDereference,
cppcoreguidelines-*,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-owning-memory,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
-cppcoreguidelines-pro-bounds-constant-array-index,
Expand All @@ -23,14 +24,16 @@ Checks: '-*,
-cppcoreguidelines-pro-type-vararg,
-cppcoreguidelines-special-member-functions,
-cppcoreguidelines-slicing,
-cppcoreguidelines-non-private-member-variables-in-classes,
misc-*,
-misc-non-private-member-variables-in-classes,
modernize-*,
-modernize-use-equals-delete,
-modernize-use-trailing-return-type,
performance-*,
portability-*,
readability-*,
-readability-braces-around-statements,
-readability-else-after-return'
-readability-magic-numbers'
#HeaderFilterRegex: './src/*'
AnalyzeTemporaryDtors: false
FormatStyle: none
Expand Down
19 changes: 10 additions & 9 deletions .conan_test_package/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,20 @@
See LICENSE.txt for details.
"""

import os
from conans import ConanFile, CMake


def conan_paths_str(build_folder):
return os.path.join(build_folder, "conan_paths.cmake")


class TestPackageConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "cmake_paths"
build_requires = [("cmake/[>3.13.4]@scine/stable")]
generators = "cmake_find_package"
# CMake 3.20.0 has a bug when finding/linking openmp
# so it is exluded from the allowed versions, the version
# gap can be increased if 3.20.1 does not fix the error
build_requires = "cmake/[>=3.18.0 <3.20.0 || >3.20.0]"
exports_sources = "CMakeLists.txt", "test.cpp"

def _configure(self):
cmake = CMake(self)
cmake.definitions["CMAKE_PROJECT_UtilsTestPackage_INCLUDE"] = conan_paths_str(
self.build_folder)
cmake.configure()
return cmake

Expand All @@ -32,3 +28,8 @@ def build(self):
def test(self):
cmake = self._configure()
cmake.test()

if self.options["scine_utilities"].python:
self.output.info("Trying to import 'scine_utilities'")
import scine_utilities
self.output.info("Import worked!")
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
# build files
build/*
build-*
cmake-build-*
compile_commands.json
install/*
.conan_test_package/build

# hidden files
.cache
*.swp
.idea/*
.lvimrc
.vscode
.conan_test_package/build

# python files
*__pycache__*
Expand Down
94 changes: 81 additions & 13 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,29 +1,97 @@
=========
Changelog
=========

All changes are grouped into one of three categories: those changes that are considered
being related to features, meaning that they add or update new functionalities,
those that are considered important technical updates, and all other notable updates.
It is intended that only the first two groups (``New Features and Feature Updates`` and
``Important Technical Changes``) are important for the average user, while
the last one is mainly aimed at developers and users that link deeply into the code.

Release 4.0.0
-------------

New Features and Feature Updates
................................
- Improve GDIIS: numerical stability
- Improve BFGS: add automatic damping
- Improve EVF and Bofill: allows to select mode and follows mode independent of order
- Add periodic boundary conditions
- Add support for CP2K
- Improve Gaussian interface: allows to reuse SCF results as guesses in subsequent calculations and
to retrieve molecular orbital coefficients
- Add support for Turbomole
- Improve MD: Fix a bug regarding the time step size, check gradient
calculations for SCF convergence, add the option to use bias potentials and
add a stochastic dynamics integrator

Important Technical Changes
...........................
- Add Python bindings for CalculatorWithReference
- Add Log accessor to Python bindings of Calculator and CalculatorWithReference
- Add Python bindings for Davidson diagonalizer with possibility of having
custom sigma vector evaluators/preconditioners
- Add functions to get all closest atoms within a certain distance and to
build an atom pair-list
- Distinguish now between true internal, true Cartesian, and Cartesian with removed
translation and rotation coordinate systems
- Add Python bindings for ThermochemistryCalculator to calculate thermodynamic properties from a Hessian in Python
- Add Python bindings for SettingsNames
- Add support for the SMD solvation model in ORCA
- Add the option to obtain gradients from a CalculatorWithReference in MD simulations

Development Changes
...................
- Refactoring of GeometryUtilities into sub-namespaces
- Add data structures needed for downstream methods that are general to linear response methods
- Remove Logger option for downstream LcaoMethods as it can be accessed through the calculator interface
- Refactor Davidson diagonalizers:

- Create IterativeDiagonalizer interface
- Create KrylovDiagonalizer interface, inheriting from IterativeDiagonalizer
- Create the 2 versions, NonOrthogonalDavidson and OrthogonalDavidson
- Add Python bindings for OrthogonalDavidson and NonOrthogonalDavidson,
tested in Python and added an example on how to extend the SigmaVectorEvaluator
to customize the Davidson directly in Python

Release 3.0.1
=============
-------------

Important Technical Changes
...........................

- Update development-utils

Release 3.0.0
=============
-------------

- Enable ``conan`` builds and PyPI releases
- Add Newton-Trajectory type optimizer
New Features and Feature Updates
................................
- Add Newton-Trajectory reaction search optimizer
- Improve Dimer transition state search algorithm
- Improve BFGS/GDIIS geometry optimization algorithm
- Add statistics and machine learning tools (PCA, k-fold cross-validation, kernel ridge regression)
- Add chemical representations for machine-learned force fields
- Charge Model 5 corrections for Hirshfeld atomic partial charges
- Add possibility to generate Charge Model 5 (CM5) corrections for Hirshfeld atomic partial charges
- Add various conceptual DFT quantities
- Add implicit solvation options to ORCA and Gaussian interfaces

Important Technical Changes
...........................
- Enable ``conan`` builds and PyPI releases
- Add Python bindings sphinx documentation

Development Changes
...................
- Enable access to the density matrix and GTOs in Python
- Improve Dimer transition state search algorithm
- Add implicit solvation option to ORCA and Gaussian interfaces
- Add python bindings sphinx documentation
- Separate ``Settings`` from its base ``ValueCollection`` in python bindings
- Separate ``Settings`` from its base ``ValueCollection`` in Python bindings
- Add Python bindings for molecular dynamics simulations
- Rework the Python wrapper for ``Settings``, ``ValueCollection`` and ``DescriptorCollection``
- Add a ``TestCalculator`` and module that implements the ``Test`` method to allow mocked calls
to QC programs. (Uses a modified Lennard-Jones potential)

Release 2.0.0
=============
-------------

- Add support for internal coordinates
- Add interface to Gaussian
Expand All @@ -33,12 +101,12 @@ Release 2.0.0
- Various bugfixes and improvements

Release 1.0.1
=============
-------------

Hotfix to allow compilation on OSX using Clang.

Release 1.0.0
=============
-------------

Initial release with all necessary functionality to support Sparrow and ReaDuct.
Among other things, this includes:
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.9)
# tree must then provide a properly namespaced target with the same name as
# your project.
project(UtilsOS
VERSION 3.0.0
VERSION 4.0.0
DESCRIPTION "Utilities to be used (statically linked) in all other SCINE modules."
)

Expand Down
9 changes: 3 additions & 6 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
===========================================
Contributing to SCINE Open Source Utilities
===========================================

Contribution Process
====================
--------------------

The development for this code is done in a private repository maintained by the
Reiher Research Group. GitHub is only used for the official releases.
Expand All @@ -19,16 +18,14 @@ and/or issues on GitHub.
Please note that contributing a small change does in no way mean that you will
be added to the author list of a future paper and/or Zenodo entry!


Main Contributors
=================
-----------------

Almost all contributions to SCINE in general and this repository in specific come
from members of the Reiher research group.


Further Contributors
====================
--------------------

- Eric Hermes, Sandia National Laboratories
(https://github.com/qcscine/utilities/pull/1)
24 changes: 15 additions & 9 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
=============================
SCINE - Open Source Utilities
=============================

Introduction
============
------------

This repository contains functionality which is used in most SCINE modules.
It is vital for the correct functioning of all SCINE modules, but it does not
directly provide any functionality for end users. Therefore, only developers
of SCINE need to directly interact with this repository.

License and Copyright Information
=================================
---------------------------------

For license and copyright information, see the file `LICENSE.txt` in this
For license and copyright information, see the file ``LICENSE.txt`` in this
directory.

Installation and Usage
======================
----------------------

As a user of one of the SCINE modules (such as Sparrow), you do not need
to set up Open Source Utilities yourself. Instead, this is done as part of the
Expand All @@ -26,7 +25,7 @@ instructions are only necessary for developers of SCINE, or those interfacing
this library directly.

Dependencies
------------
............

Required software, minimum required versions in brackets, for this SCINE project are:

Expand All @@ -36,7 +35,7 @@ Required software, minimum required versions in brackets, for this SCINE project
- Eigen3 (3.3.2)

Installation
------------
............

In order to compile this as a SCINE developer, execute the following
commands::
Expand All @@ -51,14 +50,21 @@ commands::
make test
make install

Known Issues
------------

Due to a `bug <https://github.com/boostorg/process/issues/62>`_ in boost
version 1.69.0, linkage against this version will result in a leakage
of file handles if the ORCA and Gaussian Calculators are called repeatedly.

Support and Contact
===================
-------------------

In case you should encounter problems or bugs, please write a short message
to [email protected].

Third-Party Libraries Used
==========================
--------------------------

SCINE Utilities makes use of the following third-party libraries:

Expand Down
34 changes: 26 additions & 8 deletions conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

class ScineUtilsConan(ScineConan):
name = "scine_utilities"
version = "3.0.0"
version = "4.0.0"
url = "https://github.com/qcscine/utilities"
description = """
Functionality which is used in most SCINE modules. It is vital for the correct
Expand All @@ -28,13 +28,31 @@ class ScineUtilsConan(ScineConan):
"microarch": "none"}
exports = "dev/conan/*.py"
exports_sources = ["dev/cmake/*", "src/*", "CMakeLists.txt", "README.rst",
"LICENSE.txt", "dev/conan/hook.cmake"]
requires = ["eigen/[~=3.3.7]@conan/stable",
"boost/[>1.65.0]@conan/stable",
"yaml-cpp/0.6.3@scine/stable"]
"LICENSE.txt", "dev/conan/hook.cmake",
"dev/conan/glue/*"]
requires = ["eigen/[~=3.3.7]", "boost/[>1.65.0]", "yaml-cpp/0.6.3"]
cmake_name = "UtilsOS"
cmake_definitions = {
"CMAKE_UNITY_BUILD": "ON",
"CMAKE_UNITY_BUILD_BATCH_SIZE": 16
}

def requirements(self):
self.requires("irc/6d5c7c37@scine/stable", private=self.options.shared)
# Cannot mark irc as private until #7585 gets merged and a new conan
# was released. Replace with:
# >>> self.requires("irc/6d5c7c37", private=self.options.shared)
self.requires("irc/6d5c7c37")

def package_info(self):
super().package_info()

def _configure_cmake(self):
return super()._configure_cmake_base("UtilsOS", None)
# Add Core's targets as components and model dependency chain
self.cpp_info.components["CoreHeaders"].includedirs = ["include/Scine"]
self.cpp_info.components["CoreHeaders"].requires = ["boost::boost"]
self.cpp_info.components["Core"].libs = ["core"]
self.cpp_info.components["Core"].requires = ["CoreHeaders"]
self.cpp_info.components["UtilsOS"].libs.remove("core")
self.cpp_info.components["UtilsOS"].requires.append("CoreHeaders")
self.cpp_info.components["UtilsOS"].cxxflags = ["-fopenmp"]
self.cpp_info.components["UtilsOS"].sharedlinkflags = ["-fopenmp"]
self.cpp_info.components["UtilsOS"].exelinkflags = ["-fopenmp"]
Loading

0 comments on commit 493b8db

Please sign in to comment.