# Input File: Keywords

In this section we provide a complete list of allowed keywords for the input file used
in `block2main`

with a short description for each keyword.

## Global Settings

- # / !
If a line starts with ‘!’ or ‘#’, the line will be ignored.

- outputlevel
Optional. Followed by one integer. 0 = Silent. 1 = Print information for each sweep. 2 = Print information for iteration at each site (default). 3 = Print information for each Davidson/CG iteration.

- orbitals
Required for most normal cases. Not required if reloading MPO or when

`orbital_rotation`

is the calculation type, or when`model`

is given. Followed by the file name for the orbital definition and integrals, in FCIDUMP format or`hdf5`

format (used only in`libdmet`

). Only`nonspinadapted`

is supported for`orbitals`

with`hdf5`

format .- integral_tol
Optional. The integral values smaller than

`integral_tol`

will be discarded. Default is 1E-12 (for integral with`hdf5`

format) or 0 (for integral with FCIDUMP format).- model
Optional. Can be used to perform calculations for some simple model Hamiltonian and the

`orbitals`

keyword can be skipped. For example,`model hubbard 16 1 2`

will calculate ground state for 1-dimensional non-periodic Hubbard model with 16 sites and nearest-neighbor interaction, t = 1 and U = 2.`model hubbard_periodic 16 1 2`

will do the calculation for the periodic Hubbard model.`model hubbard_kspace 16 1 2`

will do the calculation for the periodic Hubbard model in the momentum space. One can then use this together with`k_symmetry`

to utilize the translational symmetry or not use it if the keyword`k_symmetry`

is not given.`model hubbard 16 1 2 per-site`

will print the energy for each site.- prefix
Optional. Path to scratch folder. Default is

`./nodex/`

.- num_thrds
Optional. Followed by an integer for the number of OpenMP threads to use. Default is 28 (if there is no

`hf_occ integral`

in the input file) or 1 (to be compatible with`StackBlock`

when there is`hf_occ integral`

in the input file). Note that the environment variable`OMP_NUM_THREADS`

is ignored.- mkl_thrds
Optional. Followed by an integer for the number of OpenMP threads to use for the MKL library. Default is 1.

- mem
Optional. Followed by an integer and a letter as the unit (g or G). Stack memory for doubles. Default is 2 GB. Note that the code may use a large amount of memory via dynamic allocation, which is not controlled by this number.

- intmem
Optional. Followed by an integer and a letter as the unit (g or G). Stack memory for integers. Default is 10% of

`mem`

.- mem_ratio
Optional. Followed by a float number (0.0 ~ 1.0). The ratio of main stack memory. Default is 0.4.

- min_mpo_mem
Optional. Followed by auto, True, or False. If True, MPO building and simplification will cost much less memory. But the computational cost will be higher due to IO cost. Default is auto, which is True if number of orbitals is >= 120.

- qc_mpo_type
Optional. Followed by auto (default), conventional, nc, or cn. The Hamiltonian MPO formalism type. The default is to use Conventional for non-big-site, and NC for big-site. Conventional DMRG is overall 50% faster than NC, but the cost of the middle site is 2 times higher than NC. If the memory is limited and

`min_mpo_mem`

is used, one should set NC MPO type to make memory cost more uniform.- cached_contraction
Optional. Followed by an integer 0 or 1 (default). If 1, cached contraction is used for improving performance.

- nonspinadapted
Optional. If given, the code will work in the non-spin-adapted

`SZ`

mode. Otherwise, it will work in the spin-adapted`SU2`

mode.- k_symmetry
Optional. If given, the code will work in the non-spin-adapted or spin-adapted mode with additionally the K symmetry. Requiring the code to be built with

`-DUSE_KSYMM`

.- use_complex
Optional. If given, the code will work in the complex number mode, where the integral, MPO and MPS contain all complex numbers. FCIDUMP with real or complex integral can be accepted in this mode. Requiring the code to be built with

`-DUSE_COMPLEX`

. Conflict with`use_hybrid_complex`

