Options

Options control the behavior of various calculations in ElemCo.jl. They are organized into categories such as wf (wavefunction), scf (self-consistent field), cc (coupled cluster), etc.

Setting Options

The recommended way to set options is using local options within calculation macros:

@cc ccsd begin
  @set wf charge=-1 ms2=1
  @set cc maxit=100
end

This ensures options are automatically restored after the calculation. See the Calculations page for more details.

Options can also be set globally using the @set macro:

@set cc maxit=100 thr=1.e-12

Options Structure

ElemCo.ECInfos.OptionsType

Options for ElemCo.jl.

  • wf::ElemCo.ECInfos.WfOptions: Wavefunction options (WfOptions).

  • scf::ElemCo.ECInfos.ScfOptions: SCF options (ScfOptions).

  • int::ElemCo.ECInfos.IntOptions: Integral options (IntOptions).

  • cc::ElemCo.ECInfos.CcOptions: Coupled-Cluster options (CcOptions).

  • eom::ElemCo.ECInfos.EomOptions: EOM options (EomOptions).

  • fci::ElemCo.ECInfos.FCIOptions: FCI options (FCIOptions).

  • ciphi::ElemCo.ECInfos.CIPHIOptions: CIPHI options (CIPHIOptions).

  • dmrg::ElemCo.ECInfos.DmrgOptions: DMRG options (DmrgOptions).

  • cholesky::ElemCo.ECInfos.CholeskyOptions: Cholesky options (CholeskyOptions).

  • laplace::ElemCo.ECInfos.LaplaceOptions: Laplace options (LaplaceOptions).

  • diis::ElemCo.ECInfos.DiisOptions: DIIS options (DiisOptions).

  • davidson::ElemCo.ECInfos.DavidsonOptions: Davidson options (DavidsonOptions).

  • print::ElemCo.ECInfos.PrintOptions: Print options (PrintOptions).

source
ElemCo.ECInfos.CIPHIOptionsType

Option for CIΦ (CIPHI) calculations - Selected CI via Perturbation, Heat-Bath and Iterations.

  • target_selection::Int64: ⟨1_000_000⟩ Target (i.e., maximum) number of determinants to select

  • epsilon::Float64: ⟨3e-4⟩ Selection threshold

  • epsilon_h::Float64: ⟨epsilon/10⟩ CIPHI selection threshold. Note that a smaller value improves also the quality of the PT2 correction.

  • epsilon_c::Float64: ⟨epsilon_h⟩ instantaneous PT selection threshold.

  • epsilon_p::Float64: ⟨epsilon⟩ CIPSI selection threshold

  • tol::Float64: ⟨1e-6⟩ Energy convergence threshold

  • res_tol::Float64: ⟨1e-6⟩ Convergence tolerance for residual norm

  • max_iter::Int64: ⟨50⟩ Maximum CIPHI iterations

  • shift::Float64: ⟨0.1⟩ Level shift to improve convergence

  • verbose::Bool: ⟨true⟩ Print iteration details

  • compute_pt2::Bool: ⟨true⟩ Compute PT2 perturbative correction

  • epsilon_pt2::Float64: ⟨1e-6⟩ Threshold for PT2 contributions

  • epsilon_pt2_c::Float64: ⟨epsilon_pt2/2⟩ Threshold for instantaneous PT2 contributions

  • sort4pt2::Bool: ⟨true⟩ Sort determinants by absolute value of coefficients before computing PT2 correction

  • pt2_shift::Float64: ⟨1e-10⟩ Small value added to denominators in PT2 to avoid divergences

  • use_mp2::Bool: ⟨false⟩ Use uncontracted MP2 instead of EN2

  • renorm_pt2::Bool: ⟨false⟩ Use renormalized PT2 correction: E_PT2 → E_PT2 / (1 + T2^2) with T2 being the PT2 amplitudes.

  • nstates::Int64: ⟨1⟩ Number of states to compute (default: 1 = ground state only)

  • nsteps::Int64: ⟨2⟩ Number of steps in the iterative CIPHI selection (if > 1, the selection process is repeated after convergence)

  • use_small_space_guess::Bool: ⟨true⟩ Use small-space Hamiltonian for initial guess

  • small_space_size::Int64: ⟨0⟩ Size of small space (0 = auto: max(100, target÷10, 5*n_roots))

  • small_space_method::Symbol: ⟨:hybrid⟩ Selection method: :hybrid (energy + excitation)

  • print_level::Int64: ⟨1⟩ Level of printed output (0=none, 1=some, 2=detailed)

  • pt2_only::Bool: ⟨false⟩ Skip variational CIPHI iterations and only compute PT2 correction (use with restart)

  • thr_negligible::Float64: ⟨1e-10⟩ Threshold for neglecting small Hamiltonian (etc) elements

