(sec:basisset.detailed)= # Choice of Basis Set A fair number of reasonable basis sets is hardwired in the program as will be described in the next section. In addition, whole basis sets can be read from a file, basis sets can be assigned for all atoms of a given type or, at the highest resolution, basis sets can be assigned to individual atoms which is convenient if different parts of the molecule are to be treated at different levels of accuracy. Most hard wired basis sets were obtained from the EMSL library {cite}`basissets` and the input format in ORCA is closely related to the "GAMESS-US" format. :::{note} As of ORCA version 4.0, the basis set handling has been significantly modified!\ Please check your basis sets very carefully! ::: (sec:basisset.builtin.detailed)= ## Built-in Basis Sets The basis set is specified in the block `%BASIS`. Note that there are three distinguished slots for auxiliary basis sets (AuxJ, AuxC and AuxJK) to be used with RI approximation. Which auxiliary basis slot is used in the actual program depends on the context. The AuxJ and AuxJK slots are used in the context of Fock matrix construction, whereas the AuxC slot is used for all other integral generation steps e.g. in post-Hartree Fock methods. Assigning the auxiliary basis with the simple input, takes care of the individual slots. However, in specific cases they must be set explicitly in the block input. For example, a "/JK" basis may be assigned to AuxJ in this way. :::{note} As of ORCA 4.0, the basis set name has to be put in quotation marks, and the basis set name identifiers are the same as in the simple input! ::: ```orca %basis Basis "Def2-TZVP" # The orbital expansion basis set AuxJ "Def2/J" # RI-J auxiliary basis set AuxJK "Def2/JK" # RI-JK auxiliary basis set AuxC "Def2-TZVP/C" # Auxiliary basis set for correlated # calcualtions, e.g. RI-MP2 CABS "cc-pVDZ-F12-OptRI" # complementary auxiliary basis set # for F12 calculations DecontractBas false # if chosen "true" the program will # decontract the orbital basis set DecontractAuxJ false # if "true" - decontract the AuxJ basis set DecontractAuxJK false # if "true" - decontract the AuxJK basis set DecontractAuxC false # if "true" - decontract the AuxC basis set DecontractCABS true # if "false" - do not decontract the CABS Decontract false # if "true" - decontract all basis sets end ``` :::{Warning} - ORCA uses pure d and f functions (5D and 7F instead of Cartesian 6D and 10F) for all basis sets. This needs to be taken into account when results are compared with other programs, especially for Pople-style basis sets that were optimized with Cartesian (6D) functions. - If you use `Decontract`: if your basis set arises from general contraction it will contain duplicate primitives in several contractions and these will be removed such that only unique primitives remain and there is no problem with redundancy. ::: A complete list of predefined basis sets and their availability is given in {numref}`table:basisset.availability.detailed`. (table:basisset.availability.detailed)= :::{flat-table} Basis sets availability :header-rows: 1 :class: longtable * - Keyword - Availability * - {cspan}`1` *Orbital basis sets (`Basis`)* * - STO-3G - H--I * - MINI - H--Ca * - MINIS - H--Ca * - MINIX[^1] - H--Rn * - MIDI - H--Na, Al--K * - 3-21G - H--Cs * - 3-21GSP - H--Ar * - 4-22GSP - H--Ar * - 6-31G - H--Zn * - 6-31G\* - H--Zn * - m6-31G - Sc--Cu * - m6-31G\* - Sc--Cu * - 6-31G\*\* - H--Zn * - 6-31G(d) - H--Zn * - 6-31G(d,p) - H--Zn * - 6-31G(2d) - H--Zn * - 6-31G(2d,p) - H--Zn * - 6-31G(2d,2p) - H--Zn * - 6-31G(2df) - H--Zn * - 6-31G(2df,2p) - H--Zn * - 6-31G(2df,2pd) - H--Zn * - 6-31+G\* - H--Zn * - 6-31+G\*\* - H--Zn * - 6-31+G(d) - H--Zn * - 6-31+G(d,p) - H--Zn * - 6-31+G(2d) - H--Zn * - 6-31+G(2d,p) - H--Zn * - 6-31+G(2d,2p) - H--Zn * - 6-31+G(2df) - H--Zn * - 6-31+G(2df,2p) - H--Zn * - 6-31+G(2df,2pd) - H--Zn * - 6-31++G\*\* - H--Zn * - 6-31++G(d,p) - H--Zn * - 6-31++G(2d,p) - H--Zn * - 6-31++G(2d,2p) - H--Zn * - 6-31++G(2df,2p) - H--Zn * - 6-31++G(2df,2pd) - H--Zn * - 6-311G - H--Br * - 6-311G\* - H--Br * - 6-311G\*\* - H--Br * - 6-311G(d) - H--Br * - 6-311G(d,p) - H--Br * - 6-311G(2d) - H--Br * - 6-311G(2d,p) - H--Br * - 6-311G(2d,2p) - H--Br * - 6-311G(2df) - H--Br * - 6-311G(2df,2p) - H--Br * - 6-311G(2df,2pd) - H--Br * - 6-311G(3df) - H--Br * - 6-311G(3df,3pd) - H--Br * - 6-311+G\* - H--Br * - 6-311+G\*\* - H--Br * - 6-311+G(d) - H--Br * - 6-311+G(d,p) - H--Br * - 6-311+G(2d) - H--Br * - 6-311+G(2d,p) - H--Br * - 6-311+G(2d,2p) - H--Br * - 6-311+G(2df) - H--Br * - 6-311+G(2df,2p) - H--Br * - 6-311+G(2df,2pd) - H--Br * - 6-311+G(3df) - H--Br * - 6-311+G(3df,2p) - H--Br * - 6-311+G(3df,3pd) - H--Br * - 6-311++G\*\* - H--Br * - 6-311++G(d,p) - H--Br * - 6-311++G(2d,p) - H--Br * - 6-311++G(2d,2p) - H--Br * - 6-311++G(2df,2p) - H--Br * - 6-311++G(2df,2pd) - H--Br * - 6-311++G(3df,3pd) - H--Br * - SV - H--Kr * - SV(P) - H--Kr * - SVP - H--Kr * - TZV - H--Kr * - TZV(P) - H--Kr * - TZVP - H--Kr * - TZVPP - H--Kr * - QZVP - H--Kr * - QZVPP - H--Kr * - DKH-SV(P) - H--Kr * - DKH-SVP - H--Kr * - DKH-TZV(P) - H--Kr * - DKH-TZVP - H--Kr * - DKH-TZVPP - H--Kr * - DKH-QZVP - H--Kr * - DKH-QZVPP - H--Kr * - ZORA-SV(P) - H--Kr * - ZORA-SVP - H--Kr * - ZORA-TZV(P) - H--Kr * - ZORA-TZVP - H--Kr * - ZORA-TZVPP - H--Kr * - ZORA-QZVP - H--Kr * - ZORA-QZVPP - H--Kr * - def2-mSVP[^2] - H--Rn * - def2-mTZVP[^2] - H--Rn * - def2-mTZVPP[^2] - H--Lr * - def2-SV(P) [^2] - H--Rn * - def2-SVP[^2] - H--Rn * - def2-TZVP(-f) [^2] - H--Rn * - def2-TZVP[^2] - H--Rn * - def2-TZVPP[^2] - H--Rn * - def2-QZVP[^2] - H--Rn * - def2-QZVPP[^2] - H--Rn * - def2-SVPD[^2] - H--Rn * - def2-TZVPD[^2] - H--Rn * - def2-TZVPPD[^2] - H--Rn * - def2-QZVPD[^2] - H--Rn * - def2-QZVPPD[^2] - H--Rn * - dhf-SV(P) [^3] - H--Kr, Rb--Rn * - dhf-SVP[^3] - H--Kr, Rb--Rn * - dhf-TZVP[^3] - H--Kr, Rb--Rn * - dhf-TZVPP[^3] - H--Kr, Rb--Rn * - dhf-QZVP[^3] - H--Kr, Rb--Rn * - dhf-QZVPP[^3] - H--Kr, Rb--Rn * - dhf-SV(P)-2c[^3] - H--Kr, Rb--Rn * - dhf-SVP-2c[^3] - H--Kr, Rb--Rn * - dhf-TZVP-2c[^3] - H--Kr, Rb--Rn * - dhf-TZVPP-2c[^3] - H--Kr, Rb--Rn * - dhf-QZVP-2c[^3] - H--Kr, Rb--Rn * - dhf-QZVPP-2c[^3] - H--Kr, Rb--Rn * - DKH-def2-SV(P) - H--Kr * - DKH-def2-SVP - H--Kr * - DKH-def2-TZVP(-f) - H--Kr * - DKH-def2-TZVP - H--Kr * - DKH-def2-TZVPP - H--Kr * - DKH-def2-QZVPP - H--Kr * - ZORA-def2-SV(P) - H--Kr * - ZORA-def2-SVP - H--Kr * - ZORA-def2-TZVP(-f) - H--Kr * - ZORA-def2-TZVP - H--Kr * - ZORA-def2-TZVPP - H--Kr * - ZORA-def2-QZVPP - H--Kr * - ma-def2-mSVP[^2] - H--Rn * - ma-def2-SV(P) [^2] - H--Rn * - ma-def2-SVP[^2] - H--Rn * - ma-def2-TZVP(-f) [^2] - H--Rn * - ma-def2-TZVP[^2] - H--Rn * - ma-def2-TZVPP[^2] - H--Rn * - ma-def2-QZVP[^2] - H--Rn * - ma-def2-QZVPP[^2] - H--Rn * - ma-DKH-def2-SV(P) - H--Kr * - ma-DKH-def2-SVP - H--Kr * - ma-DKH-def2-TZVP(-f) - H--Kr * - ma-DKH-def2-TZVP - H--Kr * - ma-DKH-def2-TZVPP - H--Kr * - ma-DKH-def2-QZVPP - H--Kr * - ma-ZORA-def2-SV(P) - H--Kr * - ma-ZORA-def2-SVP - H--Kr * - ma-ZORA-def2-TZVP(-f) - H--Kr * - ma-ZORA-def2-TZVP - H--Kr * - ma-ZORA-def2-TZVPP - H--Kr * - ma-ZORA-def2-QZVPP - H--Kr * - old-SV - H--I * - old-SV(P) - H--I * - old-SVP - H--I * - old-TZV - H--I * - old-TZV(P) - H--I * - old-TZVP - H--I * - old-TZVPP - H--I * - old-DKH-SV(P) - H--I * - old-DKH-SVP - H--I * - old-DKH-TZV(P) - H--I * - old-DKH-TZVP - H--I * - old-DKH-TZVPP - H--I * - old-ZORA-SV(P) - H--I * - old-ZORA-SVP - H--I * - old-ZORA-TZV(P) - H--I * - old-ZORA-TZVP - H--I * - old-ZORA-TZVPP - H--I * - ANO-SZ - H--Ar, Sc--Zn * - ANO-pVDZ - H--Ar, Sc--Zn * - ANO-pVTZ - H--Ar, Sc--Zn * - ANO-pVQZ - H--Ar, Sc--Zn * - ANO-pV5Z - H--Ar, Sc--Zn * - ANO-pV6Z - H--Ar, Sc--Zn * - aug-ANO-pVDZ - H--Ar, Sc--Zn * - aug-ANO-pVTZ - H--Ar, Sc--Zn * - aug-ANO-pVQZ - H--Ar, Sc--Zn * - aug-ANO-pV5Z - H--Ar, Sc--Zn * - saug-ANO-pVDZ - H--Ar, Sc--Zn * - saug-ANO-pVTZ - H--Ar, Sc--Zn * - saug-ANO-pVQZ - H--Ar, Sc--Zn * - saug-ANO-pV5Z - H--Ar, Sc--Zn * - ANO-RCC-DZP - H--Cm * - ANO-RCC-TZP - H--Cm * - ANO-RCC-QZP - H--Cm * - ANO-RCC-Full - H--Cm * - pc-0 - H--Ca, Ga--Kr * - pc-1 - H--Kr * - pc-2 - H--Kr * - pc-3 - H--Kr * - pc-4 - H--Kr * - aug-pc-0 - H--Ca, Ga--Kr * - aug-pc-1 - H--Kr * - aug-pc-2 - H--Kr * - aug-pc-3 - H--Kr * - aug-pc-4 - H--Kr * - pcJ-0 - H--He, B--Ne, Al--Ar * - pcJ-1 - H--He, B--Ne, Al--Ar * - pcJ-2 - H--He, B--Ne, Al--Ar * - pcJ-3 - H--He, B--Ne, Al--Ar * - pcJ-4 - H--He, B--Ne, Al--Ar * - aug-pcJ-0 - H--He, B--Ne, Al--Ar * - aug-pcJ-1 - H--He, B--Ne, Al--Ar * - aug-pcJ-2 - H--He, B--Ne, Al--Ar * - aug-pcJ-3 - H--He, B--Ne, Al--Ar * - aug-pcJ-4 - H--He, B--Ne, Al--Ar * - pcseg-0 - H--Kr * - pcseg-1 - H--Kr * - pcseg-2 - H--Kr * - pcseg-3 - H--Kr * - pcseg-4 - H--Kr * - aug-pcseg-0 - H--Kr * - aug-pcseg-1 - H--Kr * - aug-pcseg-2 - H--Kr * - aug-pcseg-3 - H--Kr * - aug-pcseg-4 - H--Kr * - pcSseg-0 - H--Kr * - pcSseg-1 - H--Kr * - pcSseg-2 - H--Kr * - pcSseg-3 - H--Kr * - pcSseg-4 - H--Kr * - aug-pcSseg-0 - H--Kr * - aug-pcSseg-1 - H--Kr * - aug-pcSseg-2 - H--Kr * - aug-pcSseg-3 - H--Kr * - aug-pcSseg-4 - H--Kr * - W1-mtsmall - H--Ar * - W1-DZ - H--Ar * - W1-TZ - H--Ar * - W1-QZ - H--Ar * - W1-Opt - H--Ar * - Sapporo-DZP-2012 - H--Xe * - Sapporo-TZP-2012 - H--Xe * - Sapporo-QZP-2012 - H--Xe * - Sapporo-DKH3-DZP-2012 - K--Rn * - Sapporo-DKH3-TZP-2012 - K--Rn * - Sapporo-DKH3-QZP-2012 - K--Rn * - LANL08[^4] - Na--La, Hf--Bi * - LANL08(f) [^4] - Sc--Cu, Y--Ag, La, Hf--Au * - LANL2DZ[^4] - H, Li--La, Hf--Bi, U--Pu * - LANL2TZ[^4] - Sc--Zn, Y--Cd, La, Hf--Hg * - LANL2TZ(f) [^4] - Sc--Cu, Y--Ag, La, Hf--Au * - vDZP[^5] - H--Rn * - def-TZVP[^1] - Fr--Lr * - ma-def-TZVP[^1] - Fr--Lr * - HGBS-5 - H--Og * - HGBS-7 - H--Og * - HGBS-9 - H--Og * - HGBSP1-5 - H--Og * - HGBSP1-7 - H--Og * - HGBSP1-9 - H--Og * - HGBSP2-5 - H--Og * - HGBSP2-7 - H--Og * - HGBSP2-9 - H--Og * - HGBSP3-5 - H--Og * - HGBSP3-7 - H--Og * - HGBSP3-9 - H--Og * - AHGBS-5 - H--Og * - AHGBS-7 - H--Og * - AHGBS-9 - H--Og * - AHGBSP1-5 - H--Og * - AHGBSP1-7 - H--Og * - AHGBSP1-9 - H--Og * - AHGBSP2-5 - H--Og * - AHGBSP2-7 - H--Og * - AHGBSP2-9 - H--Og * - AHGBSP3-5 - H--Og * - AHGBSP3-7 - H--Og * - AHGBSP3-9 - H--Og * - cc-pVDZ - H--Ar, Ca--Kr * - cc-pVTZ - H--Ar, Ca--Kr, Y, Ag, Au * - cc-pVQZ - H--Ar, Ca--Kr * - cc-pV5Z - H--Ar, Ca--Kr * - cc-pV6Z - H--He, Be--Ne, Al--Ar * - aug-cc-pVDZ - H--Ar, Sc--Kr * - aug-cc-pVTZ - H--Ar, Sc--Kr, Ag, Au * - aug-cc-pVQZ - H--Ar, Sc--Kr * - aug-cc-pV5Z - H--Ar, Sc--Kr * - aug-cc-pV6Z - H--He, B--Ne, Al--Ar * - cc-pVD(+d)Z - Na--Ar * - cc-pVT(+d)Z - Na--Ar * - cc-pVQ(+d)Z - Na--Ar * - cc-pV5(+d)Z - Na--Ar * - apr-cc-pV(Q+d)Z - H--Ar * - may-cc-pV(T+d)Z - H--Ar * - may-cc-pV(Q+d)Z - H--Ar * - jun-cc-pV(D+d)Z - H--Ar * - jun-cc-pV(T+d)Z - H--Ar * - jun-cc-pV(Q+d)Z - H--Ar * - jul-cc-pV(D+d)Z - H--Ar * - jul-cc-pV(T+d)Z - H--Ar * - jul-cc-pV(Q+d)Z - H--Ar * - maug-cc-pV(D+d)Z - H--Ar * - maug-cc-pV(T+d)Z - H--Ar * - maug-cc-pV(Q+d)Z - H--Ar * - aug-cc-pVD(+d)Z - Al--Ar * - aug-cc-pVT(+d)Z - Al--Ar * - aug-cc-pVQ(+d)Z - Al--Ar * - aug-cc-pV5(+d)Z - Al--Ar * - aug-cc-pV6(+d)Z - Al--Ar * - aug-cc-pVTZ-J - H, B--F, Al--Cl, Sc--Zn, Se * - cc-pCVDZ[^6] - H--Ar, Ca, Ga--Kr * - cc-pCVTZ[^6] - H--Ar, Ca, Ga--Kr * - cc-pCVQZ[^6] - H--Ar, Ca, Ga--Kr * - cc-pCV5Z[^6] - H--Ar, Ca, Ga--Kr * - cc-pCV6Z[^6] - H--He, B--Ne, Al--Ar * - aug-cc-pCVDZ[^6] - H--Ar, Ga--Kr * - aug-cc-pCVTZ[^6] - H--Ar, Ga--Kr * - aug-cc-pCVQZ[^6] - H--Ar, Ga--Kr * - aug-cc-pCV5Z[^6] - H--Ar, Ga--Kr * - aug-cc-pCV6Z[^6] - H--He, B--Ne, Al--Ar * - cc-pwCVDZ[^6] - H--Ar, Ca, Ga--Kr * - cc-pwCVTZ[^6] - H--Ar, Ca--Kr, Ag, Au * - cc-pwCVQZ[^6] - H--Ar, Ca--Kr * - cc-pwCV5Z[^6] - H--Ar, Ca--Kr * - aug-cc-pwCVDZ[^6] - H--Ar, Ga--Kr * - aug-cc-pwCVTZ[^6] - H--Ar, Sc--Kr, Ag, Au * - aug-cc-pwCVQZ[^6] - H--Ar, Sc--Kr * - aug-cc-pwCV5Z[^6] - H--Ar, Sc--Kr * - cc-pVDZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra, U * - cc-pVTZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra, U * - cc-pVQZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra, U * - cc-pV5Z-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra * - aug-cc-pVDZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra * - aug-cc-pVTZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra * - aug-cc-pVQZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra * - aug-cc-pV5Z-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra * - cc-pCVDZ-PP[^7] - Ca, Sr, Ba, Ra * - cc-pCVTZ-PP[^7] - Ca, Sr, Ba, Ra * - cc-pCVQZ-PP[^7] - Ca, Sr, Ba, Ra * - cc-pCV5Z-PP[^7] - Ca, Sr, Ba, Ra * - aug-cc-pCVDZ-PP[^7] - Ca, Sr, Ba, Ra * - aug-cc-pCVTZ-PP[^7] - Ca, Sr, Ba, Ra * - aug-cc-pCVQZ-PP[^7] - Ca, Sr, Ba, Ra * - aug-cc-pCV5Z-PP[^7] - Ca, Sr, Ba, Ra * - cc-pwCVDZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra, U * - cc-pwCVTZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra, U * - cc-pwCVQZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra, U * - cc-pwCV5Z-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra * - aug-cc-pwCVDZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra * - aug-cc-pwCVTZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra * - aug-cc-pwCVQZ-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra * - aug-cc-pwCV5Z-PP[^7] - Ca, Cu--Kr, Sr--Xe, Ba, Hf--Rn, Ra * - cc-pVDZ-DK - H--Ar, Sc--Kr * - cc-pVTZ-DK - H--Ar, Sc--Kr, Y--Xe, Hf--Rn * - cc-pVQZ-DK - H--Ar, Sc--Kr, In--Xe, Tl--Rn * - cc-pV5Z-DK - H--Ar, Sc--Kr * - cc-pVDZ-DK3 - U * - cc-pVTZ-DK3 - U * - cc-pVQZ-DK3 - U * - aug-cc-pVDZ-DK - H--Ar, Sc--Kr * - aug-cc-pVTZ-DK - H--Ar, Sc--Kr, Y--Xe, Hf--Rn * - aug-cc-pVQZ-DK - H--Ar, Sc--Kr, In--Xe, Tl--Rn * - aug-cc-pV5Z-DK - H--Ar, Sc--Kr * - cc-pwCVDZ-DK[^6] - H--Be, Na--Mg, Ca--Zn * - cc-pwCVTZ-DK[^6] - H--Be, Na--Mg, Ca--Zn, Y--Xe, Hf--Rn * - cc-pwCVQZ-DK[^6] - H--Be, Na--Mg, Ca--Zn, In--Xe, Tl--Rn * - cc-pwCV5Z-DK[^6] - H--Be, Na--Mg, Ca--Zn * - cc-pwCVDZ-DK3 - U * - cc-pwCVTZ-DK3 - U * - cc-pwCVQZ-DK3 - U * - aug-cc-pwCVDZ-DK[^6] - H--Be, Na--Mg, Sc--Zn * - aug-cc-pwCVTZ-DK[^6] - H--Be, Na--Mg, Sc--Zn, Y--Xe, Hf--Rn * - aug-cc-pwCVQZ-DK[^6] - H--Be, Na--Mg, Sc--Zn, In--Xe, Tl--Rn * - aug-cc-pwCV5Z-DK[^6] - H--Be, Na--Mg, Sc--Zn * - cc-pVDZ-F12 - H--Ar * - cc-pVTZ-F12 - H--Ar * - cc-pVQZ-F12 - H--Ar * - cc-pVDZ-PP-F12[^7] - Ga--Kr, In--Xe, Tl--Rn * - cc-pVTZ-PP-F12[^7] - Ga--Kr, In--Xe, Tl--Rn * - cc-pVQZ-PP-F12[^7] - Ga--Kr, In--Xe, Tl--Rn * - cc-pCVDZ-F12 - Li--Ar * - cc-pCVTZ-F12 - Li--Ar * - cc-pCVQZ-F12 - Li--Ar * - haV(T+d)Z - H--Ar * - haV(Q+d)Z - H--Ar * - haV(5+d)Z - H--Ar * - Partridge-1 - H, Li--Sr * - Partridge-2 - H, Li--Kr * - Partridge-3 - H, Li--Zn * - Partridge-4 - Sc--Zn * - x2c-SV(P)all - H--Rn * - x2c-SVPall - H--Rn * - x2c-TZVPall - H--Rn * - x2c-TZVPPall - H--Rn * - x2c-QZVPall - H--Rn * - x2c-QZVPPall - H--Rn * - x2c-SV(P)all-2c - H--Rn * - x2c-SVPall-2c - H--Rn * - x2c-TZVPall-2c - H--Rn * - x2c-TZVPPall-2c - H--Rn * - x2c-QZVPall-2c - H--Rn * - x2c-QZVPPall-2c - H--Rn * - x2c-SV(P)all-s - H--Rn * - x2c-SVPall-s - H--Rn * - x2c-TZVPall-s - H--Rn * - x2c-TZVPPall-s - H--Rn * - x2c-QZVPall-s - H--Rn * - x2c-QZVPPall-s - H--Rn * - x2c-QZVPall-2c-s - H--Rn * - x2c-QZVPPall-2c-s - H--Rn * - SARC-DKH-SVP - Hf--Hg * - SARC-DKH-TZVP - Rb--Rn, Ac--Lr * - SARC-DKH-TZVPP - Rb--Rn, Ac--Lr * - SARC-ZORA-SVP - Hf--Hg * - SARC-ZORA-TZVP - Rb--Rn, Ac--Lr * - SARC-ZORA-TZVPP - Rb--Rn, Ac--Lr * - SARC2-DKH-QZV - La--Lu * - SARC2-DKH-QZVP - La--Lu * - SARC2-ZORA-QZV - La--Lu * - SARC2-ZORA-QZVP - La--Lu * - D95 - H, Li, B--Ne, Al--Cl * - D95p - H, Li, B--Ne, Al--Cl * - EPR-II - H, B--F * - EPR-III - H, B--F * - IGLO-II - H, B--F, Al--Cl * - IGLO-III - H, B--F, Al--Cl * - UGBS - H--Th, Pu--Am, Cf--Lr * - CP - Sc--Zn * - CP(PPP) - Sc--Zn * - Wachters+f - Sc--Cu * - {cspan}`1` *Coulomb-fitting auxiliary basis sets (`AuxJ``)* * - def2/J - H--Rn * - def2-mTZVP/J - H--Rn * - def2-mTZVPP/J - H--Rn * - x2c/J - H--Rn * - SARC/J - H--Rn, Ac--Lr * - {cspan}`1` *Coulomb and exchange-fitting auxiliary basis sets (`AuxJK`)* * - def2/JK - H--Ba, Hf--Rn * - def2/JKsmall - H--Ra, Th--Lr * - cc-pVTZ/JK - H, B--F, Al--Cl, Ga--Br * - cc-pVQZ/JK - H, B--F, Al--Cl, Ga--Br * - cc-pV5Z/JK - H, B--F, Al--Cl, Ga--Br * - aug-cc-pVTZ/JK - H, B--F, Al--Cl, Ga--Br * - aug-cc-pVQZ/JK - H, B--F, Al--Cl, Ga--Br * - aug-cc-pV5Z/JK - H, B--F, Al--Cl, Ga--Br * - SARC2-DKH-QZV/JK - La--Lu * - SARC2-DKH-QZVP/JK - La--Lu * - SARC2-ZORA-QZV/JK - La--Lu * - SARC2-ZORA-QZVP/JK - La--Lu * - {cspan}`1` *Auxiliary basis sets for correlated methods (`AuxC`)* * - def2-SVP/C - H--Rn * - def2-TZVP/C - H--Rn * - def2-TZVPP/C - H--Rn * - def2-QZVPP/C - H--Rn * - def2-SVPD/C - H--La, Hf--Rn * - def2-TZVPD/C - H--La, Hf--Rn * - def2-TZVPPD/C - H--La, Hf--Rn * - def2-QZVPPD/C - H--La, Hf--Rn * - cc-pVDZ/C - H--Ar, Ga--Kr * - cc-pVTZ/C - H--Ar, Sc--Kr * - cc-pVQZ/C - H--Ar, Sc--Kr * - cc-pV5Z/C - H--Ar, Ga--Kr * - cc-pV6Z/C - H--He, B--Ne, Al--Ar * - aug-cc-pVDZ/C - H--He, Be--Ne, Mg--Ar, Ga--Kr * - aug-cc-pVTZ/C - H--He, Be--Ne, Mg--Ar, Sc--Kr * - aug-cc-pVQZ/C - H--He, Be--Ne, Mg--Ar, Sc--Kr * - aug-cc-pV5Z/C - H--Ne, Al--Ar, Ga--Kr * - aug-cc-pV6Z/C - H--He, B--Ne, Al--Ar * - cc-pwCVDZ/C[^6] - H--He, B--Ne, Al--Ar, Ga--Kr * - cc-pwCVTZ/C[^6] - H--He, B--Ne, Al--Ar, Sc--Kr * - cc-pwCVQZ/C[^6] - H--He, B--Ne, Al--Ar, Ga--Kr * - cc-pwCV5Z/C[^6] - H--Ne, Al--Ar * - aug-cc-pwCVDZ/C[^6] - H--He, B--Ne, Al--Ar, Ga--Kr * - aug-cc-pwCVTZ/C[^6] - H--He, B--Ne, Al--Ar, Sc--Kr * - aug-cc-pwCVQZ/C[^6] - H--He, B--Ne, Al--Ar, Ga--Kr * - aug-cc-pwCV5Z/C[^6] - H--Ne, Al--Ar * - cc-pVDZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - cc-pVTZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - cc-pVQZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - aug-cc-pVDZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - aug-cc-pVTZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - aug-cc-pVQZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - cc-pwCVDZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - cc-pwCVTZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - cc-pwCVQZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - aug-cc-pwCVDZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - aug-cc-pwCVTZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - aug-cc-pwCVQZ-PP/C - Cu--Kr, Y--Xe, Hf--Rn * - cc-pVDZ-F12-MP2Fit - H--Ar * - cc-pVTZ-F12-MP2Fit - H--Ar * - cc-pVQZ-F12-MP2Fit - H--Ar * - cc-pVDZ-PP-F12-MP2Fit - Ga--Kr, In--Xe, Tl--Rn * - cc-pVTZ-PP-F12-MP2Fit - Ga--Kr, In--Xe, Tl--Rn * - cc-pVQZ-PP-F12-MP2Fit - Ga--Kr, In--Xe, Tl--Rn * - cc-pCVDZ-F12-MP2Fit - Li--Ar * - cc-pCVTZ-F12-MP2Fit - Li--Ar * - cc-pCVQZ-F12-MP2Fit - Li--Ar * - {cspan}`1` *Complementary auxiliary basis sets for F12 calculations (`CABS`)* * - cc-pVDZ-F12-CABS - H, B--Ne, Al--Ar * - cc-pVTZ-F12-CABS - H, B--Ne, Al--Ar * - cc-pVQZ-F12-CABS - H, B--Ne, Al--Ar * - cc-pVDZ-F12-OptRI - H--Ar * - cc-pVTZ-F12-OptRI - H--Ar * - cc-pVQZ-F12-OptRI - H--Ar * - cc-pVDZ-PP-F12-OptRI - Ga--Kr, In--Xe, Tl--Rn * - cc-pVTZ-PP-F12-OptRI - Ga--Kr, In--Xe, Tl--Rn * - cc-pVQZ-PP-F12-OptRI - Ga--Kr, In--Xe, Tl--Rn * - aug-cc-pVDZ-PP-OptRI - Cu--Zn, Ag--Cd, Au--Hg * - aug-cc-pVTZ-PP-OptRI - Cu--Zn, Ag--Cd, Au--Hg * - aug-cc-pVQZ-PP-OptRI - Cu--Zn, Ag--Cd, Au--Hg * - aug-cc-pV5Z-PP-OptRI - Cu--Zn, Ag--Cd, Au--Hg * - cc-pCVDZ-F12-OptRI - Li--Ar * - cc-pCVTZ-F12-OptRI - Li--Ar * - cc-pCVQZ-F12-OptRI - Li--Ar * - aug-cc-pwCVDZ-PP-OptRI - Cu--Zn, Ag--Cd, Au--Hg * - aug-cc-pwCVTZ-PP-OptRI - Cu--Zn, Ag--Cd, Au--Hg * - aug-cc-pwCVQZ-PP-OptRI - Cu--Zn, Ag--Cd, Au--Hg * - aug-cc-pwCV5Z-PP-OptRI - Cu--Zn, Ag--Cd, Au--Hg ::: :::{Note} Check these pointers for more information on the basis sets: (indicated in ecah element of the table as well) - $^1$Used with the Def-ECP pseudopotentials (Rb–Lr). - $^2$Used with the Def2-ECP pseudopotentials (Rb–Rn). - $^3$Used with the dhf-ECP or dhf-ECP-2c pseudopotentials (Rb–Rn). For elements H--Kr equivalent to the respective def2-XVP basis set. - $^4$Used with the HayWadt pseudopotentials (Na–La, Hf–Bi, U–Pu). - $^5$Valence double-ζ with large-core pseudopotentials. For the respective ECP types per element, see Ref. [15] and table 6.5. - $^6$The respective basis sets without core correlation functions, i.e. (aug-)cc-pVXZ(-DK)(/C), are used for H and He. - $^7$Used with the SK-MCDHF-RSC pseudopotentials (Ca, Cu–Kr, Sr–Xe, Ba, Hf–Ra, U). ::: A note on RI and auxiliary basis sets: one thing that is certainly feasible and reasonable if you do not want to depend on the RI approximation is to converge a RI-J calculation and then take the resulting orbitals as initial guess for a calculation with exact Coulomb term. This should converge within a few cycles and the total execution time should still be lower than just converging the calculation directly with exact Coulomb treatment. (sec:basisset.autoaux.detailed)= ## Automatic generation of auxiliary basis sets If no auxiliary basis set is available for your chosen orbital basis set, one can be generated automatically by ORCA using the keyword `AutoAux`. This is specified as any other fitting basis set: as a value to the `AuxJ/AuxJK/AuxC` variables in the `%basis` block or as a separate keyword in the simple input line (in which case all three Aux slots are populated with identical fitting basis sets). `AutoAux` can also be assigned to individual elements or atoms - see sections {ref}`sec:basisset.element.detailed` and {ref}`sec:basisset.atom.detailed`. The generated basis sets can be used for Coulomb, exchange and correlation fitting and are as accurate as the optimized auxiliary basis sets at the cost of being up to twice as large. The exact generation procedure is described elsewhere {cite}`autoaux` but notably **it has been significantly altered since ORCA 3.1 and will not produce the same results!** For compatibility, the old version is still accessible via the setting `OldAutoAux true` in the `%basis` block. Some additional settings for `AutoAux` are given below with their default values. ```orca %basis AuxJ "AutoAux" # Use AutoAux to generate the AuxJ fitting basis set AuxJK "AutoAux" # Use AutoAux to generate the AuxJK fitting basis set AuxC "AutoAux" # Use AutoAux to generate the AuxC fitting basis set AutoAuxSize 0-3 # 0 use minimal effective rather than minimal # primitive exponent (suitable for ANO basis sets) # 1 (default) increases the maximal exponent # for the shells with low angular momenta. # 2 increases the maximal exponent for all shells # 3 directly uses the primitives and produces # the largest fitting basis AutoAuxLmax false # If true increase the maximal angular momentum of # the fitting basis set to the highest value # permitted by ORCA and by the orbital basis set. AutoAuxLLimit -1 # If >0, do not exceed the given angular momentum. OldAutoAux false # If true selects the ORCA 3.1 generation procedure # Only change the defaults below if you know what you are doing AutoAuxF[0] 20.0 # The factor to increase the maximal s-exponent AutoAuxF[1] 7.0 # Same for the p-shell AutoAuxF[2] 4.0 # Same for the d-shell AutoAuxF[3] 4.0 # Same for the f-shell AutoAuxF[4] 3.5 # Same for the g-shell AutoAuxF[5] 2.5 # Same for the h-shell AutoAuxF[6] 2.0 # Same for the i-shell AutoAuxF[7] 2.0 # Same for the j-shell AutoAuxB[0] 1.8 # Even-tempered expansion factor for the s-shell AutoAuxB[1] 2.0 # Same for the p-shell AutoAuxB[2] 2.2 # Same for the d-shell AutoAuxB[3] 2.2 # Same for the f-shell AutoAuxB[4] 2.2 # Same for the g-shell AutoAuxB[5] 2.3 # Same for the h-shell AutoAuxB[6] 3.0 # Same for the i-shell AutoAuxB[7] 3.0 # Same for the j-shell AutoAuxTightB true # Only use B[l] for shells with high l and B[0] for the rest end ``` Note that if the orbital basis set contains diffuse functions, as is the case for the aug-cc-pVXZ sets, the AutoAux fitting basis may contain (near-)linear dependencies. In this case, the Cholesky decomposition of the Coulomb metric will fail and the program will likely crash. One may print the offending auxiliary basis using `!PrintBasis` and manually remove the most diffuse s- and/or p-functions, which will usually resolve the problem. An alternative, automatic solution is implemented in ORCA 5.0 -- see section {ref}`basisset.lindep-pcd.detailed`. (sec:basisset.element.detailed)= ## Assigning or Adding Basis Functions to an Element In order to assign a new basis set to a given element, use: ```orca %basis NewGTO 8 # New basis for oxygen. # NewGTO O # This works as well. S 3 1 910.10034975 0.03280967 2 137.19711335 0.23422391 3 30.85279077 0.81490980 S 2 1 1.72885887 0.27389659 2 0.39954770 0.79112437 P 1 1 8.35065975 1.00000000 end end ``` Note that for simplicity and consistency the input format is the same as that used in the basis set files. In this format the first line carries first the angular momentum of the shell to be added (s, p, d, f, g, h, i, j) and the number of primitives. Then for each primitive one line follows which has (a) the index of the primitive (1, 2, 3, ...) (b) the exponent of the primitive and (c) the contraction coefficient (unnormalized). Note that ORCA always uses spherical harmonic Gaussian functions. L-shells (not to be confused with angular momentum equal to 9) can only be dealt with as separate s- and p-shells. There also is the possibility to include a `SCALE X` statement after the number of primitives in the first line to indicate that the basis function exponents should be scaled. In order to add basis functions to the basis of a given element (for example because you do not like the standard polarization functions) use `AddGTO` instead of `NewGTO`. In `NewGTO` or `AddGTO` you can also use the nicknames of internally stored basis sets. An example is: ```orca %basis NewGTO 8 # new basis for oxygen "6-31G" D 1 1 0.4 1.0 end end ``` In this example the 6-31G basis is assigned to oxygen and in addition a polarization function with exponent 0.4 is added to the oxygen basis. Note that the `NewGTO` keyword does not change the ECP for the given element - you must use `NewECP` or `DelECP` (see section {ref}`sec:basisset.ecps.detailed`). A similar mechanism was established for the auxiliary basis sets in RI calculations: ```orca %basis NewAuxJGTO 8 # new auxiliary basis for oxygen s 1 1 350 1.0 ... etc end AddAuxJGTO 8 # add a shell to the auxiliary basis for # oxygen D 1 1 0.8 1.0 end end ``` New basis functions can be specifically assigned to any auxiliary basis sets. The keywords `NewAuxCGTO`, `AddAuxCGTO`, `NewAuxJKGTO`, `AddAuxJKGTO`, `NewCABSGTO`, `AddCABSGTO` are used in the same way. The keywords `NewAuxGTO` and `AddAuxGTO` are the same as `NewAuxJGTO` and `AddAuxJGTO`, that is, they only influence the Coulomb auxiliary basis (/J basis)! (sec:basisset.atom.detailed)= ## Assigning or Adding Basis Functions to Individual Atoms Sometimes you may want to not treat all carbon atoms with the same basis set but to assign a specific basis set to a specific atom in the molecules. This is also possible in ORCA and takes place in the coordinate section (`%coords`, `*xyz`, etc.). The format is the same as described above. An example may help to make things clear: ```orca *int 0 1 C(1) 0 0 0 0.00 0.0 0.00 AddGTO D 1 1 1.0 1.0 end O(2) 1 0 0 1.13 0.0 0.00 NewGTO "6-311G" D 1 1 1.2 1.0 end * ``` In this example an extra d-shell with exponent 1.0 is added to the first carbon atom and the basis for the oxygen atom is changed to `6-311G` with an extra d-function of exponent 1.2 added. Analogously, `AUX` basis functions can be assigned or added to individual atoms using the keywords `NewAuxJGTO`, `AddAuxJGTO`, `NewAuxCGTO`, `AddAuxCGTO`, `NewAuxJKGTO`, `AddAuxJKGTO`, `NewCABSGTO`, `AddCABSGTO`. A note on the use of `AutoAux`: if you change the basis set on a given atom and want to generate a fitting basis, you have to specify it again in the `COORDS` section, even if `AutoAux` is already present in the simple input line or in the `%basis` block. For example: ```orca ! Def2-SVP Def2/JK %basis NewAuxJKGTO H "AutoAux" end end *xyz 0 1 O 0.00 0.00 0.00 H -0.25 0.93 0.00 H 0.96 0.00 0.00 AddGTO P 1 1 1.6 1.0 D 1 1 1.0 1.0 end NewAuxJKGTO "AutoAux" end * ``` Here the oxygen atom is assigned the Def2-SVP basis and the Def2/JK fitting basis, the first hydrogen atom is assigned the Def2-SVP basis and an automatically generated fitting basis and the second hydrogen atom is assigned the Def2-SVP basis with two additional polarization functions and a larger automatically generated fitting basis that accounts for these functions. :::{Tip} When assigning custom basis sets it is always a good idea to print the basis set information (`%output print[p_basis] 2 end` or simply `!PrintBasis`) and check that everything is correct. ::: (sec:basisset.fragments.detailed)= ## Assigning Basis Sets and ECPs to Fragments In multi-level or QM/QM calculations it may be convenient to assign different basis sets to different fragments. This can be done with the keywords `FragBasis`, `FragAuxJ`, `FragAuxJK`, `FragAuxC`, `FragCABS`, and `FragECP` in the `%basis` block, followed by the number of the fragment (numbering starts at 1!) and a standard basis set or ECP from the ORCA library (see Tables {numref}`table:basisset.availability.detailed` and {numref}`table:ECP_keywords`). Note that unlike the `NewGTO` keyword, `FragBasis` also changes the ECP, if applicable. Fragment basis sets will overload the global or element-specific ({ref}`sec:basisset.element.detailed`) choice but can be overloaded for individual atoms ({ref}`sec:basisset.atom.detailed`). If AutoAux is requested for a fragment, it will be generated for the actual orbital basis set chosen for each atom, even if it is changed in the coordinates section. However, if AutoAux was requested for an element or in the simple input, the auxiliary basis will be generated before the fragment basis is assigned (which is not desired), therefore AutoAux must be requested again for the fragment. An example is given below: ```orca ! PrintBasis BP86 NoIter ! def2-SVP def2/J %basis FragBasis 1 "def2-TZVP" FragBasis 2 "cc-pVTZ-PP" FragAuxJ 2 "AutoAux" FragECP 3 "SK-MCDHF-RSC" FragAuxJ 3 "def2/JK" end *xyz 0 1 H(1) 0 0 0 I(1) 0 0 1.6 H(2) 0 5 0 NewGTO "cc-pVTZ" end I(2) 0 5 1.6 H(3) 5 0 0 I(3) 5 0 1.6 * # Final basis sets: # Atom Basis ECP AuxJ # 0H def2-TZVP def2-ECP def2/J # 1I def2-TZVP def2-ECP def2/J # 2H cc-pVTZ - AutoAux(cc-pVTZ) # 3I cc-pVTZ-PP SK-MCDHF-RSC AutoAux(cc-pVTZ-PP) # 4H def2-SVP - def2/JK # 5I def2-SVP SK-MCDHF-RSC def2/JK ``` It is also possible to read fragment-specific basis sets from a file. The syntax is analogous, using the keywords `ReadFragBasis`, `ReadFragAuxJ`, `ReadFragAuxJK`, `ReadFragAuxC`, `ReadFragCABS`, and `ReadFragECP`. In this case, the input string is expected to be an existing basis set file in GAMESS-US format (see section {ref}`sec:basisset.file.detailed`). All other details above (e.g., regarding ECPs and AutoAux) also apply here. (sec:basisset.file.detailed)= ## Reading Orbital and Auxiliary Basis Sets from a File By using the variables `GTOName`, `GTOAuxJName`, `GTOAuxJKName`, `GTOAuxCName`, and `GTOCABSName` (`GTOAuxName` is a synonym for `GTOAuxJName`) a basis set can be read from an ASCII file. In this way you can construct or modify your favorite standard basis set and load it easily into the program. ```orca %basis # read an externally specified orbital basis GTOName = "MyBasis.bas" # read an externally specified Coulomb-fitting basis for RI calculations GTOAuxJName = "MyAuxJBasis.bas" # read an externally specified Coulomb- and exchange-fitting basis GTOAuxJKName = "MyAuxJKBasis.bas" # read an externally specified correlation-fitting basis GTOAuxCName = "MyAuxCBasis.bas" # read an externally specified complementary auxiliary basis set GTOCABSName = "MyCABSBasis.bas" end ``` A word of caution: in C/C$++$ the backslashes in directory assignments must be given twice to be correctly understood! The format is that used for "GAMESS-US" in the EMSL library {cite}`basissets`. To give an example of what this format looks like here is a part of the `3-21GSP` basis of Buenker and coworkers {cite}`mitin1996chem,mitin1997comp`: ``` ! lines in the beginning with '!' or '#' are comments ! BASIS="3-21GSP" !Elements References !-------- ---------- ! H - Ne: A.V. Mitin, G. Hirsch, R. J. Buenker, Chem. Phys. Lett. 259, 151 (1996) ! Na - Ar: A.V. Mitin, G. Hirsch, R. J. Buenker, J. Comp. Chem. 18, 1200 (1997). ! $DATA ! Optional HYDROGEN ! (3s) -> [2s] Element symbols are also recognized S 2 1 4.50036231 0.15631167 2 0.68128924 0.90466909 S 1 1 0.15137639 1.00000000 CARBON ! (6s,3p) -> [3s,2p] S 3 1 499.24042249 0.03330322 2 75.25419194 0.23617745 3 16.86538669 0.81336259 L 2 ! L shells are a s and a p shell with identical exponents 1 0.89739483 0.24008573 0.46214684 2 0.21746772 0.81603757 0.66529098 L 1 1 4.52660451 1.00000000 1.00000000 $END ! Optional ``` The file format for the auxiliary basis sets is exactly the same. Basis sets can be also exported in GAMESS-US format by the `orca_exportbasis` utility (section {ref}`sec:utilities.exportbasis.detailed`). Note that in order to read basis sets printed by ORCA (using `!PrintBasis`), the `NewGTO` and `end` keywords must be removed. (sec:basisset.ecps.detailed)= ## Advanced Specification of Effective Core Potentials ### Library ECPs and Basis Sets Besides the simple input line (section {ref}`sec:basissets.ecps.structure`), assignment of ECPs can be done within the `%basis` block using the `ECP` and `NewECP` keywords as in the following example: ```orca %basis ECP "def2-ECP" # All elements (for which the ECP is defined) NewECP Pt "def2-SD" end # Different ECP for Pt end ``` A variant of the `NewECP` keyword can be used for individual atoms inside the geometry definition: ```orca * xyz ... ... S 0.0 0.0 0.0 NewECP "SDD" end ... * ``` Note that these keywords only affect the ECP and not the valence basis set! In case the basis set for an element/atom has been changed using the `NewGTO` keyword (see sections {ref}`sec:basisset.element.detailed` and {ref}`sec:basisset.atom.detailed` above) it may be necessary to remove the ECP from that element/atom. This can be done with the `DelECP` keyword in the `%basis` block or coordinates input, respectively: ```orca ! LANL2DZ # Uses HayWadt ECPs by default, starting from Na %basis NewGTO S "Def2-TZVP" end # All-electron up to Kr DelECP S # Remove HayWadt ECP end * xyz ... ... Cu 0.0 0.0 0.0 DelECP # Remove HayWadt ECP NewGTO "Def2-QZVPP" end # All-electron up to Kr ... * ``` To remove all ECPs loaded by default (e.g. in case no global basis set is chosen) you can use the `!NoECP` simple keyword. ### Manual Input of ECP Parameters To manually specify ECP parameters, the `NewECP` keyword is followed by the element for which an ECP is to be entered, the number of core electrons to be replaced (N_core) and the maximum angular momentum (lmax). The ECP specification is finished by giving the definitions of the individual shells that constitute the angular dependent potentials U$_l$. ```orca %basis NewECP N_core lmax [shells] end end ``` For each ECP shell, first the angular momentum $l$ has to be given, followed by the number of primitives. The primitives themselves are then specified by giving a running index and the respective tuple of exponent $a_{kl}$, expansion coefficient $d_{kl}$ and radial power $n_{kl}$. ```orca # ECP shell l 1 a1l d1l n1l 2 a2l d2l n3l ... ``` As an example, consider the SD(10,MDF) for Vanadium. The name indicates a Stuttgart--Dresden type ECP that replaces 10 core electrons and is derived from a relativistic calculation for the neutral atom. It consists of 4 shells with angular momentum s, p, d, and f. Note that the f shell has an expansion coefficient of 0.0 and thus will not contribute at all to this effective core potential. This is typical for all SD potentials (but may be different for program packages like TURBOMOLE that do not support arbitrary angular momentum with respect to the ECP and therefore use recontractions of the original parameter sets). ``` %basis # ECP SD(10,MDF) for V # M. Dolg, U. Wedig, H. Stoll, H. Preuss, # J. Chem. Phys. 86, 866 (1987). NewECP V N_core 10 lmax f s 2 1 14.4900000000 178.4479710000 2 2 6.5240000000 19.8313750000 2 p 2 1 14.3000000000 109.5297630000 2 2 6.0210000000 12.5703100000 2 d 2 1 17.4800000000 -19.2196570000 2 2 5.7090000000 -0.6427750000 2 f 1 1 1.0000000000 0.0000000000 2 end end ``` ### ECPs and ghost atoms When ghost atoms are defined on the input (see section {ref}`sec:input.coords.special`), ECPs are **not** added to these atoms by default. If that is somehow needed, please add `GhostECP true` under the `%basis` block. ``` %basis GhostECP true # AllowGhostECP true # synonym end ``` (sec:basisset.embeddingpotentials.detailed)= ## Embedding Potentials Computations on cluster models sometimes require the presence of embedding potentials in order to account for otherwise neglected repulsive terms at the border {cite}`giordano2001surf`. In order to simplify these kind of calculations with ORCA the ECP embedding can be accomplished quite easily: ```orca *xyz ... # atom> charge x y z optional ECP declaration Zr> 4.0 0.0 0.0 0.0 NewECP "SDD" end ... * ``` The declaration of such a coreless ECP center takes place in the coordinates section by appending a bracket "\>" to the element symbol. Note that embedding ECPs are treated as point charges in ORCA, so the charge has to be given next. The coordinates of the coreless ECP center have to be specified as usual and may be followed by an optional ECP assignment. In general, calculations that employ an ECP embedding procedure should be single point calculations. However if the need arises to perform a geometry optimization, make sure to set up explicit Cartesian constraints for the coreless ECP centers. (sec:basisset.lindep.detailed)= ## Linear Dependence The previous sections describe the assessment of a desired molecular basis set from appropriately parametrized functions at various locations within the molecule (normally centered on atoms). The parametrization of these functions is such that the chance for redundancy is minimal. Since however, one is limited to work with finite numerical precision, and furthermore these parameters also depend on the molecular geometry, redundancies cannot be completely eliminated in advance. Redundancy means that the subspace spanned by the given basis functions at given values of parameters (including geometry), can be identically spanned by a smaller number of *linear independent* basis functions. Linear dependent (redundant) function sets however may cause numerical instabilities. Linear dependence is normally identified by searching for zero eigenvalues of the overlap matrix. Note that the inverse of the overlap (or related matrices) are used for orthogonalization purposes, and it follows that if near zero eigenvalues are not treated properly, the inverse becomes ill-defined, and the SCF procedure numerically unstable. From the previous discussion, it is evident that the crucial parameter for curing linear dependence is the threshold below which an overlap eigenvalue is considered zero. This parameter may be changed using the following keyword ```orca %scf sthresh 1e-6 # default 1e-7 end ``` Although there is no strict limit for the value of the above parameter, it should reasonably be somewhere between 1e-5 and 1e-8 (the default is 1e-7). One may get away with 1e-9 or perhaps even lower without convergence problem, but there is a risk that the result is contaminated with noise caused by the near zero vectors. In difficult cases, an 1e-6 threshold was often found to work smoothly, and above that one risks throwing away more and more functions, which also influence comparability of results with other calculations. To monitor the behavior of the small eigenvalues, one should look for the following block in the output ``` Diagonalization of the overlap matrix: Smallest eigenvalue ... -1.340e-17 Time for diagonalization ... 0.313 sec Threshold for overlap eigenvalues ... 1.000e-07 Number of eigenvalues below threshold ... 1 Smallest eigenvalue above threshold ... 6.013e-07 Time for construction of square roots ... 0.073 sec Total time needed ... 0.387 sec ``` Here, the smallest eigenvalue is printed, along with the currently used overlap threshold, and the number of functions below this (which will be dropped). It is a recommended consistency check to look for an equal number of zero entries among orbital energies once the SCF procedure converged. Note that for functions belonging to zero eigenvalues *no level shifts* are applied! In case that redundant vectors were removed from the basis, `! MORead NoIter` should only be used in conjunction with the same `SThresh` as in the original calculation, otherwise the results will be inconsistent. `! MORead` may still be used together with a change in `SThresh`, but a few SCF iterations will be required. (basisset.lindep-diffsthresh.detailed)= ### Automatic Adjustments for Near Linear-Dependent Cases Starting from ORCA6, there is now a keyword called DiffSThresh, which controls an automatic tightening of the integral cutoff parameters Thresh and TCut in case small eigenvalues of the overlap matrix are found. We found this to be important in some calculations using diffuse basis, and these parameters are set to a minimum value of Thresh=1e-12 and TCut=1e-13 in case the "Smallest eigenvalue" shown above gets below that number. If the cutoffs are already tighter than that, for instance when using `!VeryTightSCF`, than nothing will happen. We found empirically that these are safe numbers to mitigate noise and increase the robustness of the SCF procedure, thus they are enforced by default. The default is 1e-6 and this can be turned off by setting `%SCF DiffSThresh -1 END` on the input in case you don't want this automatic adjustment to happen. (basisset.lindep-pcd.detailed)= ### Removal of Redundant Basis Functions While the approach described above is usually successful in removing linear dependencies from the orbital basis set, the auxiliary basis used in RI is not orthogonalized the same way. Instead, the RI linear equation system is solved using a Cholesky decomposition (CD) of the auxiliary basis Coulomb metric. If the auxiliary basis is redundant, the CD fails and the program usually aborts. One simple solution implemented in ORCA is to perform a pivoted Cholesky decomposition (PCD) of the metric, terminating at a given threshold. Then, the shells contributing to the nullspace are removed from the basis at the beginning of the calculation. This can be requested for any of the basis sets using either the overlap or the Coulomb metric. It is most appropriate for the AuxJ/AuxJK/AuxC basis using the Coulomb metric. The truncated basis can be examined using the `!PrintBasis` keyword. Often, functions may be removed for some atoms of a given element, but kept for others. As long as the threshold is low enough, i.e. only truly redundant functions are removed, this should not affect the molecular symmetry of the results. ```orca %basis PCDTrimBas Overlap # Trim the orbital basis in the overlap metric PCDTrimAuxJ Coulomb # Trim the AuxJ basis in the Coulomb metric PCDTrimAuxJK Coulomb # Trim the AuxJK basis in the Coulomb metric PCDTrimAuxC Coulomb # Trim the AuxC basis in the Coulomb metric PCDThresh -1 # Threshold for the PCD: chosen automatically if <0 end ``` [^1]: Used with the Def-ECP pseudopotentials (Rb–Lr). [^2]: Used with the Def2-ECP pseudopotentials (Rb–Rn). [^3]: Used with the dhf-ECP or dhf-ECP-2c pseudopotentials (Rb–Rn). [^4]: Used with the HayWadt pseudopotentials (Na–La, Hf–Bi, U–Pu). [^5]: Valence double-ζ with large-core pseudopotentials. For the respective ECP types per element, see Ref. {cite}`grimme2022wb97x3c` and {numref}`table:ECP_keywords`. [^6]: The respective basis sets without core correlation functions, i.e. (aug-)cc-pVXZ(-DK)(/C), are used for H and He. [^7]: Used with the SK-MCDHF-RSC pseudopotentials (Ca, Cu–Kr, Sr–Xe, Ba, Hf–Ra, U).