mirror of
https://github.com/nwchemgit/nwchem.git
synced 2026-07-28 14:15:30 -04:00
Merge branch 'ccsd_t2_dgemm_cublas' of https://github.com/jeffhammond/nwchem into ccsd_t2_dgemm_cublas
This commit is contained in:
commit
ced49c8d49
296 changed files with 440264 additions and 253090 deletions
39
.github/workflows/check_64_to_32.yml
vendored
Normal file
39
.github/workflows/check_64_to_32.yml
vendored
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
name: check_64_to_32
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- .gitlab-ci.yml
|
||||
pull_request:
|
||||
release:
|
||||
schedule:
|
||||
- cron: '0 0 * * SUN'
|
||||
repository_dispatch:
|
||||
types: [backend_automation]
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
check:
|
||||
if: |
|
||||
github.event_name == 'schedule' ||
|
||||
(!contains(github.event.head_commit.message, 'ci skip'))
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
show-progress:
|
||||
fetch-depth: 1
|
||||
- name: pkg cleanup
|
||||
run: |
|
||||
ls -lrt
|
||||
ls -lrt travis || true
|
||||
./travis/pkg_cleanup.sh
|
||||
shell: bash
|
||||
- name: check
|
||||
run: |
|
||||
./travis/check_64_to_32.sh
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4
.github/workflows/docker_actions.yml
vendored
4
.github/workflows/docker_actions.yml
vendored
|
|
@ -28,7 +28,7 @@ jobs:
|
|||
fetch-depth: 5
|
||||
- name: Setup cache
|
||||
id: setup-cache
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/cache
|
||||
|
|
@ -62,7 +62,7 @@ jobs:
|
|||
run: |
|
||||
echo "cache_hit=N" >> $GITHUB_ENV
|
||||
- name: build_schedule
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: false
|
||||
context: ${{ matrix.folder }}
|
||||
|
|
|
|||
172
.github/workflows/github_actions.yml
vendored
172
.github/workflows/github_actions.yml
vendored
|
|
@ -21,7 +21,7 @@ jobs:
|
|||
matrix:
|
||||
blas: [build_openblas]
|
||||
blas_size: [8]
|
||||
os: [ubuntu-20.04, macos-11]
|
||||
os: [ubuntu-20.04, macos-latest]
|
||||
experimental: [false]
|
||||
mpi_impl:
|
||||
- openmpi
|
||||
|
|
@ -37,13 +37,22 @@ jobs:
|
|||
fc:
|
||||
- gfortran
|
||||
exclude:
|
||||
- os: macos-11
|
||||
- os: macos-latest
|
||||
mpi_impl: mpich
|
||||
nwchem_modules: "tinyqmpw python"
|
||||
- os: macos-11
|
||||
- os: macos-latest
|
||||
mpi_impl: mpich
|
||||
nwchem_modules: "qmandpw qmd"
|
||||
include:
|
||||
- os: ubuntu-22.04
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "nwdft driver solvation"
|
||||
fc: gfortran
|
||||
cc: gcc
|
||||
blas: "libopenblas64-openmp-dev"
|
||||
blas_size: 8
|
||||
- os: ubuntu-20.04
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
|
|
@ -107,6 +116,14 @@ jobs:
|
|||
nwchem_modules: "all"
|
||||
fc: gfortran
|
||||
blas: "build_openblas"
|
||||
- os: ubuntu-latest
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: GA_DEBIAN
|
||||
nwchem_modules: "all python"
|
||||
blas: "libopenblas-pthread-dev"
|
||||
fc: gfortran
|
||||
blas_size: 4
|
||||
- os: ubuntu-20.04
|
||||
experimental: true
|
||||
mpi_impl: mpich
|
||||
|
|
@ -208,12 +225,6 @@ jobs:
|
|||
nwchem_modules: "tinyqmpw python"
|
||||
fc: ifx
|
||||
use_openmp: 2
|
||||
- os: ubuntu-20.04
|
||||
experimental: true
|
||||
mpi_impl: mpich
|
||||
armci_network: MPI-PT
|
||||
nwchem_modules: "tinyqmpw python"
|
||||
fc: ifort
|
||||
- os: ubuntu-20.04
|
||||
experimental: true
|
||||
mpi_impl: intel
|
||||
|
|
@ -237,14 +248,23 @@ jobs:
|
|||
fc: ifort
|
||||
cc: icx
|
||||
use_libxc: 1
|
||||
- os: macos-11
|
||||
- os: macos-latest
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "tinyqmpw"
|
||||
fc: gfortran-10
|
||||
fc: gfortran-12
|
||||
cc: gcc
|
||||
use_libxc: 1
|
||||
xcode_version: 15.3
|
||||
- os: macos-15
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "tinyqmpw python"
|
||||
fc: gfortran-13
|
||||
use_libxc: 1
|
||||
xcode_version: 15.2
|
||||
- os: ubuntu-20.04
|
||||
experimental: true
|
||||
mpi_impl: mpich
|
||||
|
|
@ -277,43 +297,37 @@ jobs:
|
|||
fc: gfortran-10
|
||||
cc: gcc-10
|
||||
use_libxc: 1
|
||||
- os: macos-13
|
||||
- os: macos-15
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-PR
|
||||
nwchem_modules: "qmandpw qmd"
|
||||
fc: gfortran-12
|
||||
xcode_version: 15.0
|
||||
- os: macos-12
|
||||
xcode_version: 15.0.1
|
||||
- os: macos-latest
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-PR
|
||||
nwchem_modules: "tce"
|
||||
fc: gfortran-11
|
||||
cc: gcc-11
|
||||
xcode_version: 13.4.1
|
||||
- os: macos-12
|
||||
fc: gfortran-12
|
||||
cc: gcc-12
|
||||
xcode_version: 15.4
|
||||
- os: macos-latest
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "tinyqmpw"
|
||||
fc: gfortran-11
|
||||
xcode_version: 13.4.1
|
||||
- os: macos-11
|
||||
fc: gfortran-12
|
||||
cc: gcc-12
|
||||
xcode_version: 15.4
|
||||
- os: macos-latest
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "tinyqmpw"
|
||||
fc: gfortran-9
|
||||
fc: gfortran-13
|
||||
blas: "accelerate"
|
||||
blas_size: 4
|
||||
- os: macos-12
|
||||
experimental: true
|
||||
mpi_impl: mpich
|
||||
armci_network: MPI-PT
|
||||
nwchem_modules: "nwdft solvation driver"
|
||||
fc: ifort
|
||||
xcode_version: 14.0.1
|
||||
- os: ubuntu-20.04
|
||||
experimental: true
|
||||
mpi_impl: mpich
|
||||
|
|
@ -365,6 +379,70 @@ jobs:
|
|||
armci_network: MPI-TS
|
||||
nwchem_modules: "nwdft driver solvation mp2_grad mcscf ccsd rimp2 fcidump nwc_columbus"
|
||||
fc: ifx
|
||||
- os: ubuntu-22.04
|
||||
experimental: true
|
||||
mpi_impl: mpich
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "tinyqmpw"
|
||||
fc: flang-new-20
|
||||
- os: ubuntu-22.04
|
||||
experimental: true
|
||||
mpi_impl: mpich
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "tinyqmpw"
|
||||
fc: flang-new-19
|
||||
- os: ubuntu-latest
|
||||
experimental: true
|
||||
mpi_impl: mpich
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "tinyqmpw"
|
||||
fc: flang-new-18
|
||||
- os: ubuntu-22.04
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "nwdft driver solvation"
|
||||
fc: gfortran
|
||||
cc: gcc
|
||||
blas: "libopenblas64-pthread-dev"
|
||||
blas_size: 8
|
||||
- os: macos-latest
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "nwdft driver solvation"
|
||||
fc: gfortran
|
||||
cc: gcc
|
||||
blas: "brew_openblas"
|
||||
blas_size: 4
|
||||
- os: macos-latest
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "nwdft driver solvation"
|
||||
fc: gfortran
|
||||
cc: gcc
|
||||
blas: "brew_openblas"
|
||||
blas_size: 4
|
||||
- os: macos-15
|
||||
experimental: true
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "nwdft driver solvation"
|
||||
fc: gfortran
|
||||
cc: gcc
|
||||
blas: "brew_openblas"
|
||||
blas_size: 4
|
||||
xcode_version: 15.0.1
|
||||
- os: macos-latest
|
||||
experimental: true
|
||||
mpi_impl: build_mpich
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "nwdft driver solvation"
|
||||
fc: gfortran-14
|
||||
cc: gcc-14
|
||||
blas: "brew_openblas"
|
||||
blas_size: 4
|
||||
fail-fast: false
|
||||
env:
|
||||
MPI_IMPL: ${{ matrix.mpi_impl }}
|
||||
|
|
@ -378,17 +456,44 @@ jobs:
|
|||
CC: ${{ matrix.cc }}
|
||||
COMEX_MAX_NB_OUTSTANDING: 4
|
||||
SIMINT_MAXAM: 4
|
||||
SIMINT_VECTOR: avx2
|
||||
BLAS_ENV: ${{ matrix.blas }}
|
||||
BLAS_SIZE: ${{ matrix.blas_size }}
|
||||
USE_OPENMP: ${{ matrix.use_openmp }}
|
||||
XCODE_VERSION: ${{ matrix.xcode_version }}
|
||||
continue-on-error: ${{ matrix.experimental }}
|
||||
steps:
|
||||
- name: pkg cleanup
|
||||
run: |
|
||||
df -h
|
||||
if [[ $(uname -s) == "Linux" ]]; then
|
||||
ubuntu_ver=$(cat /etc/os-release | grep VERSION_ID |cut -d \" -f 2)
|
||||
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
|
||||
sudo apt-get purge -y azure-cli || true
|
||||
sudo apt-get purge -y google-cloud-cli microsoft-edge-stable dotnet-sdk-7.0 dotnet-sdk-6.0 google-chrome-stable firefox
|
||||
sudo apt-get purge -y temurin-17-jdk temurin-11-jdk temurin-8-jdk
|
||||
if [[ $ubuntu_ver == "20.04" ]]; then
|
||||
sudo apt-get purge -y llvm-12-dev llvm-11-dev llvm-10-dev
|
||||
sudo apt-get purge -y hhvm
|
||||
sudo apt-get purge -y libgl1-mesa-dri
|
||||
fi
|
||||
if [[ $ubuntu_ver == "22.04" ]]; then
|
||||
sudo apt-get purge -y llvm-13-dev llvm-14-dev llvm-15-dev
|
||||
fi
|
||||
sudo apt-get -y clean
|
||||
sudo apt-get autoremove -y
|
||||
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
|
||||
df -h
|
||||
fi
|
||||
shell: bash
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
show-progress:
|
||||
fetch-depth: 200
|
||||
- name: Install Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.12"
|
||||
- name: Get Instruction
|
||||
id: get-simd
|
||||
run: |
|
||||
|
|
@ -396,7 +501,7 @@ jobs:
|
|||
shell: bash
|
||||
- name: Setup cache
|
||||
id: setup-cache
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/cache
|
||||
|
|
@ -410,6 +515,11 @@ jobs:
|
|||
if: steps.setup-cache.outputs.cache-hit == 'true'
|
||||
run: |
|
||||
./travis/cache_fetch.sh
|
||||
- name: get external files
|
||||
if: steps.setup-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
mkdir -p ~/cache
|
||||
NWCHEM_TOP=$(pwd) ./contrib/getfiles.nwchem ~/cache
|
||||
- name: compile
|
||||
id: compile
|
||||
run: |
|
||||
|
|
|
|||
2
.github/workflows/github_actions_archs.yml
vendored
2
.github/workflows/github_actions_archs.yml
vendored
|
|
@ -52,7 +52,7 @@ jobs:
|
|||
steps:
|
||||
- name: Setup cache
|
||||
id: setup-cache
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/cache
|
||||
|
|
|
|||
7
.github/workflows/lint_python.yml
vendored
7
.github/workflows/lint_python.yml
vendored
|
|
@ -12,10 +12,9 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
check-latest: true
|
||||
python-version: '3.12.3'
|
||||
- run: pip install --upgrade pip wheel
|
||||
- run: pip install bandit black codespell flake8 flake8-2020 flake8-bugbear
|
||||
flake8-comprehensions isort mypy pytest pyupgrade safety
|
||||
|
|
@ -36,4 +35,4 @@ jobs:
|
|||
- run: pytest . || true
|
||||
- run: pytest --doctest-modules . || true
|
||||
- run: shopt -s globstar && pyupgrade --py36-plus **/*.py || true
|
||||
- run: safety check
|
||||
# - run: safety check
|
||||
|
|
|
|||
62
.github/workflows/nwchem_releasetar.yaml
vendored
Normal file
62
.github/workflows/nwchem_releasetar.yaml
vendored
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
name: NWChem_Release_Tar
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
nwchem_version:
|
||||
description: 'Release version'
|
||||
required: true
|
||||
default: 'nightly'
|
||||
type: choice
|
||||
options:
|
||||
- nightly
|
||||
- 7.2.3
|
||||
|
||||
jobs:
|
||||
do_tar:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: install pkg
|
||||
run: |
|
||||
sudo apt-get install -y curl make perl bash bzip2 tar gzip openmpi-bin
|
||||
- name: grab script
|
||||
run: |
|
||||
curl -LJO https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/nwchem/$GITHUB_REF_NAME/contrib/git.nwchem/dotar_release.sh
|
||||
chmod +x ./dotar_release.sh
|
||||
- name: generate date
|
||||
run: |
|
||||
export TZ='America/Los_Angeles'
|
||||
echo "input_date=$(date +%Y-%m-%d)" >> $GITHUB_ENV
|
||||
- name: generate tempdir name
|
||||
run: |
|
||||
echo "tmpdir_name=temp.${{ env.input_date }}" >> $GITHUB_ENV
|
||||
- name: run script
|
||||
run: |
|
||||
./dotar_release.sh ${{ github.event.inputs.nwchem_version }} ${{ env.input_date }}
|
||||
- name: check tempdir
|
||||
run: |
|
||||
ls -lrt ${{ env.tmpdir_name }}/*tar*
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: nwchem-tarball
|
||||
path: ${{ env.tmpdir_name }}/*tar*
|
||||
- if: github.event.inputs.release_version == 'nightly'
|
||||
name: Nightly
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
prerelease: true
|
||||
name: nightly
|
||||
tag_name: nightly
|
||||
files: ${{ env.tmpdir_name }}/*tar*
|
||||
fail_on_unmatched_files: true
|
||||
- if: github.event.inputs.release_version != 'nightly'
|
||||
name: Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
prerelease: true
|
||||
draft: true
|
||||
name: NWChem ${{ github.event.inputs.nwchem_version }}
|
||||
tag_name: v${{ github.event.inputs.nwchem_version }}-release
|
||||
files: ${{ env.tmpdir_name }}/*tar*
|
||||
fail_on_unmatched_files: true
|
||||
|
|
@ -57,6 +57,8 @@ fi
|
|||
#
|
||||
#--- localization tests
|
||||
./runtests.mpi.unix procs $np localize-ibo-aa
|
||||
./runtests.mpi.unix procs $np localize-ibo-allyl
|
||||
./runtests.mpi.unix procs $np localize-pm-allyl
|
||||
#
|
||||
#--- relativity tests
|
||||
./runtests.mpi.unix procs $np x2c-h2se
|
||||
|
|
|
|||
|
|
@ -346,6 +346,10 @@ let "myexit+=$?"
|
|||
let "myexit+=$?"
|
||||
./runtests.mpi.unix procs $np localize-ibo-aa
|
||||
let "myexit+=$?"
|
||||
./runtests.mpi.unix procs $np localize-ibo-allyl
|
||||
let "myexit+=$?"
|
||||
./runtests.mpi.unix procs $np localize-pm-allyl
|
||||
let "myexit+=$?"
|
||||
#
|
||||
#--- range-separated functionals tests
|
||||
./runtests.mpi.unix procs $np acr-camb3lyp-cdfit
|
||||
|
|
@ -597,6 +601,10 @@ if [[ ! -z "${BUILD_ELPA}" ]]; then
|
|||
./runtests.mpi.unix procs $np siosi3_elpa
|
||||
let "myexit+=$?"
|
||||
fi
|
||||
./runtests.mpi.unix procs $np dft_formaldehyde_mom
|
||||
let "myexit+=$?"
|
||||
./runtests.mpi.unix procs $np dft_boron_imom
|
||||
let "myexit+=$?"
|
||||
#--- if we only want quick tests get out now!
|
||||
if [[ "$what" == "fast" ]]; then
|
||||
echo
|
||||
|
|
@ -638,14 +646,8 @@ let "myexit+=$?"
|
|||
./runtests.mpi.unix procs $np ch4-dft-scf-prop
|
||||
let "myexit+=$?"
|
||||
# superheavy elements check
|
||||
source ./qa_funcs.sh
|
||||
strings -a $(get_nwchem_executable) |grep Tennessine >& /dev/null
|
||||
exit_code=$?
|
||||
if [[ $exit_code == 0 ]]; then
|
||||
echo NWChem code ready for superheavy elements
|
||||
./runtests.mpi.unix procs $np dft_tennessine
|
||||
let "myexit+=$?"
|
||||
fi
|
||||
./runtests.mpi.unix procs $np dft_tennessine
|
||||
let "myexit+=$?"
|
||||
#
|
||||
./runtests.mpi.unix procs $np ccsdt_ompt_w3pvdz
|
||||
let "myexit+=$?"
|
||||
|
|
@ -716,6 +718,16 @@ let "myexit+=$?"
|
|||
let "myexit+=$?"
|
||||
./runtests.mpi.unix procs $np mep-test
|
||||
let "myexit+=$?"
|
||||
./runtests.mpi.unix procs $np ActnAcntrl_VEMExc_TDB3LYP
|
||||
let "myexit+=$?"
|
||||
./runtests.mpi.unix procs $np H2COMetnl_VEMExcSSP_TDB3LYP-2
|
||||
let "myexit+=$?"
|
||||
./runtests.mpi.unix procs $np H2COMetnl_VEMExcSSP_TDB3LYP
|
||||
let "myexit+=$?"
|
||||
./runtests.mpi.unix procs $np H2COWat_VEMExc_CISHF
|
||||
let "myexit+=$?"
|
||||
./runtests.mpi.unix procs $np p2ta-vem
|
||||
let "myexit+=$?"
|
||||
if [[ "$what" != "flaky" ]]; then
|
||||
echo
|
||||
echo "the number of failed tests is" $myexit
|
||||
|
|
|
|||
|
|
@ -312,7 +312,7 @@ foreach $filename (@FILES_TO_PARSE) {
|
|||
}
|
||||
if (! $sgroup) {
|
||||
if (/Total/ && /energy/) {
|
||||
if (/SCF/ || /DFT/ || /CCSD/ || /MP2/ || /MCSCF/ || /RIMP2/ || /RISCF/ || /BAND/ || /PAW/ || /PSPW/ || /WFN1/ || /xTB/ ) {
|
||||
if (/SCF/ || /DFT/ || /CCSD/ || /MP2/ || /MCSCF/ || /RIMP2/ || /RISCF/ || /BAND/ || /PAW/ || /WFN1/ || /xTB/ ) {
|
||||
if ($debug) {print "\ndebug: $_";}
|
||||
@line_tokens = split(' ');
|
||||
$num_line_tokens = @line_tokens;
|
||||
|
|
@ -335,6 +335,30 @@ foreach $filename (@FILES_TO_PARSE) {
|
|||
}
|
||||
}
|
||||
if (! $sgroup) {
|
||||
if (/Total/ && /energy/) {
|
||||
if ( /PSPW/ ) {
|
||||
if ($debug) {print "\ndebug: $_";}
|
||||
@line_tokens = split(' ');
|
||||
$num_line_tokens = @line_tokens;
|
||||
if ($debug) {
|
||||
print "debug:line_tokens: @line_tokens \n";
|
||||
print "debug:number : $num_line_tokens \n";
|
||||
}
|
||||
for($itok = 0;$itok < ($num_line_tokens-1); $itok++){
|
||||
if (! $quiet) {
|
||||
printf "%s ", @line_tokens[$itok];
|
||||
}
|
||||
printf FILE_OUTPUT "%s ", @line_tokens[$itok];
|
||||
}
|
||||
# *** Assumes $itok was incremented above
|
||||
if (! $quiet) {
|
||||
printf "%.5f\n", set_to_digits(@line_tokens[$itok],4);
|
||||
}
|
||||
printf FILE_OUTPUT "%.5f\n", set_to_digits(@line_tokens[$itok],4);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (! $sgroup) {
|
||||
if (/total/ && /energy/) {
|
||||
if ( /MBPT/ || /LCCD/ || /CCD/ || /LCCSD/ || /CCSD/ || /CCSDT/ || /CCSDTQ/ || /QCISD/ || /CISD/ || /CISDT/ || /CISDTQ/ ) {
|
||||
if ($debug) {print "\ndebug: $_";}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
export HYDRA_DEBUG=0
|
||||
# find memory leaks using this glibc feature that
|
||||
# initialized memory blocks to non-zero values
|
||||
if [[ -z "${USE_ASAN}" ]]; then
|
||||
if [[ -z "${USE_ASAN}" ]] && [[ "${FC}" != "flang-new-20" ]]; then
|
||||
export MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
|
||||
fi
|
||||
source ./qa_funcs.sh
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
# Vertical Emission
|
||||
|
||||
echo 'VEM/SMD/TDDFT-B3LYP/6-311+G(d) vertical emission + SMSSP - formaldehyde in methanol'
|
||||
|
||||
start H2COMetnl_VEMExcSSP_TDB3LYP-2
|
||||
|
||||
geometry nocenter
|
||||
O 0.0000000000 0.0000000000 0.6743110000
|
||||
C 0.0000000000 0.0000000000 -0.5278530000
|
||||
H 0.0000000000 0.9370330000 -1.1136860000
|
||||
H 0.0000000000 -0.9370330000 -1.1136860000
|
||||
symmetry c1
|
||||
end
|
||||
|
||||
basis
|
||||
* library 6-311+G*
|
||||
end
|
||||
|
||||
dft
|
||||
XC b3lyp
|
||||
end
|
||||
|
||||
cosmo
|
||||
do_cosmo_vem 2
|
||||
solvent methanol
|
||||
end
|
||||
|
||||
tddft
|
||||
nroots 10
|
||||
target 1
|
||||
singlet
|
||||
notriplet
|
||||
algorithm 1
|
||||
civecs
|
||||
grad
|
||||
root 1
|
||||
solve_thresh 1d-05
|
||||
end
|
||||
end
|
||||
task tddft gradient
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -24,7 +24,74 @@ dft
|
|||
end
|
||||
|
||||
bq
|
||||
load bq_charges
|
||||
1.84775906502257 0.541196100146197 0.541196100146197 2.402225750307932E-003
|
||||
0.541196100146197 1.84775906502257 0.541196100146197 2.340440231936370E-003
|
||||
1.15470053837925 1.15470053837925 1.15470053837925 -2.229500828889751E-003
|
||||
-1.84775906502257 0.541196100146197 0.541196100146197 1.251753089125840E-003
|
||||
-1.84775906502257 -0.541196100146197 0.541196100146197 1.251752729896357E-003
|
||||
0.541196100146197 -1.84775906502257 0.541196100146197 2.340440248656548E-003
|
||||
1.84775906502257 -0.541196100146197 0.541196100146197 2.402232144015150E-003
|
||||
1.15470053837925 -1.15470053837925 1.15470053837925 -2.229499399085493E-003
|
||||
0.541196100146197 0.541196100146197 -1.84775906502257 5.691435832485188E-003
|
||||
0.541196100146197 1.84775906502257 -0.541196100146197 2.407522319053154E-003
|
||||
1.15470053837925 1.15470053837925 -1.15470053837925 4.098859895536265E-003
|
||||
-0.541196100146197 0.541196100146197 -1.84775906502257 6.872528263116542E-003
|
||||
-1.84775906502257 0.541196100146197 -0.541196100146197 4.342143168123500E-003
|
||||
-0.541196100146197 -0.541196100146197 -1.84775906502257 6.872527593439298E-003
|
||||
-1.84775906502257 -0.541196100146197 -0.541196100146197 4.342142600524549E-003
|
||||
0.541196100146197 -0.541196100146197 -1.84775906502257 5.691435494322854E-003
|
||||
0.541196100146197 -1.84775906502257 -0.541196100146197 2.407521411196576E-003
|
||||
1.15470053837925 -1.15470053837925 -1.15470053837925 4.098860107325336E-003
|
||||
0.465428653867602 0.465428653867602 2.97207282235261 -9.546031989698498E-003
|
||||
1.58907282235182 0.465428653867602 1.84842865386839 -1.042246107387843E-002
|
||||
0.465428653867602 1.58907282235182 1.84842865386839 -1.066014372638094E-002
|
||||
0.993042479524280 0.993042479524280 2.37604247952507 -1.153533707161643E-002
|
||||
-0.465428653867602 0.465428653867602 2.97207282235261 -9.558150002409577E-003
|
||||
-0.465428653867602 1.58907282235182 1.84842865386839 -1.057860241207540E-002
|
||||
-1.58907282235182 0.465428653867602 1.84842865386839 -1.095568344503917E-002
|
||||
-0.993042479524280 0.993042479524280 2.37604247952507 -1.161626614156083E-002
|
||||
-0.465428653867602 -0.465428653867602 2.97207282235261 -9.558150003666936E-003
|
||||
-1.58907282235182 -0.465428653867602 1.84842865386839 -1.095568353062446E-002
|
||||
-0.465428653867602 -1.58907282235182 1.84842865386839 -1.057860250391407E-002
|
||||
-0.993042479524280 -0.993042479524280 2.37604247952507 -1.161626621910469E-002
|
||||
0.465428653867602 -0.465428653867602 2.97207282235261 -9.546031938676208E-003
|
||||
0.465428653867602 -1.58907282235182 1.84842865386839 -1.066014349921333E-002
|
||||
1.58907282235182 -0.465428653867602 1.84842865386839 -1.042246069009446E-002
|
||||
0.993042479524280 -0.993042479524280 2.37604247952507 -1.153533680958867E-002
|
||||
2.22904334821125 0.351777452191907 1.777452191707953E-003 4.284974904853939E-003
|
||||
1.77855532241689 0.750555322416307 0.400555322416108 1.491749267005234E-003
|
||||
2.22904334821125 -0.351777452191907 1.777452191707953E-003 4.284976344113607E-003
|
||||
1.77855532241689 -0.750555322416307 0.400555322416108 1.491760140765194E-003
|
||||
1.37977745219249 0.351777452191908 -1.55104334821086 3.209514288487084E-003
|
||||
2.22904334821125 0.351777452191907 -0.701777452192107 4.680138714919202E-003
|
||||
1.37977745219249 1.20104334821066 -0.701777452192107 1.622423623804581E-003
|
||||
1.77855532241689 0.750555322416307 -1.10055532241651 4.584825216133325E-003
|
||||
1.37977745219249 -0.351777452191908 -1.55104334821086 3.209514404546292E-003
|
||||
1.37977745219249 -1.20104334821066 -0.701777452192107 1.622425573965948E-003
|
||||
2.22904334821125 -0.351777452191907 -0.701777452192107 4.680139247490079E-003
|
||||
1.77855532241689 -0.750555322416307 -1.10055532241651 4.584825824007589E-003
|
||||
-0.162222547808386 2.09104334821117 1.777452191707953E-003 2.614530344880845E-003
|
||||
-0.865777452192200 2.09104334821117 1.777452191707953E-003 4.493691842964546E-003
|
||||
-1.71504334821096 1.24177745219241 1.777452191707953E-003 3.405807037640817E-003
|
||||
-1.26455532241660 1.64055532241681 0.400555322416108 3.799853359020928E-003
|
||||
-0.162222547808385 1.24177745219241 -1.55104334821086 2.279072849775047E-003
|
||||
-0.162222547808386 2.09104334821117 -0.701777452192107 4.305354348860498E-003
|
||||
0.236555322416014 1.64055532241681 -1.10055532241651 1.956928110172396E-003
|
||||
-0.865777452192201 1.24177745219241 -1.55104334821086 5.274528779024176E-003
|
||||
-0.865777452192200 2.09104334821117 -0.701777452192107 4.671045598757887E-003
|
||||
-1.71504334821096 1.24177745219241 -0.701777452192107 4.371801734843838E-003
|
||||
-1.26455532241660 1.64055532241681 -1.10055532241651 4.942898768175527E-003
|
||||
-1.71504334821096 -1.24177745219241 1.777452191707953E-003 3.405805847668528E-003
|
||||
-0.865777452192200 -2.09104334821117 1.777452191707953E-003 4.493690287770890E-003
|
||||
-1.26455532241660 -1.64055532241681 0.400555322416108 3.799852120341229E-003
|
||||
-0.162222547808386 -2.09104334821117 1.777452191707953E-003 2.614528748047715E-003
|
||||
-0.865777452192201 -1.24177745219241 -1.55104334821086 5.274527097879694E-003
|
||||
-1.71504334821096 -1.24177745219241 -0.701777452192107 4.371800429616148E-003
|
||||
-0.865777452192200 -2.09104334821117 -0.701777452192107 4.671043749552482E-003
|
||||
-1.26455532241660 -1.64055532241681 -1.10055532241651 4.942897072592553E-003
|
||||
-0.162222547808385 -1.24177745219241 -1.55104334821086 2.279069161052804E-003
|
||||
-0.162222547808386 -2.09104334821117 -0.701777452192107 4.305352500413284E-003
|
||||
0.236555322416014 -1.64055532241681 -1.10055532241651 1.956924619041098E-003
|
||||
end
|
||||
|
||||
relativistic
|
||||
|
|
|
|||
|
|
@ -24,7 +24,74 @@ dft
|
|||
end
|
||||
|
||||
bq
|
||||
load bq_charges
|
||||
2.84775906502314 3.54119610014791 5.54119610014905 2.409541715232177E-003
|
||||
1.54119610014677 4.84775906502428 5.54119610014905 2.357936588956132E-003
|
||||
2.15470053837982 4.15470053838096 6.15470053838210 -2.222677086115048E-003
|
||||
-0.847759065022002 3.54119610014791 5.54119610014905 1.264156578456016E-003
|
||||
-0.847759065022002 2.45880389985552 5.54119610014905 1.264157318028993E-003
|
||||
1.54119610014677 1.15224093497914 5.54119610014905 2.357936844587748E-003
|
||||
2.84775906502314 2.45880389985552 5.54119610014905 2.409544728906696E-003
|
||||
2.15470053837982 1.84529946162246 6.15470053838210 -2.222676518571642E-003
|
||||
1.54119610014677 3.54119610014791 3.15224093498028 5.696159465562918E-003
|
||||
1.54119610014677 4.84775906502428 4.45880389985666 2.414016924653403E-003
|
||||
2.15470053837982 4.15470053838096 3.84529946162360 4.104687873948283E-003
|
||||
0.458803899854374 3.54119610014791 3.15224093498028 6.877951634974988E-003
|
||||
-0.847759065022002 3.54119610014791 4.45880389985666 4.350795513897987E-003
|
||||
0.458803899854374 2.45880389985551 3.15224093498028 6.877952157877950E-003
|
||||
-0.847759065022002 2.45880389985552 4.45880389985666 4.350796415852843E-003
|
||||
1.54119610014677 2.45880389985551 3.15224093498028 5.696159068529854E-003
|
||||
1.54119610014677 1.15224093497914 4.45880389985666 2.414016158435196E-003
|
||||
2.15470053837982 1.84529946162246 3.84529946162360 4.104683400807715E-003
|
||||
1.46542865386817 3.46542865386931 7.97207282235546 -9.580947177468669E-003
|
||||
2.58907282235239 3.46542865386931 6.84842865387124 -1.043213994335685E-002
|
||||
1.46542865386817 4.58907282235353 6.84842865387124 -1.067008506158764E-002
|
||||
1.99304247952485 3.99304247952599 7.37604247952792 -1.155880417552256E-002
|
||||
0.534571346132969 3.46542865386931 7.97207282235546 -9.593024458698312E-003
|
||||
0.534571346132969 4.58907282235353 6.84842865387124 -1.058742989201607E-002
|
||||
-0.589072822351248 3.46542865386931 6.84842865387124 -1.096495093978891E-002
|
||||
6.957520476290821E-003 3.99304247952599 7.37604247952792 -1.163941922882054E-002
|
||||
0.534571346132969 2.53457134613411 7.97207282235546 -9.593024332060345E-003
|
||||
-0.589072822351248 2.53457134613411 6.84842865387124 -1.096495070641879E-002
|
||||
0.534571346132969 1.41092717764989 6.84842865387124 -1.058742930905373E-002
|
||||
6.957520476290821E-003 2.00695752047743 7.37604247952792 -1.163941887291981E-002
|
||||
1.46542865386817 2.53457134613411 7.97207282235546 -9.580947069316184E-003
|
||||
1.46542865386817 1.41092717764989 6.84842865387124 -1.067008462742926E-002
|
||||
2.58907282235239 2.53457134613411 6.84842865387124 -1.043213976773929E-002
|
||||
1.99304247952485 2.00695752047743 7.37604247952792 -1.155880392660084E-002
|
||||
3.22904334821182 3.35177745219362 5.00177745219456 4.290978035883720E-003
|
||||
2.77855532241746 3.75055532241802 5.40055532241896 1.494899761378366E-003
|
||||
3.22904334821182 2.64822254780980 5.00177745219456 4.290978076307125E-003
|
||||
2.77855532241746 2.24944467758540 5.40055532241896 1.494904962153509E-003
|
||||
2.37977745219306 3.35177745219362 3.44895665179199 3.211654546676234E-003
|
||||
3.22904334821182 3.35177745219362 4.29822254781075 4.684723637814719E-003
|
||||
2.37977745219306 4.20104334821238 4.29822254781075 1.624808994917746E-003
|
||||
2.77855532241746 3.75055532241802 3.89944467758635 4.589068323141860E-003
|
||||
2.37977745219306 2.64822254780980 3.44895665179199 3.211652607049959E-003
|
||||
2.37977745219306 1.79895665179105 4.29822254781075 1.624790957407538E-003
|
||||
3.22904334821182 2.64822254780980 4.29822254781075 4.684722609617732E-003
|
||||
2.77855532241746 2.24944467758540 3.89944467758635 4.589064701779141E-003
|
||||
0.837777452192185 5.09104334821288 5.00177745219456 2.619030553099228E-003
|
||||
0.134222547808370 5.09104334821288 5.00177745219456 4.500141573271056E-003
|
||||
-0.715043348210386 4.24177745219413 5.00177745219456 3.411300175276184E-003
|
||||
-0.264555322416030 4.64055532241853 5.40055532241896 3.808228548934989E-003
|
||||
0.837777452192185 4.24177745219413 3.44895665179199 2.280570306814806E-003
|
||||
0.837777452192185 5.09104334821288 4.29822254781075 4.309741591205764E-003
|
||||
1.23655532241658 4.64055532241853 3.89944467758635 1.958614956973009E-003
|
||||
0.134222547808370 4.24177745219413 3.44895665179199 5.278408364887415E-003
|
||||
0.134222547808370 5.09104334821288 4.29822254781075 4.675390643542593E-003
|
||||
-0.715043348210386 4.24177745219413 4.29822254781075 4.375986720482851E-003
|
||||
-0.264555322416030 4.64055532241853 3.89944467758635 4.947118016685251E-003
|
||||
-0.715043348210386 1.75822254780930 5.00177745219456 3.411302533573733E-003
|
||||
0.134222547808370 0.908956651790540 5.00177745219456 4.500143971475684E-003
|
||||
-0.264555322416030 1.35944467758490 5.40055532241896 3.808230956659822E-003
|
||||
0.837777452192185 0.908956651790540 5.00177745219456 2.619032728035417E-003
|
||||
0.134222547808370 1.75822254780930 3.44895665179199 5.278410123407254E-003
|
||||
-0.715043348210386 1.75822254780930 4.29822254781075 4.375988851564009E-003
|
||||
0.134222547808370 0.908956651790540 4.29822254781075 4.675393023897996E-003
|
||||
-0.264555322416030 1.35944467758490 3.89944467758635 4.947120334453622E-003
|
||||
0.837777452192185 1.75822254780930 3.44895665179199 2.280573839020017E-003
|
||||
0.837777452192185 0.908956651790540 4.29822254781075 4.309742946852189E-003
|
||||
1.23655532241658 1.35944467758490 3.89944467758635 1.958614705954124E-003
|
||||
end
|
||||
|
||||
relativistic
|
||||
|
|
|
|||
38
QA/tests/dft_boron_imom/dft_boron_imom.nw
Normal file
38
QA/tests/dft_boron_imom/dft_boron_imom.nw
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
echo
|
||||
start
|
||||
# 2 2P (2px -> 3py) state of boron
|
||||
# https://dx.doi.org/10.1021/acs.jctc.0c00502
|
||||
|
||||
geometry
|
||||
symmetry c2v
|
||||
B 0. 0. 0.
|
||||
end
|
||||
|
||||
BASIS "ao basis" spherical
|
||||
* library aug-cc-pvtz
|
||||
END
|
||||
|
||||
dft
|
||||
xc hfexch
|
||||
mult 2
|
||||
vectors input atomic output boron_ground.mos
|
||||
end
|
||||
task dft
|
||||
|
||||
dft
|
||||
imom
|
||||
mult 2
|
||||
xc hfexch
|
||||
vectors input boron_ground.mos swap alpha 8 3 output boron_imom.mos
|
||||
convergence lshift 0. density 1d-9
|
||||
end
|
||||
|
||||
task dft
|
||||
|
||||
|
||||
dft
|
||||
vectors input boron_ground.mos swap alpha 8 3 output boron_mom.mos
|
||||
max_ovl
|
||||
end
|
||||
|
||||
task dft
|
||||
3149
QA/tests/dft_boron_imom/dft_boron_imom.out
Normal file
3149
QA/tests/dft_boron_imom/dft_boron_imom.out
Normal file
File diff suppressed because it is too large
Load diff
38
QA/tests/dft_formaldehyde_mom/dft_formaldehyde_mom.nw
Normal file
38
QA/tests/dft_formaldehyde_mom/dft_formaldehyde_mom.nw
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
start
|
||||
|
||||
title "formaldehyde n to pi-star excitation"
|
||||
#https://dx.doi.org/10.1021/acs.jctc.0c00502
|
||||
geometry
|
||||
C 0.00000000 0.00000000 -0.6029850807
|
||||
O 0.00000000 0.00000000 0.6053939853
|
||||
H 0.00000000 0.934673129 -1.182174761
|
||||
H 0.00000000 -0.934673129 -1.182174761
|
||||
end
|
||||
|
||||
basis spherical
|
||||
* library aug-cc-pvtz
|
||||
end
|
||||
|
||||
|
||||
dft
|
||||
xc hfexch
|
||||
vectors input atomic output form_ground.mos
|
||||
end
|
||||
|
||||
task dft
|
||||
|
||||
dft
|
||||
odft
|
||||
vectors input form_ground.mos swap beta 11 8 output form_excited_mom.mos
|
||||
convergence lshift 0. density 1d-8
|
||||
max_ovl
|
||||
end
|
||||
|
||||
task dft
|
||||
|
||||
dft
|
||||
vectors input form_ground.mos swap beta 11 8 output form_excited_imom.mos
|
||||
end
|
||||
set dft:imom t
|
||||
|
||||
task dft
|
||||
8085
QA/tests/dft_formaldehyde_mom/dft_formaldehyde_mom.out
Normal file
8085
QA/tests/dft_formaldehyde_mom/dft_formaldehyde_mom.out
Normal file
File diff suppressed because it is too large
Load diff
47
QA/tests/h2co_zts_par/h2co_zts_par.nw
Normal file
47
QA/tests/h2co_zts_par/h2co_zts_par.nw
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
echo
|
||||
start h2co_zts_par_dat
|
||||
|
||||
charge 0
|
||||
|
||||
geometry geometry nocenter
|
||||
symmetry c1
|
||||
h 0.00000000 0.92415102 -1.07411939
|
||||
h 0.00000000 -0.92415102 -1.07411939
|
||||
c 0.00000000 0.00000000 -0.49305547
|
||||
o 0.00000000 0.00000000 0.69129425
|
||||
end
|
||||
|
||||
geometry endgeom nocenter
|
||||
symmetry c1
|
||||
h -0.00000000 0.85488575 0.91568825
|
||||
h -0.00000000 -0.94470138 -1.11116114
|
||||
c 0.00000000 0.10071217 -0.77208781
|
||||
o 0.00000000 -0.01089653 0.52279419
|
||||
end
|
||||
|
||||
|
||||
basis
|
||||
* library 6-31g*
|
||||
end
|
||||
|
||||
print low
|
||||
|
||||
scf
|
||||
direct
|
||||
end
|
||||
|
||||
string
|
||||
tol 0.001d0
|
||||
stepsize 0.20d0
|
||||
nbeads 24
|
||||
maxiter 100
|
||||
interpol 1
|
||||
mode parallel
|
||||
end
|
||||
|
||||
# We have to freeze the end points since this reaction has no barrier
|
||||
set string:freezen .true.
|
||||
set string:freeze1 .true.
|
||||
|
||||
task string scf
|
||||
|
||||
49558
QA/tests/h2co_zts_par/h2co_zts_par.out
Normal file
49558
QA/tests/h2co_zts_par/h2co_zts_par.out
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,5 +1,4 @@
|
|||
running on 6 processors
|
||||
argument 1 = acrylic-acid.nw
|
||||
argument 1 = /home/workspace/jochena/nwchem/loc-bugfix/QA/tests/localize-ibo-aa/localize-ibo-aa.nw
|
||||
|
||||
|
||||
|
||||
|
|
@ -80,11 +79,9 @@ property
|
|||
localization ibo 2
|
||||
end
|
||||
|
||||
#task scf energy
|
||||
task scf property
|
||||
|
||||
|
||||
|
||||
================================================================================
|
||||
|
||||
|
||||
|
|
@ -92,7 +89,7 @@ task scf property
|
|||
|
||||
|
||||
|
||||
Northwest Computational Chemistry Package (NWChem) 7.2.0
|
||||
Northwest Computational Chemistry Package (NWChem) 7.2.1
|
||||
--------------------------------------------------------
|
||||
|
||||
|
||||
|
|
@ -126,20 +123,20 @@ task scf property
|
|||
---------------
|
||||
|
||||
hostname = ja04
|
||||
program = /home/workspace/jochena/nwchem/github-fork-ibovir-devel/bin/LINUX64/nwchem
|
||||
date = Tue Feb 14 12:19:49 2023
|
||||
program = /home/workspace/jochena/nwchem/loc-bugfix/bin/LINUX64/nwchem
|
||||
date = Wed Jan 3 09:35:21 2024
|
||||
|
||||
compiled = Tue_Feb_14_12:19:44_2023
|
||||
source = /home/workspace/jochena/nwchem/github-fork-ibovir-devel
|
||||
nwchem branch = 7.2.0
|
||||
nwchem revision = nwchem_on_git-4622-g8f291f7cfd
|
||||
compiled = Wed_Jan_03_09:30:30_2024
|
||||
source = /home/workspace/jochena/nwchem/loc-bugfix
|
||||
nwchem branch = 7.2.1
|
||||
nwchem revision = nwchem_on_git-5270-g7a744690ee
|
||||
ga revision = 5.8.0
|
||||
use scalapack = F
|
||||
input = acrylic-acid.nw
|
||||
input = /home/workspace/jochena/nwchem/loc-bugfix/QA/tests/localize-ibo-aa/localize-ibo-aa.nw
|
||||
prefix = testjob.
|
||||
data base = ./testjob.db
|
||||
status = startup
|
||||
nproc = 5
|
||||
nproc = 7
|
||||
time left = -1s
|
||||
|
||||
|
||||
|
|
@ -147,10 +144,10 @@ task scf property
|
|||
Memory information
|
||||
------------------
|
||||
|
||||
heap = 6553598 doubles = 50.0 Mbytes
|
||||
stack = 6553595 doubles = 50.0 Mbytes
|
||||
global = 13107200 doubles = 100.0 Mbytes (distinct from heap & stack)
|
||||
total = 26214393 doubles = 200.0 Mbytes
|
||||
heap = 6553594 doubles = 50.0 Mbytes
|
||||
stack = 6553599 doubles = 50.0 Mbytes
|
||||
global = 13107200 doubles = 100.0 Mbytes (distinct from heap & stack)
|
||||
total = 26214393 doubles = 200.0 Mbytes
|
||||
verify = yes
|
||||
hardfail = no
|
||||
|
||||
|
|
@ -159,7 +156,7 @@ task scf property
|
|||
---------------------
|
||||
|
||||
0 permanent = .
|
||||
0 scratch = /tmp
|
||||
0 scratch = .
|
||||
|
||||
|
||||
|
||||
|
|
@ -267,7 +264,7 @@ task scf property
|
|||
|
||||
library name resolved from: environment
|
||||
library file name is: <
|
||||
/home/workspace/jochena/nwchem/github-fork-ibovir-devel/src/basis/libraries/>
|
||||
/home/workspace/jochena/nwchem/loc-bugfix/src/basis/libraries/>
|
||||
|
||||
|
||||
|
||||
|
|
@ -280,7 +277,7 @@ task scf property
|
|||
|
||||
library name resolved from: environment
|
||||
library file name is: <
|
||||
/home/workspace/jochena/nwchem/github-fork-ibovir-devel/src/basis/libraries/>
|
||||
/home/workspace/jochena/nwchem/loc-bugfix/src/basis/libraries/>
|
||||
|
||||
Basis "iao basis" -> "" (spherical)
|
||||
-----
|
||||
|
|
@ -471,7 +468,7 @@ task scf property
|
|||
|
||||
|
||||
|
||||
Forming initial guess at 0.0s
|
||||
Forming initial guess at 0.1s
|
||||
|
||||
|
||||
Superposition of Atomic Density Guess
|
||||
|
|
@ -489,7 +486,7 @@ task scf property
|
|||
LUMO = -0.055429
|
||||
|
||||
|
||||
Starting SCF solution at 0.1s
|
||||
Starting SCF solution at 0.2s
|
||||
|
||||
|
||||
|
||||
|
|
@ -504,22 +501,22 @@ task scf property
|
|||
|
||||
iter energy gnorm gmax time
|
||||
----- ------------------- --------- --------- --------
|
||||
1 -265.3310324443 1.42D+00 2.92D-01 0.1
|
||||
2 -265.4360577045 4.13D-01 8.78D-02 0.2
|
||||
3 -265.4514376314 3.64D-02 9.22D-03 0.4
|
||||
4 -265.4516512505 1.03D-03 2.34D-04 0.6
|
||||
1 -265.3310324443 1.42D+00 2.92D-01 0.2
|
||||
2 -265.4360577045 4.13D-01 8.78D-02 0.3
|
||||
3 -265.4514376314 3.64D-02 9.22D-03 0.5
|
||||
4 -265.4516512505 1.03D-03 2.34D-04 0.7
|
||||
5 -265.4516513711 7.80D-06 1.92D-06 0.9
|
||||
|
||||
|
||||
Final RHF results
|
||||
------------------
|
||||
|
||||
Total SCF energy = -265.451651371050
|
||||
Total SCF energy = -265.451651371051
|
||||
One-electron energy = -682.442839763841
|
||||
Two-electron energy = 255.473969802116
|
||||
Nuclear repulsion energy = 161.517218590675
|
||||
|
||||
Time for solution = 0.9s
|
||||
Time for solution = 0.7s
|
||||
|
||||
|
||||
Final eigenvalues
|
||||
|
|
@ -560,7 +557,7 @@ task scf property
|
|||
-------------------------------------
|
||||
|
||||
Vector 6 Occ=2.000000D+00 E=-1.441125D+00
|
||||
MO Center= -1.1D+00, 2.6D-02, -2.1D-17, r^2= 1.2D+00
|
||||
MO Center= -1.1D+00, 2.6D-02, 7.5D-17, r^2= 1.2D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
58 0.413566 5 O s 30 0.293845 3 C s
|
||||
|
|
@ -568,7 +565,7 @@ task scf property
|
|||
57 0.208468 5 O s 45 0.150994 4 O s
|
||||
|
||||
Vector 7 Occ=2.000000D+00 E=-1.338769D+00
|
||||
MO Center= -9.1D-01, -4.1D-01, 6.6D-17, r^2= 1.4D+00
|
||||
MO Center= -9.1D-01, -4.1D-01, -5.3D-17, r^2= 1.4D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
44 0.424994 4 O s 58 -0.352816 5 O s
|
||||
|
|
@ -577,7 +574,7 @@ task scf property
|
|||
57 -0.176450 5 O s
|
||||
|
||||
Vector 8 Occ=2.000000D+00 E=-1.070923D+00
|
||||
MO Center= 1.1D+00, 2.8D-01, 3.4D-17, r^2= 1.5D+00
|
||||
MO Center= 1.1D+00, 2.8D-01, 1.6D-17, r^2= 1.5D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
16 0.400200 2 C s 2 0.337172 1 C s
|
||||
|
|
@ -585,7 +582,7 @@ task scf property
|
|||
17 0.160365 2 C s
|
||||
|
||||
Vector 9 Occ=2.000000D+00 E=-8.974613D-01
|
||||
MO Center= 2.3D-01, 2.6D-01, -1.0D-16, r^2= 3.3D+00
|
||||
MO Center= 2.3D-01, 2.6D-01, -3.0D-17, r^2= 3.3D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
30 -0.305983 3 C s 2 0.303431 1 C s
|
||||
|
|
@ -594,7 +591,7 @@ task scf property
|
|||
1 -0.152955 1 C s
|
||||
|
||||
Vector 10 Occ=2.000000D+00 E=-7.642057D-01
|
||||
MO Center= 1.6D-01, 3.0D-01, 5.3D-16, r^2= 4.1D+00
|
||||
MO Center= 1.6D-01, 3.0D-01, 1.4D-16, r^2= 4.1D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
60 0.316925 5 O px 16 -0.241192 2 C s
|
||||
|
|
@ -604,7 +601,7 @@ task scf property
|
|||
4 0.156757 1 C px 71 0.155748 6 H s
|
||||
|
||||
Vector 11 Occ=2.000000D+00 E=-7.114488D-01
|
||||
MO Center= 2.7D-01, 9.8D-03, -3.3D-16, r^2= 3.1D+00
|
||||
MO Center= 2.7D-01, 9.8D-03, -2.5D-16, r^2= 3.1D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
19 0.248395 2 C py 81 0.212079 8 H s
|
||||
|
|
@ -614,7 +611,7 @@ task scf property
|
|||
44 0.168207 4 O s 46 -0.165171 4 O px
|
||||
|
||||
Vector 12 Occ=2.000000D+00 E=-6.942998D-01
|
||||
MO Center= -5.7D-01, -1.8D-01, -2.1D-16, r^2= 3.0D+00
|
||||
MO Center= -5.7D-01, -1.8D-01, -7.4D-17, r^2= 3.0D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
61 0.332130 5 O py 47 -0.285481 4 O py
|
||||
|
|
@ -624,7 +621,7 @@ task scf property
|
|||
33 0.150516 3 C py
|
||||
|
||||
Vector 13 Occ=2.000000D+00 E=-6.290129D-01
|
||||
MO Center= -9.9D-01, 1.2D-01, -3.2D-16, r^2= 1.6D+00
|
||||
MO Center= -9.9D-01, 1.2D-01, 4.4D-16, r^2= 1.6D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
62 0.438625 5 O pz 65 0.308876 5 O pz
|
||||
|
|
@ -632,7 +629,7 @@ task scf property
|
|||
51 0.167682 4 O pz 37 0.158757 3 C pz
|
||||
|
||||
Vector 14 Occ=2.000000D+00 E=-6.234118D-01
|
||||
MO Center= 8.0D-01, 1.3D-02, 4.5D-16, r^2= 3.8D+00
|
||||
MO Center= 8.0D-01, 1.3D-02, -4.6D-16, r^2= 3.8D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
4 0.334286 1 C px 76 0.262842 7 H s
|
||||
|
|
@ -641,7 +638,7 @@ task scf property
|
|||
18 -0.161739 2 C px
|
||||
|
||||
Vector 15 Occ=2.000000D+00 E=-5.982438D-01
|
||||
MO Center= -2.3D-02, 2.4D-01, -3.8D-17, r^2= 3.5D+00
|
||||
MO Center= -2.3D-02, 2.4D-01, -8.4D-17, r^2= 3.5D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
61 0.305744 5 O py 18 0.273635 2 C px
|
||||
|
|
@ -651,7 +648,7 @@ task scf property
|
|||
33 -0.180575 3 C py 71 -0.170295 6 H s
|
||||
|
||||
Vector 16 Occ=2.000000D+00 E=-5.496397D-01
|
||||
MO Center= 1.1D+00, 6.0D-02, 3.0D-16, r^2= 3.3D+00
|
||||
MO Center= 1.1D+00, 6.0D-02, 5.2D-17, r^2= 3.3D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
5 0.298431 1 C py 71 -0.271981 6 H s
|
||||
|
|
@ -660,7 +657,7 @@ task scf property
|
|||
33 0.163556 3 C py 61 -0.150120 5 O py
|
||||
|
||||
Vector 17 Occ=2.000000D+00 E=-4.889073D-01
|
||||
MO Center= -9.0D-01, -2.5D-01, -5.3D-16, r^2= 2.0D+00
|
||||
MO Center= -9.0D-01, -2.5D-01, -2.7D-16, r^2= 2.0D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
62 -0.430815 5 O pz 48 0.407766 4 O pz
|
||||
|
|
@ -668,7 +665,7 @@ task scf property
|
|||
34 0.166236 3 C pz
|
||||
|
||||
Vector 18 Occ=2.000000D+00 E=-4.582158D-01
|
||||
MO Center= -5.2D-01, -7.3D-01, -1.6D-16, r^2= 1.9D+00
|
||||
MO Center= -5.2D-01, -7.3D-01, 1.5D-18, r^2= 1.9D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
46 0.549426 4 O px 49 0.417524 4 O px
|
||||
|
|
@ -676,7 +673,7 @@ task scf property
|
|||
64 -0.174821 5 O py 18 0.151160 2 C px
|
||||
|
||||
Vector 19 Occ=2.000000D+00 E=-4.009704D-01
|
||||
MO Center= 1.1D+00, 1.5D-01, -4.1D-16, r^2= 2.0D+00
|
||||
MO Center= 1.1D+00, 1.5D-01, 2.8D-16, r^2= 2.0D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
20 0.384445 2 C pz 6 0.352495 1 C pz
|
||||
|
|
@ -684,7 +681,7 @@ task scf property
|
|||
48 -0.214439 4 O pz 51 -0.173233 4 O pz
|
||||
|
||||
Vector 20 Occ=0.000000D+00 E= 9.067747D-02
|
||||
MO Center= 8.9D-01, 1.5D-02, 9.9D-17, r^2= 3.0D+00
|
||||
MO Center= 8.9D-01, 1.5D-02, 1.4D-16, r^2= 3.0D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
9 0.621145 1 C pz 23 -0.459696 2 C pz
|
||||
|
|
@ -694,7 +691,7 @@ task scf property
|
|||
65 0.155474 5 O pz
|
||||
|
||||
Vector 21 Occ=0.000000D+00 E= 1.933962D-01
|
||||
MO Center= -2.6D+00, 1.3D-01, 2.0D-16, r^2= 2.6D+00
|
||||
MO Center= -2.6D+00, 1.3D-01, -3.8D-16, r^2= 2.6D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
87 1.532433 9 H s 17 -0.762684 2 C s
|
||||
|
|
@ -704,7 +701,7 @@ task scf property
|
|||
60 0.181785 5 O px 3 0.180050 1 C s
|
||||
|
||||
Vector 22 Occ=0.000000D+00 E= 1.990748D-01
|
||||
MO Center= 2.4D+00, 1.2D+00, 5.2D-17, r^2= 4.4D+00
|
||||
MO Center= 2.4D+00, 1.2D+00, 7.7D-17, r^2= 4.4D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
3 1.857859 1 C s 77 -1.791874 7 H s
|
||||
|
|
@ -714,7 +711,7 @@ task scf property
|
|||
8 0.218519 1 C py 35 0.169789 3 C px
|
||||
|
||||
Vector 23 Occ=0.000000D+00 E= 2.314259D-01
|
||||
MO Center= 1.7D+00, -2.0D-01, 9.0D-16, r^2= 6.0D+00
|
||||
MO Center= 1.7D+00, -2.0D-01, -1.4D-15, r^2= 6.0D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
3 1.936960 1 C s 72 -1.805329 6 H s
|
||||
|
|
@ -723,7 +720,7 @@ task scf property
|
|||
8 -0.489914 1 C py 5 -0.154259 1 C py
|
||||
|
||||
Vector 24 Occ=0.000000D+00 E= 2.626515D-01
|
||||
MO Center= 1.3D-01, -2.5D-02, 7.6D-16, r^2= 2.9D+00
|
||||
MO Center= 1.3D-01, -2.5D-02, 3.0D-15, r^2= 2.9D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
37 -0.804941 3 C pz 23 0.756689 2 C pz
|
||||
|
|
@ -733,7 +730,7 @@ task scf property
|
|||
62 0.158924 5 O pz
|
||||
|
||||
Vector 25 Occ=0.000000D+00 E= 2.688800D-01
|
||||
MO Center= 1.9D+00, 3.8D-01, -1.8D-15, r^2= 6.9D+00
|
||||
MO Center= 1.9D+00, 3.8D-01, -1.9D-16, r^2= 6.9D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
77 -1.706163 7 H s 72 1.689090 6 H s
|
||||
|
|
@ -743,7 +740,7 @@ task scf property
|
|||
87 -0.319009 9 H s 3 -0.288918 1 C s
|
||||
|
||||
Vector 26 Occ=0.000000D+00 E= 3.855495D-01
|
||||
MO Center= -4.6D-01, -2.3D-01, -1.7D-16, r^2= 3.7D+00
|
||||
MO Center= -4.6D-01, -2.3D-01, -1.3D-15, r^2= 3.7D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
31 4.026240 3 C s 45 -1.439431 4 O s
|
||||
|
|
@ -753,7 +750,7 @@ task scf property
|
|||
50 -0.560923 4 O py 82 -0.528079 8 H s
|
||||
|
||||
Vector 27 Occ=0.000000D+00 E= 4.475195D-01
|
||||
MO Center= 5.8D-01, 2.5D-01, 3.4D-16, r^2= 3.9D+00
|
||||
MO Center= 5.8D-01, 2.5D-01, 3.0D-16, r^2= 3.9D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
21 3.533345 2 C px 3 -2.731556 1 C s
|
||||
|
|
@ -763,7 +760,7 @@ task scf property
|
|||
7 0.878572 1 C px 30 0.524028 3 C s
|
||||
|
||||
Vector 28 Occ=0.000000D+00 E= 4.523376D-01
|
||||
MO Center= 1.5D+00, -1.4D-01, -3.7D-16, r^2= 4.3D+00
|
||||
MO Center= 1.5D+00, -1.4D-01, 5.7D-17, r^2= 4.3D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
17 6.048068 2 C s 3 -4.672145 1 C s
|
||||
|
|
@ -773,7 +770,7 @@ task scf property
|
|||
59 -0.983223 5 O s 36 0.975052 3 C py
|
||||
|
||||
Vector 29 Occ=0.000000D+00 E= 4.789847D-01
|
||||
MO Center= 2.6D-01, 3.3D-01, 2.1D-18, r^2= 3.8D+00
|
||||
MO Center= 2.6D-01, 3.3D-01, -2.4D-17, r^2= 3.8D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
17 2.858248 2 C s 3 -2.090889 1 C s
|
||||
|
|
@ -783,7 +780,7 @@ task scf property
|
|||
35 0.814942 3 C px 63 0.614144 5 O px
|
||||
|
||||
Vector 30 Occ=0.000000D+00 E= 5.702926D-01
|
||||
MO Center= 1.4D+00, 5.8D-01, -1.9D-15, r^2= 2.8D+00
|
||||
MO Center= 1.4D+00, 5.8D-01, 4.7D-15, r^2= 2.8D+00
|
||||
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||
----- ------------ --------------- ----- ------------ ---------------
|
||||
17 2.332617 2 C s 31 -1.303425 3 C s
|
||||
|
|
@ -831,9 +828,9 @@ task scf property
|
|||
|
||||
2 2 0 0 -15.439146 0.000000 246.890742
|
||||
2 1 1 0 0.077897 0.000000 0.000002
|
||||
2 1 0 1 0.000000 0.000000 0.000000
|
||||
2 1 0 1 -0.000000 0.000000 0.000000
|
||||
2 0 2 0 -24.880694 0.000000 90.697964
|
||||
2 0 1 1 -0.000000 0.000000 0.000000
|
||||
2 0 1 1 0.000000 0.000000 0.000000
|
||||
2 0 0 2 -22.450650 0.000000 0.000000
|
||||
|
||||
|
||||
|
|
@ -866,7 +863,7 @@ task scf property
|
|||
6 2.1555070209 1.5083589529 8.63D-05
|
||||
7 2.1555070209 1.5083589538 6.36D-06
|
||||
8 2.1555070209 1.5083589538 9.22D-08
|
||||
9 2.1555070209 1.5083589538 3.73D-09
|
||||
9 2.1555070209 1.5083589538 5.27D-09
|
||||
|
||||
IBO loc: largest element in C(MO,T) C(MO) -1: 0.00000000
|
||||
should be zero, for IBOs in the IAO basis
|
||||
|
|
@ -910,17 +907,16 @@ task scf property
|
|||
|
||||
iter Max. delocal Mean delocal Converge
|
||||
---- ------------ ------------ --------
|
||||
1 5.7963239473 4.2732750386 0.00D+00
|
||||
2 2.4941110119 2.1820228090 7.23D-01
|
||||
3 2.1364906389 1.9920797446 4.32D-01
|
||||
4 2.1348072188 1.9904017968 1.39D-01
|
||||
5 2.1348013497 1.9903805756 9.02D-03
|
||||
6 2.1348017491 1.9903804736 7.84D-04
|
||||
7 2.1348017624 1.9903804751 5.13D-05
|
||||
8 2.1348017624 1.9903804751 3.41D-06
|
||||
9 2.1348017624 1.9903804751 2.26D-07
|
||||
10 2.1348017624 1.9903804751 1.34D-08
|
||||
11 2.1348017624 1.9903804751 5.27D-09
|
||||
1 7.4855751970 4.3168336458 0.00D+00
|
||||
2 2.3398085416 2.0873841008 7.55D-01
|
||||
3 2.1346570467 1.9908868937 3.58D-01
|
||||
4 2.1348158454 1.9903813928 2.36D-02
|
||||
5 2.1348018590 1.9903804763 1.30D-03
|
||||
6 2.1348017645 1.9903804752 8.92D-05
|
||||
7 2.1348017626 1.9903804751 5.81D-06
|
||||
8 2.1348017626 1.9903804751 3.87D-07
|
||||
9 2.1348017626 1.9903804751 2.53D-08
|
||||
10 2.1348017626 1.9903804751 0.00D+00
|
||||
|
||||
IBO loc: largest element in C(MO,T) C(MO) -1: 0.00000000
|
||||
should be zero, for IBOs in the IAO basis
|
||||
|
|
@ -943,9 +939,35 @@ task scf property
|
|||
in file locorb.movecs, number
|
||||
20 to 29
|
||||
|
||||
IBO transformation (occ.) written to file
|
||||
./testjob.lmotrans
|
||||
|
||||
Exiting Localization driver routine
|
||||
|
||||
Task times cpu: 1.0s wall: 1.2s
|
||||
-------------
|
||||
Dipole Moment
|
||||
-------------
|
||||
|
||||
Center of charge (in au) is the expansion point
|
||||
X = 0.0000000 Y = -0.0000000 Z = 0.0000000
|
||||
|
||||
Dipole moment 0.6842748873 A.U.
|
||||
DMX 0.3687094649 DMXEFC 0.0000000000
|
||||
DMY 0.5764420629 DMYEFC 0.0000000000
|
||||
DMZ 0.0000000000 DMZEFC 0.0000000000
|
||||
-EFC- dipole 0.0000000000 A.U.
|
||||
Total dipole 0.6842748873 A.U.
|
||||
|
||||
Dipole moment 1.7392664243 Debye(s)
|
||||
DMX 0.9371730637 DMXEFC 0.0000000000
|
||||
DMY 1.4651806521 DMYEFC 0.0000000000
|
||||
DMZ 0.0000000000 DMZEFC 0.0000000000
|
||||
-EFC- dipole 0.0000000000 DEBYE(S)
|
||||
Total dipole 1.7392664243 DEBYE(S)
|
||||
|
||||
1 a.u. = 2.541766 Debyes
|
||||
|
||||
Task times cpu: 0.9s wall: 0.9s
|
||||
|
||||
|
||||
NWChem Input Module
|
||||
|
|
@ -967,7 +989,7 @@ MA usage statistics:
|
|||
current number of blocks 0 0
|
||||
maximum number of blocks 22 14
|
||||
current total bytes 0 0
|
||||
maximum total bytes 139376 22511288
|
||||
maximum total bytes 139408 22511320
|
||||
maximum total K-bytes 140 22512
|
||||
maximum total M-bytes 1 23
|
||||
|
||||
|
|
@ -1025,4 +1047,4 @@ MA usage statistics:
|
|||
K. Glaesemann, G. Sandrone, M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe,
|
||||
A. T. Wong, Z. Zhang.
|
||||
|
||||
Total times cpu: 1.0s wall: 1.2s
|
||||
Total times cpu: 1.0s wall: 1.0s
|
||||
|
|
|
|||
553
QA/tests/localize-ibo-allyl/dplot.nw
Normal file
553
QA/tests/localize-ibo-allyl/dplot.nw
Normal file
|
|
@ -0,0 +1,553 @@
|
|||
start testjob
|
||||
|
||||
title "allylic_radical IBO localization"
|
||||
|
||||
geometry units angstrom
|
||||
C -0.25784636 1.21851111 0.00000000
|
||||
H -1.34417006 1.24248062 0.00000000
|
||||
H 0.25678777 2.17304362 0.00000000
|
||||
C 0.43614025 0.01428420 0.00000000
|
||||
H 1.52527261 0.06222464 0.00000000
|
||||
C -0.14953749 -1.24624893 0.00000000
|
||||
H -1.22943924 -1.36577805 0.00000000
|
||||
H 0.44767502 -2.15141880 0.00000000
|
||||
end
|
||||
|
||||
basis "ao basis"
|
||||
* library 6-31G*
|
||||
end
|
||||
|
||||
basis "iao basis"
|
||||
* library STO-6G
|
||||
end
|
||||
|
||||
dft
|
||||
xc b3lyp
|
||||
mult 2
|
||||
end
|
||||
|
||||
property
|
||||
localization ibo 2
|
||||
end
|
||||
|
||||
#task dft property
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;1
|
||||
output allyl_radical-alpha-00001.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;2
|
||||
output allyl_radical-alpha-00002.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;3
|
||||
output allyl_radical-alpha-00003.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;4
|
||||
output allyl_radical-alpha-00004.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;5
|
||||
output allyl_radical-alpha-00005.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;6
|
||||
output allyl_radical-alpha-00006.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;7
|
||||
output allyl_radical-alpha-00007.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;8
|
||||
output allyl_radical-alpha-00008.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;9
|
||||
output allyl_radical-alpha-00009.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;10
|
||||
output allyl_radical-alpha-00010.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;11
|
||||
output allyl_radical-alpha-00011.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;12
|
||||
output allyl_radical-alpha-00012.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;13
|
||||
output allyl_radical-alpha-00013.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;14
|
||||
output allyl_radical-alpha-00014.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;15
|
||||
output allyl_radical-alpha-00015.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;16
|
||||
output allyl_radical-alpha-00016.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;17
|
||||
output allyl_radical-alpha-00017.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;18
|
||||
output allyl_radical-alpha-00018.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;19
|
||||
output allyl_radical-alpha-00019.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin alpha
|
||||
orbitals view;1;20
|
||||
output allyl_radical-alpha-00020.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;1
|
||||
output allyl_radical-beta-00001.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;2
|
||||
output allyl_radical-beta-00002.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;3
|
||||
output allyl_radical-beta-00003.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;4
|
||||
output allyl_radical-beta-00004.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;5
|
||||
output allyl_radical-beta-00005.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;6
|
||||
output allyl_radical-beta-00006.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;7
|
||||
output allyl_radical-beta-00007.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;8
|
||||
output allyl_radical-beta-00008.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;9
|
||||
output allyl_radical-beta-00009.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;10
|
||||
output allyl_radical-beta-00010.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;11
|
||||
output allyl_radical-beta-00011.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;12
|
||||
output allyl_radical-beta-00012.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;13
|
||||
output allyl_radical-beta-00013.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;14
|
||||
output allyl_radical-beta-00014.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;15
|
||||
output allyl_radical-beta-00015.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;16
|
||||
output allyl_radical-beta-00016.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;17
|
||||
output allyl_radical-beta-00017.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;18
|
||||
output allyl_radical-beta-00018.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;19
|
||||
output allyl_radical-beta-00019.cube
|
||||
end
|
||||
task dplot
|
||||
|
||||
dplot
|
||||
vectors locorb.movecs
|
||||
limitxyz
|
||||
-5.34417006 5.52527261 50
|
||||
-6.1514188 6.17304362 50
|
||||
-4.0 4.0 50
|
||||
gaussian
|
||||
spin beta
|
||||
orbitals view;1;20
|
||||
output allyl_radical-beta-00020.cube
|
||||
end
|
||||
task dplot
|
||||
33
QA/tests/localize-ibo-allyl/localize-ibo-allyl.nw
Normal file
33
QA/tests/localize-ibo-allyl/localize-ibo-allyl.nw
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
start testjob
|
||||
|
||||
title "allylic_radical IBO localization"
|
||||
|
||||
geometry units angstrom
|
||||
C -0.25784636 1.21851111 0.00000000
|
||||
H -1.34417006 1.24248062 0.00000000
|
||||
H 0.25678777 2.17304362 0.00000000
|
||||
C 0.43614025 0.01428420 0.00000000
|
||||
H 1.52527261 0.06222464 0.00000000
|
||||
C -0.14953749 -1.24624893 0.00000000
|
||||
H -1.22943924 -1.36577805 0.00000000
|
||||
H 0.44767502 -2.15141880 0.00000000
|
||||
end
|
||||
|
||||
basis "ao basis"
|
||||
* library 6-31G*
|
||||
end
|
||||
|
||||
basis "iao basis"
|
||||
* library STO-6G
|
||||
end
|
||||
|
||||
dft
|
||||
xc b3lyp
|
||||
mult 2
|
||||
end
|
||||
|
||||
property
|
||||
localization ibo 2
|
||||
end
|
||||
|
||||
task dft property
|
||||
2006
QA/tests/localize-ibo-allyl/localize-ibo-allyl.out
Normal file
2006
QA/tests/localize-ibo-allyl/localize-ibo-allyl.out
Normal file
File diff suppressed because it is too large
Load diff
29
QA/tests/localize-pm-allyl/localize-pm-allyl.nw
Normal file
29
QA/tests/localize-pm-allyl/localize-pm-allyl.nw
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
start testjob
|
||||
|
||||
title "allylic_radical IBO localization"
|
||||
|
||||
geometry units angstrom
|
||||
C -0.25784636 1.21851111 0.00000000
|
||||
H -1.34417006 1.24248062 0.00000000
|
||||
H 0.25678777 2.17304362 0.00000000
|
||||
C 0.43614025 0.01428420 0.00000000
|
||||
H 1.52527261 0.06222464 0.00000000
|
||||
C -0.14953749 -1.24624893 0.00000000
|
||||
H -1.22943924 -1.36577805 0.00000000
|
||||
H 0.44767502 -2.15141880 0.00000000
|
||||
end
|
||||
|
||||
basis "ao basis"
|
||||
* library 6-31G
|
||||
end
|
||||
|
||||
dft
|
||||
xc b3lyp
|
||||
mult 2
|
||||
end
|
||||
|
||||
property
|
||||
localization pm 2
|
||||
end
|
||||
|
||||
task dft property
|
||||
1531
QA/tests/localize-pm-allyl/localize-pm-allyl.out
Normal file
1531
QA/tests/localize-pm-allyl/localize-pm-allyl.out
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -12,14 +12,11 @@
|
|||
# (9) 1/2 * delV * delQdyn term = -0.0000281700 ( -0.0008 eV)
|
||||
# (10) VEM vertical excitation energy (6) - (1) = 0.0721102600 ( 1.9622 eV)
|
||||
#
|
||||
echo 'p2ta_VEMExc_StressTest: Porphyrin in DMSO'
|
||||
echo
|
||||
title "p2ta_VEMExc_StressTest: Porphyrin in DMSO"
|
||||
|
||||
start p2ta-vem
|
||||
|
||||
scratch_dir /scratch
|
||||
permanent_dir ./perm
|
||||
|
||||
memory stack 1200 mb heap 100 mb global 1500 mb noverify
|
||||
|
||||
geometry units angstrom
|
||||
symmetry d2h
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -13,10 +13,10 @@ end
|
|||
|
||||
python
|
||||
print ("value check:")
|
||||
print ("INT = "), INT
|
||||
print ("DBL = "), DBL
|
||||
print ("CHAR = "), CHAR
|
||||
print ("LOGICAL = "), LOGICAL
|
||||
print ("INT = ", INT)
|
||||
print ("DBL = ", DBL)
|
||||
print ("CHAR = ", CHAR)
|
||||
print ("LOGICAL = ", LOGICAL)
|
||||
|
||||
rtdb_put("test_int2", 22)
|
||||
print (' Done 1')
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -58,18 +58,19 @@ END
|
|||
|
||||
scf
|
||||
thresh 1.0e-10
|
||||
tol2e 1.0e-10
|
||||
doublet
|
||||
tol2e 1.0e-13
|
||||
doublet
|
||||
rohf
|
||||
end
|
||||
|
||||
tce
|
||||
freeze atomic
|
||||
creomsd(t)
|
||||
eomsol 1
|
||||
tilesize 10
|
||||
thresh 1.0d-6
|
||||
thresh 5.0d-6
|
||||
nroots 2
|
||||
end
|
||||
|
||||
task tce energy
|
||||
|
||||
task tce energy
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
44
README.md
44
README.md
|
|
@ -2,15 +2,21 @@
|
|||
[](https://github.com/nwchemgit/nwchem/actions)
|
||||
<!---[](https://travis-ci.org/nwchemgit/nwchem/builds)--->
|
||||
[](https://raw.githubusercontent.com/nwchemgit/nwchem/master/LICENSE.md)
|
||||
[](https://github.com/nwchemgit/nwchem/releases)
|
||||

|
||||

|
||||

|
||||
[](https://github.com/nwchemgit/nwchem/releases/tag/v6.8-release)
|
||||
[](https://github.com/nwchemgit/nwchem/releases/tag/6.8.1-release)
|
||||
[](https://github.com/nwchemgit/nwchem/releases/tag/v7.0.0-release)
|
||||
[](https://github.com/nwchemgit/nwchem/releases/tag/v7.0.2-release)
|
||||
[](https://github.com/nwchemgit/nwchem/releases/tag/v7.2.0-release)
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
[](https://github.com/nwchemgit/nwchem/releases)
|
||||
|
||||
[](https://github.com/nwchemgit/nwchem/releases)
|
||||

|
||||
[](https://www.emsl.pnl.gov)
|
||||
|
||||
## NWChem: Open Source High-Performance Computational Chemistry
|
||||
|
|
@ -20,25 +26,25 @@ located at the Pacific Northwest National Laboratory (PNNL) in Washington State
|
|||
|
||||
### Scalable computational chemistry tools
|
||||
|
||||
Source download instructions
|
||||
Source download instructions for developers
|
||||
|
||||
* Master
|
||||
|
||||
```
|
||||
git clone https://github.com/nwchemgit/nwchem.git
|
||||
|
||||
* 7.2.0 Release
|
||||
|
||||
git clone -b release-7-2-0 https://github.com/nwchemgit/nwchem.git nwchem-7.2.0
|
||||
|
||||
### Release 7.2.0
|
||||
```
|
||||
* 7.2.3 Release
|
||||
```
|
||||
git clone -b hotfix/release-7-2-0 https://github.com/nwchemgit/nwchem.git nwchem-7.2.3
|
||||
```
|
||||
### Release 7.2.3
|
||||
|
||||
Release files available at the page
|
||||
https://github.com/nwchemgit/nwchem/releases/tag/v7.2.0-release
|
||||
https://github.com/nwchemgit/nwchem/releases/tag/v7.2.3-release
|
||||
Tar files for download:
|
||||
https://github.com/nwchemgit/nwchem/releases/download/v7.2.0-release/nwchem-7.2.0-release.revision-d0d141fd-srconly.2023-03-10.tar.bz2
|
||||
https://github.com/nwchemgit/nwchem/releases/download/v7.2.0-release/nwchem-7.2.0-release.revision-d0d141fd-nonsrconly.2023-03-10.tar.bz2
|
||||
https://github.com/nwchemgit/nwchem/releases/download/v7.2.3-release/nwchem-7.2.3-release.revision-d690e065-srconly.2024-08-27.tar.bz2
|
||||
https://github.com/nwchemgit/nwchem/releases/download/v7.2.3-release/nwchem-7.2.3-release.revision-d690e065-nonsrconly.2024-08-27.tar.bz2
|
||||
Release notes available at
|
||||
https://raw.githubusercontent.com/nwchemgit/nwchem/v7.2.0-release/release.notes.7.2.0
|
||||
https://github.com/nwchemgit/nwchem/blob/master/release.notes.7.2.3.md
|
||||
|
||||
### Documentation
|
||||
https://nwchemgit.github.io
|
||||
|
|
|
|||
13
contrib/getfiles.nwchem
Normal file → Executable file
13
contrib/getfiles.nwchem
Normal file → Executable file
|
|
@ -3,13 +3,18 @@
|
|||
# $Id$
|
||||
cd $NWCHEM_TOP/src/nwpw/nwpwlib/nwpwxc/
|
||||
rm -f dftd3.tgz
|
||||
wget https://www.chemie.uni-bonn.de/pctc/mulliken-center/software/dft-d3/dftd3.tgz
|
||||
wget https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3/dftd3.tgz
|
||||
cd $NWCHEM_TOP/src/libext/openblas
|
||||
VERSION=0.3.13
|
||||
VERSION=0.3.27
|
||||
rm -rf OpenBLAS*gz
|
||||
curl -L https://github.com/xianyi/OpenBLAS/archive/v${VERSION}.tar.gz -o OpenBLAS-${VERSION}.tar.gz
|
||||
cd $NWCHEM_TOP/src/libext/scalapack
|
||||
COMMIT=bc6cad585362aa58e05186bb85d4b619080c45a9
|
||||
COMMIT=782e739f8eb0e7f4d51ad7dd23fc1d03dc99d240
|
||||
rm -f scalapack-$COMMIT.zip
|
||||
curl -L https://github.com/Reference-ScaLAPACK/scalapack/archive/$COMMIT.zip -o scalapack-$COMMIT.zip
|
||||
|
||||
#caching
|
||||
if [ ! -z "$1" ]; then
|
||||
rsync -av $NWCHEM_TOP/src/nwpw/nwpwlib/nwpwxc/dftd3.tgz "$1"/.
|
||||
rsync -av $NWCHEM_TOP/src/libext/openblas/OpenBLAS*gz "$1"/.
|
||||
rsync -av $NWCHEM_TOP/src/libext/scalapack/scalapack*zip "$1"/.
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,18 +1,29 @@
|
|||
#!/usr/bin/env bash
|
||||
Vx=7
|
||||
Vy=2
|
||||
Vz=0
|
||||
NWVER="$Vx"."$Vy"."$Vz"-release
|
||||
#arg #1 release name
|
||||
#arg #2 input_date
|
||||
if [ $# != 2 ]; then echo need 2 arguments: version and date \(format: YYYY-MM-DD\) ; exit 123 ;fi
|
||||
release_version=$1
|
||||
input_date=$2
|
||||
echo " input arguments "
|
||||
echo " version = $release_version"
|
||||
echo " input_date = $input_date"
|
||||
#Vx=7
|
||||
#Vy=2
|
||||
#Vz=3
|
||||
#NWVER="$Vx"."$Vy"."$Vz"-release
|
||||
NWVER="$release_version"-release
|
||||
unset NWCHEM_TOP
|
||||
export USE_MPI=y
|
||||
TOPDIR=nwchem-"$Vx"."$Vy"."$Vz"
|
||||
BRANCH=release-"$Vx"-"$Vy"-"$Vz"
|
||||
TOPDIR=nwchem-"$release_version"
|
||||
echo TOPDIR is $TOPDIR
|
||||
#BRANCH=release-"$Vx"-"$Vy"-"$Vz"
|
||||
BRANCH=hotfix/release-7-2-0
|
||||
#TOPDIR=nwchem
|
||||
#BRANCH=master
|
||||
# need to change BRANCH for patch releases
|
||||
rm -rf temp.`date +%Y%m%d`
|
||||
mkdir -p temp.`date +%Y%m%d`
|
||||
cd temp.`date +%Y%m%d`
|
||||
rm -rf temp.$input_date
|
||||
mkdir -p temp.$input_date
|
||||
cd temp.$input_date
|
||||
git clone --depth 1 --shallow-submodules -b $BRANCH https://github.com/nwchemgit/nwchem $TOPDIR
|
||||
cd $TOPDIR/src/tools
|
||||
rm -f *.tar.*
|
||||
|
|
@ -23,9 +34,11 @@ cd ../util
|
|||
cd ..
|
||||
# set USE_64TO32=y on by default since we do make 64_to_32 for this tarball
|
||||
patch -p1 < ../contrib/git.nwchem/use6432y.patch
|
||||
# do make 64_to_32
|
||||
export NWCHEM_MODULES=all\ python\ gwmol
|
||||
make nwchem_config NWCHEM_MODULES=all\ python
|
||||
# do make 64_to_32
|
||||
export BLAS_SIZE=4
|
||||
export USE_TBLITE=1
|
||||
export NWCHEM_MODULES=all\ python\ gwmol\ xtb
|
||||
make nwchem_config NWCHEM_MODULES=all\ python\ xtb
|
||||
export EACCSD=1
|
||||
export IPCCSD=1
|
||||
export CCSDTQ=1
|
||||
|
|
@ -36,6 +49,7 @@ make 64_to_32 USE_INTERNALBLAS=y
|
|||
#rm `find peigs -name peigs_stamp.*`
|
||||
# cleanup on make nwchem_config output to address https://github.com/nwchemgit/nwchem/issues/178
|
||||
rm -f config/nwchem_config.h config/NWCHEM_CONFIG stubs.F
|
||||
rm -f *txt
|
||||
cd ..
|
||||
rm -rf bin lib
|
||||
REVGIT="$(git describe --always)"
|
||||
|
|
@ -43,15 +57,21 @@ cd ..
|
|||
echo 'revision ' $REVGIT
|
||||
pwd
|
||||
rm -f *md5 *tar*
|
||||
tar --exclude=".git" -czf nwchem-"${NWVER}".revision-"${REVGIT}"-src.`date +%Y-%m-%d`.tar.gz $TOPDIR/*
|
||||
md5sum nwchem-"${NWVER}".revision-"${REVGIT}"-src.`date +%Y-%m-%d`.tar.gz > nwchem-"${NWVER}".revision"${REVGIT}"-src.`date +%Y-%m-%d`.tar.gz.md5
|
||||
tar --exclude=".git" -cjf nwchem-"${NWVER}".revision-"${REVGIT}"-src.`date +%Y-%m-%d`.tar.bz2 $TOPDIR/*
|
||||
md5sum nwchem-"${NWVER}".revision-"${REVGIT}"-src.`date +%Y-%m-%d`.tar.bz2 > nwchem-"${NWVER}".revision"${REVGIT}"-src.`date +%Y-%m-%d`.tar.bz2.md5
|
||||
tar --exclude=".git" -cJf nwchem-"${NWVER}".revision-"${REVGIT}"-src.`date +%Y-%m-%d`.tar.xz $TOPDIR/*
|
||||
md5sum nwchem-"${NWVER}".revision-"${REVGIT}"-src.`date +%Y-%m-%d`.tar.xz > nwchem-"${NWVER}".revision"${REVGIT}"-src.`date +%Y-%m-%d`.tar.xz.md5
|
||||
tar --exclude=".git" -cjf nwchem-"${NWVER}".revision-"${REVGIT}"-srconly.`date +%Y-%m-%d`.tar.bz2 $TOPDIR/src/*
|
||||
md5sum nwchem-"${NWVER}".revision-"${REVGIT}"-srconly.`date +%Y-%m-%d`.tar.bz2> nwchem-"${NWVER}".revision"${REVGIT}"-srconly.`date +%Y-%m-%d`.tar.bz2.md5
|
||||
tar --exclude=".git" --exclude="src" -cjf nwchem-"${NWVER}".revision-"${REVGIT}"-nonsrconly.`date +%Y-%m-%d`.tar.bz2 $TOPDIR/*
|
||||
md5sum nwchem-"${NWVER}".revision-"${REVGIT}"-nonsrconly.`date +%Y-%m-%d`.tar.bz2 > nwchem-"${NWVER}".revision"${REVGIT}"-nonsrconly.`date +%Y-%m-%d`.tar.bz2.md5
|
||||
echo 'generating tarballs '
|
||||
tar --exclude=".git" -czf nwchem-"${NWVER}".revision-"${REVGIT}"-src."$input_date".tar.gz $TOPDIR/*
|
||||
echo 'tarball #1 done'
|
||||
md5sum nwchem-"${NWVER}".revision-"${REVGIT}"-src."$input_date".tar.gz > nwchem-"${NWVER}".revision"${REVGIT}"-src."$input_date".tar.gz.md5
|
||||
tar --exclude=".git" -cjf nwchem-"${NWVER}".revision-"${REVGIT}"-src."$input_date".tar.bz2 $TOPDIR/*
|
||||
echo 'tarball #2 done'
|
||||
md5sum nwchem-"${NWVER}".revision-"${REVGIT}"-src."$input_date".tar.bz2 > nwchem-"${NWVER}".revision"${REVGIT}"-src."$input_date".tar.bz2.md5
|
||||
tar --exclude=".git" -cJf nwchem-"${NWVER}".revision-"${REVGIT}"-src."$input_date".tar.xz $TOPDIR/*
|
||||
echo 'tarball #3 done'
|
||||
md5sum nwchem-"${NWVER}".revision-"${REVGIT}"-src."$input_date".tar.xz > nwchem-"${NWVER}".revision"${REVGIT}"-src."$input_date".tar.xz.md5
|
||||
tar --exclude=".git" -cjf nwchem-"${NWVER}".revision-"${REVGIT}"-srconly."$input_date".tar.bz2 $TOPDIR/src/*
|
||||
echo 'tarball #4 done'
|
||||
md5sum nwchem-"${NWVER}".revision-"${REVGIT}"-srconly."$input_date".tar.bz2> nwchem-"${NWVER}".revision"${REVGIT}"-srconly."$input_date".tar.bz2.md5
|
||||
tar --exclude=".git" --exclude="src" -cjf nwchem-"${NWVER}".revision-"${REVGIT}"-nonsrconly."$input_date".tar.bz2 $TOPDIR/*
|
||||
echo 'tarball #5 done'
|
||||
md5sum nwchem-"${NWVER}".revision-"${REVGIT}"-nonsrconly."$input_date".tar.bz2 > nwchem-"${NWVER}".revision"${REVGIT}"-nonsrconly."$input_date".tar.bz2.md5
|
||||
ls -lrt
|
||||
echo 'upload to http://192.101.105.206/'
|
||||
#echo 'upload to http://192.101.105.206/'
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ jobs:
|
|||
matrix:
|
||||
os:
|
||||
- [self-hosted, ubuntu1604]
|
||||
- [self-hosted, osx-arm64]
|
||||
blas: [build_openblas]
|
||||
blas_size:
|
||||
- 8
|
||||
|
|
@ -43,7 +42,7 @@ jobs:
|
|||
build_plumed:
|
||||
- 1
|
||||
branch:
|
||||
- master
|
||||
- main
|
||||
include:
|
||||
- os: [self-hosted, ubuntu1804]
|
||||
experimental: false
|
||||
|
|
@ -55,16 +54,7 @@ jobs:
|
|||
use_libxc: 1
|
||||
use_openmp: 2
|
||||
use_tblite: 1
|
||||
- os: [self-hosted, osx-arm64]
|
||||
experimental: false
|
||||
mpi_impl: build_mpich
|
||||
armci_network: MPI-PT
|
||||
nwchem_modules: "all python xtb"
|
||||
fc: ifort
|
||||
blas: "build_openblas"
|
||||
use_libxc: 1
|
||||
use_openmp: 2
|
||||
use_tblite: 1
|
||||
simint_vector: avx2
|
||||
- os: [self-hosted, ubuntu1604]
|
||||
experimental: false
|
||||
mpi_impl: intel
|
||||
|
|
@ -74,6 +64,7 @@ jobs:
|
|||
blas: "build_openblas"
|
||||
use_libxc: 1
|
||||
use_tblite: 1
|
||||
simint_vector: avx2
|
||||
- os: [self-hosted, fedora]
|
||||
experimental: false
|
||||
mpi_impl: openmpi
|
||||
|
|
@ -85,7 +76,8 @@ jobs:
|
|||
use_simint: 1
|
||||
use_openmp: 2
|
||||
use_tblite: 1
|
||||
branch: hotfix/release-7-2-0
|
||||
simint_vector: scalar
|
||||
branch: main
|
||||
- os: [self-hosted, ubuntu2304]
|
||||
experimental: false
|
||||
mpi_impl: openmpi
|
||||
|
|
@ -96,28 +88,53 @@ jobs:
|
|||
use_libxc: 1
|
||||
use_openmp: 2
|
||||
use_tblite: 1
|
||||
branch: hotfix/release-7-2-0
|
||||
simint_vector: scalar
|
||||
branch: main
|
||||
- os: [self-hosted, osx-arm64, ajay]
|
||||
experimental: false
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "all python "
|
||||
fc: gfortran
|
||||
blas: "build_openblas"
|
||||
use_libxc: 1
|
||||
use_simint: 1
|
||||
simint_vector: scalar
|
||||
branch: main
|
||||
- os: [self-hosted, osx-x64]
|
||||
experimental: false
|
||||
mpi_impl: openmpi
|
||||
armci_network: MPI-TS
|
||||
nwchem_modules: "all python xtb"
|
||||
fc: gfortran
|
||||
blas: "build_openblas"
|
||||
use_libxc: 1
|
||||
use_simint: 1
|
||||
use_openmp: 2
|
||||
use_tblite: 1
|
||||
simint_vector: avx2
|
||||
branch: main
|
||||
fail-fast: false
|
||||
env:
|
||||
MPI_IMPL: ${{ matrix.mpi_impl }}
|
||||
ARMCI_NETWORK: ${{ matrix.armci_network }}
|
||||
NWCHEM_MODULES: ${{ matrix.nwchem_modules }}
|
||||
USE_SIMINT: ${{ matrix.use_simint }}
|
||||
USE_LIBXC: ${{ matrix.use_libxc }}
|
||||
USE_TBLITE: ${{ matrix.use_tblite }}
|
||||
BUILD_PLUMED: ${{ matrix.build_plumed }}
|
||||
FC: ${{ matrix.fc }}
|
||||
CC: ${{ matrix.cc }}
|
||||
COMEX_MAX_NB_OUTSTANDING: 16
|
||||
SIMINT_MAXAM: 4
|
||||
SIMINT_VECTOR: avx2
|
||||
BLAS_ENV: ${{ matrix.blas }}
|
||||
BLAS_SIZE: ${{ matrix.blas_size }}
|
||||
USE_OPENMP: ${{ matrix.use_openmp }}
|
||||
MPI_IMPL: ${{ matrix.mpi_impl }}
|
||||
ARMCI_NETWORK: ${{ matrix.armci_network }}
|
||||
NWCHEM_MODULES: ${{ matrix.nwchem_modules }}
|
||||
USE_SIMINT: ${{ matrix.use_simint }}
|
||||
USE_LIBXC: ${{ matrix.use_libxc }}
|
||||
USE_TBLITE: ${{ matrix.use_tblite }}
|
||||
BUILD_PLUMED: ${{ matrix.build_plumed }}
|
||||
FC: ${{ matrix.fc }}
|
||||
CC: ${{ matrix.cc }}
|
||||
COMEX_MAX_NB_OUTSTANDING: 16
|
||||
SIMINT_MAXAM: 4
|
||||
SIMINT_VECTOR: ${{ matrix.simint_vector }}
|
||||
BLAS_ENV: ${{ matrix.blas }}
|
||||
BLAS_SIZE: ${{ matrix.blas_size }}
|
||||
USE_OPENMP: ${{ matrix.use_openmp }}
|
||||
continue-on-error: ${{ matrix.experimental }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 32
|
||||
ref: ${{ matrix.branch }}
|
||||
|
|
@ -133,11 +150,16 @@ jobs:
|
|||
shell: bash
|
||||
- name: Setup cache
|
||||
id: setup-cache
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/cache
|
||||
key: ${{ runner.os }}-${{ matrix.mpi_impl}}-${{ matrix.fc}}-xcode${{ matrix.xcode_version}}-simint${{ matrix.use_simint}}-blas${{ matrix.blas}}-blas_size${{ matrix.blas_size}}-libxc${{matrix.use_libxc}}-tblite${{matrix.use_tblite}}-simd${{ env.simd }}-nwchemcache-v003
|
||||
key: |
|
||||
${{ runner.os }}-${{ matrix.mpi_impl}}-${{ matrix.fc}}
|
||||
-xcode${{ matrix.xcode_version}}-simint${{ matrix.use_simint}}
|
||||
-blas${{ matrix.blas}}-blas_size${{ matrix.blas_size}}
|
||||
-libxc${{matrix.use_libxc}}-tblite${{matrix.use_tblite}}
|
||||
-simd${{ env.simd }}-nwchemcache-v003
|
||||
- name: fetch cache
|
||||
if: steps.setup-cache.outputs.cache-hit == 'true'
|
||||
run: |
|
||||
|
|
@ -145,8 +167,10 @@ jobs:
|
|||
- name: compile
|
||||
id: compile
|
||||
run: |
|
||||
./travis/config_nwchem.sh
|
||||
./travis/compile_nwchem.sh
|
||||
mytee=tee
|
||||
if [[ `uname -s` == "Darwin" ]]; then mytee=gtee; fi
|
||||
./travis/config_nwchem.sh | $mytee >(ts "%d%b%Y %H:%M:%S" > ../../../config.log.` date +%b%d%Y_%H:%M`)
|
||||
./travis/compile_nwchem.sh | $mytee >(ts "%d%b%Y %H:%M:%S" > ../../../compile.log.` date +%b%d%Y_%H:%M`)
|
||||
- name: Check compilation result
|
||||
if: ${{ failure() }}
|
||||
run: |
|
||||
|
|
@ -171,9 +195,3 @@ jobs:
|
|||
if: ${{ failure() }} && steps.qa_test.outcome == 'failure'
|
||||
run: |
|
||||
./travis/check_qas.sh
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ jobs:
|
|||
runs-on: [ubuntu-latest]
|
||||
steps:
|
||||
- name: Checkout nwchem
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: nwchemgit/nwchem
|
||||
persist-credentials: false
|
||||
|
|
|
|||
46
release.notes.7.2.1.md
Normal file
46
release.notes.7.2.1.md
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
NWChem Version 7.2.1 Release Notes
|
||||
==================================
|
||||
|
||||
NWChem is now available on Github at
|
||||
https://github.com/nwchemgit/nwchem
|
||||
|
||||
User Manual available from the NWChem website
|
||||
https://nwchemgit.github.io
|
||||
|
||||
NWChem 7.2.1 is released as open-source under the ECL 2.0 license.
|
||||
|
||||
NWChem 7.2.1 will be released with the latest Global Arrays Toolkit (v5.8.2).
|
||||
|
||||
The 7.2.1 release is a maintenance release containing fixes/enhancements for the NWChem 7.2.0 tree
|
||||
|
||||
NEW FUNCTIONALITY
|
||||
-----
|
||||
|
||||
N/A
|
||||
|
||||
|
||||
BUG FIXES/ENHANCEMENTS
|
||||
-----
|
||||
|
||||
* fix compilation for Cray compilers
|
||||
|
||||
* fixes for macOS Xcode 15
|
||||
|
||||
* fixes for Intel OneAPI 2023 releases
|
||||
|
||||
* memory fixes for ARMCI_NETWORK=MPI-PR https://github.com/GlobalArrays/ga/pull/310
|
||||
|
||||
GITHUB ISSUES ADDRESSED
|
||||
----
|
||||
|
||||
* [Shifter Image Parallelization Issues](https://github.com/nwchemgit/nwchem/issues/775)
|
||||
* [Custom dielectric constant is ignored in COSMO calculations](https://github.com/nwchemgit/nwchem/issues/776)
|
||||
* [NMR hyperfine coupling when wavefunction is closed-shell](https://github.com/nwchemgit/nwchem/issues/788)
|
||||
* [Triplet CDSpectrum calculations failing](https://github.com/nwchemgit/nwchem/issues/796)
|
||||
* [7.2.0 fails computing gradients of bare ECPs](https://github.com/nwchemgit/nwchem/issues/801)
|
||||
* [SegV when USE_INTERNALBLAS=1 for version 7.2.0](https://github.com/nwchemgit/nwchem/issues/804)
|
||||
* [Undefined symbol "ycnrm2"](https://github.com/nwchemgit/nwchem/issues/817)
|
||||
* [Wrong symmetry assignments in TDDFT](https://github.com/nwchemgit/nwchem/issues/828)
|
||||
* [GW might lead to incorrect results when symmetry is on](https://github.com/nwchemgit/nwchem/issues/829)
|
||||
* [ch5n_nbo QA test fails](https://github.com/nwchemgit/nwchem/issues/864)
|
||||
|
||||
54
release.notes.7.2.2.md
Normal file
54
release.notes.7.2.2.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
NWChem Version 7.2.2 Release Notes
|
||||
==================================
|
||||
|
||||
NWChem is now available on Github at
|
||||
https://github.com/nwchemgit/nwchem
|
||||
|
||||
User Manual available from the NWChem website
|
||||
https://nwchemgit.github.io
|
||||
|
||||
NWChem 7.2.2 is released as open-source under the ECL 2.0 license.
|
||||
|
||||
NWChem 7.2.2 will be released with the latest Global Arrays Toolkit (v5.8.2).
|
||||
|
||||
The 7.2.2 release is a maintenance release containing fixes/enhancements for the NWChem 7.2.0 tree
|
||||
|
||||
The change log below is relative to the 7.2.0 code base.
|
||||
|
||||
NEW FUNCTIONALITY
|
||||
-----
|
||||
|
||||
N/A
|
||||
|
||||
|
||||
BUG FIXES/ENHANCEMENTS
|
||||
-----
|
||||
|
||||
* header of the output file prints version 7.2.2
|
||||
|
||||
* various fixes for big endian architectures (e.g.: sparc64, s390x)
|
||||
|
||||
* compilation fixes for 64-bit architectures other than x86_64 and aarch64
|
||||
|
||||
* fix compilation for Cray compilers
|
||||
|
||||
* fixes for macOS Xcode 15
|
||||
|
||||
* fixes for Intel OneAPI 2023 releases
|
||||
|
||||
* memory fixes for ARMCI_NETWORK=MPI-PR https://github.com/GlobalArrays/ga/pull/310
|
||||
|
||||
GITHUB ISSUES ADDRESSED
|
||||
----
|
||||
* [pyqa3: Segmentation fault on Python 3.12](https://github.com/nwchemgit/nwchem/issues/892)
|
||||
* [Shifter Image Parallelization Issues](https://github.com/nwchemgit/nwchem/issues/775)
|
||||
* [Custom dielectric constant is ignored in COSMO calculations](https://github.com/nwchemgit/nwchem/issues/776)
|
||||
* [NMR hyperfine coupling when wavefunction is closed-shell](https://github.com/nwchemgit/nwchem/issues/788)
|
||||
* [Triplet CDSpectrum calculations failing](https://github.com/nwchemgit/nwchem/issues/796)
|
||||
* [7.2.0 fails computing gradients of bare ECPs](https://github.com/nwchemgit/nwchem/issues/801)
|
||||
* [SegV when USE_INTERNALBLAS=1 for version 7.2.0](https://github.com/nwchemgit/nwchem/issues/804)
|
||||
* [Undefined symbol "ycnrm2"](https://github.com/nwchemgit/nwchem/issues/817)
|
||||
* [Wrong symmetry assignments in TDDFT](https://github.com/nwchemgit/nwchem/issues/828)
|
||||
* [GW might lead to incorrect results when symmetry is on](https://github.com/nwchemgit/nwchem/issues/829)
|
||||
* [ch5n_nbo QA test fails](https://github.com/nwchemgit/nwchem/issues/864)
|
||||
|
||||
45
release.notes.7.2.3.md
Normal file
45
release.notes.7.2.3.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
NWChem Version 7.2.3 Release Notes
|
||||
==================================
|
||||
|
||||
NWChem is now available on Github at
|
||||
https://github.com/nwchemgit/nwchem
|
||||
|
||||
User Manual available from the NWChem website
|
||||
https://nwchemgit.github.io
|
||||
|
||||
NWChem 7.2.3 is released as open-source under the ECL 2.0 license.
|
||||
|
||||
NWChem 7.2.3 will be released with the latest Global Arrays Toolkit (v5.8.2).
|
||||
|
||||
The 7.2.3 release is a maintenance release containing fixes/enhancements for the NWChem 7.2.0 tree
|
||||
|
||||
The change log below is relative to the 7.2.2 code base.
|
||||
|
||||
NEW FUNCTIONALITY
|
||||
-----
|
||||
|
||||
N/A
|
||||
|
||||
BUG FIXES/ENHANCEMENTS
|
||||
-----
|
||||
|
||||
* added code to deal with elements up to Z=120
|
||||
* added IMOM (Initial Maximum Overlap Method)
|
||||
* reworked makefile structure to compile with GNU make 4.4
|
||||
* fixes for Python interfaces
|
||||
* avoid need of USE_MPI for make clean
|
||||
* compiler updates
|
||||
* bug fix for VEM in TDDFT
|
||||
* updates for IBO and Pipek-Mezey localization
|
||||
|
||||
|
||||
GITHUB ISSUES ADDRESSED
|
||||
----
|
||||
* [Cosmo generates NaN when lineq=1](https://github.com/nwchemgit/nwchem/issues/990)
|
||||
* [dft-3d URL update](https://github.com/nwchemgit/nwchem/issues/962)
|
||||
* [x2c incompatible with cd fitting ](https://github.com/nwchemgit/nwchem/issues/931)
|
||||
* [wrong memory setup with floating point input ](https://github.com/nwchemgit/nwchem/issues/930)
|
||||
* [modelpotential input not processing bq elements](https://github.com/nwchemgit/nwchem/issues/926)
|
||||
* [memory printout cannot handle large memory sizes](https://github.com/nwchemgit/nwchem/issues/838)
|
||||
* [O(10^3) global arrays are created from the property code](https://github.com/nwchemgit/nwchem/issues/831)
|
||||
|
||||
|
|
@ -104,7 +104,11 @@ endif
|
|||
libraries:
|
||||
@for dir in $(SUBDIRS); do \
|
||||
echo Making $@ in $$dir; \
|
||||
$(MAKE) -C $$dir || exit 1 ; \
|
||||
if [ $@ == "include_stamp" ] || [ $@ == "dependencies" ]; then \
|
||||
$(MAKE) SKIP_COMPILERS=1 -C $$dir || exit 1 ; \
|
||||
else \
|
||||
$(MAKE) -C $$dir || exit 1 ; \
|
||||
fi \
|
||||
done
|
||||
|
||||
showdir:
|
||||
|
|
@ -129,6 +133,7 @@ realclean:
|
|||
-$(RM) $(LIBDIR)/*.a $(BINDIR)/*
|
||||
-$(RM) *.db movecs fort.41 fort.44
|
||||
-$(RM) util/util_version.F
|
||||
-$(RM) mpi_include.txt ga_cppflags.txt ga_ldflags.txt ga_use_scalapack.txt oblas_ompcheck_done.txt
|
||||
@# -$(RM) 64_to_32 32_to_64 deps_stamp # This conversion is such a hassle that realclean should not force it.
|
||||
|
||||
.PHONY: cleanF
|
||||
|
|
@ -156,16 +161,16 @@ sngl_to_dbl dbl_to_sngl 64_to_32 32_to_64:
|
|||
@$(MAKE) directories
|
||||
@$(MAKE) clear_$@
|
||||
for dir in $(SUBDIRS); do \
|
||||
$(MAKE) -C $$dir $@ || exit 1 ; \
|
||||
$(MAKE) SKIP_COMPILERS=1 QUICK_BUILD=1 -C $$dir $@ || exit 1 ; \
|
||||
done
|
||||
touch $@
|
||||
ifndef QUICK_BUILD
|
||||
deps_stamp:
|
||||
for dir in $(SUBDIRS); do \
|
||||
$(MAKE) -i -C $$dir dependencies include_stamp ; \
|
||||
if [ $@ == "include_stamp" ] || [ $@ == "dependencies" ]; then \
|
||||
$(MAKE) -i SKIP_COMPILERS=1 -C $$dir dependencies include_stamp ; \
|
||||
fi \
|
||||
done
|
||||
touch $@
|
||||
endif
|
||||
clear_64_to_32:
|
||||
-$(RM) 32_to_64
|
||||
|
||||
|
|
@ -183,8 +188,8 @@ clear_dbl_to_sngl:
|
|||
|
||||
directories:
|
||||
test \! -f 64_to_32 -o \! -f 32_to_64 || rm -f 64_to_32 32_to_64
|
||||
test -d $(LIBDIR) || $(MKDIR) -p $(LIBDIR)
|
||||
test -d $(BINDIR) || $(MKDIR) -p $(BINDIR)
|
||||
test -d $(LIBDIR) || mkdir -p $(LIBDIR)
|
||||
test -d $(BINDIR) || mkdir -p $(BINDIR)
|
||||
./util/util_nwchem_version.bash
|
||||
|
||||
auxiliary:
|
||||
|
|
@ -245,7 +250,7 @@ source:
|
|||
cat stubs.F nwchem.F > source
|
||||
ifdef SUBDIRS
|
||||
for dir in $(SUBDIRS); do \
|
||||
$(MAKE) -C $$dir $@ || exit 1 ; \
|
||||
echo TARGET is $@ ; $(MAKE) -C $$dir $@ || exit 1 ; \
|
||||
done
|
||||
endif
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,8 @@ c
|
|||
character*32 pname
|
||||
c
|
||||
integer i,j,k
|
||||
character*16 tagi ! tag of atom i
|
||||
character*16 tagi ! tag of atom i
|
||||
integer iptr
|
||||
character*2 symi
|
||||
character*16 elemi
|
||||
double precision ci(3),chgi
|
||||
|
|
@ -41,8 +42,15 @@ c
|
|||
c map the model potential onto the geometry
|
||||
do i = 1,natoms
|
||||
if (.not.geom_cent_get(geom,i,tagi,ci,chgi))
|
||||
& call errquit(pname//'geom_cent_get failed:i',911, GEOM_ERR)
|
||||
status = geom_tag_to_element(tagi,symi,elemi,atni)
|
||||
& call errquit(pname//'geom_cent_get failed:i',911, GEOM_ERR)
|
||||
c handle bqs
|
||||
if (inp_compare(.false.,tagi(1:2),'bq')) then
|
||||
iptr=3
|
||||
else
|
||||
iptr=1
|
||||
endif
|
||||
if(.not.geom_tag_to_element(tagi(iptr:),symi,elemi,atni))
|
||||
& call errquit(pname//'geom_tag2elem failed:i',i, GEOM_ERR)
|
||||
call inp_lcase(symi)
|
||||
cinit
|
||||
do k = 1,50
|
||||
|
|
@ -62,8 +70,11 @@ cinit
|
|||
end if
|
||||
end do ! j = 1,mpmaxelem
|
||||
1984 continue
|
||||
if(ga_nodeid().eq.0.and.(.not.status)) write(6,'(a,i3,2x,a)')
|
||||
if(ga_nodeid().eq.0.and.(.not.status)) then
|
||||
write(6,'(a,i3,2x,a)')
|
||||
W ' modelpotential warning: no entry found for atom ',i,tagi
|
||||
call errquit(' set_modelpotential error ',0,0)
|
||||
endif
|
||||
end do ! i = 1,natoms
|
||||
c
|
||||
c set parameters in rtdb
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ else
|
|||
arch=$(uname -m)
|
||||
fi
|
||||
if [[ ${UNAME_S} == Linux ]]; then
|
||||
CPU_FLAGS=$(cat /proc/cpuinfo | grep flags |tail -n 1)
|
||||
CPU_FLAGS_2=$(cat /proc/cpuinfo | grep flags |tail -n 1)
|
||||
CPU_FLAGS=$(cat /proc/cpuinfo | grep flags |grep -v vmx\ f |tail -n 1)
|
||||
CPU_FLAGS_2=$(cat /proc/cpuinfo | grep flags | grep -v vmx\ f |tail -n 1)
|
||||
elif [[ ${UNAME_S} == Darwin ]]; then
|
||||
CPU_FLAGS=$(sysctl -n machdep.cpu.features)
|
||||
if [[ "$arch" == "x86_64" ]]; then
|
||||
|
|
@ -43,6 +43,8 @@ else
|
|||
echo Operating system not supported yet
|
||||
exit 1
|
||||
fi
|
||||
echo CPU_FLAGS $CPU_FLAGS
|
||||
echo CPU_FLAGS_2 $CPU_FLAGS_2
|
||||
GOTSSE2=$(echo ${CPU_FLAGS} | tr 'A-Z' 'a-z'| awk ' /sse2/ {print "Y"}')
|
||||
GOTAVX=$(echo ${CPU_FLAGS} | tr 'A-Z' 'a-z'| awk ' /avx/ {print "Y"}')
|
||||
GOTAVX2=$(echo ${CPU_FLAGS_2} | tr 'A-Z' 'a-z'| awk ' /avx2/ {print "Y"}')
|
||||
|
|
|
|||
|
|
@ -182,6 +182,12 @@ c
|
|||
call swatch(topdat,toptim)
|
||||
#ifdef USE_POSIXF
|
||||
call pxfgetlogin(user, ilen, ierror)
|
||||
#elif USE_GETENV_LOGNAME
|
||||
! From https://linux.die.net/man/3/getlogin:
|
||||
! For most purposes, it is more useful to use the environment variable
|
||||
! LOGNAME to find out who the user is. This is more flexible precisely
|
||||
! because the user can set LOGNAME arbitrarily.
|
||||
call util_getenv('LOGNAME',user)
|
||||
#else
|
||||
call getlog(user)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -182,6 +182,12 @@ c
|
|||
call swatch(topdat,toptim)
|
||||
#ifdef USE_POSIXF
|
||||
call pxfgetlogin(user, ilen, ierror)
|
||||
#elif USE_GETENV_LOGNAME
|
||||
! From https://linux.die.net/man/3/getlogin:
|
||||
! For most purposes, it is more useful to use the environment variable
|
||||
! LOGNAME to find out who the user is. This is more flexible precisely
|
||||
! because the user can set LOGNAME arbitrarily.
|
||||
call util_getenv('LOGNAME',user)
|
||||
#else
|
||||
call getlog(user)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -28,6 +28,12 @@ c
|
|||
call swatch(rdate,rtime)
|
||||
#ifdef USE_POSIXF
|
||||
call pxfgetlogin(user, ilen, ierror)
|
||||
#elif USE_GETENV_LOGNAME
|
||||
! From https://linux.die.net/man/3/getlogin:
|
||||
! For most purposes, it is more useful to use the environment variable
|
||||
! LOGNAME to find out who the user is. This is more flexible precisely
|
||||
! because the user can set LOGNAME arbitrarily.
|
||||
call util_getenv('LOGNAME',user)
|
||||
#else
|
||||
call getlog(user)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -39,6 +39,12 @@ c
|
|||
call swatch(rdate,rtime)
|
||||
#ifdef USE_POSIXF
|
||||
call pxfgetlogin(user, ilen, ierror)
|
||||
#elif USE_GETENV_LOGNAME
|
||||
! From https://linux.die.net/man/3/getlogin:
|
||||
! For most purposes, it is more useful to use the environment variable
|
||||
! LOGNAME to find out who the user is. This is more flexible precisely
|
||||
! because the user can set LOGNAME arbitrarily.
|
||||
call util_getenv('LOGNAME',user)
|
||||
#else
|
||||
call getlog(user)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ endif
|
|||
include ../config/makefile.h
|
||||
|
||||
LIBRARY = libnwcblas.a
|
||||
# LIB_INCLUDES = -I../util
|
||||
|
||||
#
|
||||
# USE both double and single now (short term solution for added single precision
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
SUBROUTINE XERBLA( SRNAME, INFO )
|
||||
#include "errquit.fh"
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 2.0) --
|
||||
* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
|
||||
|
|
@ -40,8 +39,7 @@ c
|
|||
*
|
||||
WRITE( *, FMT = 9999 )SRNAME, INFO
|
||||
*
|
||||
* STOP
|
||||
call errquit('xerbla:double: lapack error',911, BASIS_ERR)
|
||||
STOP
|
||||
*
|
||||
9999 FORMAT( ' ** On entry to ', A6, ' parameter number ', I2, ' had ',
|
||||
$ 'an illegal value' )
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ OBJ = cckohn.o cckohn_input.o cknew.o obftrans.o hbftrans.o \
|
|||
bforthog.o fforth1.o fforth2.o denom.o top.o
|
||||
OBJ_OPTIMIZE =
|
||||
|
||||
USES_BLAS =
|
||||
USES_BLAS = cknew.F
|
||||
|
||||
SUBDIRS = bessel
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ OBJ_OPTIMIZE =
|
|||
|
||||
LIBRARY = libcckohn.a
|
||||
|
||||
USES_BLAS =
|
||||
USES_BLAS = ubesplg.F
|
||||
|
||||
include ../../config/makefile.h
|
||||
include ../../config/makelib.h
|
||||
|
|
|
|||
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
include ../config/makefile.h
|
||||
|
||||
ifdef USE_IMAX_OPENMP_TRPDRV
|
||||
SUBDIRS += module
|
||||
endif
|
||||
|
||||
OBJ_OPTIMIZE = \
|
||||
ccden_driver.o \
|
||||
ccden_interm2.o \
|
||||
|
|
@ -24,7 +28,6 @@ include ../config/makefile.h
|
|||
ccsd_idx34.o \
|
||||
ccsd_tengy.o \
|
||||
ccsd_trpdrv.o \
|
||||
ccsd_trpdrv_nb.o \
|
||||
ccsd_trpdrv_omp.o \
|
||||
ccsd_trpdrv_omp_mixprec.o \
|
||||
moints_trp.o \
|
||||
|
|
@ -72,7 +75,6 @@ endif
|
|||
ccsd_pdiis.F \
|
||||
ccsd_sortmo.F \
|
||||
ccsd_trpdrv.F \
|
||||
ccsd_trpdrv_nb.F \
|
||||
ccsd_trpdrv_omp.F \
|
||||
ccsd_trpdrv_omp_mixprec.F \
|
||||
moints_trp.F \
|
||||
|
|
@ -88,17 +90,15 @@ endif
|
|||
ccsd_mktau_ga.F \
|
||||
ccden_2pdmb.F \
|
||||
aoccsd2.F \
|
||||
ccsd_fsig1.F \
|
||||
ccsd_fsig2.F \
|
||||
ccsd_trpdrv_offload.F \
|
||||
ccsd_trpdrv_openacc.F \
|
||||
ccsd_trpdrv_openmp_imax.F \
|
||||
moints_trp.F
|
||||
|
||||
ifeq ($(TARGET),BGP)
|
||||
OBJ_OPTIMIZE += ccsd_trpdrv_bgp2.o ccsd_tengy_bgp2.o ccsd_tengy_bgp.o
|
||||
USES_BLAS += ccsd_trpdrv_bgp2.F
|
||||
LIB_DEFINES += -DBGP
|
||||
endif
|
||||
|
||||
ifdef USE_MIC_TRPDRV
|
||||
OBJ_OPTIMIZE += ccsd_trpdrv_offload.o
|
||||
USES_BLAS += ccsd_trpdrv_offload.F
|
||||
LIB_DEFINES += -DUSE_MIC_TRPDRV
|
||||
endif
|
||||
ifeq ($(_FC),xlf)
|
||||
|
|
@ -114,9 +114,22 @@ ifeq ($(HAVE_SET_GA_PROPERTY),Y)
|
|||
LIB_DEFINES += -DHAVE_SET_GA_PROPERTY
|
||||
endif
|
||||
|
||||
ifdef USE_IMAX_OPENMP_TRPDRV
|
||||
|
||||
OBJ_OPTIMIZE += ccsd_trpdrv_openmp_imax.o
|
||||
|
||||
OBJ_OPTIMIZE += ccsd_trpdrv_omp_reduce_f.o
|
||||
|
||||
FOPTIONS += -O3 -fiopenmp -fopenmp-targets=spir64="-mllvm -vpo-paropt-atomic-free-reduction-par-global=false" -switch offload_modvars -mllvm -vpo-paropt-atomic-free-reduction-slm=true -qmkl
|
||||
|
||||
DEFINES += -DMKL_ILP64
|
||||
|
||||
INCLUDES += -I"${MKLROOT}/include" -I ${NWCHEM_TOP}/src/ccsd/module
|
||||
|
||||
endif
|
||||
|
||||
ifdef USE_OPENACC_TRPDRV
|
||||
OBJ_OPTIMIZE += ccsd_trpdrv_openacc.o
|
||||
USES_BLAS += ccsd_trpdrv_openacc.F
|
||||
FOPTIONS += -DUSE_OPENACC_TRPDRV
|
||||
ifeq ($(_FC),pgf90)
|
||||
FOPTIONS += -Mextend -acc -cuda -cudalib=cublas
|
||||
|
|
@ -126,6 +139,9 @@ ifdef USE_OPENACC_TRPDRV
|
|||
endif
|
||||
endif
|
||||
|
||||
ifdef USE_BATCHDGEMM_TRPDRV
|
||||
DEFINES += -DUSE_BATCHDGEMM_TRPDRV
|
||||
endif
|
||||
|
||||
ifeq ($(ARMCI_NETWORK),MPI-PR)
|
||||
LIB_DEFINES += -DACC_STRIPS
|
||||
|
|
|
|||
|
|
@ -2,7 +2,11 @@ c#define DOGRAD
|
|||
subroutine aoccsd(basis,ncor,nocc,nvir,ndel,nact,nbf,maxit,
|
||||
& convi,iprt,cmo,eorb,blen,
|
||||
& g_ncoul, g_nexch, RefEner,
|
||||
$ CC_Theory, rtdb, mxvec, geom, Tol2e, occd, oconverged)
|
||||
$ CC_Theory, rtdb, mxvec, geom, Tol2e, occd,
|
||||
& oconverged)
|
||||
#if defined(USE_IMAX_OPENMP_TRPDRV)
|
||||
use omp_lib, only: omp_interop_kind, omp_interop_none
|
||||
#endif
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
C $Id$
|
||||
|
|
@ -13,9 +17,10 @@ c
|
|||
Double Precision RefEner, Convi, Tol2E
|
||||
Character*(*) CC_Theory
|
||||
Integer RTDB, geom
|
||||
logical oconverged, occd, use_trpdrv_nb
|
||||
logical use_trpdrv_omp, use_trpdrv_bgp2
|
||||
logical oconverged, occd
|
||||
logical use_trpdrv_omp
|
||||
logical use_trpdrv_omp_mp
|
||||
logical use_trpdrv_openmp_imax
|
||||
logical use_trpdrv_openacc
|
||||
logical use_trpdrv_offload
|
||||
c
|
||||
|
|
@ -31,7 +36,10 @@ c
|
|||
#include "msgids.fh"
|
||||
#include "ccsdps.fh"
|
||||
c
|
||||
#if defined(USE_IMAX_OPENMP_TRPDRV)
|
||||
c ccsd
|
||||
integer(kind = omp_interop_kind) :: dummy_obj = omp_interop_none
|
||||
#endif
|
||||
Integer i
|
||||
logical stat
|
||||
integer nsh,maxbfsh,max2e,mem2
|
||||
|
|
@ -709,9 +717,6 @@ C
|
|||
!
|
||||
! Determine if OpenMP, etc. should be used in (T) code
|
||||
!
|
||||
if (.not. rtdb_get(rtdb, 'ccsd:use_trpdrv_nb', mt_log, 1,
|
||||
1 use_trpdrv_nb))
|
||||
2 use_trpdrv_nb=.false.
|
||||
if (.not. rtdb_get(rtdb, 'ccsd:use_trpdrv_omp', mt_log, 1,
|
||||
1 use_trpdrv_omp))
|
||||
2 use_trpdrv_omp=.false.
|
||||
|
|
@ -721,12 +726,12 @@ C
|
|||
if (.not. rtdb_get(rtdb, 'ccsd:use_trpdrv_openacc', mt_log, 1,
|
||||
1 use_trpdrv_openacc))
|
||||
2 use_trpdrv_openacc=.false.
|
||||
if (.not. rtdb_get(rtdb, 'ccsd:use_trpdrv_openmp_imax', mt_log,
|
||||
1 1, use_trpdrv_openmp_imax))
|
||||
2 use_trpdrv_openmp_imax=.false.
|
||||
if (.not. rtdb_get(rtdb, 'ccsd:use_trpdrv_offload', mt_log, 1,
|
||||
1 use_trpdrv_offload))
|
||||
2 use_trpdrv_offload=.false.
|
||||
if (.not. rtdb_get(rtdb, 'ccsd:use_trpdrv_bgp2', mt_log, 1,
|
||||
1 use_trpdrv_bgp2))
|
||||
2 use_trpdrv_bgp2=.false.
|
||||
!
|
||||
mem_avail = ma_inquire_avail(MT_DBL)
|
||||
if(iam.eq.0.and.oprint)write(luout,*)'memory',mem_avail
|
||||
|
|
@ -955,6 +960,20 @@ c
|
|||
& blen, cmo, ncor, nocc, nvir, ndel, Tol2E)
|
||||
c print *,'call trpdrv ',nvpass
|
||||
call ga_sync()
|
||||
#if defined(USE_IMAX_OPENMP_TRPDRV)
|
||||
! Dummy parallel construct
|
||||
!$omp parallel num_threads(8)
|
||||
!$omp end parallel
|
||||
|
||||
! Dummy target construct
|
||||
!$omp target
|
||||
!$omp end target
|
||||
|
||||
! Dummy interop object
|
||||
!$omp interop init(prefer_type("sycl"),targetsync: dummy_obj)
|
||||
!$omp interop destroy(dummy_obj)
|
||||
#endif
|
||||
|
||||
tx(2)=tcgtime()
|
||||
c
|
||||
if (use_trpdrv_omp) then
|
||||
|
|
@ -992,8 +1011,23 @@ c
|
|||
call ccsd_trpdrv_openacc(dbl_mb(k_t1),eorb,
|
||||
$ g_objo,g_objv,g_coul,g_exch,ncor,nocc,nvir,iprt,
|
||||
$ empt(1),empt(2),oseg_lo,oseg_hi,kchunk)
|
||||
!!#else
|
||||
!! call errquit('aoccsd: trpdrv_openacc disabled ',0,0)
|
||||
!!#endif
|
||||
! use_trpdrv_openmp_imax
|
||||
else if (use_trpdrv_openmp_imax) then
|
||||
#elif defined(USE_IMAX_OPENMP_TRPDRV)
|
||||
if (iam.eq.0.and.oprint) then
|
||||
write(luout,1818) nvpass,util_wallsec()
|
||||
call util_flush(luout)
|
||||
endif
|
||||
1818 format(' commencing triples evaluation - OpenMP',
|
||||
I 'MAX GPU version',i8,' at ',f20.2,' secs')
|
||||
call ccsd_trpdrv_offload_xe(dbl_mb(k_t1),eorb,
|
||||
$ g_objo,g_objv,g_coul,g_exch,ncor,nocc,nvir,iprt,
|
||||
$ empt(1),empt(2),oseg_lo,oseg_hi,kchunk)
|
||||
#else
|
||||
call errquit('aoccsd: trpdrv_openacc disabled ',0,0)
|
||||
call errquit('aoccsd: trpdrv_openmp_gpu disabled ',0,0)
|
||||
#endif
|
||||
c
|
||||
elseif (use_trpdrv_omp_mp) then
|
||||
|
|
@ -1017,29 +1051,6 @@ c
|
|||
#else
|
||||
call errquit('aoccsd: trpdrv_omp_mixprec disabled ',0,0)
|
||||
#endif
|
||||
c
|
||||
elseif (use_trpdrv_nb) then
|
||||
c
|
||||
if (iam.eq.0.and.oprint) then
|
||||
write(luout,1847) nvpass
|
||||
call util_flush(luout)
|
||||
endif
|
||||
1847 format(' commencing triples evaluation - non-blocking',i8)
|
||||
call ccsd_trpdrv_nb(dbl_mb(k_t1),
|
||||
#ifdef USE_F90_ALLOCATABLE
|
||||
$ f1n,f1t,f2n,f2t,f3n,f3t,f4n,f4t,
|
||||
#else
|
||||
$ dbl_mb(k_f1n),dbl_mb(k_f1t),dbl_mb(k_f2n),dbl_mb(k_f2t),
|
||||
$ dbl_mb(k_f3n),dbl_mb(k_f3t),dbl_mb(k_f4n),dbl_mb(k_f4t),
|
||||
#endif
|
||||
$ eorb,g_objo,g_objv,g_coul,g_exch,ncor,nocc,nvir,iprt,
|
||||
$ empt(1),empt(2),oseg_lo,oseg_hi,kchunk,
|
||||
$ dbl_mb(k_trp_Tij), dbl_mb(k_trp_Tkj), dbl_mb(k_trp_Tia),
|
||||
$ dbl_mb(k_trp_Tka), dbl_mb(k_trp_Xia), dbl_mb(k_trp_Xka),
|
||||
$ dbl_mb(k_trp_Jia), dbl_mb(k_trp_Jka), dbl_mb(k_trp_Kia),
|
||||
$ dbl_mb(k_trp_Kka), dbl_mb(k_trp_Jij), dbl_mb(k_trp_Jkj),
|
||||
$ dbl_mb(k_trp_Kij), dbl_mb(k_trp_Kkj), dbl_mb(k_trp_Dja),
|
||||
$ dbl_mb(k_trp_Djka), dbl_mb(k_trp_Djia))
|
||||
c
|
||||
#ifdef USE_MIC_TRPDRV
|
||||
elseif (use_trpdrv_offload) then
|
||||
|
|
@ -1065,31 +1076,6 @@ c
|
|||
$ dbl_mb(k_trp_Kij), dbl_mb(k_trp_Kkj), dbl_mb(k_trp_Dja),
|
||||
$ dbl_mb(k_trp_Djka), dbl_mb(k_trp_Djia))
|
||||
c
|
||||
#endif
|
||||
#ifdef BGP
|
||||
elseif (use_trpdrv_bgp2) then
|
||||
c
|
||||
if (iam.eq.0.and.oprint) then
|
||||
write(luout,1849)nvpass
|
||||
call util_flush(luout)
|
||||
endif
|
||||
1849 format(' commencing triples evaluation - Blue Gene v2',i8)
|
||||
call ccsd_trpdrv_bgp2(dbl_mb(k_t1),
|
||||
#ifdef USE_F90_ALLOCATABLE
|
||||
$ f1n,f1t,f2n,f2t,f3n,f3t,f4n,f4t,
|
||||
#else
|
||||
$ dbl_mb(k_f1n),dbl_mb(k_f1t),dbl_mb(k_f2n),dbl_mb(k_f2t),
|
||||
$ dbl_mb(k_f3n),dbl_mb(k_f3t),dbl_mb(k_f4n),dbl_mb(k_f4t),
|
||||
#endif
|
||||
$ eorb,g_objo,g_objv,g_coul,g_exch,ncor,nocc,nvir,iprt,
|
||||
$ empt(1),empt(2),oseg_lo,oseg_hi,kchunk,
|
||||
$ dbl_mb(k_trp_Tij), dbl_mb(k_trp_Tkj), dbl_mb(k_trp_Tia),
|
||||
$ dbl_mb(k_trp_Tka), dbl_mb(k_trp_Xia), dbl_mb(k_trp_Xka),
|
||||
$ dbl_mb(k_trp_Jia), dbl_mb(k_trp_Jka), dbl_mb(k_trp_Kia),
|
||||
$ dbl_mb(k_trp_Kka), dbl_mb(k_trp_Jij), dbl_mb(k_trp_Jkj),
|
||||
$ dbl_mb(k_trp_Kij), dbl_mb(k_trp_Kkj), dbl_mb(k_trp_Dja),
|
||||
$ dbl_mb(k_trp_Djka), dbl_mb(k_trp_Djia))
|
||||
c
|
||||
#endif
|
||||
else
|
||||
c
|
||||
|
|
|
|||
|
|
@ -1,70 +0,0 @@
|
|||
!
|
||||
! Argonne Leadership Computing Facility
|
||||
! BlueGene/P version
|
||||
! Written by Vitali Morozov <morozov@anl.gov>
|
||||
! Updated 20091022
|
||||
! -O5 -qipa=noinline -qsmp=omp
|
||||
!
|
||||
! modified from the original (use of einv)
|
||||
!
|
||||
subroutine ccsd_tengy_bgp(f1n,f1t,f2n,f2t,f3n,f3t,f4n,f4t,
|
||||
1 dintc,dintx,t1v,einv,
|
||||
2 emp4,emp5,nvir)
|
||||
implicit none
|
||||
integer nvir,b,c
|
||||
double precision emp4,emp5,denom
|
||||
double precision two,three,four
|
||||
double precision f1n(nvir,nvir),f1t(nvir,nvir)
|
||||
double precision f2n(nvir,nvir),f2t(nvir,nvir)
|
||||
double precision f3n(nvir,nvir),f3t(nvir,nvir)
|
||||
double precision f4n(nvir,nvir),f4t(nvir,nvir)
|
||||
double precision dintc(nvir),dintx(nvir),t1v(nvir)
|
||||
double precision einv(nvir,nvir)
|
||||
double precision e1, e2, e3, e4
|
||||
double precision t0, t1, t2, t3, t4, t5, t6, t7, t8, t9
|
||||
double precision z0, z1, z3, z5, z9, s0
|
||||
c
|
||||
!$omp parallel do
|
||||
!$omp& private(b,c,e1,e2,e3,e4,z0,z1,z3,z5,z9,s0,
|
||||
!$omp& t0,t1,t2,t3,t4,t5,t6,t7,t8,t9)
|
||||
!$omp& shared(f1n,f2n,f3n,f4n,f1t,f2t,f3t,f4t,dintx,dintc,t1v,einv)
|
||||
!$omp& reduction(+:emp5,emp4) schedule(static)
|
||||
do b = 1, nvir
|
||||
do c = 1, nvir
|
||||
|
||||
s0 = einv(c,b)
|
||||
|
||||
e1 = f1n(c,b) + f4n(c,b) - 2d0*( f2n(c,b) + f3n(c,b) )
|
||||
e2 = e1 + 3d0*f1n(c,b)
|
||||
|
||||
e3 = f1t(c,b) -2d0 * f2t(c,b)
|
||||
e4 = e3 + f2n(c,b) - 2d0*( f3t(c,b) + f4n(c,b) + f1n(c,b)
|
||||
1 - 2d0*( f3n(c,b) + f4t(c,b) ) )
|
||||
|
||||
emp5 = emp5 + ( t1v(c)*( e1*dintc(b) + e4*dintx(b) )
|
||||
1 + t1v(b)*( e2*dintx(c) + e3*dintc(c) ) ) * s0
|
||||
|
||||
t1 = f1t(c,b) + f3n(c,b)
|
||||
t2 = f1n(c,b) + f2t(c,b) + f4n(c,b)
|
||||
t9 = f1t(c,b) + f4t(c,b)
|
||||
t0 = f2t(c,b) + f3t(c,b)
|
||||
t3 = t9 - 2d0*t0
|
||||
t4 = t1 + f2n(c,b)
|
||||
t5 = 2d0*t9 - t0
|
||||
t6 = f3n(c,b) + 2d0*f4t(c,b)
|
||||
t7 = f3n(c,b) * f4t(c,b)
|
||||
t8 = t1*t3 - f1n(c,b)*t5 +3d0*( f1n(c,b)*f1n(c,b) + t7 )
|
||||
|
||||
z0 = f2t(b,c) + f3t(b,c)
|
||||
z9 = f1t(b,c) + f4t(b,c)
|
||||
z1 = f1t(b,c) + f3n(b,c)
|
||||
z3 = z9 - 2d0*z0
|
||||
z5 = 2d0*z9 - z0
|
||||
|
||||
emp4 = emp4 + ( t8 + t2*z3 - t4*z5
|
||||
1 + 3d0*( t6*f1n(b,c) + f2t(c,b)*f2n(b,c) ) ) * s0
|
||||
enddo
|
||||
enddo
|
||||
c
|
||||
return
|
||||
end
|
||||
|
|
@ -1,200 +0,0 @@
|
|||
c!
|
||||
c! 1) eorb_m( 0 ) => eorb( ncor + nocc ), allos to have 1 pointer instead of 3
|
||||
c! 2) #include "ccsdps.fh" is unnecessary
|
||||
c! 3) constants to variables is bad
|
||||
c! 4) remove if (occsdps) for a moment
|
||||
c!
|
||||
c! Original 60794725
|
||||
c! Computed 42410408, intrinsics for d0-d9
|
||||
subroutine ccsd_tengy_bgp2(f1n,f1t,f2n,f2t,f3n,f3t,f4n,f4t,
|
||||
1 dintc,dintx,t1v,eorb_r,eaijk,emp4,emp5,nvir)
|
||||
implicit none
|
||||
integer ncor,nocc,nvir
|
||||
integer b,c
|
||||
double precision eaijk,emp4,emp5,denom
|
||||
double precision f1n(nvir,nvir),f1t(nvir,nvir)
|
||||
double precision f2n(nvir,nvir),f2t(nvir,nvir)
|
||||
double precision f3n(nvir,nvir),f3t(nvir,nvir)
|
||||
double precision f4n(nvir,nvir),f4t(nvir,nvir)
|
||||
double precision dintc(nvir),dintx(nvir),t1v(nvir),eorb_r(*)
|
||||
|
||||
complex(8), parameter :: two = (2d0,2d0), three = (3d0,3d0)
|
||||
complex(8) af1t,af1n,af2t,af2n,af3t,af3n,af4t,af4n,
|
||||
1 adix,adiv,at1v,axmp,adic,b1,b2,b3,b4,b5,b6,b0,b9
|
||||
complex(8) c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,ca,
|
||||
1 bf1t,bf2t,bf3t,bf4t,bf1n,bf2n,bf3n
|
||||
complex(8) d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,da,
|
||||
1 cf1t,cf2t,cf3t,cf4t,cf1n,cf2n,cf3n,cf4n
|
||||
complex(8) e0,e1,e3,e5,e9,ef1t,ef2t,ef3t,ef4t,ef1n,ef2n,ef3n,
|
||||
1 bxmp,bdiv
|
||||
real(8) f0,f1
|
||||
|
||||
real(8) ediv(nvir,nvir)
|
||||
|
||||
c! ediv is symmetric => ediv( b,c ) = ediv( c,b )
|
||||
do b = 1, nvir
|
||||
do c = b, nvir
|
||||
ediv( c,b ) = 1d0 / ( eaijk - eorb_r( b ) - eorb_r( c ) )
|
||||
ediv( b,c ) = ediv( c,b )
|
||||
enddo
|
||||
enddo
|
||||
|
||||
axmp = ( emp5,0d0 )
|
||||
|
||||
do b = 1, nvir
|
||||
do c = 1, nvir, 2
|
||||
af1n = LOADFP( f1n( c,b ) )
|
||||
af1t = LOADFP( f1t( c,b ) )
|
||||
af2n = LOADFP( f2n( c,b ) )
|
||||
af2t = LOADFP( f2t( c,b ) )
|
||||
af3n = LOADFP( f3n( c,b ) )
|
||||
af3t = LOADFP( f3t( c,b ) )
|
||||
af4n = LOADFP( f4n( c,b ) )
|
||||
af4t = LOADFP( f4t( c,b ) )
|
||||
at1v = LOADFP( t1v( c ) )
|
||||
adic = LOADFP( dintc( c ) )
|
||||
adix = LOADFP( dintx( c ) )
|
||||
adiv = LOADFP( ediv( c,b ) )
|
||||
|
||||
b5 = FPADD( af1n, af4n )
|
||||
b5 = FPNMSUB( b5, two, af3n )
|
||||
b1 = FPNMSUB( b5, two, af2n )
|
||||
b2 = FPMADD( b1,three,af1n )
|
||||
b3 = FPNMSUB( af1t, two, af2t )
|
||||
b4 = FPADD( b3, af2n )
|
||||
b6 = FPNMSUB( b5, two, af4t )
|
||||
b4 = FPNMSUB( b4, two, af3t )
|
||||
b4 = FPNMSUB( b4, two, b6 )
|
||||
b4 = FXPMUL( b4, dintx(b) )
|
||||
b4 = FXCPMADD( b4, b1, dintc(b) )
|
||||
b4 = FPMUL( b4, at1v )
|
||||
b3 = FPMUL( b3, adic )
|
||||
b3 = FPMADD( b3, b2, adix )
|
||||
b3 = FXCPMADD( b4, b3, t1v(b) )
|
||||
axmp = FPMADD( axmp, b3, adiv )
|
||||
enddo
|
||||
enddo
|
||||
|
||||
emp5 = DBLE( axmp ) + IMAG( axmp )
|
||||
|
||||
bxmp = ( 0d0,0d0 )
|
||||
do b = 1, nvir, 2
|
||||
do c = 1, nvir, 2
|
||||
|
||||
af1t = LOADFP( f1t( c,b ) )
|
||||
af2t = LOADFP( f2t( c,b ) )
|
||||
af3t = LOADFP( f3t( c,b ) )
|
||||
af4t = LOADFP( f4t( c,b ) )
|
||||
af1n = LOADFP( f1n( c,b ) )
|
||||
af2n = LOADFP( f2n( c,b ) )
|
||||
af3n = LOADFP( f3n( c,b ) )
|
||||
af4n = LOADFP( f4n( c,b ) )
|
||||
adiv = LOADFP( ediv( c,b ) )
|
||||
|
||||
c1 = FPADD( af1t, af3n )
|
||||
c2 = FPADD( af1n, af2t )
|
||||
c2 = FPADD( c2, af4n )
|
||||
c9 = FPADD( af1t, af4t )
|
||||
c0 = FPADD( af2t, af3t )
|
||||
c3 = FPNMSUB( c9, two, c0 )
|
||||
c4 = FPADD( c1, af2n )
|
||||
c5 = FPMSUB( c0, two, c9 )
|
||||
c6 = FPMADD( af3n, two, af4t )
|
||||
c7 = FPMUL( af3n, af4t )
|
||||
c8 = FPMUL( c1, c3 )
|
||||
ca = FPMADD( c7, af1n, af1n )
|
||||
c8 = FPNMSUB( c8, c5, af1n )
|
||||
c8 = FPMADD( c8, three, ca )
|
||||
|
||||
bf1t = LOADFP( f1t( b,c ) )
|
||||
bf2t = LOADFP( f2t( b,c ) )
|
||||
bf3t = LOADFP( f3t( b,c ) )
|
||||
bf4t = LOADFP( f4t( b,c ) )
|
||||
bf1n = LOADFP( f1n( b,c ) )
|
||||
bf2n = LOADFP( f2n( b,c ) )
|
||||
bf3n = LOADFP( f3n( b,c ) )
|
||||
|
||||
b0 = FPADD( bf2t, bf3t )
|
||||
b9 = FPADD( bf1t, bf4t )
|
||||
b1 = FPADD( bf1t, bf3n )
|
||||
b3 = FPNMSUB( b9, two, b0 )
|
||||
b5 = FPMSUB( b0, two, b9 )
|
||||
|
||||
cf1t = LOADFP( f1t( c,b+1 ) )
|
||||
cf2t = LOADFP( f2t( c,b+1 ) )
|
||||
cf3t = LOADFP( f3t( c,b+1 ) )
|
||||
cf4t = LOADFP( f4t( c,b+1 ) )
|
||||
cf1n = LOADFP( f1n( c,b+1 ) )
|
||||
cf2n = LOADFP( f2n( c,b+1 ) )
|
||||
cf3n = LOADFP( f3n( c,b+1 ) )
|
||||
cf4n = LOADFP( f4n( c,b+1 ) )
|
||||
bdiv = LOADFP( ediv( c,b+1 ) )
|
||||
|
||||
d1 = FPADD( cf1t, cf3n )
|
||||
d2 = FPADD( cf1n, cf2t )
|
||||
d2 = FPADD( d2, cf4n )
|
||||
d9 = FPADD( cf1t, cf4t )
|
||||
d0 = FPADD( cf2t, cf3t )
|
||||
d3 = FPNMSUB( d9, two, d0 )
|
||||
d4 = FPADD( d1, cf2n )
|
||||
d5 = FPMSUB( d0, two, d9 )
|
||||
d6 = FPMADD( cf3n, two, cf4t )
|
||||
!d7 = FPMUL( cf3n, cf4t )
|
||||
!d8 = FPMUL( d1, d3 )
|
||||
!da = FPMADD( d7, cf1n, cf1n )
|
||||
!d8 = FPNMSUB( d8, d5, cf1n )
|
||||
!d8 = FPMADD( d8, three, da )
|
||||
d5 = FPNMSUB( d5, three, cf1n )
|
||||
d7 = FPMUL( d1, d3 )
|
||||
d8 = FPNMSUB( d7, d5, cf1n )
|
||||
|
||||
ef1t = LOADFP( f1t( b,c+1 ) )
|
||||
ef2t = LOADFP( f2t( b,c+1 ) )
|
||||
ef3t = LOADFP( f3t( b,c+1 ) )
|
||||
ef4t = LOADFP( f4t( b,c+1 ) )
|
||||
ef1n = LOADFP( f1n( b,c+1 ) )
|
||||
ef2n = LOADFP( f2n( b,c+1 ) )
|
||||
ef3n = LOADFP( f3n( b,c+1 ) )
|
||||
|
||||
e0 = FPADD( ef2t, ef3t )
|
||||
e9 = FPADD( ef1t, ef4t )
|
||||
e1 = FPADD( ef1t, ef3n )
|
||||
e3 = FPNMSUB( e9, two, e0 )
|
||||
e5 = FPMSUB( e0, two, e9 )
|
||||
|
||||
f0 = IMAG( b3 )
|
||||
b3 = ( DBLE(b3),DBLE(e3) )
|
||||
e3 = ( f0,IMAG(e3) )
|
||||
f0 = IMAG( b5 )
|
||||
b5 = ( DBLE(b5),DBLE(e5) )
|
||||
e5 = ( f0,IMAG(e5) )
|
||||
f0 = IMAG( bf1n )
|
||||
bf1n = ( DBLE(bf1n),DBLE(ef1n) )
|
||||
ef1n = ( f0,IMAG(ef1n) )
|
||||
f0 = IMAG( bf2n )
|
||||
bf2n = ( DBLE(bf2n),DBLE(ef2n) )
|
||||
ef2n = ( f0,IMAG(ef2n) )
|
||||
|
||||
c8 = FPMADD( c8, c2, b3 )
|
||||
c6 = FPMUL( c6, bf1n )
|
||||
c8 = FPNMSUB( c8, c4, b5 )
|
||||
c6 = FPMADD( c6, af2t, bf2n )
|
||||
c8 = FPMADD( c8, three, c6 )
|
||||
bxmp = FPMADD( bxmp, c8, adiv )
|
||||
|
||||
d8 = FPMADD( d8, d2, e3 )
|
||||
d6 = FPMUL( d6, ef1n )
|
||||
d8 = FPNMSUB( d8, d4, e5 )
|
||||
d6 = FPMADD( d6, cf2t, ef2n )
|
||||
d6 = FPMADD( d6, cf3n, cf4t )
|
||||
d8 = FPMADD( d8, three, d6 )
|
||||
bxmp = FPMADD( bxmp, d8, bdiv )
|
||||
enddo
|
||||
enddo
|
||||
|
||||
emp4 = emp4 + DBLE( bxmp ) + IMAG( bxmp )
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
c $Id$
|
||||
|
|
@ -361,12 +361,15 @@ c -- f4n(b,c)=f4n(b,c)+vvvo(a,d,b,i)*t2(d,k,c,j)
|
|||
integer av,klo,khi,j
|
||||
c
|
||||
integer k,l_kk,k_kk,lenk,start,end,iptr,i,startc
|
||||
double precision mem_avail
|
||||
logical failed
|
||||
c
|
||||
start = 1 + (j-1)*nvir + (klo-1)*lnov
|
||||
end = (j-1)*nvir + (khi)*lnov
|
||||
lenk=end-start+1
|
||||
lenk=min(lenk,(ma_inquire_avail(MT_DBL)*66)/100)
|
||||
c protect from integer overflowing on 32bit archs
|
||||
mem_avail=0.66d0*dble(ma_inquire_avail(MT_DBL))
|
||||
lenk=min(lenk,int(mem_avail))
|
||||
crestrict to 5M to avoid OOMs
|
||||
lenk=min(lenk,5000000)
|
||||
1 continue
|
||||
|
|
|
|||
|
|
@ -1,478 +0,0 @@
|
|||
subroutine ccsd_trpdrv_bgp2(t1,
|
||||
& f1n,f1t,f2n,f2t,f3n,f3t,f4n,f4t,eorb,
|
||||
& g_objo,g_objv,g_coul,g_exch,
|
||||
& ncor,nocc,nvir,iprt,emp4,emp5,
|
||||
& oseg_lo,oseg_hi,
|
||||
$ kchunk, Tij, Tkj, Tia, Tka, Xia, Xka, Jia, Jka, Kia, Kka,
|
||||
$ Jij, Jkj, Kij, Kkj, Dja, Djka, Djia)
|
||||
C $Id$
|
||||
implicit none
|
||||
c
|
||||
#include "global.fh"
|
||||
#include "ccsd_len.fh"
|
||||
#include "ccsdps.fh"
|
||||
c
|
||||
double precision t1(*),
|
||||
& f1n(*),f1t(*),f2n(*),
|
||||
& f2t(*),f3n(*),f3t(*),f4n(*),f4t(*),eorb(*),
|
||||
& emp4,emp5
|
||||
double precision Tij(*), Tkj(*), Tia(*), Tka(*), Xia(*), Xka(*),
|
||||
$ Jia(*), Jka(*), Kia(*), Kka(*),
|
||||
$ Jij(*), Jkj(*), Kij(*), Kkj(*), Dja(*), Djka(*), Djia(*)
|
||||
|
||||
integer g_objo,g_objv,ncor,nocc,nvir,iprt,g_coul,
|
||||
& g_exch,oseg_lo,oseg_hi
|
||||
c
|
||||
double precision eaijk
|
||||
integer a,b,c,i,j,k,akold,av,inode,len,next,nxtask
|
||||
external nxtask
|
||||
C
|
||||
Integer Nodes, IAm
|
||||
c
|
||||
integer klo, khi, start, end
|
||||
integer kchunk
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
integer tt
|
||||
double precision tt0,tt1,trp_time(26)
|
||||
#endif
|
||||
c
|
||||
double precision zip
|
||||
data zip/0.0d00/
|
||||
c
|
||||
c apr call ga_print(g_coul)
|
||||
c apr call ga_print(g_exch)
|
||||
Nodes = GA_NNodes()
|
||||
IAm = GA_NodeID()
|
||||
C
|
||||
call ga_sync()
|
||||
if (occsdps) then
|
||||
call pstat_on(ps_trpdrv)
|
||||
else
|
||||
call qenter('trpdrv',0)
|
||||
endif
|
||||
inode=-1
|
||||
next=nxtask(nodes, 1)
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
do tt = 1, 26
|
||||
trp_time(tt) = 0.0d0
|
||||
enddo
|
||||
#endif
|
||||
c
|
||||
do klo = 1, nocc, kchunk
|
||||
akold=0
|
||||
khi = min(nocc, klo+kchunk-1)
|
||||
do a=oseg_lo,oseg_hi
|
||||
av=a-ncor-nocc
|
||||
do j=1,nocc
|
||||
inode=inode+1
|
||||
if (inode.eq.next)then
|
||||
c
|
||||
c Get Dja = Dci,ja for given j, a, all ci
|
||||
c
|
||||
start = 1 + (j-1)*lnov
|
||||
len = lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objv,start,end,av,av,Dja,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(1) = trp_time(1) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Tkj = T(b,c,k,j) for given j, klo<=k<=khi, all bc
|
||||
c
|
||||
start = (klo-1)*lnvv + 1
|
||||
len = (khi-klo+1)*lnvv
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objo,start,end,j,j,Tkj,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(2) = trp_time(2) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Jkj = J(c,l,k,j) for given j, klo<=k<=khi, all cl
|
||||
c
|
||||
start = lnovv + (klo-1)*lnov + 1
|
||||
len = (khi-klo+1)*lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objo,start,end,j,j,Jkj,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(3) = trp_time(3) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Kkj = K(c,l,k,j) for given j, klo<=k<=khi, all cl
|
||||
c
|
||||
start = lnovv + lnoov + (klo-1)*lnov + 1
|
||||
len = (khi-klo+1)*lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objo,start,end,j,j,Kkj,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(4) = trp_time(4) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
if (akold .ne. a) then
|
||||
akold = a
|
||||
c
|
||||
c Get Jka = J(b,c,k,a) for given a, klo<=k<=khi, all bc
|
||||
c
|
||||
start = (a-oseg_lo)*nocc + klo
|
||||
len = (khi-klo+1)
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_coul,1,lnvv,start,end,Jka,lnvv)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(5) = trp_time(5) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Kka = K(b,c,k,a) for given a, klo<=k<=khi, all bc
|
||||
c
|
||||
start = (a-oseg_lo)*nocc + klo
|
||||
len = (khi-klo+1)
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_exch,1,lnvv,start,end,Kka,lnvv)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(6) = trp_time(6) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Tka = Tbl,ka for given a, klo<=k<=khi, all bl
|
||||
c
|
||||
start = 1 + lnoov + (klo-1)*lnov
|
||||
len = (khi-klo+1)*lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objv,start,end,av,av,Tka,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(7) = trp_time(7) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Xka = Tal,kb for given a, klo<=k<=khi, all bl
|
||||
c
|
||||
start = 1 + lnoov + lnoov + (klo-1)*lnov
|
||||
len = (khi-klo+1)*lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objv,start,end,av,av,Xka,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(8) = trp_time(8) + (tt1-tt0)
|
||||
#endif
|
||||
endif
|
||||
c
|
||||
c Get Djka = Dcj,ka for given j, a, klo<=k<=khi, all c
|
||||
c
|
||||
do k = klo, khi
|
||||
start = 1 + (j-1)*nvir + (k-1)*lnov
|
||||
len = nvir
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objv,start,end,av,av,
|
||||
$ Djka(1+(k-klo)*nvir),len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(9) = trp_time(9) + (tt1-tt0)
|
||||
#endif
|
||||
enddo
|
||||
c
|
||||
do i=1,nocc
|
||||
c
|
||||
c Get Tij = T(b,c,i,j) for given j, i, all bc
|
||||
c
|
||||
start = (i-1)*lnvv + 1
|
||||
len = lnvv
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objo,start,end,j,j,Tij,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(10) = trp_time(10) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Jij = J(c,l,i,j) for given j, i, all cl
|
||||
c
|
||||
start = lnovv + (i-1)*lnov + 1
|
||||
len = lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objo,start,end,j,j,Jij,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(11) = trp_time(11) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Kij = K(c,l,i,j) for given j, i, all cl
|
||||
c
|
||||
start = lnovv + lnoov + (i-1)*lnov + 1
|
||||
len = lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objo,start,end,j,j,Kij,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(12) = trp_time(12) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Jia = J(b,c,i,a) for given a, i, all bc
|
||||
c
|
||||
start = (a-oseg_lo)*nocc + i
|
||||
len = 1
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_coul,1,lnvv,start,end,Jia,lnvv)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(13) = trp_time(13) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Kia = K(b,c,i,a) for given a, i, all bc
|
||||
c
|
||||
start = (a-oseg_lo)*nocc + i
|
||||
len = 1
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_exch,1,lnvv,start,end,Kia,lnvv)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(14) = trp_time(14) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Dia = Dcj,ia for given j, i, a, all c
|
||||
c
|
||||
start = 1 + (j-1)*nvir + (i-1)*lnov
|
||||
len = nvir
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objv,start,end,av,av,Djia,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(15) = trp_time(15) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Tia = Tbl,ia for given a, i, all bl
|
||||
c
|
||||
start = 1 + lnoov + (i-1)*lnov
|
||||
len = lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objv,start,end,av,av,Tia,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(16) = trp_time(16) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Xia = Tal,ib for given a, i, all bl
|
||||
c
|
||||
start = 1 + lnoov + lnoov + (i-1)*lnov
|
||||
len = lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_get(g_objv,start,end,av,av,Xia,len)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(17) = trp_time(17) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
do k=klo,min(khi,i)
|
||||
call dfill(lnvv,zip,f1n,1)
|
||||
call dfill(lnvv,zip,f1t,1)
|
||||
call dfill(lnvv,zip,f2n,1)
|
||||
call dfill(lnvv,zip,f2t,1)
|
||||
call dfill(lnvv,zip,f3n,1)
|
||||
call dfill(lnvv,zip,f3t,1)
|
||||
call dfill(lnvv,zip,f4n,1)
|
||||
call dfill(lnvv,zip,f4t,1)
|
||||
c
|
||||
c sum(d) (Jia, Kia)bd * Tkj,cd -> Fbc
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_dovvv(Jia, Kia,
|
||||
$ Tkj(1+(k-klo)*lnvv),f1n,f2n,f3n,f4n,
|
||||
$ nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(18) = trp_time(18) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c sum(d) (Jka, Kka)bd * Tij,cd -> Fbc
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_dovvv(Jka(1+(k-klo)*lnvv),
|
||||
$ Kka(1+(k-klo)*lnvv),
|
||||
$ Tij,f1t,f2t,f3t,f4t,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(19) = trp_time(19) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c sum(l) (Jij, Kij)cl * Tkl,ab -> Fbc
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_doooo(Jkj(1+(k-klo)*lnov),
|
||||
$ Kkj(1+(k-klo)*lnov),
|
||||
$ Tia,Xia,
|
||||
$ f1n,f2n,
|
||||
$ f3n,f4n,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(20) = trp_time(20) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c sum(l) (Jkj, Kkj)cl * Tli,ba -> Fbc
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_doooo(Jij, Kij,
|
||||
$ Tka(1+(k-klo)*lnov),Xka(1+(k-klo)*lnov),
|
||||
$ f1t,f2t,
|
||||
$ f3t,f4t,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(21) = trp_time(21) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c if (iprt.gt.50)then
|
||||
c call prtfmat(f1n,f1t,f2n,f2t,f3n,f3t,f4n,
|
||||
c $ f4t, nvir)
|
||||
c end if
|
||||
c
|
||||
eaijk=eorb(ncor+i)+eorb(ncor+j)+eorb(ncor+k)
|
||||
$ -eorb(a)
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_tengy_bgp2(f1n,f1t,f2n,f2t,
|
||||
$ f3n,f3t,f4n,f4t,
|
||||
$ Dja(1+(i-1)*nvir),
|
||||
$ Djia,
|
||||
$ t1((k-1)*nvir+1),
|
||||
$ eorb(nocc+ncor+1),
|
||||
$ eaijk,emp4,emp5,
|
||||
$ ncor,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(22) = trp_time(22) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
if (i.ne.k)then
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_tengy_bgp2(f1t,f1n,f2t,f2n,
|
||||
$ f3t,f3n,f4t,f4n,
|
||||
$ Dja(1+(k-1)*nvir),
|
||||
$ Djka(1+(k-klo)*nvir),
|
||||
$ t1((i-1)*nvir+1),
|
||||
$ eorb(nocc+ncor+1),
|
||||
$ eaijk,emp4,emp5,
|
||||
$ ncor,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(23) = trp_time(23) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
end if
|
||||
end do
|
||||
end do
|
||||
if (iprt.gt.50)then
|
||||
write(6,1234)iam,a,j,emp4,emp5
|
||||
1234 format(' iam aijk',3i5,2e15.5)
|
||||
end if
|
||||
next=nxtask(nodes, 1)
|
||||
end if
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
c
|
||||
do tt = 1, 17
|
||||
!write(6,97) IAm,tt,trp_time(tt)
|
||||
trp_time(24) = trp_time(24) + trp_time(tt)
|
||||
enddo
|
||||
call util_flush(6)
|
||||
97 format('node ',i5,': ga_get timer(',i2,') = ',1e15.5)
|
||||
c
|
||||
do tt = 18, 21
|
||||
!write(6,98) IAm,tt,trp_time(tt)
|
||||
trp_time(25) = trp_time(25) + trp_time(tt)
|
||||
enddo
|
||||
call util_flush(6)
|
||||
98 format('node ',i5,': dgemm timer(',i2,') = ',1e15.5)
|
||||
c
|
||||
do tt = 22, 23
|
||||
!write(6,99) IAm,tt,trp_time(tt)
|
||||
trp_time(26) = trp_time(26) + trp_time(tt)
|
||||
enddo
|
||||
call util_flush(6)
|
||||
99 format('node ',i5,': tengy timer(',i2,') = ',1e15.5)
|
||||
c
|
||||
call ga_sync()
|
||||
if (IAm.eq.0) write(6,87)
|
||||
87 format(2x,'node',6x,'ga_get',9x,'dgemm',10x,'tengy')
|
||||
call ga_sync()
|
||||
write(6,88) IAm,trp_time(24),trp_time(25),trp_time(26)
|
||||
88 format(i7,3e15.5)
|
||||
c
|
||||
#endif
|
||||
c
|
||||
next=nxtask(-nodes, 1)
|
||||
call ga_sync()
|
||||
if (occsdps) then
|
||||
call pstat_off(ps_trpdrv)
|
||||
else
|
||||
call qexit('trpdrv',0)
|
||||
endif
|
||||
c
|
||||
end
|
||||
|
|
@ -1,649 +0,0 @@
|
|||
subroutine ccsd_trpdrv_nb(t1,
|
||||
& f1n,f1t,f2n,f2t,f3n,f3t,f4n,f4t,eorb,
|
||||
& g_objo,g_objv,g_coul,g_exch,
|
||||
& ncor,nocc,nvir,iprt,emp4,emp5,
|
||||
& oseg_lo,oseg_hi,
|
||||
$ kchunk, Tij, Tkj, Tia, Tka, Xia, Xka, Jia, Jka, Kia, Kka,
|
||||
$ Jij, Jkj, Kij, Kkj, Dja, Djka, Djia)
|
||||
c
|
||||
C $Id$
|
||||
c
|
||||
c CCSD(T) non-blocking modifications written by
|
||||
c Jeff Hammond, Argonne Leadership Computing Facility
|
||||
c Fall 2009
|
||||
c
|
||||
implicit none
|
||||
c
|
||||
#include "global.fh"
|
||||
#include "ccsd_len.fh"
|
||||
#include "ccsdps.fh"
|
||||
c
|
||||
double precision t1(*),
|
||||
& f1n(*),f1t(*),f2n(*),
|
||||
& f2t(*),f3n(*),f3t(*),f4n(*),f4t(*),eorb(*),
|
||||
& emp4,emp5
|
||||
double precision Tij(*), Tkj(*), Tia(*), Tka(*), Xia(*), Xka(*),
|
||||
$ Jia(*), Jka(*), Kia(*), Kka(*),
|
||||
$ Jij(*), Jkj(*), Kij(*), Kkj(*), Dja(*), Djka(*), Djia(*)
|
||||
|
||||
integer g_objo,g_objv,ncor,nocc,nvir,iprt,g_coul,
|
||||
& g_exch,oseg_lo,oseg_hi
|
||||
c
|
||||
double precision eaijk
|
||||
integer a,i,j,k,akold,av,inode,len,ad3,next
|
||||
integer nxtask
|
||||
external nxtask
|
||||
c
|
||||
Integer Nodes, IAm
|
||||
c
|
||||
integer klo, khi, start, end
|
||||
integer kchunk
|
||||
c
|
||||
c==================================================
|
||||
c
|
||||
c NON-BLOCKING stuff
|
||||
c
|
||||
c==================================================
|
||||
c
|
||||
c Dependencies (global array, local array, handle):
|
||||
c
|
||||
c g_objv, Dja, nbh_objv1
|
||||
c g_objv, Tka, nbh_objv2
|
||||
c g_objv, Xka, nbh_objv3
|
||||
c g_objv, Djka(1+(k-klo)*nvir), nbh_objv4(k)
|
||||
c g_objv, Djia, nbh_objv5
|
||||
c g_objv, Tia, nbh_objv6
|
||||
c g_objv, Xia, nbh_objv7
|
||||
c g_objo, Tkj, nbh_objo1
|
||||
c g_objo, Jkj, nbh_objo2
|
||||
c g_objo, Kkj, nbh_objo3
|
||||
c g_objo, Tij, nbh_objo4
|
||||
c g_objo, Jij, nbh_objo5
|
||||
c g_objo, Kij, nbh_objo6
|
||||
c g_exch, Kka, nbh_exch1
|
||||
c g_exch, Kia, nbh_exch2
|
||||
c g_coul, Jka, nbh_coul1
|
||||
c g_coul, Jia, nbh_coul2
|
||||
c
|
||||
c non-blocking handles
|
||||
c
|
||||
integer nbh_objv1,nbh_objv2,nbh_objv3
|
||||
integer nbh_objv5,nbh_objv6,nbh_objv7
|
||||
integer nbh_objv4(nocc)
|
||||
c
|
||||
integer nbh_objo1,nbh_objo2,nbh_objo3
|
||||
integer nbh_objo4,nbh_objo5,nbh_objo6
|
||||
c
|
||||
integer nbh_exch1,nbh_exch2,nbh_coul1,nbh_coul2
|
||||
c
|
||||
logical need_ccsd_dovvv1
|
||||
logical need_ccsd_dovvv2
|
||||
logical need_ccsd_doooo1
|
||||
logical need_ccsd_doooo2
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
integer tt
|
||||
double precision tt0,tt1,trp_time(26)
|
||||
#endif
|
||||
c
|
||||
c==================================================
|
||||
c
|
||||
double precision zip
|
||||
data zip/0.0d00/
|
||||
c
|
||||
Nodes = GA_NNodes()
|
||||
IAm = GA_NodeID()
|
||||
c
|
||||
call ga_sync()
|
||||
c
|
||||
if (occsdps) then
|
||||
call pstat_on(ps_trpdrv)
|
||||
else
|
||||
call qenter('trpdrv',0)
|
||||
endif
|
||||
inode=-1
|
||||
next=nxtask(nodes, 1)
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
do tt = 1, 26
|
||||
trp_time(tt) = 0.0d0
|
||||
enddo
|
||||
#endif
|
||||
c
|
||||
do klo = 1, nocc, kchunk
|
||||
akold=0
|
||||
khi = min(nocc, klo+kchunk-1)
|
||||
do a=oseg_lo,oseg_hi
|
||||
av=a-ncor-nocc
|
||||
do j=1,nocc
|
||||
inode=inode+1
|
||||
if (inode.eq.next)then
|
||||
c
|
||||
c Get Dja = Dci,ja for given j, a, all ci
|
||||
c
|
||||
start = 1 + (j-1)*lnov
|
||||
len = lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objv,start,end,av,av,Dja,len,
|
||||
1 nbh_objv1)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(1) = trp_time(1) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Tkj = T(b,c,k,j) for given j, klo<=k<=khi, all bc
|
||||
c
|
||||
start = (klo-1)*lnvv + 1
|
||||
len = (khi-klo+1)*lnvv
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objo,start,end,j,j,Tkj,len,
|
||||
1 nbh_objo1)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(2) = trp_time(2) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Jkj = J(c,l,k,j) for given j, klo<=k<=khi, all cl
|
||||
c
|
||||
start = lnovv + (klo-1)*lnov + 1
|
||||
len = (khi-klo+1)*lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objo,start,end,j,j,Jkj,len,
|
||||
1 nbh_objo2)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(3) = trp_time(3) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Kkj = K(c,l,k,j) for given j, klo<=k<=khi, all cl
|
||||
c
|
||||
start = lnovv + lnoov + (klo-1)*lnov + 1
|
||||
len = (khi-klo+1)*lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objo,start,end,j,j,Kkj,len,
|
||||
1 nbh_objo3)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(4) = trp_time(4) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
if (akold .ne. a) then
|
||||
akold = a
|
||||
c
|
||||
c Get Jka = J(b,c,k,a) for given a, klo<=k<=khi, all bc
|
||||
c
|
||||
start = (a-oseg_lo)*nocc + klo
|
||||
len = (khi-klo+1)
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_coul,1,lnvv,start,end,Jka,lnvv,
|
||||
1 nbh_coul1)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(5) = trp_time(5) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Kka = K(b,c,k,a) for given a, klo<=k<=khi, all bc
|
||||
c
|
||||
start = (a-oseg_lo)*nocc + klo
|
||||
len = (khi-klo+1)
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_exch,1,lnvv,start,end,Kka,lnvv,
|
||||
1 nbh_exch1)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(6) = trp_time(6) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Tka = Tbl,ka for given a, klo<=k<=khi, all bl
|
||||
c
|
||||
start = 1 + lnoov + (klo-1)*lnov
|
||||
len = (khi-klo+1)*lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objv,start,end,av,av,Tka,len,
|
||||
1 nbh_objv2)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(7) = trp_time(7) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Xka = Tal,kb for given a, klo<=k<=khi, all bl
|
||||
c
|
||||
start = 1 + lnoov + lnoov + (klo-1)*lnov
|
||||
len = (khi-klo+1)*lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objv,start,end,av,av,Xka,len,
|
||||
1 nbh_objv3)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(8) = trp_time(8) + (tt1-tt0)
|
||||
#endif
|
||||
endif
|
||||
c
|
||||
c Get Djka = Dcj,ka for given j, a, klo<=k<=khi, all c
|
||||
c
|
||||
do k = klo, khi
|
||||
start = 1 + (j-1)*nvir + (k-1)*lnov
|
||||
len = nvir
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objv,start,end,av,av,
|
||||
1 Djka(1+(k-klo)*nvir),len,nbh_objv4(k)) ! k <= nocc
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(9) = trp_time(9) + (tt1-tt0)
|
||||
#endif
|
||||
enddo
|
||||
c
|
||||
do i=1,nocc
|
||||
c
|
||||
c Get Tij = T(b,c,i,j) for given j, i, all bc
|
||||
c
|
||||
start = (i-1)*lnvv + 1
|
||||
len = lnvv
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objo,start,end,j,j,Tij,len,
|
||||
1 nbh_objo4)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(10) = trp_time(10) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Jij = J(c,l,i,j) for given j, i, all cl
|
||||
c
|
||||
start = lnovv + (i-1)*lnov + 1
|
||||
len = lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objo,start,end,j,j,Jij,len,
|
||||
1 nbh_objo5)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(11) = trp_time(11) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Kij = K(c,l,i,j) for given j, i, all cl
|
||||
c
|
||||
start = lnovv + lnoov + (i-1)*lnov + 1
|
||||
len = lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objo,start,end,j,j,Kij,len,
|
||||
1 nbh_objo6)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(12) = trp_time(12) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Jia = J(b,c,i,a) for given a, i, all bc
|
||||
c
|
||||
start = (a-oseg_lo)*nocc + i
|
||||
len = 1
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_coul,1,lnvv,start,end,Jia,lnvv,
|
||||
1 nbh_coul2)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(13) = trp_time(13) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Kia = K(b,c,i,a) for given a, i, all bc
|
||||
c
|
||||
start = (a-oseg_lo)*nocc + i
|
||||
len = 1
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_exch,1,lnvv,start,end,Kia,lnvv,
|
||||
1 nbh_exch2)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(14) = trp_time(14) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Dia = Dcj,ia for given j, i, a, all c
|
||||
c
|
||||
start = 1 + (j-1)*nvir + (i-1)*lnov
|
||||
len = nvir
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objv,start,end,av,av,Djia,len,
|
||||
1 nbh_objv5)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(15) = trp_time(15) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Tia = Tbl,ia for given a, i, all bl
|
||||
c
|
||||
start = 1 + lnoov + (i-1)*lnov
|
||||
len = lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objv,start,end,av,av,Tia,len,
|
||||
1 nbh_objv6)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(16) = trp_time(16) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
c Get Xia = Tal,ib for given a, i, all bl
|
||||
c
|
||||
start = 1 + lnoov + lnoov + (i-1)*lnov
|
||||
len = lnov
|
||||
end = start + len - 1
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ga_nbget(g_objv,start,end,av,av,Xia,len,
|
||||
1 nbh_objv7)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(17) = trp_time(17) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
do k=klo,min(khi,i)
|
||||
call dfill(lnvv,zip,f1n,1)
|
||||
call dfill(lnvv,zip,f1t,1)
|
||||
call dfill(lnvv,zip,f2n,1)
|
||||
call dfill(lnvv,zip,f2t,1)
|
||||
call dfill(lnvv,zip,f3n,1)
|
||||
call dfill(lnvv,zip,f3t,1)
|
||||
call dfill(lnvv,zip,f4n,1)
|
||||
call dfill(lnvv,zip,f4t,1)
|
||||
c
|
||||
need_ccsd_dovvv1 = .true.
|
||||
need_ccsd_dovvv2 = .true.
|
||||
need_ccsd_doooo1 = .true.
|
||||
need_ccsd_doooo2 = .true.
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
!write(6,*) IAm,'before do-while loop'
|
||||
#endif
|
||||
c
|
||||
do while ( need_ccsd_dovvv1 .or. need_ccsd_dovvv2
|
||||
1 .or. need_ccsd_doooo1 .or. need_ccsd_doooo2 )
|
||||
c
|
||||
c sum(d) (Jia, Kia)bd * Tkj,cd -> Fbc
|
||||
c
|
||||
c g_coul, Jia, nbh_coul2
|
||||
c g_exch, Kia, nbh_exch2
|
||||
c g_objo, Tkj, nbh_objo1
|
||||
c
|
||||
if ( need_ccsd_dovvv1 ) then
|
||||
if ( (0.eq.ga_nbtest(nbh_coul2)) .and.
|
||||
1 (0.eq.ga_nbtest(nbh_exch2)) .and.
|
||||
2 (0.eq.ga_nbtest(nbh_objo1)) ) then
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
!write(6,55) IAm,'ccsd_dovvv1'
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_dovvv(Jia, Kia,
|
||||
$ Tkj(1+(k-klo)*lnvv),
|
||||
$ f1n,f2n,f3n,f4n,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(18) = trp_time(18) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
need_ccsd_dovvv1 = .false.
|
||||
c
|
||||
endif
|
||||
endif
|
||||
c
|
||||
c sum(d) (Jka, Kka)bd * Tij,cd -> Fbc
|
||||
c
|
||||
c g_coul, Jka, nbh_coul1
|
||||
c g_exch, Kka, nbh_exch1
|
||||
c g_objo, Tij, nbh_objo4
|
||||
c
|
||||
if ( need_ccsd_dovvv2 ) then
|
||||
if ( (0.eq.ga_nbtest(nbh_coul1)) .and.
|
||||
1 (0.eq.ga_nbtest(nbh_exch1)) .and.
|
||||
2 (0.eq.ga_nbtest(nbh_objo4)) ) then
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
!write(6,55) IAm,'ccsd_dovvv2'
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_dovvv(Jka(1+(k-klo)*lnvv),
|
||||
$ Kka(1+(k-klo)*lnvv),Tij,
|
||||
$ f1t,f2t,f3t,f4t,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(19) = trp_time(19) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
need_ccsd_dovvv2 = .false.
|
||||
c
|
||||
endif
|
||||
endif
|
||||
c
|
||||
c sum(l) (Jij, Kij)cl * Tkl,ab -> Fbc
|
||||
c
|
||||
c g_objo, Jkj, nbh_objo2
|
||||
c g_objo, Kkj, nbh_objo3
|
||||
c g_objv, Tia, nbh_objv6
|
||||
c g_objv, Xia, nbh_objv7
|
||||
c
|
||||
if ( need_ccsd_doooo1 ) then
|
||||
if ( (0.eq.ga_nbtest(nbh_objo2)) .and.
|
||||
1 (0.eq.ga_nbtest(nbh_objo3)) .and.
|
||||
2 (0.eq.ga_nbtest(nbh_objv6)) .and.
|
||||
3 (0.eq.ga_nbtest(nbh_objv7)) ) then
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
!write(6,55) IAm,'ccsd_doooo1'
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_doooo(Jkj(1+(k-klo)*lnov),
|
||||
$ Kkj(1+(k-klo)*lnov),Tia,Xia,
|
||||
$ f1n,f2n,f3n,f4n,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(20) = trp_time(20) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
need_ccsd_doooo1 = .false.
|
||||
c
|
||||
endif
|
||||
endif
|
||||
c
|
||||
c sum(l) (Jkj, Kkj)cl * Tli,ba -> Fbc
|
||||
c
|
||||
c g_objo, Jij, nbh_objo5
|
||||
c g_objo, Kij, nbh_objo6
|
||||
c g_objv, Tka, nbh_objv2
|
||||
c g_objv, Xka, nbh_objv3
|
||||
c
|
||||
if ( need_ccsd_doooo2 ) then
|
||||
if ( (0.eq.ga_nbtest(nbh_objo5)) .and.
|
||||
1 (0.eq.ga_nbtest(nbh_objo6)) .and.
|
||||
2 (0.eq.ga_nbtest(nbh_objv2)) .and.
|
||||
3 (0.eq.ga_nbtest(nbh_objv3)) ) then
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
!write(6,55) IAm,'ccsd_doooo2'
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_doooo(Jij, Kij,
|
||||
$ Tka(1+(k-klo)*lnov),Xka(1+(k-klo)*lnov),
|
||||
$ f1t,f2t,f3t,f4t,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(21) = trp_time(21) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
need_ccsd_doooo2 = .false.
|
||||
c
|
||||
endif
|
||||
endif
|
||||
c
|
||||
enddo ! while need...
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
!write(6,*) IAm,'after do-while loop and before ga_nbwaits'
|
||||
#endif
|
||||
c
|
||||
c g_objv, Dja, nbh_objv1
|
||||
c g_objv, Djka(1+(k-klo)*nvir), nbh_objv4(k)
|
||||
c g_objv, Djia, nbh_objv5
|
||||
c
|
||||
c just do waits since it is unlikely that these get calls
|
||||
c will not finish during the time that ccsd_do... is running
|
||||
c
|
||||
call ga_nbwait(nbh_objv1)
|
||||
!do k = klo, khi
|
||||
call ga_nbwait(nbh_objv4(k))
|
||||
!enddo
|
||||
call ga_nbwait(nbh_objv5)
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
!write(6,*) IAm,'after ga_nbwaits'
|
||||
#endif
|
||||
c
|
||||
eaijk=eorb(ncor+i)+eorb(ncor+j)+eorb(ncor+k)-
|
||||
$ eorb(a)
|
||||
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_tengy(f1n,f1t,f2n,f2t,
|
||||
$ f3n,f3t,f4n,f4t,
|
||||
& Dja(1+(i-1)*nvir),Djia,
|
||||
$ t1((k-1)*nvir+1),
|
||||
$ eorb,eaijk,emp4,emp5,
|
||||
$ ncor,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(22) = trp_time(22) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
if (i.ne.k)then
|
||||
#ifdef DEBUG_PRINT
|
||||
tt0 = ga_wtime()
|
||||
#endif
|
||||
call ccsd_tengy(f1t,f1n,f2t,f2n,
|
||||
$ f3t,f3n,f4t,f4n,
|
||||
$ Dja(1+(k-1)*nvir),
|
||||
$ Djka(1+(k-klo)*nvir),
|
||||
$ t1((i-1)*nvir+1),
|
||||
$ eorb,eaijk,emp4,emp5,
|
||||
$ ncor,nocc,nvir)
|
||||
#ifdef DEBUG_PRINT
|
||||
tt1 = ga_wtime()
|
||||
trp_time(23) = trp_time(23) + (tt1-tt0)
|
||||
#endif
|
||||
c
|
||||
end if
|
||||
|
||||
|
||||
end do
|
||||
end do
|
||||
if (iprt.gt.50)then
|
||||
write(6,1234)iam,a,j,emp4,emp5
|
||||
1234 format(' iam aijk',3i5,2e15.5)
|
||||
end if
|
||||
next=nxtask(nodes, 1)
|
||||
end if
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
c
|
||||
#ifdef DEBUG_PRINT
|
||||
c
|
||||
do tt = 1, 17
|
||||
!write(6,97) IAm,tt,trp_time(tt)
|
||||
trp_time(24) = trp_time(24) + trp_time(tt)
|
||||
enddo
|
||||
call util_flush(6)
|
||||
97 format('node ',i5,': ga_nbget timer(',i2,') = ',1e15.5)
|
||||
c
|
||||
do tt = 18, 21
|
||||
!write(6,98) IAm,tt,trp_time(tt)
|
||||
trp_time(25) = trp_time(25) + trp_time(tt)
|
||||
enddo
|
||||
call util_flush(6)
|
||||
98 format('node ',i5,': dgemm timer(',i2,') = ',1e15.5)
|
||||
c
|
||||
do tt = 22, 23
|
||||
!write(6,99) IAm,tt,trp_time(tt)
|
||||
trp_time(26) = trp_time(26) + trp_time(tt)
|
||||
enddo
|
||||
call util_flush(6)
|
||||
99 format('node ',i5,': tengy timer(',i2,') = ',1e15.5)
|
||||
c
|
||||
call ga_sync()
|
||||
if (IAm.eq.0) write(6,87)
|
||||
87 format(2x,'node',6x,'ga_nbget',9x,'dgemm',10x,'tengy')
|
||||
call ga_sync()
|
||||
write(6,88) IAm,trp_time(24),trp_time(25),trp_time(26)
|
||||
88 format(i7,3e15.5)
|
||||
c
|
||||
#endif
|
||||
c
|
||||
next=nxtask(-nodes, 1)
|
||||
call ga_sync
|
||||
if (occsdps) then
|
||||
call pstat_off(ps_trpdrv)
|
||||
else
|
||||
call qexit('trpdrv',0)
|
||||
endif
|
||||
c
|
||||
55 format('node ',i5,': ',a12)
|
||||
c
|
||||
end
|
||||
|
||||
121
src/ccsd/ccsd_trpdrv_omp_reduce_f.F
Normal file
121
src/ccsd/ccsd_trpdrv_omp_reduce_f.F
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
subroutine ccsd_trpdrv_omp_fbody_reduce_new (f1n, f1t, f2n, f2t,
|
||||
& f3n, f3t, f4n, f4t,
|
||||
& eorb,
|
||||
& ncor, nocc, nvir,
|
||||
& emp4, emp5,
|
||||
& i, k,
|
||||
& eaijk,
|
||||
& dintc1, dintx1, t1v1,
|
||||
& dintc2, dintx2, t1v2)
|
||||
|
||||
use omp_lib
|
||||
use iso_fortran_env
|
||||
implicit none
|
||||
|
||||
double precision, intent(inout) :: emp4, emp5
|
||||
double precision, intent(inout) :: f1n(nvir,nvir), f1t(nvir,nvir)
|
||||
double precision, intent(inout) :: f2n(nvir,nvir), f2t(nvir,nvir)
|
||||
double precision, intent(inout) :: f3n(nvir,nvir), f3t(nvir,nvir)
|
||||
double precision, intent(inout) :: f4n(nvir,nvir), f4t(nvir,nvir)
|
||||
double precision, intent(in) :: eorb(*)
|
||||
double precision, intent(in) :: eaijk
|
||||
double precision, intent(in) :: dintc1(nvir), dintx1(nvir)
|
||||
double precision, intent(in) :: dintc2(nvir), dintx2(nvir)
|
||||
double precision, intent(in) :: t1v1(nvir), t1v2(nvir)
|
||||
integer, intent(in) :: ncor, nocc, nvir
|
||||
integer, intent(in) :: i, k
|
||||
|
||||
double precision :: emp4i,emp5i,emp4k,emp5k, denom
|
||||
double precision :: f1nbc,f1tbc,f1ncb,f1tcb
|
||||
double precision :: f2nbc,f2tbc,f2ncb,f2tcb
|
||||
double precision :: f3nbc,f3tbc,f3ncb,f3tcb
|
||||
double precision :: f4nbc,f4tbc,f4ncb,f4tcb
|
||||
double precision :: t1v1b,t1v2b,dintx1c,dintx2c,dintc1c,dintc2c
|
||||
integer :: b,c
|
||||
|
||||
emp4i = 0.0
|
||||
emp5i = 0.0
|
||||
emp4k = 0.0
|
||||
emp5k = 0.0
|
||||
|
||||
!$omp target teams distribute parallel do collapse(2)
|
||||
& reduction(+:emp5i,emp4i,emp5k,emp4k)
|
||||
& private(f1nbc,f1tbc,f1ncb,f1tcb,f2nbc,f2tbc,f2ncb,f2tcb)
|
||||
& private(f3nbc,f3tbc,f3ncb,f3tcb,f4nbc,f4tbc,f4ncb,f4tcb)
|
||||
& private(t1v1b,t1v2b,dintx1c,dintx2c,dintc1c,dintc2c)
|
||||
& private(denom) firstprivate(eaijk,nvir,ncor,nocc)
|
||||
do b=1,nvir
|
||||
do c=1,nvir
|
||||
denom=-1.0/( eorb(ncor+nocc+b)+eorb(ncor+nocc+c)+eaijk )
|
||||
|
||||
f1nbc = f1n(b,c);
|
||||
f1tbc = f1t(b,c);
|
||||
f1ncb = f1n(c,b);
|
||||
f1tcb = f1t(c,b);
|
||||
|
||||
f2nbc = f2n(b,c);
|
||||
f2tbc = f2t(b,c);
|
||||
f2ncb = f2n(c,b);
|
||||
f2tcb = f2t(c,b);
|
||||
|
||||
f3nbc = f3n(b,c);
|
||||
f3tbc = f3t(b,c);
|
||||
f3ncb = f3n(c,b);
|
||||
f3tcb = f3t(c,b);
|
||||
|
||||
f4nbc = f4n(b,c);
|
||||
f4tbc = f4t(b,c);
|
||||
f4ncb = f4n(c,b);
|
||||
f4tcb = f4t(c,b);
|
||||
|
||||
t1v1b = t1v1(b);
|
||||
t1v2b = t1v2(b);
|
||||
|
||||
dintx1c = dintx1(c);
|
||||
dintx2c = dintx2(c);
|
||||
dintc1c = dintc1(c);
|
||||
dintc2c = dintc2(c);
|
||||
|
||||
emp4i = emp4i
|
||||
& + (denom * (f1tbc+f1ncb+f2tcb+f3nbc+f4ncb)
|
||||
& * (f1tbc-f2tbc*2-f3tbc*2+f4tbc)
|
||||
& - denom * (f1nbc+f1tcb+f2ncb+f3ncb)
|
||||
& * (f1tbc*2-f2tbc-f3tbc+f4tbc*2)
|
||||
& + denom * 3 * (f1nbc*(f1nbc+f3ncb+f4tcb*2)
|
||||
& + f2nbc*f2tcb+f3nbc*f4tbc))
|
||||
|
||||
emp4k = emp4k
|
||||
& + (denom * (f1nbc+f1tcb+f2ncb+f3tbc+f4tcb)
|
||||
& * (f1nbc-f2nbc*2-f3nbc*2+f4nbc)
|
||||
& - denom * (f1tbc+f1ncb+f2tcb+f3tcb)
|
||||
& * (f1nbc*2-f2nbc-f3nbc+f4nbc*2)
|
||||
& + denom * 3 * (f1tbc*(f1tbc+f3tcb+f4ncb*2)
|
||||
& + f2tbc*f2ncb+f3tbc*f4nbc))
|
||||
|
||||
emp5i = emp5i
|
||||
& + (denom * t1v1b * dintx1c
|
||||
& * (f1tbc+f2nbc+f4ncb
|
||||
& - (f3tbc+f4nbc+f2ncb+f1nbc+f2tbc+f3ncb)*2
|
||||
& + (f3nbc+f4tbc+f1ncb)*4)
|
||||
& + denom * t1v1b * dintc1c
|
||||
& * (f1nbc+f4nbc+f1tcb -(f2nbc+f3nbc+f2tcb)*2))
|
||||
|
||||
emp5k = emp5k
|
||||
& + (denom * t1v2b * dintx2c
|
||||
& * (f1nbc+f2tbc+f4tcb
|
||||
& - (f3nbc+f4tbc+f2tcb +f1tbc+f2nbc+f3tcb)*2
|
||||
& + (f3tbc+f4nbc+f1tcb)*4)
|
||||
& + denom * t1v2b * dintc2c
|
||||
& * (f1tbc+f4tbc+f1ncb -(f2tbc+f3tbc+f2ncb)*2))
|
||||
enddo
|
||||
enddo
|
||||
!$omp end target teams distribute parallel do
|
||||
|
||||
emp4 = emp4 + emp4i
|
||||
emp5 = emp5 + emp5i
|
||||
if (i.ne.k) then
|
||||
emp4 = emp4 + emp4k
|
||||
emp5 = emp5 + emp5k
|
||||
end if ! (i.ne.k)
|
||||
|
||||
end
|
||||
1226
src/ccsd/ccsd_trpdrv_openmp_imax.F
Normal file
1226
src/ccsd/ccsd_trpdrv_openmp_imax.F
Normal file
File diff suppressed because it is too large
Load diff
32
src/ccsd/module/GNUmakefile
Normal file
32
src/ccsd/module/GNUmakefile
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# $Id$
|
||||
|
||||
include ../../config/makefile.h
|
||||
|
||||
ifdef USE_IMAX_OPENMP_TRPDRV
|
||||
OBJ_OPTIMIZE = \
|
||||
|
||||
OBJ_OPTIMIZE += ccsd_trpdrv_mkl_module.o
|
||||
|
||||
|
||||
FOPTIONS += -fiopenmp -fopenmp-targets=spir64="-mllvm -vpo-paropt-enable-64bit-opencl-atomics=true -mllvm -vpo-paropt-opt-data-sharing-for-reduction=false" -qmkl -DMKL_ILP64 -I"${MKLROOT}/include" -fpp -fixed -free
|
||||
|
||||
#OBJ_OPTIMIZE += ccsd_trpdrv_mkl_module.o
|
||||
#.SECONDARY: ccsd_trpdrv_mkl_module.o
|
||||
#ccsd_trpdrv_mkl_module.o: ccsd_trpdrv_mkl_module.F
|
||||
# $(FC) $(MK_MODULE_FLAG) -c $< -o $@
|
||||
|
||||
#-include $(ccsd_trpdrv_mkl_module_)
|
||||
#.PRECIOUS: ccsd_trpdrv_mkl_module.F
|
||||
# $(FC) $(MK_MODULE_FLAG) -c $< -o $@
|
||||
#USES_BLAS += ccsd_trpdrv_mkl_module.F
|
||||
#ccsd_trpdrv_mkl_module.o : ccsd_trpdrv_mkl_module.F
|
||||
# $(FC) $(MK_MODULE_FLAG) -c $< -o $@
|
||||
|
||||
endif
|
||||
|
||||
LIB_DEFINES +=-DUSE_F90INTERFACE
|
||||
|
||||
LIBRARY = libccsd.a
|
||||
|
||||
include ../../config/makelib.h
|
||||
|
||||
5
src/ccsd/module/ccsd_trpdrv_mkl_module.F
Normal file
5
src/ccsd/module/ccsd_trpdrv_mkl_module.F
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
include "mkl_omp_offload.f90"
|
||||
|
||||
module ccsd_mklmodule
|
||||
|
||||
end module ccsd_mklmodule
|
||||
|
|
@ -6,6 +6,8 @@
|
|||
chelp_atom_rad.o\
|
||||
chelp_grid_data.o
|
||||
|
||||
USES_BLAS = chelp_grid.F chelp_grid_data.F
|
||||
|
||||
LIBRARY=libchelp.a
|
||||
|
||||
HEADERS=
|
||||
|
|
|
|||
|
|
@ -25,14 +25,14 @@ fi
|
|||
perlscript=${NWCHEM_TOP}/src/config/32_to_64.pl
|
||||
|
||||
|
||||
JOB_LIMIT=4
|
||||
JOB_LIMIT=6
|
||||
|
||||
njob=0
|
||||
|
||||
for file in "$@"
|
||||
do
|
||||
|
||||
echo converting "$file" to 32-bit integers for BLAS/LAPACK
|
||||
echo converting "$file" to 64-bit integers for BLAS/LAPACK
|
||||
($perlexe $perlscript $file) &
|
||||
|
||||
let njob++
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ fi
|
|||
perlscript=${NWCHEM_TOP}/src/config/64_to_32.pl
|
||||
|
||||
|
||||
JOB_LIMIT=8
|
||||
JOB_LIMIT=6
|
||||
|
||||
njob=0
|
||||
|
||||
|
|
|
|||
|
|
@ -87,16 +87,12 @@ foreach my $file (@ARGV){
|
|||
rename($file,$filebak);
|
||||
$file = '>' . $file;
|
||||
my $my_pid = $pid;
|
||||
if (open(FILETOFIX,$filebak)) {
|
||||
# print " open OK\n";
|
||||
}else{
|
||||
print "Exiting: Could not open file: $filebak\n";
|
||||
kill 15, -$my_pid;
|
||||
}
|
||||
open(FIXEDFILE,$file) || die "Could not open file: $file\n";
|
||||
while (<FILETOFIX>) {
|
||||
my $str = "";
|
||||
open my $fh, '<', $filebak or die "Can't open file $!";
|
||||
my $file_content = "1234";
|
||||
while (<$fh>) {
|
||||
if ( /^c/ || /^C/ || /^\*/ || /^$/){
|
||||
print FIXEDFILE $_;
|
||||
$str .= $_;
|
||||
}
|
||||
else {
|
||||
for ($compare = 0; $compare < $num_compare ; $compare++)
|
||||
|
|
@ -122,11 +118,13 @@ foreach my $file (@ARGV){
|
|||
}
|
||||
}
|
||||
}
|
||||
print FIXEDFILE $_;
|
||||
$str .= $_;
|
||||
}
|
||||
}
|
||||
close $fh or die $!;
|
||||
open(FIXEDFILE,$file) || die "Could not open file: $file\n";
|
||||
print FIXEDFILE $str;
|
||||
close(FIXEDFILE);
|
||||
close(FILETOFIX);
|
||||
unlink($filebak);
|
||||
my $filesize = stat("$orgfile")->size;
|
||||
if($filesize eq "0") {
|
||||
|
|
|
|||
|
|
@ -1,12 +1,15 @@
|
|||
#!/usr/bin/env bash
|
||||
if [[ $(uname -s) == "Darwin" ]]; then
|
||||
xcode_v=$(/usr/bin/xcodebuild -version |head -n1 |cut -d ' ' -f 2|cut -d '.' -f 1)
|
||||
xcode_v=$(clang --version 2>&1 |head -1 |cut -d ' ' -f 4 |cut -d . -f 1)
|
||||
# echo $xcode_v
|
||||
if [[ $( [ $xcode_v -ge 15 ] && echo 1) ]] ; then
|
||||
echo got xcode15
|
||||
export GOT_XCODE15=1
|
||||
export OMPI_FCFLAGS=" -Wl,-ld_classic "
|
||||
export OMPI_CFLAGS=" -Wl,-ld_classic -Wno-unused-command-line-argument "
|
||||
#figure out where the open-mpi libs are
|
||||
OMPILIBDIR=$(brew --cellar)/../opt/open-mpi/lib
|
||||
export OMPI_LDFLAGS=" -ld_classic -L$OMPILIBDIR"
|
||||
# export OMPI_FCFLAGS=" -Wl,-ld_classic "
|
||||
# export OMPI_CFLAGS=" -Wl,-ld_classic -Wno-unused-command-line-argument "
|
||||
# export MPICH_FC="mpif90 -Wl,-ld_classic "
|
||||
# export MPICH_CC="mpicc -Wl,-ld_classic "
|
||||
# env|egrep MPICH_
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -147,12 +147,10 @@ optimized:
|
|||
endif
|
||||
|
||||
dummy:
|
||||
|
||||
else
|
||||
|
||||
LIBOBJ := $(patsubst %,$(LIBRARY_PATH)(%),$(OBJ_OPTIMIZE))
|
||||
$(LIBRARY_PATH): $(LIBOBJ)
|
||||
|
||||
# Previous line must contain tab for empty command
|
||||
endif
|
||||
|
||||
|
|
@ -189,7 +187,7 @@ endif
|
|||
if [ "$$list" ] ; then \
|
||||
$(CNFDIR)/lockfile -steal $(LOCKFILE) || exit 1 ; \
|
||||
echo $(AR) $(ARFLAGS) $(LIBRARY_PATH) $$list ; \
|
||||
echo $$list|grep -v truncated | xargs -n 300 $(AR) $(ARFLAGS) $(LIBRARY_PATH) 2>&1 ; \
|
||||
echo $$list|grep -v truncated | xargs -n 300 $(AR) $(ARFLAGS) $(LIBRARY_PATH) 2>&1 ; \
|
||||
/bin/rm -f $$list ; \
|
||||
echo $(RANLIB) $(LIBRARY_PATH) ; $(RANLIB) $(LIBRARY_PATH) ; \
|
||||
/bin/rm -f $(LOCKFILE) ; \
|
||||
|
|
@ -212,7 +210,11 @@ endif
|
|||
|
||||
MAKESUBDIRS = +@for dir in $(SUBDIRS); do \
|
||||
echo Making $@ in $$dir; \
|
||||
$(MAKE) -C $$dir $@ || exit 1 ; done
|
||||
if [ $@ == "include_stamp" ] || [ $@ == "dependencies" ]; then \
|
||||
$(MAKE) SKIP_COMPILERS=1 -C $$dir $@ || exit 1 ; \
|
||||
else \
|
||||
$(MAKE) QUICK_BUILD=1 SKIP_COMPILERS=1 -C $$dir $@ || exit 1 ; \
|
||||
fi ; done
|
||||
|
||||
ifdef SUBDIRS
|
||||
ifndef OPTIMIZE
|
||||
|
|
@ -223,7 +225,12 @@ $(LIBRARY_PATH): subdirs
|
|||
subdirs:
|
||||
@for dir in $(SUBDIRS); do \
|
||||
echo Making all in $$dir; \
|
||||
if [ $@ == "include_stamp" ] || [ $@ == "dependencies" ]; then \
|
||||
echo skipping ; \
|
||||
$(MAKE) SKIP_COMPILERS=1 -C $$dir || exit 1 ; \
|
||||
else \
|
||||
$(MAKE) -C $$dir || exit 1 ; \
|
||||
fi \
|
||||
done
|
||||
endif
|
||||
endif
|
||||
|
|
@ -254,7 +261,7 @@ ifdef SUBDIRS
|
|||
endif
|
||||
touch include_stamp
|
||||
endif
|
||||
endif
|
||||
endif # QUICKBUILD
|
||||
ifdef CONVERT_ALL
|
||||
64_to_32:
|
||||
$(CNFDIR)/64_to_32 *.F *.f *.c *.f90
|
||||
|
|
@ -309,7 +316,7 @@ ifdef SUBDIRS
|
|||
endif
|
||||
-$(RM) -f *.o *.a *.mod *__genmod.f90 *core *stamp *trace mputil.mp* *events* *ipo *optrpt $(LIB_TARGETS)
|
||||
if [ -f $(LIBRARY_PATH) ] ; then \
|
||||
echo $(OBJ) $(OBJ_OPTIMIZE)| xargs -n 300 $(AR) d $(LIBRARY_PATH) ; \
|
||||
echo $(OBJ) $(OBJ_OPTIMIZE)| xargs -n 300 $(AR) d $(LIBRARY_PATH) ; \
|
||||
if [ `$(AR) t $(LIBRARY_PATH) | wc | awk ' {print $$1;}'` -eq 0 ] ; then \
|
||||
$(RM) -f $(LIBRARY_PATH) ; \
|
||||
fi ; \
|
||||
|
|
@ -327,7 +334,7 @@ tags_file:
|
|||
.PHONY: tags_clean
|
||||
tags_clean:
|
||||
find . -name TAGS -print -exec rm -f "{}" ";"
|
||||
|
||||
|
||||
.PHONY: cleanF
|
||||
cleanF:
|
||||
ifdef SUBDIRS
|
||||
|
|
@ -392,7 +399,20 @@ $(BINDIR)/depend.x:
|
|||
|
||||
dependencies: $(wildcard *.c) $(wildcard *.F) $(BINDIR)/depend.x
|
||||
ifndef QUICK_BUILD
|
||||
$(BINDIR)/depend.x $(LIB_INCLUDES) $(INCPATH) > dependencies
|
||||
# if [ $V == '-1' ]; then \
|
||||
# $$MYSTDERR = " 2> /dev/null" \
|
||||
# fi \
|
||||
# echo MYSTDERROR $$MYSTDERR \
|
||||
# ifeq ($(V),-1)
|
||||
# MYSTDERR = " 2> /dev/null"
|
||||
# else
|
||||
# MYSTDERR = " "
|
||||
# endif
|
||||
ifeq ($(V),-1)
|
||||
@$(BINDIR)/depend.x $(LIB_INCLUDES) $(INCPATH) > dependencies
|
||||
else
|
||||
$(BINDIR)/depend.x $(LIB_INCLUDES) $(INCPATH) > dependencies
|
||||
endif
|
||||
endif
|
||||
|
||||
-include dependencies
|
||||
|
|
|
|||
61
src/config/oblas_ompcheck.sh
Executable file
61
src/config/oblas_ompcheck.sh
Executable file
|
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/env bash
|
||||
# oblas_dir directory where libopenblas is located
|
||||
# oblas_name "openblas" suffix in lib"openblas".
|
||||
# e.g. for debian pkg libopenblas64-pthread-dev
|
||||
# oblas_dir=/usr/lib/x86_64-linux-gnu/openblas64-pthread/
|
||||
# oblas_name=openblas64
|
||||
#echo "USE_OPENMP is equal to " $USE_OPENMP
|
||||
mylog=/tmp/mylog.txt
|
||||
NWCHEM_TOP=$1
|
||||
file_check=$NWCHEM_TOP/src/oblas_ompcheck_done.txt
|
||||
if [ -f $file_check ]; then
|
||||
# echo $file_check present >> $mylog
|
||||
cat $file_check
|
||||
exit 0
|
||||
fi
|
||||
echo BLASOPT is $BLASOPT >> $mylog
|
||||
if [[ -z "${BLASOPT}" ]]; then
|
||||
echo BLASOPT is empty >> $mylog
|
||||
echo 0 > $NWCHEM_TOP/src/oblas_ompcheck_done.txt
|
||||
exit 0
|
||||
else
|
||||
echo BLASOPT is not empty @$BLASOPT@ >> $mylog
|
||||
fi
|
||||
#extract oblas_dir & oblas_name from BLASOPT
|
||||
#
|
||||
oblas_dir=$(echo $BLASOPT | awk 'sub(/.*-L */,""){f=1} f{if ( sub(/ * .*/,"") ) f=0; print}')
|
||||
oblas_name=$(echo $BLASOPT | awk 'sub(/.* -l */,""){f=1} f{if ( sub(/ * .*/,"") ) f=0; print}')
|
||||
echo oblas_dir is $oblas_dir oblas_name is $oblas_name >> $mylog
|
||||
find $oblas_dir -name "lib*openblas*.*"|| true
|
||||
if [ $(uname -s) == 'Darwin' ]; then
|
||||
MYLDD='otool -L'
|
||||
SOSUFFIX=dylib
|
||||
else
|
||||
MYLDD=ldd
|
||||
SOSUFFIX=so
|
||||
fi
|
||||
# check first against clang libomp
|
||||
if [ -f "$oblas_dir/lib$oblas_name.$SOSUFFIX" ];
|
||||
then
|
||||
gotomp=$($MYLDD $oblas_dir/lib$oblas_name.$SOSUFFIX | grep libomp | wc -l )
|
||||
# next check against gcc libgomp
|
||||
if [ $gotomp -eq 0 ]
|
||||
then
|
||||
gotomp=$($MYLDD $oblas_dir/lib$oblas_name.$SOSUFFIX | grep libgomp | wc -l )
|
||||
fi
|
||||
else
|
||||
gotomp=0
|
||||
fi
|
||||
echo gotomp $gotomp >> $mylog
|
||||
#conda packages might use OpenMP to thread OpenBLAS
|
||||
if [ $gotomp -ne 0 ]
|
||||
then
|
||||
echo openblas built with OpenMP >> $mylog
|
||||
export OPENBLAS_USES_OPENMP=1
|
||||
unset USE_OPENMP
|
||||
else
|
||||
echo openblas built without OpenMP >> $mylog
|
||||
fi
|
||||
echo $gotomp > $NWCHEM_TOP/src/oblas_ompcheck_done.txt
|
||||
echo $gotomp
|
||||
exit 0
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#/usr/bin/env bash
|
||||
#!/usr/bin/env bash
|
||||
# ifeq ($(shell basename -- $(FC)| cut -d \- -f 1),nvfortran)
|
||||
#gcc or gfortran?
|
||||
if [[ "$1" == *fortran* ]] && [[ ! -z $_FC ]]; then
|
||||
|
|
@ -7,6 +7,8 @@ elif [[ "$1" == *cc* ]] && [[ ! -z $_CC ]]; then
|
|||
echo $_CC
|
||||
elif [[ "$1" == *gfortran* ]] ; then
|
||||
echo gfortran
|
||||
elif [[ "$1" == *flang* ]] ; then
|
||||
echo flang
|
||||
else
|
||||
echo $(basename -- $1 | cut -d \- -f 1 | sed 's/[0-9]*//g')
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
OBJ = cons_input.o cons.o cons_utils.o cons_springs.o cons_rtdb.o cons_data.o
|
||||
|
||||
USES_BLAS = cons_data.F
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -529,6 +529,7 @@ c
|
|||
double precision s52,s63,s1263,s5263
|
||||
integer k
|
||||
double precision phi0
|
||||
double precision acos_in
|
||||
character*30 pname
|
||||
c
|
||||
pname = "cons_dihed"
|
||||
|
|
@ -544,8 +545,10 @@ c
|
|||
call cons_ddot(r52,r52,s52)
|
||||
call cons_ddot(r63,r63,s63)
|
||||
call cons_ddot(r52,r63,s5263)
|
||||
|
||||
phi0 = acos(s5263/sqrt(s52*s63))
|
||||
acos_in=s5263/sqrt(s52*s63)
|
||||
c keeps acos value between -1 and 1
|
||||
acos_in=sign(min(1d0,abs(acos_in)),acos_in)
|
||||
phi0 = acos(acos_in)
|
||||
|
||||
call cons_ddot(r12,r63,s1263)
|
||||
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ c
|
|||
external file_write_ga,file_read_ga, file_read_ga_info
|
||||
integer vlen, nvirt, nmos(2), nbf_vecs, nsets
|
||||
integer bases(2), nbases, nvec, ncol,ndata
|
||||
integer gtype,a_nrow,a_ncol
|
||||
character*255 title_vecs, basis_vecs
|
||||
character*20 scftype_vecs
|
||||
double precision residual
|
||||
|
|
@ -428,6 +429,20 @@ c == copy solution (g_work) --> g_grad 2nd subspace===START
|
|||
shift=3 ! skip first subspace that corresponds to g_b
|
||||
m1=shift+1
|
||||
m2=shift+nvec
|
||||
call ga_inquire(g_grad, gtype, a_nrow, a_ncol)
|
||||
if(m2.gt.a_ncol) then
|
||||
if(ga_nodeid().eq.0)
|
||||
W write(luout,*)
|
||||
W ' cphf_solve2: g_grad wrong col indices',
|
||||
M m2, ' gt ',a_ncol
|
||||
chack
|
||||
shift=a_ncol-1
|
||||
if(ga_nodeid().eq.0)
|
||||
W write(luout,*) ' cph_solve2: reset shift=',shift
|
||||
m1=1
|
||||
m2=nvec
|
||||
! call errquit(' cphf_solve2: wrong patch indices',1,0)
|
||||
endif
|
||||
call ga_copy_patch('n',g_work,1,vlen,1 ,nvec,
|
||||
& g_grad,1,vlen,m1,m2)
|
||||
c == copy solution (g_work) --> g_grad 2nd subspace===END
|
||||
|
|
|
|||
|
|
@ -855,6 +855,9 @@ c Date : 03-15-12
|
|||
& g_grad_re(ncomp),
|
||||
& g_grad_im(ncomp)
|
||||
logical use_my_guess,lifetime
|
||||
integer a_nrow,a_ncol
|
||||
integer b_nrow,b_ncol
|
||||
integer gtype
|
||||
c Note.- use_my_guess, stored in rtdb and used
|
||||
c to indicate if we are using a vector solution
|
||||
c taken from a file or not
|
||||
|
|
@ -889,10 +892,30 @@ c n1= [sum_i nocc(i)*nvir(i)] * ncomp
|
|||
m1=shift+1
|
||||
m2=shift+nvec
|
||||
endif ! ------------------------if-use_my_guess--END
|
||||
do ipm = 1,ncomp
|
||||
do ipm = 1,ncomp
|
||||
call ga_inquire(g_grad_re(ipm), gtype, a_nrow, a_ncol)
|
||||
if(m1.gt.a_nrow.or.m2.gt.a_ncol) then
|
||||
if(ga_nodeid().eq.0)
|
||||
W write(luout,*)
|
||||
W ' cphf_solve3: g_grad_re wrong col indices',
|
||||
M m2, ' gt ',a_ncol
|
||||
chack
|
||||
shift=a_ncol-1
|
||||
if(ga_nodeid().eq.0)
|
||||
W write(luout,*) ' cph_solve2: reset shift=',shift
|
||||
m1=1
|
||||
m2=nvec
|
||||
c call errquit(' cphf_solve3: wrong patch indices',1,0)
|
||||
endif
|
||||
call ga_copy_patch('n',g_grad_re(ipm),1,vlen,m1,m2,
|
||||
$ g_work_re(ipm),1,vlen,1 ,nvec)
|
||||
if (lifetime) then
|
||||
call ga_inquire(g_grad_im(ipm), gtype, b_nrow, b_ncol)
|
||||
if(1.gt.b_nrow.or.nvec.gt.b_ncol) then
|
||||
write(luout,*) ipm,' g_grad_im wrong indices',1, nvec,
|
||||
A ' gt ',b_nrow, b_ncol
|
||||
call errquit(' cphf_solve3: wrong patch indices',2,0)
|
||||
endif
|
||||
call ga_copy_patch('n',g_grad_im(ipm),1,vlen,m1,m2,
|
||||
$ g_work_im(ipm),1,vlen,1 ,nvec)
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@
|
|||
USES_BLAS = ao_fock_2e.F ao_replicated.F fock_2e_file.F fock_2e_slab.F int2e_file.F \
|
||||
movecs_lock.F movecs_phase.F riscf_fock.F riscf_trans.F rohf_diis.F \
|
||||
rohf_k2cf.F scf_movecs.F scf_vec_guess.F uhf.F movecs_frag.F localize.F fock_2e.F \
|
||||
fock_2e_cam.F int_1e_ga.F movecs_rotate.F vectors.F ga_get2eri.F
|
||||
fock_2e_cam.F int_1e_ga.F movecs_rotate.F vectors.F ga_get2eri.F cosmo_fock.F
|
||||
|
||||
HEADERS = schwarz.fh cscfps.fh cfock.fh cscf.fh cint2efile.fh cfockmul.fh crohf.fh cosmo.fh cuhf.fh frozemb.fh
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ ifdef TESTING
|
|||
OBJ_OPTIMIZE =
|
||||
endif
|
||||
|
||||
USES_BLAS = potential.F pot_shell.F fmm.F newfmm.F testfmm.F cart_trans.F xlm_poles.F fastj.F solver.F
|
||||
USES_BLAS = potential.F pot_shell.F fmm.F newfmm.F testfmm.F cart_trans.F xlm_poles.F fastj.F solver.F cheby.F
|
||||
|
||||
LIB_TARGETS = solver testcheby testcarttrans testfmm
|
||||
|
||||
|
|
|
|||
|
|
@ -248,30 +248,25 @@ c
|
|||
#include "bas.fh"
|
||||
#include "util.fh"
|
||||
c
|
||||
c Localize the nloc orbitals in iloc(*) by mixing with each other
|
||||
c Localize the nloc orbitals in iloc() by mixing with each other
|
||||
c
|
||||
integer basis, nloc, iloc(*), nbf, nmo
|
||||
double precision c(nbf, 2), sc(nbf, 2)
|
||||
integer basis, nloc, iloc(nmo), nbf, nmo
|
||||
integer g_c, g_sc
|
||||
integer maxat, nlist
|
||||
*............................ these should be dynamically allocated ?
|
||||
parameter (maxat = nw_max_atom)
|
||||
integer list(maxat)
|
||||
double precision pop(maxat)
|
||||
c
|
||||
integer iter, ss, s, tt, t, a, u, bflo, bfhi, natoms, geom
|
||||
double precision c(nbf, 2), sc(nbf, 2)
|
||||
|
||||
integer iter, ss, s, tt, t, a, u, bflo, bfhi, geom, natoms
|
||||
double precision ast, bst, qast, qat, qas, gamma, cosg, sing, d,
|
||||
$ qs, dprev, tol, dmax, gamma_tol, gamma_max, tmp
|
||||
integer nrot, set, pair, neven
|
||||
integer nrot, set, pair, neven, locpow
|
||||
c
|
||||
if (.not. bas_geom(basis, geom)) call errquit
|
||||
$ ('localize: basis ', 0, BASIS_ERR)
|
||||
if (.not. geom_ncent(geom, natoms)) call errquit
|
||||
$ ('localize: geom',0, GEOM_ERR)
|
||||
c
|
||||
if (natoms.gt.maxat) call errquit
|
||||
& ('localize: maxat too small ', 911, UNKNOWN_ERR)
|
||||
c
|
||||
|
||||
c locpow (localization sum exponent) should be 2 or 4
|
||||
locpow = 2
|
||||
|
||||
tol = 1d-8
|
||||
gamma_tol = 1d-10
|
||||
c
|
||||
|
|
@ -368,8 +363,20 @@ c
|
|||
end do
|
||||
qast = qast * 0.5d0
|
||||
c
|
||||
if (locpow.eq.2) then
|
||||
ast = ast + qast**2 - 0.25d0*(qas - qat)**2
|
||||
bst = bst + qast*(qas - qat)
|
||||
elseif (locpow.eq.4) then
|
||||
tmp = -1.0d0*(qas**4 + qat**4)
|
||||
tmp = tmp + 6.0d0*((qas**2 + qat**2)* qast**2)
|
||||
tmp = tmp + qas**3 * qat + qas * qat**3
|
||||
ast = ast + 0.25d0*tmp
|
||||
tmp = 4.0d0 * qast*(qas**3 - qat**3)
|
||||
bst = bst + 0.25d0*tmp
|
||||
else
|
||||
call errquit('pmloc: locpow ', locpow,
|
||||
& UNKNOWN_ERR)
|
||||
end if
|
||||
end do
|
||||
c
|
||||
gamma = 0.25d0*acos(-ast/sqrt(ast**2+bst**2))
|
||||
|
|
@ -401,53 +408,8 @@ c
|
|||
c
|
||||
1000 continue
|
||||
|
||||
|
||||
c Analyze localization of each mo:
|
||||
c per lmo, a list of atomic populations is printed
|
||||
c in decreasing magnitude, with the polulations in parentheses.
|
||||
c
|
||||
if (ga_nodeid() .eq. 0) then
|
||||
write(6,*)
|
||||
do ss = 1, nloc
|
||||
s = iloc(ss)
|
||||
call ga_get(g_c, 1, nbf, s, s, c(1,1), 1)
|
||||
call ga_get(g_sc, 1, nbf, s, s,sc(1,1), 1)
|
||||
nlist = 0
|
||||
do a = 1, natoms
|
||||
if (.not. bas_ce2bfr(basis, a, bflo, bfhi))
|
||||
$ call errquit('localized: basis ', 0,
|
||||
& BASIS_ERR)
|
||||
qas = 0.0d0
|
||||
do u = bflo, bfhi
|
||||
qas = qas + c(u,1)*sc(u,1)
|
||||
end do
|
||||
if (abs(qas) .gt. 0.01d0) then
|
||||
nlist = nlist + 1
|
||||
list(nlist) = a
|
||||
pop(nlist) = qas
|
||||
end if
|
||||
end do
|
||||
do u = 1, nlist
|
||||
do t = 1, u-1
|
||||
if (abs(pop(t)).lt.abs(pop(u))) then
|
||||
tmp = pop(u)
|
||||
pop(u) = pop(t)
|
||||
pop(t) = tmp
|
||||
tt = list(u)
|
||||
list(u) = list(t)
|
||||
list(t) = tt
|
||||
end if
|
||||
end do
|
||||
end do
|
||||
write(6,9002) s, (list(a), pop(a), a=1,nlist)
|
||||
9002 format(i5, 100(2x,i4,'(',f5.2,')'))
|
||||
end do
|
||||
call util_flush(6)
|
||||
end if
|
||||
c
|
||||
call ga_sync
|
||||
c
|
||||
end
|
||||
end
|
||||
c
|
||||
c =================================================================
|
||||
c
|
||||
|
|
@ -469,7 +431,7 @@ c
|
|||
c
|
||||
c Localize the nloc orbitals in iloc(*) by mixing with each other
|
||||
c
|
||||
integer basis, nloc, iloc(*), nbf, nmo
|
||||
integer basis, nloc, iloc(nmo), nbf, nmo
|
||||
double precision c(nbf, 2), uc(nbf, 2, 4)
|
||||
integer g_c, g_uc(4) ! x, y, z, overlap
|
||||
c
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ c
|
|||
& INPUT_ERR)
|
||||
if (.not. ga_create(MT_DBL, nbf_frag, nmo_frag(1),
|
||||
$ ' frag mos', 32, 32, g_frag))
|
||||
$ call errquit('movecs_fragment: GA for frag MOs', nmo_frag,
|
||||
$ call errquit('movecs_fragment: GA for frag MOs', nmo_frag(1),
|
||||
& GA_ERR)
|
||||
if (.not. ma_push_get(mt_dbl, nbf_frag,
|
||||
$ ' fragment eva', l_eval, k_eval)) call errquit
|
||||
|
|
|
|||
|
|
@ -2775,7 +2775,8 @@ c ---- Move g_Axreim --> g_Az1---- END
|
|||
& GA_ERR)
|
||||
enddo ! end-loop-iset (spin A,B)
|
||||
enddo ! end-loop-cnt
|
||||
if (.not. ga_destroy(g_Axreim)) call errquit('uhf_hv2e: Axreim',0,
|
||||
if (.not. ga_destroy(g_Axreim))
|
||||
c call errquit('uhf_hv2e: Axreim',0,
|
||||
& GA_ERR)
|
||||
if (debug) then
|
||||
if (ga_nodeid().eq.0)
|
||||
|
|
@ -4111,8 +4112,9 @@ c ---- Move g_Axreim --> g_Az---- END
|
|||
& GA_ERR)
|
||||
enddo ! end-loop-iset (spin A,B)
|
||||
enddo ! end-loop-cnt
|
||||
if (.not. ga_destroy(g_Axreim)) call errquit('uhf_hv2e: Axreim',0,
|
||||
& GA_ERR)
|
||||
if (.not. ga_destroy(g_Axreim))
|
||||
& call errquit('uhf_hv2e: Axreim',0,
|
||||
& GA_ERR)
|
||||
if (debug) then
|
||||
if (ga_nodeid().eq.0)
|
||||
& write(*,*) '------- g_Az-1------ START'
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
LIBRARY = libtest.a
|
||||
|
||||
USES_BLAS = raktest.F rak20.F rak21.F rak22.F rak23.F jvltest.F rjhtrans.F cct_UHF.F rak25.F rak26.F rak27.F rak29.F rak30.F
|
||||
USES_BLAS = raktest.F rak20.F rak21.F rak22.F rak23.F jvltest.F rjhtrans.F cct_UHF.F rak25.F rak26.F rak27.F rak29.F rak30.F jantest.F kgdtest.F uccsdtest.F
|
||||
|
||||
include ../config/makefile.h
|
||||
include ../config/makelib.h
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
LIB_INCLUDES = -I../nwdft/include -I../ddscf -I../util -I../nwdft/grid -I../NWints/hondo
|
||||
|
||||
USES_BLAS = qmr_real.F dimqm_main.F
|
||||
USES_BLAS = qmr_real.F dimqm_main.F CubicSpline.F dim_elfcon.F dim_elfder.F dim_tabcd.F qmr_complex.F qmr_seed_complex.F qmr_seed_real.F seeded_qmr_complex.F seeded_qmr_real.F seeded_qmr_real_augment.F
|
||||
|
||||
HEADERS = dimqm.fh dimqm_constants.fh
|
||||
|
||||
|
|
|
|||
|
|
@ -2531,9 +2531,13 @@ c
|
|||
integer i, l_bi, k_bi
|
||||
logical opt_geom_cart_coords_get
|
||||
logical opt_geom_cart_coords_set
|
||||
logical newbandbi
|
||||
external opt_geom_cart_coords_get,opt_geom_cart_coords_set
|
||||
integer sym_number_ops
|
||||
external sym_number_ops
|
||||
if (.not. rtdb_get(rtdb,'driver:newbandbi', mt_log, 1, newbandbi))
|
||||
$ newbandbi=.false.
|
||||
|
||||
c
|
||||
c Get original coordinates
|
||||
c
|
||||
|
|
@ -2568,7 +2572,11 @@ c
|
|||
c Now take the step for real in internals
|
||||
c
|
||||
c FRACTIONAL?
|
||||
if(newbandbi) then
|
||||
call geom_update_cart_from_int_new(geom, ds, alpha, err)
|
||||
else
|
||||
call geom_update_cart_from_int(geom, ds, alpha, err)
|
||||
endif
|
||||
c
|
||||
* if (.not. opt_geom_cart_coords_set(geom, xnew))
|
||||
* $ call errquit('driver_energy_step: coordinates?',geom,
|
||||
|
|
|
|||
|
|
@ -1,83 +0,0 @@
|
|||
*
|
||||
* $Id$
|
||||
*
|
||||
*======================================================================
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* This material was prepared as an account of work sponsored by an
|
||||
* agency of the United States Government. Neither the United States
|
||||
* Government nor the United States Department of Energy, nor Battelle,
|
||||
* nor any of their employees, MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR
|
||||
* ASSUMES ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY,
|
||||
* COMPLETENESS, OR USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT,
|
||||
* SOFTWARE, OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT
|
||||
* INFRINGE PRIVATELY OWNED RIGHTS.
|
||||
*
|
||||
* ACKNOWLEDGMENT
|
||||
*
|
||||
* This software and its documentation were produced with Government
|
||||
* support under Contract Number DE-AC06-76RLO-1830 awarded by the United
|
||||
* States Department of Energy. The Government retains a paid-up
|
||||
* non-exclusive, irrevocable worldwide license to reproduce, prepare
|
||||
* derivative works, perform publicly and display publicly by or for the
|
||||
* Government, including the right to distribute to other Government
|
||||
* contractors.
|
||||
*
|
||||
*======================================================================
|
||||
*
|
||||
* -- PFFT routine (version 1.0) --
|
||||
* Pacific Northwest Laboratory
|
||||
* April 5, 1995
|
||||
*
|
||||
*======================================================================
|
||||
subroutine dcopy(n,dx,incx,dy,incy)
|
||||
c
|
||||
c copies a vector, x, to a vector, y.
|
||||
c uses unrolled loops for increments equal to one.
|
||||
c jack dongarra, linpack, 3/11/78.
|
||||
c modified 12/3/93, array(1) declarations changed to array(*)
|
||||
c
|
||||
double precision dx(*),dy(*)
|
||||
integer i,incx,incy,ix,iy,m,mp1,n
|
||||
c
|
||||
if(n.le.0)return
|
||||
if(incx.eq.1.and.incy.eq.1)go to 20
|
||||
c
|
||||
c code for unequal increments or equal increments
|
||||
c not equal to 1
|
||||
c
|
||||
ix = 1
|
||||
iy = 1
|
||||
if(incx.lt.0)ix = (-n+1)*incx + 1
|
||||
if(incy.lt.0)iy = (-n+1)*incy + 1
|
||||
do 10 i = 1,n
|
||||
dy(iy) = dx(ix)
|
||||
ix = ix + incx
|
||||
iy = iy + incy
|
||||
10 continue
|
||||
return
|
||||
c
|
||||
c code for both increments equal to 1
|
||||
c
|
||||
c
|
||||
c clean-up loop
|
||||
c
|
||||
20 m = mod(n,7)
|
||||
if( m .eq. 0 ) go to 40
|
||||
do 30 i = 1,m
|
||||
dy(i) = dx(i)
|
||||
30 continue
|
||||
if( n .lt. 7 ) return
|
||||
40 mp1 = m + 1
|
||||
do 50 i = mp1,n,7
|
||||
dy(i) = dx(i)
|
||||
dy(i + 1) = dx(i + 1)
|
||||
dy(i + 2) = dx(i + 2)
|
||||
dy(i + 3) = dx(i + 3)
|
||||
dy(i + 4) = dx(i + 4)
|
||||
dy(i + 5) = dx(i + 5)
|
||||
dy(i + 6) = dx(i + 6)
|
||||
50 continue
|
||||
return
|
||||
end
|
||||
|
|
@ -6,6 +6,8 @@
|
|||
|
||||
OBJ = geninterface.o NWChemWrap.o
|
||||
|
||||
USES_BLAS = geninterface.F
|
||||
|
||||
HEADERS = geninterface.fh
|
||||
|
||||
include ../config/makefile.h
|
||||
|
|
|
|||
|
|
@ -6,16 +6,20 @@
|
|||
OBJ_OPTIMIZE = geom_hnd.o
|
||||
|
||||
OBJ = geom.o geom_input.o geom_input2.o geom_3d.o geom_2d.o geom_1d.o geom_numcore.o \
|
||||
geom_checksum.o geom_print_ecce.o geom_freeze.o geom_fragment.o geom_getsym.o
|
||||
geom_checksum.o geom_print_ecce.o geom_freeze.o geom_fragment.o geom_getsym.o \
|
||||
geom_driver_utils.o
|
||||
|
||||
HEADERS = geom.fh geomP.fh periodic.fh
|
||||
|
||||
USES_BLAS = geom.F geom_input.F geom_print_ecce.F geom_hnd.F geom_3d.F geom_getsym.F geom_2d.F
|
||||
USES_BLAS = geom.F geom_input.F geom_print_ecce.F geom_hnd.F geom_3d.F geom_getsym.F geom_2d.F \
|
||||
geom_driver_utils.F
|
||||
UNSET_OPENMP = 1
|
||||
include ../config/makefile.h
|
||||
include ../config/makelib.h
|
||||
|
||||
|
||||
ifeq ($(FLANG_NEW),true)
|
||||
FOPTIONS += -fno-automatic
|
||||
endif
|
||||
ifeq ($(_FC),pgf90)
|
||||
FOPTIONS += -Mnorecursive
|
||||
endif
|
||||
|
|
|
|||
338
src/geom/geom_driver_utils.F
Normal file
338
src/geom/geom_driver_utils.F
Normal file
|
|
@ -0,0 +1,338 @@
|
|||
#ifdef NEW_DRIVER_UTILS
|
||||
subroutine geom_update_cart_from_int_new(geom, ds, alpha, err)
|
||||
#else
|
||||
subroutine geom_update_cart_from_int(geom, ds, alpha, err)
|
||||
#endif
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "geom.fh"
|
||||
#include "mafdecls.fh"
|
||||
#include "util.fh"
|
||||
#include "global.fh"
|
||||
#include "nwc_const.fh"
|
||||
#include "stdio.fh"
|
||||
#include "util_params.fh"
|
||||
integer geom
|
||||
double precision alpha, ds(*)
|
||||
double precision err ! [output] Returns the error
|
||||
c
|
||||
c Adjust the cartesian coordinates in geom to reflect a
|
||||
c displacement of the internal coordinates alpha*ds().
|
||||
c ds() is in units of bohr and radians.
|
||||
c
|
||||
c Also enforce symmetry.
|
||||
c
|
||||
integer max_cent, max_nzvar
|
||||
parameter (max_cent = nw_max_atom)
|
||||
parameter (max_nzvar= 3*max_cent)
|
||||
double precision p(max_nzvar) ! Current internals
|
||||
double precision q(max_nzvar) ! Target internals
|
||||
double precision dq(max_nzvar) ! Step in internals
|
||||
double precision x(max_nzvar) ! Cartesian coordinates
|
||||
double precision dx(max_nzvar) ! Step in Cartesian coordinates
|
||||
double precision xsave(max_nzvar) ! Save first order step for recovery
|
||||
c
|
||||
integer l_bi, k_bi, i, ipass,nat, ncart, nzvar
|
||||
double precision err1, xmax, xmax1
|
||||
logical odebug, oprint
|
||||
logical geom_zmt_get_nzvar, geom_compute_zmatrix
|
||||
double precision bohr, deg
|
||||
external geom_impose_constraints_on_q
|
||||
c
|
||||
odebug = (ga_nodeid().eq.0).and.util_print('optitoc',print_never)
|
||||
oprint = (ga_nodeid().eq.0).and.util_print('xupdate',print_high)
|
||||
oprint = oprint .or. odebug
|
||||
c
|
||||
if (.not. geom_zmt_get_nzvar(geom, nzvar))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
if (.not. geom_ncent(geom, nat))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
if (.not. geom_compute_zmatrix(geom, q))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
ncart = nat * 3
|
||||
c
|
||||
do i = 1, nzvar
|
||||
dq(i) = alpha*ds(i)
|
||||
enddo
|
||||
c
|
||||
c Form the target internals in bohr & degrees
|
||||
c
|
||||
bohr = cau2ang
|
||||
deg = bohr*180d0/(4d0*atan(1d0))
|
||||
if (.not. geom_compute_zmatrix(geom, q))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
call geom_zmat_ico_scale(geom, dq, bohr, deg)
|
||||
* if (.not. geom_print_zmatrix(geom, dq, 'Step ', .true.))
|
||||
* $ call errquit('fjl',0)
|
||||
do i = 1, nzvar
|
||||
q(i) = q(i) + dq(i)
|
||||
enddo
|
||||
call geom_zmat_ico_scale(geom, dq, 1d0/bohr, 1d0/deg)
|
||||
err = 0.0d0
|
||||
do i = 1, nzvar
|
||||
err = max(err, abs(dq(i)))
|
||||
enddo
|
||||
if (odebug) then
|
||||
write(LuOut,*) ' Target internals '
|
||||
call output(q,1,nzvar,1,1,nzvar,1,1)
|
||||
call util_flush(LuOut)
|
||||
endif
|
||||
c
|
||||
if (.not. ma_push_get(mt_dbl,ncart*nzvar,'mem bi',l_bi,k_bi))
|
||||
$ call errquit('opt_int_to_cart: ma', ncart*nzvar, MA_ERR)
|
||||
c
|
||||
c In a non-redundant set of coordinates the iteration will be
|
||||
c quadratically convergent once very large steps have been damped
|
||||
c out ... well this would be true except some torsions and
|
||||
c angles can be very strongly coupled.
|
||||
c
|
||||
#ifdef NEW_DRIVER_UTILS
|
||||
call geom_bandbi(geom)
|
||||
call geom_hnd_get_data('b^-1', dbl_mb(k_bi), ncart*nzvar)
|
||||
if (.not. geom_cart_coords_get(geom, x))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
|
||||
#endif
|
||||
do ipass = 1, 5
|
||||
c
|
||||
c dq -> dx -> x -> new q
|
||||
c
|
||||
#ifndef NEW_DRIVER_UTILS
|
||||
call geom_bandbi(geom)
|
||||
call geom_hnd_get_data('b^-1', dbl_mb(k_bi), ncart*nzvar)
|
||||
#endif
|
||||
call dgemv('n', ncart, nzvar, 1d0, dbl_mb(k_bi), ncart,
|
||||
$ dq, 1, 0.0d0, dx, 1)
|
||||
call sym_grad_symmetrize(geom, dx)
|
||||
#ifndef NEW_DRIVER_UTILS
|
||||
if (.not. geom_cart_coords_get(geom, x))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
#endif
|
||||
xmax = 0d0
|
||||
do i = 1, ncart
|
||||
xmax = max(xmax, abs(dx(i)))
|
||||
x(i) = x(i) + dx(i)
|
||||
enddo
|
||||
if (ipass .eq. 1) then
|
||||
call dcopy(ncart, x, 1, xsave, 1)
|
||||
xmax1 = xmax
|
||||
endif
|
||||
c
|
||||
if (oprint) write(LuOut,77) ipass, xmax, err
|
||||
77 format(' Cartesian to internals: iter =',i2,' dxmax =',
|
||||
$ 1p,d8.1,' dqmax =',d8.1)
|
||||
c
|
||||
if (.not. geom_cart_coords_set(geom, x))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
call sym_geom_project(geom, max(1d-6,xmax*0.1d0))
|
||||
if (.not. geom_compute_zmatrix(geom, p))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
if (odebug) then
|
||||
write(LuOut,*) ' Current internals '
|
||||
call output(p,1,nzvar,1,1,nzvar,1,1)
|
||||
endif
|
||||
c
|
||||
c Get zmat returns bonds in angstrom and angles in degrees
|
||||
c (-180..180). Take care of angles that have changed sign.
|
||||
c
|
||||
do i = 1, nzvar
|
||||
dq(i) = q(i) - p(i)
|
||||
enddo
|
||||
if (odebug) then
|
||||
write(LuOut,*) ' Step in internals before angle restrict'
|
||||
call doutput(dq,1,nzvar,1,1,nzvar,1,1)
|
||||
endif
|
||||
call geom_zmat_sane_step(geom,dq)
|
||||
if (odebug) then
|
||||
write(LuOut,*) ' Step in internals after angle restrict'
|
||||
call doutput(dq,1,nzvar,1,1,nzvar,1,1)
|
||||
endif
|
||||
c
|
||||
c Convert change in internals into hondo internal units
|
||||
c (Bohr for bonds, and radians for angles)
|
||||
c
|
||||
call geom_zmat_ico_scale(geom, dq, 1d0/bohr, 1d0/deg)
|
||||
c
|
||||
c Compute the max error in any element
|
||||
c
|
||||
err = 0.0d0
|
||||
do i = 1, nzvar
|
||||
err = max(err, abs(dq(i)))
|
||||
enddo
|
||||
if (odebug) write(LuOut,*) ' ERR in internals ', err
|
||||
c
|
||||
if (ipass .eq. 1) err1 = err
|
||||
c
|
||||
if (err.lt.1d-6 .and. xmax.lt.1d-6) goto 100
|
||||
* if (xmax.lt.1d-6) goto 100
|
||||
c
|
||||
enddo
|
||||
c
|
||||
c Take first order step here if things are not good
|
||||
c
|
||||
if (err .gt. err1) then
|
||||
if (.not. geom_cart_coords_set(geom, xsave))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
call sym_geom_project(geom, max(0.1d0*xmax1,1d-6))
|
||||
err = err1
|
||||
if (oprint) write(LuOut,78)
|
||||
78 format(' Cartesian to internals: did not converge. Taking',
|
||||
$ ' first order step')
|
||||
endif
|
||||
c
|
||||
c If the iteration did not converge, then repimpose constraints
|
||||
c
|
||||
#ifdef NEW_DRIVER_UTILS
|
||||
if (err .gt. 1d-6) then
|
||||
call geom_impose_constraints_new(geom,
|
||||
$ geom_impose_constraints_on_q)
|
||||
else
|
||||
call geom_bandbi(geom)
|
||||
endif
|
||||
#else
|
||||
if (err .gt. 1d-6)
|
||||
$ call geom_impose_constraints(geom,
|
||||
$ geom_impose_constraints_on_q)
|
||||
#endif
|
||||
c
|
||||
100 if (.not. ma_chop_stack(l_bi))
|
||||
$ call errquit('opt_int_to_cart: ma chop', 0, MA_ERR)
|
||||
#ifndef NEW_DRIVER_UTILS
|
||||
c
|
||||
call geom_bandbi(geom)
|
||||
#endif
|
||||
c
|
||||
end
|
||||
#ifdef NEW_DRIVER_UTILS
|
||||
subroutine geom_impose_constraints_new(geom, impose_constraints)
|
||||
#else
|
||||
subroutine geom_impose_constraints(geom, impose_constraints)
|
||||
#endif
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "geom.fh"
|
||||
#include "mafdecls.fh"
|
||||
#include "util.fh"
|
||||
#include "global.fh"
|
||||
#include "nwc_const.fh"
|
||||
#include "stdio.fh"
|
||||
#include "util_params.fh"
|
||||
integer geom
|
||||
external impose_constraints
|
||||
c
|
||||
c Impose initial values or constraints in internal coordinates
|
||||
c upon the cartesian coordinates
|
||||
c
|
||||
c impose_constraints() is one of
|
||||
c . geom_impose_constraints_on_q(geom,q)
|
||||
c . geom_impose_initial_values_on_q(geom,q)
|
||||
c which given a set of internals munge them to the desired values.
|
||||
c
|
||||
c Also enforce symmetry.
|
||||
c
|
||||
integer max_cent, max_nzvar
|
||||
parameter (max_cent = nw_max_atom)
|
||||
parameter (max_nzvar= 3*max_cent)
|
||||
double precision p(max_nzvar) ! Current internals
|
||||
double precision q(max_nzvar) ! Target internals
|
||||
double precision dq(max_nzvar) ! Step in internals
|
||||
double precision x(max_nzvar) ! Cartesian coordinates
|
||||
double precision dx(max_nzvar) ! Step in Cartesian coordinates
|
||||
c
|
||||
integer l_bi, k_bi, i, ipass,nat, ncart, nzvar
|
||||
logical odebug, oprint
|
||||
logical geom_zmt_get_nzvar, geom_compute_zmatrix
|
||||
double precision bohr, deg, err, xmax
|
||||
c
|
||||
odebug = (ga_nodeid().eq.0).and.util_print('optitoc',print_never)
|
||||
oprint = (ga_nodeid().eq.0).and.util_print('xupdate',print_high)
|
||||
oprint = oprint .or. odebug
|
||||
c
|
||||
if (.not. geom_zmt_get_nzvar(geom, nzvar))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
if (.not. geom_ncent(geom, nat))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
ncart = nat * 3
|
||||
c
|
||||
bohr = cau2ang
|
||||
deg = bohr*180d0/(4d0*atan(1d0))
|
||||
c
|
||||
if (.not. ma_push_get(mt_dbl,ncart*nzvar,'mem bi',l_bi,k_bi))
|
||||
$ call errquit('opt_int_to_cart: ma', ncart*nzvar, MA_ERR)
|
||||
c
|
||||
c In a non-redundant set of coordinates the iteration will be
|
||||
c quadratically convergent once very large steps have been damped
|
||||
c out ... well this would be true except some torsions and
|
||||
c angles can be very strongly coupled.
|
||||
c
|
||||
do ipass = 1, 50
|
||||
c
|
||||
c Get current q, impose constraints. Compute dq
|
||||
c
|
||||
if (.not. geom_compute_zmatrix(geom, q))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
* write(LuOut,*) ' CURRENT q '
|
||||
* call output(q,1,nvar,1,1,nvar,1,1)
|
||||
call dcopy(nzvar, q, 1, p, 1)
|
||||
call impose_constraints(geom,q) ! q is the target
|
||||
do i = 1, nzvar
|
||||
dq(i) = q(i) - p(i)
|
||||
enddo
|
||||
call geom_zmat_sane_step(geom,dq)
|
||||
call geom_zmat_ico_scale(geom, dq, 1d0/bohr, 1d0/deg)
|
||||
* write(LuOut,*) ' CURRENT dq '
|
||||
* call output(dq,1,nvar,1,1,nvar,1,1)
|
||||
err = 0.0d0
|
||||
do i = 1, nzvar
|
||||
err = max(err, abs(dq(i)))
|
||||
enddo
|
||||
#ifdef NEW_DRIVER_UTILS
|
||||
if (err .lt. 1d-6) goto 100
|
||||
#endif
|
||||
if (err .gt. 0.25d0) then ! Small steps move coupled angles together?
|
||||
if (oprint) write(LuOut,*) ' restricting step', err
|
||||
call dscal(nzvar, 0.5d0/err, dq, 1)
|
||||
endif
|
||||
c
|
||||
c dq -> dx -> x -> new q
|
||||
c
|
||||
call geom_bandbi(geom)
|
||||
call geom_hnd_get_data('b^-1', dbl_mb(k_bi), ncart*nzvar)
|
||||
call dgemv('n', ncart, nzvar, 1d0, dbl_mb(k_bi), ncart,
|
||||
$ dq, 1, 0.0d0, dx, 1)
|
||||
call sym_grad_symmetrize(geom, dx)
|
||||
if (.not. geom_cart_coords_get(geom, x))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
xmax = 0d0
|
||||
do i = 1, ncart
|
||||
xmax = max(xmax,abs(dx(i)))
|
||||
x(i) = x(i) + dx(i)
|
||||
enddo
|
||||
if (.not. geom_cart_coords_set(geom, x))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
call sym_geom_project(geom, max(1d-6,xmax*0.1d0))
|
||||
c
|
||||
if (oprint) then
|
||||
write(LuOut,33) ipass, err
|
||||
33 format(' Imposing constraints: iter =',i2,' dqmax =',
|
||||
$ 1p,d8.1)
|
||||
endif
|
||||
if (err .lt. 1d-6) goto 100
|
||||
enddo
|
||||
if (ga_nodeid().eq.0 .and. util_print('warnings',print_low))then
|
||||
write(LuOut,44) err
|
||||
44 format(/,'!! warning, imposition of constraints did not',
|
||||
$ ' converge. dqmax=',1p,d8.1)
|
||||
endif
|
||||
call errquit('geom_impose_constraints: failure',0,GEOM_ERR)
|
||||
c
|
||||
100 if (.not. ma_chop_stack(l_bi))
|
||||
$ call errquit('opt_int_to_cart: ma chop', 0, MA_ERR)
|
||||
c
|
||||
call geom_bandbi(geom)
|
||||
c
|
||||
end
|
||||
#ifndef NEW_DRIVER_UTILS
|
||||
#define NEW_DRIVER_UTILS
|
||||
#include "geom_driver_utils.F"
|
||||
#endif
|
||||
|
|
@ -4536,7 +4536,8 @@ C
|
|||
external deter3,dlamch
|
||||
logical sameatm,ngotax(3)
|
||||
double complex geom_powcmpl
|
||||
external geom_powcmpl
|
||||
double precision geom_cmplxabs
|
||||
external geom_powcmpl,geom_cmplxabs
|
||||
double precision xx,yy,zz,zero
|
||||
double precision THREQUIV
|
||||
integer iat,jat
|
||||
|
|
@ -5070,26 +5071,26 @@ C
|
|||
if (.not.stopordrx) then
|
||||
QDUMX= geom_powcmpl(C2(2,IAT),C2(3,IAT),IORDR,big)
|
||||
QX(IORDR)=QX(IORDR)+QDUMX
|
||||
if (abs(qx(iordr)).gt.big) stopordrx = .true.
|
||||
if (geom_cmplxabs(qx(iordr)).gt.big) stopordrx = .true.
|
||||
endif
|
||||
if (.not.stopordry) then
|
||||
QDUMY= geom_powcmpl(C2(1,IAT),C2(3,IAT),IORDR,big)
|
||||
QY(IORDR)=QY(IORDR)+QDUMY
|
||||
if (abs(qy(iordr)).gt.big) stopordry = .true.
|
||||
if (geom_cmplxabs(qy(iordr)).gt.big) stopordry = .true.
|
||||
endif
|
||||
if (.not.stopordrz) then
|
||||
QDUMZ= geom_powcmpl(C2(1,IAT),C2(2,IAT),IORDR,big)
|
||||
QZ(IORDR)=QZ(IORDR)+QDUMZ
|
||||
if (abs(qz(iordr)).gt.big) stopordrz = .true.
|
||||
if (geom_cmplxabs(qz(iordr)).gt.big) stopordrz = .true.
|
||||
endif
|
||||
IF(MUCH) THEN
|
||||
WRITE(IW,9996) IORDR,IAT
|
||||
WRITE(IW,9995) QDUMX,QDUMY,QDUMZ
|
||||
ENDIF
|
||||
ENDDO
|
||||
XMAG(IORDR)=ABS(QX(IORDR))
|
||||
YMAG(IORDR)=ABS(QY(IORDR))
|
||||
ZMAG(IORDR)=ABS(QZ(IORDR))
|
||||
XMAG(IORDR)=geom_cmplxabs(QX(IORDR))
|
||||
YMAG(IORDR)=geom_cmplxabs(QY(IORDR))
|
||||
ZMAG(IORDR)=geom_cmplxabs(QZ(IORDR))
|
||||
IF(MUCH) THEN
|
||||
WRITE(IW,9998) QX(IORDR),QY(IORDR),QZ(IORDR)
|
||||
ENDIF
|
||||
|
|
@ -5172,10 +5173,10 @@ C
|
|||
DO JAT=1,NAT
|
||||
IF(sameatm(JAT,IAT).AND..NOT.PRPAXS) THEN
|
||||
QDUMI=CMPLX(C2(I,IAT),C2(J,IAT))
|
||||
RR=ABS(QDUMI)
|
||||
RR=geom_cmplxabs(QDUMI)
|
||||
QDUMI=CMPLX(COS(THETA),SIN(THETA))*QDUMI
|
||||
QDUMJ=CMPLX(C2(I,JAT),C2(J,JAT))
|
||||
DD=ABS(QDUMI-QDUMJ)
|
||||
DD=geom_cmplxabs(QDUMI-QDUMJ)
|
||||
DZ=C2(K,IAT)-C2(K,JAT)
|
||||
PRPAXS=(ABS(DD).LT.THREQUIV).AND.
|
||||
1 (ABS(DZ).LT.THREQUIV)
|
||||
|
|
@ -5200,10 +5201,10 @@ C
|
|||
DO JAT=1,NAT
|
||||
IF(sameatm(JAT,IAT).AND..NOT.IMPAXS) THEN
|
||||
QDUMI=CMPLX(C2(I,IAT),C2(J,IAT))
|
||||
RR=ABS(QDUMI)
|
||||
RR=geom_cmplxabs(QDUMI)
|
||||
QDUMI=CMPLX(COS(THETA),SIN(THETA))*QDUMI
|
||||
QDUMJ=CMPLX(C2(I,JAT),C2(J,JAT))
|
||||
DD=ABS(QDUMI-QDUMJ)
|
||||
DD=geom_cmplxabs(QDUMI-QDUMJ)
|
||||
DZ=C2(K,IAT)+C2(K,JAT)
|
||||
IMPAXS=(ABS(DD).LT.THREQUIV).AND.
|
||||
1 (ABS(DZ).LT.THREQUIV)
|
||||
|
|
@ -5259,10 +5260,10 @@ C
|
|||
DO JAT=1,NAT
|
||||
IF(sameatm(JAT,IAT).AND..NOT.PRPAXS) THEN
|
||||
QDUMI=CMPLX(C2(I,IAT),C2(J,IAT))
|
||||
RR=ABS(QDUMI)
|
||||
RR=geom_cmplxabs(QDUMI)
|
||||
QDUMI=CMPLX(COS(THETA),SIN(THETA))*QDUMI
|
||||
QDUMJ=CMPLX(C2(I,JAT),C2(J,JAT))
|
||||
DD=ABS(QDUMI-QDUMJ)
|
||||
DD=geom_cmplxabs(QDUMI-QDUMJ)
|
||||
DZ=C2(K,IAT)-C2(K,JAT)
|
||||
PRPAXS=(ABS(DD).LT.THREQUIV).AND.
|
||||
1 (ABS(DZ).LT.THREQUIV)
|
||||
|
|
@ -6944,307 +6945,6 @@ c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
|||
1001 FORMAT(/)
|
||||
RETURN
|
||||
END
|
||||
subroutine geom_update_cart_from_int(geom, ds, alpha, err)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "geom.fh"
|
||||
#include "mafdecls.fh"
|
||||
#include "util.fh"
|
||||
#include "global.fh"
|
||||
#include "nwc_const.fh"
|
||||
#include "stdio.fh"
|
||||
#include "util_params.fh"
|
||||
integer geom
|
||||
double precision alpha, ds(*)
|
||||
double precision err ! [output] Returns the error
|
||||
c
|
||||
c Adjust the cartesian coordinates in geom to reflect a
|
||||
c displacement of the internal coordinates alpha*ds().
|
||||
c ds() is in units of bohr and radians.
|
||||
c
|
||||
c Also enforce symmetry.
|
||||
c
|
||||
integer max_cent, max_nzvar
|
||||
parameter (max_cent = nw_max_atom)
|
||||
parameter (max_nzvar= 3*max_cent)
|
||||
double precision p(max_nzvar) ! Current internals
|
||||
double precision q(max_nzvar) ! Target internals
|
||||
double precision dq(max_nzvar) ! Step in internals
|
||||
double precision x(max_nzvar) ! Cartesian coordinates
|
||||
double precision dx(max_nzvar) ! Step in Cartesian coordinates
|
||||
double precision xsave(max_nzvar) ! Save first order step for recovery
|
||||
c
|
||||
integer l_bi, k_bi, i, ipass,nat, ncart, nzvar
|
||||
double precision err1, xmax, xmax1
|
||||
logical odebug, oprint
|
||||
logical geom_zmt_get_nzvar, geom_compute_zmatrix
|
||||
double precision bohr, deg
|
||||
external geom_impose_constraints_on_q
|
||||
c
|
||||
odebug = (ga_nodeid().eq.0).and.util_print('optitoc',print_never)
|
||||
oprint = (ga_nodeid().eq.0).and.util_print('xupdate',print_high)
|
||||
oprint = oprint .or. odebug
|
||||
c
|
||||
if (.not. geom_zmt_get_nzvar(geom, nzvar))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
if (.not. geom_ncent(geom, nat))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
if (.not. geom_compute_zmatrix(geom, q))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
ncart = nat * 3
|
||||
c
|
||||
do i = 1, nzvar
|
||||
dq(i) = alpha*ds(i)
|
||||
enddo
|
||||
c
|
||||
c Form the target internals in bohr & degrees
|
||||
c
|
||||
bohr = cau2ang
|
||||
deg = bohr*180d0/(4d0*atan(1d0))
|
||||
if (.not. geom_compute_zmatrix(geom, q))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
call geom_zmat_ico_scale(geom, dq, bohr, deg)
|
||||
* if (.not. geom_print_zmatrix(geom, dq, 'Step ', .true.))
|
||||
* $ call errquit('fjl',0)
|
||||
do i = 1, nzvar
|
||||
q(i) = q(i) + dq(i)
|
||||
enddo
|
||||
call geom_zmat_ico_scale(geom, dq, 1d0/bohr, 1d0/deg)
|
||||
err = 0.0d0
|
||||
do i = 1, nzvar
|
||||
err = max(err, abs(dq(i)))
|
||||
enddo
|
||||
if (odebug) then
|
||||
write(LuOut,*) ' Target internals '
|
||||
call output(q,1,nzvar,1,1,nzvar,1,1)
|
||||
call util_flush(LuOut)
|
||||
endif
|
||||
c
|
||||
if (.not. ma_push_get(mt_dbl,ncart*nzvar,'mem bi',l_bi,k_bi))
|
||||
$ call errquit('opt_int_to_cart: ma', ncart*nzvar, MA_ERR)
|
||||
c
|
||||
c In a non-redundant set of coordinates the iteration will be
|
||||
c quadratically convergent once very large steps have been damped
|
||||
c out ... well this would be true except some torsions and
|
||||
c angles can be very strongly coupled.
|
||||
c
|
||||
do ipass = 1, 5
|
||||
c
|
||||
c dq -> dx -> x -> new q
|
||||
c
|
||||
call geom_bandbi(geom)
|
||||
call geom_hnd_get_data('b^-1', dbl_mb(k_bi), ncart*nzvar)
|
||||
call dgemv('n', ncart, nzvar, 1d0, dbl_mb(k_bi), ncart,
|
||||
$ dq, 1, 0.0d0, dx, 1)
|
||||
call sym_grad_symmetrize(geom, dx)
|
||||
if (.not. geom_cart_coords_get(geom, x))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
xmax = 0d0
|
||||
do i = 1, ncart
|
||||
xmax = max(xmax, abs(dx(i)))
|
||||
x(i) = x(i) + dx(i)
|
||||
enddo
|
||||
if (ipass .eq. 1) then
|
||||
call dcopy(ncart, x, 1, xsave, 1)
|
||||
xmax1 = xmax
|
||||
endif
|
||||
c
|
||||
if (oprint) write(LuOut,77) ipass, xmax, err
|
||||
77 format(' Cartesian to internals: iter =',i2,' dxmax =',
|
||||
$ 1p,d8.1,' dqmax =',d8.1)
|
||||
c
|
||||
if (.not. geom_cart_coords_set(geom, x))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
call sym_geom_project(geom, max(1d-6,xmax*0.1d0))
|
||||
if (.not. geom_compute_zmatrix(geom, p))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
if (odebug) then
|
||||
write(LuOut,*) ' Current internals '
|
||||
call output(p,1,nzvar,1,1,nzvar,1,1)
|
||||
endif
|
||||
c
|
||||
c Get zmat returns bonds in angstrom and angles in degrees
|
||||
c (-180..180). Take care of angles that have changed sign.
|
||||
c
|
||||
do i = 1, nzvar
|
||||
dq(i) = q(i) - p(i)
|
||||
enddo
|
||||
if (odebug) then
|
||||
write(LuOut,*) ' Step in internals before angle restrict'
|
||||
call doutput(dq,1,nzvar,1,1,nzvar,1,1)
|
||||
endif
|
||||
call geom_zmat_sane_step(geom,dq)
|
||||
if (odebug) then
|
||||
write(LuOut,*) ' Step in internals after angle restrict'
|
||||
call doutput(dq,1,nzvar,1,1,nzvar,1,1)
|
||||
endif
|
||||
c
|
||||
c Convert change in internals into hondo internal units
|
||||
c (Bohr for bonds, and radians for angles)
|
||||
c
|
||||
call geom_zmat_ico_scale(geom, dq, 1d0/bohr, 1d0/deg)
|
||||
c
|
||||
c Compute the max error in any element
|
||||
c
|
||||
err = 0.0d0
|
||||
do i = 1, nzvar
|
||||
err = max(err, abs(dq(i)))
|
||||
enddo
|
||||
if (odebug) write(LuOut,*) ' ERR in internals ', err
|
||||
c
|
||||
if (ipass .eq. 1) err1 = err
|
||||
c
|
||||
if (err.lt.1d-6 .and. xmax.lt.1d-6) goto 100
|
||||
* if (xmax.lt.1d-6) goto 100
|
||||
c
|
||||
enddo
|
||||
c
|
||||
c Take first order step here if things are not good
|
||||
c
|
||||
if (err .gt. err1) then
|
||||
if (.not. geom_cart_coords_set(geom, xsave))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
call sym_geom_project(geom, max(0.1d0*xmax1,1d-6))
|
||||
err = err1
|
||||
if (oprint) write(LuOut,78)
|
||||
78 format(' Cartesian to internals: did not converge. Taking',
|
||||
$ ' first order step')
|
||||
endif
|
||||
c
|
||||
c If the iteration did not converge, then repimpose constraints
|
||||
c
|
||||
if (err .gt. 1d-6)
|
||||
$ call geom_impose_constraints(geom,
|
||||
$ geom_impose_constraints_on_q)
|
||||
c
|
||||
100 if (.not. ma_chop_stack(l_bi))
|
||||
$ call errquit('opt_int_to_cart: ma chop', 0, MA_ERR)
|
||||
c
|
||||
call geom_bandbi(geom)
|
||||
c
|
||||
end
|
||||
subroutine geom_impose_constraints(geom, impose_constraints)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "geom.fh"
|
||||
#include "mafdecls.fh"
|
||||
#include "util.fh"
|
||||
#include "global.fh"
|
||||
#include "nwc_const.fh"
|
||||
#include "stdio.fh"
|
||||
#include "util_params.fh"
|
||||
integer geom
|
||||
external impose_constraints
|
||||
c
|
||||
c Impose initial values or constraints in internal coordinates
|
||||
c upon the cartesian coordinates
|
||||
c
|
||||
c impose_constraints() is one of
|
||||
c . geom_impose_constraints_on_q(geom,q)
|
||||
c . geom_impose_initial_values_on_q(geom,q)
|
||||
c which given a set of internals munge them to the desired values.
|
||||
c
|
||||
c Also enforce symmetry.
|
||||
c
|
||||
integer max_cent, max_nzvar
|
||||
parameter (max_cent = nw_max_atom)
|
||||
parameter (max_nzvar= 3*max_cent)
|
||||
double precision p(max_nzvar) ! Current internals
|
||||
double precision q(max_nzvar) ! Target internals
|
||||
double precision dq(max_nzvar) ! Step in internals
|
||||
double precision x(max_nzvar) ! Cartesian coordinates
|
||||
double precision dx(max_nzvar) ! Step in Cartesian coordinates
|
||||
c
|
||||
integer l_bi, k_bi, i, ipass,nat, ncart, nzvar
|
||||
logical odebug, oprint
|
||||
logical geom_zmt_get_nzvar, geom_compute_zmatrix
|
||||
double precision bohr, deg, err, xmax
|
||||
c
|
||||
odebug = (ga_nodeid().eq.0).and.util_print('optitoc',print_never)
|
||||
oprint = (ga_nodeid().eq.0).and.util_print('xupdate',print_high)
|
||||
oprint = oprint .or. odebug
|
||||
c
|
||||
if (.not. geom_zmt_get_nzvar(geom, nzvar))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
if (.not. geom_ncent(geom, nat))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
ncart = nat * 3
|
||||
c
|
||||
bohr = cau2ang
|
||||
deg = bohr*180d0/(4d0*atan(1d0))
|
||||
c
|
||||
if (.not. ma_push_get(mt_dbl,ncart*nzvar,'mem bi',l_bi,k_bi))
|
||||
$ call errquit('opt_int_to_cart: ma', ncart*nzvar, MA_ERR)
|
||||
c
|
||||
c In a non-redundant set of coordinates the iteration will be
|
||||
c quadratically convergent once very large steps have been damped
|
||||
c out ... well this would be true except some torsions and
|
||||
c angles can be very strongly coupled.
|
||||
c
|
||||
do ipass = 1, 50
|
||||
c
|
||||
c Get current q, impose constraints. Compute dq
|
||||
c
|
||||
if (.not. geom_compute_zmatrix(geom, q))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
* write(LuOut,*) ' CURRENT q '
|
||||
* call output(q,1,nvar,1,1,nvar,1,1)
|
||||
call dcopy(nzvar, q, 1, p, 1)
|
||||
call impose_constraints(geom,q) ! q is the target
|
||||
do i = 1, nzvar
|
||||
dq(i) = q(i) - p(i)
|
||||
enddo
|
||||
call geom_zmat_sane_step(geom,dq)
|
||||
call geom_zmat_ico_scale(geom, dq, 1d0/bohr, 1d0/deg)
|
||||
* write(LuOut,*) ' CURRENT dq '
|
||||
* call output(dq,1,nvar,1,1,nvar,1,1)
|
||||
err = 0.0d0
|
||||
do i = 1, nzvar
|
||||
err = max(err, abs(dq(i)))
|
||||
enddo
|
||||
if (err .gt. 0.25d0) then ! Small steps move coupled angles together?
|
||||
if (oprint) write(LuOut,*) ' restricting step', err
|
||||
call dscal(nzvar, 0.5d0/err, dq, 1)
|
||||
endif
|
||||
c
|
||||
c dq -> dx -> x -> new q
|
||||
c
|
||||
call geom_bandbi(geom)
|
||||
call geom_hnd_get_data('b^-1', dbl_mb(k_bi), ncart*nzvar)
|
||||
call dgemv('n', ncart, nzvar, 1d0, dbl_mb(k_bi), ncart,
|
||||
$ dq, 1, 0.0d0, dx, 1)
|
||||
call sym_grad_symmetrize(geom, dx)
|
||||
if (.not. geom_cart_coords_get(geom, x))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
xmax = 0d0
|
||||
do i = 1, ncart
|
||||
xmax = max(xmax,abs(dx(i)))
|
||||
x(i) = x(i) + dx(i)
|
||||
enddo
|
||||
if (.not. geom_cart_coords_set(geom, x))
|
||||
$ call errquit('opt_int_to_cart: geom get/set',0, GEOM_ERR)
|
||||
call sym_geom_project(geom, max(1d-6,xmax*0.1d0))
|
||||
c
|
||||
if (oprint) then
|
||||
write(LuOut,33) ipass, err
|
||||
33 format(' Imposing constraints: iter =',i2,' dqmax =',
|
||||
$ 1p,d8.1)
|
||||
endif
|
||||
if (err .lt. 1d-6) goto 100
|
||||
enddo
|
||||
if (ga_nodeid().eq.0 .and. util_print('warnings',print_low))then
|
||||
write(LuOut,44) err
|
||||
44 format(/,'!! warning, imposition of constraints did not',
|
||||
$ ' converge. dqmax=',1p,d8.1)
|
||||
endif
|
||||
call errquit('geom_impose_constraints: failure',0,GEOM_ERR)
|
||||
c
|
||||
100 if (.not. ma_chop_stack(l_bi))
|
||||
$ call errquit('opt_int_to_cart: ma chop', 0, MA_ERR)
|
||||
c
|
||||
call geom_bandbi(geom)
|
||||
c
|
||||
end
|
||||
subroutine geom_impose_initial_values_on_q(geom,q)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
|
|
@ -7648,7 +7348,24 @@ c
|
|||
geom_powcmpl=CMPLX(c,s)
|
||||
endif
|
||||
endif
|
||||
|
||||
cdbg write(6,*) ' gpow returns ',geom_powcmpl
|
||||
return
|
||||
end
|
||||
double precision function geom_cmplxabs(cmplx_in)
|
||||
implicit none
|
||||
double complex cmplx_in
|
||||
c
|
||||
double precision my_real,my_img
|
||||
c
|
||||
double precision toll
|
||||
parameter (toll=1d-9)
|
||||
my_img=abs(aimag(cmplx_in))
|
||||
my_real=abs(real(cmplx_in))
|
||||
if(my_img.lt.toll.and.my_real.lt.toll) then
|
||||
geom_cmplxabs=0d0
|
||||
else
|
||||
geom_cmplxabs=abs(cmplx_in)
|
||||
endif
|
||||
return
|
||||
end
|
||||
C> @}
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ c
|
|||
integer ifocc
|
||||
logical oskel, omp2, odft, ocdfit, status,frac_occ
|
||||
double precision xfac(numfunc), jfac, kfac
|
||||
double precision rot(3,3),xrot,yrot,zrot
|
||||
double precision rot(3,3),xrot(3)
|
||||
c
|
||||
logical has_frac_occ
|
||||
external has_frac_occ
|
||||
|
|
@ -1240,12 +1240,12 @@ C default: print the total forces
|
|||
if (.not. geom_cent_get(geom, i, tag, crd, q)) call errquit
|
||||
$ ('gradients: geometry corrupt?',0, GEOM_ERR)
|
||||
if(have_symrot) then
|
||||
xrot = crd(1)*rot(1,1) + crd(2)*rot(2,1) + crd(3)*rot(3,1)
|
||||
yrot = crd(1)*rot(1,2) + crd(2)*rot(2,2) + crd(3)*rot(3,2)
|
||||
zrot = crd(1)*rot(1,3) + crd(2)*rot(2,3) + crd(3)*rot(3,3)
|
||||
crd(1)=xrot
|
||||
crd(2)=yrot
|
||||
crd(3)=zrot
|
||||
xrot(1) = crd(1)*rot(1,1) + crd(2)*rot(2,1) + crd(3)*rot(3,1)
|
||||
xrot(2) = crd(1)*rot(1,2) + crd(2)*rot(2,2) + crd(3)*rot(3,2)
|
||||
xrot(3) = crd(1)*rot(1,3) + crd(2)*rot(2,3) + crd(3)*rot(3,3)
|
||||
crd(1)=xrot(1)
|
||||
crd(2)=xrot(2)
|
||||
crd(3)=xrot(3)
|
||||
fol(1)=dbl_mb(k_force+3*(i-1))
|
||||
fol(2)=dbl_mb(k_force+3*(i-1)+1)
|
||||
fol(3)=dbl_mb(k_force+3*(i-1)+2)
|
||||
|
|
|
|||
|
|
@ -12,25 +12,25 @@ ifndef QUICK_BUILD
|
|||
includes:
|
||||
for dir in $(SUBDIRS); do \
|
||||
echo Making include_stamp in $(SRCDIR)/$$dir ; \
|
||||
(cd $(SRCDIR)/$$dir; $(MAKE) include_stamp) ; \
|
||||
(cd $(SRCDIR)/$$dir; $(MAKE) SKIP_COMPILERS=1 include_stamp) ; \
|
||||
done
|
||||
|
||||
endif
|
||||
include_stamp sngl_to_dbl dbl_to_sngl 64_to_32 32_to_64:
|
||||
@echo Nothing to be done
|
||||
endif
|
||||
|
||||
# In this directory, clean does not do anything -- we only want get rid of
|
||||
# up the include files if there's a serious cleanup.
|
||||
|
||||
clean:
|
||||
|
||||
|
||||
cleanF:
|
||||
|
||||
|
||||
cleanDEP:
|
||||
|
||||
|
||||
depend:
|
||||
|
||||
|
||||
source:
|
||||
|
||||
|
||||
realclean:
|
||||
$(RM) *.h *.fh
|
||||
$(RM) *~ \#*\#
|
||||
|
|
|
|||
|
|
@ -1,29 +1,10 @@
|
|||
/*
|
||||
$Id$
|
||||
*/
|
||||
|
||||
#if defined(CRAY) && !defined(__crayx1)
|
||||
#include <fortran.h>
|
||||
#endif
|
||||
#include "typesf2c.h"
|
||||
|
||||
/* routine to convert a fortran string to a C string: */
|
||||
/* Fortran callable version of f2cstring in global directory */
|
||||
|
||||
#if (defined(CRAY) || defined(USE_FCD)) && !defined(__crayx1)
|
||||
void FATR C_CNVT(clen, flen, cfcd, ffcd)
|
||||
Integer *clen, *flen;
|
||||
_fcd cfcd;
|
||||
_fcd ffcd;
|
||||
void c_cnvt_(Integer * clen, Integer * flen, char * cstr, char * fstr)
|
||||
{
|
||||
char *cstr = _fcdtocp(cfcd);
|
||||
char *fstr = _fcdtocp(ffcd);
|
||||
#else
|
||||
void c_cnvt_(clen, flen, cstr, fstr)
|
||||
Integer *clen, *flen;
|
||||
char *cstr;
|
||||
char *fstr;
|
||||
{
|
||||
#endif
|
||||
int flenl, clenl;
|
||||
|
||||
flenl = *flen; clenl = *clen;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ c
|
|||
data errmsg /' '/
|
||||
data input_line /0/
|
||||
data xblnk /' '/
|
||||
#if defined(CRAY) || defined(HPUX) || defined(WIN32) || defined(PSCALE) || defined(__FLANG) || ( __GNUC__ >= 4) || defined(FUJITSU)
|
||||
#if defined(CRAY) || defined(HPUX) || defined(WIN32) || defined(PSCALE) || defined(__FLANG) || defined(__flang__) || ( __GNUC__ >= 4) || defined(FUJITSU)
|
||||
data xtab /' '/ ! Tab ... no backslash necessary
|
||||
#elif (defined(LINUX) || defined(MACX)) && !defined(PGLINUX) && !defined(XLFLINUX) &&!( __GNUC__ >= 4)
|
||||
data xtab /9/ ! Tab ... g77 has trouble with escape sequence
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@ c
|
|||
if (.not. inp_f(user_memory)) goto 1000
|
||||
if (.not.inp_a(ctest)) goto 1000
|
||||
if (inp_match(nunits, .false., ctest, units, ind)) then
|
||||
memory_size = int(user_memory)*conv_units(ind)
|
||||
memory_size = user_memory*dble(conv_units(ind))
|
||||
memory_units=.true.
|
||||
else
|
||||
call errquit('inp_match: units missing ',0,INPUT_ERR)
|
||||
|
|
|
|||
|
|
@ -155,6 +155,9 @@ ifeq ($(_FC),g77)
|
|||
FDEBUG +=-ffloat-store -fno-fast-math
|
||||
endif
|
||||
ifeq ($(_FC),gfortran)
|
||||
FDEBUG +=-ffloat-store -fno-fast-math
|
||||
ifneq ($(USE_FLANG),1)
|
||||
FDEBUG += -ffloat-store
|
||||
endif
|
||||
FDEBUG += -fno-fast-math
|
||||
endif
|
||||
|
||||
|
|
|
|||
|
|
@ -135,6 +135,9 @@ if [[ ! -z "$MKLROOT" ]] ; then
|
|||
SCALAPACK_FCFLAGS+=" -I${MKLROOT}/include/intel64/lp64"
|
||||
fi
|
||||
fi
|
||||
# take care of xcode 15 quirks
|
||||
source ${NWCHEM_TOP}/src/config/fix_xcode15.sh
|
||||
|
||||
if [[ -z "$MPICH_FC" ]] ; then
|
||||
export MPICH_FC="$FC"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
source ../libext_utils/get_tgz.sh
|
||||
rm -rf mpich mpich-?.?.?
|
||||
#VERSION=3.4.2
|
||||
VERSION=4.0.2
|
||||
#VERSION=4.0.2
|
||||
VERSION=4.2.2
|
||||
#curl -L http://www.mpich.org/static/downloads/${VERSION}/mpich-${VERSION}.tar.gz -o mpich.tgz
|
||||
#curl -L https://github.com/pmodels/mpich/releases/download/v${VERSION}/mpich-${VERSION}.tar.gz -o mpich.tgz
|
||||
get_tgz https://github.com/pmodels/mpich/releases/download/v${VERSION}/mpich-${VERSION}.tar.gz mpich.tgz
|
||||
|
|
@ -20,14 +21,6 @@ fi
|
|||
echo FC is $FC
|
||||
FC_EXTRA=$(${NWCHEM_TOP}/src/config/strip_compiler.sh ${FC})
|
||||
echo FC_EXTRA is $FC_EXTRA
|
||||
if [[ ${FC_EXTRA} == gfortran ]] ; then
|
||||
GNUMAJOR=`$FC -dM -E - < /dev/null 2> /dev/null | grep __GNUC__ |cut -c18-`
|
||||
echo GNUMAJOR is $GNUMAJOR
|
||||
if [[ $GNUMAJOR -ge 10 ]]; then
|
||||
export FFLAGS=" -fallow-argument-mismatch "
|
||||
export FCFLAGS=" -fallow-argument-mismatch "
|
||||
fi
|
||||
fi
|
||||
if [[ ${FC_EXTRA} == nvfortran ]] ; then
|
||||
export FFLAGS+=" -fPIC "
|
||||
export FCFLAGS+=" -fPIC "
|
||||
|
|
@ -59,7 +52,14 @@ if [ -x "$(command -v xx-info)" ]; then
|
|||
fi
|
||||
fi
|
||||
echo SHARED_FLAGS is $SHARED_FLAGS
|
||||
./configure --prefix=`pwd`/../.. --enable-fortran=all $SHARED_FLAGS --disable-cxx --enable-romio --with-pm=gforker --with-device=ch3:nemesis --disable-cuda --disable-opencl --enable-silent-rules --enable-fortran=all
|
||||
if [ $(uname -s) == "Darwin" ]; then
|
||||
if pkg-config hwloc --exists; then
|
||||
HWLOC_FLAGS=" --with-hwloc=$(pkg-config hwloc --variable=prefix) "
|
||||
fi
|
||||
fi
|
||||
echo HWLOC_FLAGS is $HWLOC_FLAGS
|
||||
./configure --prefix=`pwd`/../.. --enable-fortran=all $SHARED_FLAGS --disable-cxx --enable-romio --enable-silent-rules --enable-fortran=all $HWLOC_FLAGS
|
||||
#./configure --prefix=`pwd`/../.. --enable-fortran=all $SHARED_FLAGS --disable-cxx --enable-romio --with-pm=gforker --with-device=ch3:nemesis --disable-cuda --disable-opencl --enable-silent-rules --enable-fortran=all
|
||||
if [[ "$?" != "0" ]]; then
|
||||
cat config.log
|
||||
echo "MPICH configuration failed"
|
||||
|
|
|
|||
46
src/libext/openblas/arflags.patch
Normal file
46
src/libext/openblas/arflags.patch
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
--- Makefile.org 2024-01-31 14:05:20.446866601 -0800
|
||||
+++ Makefile 2024-01-31 14:06:35.069578035 -0800
|
||||
@@ -315,7 +315,7 @@
|
||||
-@echo "CC = $(CC)" >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||
-@echo "override CFLAGS = $(LAPACK_CFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||
-@echo "AR = $(AR)" >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||
- -@echo "ARFLAGS = $(ARFLAGS) -ru" >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||
+ -@echo "ARFLAGS = $(ARFLAGS) -rUv" >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||
-@echo "RANLIB = $(RANLIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||
-@echo "LAPACKLIB = ../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||
-@echo "TMGLIB = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||
--- Makefile.tail.org 2024-01-31 19:11:26.807368798 -0800
|
||||
+++ Makefile.tail 2024-01-31 19:14:08.650652779 -0800
|
||||
@@ -43,25 +43,25 @@
|
||||
$(SBEXTOBJS_P) : override CFLAGS += -DPROFILE $(COMMON_PROF)
|
||||
|
||||
libs :: $(BLASOBJS) $(COMMONOBJS)
|
||||
- $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME) $^
|
||||
+ $(AR) $(ARFLAGS) -rUv $(TOPDIR)/$(LIBNAME) $^
|
||||
|
||||
prof :: $(BLASOBJS_P) $(COMMONOBJS_P)
|
||||
- $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME_P) $^
|
||||
+ $(AR) $(ARFLAGS) -rUv $(TOPDIR)/$(LIBNAME_P) $^
|
||||
|
||||
hpl :: $(HPLOBJS) $(COMMONOBJS)
|
||||
- $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME) $^
|
||||
+ $(AR) $(ARFLAGS) -rUv $(TOPDIR)/$(LIBNAME) $^
|
||||
|
||||
hpl_p :: $(HPLOBJS_P) $(COMMONOBJS_P)
|
||||
- $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME_P) $^
|
||||
+ $(AR) $(ARFLAGS) -rUv $(TOPDIR)/$(LIBNAME_P) $^
|
||||
|
||||
kernel :: $(BLASOBJS)
|
||||
- $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME) $^
|
||||
+ $(AR) $(ARFLAGS) -rUv $(TOPDIR)/$(LIBNAME) $^
|
||||
|
||||
commonlibs :: $(COMMONOBJS)
|
||||
- $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME) $^
|
||||
+ $(AR) $(ARFLAGS) -rUv $(TOPDIR)/$(LIBNAME) $^
|
||||
|
||||
commonprof :: $(COMMONOBJS_P)
|
||||
- $(AR) $(ARFLAGS) -ru $(TOPDIR)/$(LIBNAME_P) $^
|
||||
+ $(AR) $(ARFLAGS) -rUv $(TOPDIR)/$(LIBNAME_P) $^
|
||||
|
||||
quick :
|
||||
$(MAKE) -C $(TOPDIR) libs
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue