- Notifications
You must be signed in to change notification settings - Fork1
A small ab initio package for electronic structure calculations.
License
AlexB67/hfscf
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Inpired by the crawdad exercises, hfcxx,McMurchie-Davidson, and a 30 year hiatus from physical chemistry and spectroscopy, a smallab initio package was born, written in C++. The originalCrawdad exercises hfcxx and McMurchie-Davidson may be foundhere andhere. With the exception of the DL algorithm you will find solutions to all the Crawdad exercises, and more.
- RHF.
- UHF.
- SOSCF.
- DIIS.
- SAD and CORE initial guess methods.
- MP2, MP3 RHF/UHF.
- CIS excitation energies and oscillator strengths.
- RPA energies
- CCSD CCSD(T) in spin and closed shell basis (RHF)
- Analytic gradients, SCF and MP2 (RHF).
- Analytic gradients, SCF (UHF).
- Numeric gradients, MP2 (UHF)
- Conjugate gradient or RFO geometry optimisation at the SCF and MP2 level in redundant internal coordinates using the IRC library.
- Shell based Cartesian Gaussian integrals up to 2nd derivative (Obara-Saika).
- Support for pure angular momentum and cartesian basis sets in Psi4 compatible format.
- Symmetry and SALC determination (RHF and UHF only) using libmsym.
- Analytic Hessian SCF and MP2 (RHF).
- Numeric Hessian SCF and MP2 (UHF).
- Vibrational Harmonic frequencies.
- IR Intensities.
- Normal modes.
- Thermochemistry analysis.
- Lowdin and Mulliken population analysis.
- Mayer indices (bond orders)
- Dipole moments, Quadrupole moments and static dipole polarizabilities (using direct or iterative CPHF).
To build the software you can use either cmake or meson running on any regular Linux distributions, or the WSL subsystem for Windows.
The following packages must be installed (if not present already).
- Optional: git (if you you want to clone the repository)
- The make or ninja build system.
- gcc++ 9 or later. (versions must support the C++17 standard)
- Optional: OpenMP support, but highly recommended for increased performance; gcc/g++ has OpenMP support out of the box.
- meson or cmake
- Library; Eigen3 (3.3.6 or later).
- pkgconfig. required to detect tclap.
- Library: tclap.
- Library: C++ boost libraries (1.58 or later).
- libmsym: if using meson only. A cmake build includes it.
Note: while clang++ works it is unsupported at this time.
Either download as a zip filefrom here,or use git and issue the comand
git clone https://github.com/AlexB67/hfscf.git
Assuming the project is at the top level home directory and your current path is the home directory, it will look like
/home/*your_user_name*/hfscf
run the following commands
cd hfscfmkdir cm_build/cd cm_build/ccmake .. # or you can use cmake-gui
Change the Release build flags for C and C++ to O3, configure and generate.
cmake ..make -j # or whatever build system you have elected to use, for example, for ninja it would be "ninja".
NB: If you have already build the software with cmake you may skip this step.
Install libmsym as a static library. Generally it is not available in distribution repositories, with the exception of AUR Arch Linux (which may well be outdated). 0.2.4 is required. It can be obtained fromhere. Follow the instructions within.
Assuming the project is at the top level home directory and your current path is the home directory, it will look like
/home/*your_user_name*/hfscf
run the following commands
cd hfscfmkdir m_releasebuild/meson m_releasebuild/ --buildtype=releaseninja -C m_releasebuild/
Note: Do not mix meson and cmake build directories. I have given the build directories unique names as described above. You can use whatever build directory names you like.
For more information how to use the software, see the examples directory or consult the manual. You can run the program from the build directory. Installation is not necessary and unsupported.
cd *to_build_directory*src/hfscf -i ../examples/inputfile
For example
src/hfscf -i ../examples/h2o_1.dat
or for more verbose output
src/hfscf -i ../examples/h2o_1.dat -v 3
or should you wish to write to an ouput file, you can simply redirect the ouput as follows
src/hfscf -i ../examples/h2o_1.dat -v 3 > /path_to_output_file/h2o_1.out
For aditional arguments type
src/hfscf --help
Input files are in text format. The first line is comment line. this is mandatory, any other comment lines are optional and start with the # symbol. Keywords are always in the form
keyword = value
and often case sensitive. For a list of keywords see the source file
hfscf/src/molecule/hfscf_keywords.hpp
Coordinates are placed in curly braces, no keywords can be used in this section. Both Cartesian and Z matrix formats are supported, but may not be mixed. Variable names are not allowed for bond lengths, angles and dihedrals.
Important: The default unit for length is in atomic units, if not specified, contrary to most packages using Angstrom as the default length unit.
A typical input Z matrix input file will look like
# ethene SCF frequencies scf_type = RHFbasis_set = 6-31+G**gradient_type = SCFeri_screen = falsesymmetrize_geom = truegeom_opt = SCF geom_opt_tol = HIGHfrequencies = SCFunits = angstrom{C C 1 1.3358H 1 1.0855 2 121.051H 1 1.0855 2 121.051 3 180.000H 2 1.0855 1 121.051 3 0.000H 2 1.0855 1 121.051 3 180.000}
dummy atoms are denoted by the symbol X. A Cartesian input will look like
# Benzene HF/6-311G no dummy atomsinitial_guess = SAD# DIIS extrapolation stepsdiis_range = 8# Basis setbasis_set = 6-311G# turn on symmetryuse_symmetry = true# force point grouppoint_group_override = D2h# Units used. Cartesian input allows atomic numbers, or atomic symbols# A Z matrix allows atomic symbols only.units = angstrom{6 0.000 1.396 0.0006 1.209 0.698 0.0006 1.209 -0.698 0.0006 0.000 -1.396 0.0006 -1.209 -0.698 0.0006 -1.209 0.698 0.0001 0.000 2.479 0.0001 2.147 1.240 0.0001 2.147 -1.240 0.0001 0.000 -2.479 0.0001 -2.147 -1.240 0.0001 -2.147 1.240 0.000}
Keywords often assume a default value if not entered. If no basis set is specified, STO-3G will be used.
The hfscf program will validate your input file. In most cases an error message will be displayed followed by a graceful exit if an error is detected, with a suggestion how to fix it.
Basis sets are psi4 format compatible only, a number are already included. New basis sets can be obtained fromthe basis set exchange website. hfscf maximum supported angular momentum is L = 5 (H). Density fitted basis sets are not supported.
Make sure that the Psi4 format option is selected when downloading. You can place a new basis in the basis set directory found at
hfscf/basis
Note: You must remove the middle part of the filename, typically the names aresomebasis.0.gbs orsomebasis.1.gbs. remove the 0 or 1, so it becomessomebasis.gbs