ecce.out only contains guess energy levels


Gets Around
When nwchem is asked to create an ecce.out file only the energies (and presumably coefficients etc.) from the initial guess are printed -- in an optimisation run the optimised energies are not included.

[This causes issues with ECCE since it parses ecce.out.]

For CO this means that the HOMOs are the 2px/2py pi orbitals, whereas it should be the sigma 2pz.

A quick way to reproduce:
scratch_dir /scratch
Title "carbonmonoxide_RHF"

Start  carbonmonoxide_RHF

echo

charge 0

geometry autosym units angstrom
 C     0.00000     0.00000     0.00000
 O     1.50000     0.00000     0.00000
end

ecce_print ecce.out

basis "ao basis" spherical print
  O library "def2-svp"
  C library "def2-svp"
END

scf
  RHF 
  direct
  nopen 0
  maxiter 99
end

driver
  default
  maxiter 99
end

task scf optimize

Output in ecce.out
task_optimize driver task_gradient scf%begin%molecular orbital energies RHF%28%double
-2.06501795000525e+01 -1.14942752224811e+01 -1.29692189145989e+00 -7.81918798757940e-01 
-5.46693420364055e-01 -5.16678992793109e-01 -5.16678992793108e-01 2.44621770587836e-02 
2.44621770587840e-02 2.83251895862959e-01 4.69012000161742e-01 6.36984670147421e-01 
6.54044962424542e-01 6.54044962424543e-01 1.15860210721730e+00 1.23950122246493e+00 
1.23950122246493e+00 1.57281465875697e+00 1.86870012931265e+00 1.86870012931266e+00 
1.87282493544035e+00 1.87282493544035e+00 2.15021054469377e+00 2.96834635870527e+00 
2.96834635870527e+00 3.14346984274016e+00 3.14346984274017e+00 3.57527599759816e+00


Whereas if I take the optimised structure:
scratch_dir /scratch
Title "carbonmonoxide_RHF-SE"
Start  carbonmonoxide_RHF-SE

echo

charge 0

geometry autosym units angstrom
 C     0.00000     0.00000     -0.660530
 O     0.00000     0.00000     0.446244
end

ecce_print ecce.out

basis "ao basis" spherical print
  C library "def2-svp"
  O library "def2-svp"
END

scf
  RHF
  nopen 0
end

task scf energy

we get the right configuration
task_energy scf%begin%molecular orbital energies RHF%28%double
-2.06664623968204e+01 -1.13601389323355e+01 -1.52412630833569e+00 -8.00224156802702e-01 
-6.52629173542975e-01 -6.52629173542975e-01 -5.48090022993904e-01 1.56464590937360e-01 
1.56464590937361e-01 3.54479852946516e-01 5.67122752268803e-01 6.70819331283117e-01 
6.70819331283120e-01 1.00024989522097e+00 1.15865008954168e+00 1.23727030117065e+00 
1.23727030117065e+00 1.49842038454684e+00 1.88168582049206e+00 1.88168582049206e+00 
1.98311182405323e+00 1.98311182405323e+00 2.82374726305809e+00 2.96727426887592e+00 
2.96727426887592e+00 3.58731907896734e+00 3.58731907896735e+00 4.03518843168410e+00 

Gets Around
By design?
Looking at the nwchem code in src/driver/opt_drv.F


First printing is turned off after the first point:
  84 c
  85 c     Disable printing to ecce of movecs after first point
  86 c
  87          call movecs_ecce_print_off()

but it looks like it should print on convergence:
 246       driver=converged
 247       if (converged) then
 248          call ecce_print_module_exit('driver', 'ok')
 249       else
 250          call ecce_print_module_exit('driver', 'failed')
 251       endif
 252 c
 253       call movecs_ecce_print_on() ! Restore MO printing
 254       call util_print_pop


Forum >> NWChem's corner >> NWChem functionality