(checked).- use_hybrid_complex
Optional. If given, the code will work in the hybrid complex number mode, where the MPO is split into real and complex sub-MPOs. MPS rotation matrix are real matrices but center site tensor is complex. FCIDUMP with real or complex integral can be accepted in this mode. Requiring the code to be built with

`-DUSE_COMPLEX`

. Conflict with`use_complex`

(checked).- use_general_spin
Optional. If given, the code will work in (fermionic) spin orbital (rather than spatial orbital). FCIDUMP will be intepreted as integrals between spin orbitals. If the FCIDUMP is actually the normal FCIDUMP for spatial orbitals, the extra keyword

`trans_integral_to_spin_orbital`

is required to make it work with general spin. Requiring the code to be built with`-DUSE_SG`

. Currently cannot be used together with`k_symmetry`

.- single_prec
Optional. If given, the code will work in single precision (float) rather than double precision (double).

- integral_rescale
Optional.

`auto`

(default) or`none`

or floating point number. If`auto`

and the calculation is done with single precision, the average diagonal of the one-electron integral will be moved to the energy constant. Ideally, with single precision, we want the energy constant to be close to the final dmrg energy. If`auto`

and the calculation is done with double precision, nothing will happen. If`none`

, nothing will happen. If the value of`integral_rescale`

is a number, the energy constant will be adjust to the given number by shifting the average diagonal of the one-electron integral. This should only be used when the particle number of the calculation is a constant (namely,`nelec`

contains only one number).- check_dav_tol
Optional.

`auto`

(default) or 1 or 0. If`auto`

or`1`

and the calculation is done with single precision, the davidson tolerance will be set to be no lower than 5E-6.- trans_integral_to_spin_orbital
Optional. If given, the FCIDUMP (in spatial orbitals) will be reinterpretted to work with general spin. Only makes sense together with

`use_general_spin`

.- singlet_embedding
Optional. If given, the code will use the singlet embedding formalism. Only have effects in the spin-adapted

`SU2`

mode. No effects if it is a restart calculation.- conn_centers
Optional. Followed by a list of indices of connection sites or by

`auto`

and the number of processor groups. If`conn_centers`

is given, the parallelism over sites will be used (MPI required,`twodot`

only). For example,`conn_centers auto 5`

will divide the processors into 5 groups. Only supports the standard DMRG calculation.- restart_dir
Optional. Followed by directory name. If

`restart_dir`

is given, after each sweep, the MPS will be backed up in the given directory.- restart_dir_per_sweep
Optional. Followed by directory name. If

`restart_dir_per_sweep`

is given, after each sweep, the MPS will be backed up in the given directory name followed by the sweep index as the name suffix. This will save MPSs generated from all sweeps.- fp_cps_cutoff
Optional. Followed by a small fractional number. Sets the float-point number cutoff for saving disk storage. Default is

`1E-16`

.- release_integral
Optional. If given, memory used by stroring the full integral will be release after building MPO (but before DMRG).

## Calculation Types

The default calculation type is DMRG (without the need to write any keywords).

- fullrestart
Optional. If given, the initial MPS will be read from disk. Normally this keyword will be automatically added if any of the

`restart_*`

keywords are used.- oh / restart_oh
Expectation value calculation on the DMRG optimized MPS or reloaded MPS.

- onepdm / restart_onepdm
One-particle density matrix calculation on the DMRG optimized MPS or reloaded MPS.

`onepdm`

can run with either`twodot_to_onedot`

,`onedot`

or`twodot`

.- twopdm / restart_twopdm
Two-particle density matrix calculation on the DMRG optimized MPS or reloaded MPS.

- threepdm / restart_threepdm
Three-particle density matrix calculation on the DMRG optimized MPS or reloaded MPS. Cannot be used together with

`conventional_npdm`

.- fourpdm / restart_fourpdm
Four-particle density matrix calculation on the DMRG optimized MPS or reloaded MPS. Cannot be used together with

`conventional_npdm`

.- tran_onepdm / restart_tran_onepdm
One-particle transition density matrix among a set of MPSs.

- tran_twopdm / restart_tran_twopdm
Two-particle transition density matrix among a set of MPSs.

- tran_threepdm / restart_tran_threepdm
Three-particle transition density matrix among a set of MPSs. Cannot be used together with

`conventional_npdm`

.- tran_fourpdm / restart_tran_fourpdm
Four-particle transition density matrix among a set of MPSs. Cannot be used together with

`conventional_npdm`

.- tran_oh / restart_tran_oh
Operator overlap between each pair in a set of MPSs.

- diag_twopdm / restart_diag_twopdm
Diagonal two-particle density matrix calculation.

- correlation / restart_correlation
Spin and charge correlation function.

- copy_mps / restart_copy_mps
Copy MPS with one tag to another tag. Followed by the tag name for the output MPS. The input MPS tag is given by

`mps_tags`

. The MPS transformation is also handled with this calculation type.- sample / restart_sample
Printing configuration state function (CSF) or determinant coefficients.

- orbital_rotation
Orbital rotation of an MPS to generate another MPS.

- compression
MPS compression.

- delta_t
Followed by a single float value or complex value as the time step for the time evolution. The computation will apply \(\exp (-\Delta t H) |\psi\rangle\) (with multiple steps). So when it is a real float value, we will do imaginary time evolution of the MPS (namely, optimizing to ground state or finite-temperature state). When it is a pure imaginary value, we will do real time evolution of the MPS (namely, solving the time dependent Schrodinger equation). General complex value can also be supported, but may not be useful.

- stopt_dmrg
First step of stochastic perturbative DMRG, which is the normal DMRG with a small bond dimension.

- stopt_compression
Second step of stochastic perturbative DMRG, which is the compression of \(QV |\Psi_0\rangle\). In general a bond diemension that is much larger than the first step should be used.

- stopt_sampling
Third step of stochastic perturbative DMRG. Followed by an integer as the number of CSF / determinants to be sampled. If any of the first and second step is done in the non-spin-adapted mode, the determinants will be sampled and this step must also be in the non-spin-adapted mode. Otherwise, CSF will be sampled if the keyword

`nonspinadapted`

is given, and determinants will be sampled if the keyword`nonspinadapted`

is not given.- restart_nevpt2_npdm
Compute 1-4 PDM for DMRG-SC-NEVPT2. If there are multiple roots, the calculation will be performed for all roots. The 1-4PDM will be used to compute the SC-NEVPT2 intermediate Eqs. (A16) and (A22) in the spin-free NEVPT2 paper. Only the two SC-NEVPT2 intermediates will be written into the disk.

- restart_mps_nevpt
Followed by three integers, representing the number of active, inactive, and external orbitals. Compute the

`V_i`

and`V_a`

correlation energy in DMRG-SC-NEVPT2 using MPS compression. Only the spin-adapted version is implemented. If there are multiple roots, the keyword`nevpt_state_num`

is required to set which root should be used to compute the correlation energy.

## Calculation Modifiers

- target_t
Optional. Followed by a single float value as the total time for time evolution. This keyword should be used only together with

`delta_t`

. Default is 1.- te_type
Optional. Followed by

`rk4`

or`tangent_space`

. This keyword sets the time evolution algorithm. This keyword should be used only together with`delta_t`

. Default is`rk4`

.- statespecific
If

`statespecific`

keyword is in the input (with no associated value). This option implies that a previous state-averaged dmrg calculation has already been performed. This calculation will refine each individual state. This keyword should be used only with DMRG calculation type.- soc
If

`soc`

keyword is in the input (with no associated value), the (normal or transition) one pdm for triplet excitation operators will be calculated (which can be used for spin-orbit coupling calculation). This keyword should be used only together with`onepdm`

,`tran_onepdm`

,`restart_onepdm`

, or`restart_tran_onepdm`

. Not supported for`nonspinadapted`

.- overlap
If

`overlap`

keyword is in the input (with no associated value), the expectation of identity operator will be calculated (which can be used for the overlap matrix between states). Otherwise, when the overlap keyword is not given, the full Hamiltonian is used. For compression, if this keyword is in the input, it directly compresses the given MPS. Otherwise, the contration of full Hamiltonian MPO and MPS is compressed. This keyword should only be used together with`oh`

,`tran_oh`

,`restart_oh`

,`restart_tran_oh`

,`compression`

, and`stopt_compression`

