Compare commits

...

139 commits

Author SHA1 Message Date
Edoardo Aprà
550861dc52
typo [ci skip] 2023-01-19 13:46:34 -08:00
edoapra
65bff4fa33
update [ci skip] 2023-01-16 10:54:30 -08:00
edoapra
077113ca1e
update 2023-01-16 10:51:47 -08:00
edoapra
c099e8240f
rt updates 2023-01-16 10:51:35 -08:00
NWChem: Open Source High-Performance Computational Chemistry
283d37d753
Merge pull request #719 from edoapra/release-7-2-0
updates from master
2023-01-15 18:44:50 -08:00
edoapra
401c4ce683
definition of pkg_extra 2023-01-13 18:04:54 -08:00
edoapra
1a0e45ec45
more pkgs in retry loop 2023-01-13 18:04:50 -08:00
edoapra
c269e65f85
more pkgs in retry loop 2023-01-13 18:04:48 -08:00
edoapra
afc1678a0b
retry apt install 2023-01-13 18:04:40 -08:00
edoapra
d424b23449
move mpif90 check 2023-01-13 18:04:38 -08:00
edoapra
51b5685c58
indentation 2023-01-13 18:04:36 -08:00
edoapra
51636ad620
exit 1 when mpif90 is not present 2023-01-13 18:04:28 -08:00
edoapra
0582c31d1f
libxc 6.1.0 2023-01-13 18:04:21 -08:00
edoapra
4e0747abb4
fix error termination 2023-01-13 18:04:17 -08:00
edoapra
eab2c622f2
improved check on patch command 2023-01-13 18:04:13 -08:00
Edoardo Aprà
fcbb5cac7c
update [ci skip] 2023-01-13 14:36:32 -08:00
Edoardo Aprà
326500aa46
update [ci skip] 2023-01-13 14:34:55 -08:00
NWChem: Open Source High-Performance Computational Chemistry
afe804c1d7
Merge pull request #716 from edoapra/release-7-2-0
MP2 updates for Release 7.2.0
2023-01-07 10:26:21 -08:00
edoapra
cbe7f14342
URL change for dftd3 2023-01-06 20:53:44 -08:00
edoapra
88ddd4a5ae
update after commit bbd835402d 2023-01-06 18:57:39 -08:00
edoapra
a201188046
test for basis details keyword 2023-01-06 18:57:38 -08:00
edoapra
5d279ad92b
backing off commit 58800d4f3b 2023-01-06 16:39:20 -08:00
edoapra
2d6a88d37c
force user to set BLAS_SIZE & SCALAPACK_SIZE 2023-01-06 16:23:41 -08:00
edoapra
359e43479e
fix merge operations 2023-01-06 15:32:54 -08:00
edoapra
d8e6e7e92a
mirroring to improve parallelization 2023-01-06 15:32:38 -08:00
edoapra
c41a64019d
more long to size_t 2023-01-06 15:31:22 -08:00
edoapra
069870b42f
typo 2023-01-06 15:31:03 -08:00
edoapra
86f305f5aa
default mp2:copyback back to .false. 2023-01-06 12:43:51 -08:00
edoapra
029eac1f76
trying to improve parallelization 2023-01-06 12:42:59 -08:00
NWChem: Open Source High-Performance Computational Chemistry
bd4351c477
Merge pull request #715 from edoapra/release-7-2-0
master update to Release 7 2 0
2022-12-22 18:17:34 -08:00
edoapra
249971f999
fix for recent clang 2022-12-21 16:49:22 -08:00
edoapra
3969c5c9c5
size_t for LLP64 pointers 2022-12-21 16:49:19 -08:00
edoapra
fd74cdaa93
used ga 582 from https://github.com/GlobalArrays 2022-12-21 16:48:38 -08:00
edoapra
5a5a9844ad
fix for shell conditional 2022-12-21 16:46:50 -08:00
edoapra
c2f089e638
fix for V=1 2022-12-21 16:46:21 -08:00
edoapra
d5246541f1
keep tools compilation quiet with make V=0 or V=-1 2022-12-21 16:45:31 -08:00
edoapra
87dbe4d16d
I_MPI_CC 2022-12-21 16:20:44 -08:00
edoapra
3096932faa
BUILD_MPICH for amdflang 2022-12-21 16:20:44 -08:00
edoapra
d42a8d42d5
BUILD_MPICH for amdflang 2022-12-21 16:20:43 -08:00
edoapra
ff0ca3b60a
use intel icx 2022-12-21 16:20:43 -08:00
edoapra
0f3380227c
use O1 for amdclang 15 since segvs on openblas 2022-12-21 16:20:42 -08:00
edoapra
5904c497e6
amd software updates 2022-12-21 16:18:50 -08:00
edoapra
07b51a4ad6
oneapi 2023 for macos 2022-12-21 16:18:50 -08:00
edoapra
60b2aac892
fix name 2022-12-21 16:18:49 -08:00
edoapra
e395b5504b
linux oneapi 2023 2022-12-21 16:18:20 -08:00
edoapra
7b7669aecd
macos oneapi update 2022-12-21 16:17:41 -08:00
edoapra
b539a98140
switch to latest linux oneapi. ifort 2021.7.1 2022-12-21 16:17:29 -08:00
edoapra
460bbfa679
modify apt install 2022-12-21 16:17:17 -08:00
edoapra
b90eba70fc
less verbose downloads 2022-12-21 16:17:04 -08:00
edoapra
4f55c95777
fedora fixes [ci skip] 2022-12-21 16:14:50 -08:00
edoapra
e88a9b4a1b
fedora fixes [ci skip] 2022-12-21 16:14:40 -08:00
edoapra
1a31c06d81
fedora fixes [ci skip] 2022-12-21 16:14:31 -08:00
edoapra
ac97f8369b
use nvidia hpc_sdk 22.11 2022-12-21 16:14:19 -08:00
Daniel Mejia-Rodriguez
e906d1556f
Adjust sigma threshold (libxc uses the square of this value) 2022-12-21 16:08:38 -08:00
Daniel Mejia-Rodriguez
b8628e3ea6
Changes for LibXC 4.x 2022-12-21 16:08:38 -08:00
Edoardo Aprà
ff16d36128
badge update [ci skip] 2022-12-21 16:07:42 -08:00
edoapra
a5923e59a6
remove duplicate [ci skip] 2022-12-19 11:59:35 -08:00
NWChem: Open Source High-Performance Computational Chemistry
b4bc1edd83
Merge pull request #711 from edoapra/release-7-2-0
libxc updates
2022-12-17 18:50:54 -08:00
edoapra
64eb0f562b
DENABLE_FORTRAN03=ON for version 4 2022-12-17 11:10:00 -08:00
edoapra
2e9ce24982
fixes for libxc 4 2022-12-17 11:10:00 -08:00
edoapra
cb5abdc5fe
added test for ubuntu2004 libxc 2022-12-17 11:09:59 -08:00
edoapra
5e252f987d
fix for stubbing 2022-12-17 11:09:59 -08:00
edoapra
005912cf17
typo 2022-12-17 11:09:59 -08:00
edoapra
f3a6c9a740
detect size of libxc np 2022-12-17 11:09:58 -08:00
edoapra
365d60826d
defined XC_MAJOR_VERSION only when needed 2022-12-17 11:09:58 -08:00
edoapra
68163622d3
extract XC_MAJOR_VERSION 2022-12-17 11:09:57 -08:00
edoapra
e256fd001b
check libxc version only when the define USE_LIBXC exists 2022-12-17 11:09:57 -08:00
edoapra
354c611ffa
removed erroneous #endif 2022-12-17 11:09:57 -08:00
edoapra
b022c6a94e
USE_LIBXC=-1 to use libxc pkgs 2022-12-17 11:09:56 -08:00
edoapra
b55ad84b75
fixes for libxc 3 and 4 2022-12-17 11:09:56 -08:00
edoapra
e212ad6520
external LIBXC: LIBXC_DIR replaced by LIBXC_INCLUDE/LIBXC_LIB 2022-12-17 11:08:11 -08:00
Edoardo Aprà
964077885f
update [ci skip] 2022-12-14 11:05:15 -08:00
edoapra
76b3ae89ab
update [ci skip] 2022-12-13 16:53:35 -08:00
edoapra
2fee89ba3d
output update after commit 0472252ad4 [ci skip] 2022-12-13 16:53:30 -08:00
Edoardo Aprà
4b49776db9
update [ci skip] 2022-12-13 16:07:30 -08:00
NWChem: Open Source High-Performance Computational Chemistry
c1f7d81a73
Merge pull request #708 from edoapra/release-7-2-0
Updates for Release 7.2.0
2022-12-12 10:01:43 -08:00
edoapra
9b8784f94a
move build_mpich section 2022-12-11 20:54:01 -08:00
edoapra
4af6379494
definition of MPI headers moved to config/makefile.h 2022-12-11 20:53:17 -08:00
edoapra
c72354338a
MPI env variables are now ignored unless FORCE_MPI_ENV is set 2022-12-11 20:53:13 -08:00
edoapra
cfcba1c3dc
MPI env variables are now ignored unless FORCE_MPI_ENV is set 2022-12-11 20:49:17 -08:00
edoapra
c13c48cc2e
fixes for asan 2022-12-11 16:27:11 -08:00
edoapra
5171944cc2
completing f4a9d82678 2022-12-11 16:26:43 -08:00
edoapra
8197acccc8
ifx fix 2022-12-11 16:26:23 -08:00
edoapra
14e04e83c6
ifx fix 2022-12-11 16:25:42 -08:00
edoapra
5a420b151d
missing square bracket 2022-12-11 16:24:31 -08:00
edoapra
0d496c22d6
python version 3.11 2022-12-08 18:22:10 -08:00
edoapra
dcaa2c0b1c
macos fixes 2022-12-08 18:22:10 -08:00
edoapra
12842995fe
warning about silent output 2022-12-08 18:22:09 -08:00
edoapra
980c6773a5
tddftgrad_h2o_cis_lda 2022-12-08 18:22:09 -08:00
edoapra
59c304679a
tddft_grad_tdaloc returning .false. 2022-12-08 18:22:08 -08:00
edoapra
e35608f325
added tddftgrad_h2o_cis_lda 2022-12-08 18:22:08 -08:00
edoapra
535d271ae4
reproducer for https://github.com/nwchemgit/nwchem/issues/698 2022-12-08 18:22:07 -08:00
edoapra
6ec303d600
cleanup to address https://github.com/nwchemgit/nwchem/issues/698 2022-12-08 18:20:06 -08:00
edoapra
ff1c7f9739
cleanup to address https://github.com/nwchemgit/nwchem/issues/698 2022-12-08 18:19:49 -08:00
edoapra
bf42d53dfa
bug fix for commit 518b2b72b1 2022-12-05 12:14:44 -08:00
edoapra
45fe17623d
added uhf mp2 case 2022-12-05 12:14:30 -08:00
edoapra
adb5e41671
removed unnecessary files 2022-12-03 18:59:02 -08:00
edoapra
84482224b2
replaced ga_transpose 2022-12-03 18:58:25 -08:00
edoapra
c15b2125cf
removed copy patch 2022-12-03 18:58:25 -08:00
edoapra
2fcf97e696
more time profiling 2022-12-03 18:58:24 -08:00
edoapra
a0f6fcbb23
mp2_copyback by default for better scaling 2022-12-03 18:57:43 -08:00
edoapra
81af0a71da
cross compile 2022-11-29 10:31:26 -08:00
edoapra
acb44fc970
set NWCHEM_LINK_CUDA=1 when TCE_OPENACC+1 2022-11-26 21:13:57 -08:00
edoapra
70aab8838f
stop when using cuda input option and code was not compiled with TCE_CUDA=1 2022-11-26 21:13:45 -08:00
edoapra
63e97f1916
FC=gfortran when FC is not set 2022-11-26 21:11:30 -08:00
edoapra
2a3cb34c29
use OpenBLAS DYNAMIC_ARCH only on x86 2022-11-26 21:10:22 -08:00
edoapra
2440b82ecb
replaced by peigs.pdf [ci skip] 2022-11-17 16:27:39 -08:00
edoapra
cc032adb2e
peigs.pdf update [ci skip] 2022-11-17 16:27:39 -08:00
edoapra
d4bed5492d
updates to compiles with texi2pdf [ci skip] 2022-11-17 16:27:38 -08:00
edoapra
b1a9ce09d1
Peigs documentation. CVS revision 1.1 date: 1995-04-13 17:16:46 -0700 2022-11-17 16:27:34 -08:00
Edoardo Aprà
51bdffa785
updates [ci skip] 2022-11-15 17:11:09 -08:00
edoapra
b76d87a753
check libxc version supplied with LIBXC_VERSION 2022-11-13 22:56:23 -08:00
edoapra
ed60ebd09d
fix variable name 2022-11-13 22:56:10 -08:00
edoapra
c6b69cf4fe
added LIBXC_VERSION to choose libxc version 2022-11-13 22:55:52 -08:00
edoapra
8029d67e2f
libxc 6.0.0 2022-11-13 22:55:33 -08:00
edoapra
27e4371399
fix for laplacian-dependent xc functionals 2022-11-13 22:53:02 -08:00
edoapra
0685b53433
set dolap=t only when XC_FLAGS_NEEDS_LAPLACIAN is set 2022-11-13 22:52:39 -08:00
edoapra
3f10db4e42
remove extra $ 2022-11-13 17:30:23 -08:00
edoapra
ec08f8e9d7
skip rpm install on selfhosted runner [ci skip] 2022-11-13 17:04:14 -08:00
edoapra
0173f34054
disable cpu optimizations when USE_HWOPT=n 2022-11-08 17:34:41 -08:00
edoapra
db623cad7d
mirroring 2022-11-08 17:34:30 -08:00
edoapra
3f90bad855
avoid communication in xlm_make_ao_poles 2022-11-08 17:34:00 -08:00
Edoardo Aprà
c2f1ea0836
Updates 2022-11-08 15:16:49 -08:00
edoapra
f501b3f644
fix xyz output https://github.com/nwchemgit/nwchem/issues/680 2022-11-02 10:22:09 -07:00
edoapra
402b6027b7
fix hwloc detection on mac 2022-11-02 10:22:05 -07:00
edoapra
e5237ec9d5
missing arg 2022-10-31 08:47:17 -07:00
edoapra
f06e9b1dae
fix gfortran detection 2022-10-31 08:47:09 -07:00
edoapra
63dccb56c0
context [ci skip] 2022-10-29 11:05:50 -07:00
edoapra
ed4fb3ac54
context [ci skip] 2022-10-29 11:05:50 -07:00
edoapra
25f7c14fe6
github_env [ci skip] 2022-10-29 11:05:45 -07:00
edoapra
685134ec55
typo [ci skip] 2022-10-29 10:45:50 -07:00
edoapra
15f98ae3ab
indentation [ci skip] 2022-10-29 10:45:50 -07:00
edoapra
b6ab7229db
add NWCHEM_BRANCH build arg [ci skip] 2022-10-29 10:45:50 -07:00
edoapra
72c80e14b5
updates 2022-10-29 10:45:23 -07:00
edoapra
173b83b316
limit np for talc [ci skip] 2022-10-29 10:37:18 -07:00
edoapra
bc68522c25
USE_ASAN conflicts with MALLOC_PERTURB_ [ci skip] 2022-10-28 13:24:56 -07:00
edoapra
583ddb0035
unset USE_OPENMP https://github.com/nwchemgit/nwchem/issues/678 2022-10-27 17:51:28 -07:00
edoapra
6de59b632a
7.2.0 release [ci skip] 2022-10-27 12:54:04 -07:00
edoapra
a5751a200a
ifx fix [ci skip] 2022-10-26 21:42:21 -07:00
82 changed files with 29837 additions and 64862 deletions

View file

@ -36,7 +36,7 @@ jobs:
key: ${{ matrix.folder}}-${{ matrix.fc}}/${{ matrix.archs}}-nwchem-dockeractions-v002 key: ${{ matrix.folder}}-${{ matrix.fc}}/${{ matrix.archs}}-nwchem-dockeractions-v002
- name: Qemu - name: Qemu
id: qemu id: qemu
uses: docker/setup-qemu-action@v1 uses: docker/setup-qemu-action@v2
with: with:
image: crazymax/binfmt:v6.0.0 image: crazymax/binfmt:v6.0.0
- name: Available platforms - name: Available platforms
@ -44,15 +44,10 @@ jobs:
echo ${{ steps.qemu.outputs.platforms }} echo ${{ steps.qemu.outputs.platforms }}
docker images docker images
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1 uses: docker/setup-buildx-action@v2
with: with:
driver-opts: | driver-opts: |
image=moby/buildkit:master image=moby/buildkit:master
- name: Get Arch
id: get-arch
run: |
echo "::set-output name=arch::$(echo ${{matrix.archs }} | sed 's/linux//'|sed 's/\///g' )"
shell: bash
- name: fetch cache - name: fetch cache
if: (steps.setup-cache.outputs.cache-hit == 'true') && ( matrix.folder != 'helloworld' ) if: (steps.setup-cache.outputs.cache-hit == 'true') && ( matrix.folder != 'helloworld' )
run: | run: |
@ -62,14 +57,14 @@ jobs:
rsync -av ~/cache/libext* cache/. ; \ rsync -av ~/cache/libext* cache/. ; \
echo "libext cache fetched" ; \ echo "libext cache fetched" ; \
fi fi
- uses: haya14busa/action-cond@v1 - uses: haya14busa/action-cond@dependabot/npm_and_yarn/actions/core-1.9.1
id: cache-hit-reporter id: cache-hit-reporter
with: with:
cond: ${{ steps.setup-cache.outputs.cache-hit != '' }} cond: ${{ steps.setup-cache.outputs.cache-hit != '' }}
if_true: "Y" if_true: "Y"
if_false: "N" if_false: "N"
- name: build_schedule - name: build_schedule
uses: docker/build-push-action@v2 uses: docker/build-push-action@v3
with: with:
push: false push: false
context: ${{ matrix.folder }} context: ${{ matrix.folder }}
@ -79,6 +74,7 @@ jobs:
build-args: | build-args: |
FC=${{ matrix.fc }} FC=${{ matrix.fc }}
CACHE_HIT=${{ steps.cache-hit-reporter.outputs.value }} CACHE_HIT=${{ steps.cache-hit-reporter.outputs.value }}
NWCHEM_BRANCH=${{ github.ref_name }}
- name: store cache - name: store cache
run: | run: |
mkdir -p ~/cache/ mkdir -p ~/cache/

View file

@ -129,6 +129,16 @@ jobs:
nwchem_modules: "tce" nwchem_modules: "tce"
fc: gfortran-11 fc: gfortran-11
cc: gcc-11 cc: gcc-11
- os: ubuntu-20.04
experimental: true
mpi_impl: mpich
armci_network: MPI-TS
nwchem_modules: "nwdft solvation driver"
fc: gfortran
cc: gcc
use_libxc: -1
blas: "internal"
blas_size: 8
- os: ubuntu-22.04 - os: ubuntu-22.04
experimental: true experimental: true
mpi_impl: mpich mpi_impl: mpich
@ -136,6 +146,7 @@ jobs:
nwchem_modules: "qmandpw qmd" nwchem_modules: "qmandpw qmd"
fc: gfortran-11 fc: gfortran-11
cc: gcc-11 cc: gcc-11
use_libxc: -1
- os: ubuntu-20.04 - os: ubuntu-20.04
experimental: true experimental: true
mpi_impl: mpich mpi_impl: mpich
@ -220,7 +231,7 @@ jobs:
armci_network: MPI-TS armci_network: MPI-TS
nwchem_modules: "tinyqmpw" nwchem_modules: "tinyqmpw"
fc: ifort fc: ifort
cc: icc cc: icx
use_libxc: 1 use_libxc: 1
- os: macos-11 - os: macos-11
experimental: true experimental: true
@ -252,7 +263,7 @@ jobs:
armci_network: MPI-TS armci_network: MPI-TS
nwchem_modules: "nwdft solvation driver" nwchem_modules: "nwdft solvation driver"
fc: ifort fc: ifort
cc: icc cc: icx
use_simint: 1 use_simint: 1
- os: ubuntu-20.04 - os: ubuntu-20.04
experimental: true experimental: true

View file

@ -14,7 +14,7 @@ jobs:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: actions/setup-python@v4 - uses: actions/setup-python@v4
with: with:
python-version: '3.10' python-version: '3.11'
check-latest: true check-latest: true
- run: pip install --upgrade pip wheel - run: pip install --upgrade pip wheel
- run: pip install bandit black codespell flake8 flake8-2020 flake8-bugbear - run: pip install bandit black codespell flake8 flake8-2020 flake8-bugbear

View file

@ -519,8 +519,6 @@ let "myexit+=$?"
let "myexit+=$?" let "myexit+=$?"
./runtests.mpi.unix procs $np carbon_fon ./runtests.mpi.unix procs $np carbon_fon
let "myexit+=$?" let "myexit+=$?"
./runtests.mpi.unix procs $np ch5n_nbo
let "myexit+=$?"
./runtests.mpi.unix procs $np tpss tpssh ./runtests.mpi.unix procs $np tpss tpssh
let "myexit+=$?" let "myexit+=$?"
# #
@ -532,7 +530,7 @@ let "myexit+=$?"
./runtests.mpi.unix procs $np h2o2_fde ./runtests.mpi.unix procs $np h2o2_fde
let "myexit+=$?" let "myexit+=$?"
# tddft gradients # tddft gradients
./runtests.mpi.unix procs $np tddftgrad_co_cis tddftgrad_n2 tddftgrad_co tddftgrad_n2_uks tddftgrad_ch2o ./runtests.mpi.unix procs $np tddftgrad_co_cis tddftgrad_n2 tddftgrad_co tddftgrad_n2_uks tddftgrad_ch2o tddftgrad_h2o_cis_lda
let "myexit+=$?" let "myexit+=$?"
# new xc functionals for 7.0.0 # new xc functionals for 7.0.0
./runtests.mpi.unix procs $np dft_rscan ./runtests.mpi.unix procs $np dft_rscan
@ -543,6 +541,12 @@ let "myexit+=$?"
let "myexit+=$?" let "myexit+=$?"
./runtests.mpi.unix procs $np rt_tddft_mocap ./runtests.mpi.unix procs $np rt_tddft_mocap
let "myexit+=$?" let "myexit+=$?"
./runtests.mpi.unix procs $np rt_tddft_cytosine_cam_cdfit
let "myexit+=$?"
./runtests.mpi.unix procs $np rt_tddft_tcne_spinkick
let "myexit+=$?"
./runtests.mpi.unix procs $np rt_tddft_water_abs_spec
let "myexit+=$?"
./runtests.mpi.unix procs $np dft_ne_n12 ./runtests.mpi.unix procs $np dft_ne_n12
let "myexit+=$?" let "myexit+=$?"
./runtests.mpi.unix procs $np dft_mfm_ch3 ./runtests.mpi.unix procs $np dft_mfm_ch3
@ -685,7 +689,8 @@ echo 'Please check the final values for the last optimized structure.'
let "myexit+=$?" let "myexit+=$?"
./runtests.mpi.unix procs $np dielsalder ./runtests.mpi.unix procs $np dielsalder
let "myexit+=$?" let "myexit+=$?"
./runtests.mpi.unix procs $np talc np_small=$(get_limit $np 16)
./runtests.mpi.unix procs $np_small talc
let "myexit+=$?" let "myexit+=$?"
echo 'The intermediate energy values for the numerical gradient ' echo 'The intermediate energy values for the numerical gradient '
echo 'test may cause some differences.' echo 'test may cause some differences.'

View file

@ -32,7 +32,9 @@
export HYDRA_DEBUG=0 export HYDRA_DEBUG=0
# find memory leaks using this glibc feature that # find memory leaks using this glibc feature that
# initialized memory blocks to non-zero values # initialized memory blocks to non-zero values
export MALLOC_PERTURB_=$(($RANDOM % 255 + 1)) if [[ -z "${USE_ASAN}" ]]; then
export MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
fi
if [[ -z "${NWCHEM_TARGET}" ]]; then if [[ -z "${NWCHEM_TARGET}" ]]; then
UNAME_S=$(uname -s) UNAME_S=$(uname -s)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,64 @@
start
title "test basis details keyword"
echo
geometry
C 0.000000 0.000000 0.000000
H 0.000000 0.000000 1.089000
H 1.026719 0.000000 -0.363000
H -0.513360 -0.889165 -0.363000
H -0.513360 0.889165 -0.363000
end
basis b1
* details library aug-cc-pvdz
end
basis b2 bse
* library aug-cc-pvdz
end
basis b3 spherical
* library aug-cc-pvdz
end
basis b4
* library aug-cc-pvdz
end
set "ao basis" b1
dft
vectors output b1.mos
print low
end
task dft
set "ao basis" b2
dft
vectors input project b1 b1.mos output b2.mos
end
task dft
set "ao basis" b3
dft
vectors input project b2 b2.mos output b3.mos
end
task dft
set "ao basis" b4
dft
vectors input project b3 b3.mos output b4.mos
end
task dft

View file

