From e74b2e5920a2005d46e6f751bdf476f50c0baef1 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 11 Aug 2022 11:15:06 -0700 Subject: [PATCH 01/46] Start BSE branch --- src/bsemol/GNUmakefile | 32 ++++++++ src/bsemol/bse.fh | 35 +++++++++ src/bsemol/bse_input.F | 76 ++++++++++++++++++ src/bsemol/bsemol.F | 73 ++++++++++++++++++ src/config/make_nwchem_config | 17 +++-- src/task/GNUmakefile | 2 +- src/task/task.F | 6 ++ src/task/task_bsemol.F | 140 ++++++++++++++++++++++++++++++++++ 8 files changed, 373 insertions(+), 8 deletions(-) create mode 100644 src/bsemol/GNUmakefile create mode 100644 src/bsemol/bse.fh create mode 100644 src/bsemol/bse_input.F create mode 100644 src/bsemol/bsemol.F create mode 100644 src/task/task_bsemol.F diff --git a/src/bsemol/GNUmakefile b/src/bsemol/GNUmakefile new file mode 100644 index 0000000000..116ecb3dd4 --- /dev/null +++ b/src/bsemol/GNUmakefile @@ -0,0 +1,32 @@ +OBJ = bsemol.o bse_input.o + +USES_BLAS = +OBJ_OPTIMIZE = + +LIBRARY = libbsemol.a + +HEADERS = ../nwdft/include/cdft.fh ../nwdft/grid/cgridfile.fh + +LIB_DEFINES = +LIB_INCLUDES = -I./ + +include ../config/makefile.h + + +ifeq ($(_USE_SCALAPACK),Y) +_USE_ELPA = $(shell ${GA_PATH}/bin/ga-config --use_elpa| awk ' /1/ {print "Y"}') + +ifeq ($(_USE_ELPA),Y) + LIB_DEFINES += -DUSE_ELPA +endif +#assuming we have GAPZHEEVD +GOTGAPZHEEVD= Y +ifeq ($(GOTGAPZHEEVD),Y) + LIB_DEFINES += -DUSE_GAPZHEEVD +endif +_PDSYEVR = $(shell [ -e ${NWCHEM_TOP}/src/tools/install/lib/libga.a ] && nm ${NWCHEM_TOP}/src/tools/install/lib/libga.a|egrep T |egrep ga_pdsyevr |awk '/ga_pdsyevr/ {print "Y"}') +ifeq ($(_PDSYEVR),Y) + LIB_DEFINES += -DUSE_PDSYEVR +endif +endif +include ../config/makelib.h diff --git a/src/bsemol/bse.fh b/src/bsemol/bse.fh new file mode 100644 index 0000000000..d89e5f3ba6 --- /dev/null +++ b/src/bsemol/bse.fh @@ -0,0 +1,35 @@ + + double precision, parameter :: ha2ev = 27.211386245988d0 + + type :: bse_params_t + sequence + integer :: rtdb + integer :: me, nprocs, iMaxThreads + integer :: ipol + logical :: main, odft +c + integer :: natoms + integer :: nmo + integer :: nocc(2),nvir(2),npoles(2) + integer :: noqp(2),nvqp(2),nstates(2),mynpoles(2) + integer :: oolo(2),oohi(2) + integer :: ovlo(2),ovhi(2) + integer :: vvlo(2),vvhi(2) + integer :: llmo(2),nqp(2) + integer :: ngl + double precision :: tol2e, eta +c + integer :: l_evals, k_evals + integer :: l_occ, k_occ +c + integer :: fd +c + integer :: g_movecs(2), g_moeris, g_sols + integer :: g_erioo(2), g_eriov(2), g_erivv(2), g_erim + logical :: noio +c + logical :: ncap, davidson, lanczos + double precision :: thresh, fdstep, vxddp(2), vxddm(2) + + end type bse_params_t + diff --git a/src/bsemol/bse_input.F b/src/bsemol/bse_input.F new file mode 100644 index 0000000000..34429f731a --- /dev/null +++ b/src/bsemol/bse_input.F @@ -0,0 +1,76 @@ + subroutine bse_input(rtdb) +c +c Input parser for molecular BSE module +c +c Daniel Mejia-Rodriguez +c November 2022 +c + implicit none +c +#include "errquit.fh" +#include "util.fh" +#include "inp.fh" +#include "rtdb.fh" +#include "mafdecls.fh" +#include "stdio.fh" +c + integer rtdb + character*255 test + character(*), parameter :: pname = "bse_input: " +c + integer, parameter :: num_dirs = 2 + character*11 dirs(num_dirs) + data dirs / 'method', 'end' / +c + integer ind, qpiter,eviter,noqp(2),nvqp(2), ngl, first + double precision threshold, eta + double precision, parameter :: ha2ev = 27.211386245988d0 +c +c Set default values and put them in RTDB +c + call bse_defaults(rtdb) +c +c Parse the input file +c + 10 if (.not. inp_read()) then + call errquit(pname//'failed to read input',0,INPUT_ERR) + endif +c + if (.not. inp_a(test)) then + call errquit(pname//'failed to read keyword',0,INPUT_ERR) + endif +c + if (.not.inp_match(num_dirs, .false., test, dirs, ind)) then + call errquit(pname//'unknown directive', 0, INPUT_ERR) + end if +c + goto (100, 9999) ind + + call errquit(pname//'unknown directive',ind, INPUT_ERR) +c +c ----------------------------------------------------------------- +c +c method +c + 100 if (.not. inp_a(test)) + & call errquit(pname//'could not read method', 100, INPUT_ERR) + + if (inp_compare(.false.,'analytic',test)) then + if (.not.rtdb_put(rtdb, 'bse:analytic', mt_log, 1, .true.)) + & call errquit(pname//'rtdb_put failed', 101, RTDB_ERR) + elseif (inp_compare(.false.,'bse:davidson',test)) then + if (.not.rtdb_put(rtdb, 'bse:davidson', mt_log, 1, .true.)) + & call errquit(pname//'rtdb_put failed', 102, RTDB_ERR) + elseif (inp_compare(.false.,'bse:lanczos',test)) then + if (.not.rtdb_put(rtdb, 'bse:davidson', mt_log, 1, .true.)) + & call errquit(pname//'rtdb_put failed', 103, RTDB_ERR) + else + call errquit(pname//'unknown BSE method',104,INPUT_ERR) + endif + goto 10 +c +c normal termination +c + 9999 return +c + end subroutine bse_input diff --git a/src/bsemol/bsemol.F b/src/bsemol/bsemol.F new file mode 100644 index 0000000000..2ed16f1ff7 --- /dev/null +++ b/src/bsemol/bsemol.F @@ -0,0 +1,73 @@ + logical function bsemol(rtdb) + implicit none +#include "rtdb.fh" + integer rtdb +c + logical bse_doit + external bse doit +c + logical status +c + status = rtdb_cput(rtdb,'dft:theory', 1, 'dft') + if (status) status = bse_doit(rtdb) + bsemol = status + call grid_cleanup(.false.) +c + end function +c +c ----------------------------------------------------------------- +c + logical function bse_doit(rtdb) + implicit none +#include "errquit.fh" +#include "global.fh" +#include "rtdb.fh" +#include "stdio.fh" +#include "util.fh" +#include "bse.fh" + + integer, intent(in) :: rtdb + character(*), parameter :: pname = "bse_doit: " + + type(bse_params_t) :: params + character*80 theory + integer me +c +c ----------------------------------------------------------------- +c +c Initialize +c + bse_doit = .false. +c +c Determine the theory we are using +c + if (.not. rtdb_cget(rtdb, "dft:theory", 1, theory)) + $ call errquit(pname//"theory not specified",0,RTDB_ERR) +c +c Initialize GW calculation +c + params%rtdb = rtdb + params%me = ga_nodeid() +c + call bse_init(params) +c + if (theory.eq."dft") then + + if (params%davidson) then + call bse_davidson(params) + else + call bse_analytic(params) + endif +c + elseif (theory.eq.'sodft') then + call errquit(pname//"spin-orbit not implemented",0,0) + else + call errquit(pname//"invalid theory: "//trim(theory),0,0) + endif +c + call bse_finalize(params) + bse_doit = .true. +c +c ----------------------------------------------------------------- +c + end function diff --git a/src/config/make_nwchem_config b/src/config/make_nwchem_config index 81ac74ce91..03427ae572 100644 --- a/src/config/make_nwchem_config +++ b/src/config/make_nwchem_config @@ -21,7 +21,7 @@ KNOWN_MODULE_SUBDIRS = NWints atomscf ddscf develop gradients moints nwdft \ property solvation nwpw fft rimp2_grad python argos analyz diana nwmd cafe space \ drdy vscf uccsdt qmmm rism qmd etrans tce geninterface bq mm cons\ perfm dntmc smd nbo dangchang leps ccca lucia dimqm rdmft fcidump\ - gwmol xtb nwc_columbus + gwmol xtb nwc_columbus bsemol # These are the libraries for the high-level modules. They should be # specified in an order that will link correctly, but that shouldn't @@ -36,7 +36,7 @@ KNOWN_MODULE_LIBS = -ltest -lccsd -llucia -lmcscf -lselci -lmp2 -lmoints \ -lcafe -lspace -lanalyze -ldiana -lqhop \ -lpfft -ldplot -lnwpython -ldrdy -lvscf -lqmmm -lrism -lqmd -letrans\ -lpspw -ltce -lgeninterface -lbq -lmm -lcons -lperfm -lnbo -ldntmc -lccca\ - -ldimqm -lrdmft -lfcidump -lgwmol -lnwxtb + -ldimqm -lrdmft -lfcidump -lgwmol -lnwxtb -lbsemol # This include file handles configuration of the NW_MODULE_SUBDIRS and # NW_MODULE_LIBS macros for what we actually want to build. It @@ -77,22 +77,22 @@ EXP_alldev = develop $(EXP_all) EXP_pnnldev = develop $(EXP_pnnl) EXP_qm = NWints atomscf ddscf gradients moints nwdft rimp2 hessian bq cons \ optim stepper driver ccsd vib mcscf property solvation dplot mp2_grad esp etrans tce vscf dimqm \ - gwmol + gwmol bsemol EXP_smallqm = NWints atomscf ddscf gradients moints nwdft rimp2 hessian bq cons \ optim stepper driver vib qmd mcscf property solvation dplot \ - mp2_grad esp etrans vscf nwmd dimqm gwmol + mp2_grad esp etrans vscf nwmd dimqm gwmol bsemol EXP_smallqmmm = NWints atomscf ddscf gradients moints nwdft rimp2 hessian bq cons \ optim stepper driver vib qmd mcscf property solvation dplot \ - mp2_grad esp etrans vscf nwmd qmmm prepar analyz dimqm gwmol + mp2_grad esp etrans vscf nwmd qmmm prepar analyz dimqm gwmol bsemol EXP_notce = NWints atomscf ddscf gradients moints nwdft rimp2 hessian bq cons \ optim stepper driver ccsd vib mcscf property solvation dplot mp2_grad esp etrans vscf dimqm \ - gwmol + gwmol bsemol EXP_tinyqmpw = nwdft property solvation driver ccsd mp2_grad hessian vib nwpw EXP_ver2 = prepar gradients mp2_grad stepper vib mcscf \ optim driver analyz diana #plane_wave ... broken? RJH EXP_qmandpw = nwpw NWints atomscf ddscf gradients moints nwdft rimp2 hessian bq cons \ - optim stepper driver ccsd vib mcscf property solvation dplot mp2_grad esp etrans vscf dimqm gwmol + optim stepper driver ccsd vib mcscf property solvation dplot mp2_grad esp etrans vscf dimqm gwmol bsemol EXP_tps = prepar nwmd analyz diana EXP_md = prepar nwmd analyz ddscf nwdft gradients esp EXP_classical = prepar nwmd analyz @@ -187,6 +187,7 @@ MODULES := $(patsubst nwpw,nwpw fft,$(MODULES) ) MODULES := $(patsubst ddscf,ddscf atomscf nwdft NWints gradients,$(MODULES) ) MODULES := $(patsubst gwmol, gwmol nwdft ddscf gradients hessian atomscf NWints,$(MODULES) ) +MODULES := $(patsubst bsemol, bsemol gwmol nwdft ddscf gradients hessian atomscf NWints,$(MODULES) ) MODULES := $(patsubst lucia, lucia mp2_grad ddscf nwdft property cphf gradients hessian atomscf NWints moints,$(MODULES) ) @@ -274,6 +275,7 @@ MOD_LIBS := $(patsubst dimqm,-ldimqm,$(MOD_LIBS) ) MOD_LIBS := $(patsubst rdmft,-lrdmft,$(MOD_LIBS) ) MOD_LIBS := $(patsubst fcidump,-lfcidump,$(MOD_LIBS) ) MOD_LIBS := $(patsubst gwmol,-lgwmol,$(MOD_LIBS) ) +MOD_LIBS := $(patsubst bsemol,-lbsemol,$(MOD_LIBS) ) MOD_LIBS := $(patsubst xtb,-lnwxtb,$(MOD_LIBS) ) MOD_LIBS := $(patsubst nwc_columbus,-lnwc_columbus,$(MOD_LIBS) ) MOD_LIBS := $(strip $(MOD_LIBS)) @@ -339,6 +341,7 @@ STUBROUTINES := $(patsubst solvation, solvation,$(STUBROUTINES)) STUBROUTINES := $(patsubst dimqm,dimqm_addop dimqm_addop_uhf_damp dimqm_addop_uhf dimqm_tidy dimqm_input dimpar_input dimqm_main fock_dim dimqm_prep dim_grid_quadv0 dimqm_lclfld dimqm_polarizability dimqm_broadcast dimqm_Dens2Dipoles dimqm_rohf_calcDIM dimqm_rohf_wrap dimqm_used dimqm_setgo dimqm_getgo dimqm_getenergy dimqm_setlfirst dimqm_getlrsp dimqm_lrsp dimqm_getlclfld dimqm_getgdipeli dimqm_energy dimqm_init,$(STUBROUTINES) ) #STUBROUTINES := $(patsubst cons, cons_end cons_input cons_add_egrad cons_add_energy cons_init cons_print_summary cons_active,$(STUBROUTINES) ) STUBROUTINES := $(patsubst gwmol, gw_input gwmol, $(STUBROUTINES) ) +STUBROUTINES := $(patsubst bsemol, bse_input bsemol, $(STUBROUTINES) ) STUBROUTINES := $(patsubst xtb, xtb_input xtb_energy xtb_energy_gradient, $(STUBROUTINES) ) STUBROUTINES := $(patsubst nwc_columbus, sifcfg sifwh sodft_aoints, $(STUBROUTINES) ) STUBROUTINES := $(strip $(STUBROUTINES)) diff --git a/src/task/GNUmakefile b/src/task/GNUmakefile index 14fe35f204..0b1b8b9041 100644 --- a/src/task/GNUmakefile +++ b/src/task/GNUmakefile @@ -9,7 +9,7 @@ task_save_state.o task.o task_input.o task_shell_input.o task_num_grad.o \ task_vscf.o task_property.o task_dntmc.o task_bsse.o \ task_jefftce.o task_ncc.o task_rfcf.o \ - task_gwmol.o \ + task_gwmol.o task_bsemol.o task_aoints.o task_nadtrc.o USES_BLAS = task_num_grad.F task_bsse.F diff --git a/src/task/task.F b/src/task/task.F index 5f112136fc..b98b94fc26 100644 --- a/src/task/task.F +++ b/src/task/task.F @@ -163,6 +163,10 @@ c logical task_nadtrc external task_nadtrc + logical task_bsemol + external task_bsemol + + c logical embed_optimize c external embed_optimize c @@ -468,6 +472,8 @@ c status=embed_prepare(rtdb) status=task_dntmc(rtdb) else if (inp_compare(.false., 'gw', operation)) then status = task_gwmol(rtdb) + else if (inp_compare(.false., 'bse', operation)) then + status = task_bsemol(rtdb) c c **** check for theories that have specific operations **** c diff --git a/src/task/task_bsemol.F b/src/task/task_bsemol.F new file mode 100644 index 0000000000..3a3d1fb9c4 --- /dev/null +++ b/src/task/task_bsemol.F @@ -0,0 +1,140 @@ +c +c Task handler for Molecular BSE calcualtions +c Daniel Mejia-Rodriguez, 2022 +c + logical function task_bsemol(rtdb) +c + implicit none +c +#include "errquit.fh" +#include "rtdb.fh" +#include "mafdecls.fh" +#include "inp.fh" +#include "stdio.fh" +#include "util.fh" +#include "global.fh" +c + integer rtdb +c + character*32 theory + character*255 title + integer iproc, ipol + logical oprint, rodft, dftmp2, status, converged, ignore + double precision cputime, walltime +c + logical bsemol, task_energy + external bsemol, task_energy +c +c call ecce_print_module_entry('task gwmol') +c +c Initialization +c + task_bsemol = .false. +c +c Time at the start +c + cputime = util_cpusec() + walltime = util_wallsec() +c +c Invalidate status +c + if (.not. rtdb_put( rtdb, 'task:status', mt_log, 1, .false.)) + & call errquit('task_bse: failed to invalidate status',0,RTDB_ERR) +c +c Print BSE header +c + oprint = util_print('information', print_low) + if (oprint) then + if (.not. rtdb_cget(rtdb, 'title', 1, title)) title = ' ' + if (ga_nodeid().eq.0) then + write(LuOut,*) + call util_print_centered( + & LuOut, 'NWChem BSE Module', 40, .true.) + write(LuOut,*) + write(LuOut,*) + if (title.ne.' ') then + call util_print_centered(LuOut, title, 40, .false.) + write(LuOut,*) + write(LuOut,*) + endif + endif + endif +c +c Check if theory has been specified +c + if (.not. rtdb_cget(rtdb, 'task:theory', 1, theory)) + & call errquit('task_bsemol: theory not specified',0, RTDB_ERR) +c +c Restrict to DFT for now (SCF could also be used) +c + if (.not.inp_compare(.false.,'dft',theory)) + & call errquit('task_bsemol: BSE is only implemented for DFT', 0, + & INPUT_ERR) +c + if (rtdb_get(rtdb, 'dft:rodft', mt_log, 1, rodft)) + & call errquit('task_bsemol: BSE is not implemented for RODFT', 0, + & INPUT_ERR) +c + if (rtdb_get(rtdb, 'dft:dftmp2', mt_log, 1, dftmp2)) + & call errquit('task_bsemol: BSE is not implemented for double'// + & ' hybrid functionals',0,INPUT_ERR) +c + if (.not.rtdb_get(rtdb, 'dft:ipol', mt_int, 1, ipol)) + & call errquit('task_bsemol: failed to read ipol', 0, RTDB_ERR) + + if (.not. rtdb_get(rtdb, 'task:ignore', mt_log, 1, ignore)) + & ignore = .true. +c +c Make sure a DFT solution is available +c + status = rtdb_get(rtdb, 'dft:converged', mt_log, 1, converged) + if (.not.status) then + status = task_energy(rtdb) + if (.not.rtdb_get(rtdb, 'dft:converged', mt_log, 1, converged)) + & call errquit('task_gwmol: failed to read convergence info',0, + & RTDB_ERR) + endif + + status = converged + + + if (ga_nodeid().eq.0) then + write(luout,*) " " + write(luout,'(29X,A)') "***********************" + write(luout,'(29X,A)') "*** BSE ***" + write(luout,'(29X,A)') "***********************" + write(luout,*) " " + + if (.not.converged) then + write(LuOut,*) + write(LuOut,'(27X,A)') '!!! WARNING: !!!' + write(LuOut,'(27X,A)') '!!! DFT DID NOT CONVERGE !!!' + write(LuOut,*) + endif + + call util_flush(luout) + endif + + if ((.not.status) .and. (.not.ignore)) + & call errquit('task_bsemol: Energy failure',0,CALC_ERR) +c +c Actually compute GW +c + status = bsemol(rtdb) +c + cputime = util_cpusec() - cputime + walltime = util_wallsec() - walltime +c + if (.not. rtdb_put(rtdb, 'task:status', mt_log, 1, .true.)) + & call errquit('task_bse: failed to set status',0, + & RTDB_ERR) + if (.not. rtdb_put(rtdb, 'task:cputime', mt_dbl, 1, cputime)) + & call errquit('task_bse: failed storing cputime',0, + & RTDB_ERR) + if (.not. rtdb_put(rtdb, 'task:walltime', mt_dbl, 1, walltime)) + & call errquit('task_bse: failed storing walltime',0, + & RTDB_ERR) +c + task_bsemol = status +c + end function From 30f0c73eed4d7181beadcf1391d3f1a092d338e4 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 11 Aug 2022 11:34:15 -0700 Subject: [PATCH 02/46] Complete first skeleton --- src/bsemol/GNUmakefile | 3 ++- src/bsemol/bse_analytic.F | 9 +++++++++ src/bsemol/bse_davidson.F | 9 +++++++++ src/bsemol/bse_defaults.F | 6 ++++++ src/bsemol/bse_init.F | 9 +++++++++ src/bsemol/bse_lanczos.F | 9 +++++++++ src/bsemol/bsemol.F | 2 ++ 7 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/bsemol/bse_analytic.F create mode 100644 src/bsemol/bse_davidson.F create mode 100644 src/bsemol/bse_defaults.F create mode 100644 src/bsemol/bse_init.F create mode 100644 src/bsemol/bse_lanczos.F diff --git a/src/bsemol/GNUmakefile b/src/bsemol/GNUmakefile index 116ecb3dd4..2fff435196 100644 --- a/src/bsemol/GNUmakefile +++ b/src/bsemol/GNUmakefile @@ -1,4 +1,5 @@ -OBJ = bsemol.o bse_input.o +OBJ = bsemol.o bse_input.o bse_init.o bse_analytic.o \ + bse_davidson.o bse_lanczos.o bse_defaults.o USES_BLAS = OBJ_OPTIMIZE = diff --git a/src/bsemol/bse_analytic.F b/src/bsemol/bse_analytic.F new file mode 100644 index 0000000000..764ceae421 --- /dev/null +++ b/src/bsemol/bse_analytic.F @@ -0,0 +1,9 @@ + subroutine bse_analytic(pars) + + implicit none + +#include "bse.fh" + + type(bse_params_t) :: pars + + end subroutine bse_analytic diff --git a/src/bsemol/bse_davidson.F b/src/bsemol/bse_davidson.F new file mode 100644 index 0000000000..ba4aa6b89a --- /dev/null +++ b/src/bsemol/bse_davidson.F @@ -0,0 +1,9 @@ + subroutine bse_davidson(pars) + + implicit none + +#include "bse.fh" + + type(bse_params_t) :: pars + + end subroutine bse_davidson diff --git a/src/bsemol/bse_defaults.F b/src/bsemol/bse_defaults.F new file mode 100644 index 0000000000..06998ce702 --- /dev/null +++ b/src/bsemol/bse_defaults.F @@ -0,0 +1,6 @@ + subroutine bse_defaults(rtdb) + implicit none + + integer rtdb + + end subroutine bse_defaults diff --git a/src/bsemol/bse_init.F b/src/bsemol/bse_init.F new file mode 100644 index 0000000000..d938c9ef94 --- /dev/null +++ b/src/bsemol/bse_init.F @@ -0,0 +1,9 @@ + subroutine bse_init(pars) + + implicit none + +#include "bse.fh" + + type(bse_params_t) :: pars + + end subroutine bse_init diff --git a/src/bsemol/bse_lanczos.F b/src/bsemol/bse_lanczos.F new file mode 100644 index 0000000000..1ed128b21c --- /dev/null +++ b/src/bsemol/bse_lanczos.F @@ -0,0 +1,9 @@ + subroutine bse_lanczos(pars) + + implicit none + +#include "bse.fh" + + type(bse_params_t) :: pars + + end subroutine bse_lanczos diff --git a/src/bsemol/bsemol.F b/src/bsemol/bsemol.F index 2ed16f1ff7..8f40bf130e 100644 --- a/src/bsemol/bsemol.F +++ b/src/bsemol/bsemol.F @@ -55,6 +55,8 @@ c if (params%davidson) then call bse_davidson(params) + elseif (params%lanczos) then + call bse_lanczos(params) else call bse_analytic(params) endif From 3c22431c69f618e8fcb3d039f572e3246ba09ae7 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 11 Aug 2022 16:40:14 -0700 Subject: [PATCH 03/46] Finish skeleton --- src/bsemol/GNUmakefile | 5 +- src/bsemol/bse.fh | 5 +- src/bsemol/bse_defaults.F | 16 +++ src/bsemol/bse_finalize.F | 42 ++++++++ src/bsemol/bse_init.F | 200 ++++++++++++++++++++++++++++++++++++++ src/bsemol/bse_input.F | 24 ++++- src/bsemol/scaleig.fh | 7 ++ src/input/input_parse.F | 2 + src/task/task_bsemol.F | 4 +- src/task/task_input.F | 8 +- 10 files changed, 301 insertions(+), 12 deletions(-) create mode 100644 src/bsemol/bse_finalize.F create mode 100644 src/bsemol/scaleig.fh diff --git a/src/bsemol/GNUmakefile b/src/bsemol/GNUmakefile index 2fff435196..6f695705a1 100644 --- a/src/bsemol/GNUmakefile +++ b/src/bsemol/GNUmakefile @@ -1,12 +1,13 @@ OBJ = bsemol.o bse_input.o bse_init.o bse_analytic.o \ - bse_davidson.o bse_lanczos.o bse_defaults.o + bse_davidson.o bse_lanczos.o bse_defaults.o \ + bse_finalize.o USES_BLAS = OBJ_OPTIMIZE = LIBRARY = libbsemol.a -HEADERS = ../nwdft/include/cdft.fh ../nwdft/grid/cgridfile.fh +HEADERS = ../nwdft/include/cdft.fh ../nwdft/grid/cgridfile.fh ../nwdft/include/dft_scaleig.fh LIB_DEFINES = LIB_INCLUDES = -I./ diff --git a/src/bsemol/bse.fh b/src/bsemol/bse.fh index d89e5f3ba6..19d3f5f2a3 100644 --- a/src/bsemol/bse.fh +++ b/src/bsemol/bse.fh @@ -19,7 +19,8 @@ c integer :: ngl double precision :: tol2e, eta c - integer :: l_evals, k_evals + integer :: l_mf_evals, k_mf_evals + integer :: l_gw_evals, k_gw_evals integer :: l_occ, k_occ c integer :: fd @@ -28,7 +29,7 @@ c integer :: g_erioo(2), g_eriov(2), g_erivv(2), g_erim logical :: noio c - logical :: ncap, davidson, lanczos + logical :: ncap, davidson, lanczos, analytic, tda double precision :: thresh, fdstep, vxddp(2), vxddm(2) end type bse_params_t diff --git a/src/bsemol/bse_defaults.F b/src/bsemol/bse_defaults.F index 06998ce702..dc62ab0eb0 100644 --- a/src/bsemol/bse_defaults.F +++ b/src/bsemol/bse_defaults.F @@ -1,6 +1,22 @@ subroutine bse_defaults(rtdb) + implicit none +#include "errquit.fh" +#include "mafdecls.fh" +#include "rtdb.fh" + integer rtdb + logical ok + + ok = rtdb_put(rtdb,'bse:analytic',mt_log,1,.true.) .and. + & rtdb_put(rtdb,'bse:davidson',mt_log,1,.false.) .and. + & rtdb_put(rtdb,'bse:lanczos',mt_log,1,.false.) .and. + & rtdb_put(rtdb,'bse:tda',mt_log,1,.false.) .and. + & rtdb_put(rtdb,'bse:ncap',mt_log,1,.false.) .and. + & rtdb_put(rtdb,'bse:init',mt_log,1,.true.) + + if (.not.ok) + & call errquit('bse_defaults: could not put to rtdb',0,RTDB_ERR) end subroutine bse_defaults diff --git a/src/bsemol/bse_finalize.F b/src/bsemol/bse_finalize.F new file mode 100644 index 0000000000..dd48873aef --- /dev/null +++ b/src/bsemol/bse_finalize.F @@ -0,0 +1,42 @@ + subroutine bse_finalize(pars) + implicit none +#include "errquit.fh" +#include "mafdecls.fh" +#include "global.fh" +#include "geom.fh" +#include "bas.fh" +#include "cdft.fh" +#include "bse.fh" + + type(bse_params_t) :: pars + character(*),parameter :: pname = 'bse_finalize: ' + + integer i + logical ok + + do i=1,ipol + if (.not.ga_destroy(pars%g_movecs(i))) + $ call errquit(pname//'failed to destroy g_movecs',0,GA_ERR) +c if (pars%npoles(i).gt.0) then +c if (.not.ga_destroy(pars%g_eriov(i))) +c $ call errquit(pname//'failed to destroy g_moeris',0,GA_ERR) +c endif + enddo + + ok = ma_chop_stack(pars%l_mf_evals) + if (.not.ok) + & call errquit(pname//'could not chop stack',0,MA_ERR) + + call schwarz_tidy() + call int_terminate() + call fock_2e_tidy(pars%rtdb) + + if (.not.geom_destroy(geom)) + $ call errquit(pname//'geom_destroy failed',0,GEOM_ERR) + if (.not.bas_destroy(ao_bas_han)) + $ call errquit(pname//'bas_destroy failed',0,BASIS_ERR) + if (.not.bas_destroy(cd_bas_han)) + $ call errquit(pname//'bas_destroy failed',0,BASIS_ERR) + + + end subroutine diff --git a/src/bsemol/bse_init.F b/src/bsemol/bse_init.F index d938c9ef94..ee0353b6bc 100644 --- a/src/bsemol/bse_init.F +++ b/src/bsemol/bse_init.F @@ -2,8 +2,208 @@ implicit none +#include "errquit.fh" +#include "mafdecls.fh" +#include "cdft.fh" +#include "bas.fh" +#include "case.fh" +#include "geom.fh" +#include "global.fh" #include "bse.fh" +#include "util.fh" +#include "stdio.fh" +#include "rtdb.fh" + +#ifdef SCALAPACK +#include "scaleig.fh" +#endif type(bse_params_t) :: pars + character(*), parameter :: pname = 'bse_init: ' + character(len=255) :: basisname, scftype + integer i, ilo, ihi, j + integer nbf_temp, ipol_temp, nocc, nvir, nmo_temp(2) + logical ldum + + logical int_normalize, int_norm_2c + external int_normalize, int_norm_2c +c + logical movecs_read, movecs_read_header, atom_tag_check + external movecs_read, movecs_read_header, atom_tag_check +c + integer ga_create_atom_blocked + external ga_create_atom_blocked + + integer resultlen,tid,cpu,ierr,iproc,itid + character(len=80) names + double precision t0, ehomo, vxddp, vxddm, aq2, zeta + +#ifdef USE_OPENMP + integer,external :: omp_get_max_threads, omp_get_thread_num + integer,external :: omp_get_num_threads +#endif + + + ! Initialize GA variables + pars%me = ga_nodeid() + pars%nprocs = ga_nnodes() + + ! Initialize OMP variables +#ifdef USE_OPENMP + pars%iMaxThreads = omp_get_max_threads() +#else + pars%iMaxThreads = 1 +#endif + + ! Get defaults in case input block is not present + if (.not.rtdb_get(pars%rtdb,'bse:init',mt_log,1,ldum)) + & call bse_defaults(pars%rtdb) + + ! Check method to solve BSE + if (.not.rtdb_get(pars%rtdb,'bse:analytic',mt_log,1, + & pars%analytic)) + & call errquit(pname//'could not read from rtdb',1,RTDB_ERR) + if (.not.rtdb_get(pars%rtdb,'bse:davidson',mt_log,1, + & pars%davidson)) + & call errquit(pname//'could not read from rtdb',2,RTDB_ERR) + if (.not.rtdb_get(pars%rtdb,'bse:lanczos',mt_log,1, + & pars%lanczos)) + & call errquit(pname//'could not read from rtdb',3,RTDB_ERR) + + if ((pars%analytic.and.(pars%davidson.or.pars%lanczos)) .or. + & (pars%davidson.and.(pars%analytic.or.pars%lanczos)) .or. + & (pars%lanczos.and.(pars%analytic.or.pars%davidson))) + & call errquit(pname//'more than one method',4,INPUT_ERR) + + ! Check if we are doing Tamm-Dancoff approximation + if (.not.rtdb_get(pars%rtdb,'bse:tda',mt_log,1,pars%tda)) + & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + + ! Get some info from DFT module + call dft_rdinput(pars%rtdb) + if (cdfit) then + if (.not.bas_destroy(cd_bas_han)) + $ call errquit(pname//'failed to destroy cd_bas',0,BASIS_ERR) + endif + if (.not.rtdb_get(pars%rtdb, 'dft:itol2e',mt_int,1,itol2e)) + $ call errquit(pname//'failed to read itol2e',0,RTDB_ERR) + pars%tol2e = 10.0d0**(-itol2e-2) + + ! Fitting basis + if (.not.bas_create(cd_bas_han,'ri basis')) + $ call errquit(pname//'bas_create failed',0,BASIS_ERR) + if (.not.bas_rtdb_load(pars%rtdb,geom,cd_bas_han,'ri basis'))then + if (.not.bas_rtdb_load(pars%rtdb,geom,cd_bas_han,'cd basis')) + $ call errquit(pname//'a "cd basis" or "ri basis" is needed',0, + $ BASIS_ERR) + endif + call int_init(pars%rtdb, 1, cd_bas_han) + if (.not.int_norm_2c(pars%rtdb, cd_bas_han)) + $ call errquit(pname//'int_norm_2c failed',0,INT_ERR) + call int_terminate() + if (.not. bas_numbf(cd_bas_han, nbf_cd)) + $ call errquit(pname//'basis set error',0,BASIS_ERR) + if (.not. bas_nprim_cn_max(cd_bas_han,nbf_cd_mxprim)) + $ call errquit(pname//'basis set error:', 86, BASIS_ERR) + if (.not. bas_high_angular(cd_bas_han,nbf_cd_mxang)) + $ call errquit(pname//'basis set error:', 86, BASIS_ERR) + if (.not. bas_ncontr_cn_max(cd_bas_han,nbf_cd_mxcont)) + $ call errquit(pname//'basis set error:', 86, BASIS_ERR) + if (.not. bas_nbf_cn_max(cd_bas_han,nbf_cd_mxnbf_cn)) + $ call errquit(pname//'basis set error:', 86, BASIS_ERR) + if (.not. bas_nbf_ce_max(cd_bas_han,nbf_cd_mxnbf_ce)) + $ call errquit(pname//'basis set error:', 86, BASIS_ERR) + if (.not. bas_numcont(cd_bas_han,nshells_cd)) + $ call errquit(pname//'basis set error:', 86, BASIS_ERR) + if (bas_is_spherical(ao_bas_han).and. + $ (.not.bas_is_spherical(cd_bas_han))) + $ call int_app_set_no_texas(pars%rtdb) + + !Spin multiplicity, occupations + if (.not.rtdb_get(pars%rtdb,'dft:ipol',mt_int,1,ipol)) + $ call errquit(pname//'failed to read ipol',0,RTDB_ERR) + if (.not.rtdb_get(pars%rtdb, 'dft:noc',mt_int,2,noc)) + $ call errquit(pname//'failed to read noc',0,RTDB_ERR) + if (.not.rtdb_get(pars%rtdb,'dft:mult',mt_int,1,mult)) + $ call errquit(pname//'failed to read mult',0,RTDB_ERR) + pars%ipol = ipol + + ! MO vectors + if (.not. rtdb_cget(pars%rtdb, 'dft:output vectors',1,movecs_out)) + $ call errquit(pname//'no final MO found',0,RTDB_ERR) + if (.not.ma_push_get(mt_dbl,nbf_ao*ipol, + $ 'mf evals', pars%l_mf_evals, pars%k_mf_evals)) + $ call errquit(pname//'failed to allocate evals',0,MA_ERR) + if (.not.ma_push_get(mt_dbl,nbf_ao*ipol, + $ 'gw evals', pars%l_gw_evals, pars%k_gw_evals)) + $ call errquit(pname//'failed to allocate evals',0,MA_ERR) + if (.not.ma_push_get(mt_dbl,nbf_ao*ipol,'occupancies', pars%l_occ, + $ pars%k_occ)) + $ call errquit(pname//'failed to allocate occ',0,MA_ERR) + if (.not.movecs_read_header(movecs_out,title,basisname, + $ scftype,nbf_temp,ipol_temp,nmo_temp,2)) + $ call errquit(pname//'failed to read MO header',0,DISK_ERR) + if (nbf_ao.ne.nbf_temp) + $ call errquit(pname//'corrupted MO vectors',0,DISK_ERR) + if (ipol.ne.ipol_temp) + $ call errquit(pname//'corrupted MO vectors',0,DISK_ERR) + + pars%nmo = nmo_temp(1) + do i=1,ipol + pars%g_movecs(i) = ga_create_atom_blocked(geom, + $ ao_bas_han,'MO eigenvectors') + if (.not.movecs_read(movecs_out,i, + $ dbl_mb(pars%k_occ+(i-1)*nbf_ao), + $ dbl_mb(pars%k_mf_evals+(i-1)*nbf_ao), + $ pars%g_movecs(i))) + $ call errquit(pname//'failed to read MO vectors',0,DISK_ERR) + + nocc = 0 + nvir = 0 + do j=1,pars%nmo + if (dbl_mb(pars%k_occ+(i-1)*nbf_ao+j-1).gt.0.d0) then + nocc = nocc + 1 + cycle + else + nvir = nvir + 1 + endif + enddo + pars%nocc(i) = nocc + pars%nvir(i) = nvir + if (nocc+nvir.ne.pars%nmo) + $ call errquit(pname//'something went wrong',0,0) + pars%npoles(i) = pars%nocc(i)*pars%nvir(i) + enddo + + ! Obtain NCAP DD shift + 1001 format(2X,A12,F8.3,A3) + if (.not.rtdb_get(pars%rtdb,'bse:ncap',mt_log,1,pars%ncap)) + & call errquit(pname//'rtdb_get failed',176,RTDB_ERR) + if (pars%ncap) then + zeta = 0.304121d0 + aq2 = 2d0/9d0 * (1d0-zeta)**2 + do i=1,ipol + ehomo = dbl_mb(pars%k_mf_evals+(i-1)*nbf_ao+pars%nocc(i)-1) + vxddp = -0.5d0*aq2*(1d0 + sqrt(1d0-4d0*ehomo/aq2)) + vxddm = -0.5d0*aq2*(1d0 - sqrt(1d0-4d0*ehomo/aq2)) + pars%vxddp(i) = vxddp + pars%vxddm(i) = vxddm + if (pars%me.eq.0) then + write(luout,1001) ' v_x^{DD+}: ',vxddp*ha2ev, ' eV' + write(luout,1001) ' v_x^(DD-): ',vxddm*ha2ev, ' eV' + endif + enddo + endif + + !3-center ERIs + call int_init(pars%rtdb, 2, (/ao_bas_han, cd_bas_han/)) + call print_integrals((/ao_bas_han,cd_bas_han/),.false.) + call schwarz_init(geom, ao_bas_han) + call scf_get_fock_param(pars%rtdb, pars%tol2e) + + !Clean previous grid + call grid_cleanup(.false.) + + end subroutine bse_init diff --git a/src/bsemol/bse_input.F b/src/bsemol/bse_input.F index 34429f731a..716c48739a 100644 --- a/src/bsemol/bse_input.F +++ b/src/bsemol/bse_input.F @@ -18,9 +18,9 @@ c character*255 test character(*), parameter :: pname = "bse_input: " c - integer, parameter :: num_dirs = 2 + integer, parameter :: num_dirs = 4 character*11 dirs(num_dirs) - data dirs / 'method', 'end' / + data dirs / 'method', 'tda', 'ncap', 'end' / c integer ind, qpiter,eviter,noqp(2),nvqp(2), ngl, first double precision threshold, eta @@ -44,7 +44,7 @@ c call errquit(pname//'unknown directive', 0, INPUT_ERR) end if c - goto (100, 9999) ind + goto (100, 200, 300, 9999) ind call errquit(pname//'unknown directive',ind, INPUT_ERR) c @@ -61,14 +61,30 @@ c elseif (inp_compare(.false.,'bse:davidson',test)) then if (.not.rtdb_put(rtdb, 'bse:davidson', mt_log, 1, .true.)) & call errquit(pname//'rtdb_put failed', 102, RTDB_ERR) + if (.not.rtdb_put(rtdb, 'bse:analytic', mt_log, 1, .false.)) + & call errquit(pname//'rtdb_put failed', 101, RTDB_ERR) elseif (inp_compare(.false.,'bse:lanczos',test)) then - if (.not.rtdb_put(rtdb, 'bse:davidson', mt_log, 1, .true.)) + if (.not.rtdb_put(rtdb, 'bse:lanczos', mt_log, 1, .true.)) & call errquit(pname//'rtdb_put failed', 103, RTDB_ERR) + if (.not.rtdb_put(rtdb, 'bse:analytic', mt_log, 1, .false.)) + & call errquit(pname//'rtdb_put failed', 101, RTDB_ERR) else call errquit(pname//'unknown BSE method',104,INPUT_ERR) endif goto 10 c +c use Tamm-Dancoff approximation +c + 200 if (.not.rtdb_put(rtdb, 'bse:tda', mt_log, 1, .true.)) + & call errquit(pname//'rtdb_put failed', 200, RTDB_ERR) + goto 10 +c +c use NCAP DD correction for eigenvalues +c + 300 if (.not.rtdb_put(rtdb, 'bse:ncap', mt_log, 1, .true.)) + & call errquit(pname//'rtdb_put failed', 300, RTDB_ERR) + goto 10 +c c normal termination c 9999 return diff --git a/src/bsemol/scaleig.fh b/src/bsemol/scaleig.fh new file mode 100644 index 0000000000..de83620e88 --- /dev/null +++ b/src/bsemol/scaleig.fh @@ -0,0 +1,7 @@ +c Copy of DFT scaleig +c +c $Id$ +c + character*1 yev + integer nb + common /dft_scaleigp/ nb, yev diff --git a/src/input/input_parse.F b/src/input/input_parse.F index 7f05c419fa..893e15a243 100644 --- a/src/input/input_parse.F +++ b/src/input/input_parse.F @@ -332,6 +332,8 @@ ckbn mrcc-r-1 -3 #endif else if (inp_compare(.false.,test,'gw')) then call gw_input(rtdb) + else if (inp_compare(.false.,test,'bse')) then + call bse_input(rtdb) else if (inp_compare(.false.,test,'xtb')) then call xtb_input(rtdb) c diff --git a/src/task/task_bsemol.F b/src/task/task_bsemol.F index 3a3d1fb9c4..17199c7a65 100644 --- a/src/task/task_bsemol.F +++ b/src/task/task_bsemol.F @@ -25,8 +25,6 @@ c logical bsemol, task_energy external bsemol, task_energy c -c call ecce_print_module_entry('task gwmol') -c c Initialization c task_bsemol = .false. @@ -91,7 +89,7 @@ c if (.not.status) then status = task_energy(rtdb) if (.not.rtdb_get(rtdb, 'dft:converged', mt_log, 1, converged)) - & call errquit('task_gwmol: failed to read convergence info',0, + & call errquit('task_bsemol: failed to read convergence info',0, & RTDB_ERR) endif diff --git a/src/task/task_input.F b/src/task/task_input.F index d6077f13f0..4769d3ccef 100644 --- a/src/task/task_input.F +++ b/src/task/task_input.F @@ -37,7 +37,7 @@ c c task [qmmm] [] [numerical || analytic] c [ignore] c - logical numerical, ignore, oqmmm, analytic + logical numerical, ignore, oqmmm, analytic, gwbse logical orism logical omm logical opes @@ -61,6 +61,7 @@ c opes = .false. ofragment = .false. osmd = .false. + gwbse = .false. c oembed = .false. c call rtdb_clean(rtdb, 'task:') ! Delete ALL previous task parameters @@ -114,6 +115,10 @@ c operation = 'rt_tddft' else if (inp_compare(.false.,test,'gw')) then operation = 'gw' + gwbse = .true. + else if (inp_compare(.false.,test,'bse')) then + operation = 'bse' + gwbse = .true. else if (inp_compare(.false.,test,'fcidump')) then operation = 'fcidump' c else if (inp_compare(.false.,test,'prepare')) then @@ -377,6 +382,7 @@ c c if (theory .eq. ' ') then if(osmd) theory="smd" + if(gwbse) theory='dft' end if if (theory .ne. ' ') then if (.not. rtdb_cput(rtdb, 'task:theory', 1, theory)) From 1cbb583c2daefb7e89675ebc1b69b68398dc70c0 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Sat, 13 Aug 2022 01:05:12 -0700 Subject: [PATCH 04/46] CS singlet --- src/bsemol/GNUmakefile | 7 +- src/bsemol/bse.fh | 3 +- src/bsemol/bse_analytic.F | 68 ++++++++ src/bsemol/bse_buildw.F | 75 +++++++++ src/bsemol/bse_casida.F | 191 ++++++++++++++++++++++ src/bsemol/bse_init.F | 33 +++- src/bsemol/bse_ri_init.F | 326 ++++++++++++++++++++++++++++++++++++++ src/bsemol/bse_wmn.F | 47 ++++++ src/gwmol/gw_analytic.F | 28 +++- src/gwmol/gw_ri_init.F | 1 + 10 files changed, 768 insertions(+), 11 deletions(-) create mode 100644 src/bsemol/bse_buildw.F create mode 100644 src/bsemol/bse_casida.F create mode 100644 src/bsemol/bse_ri_init.F create mode 100644 src/bsemol/bse_wmn.F diff --git a/src/bsemol/GNUmakefile b/src/bsemol/GNUmakefile index 6f695705a1..63bbd26bf6 100644 --- a/src/bsemol/GNUmakefile +++ b/src/bsemol/GNUmakefile @@ -1,9 +1,10 @@ OBJ = bsemol.o bse_input.o bse_init.o bse_analytic.o \ bse_davidson.o bse_lanczos.o bse_defaults.o \ - bse_finalize.o + bse_finalize.o bse_ri_init.o bse_wmn.o bse_casida.o -USES_BLAS = -OBJ_OPTIMIZE = +USES_BLAS = bse_buildw.F bse_ri_init.F bse_wmn.F + +OBJ_OPTIMIZE = bse_buildw.o LIBRARY = libbsemol.a diff --git a/src/bsemol/bse.fh b/src/bsemol/bse.fh index 19d3f5f2a3..9f177f729f 100644 --- a/src/bsemol/bse.fh +++ b/src/bsemol/bse.fh @@ -9,7 +9,7 @@ logical :: main, odft c integer :: natoms - integer :: nmo + integer :: nmo, nri integer :: nocc(2),nvir(2),npoles(2) integer :: noqp(2),nvqp(2),nstates(2),mynpoles(2) integer :: oolo(2),oohi(2) @@ -27,6 +27,7 @@ c c integer :: g_movecs(2), g_moeris, g_sols integer :: g_erioo(2), g_eriov(2), g_erivv(2), g_erim + integer :: g_wov(2), g_apb logical :: noio c logical :: ncap, davidson, lanczos, analytic, tda diff --git a/src/bsemol/bse_analytic.F b/src/bsemol/bse_analytic.F index 764ceae421..85294a6e5c 100644 --- a/src/bsemol/bse_analytic.F +++ b/src/bsemol/bse_analytic.F @@ -2,8 +2,76 @@ implicit none +#include "global.fh" +#include "errquit.fh" +#include "mafdecls.fh" #include "bse.fh" type(bse_params_t) :: pars + character(*), parameter :: pname = 'bse_analytic: ' + + integer lSize,isp + integer l_omega, k_omega + integer l_dia,k_dia + integer lW,kW + integer maxpoles,maxnpoles,totnpoles,nri + + ! synchronize parallel processes + call ga_sync + + !initialize useful variables + nri = pars%nri + maxpoles = maxval(pars%mynpoles(1:pars%ipol)) + maxnpoles = maxval(pars%npoles(1:pars%ipol)) + totnpoles = maxnpoles*pars%ipol + + ! allocation + if(.not.ma_push_get(mt_dbl,totnpoles,'omega',l_omega,k_omega)) + & call errquit(pname//'failed to allocate omega',0,MA_ERR) + if(.not.ma_push_get(mt_dbl,totnpoles,'dia',l_dia,k_dia)) + & call errquit(pname//'failed to allocate Delta_ia',0,MA_ERR) + if(.not.ma_push_get(mt_dbl,nri**2,'W',lW,kW)) + & call errquit(pname//'failed to allocate W',0,MA_ERR) + + ! obtain "old" eigenvalue difference to build W + do isp=1,pars%ipol + lSize = (isp-1)*pars%npoles(1) + call gw_get_eia(dbl_mb(pars%k_mf_evals+(isp-1)*pars%nmo), + & dbl_mb(k_dia+lSize),pars%nocc(isp), + & pars%nvir(isp)) + enddo + + ! obtain screened Coulomb matrix + call bse_buildw(pars,dbl_mb(k_dia),dbl_mb(kW),pars%nmo,nri, + & maxpoles,pars%ipol) + + ! transform ERIs using screened Coulomb matrix + call bse_wmn(pars,dbl_mb(kW),pars%nmo,nri,pars%ipol) + if(.not.ma_chop_stack(lW)) + & call errquit(pname//'failed to chop stack',0,MA_ERR) + + ! obtain "GW" eigenvalue difference to build Casida matrix + do isp=1,pars%ipol + lSize = (isp-1)*pars%npoles(1) + call gw_get_eia(dbl_mb(pars%k_gw_evals+(isp-1)*pars%nmo), + & dbl_mb(k_dia+lSize),pars%nocc(isp), + & pars%nvir(isp)) + enddo + + ! Build and diagonalize Casida-like matrix + call bse_casida(pars,dbl_mb(k_dia),dbl_mb(k_omega),maxpoles, + & totnpoles) + + ! Compute oscillator strengths + + ! Print output + + ! Destroy GAs + if (.not.ga_destroy(pars%g_apb)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + + ! chop stack + if(.not.ma_chop_stack(l_omega)) + $ call errquit(pname//'failed to chop stack',0,MA_ERR) end subroutine bse_analytic diff --git a/src/bsemol/bse_buildw.F b/src/bsemol/bse_buildw.F new file mode 100644 index 0000000000..47d48e3532 --- /dev/null +++ b/src/bsemol/bse_buildw.F @@ -0,0 +1,75 @@ + subroutine bse_buildW(pars,wia,w,nmo,nri,maxpoles,ipol) + implicit none +#include "errquit.fh" +#include "mafdecls.fh" +#include "global.fh" +#include "stdio.fh" +#include "bse.fh" + + type(bse_params_t) :: pars + integer nmo, nri, maxpoles, ipol + + character(*), parameter :: pname = 'bse_buildw: ' + + double precision wia(maxpoles,ipol) + double precision w(nri,nri) + + integer :: ovlo,ovhi,kov(2),isp + integer :: ldpi, sizepi + integer :: alloc, info, ld, ipole + double precision,allocatable :: factor(:,:) + + allocate(factor(maxpoles,ipol),stat=alloc) + if (alloc.ne.0) + & call errquit(pname//'allocation failed',0,MA_ERR) +C +C Decide the leading dimension of the \Pi array according to +C the rectangular full-packed (RFP) format +C + if (mod(nri,2).eq.0) then + ldpi = nri + 1 + else + ldpi = nri + endif + sizepi = (nri*(nri+1))/2 + + ! Get pointer to local integrals + do isp=1,pars%ipol + kov(isp) = 1 + if (pars%mynpoles(isp).lt.1) cycle + + ovlo = pars%ovlo(isp) + ovhi = pars%ovhi(isp) + call ga_access(pars%g_eriov(1),1,nri,ovlo,ovhi,kov(isp),ld) + +!$omp parallel do + do ipole=1,pars%mynpoles(isp) + factor(ipole,isp) = dsqrt(1.0d0/wia(ipole,isp)) + enddo +!$omp end parallel do + enddo + + ! Build the Polarizability matrix and transform it to the + ! dielectric matrix \epsilon = 1 - \pi + call gw_cdgw_buildpi('w',dbl_mb(kov(1)),dbl_mb(kov(2)),w,factor, + $ ldpi,nri,pars%mynpoles,pars%me.eq.0, + $ ipol,maxpoles) + call ga_dgop(1038,w,sizepi,'+') + + !Factorize dieletric matrix for further use + call dpftrf('n','l',nri,w,info) + + !Deallocate + deallocate(factor,stat=alloc) + if (alloc.ne.0) + & call errquit(pname//'deallocation failed',0,MA_ERR) + + !Release GAs + do isp=1,ipol + if (pars%mynpoles(isp).lt.1) cycle + ovlo = pars%ovlo(isp) + ovhi = pars%ovhi(isp) + call ga_release_update(pars%g_eriov(isp),1,nri,ovlo,ovhi) + enddo + + end diff --git a/src/bsemol/bse_casida.F b/src/bsemol/bse_casida.F new file mode 100644 index 0000000000..53849aa2ed --- /dev/null +++ b/src/bsemol/bse_casida.F @@ -0,0 +1,191 @@ + subroutine bse_casida(pars,wia,omega,maxpoles,totpoles) + implicit none +#include "mafdecls.fh" +#include "errquit.fh" +#include "global.fh" +#include "bse.fh" +#ifdef SCALAPACK +#include "scaleig.fh" + integer ga_cholesky,ga_llt_i + external ga_cholesky,ga_llt_i +#endif + + type(bse_params_t) :: pars + + integer maxpoles, totpoles + double precision wia(maxpoles,pars%ipol) + double precision omega(totpoles) + + character(*),parameter :: pname = 'bse_casida: ' + + integer ilo,ihi,jlo,jhi + integer nocc2(3),nvir2(3) + integer ipole,imo,jmo,amo,bmo + integer k,l,kproc,lproc,klocal,llocal,kglobal,lglobal + integer g_diag, g_tmp, g_amb, ktmp, ld, info, i, j + integer modtn,tovern + +#ifdef USE_OPENMP + call util_blas_set_num_threads(pars%iMaxthreads) +#endif + + if(.not.ga_create(mt_dbl,totpoles,totpoles,'apb',0,totpoles, + & pars%g_apb)) + & call errquit(pname//'could not create A+B GA',0,GA_ERR) + if(.not.ga_create(mt_dbl,totpoles,totpoles,'amb',0,totpoles, + & g_amb)) + & call errquit(pname//'could not create A-B GA',0,GA_ERR) + if (.not.nga_create(mt_dbl,1,totpoles,'wia',0,g_diag)) + $ call errquit(pname//'could not create wia',0,GA_ERR) + + if (pars%ipol.eq.1) then + nocc2(1) = pars%nocc(1)**2 + nvir2(1) = pars%nvir(1)**2 + + call ga_distribution(pars%g_apb,pars%me,ilo,ihi,jlo,jhi) + if (jhi.ge.jlo) call nga_put(g_diag,jlo,jhi,wia,jhi-jlo+1) + + ! Screened-Coulomb contribution from A + if(.not.ga_create(mt_dbl,totpoles,totpoles,'tmp',0,totpoles, + & g_tmp)) + & call errquit(pname//'could not create temp GA',1,GA_ERR) + call ga_dgemm('t','n',totpoles,totpoles,pars%nri,-1d0, + & pars%g_wov(1),pars%g_wov(1),0d0,g_tmp) + call ga_copy(g_tmp,pars%g_apb) + call ga_zero(g_amb) + call ga_add(-1d0,g_tmp,1d0,g_amb,g_amb) + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + + ! Screened Coulomb contribution from B + if(.not.ga_create(mt_dbl,nocc2(1),nvir2(1),'tmp',nocc2(1),0, + & g_tmp)) + & call errquit(pname//'could not create temp GA',1,GA_ERR) + call ga_dgemm('t','n',nocc2(1),nvir2(1),pars%nri,-1d0, + % pars%g_erioo(1),pars%g_erivv(1),0d0,g_tmp) + call ga_distribution(g_tmp,pars%me,ilo,ihi,jlo,jhi) + call ga_access(g_tmp,ilo,ihi,jlo,jhi,ktmp,ld) + + ! Need to take care about some crazy indexing + tovern = totpoles/pars%nprocs + modtn = mod(totpoles,pars%nprocs) + do i=1,nocc2(1) + jmo = (i-1)/pars%nocc(1) + 1 + imo = i - (jmo-1)*pars%nocc(1) + do j=jlo,jhi + bmo = (j-1)/pars%nvir(1) + 1 + amo = j - (bmo-1)*pars%nvir(1) + k = amo + (imo-1)*pars%nvir(1) + l = bmo + (jmo-1)*pars%nvir(1) + kproc = mod(k-1,pars%nprocs) + lproc = mod(l-1,pars%nprocs) + klocal = (k-1)/pars%nprocs + 1 + llocal = (l-1)/pars%nprocs + 1 + kglobal = klocal + kproc*tovern + min(kproc, modtn) + lglobal = llocal + lproc*tovern + min(lproc, modtn) + call ga_acc(pars%g_apb,kglobal,kglobal,lglobal,lglobal, + & dbl_mb(ktmp+(j-jlo)*nocc2(1)+i-1),1,1d0) + call ga_acc(g_amb,kglobal,kglobal,lglobal,lglobal, + & dbl_mb(ktmp+(j-jlo)*nocc2(1)+i-1),1,1d0) + enddo + enddo + call ga_release(g_tmp,ilo,ihi,jlo,jhi) + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + + ! Hartree contribution + call ga_dgemm('t','n',totpoles,totpoles,pars%nri,4d0, + & pars%g_eriov(1),pars%g_eriov(1),1d0,pars%g_apb) + + ! Diagonal term + call ga_add_diagonal(pars%g_apb,g_diag) + call ga_add_diagonal(g_amb,g_diag) + + ! Destroy ERIs + if (.not.ga_destroy(pars%g_erioo(1))) + & call errquit(pname//'could not destroy erioo GA',1,GA_ERR) + if (.not.ga_destroy(pars%g_erivv(1))) + & call errquit(pname//'could not destroy erivv GA',1,GA_ERR) + if (.not.ga_destroy(pars%g_eriov(1))) + & call errquit(pname//'could not destroy eriov GA',1,GA_ERR) + if (.not.ga_destroy(pars%g_wov(1))) + & call errquit(pname//'could not destroy wov GA',1,GA_ERR) + + + ! First step is to get (A-B)^(1/2) + call ga_sync() +#if defined(PARALLEL_DIAG) +#ifdef SCALAPACK + info= ga_cholesky('L',g_amb) +#else + call ga_chol(g_amb, g_amb, info) +#endif +#else + call ga_chol_seq(g_amb, g_amb, info) +#endif + + ! Transform (A+B) matrix with Cholesky factors + if(.not.ga_create(mt_dbl,totpoles,totpoles,'tmp',0,totpoles, + & g_tmp)) + & call errquit(pname//'could not create temp GA',1,GA_ERR) + call ga_dgemm('n','n',totpoles,totpoles,totpoles,1d0, + & pars%g_apb,g_amb,0d0,g_tmp) + call ga_dgemm('t','n',totpoles,totpoles,totpoles,1d0, + & g_amb,g_tmp,0d0,pars%g_apb) + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + + ! Diagonalize (A+B) matrix +#ifdef PARALLEL_DIAG +#ifdef SCALAPACK + call dft_scaleig(pars%g_apb,pars%g_apb,omega,0) +#else + call ga_diag_std(pars%g_apb,pars%g_apb,omega) +#endif +#else + call ga_diag_std_seq(pars%g_apb,pars%g_apb,omega) +#endif + + ! + ! Since we transformed the eigenvalue equation to an Hermitian + ! form, we obtain the square of the neutral excitations + ! (Equation (32)). + ! +!$omp parallel do + do ipole=1,totpoles + omega(ipole) = dsqrt(omega(ipole)) + enddo +!$omp end parallel do + + write(*,*) omega(1:20) + + ! Transform eigenvectors with (A-B)^(1/2) + if(.not.ga_create(mt_dbl,totpoles,totpoles,'tmp',0,totpoles, + & g_tmp)) + & call errquit(pname//'could not create temp GA',1,GA_ERR) + call ga_dgemm('n','n',totpoles,totpoles,totpoles,1d0, + & g_amb,pars%g_apb,0d0,g_tmp) + + ! Gather neutral excitations vectors + call nga_distribution(g_diag,pars%me,ilo,ihi) + if(ihi.ge.ilo) then + call nga_put(g_diag,ilo,ihi,1d0/dsqrt(omega(ilo:ihi)), + & ihi-ilo+1) + endif + call ga_sync() + call ga_scale_cols(g_tmp,g_diag) + + ! Destroy unused GAs + call ga_copy(g_tmp,pars%g_apb) + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + if (.not.ga_destroy(g_amb)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + if (.not.ga_destroy(g_diag)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + + else + + endif + + end subroutine diff --git a/src/bsemol/bse_init.F b/src/bsemol/bse_init.F index ee0353b6bc..fd893ffe4c 100644 --- a/src/bsemol/bse_init.F +++ b/src/bsemol/bse_init.F @@ -21,7 +21,7 @@ type(bse_params_t) :: pars character(*), parameter :: pname = 'bse_init: ' - character(len=255) :: basisname, scftype + character(len=255) :: basisname, scftype, gwevals integer i, ilo, ihi, j integer nbf_temp, ipol_temp, nocc, nvir, nmo_temp(2) logical ldum @@ -39,6 +39,8 @@ c character(len=80) names double precision t0, ehomo, vxddp, vxddm, aq2, zeta + integer,parameter :: unitno = 66 + #ifdef USE_OPENMP integer,external :: omp_get_max_threads, omp_get_thread_num integer,external :: omp_get_num_threads @@ -119,6 +121,7 @@ c if (bas_is_spherical(ao_bas_han).and. $ (.not.bas_is_spherical(cd_bas_han))) $ call int_app_set_no_texas(pars%rtdb) + pars%nri = nbf_cd !Spin multiplicity, occupations if (.not.rtdb_get(pars%rtdb,'dft:ipol',mt_int,1,ipol)) @@ -193,9 +196,33 @@ c write(luout,1001) ' v_x^{DD+}: ',vxddp*ha2ev, ' eV' write(luout,1001) ' v_x^(DD-): ',vxddm*ha2ev, ' eV' endif + call dcopy(nbf_ao,dbl_mb(pars%k_mf_evals+(i-1)*nbf_ao),1, + & dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao),1) + dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao: + & pars%k_gw_evals+(i-1)*nbf_ao+pars%nocc(i)-1) = + & dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao: + & pars%k_gw_evals+(i-1)*nbf_ao+pars%nocc(i)-1) + + & vxddp + dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao+pars%nocc(i): + & pars%k_gw_evals+(i-1)*nbf_ao+nbf_ao-1) = + & dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao+pars%nocc(i): + & pars%k_gw_evals+(i-1)*nbf_ao+nbf_ao-1) + + & vxddm enddo endif + ! Read GW QP energies + if (.not.pars%ncap) then + call util_file_name('gwevals',.false.,.false.,gwevals) + call util_file_name_resolve(gwevals,.false.) + open(unit=unitno,status='old',form='unformatted',file=gwevals) + do i=1,pars%ipol + call sread(unitno, dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao), + & pars%nmo) + enddo + close(unit=unitno) + endif + !3-center ERIs call int_init(pars%rtdb, 2, (/ao_bas_han, cd_bas_han/)) call print_integrals((/ao_bas_han,cd_bas_han/),.false.) @@ -205,5 +232,9 @@ c !Clean previous grid call grid_cleanup(.false.) + !Print expected memory requirements + + !Compute three-center integrals + call bse_ri_init(pars) end subroutine bse_init diff --git a/src/bsemol/bse_ri_init.F b/src/bsemol/bse_ri_init.F new file mode 100644 index 0000000000..385e78fa2e --- /dev/null +++ b/src/bsemol/bse_ri_init.F @@ -0,0 +1,326 @@ + subroutine bse_ri_init(pars) +c + implicit none +#include "errquit.fh" +#include "mafdecls.fh" +#include "cdft.fh" +#include "bas.fh" +#include "bse.fh" +#include "stdio.fh" +#include "util.fh" +#include "global.fh" +#ifdef SCALAPACK +#include "scaleig.fh" +#endif +c + type(bse_params_t) :: pars +c + character(len=*), parameter :: pname = "bse_ri_init: " +c + logical iolgc + integer g_2ceris, g_2cinv, info, lmiss +c + integer ilo,ihi,jlo,jhi + integer lbuf,lscr,ltmp,leri,lvecs + integer l_buf,k_buf,l_scr,k_scr,l_tmp,k_tmp,k_eri,k_mo,l_mo + integer l_vecs,k_vecs,l_idx,k_idx + integer l_shlbuf, k_shlbuf, l_mobuf, k_mobuf + integer me, isp, addr + integer g_3ceris,shlo,shhi,offset,ld + integer nmo,nvir,rihi,rilo,nri,nri_me,nocc,offk + integer ish,jsh,ksh,ni,nj,nk,nij + integer ifirst,jfirst,kfirst + integer ilast,jlast,klast,imaxthreads + integer aopairs,mopairs(2),idum,totmopairs + logical IeqJ,ok,oactive + double precision eri_est,timer,timing +c + double precision schwarz_shell + external schwarz_shell +c +#ifdef USE_OPENMP + integer,external :: omp_get_max_threads +#endif + + timer = util_wallsec() +c +c Create Global Arrays +c + if (.not.ga_create(mt_dbl,nbf_cd,nbf_cd,'2c ERI', + $ 0, nbf_cd, g_2ceris)) + $ call errquit(pname//'Error creating 2c ERI',0,GA_ERR) + if (.not.ga_create(mt_dbl,nbf_cd,nbf_cd,'2c INV', + $ 0, nbf_cd, g_2cinv)) + $ call errquit(pname//'Error creating 2c ERI',0,GA_ERR) + call ga_zero(g_2ceris) +c +c Compute 2-center ERIs +c + if (pars%me.eq.0) write(luout,9000) + 9000 format(/,10x,'Computing 2-center integrals') +c + call dft_get2eri(cd_bas_han, g_2ceris, .false.) +c +c Obtain inverse Cholesky factor +c + if (pars%me.eq.0) write(luout,9010) + 9010 format(10x,'Computing Inverse Cholesky factor') +c + call ga_sync() + call ga_chol_inv_seq(g_2ceris, g_2cinv, info) + if (info.ne.0) then + if (pars%me.eq.0) then + write(luout,*) + write(luout,*)' Problem in performing Cholesky' + write(luout,*)' Obtaining square root via truncated ' + write(luout,*)' eigenvalue decomposition ' + write(luout,*) + endif + call dft_invdiag(g_2ceris, g_2cinv, nbf_cd) + endif +c + if (.not. ga_destroy(g_2ceris)) + $ call errquit(pname//'failed to destrou g_2ceri',0,GA_ERR) +c +c Allocate storage +c + nri = nbf_cd + nmo = pars%nmo + aopairs = (nbf_ao*(nbf_ao+1))/2 + + do isp=1,pars%ipol + mopairs(isp) = pars%nmo*pars%nmo + enddo + totmopairs = sum(mopairs(1:pars%ipol)) + + if (.not.ga_create(mt_dbl,1,nri,'3c ERI',aopairs,0, + $ g_3ceris)) + $ call errquit(pname//'can''t create 3c ERIs',0,GA_ERR) + call ga_distribution(g_3ceris,pars%me,ilo,ihi,rilo,rihi) + nri_me = rihi - rilo + 1 + ok = ga_destroy(g_3ceris) + +c call ga_access(g_3ceris,ilo,ihi,rilo,rihi,k_eri,ld) +c call dfill(aopairs*nri_me,0d0,dbl_mb(k_eri),1) + + shlo = 0 + do ksh=1,nshells_cd + ok = bas_cn2bfr(cd_bas_han,ksh,kfirst,klast) + if (klast.lt.rilo) cycle + if (shlo.eq.0) then + offset = (rilo-kfirst) + shlo = ksh + endif + shhi = ksh + if (klast.ge.rihi) exit + enddo + + oactive = nri_me.gt.0 + + call int_mem_2e3c(lbuf, lscr) + if (.not.ma_alloc_get(mt_dbl,lbuf, 'RI buffer',l_buf, k_buf)) + $ call errquit(pname//'can''t get buffer space',0,MA_ERR) + lscr = max(lscr,nbf_cd*nbf_ao_mxnbf_cn**2) + if (.not.ma_alloc_get(mt_dbl,lscr, 'RI scratch', l_scr, k_scr)) + $ call errquit(pname//'can''t get scratch space',0,MA_ERR) + + if (.not.ma_alloc_get(mt_dbl,nri_me*nbf_ao_mxnbf_cn**2, + $ 'Shell buffer',l_shlbuf, k_shlbuf)) + $ call errquit(pname//'can''t allocate shell buffer',0,MA_ERR) + if (.not.ma_alloc_get(mt_dbl, + $ nri_me*nbf_ao_mxnbf_cn*nmo*pars%ipol, + $ 'MO buffer',l_mobuf, k_mobuf)) + $ call errquit(pname//'can''t allocate shell buffer',0,MA_ERR) +c +c Compute three-center ERIs in MO representation +c + call ga_sync() +c + if (pars%me.eq.0) write(luout,9020) + 9020 format(10x,'Computing 3-center integrals') + + lvecs = nbf_ao*nmo*pars%ipol + if (.not.ma_alloc_get(mt_dbl,lvecs,'MOVECS',l_vecs,k_vecs)) + $ call errquit(pname//'can''t get movecs space',0,MA_ERR) + if (.not.ma_alloc_get(mt_dbl,totmopairs*nri_me,'MO Eris', + $ l_mo,k_mo)) + $ call errquit(pname//'can''t get MO eris space',0,MA_ERR) + call dfill(totmopairs*nri_me,0.0d0,dbl_mb(k_mo),1) + + do isp=1,pars%ipol + call ga_get(pars%g_movecs(isp),1,nbf_ao,1,nmo, + $ dbl_mb(k_vecs+(isp-1)*nbf_ao*nmo),nbf_ao) + enddo +c +#ifdef USE_OPENMP + iMaxThreads = omp_get_max_threads() + call util_blas_set_num_threads(iMaxThreads) +#endif + + do ish=1,nshells_ao + ok = bas_cn2bfr(ao_bas_han,ish,ifirst,ilast) + ni = ilast - ifirst + 1 + call dfill(ni*nmo*pars%ipol*nri_me,0d0,dbl_mb(k_mobuf),1) + do jsh=1,nshells_ao + eri_est = schwarz_shell(ish,jsh) + if (eri_est.lt.pars%tol2e) cycle + IeqJ = ish.eq.jsh + ok = bas_cn2bfr(ao_bas_han,jsh,jfirst,jlast) + nj = jlast - jfirst + 1 + nij = ni*nj + do ksh=shlo,shhi + ok = bas_cn2bfr(cd_bas_han, ksh, kfirst, klast) + call int_2e3c(cd_bas_han,ksh,ao_bas_han,ish,jsh,lscr, + $ dbl_mb(k_scr),lbuf,dbl_mb(k_buf)) + + if (ksh.eq.shlo) then + kfirst = rilo + offk = k_buf + offset*nij + else + offk = k_buf + endif + + if (ksh.eq.shhi) klast = rihi + + nk = klast - kfirst + 1 + kfirst = kfirst - rilo + 1 + call dcopy(ni*nj*nk,dbl_mb(offk),1, + $ dbl_mb(k_shlbuf+(kfirst-1)*ni*nj),1) + enddo + do isp=1,pars%ipol + call gw_mo2(dbl_mb(k_shlbuf), + $ dbl_mb(k_mobuf+(isp-1)*nmo*ni*nri_me), + $ dbl_mb(k_vecs+(isp-1)*nbf_ao*nmo),nri_me, + $ nbf_ao,ni,nj,nmo,nmo,ifirst, + $ jfirst,ieqj) + enddo + enddo + do isp=1,pars%ipol + call gw_mo(dbl_mb(k_mobuf+(isp-1)*nmo*ni*nri_me), + $ dbl_mb(k_mo+(isp-1)*mopairs(1)*nri_me), + $ dbl_mb(k_vecs+(isp-1)*nbf_ao*nmo),nri_me, + $ nbf_ao,ni,nmo,nmo,ifirst) + enddo + enddo +c + ok = ma_free_heap(l_buf) .and. ma_free_heap(l_scr) .and. + $ ma_free_heap(l_shlbuf) .and. + $ ma_free_heap(l_mobuf) + if (.not.ok) + $ call errquit(pname//'can''t free heap',165,MA_ERR) +c +c +#ifdef GWDEBUG + if (pars%me.eq.0) write(*,*) ' Transform ERIs' +#endif + + call ga_sync() + + ok = ma_free_heap(l_vecs) + if (.not.ok) + $ call errquit(pname//'can''t free heap',176,MA_ERR) +c + call ga_sync() +c +c Distribute and orthonormalize ERIs +c + timer = util_wallsec() +#ifdef GWDEBUG + if (pars%me.eq.0) write(*,*) ' Distribute ERIs' +#endif + + addr = k_mo + do isp=1,pars%ipol + if (nmo.eq.0) cycle + if (isp.eq.2) addr = k_mo + mopairs(1)*nri_me + + ! OO block + call gw_puteris(dbl_mb(addr),nmo,nmo,nri,nri_me, + $ rilo,1,pars%nocc(isp),1,pars%nocc(isp), + $ pars%g_erioo(isp),'oo',pars%oolo(isp), + $ pars%oohi(isp),idum) + + ! OV block + call gw_puteris(dbl_mb(addr),nmo,nmo,nri,nri_me, + $ rilo,1,pars%nocc(isp),pars%nocc(isp)+1, + $ nmo,pars%g_eriov(isp),'ov',pars%ovlo(isp), + $ pars%ovhi(isp),pars%mynpoles(isp)) + + ! VV block + call gw_puteris(dbl_mb(addr),nmo,nmo,nri,nri_me, + $ rilo,pars%nocc(isp)+1,nmo, + $ pars%nocc(isp)+1,nmo,pars%g_erivv(isp), + $ 'vv',pars%vvlo(isp),pars%vvhi(isp),idum) + + enddo + + ok = ma_free_heap(l_mo) +#ifdef GWDEBUG + if (pars%me.eq.0) write(*,*) ' Read inverse' +#endif +c + if (.not.ma_alloc_get(mt_dbl,nri**2,'RI temporary',l_tmp,k_tmp)) + $ call errquit(pname//'can''t get temp space',0,MA_ERR) + if (pars%me.eq.0) then + call ga_get(g_2cinv,1,nbf_cd,1,nbf_cd,dbl_mb(k_tmp),nbf_cd) + endif + call ga_sync() + if (.not. ga_destroy(g_2cinv)) + $ call errquit(pname//'failed to destroy g_2cinv',0,GA_ERR) + call ga_brdcst(1038,dbl_mb(k_tmp),ma_sizeof(mt_dbl,nri**2, + $ mt_byte),0) + +#ifdef GWDEBUG + if (pars%me.eq.0) write(*,*) ' Orthogonalize ERIs' +#endif + do isp=1,pars%ipol + if (nmo.eq.0) cycle +c +c Transform OO block +c + call ga_distribution(pars%g_erioo(isp),pars%me,ilo,ihi,jlo,jhi) + if (jlo.gt.jhi) goto 101 + call ga_access(pars%g_erioo(isp),ilo,ihi,jlo,jhi,k_eri,ld) + nij = jhi-jlo+1 + call dtrmm('l','l','n','n',nbf_cd,nij,1.0d0,dbl_mb(k_tmp), + $ nbf_cd,dbl_mb(k_eri),nbf_cd) + call ga_release_update(pars%g_erioo(isp),ilo,ihi,jlo,jhi) +c +c Transform OV block +c + 101 continue + call ga_distribution(pars%g_eriov(isp),pars%me,ilo,ihi,jlo,jhi) + if (jlo.gt.jhi) goto 102 + call ga_access(pars%g_eriov(isp),ilo,ihi,jlo,jhi,k_eri,ld) + nij = jhi-jlo+1 + call dtrmm('l','l','n','n',nbf_cd,nij,1.0d0,dbl_mb(k_tmp), + $ nbf_cd,dbl_mb(k_eri),nbf_cd) + call ga_release_update(pars%g_eriov(isp),ilo,ihi,jlo,jhi) +c +c Transform VV block +c + 102 continue + if (nmo.gt.pars%nocc(isp)) then + call ga_distribution(pars%g_erivv(isp),pars%me,ilo,ihi, + $ jlo,jhi) + if (jlo.gt.jhi) goto 103 + call ga_access(pars%g_erivv(isp),ilo,ihi,jlo,jhi,k_eri,ld) + nij = jhi-jlo+1 + call dtrmm('l','l','n','n',nbf_cd,nij,1.0d0,dbl_mb(k_tmp), + $ nbf_cd,dbl_mb(k_eri),nbf_cd) + call ga_release_update(pars%g_erivv(isp),ilo,ihi,jlo,jhi) + endif + 103 continue + enddo +c +c Free heap +c + ok = ma_free_heap(l_tmp) + if (.not.ok) + $ call errquit(pname//'failed to free heap',224,MA_ERR) +c +#ifdef USE_OPENMP + call util_blas_set_num_threads(1) +#endif + return + end subroutine diff --git a/src/bsemol/bse_wmn.F b/src/bsemol/bse_wmn.F new file mode 100644 index 0000000000..0ed4e09241 --- /dev/null +++ b/src/bsemol/bse_wmn.F @@ -0,0 +1,47 @@ + subroutine bse_wmn(pars,w,nmo,nri,ipol) + implicit none +#include "errquit.fh" +#include "mafdecls.fh" +#include "global.fh" +#include "bse.fh" + + type(bse_params_t) :: pars + integer nmo, nri, ipol + + character(*), parameter :: pname = 'bse_wmn: ' + + double precision w(*) + + integer isp,ilo,ihi,jlo,jhi,keri,ld + + do isp=1,ipol + ! copy and transform occ-vir block + if(.not.ga_duplicate(pars%g_eriov(isp),pars%g_wov(isp),'Wov')) + & call errquit(pname//'could not duplicate ERI OV',0,GA_ERR) + call ga_copy(pars%g_eriov(isp),pars%g_wov(isp)) + if(pars%mynpoles(isp).eq.0) cycle + call ga_access(pars%g_wov(isp),1,nri,pars%ovlo(isp), + & pars%ovhi(isp),keri,ld) + call dtfsm('n','l','l','n','n',nri,pars%mynpoles(isp),1d0, + & w,dbl_mb(keri),nri) + call ga_release_update(pars%g_wov(isp),1,nri,pars%ovlo(isp), + & pars%ovhi(isp)) + + ! transform occ-occ and vir-vir blocks in place + call ga_distribution(pars%g_erioo(isp),pars%me,ilo,ihi,jlo,jhi) + if (jlo.gt.jhi) goto 101 + call ga_access(pars%g_erioo(isp),ilo,ihi,jlo,jhi,keri,ld) + call dtfsm('n','l','l','n','n',nri,jhi-jlo+1,1.0d0,w, + & dbl_mb(keri),nri) + call ga_release_update(pars%g_erioo(isp),1,nri,jlo,jhi) + + 101 continue + call ga_distribution(pars%g_erivv(isp),pars%me,ilo,ihi,jlo,jhi) + if (jlo.gt.jhi) cycle + call ga_access(pars%g_erivv(isp),ilo,ihi,jlo,jhi,keri,ld) + call dtfsm('n','l','l','n','n',nri,jhi-jlo+1,1.0d0,w, + & dbl_mb(keri),nri) + call ga_release_update(pars%g_erivv(isp),1,nri,jlo,jhi) + enddo + + end diff --git a/src/gwmol/gw_analytic.F b/src/gwmol/gw_analytic.F index 23e497990c..e558cc8e0d 100644 --- a/src/gwmol/gw_analytic.F +++ b/src/gwmol/gw_analytic.F @@ -12,6 +12,7 @@ c type(gw_params_t) :: pars c character(len=13), parameter :: pname = 'gw_analytic: ' + character*255 gwevals c integer,dimension(2) :: nocc,nvir,npoles,nstates,mynpoles @@ -45,6 +46,8 @@ c integer maxpoles,maxnpoles,isp,lSize logical ok + + integer,parameter :: unitno = 66 c c ----------------------------------------------------------------- c @@ -185,15 +188,16 @@ c endif c - if (pars%evgw0.or.pars%evgw) then - call gw_scissor(dbl_mb(k_Enew),dbl_mb(k_Eold),pars%nmo, + call gw_scissor(dbl_mb(k_Enew),dbl_mb(k_Eold),pars%nmo, $ pars%nocc,pars%nvir,pars%noqp,pars%nvqp, $ pars%ipol,pars%me) - call ga_brdcst(1038,dbl_mb(k_enew), - $ ma_sizeof(mt_dbl,nmo,mt_byte),0) - call ga_brdcst(1038,dbl_mb(k_sigma), - $ ma_sizeof(mt_dbl,nmo,mt_byte),0) + call ga_brdcst(1038,dbl_mb(k_enew), + $ ma_sizeof(mt_dbl,nmo,mt_byte),0) + call ga_brdcst(1038,dbl_mb(k_sigma), + $ ma_sizeof(mt_dbl,nmo,mt_byte),0) + + if (pars%evgw0.or.pars%evgw) then ! ! Update Fermi energy @@ -214,6 +218,18 @@ c endif endif + ! + ! Save eigenvalues + ! + call gw_shift(dbl_mb(k_enew),dbl_mb(k_eold),-efermi,nmo,nmo,ipol) + call util_file_name('gwevals',.false.,.false.,gwevals) + call util_file_name_resolve(gwevals,.false.) + open(unit=unitno,status='unknown',form='unformatted',file=gwevals) + do i=1,ipol + call swrite(unitno, dbl_mb(k_eold+(i-1)*nmo),nmo) + enddo + close(unit=unitno) + 9050 format(10x,I3,6x,F8.3,6x,F6.3,6x,F8.3) c if (.not.ma_chop_stack(l_sigma)) diff --git a/src/gwmol/gw_ri_init.F b/src/gwmol/gw_ri_init.F index 08b6e443f3..5621749465 100644 --- a/src/gwmol/gw_ri_init.F +++ b/src/gwmol/gw_ri_init.F @@ -484,6 +484,7 @@ c if (.not.ga_create(mt_dbl,nri,npairs,erilabel,nri,0,eri)) enddo ok = ma_chop_stack(l_tmp) + ok = ma_chop_stack(lmap) call ga_distribution(eri,me,ld,ld,polelo,polehi) From ca338cc391dc02cf249aea26e00eb6ff99e1ca16 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Sat, 13 Aug 2022 21:13:09 -0700 Subject: [PATCH 05/46] TDA, printing --- src/bsemol/GNUmakefile | 4 +- src/bsemol/bse.fh | 9 +- src/bsemol/bse_analytic.F | 12 +- .../{bse_casida.F => bse_analytic_cis.F} | 12 +- src/bsemol/bse_analytic_tda.F | 119 ++++++++++++++++++ src/bsemol/bse_defaults.F | 6 + src/bsemol/bse_dipole.F | 85 +++++++++++++ src/bsemol/bse_finalize.F | 15 ++- src/bsemol/bse_init.F | 38 +++++- src/bsemol/bse_input.F | 50 +++++++- src/bsemol/bse_oscstr.F | 87 +++++++++++++ src/bsemol/bse_wmn.F | 25 ++-- 12 files changed, 423 insertions(+), 39 deletions(-) rename src/bsemol/{bse_casida.F => bse_analytic_cis.F} (95%) create mode 100644 src/bsemol/bse_analytic_tda.F create mode 100644 src/bsemol/bse_dipole.F create mode 100644 src/bsemol/bse_oscstr.F diff --git a/src/bsemol/GNUmakefile b/src/bsemol/GNUmakefile index 63bbd26bf6..bf8113b5ea 100644 --- a/src/bsemol/GNUmakefile +++ b/src/bsemol/GNUmakefile @@ -1,6 +1,8 @@ OBJ = bsemol.o bse_input.o bse_init.o bse_analytic.o \ bse_davidson.o bse_lanczos.o bse_defaults.o \ - bse_finalize.o bse_ri_init.o bse_wmn.o bse_casida.o + bse_finalize.o bse_ri_init.o bse_wmn.o \ + bse_analytic_cis.o bse_analytic_tda.o \ + bse_dipole.o bse_oscstr.o USES_BLAS = bse_buildw.F bse_ri_init.F bse_wmn.F diff --git a/src/bsemol/bse.fh b/src/bsemol/bse.fh index 9f177f729f..4c62604599 100644 --- a/src/bsemol/bse.fh +++ b/src/bsemol/bse.fh @@ -10,13 +10,12 @@ c integer :: natoms integer :: nmo, nri - integer :: nocc(2),nvir(2),npoles(2) - integer :: noqp(2),nvqp(2),nstates(2),mynpoles(2) + integer :: nocc(2),nvir(2),npoles(2),mynpoles(2) integer :: oolo(2),oohi(2) integer :: ovlo(2),ovhi(2) integer :: vvlo(2),vvhi(2) integer :: llmo(2),nqp(2) - integer :: ngl + integer :: nroots double precision :: tol2e, eta c integer :: l_mf_evals, k_mf_evals @@ -27,11 +26,13 @@ c c integer :: g_movecs(2), g_moeris, g_sols integer :: g_erioo(2), g_eriov(2), g_erivv(2), g_erim - integer :: g_wov(2), g_apb + integer :: g_wov(2), g_apb, g_dipa(3), g_dipb(3) logical :: noio c logical :: ncap, davidson, lanczos, analytic, tda + logical :: singlet, triplet, dowindow double precision :: thresh, fdstep, vxddp(2), vxddm(2) + double precision :: elower, eupper end type bse_params_t diff --git a/src/bsemol/bse_analytic.F b/src/bsemol/bse_analytic.F index 85294a6e5c..273a19e22c 100644 --- a/src/bsemol/bse_analytic.F +++ b/src/bsemol/bse_analytic.F @@ -59,12 +59,16 @@ enddo ! Build and diagonalize Casida-like matrix - call bse_casida(pars,dbl_mb(k_dia),dbl_mb(k_omega),maxpoles, - & totnpoles) + if (pars%tda) then + call bse_analytic_tda(pars,dbl_mb(k_dia),dbl_mb(k_omega), + & maxpoles,totnpoles,pars%singlet) + else + call bse_analytic_cis(pars,dbl_mb(k_dia),dbl_mb(k_omega), + & maxpoles,totnpoles,pars%singlet) + endif ! Compute oscillator strengths - - ! Print output + call bse_oscstr(pars,dbl_mb(k_omega),totnpoles) ! Destroy GAs if (.not.ga_destroy(pars%g_apb)) diff --git a/src/bsemol/bse_casida.F b/src/bsemol/bse_analytic_cis.F similarity index 95% rename from src/bsemol/bse_casida.F rename to src/bsemol/bse_analytic_cis.F index 53849aa2ed..7d73fa5452 100644 --- a/src/bsemol/bse_casida.F +++ b/src/bsemol/bse_analytic_cis.F @@ -1,4 +1,5 @@ - subroutine bse_casida(pars,wia,omega,maxpoles,totpoles) + subroutine bse_analytic_cis(pars,wia,omega,maxpoles,totpoles, + $ singlet) implicit none #include "mafdecls.fh" #include "errquit.fh" @@ -12,6 +13,7 @@ type(bse_params_t) :: pars + logical singlet integer maxpoles, totpoles double precision wia(maxpoles,pars%ipol) double precision omega(totpoles) @@ -93,9 +95,11 @@ if (.not.ga_destroy(g_tmp)) & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + if (singlet) then ! Hartree contribution - call ga_dgemm('t','n',totpoles,totpoles,pars%nri,4d0, - & pars%g_eriov(1),pars%g_eriov(1),1d0,pars%g_apb) + call ga_dgemm('t','n',totpoles,totpoles,pars%nri,4d0, + & pars%g_eriov(1),pars%g_eriov(1),1d0,pars%g_apb) + endif ! Diagonal term call ga_add_diagonal(pars%g_apb,g_diag) @@ -157,8 +161,6 @@ enddo !$omp end parallel do - write(*,*) omega(1:20) - ! Transform eigenvectors with (A-B)^(1/2) if(.not.ga_create(mt_dbl,totpoles,totpoles,'tmp',0,totpoles, & g_tmp)) diff --git a/src/bsemol/bse_analytic_tda.F b/src/bsemol/bse_analytic_tda.F new file mode 100644 index 0000000000..029eb6dda9 --- /dev/null +++ b/src/bsemol/bse_analytic_tda.F @@ -0,0 +1,119 @@ + subroutine bse_analytic_tda(pars,wia,omega,maxpoles,totpoles, + $ singlet) + implicit none +#include "mafdecls.fh" +#include "errquit.fh" +#include "global.fh" +#include "bse.fh" +#ifdef SCALAPACK +#include "scaleig.fh" + integer ga_cholesky,ga_llt_i + external ga_cholesky,ga_llt_i +#endif + + type(bse_params_t) :: pars + + integer maxpoles, totpoles + double precision wia(maxpoles,pars%ipol) + double precision omega(totpoles) + logical singlet + + character(*),parameter :: pname = 'bse_analytic_tda: ' + + integer ilo,ihi,jlo,jhi + integer nocc2(3),nvir2(3) + integer ipole,imo,jmo,amo,bmo + integer k,l,kproc,lproc,klocal,llocal,kglobal,lglobal + integer g_diag, g_tmp, g_amb, ktmp, ld, info, i, j + integer modtn,tovern + double precision alpha + +#ifdef USE_OPENMP + call util_blas_set_num_threads(pars%iMaxthreads) +#endif + + if(.not.ga_create(mt_dbl,totpoles,totpoles,'apb',0,totpoles, + & pars%g_apb)) + & call errquit(pname//'could not create A+B GA',0,GA_ERR) + if (.not.nga_create(mt_dbl,1,totpoles,'wia',0,g_diag)) + $ call errquit(pname//'could not create wia',0,GA_ERR) + + if (pars%ipol.eq.1) then + nocc2(1) = pars%nocc(1)**2 + nvir2(1) = pars%nvir(1)**2 + + call ga_distribution(pars%g_apb,pars%me,ilo,ihi,jlo,jhi) + if (jhi.ge.jlo) call nga_put(g_diag,jlo,jhi,wia,jhi-jlo+1) + + ! Screened Coulomb contribution + if(.not.ga_create(mt_dbl,nocc2(1),nvir2(1),'tmp',nocc2(1),0, + & g_tmp)) + & call errquit(pname//'could not create temp GA',1,GA_ERR) + call ga_dgemm('t','n',nocc2(1),nvir2(1),pars%nri,-1d0, + % pars%g_erioo(1),pars%g_erivv(1),0d0,g_tmp) + call ga_distribution(g_tmp,pars%me,ilo,ihi,jlo,jhi) + call ga_access(g_tmp,ilo,ihi,jlo,jhi,ktmp,ld) + + ! Need to take care about some crazy indexing + tovern = totpoles/pars%nprocs + modtn = mod(totpoles,pars%nprocs) + do i=1,nocc2(1) + jmo = (i-1)/pars%nocc(1) + 1 + imo = i - (jmo-1)*pars%nocc(1) + do j=jlo,jhi + bmo = (j-1)/pars%nvir(1) + 1 + amo = j - (bmo-1)*pars%nvir(1) + k = amo + (imo-1)*pars%nvir(1) + l = bmo + (jmo-1)*pars%nvir(1) + kproc = mod(k-1,pars%nprocs) + lproc = mod(l-1,pars%nprocs) + klocal = (k-1)/pars%nprocs + 1 + llocal = (l-1)/pars%nprocs + 1 + kglobal = klocal + kproc*tovern + min(kproc, modtn) + lglobal = llocal + lproc*tovern + min(lproc, modtn) + call ga_put(pars%g_apb,kglobal,kglobal,lglobal,lglobal, + & dbl_mb(ktmp+(j-jlo)*nocc2(1)+i-1),1) + enddo + enddo + call ga_release(g_tmp,ilo,ihi,jlo,jhi) + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + + ! Hartree contribution + if (singlet) then + call ga_dgemm('t','n',totpoles,totpoles,pars%nri,2d0, + & pars%g_eriov(1),pars%g_eriov(1),1d0,pars%g_apb) + endif + + ! Diagonal term + call ga_add_diagonal(pars%g_apb,g_diag) + + ! Destroy ERIs + if (.not.ga_destroy(pars%g_erioo(1))) + & call errquit(pname//'could not destroy erioo GA',1,GA_ERR) + if (.not.ga_destroy(pars%g_erivv(1))) + & call errquit(pname//'could not destroy erivv GA',1,GA_ERR) + if (.not.ga_destroy(pars%g_eriov(1))) + & call errquit(pname//'could not destroy eriov GA',1,GA_ERR) + + + ! Diagonalize (A+B) matrix +#ifdef PARALLEL_DIAG +#ifdef SCALAPACK + call dft_scaleig(pars%g_apb,pars%g_apb,omega,0) +#else + call ga_diag_std(pars%g_apb,pars%g_apb,omega) +#endif +#else + call ga_diag_std_seq(pars%g_apb,pars%g_apb,omega) +#endif + + ! Destroy unused GAs + if (.not.ga_destroy(g_diag)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + + else + + endif + + end subroutine diff --git a/src/bsemol/bse_defaults.F b/src/bsemol/bse_defaults.F index dc62ab0eb0..226718a77b 100644 --- a/src/bsemol/bse_defaults.F +++ b/src/bsemol/bse_defaults.F @@ -14,6 +14,12 @@ & rtdb_put(rtdb,'bse:lanczos',mt_log,1,.false.) .and. & rtdb_put(rtdb,'bse:tda',mt_log,1,.false.) .and. & rtdb_put(rtdb,'bse:ncap',mt_log,1,.false.) .and. + & rtdb_put(rtdb,'bse:singlet',mt_log,1,.true.) .and. + & rtdb_put(rtdb,'bse:triplet',mt_log,1,.false.) .and. + & rtdb_put(rtdb,'bse:dowindow',mt_log,1,.false.) .and. + & rtdb_put(rtdb,'bse:elower',mt_dbl,1,0d0) .and. + & rtdb_put(rtdb,'bse:upper',mt_dbl,1,0d0) .and. + & rtdb_put(rtdb,'bse:nroots',mt_int,1,10) .and. & rtdb_put(rtdb,'bse:init',mt_log,1,.true.) if (.not.ok) diff --git a/src/bsemol/bse_dipole.F b/src/bsemol/bse_dipole.F new file mode 100644 index 0000000000..421414fb97 --- /dev/null +++ b/src/bsemol/bse_dipole.F @@ -0,0 +1,85 @@ + subroutine bse_dipole(pars) + implicit none +#include "global.fh" +#include "mafdecls.fh" +#include "errquit.fh" +#include "bse.fh" +#include "cdft.fh" + type(bse_params_t) :: pars + + character(*),parameter :: pname = 'bse_dipole: ' + + integer ixyz,isp,ilo,ihi,jlo,jhi,amo,imo + integer g_dip(3),handle(3),g_tmp1,g_tmp2 + integer k,klocal,kproc,kglobal,tovern,modtn,ktmp,ld + integer ga_create_atom_blocked + external ga_create_atom_blocked + + ! Create dipole matrices + do ixyz=1,3 + g_dip(ixyz) = ga_create_atom_blocked(geom,ao_bas_han,'Dipoles') + if(.not.nga_create(mt_dbl,1,pars%npoles(1),'dip a',0, + & pars%g_dipa(ixyz))) + & call errquit(pname//'could not create g_dipa',0,GA_ERR) + if (pars%ipol.gt.1) then + if(.not.nga_create(mt_dbl,1,pars%npoles(2),'dip b',0, + & pars%g_dipb(ixyz))) + & call errquit(pname//'could not create g_dipb',0,GA_ERR) + endif + enddo + + ! Compute dipole AO integrals for the 3 components + call int_dip_ga(ao_bas_han, ao_bas_han, g_dip(1), g_dip(2), + & g_dip(3)) + + ! Transform dipole matrices + do isp=1,pars%ipol + if (.not.ga_create(mt_dbl,nbf_ao,pars%nocc(isp),'tmp1', + & 0,pars%nocc(isp),g_tmp1)) + & call errquit(pname//'could not create g_tmp1',0,GA_ERR) + if (.not.ga_create(mt_dbl,pars%nvir(isp),pars%nocc(isp),'tmp2', + & pars%nvir(isp),0,g_tmp2)) + & call errquit(pname//'could not create g_tmp2',0,GA_ERR) + + if (isp.eq.1) then + handle(:) = pars%g_dipa(:) + else + handle(:) = pars%g_dipb(:) + endif + + tovern = pars%npoles(isp)/pars%nprocs + modtn = mod(pars%npoles(isp),pars%nprocs) + call ga_distribution(g_tmp2,pars%me,ilo,ihi,jlo,jhi) + do ixyz=1,3 + call ga_matmul_patch('n','n',1d0,0d0, + & g_dip(ixyz),1,nbf_ao,1,nbf_ao, + & pars%g_movecs(isp),1,nbf_ao,1,pars%nocc(isp), + & g_tmp1,1,nbf_ao,1,pars%nocc(isp)) + call ga_matmul_patch('t','n',1d0,0d0, + & pars%g_movecs(isp),1,pars%nvir(isp),1,nbf_ao, + & g_tmp1,1,nbf_ao,1,pars%nocc(isp), + & g_tmp2,1,pars%nvir(isp),1,pars%nocc(isp)) + + call ga_access(g_tmp2,ilo,ihi,jlo,jhi,ktmp,ld) + do imo=jlo,jhi + do amo=ilo,ihi + k = amo + (imo-1)*pars%nvir(isp) + kproc = mod(k-1,pars%nprocs) + klocal = (k-1)/pars%nprocs + 1 + kglobal = klocal + tovern*kproc + min(kproc,modtn) + call nga_put(handle(ixyz),kglobal,kglobal, + & dbl_mb(ktmp+(imo-1)*(ihi-ilo+1)+amo-ilo),1) + enddo + enddo + call ga_release(g_tmp2,ilo,ihi,jlo,jhi) + enddo + if ((.not.ga_destroy(g_tmp1)).and.(.not.ga_destroy(g_tmp2))) + & call errquit(pname//'could not destroy GAs',0,GA_ERR) + enddo + + do ixyz=1,3 + if (.not.ga_destroy(g_dip(ixyz))) + & call errquit(pname//'could not destroy GAs',0,GA_ERR) + enddo + + end diff --git a/src/bsemol/bse_finalize.F b/src/bsemol/bse_finalize.F index dd48873aef..a0b0299cb5 100644 --- a/src/bsemol/bse_finalize.F +++ b/src/bsemol/bse_finalize.F @@ -17,12 +17,19 @@ do i=1,ipol if (.not.ga_destroy(pars%g_movecs(i))) $ call errquit(pname//'failed to destroy g_movecs',0,GA_ERR) -c if (pars%npoles(i).gt.0) then -c if (.not.ga_destroy(pars%g_eriov(i))) -c $ call errquit(pname//'failed to destroy g_moeris',0,GA_ERR) -c endif enddo + do i=1,3 + if(.not.ga_destroy(pars%g_dipa(i))) + $ call errquit(pname//'failed to destroy g_dipa',0,GA_ERR) + enddo + if (ipol.gt.1) then + do i=1,3 + if(.not.ga_destroy(pars%g_dipb(i))) + $ call errquit(pname//'failed to destroy g_dipa',0,GA_ERR) + enddo + endif + ok = ma_chop_stack(pars%l_mf_evals) if (.not.ok) & call errquit(pname//'could not chop stack',0,MA_ERR) diff --git a/src/bsemol/bse_init.F b/src/bsemol/bse_init.F index fd893ffe4c..f962bf7f06 100644 --- a/src/bsemol/bse_init.F +++ b/src/bsemol/bse_init.F @@ -78,8 +78,32 @@ c & (pars%lanczos.and.(pars%analytic.or.pars%davidson))) & call errquit(pname//'more than one method',4,INPUT_ERR) + ! Check wether we are computing singlet or triplet excitations + if(.not.rtdb_get(pars%rtdb,'bse:singlet',mt_log,1,pars%singlet)) + & call errquit(pname//'could not read from rtdb',1,RTDB_ERR) + if(.not.rtdb_get(pars%rtdb,'bse:triplet',mt_log,1,pars%triplet)) + & call errquit(pname//'could not read from rtdb',1,RTDB_ERR) + if((pars%singlet .and. pars%triplet).and.(pars%analytic)) then + call errquit(pname//'select either triplet or singlet',0, + & INPUT_ERR) + endif + ! Check if we are doing Tamm-Dancoff approximation - if (.not.rtdb_get(pars%rtdb,'bse:tda',mt_log,1,pars%tda)) + if(.not.rtdb_get(pars%rtdb,'bse:tda',mt_log,1,pars%tda)) + & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + + ! Check if Output is restricted to an energy window + if(.not.rtdb_get(pars%rtdb,'bse:dowindow',mt_log,1,pars%dowindow)) + & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + if(pars%dowindow) then + if(.not.rtdb_get(pars%rtdb,'bse:elower',mt_dbl,1,pars%elower)) + & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + if(.not.rtdb_get(pars%rtdb,'bse:eupper',mt_dbl,1,pars%eupper)) + & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + endif + + ! Number of roots + if(.not.rtdb_get(pars%rtdb,'bse:nroots',mt_int,1,pars%nroots)) & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) ! Get some info from DFT module @@ -188,13 +212,14 @@ c aq2 = 2d0/9d0 * (1d0-zeta)**2 do i=1,ipol ehomo = dbl_mb(pars%k_mf_evals+(i-1)*nbf_ao+pars%nocc(i)-1) - vxddp = -0.5d0*aq2*(1d0 + sqrt(1d0-4d0*ehomo/aq2)) - vxddm = -0.5d0*aq2*(1d0 - sqrt(1d0-4d0*ehomo/aq2)) + vxddp = -0.5d0*aq2*(1d0 + sqrt(1d0-4d0*ehomo/aq2))*0.8d0 + vxddm = -0.5d0*aq2*(1d0 - sqrt(1d0-4d0*ehomo/aq2))*0.8d0 pars%vxddp(i) = vxddp pars%vxddm(i) = vxddm if (pars%me.eq.0) then - write(luout,1001) ' v_x^{DD+}: ',vxddp*ha2ev, ' eV' - write(luout,1001) ' v_x^(DD-): ',vxddm*ha2ev, ' eV' + write(luout,*) ' Shifting eigvals by 80% NCAP DD' + write(luout,1001) ' v_x^{DD-}: ',vxddp*ha2ev, ' eV' + write(luout,1001) ' v_x^(DD+): ',vxddm*ha2ev, ' eV' endif call dcopy(nbf_ao,dbl_mb(pars%k_mf_evals+(i-1)*nbf_ao),1, & dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao),1) @@ -229,6 +254,9 @@ c call schwarz_init(geom, ao_bas_han) call scf_get_fock_param(pars%rtdb, pars%tol2e) + ! Get dipole in CIS basis + call bse_dipole(pars) + !Clean previous grid call grid_cleanup(.false.) diff --git a/src/bsemol/bse_input.F b/src/bsemol/bse_input.F index 716c48739a..457cfea91b 100644 --- a/src/bsemol/bse_input.F +++ b/src/bsemol/bse_input.F @@ -18,12 +18,13 @@ c character*255 test character(*), parameter :: pname = "bse_input: " c - integer, parameter :: num_dirs = 4 + integer, parameter :: num_dirs = 8 character*11 dirs(num_dirs) - data dirs / 'method', 'tda', 'ncap', 'end' / + data dirs / 'method', 'tda', 'ncap', 'singlet', 'triplet', + & 'outwin', 'nroots', 'end' / c - integer ind, qpiter,eviter,noqp(2),nvqp(2), ngl, first - double precision threshold, eta + integer ind, itemp + double precision threshold, eta, temp double precision, parameter :: ha2ev = 27.211386245988d0 c c Set default values and put them in RTDB @@ -44,7 +45,7 @@ c call errquit(pname//'unknown directive', 0, INPUT_ERR) end if c - goto (100, 200, 300, 9999) ind + goto (100, 200, 300, 400, 500, 600, 700, 9999) ind call errquit(pname//'unknown directive',ind, INPUT_ERR) c @@ -85,6 +86,45 @@ c & call errquit(pname//'rtdb_put failed', 300, RTDB_ERR) goto 10 c +c compute singlet transitions +c + 400 if (.not.rtdb_put(rtdb, 'bse:singlet', mt_log, 1, .true.)) + & call errquit(pname//'rtdb_put failed', 300, RTDB_ERR) + if (.not.rtdb_put(rtdb, 'bse:triplet', mt_log, 1, .false.)) + & call errquit(pname//'rtdb_put failed', 300, RTDB_ERR) + goto 10 +c +c compute singlet transitions +c + 500 if (.not.rtdb_put(rtdb, 'bse:singlet', mt_log, 1, .false.)) + & call errquit(pname//'rtdb_put failed', 300, RTDB_ERR) + if (.not.rtdb_put(rtdb, 'bse:triplet', mt_log, 1, .true.)) + & call errquit(pname//'rtdb_put failed', 300, RTDB_ERR) + goto 10 +c +c output energy window +c + 600 if (.not.rtdb_put(rtdb, 'bse:dowindow', mt_log, 1, .true.)) + & call errquit(pname//'rtdb_put failed', 600, RTDB_ERR) + if(.not.inp_f(temp)) + & call errquit(pname//'could not read lower energy',600,INPUT_ERR) + if(.not.rtdb_put(rtdb,'bse:elower',mt_dbl,1,temp)) + & call errquit(pname//'rtdb_put failed', 600, RTDB_ERR) + if(.not.inp_f(temp)) + & call errquit(pname//'could not read upper energy',600,INPUT_ERR) + if(.not.rtdb_put(rtdb,'bse:eupper',mt_dbl,1,temp)) + & call errquit(pname//'rtdb_put failed', 600, RTDB_ERR) + goto 10 +c +c number of roots +c + 700 if(.not.inp_i(itemp)) + & call errquit(pname//'could not read no. of roots',700,INPUT_ERR) + if(.not.rtdb_put(rtdb,'bse:eupper',mt_int,1,itemp)) + & call errquit(pname//'rtdb_put failed', 700, RTDB_ERR) + goto 10 + +c c normal termination c 9999 return diff --git a/src/bsemol/bse_oscstr.F b/src/bsemol/bse_oscstr.F new file mode 100644 index 0000000000..1740c8302e --- /dev/null +++ b/src/bsemol/bse_oscstr.F @@ -0,0 +1,87 @@ + subroutine bse_oscstr(pars,omega,totpoles) + implicit none +#include "errquit.fh" +#include "stdio.fh" +#include "global.fh" +#include "mafdecls.fh" +#include "bse.fh" + type(bse_params_t) :: pars + + character(*), parameter :: pname = 'bse_oscstr: ' + character(len=7) :: key + + integer totpoles + double precision omega(*) + double precision oscstr,tmp,moms(3) + + integer llpole,ulpole,iroot,ixyz,ipole + + if (pars%singlet) then + key = 'singlet' + else + key = 'triplet' + endif + + ! Get the lower and upper limits + llpole = -1 + if (pars%dowindow) then + iroot = 0 + do ipole=1,totpoles + if (omega(ipole).lt.pars%elower) cycle + if (llpole.eq.-1) llpole = ipole + iroot = iroot + 1 + if (omega(ipole).gt.pars%eupper) then + ulpole = ipole - 1 + exit + endif + if (iroot.eq.pars%nroots) then + ulpole = ipole + exit + endif + enddo + else + llpole = 1 + ulpole = pars%nroots + endif + + + ! Compute the oscillator strengths around an energy window + iroot = 0 + do ipole=llpole,ulpole + iroot = iroot + 1 + oscstr = 0d0 + moms(:) = 0d0 + do ixyz=1,3 + moms(ixyz) = moms(ixyz) + nga_ddot_patch(pars%g_apb,'n', + & (/1,ipole/),(/pars%npoles(1),ipole/), + & pars%g_dipa(ixyz),'n',1,pars%npoles(1)) + oscstr = oscstr + moms(ixyz)**2 + enddo + if (pars%ipol.gt.1) then + do ixyz=1,3 + moms(ixyz) = moms(ixyz) + + & nga_ddot_patch(pars%g_apb,'n',(/pars%npoles(1)+1,ipole/), + & (/totpoles,ipole/), + & pars%g_dipb(ixyz),'n',1,pars%npoles(2)) + oscstr = oscstr + moms(ixyz)**2 + enddo + endif + oscstr = 2d0/3d0*omega(ipole)*oscstr + + if (pars%me.eq.0) then + write(luout,9110) iroot,key,'a1 ',omega(ipole), + & omega(ipole)*ha2ev + write(luout,9200) moms(1),moms(2),moms(3),oscstr + endif + enddo + + 9110 format(2x, + 1 '--------------------------------------------------------------- + 3-------------', + 2 /,2x,'Root',i4,1x,a7,1x,a4,f22.9,' a.u.',f22.4,' eV ',/,2x, + 1 '--------------------------------------------------------------- + 3-------------') + 9200 format(5x,'Transition Moments X',f9.5,' Y',f9.5,' Z',f9.5 + 5 ,/,5x,'Dipole Oscillator Strength',18x,f14.10) + + end diff --git a/src/bsemol/bse_wmn.F b/src/bsemol/bse_wmn.F index 0ed4e09241..61b7e488fb 100644 --- a/src/bsemol/bse_wmn.F +++ b/src/bsemol/bse_wmn.F @@ -15,17 +15,20 @@ integer isp,ilo,ihi,jlo,jhi,keri,ld do isp=1,ipol - ! copy and transform occ-vir block - if(.not.ga_duplicate(pars%g_eriov(isp),pars%g_wov(isp),'Wov')) - & call errquit(pname//'could not duplicate ERI OV',0,GA_ERR) - call ga_copy(pars%g_eriov(isp),pars%g_wov(isp)) - if(pars%mynpoles(isp).eq.0) cycle - call ga_access(pars%g_wov(isp),1,nri,pars%ovlo(isp), - & pars%ovhi(isp),keri,ld) - call dtfsm('n','l','l','n','n',nri,pars%mynpoles(isp),1d0, - & w,dbl_mb(keri),nri) - call ga_release_update(pars%g_wov(isp),1,nri,pars%ovlo(isp), - & pars%ovhi(isp)) + + if (.not.pars%tda) then + ! copy and transform occ-vir block + if(.not.ga_duplicate(pars%g_eriov(isp),pars%g_wov(isp),'Wov')) + & call errquit(pname//'could not duplicate ERI OV',0,GA_ERR) + call ga_copy(pars%g_eriov(isp),pars%g_wov(isp)) + if(pars%mynpoles(isp).eq.0) cycle + call ga_access(pars%g_wov(isp),1,nri,pars%ovlo(isp), + & pars%ovhi(isp),keri,ld) + call dtfsm('n','l','l','n','n',nri,pars%mynpoles(isp),1d0, + & w,dbl_mb(keri),nri) + call ga_release_update(pars%g_wov(isp),1,nri,pars%ovlo(isp), + & pars%ovhi(isp)) + endif ! transform occ-occ and vir-vir blocks in place call ga_distribution(pars%g_erioo(isp),pars%me,ilo,ihi,jlo,jhi) From 0c760c0ef23ffe708c56691061742e54f79cc9f9 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Mon, 15 Aug 2022 16:55:39 -0700 Subject: [PATCH 06/46] Change indexing of MO ERIs --- src/bsemol/GNUmakefile | 2 +- src/bsemol/bse_analytic.F | 5 +- src/bsemol/bse_analytic_cis.F | 67 +++++++++++--------------- src/bsemol/bse_analytic_tda.F | 39 +++++++-------- src/bsemol/bse_dipole.F | 16 ++----- src/bsemol/bse_get_eia.F | 15 ++++++ src/bsemol/bse_puteris.F | 90 +++++++++++++++++++++++++++++++++++ src/bsemol/bse_ri_init.F | 12 ++--- 8 files changed, 162 insertions(+), 84 deletions(-) create mode 100644 src/bsemol/bse_get_eia.F create mode 100644 src/bsemol/bse_puteris.F diff --git a/src/bsemol/GNUmakefile b/src/bsemol/GNUmakefile index bf8113b5ea..3b3051af56 100644 --- a/src/bsemol/GNUmakefile +++ b/src/bsemol/GNUmakefile @@ -2,7 +2,7 @@ OBJ = bsemol.o bse_input.o bse_init.o bse_analytic.o \ bse_davidson.o bse_lanczos.o bse_defaults.o \ bse_finalize.o bse_ri_init.o bse_wmn.o \ bse_analytic_cis.o bse_analytic_tda.o \ - bse_dipole.o bse_oscstr.o + bse_dipole.o bse_oscstr.o bse_puteris.o bse_get_eia.o USES_BLAS = bse_buildw.F bse_ri_init.F bse_wmn.F diff --git a/src/bsemol/bse_analytic.F b/src/bsemol/bse_analytic.F index 273a19e22c..975e31873e 100644 --- a/src/bsemol/bse_analytic.F +++ b/src/bsemol/bse_analytic.F @@ -53,9 +53,10 @@ ! obtain "GW" eigenvalue difference to build Casida matrix do isp=1,pars%ipol lSize = (isp-1)*pars%npoles(1) - call gw_get_eia(dbl_mb(pars%k_gw_evals+(isp-1)*pars%nmo), + call bse_get_eia(dbl_mb(pars%k_gw_evals+(isp-1)*pars%nmo), & dbl_mb(k_dia+lSize),pars%nocc(isp), - & pars%nvir(isp)) + & pars%nvir(isp),pars%ovlo(isp), + % pars%ovhi(isp)) enddo ! Build and diagonalize Casida-like matrix diff --git a/src/bsemol/bse_analytic_cis.F b/src/bsemol/bse_analytic_cis.F index 7d73fa5452..b9fd88adcf 100644 --- a/src/bsemol/bse_analytic_cis.F +++ b/src/bsemol/bse_analytic_cis.F @@ -25,7 +25,7 @@ integer ipole,imo,jmo,amo,bmo integer k,l,kproc,lproc,klocal,llocal,kglobal,lglobal integer g_diag, g_tmp, g_amb, ktmp, ld, info, i, j - integer modtn,tovern + integer ij,jb,llia,ulia #ifdef USE_OPENMP call util_blas_set_num_threads(pars%iMaxthreads) @@ -47,54 +47,43 @@ call ga_distribution(pars%g_apb,pars%me,ilo,ihi,jlo,jhi) if (jhi.ge.jlo) call nga_put(g_diag,jlo,jhi,wia,jhi-jlo+1) + ! Screened Coulomb contribution from B + if(.not.ga_create(mt_dbl,nvir2(1),nocc2(1),'tmp',nvir2(1),0, + & g_tmp)) + & call errquit(pname//'could not create temp GA',1,GA_ERR) + call ga_dgemm('t','n',nvir2(1),nocc2(1),pars%nri,-1d0, + % pars%g_erivv(1),pars%g_erioo(1),0d0,g_tmp) + call ga_distribution(g_tmp,pars%me,ilo,ihi,jlo,jhi) + call ga_access(g_tmp,ilo,ihi,jlo,jhi,ktmp,ld) + ! Need to take care about indexing + do ij=jlo,jhi + jmo = (ij-1)/pars%nocc(1) + 1 + imo = ij - (jmo-1)*pars%nocc(1) + do bmo = 1,pars%nvir(1) + llia = (imo-1)*pars%nvir(1) + 1 + ulia = imo*pars%nvir(1) + jb = (jmo-1)*pars%nvir(1) + bmo + call ga_put(pars%g_apb,llia,ulia,jb,jb, + & dbl_mb(ktmp+(ij-jlo)*nvir2(1)+(bmo-1)*pars%nvir(1)), + & pars%nvir(1)) + enddo + enddo + call ga_copy(pars%g_apb,g_amb) + call ga_release(g_tmp,ilo,ihi,jlo,jhi) + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + ! Screened-Coulomb contribution from A if(.not.ga_create(mt_dbl,totpoles,totpoles,'tmp',0,totpoles, & g_tmp)) & call errquit(pname//'could not create temp GA',1,GA_ERR) call ga_dgemm('t','n',totpoles,totpoles,pars%nri,-1d0, & pars%g_wov(1),pars%g_wov(1),0d0,g_tmp) - call ga_copy(g_tmp,pars%g_apb) - call ga_zero(g_amb) + call ga_add(1d0,g_tmp,1d0,pars%g_apb,pars%g_apb) call ga_add(-1d0,g_tmp,1d0,g_amb,g_amb) if (.not.ga_destroy(g_tmp)) & call errquit(pname//'could not destroy temp GA',1,GA_ERR) - ! Screened Coulomb contribution from B - if(.not.ga_create(mt_dbl,nocc2(1),nvir2(1),'tmp',nocc2(1),0, - & g_tmp)) - & call errquit(pname//'could not create temp GA',1,GA_ERR) - call ga_dgemm('t','n',nocc2(1),nvir2(1),pars%nri,-1d0, - % pars%g_erioo(1),pars%g_erivv(1),0d0,g_tmp) - call ga_distribution(g_tmp,pars%me,ilo,ihi,jlo,jhi) - call ga_access(g_tmp,ilo,ihi,jlo,jhi,ktmp,ld) - - ! Need to take care about some crazy indexing - tovern = totpoles/pars%nprocs - modtn = mod(totpoles,pars%nprocs) - do i=1,nocc2(1) - jmo = (i-1)/pars%nocc(1) + 1 - imo = i - (jmo-1)*pars%nocc(1) - do j=jlo,jhi - bmo = (j-1)/pars%nvir(1) + 1 - amo = j - (bmo-1)*pars%nvir(1) - k = amo + (imo-1)*pars%nvir(1) - l = bmo + (jmo-1)*pars%nvir(1) - kproc = mod(k-1,pars%nprocs) - lproc = mod(l-1,pars%nprocs) - klocal = (k-1)/pars%nprocs + 1 - llocal = (l-1)/pars%nprocs + 1 - kglobal = klocal + kproc*tovern + min(kproc, modtn) - lglobal = llocal + lproc*tovern + min(lproc, modtn) - call ga_acc(pars%g_apb,kglobal,kglobal,lglobal,lglobal, - & dbl_mb(ktmp+(j-jlo)*nocc2(1)+i-1),1,1d0) - call ga_acc(g_amb,kglobal,kglobal,lglobal,lglobal, - & dbl_mb(ktmp+(j-jlo)*nocc2(1)+i-1),1,1d0) - enddo - enddo - call ga_release(g_tmp,ilo,ihi,jlo,jhi) - if (.not.ga_destroy(g_tmp)) - & call errquit(pname//'could not destroy temp GA',1,GA_ERR) - if (singlet) then ! Hartree contribution call ga_dgemm('t','n',totpoles,totpoles,pars%nri,4d0, diff --git a/src/bsemol/bse_analytic_tda.F b/src/bsemol/bse_analytic_tda.F index 029eb6dda9..d0924134d2 100644 --- a/src/bsemol/bse_analytic_tda.F +++ b/src/bsemol/bse_analytic_tda.F @@ -27,6 +27,7 @@ integer g_diag, g_tmp, g_amb, ktmp, ld, info, i, j integer modtn,tovern double precision alpha + integer ij,jb,llia,ulia #ifdef USE_OPENMP call util_blas_set_num_threads(pars%iMaxthreads) @@ -45,34 +46,26 @@ call ga_distribution(pars%g_apb,pars%me,ilo,ihi,jlo,jhi) if (jhi.ge.jlo) call nga_put(g_diag,jlo,jhi,wia,jhi-jlo+1) + ! Screened Coulomb contribution - if(.not.ga_create(mt_dbl,nocc2(1),nvir2(1),'tmp',nocc2(1),0, + if(.not.ga_create(mt_dbl,nvir2(1),nocc2(1),'tmp',nvir2(1),0, & g_tmp)) & call errquit(pname//'could not create temp GA',1,GA_ERR) - call ga_dgemm('t','n',nocc2(1),nvir2(1),pars%nri,-1d0, - % pars%g_erioo(1),pars%g_erivv(1),0d0,g_tmp) + call ga_dgemm('t','n',nvir2(1),nocc2(1),pars%nri,-1d0, + % pars%g_erivv(1),pars%g_erioo(1),0d0,g_tmp) call ga_distribution(g_tmp,pars%me,ilo,ihi,jlo,jhi) call ga_access(g_tmp,ilo,ihi,jlo,jhi,ktmp,ld) - - ! Need to take care about some crazy indexing - tovern = totpoles/pars%nprocs - modtn = mod(totpoles,pars%nprocs) - do i=1,nocc2(1) - jmo = (i-1)/pars%nocc(1) + 1 - imo = i - (jmo-1)*pars%nocc(1) - do j=jlo,jhi - bmo = (j-1)/pars%nvir(1) + 1 - amo = j - (bmo-1)*pars%nvir(1) - k = amo + (imo-1)*pars%nvir(1) - l = bmo + (jmo-1)*pars%nvir(1) - kproc = mod(k-1,pars%nprocs) - lproc = mod(l-1,pars%nprocs) - klocal = (k-1)/pars%nprocs + 1 - llocal = (l-1)/pars%nprocs + 1 - kglobal = klocal + kproc*tovern + min(kproc, modtn) - lglobal = llocal + lproc*tovern + min(lproc, modtn) - call ga_put(pars%g_apb,kglobal,kglobal,lglobal,lglobal, - & dbl_mb(ktmp+(j-jlo)*nocc2(1)+i-1),1) + ! Need to take care about indexing + do ij=jlo,jhi + jmo = (ij-1)/pars%nocc(1) + 1 + imo = ij - (jmo-1)*pars%nocc(1) + do bmo = 1,pars%nvir(1) + llia = (imo-1)*pars%nvir(1) + 1 + ulia = imo*pars%nvir(1) + jb = (jmo-1)*pars%nvir(1) + bmo + call ga_put(pars%g_apb,llia,ulia,jb,jb, + & dbl_mb(ktmp+(ij-jlo)*nvir2(1)+(bmo-1)*pars%nvir(1)), + & pars%nvir(1)) enddo enddo call ga_release(g_tmp,ilo,ihi,jlo,jhi) diff --git a/src/bsemol/bse_dipole.F b/src/bsemol/bse_dipole.F index 421414fb97..d8c23e6468 100644 --- a/src/bsemol/bse_dipole.F +++ b/src/bsemol/bse_dipole.F @@ -59,19 +59,9 @@ & pars%g_movecs(isp),1,pars%nvir(isp),1,nbf_ao, & g_tmp1,1,nbf_ao,1,pars%nocc(isp), & g_tmp2,1,pars%nvir(isp),1,pars%nocc(isp)) - - call ga_access(g_tmp2,ilo,ihi,jlo,jhi,ktmp,ld) - do imo=jlo,jhi - do amo=ilo,ihi - k = amo + (imo-1)*pars%nvir(isp) - kproc = mod(k-1,pars%nprocs) - klocal = (k-1)/pars%nprocs + 1 - kglobal = klocal + tovern*kproc + min(kproc,modtn) - call nga_put(handle(ixyz),kglobal,kglobal, - & dbl_mb(ktmp+(imo-1)*(ihi-ilo+1)+amo-ilo),1) - enddo - enddo - call ga_release(g_tmp2,ilo,ihi,jlo,jhi) + call nga_copy_patch('n',g_tmp2,(/1,1/), + & (/pars%nvir(isp),pars%nocc(isp)/),handle(ixyz),1, + & pars%npoles(isp)) enddo if ((.not.ga_destroy(g_tmp1)).and.(.not.ga_destroy(g_tmp2))) & call errquit(pname//'could not destroy GAs',0,GA_ERR) diff --git a/src/bsemol/bse_get_eia.F b/src/bsemol/bse_get_eia.F new file mode 100644 index 0000000000..084877c276 --- /dev/null +++ b/src/bsemol/bse_get_eia.F @@ -0,0 +1,15 @@ + subroutine bse_get_eia(eig,eia,nocc,nvir,llpole,ulpole) + implicit none + integer,intent(in) :: nocc,nvir + double precision,intent(in),dimension(nocc+nvir) :: eig + double precision,intent(out),dimension(*) :: eia + integer ipole,llpole,ulpole,imo,amo +c + do ipole=llpole,ulpole + imo = (ipole-1)/nvir + 1 + amo = ipole - (imo-1)*nvir + nocc + eia(ipole) = eig(amo) - eig(imo) + enddo +c + return + end subroutine diff --git a/src/bsemol/bse_puteris.F b/src/bsemol/bse_puteris.F new file mode 100644 index 0000000000..8f9de2af05 --- /dev/null +++ b/src/bsemol/bse_puteris.F @@ -0,0 +1,90 @@ + subroutine bse_puteris(erimo,nmo,nstates,nri,nri_me,rilo,ilower, + $ iupper,jlower,jupper,eri,blk,polelo, + $ polehi,mynpoles) + implicit none +#include "mafdecls.fh" +#include "errquit.fh" +#include "global.fh" + + character(len=2),intent(in) :: blk + integer,intent(in) :: nmo, nstates, nri, nri_me, rilo + integer,intent(in) :: ilower, iupper, jlower, jupper + integer,intent(out) :: eri,polelo,polehi,mynpoles + double precision,intent(in),dimension(nstates,nmo,nri_me) :: erimo + + character(len=12),parameter :: pname = 'gw_puteris: ' + character(len=6) :: erilabel,idxlabel + + integer ilo,ihi,jlo,jhi,imo,jmo,ipair,npairs,me,rihi + integer ni,nj,l_tmp,k_tmp,k_loc,ld + integer l_pair,k_pair,mynpairs,jpair,iproc,nprocs,ulpair,llpair + integer ibatch,nbatch,myllpair,myulpair,ma_dbl + integer lmap, kmap + + logical ok + integer,external :: gw_get_pair + + integer l_oo,k_oo,l_ov,k_ov,l_vv,k_vv + double precision temp(nri) + + ni = iupper - ilower + 1 + if (ni.lt.1) return + + nj = jupper - jlower + 1 + if (nj.lt.1) return + + rihi = rilo + nri_me - 1 + me = ga_nodeid() + nprocs = ga_nnodes() + + erilabel = 'eri '//blk + idxlabel = 'idx '//blk + + npairs = ni*nj + mynpairs = npairs/nprocs + 1 + + if (.not.ga_create(mt_dbl,nri,npairs,erilabel,nri,0,eri)) + $ call errquit(pname//'can''t create '//blk//' block',0,GA_ERR) + + ma_dbl = ma_inquire_stack(mt_dbl)/nri_me + nbatch = mynpairs/ma_dbl + 1 + mynpairs = npairs/nbatch + if (mod(npairs,nbatch).ne.0) mynpairs = mynpairs + 1 + mynpairs = min(npairs,mynpairs) + + if (.not.ma_push_get(mt_dbl,mynpairs*nri_me,'temp',l_pair,k_pair)) + $ call errquit(pname//'can''t create temporary array',0,MA_ERR) + + ulpair = 0 + do iproc=0,nprocs-1 + llpair = ulpair + 1 + ulpair = ulpair + npairs/nprocs + if (iproc.lt.mod(npairs,nprocs)) ulpair = ulpair + 1 + if (llpair.gt.ulpair) goto 101 + do ibatch=1,nbatch + myllpair = (ibatch-1)*mynpairs + llpair + myulpair = min(myllpair + mynpairs - 1,ulpair) + do ipair=myllpair,myulpair + jmo = (ipair-1)/ni + 1 + imo = ipair - (jmo-1)*ni + ilower - 1 + jmo = jmo + jlower - 1 + call dcopy(nri_me,erimo(imo,jmo,1),nstates*nmo, + $ dbl_mb(k_pair+(ipair-myllpair)*nri_me),1) + enddo + call ga_put(eri,rilo,rihi,myllpair,myulpair,dbl_mb(k_pair), + $ nri_me) + enddo + 101 continue + call ga_sync() + enddo + + ok = ma_chop_stack(l_pair) + + call ga_distribution(eri,me,ld,ld,polelo,polehi) + + if (blk .eq. 'ov') then + mynpoles = polehi - polelo + 1 + endif + + end subroutine + diff --git a/src/bsemol/bse_ri_init.F b/src/bsemol/bse_ri_init.F index 385e78fa2e..895a32d742 100644 --- a/src/bsemol/bse_ri_init.F +++ b/src/bsemol/bse_ri_init.F @@ -235,19 +235,19 @@ c if (isp.eq.2) addr = k_mo + mopairs(1)*nri_me ! OO block - call gw_puteris(dbl_mb(addr),nmo,nmo,nri,nri_me, + call bse_puteris(dbl_mb(addr),nmo,nmo,nri,nri_me, $ rilo,1,pars%nocc(isp),1,pars%nocc(isp), $ pars%g_erioo(isp),'oo',pars%oolo(isp), $ pars%oohi(isp),idum) ! OV block - call gw_puteris(dbl_mb(addr),nmo,nmo,nri,nri_me, - $ rilo,1,pars%nocc(isp),pars%nocc(isp)+1, - $ nmo,pars%g_eriov(isp),'ov',pars%ovlo(isp), - $ pars%ovhi(isp),pars%mynpoles(isp)) + call bse_puteris(dbl_mb(addr),nmo,nmo,nri,nri_me, + $ rilo,pars%nocc(isp)+1,nmo,1,pars%nocc(isp), + $ pars%g_eriov(isp),'ov',pars%ovlo(isp), + $ pars%ovhi(isp),pars%mynpoles(isp)) ! VV block - call gw_puteris(dbl_mb(addr),nmo,nmo,nri,nri_me, + call bse_puteris(dbl_mb(addr),nmo,nmo,nri,nri_me, $ rilo,pars%nocc(isp)+1,nmo, $ pars%nocc(isp)+1,nmo,pars%g_erivv(isp), $ 'vv',pars%vvlo(isp),pars%vvhi(isp),idum) From 095207109493a465029b584b8d045eba52c6d76b Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 13 Jul 2023 17:21:38 -0700 Subject: [PATCH 07/46] Parallel BSE bug fixes --- src/bsemol/bse.fh | 3 + src/bsemol/bse_analytic.F | 12 +-- src/bsemol/bse_analytic_cis.F | 12 +-- src/bsemol/bse_buildw.F | 5 +- src/bsemol/bse_dipole.F | 3 +- src/bsemol/bse_get_eia.F | 2 +- src/bsemol/bse_init.F | 24 ++++- src/bsemol/bse_oscstr.F | 196 ++++++++++++++++++++++++++++++---- src/bsemol/bse_ri_init.F | 1 - 9 files changed, 216 insertions(+), 42 deletions(-) diff --git a/src/bsemol/bse.fh b/src/bsemol/bse.fh index 4c62604599..c2d8730a74 100644 --- a/src/bsemol/bse.fh +++ b/src/bsemol/bse.fh @@ -21,12 +21,15 @@ c integer :: l_mf_evals, k_mf_evals integer :: l_gw_evals, k_gw_evals integer :: l_occ, k_occ + integer :: l_irs(2),k_irs(2) c integer :: fd c integer :: g_movecs(2), g_moeris, g_sols integer :: g_erioo(2), g_eriov(2), g_erivv(2), g_erim integer :: g_wov(2), g_apb, g_dipa(3), g_dipb(3) + integer :: g_quada(6), g_quadb(6) + integer :: g_dipmaga(3), g_dipmagb(3) logical :: noio c logical :: ncap, davidson, lanczos, analytic, tda diff --git a/src/bsemol/bse_analytic.F b/src/bsemol/bse_analytic.F index 975e31873e..28fada0b3b 100644 --- a/src/bsemol/bse_analytic.F +++ b/src/bsemol/bse_analytic.F @@ -6,7 +6,7 @@ #include "errquit.fh" #include "mafdecls.fh" #include "bse.fh" - +#include "cdft.fh" type(bse_params_t) :: pars character(*), parameter :: pname = 'bse_analytic: ' @@ -35,10 +35,10 @@ ! obtain "old" eigenvalue difference to build W do isp=1,pars%ipol - lSize = (isp-1)*pars%npoles(1) - call gw_get_eia(dbl_mb(pars%k_mf_evals+(isp-1)*pars%nmo), + lSize = (isp-1)*maxpoles + call bse_get_eia(dbl_mb(pars%k_mf_evals+(isp-1)*nbf_ao), & dbl_mb(k_dia+lSize),pars%nocc(isp), - & pars%nvir(isp)) + & pars%nvir(isp),pars%ovlo(isp),pars%ovhi(isp)) enddo ! obtain screened Coulomb matrix @@ -52,8 +52,8 @@ ! obtain "GW" eigenvalue difference to build Casida matrix do isp=1,pars%ipol - lSize = (isp-1)*pars%npoles(1) - call bse_get_eia(dbl_mb(pars%k_gw_evals+(isp-1)*pars%nmo), + lSize = (isp-1)*maxpoles + call bse_get_eia(dbl_mb(pars%k_gw_evals+(isp-1)*nbf_ao), & dbl_mb(k_dia+lSize),pars%nocc(isp), & pars%nvir(isp),pars%ovlo(isp), % pars%ovhi(isp)) diff --git a/src/bsemol/bse_analytic_cis.F b/src/bsemol/bse_analytic_cis.F index b9fd88adcf..eb7a86f188 100644 --- a/src/bsemol/bse_analytic_cis.F +++ b/src/bsemol/bse_analytic_cis.F @@ -45,9 +45,9 @@ nvir2(1) = pars%nvir(1)**2 call ga_distribution(pars%g_apb,pars%me,ilo,ihi,jlo,jhi) - if (jhi.ge.jlo) call nga_put(g_diag,jlo,jhi,wia,jhi-jlo+1) + if (jhi.ge.jlo) call nga_put(g_diag,ilo,ihi,wia,ihi-ilo+1) - ! Screened Coulomb contribution from B + ! Screened Coulomb contribution from A if(.not.ga_create(mt_dbl,nvir2(1),nocc2(1),'tmp',nvir2(1),0, & g_tmp)) & call errquit(pname//'could not create temp GA',1,GA_ERR) @@ -59,21 +59,22 @@ do ij=jlo,jhi jmo = (ij-1)/pars%nocc(1) + 1 imo = ij - (jmo-1)*pars%nocc(1) + llia = (imo-1)*pars%nvir(1) + 1 + ulia = imo*pars%nvir(1) do bmo = 1,pars%nvir(1) - llia = (imo-1)*pars%nvir(1) + 1 - ulia = imo*pars%nvir(1) jb = (jmo-1)*pars%nvir(1) + bmo call ga_put(pars%g_apb,llia,ulia,jb,jb, & dbl_mb(ktmp+(ij-jlo)*nvir2(1)+(bmo-1)*pars%nvir(1)), & pars%nvir(1)) enddo enddo + call ga_sync() call ga_copy(pars%g_apb,g_amb) call ga_release(g_tmp,ilo,ihi,jlo,jhi) if (.not.ga_destroy(g_tmp)) & call errquit(pname//'could not destroy temp GA',1,GA_ERR) - ! Screened-Coulomb contribution from A + ! Screened-Coulomb contribution from B if(.not.ga_create(mt_dbl,totpoles,totpoles,'tmp',0,totpoles, & g_tmp)) & call errquit(pname//'could not create temp GA',1,GA_ERR) @@ -104,7 +105,6 @@ if (.not.ga_destroy(pars%g_wov(1))) & call errquit(pname//'could not destroy wov GA',1,GA_ERR) - ! First step is to get (A-B)^(1/2) call ga_sync() #if defined(PARALLEL_DIAG) diff --git a/src/bsemol/bse_buildw.F b/src/bsemol/bse_buildw.F index 47d48e3532..018ee22531 100644 --- a/src/bsemol/bse_buildw.F +++ b/src/bsemol/bse_buildw.F @@ -15,7 +15,7 @@ double precision w(nri,nri) integer :: ovlo,ovhi,kov(2),isp - integer :: ldpi, sizepi + integer :: ldpi, sizepi, iri, jri integer :: alloc, info, ld, ipole double precision,allocatable :: factor(:,:) @@ -69,7 +69,8 @@ C if (pars%mynpoles(isp).lt.1) cycle ovlo = pars%ovlo(isp) ovhi = pars%ovhi(isp) - call ga_release_update(pars%g_eriov(isp),1,nri,ovlo,ovhi) + call ga_release(pars%g_eriov(isp),1,nri,ovlo,ovhi) enddo end + diff --git a/src/bsemol/bse_dipole.F b/src/bsemol/bse_dipole.F index d8c23e6468..235ab412f3 100644 --- a/src/bsemol/bse_dipole.F +++ b/src/bsemol/bse_dipole.F @@ -56,7 +56,8 @@ & pars%g_movecs(isp),1,nbf_ao,1,pars%nocc(isp), & g_tmp1,1,nbf_ao,1,pars%nocc(isp)) call ga_matmul_patch('t','n',1d0,0d0, - & pars%g_movecs(isp),1,pars%nvir(isp),1,nbf_ao, + & pars%g_movecs(isp),pars%nocc(isp)+1, + & pars%nmo,1,nbf_ao, & g_tmp1,1,nbf_ao,1,pars%nocc(isp), & g_tmp2,1,pars%nvir(isp),1,pars%nocc(isp)) call nga_copy_patch('n',g_tmp2,(/1,1/), diff --git a/src/bsemol/bse_get_eia.F b/src/bsemol/bse_get_eia.F index 084877c276..ccbddfb6f1 100644 --- a/src/bsemol/bse_get_eia.F +++ b/src/bsemol/bse_get_eia.F @@ -8,7 +8,7 @@ c do ipole=llpole,ulpole imo = (ipole-1)/nvir + 1 amo = ipole - (imo-1)*nvir + nocc - eia(ipole) = eig(amo) - eig(imo) + eia(ipole-llpole+1) = eig(amo) - eig(imo) enddo c return diff --git a/src/bsemol/bse_init.F b/src/bsemol/bse_init.F index f962bf7f06..881dba0a8c 100644 --- a/src/bsemol/bse_init.F +++ b/src/bsemol/bse_init.F @@ -22,7 +22,7 @@ character(*), parameter :: pname = 'bse_init: ' character(len=255) :: basisname, scftype, gwevals - integer i, ilo, ihi, j + integer i, ilo, ihi, j, g_work integer nbf_temp, ipol_temp, nocc, nvir, nmo_temp(2) logical ldum @@ -40,6 +40,7 @@ c double precision t0, ehomo, vxddp, vxddm, aq2, zeta integer,parameter :: unitno = 66 + integer :: nmix(2) #ifdef USE_OPENMP integer,external :: omp_get_max_threads, omp_get_thread_num @@ -209,11 +210,12 @@ c & call errquit(pname//'rtdb_get failed',176,RTDB_ERR) if (pars%ncap) then zeta = 0.304121d0 + if (xfac(87).gt.1d-10) zeta=0.5d0 aq2 = 2d0/9d0 * (1d0-zeta)**2 do i=1,ipol ehomo = dbl_mb(pars%k_mf_evals+(i-1)*nbf_ao+pars%nocc(i)-1) - vxddp = -0.5d0*aq2*(1d0 + sqrt(1d0-4d0*ehomo/aq2))*0.8d0 - vxddm = -0.5d0*aq2*(1d0 - sqrt(1d0-4d0*ehomo/aq2))*0.8d0 + vxddp = -0.5d0*aq2*(1d0 + sqrt(1d0-4d0*ehomo/aq2))*0.9d0 + vxddm = -0.5d0*aq2*(1d0 - sqrt(1d0-4d0*ehomo/aq2))*0.9d0 pars%vxddp(i) = vxddp pars%vxddm(i) = vxddm if (pars%me.eq.0) then @@ -254,6 +256,22 @@ c call schwarz_init(geom, ao_bas_han) call scf_get_fock_param(pars%rtdb, pars%tol2e) + ! Obtain irreps information + do i=1,ipol + if(.not.ma_push_get(mt_int,nbf_ao,'irreps',pars%l_irs(i), + $ pars%k_irs(i))) call errquit + $ ('bse_init: failed to allocate irs',0,MA_ERR) + if(.not.ga_create(mt_dbl,nbf_ao,pars%nmo,'Work',nbf_ao,-1, + $ g_work)) + $ call errquit('bse_init: failed to allocate work',0,GA_ERR) + call ga_copy_patch('n',pars%g_movecs(i),1,nbf_ao,1,pars%nmo, + $ g_work,1,nbf_ao,1,pars%nmo) + call sym_movecs_adapt(ao_bas_han, 1.0d-8, g_work, + $ int_mb(pars%k_irs(i)),nmix(i)) + if(.not.ga_destroy(g_work)) call errquit + $ ('bse_init: failed to destroy g_work',0, GA_ERR) + enddo + ! Get dipole in CIS basis call bse_dipole(pars) diff --git a/src/bsemol/bse_oscstr.F b/src/bsemol/bse_oscstr.F index 1740c8302e..2538b87b68 100644 --- a/src/bsemol/bse_oscstr.F +++ b/src/bsemol/bse_oscstr.F @@ -5,6 +5,11 @@ #include "global.fh" #include "mafdecls.fh" #include "bse.fh" +#include "cdft.fh" +#include "rtdb.fh" +#include "sym.fh" +#include "util.fh" +#include "inp.fh" type(bse_params_t) :: pars character(*), parameter :: pname = 'bse_oscstr: ' @@ -12,9 +17,31 @@ integer totpoles double precision omega(*) - double precision oscstr,tmp,moms(3) + double precision oscstr(3),oscstr_tot,tmp,moms(20),maxr,r(1) + + integer llpole,ulpole,iroot,ixyz,ipole,mag_transdip(3) + + integer isym,jsym,i,j,k,l,pol,occ,vir + integer g_td(2),g_xy(2),g_dipmag + character*4 oname,vname + + logical ltransden + double precision origin(3) + data origin/0d0,0d0,0d0/ + + character*(nw_max_path_len) fn_civecs, fn_transden + logical,external :: dmat_to_file + + if(.not.rtdb_get(pars%rtdb,'bse:ltransden',mt_log,1,ltransden)) + $ ltransden = .false. + if(.not.nga_create(mt_dbl,3,(/nbf_ao,nbf_ao,3/),'mag_dipole', + $ (/nbf_ao,-1,-1/),g_dipmag)) + $ call errquit('bse_oscstr: nga_create failed g_dipmag',0,GA_ERR) + call ga_zero(g_dipmag) + call int_giao_1ega(ao_bas_han,ao_bas_han,g_dipmag,'angmom',origin, + $ 1,.false.) + call ga_scale(g_dipmag,0.5d0) - integer llpole,ulpole,iroot,ixyz,ipole if (pars%singlet) then key = 'singlet' @@ -43,36 +70,144 @@ llpole = 1 ulpole = pars%nroots endif - + + + ! Get symmetry of ground state + isym = 1 + if (pars%ipol.eq.2) then + do i=1,pars%ipol + do j=1,pars%nocc(i) + isym = ieor(isym-1,int_mb(pars%k_irs(i)+j-1)-1)+1 + enddo + enddo + endif + call sym_irrepname(geom, isym, oname) + + + ! Allocate transition density matrices + do i=1,pars%ipol + if(.not.ga_create(mt_dbl,nbf_ao,nbf_ao,'Transition density', + $ -1,-1,g_td(i))) call errquit + $ ('bse_oscstr: failed to create g_td',0,GA_ERR) + if(.not.ga_create(mt_dbl,pars%npoles(i),1,'X+Y vector',-1,1, + $ g_xy(i))) call errquit + $ ('bse_oscstr: failed to create g_xy',0,GA_ERR) + enddo ! Compute the oscillator strengths around an energy window iroot = 0 do ipole=llpole,ulpole - iroot = iroot + 1 - oscstr = 0d0 - moms(:) = 0d0 - do ixyz=1,3 - moms(ixyz) = moms(ixyz) + nga_ddot_patch(pars%g_apb,'n', - & (/1,ipole/),(/pars%npoles(1),ipole/), - & pars%g_dipa(ixyz),'n',1,pars%npoles(1)) - oscstr = oscstr + moms(ixyz)**2 - enddo + iroot = iroot + 1 + oscstr_tot = 0d0 + moms(:) = 0d0 + oscstr(:) = 0d0 + mag_transdip = 0d0 + + call ga_copy_patch('n',pars%g_apb,1,pars%npoles(1),ipole,ipole, + & g_xy(1),1,pars%npoles(1),1,1) if (pars%ipol.gt.1) then + call ga_copy_patch('n',pars%g_apb,pars%npoles(1)+1,totpoles, + & ipole,ipole,g_xy(2),1,pars%npoles(2),1,1) + endif + call tddft_transfm(1,g_xy,pars%g_movecs,nbf_ao,pars%nocc, + & (/pars%nmo,pars%nmo/),0,0,pars%ipol,g_td,1) + + do i=1,pars%ipol + call multipole_density(ao_bas_han,origin,3,g_td(i),moms,20) do ixyz=1,3 - moms(ixyz) = moms(ixyz) + - & nga_ddot_patch(pars%g_apb,'n',(/pars%npoles(1)+1,ipole/), - & (/totpoles,ipole/), - & pars%g_dipb(ixyz),'n',1,pars%npoles(2)) - oscstr = oscstr + moms(ixyz)**2 + mag_transdip(ixyz) = mag_transdip(ixyz) + + $ nga_ddot_patch(g_td(i),'n',(/1,1/),(/nbf_ao,nbf_ao/), + $ g_dipmag,'n',(/1,1,ixyz/), + $ (/nbf_ao,nbf_ao,ixyz/)) + enddo + enddo + + if (ltransden) then + call util_file_name('tdens',.false.,.false.,fn_transden) + call createuniquefilename(fn_transden,ipole) + call util_file_name_resolve(fn_transden,.false.) + if (pars%ipol.gt.1) + & call ga_add(1d0,g_td(1),1d0,g_td(2),g_td(1)) + + call ga_symmetrize(g_td(1)) + + if(.not. dmat_to_file(g_td(1),fn_transden)) + & call errquit('bse_oscstr: dmat_to_file error',0,CALC_ERR) + endif + + if (pars%ipol.eq.1) then + do i=1,20 + moms(i) = moms(i)*dsqrt(2.0d0) enddo endif - oscstr = 2d0/3d0*omega(ipole)*oscstr if (pars%me.eq.0) then - write(luout,9110) iroot,key,'a1 ',omega(ipole), - & omega(ipole)*ha2ev - write(luout,9200) moms(1),moms(2),moms(3),oscstr + call tddft_oscstr(moms, omega(ipole), mag_transdip, + & oscstr, oscstr_tot) + +c do ixyz=1,3 +c moms(ixyz) = moms(ixyz) + nga_ddot_patch(pars%g_apb,'n', +c & (/1,ipole/),(/pars%npoles(1),ipole/), +c & pars%g_dipa(ixyz),'n',1,pars%npoles(1)) +c oscstr = oscstr + moms(ixyz)**2 +c enddo +c if (pars%ipol.gt.1) then +c do ixyz=1,3 +c moms(ixyz) = moms(ixyz) + +c & nga_ddot_patch(pars%g_apb,'n',(/pars%npoles(1)+1,ipole/), +c & (/totpoles,ipole/), +c & pars%g_dipb(ixyz),'n',1,pars%npoles(2)) +c oscstr = oscstr + moms(ixyz)**2 +c enddo +c endif +c oscstr = 2d0/3d0*omega(ipole)*oscstr + + l = 0 + maxr = 0.0d0 + do i=1,pars%ipol + if (pars%npoles(i).eq.0) cycle + do j=1,pars%nocc(i) + do k=pars%nocc(i)+1,pars%nmo + l = l + 1 + call ga_get(pars%g_apb,l,l,ipole,ipole,r,1) + if (dabs(r(1)).gt.maxr) then + maxr = dabs(r(1)) + pol = i + occ = j + vir = k + endif + enddo + enddo + enddo + jsym = ieor(isym-1,int_mb(pars%k_irs(pol)+occ-1)-1)+1 + jsym = ieor(jsym-1,int_mb(pars%k_irs(pol)+vir-1)-1)+1 + call sym_irrepname(geom, jsym, vname) + + write(luout,9110) iroot,key,vname,omega(ipole), + & omega(ipole)*ha2ev + + if (pars%singlet) then + write(luout,9200) moms(2),moms(3),moms(4), + & moms(5),moms(6),moms(7), + & moms(8),moms(9),moms(10), + & oscstr(1),oscstr(2),oscstr(3), + & oscstr_tot + else + write(luout,9210) + endif + + endif + + enddo + + if (.not.ga_destroy(g_dipmag)) + & call errquit('bse_oscstr: ga_destroy failed',0,GA_ERR) + do i=1,pars%ipol + if (.not.ga_destroy(g_td(i))) + & call errquit('bse_oscstr: ga_destroy failed',0,GA_ERR) + if (.not.ga_destroy(g_xy(i))) + & call errquit('bse_oscstr: ga_destroy failed',0,GA_ERR) enddo 9110 format(2x, @@ -82,6 +217,23 @@ 1 '--------------------------------------------------------------- 3-------------') 9200 format(5x,'Transition Moments X',f9.5,' Y',f9.5,' Z',f9.5 - 5 ,/,5x,'Dipole Oscillator Strength',18x,f14.10) + 1 ,/,5x,'Transition Moments XX',f9.5,' XY',f9.5,' XZ',f9.5 + 2 ,/,5x,'Transition Moments YY',f9.5,' YZ',f9.5,' ZZ',f9.5 + 5 ,/,5x,'Dipole Oscillator Strength',18x,f14.10 + 5 ,/,5x,'Electric Quadrupole ',18x,f14.10 + 5 ,/,5x,'Magnetic Dipole ',18x,f14.10 + 5 ,/,5x,'Total Oscillator Strength ',18x,f14.10) + 9210 format(5x,'Transition Moments Spin forbidden' + 1 ,/,5x,'Oscillator Strength Spin forbidden') + 9120 format(5x,'Occ.',i5,2x,a4,'--- Virt.',i5,2x,a4,f12.5) + 9130 format(5x,'Occ.',i5,2x,a4,'--- Virt.',i5,2x,a4,f8.5,' X') + 9140 format(5x,'Occ.',i5,2x,a4,'--- Virt.',i5,2x,a4,f8.5,' Y') + 9150 format(5x,'Occ.',i5,1x,a5,1x,a4,'--- Virt.', + 1 i5,1x,a5,1x,a4,f12.5) + 9160 format(5x,'Occ.',i5,1x,a5,1x,a4,'--- Virt.', + 1 i5,1x,a5,1x,a4,f8.5,' X') + 9170 format(5x,'Occ.',i5,1x,a5,1x,a4,'--- Virt.', + 1 i5,1x,a5,1x,a4,f8.5,' Y') + end diff --git a/src/bsemol/bse_ri_init.F b/src/bsemol/bse_ri_init.F index 895a32d742..cd86e39e01 100644 --- a/src/bsemol/bse_ri_init.F +++ b/src/bsemol/bse_ri_init.F @@ -274,7 +274,6 @@ c if (pars%me.eq.0) write(*,*) ' Orthogonalize ERIs' #endif do isp=1,pars%ipol - if (nmo.eq.0) cycle c c Transform OO block c From 5efbdff3438d92b41d1a97f34dc0d005f35b821f Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 13 Jul 2023 17:23:06 -0700 Subject: [PATCH 08/46] NCAPR --- src/nwdft/input_dft/dft_rdinput.F | 2 ++ src/nwdft/input_dft/xc_inp.F | 18 +++++++++++++++--- src/nwdft/lr_tddft/tddft_analysis.F | 1 + src/nwdft/xc/xc_eval_fnl.F | 23 ++++++++++++++++++++--- src/nwdft/xc/xc_xncap.F | 23 +++++++++++++++++------ 5 files changed, 55 insertions(+), 12 deletions(-) diff --git a/src/nwdft/input_dft/dft_rdinput.F b/src/nwdft/input_dft/dft_rdinput.F index 81d3565eb0..ac03d289cc 100644 --- a/src/nwdft/input_dft/dft_rdinput.F +++ b/src/nwdft/input_dft/dft_rdinput.F @@ -703,6 +703,7 @@ c xname(83)=' MN15-L Exchange Functional' xname(84)=' MN15 Exchange Functional' xname(85)=' M06-SX Exchange Functional' + xname(87)=' NCAPR GGA Exchange Functional' c c Exchange-Correlation combination functional name defaults. c @@ -785,6 +786,7 @@ c xcname(84)=' MN15 Method XC Functional' xcname(85)=' M06-SX Method XC Functional' xcname(86)=' r^2SCAN0 Method XC Functional' + xcname(87)=' NCAPR Method XC Functional' c c place character XC parameters in rtdb c diff --git a/src/nwdft/input_dft/xc_inp.F b/src/nwdft/input_dft/xc_inp.F index f59a74d3e2..696ef9c8f4 100644 --- a/src/nwdft/input_dft/xc_inp.F +++ b/src/nwdft/input_dft/xc_inp.F @@ -153,7 +153,7 @@ c c r2scan0 ==> 19 c integer num_dirs, ind, mlen, iline, n, itemp - parameter (num_dirs=168) + parameter (num_dirs=169) c character*15 dirs(num_dirs) character*255 test @@ -212,7 +212,7 @@ c & 'xscan', 'cscan', & 'hcth147@tz2p', W 'wb97','wb97x','wb97x-d3', - & 'xr2scan', 'cr2scan','r2scan0' / + & 'xr2scan', 'cr2scan','r2scan0', 'ncapr' / c becke97-d, ssb-d logical disp, dumdirect integer ivdw @@ -298,7 +298,8 @@ c & 9710,9720,9650,9660,9615,9616, & 1947, & 9410,9420,9430, - & 9661,9662,9670, + & 9661,9662,9670, + & 9730, & 1999 ) ind @@ -1817,6 +1818,17 @@ c nlxfac(72) = .true. xfac(72) = 1.0d0 goto 10 + + +9730 xccomb(87) = .true. + cfac(3) = 1d0 + lcfac(3) = .true. + cfac(4) = 1d0 + nlcfac(4) = .true. + lxfac(87) = .true. + nlxfac(87) = .true. + xfac(87) = 1.0d0 + goto 10 c c r2SCAN metaGGA c diff --git a/src/nwdft/lr_tddft/tddft_analysis.F b/src/nwdft/lr_tddft/tddft_analysis.F index 6d6d13712c..53f66fe845 100644 --- a/src/nwdft/lr_tddft/tddft_analysis.F +++ b/src/nwdft/lr_tddft/tddft_analysis.F @@ -1646,6 +1646,7 @@ c Clean scratch space if (nodezero) call util_flush(LuOut) c endif ! gmh + c enddo ! outer loop over roots c diff --git a/src/nwdft/xc/xc_eval_fnl.F b/src/nwdft/xc/xc_eval_fnl.F index 991ae62c56..3f27d51b83 100644 --- a/src/nwdft/xc/xc_eval_fnl.F +++ b/src/nwdft/xc/xc_eval_fnl.F @@ -1855,15 +1855,32 @@ c if (.not. do_2nd .and..not. do_3rd) then call xc_xncap(tol_rho, xfac(72), rho, & delrho, Amat, Cmat, nq, ipol, - & Ex, qwght, ldew, func) + & Ex, qwght, ldew, func, ' ') else if (.not. do_3rd) then call xc_xncap_d2(tol_rho, xfac(72), rho, & delrho, Amat, Amat2, Cmat, Cmat2, nq, ipol, - & Ex, qwght, ldew, func) + & Ex, qwght, ldew, func, ' ') else call xc_xncap_d3(tol_rho, xfac(72), rho, & delrho, Amat, Amat2, Amat3, Cmat, Cmat2, Cmat3, - & nq, ipol, Ex, qwght, ldew, func) + & nq, ipol, Ex, qwght, ldew, func, ' ') + endif + endif +c + + if (abs(xfac(87)).gt.eps)then + if (.not. do_2nd .and..not. do_3rd) then + call xc_xncap(tol_rho, xfac(87), rho, + & delrho, Amat, Cmat, nq, ipol, + & Ex, qwght, ldew, func, 'r') + else if (.not. do_3rd) then + call xc_xncap_d2(tol_rho, xfac(87), rho, + & delrho, Amat, Amat2, Cmat, Cmat2, nq, ipol, + & Ex, qwght, ldew, func, 'r') + else + call xc_xncap_d3(tol_rho, xfac(87), rho, + & delrho, Amat, Amat2, Amat3, Cmat, Cmat2, Cmat3, + & nq, ipol, Ex, qwght, ldew, func, 'r') endif endif c diff --git a/src/nwdft/xc/xc_xncap.F b/src/nwdft/xc/xc_xncap.F index 02e3223b39..26525d4658 100644 --- a/src/nwdft/xc/xc_xncap.F +++ b/src/nwdft/xc/xc_xncap.F @@ -32,19 +32,23 @@ c c #if !defined SECOND_DERIV && !defined THIRD_DERIV Subroutine xc_xncap(tol_rho, fac, rho, delrho, - & Amat, Cmat, nq, ipol, Ex, qwght,ldew,func) + & Amat, Cmat, nq, ipol, Ex, qwght,ldew,func, + & version) #elif defined(SECOND_DERIV) && !defined THIRD_DERIV Subroutine xc_xncap_d2(tol_rho, fac, rho, delrho, & Amat, Amat2, Cmat, Cmat2, nq, ipol, Ex, - & qwght,ldew,func) + & qwght,ldew,func, + & version) #else Subroutine xc_xncap_d3(tol_rho, fac, rho, delrho, & Amat, Amat2, Amat3, Cmat, Cmat2, Cmat3, - & nq, ipol, Ex, qwght,ldew,func) + & nq, ipol, Ex, qwght,ldew,func, + & version) #endif c implicit none -c +c + character*1 version double precision fac, Ex integer nq, ipol logical ldew @@ -77,8 +81,7 @@ c double precision ckf, Ax double precision F43, F13, F23, F49 c - parameter(mu=0.2195149727645171d0, beta=0.01808569669d0) - parameter(zeta=0.30412141859531383d0) + parameter(mu=0.2195149727645171d0) parameter (F43=4.d0/3.d0, F13=1.d0/3.d0, F23=2.0d0/3.0d0) parameter (F49=4d0/9d0) @@ -105,6 +108,14 @@ c d2arcsinh(s) = -s/dsqrt(1d0+s*s)**3 d3arcsinh(s) = (2d0*s*s - 1d0)/dsqrt(1d0+s*s)**5 c + if (version.eq.'r') then + zeta = 0.5d0 + beta = 0.017983d0 + else + zeta = 0.30412141859531383d0 + beta = 0.01808569669d0 + endif + pi = acos(-1.d0) ckf = (3d0*pi*pi)**F13 Ax = -3d0/(4d0*pi)*ckf From 00583977fa1aa9a7547b6e7a2e46ca446606ecad Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Tue, 18 Jul 2023 17:30:30 -0700 Subject: [PATCH 09/46] BSE open-shell --- src/bsemol/bse_analytic.F | 8 +- src/bsemol/bse_analytic_cis.F | 205 ++++++++++++++++++++++++++++--- src/bsemol/bse_analytic_tda.F | 100 ++++++++++++++- src/bsemol/bse_buildw.F | 2 +- src/bsemol/bse_defaults.F | 1 + src/bsemol/bse_init.F | 58 +++++---- src/bsemol/bse_input.F | 14 ++- src/bsemol/bse_oscstr.F | 12 +- src/gwmol/.gw_analytic_rpa.F.swp | Bin 0 -> 16384 bytes src/gwmol/gw_analytic.F | 32 ++++- src/gwmol/gw_analytic_newton.F | 19 ++- src/gwmol/gw_cdgw.F | 78 +++++++----- src/gwmol/gw_cdgw_newton.F | 7 +- src/gwmol/gw_donewton.F | 6 +- src/gwmol/gw_init.F | 19 ++- src/gwmol/gw_vxc.F | 3 +- 16 files changed, 460 insertions(+), 104 deletions(-) create mode 100644 src/gwmol/.gw_analytic_rpa.F.swp diff --git a/src/bsemol/bse_analytic.F b/src/bsemol/bse_analytic.F index 28fada0b3b..34704b7bbb 100644 --- a/src/bsemol/bse_analytic.F +++ b/src/bsemol/bse_analytic.F @@ -40,6 +40,9 @@ & dbl_mb(k_dia+lSize),pars%nocc(isp), & pars%nvir(isp),pars%ovlo(isp),pars%ovhi(isp)) enddo + if (pars%me.eq.0) then + call ma_print(dbl_mb(k_dia),pars%mynpoles(1),1,'Diff1') + endif ! obtain screened Coulomb matrix call bse_buildw(pars,dbl_mb(k_dia),dbl_mb(kW),pars%nmo,nri, @@ -56,8 +59,11 @@ call bse_get_eia(dbl_mb(pars%k_gw_evals+(isp-1)*nbf_ao), & dbl_mb(k_dia+lSize),pars%nocc(isp), & pars%nvir(isp),pars%ovlo(isp), - % pars%ovhi(isp)) + & pars%ovhi(isp)) enddo + if (pars%me.eq.0) then + call ma_print(dbl_mb(k_dia),pars%mynpoles(1),1,'Diff2') + endif ! Build and diagonalize Casida-like matrix if (pars%tda) then diff --git a/src/bsemol/bse_analytic_cis.F b/src/bsemol/bse_analytic_cis.F index eb7a86f188..c8841fbde5 100644 --- a/src/bsemol/bse_analytic_cis.F +++ b/src/bsemol/bse_analytic_cis.F @@ -14,14 +14,15 @@ type(bse_params_t) :: pars logical singlet - integer maxpoles, totpoles + integer maxpoles, totpoles, npoles double precision wia(maxpoles,pars%ipol) double precision omega(totpoles) character(*),parameter :: pname = 'bse_casida: ' + integer isp,jsp,nri,off1,off2 integer ilo,ihi,jlo,jhi - integer nocc2(3),nvir2(3) + integer nocc2(2),nvir2(2) integer ipole,imo,jmo,amo,bmo integer k,l,kproc,lproc,klocal,llocal,kglobal,lglobal integer g_diag, g_tmp, g_amb, ktmp, ld, info, i, j @@ -31,13 +32,17 @@ call util_blas_set_num_threads(pars%iMaxthreads) #endif - if(.not.ga_create(mt_dbl,totpoles,totpoles,'apb',0,totpoles, + nri = pars%nri + npoles = pars%npoles(1) + if (pars%ipol.gt.1) npoles = npoles + pars%npoles(2) + + if(.not.ga_create(mt_dbl,npoles,npoles,'apb',0,npoles, & pars%g_apb)) & call errquit(pname//'could not create A+B GA',0,GA_ERR) - if(.not.ga_create(mt_dbl,totpoles,totpoles,'amb',0,totpoles, + if(.not.ga_create(mt_dbl,npoles,npoles,'amb',0,npoles, & g_amb)) & call errquit(pname//'could not create A-B GA',0,GA_ERR) - if (.not.nga_create(mt_dbl,1,totpoles,'wia',0,g_diag)) + if (.not.nga_create(mt_dbl,1,npoles,'wia',0,g_diag)) $ call errquit(pname//'could not create wia',0,GA_ERR) if (pars%ipol.eq.1) then @@ -75,10 +80,10 @@ & call errquit(pname//'could not destroy temp GA',1,GA_ERR) ! Screened-Coulomb contribution from B - if(.not.ga_create(mt_dbl,totpoles,totpoles,'tmp',0,totpoles, + if(.not.ga_create(mt_dbl,npoles,npoles,'tmp',0,npoles, & g_tmp)) & call errquit(pname//'could not create temp GA',1,GA_ERR) - call ga_dgemm('t','n',totpoles,totpoles,pars%nri,-1d0, + call ga_dgemm('t','n',npoles,npoles,pars%nri,-1d0, & pars%g_wov(1),pars%g_wov(1),0d0,g_tmp) call ga_add(1d0,g_tmp,1d0,pars%g_apb,pars%g_apb) call ga_add(-1d0,g_tmp,1d0,g_amb,g_amb) @@ -87,7 +92,7 @@ if (singlet) then ! Hartree contribution - call ga_dgemm('t','n',totpoles,totpoles,pars%nri,4d0, + call ga_dgemm('t','n',npoles,npoles,pars%nri,4d0, & pars%g_eriov(1),pars%g_eriov(1),1d0,pars%g_apb) endif @@ -118,12 +123,12 @@ #endif ! Transform (A+B) matrix with Cholesky factors - if(.not.ga_create(mt_dbl,totpoles,totpoles,'tmp',0,totpoles, + if(.not.ga_create(mt_dbl,npoles,npoles,'tmp',0,npoles, & g_tmp)) & call errquit(pname//'could not create temp GA',1,GA_ERR) - call ga_dgemm('n','n',totpoles,totpoles,totpoles,1d0, + call ga_dgemm('n','n',npoles,npoles,npoles,1d0, & pars%g_apb,g_amb,0d0,g_tmp) - call ga_dgemm('t','n',totpoles,totpoles,totpoles,1d0, + call ga_dgemm('t','n',npoles,npoles,npoles,1d0, & g_amb,g_tmp,0d0,pars%g_apb) if (.not.ga_destroy(g_tmp)) & call errquit(pname//'could not destroy temp GA',1,GA_ERR) @@ -145,16 +150,16 @@ ! (Equation (32)). ! !$omp parallel do - do ipole=1,totpoles + do ipole=1,npoles omega(ipole) = dsqrt(omega(ipole)) enddo !$omp end parallel do ! Transform eigenvectors with (A-B)^(1/2) - if(.not.ga_create(mt_dbl,totpoles,totpoles,'tmp',0,totpoles, + if(.not.ga_create(mt_dbl,npoles,npoles,'tmp',0,npoles, & g_tmp)) & call errquit(pname//'could not create temp GA',1,GA_ERR) - call ga_dgemm('n','n',totpoles,totpoles,totpoles,1d0, + call ga_dgemm('n','n',npoles,npoles,npoles,1d0, & g_amb,pars%g_apb,0d0,g_tmp) ! Gather neutral excitations vectors @@ -176,6 +181,178 @@ & call errquit(pname//'could not destroy temp GA',1,GA_ERR) else + nocc2(1) = pars%nocc(1)**2 + nvir2(1) = pars%nvir(1)**2 + nocc2(2) = pars%nocc(2)**2 + nvir2(2) = pars%nvir(2)**2 + + call ga_zero(pars%g_apb) + + ! Gather eigenvalue differences + call ga_distribution(pars%g_eriov(1),pars%me,ilo,ihi,jlo,jhi) + call nga_put(g_diag,jlo,jhi,wia(1,1),jhi-jlo+1) + call ga_distribution(pars%g_eriov(2),pars%me,ilo,ihi,jlo,jhi) + call nga_put(g_diag,jlo+pars%npoles(1),jhi+pars%npoles(1), + $ wia(1,2),jhi-jlo+1) + + do isp=1,pars%ipol + off1 = (isp-1)*pars%npoles(1) + + ! Add Screened Coulomb contribution from A + if (.not.ga_create(mt_dbl,nvir2(isp),nocc2(isp),'tmp', + $ nvir2(isp),0,g_tmp)) + $ call errquit('bse_analytic_tda: could not create tmp',145, + $ GA_ERR) + + call ga_dgemm('t','n',nvir2(isp),nocc2(isp),nri,-1d0, + $ pars%g_erivv(isp),pars%g_erioo(isp),0d0,g_tmp) + call ga_distribution(g_tmp,pars%me,ilo,ihi,jlo,jhi) + call ga_access(g_tmp,ilo,ihi,jlo,jhi,ktmp,ihi-ilo+1) + do ij=jlo,jhi + jmo = (ij-1)/pars%nocc(isp) + 1 + imo = ij - (jmo-1)*pars%nocc(isp) + do bmo = 1,pars%nvir(isp) + llia = (imo-1)*pars%nvir(isp) + 1 + off1 + ulia = imo*pars%nvir(isp) + off1 + jb = (jmo-1)*pars%nvir(isp) + bmo + off1 + call ga_put(pars%g_apb,llia,ulia,jb,jb, + & dbl_mb(ktmp+(ij-jlo)*nvir2(isp)+ + & (bmo-1)*pars%nvir(isp)),pars%nvir(isp)) + enddo + enddo + call ga_release(g_tmp,ilo,ihi,jlo,jhi) + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',172,GA_ERR) + + ! Destroy ERIs + if (.not.ga_destroy(pars%g_erioo(isp))) + & call errquit(pname//'could not destroy erioo GA',175,GA_ERR) + if (.not.ga_destroy(pars%g_erivv(isp))) + & call errquit(pname//'could not destroy erivv GA',177,GA_ERR) + + call ga_copy(pars%g_apb,g_amb) + + + ! Add Screened Coulomb contribution from B + if(.not.ga_create(mt_dbl,pars%npoles(isp),pars%npoles(isp), + & 'tmp',0,pars%npoles(isp),g_tmp)) + & call errquit(pname//'could not create temp GA',234,GA_ERR) + call ga_dgemm('t','n',pars%npoles(isp),pars%npoles(isp), + & pars%nri,-1d0,pars%g_wov(isp),pars%g_wov(isp), + & 0d0,g_tmp) + call ga_add_patch(1d0,g_tmp,1,pars%npoles(isp), + & 1,pars%npoles(isp), + & 1d0,pars%g_apb,1+off1,pars%npoles(isp)+off1, + & 1+off1,pars%npoles(isp)+off1, + & pars%g_apb,1+off1,pars%npoles(isp)+off1, + & 1+off1,pars%npoles(isp)+off1) + call ga_add_patch(-1d0,g_tmp,1,pars%npoles(isp), + & 1,pars%npoles(isp), + & 1d0,g_amb,1+off1,pars%npoles(isp)+off1, + & 1+off1,pars%npoles(isp)+off1, + & g_amb,1+off1,pars%npoles(isp)+off1, + & 1+off1,pars%npoles(isp)+off1) + + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + if (.not.ga_destroy(pars%g_wov(isp))) + & call errquit(pname//'could not destroy wov GA',1,GA_ERR) + enddo + + ! Form RPA matrix + if (singlet) then + do isp=1,pars%ipol + off1 = (isp-1)*pars%npoles(1) + do jsp=1,pars%ipol + off2 = (jsp-1)*pars%npoles(1) + call ga_matmul_patch('t','n',2d0,1d0, + $ pars%g_eriov(isp),1,pars%npoles(isp),1,nri, + $ pars%g_eriov(jsp),1,nri,1,pars%npoles(jsp), + $ pars%g_apb,1+off1,pars%npoles(isp)+off1, + $ 1+off2,pars%npoles(jsp)+off2) + enddo + enddo + endif + call ga_add_diagonal(pars%g_apb,g_diag) + call ga_add_diagonal(g_amb,g_diag) + + ! Destroy ERIs + if (.not.ga_destroy(pars%g_eriov(1))) + & call errquit(pname//'could not destroy eriov GA',275,GA_ERR) + if (.not.ga_destroy(pars%g_eriov(2))) + & call errquit(pname//'could not destroy eriov GA',277,GA_ERR) + + + ! First step is to get (A-B)^(1/2) + call ga_sync() +#if defined(PARALLEL_DIAG) +#ifdef SCALAPACK + info= ga_cholesky('L',g_amb) +#else + call ga_chol(g_amb, g_amb, info) +#endif +#else + call ga_chol_seq(g_amb, g_amb, info) +#endif + if (info.ne.0) call errquit("Cholesky Failed",298,GA_ERR) + + ! Transform (A+B) matrix with Cholesky factors + if(.not.ga_create(mt_dbl,npoles,npoles,'tmp',0,npoles, + & g_tmp)) + & call errquit(pname//'could not create temp GA',1,GA_ERR) + call ga_dgemm('n','n',npoles,npoles,npoles,1d0, + & pars%g_apb,g_amb,0d0,g_tmp) + call ga_dgemm('t','n',npoles,npoles,npoles,1d0, + & g_amb,g_tmp,0d0,pars%g_apb) + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + + ! Diagonalize (A+B) matrix +#ifdef PARALLEL_DIAG +#ifdef SCALAPACK + call dft_scaleig(pars%g_apb,pars%g_apb,omega,0) +#else + call ga_diag_std(pars%g_apb,pars%g_apb,omega) +#endif +#else + call ga_diag_std_seq(pars%g_apb,pars%g_apb,omega) +#endif + + ! + ! Since we transformed the eigenvalue equation to an Hermitian + ! form, we obtain the square of the neutral excitations + ! (Equation (32)). + ! +!$omp parallel do + do ipole=1,npoles + omega(ipole) = dsqrt(omega(ipole)) + enddo +!$omp end parallel do + + ! Transform eigenvectors with (A-B)^(1/2) + if(.not.ga_create(mt_dbl,npoles,npoles,'tmp',0,npoles, + & g_tmp)) + & call errquit(pname//'could not create temp GA',1,GA_ERR) + call ga_dgemm('n','n',npoles,npoles,npoles,1d0, + & g_amb,pars%g_apb,0d0,g_tmp) + + ! Gather neutral excitations vectors + call nga_distribution(g_diag,pars%me,ilo,ihi) + if(ihi.ge.ilo) then + call nga_put(g_diag,ilo,ihi,1d0/dsqrt(omega(ilo:ihi)), + & ihi-ilo+1) + endif + call ga_sync() + call ga_scale_cols(g_tmp,g_diag) + call ga_copy(g_tmp,pars%g_apb) + + ! Destroy unused GAs + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',344,GA_ERR) + if (.not.ga_destroy(g_amb)) + & call errquit(pname//'could not destroy temp GA',346,GA_ERR) + if (.not.ga_destroy(g_diag)) + & call errquit(pname//'could not destroy temp GA',348,GA_ERR) endif diff --git a/src/bsemol/bse_analytic_tda.F b/src/bsemol/bse_analytic_tda.F index d0924134d2..e7d0f561ec 100644 --- a/src/bsemol/bse_analytic_tda.F +++ b/src/bsemol/bse_analytic_tda.F @@ -20,12 +20,13 @@ character(*),parameter :: pname = 'bse_analytic_tda: ' + integer nri,isp,jsp,npoles integer ilo,ihi,jlo,jhi - integer nocc2(3),nvir2(3) + integer nocc2(2),nvir2(2) integer ipole,imo,jmo,amo,bmo integer k,l,kproc,lproc,klocal,llocal,kglobal,lglobal integer g_diag, g_tmp, g_amb, ktmp, ld, info, i, j - integer modtn,tovern + integer modtn,tovern,off1,off2 double precision alpha integer ij,jb,llia,ulia @@ -33,10 +34,14 @@ call util_blas_set_num_threads(pars%iMaxthreads) #endif - if(.not.ga_create(mt_dbl,totpoles,totpoles,'apb',0,totpoles, + npoles = pars%npoles(1) + if (pars%ipol.gt.1) npoles = npoles + pars%npoles(2) + nri = pars%nri + + if(.not.ga_create(mt_dbl,totpoles,totpoles,'apb',0,npoles, & pars%g_apb)) & call errquit(pname//'could not create A+B GA',0,GA_ERR) - if (.not.nga_create(mt_dbl,1,totpoles,'wia',0,g_diag)) + if (.not.nga_create(mt_dbl,1,npoles,'wia',0,g_diag)) $ call errquit(pname//'could not create wia',0,GA_ERR) if (pars%ipol.eq.1) then @@ -44,7 +49,7 @@ nvir2(1) = pars%nvir(1)**2 call ga_distribution(pars%g_apb,pars%me,ilo,ihi,jlo,jhi) - if (jhi.ge.jlo) call nga_put(g_diag,jlo,jhi,wia,jhi-jlo+1) + if (jhi.ge.jlo) call nga_put(g_diag,ilo,ihi,wia,ihi-ilo+1) ! Screened Coulomb contribution @@ -74,7 +79,7 @@ ! Hartree contribution if (singlet) then - call ga_dgemm('t','n',totpoles,totpoles,pars%nri,2d0, + call ga_dgemm('t','n',npoles,npoles,pars%nri,2d0, & pars%g_eriov(1),pars%g_eriov(1),1d0,pars%g_apb) endif @@ -106,6 +111,89 @@ & call errquit(pname//'could not destroy temp GA',1,GA_ERR) else + nocc2(1) = pars%nocc(1)**2 + nvir2(1) = pars%nvir(1)**2 + nocc2(2) = pars%nocc(2)**2 + nvir2(2) = pars%nvir(2)**2 + + + ! Gather eigenvalue differences + call ga_distribution(pars%g_eriov(1),pars%me,ilo,ihi,jlo,jhi) + call nga_put(g_diag,jlo,jhi,wia(1,1),jhi-jlo+1) + call ga_distribution(pars%g_eriov(2),pars%me,ilo,ihi,jlo,jhi) + call nga_put(g_diag,jlo+pars%npoles(1),jhi+pars%npoles(1), + $ wia(1,2),jhi-jlo+1) + + ! Form RPA matrix + if (.not.singlet) then + call ga_zero(pars%g_apb) + else + do isp=1,pars%ipol + off1 = (isp-1)*pars%npoles(1) + do jsp=1,pars%ipol + off2 = (jsp-1)*pars%npoles(1) + call ga_matmul_patch('t','n',1d0,0d0, + $ pars%g_eriov(isp),1,pars%npoles(isp),1,nri, + $ pars%g_eriov(jsp),1,nri,1,pars%npoles(jsp), + $ pars%g_apb,1+off1,pars%npoles(isp)+off1, + $ 1+off2,pars%npoles(jsp)+off2) + enddo + enddo + endif + call ga_add_diagonal(pars%g_apb,g_diag) + + !Add Screened Coulomb contribution + do isp=1,pars%ipol + off1 = (isp-1)*pars%npoles(1) + if (.not.ga_destroy(pars%g_eriov(isp))) + & call errquit(pname//'could not destroy eriov GA',147,GA_ERR) + + if (.not.ga_create(mt_dbl,nvir2(isp),nocc2(isp),'tmp', + $ nvir2(isp),0,g_tmp)) + $ call errquit('bse_analytic_tda: could not create tmp',145, + $ GA_ERR) + + call ga_dgemm('t','n',nvir2(isp),nocc2(isp),nri,-1d0, + $ pars%g_erivv(isp),pars%g_erioo(isp),0d0,g_tmp) + call ga_distribution(g_tmp,pars%me,ilo,ihi,jlo,jhi) + call ga_access(g_tmp,ilo,ihi,jlo,jhi,ktmp,ihi-ilo+1) + do ij=jlo,jhi + jmo = (ij-1)/pars%nocc(isp) + 1 + imo = ij - (jmo-1)*pars%nocc(isp) + do bmo = 1,pars%nvir(isp) + llia = (imo-1)*pars%nvir(isp) + 1 + off1 + ulia = imo*pars%nvir(isp) + off1 + jb = (jmo-1)*pars%nvir(isp) + bmo + off1 + call ga_acc(pars%g_apb,llia,ulia,jb,jb, + & dbl_mb(ktmp+(ij-jlo)*nvir2(isp)+ + & (bmo-1)*pars%nvir(isp)),pars%nvir(isp),1d0) + enddo + enddo + call ga_release(g_tmp,ilo,ihi,jlo,jhi) + if (.not.ga_destroy(g_tmp)) + & call errquit(pname//'could not destroy temp GA',172,GA_ERR) + ! Destroy ERIs + if (.not.ga_destroy(pars%g_erioo(isp))) + & call errquit(pname//'could not destroy erioo GA',175,GA_ERR) + if (.not.ga_destroy(pars%g_erivv(isp))) + & call errquit(pname//'could not destroy erivv GA',177,GA_ERR) + enddo + + ! Diagonalize (A+B) matrix +#ifdef PARALLEL_DIAG +#ifdef SCALAPACK + call dft_scaleig(pars%g_apb,pars%g_apb,omega,0) +#else + call ga_diag_std(pars%g_apb,pars%g_apb,omega) +#endif +#else + call ga_diag_std_seq(pars%g_apb,pars%g_apb,omega) +#endif + + ! Destroy unused GAs + if (.not.ga_destroy(g_diag)) + & call errquit(pname//'could not destroy temp GA',1,GA_ERR) + endif diff --git a/src/bsemol/bse_buildw.F b/src/bsemol/bse_buildw.F index 018ee22531..bb4d308675 100644 --- a/src/bsemol/bse_buildw.F +++ b/src/bsemol/bse_buildw.F @@ -40,7 +40,7 @@ C ovlo = pars%ovlo(isp) ovhi = pars%ovhi(isp) - call ga_access(pars%g_eriov(1),1,nri,ovlo,ovhi,kov(isp),ld) + call ga_access(pars%g_eriov(isp),1,nri,ovlo,ovhi,kov(isp),ld) !$omp parallel do do ipole=1,pars%mynpoles(isp) diff --git a/src/bsemol/bse_defaults.F b/src/bsemol/bse_defaults.F index 226718a77b..3e253d9966 100644 --- a/src/bsemol/bse_defaults.F +++ b/src/bsemol/bse_defaults.F @@ -14,6 +14,7 @@ & rtdb_put(rtdb,'bse:lanczos',mt_log,1,.false.) .and. & rtdb_put(rtdb,'bse:tda',mt_log,1,.false.) .and. & rtdb_put(rtdb,'bse:ncap',mt_log,1,.false.) .and. + & rtdb_put(rtdb,'bse:ncapr',mt_log,1,.false.) .and. & rtdb_put(rtdb,'bse:singlet',mt_log,1,.true.) .and. & rtdb_put(rtdb,'bse:triplet',mt_log,1,.false.) .and. & rtdb_put(rtdb,'bse:dowindow',mt_log,1,.false.) .and. diff --git a/src/bsemol/bse_init.F b/src/bsemol/bse_init.F index 881dba0a8c..8c028deadd 100644 --- a/src/bsemol/bse_init.F +++ b/src/bsemol/bse_init.F @@ -42,6 +42,8 @@ c integer,parameter :: unitno = 66 integer :: nmix(2) + logical ncapr + #ifdef USE_OPENMP integer,external :: omp_get_max_threads, omp_get_thread_num integer,external :: omp_get_num_threads @@ -59,6 +61,8 @@ c pars%iMaxThreads = 1 #endif + pars%npoles(:) = 0 + ! Get defaults in case input block is not present if (.not.rtdb_get(pars%rtdb,'bse:init',mt_log,1,ldum)) & call bse_defaults(pars%rtdb) @@ -204,51 +208,57 @@ c pars%npoles(i) = pars%nocc(i)*pars%nvir(i) enddo + if ((pars%nroots.eq.-1).or.(pars%nroots.gt.sum(pars%npoles))) then + pars%nroots = sum(pars%npoles) + endif + + ! Obtain NCAP DD shift 1001 format(2X,A12,F8.3,A3) if (.not.rtdb_get(pars%rtdb,'bse:ncap',mt_log,1,pars%ncap)) & call errquit(pname//'rtdb_get failed',176,RTDB_ERR) + if (.not.rtdb_get(pars%rtdb,'bse:ncapr',mt_log,1,ncapr)) + & call errquit(pname//'rtdb_get failed',176,RTDB_ERR) + + pars%ncap = ncapr .or. pars%ncap + if (pars%ncap) then zeta = 0.304121d0 - if (xfac(87).gt.1d-10) zeta=0.5d0 + if (abs(xfac(87)).gt.1d-10) zeta=0.5d0 aq2 = 2d0/9d0 * (1d0-zeta)**2 do i=1,ipol ehomo = dbl_mb(pars%k_mf_evals+(i-1)*nbf_ao+pars%nocc(i)-1) - vxddp = -0.5d0*aq2*(1d0 + sqrt(1d0-4d0*ehomo/aq2))*0.9d0 - vxddm = -0.5d0*aq2*(1d0 - sqrt(1d0-4d0*ehomo/aq2))*0.9d0 + vxddp = -0.5d0*aq2*(1d0 + sqrt(1d0-4d0*ehomo/aq2))!*0.85d0 + vxddm = -0.5d0*aq2*(1d0 - sqrt(1d0-4d0*ehomo/aq2))!*0.85d0 pars%vxddp(i) = vxddp pars%vxddm(i) = vxddm if (pars%me.eq.0) then - write(luout,*) ' Shifting eigvals by 80% NCAP DD' + write(luout,*) ' Shifting eigvals by 100% NCAP DD' write(luout,1001) ' v_x^{DD-}: ',vxddp*ha2ev, ' eV' write(luout,1001) ' v_x^(DD+): ',vxddm*ha2ev, ' eV' endif - call dcopy(nbf_ao,dbl_mb(pars%k_mf_evals+(i-1)*nbf_ao),1, - & dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao),1) - dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao: - & pars%k_gw_evals+(i-1)*nbf_ao+pars%nocc(i)-1) = - & dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao: - & pars%k_gw_evals+(i-1)*nbf_ao+pars%nocc(i)-1) + - & vxddp - dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao+pars%nocc(i): - & pars%k_gw_evals+(i-1)*nbf_ao+nbf_ao-1) = - & dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao+pars%nocc(i): - & pars%k_gw_evals+(i-1)*nbf_ao+nbf_ao-1) + - & vxddm + call daxpy(pars%nocc(i),1d0,vxddp,0, + & dbl_mb(pars%k_mf_evals+(i-1)*nbf_ao),1) + call daxpy(pars%nvir(i),1d0,vxddm,0, + & dbl_mb(pars%k_mf_evals+(i-1)*nbf_ao+pars%nocc(i)),1) enddo endif ! Read GW QP energies - if (.not.pars%ncap) then + !if (.not.pars%ncap) then call util_file_name('gwevals',.false.,.false.,gwevals) call util_file_name_resolve(gwevals,.false.) - open(unit=unitno,status='old',form='unformatted',file=gwevals) - do i=1,pars%ipol - call sread(unitno, dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao), - & pars%nmo) - enddo - close(unit=unitno) - endif + if (pars%me.eq.0) then + open(unit=unitno,status='old',form='unformatted',file=gwevals) + do i=1,pars%ipol + call sread(unitno, dbl_mb(pars%k_gw_evals+(i-1)*nbf_ao), + & pars%nmo) + enddo + close(unit=unitno) + endif + call ga_brdcst(mt_dbl,dbl_mb(pars%k_gw_evals), + & ma_sizeof(mt_dbl,nbf_ao*pars%ipol,mt_byte),0) + !endif !3-center ERIs call int_init(pars%rtdb, 2, (/ao_bas_han, cd_bas_han/)) diff --git a/src/bsemol/bse_input.F b/src/bsemol/bse_input.F index 457cfea91b..2a04d8de7d 100644 --- a/src/bsemol/bse_input.F +++ b/src/bsemol/bse_input.F @@ -18,9 +18,9 @@ c character*255 test character(*), parameter :: pname = "bse_input: " c - integer, parameter :: num_dirs = 8 + integer, parameter :: num_dirs = 9 character*11 dirs(num_dirs) - data dirs / 'method', 'tda', 'ncap', 'singlet', 'triplet', + data dirs / 'method','tda','ncap','ncapr','singlet','triplet', & 'outwin', 'nroots', 'end' / c integer ind, itemp @@ -45,7 +45,7 @@ c call errquit(pname//'unknown directive', 0, INPUT_ERR) end if c - goto (100, 200, 300, 400, 500, 600, 700, 9999) ind + goto (100, 200, 300, 301, 400, 500, 600, 700, 9999) ind call errquit(pname//'unknown directive',ind, INPUT_ERR) c @@ -86,6 +86,12 @@ c & call errquit(pname//'rtdb_put failed', 300, RTDB_ERR) goto 10 c +c use NCAPR DD correction for eigenvalues +c + 301 if (.not.rtdb_put(rtdb, 'bse:ncapr', mt_log, 1, .true.)) + & call errquit(pname//'rtdb_put failed', 301, RTDB_ERR) + goto 10 +c c compute singlet transitions c 400 if (.not.rtdb_put(rtdb, 'bse:singlet', mt_log, 1, .true.)) @@ -120,7 +126,7 @@ c number of roots c 700 if(.not.inp_i(itemp)) & call errquit(pname//'could not read no. of roots',700,INPUT_ERR) - if(.not.rtdb_put(rtdb,'bse:eupper',mt_int,1,itemp)) + if(.not.rtdb_put(rtdb,'bse:nroots',mt_int,1,itemp)) & call errquit(pname//'rtdb_put failed', 700, RTDB_ERR) goto 10 diff --git a/src/bsemol/bse_oscstr.F b/src/bsemol/bse_oscstr.F index 2538b87b68..1fbb6da369 100644 --- a/src/bsemol/bse_oscstr.F +++ b/src/bsemol/bse_oscstr.F @@ -15,7 +15,7 @@ character(*), parameter :: pname = 'bse_oscstr: ' character(len=7) :: key - integer totpoles + integer totpoles,npoles double precision omega(*) double precision oscstr(3),oscstr_tot,tmp,moms(20),maxr,r(1) @@ -42,6 +42,9 @@ $ 1,.false.) call ga_scale(g_dipmag,0.5d0) + npoles = pars%npoles(1) + if (pars%ipol.gt.1) npoles = npoles + pars%npoles(2) + if (pars%singlet) then key = 'singlet' @@ -53,7 +56,7 @@ llpole = -1 if (pars%dowindow) then iroot = 0 - do ipole=1,totpoles + do ipole=1,npoles if (omega(ipole).lt.pars%elower) cycle if (llpole.eq.-1) llpole = ipole iroot = iroot + 1 @@ -106,7 +109,7 @@ call ga_copy_patch('n',pars%g_apb,1,pars%npoles(1),ipole,ipole, & g_xy(1),1,pars%npoles(1),1,1) if (pars%ipol.gt.1) then - call ga_copy_patch('n',pars%g_apb,pars%npoles(1)+1,totpoles, + call ga_copy_patch('n',pars%g_apb,pars%npoles(1)+1,npoles, & ipole,ipole,g_xy(2),1,pars%npoles(2),1,1) endif call tddft_transfm(1,g_xy,pars%g_movecs,nbf_ao,pars%nocc, @@ -162,6 +165,7 @@ c enddo c endif c oscstr = 2d0/3d0*omega(ipole)*oscstr + l = 0 maxr = 0.0d0 do i=1,pars%ipol @@ -199,6 +203,8 @@ c oscstr = 2d0/3d0*omega(ipole)*oscstr endif + call ga_sync() + enddo if (.not.ga_destroy(g_dipmag)) diff --git a/src/gwmol/.gw_analytic_rpa.F.swp b/src/gwmol/.gw_analytic_rpa.F.swp new file mode 100644 index 0000000000000000000000000000000000000000..6cfd1d5de5002b53f0a64da434d6dac78beb2dea GIT binary patch literal 16384 zcmeHNON<;x87>kNNWg$V;vq$-)(=fj+@9T;UE8rykjCp}+1MMecAW%+M7yTDW~S_Z zjJtdGktm78B{u||I0PXP35i4^2ylcD7w!lN1vn871SUFsSOzQu zmI2FvWxz6E8L$jk1}p<_0Rt=`V^T{om~WzxQ53UIcRBW58+PFYh7bc_09K zz#Q;l;Df*&!0!$c@-yK3z&C&|1D^vP2R;oP1&#o}e>WlD0lp190W1MWfO~+yzKf8X zz^{R4fv*8y0D8dvz+J$tdkA?Q_!IDR;K#rVz&C-<16Kh790Fdsn~+}tUk5^<1sn%% zzLSs}z;}V?03Y}$a1gi?_~APUc@lUCSO(^SyMZ_Ef_}gzumMECQQ+0L6Y?_f46p^X zfqxtzO;E%v_z!!n1fsX@!!=cEJfUf}00AB(w0S^KvfO~;I;9%x8;0M4B;053* zU=!E?BESLU_`SNvVG7mP6zwNzoyB97jT=32pt846ji z?P_VV0XGb){!Eo3r|33XTD6RemEod3^^+9D6c)#0o({HXKTQg&l=hV1-$a_~N(j6i z)z<{O-gp$Sd~cFba|d%Q2te&^Qn%}18Ai|o(f!j+{rl{e0;Z}b>MWSq>CDbGshR)* z?QKz~d;DzkvyZo@J5Ny9W-rNy6n4q8+UU?n;VW{1xf*jGsQDe>w!?$eoB?KepQju? zqvk|3`8#b@naRN8sYuqPrA)rh1T%$0s5)haFBtGBavFKVZN!bDVqs;aoa!}Bg*yjP z6))A3)N!0~y4dy3EiNoCQxRu5XMvfmk;pO;4^;lz<<;|5&0V#k`l?TYCeq5PMh88? zjR{U_k9mWRYbkF!1#2@oSyyB0v|TfsFFpcBJnUD8t_z#sI5MQjK5? z7|%5*D7^`txXKX#&d#Lz=W)?U)A#6Y-;YH zgE2h%K%uL7$22Vms;Fy9l=IdIDG3x= zomE9YlQp7gPN@dA7 z=L4R)d^6{%T#(M3d9(5+w0L-J!MnJ!@X+##(b*rel=-OaggkzreMOUi;L_WlXw>LVEDc z*t&9{cG%`bog&bq18;M*<>DsSZgX#&hmO%ENXEU8(^1NOkzt~_@Y6Zmlaq||X2C8Z zMyGQhMx*GB8H!zNiWsf~T*5^2h^DvNQ^p1?7`go5I0rGzta6eHte*C-Y=pB|kWSX`Z%Ex%AYDnK|loW;*R=OXsa|PE9P4 zQK#K$y7--yzX&Yk@5v_C%u?1RLKt|EoX#-@gw00(cQv2QC5!ft%RVKMTlx{%PQTzy*#09|8Uh*}nyT zquY5&wq-BNfMvikU>UFsSOzQumI2FvWxz7Do-E#J;^a)J^H#Ui{-3ql==PTwYJ*Nj@v76}>s!x#=t0ryRy*h@)7$Aq3TxB^JsJ)KraTGFnRF9-W r#O_VfiStl2Jke_HXwRJPcWS5mXhR-dwOu^OBmUhQROfcZIXU?k6Wxuw literal 0 HcmV?d00001 diff --git a/src/gwmol/gw_analytic.F b/src/gwmol/gw_analytic.F index e558cc8e0d..78f1616b27 100644 --- a/src/gwmol/gw_analytic.F +++ b/src/gwmol/gw_analytic.F @@ -48,6 +48,8 @@ c logical ok integer,parameter :: unitno = 66 + + logical,external :: movecs_write c c ----------------------------------------------------------------- c @@ -92,6 +94,15 @@ c call gw_vxc(dbl_mb(k_sigma),nmo,pars) + if (pars%ncap) then + do isp=1,ipol + call daxpy(pars%nocc(isp),1d0,pars%vxddp(isp),0, + $ dbl_mb(k_sigma+(isp-1)*pars%nmo),1) + call daxpy(pars%nvir(isp),1d0,pars%vxddm(isp),0, + $ dbl_mb(k_sigma+(isp-1)*pars%nmo+pars%nocc(isp)),1) + enddo + endif + pars%timer%vxc = pars%timer%vxc + util_wallsec() - timer c c Obtain Sigma_x @@ -138,6 +149,14 @@ c endif write(luout,*) endif + + call gw_shift(dbl_mb(k_eold),dbl_mb(pars%k_evals),-efermi, + $ pars%nmo,nbf_ao,pars%ipol) + if(.not.movecs_write(pars%rtdb, ao_bas_han, movecs_out, 'dft', + $ 'W vals',nbf_ao,ipol,(/pars%nmo,pars%nmo/), + $ dbl_mb(pars%k_occ), nbf_ao, + $ dbl_mb(pars%k_evals),nbf_ao,pars%g_movecs)) + $ call errquit('gw_analytic: could not save movecs',0,DISK_ERR) c c Obtain eigenvalue difference c @@ -193,9 +212,9 @@ c $ pars%ipol,pars%me) call ga_brdcst(1038,dbl_mb(k_enew), - $ ma_sizeof(mt_dbl,nmo,mt_byte),0) + $ ma_sizeof(mt_dbl,pars%ipol*nmo,mt_byte),0) call ga_brdcst(1038,dbl_mb(k_sigma), - $ ma_sizeof(mt_dbl,nmo,mt_byte),0) + $ ma_sizeof(mt_dbl,pars%ipol*nmo,mt_byte),0) if (pars%evgw0.or.pars%evgw) then @@ -203,11 +222,11 @@ c ! Update Fermi energy ! do i=1,ipol - lSize = k_enew + (i-1)*nbf_ao + lSize = k_enew + (i-1)*nmo efermi_new(i) = gw_efermi(dbl_mb(lSize),pars%nocc(i)) enddo call gw_shift(dbl_mb(k_enew),dbl_mb(k_eold),efermi_new, - $ nbf_ao,pars%nmo,pars%ipol) + $ pars%nmo,pars%nmo,pars%ipol) efermi(:) = efermi(:) + efermi_new(:) call dcopy(pars%ipol*nmo,dbl_mb(k_eold),1,dbl_mb(k_enew),1) @@ -221,6 +240,8 @@ c ! ! Save eigenvalues ! + if (main) then + call gw_shift(dbl_mb(k_enew),dbl_mb(k_eold),-efermi,nmo,nmo,ipol) call util_file_name('gwevals',.false.,.false.,gwevals) call util_file_name_resolve(gwevals,.false.) @@ -230,6 +251,9 @@ c enddo close(unit=unitno) + endif + + 9050 format(10x,I3,6x,F8.3,6x,F6.3,6x,F8.3) c if (.not.ma_chop_stack(l_sigma)) diff --git a/src/gwmol/gw_analytic_newton.F b/src/gwmol/gw_analytic_newton.F index 347862e57c..8fe8348061 100644 --- a/src/gwmol/gw_analytic_newton.F +++ b/src/gwmol/gw_analytic_newton.F @@ -33,7 +33,7 @@ integer nclusters, clusters(pars%nmo), myll, myul integer llqp, ulqp, icluster double precision upper, lower, resupper, reslower, const - double precision values(20), errors(20), radius, maxradius + double precision values(100), errors(100), radius, maxradius c ! ! Initialize variables @@ -60,7 +60,7 @@ c ! if (eviter.gt.4) then maxradius = 0.010d0 else - maxradius = 0.1d0 + maxradius = 0.030d0 endif c ! @@ -75,9 +75,6 @@ c ! totalqp = pars%noqp(isp) + pars%nvqp(isp) if (totalqp.lt.1) cycle - totalqp = pars%noqp(isp) + pars%nvqp(isp) - if (totalqp.lt.1) cycle - esterror(:) = 0d0 if ((isp.eq.1).and.main) then @@ -139,16 +136,18 @@ c ! if (eviter.lt.10) then if (myul.lt.ulqp) then - Eout = Enew(llmo+iqp,isp) + 0.002d0 +c Eout = Enew(llmo+iqp,isp) + 0.002d0 + Eout = Eout + 0.001d0 elseif (myll.gt.llqp) then - Eout = Enew(llmo+iqp-2,isp) - 0.002d0 +c Eout = Enew(llmo+iqp-2,isp) - 0.002d0 + Eout = Eout - 0.001d0 endif endif bracket = .false. const = Eold(llmo+iqp-1,isp) + Sigma_X - sigmaold - lower = 1d100 - upper = -1d100 + lower = -1d100 + upper = 1d100 c Compute Screened-Coulomb matrix elements timer = util_wallsec() @@ -164,7 +163,7 @@ c Compute Galiitski-Migdal correlation energy endif c - do iter=1,pars%qpiter+5 + do iter=1,pars%qpiter+15 timer2 = util_wallsec() Ein = Eout diff --git a/src/gwmol/gw_cdgw.F b/src/gwmol/gw_cdgw.F index a9a70b3e6c..d09ab1ed3c 100644 --- a/src/gwmol/gw_cdgw.F +++ b/src/gwmol/gw_cdgw.F @@ -48,6 +48,10 @@ c logical converged,ok double precision, external :: gw_efermi + + logical,external :: movecs_write + integer,parameter :: unitno = 66 + character*255 gwevals c c ----------------------------------------------------------------- c @@ -83,6 +87,15 @@ c call gw_vxc(dbl_mb(kSigma),nmo,pars) + if (pars%ncap) then + do isp=1,ipol + call daxpy(pars%nocc(isp),1d0,pars%vxddp(isp),0, + $ dbl_mb(ksigma+(isp-1)*pars%nmo),1) + call daxpy(pars%nvir(isp),1d0,pars%vxddm(isp),0, + $ dbl_mb(ksigma+(isp-1)*pars%nmo+pars%nocc(isp)),1) + enddo + endif + pars%timer%vxc = pars%timer%vxc + util_wallsec() - timer c c Obtain Sigma_x @@ -169,19 +182,14 @@ c 9020 format(/,2x,"*** G",I1,"W",I1) 9021 format(/,2x,"*** G",I2,"W",I2) - if (eviter.eq.0 .and. pars%ncap .and. pars%evgw) then - do i=1,ipol - do j=0,pars%nmo-1 - if (j.lt.pars%nocc(i)) then - dbl_mb(kEmod+(i-1)*nmo+j) = - $ dbl_mb(kEmod+(i-1)*nmo+j) + pars%vxddp(i) - else - dbl_mb(kEmod+(i-1)*nmo+j) = - $ dbl_mb(kEmod+(i-1)*nmo+j) + pars%vxddm(i) - endif - enddo - enddo - endif + call gw_shift(dbl_mb(kemod),dbl_mb(pars%k_evals),-efermi, + $ pars%nmo,nbf_ao,pars%ipol) + if(.not.movecs_write(pars%rtdb, ao_bas_han, movecs_out, 'dft', + $ 'W vals',nbf_ao,ipol,(/pars%nmo,pars%nmo/), + $ dbl_mb(pars%k_occ), nbf_ao, + $ dbl_mb(pars%k_evals),nbf_ao,pars%g_movecs)) + $ call errquit('gw_analytic: could not save movecs',0,DISK_ERR) + c c Obtain eigenvalue difference c @@ -194,19 +202,19 @@ c c c Experimental bit, might be useful for BSE calculations c - if (eviter.eq.0 .and. pars%ncap .and. (.not.pars%evgw)) then - do i=1,ipol - do j=0,pars%nmo-1 - if (j.lt.pars%nocc(i)) then - dbl_mb(kEmod+(i-1)*nmo+j) = - $ dbl_mb(kEmod+(i-1)*nmo+j) + pars%vxddp(i) - else - dbl_mb(kEmod+(i-1)*nmo+j) = - $ dbl_mb(kEmod+(i-1)*nmo+j) + pars%vxddm(i) - endif - enddo - enddo - endif +c if (eviter.eq.0 .and. pars%ncap .and. (.not.pars%evgw)) then +c do i=1,ipol +c do j=0,pars%nmo-1 +c if (j.lt.pars%nocc(i)) then +c dbl_mb(kEmod+(i-1)*nmo+j) = +c $ dbl_mb(kEmod+(i-1)*nmo+j) + pars%vxddp(i) +c else +c dbl_mb(kEmod+(i-1)*nmo+j) = +c $ dbl_mb(kEmod+(i-1)*nmo+j) + pars%vxddm(i) +c endif +c enddo +c enddo +c endif c c if (eviter.eq.0 .and. pars%ncap) then c call dcopy(nmo*ipol,dbl_mb(kEmod),1,dbl_mb(kEref),1) @@ -277,11 +285,11 @@ c ! Update Fermi energy ! do i=1,ipol - lSize = kEnew + (i-1)*nbf_ao + lSize = kEnew + (i-1)*nmo efermi_new(i) = gw_efermi(dbl_mb(lSize),pars%nocc(i)) enddo call gw_shift(dbl_mb(kEnew),dbl_mb(kemod),efermi_new, - $ nbf_ao,pars%nmo,pars%ipol) + $ pars%nmo,pars%nmo,pars%ipol) efermi(:) = efermi(:) + efermi_new(:) call dcopy(pars%ipol*nmo,dbl_mb(kemod),1,dbl_mb(kEnew),1) @@ -293,12 +301,26 @@ c endif endif + if (main) then + + call gw_shift(dbl_mb(kenew),dbl_mb(kemod),-efermi,nmo,nmo,ipol) + call util_file_name('gwevals',.false.,.false.,gwevals) + call util_file_name_resolve(gwevals,.false.) + open(unit=unitno,status='unknown',form='unformatted',file=gwevals) + do i=1,ipol + call swrite(unitno, dbl_mb(kemod+(i-1)*nmo),nmo) + enddo + close(unit=unitno) + + endif + if (.not.ga_destroy(pars%g_sols)) $ call errquit('gw_cdgw_newton: cannot destroy GA',0,GA_ERR) if (.not.(ma_free_heap(liW).and.ma_free_heap(liWidx))) $ call errquit(pname//'cannot destroy iW arrays',0,MA_ERR) + c end subroutine diff --git a/src/gwmol/gw_cdgw_newton.F b/src/gwmol/gw_cdgw_newton.F index c87fc1dbad..dee1bab784 100644 --- a/src/gwmol/gw_cdgw_newton.F +++ b/src/gwmol/gw_cdgw_newton.F @@ -110,9 +110,11 @@ if (eviter.lt.3) then if (myul.lt.ulqp) then - Eout = Enew(llmo+iqp,isp) + 0.001d0 + !Eout = Enew(llmo+iqp,isp) + 0.001d0 + Eout = Eout + 0.001d0 elseif (myll.gt.llqp) then - Eout = Enew(llmo+iqp-2,isp) - 0.001d0 + !Eout = Enew(llmo+iqp-2,isp) - 0.001d0 + Eout = Eout - 0.001d0 endif endif @@ -207,6 +209,7 @@ c ! Save last energy Enew(llmo+iqp-1,isp) = Eout + Sigma(llmo+iqp-1,isp) = SigmaC + Sigma_X ! check convergence info if (converged) then diff --git a/src/gwmol/gw_donewton.F b/src/gwmol/gw_donewton.F index 02e408529c..7d25b3f1bc 100644 --- a/src/gwmol/gw_donewton.F +++ b/src/gwmol/gw_donewton.F @@ -31,7 +31,11 @@ C !take full newton step for large enough z ! if (z.gt.0.4d0 .and. z.le.1d0 ) then - xout = xin + step + if (iter.eq.1) then + xout = xin + 0.5d0*step + else + xout = xin + step + endif ! ! when we have bracketed the solution, the diff --git a/src/gwmol/gw_init.F b/src/gwmol/gw_init.F index 81dba45f59..20010e493e 100644 --- a/src/gwmol/gw_init.F +++ b/src/gwmol/gw_init.F @@ -31,6 +31,8 @@ c c logical movecs_read, movecs_read_header, atom_tag_check external movecs_read, movecs_read_header, atom_tag_check + + logical,external :: movecs_write c integer ga_create_atom_blocked external ga_create_atom_blocked @@ -46,8 +48,6 @@ c c c ----------------------------------------------------------------- c - zeta = 0.304121d0 - aq2 = 2d0/9d0 * (1d0-zeta)**2 pars%timer%init = util_wallsec() pars%timer%total = pars%timer%init @@ -71,6 +71,9 @@ c pars%me = ga_nodeid() pars%nprocs = ga_nnodes() + !oskel = .false. + !oadapt = .false. + #ifdef USE_OPENMP pars%iMaxThreads = omp_get_max_threads() #else @@ -236,7 +239,6 @@ c do j=1,pars%nmo if (dbl_mb(pars%k_occ+(i-1)*nbf_ao+j-1).gt.0.d0) then nocc = nocc + 1 - cycle else nvir = nvir + 1 endif @@ -284,16 +286,23 @@ c c 1001 format(2X,A12,F8.3,A3) if (pars%ncap) then + zeta = 0.304121d0 + if ((xfac(87)).gt.1d-10) zeta=0.5d0 + aq2 = 2d0/9d0 * (1d0-zeta)**2 do i=1,ipol ehomo = dbl_mb(pars%k_evals+(i-1)*nbf_ao+pars%nocc(i)-1) - vxddp = -0.5d0*aq2*(1d0 + sqrt(1d0-4d0*ehomo/aq2)) - vxddm = -0.5d0*aq2*(1d0 - sqrt(1d0-4d0*ehomo/aq2)) + vxddp = -0.5d0*aq2*(1d0 + sqrt(1d0-4d0*ehomo/aq2))!*0.15d0 + vxddm = -0.5d0*aq2*(1d0 - sqrt(1d0-4d0*ehomo/aq2))!*0.15d0 pars%vxddp(i) = vxddp pars%vxddm(i) = vxddm if (pars%me.eq.0) then write(luout,1001) ' v_x^{DD+}: ',vxddp*ha2ev, ' eV' write(luout,1001) ' v_x^(DD-): ',vxddm*ha2ev, ' eV' endif + call daxpy(pars%nocc(i),1d0,vxddp,0, + $ dbl_mb(pars%k_evals+(i-1)*nbf_ao),1) + call daxpy(pars%nvir(i),1d0,vxddm,0, + $ dbl_mb(pars%k_evals+(i-1)*nbf_ao+pars%nocc(i)),1) enddo endif c diff --git a/src/gwmol/gw_vxc.F b/src/gwmol/gw_vxc.F index e3e212cfaa..d8bbc81e8b 100644 --- a/src/gwmol/gw_vxc.F +++ b/src/gwmol/gw_vxc.F @@ -93,6 +93,7 @@ c $ pars%g_movecs(isp),pars%g_movecs(isp),0d0, $ g_dens(isp)) if (odftps) call pstat_off(ps_dgemm) + call ga_symmetrize(g_dens(isp)) enddo c nscr = 2*nbf_ao_mxnbf_ce**2 @@ -131,7 +132,7 @@ c if (.not.ma_push_get(mt_dbl,2*nbf_ao,'vxc temp',l_tmp,k_tmp)) $ call errquit(pname//'failed to allocate temp',0,MA_ERR) do isp=1,ipol - if (oskel) + if (oskel) $ call sym_symmetrize(geom, ao_bas_han, .false., g_vxc(isp)) call ga_dgemm('n','n',nbf_ao,nmo,nbf_ao,1.0d0,g_vxc(isp), $ pars%g_movecs(isp),0.0d0,g_dens(isp)) From 396fd029727f83b80e6356d1fecbeef72d61eaee Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Mon, 24 Jul 2023 10:54:00 -0700 Subject: [PATCH 10/46] BSE K-davidson --- src/bsemol/GNUmakefile | 6 +- src/bsemol/bse.fh | 4 +- src/bsemol/bse_analytic.F | 6 - src/bsemol/bse_analytic_cis.F | 6 +- src/bsemol/bse_davidson.F | 302 ++++++++++++++++++++++++++++- src/bsemol/bse_davidson_diagonal.F | 98 ++++++++++ src/bsemol/bse_davidson_guess.F | 96 +++++++++ src/bsemol/bse_davidson_kortho.F | 71 +++++++ src/bsemol/bse_davidson_kvec.F | 158 +++++++++++++++ src/bsemol/bse_davidson_mvec.F | 131 +++++++++++++ src/bsemol/bse_davidson_newvecs.F | 73 +++++++ src/bsemol/bse_davidson_residual.F | 29 +++ src/bsemol/bse_davidson_restart.F | 68 +++++++ src/bsemol/bse_defaults.F | 1 + src/bsemol/bse_init.F | 12 ++ src/bsemol/bse_input.F | 19 +- 16 files changed, 1063 insertions(+), 17 deletions(-) create mode 100644 src/bsemol/bse_davidson_diagonal.F create mode 100644 src/bsemol/bse_davidson_guess.F create mode 100644 src/bsemol/bse_davidson_kortho.F create mode 100644 src/bsemol/bse_davidson_kvec.F create mode 100644 src/bsemol/bse_davidson_mvec.F create mode 100644 src/bsemol/bse_davidson_newvecs.F create mode 100644 src/bsemol/bse_davidson_residual.F create mode 100644 src/bsemol/bse_davidson_restart.F diff --git a/src/bsemol/GNUmakefile b/src/bsemol/GNUmakefile index 3b3051af56..ca007bd758 100644 --- a/src/bsemol/GNUmakefile +++ b/src/bsemol/GNUmakefile @@ -2,7 +2,11 @@ OBJ = bsemol.o bse_input.o bse_init.o bse_analytic.o \ bse_davidson.o bse_lanczos.o bse_defaults.o \ bse_finalize.o bse_ri_init.o bse_wmn.o \ bse_analytic_cis.o bse_analytic_tda.o \ - bse_dipole.o bse_oscstr.o bse_puteris.o bse_get_eia.o + bse_dipole.o bse_oscstr.o bse_puteris.o bse_get_eia.o \ + bse_davidson_diagonal.o bse_davidson_mvec.o \ + bse_davidson_kvec.o bse_davidson_guess.o \ + bse_davidson_kortho.o bse_davidson_restart.o \ + bse_davidson_newvecs.o bse_davidson_residual.o USES_BLAS = bse_buildw.F bse_ri_init.F bse_wmn.F diff --git a/src/bsemol/bse.fh b/src/bsemol/bse.fh index c2d8730a74..2b04c0d8f8 100644 --- a/src/bsemol/bse.fh +++ b/src/bsemol/bse.fh @@ -15,7 +15,7 @@ c integer :: ovlo(2),ovhi(2) integer :: vvlo(2),vvhi(2) integer :: llmo(2),nqp(2) - integer :: nroots + integer :: nroots,nmax double precision :: tol2e, eta c integer :: l_mf_evals, k_mf_evals @@ -27,7 +27,7 @@ c c integer :: g_movecs(2), g_moeris, g_sols integer :: g_erioo(2), g_eriov(2), g_erivv(2), g_erim - integer :: g_wov(2), g_apb, g_dipa(3), g_dipb(3) + integer :: g_wov(2), g_apb, g_dipa(3), g_dipb(3), g_amb integer :: g_quada(6), g_quadb(6) integer :: g_dipmaga(3), g_dipmagb(3) logical :: noio diff --git a/src/bsemol/bse_analytic.F b/src/bsemol/bse_analytic.F index 34704b7bbb..463c47e0f8 100644 --- a/src/bsemol/bse_analytic.F +++ b/src/bsemol/bse_analytic.F @@ -40,9 +40,6 @@ & dbl_mb(k_dia+lSize),pars%nocc(isp), & pars%nvir(isp),pars%ovlo(isp),pars%ovhi(isp)) enddo - if (pars%me.eq.0) then - call ma_print(dbl_mb(k_dia),pars%mynpoles(1),1,'Diff1') - endif ! obtain screened Coulomb matrix call bse_buildw(pars,dbl_mb(k_dia),dbl_mb(kW),pars%nmo,nri, @@ -61,9 +58,6 @@ & pars%nvir(isp),pars%ovlo(isp), & pars%ovhi(isp)) enddo - if (pars%me.eq.0) then - call ma_print(dbl_mb(k_dia),pars%mynpoles(1),1,'Diff2') - endif ! Build and diagonalize Casida-like matrix if (pars%tda) then diff --git a/src/bsemol/bse_analytic_cis.F b/src/bsemol/bse_analytic_cis.F index c8841fbde5..98d73f3432 100644 --- a/src/bsemol/bse_analytic_cis.F +++ b/src/bsemol/bse_analytic_cis.F @@ -230,7 +230,10 @@ if (.not.ga_destroy(pars%g_erivv(isp))) & call errquit(pname//'could not destroy erivv GA',177,GA_ERR) - call ga_copy(pars%g_apb,g_amb) + call ga_copy_patch('n',pars%g_apb,1+off1, + & pars%npoles(isp)+off1,1+off1,pars%npoles(isp)+off1, + & g_amb,1+off1,pars%npoles(isp)+off1,1+off1, + & pars%npoles(isp)+off1) ! Add Screened Coulomb contribution from B @@ -276,6 +279,7 @@ call ga_add_diagonal(pars%g_apb,g_diag) call ga_add_diagonal(g_amb,g_diag) + ! Destroy ERIs if (.not.ga_destroy(pars%g_eriov(1))) & call errquit(pname//'could not destroy eriov GA',275,GA_ERR) diff --git a/src/bsemol/bse_davidson.F b/src/bsemol/bse_davidson.F index ba4aa6b89a..6c43eb2afc 100644 --- a/src/bsemol/bse_davidson.F +++ b/src/bsemol/bse_davidson.F @@ -2,8 +2,308 @@ implicit none +#include "global.fh" +#include "errquit.fh" +#include "mafdecls.fh" #include "bse.fh" - +#include "cdft.fh" type(bse_params_t) :: pars + character(*), parameter :: pname = 'bse_analytic: ' + + integer lSize,isp + integer l_omega, k_omega + integer l_dia,k_dia + integer lW,kW + integer maxpoles,maxnpoles,totnpoles,nri + + integer indeces(pars%nroots),ntrials,g_trials,npoles,ndim + integer g_x,g_y,g_ym,g_s,g_ks,g_mks,g_w,g_kw,g_mkw,off1 + integer g_wia,g_tmp,info,lwork,kwork,idum,mdim + integer k_x,k_y,k_ym,k_s,k_ks,k_mks,k_w,k_kw,k_mkw,k_r,l_r + integer myld,vkv,l_vkv,myhi,mylo,k_trials,l_ksw,ksw,jdum + double precision minimum,norm(pars%nroots),rdum,factor + double precision,allocatable :: diagonal(:),diagonal2(:) + + integer ipole,jpole,itrial,imo,amo,idavidson + logical found,dohartree,stat,debug + double precision,external :: dasum + + debug = pars%me.eq.0 + debug = .false. + + ! synchronize parallel processes + call ga_sync() + + !initialize useful variables + nri = pars%nri + maxpoles = maxval(pars%mynpoles(1:pars%ipol)) + maxnpoles = maxval(pars%npoles(1:pars%ipol)) + totnpoles = maxnpoles*pars%ipol + npoles = sum(pars%npoles(1:pars%ipol)) + ntrials = pars%nroots + + + allocate(diagonal(npoles),diagonal2(npoles)) + + ! allocation + if(.not.ma_push_get(mt_dbl,totnpoles,'dia',l_dia,k_dia)) + & call errquit(pname//'failed to allocate Delta_ia',0,MA_ERR) + if(.not.ma_push_get(mt_dbl,npoles,'omega',l_omega,k_omega)) + & call errquit(pname//'failed to allocate omega',0,MA_ERR) + if(.not.ma_push_get(mt_dbl,npoles,'residual',l_r,k_r)) + & call errquit(pname//'failed to allocate residual',0,MA_ERR) + if(.not.ma_push_get(mt_dbl,ntrials*ntrials,'vkv',l_vkv,vkv)) + & call errquit(pname//'failed to allocate vkv',0,MA_ERR) + if(.not.ma_push_get(mt_dbl,nri**2,'W',lW,kW)) + & call errquit(pname//'failed to allocate W',0,MA_ERR) + + stat = ga_create(mt_dbl,npoles,ntrials,'x',0,ntrials,g_x).and. + $ ga_create(mt_dbl,npoles,ntrials,'y',0,ntrials,g_y).and. + $ ga_create(mt_dbl,npoles,ntrials,'ym',0,ntrials,g_ym).and. + $ ga_create(mt_dbl,npoles,ntrials,'s',0,ntrials,g_s).and. + $ ga_create(mt_dbl,npoles,ntrials,'ks',0,ntrials,g_ks).and. + $ ga_create(mt_dbl,npoles,ntrials,'mks',0,ntrials,g_mks).and. + $ ga_create(mt_dbl,npoles,ntrials,'w',0,ntrials,g_w).and. + $ ga_create(mt_dbl,npoles,ntrials,'kw',0,ntrials,g_kw).and. + $ ga_create(mt_dbl,npoles,ntrials,'mkw',0,ntrials,g_mkw).and. + $ ga_create(mt_dbl,npoles,ntrials,'t',0,ntrials,g_trials).and. + $ nga_create(mt_dbl,1,npoles,'wia',0,g_wia) + + if(.not.stat) call errquit('ga create failed',66,GA_ERR) + + ! obtain "old" eigenvalue difference to build W + do isp=1,pars%ipol + lSize = (isp-1)*maxpoles + call bse_get_eia(dbl_mb(pars%k_mf_evals+(isp-1)*nbf_ao), + & dbl_mb(k_dia+lSize),pars%nocc(isp), + & pars%nvir(isp),pars%ovlo(isp),pars%ovhi(isp)) + enddo + + ! obtain screened Coulomb matrix + call bse_buildw(pars,dbl_mb(k_dia),dbl_mb(kW),pars%nmo,nri, + & maxpoles,pars%ipol) + + ! transform ERIs using screened Coulomb matrix + call bse_wmn(pars,dbl_mb(kW),pars%nmo,nri,pars%ipol) + if(.not.ma_chop_stack(lW)) + & call errquit(pname//'failed to chop stack',0,MA_ERR) + + ! obtain "GW" eigenvalue difference to build Casida matrix + do isp=1,pars%ipol + lSize = (isp-1)*maxpoles + call bse_get_eia(dbl_mb(pars%k_gw_evals+(isp-1)*nbf_ao), + & dbl_mb(k_dia+lSize),pars%nocc(isp), + & pars%nvir(isp),pars%ovlo(isp), + & pars%ovhi(isp)) + enddo + + ! Get diagonal of Casida matrix + call bse_davidson_diagonal(pars,dbl_mb(k_dia),maxpoles) + + ! Get Eigenvalue differences + do isp=1,pars%ipol + off1 = (isp-1)*pars%npoles(1) + lSize = (isp-1)*maxpoles + call nga_put(g_wia,pars%ovlo(isp)+off1,pars%ovhi(isp)+off1, + $ dbl_mb(k_dia+lSize),pars%ovhi(isp)-pars%ovlo(isp)+1) + enddo + + ! Get guess vectos + if(pars%me.eq.0) + $ call bse_davidson_guess(pars,dbl_mb(k_dia),g_trials,npoles, + $ ntrials) + call ga_brdcst(mt_dbl,diagonal,ma_sizeof(mt_dbl,npoles,mt_byte),0) + + call ga_distribution(g_s,pars%me,mylo,myhi,idum,idum) + myld = myhi - mylo + 1 + + ! K-orthogonalization + call bse_davidson_kvec(pars,g_trials,g_wia,g_x,npoles, + $ ntrials,pars%singlet) + call ga_access(g_x,mylo,myhi,1,ntrials,k_x,myld) + call ga_access(g_trials,mylo,myhi,1,ntrials,k_trials,myld) + call bse_davidson_kortho(pars,dbl_mb(k_trials),dbl_mb(k_x), + $ dbl_mb(k_x),dbl_mb(vkv),dbl_mb(k_x),myld,ntrials,mdim,.true.) + call ga_release_update(g_trials,mylo,myhi,1,ntrials) + call ga_release_update(g_x,mylo,myhi,1,ntrials) + + ! Starting vectors + call bse_davidson_kvec(pars,g_x,g_wia,g_y,npoles, + $ ntrials,pars%singlet) + call bse_davidson_mvec(pars,g_y,g_wia,g_ym,npoles, + $ ntrials) + call ga_copy(g_x,g_s) + call ga_copy(g_y,g_ks) + call ga_copy(g_ym,g_mks) + + if (pars%me.eq.0) then + write(*,*) + write(*,*) "--------------------------------" + write(*,*) " Iter Ntrials Nconv Res " + write(*,*) "--------------------------------" + endif + + do idavidson=1,20 + + ! Get access to local chunks + call ga_access(g_s,mylo,myhi,1,ntrials,k_s,myld) + call ga_access(g_ks,mylo,myhi,1,ntrials,k_ks,myld) + call ga_access(g_mks,mylo,myhi,1,ntrials,k_mks,myld) + call ga_access(g_x,mylo,myhi,1,ntrials,k_x,myld) + call ga_access(g_y,mylo,myhi,1,ntrials,k_y,myld) + call ga_access(g_ym,mylo,myhi,1,ntrials,k_ym,myld) + + ! Build projected matrix + call dgemm('t','n',ntrials,ntrials,myld,1d0,dbl_mb(k_ks), + $ myld,dbl_mb(k_mks),myld,0d0,dbl_mb(vkv),ntrials) + call ga_dgop((/194/),dbl_mb(vkv),ntrials**2,'+') + if (debug) call ma_print(dbl_mb(vkv),ntrials,ntrials,'Proj') + + ! Diagonalize projected matrix + call dsyev('v','l',ntrials,dbl_mb(vkv),ntrials,dbl_mb(k_omega), + $ rdum,-1,info) + if(.not.ma_push_get(mt_dbl,int(rdum),'work',lwork,kwork)) + & call errquit(pname//'failed to allocate work',199,MA_ERR) + call dsyev('v','l',ntrials,dbl_mb(vkv),ntrials,dbl_mb(k_omega), + $ dbl_mb(kwork),int(rdum),info) + if(.not.ma_chop_stack(lwork)) + & call errquit(pname//'failed to allocate work',192,MA_ERR) + if (info.ne.0) + $ call errquit(pname//'Diagonalization failed',206,0) + if (debug) call ma_print(dbl_mb(vkv),ntrials,ntrials,'Eigen') + + + ! Project back vectors + call dgemm('n','n',myld,ntrials,ntrials,1d0,dbl_mb(k_s),myld, + $ dbl_mb(vkv),ntrials,0d0,dbl_mb(k_x),myld) + call dgemm('n','n',myld,ntrials,ntrials,1d0,dbl_mb(k_ks),myld, + $ dbl_mb(vkv),ntrials,0d0,dbl_mb(k_y),myld) + call dgemm('n','n',myld,ntrials,ntrials,1d0,dbl_mb(k_mks),myld, + $ dbl_mb(vkv),ntrials,0d0,dbl_mb(k_ym),myld) + + ! Get residual + call ga_access(g_w,mylo,myhi,1,pars%nroots,k_w,myld) + +#if 1 + call bse_davidson_residual(pars%nroots,ntrials,dbl_mb(k_omega), + $ dbl_mb(k_x),dbl_mb(k_ym),dbl_mb(k_r), + $ dbl_mb(k_dia+mylo-1),dbl_mb(k_w),myld,ndim,norm) + + ! Print info + if (pars%me.eq.0) then + write(*,9010) idavidson,ntrials,pars%nroots-ndim,maxval(norm) + endif + 9010 format(I5,3X,I5,3X,I5,G16.5) +#else + minimum = 0d0 + ndim = 0 + do itrial=1,pars%nroots + call dcopy(myld,dbl_mb(k_ym+(itrial-1)*myld),1,dbl_mb(k_r),1) + call daxpy(myld,-dbl_mb(k_omega+itrial-1), + $ dbl_mb(k_x+(itrial-1)*myld),1,dbl_mb(k_r),1) + norm = maxval(abs(dbl_mb(k_r:k_r+myhi-mylo))) + call ga_dgop((/229/),norm,1,'maxabs') + write(*,*) " ",itrial,norm(1), + $ dsqrt(dbl_mb(k_omega+itrial-1))*27.2114d0 + if (norm(1).gt.1d-5) then + ndim = ndim + 1 + do ipole=mylo,myhi + factor = (dbl_mb(k_dia+ipole-1)-dbl_mb(k_omega+itrial-1)) + dbl_mb(k_r+ipole-mylo) = dbl_mb(k_r+ipole-mylo)/factor + enddo + call ga_put(g_w,mylo,myhi,ndim,ndim,dbl_mb(k_r),myld) + endif + enddo +#endif + + call ga_release_update(g_w,mylo,myhi,1,pars%nroots) + call ga_release_update(g_x,mylo,myhi,1,ntrials) + call ga_release_update(g_y,mylo,myhi,1,ntrials) + call ga_release_update(g_ym,mylo,myhi,1,ntrials) + call ga_release_update(g_s,mylo,myhi,1,ntrials) + call ga_release_update(g_ks,mylo,myhi,1,ntrials) + call ga_release_update(g_mks,mylo,myhi,1,ntrials) + + ! All residuals are below the threshold + if (ndim.eq.0) exit + + ! Restart calculation if dimensions exceeded + if (ndim+ntrials.gt.pars%nmax) then + call bse_davidson_restart(ntrials,pars%nroots,npoles, + $ g_x,g_y,g_ym,g_s,g_ks,g_mks,l_vkv,vkv) + cycle + endif + + ! Project-out current vectors + call ga_access(g_ks,mylo,myhi,1,ntrials,k_ks,myld) + call ga_access(g_s,mylo,myhi,1,ntrials,k_s,myld) + call ga_access(g_w,mylo,myhi,1,pars%nroots,k_w,myld) + if(.not.ma_push_get(mt_dbl,ndim*ntrials,'ksw',l_ksw,ksw)) + $ call errquit(pname//'ksw allocation failed',264,MA_ERR) + call dgemm('t','n',ntrials,ndim,myld,1d0,dbl_mb(k_ks),myld, + $ dbl_mb(k_w),myld,0d0,dbl_mb(ksw),ntrials) + call ga_dgop((/268/),dbl_mb(ksw),ntrials*ndim,'+') + call dgemm('n','n',myld,ndim,ntrials,-1d0,dbl_mb(k_s),myld, + $ dbl_mb(ksw),ntrials,1d0,dbl_mb(k_w),myld) + if(.not.ma_chop_stack(l_ksw)) + $ call errquit(pname//'ksw deallocation failed',272,MA_ERR) + call ga_release(g_ks,mylo,myhi,1,ntrials) + call ga_release(g_s,mylo,myhi,1,ntrials) + call ga_release_update(g_w,mylo,myhi,1,pars%nroots) + + + ! K-orthogonalization + call bse_davidson_kvec(pars,g_w,g_wia,g_kw,npoles, + $ ndim,pars%singlet) + call bse_davidson_mvec(pars,g_kw,g_wia,g_mkw,npoles, + $ ndim) + call ga_access(g_w,mylo,myhi,1,pars%nroots,k_w,myld) + call ga_access(g_kw,mylo,myhi,1,pars%nroots,k_kw,myld) + call ga_access(g_mkw,mylo,myhi,1,pars%nroots,k_mkw,myld) + call ga_access(g_x,mylo,myhi,1,mdim,k_x,myld) + call bse_davidson_kortho(pars,dbl_mb(k_w),dbl_mb(k_kw), + $ dbl_mb(k_mkw),dbl_mb(vkv),dbl_mb(k_x),myld,ndim,mdim, + $ .false.) + call ga_release_update(g_x,mylo,myhi,1,mdim) + call ga_release_update(g_w,mylo,myhi,1,pars%nroots) + call ga_release_update(g_kw,mylo,myhi,1,pars%nroots) + call ga_release_update(g_mkw,mylo,myhi,1,pars%nroots) + + ! All trial vectors were linearly-dependent + ! restart calculation with current best guess + if (mdim.eq.0) then + call bse_davidson_restart(ntrials,pars%nroots,npoles, + $ g_x,g_y,g_ym,g_s,g_ks,g_mks,l_vkv,vkv) + cycle + endif + + ndim = mdim + + ! Extend the size of the current vectors + call bse_davidson_newvecs(ntrials,ndim,npoles,g_x,g_y,g_ym, + $ g_s,g_ks,g_mks,g_w,g_kw,g_mkw, + $ l_vkv,vkv) + + enddo + + stat = ga_destroy(g_x).and.ga_destroy(g_y).and.ga_destroy(g_ym) + stat = stat.and.ga_destroy(g_s).and.ga_destroy(g_ks) + stat = stat.and.ga_destroy(g_mks).and.ga_destroy(g_w) + stat = stat.and.ga_destroy(g_kw).and.ga_destroy(g_mkw) + stat = stat.and.ga_destroy(g_trials).and.ga_destroy(g_wia) + stat = stat.and.ga_destroy(pars%g_apb).and.ga_destroy(pars%g_amb) + do isp=1,pars%ipol + stat = stat.and.ga_destroy(pars%g_erioo(isp)) + stat = stat.and.ga_destroy(pars%g_eriov(isp)) + stat = stat.and.ga_destroy(pars%g_erivv(isp)) + stat = stat.and.ga_destroy(pars%g_wov(isp)) + enddo + if(.not.stat) call errquit('deallocation failed',0,GA_ERR) + stat = ma_chop_stack(l_dia) + if(.not.stat) call errquit('deallocation failed',0,MA_ERR) end subroutine bse_davidson + + + + diff --git a/src/bsemol/bse_davidson_diagonal.F b/src/bsemol/bse_davidson_diagonal.F new file mode 100644 index 0000000000..b8024d043d --- /dev/null +++ b/src/bsemol/bse_davidson_diagonal.F @@ -0,0 +1,98 @@ + subroutine bse_davidson_diagonal(pars,wia,maxpoles) + implicit none +#include "mafdecls.fh" +#include "errquit.fh" +#include "global.fh" +#include "bse.fh" +#include "util.fh" + + type(bse_params_t) :: pars + + integer maxpoles, npoles + double precision wia(maxpoles,pars%ipol) + + character(*),parameter :: pname = 'bse_casida: ' + + integer isp,jsp,nri,off1,off2 + integer ilo,ihi,jlo,jhi + integer nocc2(2),nvir2(2) + integer ipole,imo,jmo,amo,bmo + integer k,l,kproc,lproc,klocal,llocal,kglobal,lglobal + integer g_diag, g_tmp, g_amb, ktmp, ld, info, i, j + integer ij,jb,llia,ulia,ltmp2,ltmp3,ktmp2,ktmp3 + double precision temp(maxpoles),factor + + double precision, external :: ddot + +#ifdef USE_OPENMP + call util_blas_set_num_threads(pars%iMaxthreads) +#endif + + nri = pars%nri + npoles = pars%npoles(1) + if (pars%ipol.gt.1) npoles = npoles + pars%npoles(2) + if (.not.nga_create(mt_dbl,1,npoles,'apb',0,pars%g_apb)) + $ call errquit(pname//'could not create wia',0,GA_ERR) + if (.not.nga_create(mt_dbl,1,npoles,'amb',0,pars%g_amb)) + $ call errquit(pname//'could not create wia',0,GA_ERR) + if(.not.ma_push_get(mt_dbl,nri,'dia',ltmp2,ktmp2)) + & call errquit(pname//'failed to allocate Delta_ia',0,MA_ERR) + if(.not.ma_push_get(mt_dbl,nri,'dia',ltmp3,ktmp3)) + & call errquit(pname//'failed to allocate Delta_ia',0,MA_ERR) + + factor = 2d0 + if ((pars%singlet) .and. (pars%ipol.eq.1)) factor = 4d0 + if ((pars%triplet) .and. (pars%ipol.eq.1)) factor = 0d0 + if (pars%tda) factor = factor/2d0 + + do isp=1,pars%ipol + off1 = (isp-1)*pars%npoles(1) + + ! Eigenvalue differences + call ga_distribution(pars%g_eriov(isp),pars%me,ilo,ihi,jlo,jhi) + call dcopy(jhi-jlo+1,wia(1,isp),1,temp,1) + + ! Screened Coulomb from A + do ipole=jlo,jhi + imo = (ipole-1)/pars%nvir(isp) + 1 + amo = ipole - (imo-1)*pars%nvir(isp) + imo = imo + (imo-1)*pars%nocc(isp) + amo = amo + (amo-1)*pars%nvir(isp) + call ga_get(pars%g_erioo(isp),1,nri,imo,imo,dbl_mb(ktmp2),nri) + call ga_get(pars%g_erivv(isp),1,nri,amo,amo,dbl_mb(ktmp3),nri) + temp(ipole-jlo+1) = temp(ipole-jlo+1) - + $ ddot(nri,dbl_mb(ktmp2),1,dbl_mb(ktmp3),1) + enddo + call nga_put(pars%g_apb,jlo+off1,jhi+off1,temp,jhi-jlo+1) + call nga_put(pars%g_amb,jlo+off1,jhi+off1,temp,jhi-jlo+1) + + ! Screened Coulomb from B + if (.not.pars%tda) then + call ga_access(pars%g_wov(isp),ilo,ihi,jlo,jhi,ktmp,ld) + do ipole=jlo,jhi + temp(ipole-jlo+1) = ddot(nri,dbl_mb(ktmp+(ipole-jlo)*nri),1, + $ dbl_mb(ktmp+(ipole-jlo)*nri),1) + enddo + call nga_acc(pars%g_apb,jlo+off1,jhi+off1,temp,jhi-jlo+1,-1d0) + call nga_acc(pars%g_amb,jlo+off1,jhi+off1,temp,jhi-jlo+1,1d0) + call ga_release(pars%g_wov(isp),ilo,ihi,jlo,jhi) + endif + + ! Hartree term + call ga_access(pars%g_eriov(isp),ilo,ihi,jlo,jhi,ktmp,ld) + do ipole=jlo,jhi + temp(ipole-jlo+1) = + $ factor*ddot(nri,dbl_mb(ktmp+(ipole-jlo)*nri),1, + $ dbl_mb(ktmp+(ipole-jlo)*nri),1) + enddo + call nga_acc(pars%g_apb,jlo+off1,jhi+off1,temp,jhi-jlo+1,1d0) + call ga_release(pars%g_eriov(isp),ilo,ihi,jlo,jhi) + + enddo + + if(.not.ma_chop_stack(ltmp2)) + $ call errquit('bse_davidson_diagonal: chop stack',0,MA_ERR) + + call ga_sync() + + end subroutine diff --git a/src/bsemol/bse_davidson_guess.F b/src/bsemol/bse_davidson_guess.F new file mode 100644 index 0000000000..c4a3d33ead --- /dev/null +++ b/src/bsemol/bse_davidson_guess.F @@ -0,0 +1,96 @@ + subroutine bse_davidson_guess(pars,diagonal,g_trials,npoles, + $ ntrials) + + implicit none + +#include "bse.fh" +#include "stdio.fh" +#include "mafdecls.fh" +#include "cdft.fh" + + type(bse_params_t) :: pars + integer npoles,ntrials,g_trials + double precision diagonal(npoles) + double precision amb(npoles) + + character*4 oname,vname + logical found + integer amo,imo,itrial,ipole,jpole,indeces(ntrials) + integer isym,jsym,i,j,pol + double precision minimum + + call nga_get(pars%g_apb,1,npoles,diagonal,npoles) + call nga_get(pars%g_amb,1,npoles,amb,npoles) + + diagonal(:) = diagonal(:)*amb(:) + indeces(:) = -1 + + ! Get the indeces of the smallest diagonal elements + do itrial=1,ntrials + minimum = 1d6 + do ipole=1,npoles + if (abs(diagonal(ipole)).lt.minimum) then + found = .true. + do jpole=1,itrial + if (ipole.eq.indeces(jpole)) then + found = .false. + exit + endif + enddo + if (found) then + indeces(itrial) = ipole + minimum = abs(diagonal(ipole)) + endif + endif + enddo + enddo + + ! Get symmetry of ground state + isym = 1 + if (pars%ipol.eq.2) then + do i=1,pars%ipol + do j=1,pars%nocc(i) + isym = ieor(isym-1,int_mb(pars%k_irs(i)+j-1)-1)+1 + enddo + enddo + endif + call sym_irrepname(geom, isym, oname) + + + ! Start the guess vector + write(LuOut,*) + write(LuOut,9000) ntrials + write(LuOut,9020) + write(LuOut,9010) + write(LuOut,9020) + do itrial=1,ntrials + ipole = indeces(itrial) + call ga_put(g_trials,ipole,ipole,itrial,itrial,1d0,1) + + ! Print information + if (ipole.le.pars%npoles(1)) then + imo = (ipole-1)/pars%nvir(1) + 1 + amo = ipole - (imo-1)*pars%nvir(1) + pars%nocc(1) + jsym = ieor(isym-1,int_mb(pars%k_irs(1)+imo-1)-1)+1 + jsym = ieor(jsym-1,int_mb(pars%k_irs(1)+amo-1)-1)+1 + pol = 1 + else + imo = (ipole - pars%npoles(1) - 1)/pars%nvir(2) + 1 + amo = ipole - pars%npoles(1) - (imo-1)*pars%nvir(2) + + $ pars%nocc(2) + jsym = ieor(isym-1,int_mb(pars%k_irs(2)+imo-1)-1)+1 + jsym = ieor(jsym-1,int_mb(pars%k_irs(2)+amo-1)-1)+1 + pol = 2 + endif + call sym_irrepname(geom, jsym, vname) + write(luout,9030) itrial,pol,imo,amo,vname, + $ dsqrt(diagonal(ipole))*27.2114d0 + enddo + + 9000 format(i5,' smallest diagonals (eV) ') + 9010 format(' No. Spin Occ Vir Irrep Diag') + 9020 format('------------------------------------') + 9030 format(4i5,3x,a4,1x,f8.3) + + end subroutine + diff --git a/src/bsemol/bse_davidson_kortho.F b/src/bsemol/bse_davidson_kortho.F new file mode 100644 index 0000000000..821763a600 --- /dev/null +++ b/src/bsemol/bse_davidson_kortho.F @@ -0,0 +1,71 @@ + subroutine bse_davidson_kortho(pars,v,kv,mkv,vkv,work,npoles,n,m, + $ first) + + implicit none +#include "bse.fh" +#include "mafdecls.fh" +#include "errquit.fh" + + type(bse_params_t) :: pars + logical first + integer npoles,n,m + + integer l_work,k_work,info,i,j,k + + double precision rdum + double precision v(npoles,n),kv(npoles,n),mkv(npoles,n) + double precision vkv(n,n),eig(n),work(npoles,n) + + ! V**T K V + call dgemm('t','n',n,n,npoles,1d0,v,npoles,kv,npoles,0d0,vkv,n) + call ga_dgop((/14/),vkv,n*n,'+') + + ! Allocate work field + call dsyev('v','l',n,vkv,n,eig,rdum,-1,info) + if(.not.ma_push_get(mt_dbl,int(rdum),'work',l_work,k_work)) + $ call errquit('bse_kortho: failed to allocate work',199,MA_ERR) + + ! Diagonalize matrix + call dsyev('v','l',n,vkv,n,eig,dbl_mb(k_work),int(rdum),info) + if (info.ne.0) + $ call errquit("bse_davidson_kortho: diago failed",0,0) + + ! Deallocate field + if (.not.ma_chop_stack(l_work)) + $ call errquit('bse_kortho: failed to deallocate work',199,MA_ERR) + + ! Remove small eigenpairs + m = n + k = 1 + 100 continue + do i=k,m + if (eig(i).lt.1d-10) then + do j=i+1,n + eig(j-1) = eig(j) + vkv(:,j-1) = vkv(:,j) + enddo + m = m - 1 + k = i + goto 100 + endif + enddo + + ! Obtain VKV^(1/2) + do i=1,m + vkv(:,i) = vkv(:,i)/dsqrt(eig(i)) + enddo + + if (m.eq.0) return + + ! Obtain orthogonalized vectors + call dgemm('n','n',npoles,m,n,1d0,v,npoles,vkv,n,0d0,work,npoles) + call dcopy(npoles*m,work,1,v,1) + + if (first) return + call dgemm('n','n',npoles,m,n,1d0,kv,npoles,vkv,n,0d0,work,npoles) + call dcopy(npoles*m,work,1,kv,1) + call dgemm('n','n',npoles,m,n,1d0,mkv,npoles,vkv,n,0d0,work, + $ npoles) + call dcopy(npoles*m,work,1,mkv,1) + + end subroutine diff --git a/src/bsemol/bse_davidson_kvec.F b/src/bsemol/bse_davidson_kvec.F new file mode 100644 index 0000000000..90b256e463 --- /dev/null +++ b/src/bsemol/bse_davidson_kvec.F @@ -0,0 +1,158 @@ + subroutine bse_davidson_kvec(pars,vec,wia,kv,npoles,ntrials, + $ dohartree) + implicit none +#include "bse.fh" +#include "global.fh" +#include "mafdecls.fh" +#include "errquit.fh" + + type(bse_params_t) :: pars + + integer npoles,ntrials + integer vec,wia,kv,mv + + logical dohartree + + integer ipol,npoles1,npoles2,uli,lli,ipole + integer nocc(2),nvir(2),amo,imo,itrial,ula,lla,nri + + integer g_tmp1(2),g_tmp2(2),g_tmp3(2) + double precision temp(npoles),factor + + ipol = pars%ipol + nri = pars%nri + nocc = pars%nocc + nvir = pars%nvir + npoles1 = nocc(1)*nvir(1) + npoles2 = nocc(2)*nvir(2) + + call ga_copy(vec,kv) + call ga_scale_rows(kv,wia) + + if (.not.ga_create(mt_dbl,nvir(1),nocc(1),'g_tmp1',0,nocc(1), + $ g_tmp1)) + $ call errquit('bse_davidson_kvec: ga create failed',34,GA_ERR) + if (.not.ga_create(mt_dbl,nri,nocc(1),'g_tmp2',0,nocc(1), + $ g_tmp2)) + $ call errquit('bse_davidson_kvec: ga create failed',37,GA_ERR) + if (pars%ipol.gt.1) then + if (.not.ga_create(mt_dbl,nvir(2),nocc(2),'g_tmp1',0,nocc(2), + $ g_tmp1(2))) + $ call errquit('bse_davidson_kvec: ga create failed',48,GA_ERR) + if (.not.ga_create(mt_dbl,nri,nocc(2),'g_tmp2',0,nocc(2), + $ g_tmp2(2))) + $ call errquit('bse_davidson_kvec: ga create failed',51,GA_ERR) + endif + + do itrial=1,ntrials + ! Screened Coulomb A + call ga_copy_patch('n',vec,1,npoles1,itrial,itrial, + $ g_tmp1,1,nvir(1),1,nocc(1)) + do amo=1,nvir(1) + lla = (amo-1)*nvir(1) + 1 + ula = amo*nvir(1) + call ga_matmul_patch('n','n',1d0,0d0, + $ pars%g_erivv(1),1,nri,lla,ula, + $ g_tmp1,1,nvir(1),1,nocc(1), + $ g_tmp2,1,nri,1,nocc(1)) + do imo=1,nocc(1) + lli = (imo-1)*nocc(1) + 1 + uli = imo*nocc(1) + ipole = (imo-1)*nvir(1) + amo + temp(ipole) = ga_ddot_patch(g_tmp2,'n',1,nri,1,nocc(1), + $ pars%g_erioo(1),'n',1,nri,lli,uli) + enddo + enddo + if (ipol.gt.1) then + call ga_copy_patch('n',vec,1+npoles1,npoles,itrial,itrial, + $ g_tmp1(2),1,nvir(2),1,nocc(2)) + do amo=1,nvir(2) + lla = (amo-1)*nvir(2) + 1 + ula = amo*nvir(2) + call ga_matmul_patch('n','n',1d0,0d0, + $ pars%g_erivv(2),1,nri,lla,ula, + $ g_tmp1(2),1,nvir(2),1,nocc(2), + $ g_tmp2(2),1,nri,1,nocc(2)) + do imo=1,nocc(2) + lli = (imo-1)*nocc(2) + 1 + uli = imo*nocc(2) + ipole = (imo-1)*nvir(2) + amo + npoles1 + temp(ipole) = ga_ddot_patch(g_tmp2(2),'n',1,nri,1,nocc(2), + $ pars%g_erioo(2),'n',1,nri,lli,uli) + enddo + enddo + endif + if (pars%me.eq.0) + $ call ga_acc(kv,1,npoles,itrial,itrial,temp,npoles,-1d0) + enddo + !call ga_copy(kv,mv) + + if(.not. (ga_destroy(g_tmp1(1)) .and. ga_destroy(g_tmp2(1)))) + $ call errquit('bse_davidson_kvec: ga_destroy_failed',93,GA_ERR) + if(pars%ipol.gt.1) then + if(.not. (ga_destroy(g_tmp1(2)) .and. ga_destroy(g_tmp2(2)))) + $ call errquit('bse_davidson_kvec: ga_destroy_failed',96,GA_ERR) + endif + + if (.not.ga_create(mt_dbl,nri,ntrials,'g_tmp1',0,ntrials, + $ g_tmp1)) + $ call errquit('bse_davidson_kvec: ga create failed',102,GA_ERR) + if (.not.ga_create(mt_dbl,npoles,ntrials,'g_tmp2',0,ntrials, + $ g_tmp2)) + $ call errquit('bse_davidson_kvec: ga create failed',105,GA_ERR) + + ! Hartree + if (dohartree) then + factor = 4d0/pars%ipol + if (pars%tda) factor = factor/2d0 + call ga_matmul_patch('n','n',1d0,0d0, + $ pars%g_eriov(1),1,nri,1,npoles1, + $ vec,1,npoles1,1,ntrials, + $ g_tmp1,1,nri,1,ntrials) + if (pars%ipol.gt.1) then + call ga_matmul_patch('n','n',1d0,1d0, + $ pars%g_eriov(2),1,nri,1,npoles2, + $ vec,1+npoles1,npoles,1,ntrials, + $ g_tmp1,1,nri,1,ntrials) + endif + call ga_matmul_patch('t','n',factor,1d0, + $ pars%g_eriov(1),1,npoles1,1,nri, + $ g_tmp1,1,nri,1,ntrials, + $ kv,1,npoles1,1,ntrials) + if (pars%ipol.gt.1) then + call ga_matmul_patch('t','n',factor,1d0, + $ pars%g_eriov(2),1,npoles2,1,nri, + $ g_tmp1,1,nri,1,ntrials, + $ kv,1+npoles1,npoles,1,ntrials) + endif + endif + + ! Screened Coulomb B + call ga_matmul_patch('n','n',1d0,0d0, + $ pars%g_wov(1),1,nri,1,npoles1, + $ vec,1,npoles1,1,ntrials, + $ g_tmp1,1,nri,1,ntrials) + call ga_matmul_patch('t','n',-1d0,0d0, + $ pars%g_wov(1),1,npoles1,1,nri, + $ g_tmp1,1,nri,1,ntrials, + $ g_tmp2,1,npoles1,1,ntrials) + if (pars%ipol.gt.1) then + call ga_matmul_patch('n','n',1d0,0d0, + $ pars%g_wov(2),1,nri,1,npoles2, + $ vec,1+npoles1,npoles,1,ntrials, + $ g_tmp1,1,nri,1,ntrials) + call ga_matmul_patch('t','n',-1d0,0d0, + $ pars%g_wov(2),1,npoles2,1,nri, + $ g_tmp1,1,nri,1,ntrials, + $ g_tmp2,1+npoles1,npoles,1,ntrials) + endif + + call ga_add_patch(1d0,g_tmp2,1,npoles,1,ntrials, + $ 1d0,kv,1,npoles,1,ntrials, + $ kv,1,npoles,1,ntrials) + !call ga_add(-1d0,g_tmp4,1d0,mv,mv) + + if(.not.(ga_destroy(g_tmp1) .and. ga_destroy(g_tmp2))) + $ call errquit('bse_davidson_kvec: ga_destroy failed',156,GA_ERR) + + end diff --git a/src/bsemol/bse_davidson_mvec.F b/src/bsemol/bse_davidson_mvec.F new file mode 100644 index 0000000000..5d50fbfb6e --- /dev/null +++ b/src/bsemol/bse_davidson_mvec.F @@ -0,0 +1,131 @@ + + subroutine bse_davidson_mvec(pars,vec,wia,mv,npoles,ntrials) + implicit none +#include "bse.fh" +#include "global.fh" +#include "mafdecls.fh" +#include "errquit.fh" + + type(bse_params_t) :: pars + + integer npoles,ntrials + integer vec,wia,kv,mv + + integer ipol,npoles1,npoles2,uli,lli,ipole + integer nocc(2),nvir(2),amo,imo,itrial,ula,lla,nri + + integer g_tmp1(2),g_tmp2(2) + double precision temp(npoles),factor + + ipol = pars%ipol + nri = pars%nri + nocc = pars%nocc + nvir = pars%nvir + npoles1 = nocc(1)*nvir(1) + npoles2 = nocc(2)*nvir(2) + + ! Create temporary arrays + if (.not.ga_create(mt_dbl,nvir(1),nocc(1),'g_tmp1',0,nocc(1), + $ g_tmp1)) + $ call errquit('bse_davidson_kvec: ga create failed',34,GA_ERR) + if (.not.ga_create(mt_dbl,nri,nocc(1),'g_tmp2',0,nocc(1), + $ g_tmp2)) + $ call errquit('bse_davidson_kvec: ga create failed',37,GA_ERR) + + if (pars%ipol.gt.1) then + if (.not.ga_create(mt_dbl,nvir(2),nocc(2),'g_tmp1',0,nocc(2), + $ g_tmp1(2))) + $ call errquit('bse_davidson_kvec: ga create failed',48,GA_ERR) + if (.not.ga_create(mt_dbl,nri,nocc(2),'g_tmp2',0,nocc(2), + $ g_tmp2(2))) + $ call errquit('bse_davidson_kvec: ga create failed',51,GA_ERR) + endif + + + call ga_copy(vec,mv) + call ga_scale_rows(mv,wia) + + do itrial=1,ntrials + call ga_copy_patch('n',vec,1,npoles1,itrial,itrial, + $ g_tmp1,1,nvir(1),1,nocc(1)) + ! Screened Coulomb A + do amo=1,nvir(1) + lla = (amo-1)*nvir(1) + 1 + ula = amo*nvir(1) + call ga_matmul_patch('n','n',1d0,0d0, + $ pars%g_erivv(1),1,nri,lla,ula, + $ g_tmp1,1,nvir(1),1,nocc(1), + $ g_tmp2,1,nri,1,nocc(1)) + do imo=1,nocc(1) + lli = (imo-1)*nocc(1) + 1 + uli = imo*nocc(1) + ipole = (imo-1)*nvir(1) + amo + temp(ipole) = ga_ddot_patch(g_tmp2,'n',1,nri,1,nocc(1), + $ pars%g_erioo(1),'n',1,nri,lli,uli) + enddo + enddo + if (ipol.gt.1) then + call ga_copy_patch('n',vec,1+npoles1,npoles,itrial,itrial, + $ g_tmp1,1,nvir(2),1,nocc(2)) + do amo=1,nvir(2) + lla = (amo-1)*nvir(2) + 1 + ula = amo*nvir(2) + call ga_matmul_patch('n','n',1d0,0d0, + $ pars%g_erivv(2),1,nri,lla,ula, + $ g_tmp1,1,nvir(2),1,nocc(2), + $ g_tmp2,1,nri,1,nocc(2)) + do imo=1,nocc(2) + lli = (imo-1)*nocc(2) + 1 + uli = imo*nocc(2) + ipole = (imo-1)*nvir(2) + amo + npoles1 + temp(ipole) = ga_ddot_patch(g_tmp2,'n',1,nri,1,nocc(2), + $ pars%g_erioo(2),'n',1,nri,lli,uli) + enddo + enddo + endif + if (pars%me.eq.0) + $ call ga_acc(mv,1,npoles,itrial,itrial,temp,npoles,-1d0) + enddo + + if(.not. (ga_destroy(g_tmp1(1)) .and. ga_destroy(g_tmp2(1)))) + $ call errquit('bse_davidson_kvec: ga_destroy_failed',93,GA_ERR) + if(pars%ipol.gt.1) then + if(.not. (ga_destroy(g_tmp1(2)) .and. ga_destroy(g_tmp2(2)))) + $ call errquit('bse_davidson_kvec: ga_destroy_failed',96,GA_ERR) + endif + + if (.not.ga_create(mt_dbl,nri,ntrials,'g_tmp1',0,ntrials, + $ g_tmp1)) + $ call errquit('bse_davidson_kvec: ga create failed',102,GA_ERR) + if (.not.ga_create(mt_dbl,npoles,ntrials,'g_tmp2',0,ntrials, + $ g_tmp2)) + $ call errquit('bse_davidson_kvec: ga create failed',105,GA_ERR) + + ! Screened Coulomb B + call ga_matmul_patch('n','n',1d0,0d0, + $ pars%g_wov(1),1,nri,1,npoles1, + $ vec,1,npoles1,1,ntrials, + $ g_tmp1,1,nri,1,ntrials) + call ga_matmul_patch('t','n',-1d0,0d0, + $ pars%g_wov(1),1,npoles1,1,nri, + $ g_tmp1,1,nri,1,ntrials, + $ g_tmp2,1,npoles1,1,ntrials) + if (pars%ipol.gt.1) then + call ga_matmul_patch('n','n',1d0,0d0, + $ pars%g_wov(2),1,nri,1,npoles2, + $ vec,1+npoles1,npoles,1,ntrials, + $ g_tmp1,1,nri,1,ntrials) + call ga_matmul_patch('t','n',-1d0,0d0, + $ pars%g_wov(2),1,npoles2,1,nri, + $ g_tmp1,1,nri,1,ntrials, + $ g_tmp2,1+npoles1,npoles,1,ntrials) + endif + call ga_add_patch(-1d0,g_tmp2,1,npoles,1,ntrials, + $ 1d0,mv,1,npoles,1,ntrials, + $ mv,1,npoles,1,ntrials) + + if(.not.(ga_destroy(g_tmp1) .and. ga_destroy(g_tmp2))) + $ call errquit('bse_davidson_kvec: ga_destroy failed',156,GA_ERR) + + end + diff --git a/src/bsemol/bse_davidson_newvecs.F b/src/bsemol/bse_davidson_newvecs.F new file mode 100644 index 0000000000..f82591bfe2 --- /dev/null +++ b/src/bsemol/bse_davidson_newvecs.F @@ -0,0 +1,73 @@ + subroutine bse_davidson_newvecs(ntrials,ndim,npoles,g_x,g_y, + $ g_ym,g_s,g_ks,g_mks,g_w,g_kw,g_mkw,lvkv,vkv) + + implicit none +#include "global.fh" +#include "mafdecls.fh" +#include "errquit.fh" + + integer ntrials,ndim,npoles + integer g_x,g_y,g_ym,g_s,g_ks,g_mks + integer g_w,g_kw,g_mkw,lvkv,vkv + + logical stat + + ! Save working vectors + call ga_copy(g_s,g_x) + call ga_copy(g_ks,g_y) + call ga_copy(g_mks,g_ym) + + ! Destroy working vectors + stat = ga_destroy(g_s).and.ga_destroy(g_ks).and.ga_destroy(g_mks) + if(.not.stat) + $ call errquit('bse_davidson_newvecs: destroy failed',1,GA_ERR) + + ! Create new working vectors + stat = ga_create(mt_dbl,npoles,ntrials+ndim,'s',0, + $ ntrials+ndim,g_s) .and. + $ ga_create(mt_dbl,npoles,ntrials+ndim,'ks',0, + $ ntrials+ndim,g_ks) .and. + $ ga_create(mt_dbl,npoles,ntrials+ndim,'mks',0, + $ ntrials+ndim,g_mks) + if(.not.stat) + $ call errquit('bse_davidson_newvecs: create failed',1,GA_ERR) + + + ! Copy back old working vectors plus new vectors + call ga_copy_patch('n',g_x,1,npoles,1,ntrials, + $ g_s,1,npoles,1,ntrials) + call ga_copy_patch('n',g_w,1,npoles,1,ndim, + $ g_s,1,npoles,ntrials+1,ntrials+ndim) + + call ga_copy_patch('n',g_y,1,npoles,1,ntrials, + $ g_ks,1,npoles,1,ntrials) + call ga_copy_patch('n',g_kw,1,npoles,1,ndim, + $ g_ks,1,npoles,ntrials+1,ntrials+ndim) + + call ga_copy_patch('n',g_ym,1,npoles,1,ntrials, + $ g_mks,1,npoles,1,ntrials) + call ga_copy_patch('n',g_mkw,1,npoles,1,ndim, + $ g_mks,1,npoles,ntrials+1,ntrials+ndim) + + ! Update ntrials + ntrials = ntrials + ndim + + ! Destroy old solutions + stat = ga_destroy(g_x).and.ga_destroy(g_y).and.ga_destroy(g_ym) + if(.not.stat) + $ call errquit('bse_davidson_newvecs: destroy failed',2,GA_ERR) + + ! Create new solutions + stat = ga_create(mt_dbl,npoles,ntrials,'x',0,ntrials,g_x) .and. + $ ga_create(mt_dbl,npoles,ntrials,'y',0,ntrials,g_y) .and. + $ ga_create(mt_dbl,npoles,ntrials,'ym',0,ntrials,g_ym) + if(.not.stat) + $ call errquit('bse_davidson_newvecs: create failed',2,GA_ERR) + + ! Reallocate VKV + if(.not.ma_chop_stack(lvkv)) + $ call errquit('bse_davidson_restart: alloc failed',3,MA_ERR) + if(.not.ma_push_get(mt_dbl,ntrials*ntrials,'vkv',lvkv,vkv)) + $ call errquit('bse_davidson_restart: dealloc failed',3,MA_ERR) + + end subroutine diff --git a/src/bsemol/bse_davidson_residual.F b/src/bsemol/bse_davidson_residual.F new file mode 100644 index 0000000000..a566fee17d --- /dev/null +++ b/src/bsemol/bse_davidson_residual.F @@ -0,0 +1,29 @@ + subroutine bse_davidson_residual(nroots,ntrials,omega,x,ym,r,dia, + $ w,npoles,ndim,norm) + implicit none + + logical main + integer nroots,npoles,ntrials,ndim + double precision omega(nroots) + double precision ym(npoles,nroots),r(npoles) + double precision x(npoles,nroots),dia(npoles),w(npoles,nroots) + + integer iroot + double precision norm(nroots) + + ndim = 0 + do iroot=1,nroots + r(:) = ym(:,iroot) - omega(iroot)*x(:,iroot) + norm(iroot) = maxval(abs(r)) + call ga_dgop((/1/),norm(iroot),1,"maxabs") + if (norm(iroot).gt.1d-5) then + ndim = ndim + 1 + w(:,ndim) = r(:)/(dia(:) - omega(iroot)) + endif + enddo + + end subroutine + + + + diff --git a/src/bsemol/bse_davidson_restart.F b/src/bsemol/bse_davidson_restart.F new file mode 100644 index 0000000000..f2ba4f9e9e --- /dev/null +++ b/src/bsemol/bse_davidson_restart.F @@ -0,0 +1,68 @@ + subroutine bse_davidson_restart(ntrials,nroots,npoles,g_x,g_y, + $ g_ym,g_s,g_ks,g_mks,lvkv,vkv) + + implicit none +#include "global.fh" +#include "mafdecls.fh" +#include "errquit.fh" + + integer ntrials,nroots,npoles + integer g_x,g_y,g_ym,g_s,g_ks,g_mks,lvkv,vkv + + logical stat + + ! Reset the number of trials + ntrials = nroots + + ! Copy current solutions + call ga_copy_patch('n',g_x,1,npoles,1,ntrials, + $ g_s,1,npoles,1,ntrials) + call ga_copy_patch('n',g_y,1,npoles,1,ntrials, + $ g_ks,1,npoles,1,ntrials) + call ga_copy_patch('n',g_ym,1,npoles,1,ntrials, + $ g_mks,1,npoles,1,ntrials) + + ! Destroy current solutions + stat = ga_destroy(g_x).and.ga_destroy(g_y).and.ga_destroy(g_ym) + if (.not.stat) + $ call errquit('bse_davidson_restar: failed destroy',1,GA_ERR) + + ! Re-create new solutions + stat = ga_create(mt_dbl,npoles,ntrials,'x',0,ntrials,g_x) .and. + $ ga_create(mt_dbl,npoles,ntrials,'y',0,ntrials,g_y) .and. + $ ga_create(mt_dbl,npoles,ntrials,'ym',0,ntrials,g_ym) + if (.not.stat) + $ call errquit('bse_davidson_restar: failed create',1,GA_ERR) + + ! Copy back solutions + call ga_copy_patch('n',g_s,1,npoles,1,ntrials, + $ g_x,1,npoles,1,ntrials) + call ga_copy_patch('n',g_ks,1,npoles,1,ntrials, + $ g_y,1,npoles,1,ntrials) + call ga_copy_patch('n',g_mks,1,npoles,1,ntrials, + $ g_ym,1,npoles,1,ntrials) + + ! Destroy working vectors + stat = ga_destroy(g_s).and.ga_destroy(g_ks).and.ga_destroy(g_mks) + if (.not.stat) + $ call errquit('bse_davidson_restar: failed destroy',2,GA_ERR) + + ! Re-create new solutions + stat = ga_create(mt_dbl,npoles,ntrials,'s',0,ntrials,g_s) .and. + $ ga_create(mt_dbl,npoles,ntrials,'ks',0,ntrials,g_ks) .and. + $ ga_create(mt_dbl,npoles,ntrials,'mks',0,ntrials,g_mks) + if (.not.stat) + $ call errquit('bse_davidson_restar: failed create',2,GA_ERR) + + ! Copy current solutions + call ga_copy(g_x,g_s) + call ga_copy(g_y,g_ks) + call ga_copy(g_ym,g_mks) + + ! Reallocate VKV + if(.not.ma_chop_stack(lvkv)) + $ call errquit('bse_davidson_restart: alloc failed',3,MA_ERR) + if(.not.ma_push_get(mt_dbl,ntrials*ntrials,'vkv',lvkv,vkv)) + $ call errquit('bse_davidson_restart: dealloc failed',3,MA_ERR) + + end subroutine diff --git a/src/bsemol/bse_defaults.F b/src/bsemol/bse_defaults.F index 3e253d9966..167d442f61 100644 --- a/src/bsemol/bse_defaults.F +++ b/src/bsemol/bse_defaults.F @@ -21,6 +21,7 @@ & rtdb_put(rtdb,'bse:elower',mt_dbl,1,0d0) .and. & rtdb_put(rtdb,'bse:upper',mt_dbl,1,0d0) .and. & rtdb_put(rtdb,'bse:nroots',mt_int,1,10) .and. + & rtdb_put(rtdb,'bse:nmax',mt_int,1,100) .and. & rtdb_put(rtdb,'bse:init',mt_log,1,.true.) if (.not.ok) diff --git a/src/bsemol/bse_init.F b/src/bsemol/bse_init.F index 8c028deadd..7ffc92b036 100644 --- a/src/bsemol/bse_init.F +++ b/src/bsemol/bse_init.F @@ -111,6 +111,14 @@ c if(.not.rtdb_get(pars%rtdb,'bse:nroots',mt_int,1,pars%nroots)) & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + ! Maximum Number of roots + if(.not.rtdb_get(pars%rtdb,'bse:nmax',mt_int,1,pars%nmax)) + & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + if (pars%nmax.le.2*pars%nroots) then + call errquit(pname//'maxroots should be at least 2*nroots', + $ 119,INPUT_ERR) + endif + ! Get some info from DFT module call dft_rdinput(pars%rtdb) if (cdfit) then @@ -212,6 +220,10 @@ c pars%nroots = sum(pars%npoles) endif + if (pars%nmax.gt.sum(pars%npoles)) then + pars%nmax = sum(pars%npoles) + endif + ! Obtain NCAP DD shift 1001 format(2X,A12,F8.3,A3) diff --git a/src/bsemol/bse_input.F b/src/bsemol/bse_input.F index 2a04d8de7d..dfad98ab3f 100644 --- a/src/bsemol/bse_input.F +++ b/src/bsemol/bse_input.F @@ -18,10 +18,10 @@ c character*255 test character(*), parameter :: pname = "bse_input: " c - integer, parameter :: num_dirs = 9 + integer, parameter :: num_dirs = 10 character*11 dirs(num_dirs) data dirs / 'method','tda','ncap','ncapr','singlet','triplet', - & 'outwin', 'nroots', 'end' / + & 'outwin', 'nroots', 'maxroots', 'end' / c integer ind, itemp double precision threshold, eta, temp @@ -45,7 +45,7 @@ c call errquit(pname//'unknown directive', 0, INPUT_ERR) end if c - goto (100, 200, 300, 301, 400, 500, 600, 700, 9999) ind + goto (100, 200, 300, 301, 400, 500, 600, 700, 800, 9999) ind call errquit(pname//'unknown directive',ind, INPUT_ERR) c @@ -59,12 +59,12 @@ c if (inp_compare(.false.,'analytic',test)) then if (.not.rtdb_put(rtdb, 'bse:analytic', mt_log, 1, .true.)) & call errquit(pname//'rtdb_put failed', 101, RTDB_ERR) - elseif (inp_compare(.false.,'bse:davidson',test)) then + elseif (inp_compare(.false.,'davidson',test)) then if (.not.rtdb_put(rtdb, 'bse:davidson', mt_log, 1, .true.)) & call errquit(pname//'rtdb_put failed', 102, RTDB_ERR) if (.not.rtdb_put(rtdb, 'bse:analytic', mt_log, 1, .false.)) & call errquit(pname//'rtdb_put failed', 101, RTDB_ERR) - elseif (inp_compare(.false.,'bse:lanczos',test)) then + elseif (inp_compare(.false.,'lanczos',test)) then if (.not.rtdb_put(rtdb, 'bse:lanczos', mt_log, 1, .true.)) & call errquit(pname//'rtdb_put failed', 103, RTDB_ERR) if (.not.rtdb_put(rtdb, 'bse:analytic', mt_log, 1, .false.)) @@ -129,7 +129,14 @@ c if(.not.rtdb_put(rtdb,'bse:nroots',mt_int,1,itemp)) & call errquit(pname//'rtdb_put failed', 700, RTDB_ERR) goto 10 - +c +c maximum number of trial vectors +c + 800 if(.not.inp_i(itemp)) + & call errquit(pname//'could not read maxroots',800,INPUT_ERR) + if(.not.rtdb_put(rtdb,'bse:nmax',mt_int,1,itemp)) + & call errquit(pname//'rtdb_put failed', 800, RTDB_ERR) + goto 10 c c normal termination c From a5a9ea348ba77bd89326490fddfd9ed3d4460587 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Mon, 24 Jul 2023 10:54:18 -0700 Subject: [PATCH 11/46] Bug fix in ma_print --- src/util/ma_print.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/ma_print.F b/src/util/ma_print.F index 273ea901bc..3a455630ba 100644 --- a/src/util/ma_print.F +++ b/src/util/ma_print.F @@ -16,7 +16,7 @@ c (c) Battelle, PNNL, 2002. write(LuOut,*) write(LuOut,*) title write(LuOut,9000) - do k = 0,mdim/6 + do k = 0,(mdim-1)/6 write(LuOut,*) write(LuOut,9010) (j,j=k*6+1,min(mdim,k*6+6)) do i=1,ndim From f1c1cc549a0f7e3c47f27d12a79a1950b88f3ddc Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Mon, 24 Jul 2023 10:55:04 -0700 Subject: [PATCH 12/46] Remove junk --- src/gwmol/.gw_analytic_rpa.F.swp | Bin 16384 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/gwmol/.gw_analytic_rpa.F.swp diff --git a/src/gwmol/.gw_analytic_rpa.F.swp b/src/gwmol/.gw_analytic_rpa.F.swp deleted file mode 100644 index 6cfd1d5de5002b53f0a64da434d6dac78beb2dea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNON<;x87>kNNWg$V;vq$-)(=fj+@9T;UE8rykjCp}+1MMecAW%+M7yTDW~S_Z zjJtdGktm78B{u||I0PXP35i4^2ylcD7w!lN1vn871SUFsSOzQu zmI2FvWxz6E8L$jk1}p<_0Rt=`V^T{om~WzxQ53UIcRBW58+PFYh7bc_09K zz#Q;l;Df*&!0!$c@-yK3z&C&|1D^vP2R;oP1&#o}e>WlD0lp190W1MWfO~+yzKf8X zz^{R4fv*8y0D8dvz+J$tdkA?Q_!IDR;K#rVz&C-<16Kh790Fdsn~+}tUk5^<1sn%% zzLSs}z;}V?03Y}$a1gi?_~APUc@lUCSO(^SyMZ_Ef_}gzumMECQQ+0L6Y?_f46p^X zfqxtzO;E%v_z!!n1fsX@!!=cEJfUf}00AB(w0S^KvfO~;I;9%x8;0M4B;053* zU=!E?BESLU_`SNvVG7mP6zwNzoyB97jT=32pt846ji z?P_VV0XGb){!Eo3r|33XTD6RemEod3^^+9D6c)#0o({HXKTQg&l=hV1-$a_~N(j6i z)z<{O-gp$Sd~cFba|d%Q2te&^Qn%}18Ai|o(f!j+{rl{e0;Z}b>MWSq>CDbGshR)* z?QKz~d;DzkvyZo@J5Ny9W-rNy6n4q8+UU?n;VW{1xf*jGsQDe>w!?$eoB?KepQju? zqvk|3`8#b@naRN8sYuqPrA)rh1T%$0s5)haFBtGBavFKVZN!bDVqs;aoa!}Bg*yjP z6))A3)N!0~y4dy3EiNoCQxRu5XMvfmk;pO;4^;lz<<;|5&0V#k`l?TYCeq5PMh88? zjR{U_k9mWRYbkF!1#2@oSyyB0v|TfsFFpcBJnUD8t_z#sI5MQjK5? z7|%5*D7^`txXKX#&d#Lz=W)?U)A#6Y-;YH zgE2h%K%uL7$22Vms;Fy9l=IdIDG3x= zomE9YlQp7gPN@dA7 z=L4R)d^6{%T#(M3d9(5+w0L-J!MnJ!@X+##(b*rel=-OaggkzreMOUi;L_WlXw>LVEDc z*t&9{cG%`bog&bq18;M*<>DsSZgX#&hmO%ENXEU8(^1NOkzt~_@Y6Zmlaq||X2C8Z zMyGQhMx*GB8H!zNiWsf~T*5^2h^DvNQ^p1?7`go5I0rGzta6eHte*C-Y=pB|kWSX`Z%Ex%AYDnK|loW;*R=OXsa|PE9P4 zQK#K$y7--yzX&Yk@5v_C%u?1RLKt|EoX#-@gw00(cQv2QC5!ft%RVKMTlx{%PQTzy*#09|8Uh*}nyT zquY5&wq-BNfMvikU>UFsSOzQumI2FvWxz7Do-E#J;^a)J^H#Ui{-3ql==PTwYJ*Nj@v76}>s!x#=t0ryRy*h@)7$Aq3TxB^JsJ)KraTGFnRF9-W r#O_VfiStl2Jke_HXwRJPcWS5mXhR-dwOu^OBmUhQROfcZIXU?k6Wxuw From 053689f313ca69c88f09b0e3c9e0270a75bd350e Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Tue, 1 Aug 2023 13:09:12 -0700 Subject: [PATCH 13/46] Avoid patch operations as much as possible --- src/bsemol/.temp.swp | Bin 0 -> 12288 bytes src/bsemol/GNUmakefile | 2 +- src/bsemol/bse.fh | 2 + src/bsemol/bse_davidson.F | 431 ++++++++++++++++++++++-------- src/bsemol/bse_davidson_guess.F | 4 +- src/bsemol/bse_davidson_kortho.F | 4 +- src/bsemol/bse_davidson_kvec.F | 220 ++++++++------- src/bsemol/bse_davidson_mvec.F | 131 --------- src/bsemol/bse_davidson_newvecs.F | 28 +- src/bsemol/bse_davidson_restart.F | 26 +- src/bsemol/bse_ri_init.F | 4 +- src/bsemol/bse_wmn.F | 6 +- src/bsemol/temp | 7 + 13 files changed, 489 insertions(+), 376 deletions(-) create mode 100644 src/bsemol/.temp.swp delete mode 100644 src/bsemol/bse_davidson_mvec.F create mode 100644 src/bsemol/temp diff --git a/src/bsemol/.temp.swp b/src/bsemol/.temp.swp new file mode 100644 index 0000000000000000000000000000000000000000..0c3c154b94cf432b95f50955f09ee1d662c0a0f8 GIT binary patch literal 12288 zcmeI&O^XvT90u@I7F-ZtSieBr9;KPd%ltF>04{j&B)05HY&)RKc3awAyy?Z0EBj6M zJBUX=mCwAiSPvC?D?EWrnoOP~^Mf8rXPggTztPF$3gwwn{o&8){iD01^Q@<4)x{?% zq`tGWj9vvB;{WG;=@!i1&Tp2JYL#7mo_wrk@5ieuTP-IU+S&XvyRK%7o%``71t_qO zz+>f|ZNBRL(-->r$-8|PVTJ+}pa2CZKmiI+fC3aaP=V`3PkqJNA9Uw`*tNZX+OErn z0u-PC1t>rP3Q&Lo6rcbFC_sS&6!b6;Q-V Date: Tue, 1 Aug 2023 13:09:56 -0700 Subject: [PATCH 14/46] Remove junk files --- src/bsemol/.temp.swp | Bin 12288 -> 0 bytes src/bsemol/temp | 7 ------- 2 files changed, 7 deletions(-) delete mode 100644 src/bsemol/.temp.swp delete mode 100644 src/bsemol/temp diff --git a/src/bsemol/.temp.swp b/src/bsemol/.temp.swp deleted file mode 100644 index 0c3c154b94cf432b95f50955f09ee1d662c0a0f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&O^XvT90u@I7F-ZtSieBr9;KPd%ltF>04{j&B)05HY&)RKc3awAyy?Z0EBj6M zJBUX=mCwAiSPvC?D?EWrnoOP~^Mf8rXPggTztPF$3gwwn{o&8){iD01^Q@<4)x{?% zq`tGWj9vvB;{WG;=@!i1&Tp2JYL#7mo_wrk@5ieuTP-IU+S&XvyRK%7o%``71t_qO zz+>f|ZNBRL(-->r$-8|PVTJ+}pa2CZKmiI+fC3aaP=V`3PkqJNA9Uw`*tNZX+OErn z0u-PC1t>rP3Q&Lo6rcbFC_sS&6!b6;Q-V Date: Tue, 1 Aug 2023 14:43:12 -0700 Subject: [PATCH 15/46] Destroy GA at the end --- src/bsemol/bse_davidson.F | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/bsemol/bse_davidson.F b/src/bsemol/bse_davidson.F index d0658f4a6a..560fdd382b 100644 --- a/src/bsemol/bse_davidson.F +++ b/src/bsemol/bse_davidson.F @@ -514,6 +514,9 @@ stat = ma_chop_stack(l_dia) if(.not.stat) call errquit('deallocation failed',501,MA_ERR) + ! Destroy GAs + if (.not.ga_destroy(pars%g_apb)) + & call errquit(pname//'could not destroy temp GA',519,GA_ERR) end subroutine bse_davidson From 6f9a0a82484f9b924b65d6ed0693948488f498ca Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Tue, 1 Aug 2023 17:02:15 -0700 Subject: [PATCH 16/46] calculation for Davidson --- src/bsemol/bse_davidson.F | 14 ++++++++- src/bsemol/bse_oscstr.F | 66 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 77 insertions(+), 3 deletions(-) diff --git a/src/bsemol/bse_davidson.F b/src/bsemol/bse_davidson.F index 560fdd382b..a944388cea 100644 --- a/src/bsemol/bse_davidson.F +++ b/src/bsemol/bse_davidson.F @@ -482,11 +482,15 @@ stat = ga_destroy(pars%g_apb) .and. ga_destroy(pars%g_amb) if(.not.stat) call errquit('deallocation failed',481,GA_ERR) - stat = ga_create(mt_dbl,npoles,pars%nroots,'X+Y',0,pars%nroots, + stat = ga_create(mt_dbl,npoles,pars%nroots,'X',0,pars%nroots, $ pars%g_apb) + stat = ga_create(mt_dbl,npoles,pars%nroots,'Y',0,pars%nroots, + $ pars%g_amb) if(.not.stat) call errquit('failed to creare GA',484,GA_ERR) call nga_copy_patch('n',g_x,(/1,1/),(/npoles,pars%nroots/), $ pars%g_apb,(/1,1/),(/npoles,pars%nroots/)) + call nga_copy_patch('n',g_y,(/1,1/),(/npoles,pars%nroots/), + $ pars%g_amb,(/1,1/),(/npoles,pars%nroots/)) stat = ga_destroy(g_x).and.ga_destroy(g_y).and.ga_destroy(g_ym) stat = stat.and.ga_destroy(g_s).and.ga_destroy(g_ks) @@ -506,9 +510,15 @@ dbl_mb(k_omega+ipole) = dsqrt(dbl_mb(k_omega+ipole)) call ga_scale_patch(pars%g_apb,1,npoles,ipole+1,ipole+1, $ dsqrt(dbl_mb(k_omega+ipole))) + call ga_scale_patch(pars%g_amb,1,npoles,ipole+1,ipole+1, + $ 1.0/dsqrt(dbl_mb(k_omega+ipole))) enddo endif + call ga_print(pars%g_apb) + call ga_add(0.5d0,pars%g_apb,0.5d0,pars%g_amb,pars%g_apb) + call ga_add(1d0,pars%g_apb,-1d0,pars%g_amb,pars%g_amb) + call bse_oscstr(pars,dbl_mb(k_omega),npoles) stat = ma_chop_stack(l_dia) @@ -517,6 +527,8 @@ ! Destroy GAs if (.not.ga_destroy(pars%g_apb)) & call errquit(pname//'could not destroy temp GA',519,GA_ERR) + if (.not.ga_destroy(pars%g_amb)) + & call errquit(pname//'could not destroy temp GA',519,GA_ERR) end subroutine bse_davidson diff --git a/src/bsemol/bse_oscstr.F b/src/bsemol/bse_oscstr.F index 1fbb6da369..a227d7f203 100644 --- a/src/bsemol/bse_oscstr.F +++ b/src/bsemol/bse_oscstr.F @@ -22,15 +22,20 @@ integer llpole,ulpole,iroot,ixyz,ipole,mag_transdip(3) integer isym,jsym,i,j,k,l,pol,occ,vir - integer g_td(2),g_xy(2),g_dipmag + integer g_td(2),g_xy(2),g_dipmag, g_ovlp, g_work, g_corr + integer k_corr, l_corr character*4 oname,vname - logical ltransden + logical ltransden,stat double precision origin(3) + double precision na,nb,s2 data origin/0d0,0d0,0d0/ character*(nw_max_path_len) fn_civecs, fn_transden logical,external :: dmat_to_file + integer,external :: ga_create_atom_blocked + + double precision x(totpoles),y(totpoles) if(.not.rtdb_get(pars%rtdb,'bse:ltransden',mt_log,1,ltransden)) $ ltransden = .false. @@ -42,6 +47,30 @@ $ 1,.false.) call ga_scale(g_dipmag,0.5d0) + if (pars%ipol.eq.2) then + if(.not.ma_push_get(mt_dbl,pars%nmo*pars%nmo,'corr', + $ l_corr,k_corr)) + $ call errquit('bse_oscstr: failed to create MA',0,MA_ERR) + g_ovlp = ga_create_atom_blocked(geom, ao_bas_han, 'Overlap') + if(.not.ga_create(mt_dbl,nbf_ao,pars%nmo,'work',0,0,g_work)) + $ call errquit('bse_oscstr: failed to create GA',0,GA_ERR) + if(.not.ga_create(mt_dbl,pars%nmo,pars%nmo,'work', + $ pars%nmo,0,g_corr)) + $ call errquit('bse_oscstr: failed to create GA',0,GA_ERR) + call ga_zero(g_ovlp) + call int_1e_ga(ao_bas_han, ao_bas_han, g_ovlp, 'overlap', oskel) + if (oskel) call sym_symmetrize(geom,ao_bas_han,.false.,g_ovlp) + call ga_dgemm('n','n',nbf_ao,pars%nmo,nbf_ao,1d0,g_ovlp, + $ pars%g_movecs(2),0d0,g_work) + call ga_dgemm('t','n',pars%nmo,pars%nmo,nbf_ao,1d0, + $ pars%g_movecs(1),g_work,0d0,g_corr) + call ga_get(g_corr,1,pars%nmo,1,pars%nmo,dbl_mb(k_corr), + $ pars%nmo) + stat = ga_destroy(g_ovlp).and.ga_destroy(g_work).and. + $ ga_destroy(g_corr) + endif + + npoles = pars%npoles(1) if (pars%ipol.gt.1) npoles = npoles + pars%npoles(2) @@ -108,9 +137,20 @@ call ga_copy_patch('n',pars%g_apb,1,pars%npoles(1),ipole,ipole, & g_xy(1),1,pars%npoles(1),1,1) + if (pars%davidson) then + call ga_add_patch(1d0,pars%g_amb,1,pars%npoles(1),ipole,ipole, + & 1d0,g_xy(1),1,pars%npoles(1),1,1, + & g_xy(1),1,pars%npoles(1),1,1) + endif if (pars%ipol.gt.1) then call ga_copy_patch('n',pars%g_apb,pars%npoles(1)+1,npoles, & ipole,ipole,g_xy(2),1,pars%npoles(2),1,1) + if (pars%davidson) then + call ga_add_patch(1d0,pars%g_amb,pars%npoles(1)+1,npoles, + & ipole,ipole, + & 1d0,g_xy(2),1,pars%npoles(2),1,1, + & g_xy(2),1,pars%npoles(2),1,1) + endif endif call tddft_transfm(1,g_xy,pars%g_movecs,nbf_ao,pars%nocc, & (/pars%nmo,pars%nmo/),0,0,pars%ipol,g_td,1) @@ -187,9 +227,30 @@ c oscstr = 2d0/3d0*omega(ipole)*oscstr jsym = ieor(jsym-1,int_mb(pars%k_irs(pol)+vir-1)-1)+1 call sym_irrepname(geom, jsym, vname) + if (pars%ipol.eq.2) then + na = dble(pars%nocc(1)) + nb = dble(pars%nocc(2)) + s2 = na - (na-nb)/2d0 + ((na-nb)/2d0)**2 + do j=1,pars%nocc(1) + do k=1,pars%nocc(2) + enddo + enddo + + endif + write(luout,9110) iroot,key,vname,omega(ipole), & omega(ipole)*ha2ev + if (pars%davidson.and.pars%ipol.eq.2) then + call ga_get(pars%g_apb,1,npoles,ipole,ipole,x,npoles) + call ga_get(pars%g_amb,1,npoles,ipole,ipole,y,npoles) + call tddft_s2(pars%tda, (/0,0/), pars%nocc, + & (/pars%nmo,pars%nmo/), (/0,0/), + & pars%npoles,x,x(pars%npoles(1)+1),y, + & y(pars%npoles(1)+1),dbl_mb(k_corr),s2) + write(luout,9180) s2 + endif + if (pars%singlet) then write(luout,9200) moms(2),moms(3),moms(4), & moms(5),moms(6),moms(7), @@ -240,6 +301,7 @@ c oscstr = 2d0/3d0*omega(ipole)*oscstr 1 i5,1x,a5,1x,a4,f8.5,' X') 9170 format(5x,'Occ.',i5,1x,a5,1x,a4,'--- Virt.', 1 i5,1x,a5,1x,a4,f8.5,' Y') + 9180 format(2x,' = ',f8.4) end From a39f8e4e366edfebe3f15e8069fb89ac82b304fd Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Fri, 4 Aug 2023 14:22:13 -0700 Subject: [PATCH 17/46] Add energy window restriction to trials --- src/bsemol/GNUmakefile | 3 +- src/bsemol/bse_davidson.F | 2 - src/bsemol/bse_davidson_guess.F | 48 ++++++++++- src/bsemol/bse_input.F | 2 +- src/bsemol/bse_oscstr.F | 139 +++++++++++++++++++++++--------- src/bsemol/bse_s2.F | 99 +++++++++++++++++++++++ 6 files changed, 246 insertions(+), 47 deletions(-) create mode 100644 src/bsemol/bse_s2.F diff --git a/src/bsemol/GNUmakefile b/src/bsemol/GNUmakefile index 3e690a8eaa..c1f2a3f16b 100644 --- a/src/bsemol/GNUmakefile +++ b/src/bsemol/GNUmakefile @@ -6,7 +6,8 @@ OBJ = bsemol.o bse_input.o bse_init.o bse_analytic.o \ bse_davidson_diagonal.o \ bse_davidson_kvec.o bse_davidson_guess.o \ bse_davidson_kortho.o bse_davidson_restart.o \ - bse_davidson_newvecs.o bse_davidson_residual.o + bse_davidson_newvecs.o bse_davidson_residual.o \ + bse_s2.o USES_BLAS = bse_buildw.F bse_ri_init.F bse_wmn.F diff --git a/src/bsemol/bse_davidson.F b/src/bsemol/bse_davidson.F index a944388cea..33e3228452 100644 --- a/src/bsemol/bse_davidson.F +++ b/src/bsemol/bse_davidson.F @@ -515,10 +515,8 @@ enddo endif - call ga_print(pars%g_apb) call ga_add(0.5d0,pars%g_apb,0.5d0,pars%g_amb,pars%g_apb) call ga_add(1d0,pars%g_apb,-1d0,pars%g_amb,pars%g_amb) - call bse_oscstr(pars,dbl_mb(k_omega),npoles) stat = ma_chop_stack(l_dia) diff --git a/src/bsemol/bse_davidson_guess.F b/src/bsemol/bse_davidson_guess.F index 8cbd7cef66..735640ef55 100644 --- a/src/bsemol/bse_davidson_guess.F +++ b/src/bsemol/bse_davidson_guess.F @@ -16,8 +16,10 @@ character*4 oname,vname logical found integer amo,imo,itrial,ipole,jpole,indeces(ntrials) - integer isym,jsym,i,j,pol + integer isym,jsym,i,j,pol,idum + integer allindeces(npoles) double precision minimum + logical swapped call nga_get(pars%g_apb,1,npoles,diagonal,npoles) call nga_get(pars%g_amb,1,npoles,amb,npoles) @@ -26,13 +28,52 @@ diagonal(:) = diagonal(:)*amb(:) endif indeces(:) = -1 + allindeces(:) = -1 + + do ipole=1,npoles + allindeces(ipole) = ipole + enddo + + do ipole=npoles-1,1,-1 + swapped = .false. + do jpole=1,ipole + if (diagonal(allindeces(jpole)).gt. + $ diagonal(allindeces(jpole+1))) then + idum = allindeces(jpole) + allindeces(jpole) = allindeces(jpole+1) + allindeces(jpole+1) = idum + swapped = .true. + endif + enddo + if(.not.swapped) exit + enddo + + if (pars%dowindow) then + do ipole=1,npoles + if (dsqrt(diagonal(allindeces(ipole))).ge.pars%elower) then + if (ipole+ntrials-1.gt.npoles) then + indeces(1:ntrials) = allindeces(npoles-ntrials+1:npoles) + else + indeces(1:ntrials) = allindeces(ipole:ipole+ntrials-1) + endif + exit + endif + enddo + else + indeces(1:ntrials) = allindeces(1:ntrials) + endif ! Get the indeces of the smallest diagonal elements + ! within energy window +#if 0 do itrial=1,ntrials minimum = 1d6 do ipole=1,npoles if (abs(diagonal(ipole)).lt.minimum) then - found = .true. + if (pars%dowindow) then + else + found = .true. + endif do jpole=1,itrial if (ipole.eq.indeces(jpole)) then found = .false. @@ -46,6 +87,7 @@ endif enddo enddo +#endif ! Get symmetry of ground state isym = 1 @@ -86,7 +128,7 @@ endif call sym_irrepname(geom, jsym, vname) write(luout,9030) itrial,pol,imo,amo,vname, - $ dsqrt(diagonal(ipole))*27.2114d0 + $ dsqrt(diagonal(ipole))*27.211396d0 enddo 9000 format(i5,' smallest diagonals (eV) ') diff --git a/src/bsemol/bse_input.F b/src/bsemol/bse_input.F index dfad98ab3f..188be807ce 100644 --- a/src/bsemol/bse_input.F +++ b/src/bsemol/bse_input.F @@ -100,7 +100,7 @@ c & call errquit(pname//'rtdb_put failed', 300, RTDB_ERR) goto 10 c -c compute singlet transitions +c compute triplet transitions c 500 if (.not.rtdb_put(rtdb, 'bse:singlet', mt_log, 1, .false.)) & call errquit(pname//'rtdb_put failed', 300, RTDB_ERR) diff --git a/src/bsemol/bse_oscstr.F b/src/bsemol/bse_oscstr.F index a227d7f203..161f536db1 100644 --- a/src/bsemol/bse_oscstr.F +++ b/src/bsemol/bse_oscstr.F @@ -21,21 +21,26 @@ integer llpole,ulpole,iroot,ixyz,ipole,mag_transdip(3) - integer isym,jsym,i,j,k,l,pol,occ,vir + integer isym,jsym,i,j,k,l,pol,occ,vir,ioff integer g_td(2),g_xy(2),g_dipmag, g_ovlp, g_work, g_corr - integer k_corr, l_corr + integer k_corr, l_corr, ulloop character*4 oname,vname logical ltransden,stat double precision origin(3) - double precision na,nb,s2 + double precision na,nb,s2,s2_full data origin/0d0,0d0,0d0/ character*(nw_max_path_len) fn_civecs, fn_transden logical,external :: dmat_to_file integer,external :: ga_create_atom_blocked + character*5 spin(2) double precision x(totpoles),y(totpoles) + double precision thresh ! Threshold for printing + parameter (thresh=5.0d-2) + spin(1)='alpha' + spin(2)='beta ' if(.not.rtdb_get(pars%rtdb,'bse:ltransden',mt_log,1,ltransden)) $ ltransden = .false. @@ -83,7 +88,7 @@ ! Get the lower and upper limits llpole = -1 - if (pars%dowindow) then + if (pars%dowindow .and. (.not.pars%davidson)) then iroot = 0 do ipole=1,npoles if (omega(ipole).lt.pars%elower) cycle @@ -184,28 +189,29 @@ enddo endif + if (pars%davidson.and.pars%ipol.eq.2) then + call ga_get(pars%g_apb,1,npoles,ipole,ipole,x,npoles) + call ga_get(pars%g_amb,1,npoles,ipole,ipole,y,npoles) + call tddft_s2(pars%tda, (/0,0/), pars%nocc, + & (/pars%nmo,pars%nmo/), (/0,0/), + & pars%npoles,x,x(pars%npoles(1)+1),y, + & y(pars%npoles(1)+1),dbl_mb(k_corr),s2) + call bse_s2(pars%nocc,pars%nmo,pars%npoles,x, + & x(pars%npoles(1)+1), y, y(pars%npoles(1)+1), dbl_mb(k_corr), + & s2_full) + if (abs(s2_full).lt.0.2d0) then + key = 'singlet' + elseif (abs(abs(s2_full)-2.0d0).lt.0.2) then + key = 'triplet' + else + key = ' ' + endif + endif + if (pars%me.eq.0) then call tddft_oscstr(moms, omega(ipole), mag_transdip, & oscstr, oscstr_tot) -c do ixyz=1,3 -c moms(ixyz) = moms(ixyz) + nga_ddot_patch(pars%g_apb,'n', -c & (/1,ipole/),(/pars%npoles(1),ipole/), -c & pars%g_dipa(ixyz),'n',1,pars%npoles(1)) -c oscstr = oscstr + moms(ixyz)**2 -c enddo -c if (pars%ipol.gt.1) then -c do ixyz=1,3 -c moms(ixyz) = moms(ixyz) + -c & nga_ddot_patch(pars%g_apb,'n',(/pars%npoles(1)+1,ipole/), -c & (/totpoles,ipole/), -c & pars%g_dipb(ixyz),'n',1,pars%npoles(2)) -c oscstr = oscstr + moms(ixyz)**2 -c enddo -c endif -c oscstr = 2d0/3d0*omega(ipole)*oscstr - - l = 0 maxr = 0.0d0 do i=1,pars%ipol @@ -227,28 +233,13 @@ c oscstr = 2d0/3d0*omega(ipole)*oscstr jsym = ieor(jsym-1,int_mb(pars%k_irs(pol)+vir-1)-1)+1 call sym_irrepname(geom, jsym, vname) - if (pars%ipol.eq.2) then - na = dble(pars%nocc(1)) - nb = dble(pars%nocc(2)) - s2 = na - (na-nb)/2d0 + ((na-nb)/2d0)**2 - do j=1,pars%nocc(1) - do k=1,pars%nocc(2) - enddo - enddo - - endif - write(luout,9110) iroot,key,vname,omega(ipole), & omega(ipole)*ha2ev if (pars%davidson.and.pars%ipol.eq.2) then - call ga_get(pars%g_apb,1,npoles,ipole,ipole,x,npoles) - call ga_get(pars%g_amb,1,npoles,ipole,ipole,y,npoles) - call tddft_s2(pars%tda, (/0,0/), pars%nocc, - & (/pars%nmo,pars%nmo/), (/0,0/), - & pars%npoles,x,x(pars%npoles(1)+1),y, - & y(pars%npoles(1)+1),dbl_mb(k_corr),s2) + write(luout,*) write(luout,9180) s2 + write(luout,9190) s2_full endif if (pars%singlet) then @@ -261,6 +252,73 @@ c oscstr = 2d0/3d0*omega(ipole)*oscstr write(luout,9210) endif + if (pars%davidson) then + + write(luout,*) + if (ipol.eq.1) then + l=0 + do j=1,pars%nocc(1) + do k=pars%nocc(1)+1,pars%nmo + l=l+1 + if (pars%tda) then + r=x(l) + call sym_irrepname + 1 (geom,int_mb(pars%k_irs(1)+j-1),oname) + call sym_irrepname + 1 (geom,int_mb(pars%k_irs(1)+k-1),vname) + if ((dabs(r(1)).gt.thresh)) + 2 write(LuOut,9120) j,oname,k,vname,r + else + r=x(l) + call sym_irrepname + 1 (geom,int_mb(pars%k_irs(1)+j-1),oname) + call sym_irrepname + 1 (geom,int_mb(pars%k_irs(1)+k-1),vname) + if ((dabs(r(1)).gt.thresh)) + 2 write(LuOut,9130) j,oname,k,vname,r + r=y(l) + if ((dabs(r(1)).gt.thresh)) + 2 write(LuOut,9140) j,oname,k,vname,r + endif + enddo + enddo + else + do i=1,ipol + ioff = (i-1)*pars%npoles(1) + l=0 + do j=1,pars%nocc(i) + do k=pars%nocc(i)+1,pars%nmo + l=l+1 + if (pars%tda) then + r = x(ioff+l) + call sym_irrepname + 1 (geom,int_mb(pars%k_irs(i)+j-1),oname) + call sym_irrepname + 1 (geom,int_mb(pars%k_irs(i)+k-1),vname) + if ((dabs(r(1)).gt.thresh)) + 2 write(LuOut,9150) j,spin(i),oname, + 3 k,spin(i),vname,r + else + r = x(ioff+l) + call sym_irrepname + 1 (geom,int_mb(pars%k_irs(i)+j-1),oname) + call sym_irrepname + 1 (geom,int_mb(pars%k_irs(i)+k-1),vname) + if ((dabs(r(1)).gt.thresh)) + 2 write(LuOut,9160) j,spin(i),oname, + 3 k,spin(i),vname,r + r=y(ioff+l) + if ((dabs(r(1)).gt.thresh)) + 2 write(LuOut,9170) j,spin(i),oname, + 3 k,spin(i),vname,r + endif + enddo + enddo + enddo + endif + call util_flush(LuOut) + + endif endif @@ -301,7 +359,8 @@ c oscstr = 2d0/3d0*omega(ipole)*oscstr 1 i5,1x,a5,1x,a4,f8.5,' X') 9170 format(5x,'Occ.',i5,1x,a5,1x,a4,'--- Virt.', 1 i5,1x,a5,1x,a4,f8.5,' Y') - 9180 format(2x,' = ',f8.4) + 9180 format(2x,' = ',f8.4) + 9190 format(2x,' D = ',f8.4) end diff --git a/src/bsemol/bse_s2.F b/src/bsemol/bse_s2.F new file mode 100644 index 0000000000..03e1a1c7a6 --- /dev/null +++ b/src/bsemol/bse_s2.F @@ -0,0 +1,99 @@ + subroutine bse_s2(nocc, nmo, npoles, xup, xdw, yup, ydw, + $ ovlp, s2) + implicit none + + integer nocc(2), npoles(2), nmo + double precision xup(npoles(1)), xdw(npoles(2)) + double precision yup(npoles(1)), ydw(npoles(2)) + double precision s2 + double precision ovlp(nmo,nmo) + + double precision ov,xx,yy + integer i,j,a,b,ipole,jpole,nvir(2) + integer llipole,ulipole,lljpole,uljpole + + double precision, external :: ddot + + s2 = 0d0 + nvir(1) = nmo - nocc(1) + nvir(2) = nmo - nocc(2) + + ! Up-Up + do i=1,nocc(1) + do j=1,nocc(1) + llipole = (i-1)*nvir(1) + 1 + ulipole = i*nvir(1) + lljpole = (j-1)*nvir(1) + 1 + uljpole = j*nvir(1) + ov = dot_product(ovlp(i,1:nocc(2)),ovlp(j,1:nocc(2))) + xx = dot_product(xup(llipole:ulipole),xup(lljpole:uljpole)) + + yy = dot_product(yup(llipole:ulipole),yup(lljpole:uljpole)) + s2 = s2 + ov*(xx+yy) + enddo + enddo + do a=nocc(1)+1,nmo + do b=nocc(1)+1,nmo + ov = dot_product(ovlp(a,1:nocc(2)),ovlp(b,1:nocc(2))) + llipole = a - nocc(1) + lljpole = b - nocc(1) + s2 = s2 - ov*ddot(nocc(1),xup(llipole),nvir(1), + $ xup(lljpole),nvir(1)) + s2 = s2 - ov*ddot(nocc(1),yup(llipole),nvir(1), + $ yup(lljpole),nvir(1)) + enddo + enddo + + ! Dw-Dw + do i=1,nocc(2) + do j=1,nocc(2) + llipole = (i-1)*nvir(2) + 1 + ulipole = i*nvir(2) + lljpole = (j-1)*nvir(2) + 1 + uljpole = j*nvir(2) + ov = dot_product(ovlp(1:nocc(1),i),ovlp(1:nocc(1),j)) + xx = dot_product(xdw(llipole:ulipole),xdw(lljpole:uljpole)) + yy = dot_product(ydw(llipole:ulipole),ydw(lljpole:uljpole)) + s2 = s2 + ov*(xx+yy) + enddo + enddo + do a=nocc(2)+1,nmo + do b=nocc(2)+1,nmo + ov = dot_product(ovlp(1:nocc(1),a),ovlp(1:nocc(1),b)) + llipole = a - nocc(2) + lljpole = b - nocc(2) + s2 = s2 - ov*ddot(nocc(2),xdw(llipole),nvir(2), + $ xdw(lljpole),nvir(2)) + s2 = s2 - ov*ddot(nocc(2),ydw(llipole),nvir(2), + $ ydw(lljpole),nvir(2)) + enddo + enddo + + ! Up-Dw + do ipole=1,npoles(1) + i = ipole/nvir(1) + 1 + a = ipole - (i-1)*nvir(1) + nocc(1) + do jpole=1,npoles(2) + j = jpole/nvir(2) + 1 + b = jpole - (j-1)*nvir(2) + nocc(2) + s2 = s2 - + $ 2d0*xup(ipole)*xdw(jpole)*ovlp(i,j)*ovlp(a,b) - + $ 2d0*yup(ipole)*ydw(jpole)*ovlp(i,j)*ovlp(a,b) + + $ 2d0*xup(ipole)*ydw(jpole)*ovlp(a,j)*ovlp(i,b) + enddo + enddo + + ! Dw-Up + do ipole=1,npoles(2) + i = ipole/nvir(2) + 1 + a = ipole - (i-1)*nvir(2) + nocc(2) + do jpole=1,npoles(1) + j = jpole/nvir(1) + 1 + b = jpole - (j-1)*nvir(1) + nocc(1) + s2 = s2 + + $ 2d0*xdw(ipole)*yup(jpole)*ovlp(j,a)*ovlp(b,i) + enddo + enddo + + end subroutine + From b13e8b91c68c1979cadbe09eaf33760874046989 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Tue, 26 Sep 2023 09:34:17 -0700 Subject: [PATCH 18/46] Updates to OSCSTR --- src/bsemol/bse_oscstr.F | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/bsemol/bse_oscstr.F b/src/bsemol/bse_oscstr.F index 161f536db1..3f569bfc36 100644 --- a/src/bsemol/bse_oscstr.F +++ b/src/bsemol/bse_oscstr.F @@ -38,7 +38,7 @@ character*5 spin(2) double precision x(totpoles),y(totpoles) double precision thresh ! Threshold for printing - parameter (thresh=5.0d-2) + parameter (thresh=1.0d-2) spin(1)='alpha' spin(2)='beta ' @@ -185,13 +185,16 @@ if (pars%ipol.eq.1) then do i=1,20 - moms(i) = moms(i)*dsqrt(2.0d0) + moms(i) = moms(i)/dsqrt(2.0d0) enddo endif - if (pars%davidson.and.pars%ipol.eq.2) then + if (pars%davidson) then call ga_get(pars%g_apb,1,npoles,ipole,ipole,x,npoles) call ga_get(pars%g_amb,1,npoles,ipole,ipole,y,npoles) + endif + + if (pars%davidson.and.pars%ipol.eq.2) then call tddft_s2(pars%tda, (/0,0/), pars%nocc, & (/pars%nmo,pars%nmo/), (/0,0/), & pars%npoles,x,x(pars%npoles(1)+1),y, @@ -199,9 +202,9 @@ call bse_s2(pars%nocc,pars%nmo,pars%npoles,x, & x(pars%npoles(1)+1), y, y(pars%npoles(1)+1), dbl_mb(k_corr), & s2_full) - if (abs(s2_full).lt.0.2d0) then + if (abs(s2_full).lt.0.25d0) then key = 'singlet' - elseif (abs(abs(s2_full)-2.0d0).lt.0.2) then + elseif (abs(abs(s2_full)-2.0d0).lt.0.25) then key = 'triplet' else key = ' ' From edb236eba2653e625c4ee7268767173d14bae81f Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 28 Sep 2023 21:27:32 -0700 Subject: [PATCH 19/46] Try to stabilize NCAP --- src/nwdft/xc/xc_xncap.F | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/nwdft/xc/xc_xncap.F b/src/nwdft/xc/xc_xncap.F index 26525d4658..98bbefcd45 100644 --- a/src/nwdft/xc/xc_xncap.F +++ b/src/nwdft/xc/xc_xncap.F @@ -103,6 +103,9 @@ c #endif double precision ops, omz, logops + double precision s2overgamma,s2overgamma_rho43 + double precision dFxd1s,dFxd2s + arcsinh(s)=dlog(s+dsqrt(1d0+s*s)) darcsinh(s)=1d0/dsqrt(1d0+s*s) d2arcsinh(s) = -s/dsqrt(1d0+s*s)**3 @@ -141,11 +144,21 @@ CDEC$ NOSWP s = dsqrt(gamma)/(2d0*ckf*rho43) s2 = s*s + s2overgamma = 1d0/(4d0*ckf*ckf*rho43*rho43) + s2overgamma_rho43 = 1d0/(4d0*ckf*ckf*rho43) + d1s = 0.5d0*s/gamma + if (s.lt.1d-8) then Fx = 1d0 + mu*s2 + alpha*zeta*mu*s2*s + & mu*(alpha - beta - alpha*zeta - 0.5d0)*s2*s2 dFx = 2d0*mu*s + 3d0*alpha*zeta*mu*s2 + & 4d0*mu*(alpha - beta - alpha*zeta - 0.5d0)*s2*s + dFxd1s = mu*s2overgamma* + & (1d0 + 1.5d0*alpha*zeta*s + + & 2d0*(alpha-beta-alpha*zeta-0.5d0)*s2) + dFxd2s = -0.5d0*mu* + & (1d0 + 1.5d0*alpha*zeta*s + + & 2d0*(alpha-beta-alpha*zeta-0.5d0)*s2) d2Fx = 2d0*mu + 6d0*alpha*zeta*mu*s + & 12d0*mu*(alpha - beta - alpha*zeta - 0.5d0)*s2 d3Fx = 6d0*alpha*zeta*mu + @@ -158,7 +171,7 @@ CDEC$ NOSWP asymp = 1d0 + alpha*(omz*s*logops + zeta*s) dasymp = alpha*( (s + zeta)/ops + omz*logops ) - if (s.gt.30d0) then + if (s.gt.20d0) then tansin = arcsinh(s) dtansin = darcsinh(s) else @@ -170,18 +183,19 @@ CDEC$ NOSWP ddenom = beta*dtansin factor = tansin/denom - dfactor = (dtansin - factor*ddenom)/denom + dfactor = dtansin*(1d0 - beta*factor)/denom Fx = 1d0 + mu*factor*asymp dFx = mu*(dfactor*asymp + factor*dasymp) + dFxd1s = dFx*d1s + dFxd2s = -0.5d0*dFxd1s/s2overgamma #if defined(SECOND_DERIV) || defined(THIRD_DERIV) - if (s.gt.30d0) then + if (s.gt.24d0) then d2tansin = d2arcsinh(s) else - d2tansin = 2d0*darcsinh(s)/dcosh(s)**2 + - & dtanh(s)*d2arcsinh(s) - - & 2d0*tansin/dcosh(s)**2 + d2tansin = (darcsinh(s)-tansin)*2d0/dcosh(s)**2 + + & dtanh(s)*d2arcsinh(s) endif d2asymp = alpha*omz*(2d0 + s)/ops**2 d2denom = beta*d2tansin @@ -213,9 +227,8 @@ CDEC$ NOSWP Ex = Ex + Ax*rho43*Fx*qwght(n)*fac if (ldew) func(n) = func(n) + Ax*rho43*Fx*fac - d1s = 0.5d0*s/gamma Amat(n,1) = Amat(n,1) + F43*Ax*rho13*(Fx - s*dFx)*fac - Cmat(n,D1_GAA) = Cmat(n,D1_GAA) + 2d0*Ax*rho43*dFx*d1s*fac + Cmat(n,D1_GAA) = Cmat(n,D1_GAA) + 2d0*Ax*rho43*dFxd1s*fac #if defined(SECOND_DERIV) || defined(THIRD_DERIV) @@ -225,10 +238,10 @@ CDEC$ NOSWP & (Fx - s*dFx + 4d0*s2*d2Fx)*fac Cmat2(n,D2_RA_GAA) = Cmat2(n,D2_RA_GAA) - - & (F43*Ax*rho13*d2Fx*d1s*s)*4d0*fac + & (0.5d0*F43*Ax*rho13*d2Fx*s2overgamma)*4d0*fac - Cmat2(n,D2_GAA_GAA) = Cmat2(n,D2_GAA_GAA) + Ax*rho43* - & (d2Fx*d1s**2 + dFx*d2s)*8d0*fac + Cmat2(n,D2_GAA_GAA) = Cmat2(n,D2_GAA_GAA) + Ax* + & s2overgamma_rho43/gamma*(0.25d0*d2Fx + dFxd2s)*8d0*fac #endif #ifdef THIRD_DERIV rhom53 = rhom23*rrho From a94cd1ecdbaa7ac236308a7b231dc020aa31089e Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 28 Sep 2023 21:40:17 -0700 Subject: [PATCH 20/46] Use DSYRK instead of DGEMM --- src/geom/geom_hnd.F | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/geom/geom_hnd.F b/src/geom/geom_hnd.F index af6d56f8b5..ffff034551 100644 --- a/src/geom/geom_hnd.F +++ b/src/geom/geom_hnd.F @@ -308,16 +308,7 @@ c write(LuOut,*) ' B matrix ' call output(x, 1, ncart, 1, nzvar, ncart, nzvar, 1) endif - call dgemm('t', 'n', nzvar, nzvar, ncart, 1d0, - $ x, ncart, x, ncart, 0d0, y, nzvar) ! BT.B -> y ... should symmetrize - do i = 1, nzvar - do j = 1, nzvar - ij = i + (j-1)*nzvar - ji = j + (i-1)*nzvar - y(ij) = 0.5d0*(y(ij) + y(ji)) - y(ji) = y(ij) - end do - end do + call dsyrk('u', 't', nzvar, ncart, 1d0, x, ncart, 0d0, y, nzvar) call dsyev('v', 'u', nzvar, y, nzvar, e, z, ndim**2, info) if (info .ne. 0) call errquit('geom_binvr: dsyev failed', info, & MEM_ERR) From 88538988341979a6e820761bbbb8d0ab6189a517 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Wed, 3 Apr 2024 16:31:49 -0700 Subject: [PATCH 21/46] Increase maximum number of Newton steps --- src/gwmol/gw_cdgw_buildrn_minres.F | 2 +- src/gwmol/gw_cdgw_newton.F | 2 +- src/gwmol/gw_donewton.F | 15 ++++++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/gwmol/gw_cdgw_buildrn_minres.F b/src/gwmol/gw_cdgw_buildrn_minres.F index 4567aec5ea..0370b4772c 100644 --- a/src/gwmol/gw_cdgw_buildrn_minres.F +++ b/src/gwmol/gw_cdgw_buildrn_minres.F @@ -60,7 +60,7 @@ C logical main, ok, parallel_diag, skip logical, external :: is_near - double precision, parameter :: shift = 0.0001d0 + double precision, parameter :: shift = 0.00005d0 double complex :: w, R1, dR1 double complex :: ieta diff --git a/src/gwmol/gw_cdgw_newton.F b/src/gwmol/gw_cdgw_newton.F index dee1bab784..0fbdca4973 100644 --- a/src/gwmol/gw_cdgw_newton.F +++ b/src/gwmol/gw_cdgw_newton.F @@ -40,7 +40,7 @@ integer nclusters, clusters(pars%nmo),myll,myul integer llqp,ulqp,icluster double precision upper,lower,resupper,reslower,const - double precision values(25),errors(25),radius + double precision values(100),errors(100),radius main = pars%me .eq. 0 diff --git a/src/gwmol/gw_donewton.F b/src/gwmol/gw_donewton.F index 7d25b3f1bc..e6e88d9776 100644 --- a/src/gwmol/gw_donewton.F +++ b/src/gwmol/gw_donewton.F @@ -30,11 +30,11 @@ C ! !take full newton step for large enough z ! - if (z.gt.0.4d0 .and. z.le.1d0 ) then + if (z.gt.0.6d0 .and. z.le.1d0 ) then if (iter.eq.1) then - xout = xin + 0.5d0*step + xout = xin + 0.2d0*step else - xout = xin + step + xout = xin + 0.8d0*step endif ! @@ -55,7 +55,11 @@ C ! Take an scaled Newton step for small Z ! elseif (z.gt.0.1d0) then - xout = xin + 0.60d0*step + if (iter.eq.1) then + xout = xin + 0.10d0*step + else + xout = xin + 0.30d0*step + endif ! ! If Z is greater than 1.0 or very small we have to suspect @@ -63,7 +67,8 @@ C ! steepest decent step ! else - xout = xin + radius*fx +c xout = xin + radius*fx + xout = xin + sign(0.002d0,fx) endif From 3df06cd8e4b2d63b3d8a96ec392bb9c5a1aaeb17 Mon Sep 17 00:00:00 2001 From: edoapra Date: Thu, 11 Sep 2025 11:12:39 -0700 Subject: [PATCH 22/46] fix makefile --- src/task/GNUmakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/task/GNUmakefile b/src/task/GNUmakefile index 0b1b8b9041..6ddbddb045 100644 --- a/src/task/GNUmakefile +++ b/src/task/GNUmakefile @@ -9,7 +9,7 @@ task_save_state.o task.o task_input.o task_shell_input.o task_num_grad.o \ task_vscf.o task_property.o task_dntmc.o task_bsse.o \ task_jefftce.o task_ncc.o task_rfcf.o \ - task_gwmol.o task_bsemol.o + task_gwmol.o task_bsemol.o \ task_aoints.o task_nadtrc.o USES_BLAS = task_num_grad.F task_bsse.F From bde0d2ece61a687e0eca8cf188f666461cffba2f Mon Sep 17 00:00:00 2001 From: edoapra Date: Thu, 11 Sep 2025 11:25:51 -0700 Subject: [PATCH 23/46] fix linear algebra calls --- src/bsemol/bse_analytic_cis.F | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/bsemol/bse_analytic_cis.F b/src/bsemol/bse_analytic_cis.F index 98d73f3432..5286b4408b 100644 --- a/src/bsemol/bse_analytic_cis.F +++ b/src/bsemol/bse_analytic_cis.F @@ -112,12 +112,10 @@ ! First step is to get (A-B)^(1/2) call ga_sync() -#if defined(PARALLEL_DIAG) #ifdef SCALAPACK info= ga_cholesky('L',g_amb) -#else +#elif defined(PEIGS) call ga_chol(g_amb, g_amb, info) -#endif #else call ga_chol_seq(g_amb, g_amb, info) #endif @@ -289,12 +287,10 @@ ! First step is to get (A-B)^(1/2) call ga_sync() -#if defined(PARALLEL_DIAG) #ifdef SCALAPACK info= ga_cholesky('L',g_amb) -#else +#elif defined(PEIGS) call ga_chol(g_amb, g_amb, info) -#endif #else call ga_chol_seq(g_amb, g_amb, info) #endif From 88bf1db464919735c89b7a342b321b156dc5c126 Mon Sep 17 00:00:00 2001 From: edoapra Date: Thu, 11 Sep 2025 13:18:28 -0700 Subject: [PATCH 24/46] added USES_BLAS --- src/bsemol/GNUmakefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bsemol/GNUmakefile b/src/bsemol/GNUmakefile index c1f2a3f16b..980c6bb7be 100644 --- a/src/bsemol/GNUmakefile +++ b/src/bsemol/GNUmakefile @@ -9,7 +9,9 @@ OBJ = bsemol.o bse_input.o bse_init.o bse_analytic.o \ bse_davidson_newvecs.o bse_davidson_residual.o \ bse_s2.o -USES_BLAS = bse_buildw.F bse_ri_init.F bse_wmn.F +USES_BLAS = bse_buildw.F bse_ri_init.F bse_wmn.F \ + bse_davidson.F bse_davidson_diagonal.F bse_davidson_kvec.F bse_davidson_kortho.F \ + bse_init.F bse_puteris.F bse_s2.F OBJ_OPTIMIZE = bse_buildw.o From 951fcf9ed551ab0da6ccb7f3dc8b1e4cb5ae927c Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Mon, 29 Sep 2025 16:08:27 -0700 Subject: [PATCH 25/46] Changes from deception --- src/bsemol/bse.fh | 1 + src/bsemol/bse_davidson.F | 53 +++++--- src/bsemol/bse_davidson_kortho.F | 5 +- src/bsemol/bse_davidson_residual.F | 5 +- src/bsemol/bse_davidson_restart.F | 34 ++--- src/bsemol/bse_defaults.F | 5 +- src/bsemol/bse_init.F | 39 ++++-- src/bsemol/bse_input.F | 30 ++++- src/bsemol/bse_oscstr.F | 193 +++++++++++++++++++++++++---- src/gwmol/gw_cdgw.F | 3 +- src/gwmol/gw_defaults.F | 4 - src/gwmol/gw_donewton.F | 2 +- src/gwmol/gw_init.F | 13 +- 13 files changed, 295 insertions(+), 92 deletions(-) diff --git a/src/bsemol/bse.fh b/src/bsemol/bse.fh index a3966ca27f..edb9b4af67 100644 --- a/src/bsemol/bse.fh +++ b/src/bsemol/bse.fh @@ -8,6 +8,7 @@ integer :: ipol logical :: main, odft c + integer :: maxiter, nspace integer :: natoms integer :: nmo, nri integer :: nocc(2),nvir(2),npoles(2),mynpoles(2) diff --git a/src/bsemol/bse_davidson.F b/src/bsemol/bse_davidson.F index 33e3228452..94d5e74fb8 100644 --- a/src/bsemol/bse_davidson.F +++ b/src/bsemol/bse_davidson.F @@ -26,7 +26,7 @@ integer subscript(2) double precision minimum,norm(pars%nroots),rdum,factor - integer inode,nprocs + integer inode,nprocs,nrestart integer ipole,jpole,itrial,imo,amo,idavidson logical found,dohartree,stat,debug double precision,external :: dasum @@ -43,7 +43,7 @@ maxnpoles = maxval(pars%npoles(1:pars%ipol)) totnpoles = maxnpoles*pars%ipol npoles = sum(pars%npoles(1:pars%ipol)) - ntrials = pars%nroots + ntrials = pars%nroots*pars%nspace nprocs = ga_nnodes() ! allocation @@ -53,13 +53,17 @@ & call errquit(pname//'failed to allocate omega',0,MA_ERR) if(.not.ma_push_get(mt_dbl,npoles,'residual',l_r,k_r)) & call errquit(pname//'failed to allocate residual',0,MA_ERR) - if(.not.ma_push_get(mt_dbl,maxpoles*200,'tmp1',l_tmp1,k_tmp1)) + if(.not.ma_push_get(mt_dbl,maxpoles*pars%nmax,'tmp1', + & l_tmp1,k_tmp1)) & call errquit(pname//'failed to allocate tmp1',0,MA_ERR) - if(.not.ma_push_get(mt_dbl,maxpoles*200,'tmp2',l_tmp2,k_tmp2)) + if(.not.ma_push_get(mt_dbl,maxpoles*pars%nmax,'tmp2', + & l_tmp2,k_tmp2)) & call errquit(pname//'failed to allocate tmp2',0,MA_ERR) - if(.not.ma_push_get(mt_dbl,maxpoles*200,'tmp3',l_tmp3,k_tmp3)) + if(.not.ma_push_get(mt_dbl,maxpoles*pars%nmax,'tmp3', + & l_tmp3,k_tmp3)) & call errquit(pname//'failed to allocate tmp3',0,MA_ERR) - if(.not.ma_push_get(mt_dbl,maxpoles*200,'tmp4',l_tmp4,k_tmp4)) + if(.not.ma_push_get(mt_dbl,maxpoles*pars%nmax,'tmp4', + & l_tmp4,k_tmp4)) & call errquit(pname//'failed to allocate tmp4',0,MA_ERR) if(.not.ma_push_get(mt_int,2*ga_nnodes()+1,'map',l_map,k_map)) & call errquit(pname//'failed to allocate map',0,MA_ERR) @@ -176,11 +180,16 @@ pars%g_erivv(isp) = g_tmp enddo + ! Start K-Davidson Algorithm + idavidson = 0 + + ! Restarts should land here + 1 continue + ! K-orthogonalization call bse_davidson_kvec(pars,g_trials,g_wia,g_x,npoles, $ ntrials,pars%singlet,1d0) - call nga_access_block_grid(g_x, (/pars%me,0/), k_x, myld) call nga_access_block_grid(g_trials, (/pars%me,0/),k_trials,myld) if (pars%ipol.eq.1) then @@ -233,14 +242,15 @@ call ga_copy(g_y,g_ks) call ga_copy(g_ym,g_mks) - if (pars%me.eq.0) then + if (pars%me.eq.0 .and. idavidson.eq.0) then write(*,*) write(*,*) "--------------------------------" write(*,*) " Iter Ntrials Nconv Res " write(*,*) "--------------------------------" endif - do idavidson=1,20 + 2 idavidson = idavidson + 1 + if(idavidson.gt.pars%maxiter) goto 3 ! Build projected matrix call dcopy(ntrials*ntrials,0d0,0,dbl_mb(vkv),1) @@ -351,14 +361,15 @@ 9010 format(I5,3X,I5,3X,I5,G16.5) ! All residuals are below the threshold - if (ndim.eq.0) exit + if (ndim.eq.0) goto 3 ! Restart calculation if dimensions exceeded if (ndim+ntrials.gt.pars%nmax) then - call bse_davidson_restart(ntrials,pars%nroots,npoles, - $ g_x,g_y,g_ym,g_s,g_ks,g_mks,l_vkv,vkv, + nrestart = min(ntrials, pars%nroots*pars%nspace) + call bse_davidson_restart(ntrials,nrestart,npoles, + $ g_x,g_y,g_ym,g_s,g_ks,g_mks,g_trials,l_vkv,vkv, $ int_mb(k_map),pars%nblocks) - cycle + goto 1 endif ! Project-out current vectors @@ -434,7 +445,7 @@ call dcopy(mdim*myld,dbl_mb(k_tmp2),1,dbl_mb(k_kw),1) call dcopy(mdim*myld,dbl_mb(k_tmp3),1,dbl_mb(k_mkw),1) else - do itrial=1,ndim + do itrial=1,mdim call dcopy(myld,dbl_mb(k_tmp1+(itrial-1)*(myld+myld2)),1, $ dbl_mb(k_w+(itrial-1)*myld),1) call dcopy(myld2, @@ -461,11 +472,12 @@ ! All trial vectors were linearly-dependent ! restart calculation with current best guess - if (mdim.eq.0) then - call bse_davidson_restart(ntrials,pars%nroots,npoles, - $ g_x,g_y,g_ym,g_s,g_ks,g_mks,l_vkv,vkv,int_mb(k_map), - $ pars%nblocks) - cycle + if (mdim.lt.3) then + nrestart = min(ntrials, pars%nroots*pars%nspace) + call bse_davidson_restart(ntrials,nrestart,npoles, + $ g_x,g_y,g_ym,g_s,g_ks,g_mks,g_trials,l_vkv,vkv, + $ int_mb(k_map),pars%nblocks) + goto 1 endif ndim = mdim @@ -474,8 +486,9 @@ call bse_davidson_newvecs(ntrials,ndim,npoles,g_x,g_y,g_ym, $ g_s,g_ks,g_mks,g_w,g_kw,g_mkw, $ l_vkv,vkv,int_mb(k_map),pars%nblocks) + goto 2 - enddo + 3 continue if(pars%me.eq.0) write(*,*) diff --git a/src/bsemol/bse_davidson_kortho.F b/src/bsemol/bse_davidson_kortho.F index fbc5c5c6e5..91d5a8fc04 100644 --- a/src/bsemol/bse_davidson_kortho.F +++ b/src/bsemol/bse_davidson_kortho.F @@ -15,6 +15,7 @@ double precision rdum double precision v(npoles,n),kv(npoles,n),mkv(npoles,n) double precision vkv(n,n),eig(n),work(npoles,n) + double precision sqrtvkv(n,n) ! V**T K V call dgemm('t','n',n,n,npoles,1d0,v,npoles,kv,npoles,0d0,vkv,n) @@ -39,7 +40,7 @@ k = 1 100 continue do i=k,m - if (eig(i).lt.1d-12) then + if (eig(i).lt.1d-9) then do j=i+1,n eig(j-1) = eig(j) vkv(:,j-1) = vkv(:,j) @@ -50,7 +51,7 @@ endif enddo - ! Obtain VKV^(1/2) + ! Obtain VKV^(-1/2) do i=1,m vkv(:,i) = vkv(:,i)/dsqrt(eig(i)) enddo diff --git a/src/bsemol/bse_davidson_residual.F b/src/bsemol/bse_davidson_residual.F index a566fee17d..b712346688 100644 --- a/src/bsemol/bse_davidson_residual.F +++ b/src/bsemol/bse_davidson_residual.F @@ -8,15 +8,18 @@ double precision ym(npoles,nroots),r(npoles) double precision x(npoles,nroots),dia(npoles),w(npoles,nroots) + logical consecutive integer iroot double precision norm(nroots) + consecutive = .true. ndim = 0 do iroot=1,nroots r(:) = ym(:,iroot) - omega(iroot)*x(:,iroot) norm(iroot) = maxval(abs(r)) call ga_dgop((/1/),norm(iroot),1,"maxabs") - if (norm(iroot).gt.1d-5) then + if (consecutive .and. norm(iroot).gt.1d-4) consecutive = .false. + if ((norm(iroot).gt.1d-4) .or. (.not.consecutive)) then ndim = ndim + 1 w(:,ndim) = r(:)/(dia(:) - omega(iroot)) endif diff --git a/src/bsemol/bse_davidson_restart.F b/src/bsemol/bse_davidson_restart.F index 284bfa5530..5431f5639e 100644 --- a/src/bsemol/bse_davidson_restart.F +++ b/src/bsemol/bse_davidson_restart.F @@ -1,6 +1,6 @@ subroutine bse_davidson_restart(ntrials,nroots,npoles,g_x,g_y, - $ g_ym,g_s,g_ks,g_mks,lvkv,vkv, - $ map,nblocks) + $ g_ym,g_s,g_ks,g_mks,g_trials, + $ lvkv,vkv,map,nblocks) implicit none #include "global.fh" @@ -9,7 +9,7 @@ integer ntrials,nroots,npoles,nblocks integer g_x,g_y,g_ym,g_s,g_ks,g_mks,lvkv,vkv - integer map(nblocks),grid(2) + integer map(nblocks),grid(2),g_trials logical stat @@ -20,11 +20,11 @@ ! Copy current solutions call ga_copy_patch('n',g_x,1,npoles,1,ntrials, - $ g_s,1,npoles,1,ntrials) - call ga_copy_patch('n',g_y,1,npoles,1,ntrials, - $ g_ks,1,npoles,1,ntrials) - call ga_copy_patch('n',g_ym,1,npoles,1,ntrials, - $ g_mks,1,npoles,1,ntrials) + $ g_trials,1,npoles,1,ntrials) +! call ga_copy_patch('n',g_y,1,npoles,1,ntrials, +! $ g_ks,1,npoles,1,ntrials) +! call ga_copy_patch('n',g_ym,1,npoles,1,ntrials, +! $ g_mks,1,npoles,1,ntrials) ! Destroy current solutions stat = ga_destroy(g_x).and.ga_destroy(g_y).and.ga_destroy(g_ym) @@ -44,12 +44,12 @@ $ call errquit('bse_davidson_restar: failed create',1,GA_ERR) ! Copy back solutions - call ga_copy_patch('n',g_s,1,npoles,1,ntrials, - $ g_x,1,npoles,1,ntrials) - call ga_copy_patch('n',g_ks,1,npoles,1,ntrials, - $ g_y,1,npoles,1,ntrials) - call ga_copy_patch('n',g_mks,1,npoles,1,ntrials, - $ g_ym,1,npoles,1,ntrials) +! call ga_copy_patch('n',g_s,1,npoles,1,ntrials, +! $ g_x,1,npoles,1,ntrials) +! call ga_copy_patch('n',g_ks,1,npoles,1,ntrials, +! $ g_y,1,npoles,1,ntrials) +! call ga_copy_patch('n',g_mks,1,npoles,1,ntrials, +! $ g_ym,1,npoles,1,ntrials) ! Destroy working vectors stat = ga_destroy(g_s).and.ga_destroy(g_ks).and.ga_destroy(g_mks) @@ -65,9 +65,9 @@ $ call errquit('bse_davidson_restar: failed create',2,GA_ERR) ! Copy current solutions - call ga_copy(g_x,g_s) - call ga_copy(g_y,g_ks) - call ga_copy(g_ym,g_mks) +! call ga_copy(g_x,g_s) +! call ga_copy(g_y,g_ks) +! call ga_copy(g_ym,g_mks) ! Reallocate VKV if(.not.ma_chop_stack(lvkv)) diff --git a/src/bsemol/bse_defaults.F b/src/bsemol/bse_defaults.F index 167d442f61..8363608d8f 100644 --- a/src/bsemol/bse_defaults.F +++ b/src/bsemol/bse_defaults.F @@ -21,7 +21,10 @@ & rtdb_put(rtdb,'bse:elower',mt_dbl,1,0d0) .and. & rtdb_put(rtdb,'bse:upper',mt_dbl,1,0d0) .and. & rtdb_put(rtdb,'bse:nroots',mt_int,1,10) .and. - & rtdb_put(rtdb,'bse:nmax',mt_int,1,100) .and. + & rtdb_put(rtdb,'bse:nmax',mt_int,1,200) .and. + & rtbd_put(rtdb,'bse:skipgw',mt_log,1,.false.) .and. + & rtdb_put(rtdb,'bse:maxiter',mt_int,1,100) .and. + & rtdb_put(rtdb,'bse:nspace',mt_int,1,4) .and. & rtdb_put(rtdb,'bse:init',mt_log,1,.true.) if (.not.ok) diff --git a/src/bsemol/bse_init.F b/src/bsemol/bse_init.F index 7ffc92b036..a332a788df 100644 --- a/src/bsemol/bse_init.F +++ b/src/bsemol/bse_init.F @@ -24,7 +24,7 @@ character(len=255) :: basisname, scftype, gwevals integer i, ilo, ihi, j, g_work integer nbf_temp, ipol_temp, nocc, nvir, nmo_temp(2) - logical ldum + logical ldum, skipgw logical int_normalize, int_norm_2c external int_normalize, int_norm_2c @@ -83,6 +83,9 @@ c & (pars%lanczos.and.(pars%analytic.or.pars%davidson))) & call errquit(pname//'more than one method',4,INPUT_ERR) + if (.not.rtdb_get(pars%rtdb, 'bse:skipgw', mt_log, 1, skipgw)) + & call errquit(pname//'could not read skipgw',5, RTDB_ERR) + ! Check wether we are computing singlet or triplet excitations if(.not.rtdb_get(pars%rtdb,'bse:singlet',mt_log,1,pars%singlet)) & call errquit(pname//'could not read from rtdb',1,RTDB_ERR) @@ -95,30 +98,40 @@ c ! Check if we are doing Tamm-Dancoff approximation if(.not.rtdb_get(pars%rtdb,'bse:tda',mt_log,1,pars%tda)) - & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + & call errquit(pname//'could not read from rtdb',101,RTDB_ERR) ! Check if Output is restricted to an energy window if(.not.rtdb_get(pars%rtdb,'bse:dowindow',mt_log,1,pars%dowindow)) - & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + & call errquit(pname//'could not read from rtdb',105,RTDB_ERR) if(pars%dowindow) then if(.not.rtdb_get(pars%rtdb,'bse:elower',mt_dbl,1,pars%elower)) - & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + & call errquit(pname//'could not read from rtdb',108,RTDB_ERR) if(.not.rtdb_get(pars%rtdb,'bse:eupper',mt_dbl,1,pars%eupper)) - & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + & call errquit(pname//'could not read from rtdb',110,RTDB_ERR) endif ! Number of roots if(.not.rtdb_get(pars%rtdb,'bse:nroots',mt_int,1,pars%nroots)) - & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) + & call errquit(pname//'could not read from rtdb',115,RTDB_ERR) + + ! Starting space size + if(.not.rtdb_get(pars%rtdb, 'bse:nspace', mt_int, 1, pars%nspace)) + & call errquit(pname//'could not read from rtdb', 119, RTDB_ERR) ! Maximum Number of roots if(.not.rtdb_get(pars%rtdb,'bse:nmax',mt_int,1,pars%nmax)) - & call errquit(pname//'could not read from rtdb',5,RTDB_ERR) - if (pars%nmax.le.2*pars%nroots) then - call errquit(pname//'maxroots should be at least 2*nroots', - $ 119,INPUT_ERR) + & call errquit(pname//'could not read from rtdb',123,RTDB_ERR) + if ((pars%nmax.le.5*pars%nroots).and.pars%davidson) then + call errquit(pname//'maxroots should be at least 5*nroots', + & 126,INPUT_ERR) endif + if((pars%nroots*pars%nspace.gt.pars%nmax).and.pars%davidson) + & call errquit(pname//'maxroots should be at least nroots*nspace', + & 130, INPUT_ERR) + ! Maximum number of iterations + if(.not.rtdb_get(pars%rtdb,'bse:maxiter',mt_int,1,pars%maxiter)) + & call errquit(pname//'could not read from rtdb',134,RTDB_ERR) ! Get some info from DFT module call dft_rdinput(pars%rtdb) if (cdfit) then @@ -258,6 +271,10 @@ c ! Read GW QP energies !if (.not.pars%ncap) then + if(skipgw) then + call dcopy(nbf_ao*pars%ipol,dbl_mb(pars%k_mf_evals),1, + & dbl_mb(pars%k_gw_evals),1) + else call util_file_name('gwevals',.false.,.false.,gwevals) call util_file_name_resolve(gwevals,.false.) if (pars%me.eq.0) then @@ -270,7 +287,7 @@ c endif call ga_brdcst(mt_dbl,dbl_mb(pars%k_gw_evals), & ma_sizeof(mt_dbl,nbf_ao*pars%ipol,mt_byte),0) - !endif + endif !3-center ERIs call int_init(pars%rtdb, 2, (/ao_bas_han, cd_bas_han/)) diff --git a/src/bsemol/bse_input.F b/src/bsemol/bse_input.F index 188be807ce..74729f7723 100644 --- a/src/bsemol/bse_input.F +++ b/src/bsemol/bse_input.F @@ -18,10 +18,11 @@ c character*255 test character(*), parameter :: pname = "bse_input: " c - integer, parameter :: num_dirs = 10 + integer, parameter :: num_dirs = 13 character*11 dirs(num_dirs) data dirs / 'method','tda','ncap','ncapr','singlet','triplet', - & 'outwin', 'nroots', 'maxroots', 'end' / + & 'outwin', 'nroots', 'maxroots', 'skipgw', 'maxiter', + & 'nstart', 'end' / c integer ind, itemp double precision threshold, eta, temp @@ -45,7 +46,8 @@ c call errquit(pname//'unknown directive', 0, INPUT_ERR) end if c - goto (100, 200, 300, 301, 400, 500, 600, 700, 800, 9999) ind + goto (100, 200, 300, 301, 400, 500, 600, 700, 800, 900, 1000, + & 1100, 9999) ind call errquit(pname//'unknown directive',ind, INPUT_ERR) c @@ -138,6 +140,28 @@ c & call errquit(pname//'rtdb_put failed', 800, RTDB_ERR) goto 10 c +c Skip GW calculation +c + 900 if(.not.rtdb_put(rtdb,'bse:skipgw',mt_log,1,.true.)) + & call errquit(pname//'rtdb_put failed', 900, RTDB_ERR) + goto 10 +c +c Maximum number of iterations +c + 1000 if(.not.inp_i(itemp)) + & call errquit(pname//'could not read maxiter', 1000, INPUT_ERR) + if(.not.rtdb_put(rtdb,'bse:maxiter',mt_int,1,itemp)) + & call errquit(pname//'rtdb_put failed', 1000, RTDB_ERR) + goto 10 +c +c Size of starting space +c + 1100 if(.not.inp_i(itemp)) + & call errquit(pname//'could not read nstart', 1100, INPUT_ERR) + if(.not.rtdb_put(rtdb,'bse:nspace', mt_int, 1, itemp)) + & call errquit(pname//'rtdb_put failed', 1100, RTDB_ERR) + goto 10 +c c normal termination c 9999 return diff --git a/src/bsemol/bse_oscstr.F b/src/bsemol/bse_oscstr.F index 3f569bfc36..dee41bfa26 100644 --- a/src/bsemol/bse_oscstr.F +++ b/src/bsemol/bse_oscstr.F @@ -9,6 +9,7 @@ #include "rtdb.fh" #include "sym.fh" #include "util.fh" +#include "util_parms.fh" #include "inp.fh" type(bse_params_t) :: pars @@ -23,12 +24,18 @@ integer isym,jsym,i,j,k,l,pol,occ,vir,ioff integer g_td(2),g_xy(2),g_dipmag, g_ovlp, g_work, g_corr + integer g_tdtot(2) integer k_corr, l_corr, ulloop character*4 oname,vname + integer g_dipx, g_dipy, g_dipz + integer g_qdrxx, g_qdrxy, g_qdrxz, g_qdryy, g_qdryz, g_qdrzz + integer g_work2, g_work3, g_x(2), g_y(2) + logical ltransden,stat double precision origin(3) double precision na,nb,s2,s2_full + double precision espread data origin/0d0,0d0,0d0/ character*(nw_max_path_len) fn_civecs, fn_transden @@ -38,7 +45,10 @@ character*5 spin(2) double precision x(totpoles),y(totpoles) double precision thresh ! Threshold for printing - parameter (thresh=1.0d-2) + parameter (thresh=5.0d-2) + double precision xe(3), xh(3), xe2_exp, xh2_exp, xe_exp_2 + double precision xh_exp_2, xhxe_exp, dhtoe, dexc, sigma_h, sigma_e + double precision omega_norm, cov, pcc, dcd spin(1)='alpha' spin(2)='beta ' @@ -52,29 +62,49 @@ $ 1,.false.) call ga_scale(g_dipmag,0.5d0) + g_ovlp = ga_create_atom_blocked(geom, ao_bas_han, 'Overlap') + call ga_zero(g_ovlp) + call int_1e_ga(ao_bas_han, ao_bas_han, g_ovlp, 'overlap', oskel) + if(oskel) call sym_symmetrize(geom, ao_bas_han, .false., g_ovlp) + if (pars%ipol.eq.2) then if(.not.ma_push_get(mt_dbl,pars%nmo*pars%nmo,'corr', $ l_corr,k_corr)) $ call errquit('bse_oscstr: failed to create MA',0,MA_ERR) - g_ovlp = ga_create_atom_blocked(geom, ao_bas_han, 'Overlap') if(.not.ga_create(mt_dbl,nbf_ao,pars%nmo,'work',0,0,g_work)) $ call errquit('bse_oscstr: failed to create GA',0,GA_ERR) if(.not.ga_create(mt_dbl,pars%nmo,pars%nmo,'work', $ pars%nmo,0,g_corr)) $ call errquit('bse_oscstr: failed to create GA',0,GA_ERR) - call ga_zero(g_ovlp) - call int_1e_ga(ao_bas_han, ao_bas_han, g_ovlp, 'overlap', oskel) - if (oskel) call sym_symmetrize(geom,ao_bas_han,.false.,g_ovlp) call ga_dgemm('n','n',nbf_ao,pars%nmo,nbf_ao,1d0,g_ovlp, $ pars%g_movecs(2),0d0,g_work) call ga_dgemm('t','n',pars%nmo,pars%nmo,nbf_ao,1d0, $ pars%g_movecs(1),g_work,0d0,g_corr) call ga_get(g_corr,1,pars%nmo,1,pars%nmo,dbl_mb(k_corr), $ pars%nmo) - stat = ga_destroy(g_ovlp).and.ga_destroy(g_work).and. - $ ga_destroy(g_corr) + stat = ga_destroy(g_work).and.ga_destroy(g_corr) + if(.not.stat) + $ call errquit('bse_osctr: failed to destroy GA',58,GA_ERR) endif + g_dipx = ga_create_atom_blocked(geom, ao_bas_han, 'X') + g_dipy = ga_create_atom_blocked(geom, ao_bas_han, 'Y') + g_dipz = ga_create_atom_blocked(geom, ao_bas_han, 'Z') + g_qdrxx = ga_create_atom_blocked(geom, ao_bas_han, 'XX') + g_qdrxy = ga_create_atom_blocked(geom, ao_bas_han, 'XY') + g_qdrxz = ga_create_atom_blocked(geom, ao_bas_han, 'XZ') + g_qdryy = ga_create_atom_blocked(geom, ao_bas_han, 'YY') + g_qdryz = ga_create_atom_blocked(geom, ao_bas_han, 'YZ') + g_qdrzz = ga_create_atom_blocked(geom, ao_bas_han, 'ZZ') + g_work = ga_create_atom_blocked(geom, ao_bas_han, 'work1') + g_work2 = ga_create_atom_blocked(geom, ao_bas_han, 'work2') + g_work3 = ga_create_atom_blocked(geom, ao_bas_han, 'work3') + + call int_dip_ga(ao_bas_han, ao_bas_han, g_dipx, g_dipy, g_dipz) + call int_qdr_ga(ao_bas_han, ao_bas_han, g_qdrxx, g_qdrxy, g_qdrxz, + $ g_qdryy, g_qdryz, g_qdrzz) + + npoles = pars%npoles(1) if (pars%ipol.gt.1) npoles = npoles + pars%npoles(2) @@ -126,9 +156,18 @@ if(.not.ga_create(mt_dbl,nbf_ao,nbf_ao,'Transition density', $ -1,-1,g_td(i))) call errquit $ ('bse_oscstr: failed to create g_td',0,GA_ERR) + if(.not.ga_create(mt_dbl,nbf_ao,nbf_ao,'Transition density', + $ -1,-1,g_tdtot(i))) call errquit + $ ('bse_oscstr: failed to create g_tdtot',0,GA_ERR) if(.not.ga_create(mt_dbl,pars%npoles(i),1,'X+Y vector',-1,1, $ g_xy(i))) call errquit $ ('bse_oscstr: failed to create g_xy',0,GA_ERR) + if(.not.ga_create(mt_dbl,pars%npoles(i),1,'X vector',-1,1, + $ g_x(i))) call errquit + $ ('bse_oscstr: failed to create g_x',0,GA_ERR) + if(.not.ga_create(mt_dbl,pars%npoles(i),1,'Y vector',-1,1, + $ g_y(i))) call errquit + $ ('bse_oscstr: failed to create g_y',0,GA_ERR) enddo ! Compute the oscillator strengths around an energy window @@ -141,24 +180,35 @@ mag_transdip = 0d0 call ga_copy_patch('n',pars%g_apb,1,pars%npoles(1),ipole,ipole, - & g_xy(1),1,pars%npoles(1),1,1) - if (pars%davidson) then - call ga_add_patch(1d0,pars%g_amb,1,pars%npoles(1),ipole,ipole, - & 1d0,g_xy(1),1,pars%npoles(1),1,1, - & g_xy(1),1,pars%npoles(1),1,1) - endif - if (pars%ipol.gt.1) then + & g_x(1),1,pars%npoles(1),1,1) + if(pars%ipol.gt.1) then call ga_copy_patch('n',pars%g_apb,pars%npoles(1)+1,npoles, - & ipole,ipole,g_xy(2),1,pars%npoles(2),1,1) - if (pars%davidson) then - call ga_add_patch(1d0,pars%g_amb,pars%npoles(1)+1,npoles, - & ipole,ipole, - & 1d0,g_xy(2),1,pars%npoles(2),1,1, - & g_xy(2),1,pars%npoles(2),1,1) - endif + & ipole,ipole,g_x(2),1,pars%npoles(2),1,1) + endif + call tddft_transfm(1, g_x, pars%g_movecs, nbf_ao, pars%nocc, + & (/pars%nmo, pars%nmo/), (/0,0/), (/0,0/), + & pars%ipol, g_td, 1) + call ga_transpose(g_td(1), g_tdtot(1)) + if(pars%ipol.gt.1) call ga_transpose(g_td(2), g_tdtot(2)) + + if(pars%davdison) then + call ga_copy_patch('n',pars%g_amb,1,pars%npoles(1),ipole,ipole, + & g_y(1),1,pars%npoles(1),1,1) + if(pars%ipol.gt.1) then + call ga_copy_patch('n',pars%g_amb, pars%npoles(1)+1, npoles, + & ipole, ipole, g_y(2), 1, pars%npoles(2), + & 1, 1) + endif + call tddft_transfm(1, g_y, pars%g_movecs, nbf_ao, pars%nocc, + & (/pars%nmo, pars%nmo/), (/0,0/), (/0,0/), + & pars%ipol, g_td, 1) + call ga_add(1.0d0, g_td(1), 1.0d0, g_tdtot(1), g_td(1)) + if(pars%ipol.gt.1) + & call ga_add(1.0d0, g_td(2), 1.0d0, g_tdtot(2), g_td(2)) + else + call ga_copy(g_tdtot(1), g_td(1)) + if (pars%ipol.gt.1) call ga_copy(g_tdtot(2), g_td(2)) endif - call tddft_transfm(1,g_xy,pars%g_movecs,nbf_ao,pars%nocc, - & (/pars%nmo,pars%nmo/),0,0,pars%ipol,g_td,1) do i=1,pars%ipol call multipole_density(ao_bas_han,origin,3,g_td(i),moms,20) @@ -170,6 +220,65 @@ enddo enddo + if(pars%ipol.gt.1) call ga_add(1d0,g_td(1),1d0,g_td(2),g_td(1)) + + ! Indicators + call ga_dgemm('t','n',nbf_ao,nbf_ao,nbf_ao,1d0,g_td(1),g_ovlp, + $ 0d0,g_work) + call ga_dgemm('n','n',nbf_ao,nbf_ao,nbf_ao,1d0,g_work,g_td(1), + $ 0d0,g_work2) + omega_norm = ga_ddot(g_work2,g_ovlp) + xe(1) = ga_ddot(g_work2,g_dipx)/omega_norm + xe(2) = ga_ddot(g_work2,g_dipy)/omega_norm + xe(3) = ga_ddot(g_work2,g_dipz)/omega_norm + xe_exp_2 = xe(1)**2 + xe(2)**2 + xe(3)**2 + xe2_exp = (ga_ddot(g_work2,g_qdrxx) + + $ ga_ddot(g_work2,g_qdryy) + + $ ga_ddot(g_work2,g_qdrzz))/omega_norm + + + call ga_dgemm('n','n',nbf_ao,nbf_ao,nbf_ao,1d0,g_td(1),g_ovlp, + $ 0d0,g_work) + call ga_dgemm('n','t',nbf_ao,nbf_ao,nbf_ao,1d0,g_work,g_td(1), + $ 0d0,g_work2) + xh(1) = ga_ddot(g_work2,g_dipx)/omega_norm + xh(2) = ga_ddot(g_work2,g_dipy)/omega_norm + xh(3) = ga_ddot(g_work2,g_dipz)/omega_norm + xh_exp_2 = xh(1)**2 + xh(2)**2 + xh(3)**2 + xh2_exp = (ga_ddot(g_work2,g_qdrxx) + + $ ga_ddot(g_work2,g_qdryy) + + $ ga_ddot(g_work2,g_qdrzz))/omega_norm + + + xhxe_exp = 0d0 + call ga_dgemm('n','n',nbf_ao,nbf_ao,nbf_ao,1d0,g_td(1),g_dipx, + $ 0d0,g_work) + call ga_dgemm('n','t',nbf_ao,nbf_ao,nbf_ao,1d0,g_work,g_td(1), + $ 0d0,g_work2) + xhxe_exp = xhxe_exp + ga_ddot(g_work2,g_dipx)/omega_norm + call ga_dgemm('n','n',nbf_ao,nbf_ao,nbf_ao,1d0,g_td(1),g_dipy, + $ 0d0,g_work) + call ga_dgemm('n','t',nbf_ao,nbf_ao,nbf_ao,1d0,g_work,g_td(1), + $ 0d0,g_work2) + xhxe_exp = xhxe_exp + ga_ddot(g_work2,g_dipy)/omega_norm + call ga_dgemm('n','n',nbf_ao,nbf_ao,nbf_ao,1d0,g_td(1),g_dipz, + $ 0d0,g_work) + call ga_dgemm('n','t',nbf_ao,nbf_ao,nbf_ao,1d0,g_work,g_td(1), + $ 0d0,g_work2) + xhxe_exp = xhxe_exp + ga_ddot(g_work2,g_dipz)/omega_norm + + + sigma_h = dsqrt(xh2_exp - xh_exp_2) + sigma_e = dsqrt(xe2_exp - xe_exp_2) + + dhtoe = dsqrt((xe(1)-xh(1))**2 + + $ (xe(2)-xh(2))**2 + + $ (xe(3)-xh(3))**2) + dexc = dsqrt(xe2_exp + xh2_exp - 2d0*xhxe_exp) + cov = xhxe_exp - xe(1)*xh(1) - xe(2)*xh(2) - xe(3)*xh(3) + pcc = cov/sigma_e/sigma_h + dcd = dhtoe - 0.5d0*(sigma_e + sigma_h) + if (ltransden) then call util_file_name('tdens',.false.,.false.,fn_transden) call createuniquefilename(fn_transden,ipole) @@ -185,7 +294,7 @@ if (pars%ipol.eq.1) then do i=1,20 - moms(i) = moms(i)/dsqrt(2.0d0) + moms(i) = moms(i)*dsqrt(2.0d0) enddo endif @@ -217,6 +326,9 @@ l = 0 maxr = 0.0d0 + pol = 1 + occ = 1 + vir = pars%nocc(1) + 1 do i=1,pars%ipol if (pars%npoles(i).eq.0) cycle do j=1,pars%nocc(i) @@ -255,6 +367,16 @@ write(luout,9210) endif + write(luout,*) + write(luout,9340) omega_norm + write(luout,9300) sigma_e*cau2ang + write(luout,9310) sigma_h*cau2ang + write(luout,9320) dhtoe*cau2ang + write(luout,9330) dexc*cau2ang + write(luout,9360) dcd*cau2ang + write(luout,9350) pcc + + if (pars%davidson) then write(luout,*) @@ -335,8 +457,23 @@ if (.not.ga_destroy(g_td(i))) & call errquit('bse_oscstr: ga_destroy failed',0,GA_ERR) if (.not.ga_destroy(g_xy(i))) + & call errquit('bse_oscstr: ga_destroy failed',0,GA_ERR) + if (.not.ga_destroy(g_tdtot(i))) + & call errquit('bse_oscstr: ga_destroy failed',0,GA_ERR) + if (.not.ga_destroy(g_x(i))) + & call errquit('bse_oscstr: ga_destroy failed',0,GA_ERR) + if (.not.ga_destroy(g_y(i))) & call errquit('bse_oscstr: ga_destroy failed',0,GA_ERR) enddo + if(.not.(ga_destroy(g_dipx).and.ga_destroy(g_dipy).and. + $ ga_destroy(g_dipz).and.ga_destroy(g_qdrxx).and. + $ ga_destroy(g_qdrxy).and.ga_destroy(g_qdrxz).and. + $ ga_destroy(g_qdryy).and.ga_destroy(g_qdryz).and. + $ ga_destroy(g_qdrzz).and.ga_destroy(g_ovlp).and. + $ ga_destroy(g_work).and.ga_destroy(g_work2).and. + $ ga_destroy(g_work3))) + & call errquit('bse_oscstr: ga_destroy failed',0,GA_ERR) + 9110 format(2x, 1 '--------------------------------------------------------------- @@ -364,6 +501,14 @@ 1 i5,1x,a5,1x,a4,f8.5,' Y') 9180 format(2x,' = ',f8.4) 9190 format(2x,' D = ',f8.4) + 9300 format(5x,' sigma_e = ',f8.4, ' Angstrom') + 9310 format(5x,' sigma_h = ',f8.4, ' Angstrom') + 9320 format(5x,' |d_h->e| = ',f8.4, ' Angstrom') + 9330 format(5x,' d_exc = ',f8.4, ' Angstrom') + 9360 format(5x,' d_CD = ',f8.4, ' Angstrom') + 9350 format(5x,'Pearson C.C. = ',f8.4) + 9340 format(5x,'Exciton norm = ',f8.4) + end diff --git a/src/gwmol/gw_cdgw.F b/src/gwmol/gw_cdgw.F index d09ab1ed3c..526ba23d5f 100644 --- a/src/gwmol/gw_cdgw.F +++ b/src/gwmol/gw_cdgw.F @@ -140,7 +140,6 @@ c lSize = lSize*max(pars%eviter,1) if (.not.ma_push_get(mt_dbl,lSize,'values',lValues,kValues)) $ call errquit(pname//'failed to allocate values',0,MA_ERR) - lSize = lSize*max(pars%eviter,1) if (.not.ma_push_get(mt_dbl,lSize,'errors',lErrors,kErrors)) $ call errquit(pname//'failed to allocate errors',0,MA_ERR) endif @@ -219,6 +218,8 @@ c c if (eviter.eq.0 .and. pars%ncap) then c call dcopy(nmo*ipol,dbl_mb(kEmod),1,dbl_mb(kEref),1) c endif +c + call dcopy(nmo*ipol, dbl_mb(kEmod), 1, dbl_mb(kEref), 1) c c Obtain Screened Coulomb matrices on imaginary axis c diff --git a/src/gwmol/gw_defaults.F b/src/gwmol/gw_defaults.F index e2cd9c5cfc..abb8df4027 100644 --- a/src/gwmol/gw_defaults.F +++ b/src/gwmol/gw_defaults.F @@ -37,11 +37,7 @@ c & rtdb_put(rtdb,'gw:first',mt_int,1,1).and. & rtdb_put(rtdb,'gw:threshold',mt_dbl,1,0.005d0/ha2ev).and. & rtdb_put(rtdb,'gw:ncap',mt_log,1,.false.).and. -#ifdef GWCMPLX & rtdb_put(rtdb,'gw:eta',mt_dbl,1,0.0001d0).and. -#else - & rtdb_put(rtdb,'gw:eta',mt_dbl,1,0.00001d0).and. -#endif & rtdb_put(rtdb,'gw:rpa',mt_log,1,.false.).and. & rtdb_put(rtdb,'gw:diag',mt_log,1,.false.).and. & rtdb_put(rtdb,'gw:core',mt_log,1,.false.).and. diff --git a/src/gwmol/gw_donewton.F b/src/gwmol/gw_donewton.F index e6e88d9776..9e99e38097 100644 --- a/src/gwmol/gw_donewton.F +++ b/src/gwmol/gw_donewton.F @@ -34,7 +34,7 @@ C if (iter.eq.1) then xout = xin + 0.2d0*step else - xout = xin + 0.8d0*step + xout = xin + 0.7d0*step endif ! diff --git a/src/gwmol/gw_init.F b/src/gwmol/gw_init.F index 20010e493e..6cc5bd83ed 100644 --- a/src/gwmol/gw_init.F +++ b/src/gwmol/gw_init.F @@ -138,9 +138,9 @@ c $ pars%nvqp(1))) $ call errquit(pname//'failed to read nvqp',0,RTDB_ERR) if (.not.rtdb_get(pars%rtdb,'gw:noqp_beta',mt_int,1,pars%noqp(2))) - $ call errquit(pname//'failed to read noqp',0,RTDB_ERR) + $ call errquit(pname//'failed to read noqp beta',0,RTDB_ERR) if (.not.rtdb_get(pars%rtdb,'gw:nvqp_beta',mt_int,1,pars%nvqp(2))) - $ call errquit(pname//'failed to read nvqp',0,RTDB_ERR) + $ call errquit(pname//'failed to read nvqp beta',0,RTDB_ERR) c if (.not.rtdb_get(pars%rtdb,'gw:analyticw',mt_log,1,pars%anaw)) $ call errquit(pname//'failed to read analyticw',0,RTDB_ERR) @@ -246,7 +246,7 @@ c pars%nocc(i) = nocc pars%nvir(i) = nvir if (nocc+nvir.ne.pars%nmo) - $ call errquit(pname//'something went wrong',0,0) + $ call errquit(pname//'Nocc + Nvir /= NMO ',0,0) c if ((pars%noqp(i).gt.nocc).or.(pars%noqp(i).eq.-1)) @@ -255,12 +255,11 @@ c if (pars%noqp(i).lt.-1) $ call errquit(pname//'invalid number noqp specified',0,0) c - if ((pars%nvqp(i).gt.nvir).or.(pars%nvqp(i).eq.-1)) + if ((pars%nvqp(i).gt.nvir).or.(pars%nvqp(i).le.-1)) $ pars%nvqp(i) = nvir - if (pars%nvqp(i).lt.-1) - $ call errquit(pname//'invalid number nvqp specified',0,0) - + ! If core option was passed, then start counting from the bottom + ! else, start counting from the top (Fermi level) if (pars%core) then pars%llmo(i) = pars%first else From 1f6581f987baacc3637ac1a856322929b4e3028a Mon Sep 17 00:00:00 2001 From: edoapra Date: Mon, 29 Sep 2025 16:30:49 -0700 Subject: [PATCH 26/46] fix --- src/bsemol/bse_defaults.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bsemol/bse_defaults.F b/src/bsemol/bse_defaults.F index 8363608d8f..bc8d9062b6 100644 --- a/src/bsemol/bse_defaults.F +++ b/src/bsemol/bse_defaults.F @@ -22,7 +22,7 @@ & rtdb_put(rtdb,'bse:upper',mt_dbl,1,0d0) .and. & rtdb_put(rtdb,'bse:nroots',mt_int,1,10) .and. & rtdb_put(rtdb,'bse:nmax',mt_int,1,200) .and. - & rtbd_put(rtdb,'bse:skipgw',mt_log,1,.false.) .and. + & rtdb_put(rtdb,'bse:skipgw',mt_log,1,.false.) .and. & rtdb_put(rtdb,'bse:maxiter',mt_int,1,100) .and. & rtdb_put(rtdb,'bse:nspace',mt_int,1,4) .and. & rtdb_put(rtdb,'bse:init',mt_log,1,.true.) From 543d01e9bfeffab9b1f012dd6084ca3c8906cf71 Mon Sep 17 00:00:00 2001 From: edoapra Date: Mon, 29 Sep 2025 16:34:15 -0700 Subject: [PATCH 27/46] fix --- src/bsemol/bse_oscstr.F | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/bsemol/bse_oscstr.F b/src/bsemol/bse_oscstr.F index dee41bfa26..124a23a68e 100644 --- a/src/bsemol/bse_oscstr.F +++ b/src/bsemol/bse_oscstr.F @@ -9,7 +9,7 @@ #include "rtdb.fh" #include "sym.fh" #include "util.fh" -#include "util_parms.fh" +#include "util_params.fh" #include "inp.fh" type(bse_params_t) :: pars @@ -191,9 +191,10 @@ call ga_transpose(g_td(1), g_tdtot(1)) if(pars%ipol.gt.1) call ga_transpose(g_td(2), g_tdtot(2)) - if(pars%davdison) then - call ga_copy_patch('n',pars%g_amb,1,pars%npoles(1),ipole,ipole, - & g_y(1),1,pars%npoles(1),1,1) + if(pars%davidson) then + call ga_copy_patch('n',pars%g_amb,1,pars%npoles(1), + I ipole,ipole, + & g_y(1),1,pars%npoles(1),1,1) if(pars%ipol.gt.1) then call ga_copy_patch('n',pars%g_amb, pars%npoles(1)+1, npoles, & ipole, ipole, g_y(2), 1, pars%npoles(2), From 599851aa9e81e57d7415b244502d32a72f94f4a5 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 16 Oct 2025 01:04:28 -0700 Subject: [PATCH 28/46] Print only the lowest nroots diagonals --- src/bsemol/bse_davidson.F | 4 ++-- src/bsemol/bse_davidson_guess.F | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/bsemol/bse_davidson.F b/src/bsemol/bse_davidson.F index 94d5e74fb8..6ca6f7b852 100644 --- a/src/bsemol/bse_davidson.F +++ b/src/bsemol/bse_davidson.F @@ -16,7 +16,7 @@ integer lW,kW integer maxpoles,maxnpoles,totnpoles,nri - integer indeces(pars%nroots),ntrials,g_trials,npoles,ndim + integer ntrials,g_trials,npoles,ndim integer g_x,g_y,g_ym,g_s,g_ks,g_mks,g_w,g_kw,g_mkw,off1 integer g_wia,g_tmp,info,lwork,kwork,idum,mdim,k_trials integer k_x,k_y,k_ym,k_s,k_ks,k_mks,k_w,k_kw,k_mkw,k_r,l_r @@ -156,7 +156,7 @@ ! Get guess vectos if(pars%me.eq.0) $ call bse_davidson_guess(pars,dbl_mb(k_dia),g_trials,npoles, - $ ntrials) + $ ntrials,pars%nroots) call ga_brdcst(mt_dbl,dbl_mb(k_dia), $ ma_sizeof(mt_dbl,npoles,mt_byte),0) do isp=1,pars%ipol diff --git a/src/bsemol/bse_davidson_guess.F b/src/bsemol/bse_davidson_guess.F index 735640ef55..fb2ff21166 100644 --- a/src/bsemol/bse_davidson_guess.F +++ b/src/bsemol/bse_davidson_guess.F @@ -1,5 +1,5 @@ subroutine bse_davidson_guess(pars,diagonal,g_trials,npoles, - $ ntrials) + $ ntrials,nroots) implicit none @@ -9,7 +9,7 @@ #include "cdft.fh" type(bse_params_t) :: pars - integer npoles,ntrials,g_trials + integer npoles,ntrials,nroots,g_trials double precision diagonal(npoles) double precision amb(npoles) @@ -103,13 +103,14 @@ ! Start the guess vector write(LuOut,*) - write(LuOut,9000) ntrials + write(LuOut,9000) nroots write(LuOut,9020) write(LuOut,9010) write(LuOut,9020) do itrial=1,ntrials ipole = indeces(itrial) call ga_put(g_trials,ipole,ipole,itrial,itrial,1d0,1) + if(itrial.gt.nroots) cycle ! Print information if (ipole.le.pars%npoles(1)) then From def292c26f640ecb3b9425a36ea56f4f4863a608 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 16 Oct 2025 10:03:00 -0700 Subject: [PATCH 29/46] Update GW defaults --- src/gwmol/gw_defaults.F | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gwmol/gw_defaults.F b/src/gwmol/gw_defaults.F index abb8df4027..08f1ec3008 100644 --- a/src/gwmol/gw_defaults.F +++ b/src/gwmol/gw_defaults.F @@ -27,17 +27,17 @@ c & rtdb_put(rtdb,'gw:graph',mt_log,1,.false.).and. & rtdb_put(rtdb,'gw:linear',mt_log,1,.false.).and. & rtdb_put(rtdb,'gw:eviter',mt_int,1,4).and. - & rtdb_put(rtdb,'gw:qpiter',mt_int,1,10).and. + & rtdb_put(rtdb,'gw:qpiter',mt_int,1,20).and. & rtdb_put(rtdb,'gw:noqp_alpha',mt_int,1,1).and. & rtdb_put(rtdb,'gw:nvqp_alpha',mt_int,1,0).and. & rtdb_put(rtdb,'gw:noqp_beta',mt_int,1,1).and. & rtdb_put(rtdb,'gw:nvqp_beta',mt_int,1,0).and. - & rtdb_put(rtdb,'gw:ngl',mt_int,1,200).and. + & rtdb_put(rtdb,'gw:ngl',mt_int,1,160).and. & rtdb_put(rtdb,'gw:nomega',mt_int,1,100).and. & rtdb_put(rtdb,'gw:first',mt_int,1,1).and. & rtdb_put(rtdb,'gw:threshold',mt_dbl,1,0.005d0/ha2ev).and. & rtdb_put(rtdb,'gw:ncap',mt_log,1,.false.).and. - & rtdb_put(rtdb,'gw:eta',mt_dbl,1,0.0001d0).and. + & rtdb_put(rtdb,'gw:eta',mt_dbl,1,0.1d0/ha2ev).and. & rtdb_put(rtdb,'gw:rpa',mt_log,1,.false.).and. & rtdb_put(rtdb,'gw:diag',mt_log,1,.false.).and. & rtdb_put(rtdb,'gw:core',mt_log,1,.false.).and. From e4b30e0d66d18a410755975010f925d52059e87c Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 16 Oct 2025 10:32:28 -0700 Subject: [PATCH 30/46] Update GW defaults --- src/gwmol/gw_defaults.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gwmol/gw_defaults.F b/src/gwmol/gw_defaults.F index 08f1ec3008..7d2756f984 100644 --- a/src/gwmol/gw_defaults.F +++ b/src/gwmol/gw_defaults.F @@ -37,7 +37,7 @@ c & rtdb_put(rtdb,'gw:first',mt_int,1,1).and. & rtdb_put(rtdb,'gw:threshold',mt_dbl,1,0.005d0/ha2ev).and. & rtdb_put(rtdb,'gw:ncap',mt_log,1,.false.).and. - & rtdb_put(rtdb,'gw:eta',mt_dbl,1,0.1d0/ha2ev).and. + & rtdb_put(rtdb,'gw:eta',mt_dbl,1,0.01d0).and. & rtdb_put(rtdb,'gw:rpa',mt_log,1,.false.).and. & rtdb_put(rtdb,'gw:diag',mt_log,1,.false.).and. & rtdb_put(rtdb,'gw:core',mt_log,1,.false.).and. From aaccf3f9c3aae814468aa31b763b32dc868c6bc0 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 16 Oct 2025 11:19:56 -0700 Subject: [PATCH 31/46] Update GW QA and add BSE QA --- QA/doqmtests.mpi | 3 + QA/tests/bse_ethene/bse_ethene.nw | 45 + QA/tests/bse_ethene/bse_ethene.out | 3934 ++++++++++++++++++++ QA/tests/gw_closedshell/gw_closedshell.nw | 24 +- QA/tests/gw_closedshell/gw_closedshell.out | 508 +-- QA/tests/gw_openshell/gw_openshell.out | 584 +-- QA/tests/gw_symmetry/gw_symmetry.out | 186 +- 7 files changed, 4354 insertions(+), 930 deletions(-) create mode 100644 QA/tests/bse_ethene/bse_ethene.nw create mode 100644 QA/tests/bse_ethene/bse_ethene.out diff --git a/QA/doqmtests.mpi b/QA/doqmtests.mpi index c586d8e87d..b7720d8cb3 100755 --- a/QA/doqmtests.mpi +++ b/QA/doqmtests.mpi @@ -577,6 +577,9 @@ let "myexit+=$?" let "myexit+=$?" ./runtests.mpi.unix procs $np gw_symmetry let "myexit+=$?" +# BSE +./runtests.mpi.unix procs $np bse_ethene +let "myexit+=$?" # x2c ./runtests.mpi.unix procs $np x2c-h2se let "myexit+=$?" diff --git a/QA/tests/bse_ethene/bse_ethene.nw b/QA/tests/bse_ethene/bse_ethene.nw new file mode 100644 index 0000000000..94867b61bc --- /dev/null +++ b/QA/tests/bse_ethene/bse_ethene.nw @@ -0,0 +1,45 @@ +title "ethene BSE" +memory total 2000 mb +start + +set lindep:n_dep 0 + +geometry +H 0.000000 0.923274 1.238289 +H 0.000000 -0.923274 1.238289 +H 0.000000 0.923274 -1.238289 +H 0.000000 -0.923274 -1.238289 +C 0.000000 0.000000 0.668188 +C 0.000000 0.000000 -0.668188 +end + +basis "ao basis" spherical bse + * library aug-cc-pvtz +end + +basis "ri basis" spherical bse + * library aug-cc-pvtz-rifit +end + +dft + direct + xc pbe0 + tolerances acccoul 10 + convergence energy 1d-8 + grid fine +end + +gw + evgw 5 + method analytic + states alpha occ -1 vir -1 +end + +task gw + +bse + nroots 12 + method davidson +end + +task bse diff --git a/QA/tests/bse_ethene/bse_ethene.out b/QA/tests/bse_ethene/bse_ethene.out new file mode 100644 index 0000000000..a1bd39b437 --- /dev/null +++ b/QA/tests/bse_ethene/bse_ethene.out @@ -0,0 +1,3934 @@ + argument 1 = /people/meji656/calculations/bse/QA/ethene.nw + NWChem w/ OpenMP: maximum threads = 1 + + + + + Northwest Computational Chemistry Package (NWChem) 7.3.0 + -------------------------------------------------------- + + + Environmental Molecular Sciences Laboratory + Pacific Northwest National Laboratory + Richland, WA 99352 + + Copyright (c) 1994-2025 + Pacific Northwest National Laboratory + Battelle Memorial Institute + + NWChem is an open-source computational chemistry package + distributed under the terms of the + Educational Community License (ECL) 2.0 + A copy of the license is included with this distribution + in the LICENSE.TXT file + + ACKNOWLEDGMENT + -------------- + + This software and its documentation were developed at the + EMSL at Pacific Northwest National Laboratory, a multiprogram + national laboratory, operated for the U.S. Department of Energy + by Battelle under Contract Number DE-AC05-76RL01830. Support + for this work was provided by the Department of Energy Office + of Biological and Environmental Research, Office of Basic + Energy Sciences, and the Office of Advanced Scientific Computing. + + + Job information + --------------- + + hostname = dc005 + program = /qfs/people/meji656/software/nwchem.bse/bin/LINUX64/nwchem + date = Thu Oct 16 11:04:26 2025 + + compiled = Thu_Oct_16_11:01:30_2025 + source = /qfs/people/meji656/software/nwchem.bse + nwchem branch = 7.3.0 + nwchem revision = v7.2.0-beta1-1624-g0dc011d0a0 + ga revision = 5.9.2 + use scalapack = F + input = /people/meji656/calculations/bse/QA/ethene.nw + prefix = ethene. + data base = ./ethene.db + status = startup + nproc = 7 + time left = -1s + + + + Memory information + ------------------ + + heap = 65535998 doubles = 500.0 Mbytes + stack = 65535995 doubles = 500.0 Mbytes + global = 131072000 doubles = 1000.0 Mbytes (distinct from heap & stack) + total = 262143993 doubles = 2000.0 Mbytes + verify = yes + hardfail = no + + + Directory information + --------------------- + + 0 permanent = . + 0 scratch = . + + + + + NWChem Input Module + ------------------- + + + ethene BSE + ---------- + + Scaling coordinates for geometry "geometry" by 1.889725989 + (inverse scale = 0.529177249) + + D2H symmetry detected + + ------ + auto-z + ------ + no constraints, skipping 0.0000000000000000 + no constraints, skipping 0.0000000000000000 + + + Geometry "geometry" -> "" + ------------------------- + + Output coordinates in angstroms (scale by 1.889725989 to convert to a.u.) + + No. Tag Charge X Y Z + ---- ---------------- ---------- -------------- -------------- -------------- + 1 H 1.0000 0.92327400 1.23828900 0.00000000 + 2 H 1.0000 -0.92327400 1.23828900 0.00000000 + 3 H 1.0000 0.92327400 -1.23828900 0.00000000 + 4 H 1.0000 -0.92327400 -1.23828900 0.00000000 + 5 C 6.0000 0.00000000 0.66818800 0.00000000 + 6 C 6.0000 0.00000000 -0.66818800 0.00000000 + + Atomic Mass + ----------- + + H 1.007825 + C 12.000000 + + + Effective nuclear repulsion energy (a.u.) 33.2981002050 + + Nuclear Dipole moment (a.u.) + ---------------------------- + X Y Z + ---------------- ---------------- ---------------- + 0.0000000000 0.0000000000 0.0000000000 + + Symmetry information + -------------------- + + Group name D2h + Group number 26 + Group order 8 + No. of unique centers 2 + + Symmetry unique atoms + + 1 5 + + + + Z-matrix (autoz) + -------- + + Units are Angstrom for bonds and degrees for angles + + Type Name I J K L M Value + ----------- -------- ----- ----- ----- ----- ----- ---------- + 1 Stretch 1 5 1.08510 + 2 Stretch 2 5 1.08510 + 3 Stretch 3 6 1.08510 + 4 Stretch 4 6 1.08510 + 5 Stretch 5 6 1.33638 + 6 Bend 1 5 2 116.61120 + 7 Bend 1 5 6 121.69440 + 8 Bend 2 5 6 121.69440 + 9 Bend 3 6 4 116.61120 + 10 Bend 3 6 5 121.69440 + 11 Bend 4 6 5 121.69440 + 12 Torsion 1 5 6 3 0.00000 + 13 Torsion 1 5 6 4 180.00000 + 14 Torsion 2 5 6 3 180.00000 + 15 Torsion 2 5 6 4 -0.00000 + + + XYZ format geometry + ------------------- + 6 + geometry + H 0.92327400 1.23828900 0.00000000 + H -0.92327400 1.23828900 0.00000000 + H 0.92327400 -1.23828900 0.00000000 + H -0.92327400 -1.23828900 0.00000000 + C 0.00000000 0.66818800 0.00000000 + C 0.00000000 -0.66818800 0.00000000 + + ============================================================================== + internuclear distances + ------------------------------------------------------------------------------ + center one | center two | atomic units | angstroms + ------------------------------------------------------------------------------ + 5 C | 1 H | 2.05055 | 1.08510 + 5 C | 2 H | 2.05055 | 1.08510 + 6 C | 3 H | 2.05055 | 1.08510 + 6 C | 4 H | 2.05055 | 1.08510 + 6 C | 5 C | 2.52538 | 1.33638 + ------------------------------------------------------------------------------ + number of included internuclear distances: 5 + ============================================================================== + + + + ============================================================================== + internuclear angles + ------------------------------------------------------------------------------ + center 1 | center 2 | center 3 | degrees + ------------------------------------------------------------------------------ + 1 H | 5 C | 2 H | 116.61 + 1 H | 5 C | 6 C | 121.69 + 2 H | 5 C | 6 C | 121.69 + 3 H | 6 C | 4 H | 116.61 + 3 H | 6 C | 5 C | 121.69 + 4 H | 6 C | 5 C | 121.69 + ------------------------------------------------------------------------------ + number of included internuclear angles: 6 + ============================================================================== + + + + + + Summary of "ao basis" -> "" (spherical) + ------------------------------------------------------------------------------ + Tag Description Shells Functions and Types + ---------------- ------------------------------ ------ --------------------- + * aug-cc-pvtz on all atoms + + + + + Summary of "ri basis" -> "" (spherical) + ------------------------------------------------------------------------------ + Tag Description Shells Functions and Types + ---------------- ------------------------------ ------ --------------------- + * aug-cc-pvtz-rifit on all atoms + + + + NWChem GW Module + ---------------- + + + ethene BSE + + + + NWChem DFT Module + ----------------- + + + ethene BSE + + + Basis "ao basis" -> "ao basis" (spherical) + ----- + H (Hydrogen) + ------------ + Exponent Coefficients + -------------- --------------------------------------------------------- + 1 S 3.38700000E+01 0.006068 + 1 S 5.09500000E+00 0.045308 + 1 S 1.15900000E+00 0.202822 + + 2 S 3.25800000E-01 1.000000 + + 3 S 1.02700000E-01 1.000000 + + 4 S 2.52600000E-02 1.000000 + + 5 P 1.40700000E+00 1.000000 + + 6 P 3.88000000E-01 1.000000 + + 7 P 1.02000000E-01 1.000000 + + 8 D 1.05700000E+00 1.000000 + + 9 D 2.47000000E-01 1.000000 + + C (Carbon) + ---------- + Exponent Coefficients + -------------- --------------------------------------------------------- + 1 S 8.23600000E+03 0.000531 + 1 S 1.23500000E+03 0.004108 + 1 S 2.80800000E+02 0.021087 + 1 S 7.92700000E+01 0.081853 + 1 S 2.55900000E+01 0.234817 + 1 S 8.99700000E+00 0.434401 + 1 S 3.31900000E+00 0.346129 + 1 S 3.64300000E-01 -0.008983 + + 2 S 9.05900000E-01 1.000000 + + 3 S 8.23600000E+03 -0.000113 + 3 S 1.23500000E+03 -0.000878 + 3 S 2.80800000E+02 -0.004540 + 3 S 7.92700000E+01 -0.018133 + 3 S 2.55900000E+01 -0.055760 + 3 S 8.99700000E+00 -0.126895 + 3 S 3.31900000E+00 -0.170352 + 3 S 3.64300000E-01 0.598684 + + 4 S 1.28500000E-01 1.000000 + + 5 S 4.40200000E-02 1.000000 + + 6 P 1.87100000E+01 0.014031 + 6 P 4.13300000E+00 0.086866 + 6 P 1.20000000E+00 0.290216 + + 7 P 3.82700000E-01 1.000000 + + 8 P 1.20900000E-01 1.000000 + + 9 P 3.56900000E-02 1.000000 + + 10 D 1.09700000E+00 1.000000 + + 11 D 3.18000000E-01 1.000000 + + 12 D 1.00000000E-01 1.000000 + + 13 F 7.61000000E-01 1.000000 + + 14 F 2.68000000E-01 1.000000 + + + + Summary of "ao basis" -> "ao basis" (spherical) + ------------------------------------------------------------------------------ + Tag Description Shells Functions and Types + ---------------- ------------------------------ ------ --------------------- + H aug-cc-pvtz 9 23 4s3p2d + C aug-cc-pvtz 14 46 5s4p3d2f + + + + + Summary of "ao basis" -> "ao basis" (spherical) + ------------------------------------------------------------------------------ + Tag Description Shells Functions and Types + ---------------- ------------------------------ ------ --------------------- + H aug-cc-pvtz 9 23 4s3p2d + C aug-cc-pvtz 14 46 5s4p3d2f + + + Symmetry analysis of basis + -------------------------- + + ag 35 + au 12 + b1g 27 + b1u 18 + b2g 12 + b2u 35 + b3g 18 + b3u 27 + + Caching 1-el integrals + tol_rho modified to match energy + convergence criterion. + + General Information + ------------------- + SCF calculation type: DFT + Wavefunction type: closed shell. + No. of atoms : 6 + No. of electrons : 16 + Alpha electrons : 8 + Beta electrons : 8 + Charge : 0 + Spin multiplicity: 1 + Use of symmetry is: on ; symmetry adaption is: on + Maximum number of iterations: 50 + This is a Direct SCF calculation. + AO basis - number of functions: 184 + number of shells: 64 + Convergence on energy requested: 1.00D-08 + Convergence on density requested: 1.00D-05 + Convergence on gradient requested: 5.00D-04 + + XC Information + -------------- + PBE0 Method XC Functional + Hartree-Fock (Exact) Exchange 0.250 + PerdewBurkeErnzerhof Exchange Functional 0.750 + Perdew 1991 LDA Correlation Functional 1.000 local + PerdewBurkeErnz. Correlation Functional 1.000 non-local + + Grid Information + ---------------- + Grid used for XC integration: fine + Radial quadrature: Mura-Knowles + Angular quadrature: Lebedev. + Tag B.-S. Rad. Rad. Pts. Rad. Cut. Ang. Pts. + --- ---------- --------- --------- --------- + H 0.35 60 15.0 590 + C 0.70 70 13.0 590 + Grid pruning is: on + Number of quadrature shells: 130 + Spatial weights used: Erf1 + + Convergence Information + ----------------------- + Convergence aids based upon iterative change in + total energy or number of iterations. + Levelshifting, if invoked, occurs when the + HOMO/LUMO gap drops below (HL_TOL): 1.00D-02 + DIIS, if invoked, will attempt to extrapolate + using up to (NFOCK): 10 stored Fock matrices. + + Damping( 0%) Levelshifting(0.5) DIIS + --------------- ------------------- --------------- + dE on: start ASAP start + dE off: 2 iters 50 iters 50 iters + + + Screening Tolerance Information + ------------------------------- + Density screening/tol_rho: 1.00D-11 + AO Gaussian exp screening on grid/accAOfunc: 18 + CD Gaussian exp screening on grid/accCDfunc: 20 + XC Gaussian exp screening on grid/accXCfunc: 20 + Schwarz screening/accCoul: 1.00D-10 + + + Forcing the number of linearly dependent vectors to be 0 + + Superposition of Atomic Density Guess + ------------------------------------- + + Sum of atomic energies: -77.34060632 + + Non-variational initial energy + ------------------------------ + + Total energy = -78.455147 + 1-e energy = -167.874960 + 2-e energy = 56.121713 + HOMO = -0.345565 + LUMO = -0.010066 + + + Symmetry analysis of molecular orbitals - initial + ------------------------------------------------- + + Numbering of irreducible representations: + + 1 ag 2 au 3 b1g 4 b1u 5 b2g + 6 b2u 7 b3g 8 b3u + + Orbital symmetries: + + 1 ag 2 b2u 3 ag 4 b2u 5 b3u + 6 ag 7 b1g 8 b1u 9 b3g 10 ag + 11 b2u 12 b3u 13 b1g 14 b1u 15 ag + 16 b2u 17 b3g 18 ag + + Time after variat. SCF: 0.6 + Time prior to 1st pass: 0.6 + + Grid_pts file = ./ethene.gridpts.0 + Record size in doubles = 12289 No. of grid_pts per rec = 3070 + Max. records in memory = 5 Max. recs in file = 144750120 + + + Memory utilization after 1st SCF pass: + Heap Space remaining (MW): 31.85 31851590 + Stack Space remaining (MW): 65.53 65534900 + + convergence iter energy DeltaE RMS-Dens Diis-err time + ---------------- ----- ----------------- --------- --------- --------- ------ + d= 0,ls=0.0,diis 1 -78.4948720218 -1.12D+02 2.79D-03 1.96D-01 1.0 + d= 0,ls=0.0,diis 2 -78.5108256483 -1.60D-02 3.67D-04 8.12D-03 1.5 + d= 0,ls=0.0,diis 3 -78.5113261696 -5.01D-04 1.64D-04 4.05D-03 1.9 + d= 0,ls=0.0,diis 4 -78.5118217097 -4.96D-04 3.00D-05 9.87D-05 2.3 + d= 0,ls=0.0,diis 5 -78.5118344037 -1.27D-05 1.02D-05 4.05D-07 2.7 + d= 0,ls=0.0,diis 6 -78.5118344578 -5.41D-08 4.79D-07 1.43D-09 3.1 + d= 0,ls=0.0,diis 7 -78.5118344583 -4.57D-10 7.88D-08 2.30D-11 3.5 + + + Total DFT energy = -78.511834458262 + One electron energy = -170.172785981702 + Coulomb energy = 70.545536392539 + Exchange-Corr. energy = -12.182685074135 + Nuclear repulsion energy = 33.298100205037 + + Numeric. integr. density = 15.999999625470 + + Total iterative time = 2.9s + + + + Occupations of the irreducible representations + ---------------------------------------------- + + irrep alpha beta + -------- -------- -------- + ag 3.0 3.0 + au 0.0 0.0 + b1g 1.0 1.0 + b1u 1.0 1.0 + b2g 0.0 0.0 + b2u 2.0 2.0 + b3g 0.0 0.0 + b3u 1.0 1.0 + + + DFT Final Molecular Orbital Analysis + ------------------------------------ + + Vector 1 Occ=2.000000D+00 E=-1.022806D+01 Symmetry=ag + MO Center= -2.5D-16, 2.5D-12, -2.0D-19, r^2= 4.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 93 0.697273 5 C s 139 0.697273 6 C s + 94 0.039874 5 C s 140 0.039874 6 C s + 96 -0.034387 5 C s 142 -0.034387 6 C s + + Vector 2 Occ=2.000000D+00 E=-1.022710D+01 Symmetry=b2u + MO Center= -1.6D-16, -2.5D-12, 1.6D-18, r^2= 4.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 93 0.696292 5 C s 139 -0.696292 6 C s + 96 0.086883 5 C s 142 -0.086883 6 C s + 105 -0.048427 5 C py 151 -0.048427 6 C py + 94 0.034528 5 C s 140 -0.034528 6 C s + + Vector 3 Occ=2.000000D+00 E=-7.849862D-01 Symmetry=ag + MO Center= 9.2D-15, 5.7D-15, 1.3D-15, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 95 0.346917 5 C s 141 0.346917 6 C s + 96 0.210224 5 C s 142 0.210224 6 C s + 94 0.077322 5 C s 140 0.077322 6 C s + 99 -0.061606 5 C py 145 0.061606 6 C py + 1 0.050488 1 H s 24 0.050488 2 H s + + Vector 4 Occ=2.000000D+00 E=-5.999211D-01 Symmetry=b2u + MO Center= -1.8D-17, -5.3D-15, 2.9D-30, r^2= 2.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 95 0.280677 5 C s 141 -0.280677 6 C s + 96 0.253326 5 C s 142 -0.253326 6 C s + 102 0.092804 5 C py 148 0.092804 6 C py + 99 0.091684 5 C py 145 0.091684 6 C py + 1 0.088625 1 H s 24 0.088625 2 H s + + Vector 5 Occ=2.000000D+00 E=-4.846036D-01 Symmetry=b3u + MO Center= -8.7D-15, -1.7D-17, 1.8D-30, r^2= 1.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 101 0.219376 5 C px 147 0.219376 6 C px + 98 0.183308 5 C px 144 0.183308 6 C px + 104 0.121723 5 C px 150 0.121723 6 C px + 2 0.116614 1 H s 25 -0.116614 2 H s + 48 0.116614 3 H s 71 -0.116614 4 H s + + Vector 6 Occ=2.000000D+00 E=-4.349223D-01 Symmetry=ag + MO Center= 1.7D-17, -7.8D-16, 4.6D-17, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 102 0.258705 5 C py 148 -0.258705 6 C py + 99 0.236125 5 C py 145 -0.236125 6 C py + 105 0.129879 5 C py 151 -0.129879 6 C py + 2 0.098618 1 H s 25 0.098618 2 H s + 48 0.098618 3 H s 71 0.098618 4 H s + + Vector 7 Occ=2.000000D+00 E=-3.684131D-01 Symmetry=b1g + MO Center= -1.3D-15, -6.3D-16, -1.7D-16, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 101 0.212487 5 C px 147 -0.212487 6 C px + 104 0.194628 5 C px 150 -0.194628 6 C px + 98 0.171029 5 C px 144 -0.171029 6 C px + 2 0.135915 1 H s 25 -0.135915 2 H s + 48 -0.135915 3 H s 71 0.135915 4 H s + + Vector 8 Occ=2.000000D+00 E=-2.890724D-01 Symmetry=b1u + MO Center= -7.9D-16, -1.8D-15, -2.3D-15, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 103 0.283530 5 C pz 149 0.283530 6 C pz + 100 0.219168 5 C pz 146 0.219168 6 C pz + 106 0.174998 5 C pz 152 0.174998 6 C pz + + Vector 9 Occ=0.000000D+00 E=-3.548042D-03 Symmetry=b3g + MO Center= -6.8D-15, 2.0D-14, -3.2D-15, r^2= 3.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 109 0.584222 5 C pz 155 -0.584222 6 C pz + 106 0.337827 5 C pz 152 -0.337827 6 C pz + 103 0.272457 5 C pz 149 -0.272457 6 C pz + 100 0.204921 5 C pz 146 -0.204921 6 C pz + 116 0.048577 5 C d -1 162 0.048577 6 C d -1 + + Vector 10 Occ=0.000000D+00 E= 4.384170D-03 Symmetry=ag + MO Center= 2.6D-13, 7.1D-13, -2.8D-14, r^2= 1.6D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 97 1.404756 5 C s 143 1.404756 6 C s + 96 1.321118 5 C s 142 1.321118 6 C s + 3 -0.862193 1 H s 26 -0.862193 2 H s + 49 -0.862193 3 H s 72 -0.862193 4 H s + 4 -0.685329 1 H s 27 -0.685329 2 H s + + Vector 11 Occ=0.000000D+00 E= 2.006975D-02 Symmetry=b2u + MO Center= -1.6D-12, -3.0D-13, -2.0D-14, r^2= 2.1D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 2.006766 1 H s 27 2.006766 2 H s + 50 -2.006766 3 H s 73 -2.006766 4 H s + 108 -1.483093 5 C py 154 -1.483093 6 C py + 105 -1.241238 5 C py 151 -1.241238 6 C py + 97 1.169076 5 C s 143 -1.169076 6 C s + + Vector 12 Occ=0.000000D+00 E= 2.254180D-02 Symmetry=b3u + MO Center= -4.6D-13, -4.5D-13, 8.3D-16, r^2= 2.0D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 2.087153 1 H s 27 -2.087153 2 H s + 50 2.087153 3 H s 73 -2.087153 4 H s + 3 0.902567 1 H s 26 -0.902567 2 H s + 49 0.902567 3 H s 72 -0.902567 4 H s + 107 -0.753449 5 C px 153 -0.753449 6 C px + + Vector 13 Occ=0.000000D+00 E= 4.941841D-02 Symmetry=b1g + MO Center= 2.2D-12, 1.6D-12, -8.1D-16, r^2= 2.9D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 6.100810 1 H s 27 -6.100810 2 H s + 50 -6.100810 3 H s 73 6.100810 4 H s + 107 -3.734128 5 C px 153 3.734128 6 C px + 3 -1.565954 1 H s 26 1.565954 2 H s + 49 1.565954 3 H s 72 -1.565954 4 H s + + Vector 14 Occ=0.000000D+00 E= 5.736419D-02 Symmetry=b1u + MO Center= 4.6D-15, 3.6D-14, 5.1D-15, r^2= 1.2D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 109 0.681083 5 C pz 155 0.681083 6 C pz + 13 -0.180567 1 H pz 36 -0.180567 2 H pz + 59 -0.180567 3 H pz 82 -0.180567 4 H pz + 121 0.129439 5 C d -1 167 -0.129439 6 C d -1 + 103 -0.078227 5 C pz 149 -0.078227 6 C pz + + Vector 15 Occ=0.000000D+00 E= 7.276423D-02 Symmetry=ag + MO Center= 2.7D-14, -1.2D-13, 9.5D-15, r^2= 1.5D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 108 2.125022 5 C py 154 -2.125022 6 C py + 105 0.365271 5 C py 151 -0.365271 6 C py + 3 0.254010 1 H s 26 0.254010 2 H s + 49 0.254010 3 H s 72 0.254010 4 H s + 124 0.211656 5 C d 2 170 0.211656 6 C d 2 + + Vector 16 Occ=0.000000D+00 E= 9.123937D-02 Symmetry=b2u + MO Center= -3.8D-14, -2.6D-13, -2.0D-16, r^2= 2.7D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 97 21.195858 5 C s 143 -21.195858 6 C s + 108 -9.364020 5 C py 154 -9.364020 6 C py + 4 5.455877 1 H s 27 5.455877 2 H s + 50 -5.455877 3 H s 73 -5.455877 4 H s + 96 2.760374 5 C s 142 -2.760374 6 C s + + Vector 17 Occ=0.000000D+00 E= 9.995970D-02 Symmetry=b3g + MO Center= 1.1D-13, -1.6D-14, 2.5D-14, r^2= 1.6D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 109 2.937580 5 C pz 155 -2.937580 6 C pz + 106 0.762391 5 C pz 152 -0.762391 6 C pz + 121 -0.488636 5 C d -1 167 -0.488636 6 C d -1 + 13 -0.225333 1 H pz 36 -0.225333 2 H pz + 59 0.225333 3 H pz 82 0.225333 4 H pz + + Vector 18 Occ=0.000000D+00 E= 1.000600D-01 Symmetry=ag + MO Center= 1.8D-12, -1.4D-12, 1.4D-15, r^2= 2.0D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 97 5.333165 5 C s 143 5.333165 6 C s + 96 4.830051 5 C s 142 4.830051 6 C s + 3 -3.374198 1 H s 26 -3.374198 2 H s + 49 -3.374198 3 H s 72 -3.374198 4 H s + 4 -1.399059 1 H s 27 -1.399059 2 H s + + Vector 19 Occ=0.000000D+00 E= 1.030495D-01 Symmetry=b3u + MO Center= -1.5D-12, 4.6D-14, 3.2D-15, r^2= 2.1D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 3.802208 1 H s 27 -3.802208 2 H s + 50 3.802208 3 H s 73 -3.802208 4 H s + 3 2.954214 1 H s 26 -2.954214 2 H s + 49 2.954214 3 H s 72 -2.954214 4 H s + 107 -2.523785 5 C px 153 -2.523785 6 C px + + Vector 20 Occ=0.000000D+00 E= 1.248602D-01 Symmetry=ag + MO Center= 2.3D-13, -8.0D-15, 1.1D-14, r^2= 7.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 -2.254999 5 C s 97 -2.265880 5 C s + 142 -2.254999 6 C s 143 -2.265880 6 C s + 3 2.144877 1 H s 26 2.144877 2 H s + 49 2.144877 3 H s 72 2.144877 4 H s + 124 -1.715692 5 C d 2 170 -1.715692 6 C d 2 + + Vector 21 Occ=0.000000D+00 E= 1.366644D-01 Symmetry=b1g + MO Center= -2.5D-11, -2.0D-12, 3.4D-16, r^2= 2.2D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 107 9.335454 5 C px 153 -9.335454 6 C px + 4 -8.447405 1 H s 27 8.447405 2 H s + 50 8.447405 3 H s 73 -8.447405 4 H s + 120 -3.541182 5 C d -2 166 -3.541182 6 C d -2 + 3 3.333429 1 H s 26 -3.333429 2 H s + + Vector 22 Occ=0.000000D+00 E= 1.422546D-01 Symmetry=b2u + MO Center= 3.7D-11, 1.3D-12, -2.2D-16, r^2= 1.6D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 97 41.460656 5 C s 143 -41.460656 6 C s + 108 -10.668545 5 C py 154 -10.668545 6 C py + 3 -7.665293 1 H s 26 -7.665293 2 H s + 49 7.665293 3 H s 72 7.665293 4 H s + 96 5.151937 5 C s 142 -5.151937 6 C s + + Vector 23 Occ=0.000000D+00 E= 1.624733D-01 Symmetry=b3u + MO Center= -7.7D-14, 7.5D-13, 9.4D-27, r^2= 8.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 1.499089 1 H s 26 -1.499089 2 H s + 49 1.499089 3 H s 72 -1.499089 4 H s + 107 -1.372446 5 C px 153 -1.372446 6 C px + 4 1.268886 1 H s 27 -1.268886 2 H s + 50 1.268886 3 H s 73 -1.268886 4 H s + + Vector 24 Occ=0.000000D+00 E= 1.644270D-01 Symmetry=b2g + MO Center= -3.6D-15, 4.0D-16, -4.2D-15, r^2= 6.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 13 1.028777 1 H pz 36 -1.028777 2 H pz + 59 1.028777 3 H pz 82 -1.028777 4 H pz + 123 0.294653 5 C d 1 169 0.294653 6 C d 1 + 118 0.134109 5 C d 1 164 0.134109 6 C d 1 + 22 0.111356 1 H d 1 45 0.111356 2 H d 1 + + Vector 25 Occ=0.000000D+00 E= 2.051705D-01 Symmetry=b2u + MO Center= -5.5D-13, 1.1D-14, -8.1D-17, r^2= 1.1D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 97 34.242636 5 C s 143 -34.242636 6 C s + 3 -7.256803 1 H s 26 -7.256803 2 H s + 49 7.256803 3 H s 72 7.256803 4 H s + 105 7.006765 5 C py 151 7.006765 6 C py + 108 -6.636453 5 C py 154 -6.636453 6 C py + + Vector 26 Occ=0.000000D+00 E= 2.312309D-01 Symmetry=ag + MO Center= -1.6D-13, 1.2D-12, -7.4D-15, r^2= 1.2D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 108 2.604559 5 C py 154 -2.604559 6 C py + 105 1.762063 5 C py 151 -1.762063 6 C py + 12 -1.276749 1 H py 35 -1.276749 2 H py + 58 1.276749 3 H py 81 1.276749 4 H py + 96 -1.041942 5 C s 142 -1.041942 6 C s + + Vector 27 Occ=0.000000D+00 E= 2.326321D-01 Symmetry=au + MO Center= -7.4D-14, -1.1D-15, -8.7D-17, r^2= 9.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 13 2.585644 1 H pz 36 -2.585644 2 H pz + 59 -2.585644 3 H pz 82 2.585644 4 H pz + 123 2.349091 5 C d 1 169 -2.349091 6 C d 1 + 22 0.182180 1 H d 1 45 0.182180 2 H d 1 + 68 -0.182180 3 H d 1 91 -0.182180 4 H d 1 + + Vector 28 Occ=0.000000D+00 E= 2.467432D-01 Symmetry=b1u + MO Center= 7.2D-14, 3.1D-13, 9.9D-15, r^2= 1.0D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 1.729680 5 C pz 152 1.729680 6 C pz + 13 -1.513275 1 H pz 36 -1.513275 2 H pz + 59 -1.513275 3 H pz 82 -1.513275 4 H pz + 109 0.720299 5 C pz 155 0.720299 6 C pz + 121 0.404009 5 C d -1 167 -0.404009 6 C d -1 + + Vector 29 Occ=0.000000D+00 E= 2.494753D-01 Symmetry=b2u + MO Center= 2.2D-13, -7.3D-12, -5.9D-16, r^2= 1.4D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 97 24.264389 5 C s 143 -24.264389 6 C s + 108 -9.444530 5 C py 154 -9.444530 6 C py + 105 -7.463228 5 C py 151 -7.463228 6 C py + 96 6.625894 5 C s 142 -6.625894 6 C s + 4 4.186872 1 H s 27 4.186872 2 H s + + Vector 30 Occ=0.000000D+00 E= 2.753507D-01 Symmetry=b3u + MO Center= -8.3D-14, 1.7D-13, 4.1D-28, r^2= 1.1D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 107 -2.514586 5 C px 153 -2.514586 6 C px + 4 2.438029 1 H s 27 -2.438029 2 H s + 50 2.438029 3 H s 73 -2.438029 4 H s + 11 1.822888 1 H px 34 1.822888 2 H px + 57 1.822888 3 H px 80 1.822888 4 H px + + Vector 31 Occ=0.000000D+00 E= 3.007835D-01 Symmetry=b1g + MO Center= -2.9D-11, 2.1D-12, -2.1D-15, r^2= 1.5D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 21.390114 1 H s 26 -21.390114 2 H s + 49 -21.390114 3 H s 72 21.390114 4 H s + 107 11.279300 5 C px 153 -11.279300 6 C px + 120 -9.872773 5 C d -2 166 -9.872773 6 C d -2 + 4 -6.984163 1 H s 27 6.984163 2 H s + + Vector 32 Occ=0.000000D+00 E= 3.032774D-01 Symmetry=b3g + MO Center= 1.3D-15, -1.5D-12, -4.4D-15, r^2= 1.1D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 4.387972 5 C pz 152 -4.387972 6 C pz + 109 2.710753 5 C pz 155 -2.710753 6 C pz + 13 -1.430996 1 H pz 36 -1.430996 2 H pz + 59 1.430996 3 H pz 82 1.430996 4 H pz + 121 -1.170211 5 C d -1 167 -1.170211 6 C d -1 + + Vector 33 Occ=0.000000D+00 E= 3.154773D-01 Symmetry=b3u + MO Center= 4.6D-11, -1.4D-11, 3.4D-16, r^2= 1.1D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 8.729502 1 H s 26 -8.729502 2 H s + 49 8.729502 3 H s 72 -8.729502 4 H s + 104 -4.824802 5 C px 150 -4.824802 6 C px + 11 -3.313834 1 H px 34 -3.313834 2 H px + 57 -3.313834 3 H px 80 -3.313834 4 H px + + Vector 34 Occ=0.000000D+00 E= 3.174433D-01 Symmetry=b1g + MO Center= -6.0D-11, -1.0D-11, -2.8D-15, r^2= 1.2D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 38.472643 1 H s 26 -38.472643 2 H s + 49 -38.472643 3 H s 72 38.472643 4 H s + 120 -19.158492 5 C d -2 166 -19.158492 6 C d -2 + 11 -8.632898 1 H px 34 -8.632898 2 H px + 57 8.632898 3 H px 80 8.632898 4 H px + + Vector 35 Occ=0.000000D+00 E= 3.191068D-01 Symmetry=b1u + MO Center= 2.8D-14, -2.2D-13, -4.2D-16, r^2= 6.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 1.633170 5 C pz 152 1.633170 6 C pz + 121 1.542727 5 C d -1 167 -1.542727 6 C d -1 + 13 -0.894041 1 H pz 36 -0.894041 2 H pz + 59 -0.894041 3 H pz 82 -0.894041 4 H pz + 109 0.205827 5 C pz 155 0.205827 6 C pz + + Vector 36 Occ=0.000000D+00 E= 3.202112D-01 Symmetry=ag + MO Center= -5.1D-11, -1.5D-12, -8.8D-15, r^2= 1.2D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 10.562979 5 C s 142 10.562979 6 C s + 3 -6.843947 1 H s 26 -6.843947 2 H s + 49 -6.843947 3 H s 72 -6.843947 4 H s + 97 6.280666 5 C s 143 6.280666 6 C s + 105 3.182384 5 C py 151 -3.182384 6 C py + + Vector 37 Occ=0.000000D+00 E= 3.448208D-01 Symmetry=ag + MO Center= 3.6D-12, 6.4D-13, 3.7D-15, r^2= 9.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 5.233032 5 C s 142 5.233032 6 C s + 97 -3.170248 5 C s 143 -3.170248 6 C s + 11 1.473348 1 H px 34 -1.473348 2 H px + 57 1.473348 3 H px 80 -1.473348 4 H px + 122 1.351636 5 C d 0 168 1.351636 6 C d 0 + + Vector 38 Occ=0.000000D+00 E= 3.488037D-01 Symmetry=b2u + MO Center= -4.0D-13, 1.6D-13, -3.6D-16, r^2= 1.1D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 97 22.492838 5 C s 143 -22.492838 6 C s + 96 14.415590 5 C s 142 -14.415590 6 C s + 3 -11.878160 1 H s 26 -11.878160 2 H s + 49 11.878160 3 H s 72 11.878160 4 H s + 105 6.342904 5 C py 151 6.342904 6 C py + + Vector 39 Occ=0.000000D+00 E= 3.579103D-01 Symmetry=b3u + MO Center= -7.5D-15, 2.0D-11, -1.4D-25, r^2= 9.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 11.474598 1 H s 26 -11.474598 2 H s + 49 11.474598 3 H s 72 -11.474598 4 H s + 104 -7.127397 5 C px 150 -7.127397 6 C px + 120 -4.592866 5 C d -2 166 4.592866 6 C d -2 + 11 -2.762418 1 H px 34 -2.762418 2 H px + + Vector 40 Occ=0.000000D+00 E= 3.644591D-01 Symmetry=ag + MO Center= 1.7D-12, -1.6D-11, 7.5D-15, r^2= 9.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 19.130613 5 C s 142 19.130613 6 C s + 3 -9.296632 1 H s 26 -9.296632 2 H s + 49 -9.296632 3 H s 72 -9.296632 4 H s + 124 7.966091 5 C d 2 170 7.966091 6 C d 2 + 12 5.035763 1 H py 35 5.035763 2 H py + + Vector 41 Occ=0.000000D+00 E= 3.766951D-01 Symmetry=b2g + MO Center= 7.7D-14, -1.3D-12, -9.4D-16, r^2= 8.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 13 2.740159 1 H pz 36 -2.740159 2 H pz + 59 2.740159 3 H pz 82 -2.740159 4 H pz + 123 2.294488 5 C d 1 169 2.294488 6 C d 1 + 118 0.326499 5 C d 1 164 0.326499 6 C d 1 + 22 0.235718 1 H d 1 45 0.235718 2 H d 1 + + Vector 42 Occ=0.000000D+00 E= 3.839297D-01 Symmetry=b1g + MO Center= -1.5D-11, -8.8D-13, 1.4D-15, r^2= 1.2D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 23.853206 1 H s 26 -23.853206 2 H s + 49 -23.853206 3 H s 72 23.853206 4 H s + 104 -19.731466 5 C px 150 19.731466 6 C px + 11 -6.390105 1 H px 34 -6.390105 2 H px + 57 6.390105 3 H px 80 6.390105 4 H px + + Vector 43 Occ=0.000000D+00 E= 3.897336D-01 Symmetry=b3g + MO Center= 1.7D-12, 1.1D-12, -2.2D-14, r^2= 9.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 121 4.816671 5 C d -1 167 4.816671 6 C d -1 + 13 -2.856179 1 H pz 36 -2.856179 2 H pz + 59 2.856179 3 H pz 82 2.856179 4 H pz + 106 -2.281819 5 C pz 152 2.281819 6 C pz + 116 0.448419 5 C d -1 162 0.448419 6 C d -1 + + Vector 44 Occ=0.000000D+00 E= 4.233482D-01 Symmetry=b2u + MO Center= -4.7D-12, -2.3D-12, 1.2D-14, r^2= 9.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 97 34.078787 5 C s 143 -34.078787 6 C s + 3 -6.907989 1 H s 26 -6.907989 2 H s + 49 6.907989 3 H s 72 6.907989 4 H s + 105 5.743004 5 C py 151 5.743004 6 C py + 108 -5.091862 5 C py 154 -5.091862 6 C py + + Vector 45 Occ=0.000000D+00 E= 4.532871D-01 Symmetry=b2u + MO Center= 5.7D-11, 5.4D-12, 9.6D-15, r^2= 1.1D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 97 36.643543 5 C s 143 -36.643543 6 C s + 3 -16.370118 1 H s 26 -16.370118 2 H s + 49 16.370118 3 H s 72 16.370118 4 H s + 124 13.340458 5 C d 2 170 -13.340458 6 C d 2 + 96 -12.826860 5 C s 142 12.826860 6 C s + + Vector 46 Occ=0.000000D+00 E= 4.768370D-01 Symmetry=b1u + MO Center= -2.0D-13, 3.0D-13, -2.6D-15, r^2= 5.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 2.900077 5 C pz 152 2.900077 6 C pz + 13 -1.280435 1 H pz 36 -1.280435 2 H pz + 59 -1.280435 3 H pz 82 -1.280435 4 H pz + 121 0.497582 5 C d -1 167 -0.497582 6 C d -1 + 10 -0.279014 1 H pz 33 -0.279014 2 H pz + + Vector 47 Occ=0.000000D+00 E= 4.872453D-01 Symmetry=b2u + MO Center= 2.8D-11, 8.5D-12, 2.4D-15, r^2= 9.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 32.866305 5 C s 142 -32.866305 6 C s + 105 -26.258425 5 C py 151 -26.258425 6 C py + 97 15.482175 5 C s 143 -15.482175 6 C s + 3 13.560104 1 H s 26 13.560104 2 H s + 49 -13.560104 3 H s 72 -13.560104 4 H s + + Vector 48 Occ=0.000000D+00 E= 5.049696D-01 Symmetry=au + MO Center= -2.2D-12, 1.0D-12, -5.8D-15, r^2= 8.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 123 7.354152 5 C d 1 169 -7.354152 6 C d 1 + 13 4.789036 1 H pz 36 -4.789036 2 H pz + 59 -4.789036 3 H pz 82 4.789036 4 H pz + 118 0.249553 5 C d 1 164 -0.249553 6 C d 1 + 20 -0.236306 1 H d -1 43 0.236306 2 H d -1 + + Vector 49 Occ=0.000000D+00 E= 5.384322D-01 Symmetry=ag + MO Center= -8.4D-14, 3.9D-12, 1.7D-16, r^2= 7.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 4.985763 5 C py 151 -4.985763 6 C py + 108 1.804444 5 C py 154 -1.804444 6 C py + 12 -1.777148 1 H py 35 -1.777148 2 H py + 58 1.777148 3 H py 81 1.777148 4 H py + 2 1.027758 1 H s 25 1.027758 2 H s + + Vector 50 Occ=0.000000D+00 E= 6.133381D-01 Symmetry=b1g + MO Center= 5.0D-11, 2.9D-12, 4.3D-15, r^2= 1.0D+01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 96.286382 1 H s 26 -96.286382 2 H s + 49 -96.286382 3 H s 72 96.286382 4 H s + 120 -51.643732 5 C d -2 166 -51.643732 6 C d -2 + 11 -18.956248 1 H px 34 -18.956248 2 H px + 57 18.956248 3 H px 80 18.956248 4 H px + + Vector 51 Occ=0.000000D+00 E= 6.263700D-01 Symmetry=b3g + MO Center= 9.6D-13, 1.7D-13, 1.1D-15, r^2= 6.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 8.228639 5 C pz 152 -8.228639 6 C pz + 121 -2.170217 5 C d -1 167 -2.170217 6 C d -1 + 109 1.206639 5 C pz 155 -1.206639 6 C pz + 13 -0.970356 1 H pz 36 -0.970356 2 H pz + 59 0.970356 3 H pz 82 0.970356 4 H pz + + Vector 52 Occ=0.000000D+00 E= 6.448119D-01 Symmetry=b1g + MO Center= -2.7D-11, 1.6D-12, 1.1D-15, r^2= 8.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 76.651749 1 H s 26 -76.651749 2 H s + 49 -76.651749 3 H s 72 76.651749 4 H s + 120 -30.671960 5 C d -2 166 -30.671960 6 C d -2 + 104 -20.182172 5 C px 150 20.182172 6 C px + 11 -14.309029 1 H px 34 -14.309029 2 H px + + Vector 53 Occ=0.000000D+00 E= 6.744531D-01 Symmetry=ag + MO Center= -6.5D-13, 7.2D-12, 3.9D-17, r^2= 6.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 11.688655 5 C s 142 11.688655 6 C s + 124 7.676071 5 C d 2 170 7.676071 6 C d 2 + 105 4.602148 5 C py 151 -4.602148 6 C py + 3 -4.369524 1 H s 26 -4.369524 2 H s + 49 -4.369524 3 H s 72 -4.369524 4 H s + + Vector 54 Occ=0.000000D+00 E= 6.927754D-01 Symmetry=b3u + MO Center= 1.6D-13, 4.7D-12, 3.2D-15, r^2= 8.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 7.216424 1 H s 26 -7.216424 2 H s + 49 7.216424 3 H s 72 -7.216424 4 H s + 104 -4.993069 5 C px 150 -4.993069 6 C px + 12 -3.379224 1 H py 35 3.379224 2 H py + 58 3.379224 3 H py 81 -3.379224 4 H py + + Vector 55 Occ=0.000000D+00 E= 7.181933D-01 Symmetry=b3u + MO Center= 1.0D-12, 3.3D-13, -2.4D-14, r^2= 7.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 14.837799 1 H s 26 -14.837799 2 H s + 49 14.837799 3 H s 72 -14.837799 4 H s + 104 -12.954857 5 C px 150 -12.954857 6 C px + 120 -6.432303 5 C d -2 166 6.432303 6 C d -2 + 11 -2.438918 1 H px 34 -2.438918 2 H px + + Vector 56 Occ=0.000000D+00 E= 7.218794D-01 Symmetry=b2g + MO Center= 3.6D-14, 5.7D-15, 2.2D-14, r^2= 4.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 118 0.870986 5 C d 1 164 0.870986 6 C d 1 + 22 0.466604 1 H d 1 45 0.466604 2 H d 1 + 68 0.466604 3 H d 1 91 0.466604 4 H d 1 + 123 -0.447791 5 C d 1 169 -0.447791 6 C d 1 + 20 -0.204264 1 H d -1 43 0.204264 2 H d -1 + + Vector 57 Occ=0.000000D+00 E= 7.559092D-01 Symmetry=b2u + MO Center= 5.4D-12, 7.5D-12, -2.1D-15, r^2= 7.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 16.202263 5 C s 142 -16.202263 6 C s + 105 13.300659 5 C py 151 13.300659 6 C py + 3 -12.359287 1 H s 26 -12.359287 2 H s + 49 12.359287 3 H s 72 12.359287 4 H s + 11 4.014298 1 H px 34 -4.014298 2 H px + + Vector 58 Occ=0.000000D+00 E= 7.793969D-01 Symmetry=b1u + MO Center= 1.1D-14, -1.9D-13, -1.9D-15, r^2= 4.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 -0.637735 5 C pz 152 -0.637735 6 C pz + 13 0.631574 1 H pz 36 0.631574 2 H pz + 59 0.631574 3 H pz 82 0.631574 4 H pz + 116 -0.597054 5 C d -1 162 0.597054 6 C d -1 + 121 0.543336 5 C d -1 167 -0.543336 6 C d -1 + + Vector 59 Occ=0.000000D+00 E= 7.865207D-01 Symmetry=b2u + MO Center= -8.2D-11, -5.9D-11, 2.4D-15, r^2= 7.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 22.796852 5 C s 142 -22.796852 6 C s + 105 -21.665126 5 C py 151 -21.665126 6 C py + 97 -14.930488 5 C s 143 14.930488 6 C s + 3 12.452993 1 H s 26 12.452993 2 H s + 49 -12.452993 3 H s 72 -12.452993 4 H s + + Vector 60 Occ=0.000000D+00 E= 7.876274D-01 Symmetry=au + MO Center= 4.4D-14, 3.2D-13, 4.0D-15, r^2= 6.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 123 4.807967 5 C d 1 169 -4.807967 6 C d 1 + 13 1.677225 1 H pz 36 -1.677225 2 H pz + 59 -1.677225 3 H pz 82 1.677225 4 H pz + 133 1.351189 5 C f -2 179 1.351189 6 C f -2 + 22 -0.918850 1 H d 1 45 -0.918850 2 H d 1 + + Vector 61 Occ=0.000000D+00 E= 7.915853D-01 Symmetry=ag + MO Center= -6.5D-12, 5.1D-11, 7.4D-15, r^2= 7.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 25.682254 5 C s 142 25.682254 6 C s + 3 -10.755720 1 H s 26 -10.755720 2 H s + 49 -10.755720 3 H s 72 -10.755720 4 H s + 105 6.343653 5 C py 151 -6.343653 6 C py + 2 -3.719989 1 H s 25 -3.719989 2 H s + + Vector 62 Occ=0.000000D+00 E= 8.081660D-01 Symmetry=b3u + MO Center= 2.7D-13, -1.9D-13, 4.2D-16, r^2= 5.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 6.797902 1 H s 26 -6.797902 2 H s + 49 6.797902 3 H s 72 -6.797902 4 H s + 104 -4.167939 5 C px 150 -4.167939 6 C px + 11 -2.930145 1 H px 34 -2.930145 2 H px + 57 -2.930145 3 H px 80 -2.930145 4 H px + + Vector 63 Occ=0.000000D+00 E= 8.099782D-01 Symmetry=ag + MO Center= -2.2D-13, -1.2D-11, -5.1D-15, r^2= 6.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 17.157266 5 C s 142 17.157266 6 C s + 3 -8.923709 1 H s 26 -8.923709 2 H s + 49 -8.923709 3 H s 72 -8.923709 4 H s + 97 5.045535 5 C s 143 5.045535 6 C s + 105 3.892013 5 C py 151 -3.892013 6 C py + + Vector 64 Occ=0.000000D+00 E= 8.293102D-01 Symmetry=b1u + MO Center= 1.8D-14, -5.0D-14, -5.3D-16, r^2= 5.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 2.724131 5 C pz 152 2.724131 6 C pz + 121 1.630203 5 C d -1 167 -1.630203 6 C d -1 + 13 -1.442482 1 H pz 36 -1.442482 2 H pz + 59 -1.442482 3 H pz 82 -1.442482 4 H pz + 22 -0.656638 1 H d 1 45 0.656638 2 H d 1 + + Vector 65 Occ=0.000000D+00 E= 8.309116D-01 Symmetry=b1g + MO Center= 3.2D-11, -1.5D-12, 1.4D-14, r^2= 7.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 87.571396 1 H s 26 -87.571396 2 H s + 49 -87.571396 3 H s 72 87.571396 4 H s + 120 -31.963356 5 C d -2 166 -31.963356 6 C d -2 + 104 -30.138433 5 C px 150 30.138433 6 C px + 11 -16.029712 1 H px 34 -16.029712 2 H px + + Vector 66 Occ=0.000000D+00 E= 8.404699D-01 Symmetry=b3g + MO Center= -1.8D-13, 1.6D-13, 1.4D-15, r^2= 6.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 2.873236 5 C pz 152 -2.873236 6 C pz + 109 1.369776 5 C pz 155 -1.369776 6 C pz + 116 1.037114 5 C d -1 162 1.037114 6 C d -1 + 13 -1.002169 1 H pz 36 -1.002169 2 H pz + 59 1.002169 3 H pz 82 1.002169 4 H pz + + Vector 67 Occ=0.000000D+00 E= 8.750228D-01 Symmetry=b2g + MO Center= 4.0D-14, -5.6D-13, -3.5D-16, r^2= 5.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 13 2.251335 1 H pz 36 -2.251335 2 H pz + 59 2.251335 3 H pz 82 -2.251335 4 H pz + 123 1.996209 5 C d 1 169 1.996209 6 C d 1 + 20 -0.714123 1 H d -1 43 0.714123 2 H d -1 + 66 0.714123 3 H d -1 89 -0.714123 4 H d -1 + + Vector 68 Occ=0.000000D+00 E= 8.768530D-01 Symmetry=b2u + MO Center= 2.1D-14, 6.1D-12, -6.1D-16, r^2= 6.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 32.949868 5 C s 142 -32.949868 6 C s + 97 30.004520 5 C s 143 -30.004520 6 C s + 3 -11.097851 1 H s 26 -11.097851 2 H s + 49 11.097851 3 H s 72 11.097851 4 H s + 108 -6.298868 5 C py 154 -6.298868 6 C py + + Vector 69 Occ=0.000000D+00 E= 8.862319D-01 Symmetry=b3u + MO Center= 5.0D-12, 1.2D-13, -1.1D-15, r^2= 6.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 9.450676 1 H s 26 -9.450676 2 H s + 49 9.450676 3 H s 72 -9.450676 4 H s + 104 -6.184869 5 C px 150 -6.184869 6 C px + 120 -3.164408 5 C d -2 166 3.164408 6 C d -2 + 11 -2.842368 1 H px 34 -2.842368 2 H px + + Vector 70 Occ=0.000000D+00 E= 8.930242D-01 Symmetry=ag + MO Center= -3.6D-13, 7.9D-13, 2.7D-16, r^2= 4.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 5.302870 5 C s 142 5.302870 6 C s + 3 -3.067525 1 H s 26 -3.067525 2 H s + 49 -3.067525 3 H s 72 -3.067525 4 H s + 97 2.292625 5 C s 143 2.292625 6 C s + 124 1.782211 5 C d 2 170 1.782211 6 C d 2 + + Vector 71 Occ=0.000000D+00 E= 9.542365D-01 Symmetry=b1g + MO Center= 2.0D-11, 3.9D-12, -1.2D-14, r^2= 6.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 72.378559 1 H s 26 -72.378559 2 H s + 49 -72.378559 3 H s 72 72.378559 4 H s + 120 -43.120787 5 C d -2 166 -43.120787 6 C d -2 + 11 -11.728404 1 H px 34 -11.728404 2 H px + 57 11.728404 3 H px 80 11.728404 4 H px + + Vector 72 Occ=0.000000D+00 E= 9.546307D-01 Symmetry=b3u + MO Center= 1.1D-13, -1.7D-12, 4.4D-16, r^2= 6.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 104 -1.178257 5 C px 150 -1.178257 6 C px + 101 1.166948 5 C px 147 1.166948 6 C px + 138 -1.101687 5 C f 3 184 -1.101687 6 C f 3 + 120 1.068940 5 C d -2 166 -1.068940 6 C d -2 + 19 -1.010245 1 H d -2 42 -1.010245 2 H d -2 + + Vector 73 Occ=0.000000D+00 E= 9.613116D-01 Symmetry=b2g + MO Center= 2.8D-14, 5.9D-14, -7.5D-16, r^2= 5.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 22 0.942200 1 H d 1 45 0.942200 2 H d 1 + 68 0.942200 3 H d 1 91 0.942200 4 H d 1 + 13 0.576658 1 H pz 36 -0.576658 2 H pz + 59 0.576658 3 H pz 82 -0.576658 4 H pz + 10 0.428724 1 H pz 33 -0.428724 2 H pz + + Vector 74 Occ=0.000000D+00 E= 9.626514D-01 Symmetry=b3g + MO Center= 8.0D-14, -1.9D-13, -1.2D-16, r^2= 6.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 121 3.967334 5 C d -1 167 3.967334 6 C d -1 + 106 -2.448393 5 C pz 152 2.448393 6 C pz + 13 -2.341926 1 H pz 36 -2.341926 2 H pz + 59 2.341926 3 H pz 82 2.341926 4 H pz + 116 1.200938 5 C d -1 162 1.200938 6 C d -1 + + Vector 75 Occ=0.000000D+00 E= 9.807345D-01 Symmetry=b2u + MO Center= 8.2D-13, 4.4D-12, -1.5D-15, r^2= 7.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 40.461202 5 C s 142 -40.461202 6 C s + 97 22.237170 5 C s 143 -22.237170 6 C s + 105 -13.977848 5 C py 151 -13.977848 6 C py + 108 -4.261610 5 C py 154 -4.261610 6 C py + 2 -3.673410 1 H s 25 -3.673410 2 H s + + Vector 76 Occ=0.000000D+00 E= 9.962738D-01 Symmetry=au + MO Center= 5.0D-13, 1.8D-13, -8.1D-16, r^2= 5.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 123 2.319801 5 C d 1 169 -2.319801 6 C d 1 + 13 1.518737 1 H pz 36 -1.518737 2 H pz + 59 -1.518737 3 H pz 82 1.518737 4 H pz + 20 -0.864994 1 H d -1 43 0.864994 2 H d -1 + 66 -0.864994 3 H d -1 89 0.864994 4 H d -1 + + Vector 77 Occ=0.000000D+00 E= 1.005420D+00 Symmetry=b2u + MO Center= -8.1D-13, 6.6D-12, 5.6D-17, r^2= 6.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 -14.438388 5 C py 151 -14.438388 6 C py + 96 13.980475 5 C s 142 -13.980475 6 C s + 3 9.874282 1 H s 26 9.874282 2 H s + 49 -9.874282 3 H s 72 -9.874282 4 H s + 124 -8.227329 5 C d 2 170 8.227329 6 C d 2 + + Vector 78 Occ=0.000000D+00 E= 1.012841D+00 Symmetry=b1u + MO Center= -3.2D-14, 3.8D-14, -7.0D-15, r^2= 5.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 1.147020 5 C pz 152 1.147020 6 C pz + 20 0.888062 1 H d -1 43 0.888062 2 H d -1 + 66 -0.888062 3 H d -1 89 -0.888062 4 H d -1 + 103 0.823431 5 C pz 149 0.823431 6 C pz + 13 -0.663923 1 H pz 36 -0.663923 2 H pz + + Vector 79 Occ=0.000000D+00 E= 1.021600D+00 Symmetry=ag + MO Center= 3.7D-13, -5.5D-12, 6.6D-15, r^2= 6.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 13.712463 5 C s 142 13.712463 6 C s + 3 -5.624192 1 H s 26 -5.624192 2 H s + 49 -5.624192 3 H s 72 -5.624192 4 H s + 124 3.924232 5 C d 2 170 3.924232 6 C d 2 + 12 3.225287 1 H py 35 3.225287 2 H py + + Vector 80 Occ=0.000000D+00 E= 1.036269D+00 Symmetry=b1g + MO Center= 3.8D-12, -1.0D-13, 4.1D-16, r^2= 8.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 104 16.936523 5 C px 150 -16.936523 6 C px + 120 -6.632609 5 C d -2 166 -6.632609 6 C d -2 + 107 5.420780 5 C px 153 -5.420780 6 C px + 4 -2.833739 1 H s 27 2.833739 2 H s + 50 2.833739 3 H s 73 -2.833739 4 H s + + Vector 81 Occ=0.000000D+00 E= 1.107246D+00 Symmetry=au + MO Center= -9.0D-13, 1.3D-13, -4.6D-15, r^2= 5.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 123 3.746513 5 C d 1 169 -3.746513 6 C d 1 + 13 2.801727 1 H pz 36 -2.801727 2 H pz + 59 -2.801727 3 H pz 82 2.801727 4 H pz + 22 0.833143 1 H d 1 45 0.833143 2 H d 1 + 68 -0.833143 3 H d 1 91 -0.833143 4 H d 1 + + Vector 82 Occ=0.000000D+00 E= 1.151976D+00 Symmetry=ag + MO Center= 4.0D-14, 5.2D-12, -1.5D-16, r^2= 5.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 8.515628 5 C s 142 8.515628 6 C s + 105 6.629883 5 C py 151 -6.629883 6 C py + 3 -4.277571 1 H s 26 -4.277571 2 H s + 49 -4.277571 3 H s 72 -4.277571 4 H s + 97 2.040236 5 C s 143 2.040236 6 C s + + Vector 83 Occ=0.000000D+00 E= 1.173532D+00 Symmetry=b2u + MO Center= -4.5D-11, -1.6D-12, 3.0D-16, r^2= 6.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 28.320394 5 C s 142 -28.320394 6 C s + 105 -23.265868 5 C py 151 -23.265868 6 C py + 97 -15.067916 5 C s 143 15.067916 6 C s + 3 14.054253 1 H s 26 14.054253 2 H s + 49 -14.054253 3 H s 72 -14.054253 4 H s + + Vector 84 Occ=0.000000D+00 E= 1.219534D+00 Symmetry=b1g + MO Center= 4.7D-11, 2.6D-12, 3.0D-15, r^2= 6.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 63.365796 1 H s 26 -63.365796 2 H s + 49 -63.365796 3 H s 72 63.365796 4 H s + 120 -26.675021 5 C d -2 166 -26.675021 6 C d -2 + 104 -17.399643 5 C px 150 17.399643 6 C px + 11 -11.673443 1 H px 34 -11.673443 2 H px + + Vector 85 Occ=0.000000D+00 E= 1.236757D+00 Symmetry=b1u + MO Center= 2.7D-14, -1.3D-13, 1.2D-16, r^2= 3.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 121 0.787205 5 C d -1 167 -0.787205 6 C d -1 + 135 0.769103 5 C f 0 181 0.769103 6 C f 0 + 22 -0.623858 1 H d 1 45 0.623858 2 H d 1 + 68 -0.623858 3 H d 1 91 0.623858 4 H d 1 + 106 0.525770 5 C pz 152 0.525770 6 C pz + + Vector 86 Occ=0.000000D+00 E= 1.297398D+00 Symmetry=b3g + MO Center= -3.2D-14, -2.7D-14, 6.3D-16, r^2= 4.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 137 1.483834 5 C f 2 183 -1.483834 6 C f 2 + 116 1.208720 5 C d -1 162 1.208720 6 C d -1 + 20 1.168072 1 H d -1 43 1.168072 2 H d -1 + 66 1.168072 3 H d -1 89 1.168072 4 H d -1 + 106 1.161731 5 C pz 152 -1.161731 6 C pz + + Vector 87 Occ=0.000000D+00 E= 1.303847D+00 Symmetry=ag + MO Center= 3.1D-13, 2.1D-12, 6.8D-17, r^2= 4.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 6.310080 5 C s 142 6.310080 6 C s + 2 -2.058177 1 H s 25 -2.058177 2 H s + 48 -2.058177 3 H s 71 -2.058177 4 H s + 3 -1.834065 1 H s 26 -1.834065 2 H s + 49 -1.834065 3 H s 72 -1.834065 4 H s + + Vector 88 Occ=0.000000D+00 E= 1.334906D+00 Symmetry=b3u + MO Center= 4.5D-13, -1.3D-13, -3.1D-16, r^2= 4.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 120 2.951620 5 C d -2 166 -2.951620 6 C d -2 + 104 2.710331 5 C px 150 2.710331 6 C px + 3 -2.043909 1 H s 26 2.043909 2 H s + 49 -2.043909 3 H s 72 2.043909 4 H s + 136 -1.010788 5 C f 1 182 -1.010788 6 C f 1 + + Vector 89 Occ=0.000000D+00 E= 1.397196D+00 Symmetry=b3g + MO Center= 2.9D-13, 6.6D-13, 3.2D-15, r^2= 4.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 7.073965 5 C pz 152 -7.073965 6 C pz + 103 1.757465 5 C pz 149 -1.757465 6 C pz + 116 -1.355295 5 C d -1 162 -1.355295 6 C d -1 + 121 -1.347775 5 C d -1 167 -1.347775 6 C d -1 + 137 -1.232825 5 C f 2 183 1.232825 6 C f 2 + + Vector 90 Occ=0.000000D+00 E= 1.406964D+00 Symmetry=b2u + MO Center= 6.4D-13, -2.1D-12, -4.2D-15, r^2= 5.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 27.988286 5 C py 151 27.988286 6 C py + 96 -17.107791 5 C s 142 17.107791 6 C s + 3 -13.664034 1 H s 26 -13.664034 2 H s + 49 13.664034 3 H s 72 13.664034 4 H s + 124 5.473840 5 C d 2 170 -5.473840 6 C d 2 + + Vector 91 Occ=0.000000D+00 E= 1.408262D+00 Symmetry=b1g + MO Center= -5.6D-12, 5.1D-14, 3.6D-17, r^2= 5.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 24.025351 1 H s 26 -24.025351 2 H s + 49 -24.025351 3 H s 72 24.025351 4 H s + 104 -12.577827 5 C px 150 12.577827 6 C px + 120 -7.690649 5 C d -2 166 -7.690649 6 C d -2 + 115 3.592450 5 C d -2 161 3.592450 6 C d -2 + + Vector 92 Occ=0.000000D+00 E= 1.427378D+00 Symmetry=b2g + MO Center= 4.0D-14, -3.0D-14, -1.5D-15, r^2= 4.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 13 1.181130 1 H pz 36 -1.181130 2 H pz + 59 1.181130 3 H pz 82 -1.181130 4 H pz + 123 0.896550 5 C d 1 169 0.896550 6 C d 1 + 20 -0.876496 1 H d -1 43 0.876496 2 H d -1 + 66 0.876496 3 H d -1 89 -0.876496 4 H d -1 + + Vector 93 Occ=0.000000D+00 E= 1.484936D+00 Symmetry=b1u + MO Center= -2.9D-14, -8.3D-13, -1.1D-15, r^2= 4.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 3.223253 5 C pz 152 3.223253 6 C pz + 10 -1.292936 1 H pz 33 -1.292936 2 H pz + 56 -1.292936 3 H pz 79 -1.292936 4 H pz + 13 -1.278857 1 H pz 36 -1.278857 2 H pz + 59 -1.278857 3 H pz 82 -1.278857 4 H pz + + Vector 94 Occ=0.000000D+00 E= 1.505755D+00 Symmetry=b3u + MO Center= 7.0D-12, 2.3D-12, 1.6D-15, r^2= 4.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 17.558735 1 H s 26 -17.558735 2 H s + 49 17.558735 3 H s 72 -17.558735 4 H s + 104 -16.663772 5 C px 150 -16.663772 6 C px + 2 6.515990 1 H s 25 -6.515990 2 H s + 48 6.515990 3 H s 71 -6.515990 4 H s + + Vector 95 Occ=0.000000D+00 E= 1.545224D+00 Symmetry=ag + MO Center= -8.0D-12, -1.8D-12, 5.5D-16, r^2= 4.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 16.476449 5 C s 142 16.476449 6 C s + 105 8.202946 5 C py 151 -8.202946 6 C py + 3 -5.796989 1 H s 26 -5.796989 2 H s + 49 -5.796989 3 H s 72 -5.796989 4 H s + 124 5.268525 5 C d 2 170 5.268525 6 C d 2 + + Vector 96 Occ=0.000000D+00 E= 1.579696D+00 Symmetry=b3u + MO Center= -1.5D-13, 3.3D-14, -6.4D-17, r^2= 4.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 120 3.104215 5 C d -2 166 -3.104215 6 C d -2 + 12 -2.175757 1 H py 35 2.175757 2 H py + 58 2.175757 3 H py 81 -2.175757 4 H py + 101 -1.445741 5 C px 147 -1.445741 6 C px + 9 -1.037369 1 H py 32 1.037369 2 H py + + Vector 97 Occ=0.000000D+00 E= 1.595339D+00 Symmetry=b1g + MO Center= -5.7D-13, -2.0D-12, 5.9D-16, r^2= 4.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 104 18.785507 5 C px 150 -18.785507 6 C px + 3 -12.047539 1 H s 26 12.047539 2 H s + 49 12.047539 3 H s 72 -12.047539 4 H s + 2 -4.433912 1 H s 25 4.433912 2 H s + 48 4.433912 3 H s 71 -4.433912 4 H s + + Vector 98 Occ=0.000000D+00 E= 1.601870D+00 Symmetry=b1u + MO Center= -2.8D-14, 3.8D-13, -1.8D-15, r^2= 3.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 137 1.969155 5 C f 2 183 1.969155 6 C f 2 + 103 1.224151 5 C pz 149 1.224151 6 C pz + 20 0.801587 1 H d -1 43 0.801587 2 H d -1 + 66 -0.801587 3 H d -1 89 -0.801587 4 H d -1 + 10 -0.691730 1 H pz 33 -0.691730 2 H pz + + Vector 99 Occ=0.000000D+00 E= 1.610774D+00 Symmetry=b2u + MO Center= -7.3D-12, -1.2D-11, -1.7D-14, r^2= 5.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 31.497283 5 C s 142 -31.497283 6 C s + 3 -13.765455 1 H s 26 -13.765455 2 H s + 49 13.765455 3 H s 72 13.765455 4 H s + 97 13.302946 5 C s 143 -13.302946 6 C s + 105 8.967091 5 C py 151 8.967091 6 C py + + Vector 100 Occ=0.000000D+00 E= 1.643497D+00 Symmetry=b3g + MO Center= -1.2D-13, -5.9D-14, 1.7D-14, r^2= 4.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 5.315641 5 C pz 152 -5.315641 6 C pz + 121 -2.948339 5 C d -1 167 -2.948339 6 C d -1 + 116 -1.954867 5 C d -1 162 -1.954867 6 C d -1 + 135 -1.393789 5 C f 0 181 1.393789 6 C f 0 + 137 0.985428 5 C f 2 183 -0.985428 6 C f 2 + + Vector 101 Occ=0.000000D+00 E= 1.677931D+00 Symmetry=ag + MO Center= -1.4D-13, 9.6D-12, 2.1D-15, r^2= 5.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 38.582062 5 C s 142 38.582062 6 C s + 3 -14.593483 1 H s 26 -14.593483 2 H s + 49 -14.593483 3 H s 72 -14.593483 4 H s + 2 -11.480835 1 H s 25 -11.480835 2 H s + 48 -11.480835 3 H s 71 -11.480835 4 H s + + Vector 102 Occ=0.000000D+00 E= 1.724719D+00 Symmetry=b2u + MO Center= -2.9D-14, 1.2D-12, 7.2D-16, r^2= 4.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 41.221382 5 C s 142 -41.221382 6 C s + 97 18.996188 5 C s 143 -18.996188 6 C s + 105 -16.890785 5 C py 151 -16.890785 6 C py + 102 -3.755569 5 C py 108 -3.754472 5 C py + 148 -3.755569 6 C py 154 -3.754472 6 C py + + Vector 103 Occ=0.000000D+00 E= 1.746638D+00 Symmetry=b3u + MO Center= 3.4D-12, -8.6D-13, 3.3D-16, r^2= 4.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 7.299056 1 H s 26 -7.299056 2 H s + 49 7.299056 3 H s 72 -7.299056 4 H s + 2 5.400744 1 H s 25 -5.400744 2 H s + 48 5.400744 3 H s 71 -5.400744 4 H s + 104 -4.671640 5 C px 150 -4.671640 6 C px + + Vector 104 Occ=0.000000D+00 E= 1.868382D+00 Symmetry=b2u + MO Center= -7.9D-13, 8.8D-13, -2.9D-16, r^2= 4.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 22.571769 5 C py 151 22.571769 6 C py + 3 -17.007739 1 H s 26 -17.007739 2 H s + 49 17.007739 3 H s 72 17.007739 4 H s + 97 16.090844 5 C s 143 -16.090844 6 C s + 124 10.494075 5 C d 2 170 -10.494075 6 C d 2 + + Vector 105 Occ=0.000000D+00 E= 1.868942D+00 Symmetry=au + MO Center= 2.7D-14, 1.2D-12, -3.2D-15, r^2= 4.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 133 4.496980 5 C f -2 179 4.496980 6 C f -2 + 123 4.383421 5 C d 1 169 -4.383421 6 C d 1 + 13 2.166247 1 H pz 36 -2.166247 2 H pz + 59 -2.166247 3 H pz 82 2.166247 4 H pz + 10 -1.773523 1 H pz 33 1.773523 2 H pz + + Vector 106 Occ=0.000000D+00 E= 1.884921D+00 Symmetry=ag + MO Center= -2.8D-12, -1.2D-12, 2.9D-16, r^2= 4.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 11.470025 5 C s 142 11.470025 6 C s + 2 -3.996747 1 H s 25 -3.996747 2 H s + 48 -3.996747 3 H s 71 -3.996747 4 H s + 124 4.005699 5 C d 2 170 4.005699 6 C d 2 + 3 -3.616339 1 H s 26 -3.616339 2 H s + + Vector 107 Occ=0.000000D+00 E= 1.887787D+00 Symmetry=b2g + MO Center= -5.4D-14, -5.9D-12, -8.4D-17, r^2= 4.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 118 2.942375 5 C d 1 164 2.942375 6 C d 1 + 10 2.496840 1 H pz 33 -2.496840 2 H pz + 56 2.496840 3 H pz 79 -2.496840 4 H pz + 133 -1.783450 5 C f -2 179 1.783450 6 C f -2 + 22 1.007636 1 H d 1 45 1.007636 2 H d 1 + + Vector 108 Occ=0.000000D+00 E= 1.905095D+00 Symmetry=au + MO Center= 1.0D-12, 4.8D-12, 6.6D-15, r^2= 4.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 118 2.637006 5 C d 1 164 -2.637006 6 C d 1 + 10 2.332248 1 H pz 33 -2.332248 2 H pz + 56 -2.332248 3 H pz 79 2.332248 4 H pz + 133 -1.225373 5 C f -2 179 -1.225373 6 C f -2 + 22 0.957245 1 H d 1 45 0.957245 2 H d 1 + + Vector 109 Occ=0.000000D+00 E= 1.919690D+00 Symmetry=b1g + MO Center= 5.8D-12, -1.1D-12, -7.1D-15, r^2= 4.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 46.218007 1 H s 26 -46.218007 2 H s + 49 -46.218007 3 H s 72 46.218007 4 H s + 104 -29.422509 5 C px 150 29.422509 6 C px + 120 -13.844738 5 C d -2 166 -13.844738 6 C d -2 + 11 -7.845751 1 H px 34 -7.845751 2 H px + + Vector 110 Occ=0.000000D+00 E= 2.045912D+00 Symmetry=b1g + MO Center= -6.4D-12, -1.1D-11, 3.1D-15, r^2= 5.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 53.101912 1 H s 26 -53.101912 2 H s + 49 -53.101912 3 H s 72 53.101912 4 H s + 120 -27.271036 5 C d -2 166 -27.271036 6 C d -2 + 115 -12.249277 5 C d -2 161 -12.249277 6 C d -2 + 2 11.283859 1 H s 25 -11.283859 2 H s + + Vector 111 Occ=0.000000D+00 E= 2.073585D+00 Symmetry=b2u + MO Center= 1.2D-11, 9.7D-13, 4.2D-17, r^2= 4.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 17.110766 5 C s 142 -17.110766 6 C s + 105 -12.538156 5 C py 151 -12.538156 6 C py + 124 -3.920783 5 C d 2 170 3.920783 6 C d 2 + 3 3.594833 1 H s 26 3.594833 2 H s + 49 -3.594833 3 H s 72 -3.594833 4 H s + + Vector 112 Occ=0.000000D+00 E= 2.099982D+00 Symmetry=b3u + MO Center= -3.0D-13, 1.0D-11, 3.4D-16, r^2= 4.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 104 -7.619859 5 C px 150 -7.619859 6 C px + 3 7.238603 1 H s 26 -7.238603 2 H s + 49 7.238603 3 H s 72 -7.238603 4 H s + 138 -7.173109 5 C f 3 184 -7.173109 6 C f 3 + 2 4.894330 1 H s 25 -4.894330 2 H s + + Vector 113 Occ=0.000000D+00 E= 2.142873D+00 Symmetry=b3g + MO Center= -1.2D-12, 1.1D-13, 5.2D-16, r^2= 4.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 116 4.857350 5 C d -1 162 4.857350 6 C d -1 + 137 2.931398 5 C f 2 183 -2.931398 6 C f 2 + 10 -2.777954 1 H pz 33 -2.777954 2 H pz + 56 2.777954 3 H pz 79 2.777954 4 H pz + 13 -1.397570 1 H pz 36 -1.397570 2 H pz + + Vector 114 Occ=0.000000D+00 E= 2.216154D+00 Symmetry=b1g + MO Center= 1.1D-13, 4.2D-13, 5.4D-17, r^2= 3.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 2 9.885235 1 H s 25 -9.885235 2 H s + 48 -9.885235 3 H s 71 9.885235 4 H s + 115 -8.973294 5 C d -2 161 -8.973294 6 C d -2 + 104 -7.132870 5 C px 150 7.132870 6 C px + 120 4.805043 5 C d -2 166 4.805043 6 C d -2 + + Vector 115 Occ=0.000000D+00 E= 2.296798D+00 Symmetry=ag + MO Center= -3.1D-13, 8.3D-14, -1.8D-16, r^2= 4.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 16.387685 5 C s 142 16.387685 6 C s + 3 -6.027764 1 H s 26 -6.027764 2 H s + 49 -6.027764 3 H s 72 -6.027764 4 H s + 105 5.339396 5 C py 151 -5.339396 6 C py + 2 -5.247612 1 H s 25 -5.247612 2 H s + + Vector 116 Occ=0.000000D+00 E= 2.388810D+00 Symmetry=b2u + MO Center= -1.9D-12, 6.6D-13, -1.0D-17, r^2= 3.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 8.841544 5 C py 151 8.841544 6 C py + 119 -6.664046 5 C d 2 165 6.664046 6 C d 2 + 102 -4.865024 5 C py 148 -4.865024 6 C py + 132 4.375223 5 C f -3 178 4.375223 6 C f -3 + 96 4.234239 5 C s 142 -4.234239 6 C s + + Vector 117 Occ=0.000000D+00 E= 2.561066D+00 Symmetry=b1u + MO Center= -3.7D-14, 6.5D-14, -2.5D-16, r^2= 2.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 103 2.033262 5 C pz 149 2.033262 6 C pz + 10 -0.917137 1 H pz 33 -0.917137 2 H pz + 56 -0.917137 3 H pz 79 -0.917137 4 H pz + 106 0.900137 5 C pz 152 0.900137 6 C pz + 100 -0.804730 5 C pz 146 -0.804730 6 C pz + + Vector 118 Occ=0.000000D+00 E= 2.714619D+00 Symmetry=ag + MO Center= -5.2D-12, -8.9D-14, 9.3D-17, r^2= 1.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 102 1.015207 5 C py 148 -1.015207 6 C py + 97 0.804844 5 C s 143 0.804844 6 C s + 105 0.731083 5 C py 151 -0.731083 6 C py + 12 -0.603840 1 H py 35 -0.603840 2 H py + 58 0.603840 3 H py 81 0.603840 4 H py + + Vector 119 Occ=0.000000D+00 E= 2.719795D+00 Symmetry=b3u + MO Center= 5.5D-12, 1.5D-12, -1.9D-16, r^2= 2.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 7.400286 1 H s 26 -7.400286 2 H s + 49 7.400286 3 H s 72 -7.400286 4 H s + 104 -6.597812 5 C px 150 -6.597812 6 C px + 2 4.198131 1 H s 25 -4.198131 2 H s + 48 4.198131 3 H s 71 -4.198131 4 H s + + Vector 120 Occ=0.000000D+00 E= 2.918378D+00 Symmetry=b3g + MO Center= 9.2D-15, 8.1D-14, -1.9D-16, r^2= 1.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 103 1.989992 5 C pz 149 -1.989992 6 C pz + 106 1.053784 5 C pz 152 -1.053784 6 C pz + 137 -0.829129 5 C f 2 183 0.829129 6 C f 2 + 100 -0.693763 5 C pz 146 0.693763 6 C pz + 135 -0.654963 5 C f 0 181 0.654963 6 C f 0 + + Vector 121 Occ=0.000000D+00 E= 2.942708D+00 Symmetry=ag + MO Center= -2.0D-14, 4.0D-14, -7.5D-16, r^2= 1.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 132 1.275190 5 C f -3 178 -1.275190 6 C f -3 + 95 -0.989790 5 C s 141 -0.989790 6 C s + 94 -0.935591 5 C s 140 -0.935591 6 C s + 102 -0.896633 5 C py 148 0.896633 6 C py + 124 0.871030 5 C d 2 170 0.871030 6 C d 2 + + Vector 122 Occ=0.000000D+00 E= 2.951720D+00 Symmetry=b1u + MO Center= 3.7D-16, -1.8D-13, 7.4D-16, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 103 1.386599 5 C pz 149 1.386599 6 C pz + 137 0.927448 5 C f 2 183 0.927448 6 C f 2 + 116 0.842335 5 C d -1 162 -0.842335 6 C d -1 + 111 -0.679996 5 C d -1 157 0.679996 6 C d -1 + 10 -0.423184 1 H pz 33 -0.423184 2 H pz + + Vector 123 Occ=0.000000D+00 E= 2.976639D+00 Symmetry=b1g + MO Center= -5.9D-14, -9.9D-13, 1.2D-16, r^2= 2.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 104 6.876209 5 C px 150 -6.876209 6 C px + 120 -4.317257 5 C d -2 166 -4.317257 6 C d -2 + 3 2.407360 1 H s 26 -2.407360 2 H s + 49 -2.407360 3 H s 72 2.407360 4 H s + 115 -1.655042 5 C d -2 161 -1.655042 6 C d -2 + + Vector 124 Occ=0.000000D+00 E= 2.983830D+00 Symmetry=b2g + MO Center= -2.7D-14, -2.5D-14, 2.3D-16, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 118 1.242753 5 C d 1 164 1.242753 6 C d 1 + 113 -0.713913 5 C d 1 159 -0.713913 6 C d 1 + 10 0.509722 1 H pz 33 -0.509722 2 H pz + 56 0.509722 3 H pz 79 -0.509722 4 H pz + 133 -0.459312 5 C f -2 179 0.459312 6 C f -2 + + Vector 125 Occ=0.000000D+00 E= 3.056879D+00 Symmetry=b2u + MO Center= 6.3D-13, -2.7D-13, 1.2D-16, r^2= 3.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 8.473105 5 C py 151 8.473105 6 C py + 3 -3.678128 1 H s 26 -3.678128 2 H s + 49 3.678128 3 H s 72 3.678128 4 H s + 96 -3.490988 5 C s 132 3.492352 5 C f -3 + 142 3.490988 6 C s 178 3.492352 6 C f -3 + + Vector 126 Occ=0.000000D+00 E= 3.117573D+00 Symmetry=au + MO Center= -4.3D-14, -1.9D-14, -7.6D-16, r^2= 2.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 123 1.267890 5 C d 1 169 -1.267890 6 C d 1 + 118 -0.908613 5 C d 1 164 0.908613 6 C d 1 + 13 0.763207 1 H pz 36 -0.763207 2 H pz + 59 -0.763207 3 H pz 82 0.763207 4 H pz + 113 0.556388 5 C d 1 159 -0.556388 6 C d 1 + + Vector 127 Occ=0.000000D+00 E= 3.155321D+00 Symmetry=b2g + MO Center= 5.3D-14, 3.3D-14, 8.5D-16, r^2= 1.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 118 0.833932 5 C d 1 164 0.833932 6 C d 1 + 126 -0.796525 5 C f -2 172 0.796525 6 C f -2 + 10 0.640407 1 H pz 33 -0.640407 2 H pz + 56 0.640407 3 H pz 79 -0.640407 4 H pz + 22 0.373624 1 H d 1 45 0.373624 2 H d 1 + + Vector 128 Occ=0.000000D+00 E= 3.168746D+00 Symmetry=b1u + MO Center= -5.4D-14, 9.4D-14, -4.4D-17, r^2= 1.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 103 0.920499 5 C pz 149 0.920499 6 C pz + 106 0.718988 5 C pz 152 0.718988 6 C pz + 128 -0.661323 5 C f 0 174 -0.661323 6 C f 0 + 10 -0.614629 1 H pz 33 -0.614629 2 H pz + 56 -0.614629 3 H pz 79 -0.614629 4 H pz + + Vector 129 Occ=0.000000D+00 E= 3.173081D+00 Symmetry=b3u + MO Center= -6.5D-13, 3.4D-13, -8.2D-16, r^2= 2.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 104 -5.457251 5 C px 150 -5.457251 6 C px + 3 5.427088 1 H s 26 -5.427088 2 H s + 49 5.427088 3 H s 72 -5.427088 4 H s + 2 4.254454 1 H s 25 -4.254454 2 H s + 48 4.254454 3 H s 71 -4.254454 4 H s + + Vector 130 Occ=0.000000D+00 E= 3.263821D+00 Symmetry=ag + MO Center= 1.0D-12, -5.3D-12, 2.8D-16, r^2= 2.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 2.934854 5 C py 151 -2.934854 6 C py + 119 2.498214 5 C d 2 165 2.498214 6 C d 2 + 102 -2.039955 5 C py 148 2.039955 6 C py + 124 1.657250 5 C d 2 170 1.657250 6 C d 2 + 8 -1.045582 1 H px 31 1.045582 2 H px + + Vector 131 Occ=0.000000D+00 E= 3.294970D+00 Symmetry=b3g + MO Center= 8.8D-14, -1.3D-13, 7.1D-17, r^2= 2.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 3.556920 5 C pz 152 -3.556920 6 C pz + 103 2.487022 5 C pz 149 -2.487022 6 C pz + 116 -2.057573 5 C d -1 162 -2.057573 6 C d -1 + 137 -1.083664 5 C f 2 183 1.083664 6 C f 2 + 121 -0.838904 5 C d -1 167 -0.838904 6 C d -1 + + Vector 132 Occ=0.000000D+00 E= 3.302628D+00 Symmetry=b2u + MO Center= -3.3D-12, 4.9D-12, 6.0D-16, r^2= 2.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 31.371506 5 C s 142 -31.371506 6 C s + 105 -23.628958 5 C py 151 -23.628958 6 C py + 3 9.541568 1 H s 26 9.541568 2 H s + 49 -9.541568 3 H s 72 -9.541568 4 H s + 102 -6.997990 5 C py 148 -6.997990 6 C py + + Vector 133 Occ=0.000000D+00 E= 3.394283D+00 Symmetry=b1u + MO Center= -7.2D-15, -2.6D-14, 1.7D-16, r^2= 2.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 137 0.666533 5 C f 2 183 0.666533 6 C f 2 + 130 -0.524009 5 C f 2 176 -0.524009 6 C f 2 + 116 -0.427457 5 C d -1 162 0.427457 6 C d -1 + 111 0.354604 5 C d -1 121 0.353331 5 C d -1 + 157 -0.354604 6 C d -1 167 -0.353331 6 C d -1 + + Vector 134 Occ=0.000000D+00 E= 3.398186D+00 Symmetry=b3u + MO Center= 2.6D-14, -1.4D-13, 5.8D-17, r^2= 2.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 104 3.056784 5 C px 150 3.056784 6 C px + 3 -2.636132 1 H s 26 2.636132 2 H s + 49 -2.636132 3 H s 72 2.636132 4 H s + 101 1.756851 5 C px 147 1.756851 6 C px + 2 -1.020569 1 H s 25 1.020569 2 H s + + Vector 135 Occ=0.000000D+00 E= 3.417741D+00 Symmetry=ag + MO Center= -1.2D-13, 6.2D-13, 1.9D-16, r^2= 2.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 9.573990 5 C s 142 9.573990 6 C s + 2 -3.438129 1 H s 25 -3.438129 2 H s + 48 -3.438129 3 H s 71 -3.438129 4 H s + 3 -3.384096 1 H s 26 -3.384096 2 H s + 49 -3.384096 3 H s 72 -3.384096 4 H s + + Vector 136 Occ=0.000000D+00 E= 3.438142D+00 Symmetry=b3u + MO Center= -9.6D-14, 3.6D-12, 1.1D-16, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 9.174568 1 H s 26 -9.174568 2 H s + 49 9.174568 3 H s 72 -9.174568 4 H s + 104 -8.502788 5 C px 150 -8.502788 6 C px + 2 7.042162 1 H s 25 -7.042162 2 H s + 48 7.042162 3 H s 71 -7.042162 4 H s + + Vector 137 Occ=0.000000D+00 E= 3.486172D+00 Symmetry=b3g + MO Center= -5.2D-15, 1.1D-13, 1.9D-16, r^2= 2.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 116 3.835452 5 C d -1 162 3.835452 6 C d -1 + 106 -2.331781 5 C pz 152 2.331781 6 C pz + 103 -2.040555 5 C pz 149 2.040555 6 C pz + 121 0.764777 5 C d -1 167 0.764777 6 C d -1 + 130 0.691804 5 C f 2 176 -0.691804 6 C f 2 + + Vector 138 Occ=0.000000D+00 E= 3.528384D+00 Symmetry=ag + MO Center= 3.0D-13, -1.3D-12, 1.3D-16, r^2= 2.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 20.453021 5 C s 142 20.453021 6 C s + 2 -6.642540 1 H s 25 -6.642540 2 H s + 48 -6.642540 3 H s 71 -6.642540 4 H s + 3 -6.523789 1 H s 26 -6.523789 2 H s + 49 -6.523789 3 H s 72 -6.523789 4 H s + + Vector 139 Occ=0.000000D+00 E= 3.528767D+00 Symmetry=b1g + MO Center= 1.2D-12, -3.7D-12, 9.8D-16, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 28.733600 1 H s 26 -28.733600 2 H s + 49 -28.733600 3 H s 72 28.733600 4 H s + 104 -18.943742 5 C px 150 18.943742 6 C px + 2 10.369331 1 H s 25 -10.369331 2 H s + 48 -10.369331 3 H s 71 10.369331 4 H s + + Vector 140 Occ=0.000000D+00 E= 3.565814D+00 Symmetry=b2u + MO Center= -1.8D-13, 1.4D-13, -3.4D-16, r^2= 1.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 15.860446 5 C s 142 -15.860446 6 C s + 97 10.025750 5 C s 143 -10.025750 6 C s + 3 -4.850424 1 H s 26 -4.850424 2 H s + 49 4.850424 3 H s 72 4.850424 4 H s + 2 -4.818473 1 H s 25 -4.818473 2 H s + + Vector 141 Occ=0.000000D+00 E= 3.692240D+00 Symmetry=b2g + MO Center= 5.2D-15, 5.4D-14, 5.1D-17, r^2= 3.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 15 0.455936 1 H d -1 38 -0.455936 2 H d -1 + 61 -0.455936 3 H d -1 84 0.455936 4 H d -1 + 123 0.453570 5 C d 1 169 0.453570 6 C d 1 + 13 0.435720 1 H pz 36 -0.435720 2 H pz + 59 0.435720 3 H pz 82 -0.435720 4 H pz + + Vector 142 Occ=0.000000D+00 E= 3.693464D+00 Symmetry=b1g + MO Center= 1.4D-12, 4.3D-14, 5.4D-16, r^2= 2.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 23.394344 1 H s 26 -23.394344 2 H s + 49 -23.394344 3 H s 72 23.394344 4 H s + 104 -15.107710 5 C px 150 15.107710 6 C px + 120 -7.613443 5 C d -2 166 -7.613443 6 C d -2 + 115 -5.787825 5 C d -2 161 -5.787825 6 C d -2 + + Vector 143 Occ=0.000000D+00 E= 3.759431D+00 Symmetry=b3u + MO Center= -5.7D-14, -4.3D-13, 6.3D-17, r^2= 2.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 101 5.802096 5 C px 147 5.802096 6 C px + 2 -2.606416 1 H s 25 2.606416 2 H s + 48 -2.606416 3 H s 71 2.606416 4 H s + 9 1.948693 1 H py 32 -1.948693 2 H py + 55 -1.948693 3 H py 78 1.948693 4 H py + + Vector 144 Occ=0.000000D+00 E= 3.780095D+00 Symmetry=b2u + MO Center= -1.3D-12, 6.7D-13, -3.1D-16, r^2= 2.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 102 8.831045 5 C py 148 8.831045 6 C py + 119 5.408024 5 C d 2 165 -5.408024 6 C d 2 + 97 -5.268217 5 C s 143 5.268217 6 C s + 2 -3.911057 1 H s 25 -3.911057 2 H s + 48 3.911057 3 H s 71 3.911057 4 H s + + Vector 145 Occ=0.000000D+00 E= 3.794814D+00 Symmetry=au + MO Center= 1.5D-13, -7.4D-14, -1.4D-16, r^2= 2.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 118 2.270937 5 C d 1 164 -2.270937 6 C d 1 + 133 1.640530 5 C f -2 179 1.640530 6 C f -2 + 123 1.147635 5 C d 1 169 -1.147635 6 C d 1 + 13 0.731374 1 H pz 36 -0.731374 2 H pz + 59 -0.731374 3 H pz 82 0.731374 4 H pz + + Vector 146 Occ=0.000000D+00 E= 3.852083D+00 Symmetry=ag + MO Center= -4.8D-13, 5.8D-13, 4.8D-17, r^2= 2.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 4.846128 5 C s 142 4.846128 6 C s + 119 1.898343 5 C d 2 165 1.898343 6 C d 2 + 105 1.778794 5 C py 151 -1.778794 6 C py + 3 -1.747813 1 H s 26 -1.747813 2 H s + 49 -1.747813 3 H s 72 -1.747813 4 H s + + Vector 147 Occ=0.000000D+00 E= 3.919474D+00 Symmetry=b1g + MO Center= -2.4D-12, 6.8D-13, -7.5D-16, r^2= 2.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 17.555887 1 H s 26 -17.555887 2 H s + 49 -17.555887 3 H s 72 17.555887 4 H s + 120 -11.437520 5 C d -2 166 -11.437520 6 C d -2 + 104 4.370122 5 C px 150 -4.370122 6 C px + 101 2.903535 5 C px 147 -2.903535 6 C px + + Vector 148 Occ=0.000000D+00 E= 3.987905D+00 Symmetry=b3u + MO Center= 2.5D-13, -9.4D-13, -2.8D-17, r^2= 2.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 1.789591 1 H s 26 -1.789591 2 H s + 49 1.789591 3 H s 72 -1.789591 4 H s + 101 -1.771181 5 C px 147 -1.771181 6 C px + 2 1.664464 1 H s 25 -1.664464 2 H s + 48 1.664464 3 H s 71 -1.664464 4 H s + + Vector 149 Occ=0.000000D+00 E= 4.013923D+00 Symmetry=b3g + MO Center= -7.5D-13, -7.4D-14, -3.9D-16, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 116 1.638750 5 C d -1 162 1.638750 6 C d -1 + 106 -1.416280 5 C pz 152 1.416280 6 C pz + 121 1.353090 5 C d -1 167 1.353090 6 C d -1 + 13 -0.610881 1 H pz 36 -0.610881 2 H pz + 59 0.610881 3 H pz 82 0.610881 4 H pz + + Vector 150 Occ=0.000000D+00 E= 4.058863D+00 Symmetry=au + MO Center= 6.0D-13, 3.1D-14, -9.0D-17, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 10 0.870500 1 H pz 33 -0.870500 2 H pz + 56 -0.870500 3 H pz 79 0.870500 4 H pz + 123 0.761838 5 C d 1 169 -0.761838 6 C d 1 + 13 0.694815 1 H pz 36 -0.694815 2 H pz + 59 -0.694815 3 H pz 82 0.694815 4 H pz + + Vector 151 Occ=0.000000D+00 E= 4.060577D+00 Symmetry=b2u + MO Center= 3.7D-12, 5.6D-14, 3.2D-16, r^2= 2.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 12.453910 5 C py 151 12.453910 6 C py + 3 -7.562000 1 H s 26 -7.562000 2 H s + 49 7.562000 3 H s 72 7.562000 4 H s + 97 6.442575 5 C s 143 -6.442575 6 C s + 124 4.598888 5 C d 2 170 -4.598888 6 C d 2 + + Vector 152 Occ=0.000000D+00 E= 4.196675D+00 Symmetry=b1u + MO Center= 1.6D-14, 5.6D-14, -5.7D-16, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 0.664769 5 C pz 152 0.664769 6 C pz + 130 0.590680 5 C f 2 176 0.590680 6 C f 2 + 15 0.492205 1 H d -1 38 0.492205 2 H d -1 + 61 -0.492205 3 H d -1 84 -0.492205 4 H d -1 + 116 0.455984 5 C d -1 162 -0.455984 6 C d -1 + + Vector 153 Occ=0.000000D+00 E= 4.232507D+00 Symmetry=ag + MO Center= -7.1D-14, 1.9D-13, 5.7D-16, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 2.680295 5 C py 151 -2.680295 6 C py + 2 1.044825 1 H s 25 1.044825 2 H s + 48 1.044825 3 H s 71 1.044825 4 H s + 9 -0.999706 1 H py 32 -0.999706 2 H py + 55 0.999706 3 H py 78 0.999706 4 H py + + Vector 154 Occ=0.000000D+00 E= 4.243521D+00 Symmetry=b1g + MO Center= 4.0D-12, 5.9D-13, 4.0D-16, r^2= 2.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 115 14.268893 5 C d -2 161 14.268893 6 C d -2 + 2 -12.430814 1 H s 25 12.430814 2 H s + 48 12.430814 3 H s 71 -12.430814 4 H s + 101 6.023896 5 C px 147 -6.023896 6 C px + 8 4.734180 1 H px 31 4.734180 2 H px + + Vector 155 Occ=0.000000D+00 E= 4.288705D+00 Symmetry=b2u + MO Center= -3.2D-12, -8.2D-13, 1.0D-16, r^2= 3.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 9.212269 5 C py 151 9.212269 6 C py + 3 -6.827777 1 H s 26 -6.827777 2 H s + 49 6.827777 3 H s 72 6.827777 4 H s + 97 5.546425 5 C s 143 -5.546425 6 C s + 96 3.932261 5 C s 142 -3.932261 6 C s + + Vector 156 Occ=0.000000D+00 E= 4.392696D+00 Symmetry=b1u + MO Center= 1.8D-10, -1.3D-13, -6.7D-17, r^2= 3.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 10 1.388922 1 H pz 33 1.388922 2 H pz + 56 1.388922 3 H pz 79 1.388922 4 H pz + 103 -1.265402 5 C pz 149 -1.265402 6 C pz + 106 -1.187674 5 C pz 152 -1.187674 6 C pz + 116 -0.672991 5 C d -1 162 0.672991 6 C d -1 + + Vector 157 Occ=0.000000D+00 E= 4.392913D+00 Symmetry=b2g + MO Center= -1.8D-10, -2.9D-14, -6.7D-17, r^2= 3.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 10 1.888336 1 H pz 33 -1.888336 2 H pz + 56 1.888336 3 H pz 79 -1.888336 4 H pz + 118 1.861288 5 C d 1 164 1.861288 6 C d 1 + 133 -0.850012 5 C f -2 179 0.850012 6 C f -2 + 7 -0.653857 1 H pz 30 0.653857 2 H pz + + Vector 158 Occ=0.000000D+00 E= 4.499776D+00 Symmetry=b1g + MO Center= 4.9D-12, 8.8D-14, 3.9D-16, r^2= 2.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 10.858075 1 H s 26 -10.858075 2 H s + 49 -10.858075 3 H s 72 10.858075 4 H s + 115 -6.376393 5 C d -2 161 -6.376393 6 C d -2 + 120 -5.327368 5 C d -2 166 -5.327368 6 C d -2 + 138 3.423476 5 C f 3 184 -3.423476 6 C f 3 + + Vector 159 Occ=0.000000D+00 E= 4.578625D+00 Symmetry=b2u + MO Center= -5.4D-12, -1.5D-13, -1.9D-17, r^2= 3.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 119 5.016655 5 C d 2 165 -5.016655 6 C d 2 + 102 4.720310 5 C py 148 4.720310 6 C py + 105 -3.292777 5 C py 151 -3.292777 6 C py + 9 2.879729 1 H py 32 2.879729 2 H py + 55 2.879729 3 H py 78 2.879729 4 H py + + Vector 160 Occ=0.000000D+00 E= 4.594921D+00 Symmetry=ag + MO Center= 2.5D-13, 9.9D-14, 2.6D-18, r^2= 2.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 4.473930 5 C s 142 4.473930 6 C s + 119 -2.006385 5 C d 2 165 -2.006385 6 C d 2 + 3 -1.970747 1 H s 26 -1.970747 2 H s + 49 -1.970747 3 H s 72 -1.970747 4 H s + 8 1.266642 1 H px 31 -1.266642 2 H px + + Vector 161 Occ=0.000000D+00 E= 4.613250D+00 Symmetry=b3g + MO Center= 9.8D-14, 3.4D-13, -7.6D-17, r^2= 1.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 103 1.816166 5 C pz 149 -1.816166 6 C pz + 116 -1.789031 5 C d -1 162 -1.789031 6 C d -1 + 128 -0.992573 5 C f 0 174 0.992573 6 C f 0 + 130 -0.865607 5 C f 2 176 0.865607 6 C f 2 + 10 0.398757 1 H pz 33 0.398757 2 H pz + + Vector 162 Occ=0.000000D+00 E= 4.632655D+00 Symmetry=au + MO Center= 1.0D-12, 2.1D-14, 1.4D-16, r^2= 3.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 10 2.152198 1 H pz 33 -2.152198 2 H pz + 56 -2.152198 3 H pz 79 2.152198 4 H pz + 133 -1.925078 5 C f -2 179 -1.925078 6 C f -2 + 118 0.976198 5 C d 1 164 -0.976198 6 C d 1 + 123 -0.692180 5 C d 1 169 0.692180 6 C d 1 + + Vector 163 Occ=0.000000D+00 E= 4.642340D+00 Symmetry=b1u + MO Center= 1.9D-14, -3.3D-13, 8.7D-17, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 103 0.841165 5 C pz 149 0.841165 6 C pz + 128 -0.611940 5 C f 0 174 -0.611940 6 C f 0 + 106 -0.607387 5 C pz 152 -0.607387 6 C pz + 17 -0.577654 1 H d 1 40 0.577654 2 H d 1 + 63 -0.577654 3 H d 1 86 0.577654 4 H d 1 + + Vector 164 Occ=0.000000D+00 E= 4.739661D+00 Symmetry=b3g + MO Center= -1.1D-12, 8.1D-14, 4.0D-17, r^2= 3.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 106 2.781296 5 C pz 152 -2.781296 6 C pz + 116 2.540166 5 C d -1 162 2.540166 6 C d -1 + 10 -2.328247 1 H pz 33 -2.328247 2 H pz + 56 2.328247 3 H pz 79 2.328247 4 H pz + 137 1.696192 5 C f 2 183 -1.696192 6 C f 2 + + Vector 165 Occ=0.000000D+00 E= 4.844054D+00 Symmetry=b3u + MO Center= -3.4D-14, -9.5D-15, 1.4D-17, r^2= 3.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 115 2.466469 5 C d -2 161 -2.466469 6 C d -2 + 138 2.331444 5 C f 3 184 2.331444 6 C f 3 + 9 -2.168979 1 H py 32 2.168979 2 H py + 55 2.168979 3 H py 78 -2.168979 4 H py + 2 -1.852195 1 H s 25 1.852195 2 H s + + Vector 166 Occ=0.000000D+00 E= 4.915557D+00 Symmetry=b2u + MO Center= -1.5D-13, 3.3D-14, 4.5D-17, r^2= 1.8D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 5.657348 5 C py 151 5.657348 6 C py + 102 3.656434 5 C py 148 3.656434 6 C py + 3 -3.597785 1 H s 26 -3.597785 2 H s + 49 3.597785 3 H s 72 3.597785 4 H s + 2 -2.577924 1 H s 25 -2.577924 2 H s + + Vector 167 Occ=0.000000D+00 E= 4.918236D+00 Symmetry=b2g + MO Center= -2.4D-14, -1.2D-14, -2.1D-16, r^2= 2.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 113 0.633956 5 C d 1 159 0.633956 6 C d 1 + 126 -0.573089 5 C f -2 172 0.573089 6 C f -2 + 17 0.558003 1 H d 1 40 0.558003 2 H d 1 + 63 0.558003 3 H d 1 86 0.558003 4 H d 1 + 13 -0.383052 1 H pz 36 0.383052 2 H pz + + Vector 168 Occ=0.000000D+00 E= 4.963900D+00 Symmetry=b1g + MO Center= -9.0D-14, 5.8D-13, -1.7D-16, r^2= 3.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 27.090227 1 H s 26 -27.090227 2 H s + 49 -27.090227 3 H s 72 27.090227 4 H s + 120 -13.216870 5 C d -2 166 -13.216870 6 C d -2 + 11 -4.975404 1 H px 34 -4.975404 2 H px + 57 4.975404 3 H px 80 4.975404 4 H px + + Vector 169 Occ=0.000000D+00 E= 4.975204D+00 Symmetry=ag + MO Center= 2.0D-13, 7.8D-14, 3.2D-18, r^2= 3.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 6.650423 5 C s 142 6.650423 6 C s + 105 2.978328 5 C py 151 -2.978328 6 C py + 3 -2.274549 1 H s 26 -2.274549 2 H s + 49 -2.274549 3 H s 72 -2.274549 4 H s + 102 1.781762 5 C py 148 -1.781762 6 C py + + Vector 170 Occ=0.000000D+00 E= 5.005542D+00 Symmetry=b3u + MO Center= -4.6D-13, -2.8D-13, 2.6D-16, r^2= 3.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 138 2.589061 5 C f 3 184 2.589061 6 C f 3 + 8 2.356453 1 H px 31 2.356453 2 H px + 54 2.356453 3 H px 77 2.356453 4 H px + 3 -2.101816 1 H s 26 2.101816 2 H s + 49 -2.101816 3 H s 72 2.101816 4 H s + + Vector 171 Occ=0.000000D+00 E= 5.154510D+00 Symmetry=b3g + MO Center= -1.3D-15, 5.3D-14, -2.1D-16, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 116 1.679134 5 C d -1 162 1.679134 6 C d -1 + 10 -1.321449 1 H pz 33 -1.321449 2 H pz + 56 1.321449 3 H pz 79 1.321449 4 H pz + 130 0.720961 5 C f 2 176 -0.720961 6 C f 2 + 103 0.664072 5 C pz 149 -0.664072 6 C pz + + Vector 172 Occ=0.000000D+00 E= 5.229639D+00 Symmetry=ag + MO Center= 2.8D-14, 5.0D-13, -1.5D-17, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 4.498324 5 C s 142 4.498324 6 C s + 2 -2.052266 1 H s 25 -2.052266 2 H s + 48 -2.052266 3 H s 71 -2.052266 4 H s + 3 -1.871342 1 H s 26 -1.871342 2 H s + 49 -1.871342 3 H s 72 -1.871342 4 H s + + Vector 173 Occ=0.000000D+00 E= 5.235511D+00 Symmetry=au + MO Center= -7.0D-14, 3.0D-14, -1.2D-17, r^2= 2.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 126 1.097432 5 C f -2 172 1.097432 6 C f -2 + 133 -0.721117 5 C f -2 179 -0.721117 6 C f -2 + 17 -0.567218 1 H d 1 40 -0.567218 2 H d 1 + 63 0.567218 3 H d 1 86 0.567218 4 H d 1 + 7 -0.499270 1 H pz 30 0.499270 2 H pz + + Vector 174 Occ=0.000000D+00 E= 5.238430D+00 Symmetry=b1g + MO Center= 7.0D-14, 3.3D-13, -2.3D-16, r^2= 3.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 6.256645 1 H s 26 -6.256645 2 H s + 49 -6.256645 3 H s 72 6.256645 4 H s + 104 -4.497559 5 C px 150 4.497559 6 C px + 8 2.570841 1 H px 31 2.570841 2 H px + 54 -2.570841 3 H px 77 -2.570841 4 H px + + Vector 175 Occ=0.000000D+00 E= 5.304467D+00 Symmetry=b2u + MO Center= 4.5D-14, -3.3D-13, 1.8D-16, r^2= 3.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 105 6.397573 5 C py 151 6.397573 6 C py + 3 -3.107374 1 H s 26 -3.107374 2 H s + 49 3.107374 3 H s 72 3.107374 4 H s + 119 -2.598275 5 C d 2 165 2.598275 6 C d 2 + 96 -2.345514 5 C s 142 2.345514 6 C s + + Vector 176 Occ=0.000000D+00 E= 5.642461D+00 Symmetry=b3u + MO Center= -1.1D-13, -2.5D-13, 9.0D-18, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 101 7.087770 5 C px 147 7.087770 6 C px + 2 -5.650633 1 H s 25 5.650633 2 H s + 48 -5.650633 3 H s 71 5.650633 4 H s + 3 -5.244334 1 H s 26 5.244334 2 H s + 49 -5.244334 3 H s 72 5.244334 4 H s + + Vector 177 Occ=0.000000D+00 E= 5.700666D+00 Symmetry=ag + MO Center= 8.0D-14, -3.8D-15, 1.4D-17, r^2= 2.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 4.560244 5 C s 142 4.560244 6 C s + 2 -1.544304 1 H s 25 -1.544304 2 H s + 48 -1.544304 3 H s 71 -1.544304 4 H s + 94 -1.468142 5 C s 140 -1.468142 6 C s + 117 -1.239658 5 C d 0 163 -1.239658 6 C d 0 + + Vector 178 Occ=0.000000D+00 E= 6.082796D+00 Symmetry=b2u + MO Center= 4.0D-14, 3.4D-14, 9.9D-18, r^2= 2.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 102 5.609786 5 C py 148 5.609786 6 C py + 105 -4.936849 5 C py 151 -4.936849 6 C py + 119 3.562864 5 C d 2 165 -3.562864 6 C d 2 + 96 3.355648 5 C s 142 -3.355648 6 C s + 9 2.421343 1 H py 32 2.421343 2 H py + + Vector 179 Occ=0.000000D+00 E= 6.200928D+00 Symmetry=b3u + MO Center= 8.7D-14, 3.4D-12, 1.8D-17, r^2= 2.2D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 2 6.989232 1 H s 25 -6.989232 2 H s + 48 6.989232 3 H s 71 -6.989232 4 H s + 3 6.601184 1 H s 26 -6.601184 2 H s + 49 6.601184 3 H s 72 -6.601184 4 H s + 101 -6.243092 5 C px 147 -6.243092 6 C px + + Vector 180 Occ=0.000000D+00 E= 6.287690D+00 Symmetry=b2u + MO Center= 5.5D-12, -4.4D-13, 2.7D-17, r^2= 2.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 102 13.573700 5 C py 148 13.573700 6 C py + 96 -11.120563 5 C s 142 11.120563 6 C s + 105 8.030670 5 C py 151 8.030670 6 C py + 119 6.712231 5 C d 2 165 -6.712231 6 C d 2 + 2 -5.881740 1 H s 25 -5.881740 2 H s + + Vector 181 Occ=0.000000D+00 E= 6.376028D+00 Symmetry=b1g + MO Center= -5.5D-12, -2.2D-12, 3.1D-17, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 10.835540 1 H s 26 -10.835540 2 H s + 49 -10.835540 3 H s 72 10.835540 4 H s + 104 -10.603720 5 C px 150 10.603720 6 C px + 101 -9.825072 5 C px 147 9.825072 6 C px + 2 9.053385 1 H s 25 -9.053385 2 H s + + Vector 182 Occ=0.000000D+00 E= 6.599618D+00 Symmetry=b1g + MO Center= -1.9D-13, -1.1D-12, 6.3D-18, r^2= 2.0D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 7.415252 1 H s 26 -7.415252 2 H s + 49 -7.415252 3 H s 72 7.415252 4 H s + 115 -3.756201 5 C d -2 161 -3.756201 6 C d -2 + 120 -3.686876 5 C d -2 166 -3.686876 6 C d -2 + 131 2.476598 5 C f 3 177 -2.476598 6 C f 3 + + Vector 183 Occ=0.000000D+00 E= 1.597797D+01 Symmetry=ag + MO Center= 5.3D-14, -2.2D-12, 9.5D-18, r^2= 1.9D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 95 11.024965 5 C s 141 11.024965 6 C s + 93 5.947991 5 C s 139 5.947991 6 C s + 2 -3.062838 1 H s 25 -3.062838 2 H s + 48 -3.062838 3 H s 71 -3.062838 4 H s + 102 2.529519 5 C py 148 -2.529519 6 C py + + Vector 184 Occ=0.000000D+00 E= 1.635332D+01 Symmetry=b2u + MO Center= -1.1D-13, 1.9D-12, 1.5D-17, r^2= 1.3D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 96 28.216766 5 C s 142 -28.216766 6 C s + 105 -11.107657 5 C py 151 -11.107657 6 C py + 95 10.572236 5 C s 141 -10.572236 6 C s + 93 5.791949 5 C s 139 -5.791949 6 C s + 2 -4.282627 1 H s 25 -4.282627 2 H s + + + center of mass + -------------- + x = 0.00000000 y = 0.00000000 z = 0.00000000 + + moments of inertia (a.u.) + ------------------ + 60.339693835094 0.000000000000 0.000000000000 + 0.000000000000 12.271679422553 0.000000000000 + 0.000000000000 0.000000000000 72.611373257647 + + Multipole analysis of the density + --------------------------------- + + L x y z total alpha beta nuclear + - - - - ----- ----- ---- ------- + 0 0 0 0 -0.000000 -8.000000 -8.000000 16.000000 + + 1 1 0 0 -0.000000 -0.000000 -0.000000 0.000000 + 1 0 1 0 0.000000 0.000000 0.000000 0.000000 + 1 0 0 1 -0.000000 -0.000000 -0.000000 0.000000 + + 2 2 0 0 -9.169714 -10.673056 -10.673056 12.176399 + 2 1 1 0 0.000000 0.000000 0.000000 0.000000 + 2 1 0 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 2 0 -9.087223 -25.061414 -25.061414 41.035604 + 2 0 1 1 0.000000 0.000000 0.000000 0.000000 + 2 0 0 2 -11.700160 -5.850080 -5.850080 0.000000 + + + *********************** + *** GW *** + *********************** + + Basis "ri basis" -> "ri basis" (spherical) + ----- + H (Hydrogen) + ------------ + Exponent Coefficients + -------------- --------------------------------------------------------- + 1 S 8.51282759E+00 1.000000 + + 2 S 1.87308912E+00 1.000000 + + 3 S 5.26184269E-01 1.000000 + + 4 S 2.89739899E-01 1.000000 + + 5 S 1.27194361E-01 1.000000 + + 6 P 2.37254916E+00 1.000000 + + 7 P 1.18040845E+00 1.000000 + + 8 P 6.03822042E-01 1.000000 + + 9 P 2.35512895E-01 1.000000 + + 10 D 1.80963732E+00 1.000000 + + 11 D 1.14397261E+00 1.000000 + + 12 D 4.36654051E-01 1.000000 + + 13 F 1.80630606E+00 1.000000 + + 14 F 2.52977878E-01 1.000000 + + C (Carbon) + ---------- + Exponent Coefficients + -------------- --------------------------------------------------------- + 1 S 2.80556612E+02 1.000000 + + 2 S 6.02302472E+01 1.000000 + + 3 S 2.21166508E+01 1.000000 + + 4 S 6.86209329E+00 1.000000 + + 5 S 1.56225495E+00 1.000000 + + 6 S 9.12450455E-01 1.000000 + + 7 S 5.02749170E-01 1.000000 + + 8 S 2.15823487E-01 1.000000 + + 9 S 1.01536279E-01 1.000000 + + 10 P 2.42318652E+01 1.000000 + + 11 P 6.47645142E+00 1.000000 + + 12 P 2.12908847E+00 1.000000 + + 13 P 1.03756397E+00 1.000000 + + 14 P 5.49412750E-01 1.000000 + + 15 P 2.81526522E-01 1.000000 + + 16 P 1.15059544E-01 1.000000 + + 17 D 9.71898108E+00 1.000000 + + 18 D 3.03514750E+00 1.000000 + + 19 D 1.46777376E+00 1.000000 + + 20 D 5.73708279E-01 1.000000 + + 21 D 2.90555897E-01 1.000000 + + 22 D 1.48904560E-01 1.000000 + + 23 F 2.27562013E+00 1.000000 + + 24 F 1.19688989E+00 1.000000 + + 25 F 5.41574872E-01 1.000000 + + 26 F 2.01792770E-01 1.000000 + + 27 G 1.21661016E+00 1.000000 + + 28 G 4.35997529E-01 1.000000 + + + + Summary of "ri basis" -> "ri basis" (spherical) + ------------------------------------------------------------------------------ + Tag Description Shells Functions and Types + ---------------- ------------------------------ ------ --------------------- + H aug-cc-pvtz-rifit 14 46 5s4p3d2f + C aug-cc-pvtz-rifit 28 106 9s7p6d4f2g + + + + Memory Information + ------------------ + Available GA per process is 999.9 MBs + Available stack per process is 500.0 MBs + Available heap per process is 243.5 MBs + + Peak memory in Initialization + Peak GA per process is 14.2 MBs + Peak stack per process is 0.5 MBs + Peak heap per process is 16.0 MBs + Memory not in MA per process 0.0 MBs + + Peak memory in AFF Calculation + Peak GA per process is 16.8 MBs + Peak stack per process is 15.1 MBs + Peak heap per process is 0.0 MBs + Memory not in MA per process 15.1 MBs + + Computing 2-center integrals + Computing Inverse Cholesky factor + Computing 3-center integrals + Transform ERIs + Distribute ERIs + Read inverse + Orthogonalize ERIs + Computing V_xc ... + + Grid_pts file = ./ethene.gridpts.0 + Record size in doubles = 12289 No. of grid_pts per rec = 3070 + Max. records in memory = 5 Max. recs in file = 144750120 + + Computing Sigma_x + + *** G0W0 + + Computing RPA polarizability + Solving quasiparticle equations + + Alpha Orbitals + State Energy (eV) Error (eV) + ----------------------------------- +@GW 1 -286.084 0.004 +@GW 2 -286.073 0.004 +@GW 3 -23.169 0.005 +@GW 4 -18.815 0.004 +@GW 5 -15.793 0.002 +@GW 6 -14.569 0.002 +@GW 7 -12.965 0.002 +@GW 8 -10.353 0.002 +@GW 9 2.041 0.005 +@GW 10 0.846 0.005 +@GW 11 1.111 0.004 +@GW 12 1.180 0.004 +@GW 13 1.642 0.002 +@GW 14 2.372 0.002 +@GW 15 2.748 0.002 +@GW 16 3.067 0.004 +@GW 17 3.504 0.002 +@GW 18 3.524 0.002 +@GW 19 3.670 0.002 +@GW 20 4.764 0.003 +@GW 21 4.495 0.002 +@GW 22 4.751 0.002 +@GW 23 5.881 0.003 +@GW 24 5.909 0.003 +@GW 25 6.723 0.002 +@GW 26 7.485 0.002 +@GW 27 7.490 0.002 +@GW 28 7.917 0.002 +@GW 29 8.039 0.003 +@GW 30 8.635 0.002 +@GW 31 9.312 0.002 +@GW 32 9.296 0.002 +@GW 33 9.944 0.003 +@GW 34 9.647 0.002 +@GW 35 10.231 0.002 +@GW 36 9.923 0.004 +@GW 37 10.672 0.003 +@GW 38 10.819 0.002 +@GW 39 11.061 0.003 +@GW 40 11.117 0.002 +@GW 41 11.600 0.003 +@GW 42 11.532 0.002 +@GW 43 11.779 0.003 +@GW 44 12.769 0.001 +@GW 45 13.573 0.003 +@GW 46 14.427 0.005 +@GW 47 14.823 0.002 +@GW 48 15.193 0.003 +@GW 49 16.343 0.003 +@GW 50 18.203 0.004 +@GW 51 18.677 0.002 +@GW 52 18.998 0.002 +@GW 53 20.008 0.003 +@GW 54 20.437 0.003 +@GW 55 21.217 0.005 +@GW 56 21.966 0.005 +@GW 57 22.318 0.004 +@GW 58 23.786 0.002 +@GW 59 23.225 0.003 +@GW 60 23.171 0.002 +@GW 61 23.306 0.003 +@GW 62 24.118 0.002 +@GW 63 23.989 0.003 +@GW 64 24.673 0.005 +@GW 65 24.136 0.004 +@GW 66 24.823 0.003 +@GW 67 25.936 0.002 +@GW 68 25.657 0.002 +@GW 69 25.810 0.005 +@GW 70 26.547 0.004 +@GW 71 27.649 0.002 +@GW 72 27.909 0.004 +@GW 73 28.311 0.005 +@GW 74 28.142 0.004 +@GW 75 28.628 0.004 +@GW 76 29.009 0.002 +@GW 77 29.105 0.005 +@GW 78 29.750 0.003 +@GW 79 29.641 0.004 +@GW 80 29.830 0.003 +@GW 81 32.309 0.004 +@GW 82 33.966 0.005 +@GW 83 34.044 0.003 +@GW 84 35.140 0.002 +@GW 85 36.152 0.003 +@GW 86 37.656 0.004 +@GW 87 37.668 0.002 +@GW 88 38.841 0.002 +@GW 89 40.370 0.003 +@GW 90 40.034 0.005 +@GW 91 40.783 0.002 +@GW 92 41.208 0.005 +@GW 93 42.710 0.003 +@GW 94 44.248 0.001 +@GW 95 44.900 0.004 +@GW 96 46.329 0.002 +@GW 97 46.208 0.003 +@GW 98 46.507 0.004 +@GW 99 46.328 0.004 +@GW 100 47.943 0.002 +@GW 101 48.480 0.004 +@GW 102 50.574 0.001 +@GW 103 50.783 0.004 +@GW 104 53.785 0.004 +@GW 105 54.727 0.004 +@GW 106 54.776 0.004 +@GW 107 54.869 0.004 +@GW 108 55.553 0.000 +@GW 109 56.474 0.002 +@GW 110 58.897 0.003 +@GW 111 59.890 0.002 +@GW 112 60.789 0.003 +@GW 113 62.885 0.003 +@GW 114 64.610 0.000 +@GW 115 66.654 0.004 +@GW 116 68.185 0.004 +@GW 117 75.381 0.374 * +@GW 118 79.348 0.001 +@GW 119 79.072 0.002 +@GW 120 84.968 0.003 +@GW 121 86.150 0.000 +@GW 122 85.664 0.005 +@GW 123 85.157 0.000 +@GW 124 86.161 0.000 +@GW 125 88.115 0.002 +@GW 126 89.243 0.000 +@GW 127 91.499 0.001 +@GW 128 91.709 0.000 +@GW 129 92.308 0.003 +@GW 130 94.369 0.004 +@GW 131 94.206 0.003 +@GW 132 95.320 0.000 +@GW 133 97.466 0.001 +@GW 134 98.867 0.001 +@GW 135 97.157 0.000 +@GW 136 99.472 0.002 +@GW 137 99.825 0.004 +@GW 138 101.821 0.003 +@GW 139 101.738 0.001 +@GW 140 102.233 0.002 +@GW 141 106.123 0.005 +@GW 142 106.142 0.000 +@GW 143 107.653 0.001 +@GW 144 108.844 0.000 +@GW 145 108.765 0.000 +@GW 146 111.399 0.000 +@GW 147 112.052 0.002 +@GW 148 114.104 0.005 +@GW 149 114.669 0.000 +@GW 150 115.326 0.002 +@GW 151 115.325 0.005 +@GW 152 118.278 0.004 +@GW 153 121.519 0.004 +@GW 154 123.754 0.062 * +@GW 155 122.162 0.005 +@GW 156 125.607 0.000 +@GW 157 124.790 0.002 +@GW 158 128.497 0.002 +@GW 159 130.813 0.002 +@GW 160 132.292 0.002 +@GW 161 132.414 0.004 +@GW 162 130.210 0.005 +@GW 163 132.665 0.000 +@GW 164 132.887 0.001 +@GW 165 136.687 0.004 +@GW 166 139.856 0.000 +@GW 167 140.076 0.004 +@GW 168 139.698 0.004 +@GW 169 141.035 0.004 +@GW 170 142.672 0.003 +@GW 171 146.435 0.004 +@GW 172 150.465 0.002 +@GW 173 150.013 0.001 +@GW 174 148.870 0.000 +@GW 175 149.633 0.002 +@GW 176 161.129 0.001 +@GW 177 162.439 0.000 +@GW 178 174.320 0.002 +@GW 179 177.400 0.001 +@GW 180 180.230 0.003 +@GW 181 181.783 0.000 +@GW 182 189.764 0.004 +@GW 183 447.673 0.004 +@GW 184 457.429 0.000 + + * Result did not converge + + + *** G1W1 + + Computing RPA polarizability + Solving quasiparticle equations + + Alpha Orbitals + State Energy (eV) Error (eV) + ----------------------------------- +@GW 1 -290.613 0.003 +@GW 2 -290.581 0.003 +@GW 3 -24.406 0.003 +@GW 4 -19.705 0.002 +@GW 5 -16.450 0.005 +@GW 6 -14.972 0.003 +@GW 7 -13.307 0.002 +@GW 8 -10.537 0.004 +@GW 9 2.223 0.004 +@GW 10 0.891 0.002 +@GW 11 1.145 0.005 +@GW 12 1.207 0.004 +@GW 13 1.655 0.003 +@GW 14 2.421 0.002 +@GW 15 2.794 0.002 +@GW 16 3.112 0.002 +@GW 17 3.573 0.002 +@GW 18 3.589 0.002 +@GW 19 3.732 0.002 +@GW 20 4.867 0.003 +@GW 21 4.555 0.002 +@GW 22 4.825 0.002 +@GW 23 5.992 0.003 +@GW 24 6.024 0.003 +@GW 25 6.845 0.003 +@GW 26 7.599 0.003 +@GW 27 7.604 0.003 +@GW 28 8.043 0.003 +@GW 29 8.162 0.003 +@GW 30 8.735 0.003 +@GW 31 9.473 0.004 +@GW 32 9.635 0.002 +@GW 33 10.092 0.004 +@GW 34 9.734 0.003 +@GW 35 10.295 0.002 +@GW 36 10.122 0.002 +@GW 37 10.803 0.003 +@GW 38 11.039 0.002 +@GW 39 11.209 0.004 +@GW 40 11.271 0.004 +@GW 41 11.730 0.004 +@GW 42 11.700 0.004 +@GW 43 11.869 0.003 +@GW 44 13.067 0.002 +@GW 45 13.702 0.004 +@GW 46 14.792 0.003 +@GW 47 15.035 0.002 +@GW 48 15.374 0.005 +@GW 49 16.509 0.004 +@GW 50 18.343 0.004 +@GW 51 18.860 0.002 +@GW 52 19.450 0.004 +@GW 53 20.317 0.004 +@GW 54 20.685 0.002 +@GW 55 21.347 0.004 +@GW 56 22.037 0.002 +@GW 57 22.448 0.004 +@GW 58 23.795 0.004 +@GW 59 23.275 0.004 +@GW 60 23.446 0.005 +@GW 61 23.170 0.003 +@GW 62 24.085 0.004 +@GW 63 24.096 0.004 +@GW 64 24.666 0.002 +@GW 65 24.335 0.002 +@GW 66 25.005 0.004 +@GW 67 25.936 0.004 +@GW 68 25.863 0.002 +@GW 69 26.120 0.004 +@GW 70 26.841 0.002 +@GW 71 27.786 0.004 +@GW 72 27.967 0.003 +@GW 73 28.295 0.004 +@GW 74 28.161 0.005 +@GW 75 28.681 0.002 +@GW 76 29.258 0.003 +@GW 77 29.414 0.004 +@GW 78 29.893 0.004 +@GW 79 29.986 0.004 +@GW 80 30.046 0.002 +@GW 81 32.591 0.004 +@GW 82 33.851 0.003 +@GW 83 34.180 0.005 +@GW 84 35.313 0.002 +@GW 85 36.420 0.002 +@GW 86 37.793 0.004 +@GW 87 38.198 0.004 +@GW 88 38.850 0.004 +@GW 89 40.680 0.004 +@GW 90 40.675 0.002 +@GW 91 40.654 0.003 +@GW 92 41.707 0.005 +@GW 93 43.113 0.004 +@GW 94 43.625 0.002 +@GW 95 44.522 0.004 +@GW 96 46.284 0.005 +@GW 97 46.173 0.003 +@GW 98 46.949 0.003 +@GW 99 46.220 0.002 +@GW 100 47.609 0.003 +@GW 101 48.358 0.002 +@GW 102 50.595 0.003 +@GW 103 51.207 0.004 +@GW 104 54.157 0.004 +@GW 105 54.172 0.005 +@GW 106 55.383 0.001 +@GW 107 55.092 0.005 +@GW 108 55.094 0.004 +@GW 109 55.997 0.004 +@GW 110 58.845 0.004 +@GW 111 59.437 0.004 +@GW 112 60.788 0.004 +@GW 113 62.997 0.004 +@GW 114 64.344 0.005 +@GW 115 67.061 0.002 +@GW 116 69.187 0.002 +@GW 117 74.537 0.001 +@GW 118 79.872 0.004 +@GW 119 79.457 0.005 +@GW 120 85.037 0.005 +@GW 121 86.177 0.005 +@GW 122 87.003 0.004 +@GW 123 86.620 0.002 +@GW 124 87.531 0.004 +@GW 125 89.132 0.000 +@GW 126 90.633 0.002 +@GW 127 91.857 0.004 +@GW 128 91.928 0.002 +@GW 129 92.675 0.002 +@GW 130 95.932 0.004 +@GW 131 95.879 0.005 +@GW 132 95.919 0.004 +@GW 133 98.167 0.002 +@GW 134 98.709 0.004 +@GW 135 97.994 0.004 +@GW 136 100.004 0.002 +@GW 137 100.847 0.005 +@GW 138 101.673 0.004 +@GW 139 101.985 0.005 +@GW 140 103.111 0.004 +@GW 141 106.578 0.005 +@GW 142 106.260 0.004 +@GW 143 108.163 0.003 +@GW 144 108.703 0.004 +@GW 145 109.359 0.003 +@GW 146 111.399 0.002 +@GW 147 112.494 0.004 +@GW 148 114.151 0.004 +@GW 149 114.599 0.004 +@GW 150 115.640 0.002 +@GW 151 115.963 0.004 +@GW 152 119.365 0.005 +@GW 153 121.744 0.004 +@GW 154 121.444 0.003 +@GW 155 121.843 0.004 +@GW 156 125.698 0.004 +@GW 157 125.517 0.004 +@GW 158 128.051 0.003 +@GW 159 130.719 0.004 +@GW 160 131.126 0.002 +@GW 161 131.962 0.004 +@GW 162 131.239 0.002 +@GW 163 133.437 0.000 +@GW 164 134.113 0.004 +@GW 165 137.646 0.002 +@GW 166 142.485 0.059 * +@GW 167 142.065 0.005 +@GW 168 140.660 0.005 +@GW 169 141.484 0.002 +@GW 170 143.149 0.000 +@GW 171 145.970 0.004 +@GW 172 150.491 0.004 +@GW 173 148.870 0.004 +@GW 174 147.965 0.002 +@GW 175 149.480 0.004 +@GW 176 161.374 0.004 +@GW 177 163.436 0.001 +@GW 178 174.039 0.004 +@GW 179 176.818 0.004 +@GW 180 179.928 0.003 +@GW 181 181.504 0.004 +@GW 182 189.389 0.000 +@GW 183 450.394 0.001 +@GW 184 459.318 0.003 + + * Result did not converge + + + *** G2W2 + + Computing RPA polarizability + Solving quasiparticle equations + + Alpha Orbitals + State Energy (eV) Error (eV) + ----------------------------------- +@GW 1 -291.832 0.003 +@GW 2 -291.798 0.003 +@GW 3 -24.583 0.005 +@GW 4 -19.808 0.003 +@GW 5 -16.517 0.002 +@GW 6 -15.027 0.005 +@GW 7 -13.349 0.004 +@GW 8 -10.555 0.002 +@GW 9 2.236 0.005 +@GW 10 0.893 0.002 +@GW 11 1.146 0.002 +@GW 12 1.208 0.002 +@GW 13 1.654 0.002 +@GW 14 2.424 0.002 +@GW 15 2.796 0.002 +@GW 16 3.114 0.002 +@GW 17 3.577 0.002 +@GW 18 3.590 0.005 +@GW 19 3.735 0.002 +@GW 20 4.874 0.003 +@GW 21 4.557 0.002 +@GW 22 4.829 0.002 +@GW 23 6.000 0.003 +@GW 24 6.032 0.003 +@GW 25 6.852 0.003 +@GW 26 7.607 0.002 +@GW 27 7.610 0.003 +@GW 28 8.052 0.003 +@GW 29 8.170 0.003 +@GW 30 8.742 0.003 +@GW 31 9.482 0.003 +@GW 32 9.650 0.003 +@GW 33 10.102 0.003 +@GW 34 9.739 0.003 +@GW 35 10.308 0.003 +@GW 36 10.135 0.003 +@GW 37 10.812 0.003 +@GW 38 11.053 0.005 +@GW 39 11.220 0.003 +@GW 40 11.280 0.003 +@GW 41 11.738 0.003 +@GW 42 11.709 0.003 +@GW 43 11.875 0.003 +@GW 44 13.090 0.002 +@GW 45 13.712 0.003 +@GW 46 14.827 0.003 +@GW 47 15.054 0.004 +@GW 48 15.391 0.004 +@GW 49 16.543 0.003 +@GW 50 18.394 0.004 +@GW 51 18.975 0.004 +@GW 52 19.423 0.004 +@GW 53 20.351 0.003 +@GW 54 20.735 0.002 +@GW 55 21.388 0.002 +@GW 56 22.100 0.003 +@GW 57 22.541 0.003 +@GW 58 23.972 0.004 +@GW 59 23.238 0.004 +@GW 60 23.389 0.002 +@GW 61 23.252 0.003 +@GW 62 24.066 0.003 +@GW 63 24.111 0.004 +@GW 64 24.746 0.003 +@GW 65 24.382 0.002 +@GW 66 24.990 0.004 +@GW 67 26.020 0.004 +@GW 68 25.773 0.002 +@GW 69 26.205 0.003 +@GW 70 26.887 0.004 +@GW 71 27.878 0.002 +@GW 72 28.111 0.004 +@GW 73 28.317 0.004 +@GW 74 28.162 0.003 +@GW 75 28.812 0.004 +@GW 76 29.380 0.003 +@GW 77 29.405 0.002 +@GW 78 29.992 0.004 +@GW 79 29.875 0.004 +@GW 80 30.144 0.004 +@GW 81 32.695 0.002 +@GW 82 33.785 0.004 +@GW 83 33.976 0.003 +@GW 84 35.436 0.005 +@GW 85 36.542 0.003 +@GW 86 37.750 0.002 +@GW 87 37.959 0.002 +@GW 88 38.765 0.005 +@GW 89 40.488 0.003 +@GW 90 40.716 0.005 +@GW 91 40.860 0.003 +@GW 92 41.852 0.002 +@GW 93 43.002 0.003 +@GW 94 43.778 0.004 +@GW 95 44.281 0.005 +@GW 96 46.541 0.001 +@GW 97 46.374 0.004 +@GW 98 46.549 0.000 +@GW 99 46.393 0.003 +@GW 100 47.627 0.004 +@GW 101 48.283 0.002 +@GW 102 50.574 0.002 +@GW 103 50.605 0.004 +@GW 104 54.069 0.004 +@GW 105 54.298 0.004 +@GW 106 54.969 0.000 +@GW 107 55.010 0.004 +@GW 108 55.405 0.002 +@GW 109 55.659 0.003 +@GW 110 59.147 0.003 +@GW 111 59.725 0.004 +@GW 112 60.838 0.004 +@GW 113 62.043 0.005 +@GW 114 64.438 0.004 +@GW 115 67.456 0.004 +@GW 116 68.840 0.004 +@GW 117 74.350 0.005 +@GW 118 80.031 0.002 +@GW 119 79.521 0.004 +@GW 120 85.070 0.004 +@GW 121 86.643 0.000 +@GW 122 87.301 0.004 +@GW 123 86.822 0.004 +@GW 124 87.615 0.005 +@GW 125 88.889 0.004 +@GW 126 90.590 0.004 +@GW 127 91.628 0.002 +@GW 128 92.226 0.004 +@GW 129 93.037 0.004 +@GW 130 96.103 0.004 +@GW 131 96.256 0.003 +@GW 132 95.066 0.002 +@GW 133 98.132 0.003 +@GW 134 98.670 0.004 +@GW 135 98.131 0.005 +@GW 136 100.412 0.004 +@GW 137 100.981 0.005 +@GW 138 101.941 0.004 +@GW 139 103.138 0.001 +@GW 140 103.415 0.005 +@GW 141 106.479 0.003 +@GW 142 107.151 0.000 +@GW 143 108.414 0.000 +@GW 144 108.499 0.004 +@GW 145 109.723 0.003 +@GW 146 110.563 0.004 +@GW 147 112.553 0.003 +@GW 148 114.340 0.004 +@GW 149 114.935 0.004 +@GW 150 116.068 0.002 +@GW 151 116.585 0.004 +@GW 152 119.773 0.005 +@GW 153 122.321 0.000 +@GW 154 121.207 0.004 +@GW 155 122.233 0.002 +@GW 156 125.350 0.004 +@GW 157 125.043 0.004 +@GW 158 128.482 0.005 +@GW 159 130.435 0.005 +@GW 160 131.328 0.004 +@GW 161 132.854 0.004 +@GW 162 131.399 0.005 +@GW 163 133.405 0.003 +@GW 164 134.086 0.002 +@GW 165 138.053 0.004 +@GW 166 142.318 0.005 +@GW 167 140.503 0.005 +@GW 168 140.915 0.003 +@GW 169 142.002 0.004 +@GW 170 142.738 0.004 +@GW 171 145.565 0.002 +@GW 172 150.487 0.002 +@GW 173 149.161 0.004 +@GW 174 148.090 0.004 +@GW 175 149.981 0.000 +@GW 176 160.818 0.005 +@GW 177 163.710 0.004 +@GW 178 174.194 0.004 +@GW 179 176.590 0.002 +@GW 180 179.939 0.004 +@GW 181 180.157 0.002 +@GW 182 188.808 0.000 +@GW 183 449.969 0.004 +@GW 184 459.400 0.005 + + *** G3W3 + + Computing RPA polarizability + Solving quasiparticle equations + + Alpha Orbitals + State Energy (eV) Error (eV) + ----------------------------------- +@GW 1 -292.106 0.000 +@GW 2 -292.071 0.000 +@GW 3 -24.604 0.000 +@GW 4 -19.819 0.000 +@GW 5 -16.524 0.000 +@GW 6 -15.034 0.000 +@GW 7 -13.353 0.000 +@GW 8 -10.557 0.000 +@GW 9 2.238 0.000 +@GW 10 0.893 0.000 +@GW 11 1.146 0.000 +@GW 12 1.208 0.000 +@GW 13 1.654 0.000 +@GW 14 2.424 0.000 +@GW 15 2.796 0.000 +@GW 16 3.114 0.000 +@GW 17 3.577 0.000 +@GW 18 3.591 0.000 +@GW 19 3.735 0.000 +@GW 20 4.874 0.000 +@GW 21 4.558 0.000 +@GW 22 4.829 0.000 +@GW 23 6.000 0.000 +@GW 24 6.033 0.000 +@GW 25 6.853 0.000 +@GW 26 7.607 0.000 +@GW 27 7.611 0.000 +@GW 28 8.052 0.000 +@GW 29 8.171 0.000 +@GW 30 8.743 0.000 +@GW 31 9.483 0.000 +@GW 32 9.652 0.000 +@GW 33 10.103 0.000 +@GW 34 9.740 0.000 +@GW 35 10.309 0.000 +@GW 36 10.136 0.000 +@GW 37 10.813 0.000 +@GW 38 11.055 0.000 +@GW 39 11.221 0.000 +@GW 40 11.281 0.000 +@GW 41 11.739 0.000 +@GW 42 11.710 0.000 +@GW 43 11.876 0.000 +@GW 44 13.092 0.000 +@GW 45 13.713 0.000 +@GW 46 14.830 0.000 +@GW 47 15.056 0.000 +@GW 48 15.393 0.000 +@GW 49 16.546 0.000 +@GW 50 18.397 0.000 +@GW 51 18.986 0.000 +@GW 52 19.428 0.000 +@GW 53 20.358 0.000 +@GW 54 20.741 0.000 +@GW 55 21.392 0.000 +@GW 56 22.101 0.000 +@GW 57 22.552 0.000 +@GW 58 23.991 0.000 +@GW 59 23.247 0.000 +@GW 60 23.394 0.000 +@GW 61 23.261 0.000 +@GW 62 24.067 0.000 +@GW 63 24.105 0.000 +@GW 64 24.755 0.000 +@GW 65 24.389 0.000 +@GW 66 24.993 0.000 +@GW 67 26.024 0.000 +@GW 68 25.784 0.000 +@GW 69 26.214 0.000 +@GW 70 26.850 0.000 +@GW 71 27.890 0.000 +@GW 72 28.116 0.000 +@GW 73 28.321 0.000 +@GW 74 28.179 0.000 +@GW 75 28.826 0.000 +@GW 76 29.388 0.000 +@GW 77 29.415 0.000 +@GW 78 30.004 0.000 +@GW 79 29.831 0.000 +@GW 80 30.141 0.000 +@GW 81 32.701 0.000 +@GW 82 33.813 0.000 +@GW 83 33.989 0.000 +@GW 84 35.436 0.000 +@GW 85 36.552 0.000 +@GW 86 37.732 0.000 +@GW 87 37.995 0.000 +@GW 88 38.762 0.000 +@GW 89 40.512 0.000 +@GW 90 40.682 0.000 +@GW 91 40.876 0.000 +@GW 92 41.876 0.000 +@GW 93 43.021 0.000 +@GW 94 43.643 0.000 +@GW 95 44.331 0.000 +@GW 96 46.561 0.000 +@GW 97 46.430 0.000 +@GW 98 46.600 0.000 +@GW 99 46.395 0.000 +@GW 100 47.627 0.000 +@GW 101 48.317 0.000 +@GW 102 50.591 0.000 +@GW 103 50.660 0.000 +@GW 104 54.356 0.000 +@GW 105 54.320 0.000 +@GW 106 55.067 0.000 +@GW 107 55.095 0.000 +@GW 108 55.296 0.000 +@GW 109 55.641 0.000 +@GW 110 59.227 0.000 +@GW 111 59.754 0.000 +@GW 112 60.713 0.000 +@GW 113 61.695 0.000 +@GW 114 64.098 0.000 +@GW 115 67.481 0.000 +@GW 116 68.852 0.000 +@GW 117 74.219 0.000 +@GW 118 80.292 0.000 +@GW 119 79.603 0.000 +@GW 120 85.065 0.000 +@GW 121 86.684 0.000 +@GW 122 87.307 0.000 +@GW 123 86.786 0.000 +@GW 124 87.716 0.000 +@GW 125 88.995 0.000 +@GW 126 90.571 0.000 +@GW 127 91.693 0.000 +@GW 128 92.339 0.000 +@GW 129 93.155 0.000 +@GW 130 95.966 0.000 +@GW 131 96.292 0.000 +@GW 132 95.292 0.000 +@GW 133 98.207 0.000 +@GW 134 98.694 0.000 +@GW 135 98.194 0.000 +@GW 136 100.327 0.000 +@GW 137 100.947 0.000 +@GW 138 102.059 0.000 +@GW 139 103.426 0.000 +@GW 140 103.550 0.000 +@GW 141 106.836 0.000 +@GW 142 106.833 0.000 +@GW 143 108.978 0.000 +@GW 144 108.343 0.000 +@GW 145 109.723 0.000 +@GW 146 110.365 0.000 +@GW 147 112.532 0.000 +@GW 148 114.547 0.000 +@GW 149 114.969 0.000 +@GW 150 116.032 0.000 +@GW 151 116.793 0.000 +@GW 152 119.771 0.000 +@GW 153 121.779 0.000 +@GW 154 121.373 0.000 +@GW 155 121.968 0.000 +@GW 156 125.433 0.000 +@GW 157 125.085 0.000 +@GW 158 128.750 0.000 +@GW 159 130.764 0.000 +@GW 160 131.534 0.000 +@GW 161 133.166 0.000 +@GW 162 131.414 0.000 +@GW 163 133.106 0.000 +@GW 164 133.959 0.000 +@GW 165 138.155 0.000 +@GW 166 142.267 0.000 +@GW 167 140.702 0.000 +@GW 168 140.878 0.000 +@GW 169 141.586 0.000 +@GW 170 142.765 0.000 +@GW 171 145.835 0.000 +@GW 172 150.291 0.000 +@GW 173 149.298 0.000 +@GW 174 148.211 0.000 +@GW 175 150.010 0.000 +@GW 176 160.064 0.000 +@GW 177 162.209 0.000 +@GW 178 174.554 0.000 +@GW 179 176.702 0.000 +@GW 180 179.318 0.000 +@GW 181 180.031 0.000 +@GW 182 188.352 0.000 +@GW 183 450.134 0.000 +@GW 184 459.741 0.000 + + *** G4W4 + + Computing RPA polarizability + Solving quasiparticle equations + + Alpha Orbitals + State Energy (eV) Error (eV) + ----------------------------------- +@GW 1 -292.165 0.000 +@GW 2 -292.129 0.000 +@GW 3 -24.606 0.000 +@GW 4 -19.820 0.000 +@GW 5 -16.524 0.000 +@GW 6 -15.035 0.000 +@GW 7 -13.353 0.000 +@GW 8 -10.557 0.000 +@GW 9 2.238 0.000 +@GW 10 0.893 0.000 +@GW 11 1.146 0.000 +@GW 12 1.208 0.000 +@GW 13 1.654 0.000 +@GW 14 2.424 0.000 +@GW 15 2.796 0.000 +@GW 16 3.114 0.000 +@GW 17 3.577 0.000 +@GW 18 3.591 0.000 +@GW 19 3.735 0.000 +@GW 20 4.874 0.000 +@GW 21 4.558 0.000 +@GW 22 4.829 0.000 +@GW 23 6.000 0.000 +@GW 24 6.033 0.000 +@GW 25 6.853 0.000 +@GW 26 7.607 0.000 +@GW 27 7.611 0.000 +@GW 28 8.052 0.000 +@GW 29 8.171 0.000 +@GW 30 8.743 0.000 +@GW 31 9.483 0.000 +@GW 32 9.652 0.000 +@GW 33 10.103 0.000 +@GW 34 9.740 0.000 +@GW 35 10.309 0.000 +@GW 36 10.136 0.000 +@GW 37 10.813 0.000 +@GW 38 11.055 0.000 +@GW 39 11.221 0.000 +@GW 40 11.281 0.000 +@GW 41 11.739 0.000 +@GW 42 11.710 0.000 +@GW 43 11.876 0.000 +@GW 44 13.092 0.000 +@GW 45 13.713 0.000 +@GW 46 14.830 0.000 +@GW 47 15.056 0.000 +@GW 48 15.394 0.000 +@GW 49 16.546 0.000 +@GW 50 18.397 0.000 +@GW 51 18.987 0.000 +@GW 52 19.429 0.000 +@GW 53 20.358 0.000 +@GW 54 20.742 0.000 +@GW 55 21.393 0.000 +@GW 56 22.101 0.000 +@GW 57 22.553 0.000 +@GW 58 23.993 0.000 +@GW 59 23.248 0.000 +@GW 60 23.394 0.000 +@GW 61 23.262 0.000 +@GW 62 24.067 0.000 +@GW 63 24.105 0.000 +@GW 64 24.756 0.000 +@GW 65 24.390 0.000 +@GW 66 24.994 0.000 +@GW 67 26.024 0.000 +@GW 68 25.786 0.000 +@GW 69 26.215 0.000 +@GW 70 26.843 0.000 +@GW 71 27.891 0.000 +@GW 72 28.117 0.000 +@GW 73 28.322 0.000 +@GW 74 28.180 0.000 +@GW 75 28.827 0.000 +@GW 76 29.388 0.000 +@GW 77 29.417 0.000 +@GW 78 30.006 0.000 +@GW 79 29.818 0.000 +@GW 80 30.141 0.000 +@GW 81 32.701 0.000 +@GW 82 33.816 0.000 +@GW 83 33.990 0.000 +@GW 84 35.436 0.000 +@GW 85 36.554 0.000 +@GW 86 37.733 0.000 +@GW 87 37.999 0.000 +@GW 88 38.762 0.000 +@GW 89 40.516 0.000 +@GW 90 40.683 0.000 +@GW 91 40.877 0.000 +@GW 92 41.879 0.000 +@GW 93 43.025 0.000 +@GW 94 43.621 0.000 +@GW 95 44.337 0.000 +@GW 96 46.551 0.000 +@GW 97 46.436 0.000 +@GW 98 46.604 0.000 +@GW 99 46.394 0.000 +@GW 100 47.641 0.000 +@GW 101 48.320 0.000 +@GW 102 50.618 0.000 +@GW 103 50.666 0.000 +@GW 104 54.356 0.000 +@GW 105 54.327 0.000 +@GW 106 55.077 0.000 +@GW 107 55.101 0.000 +@GW 108 55.281 0.000 +@GW 109 55.638 0.000 +@GW 110 59.229 0.000 +@GW 111 59.775 0.000 +@GW 112 60.709 0.000 +@GW 113 61.711 0.000 +@GW 114 64.091 0.000 +@GW 115 67.501 0.000 +@GW 116 68.801 0.000 +@GW 117 74.201 0.000 +@GW 118 80.324 0.000 +@GW 119 79.604 0.000 +@GW 120 85.081 0.000 +@GW 121 86.705 0.000 +@GW 122 87.376 0.000 +@GW 123 86.811 0.000 +@GW 124 87.715 0.000 +@GW 125 89.018 0.000 +@GW 126 90.594 0.000 +@GW 127 91.741 0.000 +@GW 128 92.344 0.000 +@GW 129 93.204 0.000 +@GW 130 95.998 0.000 +@GW 131 96.461 0.000 +@GW 132 95.308 0.000 +@GW 133 98.209 0.000 +@GW 134 98.662 0.000 +@GW 135 98.253 0.000 +@GW 136 100.353 0.000 +@GW 137 101.116 0.000 +@GW 138 102.095 0.000 +@GW 139 103.487 0.000 +@GW 140 103.548 0.000 +@GW 141 106.858 0.000 +@GW 142 106.830 0.000 +@GW 143 108.946 0.000 +@GW 144 108.291 0.000 +@GW 145 109.777 0.000 +@GW 146 110.431 0.000 +@GW 147 112.586 0.000 +@GW 148 114.421 0.000 +@GW 149 114.929 0.000 +@GW 150 116.050 0.000 +@GW 151 116.806 0.000 +@GW 152 119.745 0.000 +@GW 153 121.329 0.000 +@GW 154 121.440 0.000 +@GW 155 121.967 0.000 +@GW 156 125.421 0.000 +@GW 157 125.099 0.000 +@GW 158 128.673 0.000 +@GW 159 130.758 0.000 +@GW 160 131.664 0.000 +@GW 161 133.129 0.000 +@GW 162 131.437 0.000 +@GW 163 133.162 0.000 +@GW 164 133.996 0.000 +@GW 165 138.200 0.000 +@GW 166 142.277 0.000 +@GW 167 140.742 0.000 +@GW 168 140.814 0.000 +@GW 169 141.563 0.000 +@GW 170 142.485 0.000 +@GW 171 145.817 0.000 +@GW 172 150.347 0.000 +@GW 173 149.330 0.000 +@GW 174 148.401 0.000 +@GW 175 149.959 0.000 +@GW 176 160.630 0.000 +@GW 177 162.188 0.000 +@GW 178 174.572 0.000 +@GW 179 176.620 0.000 +@GW 180 179.647 0.000 +@GW 181 180.115 0.000 +@GW 182 188.264 0.000 +@GW 183 450.236 0.000 +@GW 184 459.774 0.000 + + GW Timing Statistics + ------------------------ + Init. : 0.1s + ERIs : 0.6s + Distr.: 0.1s + Vxc : 0.3s + Sigma_x : 0.0s + RPA : 1.1s + Wmn : 2.6s + Sigma_c : 1.1s + GW total: 6.2s + + + Task times cpu: 9.5s wall: 9.5s + + + NWChem Input Module + ------------------- + + + + NWChem BSE Module + ----------------- + + + ethene BSE + + + + *********************** + *** BSE *** + *********************** + + + Computing 2-center integrals + Computing Inverse Cholesky factor + Computing 3-center integrals + Transform ERIs + Distribute ERIs + Read inverse + Orthogonalize ERIs + + 12 smallest diagonals (eV) +------------------------------------ + No. Spin Occ Vir Irrep Diag +------------------------------------ + 1 1 8 10 b1u 7.371 + 2 1 8 12 b2g 8.075 + 3 1 8 11 b3g 8.092 + 4 1 7 9 b2g 8.612 + 5 1 8 9 b2u 8.769 + 6 1 8 14 ag 8.977 + 7 1 8 15 b1u 9.151 + 8 1 8 13 au 9.217 + 9 1 6 9 b3g 10.006 + 10 1 8 18 b1u 10.067 + 11 1 8 19 b2g 10.128 + 12 1 7 10 b1g 10.149 + + -------------------------------- + Iter Ntrials Nconv Res + -------------------------------- + 1 48 0 0.13829 + 2 60 0 0.60130E-01 + 3 72 0 0.41802E-01 + 4 84 0 0.16459E-01 + 5 96 0 0.40756E-02 + 6 106 2 0.53951E-03 + 7 110 12 0.31237E-04 + + ---------------------------------------------------------------------------- + Root 1 singlet b1u 0.246691089 a.u. 6.7128 eV + ---------------------------------------------------------------------------- + Transition Moments X -0.00000 Y 0.00000 Z 0.63468 + Transition Moments XX -0.00000 XY -0.00000 XZ -0.00000 + Transition Moments YY 0.00000 YZ -0.00000 ZZ -0.00000 + Dipole Oscillator Strength 0.0662477913 + Electric Quadrupole 0.0000000000 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.0662477913 + + Exciton norm = 1.0007 + sigma_e = 2.9290 Angstrom + sigma_h = 1.2335 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 3.1763 Angstrom + d_CD = -2.0812 Angstrom + Pearson C.C. = 0.0016 + + Occ. 8 b1u --- Virt. 10 ag 0.88787 X + Occ. 8 b1u --- Virt. 15 ag 0.22656 X + Occ. 8 b1u --- Virt. 18 ag -0.37636 X + Occ. 8 b1u --- Virt. 20 ag -0.07921 X + Occ. 8 b1u --- Virt. 36 ag 0.10264 X + ---------------------------------------------------------------------------- + Root 2 singlet b2g 0.266803497 a.u. 7.2601 eV + ---------------------------------------------------------------------------- + Transition Moments X -0.00000 Y -0.00000 Z -0.00000 + Transition Moments XX -0.00000 XY -0.00000 XZ 1.11297 + Transition Moments YY -0.00000 YZ 0.00000 ZZ 0.00000 + Dipole Oscillator Strength 0.0000000000 + Electric Quadrupole 0.0000001253 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.0000001253 + + Exciton norm = 1.0002 + sigma_e = 3.0882 Angstrom + sigma_h = 1.2374 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 3.3252 Angstrom + d_CD = -2.1628 Angstrom + Pearson C.C. = 0.0015 + + Occ. 7 b1g --- Virt. 9 b3g -0.10351 X + Occ. 8 b1u --- Virt. 12 b3u -0.84740 X + Occ. 8 b1u --- Virt. 19 b3u 0.47037 X + Occ. 8 b1u --- Virt. 23 b3u -0.16114 X + Occ. 8 b1u --- Virt. 30 b3u -0.08590 X + Occ. 8 b1u --- Virt. 33 b3u -0.11947 X + ---------------------------------------------------------------------------- + Root 3 singlet b2u 0.270263287 a.u. 7.3542 eV + ---------------------------------------------------------------------------- + Transition Moments X 0.00000 Y 1.31671 Z -0.00000 + Transition Moments XX 0.00000 XY -0.00000 XZ 0.00000 + Transition Moments YY -0.00000 YZ -0.00000 ZZ 0.00000 + Dipole Oscillator Strength 0.3123747752 + Electric Quadrupole 0.0000000000 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.3123747752 + + Exciton norm = 1.0800 + sigma_e = 1.5911 Angstrom + sigma_h = 1.2393 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 2.0824 Angstrom + d_CD = -1.4152 Angstrom + Pearson C.C. = -0.0682 + + Occ. 4 b2u --- Virt. 10 ag 0.05533 X + Occ. 4 b2u --- Virt. 18 ag -0.05131 X + Occ. 5 b3u --- Virt. 21 b1g -0.05017 X + Occ. 6 ag --- Virt. 29 b2u 0.06125 X + Occ. 6 ag --- Virt. 47 b2u -0.06305 X + Occ. 7 b1g --- Virt. 12 b3u -0.05129 X + Occ. 7 b1g --- Virt. 23 b3u 0.07452 X + Occ. 7 b1g --- Virt. 39 b3u -0.06555 X + Occ. 8 b1u --- Virt. 9 b3g -0.97902 X + Occ. 8 b1u --- Virt. 9 b3g 0.16835 Y + Occ. 8 b1u --- Virt. 17 b3g 0.18241 X + Occ. 8 b1u --- Virt. 17 b3g -0.06693 Y + ---------------------------------------------------------------------------- + Root 4 singlet b3g 0.273729174 a.u. 7.4486 eV + ---------------------------------------------------------------------------- + Transition Moments X -0.00000 Y 0.00000 Z 0.00000 + Transition Moments XX -0.00000 XY 0.00000 XZ -0.00000 + Transition Moments YY -0.00000 YZ 1.29703 ZZ -0.00000 + Dipole Oscillator Strength 0.0000000000 + Electric Quadrupole 0.0000001837 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.0000001837 + + Exciton norm = 1.0008 + sigma_e = 3.3930 Angstrom + sigma_h = 1.2340 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 3.6079 Angstrom + d_CD = -2.3135 Angstrom + Pearson C.C. = 0.0021 + + Occ. 8 b1u --- Virt. 11 b2u -0.88475 X + Occ. 8 b1u --- Virt. 16 b2u 0.39648 X + Occ. 8 b1u --- Virt. 22 b2u -0.20810 X + Occ. 8 b1u --- Virt. 29 b2u -0.08008 X + Occ. 8 b1u --- Virt. 38 b2u 0.07408 X + ---------------------------------------------------------------------------- + Root 5 singlet b2g 0.298859271 a.u. 8.1324 eV + ---------------------------------------------------------------------------- + Transition Moments X -0.00000 Y 0.00000 Z -0.00000 + Transition Moments XX 0.00000 XY 0.00000 XZ 0.75346 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 + Dipole Oscillator Strength 0.0000000000 + Electric Quadrupole 0.0000000807 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.0000000807 + + Exciton norm = 1.0022 + sigma_e = 1.4814 Angstrom + sigma_h = 1.5298 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 2.1066 Angstrom + d_CD = -1.5056 Angstrom + Pearson C.C. = 0.0214 + + Occ. 7 b1g --- Virt. 9 b3g -0.94829 X + Occ. 7 b1g --- Virt. 17 b3g 0.27644 X + Occ. 7 b1g --- Virt. 32 b3g -0.08680 X + Occ. 8 b1u --- Virt. 12 b3u 0.11512 X + ---------------------------------------------------------------------------- + Root 6 singlet ag 0.317192549 a.u. 8.6312 eV + ---------------------------------------------------------------------------- + Transition Moments X -0.00000 Y 0.00000 Z -0.00000 + Transition Moments XX 0.22176 XY 0.00000 XZ -0.00000 + Transition Moments YY 0.03261 YZ 0.00000 ZZ 3.26434 + Dipole Oscillator Strength 0.0000000000 + Electric Quadrupole 0.0000005590 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.0000005590 + + Exciton norm = 1.0018 + sigma_e = 3.3411 Angstrom + sigma_h = 1.2395 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 3.5464 Angstrom + d_CD = -2.2903 Angstrom + Pearson C.C. = 0.0148 + + Occ. 5 b3u --- Virt. 19 b3u -0.05101 X + Occ. 6 ag --- Virt. 10 ag -0.06000 X + Occ. 7 b1g --- Virt. 13 b1g 0.05381 X + Occ. 7 b1g --- Virt. 21 b1g 0.06258 X + Occ. 8 b1u --- Virt. 14 b1u -0.97987 X + Occ. 8 b1u --- Virt. 28 b1u 0.10411 X + ---------------------------------------------------------------------------- + Root 7 singlet au 0.322627078 a.u. 8.7791 eV + ---------------------------------------------------------------------------- + Transition Moments X -0.00000 Y 0.00000 Z -0.00000 + Transition Moments XX -0.00000 XY -0.00000 XZ 0.00000 + Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 + Dipole Oscillator Strength 0.0000000000 + Electric Quadrupole 0.0000000000 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.0000000000 + + Exciton norm = 1.0001 + sigma_e = 4.2572 Angstrom + sigma_h = 1.2334 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 4.4313 Angstrom + d_CD = -2.7453 Angstrom + Pearson C.C. = 0.0008 + + Occ. 8 b1u --- Virt. 13 b1g -0.90699 X + Occ. 8 b1u --- Virt. 21 b1g -0.39989 X + Occ. 8 b1u --- Virt. 31 b1g 0.10951 X + Occ. 8 b1u --- Virt. 42 b1g -0.06040 X + ---------------------------------------------------------------------------- + Root 8 singlet b1u 0.325922951 a.u. 8.8688 eV + ---------------------------------------------------------------------------- + Transition Moments X 0.00000 Y -0.00000 Z -0.06747 + Transition Moments XX -0.00000 XY 0.00000 XZ 0.00000 + Transition Moments YY -0.00000 YZ -0.00000 ZZ 0.00000 + Dipole Oscillator Strength 0.0009890180 + Electric Quadrupole 0.0000000000 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.0009890180 + + Exciton norm = 1.0001 + sigma_e = 3.5269 Angstrom + sigma_h = 1.2333 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 3.7352 Angstrom + d_CD = -2.3801 Angstrom + Pearson C.C. = 0.0010 + + Occ. 8 b1u --- Virt. 10 ag -0.28119 X + Occ. 8 b1u --- Virt. 15 ag 0.89452 X + Occ. 8 b1u --- Virt. 20 ag -0.23582 X + Occ. 8 b1u --- Virt. 26 ag -0.23849 X + Occ. 8 b1u --- Virt. 40 ag -0.05195 X + ---------------------------------------------------------------------------- + Root 9 singlet b3g 0.342961771 a.u. 9.3325 eV + ---------------------------------------------------------------------------- + Transition Moments X -0.00000 Y 0.00000 Z 0.00000 + Transition Moments XX 0.00000 XY 0.00000 XZ -0.00000 + Transition Moments YY 0.00000 YZ 0.97607 ZZ -0.00000 + Dipole Oscillator Strength 0.0000000000 + Electric Quadrupole 0.0000002047 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.0000002047 + + Exciton norm = 1.0018 + sigma_e = 1.4402 Angstrom + sigma_h = 1.2713 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 1.9205 Angstrom + d_CD = -1.3557 Angstrom + Pearson C.C. = 0.0005 + + Occ. 3 ag --- Virt. 9 b3g 0.06802 X + Occ. 6 ag --- Virt. 9 b3g -0.93871 X + Occ. 6 ag --- Virt. 17 b3g 0.29390 X + Occ. 6 ag --- Virt. 32 b3g -0.10846 X + Occ. 8 b1u --- Virt. 11 b2u 0.07229 X + Occ. 8 b1u --- Virt. 25 b2u 0.06362 X + ---------------------------------------------------------------------------- + Root 10 singlet b1g 0.346394566 a.u. 9.4259 eV + ---------------------------------------------------------------------------- + Transition Moments X 0.00000 Y 0.00000 Z 0.00000 + Transition Moments XX -0.00000 XY -2.72617 XZ -0.00000 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 + Dipole Oscillator Strength 0.0000000000 + Electric Quadrupole 0.0000016449 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.0000016449 + + Exciton norm = 1.0015 + sigma_e = 2.9369 Angstrom + sigma_h = 1.5327 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 3.1898 Angstrom + d_CD = -2.2348 Angstrom + Pearson C.C. = 0.0889 + + Occ. 5 b3u --- Virt. 11 b2u 0.07827 X + Occ. 7 b1g --- Virt. 10 ag -0.88448 X + Occ. 7 b1g --- Virt. 15 ag -0.21120 X + Occ. 7 b1g --- Virt. 18 ag 0.37838 X + Occ. 7 b1g --- Virt. 20 ag 0.07213 X + Occ. 7 b1g --- Virt. 36 ag -0.09602 X + ---------------------------------------------------------------------------- + Root 11 singlet b1u 0.360291828 a.u. 9.8040 eV + ---------------------------------------------------------------------------- + Transition Moments X 0.00000 Y -0.00000 Z -0.77727 + Transition Moments XX 0.00000 XY -0.00000 XZ -0.00000 + Transition Moments YY 0.00000 YZ -0.00000 ZZ -0.00000 + Dipole Oscillator Strength 0.1451145008 + Electric Quadrupole 0.0000000000 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.1451145008 + + Exciton norm = 1.0019 + sigma_e = 3.1946 Angstrom + sigma_h = 1.2363 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 3.4171 Angstrom + d_CD = -2.2154 Angstrom + Pearson C.C. = 0.0072 + + Occ. 4 b2u --- Virt. 9 b3g -0.09238 X + Occ. 8 b1u --- Virt. 10 ag -0.22833 X + Occ. 8 b1u --- Virt. 15 ag -0.27760 X + Occ. 8 b1u --- Virt. 18 ag -0.51979 X + Occ. 8 b1u --- Virt. 20 ag -0.74490 X + Occ. 8 b1u --- Virt. 26 ag 0.09443 X + Occ. 8 b1u --- Virt. 36 ag 0.11741 X + Occ. 8 b1u --- Virt. 37 ag 0.08516 X + ---------------------------------------------------------------------------- + Root 12 singlet b2g 0.370794261 a.u. 10.0898 eV + ---------------------------------------------------------------------------- + Transition Moments X -0.00000 Y -0.00000 Z -0.00000 + Transition Moments XX -0.00000 XY -0.00000 XZ 0.48226 + Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 + Dipole Oscillator Strength 0.0000000000 + Electric Quadrupole 0.0000000631 + Magnetic Dipole 0.0000000000 + Total Oscillator Strength 0.0000000631 + + Exciton norm = 1.0003 + sigma_e = 4.1986 Angstrom + sigma_h = 1.2343 Angstrom + |d_h->e| = 0.0000 Angstrom + d_exc = 4.3754 Angstrom + d_CD = -2.7164 Angstrom + Pearson C.C. = 0.0007 + + Occ. 7 b1g --- Virt. 9 b3g -0.05230 X + Occ. 8 b1u --- Virt. 12 b3u -0.48002 X + Occ. 8 b1u --- Virt. 19 b3u -0.61254 X + Occ. 8 b1u --- Virt. 23 b3u 0.57753 X + Occ. 8 b1u --- Virt. 30 b3u 0.07044 X + Occ. 8 b1u --- Virt. 33 b3u 0.20774 X + Occ. 8 b1u --- Virt. 39 b3u -0.09137 X + + Task times cpu: 12.7s wall: 12.7s + + + NWChem Input Module + ------------------- + + + Summary of allocated global arrays +----------------------------------- + No active global arrays + + +MA_summarize_allocated_blocks: starting scan ... +MA_summarize_allocated_blocks: scan completed: 0 heap blocks, 0 stack blocks +MA usage statistics: + + allocation statistics: + heap stack + ---- ----- + current number of blocks 0 0 + maximum number of blocks 30 62 + current total bytes 0 0 + maximum total bytes 316535072 43735224 + maximum total K-bytes 316536 43736 + maximum total M-bytes 317 44 + + + CITATION + -------- + Please cite the following reference when publishing + results obtained with NWChem: + + E. Apra, E. J. Bylaska, W. A. de Jong, N. Govind, K. Kowalski, + T. P. Straatsma, M. Valiev, H. J. J. van Dam, Y. Alexeev, J. Anchell, + V. Anisimov, F. W. Aquino, R. Atta-Fynn, J. Autschbach, N. P. Bauman, + J. C. Becca, D. E. Bernholdt, K. Bhaskaran-Nair, S. Bogatko, P. Borowski, + J. Boschen, J. Brabec, A. Bruner, E. Cauet, Y. Chen, G. N. Chuev, + C. J. Cramer, J. Daily, M. J. O. Deegan, T. H. Dunning Jr., M. Dupuis, + K. G. Dyall, G. I. Fann, S. A. Fischer, A. Fonari, H. Fruchtl, L. Gagliardi, + J. Garza, N. Gawande, S. Ghosh, K. Glaesemann, A. W. Gotz, J. Hammond, + V. Helms, E. D. Hermes, K. Hirao, S. Hirata, M. Jacquelin, L. Jensen, + B. G. Johnson, H. Jonsson, R. A. Kendall, M. Klemm, R. Kobayashi, V. Konkov, + S. Krishnamoorthy, M. Krishnan, Z. Lin, R. D. Lins, R. J. Littlefield, + A. J. Logsdail, K. Lopata, W. Ma, A. V. Marenich, J. Martin del Campo, + D. Mejia-Rodriguez, J. E. Moore, J. M. Mullin, T. Nakajima, D. R. Nascimento, + J. A. Nichols, P. J. Nichols, J. Nieplocha, A. Otero-de-la-Roza, B. Palmer, + A. Panyala, T. Pirojsirikul, B. Peng, R. Peverati, J. Pittner, L. Pollack, + R. M. Richard, P. Sadayappan, G. C. Schatz, W. A. Shelton, D. W. Silverstein, + D. M. A. Smith, T. A. Soares, D. Song, M. Swart, H. L. Taylor, G. S. Thomas, + V. Tipparaju, D. G. Truhlar, K. Tsemekhman, T. Van Voorhis, + A. Vazquez-Mayagoitia, P. Verma, O. Villa, A. Vishnu, K. D. Vogiatzis, + D. Wang, J. H. Weare, M. J. Williamson, T. L. Windus, K. Wolinski, + A. T. Wong, Q. Wu, C. Yang, Q. Yu, M. Zacharias, Z. Zhang, Y. Zhao, + and R. J. Harrison + "NWChem: Past, present, and future + J. Chem. Phys. 152, 184102 (2020) + doi:10.1063/5.0004997 + + AUTHORS + ------- + E. Apra, E. J. Bylaska, N. Govind, K. Kowalski, D. Mejia-Rodriguez, + N. P. Bauman, A. Panyala, R. J. Harrison, M. Valiev, W. A. de Jong, + T. P. Straatsma, H. J. J. van Dam, D. Wang, T. L. Windus, J. Hammond, + J. Autschbach, R. de P. Soares, A. Kunitsa, K. Bhaskaran-Nair, J. Brabec, + K. Lopata, S. A. Fischer, S. Krishnamoorthy, M. Jacquelin, R. Goswami, + A. Woods, W. Ma, M. Klemm, O. Villa, Y. Chen, V. Anisimov, F. Aquino, + S. Hirata, M. T. Hackler, E. Hermes, L. Jensen, J. E. Moore, J. C. Becca, + V. Konjkov, T. Risthaus, M. Malagoli, A. Marenich, A. Otero-de-la-Roza, + J. Mullin, P. Nichols, R. Peverati, J. Pittner, Y. Zhao, P.-D. Fan, + A. Fonari, M. J. Williamson, J. R. Rehr, M. Dupuis, D. Silverstein, + D. M. A. Smith, J. Nieplocha, V. Tipparaju, M. Krishnan, B. E. Van Kuiken, + A. Vazquez-Mayagoitia, M. Swart, Q. Wu, T. Van Voorhis, A. A. Auer, + M. Nooijen, L. D. Crosby, E. Brown, G. Cisneros, G. I. Fann, H. Fruchtl, + J. Garza, K. Hirao, R. A. Kendall, J. A. Nichols, K. Tsemekhman, K. Wolinski, + J. Anchell, D. E. Bernholdt, P. Borowski, T. Clark, D. Clerc, H. Dachsel, + M. J. O. Deegan, K. Dyall, D. Elwood, E. Glendening, M. Gutowski, A. C. Hess, + J. Jaffe, B. G. Johnson, J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, + R. Littlefield, X. Long, B. Meng, T. Nakajima, S. Niu, L. Pollack, M. Rosing, + K. Glaesemann, G. Sandrone, M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, + A. T. Wong, Z. Zhang. + + Total times cpu: 22.6s wall: 22.6s diff --git a/QA/tests/gw_closedshell/gw_closedshell.nw b/QA/tests/gw_closedshell/gw_closedshell.nw index 811d01c3b2..89cf841965 100644 --- a/QA/tests/gw_closedshell/gw_closedshell.nw +++ b/QA/tests/gw_closedshell/gw_closedshell.nw @@ -35,11 +35,8 @@ end gw core - eta 0.01 method cdgw states alpha occ 7 - solver newton 15 - convergence 0.001 ev end task dft gw @@ -52,27 +49,8 @@ end gw core first 4 - eta 0.01 - method cdgw 128 - solver newton 15 + method cdgw states alpha occ 4 - convergence 0.001 ev -end - -task dft gw - -dft - noscf -end - -unset gw:first - -gw - core - eta 0.01 - solver newton 15 - states alpha occ 7 - convergence 0.001 ev end task dft gw diff --git a/QA/tests/gw_closedshell/gw_closedshell.out b/QA/tests/gw_closedshell/gw_closedshell.out index b65b475664..71df44359c 100644 --- a/QA/tests/gw_closedshell/gw_closedshell.out +++ b/QA/tests/gw_closedshell/gw_closedshell.out @@ -1,4 +1,5 @@ - argument 1 = gw_closedshell.nw + argument 1 = /people/meji656/calculations/bse/QA/gw_closedshell.nw + NWChem w/ OpenMP: maximum threads = 1 @@ -21,11 +22,11 @@ H 2.5025 -1.2628 -0.0022 H 0.9511 -2.0241 -0.0008 end -basis "ao basis" spherical +basis "ao basis" bse spherical * library cc-pvdz end -basis "cd basis" spherical +basis "cd basis" bse spherical * library cc-pvdz-rifit end @@ -40,11 +41,8 @@ end gw core - eta 0.01 method cdgw states alpha occ 7 - solver newton 15 - convergence 0.001 ev end task dft gw @@ -57,27 +55,8 @@ end gw core first 4 - eta 0.01 - method cdgw 128 - solver newton 15 + method cdgw states alpha occ 4 - convergence 0.001 ev -end - -task dft gw - -dft - noscf -end - -unset gw:first - -gw - core - eta 0.01 - solver newton 15 - states alpha occ 7 - convergence 0.001 ev end task dft gw @@ -88,7 +67,7 @@ task dft gw - Northwest Computational Chemistry Package (NWChem) 7.0.1 + Northwest Computational Chemistry Package (NWChem) 7.3.0 -------------------------------------------------------- @@ -96,7 +75,7 @@ task dft gw Pacific Northwest National Laboratory Richland, WA 99352 - Copyright (c) 1994-2020 + Copyright (c) 1994-2025 Pacific Northwest National Laboratory Battelle Memorial Institute @@ -121,21 +100,21 @@ task dft gw Job information --------------- - hostname = dmejiar-VirtualBox - program = nwchem - date = Fri Feb 4 04:13:35 2022 + hostname = dc004 + program = /qfs/people/meji656/software/nwchem.bse/bin/LINUX64/nwchem + date = Thu Oct 16 10:34:35 2025 - compiled = Fri_Feb_04_04:04:58_2022 - source = /home/dmejiar/Software/nwchem_gfortran_gw - nwchem branch = 7.0.0 - nwchem revision = nwchem_on_git-3497-g0c7e480c37 - ga revision = 5.8.1 - use scalapack = T - input = gw_closedshell.nw + compiled = Thu_Oct_16_10:07:15_2025 + source = /qfs/people/meji656/software/nwchem.bse + nwchem branch = 7.3.0 + nwchem revision = v7.2.0-beta1-1624-g0dc011d0a0 + ga revision = 5.9.2 + use scalapack = F + input = /people/meji656/calculations/bse/QA/gw_closedshell.nw prefix = gw_closedshell. data base = ./gw_closedshell.db status = startup - nproc = 2 + nproc = 7 time left = -1s @@ -143,10 +122,10 @@ task dft gw Memory information ------------------ - heap = 65536000 doubles = 500.0 Mbytes - stack = 65535997 doubles = 500.0 Mbytes - global = 131072000 doubles = 1000.0 Mbytes (distinct from heap & stack) - total = 262143997 doubles = 2000.0 Mbytes + heap = 65535998 doubles = 500.0 Mbytes + stack = 65535995 doubles = 500.0 Mbytes + global = 131072000 doubles = 1000.0 Mbytes (distinct from heap & stack) + total = 262143993 doubles = 2000.0 Mbytes verify = yes hardfail = no @@ -311,9 +290,6 @@ task dft gw - library name resolved from: environment - library file name is: - Summary of "ao basis" -> "" (spherical) @@ -323,9 +299,6 @@ task dft gw * cc-pvdz on all atoms - library name resolved from: environment - library file name is: - Summary of "cd basis" -> "" (spherical) @@ -337,8 +310,8 @@ task dft gw pbe96 is a nonlocal functional; adding pw91lda local functional. - NWChem GW@DFT Module - -------------------- + NWChem GW Module + ---------------- GW Trifluoroacetamide @@ -796,48 +769,48 @@ task dft gw HOMO = -0.354463 LUMO = 0.023799 - Time after variat. SCF: 1.2 + Time after variat. SCF: 0.8 3 Center 2 Electron Integral Information ---------------------------------------- Maximum number of 3-center 2e- integrals is: 4898880. This is reduced with Schwarz screening to: 3084900. - Incore requires a per proc buffer size of: 1377181. + Incore requires a per proc buffer size of: 398581. Minimum dble words available (all nodes) is: 131060988 - This is reduced (for later use) to: 130785792 - proc 0 Suggested buffer size is: 1377181 - Max Suggested buffer size is: 1377181 + This is reduced (for later use) to: 130844112 + proc 0 Suggested buffer size is: 398581 + Max Suggested buffer size is: 398581 no. integral batches is: 1000 Incore memory use for 3-center 2e- integrals is turned off. - Time prior to 1st pass: 1.2 + Time prior to 1st pass: 0.8 Memory utilization after 1st SCF pass: - Heap Space remaining (MW): 65.53 65525792 - Stack Space remaining (MW): 65.54 65535156 + Heap Space remaining (MW): 65.53 65525790 + Stack Space remaining (MW): 65.54 65535148 convergence iter energy DeltaE RMS-Dens Diis-err time ---------------- ----- ----------------- --------- --------- --------- ------ - d= 0,ls=0.0,diis 1 -506.2138586363 -8.41D+02 1.85D-02 2.46D+00 5.4 - d= 0,ls=0.0,diis 2 -505.9428729180 2.71D-01 1.15D-02 5.90D+00 9.7 - d= 0,ls=0.0,diis 3 -506.4729357426 -5.30D-01 2.21D-03 1.04D-01 13.9 - d= 0,ls=0.0,diis 4 -506.4807116964 -7.78D-03 8.40D-04 2.68D-02 18.1 - d= 0,ls=0.0,diis 5 -506.4832631842 -2.55D-03 1.27D-04 5.68D-04 23.8 + d= 0,ls=0.0,diis 1 -506.2138586373 -8.41D+02 1.85D-02 2.46D+00 1.3 + d= 0,ls=0.0,diis 2 -505.9428729965 2.71D-01 1.15D-02 5.90D+00 1.9 + d= 0,ls=0.0,diis 3 -506.4729357440 -5.30D-01 2.21D-03 1.04D-01 2.4 + d= 0,ls=0.0,diis 4 -506.4807116867 -7.78D-03 8.40D-04 2.68D-02 3.0 + d= 0,ls=0.0,diis 5 -506.4832631820 -2.55D-03 1.27D-04 5.68D-04 3.7 Resetting Diis - d= 0,ls=0.0,diis 6 -506.4833170187 -5.38D-05 4.21D-05 2.12D-05 29.7 - d= 0,ls=0.0,diis 7 -506.4833201162 -3.10D-06 2.25D-05 3.93D-06 36.1 - d= 0,ls=0.0,diis 8 -506.4833202140 -9.77D-08 9.51D-06 4.40D-06 42.1 + d= 0,ls=0.0,diis 6 -506.4833170167 -5.38D-05 4.21D-05 2.12D-05 4.4 + d= 0,ls=0.0,diis 7 -506.4833201141 -3.10D-06 2.25D-05 3.93D-06 5.2 + d= 0,ls=0.0,diis 8 -506.4833202118 -9.77D-08 9.51D-06 4.40D-06 5.9 - Total DFT energy = -506.483320213950 - One electron energy = -1365.175909550851 - Coulomb energy = 581.765579688889 - Exchange-Corr. energy = -58.042890125742 + Total DFT energy = -506.483320211761 + One electron energy = -1365.175909547848 + Coulomb energy = 581.765579681333 + Exchange-Corr. energy = -58.042890118999 Nuclear repulsion energy = 334.969899773753 - Numeric. integr. density = 56.000003719920 + Numeric. integr. density = 56.000003716419 - Total iterative time = 40.9s + Total iterative time = 5.1s @@ -870,32 +843,36 @@ task dft gw 2 0 0 2 -28.307350 -52.360374 -52.360374 76.413398 - *********************** - *** GW@DFT *** - *********************** + *********************** + *** GW *** + *********************** Memory Information ------------------ - Available GA per process is 999.9 MBs + Available GA per process is 1000.0 MBs Available stack per process is 500.0 MBs Available heap per process is 499.9 MBs Peak memory in Initialization - Peak GA per process is 5.6 MBs + Peak GA per process is 1.6 MBs Peak stack per process is 0.1 MBs - Peak heap per process is 6.5 MBs + Peak heap per process is 2.9 MBs Memory not in MA per process 0.0 MBs Peak memory in CDGW Calculation - Peak GA per process is 7.0 MBs + Peak GA per process is 2.0 MBs Peak stack per process is 2.7 MBs - Peak heap per process is 2.1 MBs + Peak heap per process is 1.3 MBs Memory not in MA per process 0.0 MBs Computing 2-center integrals Computing Inverse Cholesky factor Computing 3-center integrals + Transform ERIs + Distribute ERIs + Read inverse + Orthogonalize ERIs Computing Vxc Computing Sigma_x Computing W(iw) on the imaginary grid @@ -904,28 +881,28 @@ task dft gw Alpha Orbitals State Energy (eV) Error (eV) ----------------------------------- -@GW 1 -695.048 0.000 -@GW 2 -694.653 0.000 -@GW 3 -694.648 0.000 -@GW 4 -538.987 0.000 -@GW 5 -408.010 0.000 -@GW 6 -300.254 0.000 -@GW 7 -296.783 0.000 +@GW 1 -695.046 0.002 +@GW 2 -694.650 0.002 +@GW 3 -694.645 0.002 +@GW 4 -538.980 0.006 +@GW 5 -408.006 0.001 +@GW 6 -300.252 0.002 +@GW 7 -296.781 0.002 GW Timing Statistics ------------------------ Init. : 0.1s - ERIs : 0.7s + ERIs : 0.2s Distr.: 0.0s - Vxc : 4.9s + Vxc : 0.5s Vmo : 0.0s - iW : 2.8s + iW : 0.9s I_n : 0.0s - R_n : 1.1s - GW total: 9.6s + R_n : 0.2s + GW total: 2.0s - Task times cpu: 51.4s wall: 51.6s + Task times cpu: 7.6s wall: 7.6s NWChem Input Module @@ -933,8 +910,8 @@ task dft gw - NWChem GW@DFT Module - -------------------- + NWChem GW Module + ---------------- GW Trifluoroacetamide @@ -1034,34 +1011,34 @@ task dft gw Loading old vectors from job with title : -GW Trifluoroacetamide +W vals - Time after variat. SCF: 51.9 + Time after variat. SCF: 8.0 3 Center 2 Electron Integral Information ---------------------------------------- Maximum number of 3-center 2e- integrals is: 4898880. This is reduced with Schwarz screening to: 3084900. - Incore requires a per proc buffer size of: 1377181. + Incore requires a per proc buffer size of: 398581. Minimum dble words available (all nodes) is: 131060988 - This is reduced (for later use) to: 130586152 - proc 0 Suggested buffer size is: 1377181 - Max Suggested buffer size is: 1377181 + This is reduced (for later use) to: 130644472 + proc 0 Suggested buffer size is: 398581 + Max Suggested buffer size is: 398581 no. integral batches is: 1000 Incore memory use for 3-center 2e- integrals is turned off. - Time prior to 1st pass: 51.9 + Time prior to 1st pass: 8.0 - Total DFT energy = -506.483320618786 - One electron energy = -1365.176616645610 - Coulomb energy = 581.766179275143 - Exchange-Corr. energy = -58.042783022072 + Total DFT energy = -506.483320616637 + One electron energy = -1365.176616647789 + Coulomb energy = 581.766179277314 + Exchange-Corr. energy = -58.042783019915 Nuclear repulsion energy = 334.969899773753 - Numeric. integr. density = 56.000003720190 + Numeric. integr. density = 56.000003716815 - Total iterative time = 5.9s + Total iterative time = 0.7s @@ -1094,32 +1071,36 @@ GW Trifluoroacetamide 2 0 0 2 -28.307350 -52.360374 -52.360374 76.413398 - *********************** - *** GW@DFT *** - *********************** + *********************** + *** GW *** + *********************** Memory Information ------------------ - Available GA per process is 999.9 MBs + Available GA per process is 1000.0 MBs Available stack per process is 500.0 MBs Available heap per process is 499.9 MBs Peak memory in Initialization - Peak GA per process is 5.6 MBs + Peak GA per process is 1.6 MBs Peak stack per process is 0.1 MBs - Peak heap per process is 6.5 MBs + Peak heap per process is 2.9 MBs Memory not in MA per process 0.0 MBs Peak memory in CDGW Calculation - Peak GA per process is 7.0 MBs + Peak GA per process is 2.0 MBs Peak stack per process is 2.7 MBs - Peak heap per process is 1.5 MBs + Peak heap per process is 1.2 MBs Memory not in MA per process 0.0 MBs Computing 2-center integrals Computing Inverse Cholesky factor Computing 3-center integrals + Transform ERIs + Distribute ERIs + Read inverse + Orthogonalize ERIs Computing Vxc Computing Sigma_x Computing W(iw) on the imaginary grid @@ -1128,249 +1109,25 @@ GW Trifluoroacetamide Alpha Orbitals State Energy (eV) Error (eV) ----------------------------------- -@GW 4 -538.987 0.000 -@GW 5 -408.010 0.000 -@GW 6 -300.254 0.000 -@GW 7 -296.783 0.000 +@GW 4 -538.980 0.006 +@GW 5 -408.006 0.001 +@GW 6 -300.252 0.002 +@GW 7 -296.781 0.002 GW Timing Statistics ------------------------ Init. : 0.1s - ERIs : 0.8s + ERIs : 0.2s Distr.: 0.0s - Vxc : 4.9s + Vxc : 0.5s Vmo : 0.0s - iW : 1.6s + iW : 0.9s I_n : 0.0s - R_n : 0.6s - GW total: 8.0s + R_n : 0.1s + GW total: 1.8s - Task times cpu: 14.1s wall: 14.1s - - - NWChem Input Module - ------------------- - - - - NWChem GW@DFT Module - -------------------- - - - GW Trifluoroacetamide - - - - NWChem DFT Module - ----------------- - - - GW Trifluoroacetamide - - - - - Summary of "ao basis" -> "ao basis" (spherical) - ------------------------------------------------------------------------------ - Tag Description Shells Functions and Types - ---------------- ------------------------------ ------ --------------------- - F cc-pvdz 6 14 3s2p1d - O cc-pvdz 6 14 3s2p1d - N cc-pvdz 6 14 3s2p1d - C cc-pvdz 6 14 3s2p1d - H cc-pvdz 3 5 2s1p - - - Caching 1-el integrals - - General Information - ------------------- - SCF calculation type: DFT - Wavefunction type: closed shell. - No. of atoms : 9 - No. of electrons : 56 - Alpha electrons : 28 - Beta electrons : 28 - Charge : 0 - Spin multiplicity: 1 - Use of symmetry is: off; symmetry adaption is: off - Maximum number of iterations: 50 - This is a Direct SCF calculation. - AO basis - number of functions: 108 - number of shells: 48 - A Charge density fitting basis will be used. - CD basis - number of functions: 420 - number of shells: 138 - Convergence on energy requested: 1.00D-06 - Convergence on density requested: 1.00D-05 - Convergence on gradient requested: 5.00D-04 - - XC Information - -------------- - Hartree-Fock (Exact) Exchange 0.450 - PerdewBurkeErnzerhof Exchange Functional 0.550 - Perdew 1991 LDA Correlation Functional 1.000 local - PerdewBurkeErnz. Correlation Functional 1.000 non-local - - Grid Information - ---------------- - Grid used for XC integration: medium - Radial quadrature: Mura-Knowles - Angular quadrature: Lebedev. - Tag B.-S. Rad. Rad. Pts. Rad. Cut. Ang. Pts. - --- ---------- --------- --------- --------- - F 0.50 49 11.0 434 - O 0.60 49 9.0 434 - N 0.65 49 8.0 434 - C 0.70 49 10.0 434 - H 0.35 45 10.0 434 - Grid pruning is: on - Number of quadrature shells: 433 - Spatial weights used: Erf1 - - Convergence Information - ----------------------- - Convergence aids based upon iterative change in - total energy or number of iterations. - Levelshifting, if invoked, occurs when the - HOMO/LUMO gap drops below (HL_TOL): 1.00D-02 - DIIS, if invoked, will attempt to extrapolate - using up to (NFOCK): 10 stored Fock matrices. - - Damping( 0%) Levelshifting(0.5) DIIS - --------------- ------------------- --------------- - dE on: start ASAP start - dE off: 2 iters 50 iters 50 iters - - - Screening Tolerance Information - ------------------------------- - Density screening/tol_rho: 1.00D-10 - AO Gaussian exp screening on grid/accAOfunc: 14 - CD Gaussian exp screening on grid/accCDfunc: 20 - XC Gaussian exp screening on grid/accXCfunc: 20 - Schwarz screening/accCoul: 1.00D-12 - - - Loading old vectors from job with title : - -GW Trifluoroacetamide - - Time after variat. SCF: 66.0 - - 3 Center 2 Electron Integral Information - ---------------------------------------- - Maximum number of 3-center 2e- integrals is: 4898880. - This is reduced with Schwarz screening to: 3084900. - Incore requires a per proc buffer size of: 1377181. - Minimum dble words available (all nodes) is: 131060988 - This is reduced (for later use) to: 130586152 - proc 0 Suggested buffer size is: 1377181 - Max Suggested buffer size is: 1377181 - no. integral batches is: 1000 - - Incore memory use for 3-center 2e- integrals is turned off. - Time prior to 1st pass: 66.0 - - - Total DFT energy = -506.483320619392 - One electron energy = -1365.176616645610 - Coulomb energy = 581.766179275142 - Exchange-Corr. energy = -58.042783022677 - Nuclear repulsion energy = 334.969899773753 - - Numeric. integr. density = 56.000003721840 - - Total iterative time = 5.9s - - - - center of mass - -------------- - x = 0.05046829 y = 0.11377991 z = 0.00004386 - - moments of inertia (a.u.) - ------------------ - 724.808949354496 0.000000000000 0.000000000000 - 0.000000000000 484.336918953950 -0.000000000000 - 0.000000000000 -0.000000000000 886.538753836127 - - Multipole analysis of the density - --------------------------------- - - L x y z total alpha beta nuclear - - - - - ----- ----- ---- ------- - 0 0 0 0 -0.000000 -28.000000 -28.000000 56.000000 - - 1 1 0 0 -1.489094 -0.744547 -0.744547 -0.000000 - 1 0 1 0 -0.546971 -0.273486 -0.273486 0.000000 - 1 0 0 1 0.000605 0.000302 0.000302 0.000000 - - 2 2 0 0 -27.181301 -96.832025 -96.832025 166.482750 - 2 1 1 0 4.886093 -1.980672 -1.980672 8.847437 - 2 1 0 1 0.002838 -0.001223 -0.001223 0.005284 - 2 0 2 0 -26.258758 -158.160655 -158.160655 290.062553 - 2 0 1 1 -0.001360 -0.006340 -0.006340 0.011320 - 2 0 0 2 -28.307350 -52.360374 -52.360374 76.413398 - - - *********************** - *** GW@DFT *** - *********************** - - - Memory Information - ------------------ - Available GA per process is 999.9 MBs - Available stack per process is 500.0 MBs - Available heap per process is 499.9 MBs - - Peak memory in Initialization - Peak GA per process is 5.6 MBs - Peak stack per process is 0.1 MBs - Peak heap per process is 6.5 MBs - Memory not in MA per process 0.0 MBs - - Peak memory in AFF Calculation - Peak GA per process is 27.6 MBs - Peak stack per process is 38.3 MBs - Peak heap per process is 0.0 MBs - Memory not in MA per process 38.3 MBs - - Computing 2-center integrals - Computing Inverse Cholesky factor - Computing 3-center integrals - Computing V_xc ... - Computing Sigma_x - Computing RPA polarizability - Solving quasiparticle equations - - Alpha Orbitals - State Energy (eV) Error (eV) - ----------------------------------- -@GW 1 -695.048 0.000 -@GW 2 -694.652 0.000 -@GW 3 -694.648 0.000 -@GW 4 -538.986 0.000 -@GW 5 -408.009 0.000 -@GW 6 -300.254 0.000 -@GW 7 -296.783 0.000 - - GW Timing Statistics - ------------------------ - Init. : 0.1s - ERIs : 0.7s - Distr.: 0.0s - Vxc : 4.7s - Sigma_x : 0.0s - RPA : 2.6s - Wmn : 0.1s - Sigma_c : 0.0s - GW total: 8.4s - - - Task times cpu: 14.3s wall: 14.4s + Task times cpu: 2.6s wall: 2.6s NWChem Input Module @@ -1390,11 +1147,11 @@ MA usage statistics: heap stack ---- ----- current number of blocks 0 0 - maximum number of blocks 28 56 + maximum number of blocks 28 62 current total bytes 0 0 - maximum total bytes 25980280 80584200 - maximum total K-bytes 25981 80585 - maximum total M-bytes 26 81 + maximum total bytes 22153480 30740728 + maximum total K-bytes 22154 30741 + maximum total M-bytes 23 31 CITATION @@ -1430,24 +1187,25 @@ MA usage statistics: AUTHORS ------- - E. Apra, E. J. Bylaska, N. Govind, K. Kowalski, M. Valiev, W. A. de Jong, - T. P. Straatsma, H. J. J. van Dam, D. Wang, T. L. Windus, N. P. Bauman, - A. Panyala, J. Hammond, J. Autschbach, K. Bhaskaran-Nair, J. Brabec, - K. Lopata, S. A. Fischer, S. Krishnamoorthy, M. Jacquelin, W. Ma, M. Klemm, - O. Villa, Y. Chen, V. Anisimov, F. Aquino, S. Hirata, M. T. Hackler, - Eric Hermes, L. Jensen, J. E. Moore, J. C. Becca, V. Konjkov, - D. Mejia-Rodriguez, T. Risthaus, M. Malagoli, A. Marenich, - A. Otero-de-la-Roza, J. Mullin, P. Nichols, R. Peverati, J. Pittner, Y. Zhao, - P.-D. Fan, A. Fonari, M. J. Williamson, R. J. Harrison, J. R. Rehr, - M. Dupuis, D. Silverstein, D. M. A. Smith, J. Nieplocha, V. Tipparaju, - M. Krishnan, B. E. Van Kuiken, A. Vazquez-Mayagoitia, M. Swart, Q. Wu, - T. Van Voorhis, A. A. Auer, M. Nooijen, L. D. Crosby, E. Brown, G. Cisneros, - G. I. Fann, H. Fruchtl, J. Garza, K. Hirao, R. A. Kendall, J. A. Nichols, - K. Tsemekhman, K. Wolinski, J. Anchell, D. E. Bernholdt, P. Borowski, - T. Clark, D. Clerc, H. Dachsel, M. J. O. Deegan, K. Dyall, D. Elwood, - E. Glendening, M. Gutowski, A. C. Hess, J. Jaffe, B. G. Johnson, J. Ju, - R. Kobayashi, R. Kutteh, Z. Lin, R. Littlefield, X. Long, B. Meng, - T. Nakajima, S. Niu, L. Pollack, M. Rosing, K. Glaesemann, G. Sandrone, - M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, A. T. Wong, Z. Zhang. + E. Apra, E. J. Bylaska, N. Govind, K. Kowalski, D. Mejia-Rodriguez, + N. P. Bauman, A. Panyala, R. J. Harrison, M. Valiev, W. A. de Jong, + T. P. Straatsma, H. J. J. van Dam, D. Wang, T. L. Windus, J. Hammond, + J. Autschbach, R. de P. Soares, A. Kunitsa, K. Bhaskaran-Nair, J. Brabec, + K. Lopata, S. A. Fischer, S. Krishnamoorthy, M. Jacquelin, R. Goswami, + A. Woods, W. Ma, M. Klemm, O. Villa, Y. Chen, V. Anisimov, F. Aquino, + S. Hirata, M. T. Hackler, E. Hermes, L. Jensen, J. E. Moore, J. C. Becca, + V. Konjkov, T. Risthaus, M. Malagoli, A. Marenich, A. Otero-de-la-Roza, + J. Mullin, P. Nichols, R. Peverati, J. Pittner, Y. Zhao, P.-D. Fan, + A. Fonari, M. J. Williamson, J. R. Rehr, M. Dupuis, D. Silverstein, + D. M. A. Smith, J. Nieplocha, V. Tipparaju, M. Krishnan, B. E. Van Kuiken, + A. Vazquez-Mayagoitia, M. Swart, Q. Wu, T. Van Voorhis, A. A. Auer, + M. Nooijen, L. D. Crosby, E. Brown, G. Cisneros, G. I. Fann, H. Fruchtl, + J. Garza, K. Hirao, R. A. Kendall, J. A. Nichols, K. Tsemekhman, K. Wolinski, + J. Anchell, D. E. Bernholdt, P. Borowski, T. Clark, D. Clerc, H. Dachsel, + M. J. O. Deegan, K. Dyall, D. Elwood, E. Glendening, M. Gutowski, A. C. Hess, + J. Jaffe, B. G. Johnson, J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, + R. Littlefield, X. Long, B. Meng, T. Nakajima, S. Niu, L. Pollack, M. Rosing, + K. Glaesemann, G. Sandrone, M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, + A. T. Wong, Z. Zhang. - Total times cpu: 79.8s wall: 80.2s + Total times cpu: 10.5s wall: 10.5s diff --git a/QA/tests/gw_openshell/gw_openshell.out b/QA/tests/gw_openshell/gw_openshell.out index 194a2425fc..406ffc5cad 100644 --- a/QA/tests/gw_openshell/gw_openshell.out +++ b/QA/tests/gw_openshell/gw_openshell.out @@ -1,4 +1,5 @@ - argument 1 = gw_openshell.nw + argument 1 = /people/meji656/calculations/bse/QA/gw_openshell.nw + NWChem w/ OpenMP: maximum threads = 1 @@ -17,11 +18,11 @@ H 2.5025 -1.2628 -0.0022 H 0.9511 -2.0241 -0.0008 end -basis "ao basis" spherical +basis "ao basis" bse spherical * library cc-pvdz end -basis "cd basis" spherical +basis "cd basis" bse spherical * library cc-pvdz-rifit end @@ -29,35 +30,18 @@ end dft odft mult 2 - xc pbe96 + xc pbe0 direct grid fine nodisk - tolerances accCoul 14 + tolerances accCoul 12 convergence energy 1d-8 noprint "final vectors analysis" end gw - eta 0.001 method cdgw - solver newton 20 states alpha occ 5 vir 5 states beta occ 5 vir 5 - convergence 0.001 ev -end - -task dft gw - -dft - noscf -end - -gw - eta 0.001 - solver newton 20 - states alpha occ 5 vir 5 - states beta occ 5 vir 5 - convergence 0.001 ev end task dft gw @@ -69,7 +53,7 @@ task dft gw - Northwest Computational Chemistry Package (NWChem) 7.0.1 + Northwest Computational Chemistry Package (NWChem) 7.3.0 -------------------------------------------------------- @@ -77,7 +61,7 @@ task dft gw Pacific Northwest National Laboratory Richland, WA 99352 - Copyright (c) 1994-2020 + Copyright (c) 1994-2025 Pacific Northwest National Laboratory Battelle Memorial Institute @@ -102,21 +86,21 @@ task dft gw Job information --------------- - hostname = dmejiar-VirtualBox - program = nwchem - date = Fri Feb 4 10:51:34 2022 + hostname = dc006 + program = /qfs/people/meji656/software/nwchem.bse/bin/LINUX64/nwchem + date = Thu Oct 16 10:35:25 2025 - compiled = Fri_Feb_04_04:17:52_2022 - source = /home/dmejiar/Software/nwchem_gfortran_gw - nwchem branch = 7.0.0 - nwchem revision = nwchem_on_git-3497-g0c7e480c37 - ga revision = 5.8.1 - use scalapack = T - input = gw_openshell.nw + compiled = Thu_Oct_16_10:07:15_2025 + source = /qfs/people/meji656/software/nwchem.bse + nwchem branch = 7.3.0 + nwchem revision = v7.2.0-beta1-1624-g0dc011d0a0 + ga revision = 5.9.2 + use scalapack = F + input = /people/meji656/calculations/bse/QA/gw_openshell.nw prefix = gw_openshell. data base = ./gw_openshell.db status = startup - nproc = 2 + nproc = 7 time left = -1s @@ -124,10 +108,10 @@ task dft gw Memory information ------------------ - heap = 65535996 doubles = 500.0 Mbytes - stack = 65536001 doubles = 500.0 Mbytes - global = 131072000 doubles = 1000.0 Mbytes (distinct from heap & stack) - total = 262143997 doubles = 2000.0 Mbytes + heap = 65535998 doubles = 500.0 Mbytes + stack = 65535995 doubles = 500.0 Mbytes + global = 131072000 doubles = 1000.0 Mbytes (distinct from heap & stack) + total = 262143993 doubles = 2000.0 Mbytes verify = yes hardfail = no @@ -251,9 +235,6 @@ task dft gw - library name resolved from: environment - library file name is: - Summary of "ao basis" -> "" (spherical) @@ -263,9 +244,6 @@ task dft gw * cc-pvdz on all atoms - library name resolved from: environment - library file name is: - Summary of "cd basis" -> "" (spherical) @@ -276,8 +254,8 @@ task dft gw - NWChem GW@DFT Module - -------------------- + NWChem GW Module + ---------------- GW Trifluoroacetamide @@ -603,8 +581,9 @@ task dft gw XC Information -------------- - PBE96 Method XC Functional - PerdewBurkeErnzerhof Exchange Functional 1.000 + PBE0 Method XC Functional + Hartree-Fock (Exact) Exchange 0.250 + PerdewBurkeErnzerhof Exchange Functional 0.750 Perdew 1991 LDA Correlation Functional 1.000 local PerdewBurkeErnz. Correlation Functional 1.000 non-local @@ -644,7 +623,7 @@ task dft gw AO Gaussian exp screening on grid/accAOfunc: 18 CD Gaussian exp screening on grid/accCDfunc: 20 XC Gaussian exp screening on grid/accXCfunc: 20 - Schwarz screening/accCoul: 1.00D-14 + Schwarz screening/accCoul: 1.00D-12 Superposition of Atomic Density Guess @@ -661,64 +640,64 @@ task dft gw HOMO = -0.154097 LUMO = 0.070838 - Time after variat. SCF: 0.6 + Time after variat. SCF: 0.5 3 Center 2 Electron Integral Information ---------------------------------------- Maximum number of 3-center 2e- integrals is: 529984. This is reduced with Schwarz screening to: 367500. - Incore requires a per proc buffer size of: 175029. + Incore requires a per proc buffer size of: 57037. Minimum dble words available (all nodes) is: 131065476 - This is reduced (for later use) to: 130813264 - proc 0 Suggested buffer size is: 175029 - Max Suggested buffer size is: 175029 + This is reduced (for later use) to: 130826784 + proc 0 Suggested buffer size is: 57037 + Max Suggested buffer size is: 57037 no. integral batches is: 1000 Incore memory use for 3-center 2e- integrals is turned off. - Time prior to 1st pass: 0.6 + Time prior to 1st pass: 0.5 Memory utilization after 1st SCF pass: - Heap Space remaining (MW): 65.53 65530108 - Stack Space remaining (MW): 65.54 65535324 + Heap Space remaining (MW): 65.53 65530110 + Stack Space remaining (MW): 65.54 65535316 convergence iter energy DeltaE RMS-Dens Diis-err time ---------------- ----- ----------------- --------- --------- --------- ------ - d= 0,ls=0.0,diis 1 -168.9561121185 -2.32D+02 2.05D-02 2.18D-01 1.5 - 1.84D-02 2.17D-01 - d= 0,ls=0.0,diis 2 -167.9504224824 1.01D+00 1.76D-02 2.63D+00 2.5 - 1.47D-02 2.33D+00 - d= 0,ls=0.0,diis 3 -169.0537934402 -1.10D+00 3.84D-03 2.91D-02 3.3 - 2.75D-03 2.86D-02 - d= 0,ls=0.0,diis 4 -169.0564442937 -2.65D-03 2.06D-03 2.17D-02 4.1 - 1.46D-03 2.00D-02 - d= 0,ls=0.0,diis 5 -169.0660484759 -9.60D-03 2.88D-04 5.93D-04 4.8 - 2.45D-04 5.80D-04 + d= 0,ls=0.0,diis 1 -168.9657539772 -2.32D+02 1.39D-02 1.93D-01 0.6 + 1.31D-02 1.92D-01 + d= 0,ls=0.0,diis 2 -168.6178260793 3.48D-01 1.00D-02 1.13D+00 0.8 + 9.06D-03 1.06D+00 + d= 0,ls=0.0,diis 3 -169.0613313228 -4.44D-01 1.36D-03 7.44D-03 0.9 + 1.32D-03 8.46D-03 + d= 0,ls=0.0,diis 4 -169.0630054773 -1.67D-03 9.29D-04 4.19D-03 1.1 + 5.76D-04 3.46D-03 + d= 0,ls=0.0,diis 5 -169.0646959497 -1.69D-03 1.55D-04 1.38D-04 1.2 + 1.31D-04 1.63D-04 Resetting Diis - d= 0,ls=0.0,diis 6 -169.0663002306 -2.52D-04 1.01D-04 2.23D-05 5.6 - 6.70D-05 2.22D-05 - d= 0,ls=0.0,diis 7 -169.0663113153 -1.11D-05 8.27D-05 2.77D-06 6.5 - 5.41D-05 1.73D-06 - d= 0,ls=0.0,diis 8 -169.0663035508 7.76D-06 4.90D-05 2.02D-05 7.2 - 4.55D-05 2.15D-05 - d= 0,ls=0.0,diis 9 -169.0663123641 -8.81D-06 1.02D-05 3.98D-07 8.1 - 7.29D-06 3.32D-07 - d= 0,ls=0.0,diis 10 -169.0663125308 -1.67D-07 2.91D-06 3.07D-08 8.9 - 2.57D-06 3.01D-08 - d= 0,ls=0.0,diis 11 -169.0663125423 -1.15D-08 1.15D-06 1.20D-08 9.6 - 1.36D-06 1.15D-08 - d= 0,ls=0.0,diis 12 -169.0663125471 -4.87D-09 6.52D-07 1.79D-09 10.4 - 2.64D-07 1.06D-09 + d= 0,ls=0.0,diis 6 -169.0647672024 -7.13D-05 4.96D-05 7.61D-06 1.4 + 5.91D-05 7.90D-06 + d= 0,ls=0.0,diis 7 -169.0647730165 -5.81D-06 5.03D-05 2.16D-06 1.6 + 1.81D-05 8.25D-07 + d= 0,ls=0.0,diis 8 -169.0647729684 4.81D-08 1.78D-05 2.36D-06 1.7 + 2.14D-05 3.64D-06 + d= 0,ls=0.0,diis 9 -169.0647741451 -1.18D-06 9.22D-06 5.57D-07 1.9 + 4.55D-06 2.30D-07 + d= 0,ls=0.0,diis 10 -169.0647743526 -2.08D-07 9.00D-06 4.08D-08 2.0 + 8.19D-06 2.42D-08 + d= 0,ls=0.0,diis 11 -169.0647744288 -7.62D-08 2.13D-06 7.37D-09 2.2 + 1.35D-06 1.44D-09 + d= 0,ls=0.0,diis 12 -169.0647744339 -5.12D-09 7.95D-07 7.61D-10 2.4 + 6.20D-07 8.83D-10 - Total DFT energy = -169.066312547124 - One electron energy = -355.393819271438 - Coulomb energy = 144.424914623888 - Exchange-Corr. energy = -21.405786398232 + Total DFT energy = -169.064774433940 + One electron energy = -355.358774131041 + Coulomb energy = 144.394070494508 + Exchange-Corr. energy = -21.408449296065 Nuclear repulsion energy = 63.308378498658 - Numeric. integr. density = 22.999999954116 + Numeric. integr. density = 22.999999950860 - Total iterative time = 9.8s + Total iterative time = 1.9s @@ -728,27 +707,27 @@ task dft gw alpha 1 2 3 4 5 6 7 8 9 10 beta 1 2 3 4 5 6 7 8 9 10 - overlap 1.000 1.000 1.000 1.000 1.000 0.996 0.996 0.990 1.000 0.985 + overlap 1.000 1.000 1.000 1.000 0.999 0.993 0.991 0.974 1.000 0.968 alpha 11 12 13 14 15 16 17 18 19 20 beta 11 12 13 14 15 16 17 18 19 20 - overlap 1.000 0.993 0.999 0.994 0.995 0.999 0.999 0.952 1.000 0.945 + overlap 1.000 0.985 0.999 0.987 0.993 0.998 0.997 0.946 1.000 0.920 alpha 21 22 23 24 25 26 27 28 29 30 - beta 21 22 23 24 25 26 27 28 29 30 - overlap 0.958 0.999 0.998 1.000 0.998 0.999 0.998 0.996 0.997 0.980 + beta 21 22 23 24 25 26 27 28 30 29 + overlap 0.928 0.997 0.998 1.000 0.997 0.999 0.996 0.993 0.996 0.977 alpha 31 32 33 34 35 36 37 38 39 40 beta 31 32 33 34 35 36 37 38 39 40 - overlap 0.985 0.996 0.991 0.992 0.999 1.000 0.997 0.994 0.997 0.999 + overlap 0.983 0.995 0.992 0.993 0.999 1.000 0.986 0.979 0.993 1.000 alpha 41 42 43 44 45 46 47 48 49 50 beta 41 42 43 44 45 46 47 48 49 50 - overlap 0.999 0.996 0.994 0.999 0.998 0.998 1.000 0.999 0.999 1.000 + overlap 0.999 0.999 0.992 0.994 0.998 0.997 1.000 0.998 0.999 1.000 alpha 51 52 @@ -758,7 +737,7 @@ task dft gw -------------------------- Expectation value of S2: -------------------------- - = 0.7519 (Exact = 0.7500) + = 0.7537 (Exact = 0.7500) center of mass @@ -778,21 +757,21 @@ task dft gw - - - - ----- ----- ---- ------- 0 0 0 0 -0.000000 -12.000000 -11.000000 23.000000 - 1 1 0 0 0.238427 0.541429 -0.303002 0.000000 - 1 0 1 0 -1.321737 -0.969708 -0.352030 0.000000 - 1 0 0 1 0.000663 -0.000054 0.000717 0.000000 + 1 1 0 0 0.206401 0.547712 -0.341311 0.000000 + 1 0 1 0 -1.390130 -1.013204 -0.376927 0.000000 + 1 0 0 1 0.000816 0.000001 0.000815 0.000000 - 2 2 0 0 -11.884337 -13.068472 -9.699498 10.883633 - 2 1 1 0 -0.250985 0.506239 0.213062 -0.970286 - 2 1 0 1 0.006019 -0.000243 -0.000755 0.007017 - 2 0 2 0 -11.275818 -52.448505 -49.703057 90.875744 - 2 0 1 1 0.001863 0.000480 -0.000509 0.001891 - 2 0 0 2 -13.100006 -6.900236 -6.199822 0.000052 + 2 2 0 0 -11.728128 -12.959803 -9.651957 10.883633 + 2 1 1 0 -0.304140 0.447969 0.218176 -0.970286 + 2 1 0 1 0.006364 0.000093 -0.000746 0.007017 + 2 0 2 0 -11.396501 -52.445939 -49.826305 90.875744 + 2 0 1 1 0.001878 0.000424 -0.000437 0.001891 + 2 0 0 2 -13.115703 -6.888717 -6.227038 0.000052 - *********************** - *** GW@DFT *** - *********************** + *********************** + *** GW *** + *********************** Memory Information @@ -802,20 +781,24 @@ task dft gw Available heap per process is 500.0 MBs Peak memory in Initialization - Peak GA per process is 1.4 MBs + Peak GA per process is 0.4 MBs Peak stack per process is 0.0 MBs - Peak heap per process is 1.6 MBs + Peak heap per process is 0.7 MBs Memory not in MA per process 0.0 MBs Peak memory in CDGW Calculation - Peak GA per process is 1.7 MBs + Peak GA per process is 0.5 MBs Peak stack per process is 0.6 MBs - Peak heap per process is 1.5 MBs + Peak heap per process is 0.7 MBs Memory not in MA per process 0.0 MBs Computing 2-center integrals Computing Inverse Cholesky factor Computing 3-center integrals + Transform ERIs + Distribute ERIs + Read inverse + Orthogonalize ERIs Computing Vxc Computing Sigma_x Computing W(iw) on the imaginary grid @@ -824,323 +807,45 @@ task dft gw Alpha Orbitals State Energy (eV) Error (eV) ----------------------------------- -@GW 8 -13.232 0.003 -@GW 9 -12.555 0.001 -@GW 10 -12.357 0.000 -@GW 11 -9.991 0.000 -@GW 12 -7.779 0.001 -@GW 13 3.732 0.000 -@GW 14 3.851 0.001 -@GW 15 5.314 0.000 -@GW 16 9.836 0.001 -@GW 17 11.891 0.000 +@GW 8 -14.686 0.011 +@GW 9 -13.641 0.004 +@GW 10 -12.639 0.005 +@GW 11 -10.354 0.002 +@GW 12 -8.452 0.002 +@GW 13 3.960 0.003 +@GW 14 3.965 0.005 +@GW 15 5.443 0.002 +@GW 16 10.121 0.004 +@GW 17 12.171 0.004 Beta Orbitals State Energy (eV) Error (eV) ----------------------------------- -@GW 7 -15.994 0.001 -@GW 8 -14.090 0.000 -@GW 9 -12.312 0.000 -@GW 10 -11.111 0.000 -@GW 11 -9.813 0.000 -@GW 12 0.782 0.000 -@GW 13 3.891 0.001 -@GW 14 3.844 0.000 -@GW 15 5.494 0.001 -@GW 16 9.576 0.001 +@GW 7 -17.771 0.002 +@GW 8 -14.839 0.005 +@GW 9 -13.398 0.002 +@GW 10 -11.673 0.002 +@GW 11 -10.239 0.002 +@GW 12 1.142 0.002 +@GW 13 4.403 0.002 +@GW 14 4.180 0.005 +@GW 15 5.570 0.002 +@GW 16 10.106 0.003 GW Timing Statistics ------------------------ Init. : 0.1s - ERIs : 0.2s + ERIs : 0.0s Distr.: 0.0s - Vxc : 0.7s + Vxc : 0.1s Vmo : 0.0s - iW : 0.7s + iW : 0.2s I_n : 0.0s - R_n : 0.3s - GW total: 2.0s + R_n : 0.1s + GW total: 0.5s - Task times cpu: 12.2s wall: 12.3s - - - NWChem Input Module - ------------------- - - - - NWChem GW@DFT Module - -------------------- - - - GW Trifluoroacetamide - - - - NWChem DFT Module - ----------------- - - - GW Trifluoroacetamide - - - - - Summary of "ao basis" -> "ao basis" (spherical) - ------------------------------------------------------------------------------ - Tag Description Shells Functions and Types - ---------------- ------------------------------ ------ --------------------- - O cc-pvdz 6 14 3s2p1d - N cc-pvdz 6 14 3s2p1d - C cc-pvdz 6 14 3s2p1d - H cc-pvdz 3 5 2s1p - - - Caching 1-el integrals - - General Information - ------------------- - SCF calculation type: DFT - Wavefunction type: spin polarized. - No. of atoms : 5 - No. of electrons : 23 - Alpha electrons : 12 - Beta electrons : 11 - Charge : 0 - Spin multiplicity: 2 - Use of symmetry is: off; symmetry adaption is: off - Maximum number of iterations: 50 - This is a Direct SCF calculation. - AO basis - number of functions: 52 - number of shells: 24 - A Charge density fitting basis will be used. - CD basis - number of functions: 196 - number of shells: 66 - Convergence on energy requested: 1.00D-08 - Convergence on density requested: 1.00D-05 - Convergence on gradient requested: 5.00D-04 - - XC Information - -------------- - PBE96 Method XC Functional - PerdewBurkeErnzerhof Exchange Functional 1.000 - Perdew 1991 LDA Correlation Functional 1.000 local - PerdewBurkeErnz. Correlation Functional 1.000 non-local - - Grid Information - ---------------- - Grid used for XC integration: fine - Radial quadrature: Mura-Knowles - Angular quadrature: Lebedev. - Tag B.-S. Rad. Rad. Pts. Rad. Cut. Ang. Pts. - --- ---------- --------- --------- --------- - O 0.60 70 10.0 590 - N 0.65 70 7.0 590 - C 0.70 70 8.0 590 - H 0.35 60 8.0 590 - Grid pruning is: on - Number of quadrature shells: 330 - Spatial weights used: Erf1 - - Convergence Information - ----------------------- - Convergence aids based upon iterative change in - total energy or number of iterations. - Levelshifting, if invoked, occurs when the - HOMO/LUMO gap drops below (HL_TOL): 1.00D-02 - DIIS, if invoked, will attempt to extrapolate - using up to (NFOCK): 10 stored Fock matrices. - - Damping( 0%) Levelshifting(0.5) DIIS - --------------- ------------------- --------------- - dE on: start ASAP start - dE off: 2 iters 50 iters 50 iters - - - Screening Tolerance Information - ------------------------------- - Density screening/tol_rho: 1.00D-11 - AO Gaussian exp screening on grid/accAOfunc: 18 - CD Gaussian exp screening on grid/accCDfunc: 20 - XC Gaussian exp screening on grid/accXCfunc: 20 - Schwarz screening/accCoul: 1.00D-14 - - - Loading old vectors from job with title : - -GW Trifluoroacetamide - - Time after variat. SCF: 12.5 - - 3 Center 2 Electron Integral Information - ---------------------------------------- - Maximum number of 3-center 2e- integrals is: 529984. - This is reduced with Schwarz screening to: 367500. - Incore requires a per proc buffer size of: 175029. - Minimum dble words available (all nodes) is: 131065476 - This is reduced (for later use) to: 130683464 - proc 0 Suggested buffer size is: 175029 - Max Suggested buffer size is: 175029 - no. integral batches is: 1000 - - Incore memory use for 3-center 2e- integrals is turned off. - Time prior to 1st pass: 12.5 - - - Total DFT energy = -169.066312547888 - One electron energy = -355.393692322893 - Coulomb energy = 144.424774055736 - Exchange-Corr. energy = -21.405772779389 - Nuclear repulsion energy = 63.308378498658 - - Numeric. integr. density = 22.999999954126 - - Total iterative time = 0.9s - - - - alpha - beta orbital overlaps - ----------------------------- - - - alpha 1 2 3 4 5 6 7 8 9 10 - beta 1 2 3 4 5 6 7 8 9 10 - overlap 1.000 1.000 1.000 1.000 1.000 0.996 0.996 0.990 1.000 0.985 - - - alpha 11 12 13 14 15 16 17 18 19 20 - beta 11 12 13 14 15 16 17 18 19 20 - overlap 1.000 0.993 0.999 0.994 0.995 0.999 0.999 0.952 1.000 0.945 - - - alpha 21 22 23 24 25 26 27 28 29 30 - beta 21 22 23 24 25 26 27 28 29 30 - overlap 0.958 0.999 0.998 1.000 0.998 0.999 0.998 0.996 0.997 0.980 - - - alpha 31 32 33 34 35 36 37 38 39 40 - beta 31 32 33 34 35 36 37 38 39 40 - overlap 0.985 0.996 0.991 0.992 0.999 1.000 0.997 0.994 0.997 0.999 - - - alpha 41 42 43 44 45 46 47 48 49 50 - beta 41 42 43 44 45 46 47 48 49 50 - overlap 0.999 0.996 0.994 0.999 0.998 0.998 1.000 0.999 0.999 1.000 - - - alpha 51 52 - beta 51 52 - overlap 0.999 0.999 - - -------------------------- - Expectation value of S2: - -------------------------- - = 0.7519 (Exact = 0.7500) - - - center of mass - -------------- - x = -0.02948626 y = 0.13290476 z = -0.00001949 - - moments of inertia (a.u.) - ------------------ - 162.621484064576 0.000000000000 -0.000000000000 - 0.000000000000 16.578708728791 -0.000000000000 - -0.000000000000 -0.000000000000 179.200070028499 - - Multipole analysis of the density - --------------------------------- - - L x y z total alpha beta nuclear - - - - - ----- ----- ---- ------- - 0 0 0 0 -0.000000 -12.000000 -11.000000 23.000000 - - 1 1 0 0 0.238427 0.541429 -0.303002 0.000000 - 1 0 1 0 -1.321737 -0.969708 -0.352030 0.000000 - 1 0 0 1 0.000663 -0.000054 0.000717 0.000000 - - 2 2 0 0 -11.884337 -13.068472 -9.699498 10.883633 - 2 1 1 0 -0.250985 0.506239 0.213062 -0.970286 - 2 1 0 1 0.006019 -0.000243 -0.000755 0.007017 - 2 0 2 0 -11.275818 -52.448505 -49.703057 90.875744 - 2 0 1 1 0.001863 0.000480 -0.000509 0.001891 - 2 0 0 2 -13.100006 -6.900236 -6.199822 0.000052 - - - *********************** - *** GW@DFT *** - *********************** - - - Memory Information - ------------------ - Available GA per process is 1000.0 MBs - Available stack per process is 500.0 MBs - Available heap per process is 500.0 MBs - - Peak memory in Initialization - Peak GA per process is 1.4 MBs - Peak stack per process is 0.0 MBs - Peak heap per process is 1.6 MBs - Memory not in MA per process 0.0 MBs - - Peak memory in AFF Calculation - Peak GA per process is 5.2 MBs - Peak stack per process is 6.6 MBs - Peak heap per process is 0.0 MBs - Memory not in MA per process 6.6 MBs - - Computing 2-center integrals - Computing Inverse Cholesky factor - Computing 3-center integrals - Computing V_xc ... - Computing Sigma_x - Computing RPA polarizability - Solving quasiparticle equations - - Alpha Orbitals - State Energy (eV) Error (eV) - ----------------------------------- -@GW 8 -13.237 0.001 -@GW 9 -12.542 0.000 -@GW 10 -12.360 0.000 -@GW 11 -9.991 0.000 -@GW 12 -7.780 0.001 -@GW 13 3.732 0.000 -@GW 14 3.851 0.000 -@GW 15 5.314 0.000 -@GW 16 9.843 0.001 -@GW 17 11.907 0.000 - - Beta Orbitals - State Energy (eV) Error (eV) - ----------------------------------- -@GW 7 -16.569 0.000 -@GW 8 -14.089 0.000 -@GW 9 -12.853 0.000 -@GW 10 -11.113 0.000 -@GW 11 -9.813 0.000 -@GW 12 0.782 0.000 -@GW 13 4.374 0.000 -@GW 14 4.112 0.000 -@GW 15 5.494 0.000 -@GW 16 10.421 0.000 - - GW Timing Statistics - ------------------------ - Init. : 0.1s - ERIs : 0.2s - Distr.: 0.0s - Vxc : 0.7s - Sigma_x : 0.0s - RPA : 0.3s - Wmn : 0.0s - Sigma_c : 0.0s - GW total: 1.3s - - - Task times cpu: 2.3s wall: 2.3s + Task times cpu: 2.6s wall: 2.6s NWChem Input Module @@ -1160,11 +865,11 @@ MA usage statistics: heap stack ---- ----- current number of blocks 0 0 - maximum number of blocks 28 58 + maximum number of blocks 28 62 current total bytes 0 0 - maximum total bytes 21812064 30217960 - maximum total K-bytes 21813 30218 - maximum total M-bytes 22 31 + maximum total bytes 20744656 30269048 + maximum total K-bytes 20745 30270 + maximum total M-bytes 21 31 CITATION @@ -1200,24 +905,25 @@ MA usage statistics: AUTHORS ------- - E. Apra, E. J. Bylaska, N. Govind, K. Kowalski, M. Valiev, W. A. de Jong, - T. P. Straatsma, H. J. J. van Dam, D. Wang, T. L. Windus, N. P. Bauman, - A. Panyala, J. Hammond, J. Autschbach, K. Bhaskaran-Nair, J. Brabec, - K. Lopata, S. A. Fischer, S. Krishnamoorthy, M. Jacquelin, W. Ma, M. Klemm, - O. Villa, Y. Chen, V. Anisimov, F. Aquino, S. Hirata, M. T. Hackler, - Eric Hermes, L. Jensen, J. E. Moore, J. C. Becca, V. Konjkov, - D. Mejia-Rodriguez, T. Risthaus, M. Malagoli, A. Marenich, - A. Otero-de-la-Roza, J. Mullin, P. Nichols, R. Peverati, J. Pittner, Y. Zhao, - P.-D. Fan, A. Fonari, M. J. Williamson, R. J. Harrison, J. R. Rehr, - M. Dupuis, D. Silverstein, D. M. A. Smith, J. Nieplocha, V. Tipparaju, - M. Krishnan, B. E. Van Kuiken, A. Vazquez-Mayagoitia, M. Swart, Q. Wu, - T. Van Voorhis, A. A. Auer, M. Nooijen, L. D. Crosby, E. Brown, G. Cisneros, - G. I. Fann, H. Fruchtl, J. Garza, K. Hirao, R. A. Kendall, J. A. Nichols, - K. Tsemekhman, K. Wolinski, J. Anchell, D. E. Bernholdt, P. Borowski, - T. Clark, D. Clerc, H. Dachsel, M. J. O. Deegan, K. Dyall, D. Elwood, - E. Glendening, M. Gutowski, A. C. Hess, J. Jaffe, B. G. Johnson, J. Ju, - R. Kobayashi, R. Kutteh, Z. Lin, R. Littlefield, X. Long, B. Meng, - T. Nakajima, S. Niu, L. Pollack, M. Rosing, K. Glaesemann, G. Sandrone, - M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, A. T. Wong, Z. Zhang. + E. Apra, E. J. Bylaska, N. Govind, K. Kowalski, D. Mejia-Rodriguez, + N. P. Bauman, A. Panyala, R. J. Harrison, M. Valiev, W. A. de Jong, + T. P. Straatsma, H. J. J. van Dam, D. Wang, T. L. Windus, J. Hammond, + J. Autschbach, R. de P. Soares, A. Kunitsa, K. Bhaskaran-Nair, J. Brabec, + K. Lopata, S. A. Fischer, S. Krishnamoorthy, M. Jacquelin, R. Goswami, + A. Woods, W. Ma, M. Klemm, O. Villa, Y. Chen, V. Anisimov, F. Aquino, + S. Hirata, M. T. Hackler, E. Hermes, L. Jensen, J. E. Moore, J. C. Becca, + V. Konjkov, T. Risthaus, M. Malagoli, A. Marenich, A. Otero-de-la-Roza, + J. Mullin, P. Nichols, R. Peverati, J. Pittner, Y. Zhao, P.-D. Fan, + A. Fonari, M. J. Williamson, J. R. Rehr, M. Dupuis, D. Silverstein, + D. M. A. Smith, J. Nieplocha, V. Tipparaju, M. Krishnan, B. E. Van Kuiken, + A. Vazquez-Mayagoitia, M. Swart, Q. Wu, T. Van Voorhis, A. A. Auer, + M. Nooijen, L. D. Crosby, E. Brown, G. Cisneros, G. I. Fann, H. Fruchtl, + J. Garza, K. Hirao, R. A. Kendall, J. A. Nichols, K. Tsemekhman, K. Wolinski, + J. Anchell, D. E. Bernholdt, P. Borowski, T. Clark, D. Clerc, H. Dachsel, + M. J. O. Deegan, K. Dyall, D. Elwood, E. Glendening, M. Gutowski, A. C. Hess, + J. Jaffe, B. G. Johnson, J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, + R. Littlefield, X. Long, B. Meng, T. Nakajima, S. Niu, L. Pollack, M. Rosing, + K. Glaesemann, G. Sandrone, M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, + A. T. Wong, Z. Zhang. - Total times cpu: 14.5s wall: 14.7s + Total times cpu: 2.9s wall: 2.9s diff --git a/QA/tests/gw_symmetry/gw_symmetry.out b/QA/tests/gw_symmetry/gw_symmetry.out index edeccd0dc5..448fea37ab 100644 --- a/QA/tests/gw_symmetry/gw_symmetry.out +++ b/QA/tests/gw_symmetry/gw_symmetry.out @@ -1,5 +1,5 @@ - argument 1 = gw_symmetry.nw - NWChem w/ OpenMP: maximum threads = 8 + argument 1 = /people/meji656/calculations/bse/QA/gw_symmetry.nw + NWChem w/ OpenMP: maximum threads = 1 @@ -53,7 +53,7 @@ task dft gw - Northwest Computational Chemistry Package (NWChem) 7.2.0 + Northwest Computational Chemistry Package (NWChem) 7.3.0 -------------------------------------------------------- @@ -61,7 +61,7 @@ task dft gw Pacific Northwest National Laboratory Richland, WA 99352 - Copyright (c) 1994-2022 + Copyright (c) 1994-2025 Pacific Northwest National Laboratory Battelle Memorial Institute @@ -86,21 +86,21 @@ task dft gw Job information --------------- - hostname = WE41476 - program = nwchem - date = Wed Jul 12 13:50:26 2023 + hostname = dc005 + program = /qfs/people/meji656/software/nwchem.bse/bin/LINUX64/nwchem + date = Thu Oct 16 10:35:32 2025 - compiled = Wed_Jul_12_13:50:03_2023 - source = /Users/meji656/Sources/nwchem_bse - nwchem branch = 7.2.0 - nwchem revision = nwchem_on_git-4850-g011c901253 - ga revision = 5.8.0 - use scalapack = T - input = gw_symmetry.nw + compiled = Thu_Oct_16_10:07:15_2025 + source = /qfs/people/meji656/software/nwchem.bse + nwchem branch = 7.3.0 + nwchem revision = v7.2.0-beta1-1624-g0dc011d0a0 + ga revision = 5.9.2 + use scalapack = F + input = /people/meji656/calculations/bse/QA/gw_symmetry.nw prefix = gw_symmetry. data base = ./gw_symmetry.db status = startup - nproc = 1 + nproc = 7 time left = -1s @@ -108,10 +108,10 @@ task dft gw Memory information ------------------ - heap = 65535996 doubles = 500.0 Mbytes - stack = 65536001 doubles = 500.0 Mbytes - global = 131072000 doubles = 1000.0 Mbytes (distinct from heap & stack) - total = 262143997 doubles = 2000.0 Mbytes + heap = 65535998 doubles = 500.0 Mbytes + stack = 65535995 doubles = 500.0 Mbytes + global = 131072000 doubles = 1000.0 Mbytes (distinct from heap & stack) + total = 262143993 doubles = 2000.0 Mbytes verify = yes hardfail = no @@ -462,33 +462,32 @@ task dft gw 6 a1 7 t2 8 t2 9 t2 10 t2 11 t2 12 t2 13 a1 14 t2 15 t2 - WARNING: movecs_in_org=atomic not equal to movecs_in=./gw_symmetry.movecs - Time after variat. SCF: 0.3 - Time prior to 1st pass: 0.3 + Time after variat. SCF: 0.4 + Time prior to 1st pass: 0.4 Memory utilization after 1st SCF pass: - Heap Space remaining (MW): 65.53 65532636 - Stack Space remaining (MW): 65.54 65535396 + Heap Space remaining (MW): 65.53 65532638 + Stack Space remaining (MW): 65.54 65535388 convergence iter energy DeltaE RMS-Dens Diis-err time ---------------- ----- ----------------- --------- --------- --------- ------ - d= 0,ls=0.0,diis 1 -40.4526766257 -5.40D+01 2.73D-03 1.58D-01 0.6 - d= 0,ls=0.0,diis 2 -40.4605212533 -7.84D-03 1.18D-03 2.13D-02 0.8 - d= 0,ls=0.0,diis 3 -40.4604458885 7.54D-05 6.05D-04 2.16D-02 1.1 - d= 0,ls=0.0,diis 4 -40.4630635417 -2.62D-03 2.24D-05 6.66D-06 1.3 - d= 0,ls=0.0,diis 5 -40.4630646869 -1.15D-06 2.13D-06 1.39D-07 1.6 - d= 0,ls=0.0,diis 6 -40.4630647071 -2.03D-08 7.01D-08 1.45D-10 1.9 + d= 0,ls=0.0,diis 1 -40.4526766257 -5.40D+01 2.73D-03 1.58D-01 0.5 + d= 0,ls=0.0,diis 2 -40.4605212533 -7.84D-03 1.18D-03 2.13D-02 0.5 + d= 0,ls=0.0,diis 3 -40.4604458885 7.54D-05 6.05D-04 2.16D-02 0.6 + d= 0,ls=0.0,diis 4 -40.4630635417 -2.62D-03 2.24D-05 6.66D-06 0.6 + d= 0,ls=0.0,diis 5 -40.4630646869 -1.15D-06 2.13D-06 1.39D-07 0.7 + d= 0,ls=0.0,diis 6 -40.4630647071 -2.03D-08 7.01D-08 1.45D-10 0.7 - Total DFT energy = -40.463064707119 - One electron energy = -79.987919842739 - Coulomb energy = 32.854590174254 + Total DFT energy = -40.463064707118 + One electron energy = -79.987919842738 + Coulomb energy = 32.854590174255 Exchange-Corr. energy = -6.837400210970 Nuclear repulsion energy = 13.507665172336 Numeric. integr. density = 10.000008758007 - Total iterative time = 1.5s + Total iterative time = 0.3s @@ -523,11 +522,11 @@ task dft gw 1 1 0 0 -0.000000 -0.000000 -0.000000 0.000000 1 0 1 0 0.000000 0.000000 0.000000 0.000000 - 1 0 0 1 -0.000000 -0.000000 -0.000000 0.000000 + 1 0 0 1 0.000000 0.000000 0.000000 0.000000 2 2 0 0 -6.283208 -5.939937 -5.939937 5.596666 - 2 1 1 0 0.000000 0.000000 0.000000 0.000000 - 2 1 0 1 0.000000 0.000000 0.000000 0.000000 + 2 1 1 0 -0.000000 -0.000000 -0.000000 0.000000 + 2 1 0 1 -0.000000 -0.000000 -0.000000 0.000000 2 0 2 0 -6.283208 -5.939937 -5.939937 5.596666 2 0 1 1 -0.000000 -0.000000 -0.000000 0.000000 2 0 0 2 -6.283208 -5.939937 -5.939937 5.596666 @@ -626,18 +625,18 @@ task dft gw Memory Information ------------------ - Available GA per process is 999.9 MBs + Available GA per process is 1000.0 MBs Available stack per process is 500.0 MBs Available heap per process is 499.9 MBs Peak memory in Initialization - Peak GA per process is 1.1 MBs + Peak GA per process is 0.2 MBs Peak stack per process is 0.1 MBs - Peak heap per process is 1.2 MBs + Peak heap per process is 0.5 MBs Memory not in MA per process 0.0 MBs Peak memory in AFF Calculation - Peak GA per process is 2.5 MBs + Peak GA per process is 0.4 MBs Peak stack per process is 1.3 MBs Peak heap per process is 0.0 MBs Memory not in MA per process 1.3 MBs @@ -657,25 +656,25 @@ task dft gw Alpha Orbitals State Energy (eV) Error (eV) ----------------------------------- -@GW 5 -13.866 0.000 +@GW 5 -13.864 0.003 - Applying -4.4168 eV scissor-shift to rest of particle states + Applying -4.4144 eV scissor-shift to rest of particle states GW Timing Statistics ------------------------ Init. : 0.1s - ERIs : 0.3s + ERIs : 0.1s Distr.: 0.0s - Vxc : 0.2s + Vxc : 0.0s Sigma_x : 0.0s RPA : 0.0s Wmn : 0.0s Sigma_c : 0.0s - GW total: 0.5s + GW total: 0.2s - Task times cpu: 2.4s wall: 2.4s + Task times cpu: 0.6s wall: 0.6s NWChem Input Module @@ -784,7 +783,7 @@ task dft gw Loading old vectors from job with title : -GW Methane Td +W vals Symmetry analysis of molecular orbitals - initial @@ -800,28 +799,28 @@ GW Methane Td 6 a1 7 t2 8 t2 9 t2 10 t2 11 t2 12 t2 13 t2 14 t2 15 t2 - Time after variat. SCF: 2.5 - Time prior to 1st pass: 2.5 + Time after variat. SCF: 0.9 + Time prior to 1st pass: 0.9 Memory utilization after 1st SCF pass: - Heap Space remaining (MW): 65.53 65532636 - Stack Space remaining (MW): 65.54 65535396 + Heap Space remaining (MW): 65.53 65532638 + Stack Space remaining (MW): 65.54 65535388 convergence iter energy DeltaE RMS-Dens Diis-err time ---------------- ----- ----------------- --------- --------- --------- ------ - d= 0,ls=0.0,diis 1 -40.4630647077 -5.40D+01 1.34D-08 1.68D-12 3.5 - d= 0,ls=0.0,diis 2 -40.4630647077 -2.15D-12 7.98D-09 3.73D-12 4.4 + d= 0,ls=0.0,diis 1 -40.4630647076 -5.40D+01 1.34D-08 1.68D-12 1.0 + d= 0,ls=0.0,diis 2 -40.4630647076 2.13D-13 7.98D-09 3.73D-12 1.1 - Total DFT energy = -40.463064707739 - One electron energy = -79.987938823681 - Coulomb energy = 32.854611046058 - Exchange-Corr. energy = -6.837402102452 + Total DFT energy = -40.463064707584 + One electron energy = -79.987938823837 + Coulomb energy = 32.854611046046 + Exchange-Corr. energy = -6.837402102129 Nuclear repulsion energy = 13.507665172336 - Numeric. integr. density = 10.000008760592 + Numeric. integr. density = 10.000008760422 - Total iterative time = 1.9s + Total iterative time = 0.3s @@ -854,15 +853,15 @@ GW Methane Td - - - - ----- ----- ---- ------- 0 0 0 0 -0.000000 -5.000000 -5.000000 10.000000 - 1 1 0 0 -0.000000 -0.000000 -0.000000 0.000000 - 1 0 1 0 -0.000000 -0.000000 -0.000000 0.000000 - 1 0 0 1 -0.000000 -0.000000 -0.000000 0.000000 + 1 1 0 0 0.000000 0.000000 0.000000 0.000000 + 1 0 1 0 0.000000 0.000000 0.000000 0.000000 + 1 0 0 1 0.000000 0.000000 0.000000 0.000000 2 2 0 0 -6.283210 -5.939938 -5.939938 5.596666 - 2 1 1 0 -0.000000 -0.000000 -0.000000 0.000000 - 2 1 0 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 1 1 0 0.000000 0.000000 0.000000 0.000000 + 2 1 0 1 0.000000 0.000000 0.000000 0.000000 2 0 2 0 -6.283210 -5.939938 -5.939938 5.596666 - 2 0 1 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 1 1 0.000000 0.000000 0.000000 0.000000 2 0 0 2 -6.283210 -5.939938 -5.939938 5.596666 @@ -873,18 +872,18 @@ GW Methane Td Memory Information ------------------ - Available GA per process is 999.9 MBs + Available GA per process is 1000.0 MBs Available stack per process is 500.0 MBs Available heap per process is 499.9 MBs Peak memory in Initialization - Peak GA per process is 1.1 MBs + Peak GA per process is 0.2 MBs Peak stack per process is 0.1 MBs - Peak heap per process is 1.2 MBs + Peak heap per process is 0.5 MBs Memory not in MA per process 0.0 MBs Peak memory in AFF Calculation - Peak GA per process is 2.5 MBs + Peak GA per process is 0.4 MBs Peak stack per process is 1.3 MBs Peak heap per process is 0.0 MBs Memory not in MA per process 1.3 MBs @@ -904,25 +903,25 @@ GW Methane Td Alpha Orbitals State Energy (eV) Error (eV) ----------------------------------- -@GW 5 -13.866 0.000 +@GW 5 -13.864 0.003 - Applying -4.4168 eV scissor-shift to rest of particle states + Applying -4.4144 eV scissor-shift to rest of particle states GW Timing Statistics ------------------------ Init. : 0.0s - ERIs : 0.2s + ERIs : 0.0s Distr.: 0.0s - Vxc : 0.5s + Vxc : 0.1s Sigma_x : 0.0s RPA : 0.0s Wmn : 0.0s Sigma_c : 0.0s - GW total: 0.8s + GW total: 0.2s - Task times cpu: 2.8s wall: 2.8s + Task times cpu: 0.5s wall: 0.5s NWChem Input Module @@ -944,9 +943,9 @@ MA usage statistics: current number of blocks 0 0 maximum number of blocks 29 62 current total bytes 0 0 - maximum total bytes 32636240 32078504 - maximum total K-bytes 32637 32079 - maximum total M-bytes 33 33 + maximum total bytes 31929024 32078520 + maximum total K-bytes 31930 32079 + maximum total M-bytes 32 33 CITATION @@ -982,24 +981,25 @@ MA usage statistics: AUTHORS ------- - E. Apra, E. J. Bylaska, N. Govind, K. Kowalski, M. Valiev, D. Mejia-Rodriguez, - A. Kunitsa, N. P. Bauman, A. Panyala, W. A. de Jong, T. P. Straatsma, - H. J. J. van Dam, D. Wang, T. L. Windus, J. Hammond, J. Autschbach, A. Woods, - K. Bhaskaran-Nair, J. Brabec, K. Lopata, S. A. Fischer, S. Krishnamoorthy, - M. Jacquelin, W. Ma, M. Klemm, O. Villa, Y. Chen, V. Anisimov, F. Aquino, + E. Apra, E. J. Bylaska, N. Govind, K. Kowalski, D. Mejia-Rodriguez, + N. P. Bauman, A. Panyala, R. J. Harrison, M. Valiev, W. A. de Jong, + T. P. Straatsma, H. J. J. van Dam, D. Wang, T. L. Windus, J. Hammond, + J. Autschbach, R. de P. Soares, A. Kunitsa, K. Bhaskaran-Nair, J. Brabec, + K. Lopata, S. A. Fischer, S. Krishnamoorthy, M. Jacquelin, R. Goswami, + A. Woods, W. Ma, M. Klemm, O. Villa, Y. Chen, V. Anisimov, F. Aquino, S. Hirata, M. T. Hackler, E. Hermes, L. Jensen, J. E. Moore, J. C. Becca, V. Konjkov, T. Risthaus, M. Malagoli, A. Marenich, A. Otero-de-la-Roza, J. Mullin, P. Nichols, R. Peverati, J. Pittner, Y. Zhao, P.-D. Fan, - A. Fonari, M. J. Williamson, R. J. Harrison, J. R. Rehr, M. Dupuis, - D. Silverstein, D. M. A. Smith, J. Nieplocha, V. Tipparaju, M. Krishnan, - B. E. Van Kuiken, A. Vazquez-Mayagoitia, M. Swart, Q. Wu, T. Van Voorhis, - A. A. Auer, M. Nooijen, L. D. Crosby, E. Brown, G. Cisneros, G. I. Fann, - H. Fruchtl, J. Garza, K. Hirao, R. A. Kendall, J. A. Nichols, K. Tsemekhman, - K. Wolinski, J. Anchell, D. E. Bernholdt, P. Borowski, T. Clark, D. Clerc, - H. Dachsel, M. J. O. Deegan, K. Dyall, D. Elwood, E. Glendening, M. Gutowski, - A. C. Hess, J. Jaffe, B. G. Johnson, J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, + A. Fonari, M. J. Williamson, J. R. Rehr, M. Dupuis, D. Silverstein, + D. M. A. Smith, J. Nieplocha, V. Tipparaju, M. Krishnan, B. E. Van Kuiken, + A. Vazquez-Mayagoitia, M. Swart, Q. Wu, T. Van Voorhis, A. A. Auer, + M. Nooijen, L. D. Crosby, E. Brown, G. Cisneros, G. I. Fann, H. Fruchtl, + J. Garza, K. Hirao, R. A. Kendall, J. A. Nichols, K. Tsemekhman, K. Wolinski, + J. Anchell, D. E. Bernholdt, P. Borowski, T. Clark, D. Clerc, H. Dachsel, + M. J. O. Deegan, K. Dyall, D. Elwood, E. Glendening, M. Gutowski, A. C. Hess, + J. Jaffe, B. G. Johnson, J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, R. Littlefield, X. Long, B. Meng, T. Nakajima, S. Niu, L. Pollack, M. Rosing, K. Glaesemann, G. Sandrone, M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, A. T. Wong, Z. Zhang. - Total times cpu: 5.2s wall: 5.2s + Total times cpu: 1.3s wall: 1.3s From 76e1cdd6d177ed3f96216f9bbb721236e0309c8d Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Thu, 16 Oct 2025 11:43:50 -0700 Subject: [PATCH 32/46] Add correct gw_openshell.nw --- QA/tests/gw_openshell/gw_openshell.nw | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/QA/tests/gw_openshell/gw_openshell.nw b/QA/tests/gw_openshell/gw_openshell.nw index 8cd6b114cd..c1a88055e4 100644 --- a/QA/tests/gw_openshell/gw_openshell.nw +++ b/QA/tests/gw_openshell/gw_openshell.nw @@ -24,35 +24,18 @@ end dft odft mult 2 - xc pbe96 + xc pbe0 direct grid fine nodisk - tolerances accCoul 14 + tolerances accCoul 12 convergence energy 1d-8 noprint "final vectors analysis" end gw - eta 0.001 method cdgw - solver newton 20 states alpha occ 5 vir 5 states beta occ 5 vir 5 - convergence 0.001 ev -end - -task dft gw - -dft - noscf -end - -gw - eta 0.001 - solver newton 20 - states alpha occ 5 vir 5 - states beta occ 5 vir 5 - convergence 0.001 ev end task dft gw From 8fcfebde2738cd5bdefe7d5d5c30b55bb84a2d20 Mon Sep 17 00:00:00 2001 From: edoapra Date: Thu, 16 Oct 2025 11:47:13 -0700 Subject: [PATCH 33/46] add bse test to github actions --- travis/run_qas.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/travis/run_qas.sh b/travis/run_qas.sh index 12230effb1..ef7d42fd4a 100755 --- a/travis/run_qas.sh +++ b/travis/run_qas.sh @@ -132,6 +132,9 @@ fi cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs ritddft_h2o ritddft_co cd $TRAVIS_BUILD_DIR/QA && NWCHEM_BASIS_LIBRARY=${NWCHEM_TOP}/src/basis/libraries.bse/ ./runtests.mpi.unix procs $nprocs gw_closedshell gw_openshell gw_symmetry fi + if [[ ! $(grep -i bse $TRAVIS_BUILD_DIR/src/stubs.F| awk '/bse_input/') ]]; then + cd $TRAVIS_BUILD_DIR/QA && NWCHEM_BASIS_LIBRARY=${NWCHEM_TOP}/src/basis/libraries.bse/ ./runtests.mpi.unix procs $nprocs bse_ethene + fi if [[ ! $(grep -i dplot $TRAVIS_BUILD_DIR/src/stubs.F| awk '/dplot_input/') ]]; then cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs rt_tddft_dplot fi From f7b486c3fde9531f863680cc8d3c09c59fb7e286 Mon Sep 17 00:00:00 2001 From: edoapra Date: Thu, 16 Oct 2025 12:28:15 -0700 Subject: [PATCH 34/46] output update --- QA/tests/gw_openshell/gw_openshell.out | 157 ++++++++++++------------- 1 file changed, 78 insertions(+), 79 deletions(-) diff --git a/QA/tests/gw_openshell/gw_openshell.out b/QA/tests/gw_openshell/gw_openshell.out index 406ffc5cad..f6a9ba5b6e 100644 --- a/QA/tests/gw_openshell/gw_openshell.out +++ b/QA/tests/gw_openshell/gw_openshell.out @@ -1,4 +1,4 @@ - argument 1 = /people/meji656/calculations/bse/QA/gw_openshell.nw + argument 1 = /data/edo/nwchem/nwchem_bse-pull//QA/tests/gw_openshell/gw_openshell.nw NWChem w/ OpenMP: maximum threads = 1 @@ -86,21 +86,21 @@ task dft gw Job information --------------- - hostname = dc006 - program = /qfs/people/meji656/software/nwchem.bse/bin/LINUX64/nwchem - date = Thu Oct 16 10:35:25 2025 + hostname = mica + program = /data/edo/nwchem/nwchem_bse-pull//bin/LINUX64/nwchem + date = Thu Oct 16 12:25:05 2025 - compiled = Thu_Oct_16_10:07:15_2025 - source = /qfs/people/meji656/software/nwchem.bse + compiled = Thu_Oct_16_12:11:32_2025 + source = /data/edo/nwchem/nwchem_bse-pull/ nwchem branch = 7.3.0 - nwchem revision = v7.2.0-beta1-1624-g0dc011d0a0 + nwchem revision = v7.2.0-beta1-1593-g3a8d752956 ga revision = 5.9.2 - use scalapack = F - input = /people/meji656/calculations/bse/QA/gw_openshell.nw + use scalapack = T + input = /data/edo/nwchem/nwchem_bse-pull//QA/tests/gw_openshell/gw_openshell.nw prefix = gw_openshell. data base = ./gw_openshell.db status = startup - nproc = 7 + nproc = 1 time left = -1s @@ -108,10 +108,10 @@ task dft gw Memory information ------------------ - heap = 65535998 doubles = 500.0 Mbytes - stack = 65535995 doubles = 500.0 Mbytes + heap = 65535996 doubles = 500.0 Mbytes + stack = 65536001 doubles = 500.0 Mbytes global = 131072000 doubles = 1000.0 Mbytes (distinct from heap & stack) - total = 262143993 doubles = 2000.0 Mbytes + total = 262143997 doubles = 2000.0 Mbytes verify = yes hardfail = no @@ -640,64 +640,64 @@ task dft gw HOMO = -0.154097 LUMO = 0.070838 - Time after variat. SCF: 0.5 + Time after variat. SCF: 0.7 3 Center 2 Electron Integral Information ---------------------------------------- Maximum number of 3-center 2e- integrals is: 529984. This is reduced with Schwarz screening to: 367500. - Incore requires a per proc buffer size of: 57037. + Incore requires a per proc buffer size of: 327517. Minimum dble words available (all nodes) is: 131065476 - This is reduced (for later use) to: 130826784 - proc 0 Suggested buffer size is: 57037 - Max Suggested buffer size is: 57037 + This is reduced (for later use) to: 130794336 + proc 0 Suggested buffer size is: 327517 + Max Suggested buffer size is: 327517 no. integral batches is: 1000 Incore memory use for 3-center 2e- integrals is turned off. - Time prior to 1st pass: 0.5 + Time prior to 1st pass: 0.7 Memory utilization after 1st SCF pass: - Heap Space remaining (MW): 65.53 65530110 - Stack Space remaining (MW): 65.54 65535316 + Heap Space remaining (MW): 65.53 65530108 + Stack Space remaining (MW): 65.54 65535324 convergence iter energy DeltaE RMS-Dens Diis-err time ---------------- ----- ----------------- --------- --------- --------- ------ - d= 0,ls=0.0,diis 1 -168.9657539772 -2.32D+02 1.39D-02 1.93D-01 0.6 + d= 0,ls=0.0,diis 1 -168.9657539780 -2.32D+02 1.39D-02 1.93D-01 1.6 1.31D-02 1.92D-01 - d= 0,ls=0.0,diis 2 -168.6178260793 3.48D-01 1.00D-02 1.13D+00 0.8 + d= 0,ls=0.0,diis 2 -168.6178261291 3.48D-01 1.00D-02 1.13D+00 2.5 9.06D-03 1.06D+00 - d= 0,ls=0.0,diis 3 -169.0613313228 -4.44D-01 1.36D-03 7.44D-03 0.9 + d= 0,ls=0.0,diis 3 -169.0613313213 -4.44D-01 1.36D-03 7.44D-03 3.5 1.32D-03 8.46D-03 - d= 0,ls=0.0,diis 4 -169.0630054773 -1.67D-03 9.29D-04 4.19D-03 1.1 + d= 0,ls=0.0,diis 4 -169.0630054782 -1.67D-03 9.29D-04 4.19D-03 4.5 5.76D-04 3.46D-03 - d= 0,ls=0.0,diis 5 -169.0646959497 -1.69D-03 1.55D-04 1.38D-04 1.2 + d= 0,ls=0.0,diis 5 -169.0646959497 -1.69D-03 1.55D-04 1.38D-04 5.5 1.31D-04 1.63D-04 Resetting Diis - d= 0,ls=0.0,diis 6 -169.0647672024 -7.13D-05 4.96D-05 7.61D-06 1.4 + d= 0,ls=0.0,diis 6 -169.0647672024 -7.13D-05 4.96D-05 7.61D-06 6.5 5.91D-05 7.90D-06 - d= 0,ls=0.0,diis 7 -169.0647730165 -5.81D-06 5.03D-05 2.16D-06 1.6 + d= 0,ls=0.0,diis 7 -169.0647730165 -5.81D-06 5.03D-05 2.16D-06 7.5 1.81D-05 8.25D-07 - d= 0,ls=0.0,diis 8 -169.0647729684 4.81D-08 1.78D-05 2.36D-06 1.7 + d= 0,ls=0.0,diis 8 -169.0647729683 4.81D-08 1.78D-05 2.36D-06 8.4 2.14D-05 3.64D-06 - d= 0,ls=0.0,diis 9 -169.0647741451 -1.18D-06 9.22D-06 5.57D-07 1.9 + d= 0,ls=0.0,diis 9 -169.0647741451 -1.18D-06 9.22D-06 5.57D-07 9.4 4.55D-06 2.30D-07 - d= 0,ls=0.0,diis 10 -169.0647743526 -2.08D-07 9.00D-06 4.08D-08 2.0 + d= 0,ls=0.0,diis 10 -169.0647743526 -2.08D-07 9.00D-06 4.08D-08 10.4 8.19D-06 2.42D-08 - d= 0,ls=0.0,diis 11 -169.0647744288 -7.62D-08 2.13D-06 7.37D-09 2.2 + d= 0,ls=0.0,diis 11 -169.0647744288 -7.62D-08 2.13D-06 7.37D-09 11.4 1.35D-06 1.44D-09 - d= 0,ls=0.0,diis 12 -169.0647744339 -5.12D-09 7.95D-07 7.61D-10 2.4 + d= 0,ls=0.0,diis 12 -169.0647744339 -5.12D-09 7.95D-07 7.61D-10 12.4 6.20D-07 8.83D-10 - Total DFT energy = -169.064774433940 - One electron energy = -355.358774131041 - Coulomb energy = 144.394070494508 - Exchange-Corr. energy = -21.408449296065 + Total DFT energy = -169.064774433938 + One electron energy = -355.358774140560 + Coulomb energy = 144.394070505297 + Exchange-Corr. energy = -21.408449297333 Nuclear repulsion energy = 63.308378498658 - Numeric. integr. density = 22.999999950860 + Numeric. integr. density = 22.999999950854 - Total iterative time = 1.9s + Total iterative time = 11.7s @@ -781,24 +781,20 @@ task dft gw Available heap per process is 500.0 MBs Peak memory in Initialization - Peak GA per process is 0.4 MBs + Peak GA per process is 2.7 MBs Peak stack per process is 0.0 MBs - Peak heap per process is 0.7 MBs + Peak heap per process is 2.9 MBs Memory not in MA per process 0.0 MBs Peak memory in CDGW Calculation - Peak GA per process is 0.5 MBs + Peak GA per process is 3.4 MBs Peak stack per process is 0.6 MBs - Peak heap per process is 0.7 MBs + Peak heap per process is 1.9 MBs Memory not in MA per process 0.0 MBs Computing 2-center integrals Computing Inverse Cholesky factor Computing 3-center integrals - Transform ERIs - Distribute ERIs - Read inverse - Orthogonalize ERIs Computing Vxc Computing Sigma_x Computing W(iw) on the imaginary grid @@ -807,45 +803,48 @@ task dft gw Alpha Orbitals State Energy (eV) Error (eV) ----------------------------------- -@GW 8 -14.686 0.011 +@GW 8 -14.622 0.000 @GW 9 -13.641 0.004 -@GW 10 -12.639 0.005 +@GW 10 -12.648 0.005 @GW 11 -10.354 0.002 -@GW 12 -8.452 0.002 +@GW 12 -8.453 0.002 @GW 13 3.960 0.003 @GW 14 3.965 0.005 @GW 15 5.443 0.002 -@GW 16 10.121 0.004 -@GW 17 12.171 0.004 +@GW 16 10.094 0.004 +@GW 17 12.237 0.004 Beta Orbitals State Energy (eV) Error (eV) ----------------------------------- -@GW 7 -17.771 0.002 -@GW 8 -14.839 0.005 -@GW 9 -13.398 0.002 -@GW 10 -11.673 0.002 +@GW 7 -17.756 0.002 +@GW 8 -14.841 0.005 +@GW 9 -13.401 0.002 +@GW 10 -11.674 0.002 @GW 11 -10.239 0.002 @GW 12 1.142 0.002 -@GW 13 4.403 0.002 -@GW 14 4.180 0.005 -@GW 15 5.570 0.002 -@GW 16 10.106 0.003 +@GW 13 4.416 0.002 +@GW 14 4.181 0.005 +@GW 15 5.574 0.003 +@GW 16 10.343 0.017 * + + * Result did not converge + GW Timing Statistics ------------------------ - Init. : 0.1s - ERIs : 0.0s + Init. : 0.0s + ERIs : 0.1s Distr.: 0.0s - Vxc : 0.1s + Vxc : 0.8s Vmo : 0.0s - iW : 0.2s + iW : 0.5s I_n : 0.0s - R_n : 0.1s - GW total: 0.5s + R_n : 0.3s + GW total: 1.8s - Task times cpu: 2.6s wall: 2.6s + Task times cpu: 13.8s wall: 13.8s NWChem Input Module @@ -865,11 +864,11 @@ MA usage statistics: heap stack ---- ----- current number of blocks 0 0 - maximum number of blocks 28 62 + maximum number of blocks 28 57 current total bytes 0 0 - maximum total bytes 20744656 30269048 - maximum total K-bytes 20745 30270 - maximum total M-bytes 21 31 + maximum total bytes 23306336 30269032 + maximum total K-bytes 23307 30270 + maximum total M-bytes 24 31 CITATION @@ -909,13 +908,13 @@ MA usage statistics: N. P. Bauman, A. Panyala, R. J. Harrison, M. Valiev, W. A. de Jong, T. P. Straatsma, H. J. J. van Dam, D. Wang, T. L. Windus, J. Hammond, J. Autschbach, R. de P. Soares, A. Kunitsa, K. Bhaskaran-Nair, J. Brabec, - K. Lopata, S. A. Fischer, S. Krishnamoorthy, M. Jacquelin, R. Goswami, - A. Woods, W. Ma, M. Klemm, O. Villa, Y. Chen, V. Anisimov, F. Aquino, - S. Hirata, M. T. Hackler, E. Hermes, L. Jensen, J. E. Moore, J. C. Becca, - V. Konjkov, T. Risthaus, M. Malagoli, A. Marenich, A. Otero-de-la-Roza, - J. Mullin, P. Nichols, R. Peverati, J. Pittner, Y. Zhao, P.-D. Fan, - A. Fonari, M. J. Williamson, J. R. Rehr, M. Dupuis, D. Silverstein, - D. M. A. Smith, J. Nieplocha, V. Tipparaju, M. Krishnan, B. E. Van Kuiken, + K. Lopata, S. A. Fischer, S. Krishnamoorthy, M. Jacquelin, A. Woods, W. Ma, + M. Klemm, O. Villa, Y. Chen, V. Anisimov, F. Aquino, S. Hirata, + M. T. Hackler, E. Hermes, L. Jensen, J. E. Moore, J. C. Becca, V. Konjkov, + T. Risthaus, M. Malagoli, A. Marenich, A. Otero-de-la-Roza, J. Mullin, + P. Nichols, R. Peverati, J. Pittner, Y. Zhao, P.-D. Fan, A. Fonari, + M. J. Williamson, J. R. Rehr, M. Dupuis, D. Silverstein, D. M. A. Smith, + J. Nieplocha, V. Tipparaju, M. Krishnan, B. E. Van Kuiken, A. Vazquez-Mayagoitia, M. Swart, Q. Wu, T. Van Voorhis, A. A. Auer, M. Nooijen, L. D. Crosby, E. Brown, G. Cisneros, G. I. Fann, H. Fruchtl, J. Garza, K. Hirao, R. A. Kendall, J. A. Nichols, K. Tsemekhman, K. Wolinski, @@ -926,4 +925,4 @@ MA usage statistics: K. Glaesemann, G. Sandrone, M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, A. T. Wong, Z. Zhang. - Total times cpu: 2.9s wall: 2.9s + Total times cpu: 14.2s wall: 14.2s From 130992195a6c760cdd0d6ccfa23b0f17da4d375c Mon Sep 17 00:00:00 2001 From: edoapra Date: Thu, 16 Oct 2025 13:24:38 -0700 Subject: [PATCH 35/46] skip analyzing GW output for task BSE --- QA/runtests.mpi.unix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/QA/runtests.mpi.unix b/QA/runtests.mpi.unix index f86341a927..05a06b1847 100755 --- a/QA/runtests.mpi.unix +++ b/QA/runtests.mpi.unix @@ -433,6 +433,13 @@ sync set overall_status = 1 continue fi + # delete @GW lines for BSE tests + if [[ `grep -c 'NWChem BSE Module' ${STUB}.out` > 0 ]] ; then + rm -f sort.new + cat ${STUB}.ok.out.nwparse |grep -v @GW > sort.new && mv sort.new ${STUB}.ok.out.nwparse + rm -f sort.new + cat ${STUB}.out.nwparse |grep -v @GW > sort.new && mv sort.new ${STUB}.out.nwparse + fi #check if output is from EOMCCSD, since EOMCCSD output is non-deterministic if [[ `grep -c EOMCCSD ${STUB}.out.nwparse` > 0 ]] ; then rm -f sort.new From f6c148f00ff7ca20f79c389f356ce02e9fb32dab Mon Sep 17 00:00:00 2001 From: edoapra Date: Thu, 16 Oct 2025 15:24:10 -0700 Subject: [PATCH 36/46] fix for segfault for bse_ethene when using ARMCI_NETWORK=ARMCI https://github.com/jeffhammond/armci-mpi/blob/196eddd222f84846bba41d837b80441bc586a701/src/vector.c#L300 --- travis/run_qas.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/travis/run_qas.sh b/travis/run_qas.sh index ef7d42fd4a..ea24ee779a 100755 --- a/travis/run_qas.sh +++ b/travis/run_qas.sh @@ -88,6 +88,14 @@ env|egrep MP ;; esac ;; + ARMCI) + case "$os" in +# fixes segfault for bse_ethene in ga_copy_patch...ARMCII_Iov_op_datatype + Linux) + ulimit -s unlimited + ;; + esac + ;; esac if [[ "$MPI_IMPL" == "openmpi" ]]; then export MPIRUN_NPOPT=" --allow-run-as-root -mca mpi_yield_when_idle 0 --oversubscribe -np " From 6f1ae4c274b92905b35aa0f7cc45c6bfd1696e2b Mon Sep 17 00:00:00 2001 From: edoapra Date: Thu, 16 Oct 2025 15:33:02 -0700 Subject: [PATCH 37/46] removed duplicated --- .github/workflows/github_actions.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/github_actions.yml b/.github/workflows/github_actions.yml index 0a2559fd65..05615043c6 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/github_actions.yml @@ -209,12 +209,6 @@ jobs: armci_network: MPI-PR nwchem_modules: "tinyqmpw python" fc: ifx - - os: ubuntu-latest - experimental: true - mpi_impl: intel - armci_network: SOCKETS - nwchem_modules: "tce" - fc: ifx - os: ubuntu-22.04 experimental: true mpi_impl: intel From b60aa796c2c3285ae3e5e1d5ec939c5bffbb69f3 Mon Sep 17 00:00:00 2001 From: edoapra Date: Thu, 16 Oct 2025 21:11:32 -0700 Subject: [PATCH 38/46] check bse_ethene --- travis/check_failures.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/travis/check_failures.sh b/travis/check_failures.sh index 09ba5ac0bc..9ac3e53a7a 100755 --- a/travis/check_failures.sh +++ b/travis/check_failures.sh @@ -31,6 +31,7 @@ check_file () { grep -s 'l DFT energy' $file |tail echo ============================================================ grep -s 'Total PSPW energy' $file |tail + grep -s -B 3 "Root 1 singlet b1u" $file |grep E-0 fi } @@ -46,6 +47,7 @@ check_file h2o2-response check_file pspw check_file pspw_md check_file aump2 +check_file bse_ethene # stuff for OpenBLAS issues on macos echo 'looking for cgemm_incopy.o' find $TRAVIS_BUILD_DIR/src/libext -name cgemm_incopy.o From 7ef943bb3c094455a1600b4aaefe64c3757172d4 Mon Sep 17 00:00:00 2001 From: edoapra Date: Thu, 16 Oct 2025 21:12:10 -0700 Subject: [PATCH 39/46] disable MALLOC_PERTURB_ for bse_ethene --- travis/run_qas.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/travis/run_qas.sh b/travis/run_qas.sh index ea24ee779a..68cdc740e2 100755 --- a/travis/run_qas.sh +++ b/travis/run_qas.sh @@ -141,7 +141,7 @@ fi cd $TRAVIS_BUILD_DIR/QA && NWCHEM_BASIS_LIBRARY=${NWCHEM_TOP}/src/basis/libraries.bse/ ./runtests.mpi.unix procs $nprocs gw_closedshell gw_openshell gw_symmetry fi if [[ ! $(grep -i bse $TRAVIS_BUILD_DIR/src/stubs.F| awk '/bse_input/') ]]; then - cd $TRAVIS_BUILD_DIR/QA && NWCHEM_BASIS_LIBRARY=${NWCHEM_TOP}/src/basis/libraries.bse/ ./runtests.mpi.unix procs $nprocs bse_ethene + cd $TRAVIS_BUILD_DIR/QA && USE_ASAN=1 ./runtests.mpi.unix procs $nprocs bse_ethene fi if [[ ! $(grep -i dplot $TRAVIS_BUILD_DIR/src/stubs.F| awk '/dplot_input/') ]]; then cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs rt_tddft_dplot From 051956a61776027c009d4521a340ff56c6b58941 Mon Sep 17 00:00:00 2001 From: edoapra Date: Fri, 17 Oct 2025 09:57:29 -0700 Subject: [PATCH 40/46] added ga_zero and ga_sync --- src/bsemol/bse_davidson.F | 15 ++++++++++++++- src/bsemol/bse_davidson_kvec.F | 7 ++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/bsemol/bse_davidson.F b/src/bsemol/bse_davidson.F index 6ca6f7b852..4780d1e252 100644 --- a/src/bsemol/bse_davidson.F +++ b/src/bsemol/bse_davidson.F @@ -106,6 +106,15 @@ $ ga_duplicate(g_x,g_mkw,'mkw').and. $ ga_duplicate(g_x,g_trials,'trials') if(.not.stat) call errquit('ga create failed',103,GA_ERR) + call ga_zero(g_y) + call ga_zero(g_ym) + call ga_zero(g_s) + call ga_zero(g_ks) + call ga_zero(g_mks) + call ga_zero(g_w) + call ga_zero(g_kw) + call ga_zero(g_mkw) + call ga_zero(g_trials) g_wia = ga_create_handle() call ga_set_data(g_wia,1,npoles,mt_dbl) @@ -114,6 +123,7 @@ $ pars%nblocks,ga_nnodes()) stat = stat.and.ga_allocate(g_wia) if(.not.stat) call errquit('ga create failed',110,GA_ERR) + call ga_zero(g_wia) ! obtain "old" eigenvalue difference to build W @@ -170,7 +180,8 @@ do isp=1,pars%ipol if(.not.ga_create(mt_dbl,nri*pars%nvir(isp),pars%nvir(isp), $ 'g_erivv',0,pars%nvir(isp),g_tmp)) - $ call errquit('could not create GA',0,GA_ERR) + $ call errquit('could not create GA',0,GA_ERR) + call ga_zero(g_tmp) call ga_copy_patch('n',pars%g_erivv(isp),1,nri,1, $ pars%nvir(isp)*pars%nvir(isp), $ g_tmp,1,nri*pars%nvir(isp),1, @@ -499,6 +510,8 @@ $ pars%g_apb) stat = ga_create(mt_dbl,npoles,pars%nroots,'Y',0,pars%nroots, $ pars%g_amb) + call ga_zero(pars%g_apb) + call ga_zero(pars%g_amb) if(.not.stat) call errquit('failed to creare GA',484,GA_ERR) call nga_copy_patch('n',g_x,(/1,1/),(/npoles,pars%nroots/), $ pars%g_apb,(/1,1/),(/npoles,pars%nroots/)) diff --git a/src/bsemol/bse_davidson_kvec.F b/src/bsemol/bse_davidson_kvec.F index 8556ba623f..407e3df579 100644 --- a/src/bsemol/bse_davidson_kvec.F +++ b/src/bsemol/bse_davidson_kvec.F @@ -30,6 +30,7 @@ npoles1 = nocc(1)*nvir(1) npoles2 = nocc(2)*nvir(2) + call ga_zero(kv) call ga_copy(vec,kv) if (pars%tda .and. (sgn.eq.-1d0)) return @@ -44,15 +45,19 @@ if(.not.ga_create(mt_dbl,pars%nvir(isp),pars%nocc(isp),'g_tmp1', $ 0,pars%nocc(isp),g_tmp1)) $ call errquit('bse_kvec: ga_create failed',42,GA_ERR) + call ga_zero(g_tmp1) if(.not.ga_create(mt_dbl,nri,pars%nvir(isp),'g_tmp2', $ nri,0,g_tmp2)) $ call errquit('bse_kvec: ga_create failed',45,GA_ERR) + call ga_zero(g_tmp2) if(.not.ga_create(mt_dbl,nri*pars%nvir(isp),1,'g_tmp3', $ 0,1,g_tmp3)) $ call errquit('bse_kvec: ga_create failed',48,GA_ERR) + call ga_zero(g_tmp3) if(.not.ga_create(mt_dbl,pars%npoles(isp),1,'g_tmp4', $ 0,1,g_tmp4)) $ call errquit('bse_kvec: ga_create failed',48,GA_ERR) + call ga_zero(g_tmp4) call nga_access_block_grid(vec,subscript,k_vec,ld2) call ga_distribution(pars%g_erivv(isp),pars%me,ilo,ihi,jlo,jhi) @@ -88,7 +93,7 @@ call ga_release_update(g_tmp3,ilo,ihi,1,1) call nga_release_block_grid(vec,subscript) enddo - + call ga_sync() if (.not.ma_push_get(mt_dbl,nri*ntrials,'tmp1',l_tmp1,k_tmp1)) $ call errquit('bse_davidson_kvec: MA push failed',73,MA_ERR) From 59c378332d19a5828de2c5bbf5399e5ae93e39ae Mon Sep 17 00:00:00 2001 From: edoapra Date: Fri, 17 Oct 2025 09:58:03 -0700 Subject: [PATCH 41/46] clean removes build & install --- src/tools/GNUmakefile | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/GNUmakefile b/src/tools/GNUmakefile index a0bebc688f..ba713425fe 100644 --- a/src/tools/GNUmakefile +++ b/src/tools/GNUmakefile @@ -769,6 +769,7 @@ $(STAMP_DIR): clean: @test -e $(BUILDDIR)/Makefile && { cd $(BUILDDIR) && $(MAKE) clean; } || echo "Not configured" + rm -f build install rm -f ../mpi_include.txt ../ga*txt realclean: From fadf7fe808ffbab6ba5f50579b56fa5f5c6c4f54 Mon Sep 17 00:00:00 2001 From: edoapra Date: Fri, 17 Oct 2025 09:58:26 -0700 Subject: [PATCH 42/46] do not use BUILD_MPICH --- travis/nwchem.bashrc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/travis/nwchem.bashrc b/travis/nwchem.bashrc index fb5975e4df..0d95f99b37 100644 --- a/travis/nwchem.bashrc +++ b/travis/nwchem.bashrc @@ -184,9 +184,9 @@ if [[ -z "$USE_INTERNALBLAS" ]]; then # if [[ ${FC} == gfortran ]] ; then if [[ "$MPI_IMPL" == "mpich" ]]; then export MPICH_FC=$FC - if [[ "$arch" != "aarch64" ]]; then - export BUILD_MPICH=1 - fi +# if [[ "$arch" != "aarch64" ]]; then +# export BUILD_MPICH=1 +# fi fi if [[ `${CC} -dM -E - < /dev/null 2> /dev/null | grep -c clang` == 0 ]] && [[ `${CC} -dM -E - < /dev/null 2> /dev/null | grep -c GNU` > 0 ]] && [[ "$(expr `${CC} -dumpversion | cut -f1 -d.` \> 7)" == 1 ]]; then if [[ "$os" == "Linux" ]] && [[ "$arch" == "x86_64" ]]; then From ffc53b74aec0bb0bb731185af1677fdfaddcf4f1 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Fri, 17 Oct 2025 00:18:25 -0700 Subject: [PATCH 43/46] Remove bse_dipole.F --- src/bsemol/GNUmakefile | 2 +- src/bsemol/bse_dipole.F | 76 --------------------------------------- src/bsemol/bse_finalize.F | 11 ------ src/bsemol/bse_init.F | 3 -- 4 files changed, 1 insertion(+), 91 deletions(-) delete mode 100644 src/bsemol/bse_dipole.F diff --git a/src/bsemol/GNUmakefile b/src/bsemol/GNUmakefile index 980c6bb7be..d5b88219d5 100644 --- a/src/bsemol/GNUmakefile +++ b/src/bsemol/GNUmakefile @@ -2,7 +2,7 @@ OBJ = bsemol.o bse_input.o bse_init.o bse_analytic.o \ bse_davidson.o bse_lanczos.o bse_defaults.o \ bse_finalize.o bse_ri_init.o bse_wmn.o \ bse_analytic_cis.o bse_analytic_tda.o \ - bse_dipole.o bse_oscstr.o bse_puteris.o bse_get_eia.o \ + bse_oscstr.o bse_puteris.o bse_get_eia.o \ bse_davidson_diagonal.o \ bse_davidson_kvec.o bse_davidson_guess.o \ bse_davidson_kortho.o bse_davidson_restart.o \ diff --git a/src/bsemol/bse_dipole.F b/src/bsemol/bse_dipole.F deleted file mode 100644 index 235ab412f3..0000000000 --- a/src/bsemol/bse_dipole.F +++ /dev/null @@ -1,76 +0,0 @@ - subroutine bse_dipole(pars) - implicit none -#include "global.fh" -#include "mafdecls.fh" -#include "errquit.fh" -#include "bse.fh" -#include "cdft.fh" - type(bse_params_t) :: pars - - character(*),parameter :: pname = 'bse_dipole: ' - - integer ixyz,isp,ilo,ihi,jlo,jhi,amo,imo - integer g_dip(3),handle(3),g_tmp1,g_tmp2 - integer k,klocal,kproc,kglobal,tovern,modtn,ktmp,ld - integer ga_create_atom_blocked - external ga_create_atom_blocked - - ! Create dipole matrices - do ixyz=1,3 - g_dip(ixyz) = ga_create_atom_blocked(geom,ao_bas_han,'Dipoles') - if(.not.nga_create(mt_dbl,1,pars%npoles(1),'dip a',0, - & pars%g_dipa(ixyz))) - & call errquit(pname//'could not create g_dipa',0,GA_ERR) - if (pars%ipol.gt.1) then - if(.not.nga_create(mt_dbl,1,pars%npoles(2),'dip b',0, - & pars%g_dipb(ixyz))) - & call errquit(pname//'could not create g_dipb',0,GA_ERR) - endif - enddo - - ! Compute dipole AO integrals for the 3 components - call int_dip_ga(ao_bas_han, ao_bas_han, g_dip(1), g_dip(2), - & g_dip(3)) - - ! Transform dipole matrices - do isp=1,pars%ipol - if (.not.ga_create(mt_dbl,nbf_ao,pars%nocc(isp),'tmp1', - & 0,pars%nocc(isp),g_tmp1)) - & call errquit(pname//'could not create g_tmp1',0,GA_ERR) - if (.not.ga_create(mt_dbl,pars%nvir(isp),pars%nocc(isp),'tmp2', - & pars%nvir(isp),0,g_tmp2)) - & call errquit(pname//'could not create g_tmp2',0,GA_ERR) - - if (isp.eq.1) then - handle(:) = pars%g_dipa(:) - else - handle(:) = pars%g_dipb(:) - endif - - tovern = pars%npoles(isp)/pars%nprocs - modtn = mod(pars%npoles(isp),pars%nprocs) - call ga_distribution(g_tmp2,pars%me,ilo,ihi,jlo,jhi) - do ixyz=1,3 - call ga_matmul_patch('n','n',1d0,0d0, - & g_dip(ixyz),1,nbf_ao,1,nbf_ao, - & pars%g_movecs(isp),1,nbf_ao,1,pars%nocc(isp), - & g_tmp1,1,nbf_ao,1,pars%nocc(isp)) - call ga_matmul_patch('t','n',1d0,0d0, - & pars%g_movecs(isp),pars%nocc(isp)+1, - & pars%nmo,1,nbf_ao, - & g_tmp1,1,nbf_ao,1,pars%nocc(isp), - & g_tmp2,1,pars%nvir(isp),1,pars%nocc(isp)) - call nga_copy_patch('n',g_tmp2,(/1,1/), - & (/pars%nvir(isp),pars%nocc(isp)/),handle(ixyz),1, - & pars%npoles(isp)) - enddo - if ((.not.ga_destroy(g_tmp1)).and.(.not.ga_destroy(g_tmp2))) - & call errquit(pname//'could not destroy GAs',0,GA_ERR) - enddo - - do ixyz=1,3 - if (.not.ga_destroy(g_dip(ixyz))) - & call errquit(pname//'could not destroy GAs',0,GA_ERR) - enddo - - end diff --git a/src/bsemol/bse_finalize.F b/src/bsemol/bse_finalize.F index a0b0299cb5..ceee6144b6 100644 --- a/src/bsemol/bse_finalize.F +++ b/src/bsemol/bse_finalize.F @@ -19,17 +19,6 @@ $ call errquit(pname//'failed to destroy g_movecs',0,GA_ERR) enddo - do i=1,3 - if(.not.ga_destroy(pars%g_dipa(i))) - $ call errquit(pname//'failed to destroy g_dipa',0,GA_ERR) - enddo - if (ipol.gt.1) then - do i=1,3 - if(.not.ga_destroy(pars%g_dipb(i))) - $ call errquit(pname//'failed to destroy g_dipa',0,GA_ERR) - enddo - endif - ok = ma_chop_stack(pars%l_mf_evals) if (.not.ok) & call errquit(pname//'could not chop stack',0,MA_ERR) diff --git a/src/bsemol/bse_init.F b/src/bsemol/bse_init.F index a332a788df..8f77b76a8e 100644 --- a/src/bsemol/bse_init.F +++ b/src/bsemol/bse_init.F @@ -311,9 +311,6 @@ c $ ('bse_init: failed to destroy g_work',0, GA_ERR) enddo - ! Get dipole in CIS basis - call bse_dipole(pars) - !Clean previous grid call grid_cleanup(.false.) From 02b5b77afcc6116aac19fb2793f1da211d350382 Mon Sep 17 00:00:00 2001 From: Daniel Mejia-Rodriguez Date: Fri, 17 Oct 2025 13:07:11 -0700 Subject: [PATCH 44/46] Correct size for W, KW, and MKW --- src/bsemol/bse_buildw.F | 2 ++ src/bsemol/bse_davidson.F | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/bsemol/bse_buildw.F b/src/bsemol/bse_buildw.F index bb4d308675..e3dd8e4858 100644 --- a/src/bsemol/bse_buildw.F +++ b/src/bsemol/bse_buildw.F @@ -58,6 +58,8 @@ C !Factorize dieletric matrix for further use call dpftrf('n','l',nri,w,info) + if(info.ne.0) + & call errquit(pname//'Failed to decompose dielectric',info,0) !Deallocate deallocate(factor,stat=alloc) diff --git a/src/bsemol/bse_davidson.F b/src/bsemol/bse_davidson.F index 4780d1e252..9c494f4f15 100644 --- a/src/bsemol/bse_davidson.F +++ b/src/bsemol/bse_davidson.F @@ -101,9 +101,6 @@ $ ga_duplicate(g_x,g_s,'s').and. $ ga_duplicate(g_x,g_ks,'ks').and. $ ga_duplicate(g_x,g_mks,'mks').and. - $ ga_duplicate(g_x,g_w,'w').and. - $ ga_duplicate(g_x,g_kw,'kw').and. - $ ga_duplicate(g_x,g_mkw,'mkw').and. $ ga_duplicate(g_x,g_trials,'trials') if(.not.stat) call errquit('ga create failed',103,GA_ERR) call ga_zero(g_y) @@ -111,10 +108,21 @@ call ga_zero(g_s) call ga_zero(g_ks) call ga_zero(g_mks) + call ga_zero(g_trials) + + ! W, K*W, and M*K*W are fixed to nroots columns + g_w = ga_create_handle() + call ga_set_data(g_w, 2, (/npoles, pars%nroots/), mt_dbl) + call ga_set_array_name(g_w, 'w') + call ga_set_tiled_irreg_proc_grid(g_w, int_mb(k_map), + $ (/pars%nblocks, 1/), (/ga_nnodes(), 1/)) + stat = ga_allocate(g_w) + stat = stat .and. ga_duplicate(g_w, g_kw, 'kw') .and. + $ ga_duplicate(g_w, g_mkw, 'mkw') + if(.not.stat) call errquit('Could not allocate g_w', 0, GA_ERR) call ga_zero(g_w) call ga_zero(g_kw) call ga_zero(g_mkw) - call ga_zero(g_trials) g_wia = ga_create_handle() call ga_set_data(g_wia,1,npoles,mt_dbl) From 5e6f709f91b5283a2cb99ba6b486f683ad8af3b5 Mon Sep 17 00:00:00 2001 From: edoapra Date: Fri, 17 Oct 2025 13:26:05 -0700 Subject: [PATCH 45/46] remove commit 7ef943bb3c094455a1600b4aaefe64c3757172d4 --- travis/run_qas.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/travis/run_qas.sh b/travis/run_qas.sh index 68cdc740e2..006dbf6a3a 100755 --- a/travis/run_qas.sh +++ b/travis/run_qas.sh @@ -141,7 +141,7 @@ fi cd $TRAVIS_BUILD_DIR/QA && NWCHEM_BASIS_LIBRARY=${NWCHEM_TOP}/src/basis/libraries.bse/ ./runtests.mpi.unix procs $nprocs gw_closedshell gw_openshell gw_symmetry fi if [[ ! $(grep -i bse $TRAVIS_BUILD_DIR/src/stubs.F| awk '/bse_input/') ]]; then - cd $TRAVIS_BUILD_DIR/QA && USE_ASAN=1 ./runtests.mpi.unix procs $nprocs bse_ethene + cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs bse_ethene fi if [[ ! $(grep -i dplot $TRAVIS_BUILD_DIR/src/stubs.F| awk '/dplot_input/') ]]; then cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs rt_tddft_dplot From 8c8c9cb0336d95438ef439cda962e20298c5b4c9 Mon Sep 17 00:00:00 2001 From: edoapra Date: Fri, 17 Oct 2025 14:39:24 -0700 Subject: [PATCH 46/46] use nprocs=2 more often on mac --- travis/nwchem.bashrc | 1 + travis/run_qas.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/travis/nwchem.bashrc b/travis/nwchem.bashrc index 0d95f99b37..84ab6772b2 100644 --- a/travis/nwchem.bashrc +++ b/travis/nwchem.bashrc @@ -28,6 +28,7 @@ fi echo NWCHEM_TOP is $NWCHEM_TOP #TARBALL=https://github.com/nwchemgit/nwchem/releases/download/v7.0.0-beta1/nwchem-7.0.0-release.revision-5bcf0416-src.2019-11-01.tar.bz2 export USE_MPI=y +export MPICH_INTERFACE_HOSTNAME=localhost # fix for Mpich interface errors if [[ "$FC" == "flang" ]]; then export BUILD_MPICH=1 fi diff --git a/travis/run_qas.sh b/travis/run_qas.sh index 006dbf6a3a..8da549710e 100755 --- a/travis/run_qas.sh +++ b/travis/run_qas.sh @@ -35,7 +35,7 @@ if [[ ! -z "$USE_OPENMP" ]]; then export OMP_NUM_THREADS="$USE_OPENMP" export OMP_STACKSIZE=32M fi -if [[ "$os" == "Darwin" && "$BUILD_MPICH" == 1 ]] || [[ "$os" == "Darwin" && "$ARMCI_NETWORK" == MPI-PT ]] ; then +if [[ "$os" == "Darwin" && "$ARMCI_NETWORK" == MPI-PT ]] ; then nprocs=1 fi env|egrep MP