7.6. Choice of Initial Guess and Restart of SCF Calculations

The initial guess is an important issue in each SCF calculation. If this guess is reasonable, the convergence of the procedure will be much better. ORCA makes some effort to provide a good initial guess and gives the user enough flexibility to tailor the initial guess to his or her needs.

The initial guess is also controlled via the %scf block and the variables Guess, MOInp and GuessMode.

%scf
  Guess     HCore       # One electron matrix
            Hueckel     # Extended H\"uckel guess
            PAtom       # Polarized atomic densities
            PModel      # Model potential 
            MORead      # Restart from an earlier calc.
  MOInp     "Name.gbw"  # orbitals used for MORead
  GuessMode FMatrix     # FMatrix projection
            CMatrix     # Corresponding orbital projection
  AutoStart true        # try to use the orbitals from the existing
                        # GBW file of the same name (if possible)
                        # (default)
            false       # don't use orbitals from existing GBW file
end

7.6.1. AutoStart feature

Older versions of ORCA always created a new GBW file at the beginning of the run no matter whether a file of the same name existed or perhaps contained orbitals. Now, in the case of single-point calculations the program automatically checks if a .gbw file of the same name exists. If yes, the program checks if it contains orbitals and all other necessary information for a restart. If yes, the variable Guess is set to MORead. The existing .gbw file is renamed to BaseName.ges and MOInp is set to this filename. If the AutoStart feature is not desired, set AutoStart false in the %scf block or give the keyword !NoAutoStart in the simple input line. Note that AutoStart is ignored for geometry optimizations: in this case, using previously converged orbitals contained in a .gbw file (of a different name) can be achieved via MORead and MOInp.

7.6.2. One Electron Matrix Guess

The simplest guess is to diagonalize the one electron matrix to obtain starting orbitals. This guess is very simple but usually also a disaster because it produces orbitals that are far too compact.

7.6.3. Basis Set Projection

The remaining guesses (may) need the projection of initial guess orbitals onto the actual basis set. In ORCA there are two ways this can be done. GuessMode FMatrix and GuessMode CMatrix. The results from the two methods are usually rather similar. In certain cases GuessMode CMatrix may be preferable. GuessMode FMatrix is simpler and faster. In short the FMatrix projection defines an effective one electron operator:

(7.44)\[\hat{f}=\sum\limits_p { \varepsilon_{p} a_{p}^{\dagger} a_{p} } \]

where the sum is over all orbitals of the initial guess orbital set, \(a_{p}^{\dagger}\) is the creation operator for an electron in guess MO \(p\), \(a_{p}\) is the corresponding annihilation operator and \(\varepsilon_{i}\) is the orbital energy. This effective one electron operator is diagonalized in the actual basis and the eigenvectors are the initial guess orbitals in the target basis. For most wavefunctions this produces a fairly reasonable guess.

CMatrix is more involved. It uses the theory of corresponding orbitals to fit each MO subspace (occupied, partially occupied or spin-up and spin-down occupied) separately [34, 444]. After fitting the occupied orbitals, the virtual starting orbitals are chosen in the orthogonal complement of the occupied orbitals. In some cases, especially when restarting ROHF calculations, this may be an advantage. Otherwise, it is not expected that CMatrix will be grossly superior to FMatrix for most cases.

7.6.4. PModel Guess

The PModel guess (chosen by Guess PModel in the %scf block or simply a keyword line with !PModel) is one that is usually considerably successful. It consists of building and diagonalizing a Kohn–Sham matrix with an electron density which consists of the superposition of spherical neutral atoms densities which are predetermined for both relativistic and nonrelativistic methods. This guess is valid for both Hartree–Fock and DFT methods, but not for semiempirical models. However, due to the complexity of the guess it will also take a little computer time (usually less than one SCF iteration). The model densities are available for most atoms of the periodic table and consequently the PModel guess is usually the method of choice (particularly for molecules containing heavy elements) unless you have more accurate starting orbitals available.

7.6.5. Hückel and PAtom Guesses

The extended Hückel guess proceeds by performing a minimal basis extended Hückel calculation and projecting the MOs from this calculation onto the actual basis set using one of the two methods described above. The minimal basis is the STO-3G basis set. The Hückel guess may not be very good because the STO-3G basis set is so poor. There is also accumulating evidence that the superposition of atomic densities produces a fairly good initial guess. The critique of the atomic density method is that the actual shape of the molecule is not taken into account and it is more difficult to reliably define singly occupied orbitals for ROHF calculations or a reasonable spin density for UHF calculations. Therefore ORCA chooses a different way in the PAtom guess (which is the default guess): the Hückel calculation is simply carried out for all electrons in a minimal basis of atomic SCF orbitals. These were determined once and for all and are stored inside the program. This means that the densities around the atoms are very close to the atomic ones, all orbitals on one center are exactly orthogonal, the initial electron distribution already reflects the molecular shape and there are well defined singly occupied orbitals for ROHF calculations.

7.6.6. Restarting SCF Calculations

To restart SCF calculations, it can be very helpful and time-saving to read in the orbital information of a previous calculation. To do this, specify:

! moread
%moinp "name.gbw"

This is done by default for single-point calculations if the .gbw file of the same name exists.