.- nat_orbs
If given, the natural orbitals will be computed. Optionally followed by the filename for storing the rotated integrals (FCIDUMP). If no value is associated with the keyword

`nat_orbs`

, the rotated integrals will not be computed. This keyword can only be used together with`restart_onepdm`

or`onepdm`

.- nat_km_reorder
Optional keyword with no associated value. If given, the artificial reordering in the natural orbitals will be removed using Kuhn-Munkres algorithm. This keyword can only be used together with

`restart_onepdm`

or`onepdm`

. And the keyword`nat_orbs`

must also exist.- nat_positive_def
Optional keyword with no associated value. If given, artificial rotation in the logarithm of the rotation matrix can be avoid, by make the rotation matrix quasi-positive-definite, with “quasi” in the sense that the rotation matrix is not Hermitian. This keyword can only be used together with

`restart_onepdm`

or`onepdm`

. And the keyword`nat_orbs`

must also exist.- trans_mps_to_sz
Optional keyword with no associated value. If given, the MPS will be transformed to non-spin-adapted before being saved. This keyword can only be used together with

`restart_copy_mps`

or`copy_mps`

.- trans_mps_to_singlet_embedding
Optional keyword with no associated value. If given, the MPS will be transformed to singlet-embedding format before being saved. This keyword can only be used together with

`restart_copy_mps`

or`copy_mps`

.- trans_mps_from_singlet_embedding
Optional keyword with no associated value. If given, the MPS will be transformed to non-singlet-embedding format before being saved. This keyword can only be used together with

`restart_copy_mps`

or`copy_mps`

.- trans_mps_to_complex
Optional keyword with no associated value. If given, the MPS will be transformed to complex wavefunction with real rotation matrix before being saved. This keyword can only be used together with

`restart_copy_mps`

or`copy_mps`

, and optionally with`split_states`

. This keyword is conflict with other`trans\_mps\_*`

keywords. To load this MPS in the subsequent calculations, the keyword`complex_mps`

must be used.- split_states
Optional keyword with no associated value. If given, the state averaged MPS will be split into individual MPSs. This keyword can only be used together with

`restart_copy_mps`

or`copy_mps`

, and optionally with`trans_mps_to_complex`

. This keyword is conflict with other`trans\_mps\_*`

keywords. The individual MPS will be the tag given by the keyword`restart_copy_mps`

or`copy_mps`

with`-<n>`

appended, where`n`

is the root index counting from zero.- resolve_twosz
Optional. Followed by an integer, which is two times the projected spin. The transformed SZ MPS will have the specified projected spin. If the keyword

`resolve_twosz`

is not given, an MPS with ensemble of all possible projected spins will be produced (which is often not very useful). This keyword can only be used together with`restart_copy_mps`

or`copy_mps`

. And the keyword`trans_mps_to_sz`

must also exist.- normalize_mps
Optional keyword with no associated value. If given, the transformed SZ MPS will be normalized. This keyword can only be used together with

`restart_copy_mps`

or`copy_mps`

. And the keyword`trans_mps_to_sz`

must also exist.- big_site
Optional. Followed by a string for the implementation of the big site. Possible implementations are

`folding`

,`fock`

(only with`nonspinadapted`

),`csf`

(only without`nonspinadapted`

). This keyword can only be used in dynamic correlation calculations. If this keyword is not given, the dynamic correlation calculation will be performed with normal MPS with no big sites.- expt_algo_type
Optional. Followed by a string

`auto`

,`fast`

,`normal`

,`symbolfree`

, or`lowmem`

. Default is`auto`

. This keyword can only be used with density matrix or transition density matrix calculations.`auto`

is`fast`

if`conventional_npdm`

is given, or`symbolfree`

if`conventional_npdm`

is not given.`normal`

uses less memory compared to`fast`

, but the complexity can be higher.`lowmem`

uses less memory compared to`symbolfree`

, but the complexity can be higher.`symbolfree`

is in general more efficient than`fast`

and`normal`

, but it is only available if`conventional_npdm`

is not given. For 3- and 4-particle density matrices, when this keyword is not`auto`

or`symbolfree`

