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