source
ElemCo.ECInfos.CcOptionsType

Options for Coupled-Cluster calculation.

  • thr::Float64: ⟨1.e-10⟩ convergence threshold.

  • conven::Float64: ⟨0.1⟩ energy convergence factor. The energy convergence threshold is sqrt(thr) * conven.

  • maxit::Int64: ⟨50⟩ maximum number of iterations.

  • shifts::Float64: ⟨0.15⟩ level shift for singles.

  • shiftp::Float64: ⟨0.2⟩ level shift for doubles.

  • shiftt::Float64: ⟨0.2⟩ level shift for triples.

  • properties::Bool: ⟨false⟩ calculate properties.

  • ampsvdtol::Float64: ⟨1.e-5⟩ amplitude decomposition threshold.

  • ampsvdfac::Float64: ⟨1.e-2⟩ tightening amplitude decomposition factor (for the two-step decomposition).

  • use_kext::Bool: ⟨true⟩ use kext for doubles residual.

  • calc_d_vvvv::Bool: ⟨false⟩ calculate dressed <vv|vv>.

  • calc_d_vvvo::Bool: ⟨false⟩ calculate dressed <vv|vo>.

  • calc_d_vovv::Bool: ⟨false⟩ calculate dressed <vo|vv>.

  • calc_d_vvoo::Bool: ⟨false⟩ calculate dressed <vv|oo>.

  • fock_diag_thr::Float64: ⟨1.e-6⟩ threshold for checking Fock matrix diagonality in (T). If negative, no check is performed.

  • usedf::Bool: ⟨true⟩ use density fitting in SVD-DC-CCSDT instead of the integral decomposition.

  • usecholesky::Bool: ⟨true⟩ use Cholesky decomposition in SVD-DC-CCSDT instead of SVD in the integral decomposition.

  • calc_t3_for_decomposition::Bool: ⟨false⟩ calculate (T) for decomposition.

  • skip_pert_t::Bool: ⟨false⟩ skip (T) calculation in SVD-DC-CCSDT.

  • project_t3iii::Bool: ⟨true⟩ project out the T^iii contribution from the density matrix in decomposition in SVD-DC-CCSDT.

  • project_voXL::Bool: ⟨false⟩ calculated $V_{aX}^{iL}$ in SVD-DC-CCSDT using a projection to the X space as $V_{XZ}^{L} U^{iZ}_{a}$. This is an additional approximation, which reduces the scaling of the most expensive steps and is useful for large systems.

  • space4voXL::Symbol: ⟨:combined⟩ type of space for project_voXL. Possible values are :combined, :symcombined, :triples, :full.

  • deco_ishiftp::Float64: ⟨0.0⟩ imaginary shift for denominator in doubles decomposition.

  • deco_ishiftt::Float64: ⟨0.0⟩ imaginary shift for denominator in triples decomposition.

  • use_projx::Bool: ⟨false⟩ use a projected exchange for contravariant doubles amplitudes in SVD-DCSD, $\tilde T_{XY} = U^{†a}_{iX} U^{†b}_{jY} \tilde T^{ij}_{ab}$.

  • use_full_t2::Bool: ⟨false⟩ use full doubles amplitudes in SVD-DCSD. The decomposition is used only for $N^6$ scaling terms.

  • project_vovo_t2::Int64: ⟨2⟩ what to project in $v_{ak}^{ci} T^{kj}_{cb}$ in SVD-DCSD: 0: both, 1: amplitudes, 2: residual, 3: robust fit.

  • decompose_full_doubles::Bool: ⟨false⟩ decompose full doubles amplitudes in SVD-DCSD (slow).

  • start::String: ⟨"cc_amplitudes"⟩ main part of filename for start amplitudes. For example, the singles amplitudes are read from start*"_1".

  • save::String: ⟨"cc_amplitudes"⟩ main part of filename to save amplitudes. For example, the singles amplitudes are saved to save*"_1".

  • start_lm::String: ⟨"cc_multipliers"⟩ main part of filename for start Lagrange multipliers. For example, the singles Lagrange multipliers are read from start_lm*"_1".

  • save_lm::String: ⟨"cc_multipliers"⟩ main part of filename to save Lagrange multipliers. For example, the singles Lagrange multipliers are saved to save_lm*"_1".

  • nomp2::Int64: ⟨0⟩ Don't use MP2 amplitudes as starting guess for the CC amplitudes.

  • mp2_ssfac::Float64: ⟨0.33⟩ Factor for same-spin component in SCS-MP2.

  • mp2_osfac::Float64: ⟨1.2⟩ Factor for opposite-spin component in SCS-MP2.

  • mp2_ofac::Float64: ⟨0.0⟩ Factor for open-shell component in SCS-MP2.

  • mp2_sosfac::Float64: ⟨1.3⟩ Factor for opposite-spin component in SOS-MP2.

  • ccsd_ssfac::Float64: ⟨1.13⟩ Factor for same-spin component in SCS-CCSD.

  • ccsd_osfac::Float64: ⟨1.27⟩ Factor for opposite-spin component in SCS-CCSD.

  • ccsd_ofac::Float64: ⟨0.0⟩ Factor for open-shell component in SCS-CCSD.

  • dcsd_ssfac::Float64: ⟨1.15⟩ Factor for same-spin component in SCS-DCSD.

  • dcsd_osfac::Float64: ⟨1.05⟩ Factor for opposite-spin component in SCS-DCSD.

  • dcsd_ofac::Float64: ⟨0.15⟩ Factor for open-shell component in SCS-DCSD.

  • ignore_error::Bool: ⟨false⟩ ignore various errors in sanity checks.

  • keepOQVorbitals::Bool: ⟨false⟩ keep the orbitals after rotations over iterations of orbital optimizations in the OQV-CCD/DCD.

