1List of files in CheMPS2 2------------------------ 3 4[CheMPS2/CASPT2.cpp](CheMPS2/CASPT2.cpp) contains an implementation of 5internally contracted CASPT2. The user can specify an IPEA shift and/or 6an imaginary level shift to mitigate possible intruder state problems. 7The linear CASPT2 equations can be solved with either Davidson's 8algorithm, or with the conjugate gradient method. Note that the overlap 9matrix is always diagonalized, and that a cumulant approximation of the 104-RDM should therefore be avoided. 11 12[CheMPS2/CASSCF.cpp](CheMPS2/CASSCF.cpp) contains the functionality 13to construct the active space Hamiltonian for DMRG-SCF. 14 15[CheMPS2/CASSCFdebug.cpp](CheMPS2/CASSCFdebug.cpp) contains two 16functions: one for calculating the ROHF energy; and one for fetching FCI 17coefficients to determine the point group symmetry of certain electronic 18states of the iron dimer. 19 20[CheMPS2/CASSCFnewtonraphson.cpp](CheMPS2/CASSCFnewtonraphson.cpp) 21contains all DMRG-SCF functions which are specific to the augmented Hessian 22Newton-Raphson update scheme, including the functions to calculate the 23gradient and Hessian. 24 25[CheMPS2/CASSCFpt2.cpp](CheMPS2/CASSCFpt2.cpp) provides the interface between 26the CASSCF and CASPT2 classes. The routines for the 3-RDM and the Fock 27operator contraction with the 4-RDM are called here. 28 29[CheMPS2/ConjugateGradient.cpp](CheMPS2/ConjugateGradient.cpp) is an 30implementation of the conjugate gradient algorithm, in the style of the 31Davidson class. 32 33[CheMPS2/ConvergenceScheme.cpp](CheMPS2/ConvergenceScheme.cpp) contains 34all functions of the ConvergenceScheme class, which contains the instructions 35for the subsequent DMRG sweeps. 36 37[CheMPS2/Correlations.cpp](CheMPS2/Correlations.cpp) contains all the 38functionality to calculate the spin, density, and spin-flip correlation 39functions as well as the two-orbital mutual information. 40 41[CheMPS2/Cumulant.cpp](CheMPS2/Cumulant.cpp) contains static member functions 42to reconstruct the 4-RDM from lower order reduced density matrices. There is 43also a fast contraction of the Fock operator with the cumulant-reconstructed 444-RDM. 45 46[CheMPS2/Davidson.cpp](CheMPS2/Davidson.cpp) is an implementation of 47Davidson's algorithm, both for eigenvalue problems and linear equations. 48 49[CheMPS2/DIIS.cpp](CheMPS2/DIIS.cpp) contains a DIIS convergence 50speed-up for DMRG-SCF. 51 52[CheMPS2/DMRG.cpp](CheMPS2/DMRG.cpp) contains the constructor and 53destructor of the DMRG class, as well as the top-level sweep functions. 54 55[CheMPS2/DMRGfock.cpp](CheMPS2/DMRGfock.cpp) contains the functionality to 56express a symmetry (spin, particle number, and point group) conserving 57single-particle excitation on top of an MPS as a new MPS. 58 59[CheMPS2/DMRGmpsio.cpp](CheMPS2/DMRGmpsio.cpp) contains the store and 60load functions for the DMRG checkpoint file (the MPS and the SyBookkeeper). 61 62[CheMPS2/DMRGoperators3RDM.cpp](CheMPS2/DMRGoperators3RDM.cpp) contains all 63update functions for the renormalized operators specific for the ThreeDM and 64the Correlations. 65 66[CheMPS2/DMRGoperators.cpp](CheMPS2/DMRGoperators.cpp) contains all 67functions related to the DMRG renormalized operators: saving to disk, 68loading from disk, and updating. 69 70[CheMPS2/DMRGSCFindices.cpp](CheMPS2/DMRGSCFindices.cpp) contains the 71index conversions for the DMRG-SCF algorithm. 72 73[CheMPS2/DMRGSCFintegrals.cpp](CheMPS2/DMRGSCFintegrals.cpp) is a container 74class for two-body matrix elements with at most two virtual indices. 75 76[CheMPS2/DMRGSCFmatrix.cpp](CheMPS2/DMRGSCFmatrix.cpp) is a container 77class for orbital matrices which are blockdiagonal in the irreps. 78 79[CheMPS2/DMRGSCFoptions.cpp](CheMPS2/DMRGSCFoptions.cpp) is a container 80class to pass the DMRG-SCF options to the augmented Hessian Newton-Raphson 81and CASPT2 routines of the CASSCF class. 82 83[CheMPS2/DMRGSCFrotations.cpp](CheMPS2/DMRGSCFrotations.cpp) 84contains static member functions for the two-body matrix element rotations 85for the CASSCF and Edmiston-Ruedenberg classes. 86 87[CheMPS2/DMRGSCFunitary.cpp](CheMPS2/DMRGSCFunitary.cpp) contains the 88storage and handling of the unitary matrix and its nonredundant 89skew-symmetric parametrization required for the DMRG-SCF algorithm. 90 91[CheMPS2/DMRGSCFwtilde.cpp](CheMPS2/DMRGSCFwtilde.cpp) is a container 92class to store an intermediate for the DMRG-SCF Hessian. 93 94[CheMPS2/DMRGtechnics.cpp](CheMPS2/DMRGtechnics.cpp) contains the 95functions related to the RDM and excited-state calculations. 96 97[CheMPS2/EdmistonRuedenberg.cpp](CheMPS2/EdmistonRuedenberg.cpp) contains 98an orbital localization function based on the Edmiston-Ruedenberg cost function 99and an augmented Hessian Newton-Raphson optimizer. It also contains the 100functionality to compute the Fiedler vector of the exchange matrix, to reorder 101the active space orbitals in a black-box fashion. 102 103[CheMPS2/Excitation.cpp](CheMPS2/Excitation.cpp) contains matrix-vector 104multiplication routines for spin-conserving single-particle excitations. 105 106[CheMPS2/FCI.cpp](CheMPS2/FCI.cpp) contains a fast determinant-based full 107configuration interaction (FCI) solver. The eigenvalue problem is solved with 108Davidson's algorithm. Green's functions can also be computed. 109 110[CheMPS2/FourIndex.cpp](CheMPS2/FourIndex.cpp) contains all functions of 111the FourIndex container class for the two-body matrix elements. 112 113[CheMPS2/Hamiltonian.cpp](CheMPS2/Hamiltonian.cpp) contains all functions 114of the Hamiltonian class, including functions to get or set specific variables, 115as well as to save and load the Hamiltonian on disk. 116 117[CheMPS2/Heff.cpp](CheMPS2/Heff.cpp) contains top-level functions to perform 118the DMRG effective Hamiltonian times vector multiplication for Davidson's 119algorithm. 120 121[CheMPS2/HeffDiagonal.cpp](CheMPS2/HeffDiagonal.cpp) contains the 122functions to calculate the diagonal elements of the effective Hamiltonian. 123These are required as preconditioner in Davidson's algorithm. 124 125[CheMPS2/HeffDiagrams1.cpp](CheMPS2/HeffDiagrams1.cpp) contains a subset 126of functions to perform the effective Hamiltonian times guess vector 127multiplication. 128 129[CheMPS2/HeffDiagrams2.cpp](CheMPS2/HeffDiagrams2.cpp) contains a subset 130of functions to perform the effective Hamiltonian times guess vector 131multiplication. 132 133[CheMPS2/HeffDiagrams3.cpp](CheMPS2/HeffDiagrams3.cpp) contains a subset 134of functions to perform the effective Hamiltonian times guess vector 135multiplication. 136 137[CheMPS2/HeffDiagrams4.cpp](CheMPS2/HeffDiagrams4.cpp) contains a subset 138of functions to perform the effective Hamiltonian times guess vector 139multiplication. 140 141[CheMPS2/HeffDiagrams5.cpp](CheMPS2/HeffDiagrams5.cpp) contains a subset 142of functions to perform the effective Hamiltonian times guess vector 143multiplication. 144 145[CheMPS2/Initialize.cpp](CheMPS2/Initialize.cpp) sets the seed 146of the random number generator and cout.precision (added for PyCheMPS2). 147 148[CheMPS2/Irreps.cpp](CheMPS2/Irreps.cpp) contains the psi4 symmetry 149conventions. 150 151[CheMPS2/Molden.cpp](CheMPS2/Molden.cpp) contains the functionality to 152rotate an R(O)HF molden file generated by molpro or psi4 to the new CAS space 153defined by the DMRGSCFunitary HDF5 checkpoint file. 154 155[CheMPS2/PrintLicense.cpp](CheMPS2/PrintLicense.cpp) contains a function 156which prints the license disclaimer. 157 158[CheMPS2/Problem.cpp](CheMPS2/Problem.cpp) contains all Problem class 159functions. This wrapper class allows to set the desired symmetry sector for 160the DMRG algorithm. It allows to compute fourfold permutation symmetric 161Hamiltonians with DMRG (see tests 9 and 12). 162 163[CheMPS2/Sobject.cpp](CheMPS2/Sobject.cpp) contains all Sobject class 164functions. This class constructs, stores, and decomposes the reduced two-site 165object. 166 167[CheMPS2/SyBookkeeper.cpp](CheMPS2/SyBookkeeper.cpp) contains all 168SyBookkeeper functions. This class keeps track of the FCI and DMRG virtual 169dimensions of all symmetry sectors at all boundaries. 170 171[CheMPS2/Tensor3RDM.cpp](CheMPS2/Tensor3RDM.cpp) contains all 172initialization functions for the spin-reduced renormalized 173operators of three second quantized operators. 174 175[CheMPS2/TensorF0.cpp](CheMPS2/TensorF0.cpp) contains all TensorF0 176functions. This class stores and handles the reduced spin-0 part of 177two sandwiched second quantized operators, of which the particle 178symmetry sectors are equal. 179 180[CheMPS2/TensorF1.cpp](CheMPS2/TensorF1.cpp) contains all TensorF1 181functions. This class stores and handles the reduced spin-1 part of 182two sandwiched second quantized operators, of which the particle 183symmetry sectors are equal. 184 185[CheMPS2/TensorGYZ.cpp](CheMPS2/TensorGYZ.cpp) contains the contruct 186and update functions for the G-, Y-, and Z-tensors. They are required 187for the two-orbital mutual information. 188 189[CheMPS2/TensorKM.cpp](CheMPS2/TensorKM.cpp) contains the contruct and 190update functions for the K- and M-tensors. It is required for the 191two-orbital mutual information. 192 193[CheMPS2/TensorL.cpp](CheMPS2/TensorL.cpp) contains all TensorL functions. 194This class stores and handles the reduced spin-1/2 part of a single 195sandwiched second quantized operator. The class has been updated to allow 196for a different bra and ket wavefunction, which is needed for 197[CheMPS2/DMRGfock.cpp](CheMPS2/DMRGfock.cpp). 198 199[CheMPS2/TensorO.cpp](CheMPS2/TensorO.cpp) handles the tensors required 200to calculate the overlap between two MPSs. 201 202[CheMPS2/TensorOperator.cpp](CheMPS2/TensorOperator.cpp) implements the 203storage and handling of tensor operators with a given spin, particle 204number, and point group irrep. It replaces the deprecated TensorDiag, 205TensorSwap, TensorS0Abase, TensorS1Bbase, TensorF0Cbase, TensorF1Dbase, 206TensorA, TensorB, TensorC, and TensorD classes. 207 208[CheMPS2/TensorQ.cpp](CheMPS2/TensorQ.cpp) contains all TensorQ functions. 209This class stores and handles the complementary reduced spin-1/2 part of 210three sandwiched second quantized operators. 211 212[CheMPS2/TensorS0.cpp](CheMPS2/TensorS0.cpp) contains all TensorS0 213functions. This class stores and handles the reduced spin-0 part of 214two sandwiched second quantized operators, of which the particle symmetry 215sectors differ by 2. 216 217[CheMPS2/TensorS1.cpp](CheMPS2/TensorS1.cpp) contains all TensorS1 218functions. This class stores and handles the reduced spin-1 part of 219two sandwiched second quantized operators, of which the particle symmetry 220sectors differ by 2. 221 222[CheMPS2/TensorT.cpp](CheMPS2/TensorT.cpp) contains all TensorT functions. 223This class stores and handles the reduced part of an MPS site-tensor. It 224also contains the functionality for QR- and LQ-decomposition of MPS tensors. 225 226[CheMPS2/TensorX.cpp](CheMPS2/TensorX.cpp) contains all TensorX functions. 227This class stores and handles the complementary reduced spin-0 part of four 228sandwiched second quantized operators, which is of course diagonal in the 229symmetry sectors. 230 231[CheMPS2/ThreeDM.cpp](CheMPS2/ThreeDM.cpp) contains all functions to calculate 232and store the 3-RDM from the DMRG-optimized MPS. 233 234[CheMPS2/TwoDM.cpp](CheMPS2/TwoDM.cpp) contains all functions to calculate 235and store the 2-RDM from the DMRG-optimized MPS. 236 237[CheMPS2/TwoIndex.cpp](CheMPS2/TwoIndex.cpp) contains all functions of the 238TwoIndex container class for the one-body matrix elements. 239 240[CheMPS2/Wigner.cpp](CheMPS2/Wigner.cpp) contains static member functions 241to compute Wigner 3j, 6j, and 9j symbols. The API has been chosen to match 242GSL's gsl_sf_coupling_3j, gsl_sf_coupling_6j, and gsl_sf_coupling_9j. 243 244[CheMPS2/executable.cpp](CheMPS2/executable.cpp) builds to the chemps2 245executable, which allows to use libchemps2 from the command line. 246 247[CheMPS2/include/chemps2/CASPT2.h](CheMPS2/include/chemps2/CASPT2.h) contains the definitions of the CASPT2 class. 248 249[CheMPS2/include/chemps2/CASSCF.h](CheMPS2/include/chemps2/CASSCF.h) contains the definitions of the CASSCF class. 250 251[CheMPS2/include/chemps2/ConjugateGradient.h](CheMPS2/include/chemps2/ConjugateGradient.h) contains the definitions of the ConjugateGradient class. 252 253[CheMPS2/include/chemps2/ConvergenceScheme.h](CheMPS2/include/chemps2/ConvergenceScheme.h) contains the definitions of the ConvergenceScheme class. 254 255[CheMPS2/include/chemps2/Correlations.h](CheMPS2/include/chemps2/Correlations.h) contains the definitions of the Correlations class. 256 257[CheMPS2/include/chemps2/Cumulant.h](CheMPS2/include/chemps2/Cumulant.h) contains the definitions of the Cumulant class. 258 259[CheMPS2/include/chemps2/Davidson.h](CheMPS2/include/chemps2/Davidson.h) contains the definitions of the Davidson class. 260 261[CheMPS2/include/chemps2/DIIS.h](CheMPS2/include/chemps2/DIIS.h) contains the definitions of the DIIS class. 262 263[CheMPS2/include/chemps2/DMRG.h](CheMPS2/include/chemps2/DMRG.h) contains the definitions of the DMRG class. 264 265[CheMPS2/include/chemps2/DMRGSCFindices.h](CheMPS2/include/chemps2/DMRGSCFindices.h) contains the definitions of the DMRGSCFindices class. 266 267[CheMPS2/include/chemps2/DMRGSCFintegrals.h](CheMPS2/include/chemps2/DMRGSCFintegrals.h) contains the definitions of the DMRGSCFintegrals class. 268 269[CheMPS2/include/chemps2/DMRGSCFmatrix.h](CheMPS2/include/chemps2/DMRGSCFmatrix.h) contains the definitions of the DMRGSCFmatrix class. 270 271[CheMPS2/include/chemps2/DMRGSCFoptions.h](CheMPS2/include/chemps2/DMRGSCFoptions.h) contains the definitions of the DMRGSCFoptions container class. 272 273[CheMPS2/include/chemps2/DMRGSCFrotations.h](CheMPS2/include/chemps2/DMRGSCFrotations.h) contains the definitions of the DMRGSCFrotations class. 274 275[CheMPS2/include/chemps2/DMRGSCFunitary.h](CheMPS2/include/chemps2/DMRGSCFunitary.h) contains the definitions of the DMRGSCFunitary class. 276 277[CheMPS2/include/chemps2/DMRGSCFwtilde.h](CheMPS2/include/chemps2/DMRGSCFwtilde.h) contains the definitions of the DMRGSCFwtilde class. 278 279[CheMPS2/include/chemps2/EdmistonRuedenberg.h](CheMPS2/include/chemps2/EdmistonRuedenberg.h) contains the definitions of the EdmistonRuedenberg class. 280 281[CheMPS2/include/chemps2/Excitation.h](CheMPS2/include/chemps2/Excitation.h) contains the definitions of the Excitation class. 282 283[CheMPS2/include/chemps2/FCI.h](CheMPS2/include/chemps2/FCI.h) contains the definitions of the FCI class. 284 285[CheMPS2/include/chemps2/FourIndex.h](CheMPS2/include/chemps2/FourIndex.h) contains the definitions of the FourIndex class. 286 287[CheMPS2/include/chemps2/Hamiltonian.h](CheMPS2/include/chemps2/Hamiltonian.h) contains the definitions of the Hamiltonian class. 288 289[CheMPS2/include/chemps2/Heff.h](CheMPS2/include/chemps2/Heff.h) contains the definitions of the Heff class. 290 291[CheMPS2/include/chemps2/Initialize.h](CheMPS2/include/chemps2/Initialize.h) contains the definitions of the Initialize class. 292 293[CheMPS2/include/chemps2/Irreps.h](CheMPS2/include/chemps2/Irreps.h) contains the definitions of the Irreps class. 294 295[CheMPS2/include/chemps2/Lapack.h](CheMPS2/include/chemps2/Lapack.h) contains the definitions of the external BLAS and LAPACK routines. 296 297[CheMPS2/include/chemps2/Molden.h](CheMPS2/include/chemps2/Molden.h) contains the definitions of the Molden class. 298 299[CheMPS2/include/chemps2/MPIchemps2.h](CheMPS2/include/chemps2/MPIchemps2.h) 300contains the distribution of (complementary) renormalized operators over MPI 301processes, as well as wrappers for the MPI communication routines in the C API. 302 303[CheMPS2/include/chemps2/MyHDF5.h](CheMPS2/include/chemps2/MyHDF5.h) forces 304the use of the HDF5 1.8 API, e.g. H5Gcreate2 instead of H5Gcreate1, a known 305issue in Ubuntu 12.04. 306 307[CheMPS2/include/chemps2/Options.h](CheMPS2/include/chemps2/Options.h) 308contains all the options of the CheMPS2 namespace. Here the checkpoint 309storage names and folders can be set, as well as parameters related to 310memory usage and convergence. 311 312[CheMPS2/include/chemps2/Problem.h](CheMPS2/include/chemps2/Problem.h) contains the definitions of the Problem class. 313 314[CheMPS2/include/chemps2/Sobject.h](CheMPS2/include/chemps2/Sobject.h) contains the definitions of the Sobject class. 315 316[CheMPS2/include/chemps2/Special.h](CheMPS2/include/chemps2/Special.h) contains special functions needed in various parts of libchemps2. 317 318[CheMPS2/include/chemps2/SyBookkeeper.h](CheMPS2/include/chemps2/SyBookkeeper.h) contains the definitions of the SyBookkeeper class. 319 320[CheMPS2/include/chemps2/Tensor3RDM.h](CheMPS2/include/chemps2/Tensor3RDM.h) contains the definitions of the Tensor3RDM class. 321 322[CheMPS2/include/chemps2/TensorF0.h](CheMPS2/include/chemps2/TensorF0.h) contains the definitions of the TensorF0 class. 323 324[CheMPS2/include/chemps2/TensorF1.h](CheMPS2/include/chemps2/TensorF1.h) contains the definitions of the TensorF1 class. 325 326[CheMPS2/include/chemps2/TensorGYZ.h](CheMPS2/include/chemps2/TensorGYZ.h) contains the definitions of the TensorGYZ class. 327 328[CheMPS2/include/chemps2/Tensor.h](CheMPS2/include/chemps2/Tensor.h) contains the definitions of the virtual Tensor class. 329 330[CheMPS2/include/chemps2/TensorKM.h](CheMPS2/include/chemps2/TensorKM.h) contains the definitions of the TensorKM class. 331 332[CheMPS2/include/chemps2/TensorL.h](CheMPS2/include/chemps2/TensorL.h) contains the definitions of the TensorL class. 333 334[CheMPS2/include/chemps2/TensorO.h](CheMPS2/include/chemps2/TensorO.h) contains the definitions of the TensorO class. 335 336[CheMPS2/include/chemps2/TensorOperator.h](CheMPS2/include/chemps2/TensorOperator.h) contains the definitions of the TensorOperator class. 337 338[CheMPS2/include/chemps2/TensorQ.h](CheMPS2/include/chemps2/TensorQ.h) contains the definitions of the TensorQ class. 339 340[CheMPS2/include/chemps2/TensorS0.h](CheMPS2/include/chemps2/TensorS0.h) contains the definitions of the TensorS0 class. 341 342[CheMPS2/include/chemps2/TensorS1.h](CheMPS2/include/chemps2/TensorS1.h) contains the definitions of the TensorS1 class. 343 344[CheMPS2/include/chemps2/TensorT.h](CheMPS2/include/chemps2/TensorT.h) contains the definitions of the TensorT class. 345 346[CheMPS2/include/chemps2/TensorX.h](CheMPS2/include/chemps2/TensorX.h) contains the definitions of the TensorX class. 347 348[CheMPS2/include/chemps2/ThreeDM.h](CheMPS2/include/chemps2/ThreeDM.h) contains the definitions of the ThreeDM class. 349 350[CheMPS2/include/chemps2/TwoDM.h](CheMPS2/include/chemps2/TwoDM.h) contains the definitions of the TwoDM class. 351 352[CheMPS2/include/chemps2/TwoIndex.h](CheMPS2/include/chemps2/TwoIndex.h) contains the definitions of the TwoIndex class. 353 354[CheMPS2/include/chemps2/Wigner.h](CheMPS2/include/chemps2/Wigner.h) contains the definitions of the Wigner class. 355 356Please note that these files are documented with doxygen comments. The 357[doxygen html output](http://sebwouters.github.io/CheMPS2/doxygen/index.html) 358can be consulted online. 359 360 361List of files to perform test runs 362---------------------------------- 363 364[tests/test1.cpp.in](tests/test1.cpp.in) contains several DMRG ground 365state calculations in different symmetry sectors for the N2 molecule (d2h 366symmetry) in the minimal STO-3G basis set. 367 368[tests/test2.cpp.in](tests/test2.cpp.in) contains a ground state DMRG 369calculation of the ^1A1 state of H2O (c2v symmetry) in the 6-31G basis set. 370 371[tests/test3.cpp.in](tests/test3.cpp.in) contains a ground state DMRG 372calculation of the ^1A1 state of CH4 (c2v symmetry) in the STO-3G basis set. 373 374[tests/test4.cpp.in](tests/test4.cpp.in) contains a ground state DMRG 375calculation of the ^6A state of a linear Hubbard chain (forced c1 symmetry) 376with 10 sites and open boundary conditions, containing 9 fermions (just below 377half-filling). 378 379[tests/test5.cpp.in](tests/test5.cpp.in) contains an excited state DMRG 380calculation in the ^1Ag symmetry sector of N2 (d2h symmetry) in the minimal 381STO-3G basis set. The ground and two lowest excited states are determined. 382 383[tests/test6.cpp.in](tests/test6.cpp.in) contains a state-averaged 384DMRG-SCF calculation of the first excited state of the ^1Ag sector of O2 (d2h 385symmetry) in the CC-pVDZ basis set. The two 1s core orbitals are kept doubly 386occupied, and two Ag, B2g, B3g, B1u, B2u, and B3u orbitals are chosen as 387active space. A significant speedup is obtained with DIIS. 388 389[tests/test7.cpp.in](tests/test7.cpp.in) reads in 390[tests/matrixelements/O2.CCPVDZ.FCIDUMP](tests/matrixelements/O2.CCPVDZ.FCIDUMP), 391stores these matrix elements to disk, reads them back in from disk, and 392compares the two versions. 393 394[tests/test8.cpp.in](tests/test8.cpp.in) contains a DMRG-SCF ground state 395calculation of the ^1Ag state of N2 (d2h symmetry) in the CC-pVDZ basis set. 396The two 1s core orbitals are kept doubly occupied. The next two Ag and B1u 397orbitals (sigma bonding and antibonding), as well as one B2g, B3g, B2u, and 398B3u orbital (pi bonding and antibonding) are chosen as active space. A 399significant speedup is obtained with DIIS. This test is smaller than test6, 400and is included for debugging with valgrind. 401 402[tests/test9.cpp.in](tests/test9.cpp.in) contains a ground state DMRG 403calculation of a half-filled square 3 by 3 Hubbard lattice, both in the site 404basis and in the momentum basis. For the latter, the matrix elements only have 405fourfold permutation symmetry. 406 407[tests/test10.cpp.in](tests/test10.cpp.in) is a copy of 408[tests/test3.cpp.in](tests/test3.cpp.in), in which the FCI and DMRG 4092- and 3-RDM are compared. This test also shows that after calculating the 4102- and/or 3-RDM, it is possible to continue sweeping. 411 412[tests/test11.cpp.in](tests/test11.cpp.in) is a copy of 413[tests/test4.cpp.in](tests/test4.cpp.in), in which the FCI and DMRG 4142- and 3-RDM are compared for a wavefunction with higher multiplicity. 415 416[tests/test12.cpp.in](tests/test12.cpp.in) contains a ground state DMRG 417calculation of a BCS Hamiltonian. The matrix elements only have fourfold 418permutation symmetry. 419 420[tests/test13.cpp.in](tests/test13.cpp.in) is a copy of the CASSCF 421calculation in [tests/test8.cpp.in](tests/test8.cpp.in), but with full 422configuration interaction (FCI) as active space solver. In addition, 423the CASPT2 variational second order perturbation correction energy 424is calculated. 425 426[tests/test14.cpp.in](tests/test14.cpp.in) is a copy of the CASSCF 427calculation in [tests/test8.cpp.in](tests/test8.cpp.in) with a slightly 428larger active space, and which works with ordered localized orbitals instead 429of natural orbitals. The localization occurs by means of Edmiston-Ruedenberg, 430and the ordering based on the Fiedler vector of the exchange matrix. 431In addition a calculation of the CASPT2 variational second order 432perturbation correction energy in the localized (i.e. not pseudocanonical) 433basis is performed. 434 435[tests/matrixelements/CH4.STO3G.FCIDUMP](tests/matrixelements/CH4.STO3G.FCIDUMP) 436contains the matrix elements for test3 and test10. 437 438[tests/matrixelements/H2O.631G.FCIDUMP](tests/matrixelements/H2O.631G.FCIDUMP) 439contains the matrix elements for test2. 440 441[tests/matrixelements/N2.STO3G.FCIDUMP](tests/matrixelements/N2.STO3G.FCIDUMP) 442contains the matrix elements for test1 and test5. 443 444[tests/matrixelements/O2.CCPVDZ.FCIDUMP](tests/matrixelements/O2.CCPVDZ.FCIDUMP) 445contains the matrix elements for test6 and test7. 446 447[tests/matrixelements/N2.CCPVDZ.FCIDUMP](tests/matrixelements/N2.CCPVDZ.FCIDUMP) 448contains the matrix elements for test8, test13, and test14. 449 450The python tests in [PyCheMPS2/tests/](PyCheMPS2/tests/) are an identical 451conversion of the c++ tests. 452 453These test files illustrate how to use libchemps2. Note that the 454tests are too small to see (near) linear scaling with the number of cores, 455although improvement should still be noticeable. 456 457