~ubuntu-branches/ubuntu/utopic/nwchem/utopic

« back to all changes in this revision

Viewing changes to src/ddscf/scf.F

  • Committer: Package Import Robot
  • Author(s): Michael Banck, Daniel Leidert, Andreas Tille, Michael Banck
  • Date: 2013-07-04 12:14:55 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130704121455-5tvsx2qabor3nrui
Tags: 6.3-1
* New upstream release.
* Fixes anisotropic properties (Closes: #696361).
* New features include:
  + Multi-reference coupled cluster (MRCC) approaches
  + Hybrid DFT calculations with short-range HF 
  + New density-functionals including Minnesota (M08, M11) and HSE hybrid
    functionals
  + X-ray absorption spectroscopy (XAS) with TDDFT
  + Analytical gradients for the COSMO solvation model
  + Transition densities from TDDFT 
  + DFT+U and Electron-Transfer (ET) methods for plane wave calculations
  + Exploitation of space group symmetry in plane wave geometry optimizations
  + Local density of states (LDOS) collective variable added to Metadynamics
  + Various new XC functionals added for plane wave calculations, including
    hybrid and range-corrected ones
  + Electric field gradients with relativistic corrections 
  + Nudged Elastic Band optimization method
  + Updated basis sets and ECPs 

[ Daniel Leidert ]
* debian/watch: Fixed.

[ Andreas Tille ]
* debian/upstream: References

[ Michael Banck ]
* debian/upstream (Name): New field.
* debian/patches/02_makefile_flags.patch: Refreshed.
* debian/patches/06_statfs_kfreebsd.patch: Likewise.
* debian/patches/07_ga_target_force_linux.patch: Likewise.
* debian/patches/05_avoid_inline_assembler.patch: Removed, no longer needed.
* debian/patches/09_backported_6.1.1_fixes.patch: Likewise.
* debian/control (Build-Depends): Added gfortran-4.7 and gcc-4.7.
* debian/patches/10_force_gcc-4.7.patch: New patch, explicitly sets
  gfortran-4.7 and gcc-4.7, fixes test suite hang with gcc-4.8 (Closes:
  #701328, #713262).
* debian/testsuite: Added tests for COSMO analytical gradients and MRCC.
* debian/rules (MRCC_METHODS): New variable, required to enable MRCC methods.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
      logical function scf(rtdb)
2
 
C$Id: scf.F 19707 2010-10-29 17:59:36Z d3y133 $
 
2
C$Id: scf.F 22292 2012-04-10 00:42:16Z niri $
3
3
      implicit none
4
4
#include "errquit.fh"
5
5
#include "mafdecls.fh"
13
13
#include "util.fh"
14
14
#include "cscf.fh"
15
15
#include "case.fh"
 
16
#include "frozemb.fh"
16
17
c
17
18
c     ROHF module.
18
19
c
37
38
      external cphf_poliz
38
39
      integer necp,itype
39
40
c
 
41
      integer ga_create_atom_blocked
 
42
      external ga_create_atom_blocked
 
43
c
40
44
c     Make sure database is parallel, 
41
45
c     and initialize performance statistics
42
46
c
220
224
c
221
225
      call int_init(rtdb,1, basis)
222
226
c
223
 
      if (util_print('kinetic',print_never)) then
224
 
          write(6,*) "===================================="
225
 
          write(6,*) "Begin kinetic 1-e integrals"
226
 
          write(6,*) "===================================="
227
 
          call print_1eints(basis, basis, 'kinetic', oskel)
228
 
          write(6,*) "===================================="
229
 
          write(6,*) "End kinetic 1-e integrals"
230
 
          write(6,*) "===================================="
231
 
      endif
232
 
      if (util_print('potential',print_never)) then
233
 
          write(6,*) "===================================="
234
 
          write(6,*) "Begin potential 1-e integrals"
235
 
          write(6,*) "===================================="
236
 
          call print_1eints(basis, basis, 'potential', oskel)
237
 
          write(6,*) "===================================="
238
 
          write(6,*) "End potential 1-e integrals"
239
 
          write(6,*) "===================================="
240
 
      endif
241
 
      if (util_print('overlap',print_never)) then
242
 
          write(6,*) "===================================="
243
 
          write(6,*) "Begin overlap 1-e integrals"
244
 
          write(6,*) "===================================="
245
 
          call print_1eints(basis, basis, 'overlap', oskel)
246
 
          write(6,*) "===================================="
247
 
          write(6,*) "End overlap 1-e integrals"
248
 
          write(6,*) "===================================="
249
 
      endif
250
 
      if (util_print('ao2eints',print_never)) then
251
 
          write(6,*) "===================================="
252
 
          write(6,*) "Begin all 2-e integrals"
253
 
          write(6,*) "===================================="
254
 
          call print_aoints(basis)
255
 
          write(6,*) "===================================="
256
 
          write(6,*) "End all 2-e integrals"
257
 
          write(6,*) "===================================="
258
 
      endif
259
 
c
260
 
      if (util_print('allaoints',print_never)) ! Debug
261
 
     $     call print_aoints(basis)
262
 
c
 
227
      call print_integrals(basis,oskel) ! print integrals, if requested
 
228
263
229
      call schwarz_init(geom, basis)
264
230
      if ((nbf*nbf*3*8)/ga_nnodes() .lt. 2000000) ! Cache 1e if < 2MB/node
265
231
     $     call int_1e_cache_ga(basis, oskel)
287
253
      if (ga_nodeid().eq.0 .and. oprint) write(6,712) util_wallsec()
288
254
 712  format(/' Starting SCF solution at ',f9.1,'s'/)
289
255
c
 
256
c     frozen embedding 
 
257
      frozemb = .false.
 
258
      if (.not.rtdb_get(rtdb, 'scf:frozemb', mt_log, 1, frozemb))
 
259
     &   frozemb=.false.
 
260
      if (frozemb) then
 
261
       g_frozemb = ga_create_atom_blocked(geom, basis, 'rohf: frozemb')
 
262
       call ga_zero(g_frozemb)
 
263
       call scf_frozemb(rtdb, geom, basis, nbf, g_frozemb)
 
264
      end if   ! frozemb
 
265
c
290
266
      if (scftype .eq. 'UHF') then
291
267
         converged = uhf(rtdb, energy)
292
268
      else
362
338
      call int_1e_uncache_ga()
363
339
      call schwarz_tidy()
364
340
      call int_terminate
 
341
 
342
c     clean up frozen embedding
 
343
      if (frozemb) then
 
344
        if (.not. ga_destroy(g_frozemb)) call errquit
 
345
     $     ('rohf_fock: ga_destroy failed',0, GA_ERR)
 
346
      end if
365
347
c
366
348
c     SCF is done ... tidy up memory etc.
367
349
c