The program stores the current orbitals in every SCF cycle. Should a job crash, it can be restarted from the orbitals that were present at this time by just re-running the calculation to use the present .gbw file. In addition, an effort has been made to make .gbw files from different releases compatible with each other. If your input .gbw file is from an older release, use ! rescue moread noiter with % moinp "name.gbw" to produce an up-to-date .gbw. When the rescue keyword is invoked, only the orbital coefficients are read from the .gbw file, and everything else from the input file. Thus, make sure that the geometry and the basis set of the old .gbw file and the new input match.

Within the same ORCA version, neither the geometry nor the basis set stored in name.gbw need to match the present geometry or basis set. The program merely checks if the molecules found in the current calculation and name.gbw are consistent with each other and then performs one of the possible orbital projections. If the two basis sets are identical the program by default only reorthogonalizes and renormalizes the input orbitals. However, this can be overruled by explicitly specifying GuessMode in the % scf block as CMatrix or FMatrix.

If redundant components were removed from the basis (see Linear Dependence), then ! moread noiter must not be used to read SCF orbitals from a previous calculation, as it is going to lead to wrong results. In that case, ! rescue moread may be used (without noiter) if doing the entire calculation in one go is not possible.

For pre 2.5-03 versions of ORCA the input .gbw file from the earlier calculation must have a different name than the new calculation, because in the very beginning of a calculation, a new .gbw file is written. If the names are the same, the .gbw file from the earlier calculation is overwritten and all information is lost. Therefore, if you want to restart a calculation with an input file of the same name as the previous calculation, you have to rename the .gbw file first. This is good practice anyway to avoid surprises, particularly for expensive calculations.

There is an additional aspect of restarting SCF calculations — if you have chosen SCFMode = Conventional the program stores a large number of integrals that might have been time consuming to calculate on disk. Normally the program deletes these integrals at the end of the calculation. However, if you want to do a closely related calculation that requires the same integrals (i.e. the geometry, the basis set and the threshold Thresh are the same) it is faster to use the integrals generated previously. This is done by using KeepInts = true in the % scf block of the first calculation and then use ReadInts = true in the % scf block of the second calculation. If the second calculation has a different name than the first calculation you have to use IntName = "FirstName" to tell the program the name of the integral files. Note that the file containing the integrals does not have an extension — it is simply the name of the previous input file with .inp stripped off.

%scf
  KeepInts true         # Keep integrals on disk
  ReadInts true         # Read integrals from disk
  IntName  "MyInts"     # Name of the integral files without extension
end

Note that, in general, restarting calculations with old integral files requires the awareness and responsibility of the user. If properly used, this feature can save considerable amounts of time.

7.6.7. Changing the Order of Initial Guess MOs and Breaking the Initial Guess Symmetry

Occasionally you will want to change the order of initial guess MOs — be it because the initial guess yielded an erroneous occupation pattern or because you want to converge to a different electronic state using the orbitals of a previous calculation. Reordering of MOs and other tasks (like breaking the symmetry of the electronic wavefunction) are conveniently handled with the Rotate feature in ORCA. Rotate is a subblock of the SCF block that allows you to linearly transform pairs of MOs.

%scf
  Rotate
   { MO1, MO2, Angle }
   { MO1, MO2, Angle, Operator1, Operator2 }
   { MO1, MO2} # Shortcut to swap MO1 and MO2. Angle=90 degrees.
  end
end

Here, MO1 and MO2 are the indices of the two MOs of interest. Recall that ORCA starts counting MOs with index 0, i.e. the MO with index 1 is the second MO. Angle is the rotation angle in degrees. A rotation angle of 90\(^{\circ}\) corresponds to flipping two MOs, an angle of 45\(^{\circ}\) leads to a 50:50 mixture of two MOs, and a 180\(^{\circ}\) rotation leads to a change of phase. Operator1 and Operator2 are the orbitals sets for the rotation. For UHF calculations spin-up orbitals belong to operator 0 and spin-down orbitals to operator 1. RHF and ROHF calculations only have a single orbital set.

Among others, the Rotate feature can be used to produce broken-symmetry solutions, for example in transition metal dimers. In order to do that, first perform a high-spin calculation, then find the pairs of MOs that are symmetric and antisymmetric combinations of each other. Take these MOs as the initial guess and use rotations of 45\(^{\circ}\) for each pair to localize the starting MOs. If you are lucky and the broken symmetry solution exists, you have a good chance of finding it this way. See section Broken-Symmetry Wavefunctions and Exchange Couplings for more details on the broken-symmetry approach.

7.6.8. Automatically Breaking of the Initial Guess Symmetry

Another simple way to break the initial guess symmetry for more trivial cases, is to simply use the keyword !GUESSMIX. This will automatically mix 50% of the alpha LUMO into the alpha HOMO. That is equivalent to a 45 degree rotation as done above and only for these orbitals. It might be useful when one wants an open-shell singlet and needs the alpha and beta orbitals to start differently.

The specific angle of rotation can be controlled with:

%scf
  guessmix 75 # angle in degrees, default is 45
end

7.6.9. Calculating only the energy of an input density

In case you want to give the result of a previous SCF and recalculate the energy, or maybe some other property (like the MP2 energy) using that density without changing the orbitals, you can use the flags !CALCGUESSENERGY NOITER.

The SCF program will read the orbitals, compute the density and one Fock matrix necessary to get the energy and move on with no orbital updates. This can be used to combine DFT orbitals with DLPNO-CCSD(T) for example. Be careful with the results you get from this because these orbitals are not variational anymore!