, it may consume a significant large amount of memory to store the symbols.- conventional_npdm
Optional, mainly for backward compatibility. If given, will use the conventional manual npdm code. This is only available for 1- and 2- particle density matrices. For most cases, the conventional manual code is slower. For soc 1-particle density matrix and transition density matrix between different irreps, only the conventional manual code is available.

- simple_parallel
Optional. Followed by an empty string (same as

`ij`

) or`ij`

or`kl`

. When this keyword is not given, the conventional parallel rule for QC-DMRG will be used. Otherwise, the simple parallel scheme based on distributing integral according to`ij`

or`kl`

indices is used. When`qc_mpo_type`

is auto, this simple scheme will also change the center for middle transformation to reduce the MPO bond dimension. The simple parallel scheme may be good for saving per-processor MPO memory cost for large scale parallelized DMRG.- condense_mpo
Optional. Followed by an integer (must be a power of 2, default is 1). When

`condense_mpo`

is not 1,`block2`

will merge every two adjacent MPO sites into a larger site (after the MPO is created), repeating`log(condense_mpo)`

times, until the total number of sites is`n_sites / condense_mpo`

. Not working with SU2 symmetry. When`condense_mpo 2`

is used with general spin, the calculation will be done with two spin orbitals as a site rather than one spin orbital. Not working with`twopdm`

related keywords. Require the keyword`simple_parallel`

for the parallelization of the condensed MPO.- one_body_parallel_rule
Optional keyword with no associated value. If given, the more efficient parallelization rule will be used to distribute the MPO. This rule only works when the two-body term is zero or purely local. Real space Huabbard model is one of the case. For such Hamiltonian, the default (quantum chemistry) parallelization rule can still work, but may have no improvements with multiple processors. If this keyword is used with non-trivial two-body term, runtime error may happen.

- complex_mps
Optional keyword with no associated value. If given, complex expectation values will be computed for MPS with complex wavefunction tensor and real rotation matrices (in non-complex mode). Should be used together with

`pdm`

,`oh`

, or (complex)`delta_t`

type calculations. In complex mode, this should not be used as everything is complex.- tran_bra_range
Optional. Followed by the range parameter of bra state indices for computing transition density matrices. Normally two numbers are given, which is the starting index and endding index (not included).

- tran_ket_range
Optional. Followed by the range parameter of ket state indices for computing transition density matrices. Normally two numbers are given, which is the starting index and endding index (not included).

- tran_triangular
Optional keyword with no associated value. If given, only the transition density matrices with bra state index equal to or greater than the ket state index will be computed.

- skip_inact_ext_sites
Optional keyword with no associated value. If given, for uncontracted dynamic correlation calculations, the sweeps will skip inactive and external sites, so that the efficiency can be higher and the accuracy is not affected. This should only be used with uncontracted dynamic correlation keywords (checked) without any big sites. Normally it is useful only for dynamic correlation with singles (such as

`mrcis`

).- full_integral
Optional keyword with no associated value. If

**not**given, and it is a dynamic correlation with singles (namely, with keywords`nevpt2s`

,`mrcis`

,`mrrept2s`

,`nevpt2-i`

,`nevpt2-r`

,`mrrept2-i`

, or`mrrept2-r`

), the two-electron integral elements with more than two virtual indices will be set to zero. This should save some MPO contruction time, without affecting the sweep time cost and accuracy. If this keyword is given, the full integral elements will be used for constructing MPO.- nevpt_state_num
Followed by a single integer, the index of the root (counting from zero) used for SC-NEVPT2. Only useful for the calculation type

`restart_mps_nevpt`

.

## Uncontracted Dynamic Correlation

There can only be at most one dynamic correlation keyword (checked). Any of the following keyword must be followed by 2 integers (representing number of orbitals in the active space and number of electrons in the active space), or 3 integers (representing number of orbitals in the inactive, active, and external space, respectively).

- dmrgfci
Not useful for general purpose. Treating the inactive and external space using full Configuration Interaction (FCI).

- casci
Treating the inactive space as a single CSF (all occupied) and the external space as a single CSF (all empty).

- mrci
*Same as*`mrcisd`

