Commit 558407e2 authored by Andrew Wildman's avatar Andrew Wildman
Browse files

Merge branch 'release_candidate' into 'master'

Release version 0.4.0

Closes #33 and #15

See merge request chronusq/chronusq_dev!89
parents 9ed6994c b85fa3f2
Pipeline #1552 passed with stage
in 114 minutes and 12 seconds
......@@ -3,12 +3,7 @@
!*fockbuild*
external/mxx
external/cxxblacs
external/libint2/include
external/libint2/lib
external/libint2/share
external/libint2/src
external/libint2/tmp
external/libint2/libint*/
external/libint2*
external/openblas/include
external/openblas/lib
external/openblas/src
......
......@@ -10,11 +10,9 @@ build_intel:
name: "$CI_JOB_ID-$CI_JOB_NAME"
script:
- source /home/ci_software/intel-19.1.sh
- rm -fr external/libint2
- ln -s /sw/libint/2/5/0/intel/19/1 external/libint2
- mkdir build
- cd build
- cmake -DCMAKE_CXX_FLAGS='-O3' -DCMAKE_C_FLAGS='-O3' -DCMAKE_Fortran_FLAGS='-O3' ..
- cmake -DLibint2_ROOT=/sw/libint/2/5/0/intel/19/1 =-DCMAKE_CXX_FLAGS='-O3' -DCMAKE_C_FLAGS='-O3' -DCMAKE_Fortran_FLAGS='-O3' ..
- make -j5
- ctest
......@@ -27,11 +25,9 @@ build_gcc:
name: "$CI_JOB_ID-$CI_JOB_NAME"
script:
- source /home/ci_software/gcc-8.2.0.sh
- rm -fr external/libint2
- ln -s /sw/libint/2/5/0/gcc/8/2/0 external/libint2
- mkdir build
- cd build
- cmake -DCMAKE_CXX_FLAGS='-O3' -DCMAKE_C_FLAGS='-O3' -DCMAKE_Fortran_FLAGS='-O3' ..
- cmake -DLibint2_ROOT=/sw/libint/2/5/0/gcc/8/2/0 -DCMAKE_CXX_FLAGS='-O3' -DCMAKE_C_FLAGS='-O3' -DCMAKE_Fortran_FLAGS='-O3' ..
- make -j5
- ctest
......@@ -44,10 +40,8 @@ build_mpi_gcc:
name: "$CI_JOB_ID-$CI_JOB_NAME"
script:
- source /home/ci_software/gcc-8.2.0_mpich-3.2.1.sh
- rm -fr external/libint2
- ln -s /sw/libint/2/5/0/gcc/8/2/0 external/libint2
- mkdir build
- cd build
- cmake -DCMAKE_CXX_FLAGS='-O3' -DCMAKE_C_FLAGS='-O3' -DCMAKE_Fortran_FLAGS='-O3' -DCQ_ENABLE_MPI=ON -DCQ_SCALAPACK_LIBRARIES="$SCALAPACK_LIBRARY_DIR/libscalapack.a" -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_BUILD_TYPE=Release ..
- cmake -DLibint2_ROOT=/sw/libint/2/5/0/gcc/8/2/0 -DCMAKE_CXX_FLAGS='-O3' -DCMAKE_C_FLAGS='-O3' -DCMAKE_Fortran_FLAGS='-O3' -DCQ_ENABLE_MPI=ON -DCQ_SCALAPACK_LIBRARIES="$SCALAPACK_LIBRARY_DIR/libscalapack.a" -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_BUILD_TYPE=Release ..
- make -j6
- make test
Name Institution
Name Institution
--------------------------------------------------------
Xiaosong Li University of Washington
David Williams-Young Lawrence Berkeley National Lab
Edward Valeev Virginia Tech
Alessio Petrone University of Washington
Shichao Sun University of Washington
Torin Stetina University of Washington
Andrew Wildman University of Washington
Joshua Goings University of Washington
Joseph Kasper University of Washington
Feizhi Ding University of Washington
Patrick Lestrange University of Washington
Hongbin Liu University of Washington
Xiaosong Li University of Washington
David Williams-Young Lawrence Berkeley National Lab
Edward Valeev Virginia Tech
Eugene DePrince III Florida State University
Sharon Hammes-Schiffer Yale University
Qiming Sun AxiomQuant
Alessio Petrone University of Washington
Andrew Wildman University of Washington
Hang Hu University of Washington
Tianyuan Zhang University of Washington
Torin Stetina University of Washington
Adam Grofe University of Washington
Brandon Cooper Florida State University
Chad Hoyer University of Washington
Hongbin Liu University of Washington
Joshua Goings University of Washington
Lauren Koulias University of Washington
Lixin Lu University of Washington
Luning Zhao University of Washington
Shichao Sun University of Washington
Xiaolin Liu University of Washington
--------------------------------------------------------
......@@ -9,6 +9,28 @@
FORMAT: YYYY-MM-DD
- 2020-10-20 0.4.0 (BETA)
- Added Functionality:
- Add Resolution of identity (RI) approximation for all methods
- Add Restricted Open shell Hartree Fock (ROHF) wavefunction optimization
- Accept Gaussian formatted checkpoint files as an initial guess
- Add SKIP option to SCF.ALG for post-SCF methods
- Add Peterson correlation consistent relativistic bases
- Add examples of input and output to documentation
- Internal Refactoring:
- Change AOIntegrals class to Integrals to support RI and AO/MO bases
- Rework documentation through wiki
- Add transpose to GEMM and MatAdd
- Improve CMake discovery of Libint
- Update README and author list
- Bugfixes:
- Fail on bad input to RESPONSE.TYPE input section
- Error on empty MOLECULE.GEOM input section
- Enforce multiplicity consistent with number of electrons
- Ensure input file is not the same as output file
- Error on unspecified BASIS input section
<br>
- 2020-07-17 0.3.3 (BETA)
- Support multiplicities up to element Es for SAD guess
- Fix incorrect multiplicities for elements S, P, and Mn in SAD guess
......@@ -21,6 +43,7 @@
- Fix simultaneous file read failure from GPLHR_MPI tests
- Fix include guards
- Bump OpenBLAS -> v0.3.9
<br>
- 2020-04-25 0.3.2 (BETA)
- Add ability to read user specified basis from input file or path to file
......@@ -29,6 +52,7 @@
- Make compatible with compilation on Mac with the default compilers
- Fix sign error in DFT gradient evaluation
- Add templates for issue and merge requests
<br>
- 2020-03-12 0.3.1 (BETA)
- Add ability to restart interrupted RT jobs
......@@ -37,12 +61,14 @@
- Fix CXXBLACS linking error for MPI builds
- Add MPI build into continuous integration
- Fix bug in reading basis sets using Fortran float notation
<br>
- 2019-05-06 0.3.0 (BETA)
- Implementation of Explicit Magnus 2nd order step in RT module
- Default parameter changes in GPLHR and SCF
- CI through GitLab
- Clang 9+ compatible
<br>
- 2018-11-28 0.2.1 (BETA)
- Removed Boost depedency
......@@ -57,7 +83,7 @@
- Direct GIAO Fock builds in RT module
- Bump Libint -> 2.5.0-beta
- Bump CMake -> 3.11
<br>
- 2018-07-13 0.2.0 (BETA)
- Full integration of GIAO basis set into SCF and RT modules
......@@ -75,7 +101,7 @@
- Bump Libxc -> 4.0.4
- Added support for coverage checks (CQ_ENABLE_COVERAGE)
- Various logic checks / bug fixes
<br>
- 2017-09-01: 0.1.0 (BETA)
- Complete overhaul of ChronusQ development stream (new repo)
......
In any publication that involves calculations performed by the Chronus Quantum (ChronusQ)
software package, please use the following BibTeX entry
software package, please use the following BibTeX entries
@article{Li2019_e1436,
title={The Chronus Quantum Software Package},
......@@ -9,3 +9,17 @@ software package, please use the following BibTeX entry
year={2019},
publisher={Wiley Online Library}
}
@misc{chronusq_beta,
title={{C}hronus {Q}uantum, Beta Version},
author={Xiaosong Li and David Williams-Young and Edward Valeev
and Eugene DePrince III and Sharon Hammes-Schiffer
and Qiming Sun and Alessio Petrone and Andrew Wildman
and Hang Hu and Tianyuan Zhang and Torin Stetina
and Adam Grofe and Brandon Cooper and Chad Hoyer
and Hongbin Liu and Joshua Goings and Lauren Koulias
and Lixin Lu and Luning Zhao and Shichao Sun
and Xiaolin Liu},
note = {\url{http://www.chronusquantum.org}},
year = {2020}
}
......@@ -20,20 +20,49 @@
# Contact the Developers:
# E-Mail: xsli@uw.edu
#
cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
project(ChronusQ CXX C Fortran)
set(ChronusQ_VERSION_MAJOR 0)
set(ChronusQ_VERSION_MINOR 3)
set(ChronusQ_VERSION_PATCH 3)
cmake_minimum_required(VERSION 3.11...3.14 FATAL_ERROR)
project(ChronusQ
VERSION 0.4.0
DESCRIPTION
"Chronus Quantum is an ab initio computational chemistry \
software package that focuses on explicitly time-dependent and unconventional \
post-SCF quantum mechanical methods."
LANGUAGES CXX C Fortran)
# -----------------------------------------------------------------------------
# Options
# -----------------------------------------------------------------------------
option(CQ_ENABLE_MPI "Enable MPI parallelism" OFF)
option(ENABLE_COVERAGE "Enable coverage and profiling" OFF)
option(CQ_LINALG_USESYSTEM "Use System defaults for LA libs" OFF)
option(CQ_EXTERNAL_OPENMP "Force linking to an external OpenMP library" OFF)
# Libint building options
set(BUILD_LIBINT_TYPES NONE ALLOW FORCE)
set(CQ_BUILD_LIBINT_TYPE ALLOW CACHE STRING "Disable, enable, or force CQ to build libint")
set_property(CACHE CQ_BUILD_LIBINT_TYPE PROPERTY STRINGS ${BUILD_LIBINT_TYPES})
if ( NOT CQ_BUILD_LIBINT_TYPE IN_LIST BUILD_LIBINT_TYPES )
message ( FATAL_ERROR "CQ_BUILD_LIBINT_TYPE must be one of ${BUILD_LIBINT_TYPES}" )
endif()
# Whether to build in external or build directory
option(CQ_EXTERNAL_IN_BUILD_DIR "Build external dependencies in the build directory" OFF)
if ( NOT FETCHCONTENT_BASE_DIR AND NOT CQ_EXTERNAL_IN_BUILD_DIR )
set ( FETCHCONTENT_BASE_DIR "${PROJECT_SOURCE_DIR}/external"
CACHE STRING "" FORCE )
endif()
# -----------------------------------------------------------------------------
# Add specified paths to CMAKE_PREFIX_PATH
if( MPI_PREFIX )
set( CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${MPI_PREFIX} )
......@@ -112,7 +141,7 @@ include(HandleLA)
message( "ChronusQ Dependencies" )
include(FindLibint)
include(HandleLibint)
include(FindLibXC)
set(CQEX_LINK ${CQ_EXT_LINK} )
......
The Chronus Quantum (ChronusQ) Software Package [v. Beta] - A high-performance
<div align="center">
<img src="cq_logo.png" height="220px"/>
</div>
Chronus Quantum
===============
The Chronus Quantum (ChronusQ) Software Package [v. Beta] is a high-performance
computational chemistry software package with a strong emphasis on explicitly
time-dependent and post-SCF quantum mechanical methods.
Copyright (C) 2014-2020 Li Research Group (University of Washington)
* [Changelog](CHANGELOG.md)
* [Documentation](../../wikis/home)
* [Installation](#installation)
Installation
------------
### Prerequisites
- C++14 compiler
- C compiler (for LibXC)
- Fortran compiler (for LibXC)
- [CMake](http://cmake.org) build system (Version 3.11+).
- [HDF5](https://support.hdfgroup.org/HDF5/)
- [Eigen3](http://eigen.tuxfamily.org)
### Quickstart
If you have all the prerequisites above, all you need to do is:
```
git clone https://urania.chem.washington.edu/chronusq/chronusq_public.git
mkdir chronusq_public/build && cd chronusq_public/build
cmake ..
cmake --build .
```
To install, you then run
```
cmake --build . --target install
```
For more details on installation requirements, and running ChronusQ, see the [getting ChronusQ](../../wikis/compilation)
and [running ChronusQ](../../wikis/Running-ChronusQ) wiki pages.
For example input files, see the tests directories.
Citing ChronusQ
---------------
The following WIREs paper and software citation should be cited in publications using the ChronusQ package located in [CITE.txt](CITE.txt).
Found a Bug? Open a [GitLab issue](https://urania.chem.washington.edu/chronusq/chronusq_public/issues)!
Found a bug or want a new feature?
----------------------------------
Please submit a bug report or feature request on the [issues](https://urania.chem.washington.edu/chronusq/chronusq_public/-/issues) page.
Information:
-----------
- For more information regarding installation of ChronusQ, see the Wiki!
- For more information regarding the dependencies of ChronusQ, see the Wiki!
- For more information regarding how to cite ChronusQ, see CITE.txt
- General inquiries? Contact xsli at uw dot edu
General Inquiries
-----------------
- Contact xsli at uw dot edu
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#!/bin/sh
LIBINT2_DIR=libint-2.5.0-beta.2
cd external/libint2
if [ -d "$LIBINT2_DIR" ]; then
cd $LIBINT2_DIR
else
echo "Unpacking Libint"
tar xf "$LIBINT2_DIR".tgz
cd $LIBINT2_DIR
./configure --prefix=$PWD/.. --with-cxx=$CXX CXXFLAGS="-w -O3 $CXXFLAGS"
fi
echo "Compiling Libint"
make install -j$1
echo "Libint Compiled!"
#!/bin/sh
rm -fr CMakeFiles Testing include src tests
rm -fr CMakeFiles Testing include src tests _deps external
rm -f CMakeCache.txt CTestTestfile.cmake Makefile cmake_install.cmake
#!/bin/sh
rm -fr external/libint2/include
rm -fr external/libint2/lib
rm -fr external/libint2/libint*/
rm -fr external/libint2/share
rm -fr external/libint2-build
rm -fr external/libint2-src
rm -fr external/libint2-subbuild
rm -fr external/libint2
......@@ -115,6 +115,8 @@ if( CQ_NEED_OPENBLAS )
patch < ../patch/f77blas.patch
)
install(DIRECTORY "${OPENBLAS_PREFIX}/include" DESTINATION ".")
install(DIRECTORY "${OPENBLAS_PREFIX}/lib" DESTINATION ".")
list(APPEND CQEX_DEP openblas)
......@@ -215,6 +217,9 @@ if( CQ_ENABLE_MPI )
-DMPI_Fortran_COMPILER=${MPI_Fortran_COMPILER}
-DCMAKE_INSTALL_PREFIX=${SCALAPACK_PREFIX}
)
install(DIRECTORY "${SCALAPACK_PREFIX}/include" DESTINATION ".")
install(DIRECTORY "${SCALAPACK_PREFIX}/lib" DESTINATION ".")
list(APPEND CQEX_DEP libscalapack_build)
......
#
# This file is part of the Chronus Quantum (ChronusQ) software package
#
# Copyright (C) 2014-2020 Li Research Group (University of Washington)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Contact the Developers:
# E-Mail: xsli@uw.edu
#
include(FetchContent)
message ( "\n == Libint ==\n" )
#
# Find preinstalled Libint unless turned off
#
if ( NOT CQ_BUILD_LIBINT_TYPE STREQUAL "FORCE" )
find_package ( Libint2 QUIET )
# Prefer CMake installed
if ( TARGET Libint2::int2 )
get_target_property ( libint_alias Libint2::int2 ALIASED_TARGET )
if ( libint_alias )
add_library ( ChronusQ::Libint2 ALIAS ${libint_alias} )
else()
add_library ( ChronusQ::Libint2 ALIAS Libint2::int2 )
endif()
# Otherwise create dummy target
elseif ( DEFINED Libint2_ROOT )
set ( LIBINT2_LIBRARIES_FOUND FALSE )
if ( EXISTS "${Libint2_ROOT}/lib/libint2.a" )
set ( LIBINT2_LIBRARIES "${Libint2_ROOT}/lib/libint2.a" )
set ( LIBINT2_LIBRARIES_FOUND TRUE )
elseif ( EXISTS "${Libint2_ROOT}/lib/liblibint2.a" )
set ( LIBINT2_LIBRARIES "${Libint2_ROOT}/lib/liblibint2.a" )
set ( LIBINT2_LIBRARIES_FOUND TRUE )
endif()
if ( LIBINT2_LIBRARIES_FOUND AND
EXISTS "${Libint2_ROOT}/include/libint2.hpp" )
set ( LIBINT2_INCLUDE_DIRS
${Libint2_ROOT}/include
${Libint2_ROOT}/include/libint2
)
add_library ( ChronusQ::Libint2 INTERFACE IMPORTED )
set_target_properties ( ChronusQ::Libint2 PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${LIBINT2_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${LIBINT2_LIBRARIES}"
)
set ( LIBINT2_FOUND TRUE )
endif()
endif()
if ( LIBINT2_FOUND )
message ( STATUS "Found External Libint Installation" )
endif()
endif()
#
# Build Libint if a suitable libint hasn't been found
#
if ( NOT TARGET ChronusQ::Libint2 )
if ( NOT CQ_BUILD_LIBINT_TYPE STREQUAL "NONE" )
message( STATUS "Opting to build a copy of Libint" )
# Set prefix
if ( CQ_EXTERNAL_IN_BUILD_DIR )
set ( CUSTOM_LIBINT_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/external/libint2 )
else()
set ( CUSTOM_LIBINT_PREFIX ${PROJECT_SOURCE_DIR}/external/libint2 )
endif()
# Update policy for Libint
set(CMAKE_POLICY_DEFAULT_CMP0074 NEW)
FetchContent_Declare (
Libint2
PREFIX ${CUSTOM_LIBINT_PREFIX}
GIT_REPOSITORY "https://urania.chem.washington.edu/chronusq/libint-cq.git"
GIT_TAG "2.7.0-beta.5"
)
FetchContent_GetProperties ( Libint2 )
if ( NOT Libint2_POPULATED )
message ( STATUS "Downloading Libint..." )
FetchContent_Populate ( Libint2 )
message ( STATUS "Downloading Libint - Done" )
add_subdirectory ( ${libint2_SOURCE_DIR} ${libint2_BINARY_DIR} )
endif()
install(TARGETS libint2
ARCHIVE DESTINATION "lib/libint2"
LIBRARY DESTINATION "lib/libint2"
INCLUDES DESTINATION "include/libint2")
add_library ( ChronusQ::Libint2 ALIAS libint2 )
else()
message ( FATAL_ERROR "Suitable Libint installation could not be found! \
Set Libint2_ROOT to the prefix of the Libint installation or turn \
CQ_ALLOW_BUILD_LIBINT on."
)
endif()
endif()
list(APPEND CQ_EXT_LINK ChronusQ::Libint2)
message ( " == End Libint ==\n" )
This diff is collapsed.