source
ElemCo.ECInfos.CholeskyOptionsType

Options for Cholesky decomposition.

  • thred::Float64: ⟨1.e-6⟩ threshold for elimination of redundancies in the auxiliary basis.

  • thr::Float64: ⟨1.e-4⟩ threshold for integral decomposition.

source
ElemCo.ECInfos.DavidsonOptionsType

Options for Davidson.

  • maxdav::Int64: ⟨10⟩ maximum number of Davidson vectors per state.

  • use_overlap::Bool: ⟨true⟩ use overlap in hermitian Davidson.

source
ElemCo.ECInfos.DiisOptionsType

Options for DIIS.

  • maxdiis::Int64: ⟨6⟩ maximum number of DIIS vectors.

  • resthr::Float64: ⟨10.0⟩ DIIS residual threshold.

  • crop::Bool: ⟨false⟩ CROP-DIIS (see JCTC 11, 1518 (2015)). Usually the DIIS dimension maxcrop=3 is sufficient.

  • maxcrop::Int64: ⟨3⟩ DIIS dimension for CROP-DIIS.

source
ElemCo.ECInfos.DmrgOptionsType

Options for DMRG calculation.

  • nsweeps::Int64: ⟨10⟩ number of sweeps.

  • maxdim::Vector{Int64}: ⟨[100, 200]⟩ maximum size for the bond dimension.

  • cutoff::Float64: ⟨1e-6⟩ cutoff for the singular value decomposition.

  • noise::Vector{Float64}: ⟨[1e-6, 1e-7, 1e-8, 0.0]⟩ strength of the noise term used to aid convergence.

source
ElemCo.ECInfos.EomOptionsType

Options for excited states calculation.

  • thr::Float64: ⟨1.e-6⟩ convergence threshold.

  • nstates::Int64: ⟨1⟩ number of states to calculate.

  • maxit::Int64: ⟨50⟩ maximum number of iterations.

  • shift::Float64: ⟨0.0⟩ level shift for the Davidson algorithm.

  • start::String: ⟨"eigenvectors"⟩ main part of filename for start eigenvectors. For example, the singles eigenvectors for state 2 are read from start*"_1^2".

  • save::String: ⟨"eigenvectors"⟩ main part of filename to save eigenvectors. For example, the singles eigenvectors for state 2 are saved to save*"_1^2".

  • ampsvdtol::Float64: ⟨1.e-5⟩ amplitude decomposition threshold.

  • svd_space_option::Int64: ⟨6⟩ Choice how excited state SVD basis is generated. Default is decomposition of full U2.

source
ElemCo.ECInfos.FCIOptionsType