.- mrcis
Multi-configuration CI with singles. The inactive / virtual space can have at most one hole / electron.

- mrcisd
Multi-configuration CI with singles and doubles. The inactive / virtual space can have at most two holes / electrons.

- mrcisdt
Multi-configuration CI with singles and doubles and triples. The inactive / virtual space can have at most three holes / electrons.

- nevpt2
*Same as*`nevpt2sd`

.- nevpt2s
Second order N-Electron Valence States for Multireference Perturbation Theory with singles. The inactive / virtual space can have at most one hole / electron.

- nevpt2sd
Second order N-Electron Valence States for Multireference Perturbation Theory with singles and doubles. The inactive / virtual space can have at most two holes / electrons. The zeroth-order Hamiltonian is Dyall’s Hamiltonian.

- mrrept2
*Same as*`mrrept2sd`

.- mrrept2s
Second order Restraining the Excitation degree Multireference Perturbation Theory (MRREPT) with singles. The inactive / virtual space can have at most one hole / electron.

- mrrept2sd
Second order Restraining the Excitation degree Multireference Perturbation Theory (MRREPT) with singles and doubles. The inactive / virtual space can have at most two holes / electrons. The zeroth-order Hamiltonian is Fink’s Hamiltonian.

## Schedule

- onedot
Using the one-site DMRG algorithm.

`onedot`

will be implicitly used if you restart from a`onedot`

mps (can be obtained from previous run with`twodot_to_onedot`

).- twodot
Default. Using the two-site DMRG algorithm.

- twodot_to_onedot
Followed by a single number to indicate the sweep iteration when to switch from the two-site DMRG algorithm to the one-site DMRG algorithm. The sweep iteration is counted from zero.

- schedule
Optional. Followed by the word

`default`

or a multi-line DMRG schedule with the last line being`end`

. If not given, the defualt schedule will be used. Between the keyword`schedule`

and`end`

each line needs to have four values. They are corresponding to starting sweep iteration (counting from zero), MPS bond dimension, tolerance for the Davidson iteration, and noise, respectively. Starting sweep iteration is the sweep iteration in which the given parameters in the line should take effect. For each line, alternatively, one can provide`n_sites - 1`

values for the MPS bond dimension, where the ith number represents the right virtual bond dimension for the MPS tensor at site i. If this is the case, the site-dependent MPS bond dimension truncation will be used.- store_wfn_spectra
Optional with no associated value. If given, the singular values at each left-right partition during the last DMRG sweep will be stored as

`sweep_wfn_spectra.npy`

after convergence. Only works with DMRG type calculation. The stored array is a numpy array of 1 dimensional numpy array. The inner arrays normally do not have all the same length. For spin-adapted, each singular values correspond to a multiplet. So for non-singlet, the wavefunction spectra have different interpretation between SU2 and SZ. Additionally, when this keyword is given, the bipartite entanglement of the MPS will be computed, as \(S_k = - \sum_i \Lambda_i^2 \log \Lambda_i^2\) where \(\Lambda_i\) are all singular values found at site k. The bipartite entanglement will be printed and stored as`sweep_wfn_entropy.npy`

as a 1 dimensional numpy array.- extrapolation
Optional. Should only be used for standard DMRG calculation with the reverse schedule. Will print the extrapolated energy and generate the energy extrapolation plot (saved as a figure).

- maxiter
Optional. Followed by an integer. Maximum number of sweep iterations. Default is 1.

- sweep_tol
Optional. Followed by a small float number. Convergence for the sweep. Default is 1E-6.

- startM
Optional. Followed by an integer. Starting bond dimension in the default schedule. Default is 250.

- maxM
Required for default schedule. Followed by an integer. Maximum bond dimension in the default schedule.

- lowmem_noise
Optional. If given, the noise step will require less memory but potentially worse openmp load-balancing.

- dm_noise
Optional. If given, the density matrix noise will be used instead of the default perturbative noise. Density matrix noise is much cheaper but not very effective.

- cutoff
Optional. Followed by a small float number. States with eigenvalue below this number will be discarded, even when the bond dimension is large enough to keep this state. Default is 1E-14.