@ -0,0 +1,836 @@
argument 1 = /Users/edo/nwchem/nwchem-edoapra-master/QA/tests/bas_details/bas_details.nw
NWChem w/ OpenMP: maximum threads = 1
============================== echo of input deck ==============================
start
title "test basis details keyword"
echo
geometry
C 0.000000 0.000000 0.000000
H 0.000000 0.000000 1.089000
H 1.026719 0.000000 -0.363000
H -0.513360 -0.889165 -0.363000
H -0.513360 0.889165 -0.363000
end
basis b1
* details library aug-cc-pvdz
end
basis b2 bse
* library aug-cc-pvdz
end
basis b3 spherical
* library aug-cc-pvdz
end
basis b4
* library aug-cc-pvdz
end
set "ao basis" b1
dft
vectors output b1.mos
print low
end
task dft
set "ao basis" b2
dft
vectors input project b1 b1.mos output b2.mos
end
task dft
set "ao basis" b3
dft
vectors input project b2 b2.mos output b3.mos
end
task dft
set "ao basis" b4
dft
vectors input project b3 b3.mos output b4.mos
end
task dft
================================================================================
Northwest Computational Chemistry Package (NWChem) 7.2.0
--------------------------------------------------------
Environmental Molecular Sciences Laboratory
Pacific Northwest National Laboratory
Richland, WA 99352
Copyright (c) 1994-2022
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 = WE40672
program = /Users/edo/nwchem/nwchem-edoapra-master/bin/MACX64/nwchem
date = Wed Dec 14 18:04:30 2022
compiled = Wed_Dec_14_18:03:49_2022
source = /Users/edo/nwchem/nwchem-edoapra-master
nwchem branch = 7.2.0
nwchem revision = nwchem_on_git-4232-g9621f8a386
ga revision = 5.8.1
use scalapack = T
input = /Users/edo/nwchem/nwchem-edoapra-master/QA/tests/bas_details/bas_details.nw
prefix = bas_details.
data base = ./bas_details.db
status = startup
nproc = 1
time left = -1s
Memory information
------------------
heap = 26214396 doubles = 200.0 Mbytes
stack = 26214401 doubles = 200.0 Mbytes
global = 52428800 doubles = 400.0 Mbytes (distinct from heap & stack)
total = 104857597 doubles = 800.0 Mbytes
verify = yes
hardfail = no
Directory information
---------------------
0 permanent = .
0 scratch = .
NWChem Input Module
-------------------
test basis details keyword
--------------------------
Scaling coordinates for geometry "geometry" by 1.889725989
(inverse scale = 0.529177249)
TD symmetry detected
------
auto-z
------
Looking for out-of-plane bends
no constraints, skipping 0.000000000000000E+000
no constraints, skipping 0.000000000000000E+000
Geometry "geometry" -> ""
-------------------------
Output coordinates in angstroms (scale by 1.889725989 to convert to a.u.)
No. Tag Charge X Y Z
---- ---------------- ---------- -------------- -------------- --------------
1 C 6.0000 0.00000000 0.00000000 0.00000000
2 H 1.0000 -0.62873455 0.62873455 0.62873455
3 H 1.0000 0.62873455 -0.62873455 0.62873455
4 H 1.0000 -0.62873455 -0.62873455 -0.62873455
5 H 1.0000 0.62873455 0.62873455 -0.62873455
Atomic Mass
-----------
C 12.000000
H 1.007825
Effective nuclear repulsion energy (a.u.) 13.4477252140
Nuclear Dipole moment (a.u.)
----------------------------
X Y Z
---------------- ---------------- ----------------
0.0000000000 0.0000000000 0.0000000000
Symmetry information
--------------------
Group name Td
Group number 42
Group order 24
No. of unique centers 2
Symmetry unique atoms
1 2
Z-matrix (autoz)
--------
Units are Angstrom for bonds and degrees for angles
Type Name I J K L M Value
----------- -------- ----- ----- ----- ----- ----- ----------
1 Stretch 1 2 1.08900
2 Stretch 1 3 1.08900
3 Stretch 1 4 1.08900
4 Stretch 1 5 1.08900
5 Bend 2 1 3 109.47122
6 Bend 2 1 4 109.47122
7 Bend 2 1 5 109.47122
8 Bend 3 1 4 109.47122
9 Bend 3 1 5 109.47122
10 Bend 4 1 5 109.47122
XYZ format geometry
-------------------
5
geometry
C 0.00000000 0.00000000 0.00000000
H -0.62873455 0.62873455 0.62873455
H 0.62873455 -0.62873455 0.62873455
H -0.62873455 -0.62873455 -0.62873455
H 0.62873455 0.62873455 -0.62873455
==============================================================================
internuclear distances
------------------------------------------------------------------------------
center one | center two | atomic units | angstroms
------------------------------------------------------------------------------
2 H | 1 C | 2.05791 | 1.08900
3 H | 1 C | 2.05791 | 1.08900
4 H | 1 C | 2.05791 | 1.08900
5 H | 1 C | 2.05791 | 1.08900
------------------------------------------------------------------------------
number of included internuclear distances: 4
==============================================================================
==============================================================================
internuclear angles
------------------------------------------------------------------------------
center 1 | center 2 | center 3 | degrees
------------------------------------------------------------------------------
2 H | 1 C | 3 H | 109.47
2 H | 1 C | 4 H | 109.47
2 H | 1 C | 5 H | 109.47
3 H | 1 C | 4 H | 109.47
3 H | 1 C | 5 H | 109.47
4 H | 1 C | 5 H | 109.47
------------------------------------------------------------------------------
number of included internuclear angles: 6
==============================================================================
Summary of "b1" -> "" (cartesian)
------------------------------------------------------------------------------
Tag Description Shells Functions and Types
---------------- ------------------------------ ------ ---------------------
* aug-cc-pvdz on all atoms
Summary of "b2" -> "" (cartesian)
------------------------------------------------------------------------------
Tag Description Shells Functions and Types
---------------- ------------------------------ ------ ---------------------
* aug-cc-pvdz on all atoms
Summary of "b3" -> "" (spherical)
------------------------------------------------------------------------------
Tag Description Shells Functions and Types
---------------- ------------------------------ ------ ---------------------
* aug-cc-pvdz on all atoms
Summary of "b4" -> "" (cartesian)
------------------------------------------------------------------------------
Tag Description Shells Functions and Types
---------------- ------------------------------ ------ ---------------------
* aug-cc-pvdz on all atoms
NWChem DFT Module
-----------------
test basis details keyword
Basis "ao basis" -> "b1" (spherical)
-----
C (Carbon)
----------
Exponent Coefficients
-------------- ---------------------------------------------------------
1 S 6.66500000E+03 0.000692
1 S 1.00000000E+03 0.005329
1 S 2.28000000E+02 0.027077
1 S 6.47100000E+01 0.101718
1 S 2.10600000E+01 0.274740
1 S 7.49500000E+00 0.448564
1 S 2.79700000E+00 0.285074
1 S 5.21500000E-01 0.015204
2 S 6.66500000E+03 -0.000146
2 S 1.00000000E+03 -0.001154
2 S 2.28000000E+02 -0.005725
2 S 6.47100000E+01 -0.023312
2 S 2.10600000E+01 -0.063955
2 S 7.49500000E+00 -0.149981
2 S 2.79700000E+00 -0.127262
2 S 5.21500000E-01 0.544529
3 S 1.59600000E-01 1.000000
4 S 4.69000000E-02 1.000000
5 P 9.43900000E+00 0.038109
5 P 2.00200000E+00 0.209480
5 P 5.45600000E-01 0.508557
6 P 1.51700000E-01 1.000000
7 P 4.04100000E-02 1.000000
8 D 5.50000000E-01 1.000000
9 D 1.51000000E-01 1.000000
H (Hydrogen)
------------
Exponent Coefficients
-------------- ---------------------------------------------------------
1 S 1.30100000E+01 0.019685
1 S 1.96200000E+00 0.137977
1 S 4.44600000E-01 0.478148
2 S 1.22000000E-01 1.000000
3 S 2.97400000E-02 1.000000
4 P 7.27000000E-01 1.000000
5 P 1.41000000E-01 1.000000
Summary of "ao basis" -> "b1" (spherical)
------------------------------------------------------------------------------
Tag Description Shells Functions and Types
---------------- ------------------------------ ------ ---------------------
C aug-cc-pvdz 9 23 4s3p2d
H aug-cc-pvdz 5 9 3s2p
Caching 1-el integrals
WARNING: movecs_in_org=atomic not equal to movecs_in=./b1.mos
Time after variat. SCF: 0.4
Time prior to 1st pass: 0.4
Total DFT energy = -40.098721470454
One electron energy = -79.817762448480
Coulomb energy = 32.731732491192
Exchange-Corr. energy = -6.460416727190
Nuclear repulsion energy = 13.447725214025
Numeric. integr. density = 10.000005610713
Total iterative time = 0.3s
Occupations of the irreducible representations
----------------------------------------------
irrep alpha beta
-------- -------- --------
a1 2.0 2.0
a2 0.0 0.0
e 0.0 0.0
t1 0.0 0.0
t2 3.0 3.0
Task times cpu: 0.4s wall: 0.4s
NWChem Input Module
-------------------
NWChem DFT Module
-----------------
test basis details keyword
Basis "ao basis" -> "b2" (spherical)
-----
C (Carbon)
----------
Exponent Coefficients
-------------- ---------------------------------------------------------
1 S 6.66500000E+03 0.000692
1 S 1.00000000E+03 0.005329
1 S 2.28000000E+02 0.027077
1 S 6.47100000E+01 0.101718
1 S 2.10600000E+01 0.274740
1 S 7.49500000E+00 0.448564
1 S 2.79700000E+00 0.285074
1 S 5.21500000E-01 0.015204
2 S 6.66500000E+03 -0.000146
2 S 1.00000000E+03 -0.001154
2 S 2.28000000E+02 -0.005725
2 S 6.47100000E+01 -0.023312
2 S 2.10600000E+01 -0.063955
2 S 7.49500000E+00 -0.149981
2 S 2.79700000E+00 -0.127262
2 S 5.21500000E-01 0.544529
3 S 1.59600000E-01 1.000000
4 S 4.69000000E-02 1.000000
5 P 9.43900000E+00 0.038109
5 P 2.00200000E+00 0.209480
5 P 5.45600000E-01 0.508557
6 P 1.51700000E-01 1.000000
7 P 4.04100000E-02 1.000000
8 D 5.50000000E-01 1.000000
9 D 1.51000000E-01 1.000000
H (Hydrogen)
------------
Exponent Coefficients
-------------- ---------------------------------------------------------
1 S 1.30100000E+01 0.019685
1 S 1.96200000E+00 0.137977
1 S 4.44600000E-01 0.478148
2 S 1.22000000E-01 1.000000
3 S 2.97400000E-02 1.000000
4 P 7.27000000E-01 1.000000
5 P 1.41000000E-01 1.000000
Summary of "ao basis" -> "b2" (spherical)
------------------------------------------------------------------------------
Tag Description Shells Functions and Types
---------------- ------------------------------ ------ ---------------------
C aug-cc-pvdz 9 23 4s3p2d
H aug-cc-pvdz 5 9 3s2p
Caching 1-el integrals
WARNING: movecs_in_org=project not equal to movecs_in=./b2.mos
Time after variat. SCF: 0.7
Time prior to 1st pass: 0.7
Total DFT energy = -40.098721474766
One electron energy = -79.817417679667
Coulomb energy = 32.731340846306
Exchange-Corr. energy = -6.460369855430
Nuclear repulsion energy = 13.447725214025
Numeric. integr. density = 10.000005610781
Total iterative time = 0.2s
Occupations of the irreducible representations
----------------------------------------------
irrep alpha beta
-------- -------- --------
a1 2.0 2.0
a2 0.0 0.0
e 0.0 0.0
t1 0.0 0.0
t2 3.0 3.0
Task times cpu: 0.3s wall: 0.3s
NWChem Input Module
-------------------
NWChem DFT Module
-----------------
test basis details keyword
Basis "ao basis" -> "b3" (spherical)
-----
C (Carbon)
----------
Exponent Coefficients
-------------- ---------------------------------------------------------
1 S 6.66500000E+03 0.000692
1 S 1.00000000E+03 0.005329
1 S 2.28000000E+02 0.027077
1 S 6.47100000E+01 0.101718
1 S 2.10600000E+01 0.274740
1 S 7.49500000E+00 0.448564
1 S 2.79700000E+00 0.285074
1 S 5.21500000E-01 0.015204
2 S 6.66500000E+03 -0.000146
2 S 1.00000000E+03 -0.001154
2 S 2.28000000E+02 -0.005725
2 S 6.47100000E+01 -0.023312
2 S 2.10600000E+01 -0.063955
2 S 7.49500000E+00 -0.149981
2 S 2.79700000E+00 -0.127262
2 S 5.21500000E-01 0.544529
3 S 1.59600000E-01 1.000000
4 S 4.69000000E-02 1.000000
5 P 9.43900000E+00 0.038109
5 P 2.00200000E+00 0.209480
5 P 5.45600000E-01 0.508557
6 P 1.51700000E-01 1.000000
7 P 4.04100000E-02 1.000000
8 D 5.50000000E-01 1.000000
9 D 1.51000000E-01 1.000000
H (Hydrogen)
------------
Exponent Coefficients
-------------- ---------------------------------------------------------
1 S 1.30100000E+01 0.019685
1 S 1.96200000E+00 0.137977
1 S 4.44600000E-01 0.478148
2 S 1.22000000E-01 1.000000
3 S 2.97400000E-02 1.000000
4 P 7.27000000E-01 1.000000
5 P 1.41000000E-01 1.000000
Summary of "ao basis" -> "b3" (spherical)
------------------------------------------------------------------------------
Tag Description Shells Functions and Types
---------------- ------------------------------ ------ ---------------------
C aug-cc-pvdz 9 23 4s3p2d
H aug-cc-pvdz 5 9 3s2p
Caching 1-el integrals
WARNING: movecs_in_org=project not equal to movecs_in=./b3.mos
Time after variat. SCF: 1.0
Time prior to 1st pass: 1.0
Total DFT energy = -40.098721474784
One electron energy = -79.817393093582
Coulomb energy = 32.731313156390
Exchange-Corr. energy = -6.460366751616
Nuclear repulsion energy = 13.447725214025
Numeric. integr. density = 10.000005610778
Total iterative time = 0.2s
Occupations of the irreducible representations
----------------------------------------------
irrep alpha beta
-------- -------- --------
a1 2.0 2.0
a2 0.0 0.0
e 0.0 0.0
t1 0.0 0.0
t2 3.0 3.0
Task times cpu: 0.3s wall: 0.3s
NWChem Input Module
-------------------
NWChem DFT Module
-----------------
test basis details keyword
Basis "ao basis" -> "b4" (cartesian)
-----
C (Carbon)
----------
Exponent Coefficients
-------------- ---------------------------------------------------------
1 S 6.66500000E+03 0.000692
1 S 1.00000000E+03 0.005329
1 S 2.28000000E+02 0.027077
1 S 6.47100000E+01 0.101718
1 S 2.10600000E+01 0.274740
1 S 7.49500000E+00 0.448564
1 S 2.79700000E+00 0.285074
1 S 5.21500000E-01 0.015204
2 S 6.66500000E+03 -0.000146
2 S 1.00000000E+03 -0.001154
2 S 2.28000000E+02 -0.005725
2 S 6.47100000E+01 -0.023312
2 S 2.10600000E+01 -0.063955
2 S 7.49500000E+00 -0.149981
2 S 2.79700000E+00 -0.127262
2 S 5.21500000E-01 0.544529
3 S 1.59600000E-01 1.000000
4 S 4.69000000E-02 1.000000
5 P 9.43900000E+00 0.038109
5 P 2.00200000E+00 0.209480
5 P 5.45600000E-01 0.508557
6 P 1.51700000E-01 1.000000
7 P 4.04100000E-02 1.000000
8 D 5.50000000E-01 1.000000
9 D 1.51000000E-01 1.000000
H (Hydrogen)
------------
Exponent Coefficients
-------------- ---------------------------------------------------------
1 S 1.30100000E+01 0.019685
1 S 1.96200000E+00 0.137977
1 S 4.44600000E-01 0.478148
2 S 1.22000000E-01 1.000000
3 S 2.97400000E-02 1.000000
4 P 7.27000000E-01 1.000000
5 P 1.41000000E-01 1.000000
Summary of "ao basis" -> "b4" (cartesian)
------------------------------------------------------------------------------
Tag Description Shells Functions and Types
---------------- ------------------------------ ------ ---------------------
C aug-cc-pvdz 9 25 4s3p2d
H aug-cc-pvdz 5 9 3s2p
Caching 1-el integrals
WARNING: movecs_in_org=project not equal to movecs_in=./b4.mos
Time after variat. SCF: 1.3
Time prior to 1st pass: 1.3
Total DFT energy = -40.100836427564
One electron energy = -79.804187567806
Coulomb energy = 32.702475992294
Exchange-Corr. energy = -6.446850066076
Nuclear repulsion energy = 13.447725214025
Numeric. integr. density = 10.000005618093
Total iterative time = 0.3s
Occupations of the irreducible representations
----------------------------------------------
irrep alpha beta
-------- -------- --------
a1 2.0 2.0
a2 0.0 0.0
e 0.0 0.0
t1 0.0 0.0
t2 3.0 3.0
Task times cpu: 0.4s wall: 0.4s
NWChem Input Module
-------------------
Summary of allocated global arrays
-----------------------------------
No active global arrays
MA_summarize_allocated_blocks: starting scan ...
heap block 'gridpts', handle 74, address 0x7fedf6985698:
type of elements: double precision
number of elements: 33554432
address of client space: 0x7fedf6985700
index for client space: 17581915250195
total number of bytes: 268435568
MA_summarize_allocated_blocks: scan completed: 1 heap block, 0 stack blocks
MA usage statistics:
allocation statistics:
heap stack
---- -----
current number of blocks 1 0
maximum number of blocks 25 55
current total bytes 268435568 0
maximum total bytes 273176464 22512552
maximum total K-bytes 273177 22513
maximum total M-bytes 274 23
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, 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,
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,
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: 1.6s wall: 1.6s

View file

