The DFT-in-DFT and WFT-in-DFT calculations are implemented in Q-Chem under the framework of its default SCF engine GEN_SCFMAN, which is triggered by setting GEN_SCFMAN_EMBED = TRUE. The embedding job requires specification of fragments through the $molecule section (see Section 12.2). Unless otherwise specified, the first fragment is regarded as the embedded (“active”) fragment. The user is allowed to select the embedded fragment through the $embed_fragment section.
The high-level electronic structure method is given by $rem variable METHOD, and the low-level method can be specified via ENV_METHOD. Note that one should choose a mean-field method as the low-level theory, such as pure or hybrid density functionals. Unlike the previous implementation of this embedding theory based on “EmbedMan” (Sec. 11.6.4), there is no specific limitation to the high-level methods. Currently supported options include hybrid DFT (e.g., B97X-V) and correlated wavefunction methods (e.g., MP2, CCSD(T), etc.) for ground-state calculations, as well as TDDFT and WFT-based methods such as EOM-CCSD for excited states.
The calculation starts with an SCF calculation at the low-level theory, and then it performs an embedded SCF calculation with the higher-level DFT (for DFT-in-DFT cases) or Hartree-Fock (for WFT-in-DFT cases). To make post-SCF correlated methods directly applicable, the molecular orbitals are stored on disk in the “[Occ(environment) Occ(active) Vir (active) Vir(inactive)]” order, and the environment occupied orbitals and the excluded inactive virtual orbitals are treated as frozen core and frozen virtual orbitals in the correlated WFT method, respectively. Note that the virtual orbitals are not truncated unless the concentric localization method is invoked by setting CONCENTRIC_VIRTS = TRUE since that is the only virtual space truncation scheme for projection-based embedding theory that is currently available in Q-Chem.
In Q-Chem 5.3, the use of projection-based embedding theory is limited to overall closed-shell systems (“restricted-in-restricted” embedding). The extension to open-shell systems based on unrestricted SCF calculations has been enabled in Q-Chem 5.4.1 and future releases.
From Q-Chem 5.4.2, projection-based embedding is extended to work with complex basis functions. This enables the possibility to combine CBF high-level methods, namely CBF-(EOM-)CCSD and CBF-(EOM-)CC2 with complex HF (theory and functioning of these methods are described in Sections 7.10.9 and 4.9.5, respectively). The keyword to trigger this feature is GEN_SCFMAN_NH_EMBED. SPADE partition is not implemented in this framework, and the orbitals are partitioned via Pipek-Mezey localization and Mulliken population analysis of the real part.
GEN_SCFMAN_EMBED
GEN_SCFMAN_EMBED
Run a projection-based embedding calculation using the implementation
based onGEN_SCFMAN
TYPE:
BOOLEAN
DEFAULT:
FALSE
OPTIONS:
TRUE
Perform a projection-based embedding calculation
FALSE
Do not perform an embedding calculation
RECOMMENDATION:
None
ENV_METHOD
ENV_METHOD
Specify the low-level theory in a projection-based embedding calculation
TYPE:
STRING
DEFAULT:
NONE
OPTIONS:
Parsed in the same way as $rem variable “METHOD”
RECOMMENDATION:
A mean-field method (pure or hybrid density functional) should be chosen.
FIXING_V_EMBED
FIXING_V_EMBED
Invoke the linearized approximation for the energy functional used for embedding calculations
TYPE:
BOOLEAN
DEFAULT:
TRUE
OPTIONS:
TRUE
Use the linearized approximation for energy functional [Eq. (11.107)]
FALSE
Use the original energy functional [Eq. (11.101)]
RECOMMENDATION:
Use the default to achieve savings in computational costs
SPADE_PARTITION
SPADE_PARTITION
Use the SPADE approach to determine the initial set of embedded (active) orbitals
TYPE:
BOOLEAN
DEFAULT:
FALSE
OPTIONS:
TRUE
Use SPADE to partition the occupied space
FALSE
Use the Pipek-Mezey localization + Mulliken population to assign occupied orbitals
RECOMMENDATION:
Use SPADE if a significant gap in the spectrum of singular values can be detected.
CONCENTRIC_VIRTS
CONCENTRIC_VIRTS
Use the concentric localization (CL) scheme to truncate the virtual space
TYPE:
BOOLEAN
DEFAULT:
FALSE
OPTIONS:
TRUE
Use the CL scheme to truncate the virtual space
FALSE
Leave the virtual space untruncated
RECOMMENDATION:
Use CL truncation for WFT-in-DFT calculations.
CONCENTRIC_VIRTS_ZETA
CONCENTRIC_VIRTS_ZETA
Specify the size of the truncated virtual space
TYPE:
INTEGER
DEFAULT:
2
OPTIONS:
The total number of the CL-truncated virtuals is
RECOMMENDATION:
Use the default; set it to a larger value if higher accuracy is requested.
CONCENTRIC_REF_BASIS
CONCENTRIC_REF_BASIS
Specify the projection basis (PB) in the concentric localization procedure
TYPE:
STRING
DEFAULT:
NONE
OPTIONS:
Parsed in the same way as BASIS; if unspecified, the working basis (WB) will be used as PB.
RECOMMENDATION:
WB is usually a good choice; a smaller basis can chosen with caution to further
reduce the computational cost.
EMBEDDING_EARLY_STOP
EMBEDDING_EARLY_STOP
Terminate the embedding calculation once the system partition is done (skip the embedded SCF)
TYPE:
BOOLEAN
DEFAULT:
FALSE
OPTIONS:
TRUE
Terminate the embedding calculation once the system partition is done (skip the embedded SCF)
FALSE
Doing a normal embedding calculation
RECOMMENDATION:
Turn it on for environment ESP/E-field calculations (see Section 10.6)
$molecule 0 1 -- 0 1 O -0.00000 -0.00000 0.00000 H 0.56704 0.41003 0.65488 H 0.16427 -0.95671 0.05856 -- 0 1 O -0.45701 -2.75857 0.16997 H -0.36918 -3.38806 -0.54777 H -1.36971 -2.42607 0.12617 -- 0 1 O -2.62421 -0.99554 -0.00046 H -3.25789 -0.73194 0.66864 H -1.89698 -0.35254 0.04416 $end $rem METHOD wb97x-v BASIS def2-svpd GEN_SCFMAN_EMBED true THRESH 14 SCF_CONVERGENCE 8 ENV_METHOD pbe $end $embed_fragment 2 $end
$molecule 0 1 --- -1 1 O -1.1867 -0.2472 0.0000 H -1.9237 0.3850 0.0000 --- 1 1 H -0.0227 1.1812 0.8852 C 0.0000 0.5526 0.0000 H -0.0227 1.1812 -0.8852 C 1.1879 -0.3829 0.0000 H 2.0985 0.2306 0.0000 H 1.1184 -1.0093 0.8869 H 1.1184 -1.0093 -0.8869 $end $rem METHOD rimp2 BASIS cc-pvdz AUX_BASIS rimp2-cc-pvdz GEN_SCFMAN_EMBED true THRESH 14 SCF_CONVERGENCE 8 ENV_METHOD b3lyp SPADE_PARTITION true CONCENTRIC_VIRTS true N_FROZEN_CORE 0 !no extra FC orbitals SYMMETRY false SYM_IGNORE true $end
$molecule 0 1 -- 0 1 C 1.331746 0.495076 -0.018037 O 1.023200 -0.680562 0.005977 H 0.567546 1.281583 -0.032606 H 2.385108 0.805133 -0.025252 -- 0 1 O -1.943531 0.122291 0.090528 H -1.162581 -0.446371 0.092679 H -2.417905 -0.144628 -0.698637 O 1.944863 -3.376107 -1.905899 H 1.789904 -2.545078 -1.472450 H 2.563515 -3.252302 -2.616140 O 4.733862 -2.927159 -4.945061 H 4.171657 -2.306053 -5.393004 H 5.533115 -3.047999 -5.444154 O -1.551695 4.433654 1.051722 H -2.112970 4.877077 1.676899 H -2.009816 4.341491 0.224599 O 4.162091 1.378891 2.507658 H 3.250771 1.110644 2.513900 H 4.466676 1.486386 3.401063 $end $rem JOBTYPE SP METHOD CAM-B3LYP BASIS 6-31+G(d) SYMMETRY FALSE SYM_IGNORE TRUE SCF_ALGORITHM DIIS GEN_SCFMAN_EMBED TRUE ENV_METHOD PBE0 SPADE_PARTITION TRUE CONCENTRIC_VIRTS TRUE CIS_N_ROOTS 2 CIS_TRIPLETS FALSE $end
$molecule 0 2 -- 0 2 O -1.62521 0.00950 0.00000 H -0.64565 -0.05426 0.00000 -- 0 1 O 1.26276 -0.06380 0.00000 H 1.70602 0.31170 -0.76717 H 1.70602 0.31170 0.76717 $end $rem jobtype sp method pbe0 env_method pbe basis 6-31g(d) unrestricted true gen_scfman_embed true thresh 14 scf_convergence 8 scf_algorithm diis symmetry false sym_ignore true $end
$molecule 0 1 --- 0 1 C 1.331746 0.495076 -0.018037 O 1.023200 -0.680562 0.005977 H 0.567546 1.281583 -0.032606 H 2.385108 0.805133 -0.025252 --- 0 1 O -1.943531 0.122291 0.090528 H -1.162581 -0.446371 0.092679 H -2.417905 -0.144628 -0.698637 $end $rem jobtype sp method ccsd complex_exponents true complex_scf 1 complex_scf_guess 1 basis 6-31G ! specify basis set explicitly, basis=gen complex_basis 6-31G* ! " " complex_basis=zbasis_general complex_theta 50 complex_ccman true gen_scfman_nh_embed 1 embed_method 1 env_method hf scf_convergence 12 cc_convergence 12 n_frozen_core 0 cs_ccsd 1 complex_metscf 1 complex_n_electrons 0 complex_spin_state 1 $end $complex_ccman cs_alpha 1000 cs_theta 0 $end