Option for FCI calculations.

  • max_iter::Int64: ⟨50⟩ Maximum number of iterations

  • shift::Float64: ⟨0.1⟩ Level shift to improve convergence

  • conv_tol::Float64: ⟨1e-8⟩ Convergence tolerance for energy

  • res_tol::Float64: ⟨1e-6⟩ Convergence tolerance for residual norm

  • nstates::Int64: ⟨1⟩ Number of states to compute

  • n_guess::Int64: ⟨2⟩ Number of guess vectors to use

  • subspace_size::Int64: ⟨10⟩ Maximum subspace size for Davidson diagonalization

  • compute_rdms::Bool: ⟨true⟩ Compute 1-RDMs after convergence

  • compute_2rdm::Bool: ⟨false⟩ Compute 2-RDM after convergence

  • jacobi_davidson::Bool: ⟨true⟩ Use projected Jacobi-Davidson correction (prevents linear dependency)

  • max_pspace_size::Int64: ⟨1000⟩ Maximum P-space size (typically 100-1000)

  • pspace_selection_method::Symbol: ⟨:hybrid⟩ Selection method for P-space generation (:hybrid, :excitation, :energy, :ciphi)

  • max_pspace_excitation::Int64: ⟨4⟩ Maximum excitation level from HF reference (0=HF, 1=S, 2=SD, etc.)

  • pspace_energy_threshold::Float64: ⟨5.0⟩ Energy cutoff for determinant inclusion

  • pspace_ciphi_epsilon::Float64: ⟨1e-3⟩ CIPHI selection threshold (epsilon_h) for P-space generation

  • print_level::Int64: ⟨1⟩ Level of printed output (0=none, 1=some, 2=detailed)

  • thr_negligible::Float64: ⟨1e-12⟩ Threshold for neglecting small Hamiltonian (etc) elements

source
ElemCo.ECInfos.IntOptionsType