- svd_cutoff
Optional. Followed by a small float number. Cutoff of singular values used in parallel over sites. Default is 1E-12.

- svd_eps
Optional. Followed by a small float number. Accuracy of SVD for connection sites used in parallel over sites. Default is 1E-4.

- trunc_type
Optional. Can be

`physical`

(default) or`reduced`

, where`reduced`

re-weight eigenvalues by their multiplicities (only useful in the`SU2`

mode).- decomp_type
Optional. Can be

`density_matrix`

(default) or`svd`

, where svd may be less numerical stable and not working with`nroots > 1`

.- real_density_matrix
Optional. Only have effects in the complex mode and when

`decomp_type`

is`density_matrix`

. If given, the imaginary part of the density matrix will be discarded before diagonalization. This means that all rotation matrices will be orthogonal rather than unitary, although they will be stored as complex matrices. For complex mode DMRG with more than one roots, this keyword has to be used (not checked).- davidson_max_iter
Optional. Maximal number of iterations in Davidson. Default is 5000. If this number is reached but convergence is not achieved, the calculation will abort. If this numebr is larger than

`davidson_soft_max_iter`

, this keyword has no effect.- davidson_soft_max_iter
Optional. Maximal number of iterations in Davidson. Default is 4000. If this number is reached but convergence is not achieved, the calculation will continue as if the convergence is achieved. If this numebr is -1, or larger than or equal to

`davidson_max_iter`

, this keyword has no effect and`davidson_max_iter`

is used instead.- n_sub_sweeps
Optional. Number of sweeps for each time step. Defualt is 2. This keyword only has effect when used with

`delta_t`

and when`te_type`

is`rk4`

.

## System Definition

- nelec
Optional. Followed by one or more integrers. Number of electrons in the target wavefunction. If not given, the value from FCIDUMP is used (and the keyword

`orbtials`

must be given).- spin
Optional. Followed by one or more integrers. Two times the total spin of the target wavefunction in spin-adapted calculation. Or Two times the projected spin (number of alpha electrons minus number of beta electrons) of the target wavefunction in non-spin-adapted calculation. If not given, the value from FCIDUMP is used. If FCIDUMP is not given, 0 is used.

- irrep
Optional. Followed by one or more integrers. Point group irreducible representation of the target wavefunction. If not given, the value from FCIDUMP is used. If FCIDUMP is not given, 1 is used. MOLPRO notation is used, where 1 always means the trivial irreducible representation.

- sym
Optional. Followed by a lowercase string for the (Abelian) point group name. Default is

`d2h`

. If the real point group is`c1`

or`c2`

, setting`sym d2h`

will also work.- k_irrep
Optional. Followed by one or more integrers. LZ / K irreducible representation number of the target wavefunction. If not given, the value from FCIDUMP is used. If FCIDUMP is not given, 0 is used.

- k_mod
Optional. Followed by one integer. Modulus for the K symmetry. Zero means LZ symmetry. If not given, the value from FCIDUMP is used. If FCIDUMP is not given, 0 is used.

- nroots
Optional. Followed by one integer. Number of roots. Default is 1. For

`nroots > 1`

,`oh`

or`restart_oh`

will calculate the expectation of Hamiltonian on every state.`tran_oh`

or`restart_tran_oh`

will calculate the expectation of Hamiltonian on every possible pair of states as bra and ket states. The parameters for the quantum number of the MPS, namely`spin`

,`isym`

and`nelec`

can also take multiple numbers. This can also be combined with`nroots > 1`

, which will then enable transition density matrix between MPS with different quantum numbers to be calculated (in a single run). This kind of calulation usually needs a larger`nroots`

than the`nroots`

actually needed, otherwise, some excited states with different quantum number from the ground-state may be missing. To save time, one may first do a calculation with larger`nroots`

and small bond dimensions, and then do`fullrestart`

and change`nroots`

to a smaller value. Then only the lowest`nroots`

MPSs will be restarted.- weights
Optional. Followed by a list of fractional numbers. The weights of each state for the state average calculation. If not given, equal weight will be used for all states.