@ -19,7 +19,12 @@ geometry
H .566733 1.075185 -.889981 H .566733 1.075185 -.889981
H -.423217 -1.094815 .824662 H -.423217 -1.094815 .824662
H -.423217 -1.094815 -.824662 H -.423217 -1.094815 -.824662
symmetry c1 # symmetry c1
end
scf
sym off
adapt off
end end
task SCF energy task SCF energy

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,6 @@
start dimer start dimer
title "Water dimer DFT using fragment initial guess" title "Water dimer DFT using fragment initial guess"
geometry print nocenter noautoz dimer geometry print nocenter noautoz noautosym dimer
symmetry c1 tol 0.0
O -0.595 1.165 -0.048 O -0.595 1.165 -0.048
H 0.110 1.812 -0.170 H 0.110 1.812 -0.170
H -1.452 1.598 -0.154 H -1.452 1.598 -0.154
@ -9,14 +8,12 @@ start dimer
H 0.175 -2.013 0.348 H 0.175 -2.013 0.348
H 0.177 -0.480 0.010 H 0.177 -0.480 0.010
end end
geometry print nocenter noautoz h2o1 geometry print nocenter noautoz noautosym h2o1
symmetry c1 tol 0.0
O -0.595 1.165 -0.048 O -0.595 1.165 -0.048
H 0.110 1.812 -0.170 H 0.110 1.812 -0.170
H -1.452 1.598 -0.154 H -1.452 1.598 -0.154
end end
geometry print nocenter noautoz h2o2 geometry print nocenter noautoz noautosym h2o2
symmetry c1 tol 0.0
O 0.724 -1.284 0.034 O 0.724 -1.284 0.034
H 0.175 -2.013 0.348 H 0.175 -2.013 0.348
H 0.177 -0.480 0.010 H 0.177 -0.480 0.010
@ -27,19 +24,26 @@ start dimer
end end
set dft:no_prune true set dft:no_prune true
dft
sym off
adapt off
grid xfine
tolerances tight
convergence energy 1d-9
end
set geometry h2o1 set geometry h2o1
dft; vectors input atomic output h2o1.movecs; grid xfine; tolerances tight; end dft; vectors input atomic output h2o1.movecs; end
task dft task dft
set geometry h2o2 set geometry h2o2
dft; vectors input atomic output h2o2.movecs; grid xfine; tolerances tight; end dft; vectors input atomic output h2o2.movecs; end
task dft task dft
set geometry dimer set geometry dimer
dft dft
vectors input fragment h2o1.movecs h2o2.movecs \ vectors input fragment h2o1.movecs h2o2.movecs \
output dimer.movecs; tolerances tight; grid xfine; output dimer.movecs;
end end
task dft task dft
@ -53,23 +57,23 @@ start dimer
# Spin-paired Thomas Fermi # Spin-paired Thomas Fermi
set geometry h2o1 set geometry h2o1
dft; frozemb geometry h2o2 vectors h2o2.movecs; frozemb_ts tf; \ dft; frozemb geometry h2o2 vectors h2o2.movecs; frozemb_ts tf; \
vectors input h2o1.movecs output h2o1.fde.movecs; odft; grid xfine; tolerances tight; end vectors input h2o1.movecs output h2o1.fde.movecs; odft; end
task dft task dft
# Spin-unpaired # Spin-unpaired
dft; frozemb geometry h2o2 vectors h2o2.movecs; frozemb_ts tf; \ dft; frozemb geometry h2o2 vectors h2o2.movecs; frozemb_ts tf; \
vectors input h2o1.movecs output h2o1.fde.movecs; odft; grid xfine; tolerances tight; end vectors input h2o1.movecs output h2o1.fde.movecs; odft; end
task dft task dft
# Spin-paired von Weisacker # Spin-paired von Weisacker
set geometry h2o1 set geometry h2o1
dft; frozemb geometry h2o2 vectors h2o2.movecs; frozemb_ts vw; \ dft; frozemb geometry h2o2 vectors h2o2.movecs; frozemb_ts vw; \
vectors input h2o1.movecs output h2o1.fde.movecs; odft; grid xfine; tolerances tight; end vectors input h2o1.movecs output h2o1.fde.movecs; odft; end
task dft task dft
# Spin-unpaired # Spin-unpaired
dft; frozemb geometry h2o2 vectors h2o2.movecs; frozemb_ts vw; \ dft; frozemb geometry h2o2 vectors h2o2.movecs; frozemb_ts vw; \
vectors input h2o1.movecs output h2o1.fde.movecs; odft; grid xfine; tolerances tight; end vectors input h2o1.movecs output h2o1.fde.movecs; odft; end
task dft task dft
unset dft:frozemb unset dft:frozemb

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,252 @@
##
## Real-time TDDFT QA
## rt_tddft_cytosine_cam_cdfit
##
## This will test range-separated XC and charge density fitting by
## propagating from a converged ground state in the absence of an
## external field. Since we are at a variational minimum, the dipole
## moment and energy should be time-independent and consistent with
## the DFT SCF values.
##
## Suggested checks:
## nw_rtparse -xdipole -px -c myrun.out cytosine.out
## nw_rtparse -xdipole -py -c myrun.out cytosine.out
## nw_rtparse -xdipole -pz -c myrun.out cytosine.out
## nw_rtparse -xenergy -c myrun.out cytosine.out
##
title "Cytosine CD fitting + CAM-B3LYP"
memory 1800 mb
start cytosine
echo
geometry "system" units angstroms noautosym nocenter noautoz
C -0.21392 1.48233 -2.56453
C 1.70616 2.50220 -1.71935
C 2.22400 1.26962 -1.26854
C 1.47919 0.17758 -1.49356
H -0.16957 -0.54127 -2.42952
H 2.00878 4.39665 -1.75063
H 3.23491 3.58949 -1.32727
H 3.09143 1.21549 -0.77806
H 1.72181 -0.74069 -1.17471
N 0.28958 0.27064 -2.13203
N 0.52437 2.60665 -2.33531
N 2.40270 3.63507 -1.53819
O -1.30179 1.51461 -3.16181
end
set geometry "system"
##
## H, C, N, O: cc-pvdz
##
basis spherical
H S
13.0100000 0.0196850
1.9620000 0.1379770
0.4446000 0.4781480
H S
0.1220000 1.0000000
H P
0.7270000 1.0000000
C S
6665.0000000 0.0006920 -0.0001460
1000.0000000 0.0053290 -0.0011540
228.0000000 0.0270770 -0.0057250
64.7100000 0.1017180 -0.0233120
21.0600000 0.2747400 -0.0639550
7.4950000 0.4485640 -0.1499810
2.7970000 0.2850740 -0.1272620
0.5215000 0.0152040 0.5445290
C S
0.1596000 1.0000000
C P
9.4390000 0.0381090
2.0020000 0.2094800
0.5456000 0.5085570
C P
0.1517000 1.0000000
C D
0.5500000 1.0000000
N S
9046.0000000 0.0007000 -0.0001530
1357.0000000 0.0053890 -0.0012080
309.3000000 0.0274060 -0.0059920
87.7300000 0.1032070 -0.0245440
28.5600000 0.2787230 -0.0674590
10.2100000 0.4485400 -0.1580780
3.8380000 0.2782380 -0.1218310
0.7466000 0.0154400 0.5490030
N S
0.2248000 1.0000000
N P
13.5500000 0.0399190
2.9170000 0.2171690
0.7973000 0.5103190
N P
0.2185000 1.0000000
N D
0.8170000 1.0000000
O S
11720.0000000 0.0007100 -0.0001600
1759.0000000 0.0054700 -0.0012630
400.8000000 0.0278370 -0.0062670
113.7000000 0.1048000 -0.0257160
37.0300000 0.2830620 -0.0709240
13.2700000 0.4487190 -0.1654110
5.0250000 0.2709520 -0.1169550
1.0130000 0.0154580 0.5573680
O S
0.3023000 1.0000000
O P
17.7000000 0.0430180
3.8540000 0.2289130
1.0460000 0.5087280
O P
0.2753000 1.0000000
O D
1.1850000 1.0000000
end
# ##
# ## H, C, N, O: ahlrichs coulomb fitting
# ##
basis "cd basis"
H S
9.30813000E+00 0.03446618
2.30671800E+00 0.12253380
H S
7.52012000E-01 1.0000000
H S
2.73978000E-01 1.0000000
H P
2.03270400E+00 1.0000000
H P
7.90252000E-01 1.0000000
H D
2.01954800E+00 1.0000000
C S
5.91553927E+02 0.31582020
1.72117940E+02 0.87503863
5.47992590E+01 2.30760524
C S
1.89590940E+01 1.0000000
C S
7.05993000E+00 1.0000000
C S
2.79484900E+00 1.0000000
C S
1.15863400E+00 1.0000000
C S
4.94324000E-01 1.0000000
C S
2.12969000E-01 1.0000000
C P
3.27847358E-01 1.0000000
C P
7.86833659E-01 1.0000000
C P
1.97101832E+00 1.0000000
C D
4.01330100E+00 1.0000000
C D
1.24750500E+00 1.0000000
C D
4.08148000E-01 1.0000000
C F
9.00000000E-01 1.0000000
N S
7.91076935E+02 0.41567506
2.29450184E+02 1.14750694
7.28869600E+01 3.01935767
N S
2.51815960E+01 1.0000000
N S
9.37169700E+00 1.0000000
N S
3.71065500E+00 1.0000000
N S
1.53946300E+00 1.0000000
N S
6.57553000E-01 1.0000000
N S
2.83654000E-01 1.0000000
N P
4.70739194E-01 1.0000000
N P
1.12977407E+00 1.0000000
N P
2.83008403E+00 1.0000000
N D
5.83298650E+00 1.0000000
N D
1.73268650E+00 1.0000000
N D
5.45242500E-01 1.0000000
N F
1.82648000E+00 1.0000000
O S
9.57843253E+02 0.56249624
2.81967425E+02 1.49108985
9.01998320E+01 3.86547733
O S
3.11382990E+01 1.0000000
O S
1.14937320E+01 1.0000000
O S
4.48404900E+00 1.0000000
O S
1.82350400E+00 1.0000000
O S
7.60903000E-01 1.0000000
O S
3.20292000E-01 1.0000000
O P
6.14708863E-01 1.0000000
O P
1.47530127E+00 1.0000000
O P
3.69562968E+00 1.0000000
O D
7.65267200E+00 1.0000000
O D
2.21786800E+00 1.0000000
O D
6.82337000E-01 1.0000000
O F
2.19178082E+00 1.0000000
end
##
## CAM-B3LYP with tight convergence
##
## (no need for "direct" since coulomb part done with charge density fitting)
##
dft
xc xcamb88 1.00 lyp 0.81 vwn_5 0.19 hfexch 1.00
cam 0.33 cam_alpha 0.19 cam_beta 0.46
convergence density 1d-9
tolerances tight acccoul 10
end
task dft energy
##
## No excitation, just propagate a few steps with full checking and profiling
##
rt_tddft
tmax 1.0
dt 0.2
nchecks *
checklvl 3
nrestarts 0
prof
end
task dft rt_tddft

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,115 @@
##
## Real-time TDDFT QA
## rt_tddft_tcne_spinkick
##
## This tests open shell propagation and spin-dependent excitation
## rules. Here we excite the alpha spin with a positive kick, and the
## beta spin with a negative kick.
##
## Suggested checks:
## nw_rtparse -xdipole -salpha -pz -c myrun.out tcne.out
## nw_rtparse -xdipole -sbeta -pz -c myrun.out tcne.out
## nw_rtparse -xenergy -c myrun.out tcne.out
## nw_rtparse -xS2 -c myrun.out tcne.out
##
title "Tetracyanoethylene anion"
echo
start tcne
echo
##
## optimized with cc-pvdz/B3LYP
##
geometry "system" units angstroms noautosym nocenter noautoz
C -1.77576486 0.66496556 0.00004199
N -2.94676621 0.71379797 0.00004388
C -0.36046718 0.62491168 0.00003506
C 0.36049301 -0.62492429 -0.00004895
C 1.77579907 -0.66504145 -0.00006082
N 2.94680364 -0.71382258 -0.00006592
C -0.31262746 -1.87038951 -0.00011201
N -0.85519492 -2.90926164 -0.00016331
C 0.31276207 1.87031662 0.00010870
N 0.85498782 2.90938919 0.00016857
end
set geometry "system"
##
## C, N: 6-31G
##
basis
C S
3047.5249000 0.0018347
457.3695100 0.0140373
103.9486900 0.0688426
29.2101550 0.2321844
9.2866630 0.4679413
3.1639270 0.3623120
C SP
7.8682724 -0.1193324 0.0689991
1.8812885 -0.1608542 0.3164240
0.5442493 1.1434564 0.7443083
C SP
0.1687144 1.0000000 1.0000000
N S
4173.5110000 0.0018348
627.4579000 0.0139950
142.9021000 0.0685870
40.2343300 0.2322410
12.8202100 0.4690700
4.3904370 0.3604550
N SP
11.6263580 -0.1149610 0.0675800
2.7162800 -0.1691180 0.3239070
0.7722180 1.1458520 0.7408950
N SP
0.2120313 1.0000000 1.0000000
end
charge -1
dft
mult 2
odft
xc b3lyp
end
task dft energy
##
## Excite alpha and beta spins with different kick excitations. Also
## do full checking.
##
rt_tddft
tmax 5.0
dt 0.2
nrestarts 0
nchecks *
checklvl 3
field "ka"
type delta
polarization z
max 0.001
spin alpha
end
field "kb"
type delta
polarization z
max -0.001
spin beta
end
excite "system" with "ka"
excite "system" with "kb"
end
task dft rt_tddft

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,30 @@
echo
title h2o
start h2o
geometry units bohr
symmetry c1
H -1.57866004 0.0 0.40931277
O 0.00000000 0.0 -0.81862553
H 1.57866004 0.0 0.40931277
end
basis "ao basis"
* library 6-31G
end
dft
xc slater 1.0 pw91lda 1.0
# xc slater 1.0 pw91lda 1.0 hfexch 1d-8
end
tddft
cis
nroots 10
algorithm 1
notriplet
civecs
grad
root 1
end
end
#set tddft:tdaloc .false.
task tddft gradient
task tddft gradient numerical

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
<!---[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fnwchemgit%2Fnwchem%2Fbadge%3Fref%3Dmaster&style=flat)](https://actions-badge.atrox.dev/nwchemgit/nwchem/goto?ref=master)---> <!---[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fnwchemgit%2Fnwchem%2Fbadge%3Fref%3Dmaster&style=flat)](https://actions-badge.atrox.dev/nwchemgit/nwchem/goto?ref=master)--->
[![NWChem_CI](https://img.shields.io/github/workflow/status/nwchemgit/nwchem/NWChem_CI)](https://github.com/nwchemgit/nwchem/actions) [![NWChem_CI](https://img.shields.io/github/actions/workflow/status/nwchemgit/nwchem/github_actions.yml?style=plastic)](https://github.com/nwchemgit/nwchem/actions)
<!---[![Build Travis-CI Status](https://img.shields.io/travis/nwchemgit/nwchem.svg)](https://travis-ci.org/nwchemgit/nwchem/builds)---> <!---[![Build Travis-CI Status](https://img.shields.io/travis/nwchemgit/nwchem.svg)](https://travis-ci.org/nwchemgit/nwchem/builds)--->
[![License](https://img.shields.io/badge/license-ECL2-blue.svg)](https://raw.githubusercontent.com/nwchemgit/nwchem/master/LICENSE.md) [![License](https://img.shields.io/badge/license-ECL2-blue.svg)](https://raw.githubusercontent.com/nwchemgit/nwchem/master/LICENSE.md)
[![Github Downloads All Releases](https://img.shields.io/github/downloads/nwchemgit/nwchem/total.svg)](https://github.com/nwchemgit/nwchem/releases) [![Github Downloads All Releases](https://img.shields.io/github/downloads/nwchemgit/nwchem/total.svg)](https://github.com/nwchemgit/nwchem/releases)

51
release.notes.7.2.0 Normal file
View file

@ -0,0 +1,51 @@
NWChem Version 7.2.0 Release Notes
NWChem is now available on Github at
https://github.com/nwchemgit/nwchem
Documentation available from the NWChem website at
https://nwchemgit.github.io
NWChem 7.2.0 is released as open-source under the ECL 2.0 license.
NWChem 7.2.0 will be released with the latest Global Arrays Toolkit (v5.8.2).
NEW FUNCTIONALITY
Modules:
Molecular GW with Gaussian basis
Interfaces:
* Plumed
* Libxc
* tblite
Compilation:
Added the enviroment variable USE_HWOPT: when USE_HWOPT=n all hardware (non-dynamic) optimizations are not used (e.g. gcc -march=native)
Solvation module:
* COSMO updates
Gaussian DFT module:
* New functionality: exact two-component relativistic Hamiltonian (X2C)
* New functionality: Auxiliary Density Functional Theory (ADFT) XC method
* New functionality: Resolution of Identity Time-Dependft DFT (RITDFT)
* New DFT XC functionals
- r2SCAN0
- r2scan-D3 and rscan-D3
- n12-sx
- mn15 and mn15-l
- mn12-sx and mm12-l
- revm11
- wb97, wb97-d3 and wb97x
- r2SCAN, r2SCAN-L
Basis set
* added autoaux fitting basis sets to libraries.bse
* new "bse" input option
BUG FIXES/ENHANCEMENTS
TBD

View file

@ -1135,11 +1135,13 @@ c Now read the basis for this magical atom type in using
c the given tag c the given tag
c c
10 if (.not. inp_a(field)) field=' ' 10 if (.not. inp_a(field)) field=' '
#ifdef IGNORE_HEH
c c
c ignore spherical vs cartesian from bse for He/H c ignore spherical vs cartesian from bse for He/H
c since they do assign spherical when the other elements are cartesian c since they do assign spherical when the other elements are cartesian
c c
if (.not.inp_compare(.false., 'h', string(1:1))) then if (.not.inp_compare(.false., 'h', string(1:1))) then
#endif
if(read_sphere) then if(read_sphere) then
if (inp_compare(.false., 'spherical', field)) then if (inp_compare(.false., 'spherical', field)) then
if (.not. bas_set_spherical(basis, .true.)) if (.not. bas_set_spherical(basis, .true.))
@ -1147,7 +1149,9 @@ c
& (' bas_set_spherical failed ',911, BASIS_ERR) & (' bas_set_spherical failed ',911, BASIS_ERR)
endif endif
endif endif
#ifdef IGNORE_HEH
endif endif
#endif
if (.not. inp_read()) call errquit if (.not. inp_read()) call errquit
$ ('bas_tag_lib: premature EOF', 0, INPUT_ERR) $ ('bas_tag_lib: premature EOF', 0, INPUT_ERR)
c c

View file

@ -19,7 +19,7 @@
# For development tree # For development tree
#RELEASE := #RELEASE :=
# For current release tree # For current release tree
RELEASE := 7.0.0 RELEASE := 7.2.0
# #
ifndef NWCHEM_TOP ifndef NWCHEM_TOP
@ -243,10 +243,10 @@ endif
# specified below. Use of MPI requires substituting the tcgmsg-mpi # specified below. Use of MPI requires substituting the tcgmsg-mpi
# wrapper for the normal tcgmsg library. # wrapper for the normal tcgmsg library.
# the 2 following environmental variables are need for linking # the 2 following environmental variables are need for linking
# LIBMPI - represents the name of mpi library (with -l) # NWLIBMPI - represents the name of mpi library (with -l)
# MPI_LIB - represents the path to the mpi library # NWMPI_LIB - represents the path to the mpi library
#LIBMPI = -lmpich #NWLIBMPI = -lmpich
#MPI_LIB= /usr/local/lib #NWMPI_LIB= /usr/local/lib
#JN: under the new structure, tools should be listed first as #JN: under the new structure, tools should be listed first as
# their header files are needed for dependency analysis of # their header files are needed for dependency analysis of
@ -292,9 +292,6 @@ ifdef BUILD_SCALAPACK
$(error ) $(error )
endif endif
ifndef SCALAPACK_SIZE
SCALAPACK_SIZE=8
endif
SCALAPACK=-L$(NWCHEM_TOP)/src/libext/lib -lnwc_scalapack SCALAPACK=-L$(NWCHEM_TOP)/src/libext/lib -lnwc_scalapack
endif endif
@ -317,15 +314,6 @@ ifdef BUILD_ELPA
endif endif
ifdef BUILD_MPICH
NW_CORE_SUBDIRS += libext
PATH := $(NWCHEM_TOP)/src/libext/bin:$(PATH)
MPI_INCLUDE = $(shell PATH=$(NWCHEM_TOP)/src/libext/bin:$(PATH) $(NWCHEM_TOP)/src/tools/guess-mpidefs --mpi_include)
MPI_LIB = $(shell PATH=$(NWCHEM_TOP)/src/libext/bin:$(PATH) $(NWCHEM_TOP)/src/tools/guess-mpidefs --mpi_lib)
LIBMPI = $(shell PATH=$(NWCHEM_TOP)/src/libext/bin:$(PATH) $(NWCHEM_TOP)/src/tools/guess-mpidefs --libmpi)
LIBMPI += $(shell /usr/local/bin/pkg-config --libs-only-L hwloc 2> /dev/null)
endif
ifndef EXTERNAL_GA_PATH ifndef EXTERNAL_GA_PATH
NW_CORE_SUBDIRS += tools NW_CORE_SUBDIRS += tools
@ -2456,12 +2444,12 @@ ifneq ($(TARGET),LINUX)
# #
ifeq ($(_IFCV15ORNEWER), Y) ifeq ($(_IFCV15ORNEWER), Y)
IFORTVER=$(shell ifort -v 2>&1|cut -d " " -f 3) IFORTVER=$(shell ifort -v 2>&1|cut -d " " -f 3)
ifeq ($(IFORTVER),2021.7.0) # ifeq ($(IFORTVER),2021.7.0)
$(info ) # $(info )
$(info ifort 2021.7.0 not validated) # $(info ifort 2021.7.0 not validated)
$(info ) # $(info )
$(error ) # $(error )
endif # endif
# fpp seems to get lost with ifort 15 in the offload bit # fpp seems to get lost with ifort 15 in the offload bit
# only use EXPLICITF for offload because otherwise we want debugging to be easy # only use EXPLICITF for offload because otherwise we want debugging to be easy
# FOPTIONS += -Qoption,fpp,-P -Qoption,fpp,-c_com=no -allow nofpp_comments # FOPTIONS += -Qoption,fpp,-P -Qoption,fpp,-c_com=no -allow nofpp_comments
@ -3317,7 +3305,7 @@ ifeq ($(BUILDING_PYTHON),python)
ifndef GOT_PYTHONCONFIG ifndef GOT_PYTHONCONFIG
PYMAJOR:=$(word 1, $(subst ., ,$(PYTHONVERSION))) PYMAJOR:=$(word 1, $(subst ., ,$(PYTHONVERSION)))
errorpythonconfig:$ errorpythonconfig:
$(info ) $(info )
$(info python-config not found in your PATH) $(info python-config not found in your PATH)
$(info Please install the packages) $(info Please install the packages)
@ -3455,14 +3443,6 @@ else
CORE_LIBS += $(BLASOPT) CORE_LIBS += $(BLASOPT)
endif endif
ifdef NWCHEM_LINK_CUDA
ifeq ($(_FC),pgf90)
CORE_LIBS += -acc -cuda -cudalib=cublas
endif
ifeq ($(_FC),gfortran)
CORE_LIBS += -fopenacc -lcublas
endif
endif
ifdef BLASOPT ifdef BLASOPT
@ -3532,39 +3512,91 @@ endif
ifdef USE_MPI ifdef USE_MPI
#ifeq ($(FC),$(findstring $(FC),mpifrt mpfort mpif77 mpxlf mpif90 ftn scorep-ftn)) #ifeq ($(FC),$(findstring $(FC),mpifrt mpfort mpif77 mpxlf mpif90 ftn scorep-ftn))
ifeq ($(FC),$(findstring $(FC), ftn scorep-ftn)) ifeq ($(FC),$(findstring $(FC), ftn scorep-ftn))
LIBMPI = NWLIBMPI =
MPI_INCLUDE = NWMPI_INCLUDE =
MPI_LIB = NWMPI_LIB =
else else ifdef BUILD_MPICH
NW_CORE_SUBDIRS += libext
PATH := $(NWCHEM_TOP)/src/libext/bin:$(PATH)
NWMPI_INCLUDE = $(shell PATH=$(NWCHEM_TOP)/src/libext/bin:$(PATH) $(NWCHEM_TOP)/src/tools/guess-mpidefs --mpi_include)
NWMPI_LIB = $(shell PATH=$(NWCHEM_TOP)/src/libext/bin:$(PATH) $(NWCHEM_TOP)/src/tools/guess-mpidefs --mpi_lib)
NWLIBMPI = $(shell PATH=$(NWCHEM_TOP)/src/libext/bin:$(PATH) $(NWCHEM_TOP)/src/tools/guess-mpidefs --libmpi)
NWLIBMPI += $(shell /usr/local/bin/pkg-config --libs-only-L hwloc 2> /dev/null)
else ifdef FORCE_MPI_ENV
ifndef MPI_INCLUDE ifndef MPI_INCLUDE
# check if mpif90 is present errormpi1:
MPIF90YN = $(shell $(NWCHEM_TOP)/src/tools/guess-mpidefs --mpi_include) $(info )
ifeq ($(MPIF90YN),mpif90notfound) $(info FORCE_MPI_ENV set but MPI_INCLUDE not set)
errormpif90: $(info )
$(info ) $(error )
$(info mpif90 not found. Please add its location to PATH) else
$(info e.g. export PATH=/usr/local/bin:/usr/lib64/openmpi/bin:...) NWMPI_INCLUDE = $(MPI_INCLUDE)
$(info )
endif
MPI_INCLUDE = $(shell $(NWCHEM_TOP)/src/tools/guess-mpidefs --mpi_include)
endif endif
ifndef MPI_LIB ifndef MPI_LIB
MPI_LIB = $(shell $(NWCHEM_TOP)/src/tools/guess-mpidefs --mpi_lib) errormpi2:
endif $(info )
$(info FORCE_MPI_ENV set but MPI_LIB not set)
$(info )
$(error )
else
NWMPI_LIB = $(MPI_LIB)
endif
ifndef LIBMPI ifndef LIBMPI
LIBMPI = $(shell $(NWCHEM_TOP)/src/tools/guess-mpidefs --libmpi) errormpi3:
$(info )
$(info FORCE_MPI_ENV set but LIBMPI not set)
$(info )
$(error )
else
NWLIBMPI = $(LIBMPI)
endif
else
ifeq ($(shell pwd), $(NWCHEM_TOP)/src)
ifndef FORCE_MPI_ENV
ifdef LIBMPI
$(info ***warning LIBMPI ignored since FORCE_MPI_ENV not set***)
endif
ifdef MPI_LIB
$(info ***warning MPI_LIB ignored since FORCE_MPI_ENV not set***)
endif
ifdef MPI_INCLUDE
$(info ***warning MPI_INCLUDE ignored since FORCE_MPI_ENV not set***)
endif
endif
endif
# check if mpif90 is present
MPIF90YN = $(shell $(NWCHEM_TOP)/src/tools/guess-mpidefs --mpi_include)
ifeq ($(MPIF90YN),mpif90notfound)
errormpif90:
$(info )
$(info mpif90 not found. Please add its location to PATH)
$(info e.g. export PATH=/usr/local/bin:/usr/lib64/openmpi/bin:...)
$(info )
$(error )
endif endif
NWMPI_INCLUDE = $(shell $(NWCHEM_TOP)/src/tools/guess-mpidefs --mpi_include)
NWMPI_LIB = $(shell $(NWCHEM_TOP)/src/tools/guess-mpidefs --mpi_lib)
NWLIBMPI = $(shell $(NWCHEM_TOP)/src/tools/guess-mpidefs --libmpi)
endif endif
ifdef MPI_LIB ifdef NWMPI_INCLUDE
CORE_LIBS += $(patsubst -L-L%,-L%,-L$(MPI_LIB)) LIB_INCLUDES += $(patsubst -I-I%,-I%,-I$(NWMPI_INCLUDE))
endif
ifdef NWMPI_LIB
CORE_LIBS += $(patsubst -L-L%,-L%,-L$(NWMPI_LIB))
endif endif
ifdef OLD_GA ifdef OLD_GA
CORE_LIBS += -ltcgmsg-mpi $(LIBMPI) CORE_LIBS += -ltcgmsg-mpi $(NWLIBMPI)
else else
CORE_LIBS += $(LIBMPI) CORE_LIBS += $(NWLIBMPI)
endif endif
else else
errornousempi:
$(info )
$(info please set the env. variable USE_MPI)
$(info and provide a working MPI installation)
$(info )
$(error )
ifdef OLD_GA ifdef OLD_GA
CORE_LIBS += -ltcgmsg CORE_LIBS += -ltcgmsg
else else
@ -3612,9 +3644,9 @@ ifdef USE_LIBXC
endif endif
# we use an external libxc library out of LIBXC_DIR # we use an external libxc library out of LIBXC_DIR
ifdef LIBXC_DIR ifdef LIBXC_LIB
DEFINES += -DUSE_LIBXC DEFINES += -DUSE_LIBXC
EXTRA_LIBS += -L$(LIBXC_DIR)/lib EXTRA_LIBS += -L$(LIBXC_LIB)
EXTRA_LIBS += -lxcf03 -lxc EXTRA_LIBS += -lxcf03 -lxc
endif endif
@ -3737,6 +3769,7 @@ ifdef TCE_OPENACC
FOPTIONS += -acc FOPTIONS += -acc
LDOPTIONS += -acc LDOPTIONS += -acc
endif endif
NWCHEM_LINK_CUDA=1
endif endif
ifndef HIP ifndef HIP
@ -3753,6 +3786,15 @@ ifdef USE_F90_ALLOCATABLE
DEFINES += -DUSE_F90_ALLOCATABLE DEFINES += -DUSE_F90_ALLOCATABLE
endif endif
ifdef NWCHEM_LINK_CUDA
ifeq ($(_FC),pgf90)
CORE_LIBS += -acc -cuda -cudalib=cublas
endif
ifeq ($(_FC),gfortran)
CORE_LIBS += -fopenacc -lcublas
endif
endif
ifdef GWCMPLX ifdef GWCMPLX
ifdef GWEN ifdef GWEN
errorgw: errorgw:
@ -3884,8 +3926,24 @@ ifeq ($(shell echo $(BLASOPT) |awk '/lblas/ {print "Y"; exit}'),Y)
DEFINES += -DBLAS_NOTHREADS DEFINES += -DBLAS_NOTHREADS
endif endif
ifndef BLAS_SIZE ifneq ($(or $(SCALAPACK),$(SCALAPACK_LIB)),)
LIB_DEFINES += -DUSE_INTEGER8 ifndef SCALAPACK_SIZE
$(info )
$(info You must set)
$(info SCALAPACK_SIZE)
$(info )
$(error )
endif
endif
ifneq ($(or $(BLASOPT),$(BLAS_LIB)),)
ifndef BLAS_SIZE
$(info )
$(info You must set)
$(info BLAS_SIZE)
$(info see https://nwchemgit.github.io/Compiling-NWChem.html#how-to-deal-with-integer-size-of-linear-algebra-libraries)
$(info )
$(error )
endif
endif endif
ifeq ($(BLAS_SIZE),8) ifeq ($(BLAS_SIZE),8)
LIB_DEFINES += -DUSE_INTEGER8 LIB_DEFINES += -DUSE_INTEGER8

View file

@ -18,6 +18,11 @@
integer ijshell, ilo, ihi, jlo, jhi integer ijshell, ilo, ihi, jlo, jhi
integer l_buf, l_scr integer l_buf, l_scr
integer k_buf, k_scr integer k_buf, k_scr
logical do_mirr
logical util_mirrmat
external util_mirrmat
integer g_x_mirr,g_y_mirr,g_z_mirr
integer g_x_org,g_y_org,g_z_org
! !
double precision center(3) double precision center(3)
! !
@ -27,6 +32,34 @@
call ga_zero(g_x) call ga_zero(g_x)
call ga_zero(g_y) call ga_zero(g_y)
call ga_zero(g_z) call ga_zero(g_z)
g_x_mirr=0
g_y_mirr=0
g_z_mirr=0
do_mirr=util_mirrmat(1,g_x,g_x_mirr,
D .false., .true.)
do_mirr=do_mirr.and.util_mirrmat(1,g_y,g_y_mirr,
D .false., .true.)
do_mirr=do_mirr.and.util_mirrmat(1,g_z,g_z_mirr,
D .false., .true.)
if(do_mirr) then
g_x_org=g_x
g_x=g_x_mirr
g_y_org=g_y
g_y=g_y_mirr
g_z_org=g_z
g_z=g_z_mirr
else
if(g_x_mirr.ne.0) then
if(.not.ga_destroy(g_x_mirr))call errquit(
$ 'could not destroy mirrx handle',1, GA_ERR)
endif
if(g_y_mirr.ne.0) then
if(.not.ga_destroy(g_y_mirr))call errquit(
$ 'could not destroy mirry handle',1, GA_ERR)
endif
endif
if(oscfps) call pstat_on(ps_int_dip) if(oscfps) call pstat_on(ps_int_dip)
! !
! grab basis set info type stuff ! grab basis set info type stuff
@ -65,7 +98,8 @@
! !
! get the integrals we want ! get the integrals we want
! !
call int_mpole(ibas, ishell, jbas, jshell, ! call int_mpole(ibas, ishell, jbas, jshell,
call int_mpole(jbas, jshell, ibas, ishell,
$ 1, $ 1,
$ center, $ center,
$ mscratch, dbl_mb(k_scr), max1e, dbl_mb(k_buf)) $ mscratch, dbl_mb(k_scr), max1e, dbl_mb(k_buf))
@ -84,6 +118,20 @@
if(.not.MA_pop_stack(l_buf)) if(.not.MA_pop_stack(l_buf))
$ call errquit('int_dip_ga:pop failed',0, MA_ERR) $ call errquit('int_dip_ga:pop failed',0, MA_ERR)
! !
if (do_mirr) then
g_x=g_x_org
call util_mirrmerge(g_x_mirr,g_x)
if(.not.ga_destroy(g_x_mirr))call errquit(
$ 'could not destroy g_x_mirr handle',1, GA_ERR)
g_y=g_y_org
call util_mirrmerge(g_y_mirr,g_y)
if(.not.ga_destroy(g_y_mirr))call errquit(
$ 'could not destroy g_y_mirr handle',1, GA_ERR)
g_z=g_z_org
call util_mirrmerge(g_z_mirr,g_z)
if(.not.ga_destroy(g_z_mirr))call errquit(
$ 'could not destroy g_x_mirr handle',1, GA_ERR)
endif
call ga_sync() call ga_sync()
! !
if (util_print('multipole', print_debug)) then if (util_print('multipole', print_debug)) then
@ -101,15 +149,16 @@
implicit none implicit none
#include "global.fh" #include "global.fh"
integer g_x, g_y, g_z, ilo, ihi, jlo, jhi integer g_x, g_y, g_z, ilo, ihi, jlo, jhi
double precision buf(jlo:jhi,3,ilo:ihi) ! double precision buf(jlo:jhi,3,ilo:ihi)
double precision buf(ilo:ihi,3,jlo:jhi)
integer i, j integer i, j
do i = ilo,ihi c do i = ilo,ihi
do j = jlo, jhi do j = jlo, jhi
call ga_put(g_x,i,i,j,j,buf(j,1,i),1) call ga_put(g_x,ilo,ihi,j,j,buf(ilo,1,j),1)
call ga_put(g_y,i,i,j,j,buf(j,2,i),1) call ga_put(g_y,ilo,ihi,j,j,buf(ilo,2,j),1)
call ga_put(g_z,i,i,j,j,buf(j,3,i),1) call ga_put(g_z,ilo,ihi,j,j,buf(ilo,3,j),1)
end do end do
end do c end do
end end
subroutine int_qdr_ga(ibas, jbas, g_xx, g_xy, g_xz, subroutine int_qdr_ga(ibas, jbas, g_xx, g_xy, g_xz,

View file

@ -249,7 +249,8 @@ c
c create a global array to store x, y, z and x^2, y^2, z^2 for each AO c create a global array to store x, y, z and x^2, y^2, z^2 for each AO
c c
if (.not. ga_create(mt_dbl, 6*nbf, nbf, 'GXLM', if (.not. ga_create(mt_dbl, 6*nbf, nbf, 'GXLM',
$ 32,32,g_xlm)) call errquit('mo_r_and_r2: g_xlm',6*nbf*nbf, c $ 32,32,g_xlm)) call errquit('mo_r_and_r2: g_xlm',6*nbf*nbf,
$ nbf,32,g_xlm)) call errquit('mo_r_and_r2: g_xlm',6*nbf*nbf,
& GA_ERR) & GA_ERR)
c c
c compute dipoles and quadrupole components for each AO c compute dipoles and quadrupole components for each AO
@ -301,6 +302,7 @@ c
#include "geom.fh" #include "geom.fh"
#include "stdio.fh" #include "stdio.fh"
#include "util_params.fh" #include "util_params.fh"
#include "util.fh"
c c
integer basis ! [input] basis integer basis ! [input] basis
double precision center(3) ! [input] the expansion center double precision center(3) ! [input] the expansion center
@ -318,6 +320,9 @@ c
integer ilo, ihi, jlo, jhi, idim, jdim, ind, i, j, l, ioff integer ilo, ihi, jlo, jhi, idim, jdim, ind, i, j, l, ioff
integer l_scr, k_scr, l_mp, k_mp integer l_scr, k_scr, l_mp, k_mp
integer lmax ! Maximum value of L = 2 integer lmax ! Maximum value of L = 2
integer clo, chi, rlo, rhi
integer type, dim1, dim2
logical doloop, oprint
c c
if (.not. bas_geom(basis, geom)) call errquit if (.not. bas_geom(basis, geom)) call errquit
$ ('multipole: bad basis', 0, BASIS_ERR) $ ('multipole: bad basis', 0, BASIS_ERR)
@ -349,11 +354,30 @@ c
& call errquit('xlm_pole: cannot allocate scratch', maxscr, & call errquit('xlm_pole: cannot allocate scratch', maxscr,
& MA_ERR) & MA_ERR)
c c
call ga_distribution(g_xlm,
. ga_nodeid(), rlo, rhi, clo, chi)
doloop=.not.(rlo.eq.0.and.rhi.eq.-1.and.clo.eq.0.and.chi.eq.-1)
call ga_inquire(g_xlm, type, dim1, dim2)
oprint=(ga_nodeid() .eq. 0 .and.
$ util_print('debug_xlm_make', print_debug))
if(oprint) then
write(luout,*) ' dim1 dim2 ',dim1,dim2
write(luout,*) ' rlo rhi ',rlo,rhi
write(luout,*) ' clo chi ',clo,chi
endif
call ga_zero(g_xlm) call ga_zero(g_xlm)
nproc=0
if(doloop) nproc=1
call ga_igop(65536,nproc,1,'+')
if(oprint) then
write(luout,*) ' using ',nproc,
C ' nodes out of ',ga_nnodes()
call util_flush(6)
endif
c c
if (doloop) then
ijshell = -1 ijshell = -1
me = ga_nodeid() me = ga_nodeid()
nproc = ga_nnodes()
do ishell = 1, nshell do ishell = 1, nshell
if (.not. bas_cn2bfr(basis, ishell, ilo, ihi)) call errquit if (.not. bas_cn2bfr(basis, ishell, ilo, ihi)) call errquit
& ('xlm_pole: bas_cn2bfr failed for basis', basis, & ('xlm_pole: bas_cn2bfr failed for basis', basis,
@ -429,6 +453,7 @@ c
end do end do
end do end do
c c
endif
call ga_sync call ga_sync
c c
c write(LuOut,*) ' THE AO MPOLES ' c write(LuOut,*) ' THE AO MPOLES '

View file

@ -8,7 +8,9 @@ c
#include "esp_common.fh" #include "esp_common.fh"
#include "global.fh" #include "global.fh"
#include "msgids.fh" #include "msgids.fh"
#include "geom.fh"
#include "util.fh" #include "util.fh"
#include "errquit.fh"
c c
real*8 x(3,natoms),q(ndim,4) real*8 x(3,natoms),q(ndim,4)
real*8 g(*) real*8 g(*)
@ -83,6 +85,7 @@ c
c c
call util_file_name('xyz',.false.,.false.,xyzfil) call util_file_name('xyz',.false.,.false.,xyzfil)
open(unit=lfnxyz,file=xyzfil,form='formatted',status='unknown') open(unit=lfnxyz,file=xyzfil,form='formatted',status='unknown')
#if 0
write(lfnxyz,2000) natoms write(lfnxyz,2000) natoms
2000 format('* Coordinates in XYZ format',/,i5) 2000 format('* Coordinates in XYZ format',/,i5)
do 5 i=1,natoms do 5 i=1,natoms
@ -90,6 +93,11 @@ c
+ (10.0d0*cau2nm*x(j,i),j=1,3),q(i,4) + (10.0d0*cau2nm*x(j,i),j=1,3),q(i,4)
2001 format(a,t3,4f12.6) 2001 format(a,t3,4f12.6)
5 continue 5 continue
#else
if(.not.geom_print_xyz(igeom, lfnxyz))
A call errquit(' failed geom_print_xyz',
E 0, GEOM_ERR)
#endif
close(lfnxyz) close(lfnxyz)
endif endif
c c

View file

@ -38,7 +38,7 @@ include ../config/makelib.h
FOPTIMIZE += -O0 FOPTIMIZE += -O0
endif endif
endif endif
ifeq ($(FC),ifort) ifeq ($(_FC),ifort)
FOPTIONS += -save FOPTIONS += -save
endif endif
ifeq ($(_FC),xlf) ifeq ($(_FC),xlf)

View file

@ -9,7 +9,6 @@ SHORTVERSION=2021.11.001
VERSION=new_release_2021.11.001 VERSION=new_release_2021.11.001
#https://gitlab.mpcdf.mpg.de/elpa/elpa/-/archive/new_release_2020.11.001/elpa-new_release_2020.11.001.tar.gz #https://gitlab.mpcdf.mpg.de/elpa/elpa/-/archive/new_release_2020.11.001/elpa-new_release_2020.11.001.tar.gz
echo mpif90 is `which mpif90` echo mpif90 is `which mpif90`
export ARFLAGS=rU
if [ -f elpa-${VERSION}.tar.gz ]; then if [ -f elpa-${VERSION}.tar.gz ]; then
echo "using existing" elpa-${VERSION}.tar.gz echo "using existing" elpa-${VERSION}.tar.gz
else else
@ -21,8 +20,14 @@ tar xzf elpa-${VERSION}.tar.gz
ln -sf elpa-${VERSION} elpa ln -sf elpa-${VERSION} elpa
cd elpa cd elpa
UNAME_S=$(uname -s) UNAME_S=$(uname -s)
if [[ ${UNAME_S} == Linux ]]; then
export ARFLAGS=rU
fi
if [[ ${UNAME_S} == Darwin ]]; then if [[ ${UNAME_S} == Darwin ]]; then
export FORTRAN_CPP=$(find /usr/local/Cellar/gcc/`brew list --versions gcc|cut -c 5-`/bin -name cpp*) if [[ -z "$HOMEBREW_PREFIX" ]]; then
HOMEBREW_PREFIX=/usr/local
fi
export FORTRAN_CPP=$(find "$HOMEBREW_PREFIX"/Cellar/gcc/`brew list --versions gcc|cut -c 5-`/bin -name cpp*)
if ! [ -x "$(command -v $FORTRAN_CPP)" ]; then if ! [ -x "$(command -v $FORTRAN_CPP)" ]; then
echo echo
echo cpp from gcc homebrew missing echo cpp from gcc homebrew missing
@ -153,7 +158,11 @@ fi
if [ ! -f configure ]; then if [ ! -f configure ]; then
sh ./autogen.sh sh ./autogen.sh
fi fi
# patch affinity
rm -f check_thread_affinity.patch
wget https://raw.githubusercontent.com/conda-forge/elpa-feedstock/main/recipe/check_thread_affinity.patch
patch -p2 -s -N < check_thread_affinity.patch
mkdir -p build mkdir -p build
cd build cd build
if [[ ! -z "${BUILD_SCALAPACK}" ]]; then if [[ ! -z "${BUILD_SCALAPACK}" ]]; then
@ -197,7 +206,7 @@ unset SCALAPACK_FCFLAGS
unset SCALAPACK_LDFLAGS unset SCALAPACK_LDFLAGS
echo mpif90 is `which mpif90` echo mpif90 is `which mpif90`
echo MPIF90 is "$MPIF90" echo MPIF90 is "$MPIF90"
make V=1 -j1 FC=$MPIF90 CC=$MPICC -l0.0001 make V=0 -j1 FC=$MPIF90 CC=$MPICC -l0.0001
if [[ "$?" != "0" ]]; then if [[ "$?" != "0" ]]; then
echo " " echo " "
echo "Elpa compilation failed" echo "Elpa compilation failed"

View file

@ -6,7 +6,7 @@
include ../../config/makefile.h include ../../config/makefile.h
install/lib/libxc.a: install/lib/libxc.a:
./build_libxc.sh ./build_libxc.sh $(LIBXC_VERSION)
LIB_TARGETS += libxc LIB_TARGETS += libxc

View file

@ -7,14 +7,25 @@ check_tgz() {
[ -f $1 ] && gunzip -t $1 > /dev/null && myexit=1 [ -f $1 ] && gunzip -t $1 > /dev/null && myexit=1
echo $myexit echo $myexit
} }
if [ $# -eq 0 ]; then
VERSION=5.2.2 VERSION=6.1.0
else
VERSION=$1
fi
VERSION_MAJOR=$(echo $VERSION | cut -d . -f 1)
if [[ "$VERSION_MAJOR" -lt 4 ]]; then
echo
echo "LIBXC unsupported version " "$VERSION"
echo "please use 4.0.0 and later versions"
echo
exit 1
fi
TGZ=libxc-${VERSION}.tar.gz TGZ=libxc-${VERSION}.tar.gz
if [ `check_tgz $TGZ` == 1 ]; then if [ `check_tgz $TGZ` == 1 ]; then
echo "using existing $TGZ" echo "using existing $TGZ"
else else
echo "downloading $TGZ" echo "downloading $TGZ"
curl -L https://gitlab.com/libxc/libxc/-/archive/${VERSION}/libxc-${VERSION}.tar.gz -o $TGZ curl -sS -L https://gitlab.com/libxc/libxc/-/archive/${VERSION}/libxc-${VERSION}.tar.gz -o $TGZ
if [ `check_tgz $TGZ` != 1 ]; then if [ `check_tgz $TGZ` != 1 ]; then
rm -f libxc-${VERSION}.tar.gz rm -f libxc-${VERSION}.tar.gz
curl -L https://github.com/ElectronicStructureLibrary/libxc/archive/refs/tags/${VERSION}.tar.gz -o $TGZ curl -L https://github.com/ElectronicStructureLibrary/libxc/archive/refs/tags/${VERSION}.tar.gz -o $TGZ
@ -78,7 +89,7 @@ fi
cd libxc cd libxc
# patch pk09 to avoid compiler memory problems # patch pk09 to avoid compiler memory problems
patch -p0 -N < ../pk09.patch #patch -p0 -N < ../pk09.patch
mkdir -p build mkdir -p build
cd build cd build
if [[ -z "${NWCHEM_TOP}" ]]; then if [[ -z "${NWCHEM_TOP}" ]]; then
@ -100,8 +111,16 @@ else
fcflags=" " fcflags=" "
fi fi
rm -rf libxc/build rm -rf libxc/build
if [[ "${USE_HWOPT}" == "n" ]]; then
enable_xhost_flag=OFF
else
enable_xhost_flag=ON
fi
$CMAKE -E env CFLAGS="$cflags" LDFLAGS="$ldflags" FCFLAGS="$fcflags" FFLAGS="$fcflags" \ $CMAKE -E env CFLAGS="$cflags" LDFLAGS="$ldflags" FCFLAGS="$fcflags" FFLAGS="$fcflags" \
$CMAKE -DCMAKE_INSTALL_PREFIX=${NWCHEM_TOP}/src/libext/libxc/install -DCMAKE_C_COMPILER=$CC -DENABLE_FORTRAN=ON -DCMAKE_Fortran_COMPILER=$FC -DDISABLE_KXC=OFF \ $CMAKE -DCMAKE_INSTALL_PREFIX=${NWCHEM_TOP}/src/libext/libxc/install -DCMAKE_C_COMPILER=$CC -DENABLE_FORTRAN=ON -DCMAKE_Fortran_COMPILER=$FC -DDISABLE_KXC=OFF \
-DENABLE_XHOST="$enable_xhost_flag" \
-DENABLE_FORTRAN03=ON \
-DCMAKE_INSTALL_LIBDIR="lib" -DCMAKE_BUILD_TYPE=Release .. -DCMAKE_INSTALL_LIBDIR="lib" -DCMAKE_BUILD_TYPE=Release ..
make -j4 | tee make.log make -j4 | tee make.log

View file

@ -65,8 +65,10 @@ if [[ "${NWCHEM_TARGET}" == "LINUX" ]]; then
else else
binary=64 binary=64
fi fi
if [ -n "${USE_DYNAMIC_ARCH}" ]; then if [[ -n "${USE_DYNAMIC_ARCH}" ]] || [[ "${USE_HWOPT}" == "n" ]]; then
FORCETARGET+="DYNAMIC_ARCH=1 DYNAMIC_OLDER=1" if [[ "$arch" == "x86_64" ]]; then
FORCETARGET+="DYNAMIC_ARCH=1 DYNAMIC_OLDER=1"
fi
fi fi
#cray ftn wrapper #cray ftn wrapper
if [[ ${FC} == ftn ]]; then if [[ ${FC} == ftn ]]; then
@ -136,10 +138,21 @@ elif [[ -n ${FC} ]] && [[ "${FC}" == "ifort" ]] || [[ "${FC}" == "ifx" ]]; then
LAPACK_FPFLAGS_VAL=" -fp-model source -O2 -g " LAPACK_FPFLAGS_VAL=" -fp-model source -O2 -g "
else else
#assuming gfortran #assuming gfortran
FORCETARGET+=' F_COMPILER=GFORTRAN '
LAPACK_FPFLAGS_VAL=" " LAPACK_FPFLAGS_VAL=" "
if [[ ${BLAS_SIZE} == 8 ]]; then if [[ ${BLAS_SIZE} == 8 ]]; then
LAPACK_FLAGS_VAL+=" -fdefault-integer-8" LAPACK_FPFLAGS_VAL+=" -fdefault-integer-8"
fi fi
fi
if [[ -n ${CC} ]] && [[ "${CC}" == "amdclang" ]]; then
let VERSIONEQ15=$(expr `${CC} -dM -E - < /dev/null 2> /dev/null|egrep 15|grep __clang_major__ |cut -d ' ' -f 3 ` \= 15)
if [[ ${VERSIONEQ15} == 1 ]]; then
echo "amdclang 15 buggy. reduced optimization to O1"
FORCETARGET+=' COMMON_OPT=-O1'
fi
fi
if [[ -z "${FC}" ]]; then
FC=gfortran
fi fi
if [[ -z "${CC}" ]]; then if [[ -z "${CC}" ]]; then
CC=cc CC=cc
@ -179,6 +192,13 @@ else
THREADOPT="1" THREADOPT="1"
MYNTS="128" MYNTS="128"
fi fi
# cross compilation
GOTMINGW64=$("$CC" -dM -E - </dev/null 2> /dev/null |grep MINGW64|cut -c21)
if [[ "${GOTMINGW64}" == "1" ]]; then
FORCETARGET+=HOSTCC=\"gcc\"
THREADOPT="0"
MYNTS="1"
fi
#we want openblas to use pthreads and not openmp. #we want openblas to use pthreads and not openmp.
#but NWChem and OpenBLAS both use USE_OPENMP #but NWChem and OpenBLAS both use USE_OPENMP
@ -187,7 +207,8 @@ if [[ ! -z "${USE_OPENMP}" ]]; then
unset USE_OPENMP unset USE_OPENMP
NWCHEM_USE_OPENMP=1 NWCHEM_USE_OPENMP=1
fi fi
echo make $FORCETARGET LAPACK_FPFLAGS=$LAPACK_FPFLAGS_VAL INTERFACE64=$sixty4_int BINARY=$binary NUM_THREADS=$MYNTS NO_CBLAS=1 NO_LAPACKE=1 DEBUG=0 USE_THREAD=$THREADOPT libs netlib -j4 echo FC is $FC
echo make FC=$FC $FORCETARGET LAPACK_FPFLAGS=$LAPACK_FPFLAGS_VAL INTERFACE64=$sixty4_int BINARY=$binary NUM_THREADS=$MYNTS NO_CBLAS=1 NO_LAPACKE=1 DEBUG=0 USE_THREAD=$THREADOPT libs netlib -j4
echo echo
echo OpenBLAS compilation in progress echo OpenBLAS compilation in progress
echo output redirected to libext/openblas/OpenBLAS/openblas.log echo output redirected to libext/openblas/OpenBLAS/openblas.log
@ -195,7 +216,7 @@ echo
if [[ ${_FC} == xlf ]]; then if [[ ${_FC} == xlf ]]; then
make FC="xlf -qextname" $FORCETARGET LAPACK_FPFLAGS="$LAPACK_FPFLAGS_VAL" INTERFACE64="$sixty4_int" BINARY="$binary" NUM_THREADS=$MYNTS NO_CBLAS=1 NO_LAPACKE=1 DEBUG=0 USE_THREAD="$THREADOPT" libs netlib -j4 >& openblas.log make FC="xlf -qextname" $FORCETARGET LAPACK_FPFLAGS="$LAPACK_FPFLAGS_VAL" INTERFACE64="$sixty4_int" BINARY="$binary" NUM_THREADS=$MYNTS NO_CBLAS=1 NO_LAPACKE=1 DEBUG=0 USE_THREAD="$THREADOPT" libs netlib -j4 >& openblas.log
else else
make $FORCETARGET LAPACK_FPFLAGS="$LAPACK_FPFLAGS_VAL" INTERFACE64="$sixty4_int" BINARY="$binary" NUM_THREADS=128 NO_CBLAS=1 NO_LAPACKE=1 DEBUG=0 USE_THREAD="$THREADOPT" libs netlib -j4 >& openblas.log make FC=$FC $FORCETARGET LAPACK_FPFLAGS="$LAPACK_FPFLAGS_VAL" INTERFACE64="$sixty4_int" BINARY="$binary" NUM_THREADS=128 NO_CBLAS=1 NO_LAPACKE=1 DEBUG=0 USE_THREAD="$THREADOPT" libs netlib -j4 >& openblas.log
fi fi
if [[ "$?" != "0" ]]; then if [[ "$?" != "0" ]]; then
tail -500 openblas.log tail -500 openblas.log

View file

@ -193,6 +193,9 @@ echo MPICH_CC is "$MPICH_CC"
if [[ -z "$I_MPI_F90" ]] ; then if [[ -z "$I_MPI_F90" ]] ; then
export I_MPI_F90="$FC" export I_MPI_F90="$FC"
fi fi
if [[ -z "$I_MPI_CC" ]] ; then
export I_MPI_CC="$CC"
fi
echo I_MPI_F90 is "$I_MPI_F90" echo I_MPI_F90 is "$I_MPI_F90"
if [[ -z "$PE_ENV" ]] ; then if [[ -z "$PE_ENV" ]] ; then
#check if mpif90 and FC are consistent #check if mpif90 and FC are consistent

View file

@ -55,7 +55,8 @@ c
integer l_c_t, k_c_t integer l_c_t, k_c_t
integer l_act, k_act, l_actsh, k_actsh integer l_act, k_act, l_actsh, k_actsh
integer twopdmunit integer twopdmunit
integer junk, ninseg, ierr, i, j, ish, ishlo, ishhi, shmax, tdim integer junk(2), ninseg, ierr, i, j, ish, ishlo, ishhi, shmax,
t tdim
integer nsh, natoms, nactive, nblock integer nsh, natoms, nactive, nblock
c c
integer k_scr, l_scr, k_lab, l_lab, k_eri, l_eri, leneri, lenscr integer k_scr, l_scr, k_lab, l_lab, k_eri, l_eri, leneri, lenscr
@ -482,10 +483,6 @@ c
else else
call ga_copy(g_buf_trans,g_buf) call ga_copy(g_buf_trans,g_buf)
endif endif
cc call ga_print(g_buf_trans)
cc call ga_print(g_buf)
c call ga_sync()
c call ga_mask_sync(.true.,.false.)
call ga_sync() call ga_sync()
c c
c Now have locally (a,1:nbfpairlocal). Loop thru local shell pairs c Now have locally (a,1:nbfpairlocal). Loop thru local shell pairs
@ -524,7 +521,6 @@ c
ptr = ptr + count*(oseg_hi-oseg_lo+1) ptr = ptr + count*(oseg_hi-oseg_lo+1)
end do end do
c c
cedo call ga_mask_sync(.true.,.false.)
call ga_sync call ga_sync
c c
end do ! End of i end do ! End of i
@ -1158,27 +1154,12 @@ c check for boundaries of buff()
write(6,*) ga_nodeid(),' i_1.gt.ihi ',i_1,ihi write(6,*) ga_nodeid(),' i_1.gt.ihi ',i_1,ihi
call errquit(' mp2copybck: i boundary passed ',0,0) call errquit(' mp2copybck: i boundary passed ',0,0)
endif endif
#if 0
call ga_get(g_a_trans,i_0,i_1,
A jlo,jhi,buff(i_0,jlo),i_ld)
#else
call ga_get(g_a_trans,i_0,i_1, call ga_get(g_a_trans,i_0,i_1,
A jlo,jhi,buff,i_ld) A jlo,jhi,buff,i_ld)
call ga_put(g_a, i_0, i_1, jlo, jhi, buff, i_ld) call ga_put(g_a, i_0, i_1, jlo, jhi, buff, i_ld)
#endif
enddo enddo
endif endif
c everybody needs to have the buffer filled c everybody needs to have the buffer filled
call ga_sync() call ga_sync()
cold if(dowork) call ga_put(g_a, ilo, ihi, jlo, jhi, buff, ihi-ilo+1)
call ga_sync()
#if 0
call ga_sync()
tr=ga_ddot(g_a,g_a)
tr_tr=ga_ddot(g_a_trans,g_a_trans)
if(abs(tr-tr_tr).gt.1d-6)then
if(ga_nodeid().eq.0)write(6,*) 'tr ',tr,' tr_tr ',tr_tr
endif
#endif
return return
end end

View file

@ -717,6 +717,10 @@ c
endif endif
endif endif
call pstat_on(ps_laifock) call pstat_on(ps_laifock)
if (doprint) then
write(6,111) ' Start laifock', util_wallsec()
call util_flush(6)
end if
call mp2_lai_fock_uhf_prepar( call mp2_lai_fock_uhf_prepar(
$ g_p_ab_a,g_p_ab_b,g_p_ij_a,g_p_ij_b, $ g_p_ab_a,g_p_ab_b,g_p_ij_a,g_p_ij_b,
$ noa,nob,nva,nvb,g_tmpa, g_tmpb,nmo) $ noa,nob,nva,nvb,g_tmpa, g_tmpb,nmo)
@ -725,6 +729,10 @@ c
$ noa,nob,nva,nvb,g_lai_a,g_lai_b,rtdb,tol2e_fock) $ noa,nob,nva,nvb,g_lai_a,g_lai_b,rtdb,tol2e_fock)
call mp2_lai_fock_uhf_tidy(g_tmpa, g_tmpb) call mp2_lai_fock_uhf_tidy(g_tmpa, g_tmpb)
call pstat_off(ps_laifock) call pstat_off(ps_laifock)
if (doprint) then
write(6,111) ' Done laifock', util_wallsec()
call util_flush(6)
end if
c c
if (omatrix) then if (omatrix) then
call ga_print(g_lai_a) call ga_print(g_lai_a)
@ -782,11 +790,20 @@ c
if(.not.ga_create(mt_dbl,nmo,nmo,'tot beta dens',nmo,0, if(.not.ga_create(mt_dbl,nmo,nmo,'tot beta dens',nmo,0,
$ g_p_tot_b))call errquit( $ g_p_tot_b))call errquit(
$ 'mp2_energy: ga_create failed',0, GA_ERR) $ 'mp2_energy: ga_create failed',0, GA_ERR)
c c
if (doprint) then
write(6,111) ' Start make_tot_dens', util_wallsec()
call util_flush(6)
end if
call mp2_make_tot_dens(g_p_ij_a,g_p_ij_b,g_p_ab_a,g_p_ab_b, call mp2_make_tot_dens(g_p_ij_a,g_p_ij_b,g_p_ab_a,g_p_ab_b,
$ g_rhs,g_p_tot_a,g_p_tot_b,noa,nva,nob,nvb,nbf,nmo, $ g_rhs,g_p_tot_a,g_p_tot_b,noa,nva,nob,nvb,nbf,nmo,
$ int_mb(k_map_a), int_mb(k_map_b), $ int_mb(k_map_a), int_mb(k_map_b),
$ g_vecs_a,g_vecs_b,basis,scftype) $ g_vecs_a,g_vecs_b,basis,scftype)
if (doprint) then
write(6,111) ' Done make_tot_dens', util_wallsec()
call util_flush(6)
end if
c c
if (otrace) then if (otrace) then
call mp2_print_trace_norm(g_p_tot_a,'g_p_tot_a',nmo) call mp2_print_trace_norm(g_p_tot_a,'g_p_tot_a',nmo)
@ -931,6 +948,7 @@ c
endif endif
c c
call ga_sync call ga_sync
111 format(a,' at ', f10.1,'s')
c c
end end
subroutine mp2_print_trace_norm(g, text, n) subroutine mp2_print_trace_norm(g, text, n)

View file

@ -22,6 +22,8 @@ c
double precision mp2y, scfy double precision mp2y, scfy
double precision mp2z, scfz double precision mp2z, scfz
double precision ndip(3) double precision ndip(3)
logical ga_create_atom_blocked
external ga_create_atom_blocked
integer geom integer geom
c c
if (.not. bas_cando_mpoles(basis)) return if (.not. bas_cando_mpoles(basis)) return
@ -31,15 +33,9 @@ c
c c
c Generate dipole integrals c Generate dipole integrals
c c
*ga:1:0 g_x = ga_create_atom_blocked(geom, basis,'ao integs x')
if(.not.ga_create(mt_dbl,nbf,nbf,' ao integs x ', g_y = ga_create_atom_blocked(geom, basis,'ao integs y')
$ 0,0,g_x)) call errquit('mp2_dipole: ga',0, GA_ERR) g_z = ga_create_atom_blocked(geom, basis,'ao integs z')
*ga:1:0
if(.not.ga_create(mt_dbl,nbf,nbf,' ao integs y ',
$ 0,0,g_y)) call errquit('mp2_dipole: ga',0, GA_ERR)
*ga:1:0
if(.not.ga_create(mt_dbl,nbf,nbf,' ao integs z',
$ 0,0,g_z)) call errquit('mp2_dipole: ga',0, GA_ERR)
c c
call int_init(rtdb,1,basis) call int_init(rtdb,1,basis)
call int_dip_ga(basis, basis, g_x, g_y, g_z) call int_dip_ga(basis, basis, g_x, g_y, g_z)
@ -48,8 +44,7 @@ c
c Generate SCF AO density c Generate SCF AO density
c c
*ga:1:0 *ga:1:0
if(.not.ga_create(mt_dbl, nbf, nbf,' AO density ', g_dens = ga_create_atom_blocked(geom, basis,'ao density')
$ 0,0,g_dens)) call errquit('mp2_dipole: ga',0, GA_ERR)
call ga_dgemm('n', 't', nbf, nbf, noa, 1.0d0, g_vecs_a, call ga_dgemm('n', 't', nbf, nbf, noa, 1.0d0, g_vecs_a,
$ g_vecs_a, 0.0d0, g_dens) $ g_vecs_a, 0.0d0, g_dens)
call ga_dgemm('n', 't', nbf, nbf, nob, 1.0d0, g_vecs_b, call ga_dgemm('n', 't', nbf, nbf, nob, 1.0d0, g_vecs_b,
@ -62,8 +57,7 @@ c
c Form the MP2 AO density c Form the MP2 AO density
c c
*ga:1:0 *ga:1:0
if(.not.ga_create(mt_dbl,nmo,nbf,'scratch',0,0,g_scratch)) g_scratch = ga_create_atom_blocked(geom, basis,'scratch')
$ call errquit('mp2_grad: scratch',1, GA_ERR)
call ga_dgemm('n','t',nmo,nbf,nmo,1.0d0,g_p_tot_a,g_vecs_a, call ga_dgemm('n','t',nmo,nbf,nmo,1.0d0,g_p_tot_a,g_vecs_a,
$ 0.0d0,g_scratch) $ 0.0d0,g_scratch)
call ga_dgemm('n','n',nbf,nbf,nmo,1.0d0,g_vecs_a,g_scratch, call ga_dgemm('n','n',nbf,nbf,nmo,1.0d0,g_vecs_a,g_scratch,

View file

@ -26,6 +26,8 @@
character*256 p_a_ao character*256 p_a_ao
character*256 p_b_ao character*256 p_b_ao
integer base integer base
integer l_buf,k_buf
integer ilo,ihi,jlo,jhi,dowork
c c
call util_file_name('p_a_ao',.true.,.true.,p_a_ao) call util_file_name('p_a_ao',.true.,.true.,p_a_ao)
call util_file_name('p_b_ao',.true.,.true.,p_b_ao) call util_file_name('p_b_ao',.true.,.true.,p_b_ao)
@ -48,22 +50,48 @@ c$$$ call ga_put(g_p_tot_a,i,i,a+noa,a+noa,temp,1)
c$$$ end do c$$$ end do
c$$$ end do c$$$ end do
c c
call ga_distribution(g_p_tot_a, ga_nodeid(),
T ilo, ihi, jlo, jhi)
c check if distrib by columns
if ((ilo.eq.0).and.(ihi.eq.-1)) then
dowork=0
else
if(ilo.ne.1.and.ihi.ne.nmo) call
R errquit(' mp2maketotdens bug ',0,0)
dowork=1
endif
ioff = 0 ioff = 0
do i = 1+ga_nodeid(),noa,ga_nnodes() ! Loop thru SCF order if(dowork.eq.1) then
do i = 1,noa
ii = map_a(i)
if(ii.ge.jlo.and.ii.le.jhi) then
do a = 1,nva do a = 1,nva
ii = map_a(i)
aa = map_a(a+noa)-noa aa = map_a(a+noa)-noa
ia = ioff+a+(i-1)*nva ia = ioff+a+(i-1)*nva
call ga_get(g_rhs,ia,ia,1,1,xx,1) call ga_get(g_rhs,ia,ia,1,1,xx,1)
call ga_put(g_p_tot_a,aa+noa,aa+noa,ii,ii,xx,1) call ga_put(g_p_tot_a,aa+noa,aa+noa,ii,ii,xx,1)
call ga_put(g_p_tot_a,ii,ii,aa+noa,aa+noa,xx,1) call ga_put(g_p_tot_a,ii,ii,aa+noa,aa+noa,xx,1)
end do end do
endif
end do end do
c if (.not. ma_push_get(mt_dbl, nmo, 'mp2: maket',
call ga_copy_patch('n',g_p_ij_a,1,noa,1,noa,g_p_tot_a, $ l_buf, k_buf)) call errquit
$ 1,noa,1,noa) $ ('mp2: insufficient memory : bug ', nmo, MA_ERR)
call ga_copy_patch('n',g_p_ab_a,1,nva,1,nva,g_p_tot_a,
$ noa+1,nmo,noa+1,nmo) do i=jlo,jhi
if(i.le.noa) then
call ga_get(g_p_ij_a,1,noa,i,i,dbl_mb(k_buf),noa)
call ga_put(g_p_tot_a,1,noa,i,i,dbl_mb(k_buf),noa)
else
call ga_get(g_p_ab_a,1,nva,i-noa,i-noa,dbl_mb(k_buf),nva)
call ga_put(g_p_tot_a,noa+1,nmo,i,i,dbl_mb(k_buf),nva)
endif
enddo
if (.not. ma_pop_stack(l_buf)) call errquit
$ ('mp2: pop_stack failed ', nmo, MA_ERR)
endif
call ga_mask_sync(.true.,.false.)
call ga_sync()
c c
if (scftype .eq. 'UHF') then if (scftype .eq. 'UHF') then
base = (nva*noa) base = (nva*noa)
@ -71,15 +99,18 @@ c
base = 0 ! Alpha is the same as beta base = 0 ! Alpha is the same as beta
end if end if
ioff = base ioff = base
do i = 1+ga_nodeid(),nob,ga_nnodes() ! Loop thru SCF order if (dowork.eq.1) then
do i = 1,nob
ii = map_b(i)
if(ii.ge.jlo.and.ii.le.jhi) then
do a = 1,nvb do a = 1,nvb
ii = map_b(i)
aa = map_b(a+nob)-nob aa = map_b(a+nob)-nob
ia = ioff+a+(i-1)*nvb ia = ioff+a+(i-1)*nvb
call ga_get(g_rhs,ia,ia,1,1,xx,1) call ga_get(g_rhs,ia,ia,1,1,xx,1)
call ga_put(g_p_tot_b,aa+nob,aa+nob,ii,ii,xx,1) call ga_put(g_p_tot_b,aa+nob,aa+nob,ii,ii,xx,1)
call ga_put(g_p_tot_b,ii,ii,aa+nob,aa+nob,xx,1) call ga_put(g_p_tot_b,ii,ii,aa+nob,aa+nob,xx,1)
end do end do
endif
end do end do
c$$$ call ga_copy_patch('n',g_rhs,base+1,base+(nvb*nob), c$$$ call ga_copy_patch('n',g_rhs,base+1,base+(nvb*nob),
c$$$ $ 1,1,g_p_tot_b,nob+1,nmo,1,nob) c$$$ $ 1,1,g_p_tot_b,nob+1,nmo,1,nob)
@ -90,11 +121,25 @@ c$$$ call ga_get(g_rhs,indx,indx,1,1,temp,1)
c$$$ call ga_put(g_p_tot_b,i,i,a+nob,a+nob,temp,1) c$$$ call ga_put(g_p_tot_b,i,i,a+nob,a+nob,temp,1)
c$$$ end do c$$$ end do
c$$$ end do c$$$ end do
c c
call ga_copy_patch('n',g_p_ij_b,1,nob,1,nob,g_p_tot_b, if (.not. ma_push_get(mt_dbl, nmo, 'mp2: maket',
$ 1,nob,1,nob) $ l_buf, k_buf)) call errquit
call ga_copy_patch('n',g_p_ab_b,1,nvb,1,nvb,g_p_tot_b, $ ('mp2: insufficient memory : bug ', nmo, MA_ERR)
$ nob+1,nmo,nob+1,nmo)
do i=jlo,jhi
if(i.le.nob) then
call ga_get(g_p_ij_b,1,nob,i,i,dbl_mb(k_buf),nob)
call ga_put(g_p_tot_b,1,nob,i,i,dbl_mb(k_buf),nob)
else
call ga_get(g_p_ab_b,1,nvb,i-nob,i-nob,dbl_mb(k_buf),nvb)
call ga_put(g_p_tot_b,nob+1,nmo,i,i,dbl_mb(k_buf),nvb)
endif
enddo
if (.not. ma_pop_stack(l_buf)) call errquit
$ ('mp2: pop_stack failed ', nmo, MA_ERR)
endif
call ga_sync()
c c
*ga:1:0 *ga:1:0
if(.not.ga_create(mt_dbl,nmo,nbf,'scratch',0,0,g_scratch)) if(.not.ga_create(mt_dbl,nmo,nbf,'scratch',0,0,g_scratch))

View file

@ -46,7 +46,7 @@ c
call ga_copy_patch('n',g_w_ai_a,1,noa_hi,1,nva,g_w_tot_a, call ga_copy_patch('n',g_w_ai_a,1,noa_hi,1,nva,g_w_tot_a,
$ 1, noa_hi, noa_hi+1, nmo) $ 1, noa_hi, noa_hi+1, nmo)
c c
call ga_transpose(g_w_ai_a,g_w_ai_a_tr) call mp2_transpwai(g_w_ai_a,g_w_ai_a_tr)
call ga_copy_patch('n',g_w_ai_a_tr,1,nva,1,noa_hi,g_w_tot_a, call ga_copy_patch('n',g_w_ai_a_tr,1,nva,1,noa_hi,g_w_tot_a,
$ noa_hi+1,nmo,1,noa_hi) $ noa_hi+1,nmo,1,noa_hi)
call ga_copy_patch('n',g_w_ij_a,1,noa_hi,1,noa_hi,g_w_tot_a, call ga_copy_patch('n',g_w_ij_a,1,noa_hi,1,noa_hi,g_w_tot_a,
@ -55,7 +55,7 @@ c
$ noa_hi+1,nmo,noa_hi+1,nmo) $ noa_hi+1,nmo,noa_hi+1,nmo)
call ga_copy_patch('n',g_w_ai_b,1,nob_hi,1,nvb,g_w_tot_b, call ga_copy_patch('n',g_w_ai_b,1,nob_hi,1,nvb,g_w_tot_b,
$ 1, nob_hi, nob_hi+1,nmo) $ 1, nob_hi, nob_hi+1,nmo)
call ga_transpose(g_w_ai_b,g_w_ai_b_tr) call mp2_transpwai(g_w_ai_b,g_w_ai_b_tr)
call ga_copy_patch('n',g_w_ai_b_tr,1,nvb,1,nob_hi,g_w_tot_b, call ga_copy_patch('n',g_w_ai_b_tr,1,nvb,1,nob_hi,g_w_tot_b,
$ nob_hi+1,nmo,1,nob_hi) $ nob_hi+1,nmo,1,nob_hi)
call ga_copy_patch('n',g_w_ij_b,1,nob_hi,1,nob_hi,g_w_tot_b, call ga_copy_patch('n',g_w_ij_b,1,nob_hi,1,nob_hi,g_w_tot_b,
@ -148,3 +148,44 @@ c
c c
end end
subroutine mp2_transpwai(g,g_tr)
implicit none
#include "mafdecls.fh"
#include "global.fh"
#include "errquit.fh"
integer g,g_tr
c
integer ilo,ihi,jlo,jhi
integer i,j
integer k_buf,l_buf
integer n_row,n_col,gtype
integer dowork
c
call ga_inquire(g_tr, gtype, n_row, n_col)
call ga_distribution(g_tr, ga_nodeid(),
T ilo, ihi, jlo, jhi)
if ((ilo.eq.0).and.(ihi.eq.-1)) then
dowork=0
else
c check if distrib by columns
if(ilo.ne.1.and.ihi.ne.n_row) call
R errquit(' mp2transpwai bug ',0,0)
dowork=1
endif
if(dowork.eq.1) then
if (.not. ma_push_get(mt_dbl, n_row, 'mp2: wdens',
$ l_buf, k_buf)) call errquit
$ ('mp2: insufficient memory : bug ', n_row, MA_ERR)
do j=jlo,jhi
call ga_get(g,j,j,1,n_row,dbl_mb(k_buf),1)
if (.not.ma_verify_allocator_stuff()) stop ' ma ck 2b'
call ga_put(g_tr,1,n_row,j,j,dbl_mb(k_buf),n_row)
if (.not.ma_verify_allocator_stuff()) stop ' ma ck 2b'
enddo
if (.not. ma_pop_stack(l_buf)) call errquit
$ ('mp2transp pop_stack failed ', n_row, MA_ERR)
endif
call ga_sync()
return
end

View file

@ -49,6 +49,10 @@ c
parameter (eps=1d-14) parameter (eps=1d-14)
c c
logical otdebug logical otdebug
logical do_mirra,do_mirrb,do_mirr
integer g_ta_mirr,g_tb_mirr,g_ta_org,g_tb_org
logical util_mirrmat
external util_mirrmat
c c
integer l_ia_uv, k_ia_uv, l_tmp, k_tmp, l_ia_jb, k_ia_jb integer l_ia_uv, k_ia_uv, l_tmp, k_tmp, l_ia_jb, k_ia_jb
double precision ddot double precision ddot
@ -82,6 +86,24 @@ c
*ga:1:0 *ga:1:0
if(.not.ga_create(mt_dbl,nob*nvb,nva,'T_b',(nob*nvb),0,g_t_b)) if(.not.ga_create(mt_dbl,nob*nvb,nva,'T_b',(nob*nvb),0,g_t_b))
$ call errquit('could not alloc ga for T_b',1, GA_ERR) $ call errquit('could not alloc ga for T_b',1, GA_ERR)
do_mirra=util_mirrmat(1,g_t_a,g_ta_mirr,
D .false., .true.)
do_mirrb=util_mirrmat(1,g_t_b,g_tb_mirr,
D .false., .true.)
if(do_mirra.and.do_mirrb) then
if(ga_nodeid().eq.0)
w write(6,*) 'mp2_make_tuhf mirroring'
do_mirr=.true.
g_ta_org=g_t_a
g_tb_org=g_t_b
g_t_a=g_ta_mirr
g_t_b=g_tb_mirr
else
if(do_mirra) then
if(.not.ga_destroy(g_ta_mirr))call errquit(
$ 'could not destroy mirrt_a handle',1, GA_ERR)
endif
endif
tunitptra=1 tunitptra=1
tunitptrb=1 tunitptrb=1
do i=oseg_lo,oseg_hi do i=oseg_lo,oseg_hi
@ -189,6 +211,12 @@ c
enddo enddo
enddo enddo
call ga_sync() call ga_sync()
if (do_mirr) then
call ga_mask_sync(.true.,.false.)
call ga_merge_mirrored(g_t_a)
call ga_mask_sync(.true.,.false.)
call ga_merge_mirrored(g_t_b)
endif
do a_a=nva_lo_local,nva_hi_local do a_a=nva_lo_local,nva_hi_local
counta = 0 counta = 0
do b=nva_lo,nva_hi do b=nva_lo,nva_hi
@ -265,6 +293,15 @@ c
esing = esing + (-4.0d0*eab + eaa)/4.0d0 esing = esing + (-4.0d0*eab + eaa)/4.0d0
etrip = etrip + (-3.0d0*eaa)/4.0d0 etrip = etrip + (-3.0d0*eaa)/4.0d0
c c
if(do_mirr) then
if(.not.ga_destroy(g_t_b))call errquit(
$ 'could not destroy t_b handle',1, GA_ERR)
if(.not.ga_destroy(g_t_a))call errquit(
$ 'could not destroy t_a handle',1, GA_ERR)
g_t_a=g_ta_org
g_t_b=g_tb_org
endif
if(.not.ga_destroy(g_t_b))call errquit( if(.not.ga_destroy(g_t_b))call errquit(
$ 'could not destroy t_b handle',1, GA_ERR) $ 'could not destroy t_b handle',1, GA_ERR)
if(.not.ga_destroy(g_t_a))call errquit( if(.not.ga_destroy(g_t_a))call errquit(

View file

@ -30,7 +30,7 @@ c
c $Id$ c $Id$
c c
c ====================================================================================================== c ======================================================================================================
C> \mainpage Northwest Computational Chemistry Package (NWChem) 7.0.1 C> \mainpage Northwest Computational Chemistry Package (NWChem) 7.2.0
C> C>
C> NWChem is an open-source computational chemistry package distributed under the terms of C> NWChem is an open-source computational chemistry package distributed under the terms of
C> the Educational Community License (ECL) 2.0 C> the Educational Community License (ECL) 2.0
@ -461,7 +461,7 @@ c
write(LuOut,*) write(LuOut,*)
write(LuOut,*) write(LuOut,*)
call util_print_centered(LuOut, call util_print_centered(LuOut,
$ 'Northwest Computational Chemistry Package (NWChem) 7.0.1', $ 'Northwest Computational Chemistry Package (NWChem) 7.2.0',
$ 40, .true.) $ 40, .true.)
write(LuOut,*) write(LuOut,*)
write(LuOut,*) write(LuOut,*)
@ -557,7 +557,7 @@ C
C Print version information to ecce.out file C Print version information to ecce.out file
C C
compiled(inp_strlen(compiled)+1:inp_strlen(compiled)+25) = compiled(inp_strlen(compiled)+1:inp_strlen(compiled)+25) =
$ ' Version 7.0.1' $ ' Version 7.2.0'
call ecce_print_version(compiled(1:inp_strlen(compiled))) call ecce_print_version(compiled(1:inp_strlen(compiled)))
C C
If ( Inp_StrLen(BatchID) .gt. 0) then If ( Inp_StrLen(BatchID) .gt. 0) then

View file

@ -25,7 +25,8 @@ c
double precision grid_acc(num_gridtypes) double precision grid_acc(num_gridtypes)
double precision job_grid_acc double precision job_grid_acc
character*16 element character*16 element
character*16 tag character*16 tag, tag_mod
integer lenb
double precision eps double precision eps
parameter (eps = 1.d-20) parameter (eps = 1.d-20)
data gridtypes /'xcoarse', 'coarse', 'medium', 'fine', 'xfine', data gridtypes /'xcoarse', 'coarse', 'medium', 'fine', 'xfine',
@ -418,7 +419,10 @@ c
c hack for nbo c hack for nbo
if(tag(3:4).eq.'gh') iptr=5 if(tag(3:4).eq.'gh') iptr=5
if(tag(1:1).eq.'X'.or.tag(1:1).eq.'x') iptr=2 if(tag(1:1).eq.'X'.or.tag(1:1).eq.'x') iptr=2
if (.not. geom_tag_to_element(tag(iptr:), symbol, lenb=inp_strlen(tag)
tag_mod=' '
tag_mod(1:lenb-iptr+1)=tag(iptr:lenb)
if (.not. geom_tag_to_element(tag_mod, symbol,
& element, i_atomic_number)) then & element, i_atomic_number)) then
if (inp_compare(.false.,tag(1:2),'bq')) then if (inp_compare(.false.,tag(1:2),'bq')) then
i_atomic_number = 0 i_atomic_number = 0

View file

@ -26,7 +26,8 @@ c
logical same_atom, same_bq, isbq logical same_atom, same_bq, isbq
c c
character*16 element character*16 element
character*16 tag character*16 tag,tag_mod
integer lenb
character*2 symbol character*2 symbol
c c
logical lnewtype logical lnewtype
@ -179,7 +180,10 @@ c Hence they should always have i_atomic_number .eq. 0
c no matter what follows the X. c no matter what follows the X.
c c
if(tag(1:1).eq.'X'.or.tag(1:1).eq.'x') iptr=2 if(tag(1:1).eq.'X'.or.tag(1:1).eq.'x') iptr=2
if (.not. geom_tag_to_element(tag(iptr:), symbol, lenb=inp_strlen(tag)
tag_mod=' '
tag_mod(1:lenb-iptr+1)=tag(iptr:lenb)
if (.not. geom_tag_to_element(tag_mod, symbol,
& element, i_atomic_number)) then & element, i_atomic_number)) then
if (inp_compare(.false.,tag(1:2),'bq')) then if (inp_compare(.false.,tag(1:2),'bq')) then
if(bqdontcare) then if(bqdontcare) then

View file

@ -12,12 +12,17 @@ LIBRARY = libnwdft.a
LIB_INCLUDES = -I../include LIB_INCLUDES = -I../include
ifdef USE_LIBXC ifdef USE_LIBXC
LIB_DEFINES += -DXC_MAJOR_VERSION=$(shell grep XC_MAJOR_VERSION ../../libext/libxc/install/include/xc_version.h |cut -d " " -f 3)
LIB_DEFINES += -DLIBXC_NP_SIZE=$(shell ./libxc_findsizenp.sh ../../libext/libxc/install/include)
LIB_INCLUDES += -I../../libext/libxc/install/include LIB_INCLUDES += -I../../libext/libxc/install/include
endif endif
ifdef LIBXC_DIR ifdef LIBXC_INCLUDE
LIB_INCLUDES += -I$(LIBXC_DIR)/include LIB_DEFINES += -DXC_MAJOR_VERSION=$(shell grep XC_MAJOR_VERSION $(LIBXC_INCLUDE)/xc_version.h |cut -d " " -f 3)
LIB_DEFINES += -DLIBXC_NP_SIZE=$(shell ./libxc_findsizenp.sh $(LIBXC_INCLUDE))
LIB_INCLUDES += -I$(LIBXC_INCLUDE)
endif endif
LIB_INCLUDES += -I. LIB_INCLUDES += -I.
include ../../config/makefile.h include ../../config/makefile.h
include ../../config/makelib.h include ../../config/makelib.h

View file

@ -1,3 +1,8 @@
#ifdef USE_LIBXC
#if XC_MAJOR_VERSION < 4
#error "need libxc version > 3 "
#endif
#endif
integer, parameter :: maxfunc = 100 integer, parameter :: maxfunc = 100
integer :: libxc_nfuncs integer :: libxc_nfuncs

View file

@ -0,0 +1,18 @@
#!/usr/bin/env bash
npstring=$(egrep np "$1"/xc.h|head -1)
np_array=($npstring)
count=-1
sizenp_string=' '
for substring in "${np_array[@]}"; do
[[ $substring == "np," ]] && sizenp_string=${np_array[$count]} && break
((++count))
done
if [[ "$sizenp_string" == 'int' ]]; then
size_np=4
elif [[ "$sizenp_string" == 'size_t' ]]; then
size_np=8
else
echo "unexpected sizenp_string $sizenp_string"
exit 1
fi
echo $size_np

View file

@ -57,14 +57,20 @@
double precision :: Amat3(nq,NCOL_AMAT3) double precision :: Amat3(nq,NCOL_AMAT3)
double precision :: Cmat3(nq,NCOL_CMAT3) double precision :: Cmat3(nq,NCOL_CMAT3)
#ifdef USE_LIBXC
double precision :: fac double precision :: fac
double precision, external :: ddot double precision, external :: ddot
logical gga,mgga,dolap logical gga,mgga,dolap
logical,external :: nwchem_libxc_family logical,external :: nwchem_libxc_family
#if LIBXC_NP_SIZE == 4
integer*4 nqs
#elif LIBXC_NP_SIZE == 8
integer(c_size_t) :: nqs integer(c_size_t) :: nqs
#ifdef USE_LIBXC #else
#error "unexpected value for LIBXC_NP_SIZE"
#endif
type(xc_f03_func_t) :: xcfunc type(xc_f03_func_t) :: xcfunc
gga = .false. gga = .false.
@ -154,22 +160,39 @@
call xc_f03_func_init(xcfunc,libxc_funcs(ifunc),polarized) call xc_f03_func_init(xcfunc,libxc_funcs(ifunc),polarized)
call xc_f03_func_set_dens_threshold(xcfunc, tol_rho) call xc_f03_func_set_dens_threshold(xcfunc, tol_rho)
call xc_f03_func_set_sigma_threshold(xcfunc, tol_rho**2) #if XC_MAJOR_VERSION > 4
call xc_f03_func_set_sigma_threshold(xcfunc, tol_rho)
call xc_f03_func_set_zeta_threshold(xcfunc, 1d-10) call xc_f03_func_set_zeta_threshold(xcfunc, 1d-10)
#endif
select case(libxc_family(ifunc)) select case(libxc_family(ifunc))
#if XC_MAJOR_VERSION > 4
case (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA) case (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
#else
case (XC_FAMILY_LDA)
#endif
if ((.not.do_2nd) .and. (.not.do_3rd)) then if ((.not.do_2nd) .and. (.not.do_3rd)) then
call xc_f03_lda_exc_vxc(xcfunc,nqs, call xc_f03_lda_exc_vxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(kexc),dbl_mb(kvrho)) $ dbl_mb(krho),dbl_mb(kexc),dbl_mb(kvrho))
elseif (.not.do_3rd) then elseif (.not.do_3rd) then
#if XC_MAJOR_VERSION > 4
call xc_f03_lda_exc_vxc_fxc(xcfunc,nqs,dbl_mb(krho), call xc_f03_lda_exc_vxc_fxc(xcfunc,nqs,dbl_mb(krho),
$ dbl_mb(kexc),dbl_mb(kvrho),dbl_mb(kv2rho2)) $ dbl_mb(kexc),dbl_mb(kvrho),dbl_mb(kv2rho2))
#else
call xc_f03_lda_exc_vxc(xcfunc,nqs,dbl_mb(krho),
$ dbl_mb(kexc),dbl_mb(kvrho))
call xc_f03_lda_fxc(xcfunc,nqs,dbl_mb(krho),dbl_mb(kv2rho2))
#endif
else else
#if XC_MAJOR_VERSION > 4
call xc_f03_lda_exc_vxc_fxc_kxc(xcfunc,nqs,dbl_mb(krho), call xc_f03_lda_exc_vxc_fxc_kxc(xcfunc,nqs,dbl_mb(krho),
$ dbl_mb(kexc),dbl_mb(kvrho),dbl_mb(kv2rho2), $ dbl_mb(kexc),dbl_mb(kvrho),dbl_mb(kv2rho2),
$ dbl_mb(kv3rho3)) $ dbl_mb(kv3rho3))
#else
call xc_f03_lda_exc_vxc(xcfunc,nqs,dbl_mb(krho),
$ dbl_mb(kexc),dbl_mb(kvrho))
call xc_f03_lda_fxc(xcfunc,nqs,dbl_mb(krho),dbl_mb(kv2rho2))
call xc_f03_lda_kxc(xcfunc,nqs,dbl_mb(krho),dbl_mb(kv3rho3))
#endif
endif endif
@ -186,17 +209,43 @@
$ dbl_mb(kexc), $ dbl_mb(kexc),
$ dbl_mb(kvrho),dbl_mb(kvsigma)) $ dbl_mb(kvrho),dbl_mb(kvsigma))
elseif (.not.do_3rd) then elseif (.not.do_3rd) then
#if XC_MAJOR_VERSION > 4
call xc_f03_gga_exc_vxc_fxc(xcfunc,nqs, call xc_f03_gga_exc_vxc_fxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),dbl_mb(kexc), $ dbl_mb(krho),dbl_mb(ksigma),dbl_mb(kexc),
$ dbl_mb(kvrho),dbl_mb(kvsigma),dbl_mb(kv2rho2), $ dbl_mb(kvrho),dbl_mb(kvsigma),dbl_mb(kv2rho2),
$ dbl_mb(kv2rhosig),dbl_mb(kv2sig2)) $ dbl_mb(kv2rhosig),dbl_mb(kv2sig2))
#else
call xc_f03_gga_exc_vxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kexc),
$ dbl_mb(kvrho),dbl_mb(kvsigma))
call xc_f03_gga_fxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kv2rho2),dbl_mb(kv2rhosig),
$ dbl_mb(kv2sig2))
#endif
else else
#if XC_MAJOR_VERSION > 4
call xc_f03_gga_exc_vxc_fxc_kxc(xcfunc,nqs, call xc_f03_gga_exc_vxc_fxc_kxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),dbl_mb(kexc), $ dbl_mb(krho),dbl_mb(ksigma),dbl_mb(kexc),
$ dbl_mb(kvrho),dbl_mb(kvsigma),dbl_mb(kv2rho2), $ dbl_mb(kvrho),dbl_mb(kvsigma),dbl_mb(kv2rho2),
$ dbl_mb(kv2rhosig),dbl_mb(kv2sig2), $ dbl_mb(kv2rhosig),dbl_mb(kv2sig2),
$ dbl_mb(kv3rho3),dbl_mb(kv3rho2sig), $ dbl_mb(kv3rho3),dbl_mb(kv3rho2sig),
$ dbl_mb(kv3rhosig2),dbl_mb(kv3sig3)) $ dbl_mb(kv3rhosig2),dbl_mb(kv3sig3))
#else
call xc_f03_gga_exc_vxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kexc),
$ dbl_mb(kvrho),dbl_mb(kvsigma))
call xc_f03_gga_fxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kv2rho2),dbl_mb(kv2rhosig),
$ dbl_mb(kv2sig2))
call xc_f03_gga_kxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kv3rho3),dbl_mb(kv3rho2sig),
$ dbl_mb(kv3rhosig2),dbl_mb(kv3sig3))
#endif
endif endif
else else
if ((.not.do_2nd).and.(.not.do_3rd)) then if ((.not.do_2nd).and.(.not.do_3rd)) then
@ -204,17 +253,41 @@
$ dbl_mb(krho),dbl_mb(ksigma), $ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kvrho),dbl_mb(kvsigma)) $ dbl_mb(kvrho),dbl_mb(kvsigma))
elseif (.not.do_3rd) then elseif (.not.do_3rd) then
#if XC_MAJOR_VERSION > 4
call xc_f03_gga_vxc_fxc(xcfunc,nqs, call xc_f03_gga_vxc_fxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma), $ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kvrho),dbl_mb(kvsigma),dbl_mb(kv2rho2), $ dbl_mb(kvrho),dbl_mb(kvsigma),dbl_mb(kv2rho2),
$ dbl_mb(kv2rhosig),dbl_mb(kv2sig2)) $ dbl_mb(kv2rhosig),dbl_mb(kv2sig2))
#else
call xc_f03_gga_vxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kvrho),dbl_mb(kvsigma))
call xc_f03_gga_fxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kv2rho2),dbl_mb(kv2rhosig),
$ dbl_mb(kv2sig2))
#endif
else else
#if XC_MAJOR_VERSION > 4
call xc_f03_gga_vxc_fxc_kxc(xcfunc,nqs, call xc_f03_gga_vxc_fxc_kxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma), $ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kvrho),dbl_mb(kvsigma),dbl_mb(kv2rho2), $ dbl_mb(kvrho),dbl_mb(kvsigma),dbl_mb(kv2rho2),
$ dbl_mb(kv2rhosig),dbl_mb(kv2sig2), $ dbl_mb(kv2rhosig),dbl_mb(kv2sig2),
$ dbl_mb(kv3rho3),dbl_mb(kv3rho2sig), $ dbl_mb(kv3rho3),dbl_mb(kv3rho2sig),
$ dbl_mb(kv3rhosig2),dbl_mb(kv3sig3)) $ dbl_mb(kv3rhosig2),dbl_mb(kv3sig3))
#else
call xc_f03_gga_vxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kvrho),dbl_mb(kvsigma))
call xc_f03_gga_fxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kv2rho2),dbl_mb(kv2rhosig),
$ dbl_mb(kv2sig2))
call xc_f03_gga_kxc(xcfunc,nqs,
$ dbl_mb(krho),dbl_mb(ksigma),
$ dbl_mb(kv3rho3),dbl_mb(kv3rho2sig),
$ dbl_mb(kv3rhosig2),dbl_mb(kv3sig3))
#endif
endif endif
call dfill(nq,0d0,dbl_mb(kexc),1) call dfill(nq,0d0,dbl_mb(kexc),1)
endif endif
@ -222,8 +295,8 @@
case (XC_FAMILY_MGGA, XC_FAMILY_HYB_MGGA) case (XC_FAMILY_MGGA, XC_FAMILY_HYB_MGGA)
gga = .true. gga = .true.
mgga = .true. mgga = .true.
dolap = .true. dolap = iand(libxc_flags(ifunc),xc_flags_needs_laplacian).eq.
$ xc_flags_needs_laplacian
if (iand(libxc_flags(ifunc),xc_flags_have_exc).eq. if (iand(libxc_flags(ifunc),xc_flags_have_exc).eq.
$ xc_flags_have_exc) then $ xc_flags_have_exc) then

