NWChem - computational chemistry on parallel computers NWChem Home | Security & Privacy | PNNL

Next FAQ Catagory | Return to Main FAQ


NWChem FAQ

Initial Guess and Convergence Problems


I am having problems getting my initial guess in the correct order. How I do use the swap directive?

Remember that you can (and should!) look at your initial orbitals by putting the line

 print "initial vectors"
 

into the SCF block of your input deck. If the order isn't correct, you can use the "swap" directive to change the order of the orbitals.

For example:

 vectors atomic swap 173 175 174 176 output end.movecs
 
will cause the orbitals 173 - 175 to be swapped to 175, 176, 173 and 174. Note that the swaps are pairwise: first 173 and 175 are swapped, then the the current orbitals 174 and 176 are swapped. More information on initial orbitals can be obtained in Section 10.5 of the User's Manual.


I am having problems getting an open shell system to converge. What strategies will help me?

Open shell systems, especially those containing transition metals or heavy elements with many unoccupied d and f orbitals, can be especially hard to converge. Running a spin unrestricted calculation can exacerbate the problem since all other possible spin states can mix into the wavefunction. It may also be true that your particular calculation has multireference character and, by using SCF or DFT, you are forcing it into a single determinate wavefunction.

That being said, to converge your system, you need to guide the code to the particular state that you want. This may be a very difficult task and different starting guesses can converge to different solutions, especially if there is symmetry breaking. Here are four different suggestions to help you with your problem:

  1. Use Auf bau construction. Start by removing most or all of the open-shell electrons and converge the resulting closed-shell wavefunction. Incrementally add the missing electrons, maintaining a closed-shell form for the wavefunction until the last calculation. Once you have an ROHF wavefunction converged, then do the UHF calculation if desired (note that UHF is the only option with the DFT code). When adding electrons, pay attention to how well separated the virtual orbitals are in energy.
  2. Converge a very high multiplicity state and then incrementally pair electrons until you get the state you want.
  3. Converge in a minimal basis set where there is very little variational freedom and it is not as expensive to run many iterations. Then project to a larger basis set (you can use this example as a model). It is also useful to use spherical functions since this tends to decrease the amount of linear dependence. This method isn't as reliable as the previous methods.
  4. Use the fragment guess. This is especially useful if you know the configuration of the atoms. Prepare the atoms in the appropriate state and assemble the molecule from the fragments. If you want an antiferromagnetic state, this is the only way to do it.


I am having problems converging an ionic, extended system. What can I do?

This problem usually shows up when a minimum basis set is used and where a lot of charge has to be moved a long way but the minimal basis does not providea lot of coupling between the orbitals. The initial guess may be modified by

  1. putting the charge on the atoms where it is believed to be,
  2. look at the orbitals and swap the orbitals to obtain the correct occupation, or
  3. ue the fragment guess.
Better yet, use a better basis set which will allow for better coupling of the orbitals!


I am having convergence problems with the final iterations of a calculation using a large basis set. What can I do?

This problem generally occurs when high precision is necessary because of near linear dependencies in the basis set and there is insufficient precision in the computed gradient or hessian vector product to converge to the requested threshold. The first item to check is to make sure that the convergence threshold is realistic (not below 1e-7 or perhaps 1e-8). If doing an MP2 gradient with the TIGHT directive, make sure the SCF input block is after the MP2 block and then in the SCF block put

 SCF
   thresh 1e-7
   tol2e 1e-10
 END
 
This may still not fix the problem if the calculation is using the semi-direct algorithm. In this case:
  1. Run the calculation on enough nodes to run fully disk resident,
  2. Run as before, but switch off the density screening with

    set fock:densityscreen f

  3. Run the calculation fully direct.

Do you have an example of a complex fragment guess?

The following is an advanced fragment guess (NOT for beginners!). It consists of two Fe3+ ions in a simulated lattice and the objective is to compute the energy difference between the ferro and anti-ferromagnetic states. This is accomplished by first using the atomic guess to do an ROHF calculation on an Fe3+ ion with d5 occupation. The next calculation is on the high spin system and it merely has to start from the two ions ... the open shell orbitals will automatically be contiguous and so nothing else is needed.

The final calculation is a UHF for which the 5 open shell electrons on one atom must be spin up and on the other spin down. The initial guess orbitals start off from the previous high spin solution. However, the d orbitals on the second atom must have the beta orbitals in the right place, hence the swap directive. The net result is a completely localized guess with the desired spin coupling.

 start fe2

 geometry noautoz autosym
   Fe  1.45 0.071  0.84
   Fe -1.45 0.071 -0.84

   Bq   3.02  0.84  0.03 charge -1.
   Bq  -0.00  1.04  0.03 charge -1.
   Bq   1.33 -1.67  0.03 charge -1.
   Bq   2.78 -0.69  2.33 charge -1.
   Bq   1.45  1.61  2.33 charge -1.
   Bq   0.11 -0.69  2.33 charge -1.
   Bq  -1.33 -1.67  0.03 charge -1.
   Bq  -3.02  0.84  0.03 charge -1.
   Bq  -0.12 -0.69 -2.25 charge -1.
   Bq  -1.45  1.61 -2.25 charge -1.
   Bq  -2.78 -0.69 -2.25 charge -1.
 end

 geometry Fe
   Fe  0 0 0
 symmetry c2v
 end

 basis
   Fe library sto-3g
 end

 set atomscf:tags_z Fe
 set atomscf:z      3.

 title "Initial calculation on Fe3+"

 set geometry Fe
 charge 3
 scf; rohf ; nopen 5; vectors atomic output fe.mos; end
 task scf

 title "Ferro-magnetic state"

 unset geometry
 charge -5

 scf; print "initial vector analysis"; rohf; nopen 10
 vectors fragment fe.mos fe.mos output feferr.mos;
 maxiter 0
 print mulliken
 end
 task scf ignore

 title "Anti-ferro-magnetic state"
 scf; uhf; nopen 0;
   vectors input feferr.mos output feantif.mos\
      swap beta 19 24  20 25  21 26  22 27  23 28
 maxiter 99
 end
 task scf
 
For DFT calculation you can either the same method just shown or a different approach that is illustrated in this example.


NWChem | Capabilities | Platforms | Download | User's Manual | Programmer's Manual | Release Notes | FAQ

Known Bugs | Support | Tutorial | Contributors | Benchmarks | Search | Mol Sci. Soft. Group | Citation

Contact: NWChem Support
Updated: February 22, 2005