Options for integral calculation.

  • df::Bool: ⟨true⟩ use density-fitted integrals.

  • fcidump::String: ⟨""⟩ store integrals in FCIDump format.

  • cartesian::Bool: ⟨false⟩ use Cartesian subshells instead of Spherical.

  • target_batch_length::Int64: ⟨1000⟩ target batch length for the integral transformation.

  • use_fallback_basis::Bool: ⟨false⟩ use fallback basis sets (in case of missing basis sets).

  • check_fit_basis::Bool: ⟨true⟩ sanity check of the fit basis (i.e., that it's not an AO basis)

  • split_ashells::Bool: ⟨true⟩ split independent angular shells (important for efficiency).

source
ElemCo.ECInfos.LaplaceOptionsType

Options for Laplace quadrature.

  • npoints::Int64: ⟨8⟩ number of Laplace quadrature points.

  • algo::Symbol: ⟨:minimax⟩ algorithm for Laplace quadrature points. (:minimax or :simplex)

source
ElemCo.ECInfos.PrintOptionsType

Options for printing.

  • time::Int64: ⟨2⟩ verbosity level for printing timings.

  • memory::Int64: ⟨2⟩ verbosity level for printing memory usage.

source
ElemCo.ECInfos.ScfOptionsType

Options for SCF calculation.

  • thr::Float64: ⟨1.e-10⟩ convergence threshold.

  • thren::Float64: ⟨sqrt(thr)*0.1⟩ energy convergence threshold (used additionally to thr).

  • maxit::Int64: ⟨50⟩ maximum number of iterations.

  • imagtol::Float64: ⟨1.e-8⟩ tolerance for imaginary part of MO coefs (for biorthogonal).

  • direct::Bool: ⟨false⟩ direct calculation without storing integrals.

  • guess::Symbol: ⟨:SAD⟩ orbital guess:

    • :HCORE from core Hamiltonian
    • :SAD from atomic densities
    • :GWH not implemented yet
    • :ORB from previous orbitals stored in dump file WfOptions.dump
  • guess_pos::Symbol: ⟨:HCORE⟩ positron orbital guess. Only :HCORE is implemented.

  • bisecdamp::Float64: ⟨0.5⟩ damping factor for bisection search in augmented Hessian tuning.

  • maxit4lambda::Int64: ⟨3⟩ maximum number of iterations for searching for lambda value to get a reasonalbe guess within trust radius for MCSCF.

  • HessianType::Symbol: ⟨:SO_SCI⟩ Hessian Type for MCSCF:

    • :SO Second Order Approximation
    • :SCI Super CI
    • :SO_SCI Second Order Approximation combing Super CI
  • initVecType::Symbol: ⟨:GRADIENT_SETPLUS⟩ Initial Vectors Type for MCSCF:
    • :INHERIT from last macro/micro iterations
    • :GRADIENT_SET b0 as [1,0,0,...], b1 as gradient
    • :GRADIENT_SETPLUS b0, b1 as GRADIENT_SET, b2 as zeros but 1 at the first closed-virtual rotation parameter
  • temperature_guess::Float64: ⟨0.0⟩ Fermi-Dirac temperature for starting guess (at the moment works only for BO-HF).

  • gamaDavScale::Float64: ⟨0.1⟩ the threshold of davidson convergence residure norm scaled to norm of g the gradient, for MCSCF.

  • SO_SCI_origin::Any: ⟨true⟩ if true then use the original SO_SCI Hessian

  • trustScale::Any: ⟨0.8⟩ the trust region of sqrt(sum(x.^2)) should be [trustScale,1] * trust

  • lambdaMax::Any: ⟨1000.0⟩ the maximum number of lambda when adjusting the level shift

  • davErrorMin::Any: ⟨1e-6⟩ the minmum convergence threshold for davidson algorithm

  • iniDavMatSize::Any: ⟨200⟩ the size of initial Davidson projected matrix

  • trustShrinkScale::Any: ⟨0.7⟩ the shrink scale of trust region

  • trustExpandScale::Any: ⟨1.2⟩ the expand scale of trust region

  • enerQuotientLowerBound::Any: ⟨0.25⟩ when energy quotient is lower than this value, the trust value should be smaller

  • enerQuotientUpperBound::Any: ⟨0.75⟩ when energy quotient is higher than this value, the trust value should be larger

  • pseudo::Bool: ⟨false⟩ Generate pseudo-canonical basis instead of solving the SCF problem, i.e., build and block-diagonalize the Fock matrix without changing the Fermi level. At the moment, it works only for BO-HF.

source
ElemCo.ECInfos.WfOptionsType

Options for wavefunction/orbitals.

  • ms2::Int64: ⟨-1⟩ spin magnetic quantum number times two (2×mₛ) of the system.

  • nelec::Int64: ⟨-1⟩ number of electrons. If < 0, the number of electrons is read from the FCIDump file or guessed for the neutral system.

  • charge::Int64: ⟨0⟩ charge of the system (relative to nelec/FCIDump/neutral system!).

  • dump::String: ⟨"wf.h5"⟩ filename for wavefunction dump (stored in TREXIO format).

  • store::String: ⟨""⟩ filename to store the output wavefunction dump (stored in TREXIO format). If empty, dump will be used.

  • start::String: ⟨""⟩ filename to read starting amplitudes from (TREXIO format). If empty, amplitudes are read from dump. If provided, amplitudes (and MOs/basis) are read from this file and projected to the current MO basis.

  • npositron::Int64: ⟨0⟩ Number of positrons.

  • core::Symbol: ⟨:large⟩ core type for frozen-core approximation:

    • :none no frozen-core approximation,
    • :small semi-core orbitals correlated,
    • :large semi-core orbitals frozen.
  • freeze_nocc::Int64: ⟨-1⟩ number of occupied (core) orbitals to freeze (overwrites core).

  • freeze_nvirt::Int64: ⟨0⟩ number of virtual (highest) orbitals to freeze.

  • occa::String: ⟨"-"⟩ occupied α (or closed-shell) orbitals. The occupation strings can be given as a + separated list, e.g. occa = 1+2+3 or equivalently 1-3. Additionally, the spatial symmetry of the orbitals can be specified with the syntax orb.sym, e.g. occa = "-5.1+-2.2+-4.3".

  • occb::String: ⟨"-"⟩ occupied β orbitals. If occb::String is empty, the occupied β orbitals are the same as the occupied α orbitals (closed-shell case).

  • active::String: ⟨"-"⟩ active space. The active space is defined by the occupation string (cf. occa) or in the (#elec, #orb) format.

  • ignore_error::Bool: ⟨false⟩ ignore various errors in sanity checks.

  • print_nlargest::Int64: ⟨5⟩ number of largest orbitals to print.

  • print_thr::Float64: ⟨0.1⟩ threshold for orbital coefficients to print.

source