View file

@ -41,7 +41,11 @@
xcfamily = xc_f03_func_info_get_family(xcinfo) xcfamily = xc_f03_func_info_get_family(xcinfo)
select case(xcfamily) select case(xcfamily)
#if XC_MAJOR_VERSION > 4
case (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA) case (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
#else
case (XC_FAMILY_LDA)
#endif
case (XC_FAMILY_GGA, XC_FAMILY_HYB_GGA) case (XC_FAMILY_GGA, XC_FAMILY_HYB_GGA)
case (XC_FAMILY_MGGA, XC_FAMILY_HYB_MGGA) case (XC_FAMILY_MGGA, XC_FAMILY_HYB_MGGA)
case default case default
@ -50,7 +54,11 @@
endselect endselect
select case(xcfamily) select case(xcfamily)
#if XC_MAJOR_VERSION > 4
case (XC_FAMILY_HYB_LDA, XC_FAMILY_HYB_GGA, XC_FAMILY_HYB_MGGA) case (XC_FAMILY_HYB_LDA, XC_FAMILY_HYB_GGA, XC_FAMILY_HYB_MGGA)
#else
case (XC_FAMILY_HYB_GGA, XC_FAMILY_HYB_MGGA)
#endif
if (iand(xcflags,xc_flags_hyb_cam).eq.xc_flags_hyb_cam) then if (iand(xcflags,xc_flags_hyb_cam).eq.xc_flags_hyb_cam) then
call xc_f03_hyb_cam_coef(xcfunc,cam_omega,cam_alpha,cam_beta) call xc_f03_hyb_cam_coef(xcfunc,cam_omega,cam_alpha,cam_beta)

View file

@ -73,9 +73,7 @@
subroutine nwchem_libxc_print subroutine nwchem_libxc_print
use,intrinsic :: iso_c_binding use,intrinsic :: iso_c_binding
#ifdef USE_LIBXC #ifdef USE_LIBXC
use xc_f03_lib_m, only: xc_f03_version_string, use xc_f03_lib_m, only: xc_f03_functional_get_name
$ xc_f03_reference,
$ xc_f03_functional_get_name
#endif #endif
implicit none implicit none
@ -109,9 +107,7 @@
subroutine nwchem_libxc_print_header subroutine nwchem_libxc_print_header
use,intrinsic :: iso_c_binding use,intrinsic :: iso_c_binding
#ifdef USE_LIBXC #ifdef USE_LIBXC
use xc_f03_lib_m, only: xc_f03_version_string, use xc_f03_lib_m, only: xc_f03_version_string
$ xc_f03_reference,
$ xc_f03_functional_get_name
#endif #endif
implicit none implicit none

View file

@ -616,7 +616,7 @@ c
call tddft_grad_compute_dao(ipol,nao,nocc,g_mo,g_d) call tddft_grad_compute_dao(ipol,nao,nocc,g_mo,g_d)
c DEBUG c DEBUG
c call ga_print(g_d) c call ga_print(g_d)
if (tddft_grad_util_print('tddft grad g',print_debug)) then if (util_print('tddft grad g',print_debug)) then
if (oroot) write(LuOut,*)'DEBUG: '//pname//'D' if (oroot) write(LuOut,*)'DEBUG: '//pname//'D'
call tddft_grad_print_array(ipol,1,g_d,dble(ipol)) call tddft_grad_print_array(ipol,1,g_d,dble(ipol))
endif endif
@ -640,7 +640,7 @@ c
enddo enddo
c DEBUG c DEBUG
c call ga_print(g_p_ao) c call ga_print(g_p_ao)
if (tddft_grad_util_print('tddft grad g',print_debug)) then if (util_print('tddft grad g',print_debug)) then
if (oroot) write(LuOut,*)'DEBUG: '//pname//'P' if (oroot) write(LuOut,*)'DEBUG: '//pname//'P'
c call tddft_grad_print_array(ipol,1,g_p_ao,dble(ipol)) c call tddft_grad_print_array(ipol,1,g_p_ao,dble(ipol))
call tddft_grad_print_array(ipol,1,g_d(3),dble(ipol)) call tddft_grad_print_array(ipol,1,g_d(3),dble(ipol))
@ -798,7 +798,7 @@ c
c Daniel (11-30-12): Print X+Y and X-Y in the AO basis c Daniel (11-30-12): Print X+Y and X-Y in the AO basis
c DEBUG c DEBUG
c call ga_print(g_d(5)) c call ga_print(g_d(5))
if (tddft_grad_util_print('tddft grad g',print_debug)) then if (util_print('tddft grad g',print_debug)) then
if (oroot) write(LuOut,*)'DEBUG: '//pname//'(X+Y)' if (oroot) write(LuOut,*)'DEBUG: '//pname//'(X+Y)'
call tddft_grad_print_array(ipol,1,g_d(5),dble(ipol)) call tddft_grad_print_array(ipol,1,g_d(5),dble(ipol))
endif endif
@ -818,7 +818,7 @@ c Daniel (11-30-12): Print W (note, this contains the ground state
c density matrix contribution as well). c density matrix contribution as well).
c DEBUG c DEBUG
c call ga_print(g_wp_ao) c call ga_print(g_wp_ao)
if (tddft_grad_util_print('tddft grad g',print_debug)) then if (util_print('tddft grad g',print_debug)) then
if (oroot) write(LuOut,*)'DEBUG: '//pname//'W' if (oroot) write(LuOut,*)'DEBUG: '//pname//'W'
call tddft_grad_print_array(1,1,g_wp_ao,dble(ipol)) call tddft_grad_print_array(1,1,g_wp_ao,dble(ipol))
endif endif
@ -1140,7 +1140,7 @@ c Daniel (4-8-13): Need conditional statement here for CAM functionals
c c
c Print results if so required c Print results if so required
c c
if (tddft_grad_util_print('tddft grad terms',print_high)) then if (util_print('tddft grad terms',print_high)) then
if (oroot) then if (oroot) then
write(LuOut,5)ir write(LuOut,5)ir
5 format(' The Excited State Energy Gradient by Terms', 5 format(' The Excited State Energy Gradient by Terms',

View file

@ -102,7 +102,7 @@ c
call nga_scale_patch(g_tp(ip),blo,bhi,0.5d0) call nga_scale_patch(g_tp(ip),blo,bhi,0.5d0)
enddo enddo
c c
if (tddft_grad_util_print(pname,print_debug)) then if (util_print(pname,print_debug)) then
oroot = ga_nodeid().eq.0 oroot = ga_nodeid().eq.0
if (oroot) write(LuOut,*)'DEBUG: '//pname//'P' if (oroot) write(LuOut,*)'DEBUG: '//pname//'P'
call tddft_grad_print_array(ipol,nroots,g_tp,dble(ipol)) call tddft_grad_print_array(ipol,nroots,g_tp,dble(ipol))

View file

@ -120,17 +120,22 @@ c
c c
c Daniel (2-8-13): This is a local TDA variable, so that we don't need c Daniel (2-8-13): This is a local TDA variable, so that we don't need
c to change the global tda variable. c to change the global tda variable.
logical tdaloc logical tdaloc, tddft_grad_tdaloc
external tddft_grad_tdaloc
logical oprint
integer g_r_x(2),g_r_org(2)
c c
double precision Exc(2) ! Exchange-correlation energy double precision Exc(2) ! Exchange-correlation energy
c c
pname="tddft_grad_compute_r: " pname="tddft_grad_compute_r: "
iwhich = 0 ! call to tddft_nga_cont() iwhich = 0 ! call to tddft_nga_cont()
write(6,*) ' 0 tda ',tda
c c
c 1. Do the T contributions c 1. Do the T contributions
c c
c 1.1. Create global array to hold Tuv c 1.1. Create global array to hold Tuv
c c
oprint=util_print('tddft_grad_r',print_debug)
idim(1) = nroot*ipol idim(1) = nroot*ipol
idim(2) = nao idim(2) = nao
idim(3) = nao idim(3) = nao
@ -180,6 +185,7 @@ c fock_xc:triplet here for restricted triplet calculations to work.
c c
call tddft_nga_cont(rtdb,ihdl_geom,ihdl_bfao,g_tuv,g_apbt,g_ambt, call tddft_nga_cont(rtdb,ihdl_geom,ihdl_bfao,g_tuv,g_apbt,g_ambt,
+nao,ipol,tol2e,tda,oskel,kfac,lhashf,.false.,nroot,iwhich,lhascd) +nao,ipol,tol2e,tda,oskel,kfac,lhashf,.false.,nroot,iwhich,lhascd)
write(6,*) ' 2 tda ',tda
c Daniel (2-26-13): Reset fock_xc:triplet here for restricted triplet c Daniel (2-26-13): Reset fock_xc:triplet here for restricted triplet
c calculations to work. c calculations to work.
if (otriplet) then if (otriplet) then
@ -217,11 +223,11 @@ c
c c
c 1. Done T contributions c 1. Done T contributions
cDEBUG cDEBUG
c if (tddft_grad_util_print('tddft grad r',print_debug)) then if (oprint) then
c oroot = ga_nodeid().eq.0 oroot = ga_nodeid().eq.0
c if (oroot) write(LuOut,*)'DEBUG A: tddft_grad_comp_r: R' if (oroot) write(LuOut,*)'DEBUG A: tddft_grad_comp_r: R_T'
c call tddft_grad_print_array(ipol,nroot,g_r,dble(ipol)) call tddft_grad_print_array(ipol,nroot,g_r,dble(ipol))
c endif endif
cDEBUG cDEBUG
c c
c 2. Do the (X+Y) and (X-Y) contributions c 2. Do the (X+Y) and (X-Y) contributions
@ -278,32 +284,10 @@ c
+ call errquit(pname//'failed to create g_apby',0,GA_ERR) + call errquit(pname//'failed to create g_apby',0,GA_ERR)
if (.not.nga_create(mt_dbl,3,idim,'vectors (A-B)Y',ichnk,g_amby)) if (.not.nga_create(mt_dbl,3,idim,'vectors (A-B)Y',ichnk,g_amby))
+ call errquit(pname//'failed to create g_amby',0,GA_ERR) + call errquit(pname//'failed to create g_amby',0,GA_ERR)
c tdaloc=tddft_grad_tdaloc(rtdb,tda,lhashf)
c
c 2.5 Compute (A+B)X, (A-B)X, (A+B)Y and (A-B)Y c 2.5 Compute (A+B)X, (A-B)X, (A+B)Y and (A-B)Y
c c
c Daniel (1-5-13): We manipulate the code here because the
c R vector has the same number of terms for RPA and CIS. This is a
c consequence of (X-Y) = X. It might be a good idea to avoid doing this
c part for the Y vector since Y = 0. Note that the coupling matrix
c expressions H^+[V] and H^-[V] can both be nonzero for CIS, so it isn't
c okay to skip the anti-symmetric part in the tddft_nga_cont routine.
c What CIS does is makes the Y vector contribution zero in the following
c routines.
c Daniel (2-8-13): Set the local TDA variable so that we don't change
c the global one.
if (lhashf) then
if (tda) then
tdaloc = .false. ! For CIS calculations
else
tdaloc = .false. ! For RPA calculations
endif
else
if (tda) then
tdaloc = .true. ! For TDDFT/TDA calculations
else
tdaloc = .false. ! For TDDFT calculations
endif
endif
call tddft_nga_cont(rtdb,ihdl_geom,ihdl_bfao,g_x,g_apbx,g_ambx, call tddft_nga_cont(rtdb,ihdl_geom,ihdl_bfao,g_x,g_apbx,g_ambx,
+nao,ipol,tol2e,tdaloc,oskel,kfac,lhashf,otriplet,nroot,iwhich, +nao,ipol,tol2e,tdaloc,oskel,kfac,lhashf,otriplet,nroot,iwhich,
+lhascd) +lhascd)
@ -349,6 +333,21 @@ c 2.10 Transform (A+B)(X+Y) to MO basis occupied-occupied block only
c c
call tddft_grad_trans_ao2mo(ipol,nao,nfc,naoc,nocc,nav,nfv, call tddft_grad_trans_ao2mo(ipol,nao,nfc,naoc,nocc,nav,nfv,
+ nroot,1.0d0,0.0d0,"ij",g_mo,g_apbx,g_hij,"ij") + nroot,1.0d0,0.0d0,"ij",g_mo,g_apbx,g_hij,"ij")
if(oprint)then
c extra ga to keep track of X
if (.not. ga_duplicate(g_r(1), g_r_x(1), 'gtmp2'))
c call errquit('tdgcr: gadupl failed',0,0)
call ga_zero(g_r_x(1))
g_r_org(1)=g_r(1)
g_r(1)=g_r_x(1)
if(ipol.eq.2) then
if (.not. ga_duplicate(g_r(2), g_r_x(2), 'gtmp2'))
c call errquit('tdgcr: gadupl failed',0,0)
call ga_zero(g_r_x(2))
g_r_org(2)=g_r(2)
g_r(2)=g_r_x(2)
endif
endif
c c
c 2.11 Add -sum_j (X+Y)ja [(A+B)(X+Y)ji] to Ria c 2.11 Add -sum_j (X+Y)ja [(A+B)(X+Y)ji] to Ria
c c
@ -546,11 +545,21 @@ c
c 2. Done (X+Y) and (X-Y) contributions c 2. Done (X+Y) and (X-Y) contributions
c c
cDEBUG cDEBUG
c if (tddft_grad_util_print('tddft grad r',print_debug)) then if (oprint) then
c oroot = ga_nodeid().eq.0 oroot = ga_nodeid().eq.0
c if (oroot) write(LuOut,*)'DEBUG B: tddft_grad_comp_r: R' if (oroot) write(LuOut,*)'DEBUG B: tddft_grad_comp_r: R_x'
c call tddft_grad_print_array(ipol,nroot,g_r,dble(ipol)) call tddft_grad_print_array(ipol,nroot,g_r_x,dble(ipol))
c endif call ga_add(1d0,g_r_x(1),1d0,g_r_org(1),g_r_org(1))
g_r(1)=g_r_org(1)
if (.not.ga_destroy(g_r_x(1)))
+ call errquit(pname//'failed to destroy grx',1,GA_ERR)
if(ipol.eq.2) then
call ga_add(1d0,g_r_x(2),1d0,g_r_org(2),g_r_org(2))
g_r(2)=g_r_org(2)
if (.not.ga_destroy(g_r_x(2)))
+ call errquit(pname//'failed to destroy grx',2,GA_ERR)
endif
endif
cDEBUG cDEBUG
c c
c 3. Do the Gxc contributions c 3. Do the Gxc contributions
@ -664,14 +673,14 @@ c
enddo enddo
call ga_sync() call ga_sync()
cDEBUG cDEBUG
c if (tddft_grad_util_print('tddft grad r',print_debug)) then if (oprint) then
c oroot = ga_nodeid().eq.0 oroot = ga_nodeid().eq.0
c if (oroot) write(LuOut,*)'DEBUG C: tddft_grad_comp_r: den' if (oroot) write(LuOut,*)'DEBUG C: tddft_grad_comp_r: den'
c call tddft_grad_print_array(ipol,nroot,int_mb(k_den2), call tddft_grad_print_array(ipol,nroot,int_mb(k_den2),
c + dble(ipol)) + dble(ipol))
c call tddft_grad_print_array(ipol,nroot,int_mb(k_den2+1), call tddft_grad_print_array(ipol,nroot,int_mb(k_den2+1),
c + dble(ipol)) + dble(ipol))
c endif endif
cDEBUG cDEBUG
c Daniel (1-10-13): For a single restricted root ngxc = 1 and there are 2 c Daniel (1-10-13): For a single restricted root ngxc = 1 and there are 2
c density matrices fed to fock_xc, the GS density matrix D and the c density matrices fed to fock_xc, the GS density matrix D and the
@ -689,7 +698,7 @@ c fock_xc.
+ int_mb(k_gxc), Exc, ipol, .false.) + int_mb(k_gxc), Exc, ipol, .false.)
call ga_sync() call ga_sync()
c DEBUG c DEBUG
if (tddft_grad_util_print('tddft grad r',print_debug)) then if (oprint) then
oroot = ga_nodeid().eq.0 oroot = ga_nodeid().eq.0
if (oroot) write(LuOut,*)'DEBUG: '//pname//'gxc' if (oroot) write(LuOut,*)'DEBUG: '//pname//'gxc'
call tddft_grad_print_array(ipol,nroot,int_mb(k_gxc), call tddft_grad_print_array(ipol,nroot,int_mb(k_gxc),
@ -734,9 +743,9 @@ c
endif ! xc_gotxc() endif ! xc_gotxc()
c c
c Debug print c Debug print
if (tddft_grad_util_print('tddft grad r',print_debug)) then if (oprint) then
oroot = ga_nodeid().eq.0 oroot = ga_nodeid().eq.0
if (oroot) write(LuOut,*)'DEBUG: '//pname//'R' if (oroot) write(LuOut,*)'DEBUG: '//pname//'R_all'
call tddft_grad_print_array(ipol,nroot,g_r,dble(ipol)) call tddft_grad_print_array(ipol,nroot,g_r,dble(ipol))
endif endif
c c

View file

@ -147,7 +147,7 @@ c (X-Y)ias(X-Y)ibs
c c
enddo ! ip = 1, ipol enddo ! ip = 1, ipol
c c
if (tddft_grad_util_print('tddft grad t',print_debug)) then if (util_print('tddft grad t',print_debug)) then
oroot = ga_nodeid().eq.0 oroot = ga_nodeid().eq.0
if (oroot) write(LuOut,*)'DEBUG: '//pname//'T' if (oroot) write(LuOut,*)'DEBUG: '//pname//'T'
call tddft_grad_print_array(ipol,nroot,g_tp,dble(ipol)) call tddft_grad_print_array(ipol,nroot,g_tp,dble(ipol))

View file

@ -141,7 +141,8 @@ c
parameter (oskel=.false.) parameter (oskel=.false.)
double precision Exc(2) ! Exchange-correlation energy double precision Exc(2) ! Exchange-correlation energy
c c
logical tdaloc logical tdaloc, tddft_grad_tdaloc
external tddft_grad_tdaloc
logical doitw,doitz logical doitw,doitz
logical doitxpy1,doitxpy2 logical doitxpy1,doitxpy2
logical doitxmy1,doitxmy2 logical doitxmy1,doitxmy2
@ -599,7 +600,7 @@ c Daniel (2-12-13): We need to set triplet here for fock_xc.
+ int_mb(k_gxc), Exc, ipol, .false.) + int_mb(k_gxc), Exc, ipol, .false.)
call ga_sync() call ga_sync()
c DEBUG c DEBUG
if (tddft_grad_util_print('tddft grad w',print_debug)) then if (util_print('tddft grad w',print_debug)) then
oroot = ga_nodeid().eq.0 oroot = ga_nodeid().eq.0
if (oroot) write(LuOut,*)'DEBUG: '//pname//'gxc' if (oroot) write(LuOut,*)'DEBUG: '//pname//'gxc'
call tddft_grad_print_array(ipol,nroots,int_mb(k_gxc), call tddft_grad_print_array(ipol,nroots,int_mb(k_gxc),
@ -746,29 +747,7 @@ c
c c
c - Compute (A+B)X, (A-B)X, (A+B)Y and (A-B)Y c - Compute (A+B)X, (A-B)X, (A+B)Y and (A-B)Y
c c
c Daniel (1-7-13): We manipulate the code here because the tdaloc=tddft_grad_tdaloc(rtdb,tda,lhashf)
c R vector has the same number of terms for RPA and CIS. This is a
c consequence of (X-Y) = X. It might be a good idea to avoid doing this
c part for the Y vector since Y = 0. Note that the coupling matrix
c expressions H^+[V] and H^-[V] can both be nonzero for CIS, so it isn't
c okay to skip the anti-symmetric part in the tddft_nga_cont routine.
c What CIS does is makes the Y vector contribution zero in the following
c routines.
c Daniel (2-8-13): Set the local TDA variable so that we don't change
c the global one.
if (lhashf) then
if (tda) then
tdaloc = .false. ! For CIS and TDDFT/TDA (hybrid) calculations
else
tdaloc = .false. ! For RPA and TDDFT (hybrid) calculations
endif
else
if (tda) then
tdaloc = .true. ! For TDDFT/TDA (pure) calculations
else
tdaloc = .false. ! For TDDFT (pure) calculations
endif
endif
call tddft_nga_cont(rtdb,ihdl_geom,ihdl_bfao,g_x,g_apbx,g_ambx, call tddft_nga_cont(rtdb,ihdl_geom,ihdl_bfao,g_x,g_apbx,g_ambx,
+ nao,ipol,tol2e,tdaloc,oskel,kfac,lhashf,otriplet,nroots,iwhich, + nao,ipol,tol2e,tdaloc,oskel,kfac,lhashf,otriplet,nroots,iwhich,
+ lhascd) + lhascd)
@ -1190,7 +1169,7 @@ c
enddo enddo
call ga_sync() call ga_sync()
c c
if (tddft_grad_util_print('tddft grad w',print_debug)) then if (util_print('tddft grad w',print_debug)) then
oroot = ga_nodeid().eq.0 oroot = ga_nodeid().eq.0
if (oroot) write(LuOut,*)'DEBUG: '//pname//'W' if (oroot) write(LuOut,*)'DEBUG: '//pname//'W'
call tddft_grad_print_array(ipol,nroots,g_w,dble(ipol)) call tddft_grad_print_array(ipol,nroots,g_w,dble(ipol))

View file

@ -60,7 +60,6 @@ c
c c
logical odiff,oprint logical odiff,oprint
parameter (odiff=.true.) parameter (odiff=.true.)
parameter (oprint=.true.)
c c
c Input: c Input:
c c
@ -124,35 +123,20 @@ c
logical oroot logical oroot
c c
character*32 pname character*32 pname
logical tdaloc logical tdaloc, tddft_grad_tdaloc
external tddft_grad_tdaloc
logical oprint_debug
c c
pname= "tddft_grad_solve: " pname= "tddft_grad_solve: "
oprint=util_print('tddft_grad_solve',print_medium)
oprint_debug=util_print('tddft_grad_solvecphf',print_debug)
c c
c Initialize the common block for tddft_grad_solve_product and c Initialize the common block for tddft_grad_solve_product and
c tddft_grad_solve_precond c tddft_grad_solve_precond
c c
oroot = ga_nodeid().eq.0 oroot = ga_nodeid().eq.0
c c
c Daniel (1-5-13): For a CIS calculation, we still need to solve the tdaloc=tddft_grad_tdaloc(rtdb,tda,lhashf)
c full Z vector equation (i.e. we need to have the equation solved when
c B =/= 0). This is confirmed by running an RPA calculation with B = 0,
c since there were no further modifications beyond making B = 0 for
c that formulation of the linear response equations and you obtain the
c correct answer for the CIS gradients that way.
c
if (lhashf) then
if (tda) then
tdaloc = .false. ! For CIS calculations
else
tdaloc = .false. ! For RPA calculations
endif
else
if (tda) then
tdaloc = .true. ! For TDDFT/TDA calculations
else
tdaloc = .false. ! For TDDFT calculations
endif
endif
c End test c End test
tdg_tol2e = tol2e tdg_tol2e = tol2e
tdg_kfac = kfac tdg_kfac = kfac
@ -177,7 +161,6 @@ c End test
tdg_g_mo(1) = g_mo(1) tdg_g_mo(1) = g_mo(1)
tdg_g_mo(2) = g_mo(2) tdg_g_mo(2) = g_mo(2)
tdg_e_mo = iptr_mo_e tdg_e_mo = iptr_mo_e
c tdg_tda = tda
tdg_tda = tdaloc tdg_tda = tdaloc
tdg_oskel = oskel tdg_oskel = oskel
tdg_lhashf = lhashf tdg_lhashf = lhashf
@ -224,6 +207,14 @@ c
call ga_copy(g_b,g_x) call ga_copy(g_b,g_x)
call tddft_grad_solve_precond(g_x,0.0d0) call tddft_grad_solve_precond(g_x,0.0d0)
endif endif
if(oprint_debug) then
if(oroot) write(luout,*) ' LHS'
call util_flush(luout)
call ga_print(g_x)
if(oroot) write(luout,*) ' RHS'
call util_flush(luout)
call ga_print(g_b)
endif
c c
call ga_lkain(rtdb,g_x,g_b,tddft_grad_solve_product, call ga_lkain(rtdb,g_x,g_b,tddft_grad_solve_product,
+ tddft_grad_solve_precond,solve_thresh, + tddft_grad_solve_precond,solve_thresh,
@ -254,7 +245,7 @@ c
if (.not.ga_destroy(g_x)) if (.not.ga_destroy(g_x))
+ call errquit(pname//'failed to destroy g_x',0, GA_ERR) + call errquit(pname//'failed to destroy g_x',0, GA_ERR)
c c
if (tddft_grad_util_print('tddft grad z',print_debug)) then if (util_print('tddft grad z',print_debug)) then
if (oroot) write(LuOut,*)'DEBUG: '//pname//'Z' if (oroot) write(LuOut,*)'DEBUG: '//pname//'Z'
call tddft_grad_print_array(ipol,nroots,g_z,dble(ipol)) call tddft_grad_print_array(ipol,nroots,g_z,dble(ipol))
endif endif
@ -266,4 +257,41 @@ c Reset fock_xc:triplet here for restricted triplet calculations
endif endif
c c
end end
c $Id$ c We manipulate the code here because the
c R vector has the same number of terms for RPA and CIS. This is a
c consequence of (X-Y) = X. It might be a good idea to avoid doing this
c part for the Y vector since Y = 0. Note that the coupling matrix
c expressions H^+[V] and H^-[V] can both be nonzero for CIS, so it isn't
c okay to skip the anti-symmetric part in the tddft_nga_cont routine.
c What CIS does is makes the Y vector contribution zero in the following
c routines.
c Set the local TDA variable so that we don't change
c the global one.
logical function tddft_grad_tdaloc(rtdb,tda,lhashf)
implicit none
#include "rtdb.fh"
#include "mafdecls.fh"
integer rtdb
logical tda
logical lhashf
c
logical tdaloc_rtdb
c
if (lhashf) then
if (tda) then
tddft_grad_tdaloc = .false. ! For CIS calculations
else
tddft_grad_tdaloc = .false. ! For RPA calculations
endif
else
if (tda) then
cold tddft_grad_tdaloc = .true. ! For TDDFT/TDA calculations
tddft_grad_tdaloc = .false. ! For TDDFT/TDA calculations
else
tddft_grad_tdaloc = .false. ! For TDDFT calculations
endif
endif
if (rtdb_get(rtdb,'tddft:tdaloc',mt_log,1,tdaloc_rtdb))
+ tddft_grad_tdaloc=tdaloc_rtdb
return
end

View file

@ -168,6 +168,9 @@ c Get the start times
c c
c Init pstat c Init pstat
call dft_pstat_init(rtdb) call dft_pstat_init(rtdb)
c
call util_print_push
call util_print_rtdb_load(rtdb,'tddft')
c c
c Print header c Print header
if (oroot) call tddft_grad_print_header(luout) if (oroot) call tddft_grad_print_header(luout)
@ -225,7 +228,7 @@ c Print calculation information
c c
c Print start times c Print start times
if (oroot) then if (oroot) then
if (tddft_grad_util_print('tddft grad time',print_default)) then if (util_print('tddft grad time',print_default)) then
write(luout,*) write(luout,*)
write(luout,"(' Start at time cpu:',f11.1,'s wall:',f11.1, write(luout,"(' Start at time cpu:',f11.1,'s wall:',f11.1,
+ 's')")-tddft_grad_cpu,-tddft_grad_wall + 's')")-tddft_grad_cpu,-tddft_grad_wall
@ -435,7 +438,7 @@ c Print end times and wrap up
tddft_grad_cpu = tddft_grad_cpu + util_cpusec() tddft_grad_cpu = tddft_grad_cpu + util_cpusec()
tddft_grad_wall = tddft_grad_wall + util_wallsec() tddft_grad_wall = tddft_grad_wall + util_wallsec()
if (oroot) then if (oroot) then
if (tddft_grad_util_print('tddft grad time',print_default)) then if (util_print('tddft grad time',print_default)) then
write(LuOut,*) write(LuOut,*)
write(LuOut,"(' TDDFT Gradient time cpu:',f11.1,'s wall:', write(LuOut,"(' TDDFT Gradient time cpu:',f11.1,'s wall:',
+ f11.1,'s')")tddft_grad_cpu,tddft_grad_wall + f11.1,'s')")tddft_grad_cpu,tddft_grad_wall
@ -496,6 +499,7 @@ c
c <-- MN solvation models c <-- MN solvation models
c c
call dft_pstat_print call dft_pstat_print
call util_print_pop
return return
end end
c $Id$ c $Id$

View file

@ -11,7 +11,14 @@
LIBRARY = libnwpw.a LIBRARY = libnwpw.a
$(info USE_OPENMP $(origin USE_OPENMP))
ifdef USE_OPENMP
# QA issues
override undefine USE_OPENMP
endif
$(info USE_OPENMP $(origin USE_OPENMP))
LIB_DEFINES = LIB_DEFINES =

View file

@ -42,9 +42,6 @@ endif
ifeq ($(USE_MPIF),y) ifeq ($(USE_MPIF),y)
LIB_DEFINES += -DMPI LIB_DEFINES += -DMPI
ifneq ($(MPI_INCLUDE),)
LIB_INCLUDES += $(patsubst -I-I%,-I%,-I$(MPI_INCLUDE))
endif
else else
LIB_DEFINES += -DTCGMSG LIB_DEFINES += -DTCGMSG
endif endif

View file

@ -47,9 +47,6 @@ endif
ifeq ($(USE_MPIF),y) ifeq ($(USE_MPIF),y)
LIB_DEFINES += -DMPI LIB_DEFINES += -DMPI
ifneq ($(MPI_INCLUDE),)
LIB_INCLUDES += $(patsubst -I-I%,-I%,-I$(MPI_INCLUDE))
endif
else else
LIB_DEFINES += -DTCGMSG LIB_DEFINES += -DTCGMSG
endif endif

View file

@ -43,9 +43,6 @@ endif
ifeq ($(USE_MPIF),y) ifeq ($(USE_MPIF),y)
LIB_DEFINES += -DMPI LIB_DEFINES += -DMPI
ifneq ($(MPI_INCLUDE),)
LIB_INCLUDES += $(patsubst -I-I%,-I%,-I$(MPI_INCLUDE))
endif
else else
LIB_DEFINES += -DTCGMSG LIB_DEFINES += -DTCGMSG
endif endif

View file

@ -43,9 +43,6 @@ endif
ifeq ($(USE_MPIF),y) ifeq ($(USE_MPIF),y)
LIB_DEFINES += -DMPI LIB_DEFINES += -DMPI
ifneq ($(MPI_INCLUDE),)
LIB_INCLUDES += $(patsubst -I-I%,-I%,-I$(MPI_INCLUDE))
endif
else else
LIB_DEFINES += -DTCGMSG LIB_DEFINES += -DTCGMSG
endif endif

View file

@ -41,9 +41,6 @@ endif
ifeq ($(USE_MPIF),y) ifeq ($(USE_MPIF),y)
LIB_DEFINES += -DMPI LIB_DEFINES += -DMPI
ifneq ($(MPI_INCLUDE),)
LIB_INCLUDES += $(patsubst -I-I%,-I%,-I$(MPI_INCLUDE))
endif
else else
USES_BLAS += D3dB-tcgmsg.F USES_BLAS += D3dB-tcgmsg.F
LIB_DEFINES += -DTCGMSG LIB_DEFINES += -DTCGMSG

View file

@ -43,9 +43,6 @@ endif
ifeq ($(USE_MPIF),y) ifeq ($(USE_MPIF),y)
LIB_DEFINES += -DMPI LIB_DEFINES += -DMPI
ifneq ($(MPI_INCLUDE),)
LIB_INCLUDES += $(patsubst -I-I%,-I%,-I$(MPI_INCLUDE))
endif
else else
LIB_DEFINES += -DTCGMSG LIB_DEFINES += -DTCGMSG
endif endif

View file

@ -41,9 +41,6 @@ endif
ifeq ($(USE_MPIF),y) ifeq ($(USE_MPIF),y)
LIB_DEFINES += -DMPI LIB_DEFINES += -DMPI
ifneq ($(MPI_INCLUDE),)
LIB_INCLUDES += $(patsubst -I-I%,-I%,-I$(MPI_INCLUDE))
endif
else else
LIB_DEFINES += -DTCGMSG LIB_DEFINES += -DTCGMSG
endif endif

View file

@ -40,9 +40,6 @@ include ../../../config/makelib.h
ifeq ($(USE_MPIF),y) ifeq ($(USE_MPIF),y)
LIB_DEFINES += -DMPI LIB_DEFINES += -DMPI
ifneq ($(MPI_INCLUDE),)
LIB_INCLUDES += $(patsubst -I-I%,-I%,-I$(MPI_INCLUDE))
endif
ifeq ($(DEV_GA),y) ifeq ($(DEV_GA),y)
LIB_DEFINES += -DGA_DEV LIB_DEFINES += -DGA_DEV
endif endif

View file

@ -5,14 +5,24 @@ do_exit(){
echo ' ' echo ' '
exit 1 exit 1
} }
rm -f dftd3.f nwpwxc_vdw3a.F check_patch(){
export PATH=`pwd`:$PATH
if [[ ! -x "$(command -v patch)" ]]; then if [[ ! -x "$(command -v patch)" ]]; then
#try to download busybox for x86_64 linux #try to download busybox for x86_64 linux
if [[ $(uname -s) == "Linux" ]] && [[ $(uname -m) == "x86_64" ]] ; then if [[ $(uname -s) == "Linux" ]] ; then
echo "patch command missing" echo "patch command missing"
echo "downloading busybox to use patch command" echo "downloading busybox to use patch command"
wget https://www.busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-x86_64 -O patch if [[ $(uname -m) == "x86_64" ]] ; then
barch=x86_64
elif [[ $(uname -m) == "aarch64" ]] ; then
barch=armv8l
elif [[ $(uname -m) == "ppc64" ]] ; then
barch=powerpc64
elif [[ $(echo armv6l| awk ' /arm*/ { print "arm"}') == "arm" ]] ; then
barch=armv5l
else
do_exit
fi
wget https://www.busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-$barch -O patch
if [ "$?" != 0 ]; then if [ "$?" != 0 ]; then
do_exit do_exit
else else
@ -22,7 +32,13 @@ if [[ ! -x "$(command -v patch)" ]]; then
do_exit do_exit
fi fi
fi fi
URL1="https://www.chemie.uni-bonn.de/pctc/mulliken-center/software/dft-d3/" }
check_patch
rm -f dftd3.f nwpwxc_vdw3a.F
export PATH=`pwd`:$PATH
#URL1="https://www.chemie.uni-bonn.de/pctc/mulliken-center/software/dft-d3/"
URL1="https://www.chemiebn.uni-bonn.de/pctc/mulliken-center/software/dft-d3/"
URL2="https://web.archive.org/web/20210527062154if_/https://www.chemie.uni-bonn.de/pctc/mulliken-center/software/dft-d3/" URL2="https://web.archive.org/web/20210527062154if_/https://www.chemie.uni-bonn.de/pctc/mulliken-center/software/dft-d3/"
declare -a urls=("$URL1" "$URL1" "$URL1" "$URL2" "$URL2") declare -a urls=("$URL1" "$URL1" "$URL1" "$URL2" "$URL2")
TGZ=dftd3.tgz TGZ=dftd3.tgz
@ -47,7 +63,7 @@ else
echo chchc ${COM1} ${urls[$tries]}/"$TGZ" ${COM2} echo chchc ${COM1} ${urls[$tries]}/"$TGZ" ${COM2}
tries=1 ; until [ "$tries" -ge 5 ] ; do tries=1 ; until [ "$tries" -ge 5 ] ; do
${COM1} ${urls[$tries]}/"$TGZ" ${COM2} && break ${COM1} ${urls[$tries]}/"$TGZ" ${COM2} && break
tries=$((tries+1)) ; echo attempt no. $tries ; sleep 5 ; done tries=$((tries+1)) ; echo attempt no. $tries ; sleep 9 ; done
fi fi
if [[ ! -f "$TGZ" ]]; then if [[ ! -f "$TGZ" ]]; then
echo "download failed" echo "download failed"

View file

@ -1,12 +1,8 @@
#
# $Id$
#
all: ; texi2dvi peigs.texi all: ; texi2pdf peigs.texi
dvips peigs.dvi
#.EXPORT_ALL_VARIABLES: .EXPORT_ALL_VARIABLES:
.PHONY : clean .PHONY : clean

Binary file not shown.

File diff suppressed because it is too large Load diff

3943
src/peigs/doc/peigs.texi Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
# $Id$ # $Id$
rimp2-grad.dvi dvi: rimp2-grad.tex changebar.sty subeqnarray.sty geometry.sty rimp2-grad.dvi dvi: rimp2-grad.tex
latex rimp2-grad latex rimp2-grad
latex rimp2-grad latex rimp2-grad

View file

@ -2,14 +2,3 @@ This directory contains
rimp2-grad.tex rimp2-grad.tex
RI-MP2 frozen core gradient equations, as a superset of Robert RI-MP2 frozen core gradient equations, as a superset of Robert
Harrison's writeup of the exact MP2 frozen core gradient. Harrison's writeup of the exact MP2 frozen core gradient.
changebar.bug, changebar.dtx, changebar.ins, chbar.sh, manifest.txt
Standard latex changebar package (from CTAN)
geometry.sty
Standard latex page geometry package (from CTAN)
subeqnarray.dtx, subeqnarray.ins
Standard latex subequation array package (from CTAN)
Eventually, these standard styles from CTAN

View file

@ -369,7 +369,8 @@ c
endif endif
if(.not. rtdb_get(rtdb,'task:gradient',MT_DBL, if(.not. rtdb_get(rtdb,'task:gradient',MT_DBL,
& rank_hess,dbl_mb(k_gradm))) & rank_hess,dbl_mb(k_gradm)))
& call errquit('stpr_gen_hess_at: rtdb_get failed',38) & call errquit('stpr_gen_hess_at: rtdb_get failed',38,
R RTDB_ERR)
if(.not. rtdb_get(rtdb,'task:dipole',mt_dbl, if(.not. rtdb_get(rtdb,'task:dipole',mt_dbl,
& 3,mdipole)) dipole_okay = .false. & 3,mdipole)) dipole_okay = .false.
endif endif

View file

@ -660,6 +660,7 @@ c
double precision c(3,mx_atm) double precision c(3,mx_atm)
double precision ctmp(3,mx_atm) double precision ctmp(3,mx_atm)
logical allbq logical allbq
integer lenb
c c
logical bsse_rtdb_store logical bsse_rtdb_store
external bsse_rtdb_store external bsse_rtdb_store
@ -687,14 +688,19 @@ c
c c
c initialize all centers as bqX c initialize all centers as bqX
c c
tag_new(l) = 'bq' // tag_old(l) lenb=inp_strlen(tag_old(l))
q_new(l) = 0.0d0 tag_new(l)= ' '
tag_new(l)(1:lenb+2) = 'bq' // tag_old(l)
T (1:lenb)
if(lenb.lt.14) tag_new(l)(lenb+3:lenb+3)=' '
q_new(l) = 0.0d0
c c
do k = 1, mon_atm(j) do k = 1, mon_atm(j)
c c
c only do bsse with atoms c only do bsse with atoms
c c
is_atm = geom_tag_to_element(tag_old(l),symbol,element,atn) is_atm = geom_tag_to_element(tag_old(l),symbol,
E element,atn)
if ((.not. is_atm) .and. symbol.ne.'bq') if ((.not. is_atm) .and. symbol.ne.'bq')
$ call errquit('bsse_create_geom: not atom or bq', $ call errquit('bsse_create_geom: not atom or bq',
$ 0,GEOM_ERR) $ 0,GEOM_ERR)
@ -715,7 +721,8 @@ c Sort out the masses of the various centers
c c
allbq=.true. allbq=.true.
do l = 1, natoms do l = 1, natoms
is_atm = geom_tag_to_element(tag_new(l),symbol,element,atn) is_atm = geom_tag_to_element(tag_new(l),
$ symbol,element,atn)
if(symbol.ne.'bq') allbq=.false. if(symbol.ne.'bq') allbq=.false.
if ((.not. is_atm) .and. symbol.ne.'bq') if ((.not. is_atm) .and. symbol.ne.'bq')
$ call errquit('bsse_create_geom: not atom or bq', $ call errquit('bsse_create_geom: not atom or bq',
@ -979,15 +986,12 @@ c-----------------------------------------------------------------------
bsse_error = 0.0d0 bsse_error = 0.0d0
i = 1 do j = 1, nmon,2
do j = 1, nmon m_error(j) = mon_energy(j) - mon_energy(j+1)
m_error(j) = mon_energy(i) - mon_energy(i+1)
bsse_error = bsse_error + m_error(j) bsse_error = bsse_error + m_error(j)
i= i + 2
enddo enddo
final_spr_energy = spr_energy + bsse_error final_spr_energy = spr_energy + bsse_error
c c
@ -1102,8 +1106,6 @@ c
integer rtdb ![input] integer rtdb ![input]
c c
integer j,i,l,k,n integer j,i,l,k,n
integer n_cart
integer n_cartmon
integer geom integer geom
c c
character*255 vec_dbi, vec_dbo character*255 vec_dbi, vec_dbo
@ -1228,12 +1230,6 @@ c: evaluate gradient
$ call $ call
$ errquit('bsse_gradient: error calling task gradient spr', $ errquit('bsse_gradient: error calling task gradient spr',
$ 0,UNKNOWN_ERR) $ 0,UNKNOWN_ERR)
if (mod(i,2).eq.0) then
n_cartmon=n_cart
else
n_cartmon=3*mon_atm(j)
endif
c c
c: mix monomers grads with supermolecule grad c: mix monomers grads with supermolecule grad
if (mod(i,2).eq.0) then if (mod(i,2).eq.0) then
@ -1263,18 +1259,14 @@ c
c c
enddo enddo
c----------------------------------------------------------------------- c-----------------------------------------------------------------------
c Evaluate supermolecular energy free of BSSE c Evaluate supermolecular energy free of BSSE
c----------------------------------------------------------------------- c-----------------------------------------------------------------------
bsse_error = 0.0d0 bsse_error = 0.0d0
i = 1 do j = 1, nmon,2
bsse_error = bsse_error+(mon_energy(j) - mon_energy(j+1))
do j = 1, nmon
bsse_error = bsse_error + mon_energy(i) - mon_energy(i+1)
i= i + 2
enddo enddo
c c
@ -1605,13 +1597,10 @@ c
c c
bsse_error = 0.0d0 bsse_error = 0.0d0
i = 1 do j = 1, nmon,2
do j = 1, nmon m_error(j) = mon_energy(j) - mon_energy(j+1)
m_error(j) = mon_energy(i) - mon_energy(i+1)
bsse_error = bsse_error + m_error(j) bsse_error = bsse_error + m_error(j)
i= i + 2
enddo enddo
c c

View file

@ -1136,12 +1136,17 @@
! TCE_CUDA Number of CUDA devices per node ! TCE_CUDA Number of CUDA devices per node
! !
else if (inp_compare(.false.,test,'cuda')) then else if (inp_compare(.false.,test,'cuda')) then
#if defined(TCE_CUDA) || defined(TCE_HIP)
if (.not.inp_i(icuda)) if (.not.inp_i(icuda))
1 call errquit('tce_input: no icuda',0,INPUT_ERR) 1 call errquit('tce_input: no icuda',0,INPUT_ERR)
if (.not.rtdb_put(rtdb,'tce:cuda',mt_int,1,icuda)) if (.not.rtdb_put(rtdb,'tce:cuda',mt_int,1,icuda))
1 call errquit('tce_input: failed writing to rtdb',0, 1 call errquit('tce_input: failed writing to rtdb',0,
2 RTDB_ERR) 2 RTDB_ERR)
#else
call errquit('cuda option needs TCE_CUDA compiled code',
A 0, INPUT_ERR)
#endif
! !
! MAXITER (the maximum number of Davidson iterations) ! MAXITER (the maximum number of Davidson iterations)
! !

View file

@ -318,14 +318,14 @@ endif # SOCKETS
ifdef USE_MPI ifdef USE_MPI
MPI_COMBINED = MPI_COMBINED =
ifneq ($(MPI_INCLUDE),) ifneq ($(NWMPI_INCLUDE),)
MPI_COMBINED += $(patsubst -I-I%,-I%,-I${MPI_INCLUDE}) MPI_COMBINED += $(patsubst -I-I%,-I%,-I${NWMPI_INCLUDE})
endif endif
ifneq ($(MPI_LIB),) ifneq ($(NWMPI_LIB),)
MPI_COMBINED += $(patsubst -L-L%,-L%,-L${MPI_LIB}) MPI_COMBINED += $(patsubst -L-L%,-L%,-L${NWMPI_LIB})
endif endif
ifneq ($(LIBMPI),) ifneq ($(NWLIBMPI),)
MPI_COMBINED += $(LIBMPI) MPI_COMBINED += $(NWLIBMPI)
ifeq ($(ARMCI_NETWORK),ARMCI) ifeq ($(ARMCI_NETWORK),ARMCI)
MPI_COMBINED += -lpthread MPI_COMBINED += -lpthread
endif endif
@ -676,6 +676,10 @@ ifeq ($(FC),$(findstring $(FC),scorep scorep-wrapper scorep-gfortran scorep-mpif
#fix for configure or cmake #fix for configure or cmake
MAYBE_HOST += SCOREP_WRAPPER=OFF MAYBE_HOST += SCOREP_WRAPPER=OFF
endif endif
ifneq ($(V),1)
MAYBE_HOST += -q --enable-silent-rules
MAKE= make V=0
endif
BUILDDIR = build BUILDDIR = build
INSTALLDIR = install INSTALLDIR = install
CONFIGURE_PATH = ../$(GA_DIR)/configure CONFIGURE_PATH = ../$(GA_DIR)/configure
@ -721,6 +725,9 @@ $(BUILDDIR)/config.status: $(GA_DIR)/configure $(STAMP_FC) $(STAMP_CC) $(STAMP_D
@echo '*** Configuring Parallel Tools ****' @echo '*** Configuring Parallel Tools ****'
@echo '' @echo ''
@(test -d $(BUILDDIR)) || mkdir $(BUILDDIR); @(test -d $(BUILDDIR)) || mkdir $(BUILDDIR);
@echo ' '
@if [ "$V" != "1" ]; then echo '*** autoconf output redirected to config.log ****' ; echo '*** type make V=1 to get verbose output ***'; fi
@echo ' '
@(cd $(BUILDDIR) && echo $(CONFIGURE_PATH) $(CONFIGURE_ARGS) && $(CONFIGURE_PATH) $(CONFIGURE_ARGS)) || exit 1 @(cd $(BUILDDIR) && echo $(CONFIGURE_PATH) $(CONFIGURE_ARGS) && $(CONFIGURE_PATH) $(CONFIGURE_ARGS)) || exit 1
$(GA_DIR)/Makefile.in: $(GA_DIR)/Makefile.in:
@echo "No Global Arrays found: Attempting running ./get-tools" @echo "No Global Arrays found: Attempting running ./get-tools"

41
src/tools/gamalloc_patch.sh Executable file
View file

@ -0,0 +1,41 @@
#!/usr/bin/env bash
rm -f gamalloc.patch
cat > gamalloc.patch <<EOF
--- $1/global/src/ga_malloc.c
+++ $1/global/src/ga_malloc.c
@@ -8,7 +8,7 @@
#include "globalp.h"
#include "ga-papi.h"
#include "ga-wapi.h"
-#define GA_MAXMEM_AVAIL ( ( (long)1 << (8*sizeof(Integer)-2) ) -1)
+#define GA_MAXMEM_AVAIL ( ( (size_t)1 << (8*sizeof(Integer)-2) ) -1)
#define CHECK 0
#define ALIGNMENT sizeof(DoubleComplex)
@@ -28,7 +28,7 @@
void* ga_malloc(Integer nelem, int type, char *name)
{
void *ptr;
- unsigned long addr;
+ size_t addr;
Integer handle, adjust=0, bytes, item_size=GAsizeofM(pnga_type_f2c(type));
Integer extra;
@@ -45,11 +45,11 @@
if(ga_usesMA) { /* Uses Memory Allocator (MA) */
if(MA_push_stack(type,nelem,name,&handle)) MA_get_pointer(handle,&ptr);
else pnga_error("ga_malloc: MA_push_stack failed",0);
- addr = (unsigned long)ptr;
+ addr = (size_t)ptr;
}
else { /* else, using external memory allocator */
bytes = nelem*item_size;
- addr = (unsigned long)(*ga_ext_alloc)(
+ addr = (size_t)(*ga_ext_alloc)(
(size_t)bytes, (int)item_size, name);
}
EOF
patch -p0 -s -N < gamalloc.patch
echo gamalloc.patch applied

View file

@ -93,8 +93,8 @@ then
if [ ! -f ga-"$GA_RELEASE_NO".tar.gz ]; then if [ ! -f ga-"$GA_RELEASE_NO".tar.gz ]; then
if test "x$TAR_URL" = x if test "x$TAR_URL" = x
then then
# TAR_URL=https://github.com/GlobalArrays/ga/releases/download/v"$GA_RELEASE_NO"/ga-"$GA_RELEASE_NO".tar.gz TAR_URL=https://github.com/GlobalArrays/ga/releases/download/v"$GA_RELEASE_NO"/ga-"$GA_RELEASE_NO".tar.gz
TAR_URL=https://github.com/edoapra/ga/releases/download/v"$GA_RELEASE_NO"/ga-"$GA_RELEASE_NO".tar.gz # TAR_URL=https://github.com/edoapra/ga/releases/download/v"$GA_RELEASE_NO"/ga-"$GA_RELEASE_NO".tar.gz
# TAR_URL=https://github.com/edoapra/ga/releases/download/v"$GA_RELEASE_NO"/ga-5.8.2.v3.tar.gz # TAR_URL=https://github.com/edoapra/ga/releases/download/v"$GA_RELEASE_NO"/ga-5.8.2.v3.tar.gz
# TAR_URL=https://github.com/GlobalArrays/ga/archive/refs/tags/v"$GA_RELEASE_NO".tar.gz # TAR_URL=https://github.com/GlobalArrays/ga/archive/refs/tags/v"$GA_RELEASE_NO".tar.gz
# https://github.com/edoapra/ga/releases/download/v5.7.2/ga-5.7.2.tar.gz # https://github.com/edoapra/ga/releases/download/v5.7.2/ga-5.7.2.tar.gz
@ -200,6 +200,14 @@ if [[ -z "${CC}" ]]; then
CC=cc CC=cc
fi fi
GOTMINGW64=` $CC -dM -E - </dev/null 2> /dev/null |grep MINGW64|cut -c21 ` GOTMINGW64=` $CC -dM -E - </dev/null 2> /dev/null |grep MINGW64|cut -c21 `
if [[ -d "ga-5.8.2" ]]; then
if [[ ! -f "ga-5.8.2/patched581" ]]; then
./gamalloc_patch.sh $GA_DIR
./peigstubs_patch.sh $GA_DIR
echo patched
touch ga-5.8.2/patched581
fi
fi
#if [ ! -z "$GOTMINGW64" ] #if [ ! -z "$GOTMINGW64" ]
#then #then
#echo "CC" $CC #echo "CC" $CC
@ -208,19 +216,6 @@ GOTMINGW64=` $CC -dM -E - </dev/null 2> /dev/null |grep MINGW64|cut -c21 `
#./msmpi_patch.sh $GA_DIR #./msmpi_patch.sh $GA_DIR
#./mingw64_patch.sh $GA_DIR #./mingw64_patch.sh $GA_DIR
#fi #fi
#if [[ -d "ga-5.8.2" ]]; then
# if [[ ! -f "ga-5.8.2/patched581" ]]; then
# ./strdup_patch.sh $GA_DIR
# ./nodelist_patch.sh $GA_DIR
# ./nompif_patch.sh $GA_DIR
# ./ptstride_patch.sh $GA_DIR
# ./pt.sh $GA_DIR
# patch -p0 -s -N < ./fujitsu.patch
# patch -p0 -s -N < ./dra_f2c.patch
# echo patched
# touch ga-5.8.2/patched581
# fi
#fi
#patch -p0 -s -N < ./scala1.patch #patch -p0 -s -N < ./scala1.patch
if test -e $GA_DIR/configure if test -e $GA_DIR/configure

View file

@ -158,6 +158,10 @@ function get_mpi_lib ()
outlist="${outlist} ${word}" outlist="${outlist} ${word}"
fi fi
done done
# homebrew hwloc
if pkg-config --exists hwloc; then
outlist="${outlist} $(pkg-config --libs-only-L hwloc 2> /dev/null) -lhwloc"
fi
echo ${outlist} echo ${outlist}
} }
function get_mpi_fortran () function get_mpi_fortran ()

22
src/tools/peigstubs_patch.sh Executable file
View file

@ -0,0 +1,22 @@
#!/usr/bin/env bash
rm -f peigstubs.patch
cat > peigstubs.patch <<EOF
--- $1/global/src/peigstubs.c
+++ $1/global/src/peigstubs.c
@@ -11,9 +11,9 @@
# define gai_diag_ F77_FUNC_(gai_diag,GAI_DIAG)
# define gai_diag_std_ F77_FUNC_(gai_diag_std,GAI_DIAG_STD)
# define gai_diag_reuse_ F77_FUNC_(gai_diag_reuse,GAI_DIAG_REUSE)
-extern gai_diag_(Integer*,Integer*,Integer*,DoublePrecision*);
-extern gai_diag_std_(Integer*,Integer*,DoublePrecision*);
-extern gai_diag_reuse_(Integer*,Integer*,Integer*,Integer*,DoublePrecision*);
+extern void gai_diag_(Integer*,Integer*,Integer*,DoublePrecision*);
+extern void gai_diag_std_(Integer*,Integer*,DoublePrecision*);
+extern void gai_diag_reuse_(Integer*,Integer*,Integer*,Integer*,DoublePrecision*);
# else
# endif
#else
EOF
patch -p0 -s -N < peigstubs.patch
echo strdup.patch applied

View file

@ -148,10 +148,7 @@ endif
ifneq ($(OLD_GA),) ifneq ($(OLD_GA),)
EXTRA_OBJ += ga_zgop.o EXTRA_OBJ += ga_zgop.o
endif endif
#LIB_DEFINES += -I$(MPI_INCLUDE)
ifneq ($(MPI_INCLUDE),)
LIB_INCLUDES += $(patsubst -I-I%,-I%,-I$(MPI_INCLUDE))
endif
ifdef USE_VTUNE ifdef USE_VTUNE
EXTRA_OBJ += vtune_bind.o vtune.o EXTRA_OBJ += vtune_bind.o vtune.o

View file

@ -16,6 +16,9 @@ fi
if test -f "/usr/lib/centos-release"; then if test -f "/usr/lib/centos-release"; then
dist="centos" dist="centos"
fi fi
if [[ $(grep -c fedora /etc/os-release) > 0 ]]; then
dist="fedora"
fi
echo dist is "$dist" echo dist is "$dist"
if [ -z "$DISTR" ] ; then if [ -z "$DISTR" ] ; then
DISTR=$dist DISTR=$dist
@ -43,12 +46,12 @@ echo DISTR is "$DISTR"
else else
mkdir -p ~/mntdmg $IONEAPI_ROOT || true mkdir -p ~/mntdmg $IONEAPI_ROOT || true
cd ~/Downloads cd ~/Downloads
dir_base="18675" dir_base="19080"
dir_hpc="18681" dir_hpc="19086"
base="m_BaseKit_p_2022.2.0.226" base="m_BaseKit_p_2023.0.0.25441"
hpc="m_HPCKit_p_2022.2.0.158" hpc="m_HPCKit_p_2023.0.0.25440"
curl -LJO https://registrationcenter-download.intel.com/akdlm/irc_nas/"$dir_base"/"$base".dmg curl -sS -LJO https://registrationcenter-download.intel.com/akdlm/irc_nas/"$dir_base"/"$base".dmg
curl -LJO https://registrationcenter-download.intel.com/akdlm/irc_nas/"$dir_hpc"/"$hpc".dmg curl -sS -LJO https://registrationcenter-download.intel.com/akdlm/irc_nas/"$dir_hpc"/"$hpc".dmg
echo "installing BaseKit" echo "installing BaseKit"
hdiutil attach "$base".dmg -mountpoint ~/mntdmg -nobrowse hdiutil attach "$base".dmg -mountpoint ~/mntdmg -nobrowse
sudo ~/mntdmg/bootstrapper.app/Contents/MacOS/install.sh -c -s --action install \ sudo ~/mntdmg/bootstrapper.app/Contents/MacOS/install.sh -c -s --action install \
@ -87,138 +90,155 @@ echo DISTR is "$DISTR"
# HOMEBREW_NO_INSTALL_CLEANUP=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install scalapack # HOMEBREW_NO_INSTALL_CLEANUP=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install scalapack
# fi # fi
fi fi
if [[ "$os" == "Linux" ]]; then if [[ "$os" == "Linux" ]]; then
if [[ "$DISTR" == "fedora" ]] || [[ "$DISTR" == "centos" ]] ; then if [[ "$DISTR" == "fedora" ]] || [[ "$DISTR" == "centos" ]] ; then
rpminst=dnf env
if [[ "$DISTR" == "centos" ]] ; then rpminst=dnf
rpminst=yum if [[ "$DISTR" == "centos" ]] ; then
fi rpminst=yum
sudo $rpminst udate; sudo $rpminst -y install perl perl python3-devel time patch openblas-serial64 openmpi-devel cmake gcc-gfortran unzip which make tar bzip2 openssh-clients rsync fi
# module load mpi if [[ "$HOSTNAME" != "fedoraqemuwe40672" ]]; then
if [[ "$MPI_IMPL" == "openmpi" ]]; then sudo $rpminst update; sudo $rpminst -y install perl perl python3-devel time patch cmake gcc-gfortran unzip which make tar bzip2 openssh-clients rsync
sudo $rpminst -y install openmpi-devel sudo $rpminst -y install openblas-serial64 || true
else # module load mpi
echo ready only for openmpi if [[ "$MPI_IMPL" == "openmpi" ]]; then
exit 1 sudo $rpminst -y install openmpi-devel
fi elif [[ "$MPI_IMPL" == "mpich" ]]; then
export PATH=/usr/lib64/"$MPI_IMPL"/bin:$PATH sudo $rpminst -y install mpich mpich-devel
export LD_LIBRARY_PATH=/usr/lib64/"$MPI_IMPL"/lib:$LD_LIBRARY_PATH else
which mpif90 echo ready only for openmpi
mpif90 -show exit 1
else fi
if [[ "$MPI_IMPL" == "openmpi" ]]; then fi
mpi_bin="openmpi-bin" ; mpi_libdev="libopenmpi-dev" scalapack_libdev="libscalapack-openmpi-dev" export PATH=/usr/lib64/"$MPI_IMPL"/bin:$PATH
fi export LD_LIBRARY_PATH=/usr/lib64/"$MPI_IMPL"/lib:$LD_LIBRARY_PATH
if [[ "$MPI_IMPL" == "mpich" ]]; then which mpif90
mpi_bin="mpich" ; mpi_libdev="libmpich-dev" scalapack_libdev="libscalapack-mpich-dev" mpif90 -show
fi else
if [[ "$MPI_IMPL" == "intel" || "$FC" == "ifort" || "$FC" == "ifx" ]]; then if [[ "$MPI_IMPL" == "openmpi" ]]; then
export APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 mpi_bin="openmpi-bin" ; mpi_libdev="libopenmpi-dev" scalapack_libdev="libscalapack-openmpi-dev"
rm -f l_Base*sh l_HP*sh fi
tries=0 ; until [ "$tries" -ge 10 ] ; do \ if [[ "$MPI_IMPL" == "mpich" ]]; then
dir_base="18673" mpi_bin="mpich" ; mpi_libdev="libmpich-dev" scalapack_libdev="libscalapack-mpich-dev"
dir_hpc="18679" fi
base="l_BaseKit_p_2022.2.0.262" if [[ "$MPI_IMPL" == "intel" || "$FC" == "ifort" || "$FC" == "ifx" ]]; then
hpc="l_HPCKit_p_2022.2.0.191" export APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/"$dir_hpc"/"$hpc".sh \ export TERM=dumb
&& wget https://registrationcenter-download.intel.com/akdlm/irc_nas/"$dir_base"/"$base".sh \ rm -f l_Base*sh l_HP*sh
&& break ;\ tries=0 ; until [ "$tries" -ge 10 ] ; do \
tries=$((tries+1)) ; echo attempt no. $tries ; sleep 30 ; done dir_base="19079"
dir_hpc="19084"
base="l_BaseKit_p_2023.0.0.25537_offline"
hpc="l_HPCKit_p_2023.0.0.25400_offline"
wget -nv https://registrationcenter-download.intel.com/akdlm/irc_nas/"$dir_hpc"/"$hpc".sh \
&& wget -nv https://registrationcenter-download.intel.com/akdlm/irc_nas/"$dir_base"/"$base".sh \
&& break ;\
tries=$((tries+1)) ; echo attempt no. $tries ; sleep 30 ; done
if [[ "$MPI_IMPL" == "intel" ]]; then if [[ "$MPI_IMPL" == "intel" ]]; then
mpi_bin=" " ; mpi_libdev=" " scalapack_libdev=" " mpi_bin=" " ; mpi_libdev=" " scalapack_libdev=" "
fi
fi
if [[ "$GITHUB_WORKFLOW" != "NWChem_CI_selfhosted" ]]; then
sudo apt-get update
sudo apt-get -y install software-properties-common
sudo add-apt-repository universe && sudo apt-get update
if [[ "$FC" == "gfortran-11" ]] || [[ "$CC" == "gcc-11" ]]; then
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
pkg_extra+="gcc-11 gfortran-11 g++-11"
fi
if [[ "$USE_LIBXC" == "-1" ]]; then
pkg_extra+=" libxc-dev"
fi
echo pkg to install: gfortran python3-dev make perl python3 rsync "$mpi_libdev" "$mpi_bin" $pkg_extra
tries=0 ; until [ "$tries" -ge 10 ] ; do \
sudo apt-get -y install gfortran python3-dev make perl python3 rsync "$mpi_libdev" "$mpi_bin" $pkg_extra \
&& break ;\
tries=$((tries+1)) ; echo attempt no. $tries ; sleep 30 ; done
fi
if [[ "$FC" == "ifort" ]] || [[ "$FC" == "ifx" ]]; then
sh ./"$base".sh -a -c -s --action remove --install-dir $IONEAPI_ROOT --eula accept
sh ./"$hpc".sh -a -c -s --action remove --install-dir $IONEAPI_ROOT --eula accept
sh ./"$base".sh -a -c -s --action install --components intel.oneapi.lin.mkl.devel --install-dir $IONEAPI_ROOT --eula accept
intel_components="intel.oneapi.lin.ifort-compiler:intel.oneapi.lin.dpcpp-cpp-compiler-pro"
if [[ "$MPI_IMPL" == "intel" ]]; then
intel_components+=":intel.oneapi.lin.mpi.devel"
fi
sh ./"$hpc".sh -a -c -s --action install \
--components "$intel_components" \
--install-dir $IONEAPI_ROOT --eula accept
rm -f ./"$hpc".sh ./"$base".sh
if [[ "$?" != 0 ]]; then
echo "apt-get install failed: exit code " "${?}"
exit 1
fi
source "$IONEAPI_ROOT"/setvars.sh || true
export I_MPI_F90="$FC"
"$FC" -V
icc -V
fi
if [[ "$FC" == "flang" ]]; then
if [[ "USE_AOMP" == "Y" ]]; then
aomp_major=14
aomp_minor=0-3
wget -nv https://github.com/ROCm-Developer-Tools/aomp/releases/download/rel_"$aomp_major"."$aomp_minor"/aomp_Ubuntu2004_"$aomp_major"."$aomp_minor"_amd64.deb
sudo dpkg -i aomp_Ubuntu2004_"$aomp_major"."$aomp_minor"_amd64.deb
export PATH=/usr/lib/aomp_"$aomp_major"."$aomp_minor"/bin/:$PATH
export LD_LIBRARY_PATH=/usr/lib/aomp_"$aomp_major"."$aomp_minor"/lib:$LD_LIBRARY_PATH
ls -lrt /usr/lib | grep aomp ||true
else
aocc_version=4.0.0
aocc_dir=aocc-compiler-${aocc_version}
curl -sS -LJO https://developer.amd.com/wordpress/media/files/${aocc_dir}.tar
tar xf ${aocc_dir}.tar
./${aocc_dir}/install.sh
source setenv_AOCC.sh
pwd
fi
flang -v
which flang
fi
if [[ "$FC" == "amdflang" ]]; then
sudo apt-get install -y wget gnupg2 coreutils dialog tzdata
rocm_version=5.4.1
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add -
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/'$rocm_version'/ ubuntu main' | sudo tee /etc/apt/sources.list.d/rocm.list
sudo apt-get update -y && sudo apt-get -y install rocm-llvm openmp-extras
export PATH=/opt/rocm/bin:$PATH
export LD_LIBRARY_PATH=/opt/rocm/lib:/opt/rocm/llvm/lib:$LD_LIBRARY_PATH
amdflang -v
amdclang -v
fi
if [[ "$FC" == "nvfortran" ]]; then
sudo apt-get -y install lmod g++ libtinfo5 libncursesw5 lua-posix lua-filesystem lua-lpeg lua-luaossl
nv_major=22
nv_minor=11
nverdot="$nv_major"."$nv_minor"
nverdash="$nv_major"-"$nv_minor"
arch_dpkg=`dpkg --print-architecture`
echo 'deb [trusted=yes] https://developer.download.nvidia.com/hpc-sdk/ubuntu/'$arch_dpkg' /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
echo '*** added hpc-sdk source to /etc/aps ***'
ls -lrt /etc/apt/sources.list.d/ || true
ls -lrt /etc/apt/sources.list.d/nvhpc.list || true
sudo cat /etc/apt/sources.list.d/nvhpc.list || true
sudo apt-get update -y
apt-cache search nvhpc
sudo apt-get install -y nvhpc-"$nverdash"
export PATH=/opt/nvidia/hpc_sdk/Linux_"$arch"/"$nverdot"/compilers/bin:$PATH
export LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_"$arch"/"$nverdot"/compilers/lib:$LD_LIBRARY_PATH
sudo /opt/nvidia/hpc_sdk/Linux_"$arch"/"$nverdot"/compilers/bin/makelocalrc -x
export FC=nvfortran
export CC=gcc
nvfortran -V
which nvfortran
fi fi
fi fi
if [[ "$GITHUB_WORKFLOW" != "NWChem_CI_selfhosted" ]]; then # check for mpif90 command and exit if not present
sudo apt-get update if [[ ! $(command -v mpif90) ]]; then echo "mpif90 not present"; exit 1; fi
sudo apt-get -y install software-properties-common
sudo add-apt-repository universe && sudo apt-get update
# sudo apt-get -y install gfortran python3-dev python-dev cmake "$mpi_libdev" "$mpi_bin" "$scalapack_libdev" make perl libopenblas-dev python3 rsync
sudo apt-get -y install gfortran python3-dev make "$mpi_libdev" "$mpi_bin" make perl python3 rsync
echo "mpif90 -show output is " `mpif90 -show` || true echo "mpif90 -show output is " `mpif90 -show` || true
echo "which mpif90 output is " `which mpif90` || true echo "which mpif90 output is " `which mpif90` || true
if [[ "$FC" == "gfortran-11" ]] || [[ "$CC" == "gcc-11" ]]; then
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get -y install gcc-11 gfortran-11 g++-11
fi
fi
if [[ "$FC" == "ifort" ]] || [[ "$FC" == "ifx" ]]; then
sh ./"$base".sh -a -c -s --action remove --install-dir $IONEAPI_ROOT --eula accept
sh ./"$hpc".sh -a -c -s --action remove --install-dir $IONEAPI_ROOT --eula accept
sh ./"$base".sh -a -c -s --action install --components intel.oneapi.lin.mkl.devel --install-dir $IONEAPI_ROOT --eula accept
intel_components="intel.oneapi.lin.ifort-compiler:intel.oneapi.lin.dpcpp-cpp-compiler-pro"
if [[ "$MPI_IMPL" == "intel" ]]; then
intel_components+=":intel.oneapi.lin.mpi.devel"
fi
sh ./"$hpc".sh -a -c -s --action install \
--components "$intel_components" \
--install-dir $IONEAPI_ROOT --eula accept
if [[ "$?" != 0 ]]; then
echo "apt-get install failed: exit code " "${?}"
exit 1
fi
source "$IONEAPI_ROOT"/setvars.sh || true
export I_MPI_F90="$FC"
"$FC" -V
icc -V
fi
if [[ "$FC" == "flang" ]]; then
if [[ "USE_AOMP" == "Y" ]]; then
aomp_major=15
aomp_minor=0-2
wget https://github.com/ROCm-Developer-Tools/aomp/releases/download/rel_"$aomp_major"."$aomp_minor"/aomp_Ubuntu2004_"$aomp_major"."$aomp_minor"_amd64.deb
sudo dpkg -i aomp_Ubuntu2004_"$aomp_major"."$aomp_minor"_amd64.deb
export PATH=/usr/lib/aomp_"$aomp_major"."$aomp_minor"/bin/:$PATH
export LD_LIBRARY_PATH=/usr/lib/aomp_"$aomp_major"."$aomp_minor"/lib:$LD_LIBRARY_PATH
ls -lrt /usr/lib | grep aomp ||true
else
aocc_version=3.2.0
aocc_dir=aocc-compiler-${aocc_version}
curl -LJO https://developer.amd.com/wordpress/media/files/${aocc_dir}.tar
tar xf ${aocc_dir}.tar
./${aocc_dir}/install.sh
source setenv_AOCC.sh
pwd
fi
flang -v
which flang
fi
if [[ "$FC" == "amdflang" ]]; then
sudo apt-get install -y wget gnupg2 coreutils dialog tzdata
rocm_version=5.2
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add -
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/'$rocm_version'/ ubuntu main' | sudo tee /etc/apt/sources.list.d/rocm.list
sudo apt-get update -y && sudo apt-get -y install rocm-llvm openmp-extras
export PATH=/opt/rocm/bin:$PATH
export LD_LIBRARY_PATH=/opt/rocm/lib:/opt/rocm/llvm/lib:$LD_LIBRARY_PATH
amdflang -v
amdclang -v
fi
if [[ "$FC" == "nvfortran" ]]; then
sudo apt-get -y install lmod g++ libtinfo5 libncursesw5 lua-posix lua-filesystem lua-lpeg lua-luaossl
nv_major=22
nv_minor=9
nverdot="$nv_major"."$nv_minor"
nverdash="$nv_major"-"$nv_minor"
arch_dpkg=`dpkg --print-architecture`
echo 'deb [trusted=yes] https://developer.download.nvidia.com/hpc-sdk/ubuntu/'$arch_dpkg' /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
echo '*** added hpc-sdk source to /etc/aps ***'
ls -lrt /etc/apt/sources.list.d/ || true
ls -lrt /etc/apt/sources.list.d/nvhpc.list || true
sudo cat /etc/apt/sources.list.d/nvhpc.list || true
sudo apt-get update -y
apt-cache search nvhpc
sudo apt-get install -y nvhpc-"$nverdash"
export PATH=/opt/nvidia/hpc_sdk/Linux_"$arch"/"$nverdot"/compilers/bin:$PATH
export LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_"$arch"/"$nverdot"/compilers/lib:$LD_LIBRARY_PATH
sudo /opt/nvidia/hpc_sdk/Linux_"$arch"/"$nverdot"/compilers/bin/makelocalrc -x
export FC=nvfortran
export CC=gcc
nvfortran -V
which nvfortran
fi
fi
fi fi

View file

@ -37,11 +37,12 @@ fi
if [[ "$FC" == "amdflang" ]]; then if [[ "$FC" == "amdflang" ]]; then
export PATH=/opt/rocm/bin:$PATH export PATH=/opt/rocm/bin:$PATH
export LD_LIBRARY_PATH=/opt/rocm-"$rocm_version"/lib:/opt/rocm/llvm/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/opt/rocm-"$rocm_version"/lib:/opt/rocm/llvm/lib:$LD_LIBRARY_PATH
export BUILD_MPICH=1
fi fi
if [[ "$FC" == "nvfortran" ]]; then if [[ "$FC" == "nvfortran" ]]; then
nv_major=22 nv_major=22
nv_minor=9 nv_minor=11
nverdot="$nv_major"."$nv_minor" nverdot="$nv_major"."$nv_minor"
export PATH=/opt/nvidia/hpc_sdk/Linux_"$arch"/"$nverdot"/compilers/bin:$PATH export PATH=/opt/nvidia/hpc_sdk/Linux_"$arch"/"$nverdot"/compilers/bin:$PATH
export LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_"$arch"/"$nverdot"/compilers/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_"$arch"/"$nverdot"/compilers/lib:$LD_LIBRARY_PATH
@ -188,3 +189,9 @@ if [[ "$FC" == "gfortran" ]]; then
export NWCHEM_MODULES=$(echo $NWCHEM_MODULES |sed 's/xtb//') export NWCHEM_MODULES=$(echo $NWCHEM_MODULES |sed 's/xtb//')
fi fi
fi fi
if [[ "$USE_LIBXC" == "-1" ]]; then
unset USE_LIBXC
export LIBXC_LIB=/usr/lib/x86_64-linux-gnu
export LIBXC_INCLUDE=/usr/include
fi

View file

@ -158,6 +158,7 @@ fi
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs dft_smear cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs dft_smear
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs dft_he2p_wb97 cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs dft_he2p_wb97
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs ritddft_pyridine cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs ritddft_pyridine
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs tddftgrad_h2o_cis_lda
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs au2-sarc-zora-mp cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs au2-sarc-zora-mp
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs x2c-h2se cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs x2c-h2se
if [[ ! -z "$USE_LIBXC" ]]; then if [[ ! -z "$USE_LIBXC" ]]; then
@ -167,7 +168,7 @@ fi
if [[ ! $(grep -i mp2_input $TRAVIS_BUILD_DIR/src/stubs.F| awk '/mp2_input/') ]]; then if [[ ! $(grep -i mp2_input $TRAVIS_BUILD_DIR/src/stubs.F| awk '/mp2_input/') ]]; then
if [[ ! $(grep -i ccsd_input $TRAVIS_BUILD_DIR/src/stubs.F| awk '/ccsd_input/') ]]; then if [[ ! $(grep -i ccsd_input $TRAVIS_BUILD_DIR/src/stubs.F| awk '/ccsd_input/') ]]; then
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs ccsdt_w3pvdz ccsdt_ompt_w3pvdz cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs ccsdt_w3pvdz ccsdt_ompt_w3pvdz
cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs n2_ccsd h2mp2 auh2o aump2 cd $TRAVIS_BUILD_DIR/QA && ./runtests.mpi.unix procs $nprocs n2_ccsd h2mp2 grad_ozone auh2o aump2
fi fi
fi fi
if [[ ! $(grep -i pspw $TRAVIS_BUILD_DIR/src/stubs.F| awk '/pspw_input/') ]]; then if [[ ! $(grep -i pspw $TRAVIS_BUILD_DIR/src/stubs.F| awk '/pspw_input/') ]]; then