- mps_tags
Optional. Followed by a single string or a list of strings. The MPS in scratch directory with the specific tag/tags will be loaded for restart (for

`statespecific`

,`restart_onepdm`

, etc.). The default MPS tag for input/output is`KET`

.- read_mps_tags
Optional. Followed by a string. The tag for the constant (right hand side) MPS for compression. The tag of the output MPS in compression is set using

`mps_tags`

.- proj_mps_tags
Optional. Followed by a single string or a list of strings. The tag for the MPSs to be projected out during DMRG. Must be used together with

`proj_weights`

. The projection will be done by changing Hamiltonian from \(\hat{H}\) to \(\hat{H} + \sum_i w_i |\phi_i\rangle \langle \phi_i|\) (the level shift approach), where \(|\phi_i\rangle\) are the MPSs to be projected out. \(w_i\) are the weights.- proj_weights
Optional. Followed by a single float number or a list of float numbers. Can be used together with

`proj_mps_tags`

. The number of float numbers in this keyword must be equal to the length of`proj_mps_tags`

. Normally, the weights are positive and they should be larger than the energy gap. If the weight is too small, you will get unphyiscal eigenvalues as`Ei + wi`

, where`Ei`

is the energy of the MPSs to be projected out. If`statespecific`

keyword is in the input, it will change the projection method from the orthogonalization method \(\hat{H} - \sum_i |\phi_i\rangle \langle \phi_i|\) to the level shift approach \(\hat{H} + \sum_i w_i |\phi_i\rangle \langle \phi_i|\).- symmetrize_ints
Optional. Followed by a small float number. Setting the largest allowed value for the integral element that violates the point group or K symmetry. Default is 1E-10. The symmetry-breaking integral elements will be discarded in the calculation anyway. Setting this keyword will only control whether the calculation can be performed or an error will be generated.

- occ
Optional. Followed by a list of float numbers between 0 and 2 for spatial orbital occupation numbers, or a list of float numbers between 0 and 1 for spin orbital occupation numbers, or a list of float numbers between 0 and 1 for the probability for each of four states at each site (experimental). This keyword should only be used together with

`warmup occ`

.- bias
Optional. Followed by a non-negative float number. If not 1.0, sets an power based bias to occ.

- cbias
Optional. Followed by a non-negative float number. If not 0.0, sets a constant shift towards the equal-possibility occ.

`cbias`

is normally useful for shifting integral occ, while`bias`

only shifts fractional occ.- init_mps_center
Optional. Followed by a site index (counting from zero). Default is zero. This is the canonical center for the initial guess MPS.

- full_fci_space
Optional, not useful for general user. If

`full_fci_space`

keyword is in the input (with no associated value), the full fci space is used (including block quantum numbers outside the space of the wavefunction target quantum number).- trans_mps_info
Optional, experimental. If

`trans_mps_info`

keyword is in the input (with no associated value), the`MPSInfo`

will be initialized using`SZ`

quantum numbers if in`SU2`

mode, or using`SU2`

quantum numbers if in`SZ`

mode. A transformation of`MPSInfo`

is then performed between`SZ`

and`SU2`

quantum numbers.`MultiMPSInfo`

cannot be supported with this keyword.- random_mps_init
Optional. If given, the initial guess for the output MPS in compression will be random initialized in the way set by the

`warmup`

keyword. Otherwise, the constant right hand side MPS will be copied as the the initial guess for the output MPS.- warmup
Optional. If

`wamup occ`

then the initial guess will be generated using occupation numbers. Otherwise, the initial guess will be generated assuming every quantum number has the same probability (default).

## Orbital Reordering

There can only be at most one orbital reordering keyword (checked).

- noreorder
The order of orbitals is not changed.

- nofiedler
*Same as*`noreorder`

.- gaopt
Genetic algorithm for orbital ordering. Followed by (optionally) the configuration file for the

`gaopt`

subroutine. Default parameters for the genetic algorithm will be used if no configuration file is given.- fiedler
Default. Fiedler orbital reordering.

- irrep_reorder
Group orbitals with the same irrep together.

- reorder
Followed by the name of a file including the space-sparated orbital reordering indices (counting from one).

## Unused Keywords

- hf_occ integral
Optional. For StackBlock compatibility only.