mirror of
https://github.com/LCPQ/quantum_package
synced 2024-10-19 22:41:48 +02:00
A lot of renaming
This commit is contained in:
parent
3c6942c690
commit
af55bf49a1
@ -1,65 +0,0 @@
|
|||||||
# Common flags
|
|
||||||
##############
|
|
||||||
#
|
|
||||||
# -mkl=[parallel|sequential] : Use the MKL library
|
|
||||||
# --ninja : Allow the utilisation of ninja. It is mandatory !
|
|
||||||
# --align=32 : Align all provided arrays on a 32-byte boundary
|
|
||||||
#
|
|
||||||
|
|
||||||
[COMMON]
|
|
||||||
FC : ifort
|
|
||||||
LAPACK_LIB : -mkl=parallel
|
|
||||||
IRPF90 : irpf90
|
|
||||||
IRPF90_FLAGS : --ninja --align=32
|
|
||||||
LIB : -lhdf5 -lz -lrt
|
|
||||||
|
|
||||||
# Global options
|
|
||||||
################
|
|
||||||
#
|
|
||||||
# 1 : Activate
|
|
||||||
# 0 : Deactivate
|
|
||||||
#
|
|
||||||
[OPTION]
|
|
||||||
MODE : OPT ; [ OPT | PROFILE | DEBUG ] : Chooses the section below
|
|
||||||
CACHE : 1 ; Enable cache_compile.py
|
|
||||||
OPENMP : 1 ; Append OpenMP flags
|
|
||||||
|
|
||||||
# Optimization flags
|
|
||||||
####################
|
|
||||||
#
|
|
||||||
# -xHost : Compile a binary optimized for the current architecture
|
|
||||||
# -O2 : O3 not better than O2.
|
|
||||||
# -ip : Inter-procedural optimizations
|
|
||||||
# -ftz : Flushes denormal results to zero
|
|
||||||
#
|
|
||||||
[OPT]
|
|
||||||
FC : -traceback
|
|
||||||
FCFLAGS : -xAVX -O2 -ip -ftz -g
|
|
||||||
|
|
||||||
# Profiling flags
|
|
||||||
#################
|
|
||||||
#
|
|
||||||
[PROFILE]
|
|
||||||
FC : -p -g
|
|
||||||
FCFLAGS : -xSSE4.2 -O2 -ip -ftz
|
|
||||||
|
|
||||||
# Debugging flags
|
|
||||||
#################
|
|
||||||
#
|
|
||||||
# -traceback : Activate backtrace on runtime
|
|
||||||
# -fpe0 : All floating point exaceptions
|
|
||||||
# -C : Checks uninitialized variables, array subscripts, etc...
|
|
||||||
# -g : Extra debugging information
|
|
||||||
# -xSSE2 : Valgrind needs a very simple x86 executable
|
|
||||||
#
|
|
||||||
[DEBUG]
|
|
||||||
FC : -g -traceback
|
|
||||||
FCFLAGS : -xSSE2 -C -fpe0
|
|
||||||
|
|
||||||
# OpenMP flags
|
|
||||||
#################
|
|
||||||
#
|
|
||||||
[OPENMP]
|
|
||||||
FC : -qopenmp
|
|
||||||
IRPF90_FLAGS : --openmp
|
|
||||||
|
|
4
configure
vendored
4
configure
vendored
@ -21,10 +21,10 @@ Options:
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
./configure -c config/gfortran.cfg
|
./configure -c config/gfortran.cfg
|
||||||
./configure -c config/gfortran.cfg -i all
|
|
||||||
|
|
||||||
Note:
|
Note:
|
||||||
- Using different configuration files for installing dependencies and compiling QPs can improve the user experience.
|
- Using different configuration files for installing dependencies and
|
||||||
|
compiling QP can improve the user experience.
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
exit
|
exit
|
||||||
|
@ -7,8 +7,8 @@ tags
|
|||||||
Makefile
|
Makefile
|
||||||
ao_basis
|
ao_basis
|
||||||
ao_one_e_integrals
|
ao_one_e_integrals
|
||||||
ao_two_e_erf_integrals
|
ao_two_e_erf_ints
|
||||||
ao_two_e_integrals
|
ao_two_e_ints
|
||||||
aux_quantities
|
aux_quantities
|
||||||
becke_numerical_grid
|
becke_numerical_grid
|
||||||
bitmask
|
bitmask
|
||||||
@ -37,8 +37,8 @@ kohn_sham_rs
|
|||||||
mo_basis
|
mo_basis
|
||||||
mo_guess
|
mo_guess
|
||||||
mo_one_e_integrals
|
mo_one_e_integrals
|
||||||
mo_two_e_erf_integrals
|
mo_two_e_erf_ints
|
||||||
mo_two_e_integrals
|
mo_two_e_ints
|
||||||
mpi
|
mpi
|
||||||
mrpt_utils
|
mrpt_utils
|
||||||
nuclei
|
nuclei
|
||||||
|
35
docs/source/users_guide/qp_name.rst
Normal file
35
docs/source/users_guide/qp_name.rst
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
.. _qp_name:
|
||||||
|
|
||||||
|
qp_name
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. program:: qp_name
|
||||||
|
|
||||||
|
Displays the names of all the files in which the provider/subroutine/function
|
||||||
|
given as argument is used. With the `-r` flag, the name can be changed in the
|
||||||
|
whole quantum package.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_name <name> [-r <new_name> | --rename=<new_name>]
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -h
|
||||||
|
|
||||||
|
Prints the help message.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -r <new_name> --rename=<new_name>
|
||||||
|
|
||||||
|
Renames the provider/subroutine/function and all its occurences.
|
||||||
|
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
It is safe to create a commit before renaming a provider, and then to
|
||||||
|
check what has changed using git diff.
|
||||||
|
|
||||||
|
|
@ -29,7 +29,7 @@ def gen_ezfio_provider_disk_access(name_ref, name):
|
|||||||
read_{name} = .False.
|
read_{name} = .False.
|
||||||
write_{name} = .False.
|
write_{name} = .False.
|
||||||
else
|
else
|
||||||
print *, '{name_ref} has a wrong type'
|
print *, '{name_ref} has a bad type'
|
||||||
stop 1
|
stop 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
98
scripts/qp_name
Executable file
98
scripts/qp_name
Executable file
@ -0,0 +1,98 @@
|
|||||||
|
#!/usr/bin/env python2
|
||||||
|
|
||||||
|
"""
|
||||||
|
Displays the names of all the files in which the provider/subroutine/function
|
||||||
|
given as argument is used. With the -r flag, the name can be changed in the
|
||||||
|
whole quantum package.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
qp_name <name> [-r <new_name> | --rename=<new_name>]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h Prints the help message
|
||||||
|
-r <new_name> --rename=<new_name> Renames the provider /
|
||||||
|
subroutine / function and all
|
||||||
|
its occurences
|
||||||
|
|
||||||
|
Note:
|
||||||
|
It is safe to create a commit before renaming a provider, and then to
|
||||||
|
check what has changed using git diff.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
from docopt import docopt
|
||||||
|
from qp_path import QP_SRC, QP_ROOT, QP_PLUGINS
|
||||||
|
except ImportError:
|
||||||
|
print "source .quantum_package.rc"
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
def main(arguments):
|
||||||
|
|
||||||
|
# Check that name exist in */IRPF90_man
|
||||||
|
print "Checking that name exists..."
|
||||||
|
all_modules = os.listdir(QP_SRC)
|
||||||
|
|
||||||
|
f = arguments["<name>"]+".l"
|
||||||
|
found = False
|
||||||
|
for mod in all_modules:
|
||||||
|
if os.path.isdir( os.path.join(QP_SRC,mod,"IRPF90_man") ):
|
||||||
|
for filename in os.listdir( os.path.join(QP_SRC,mod,"IRPF90_man") ):
|
||||||
|
if filename == f:
|
||||||
|
found = True
|
||||||
|
break
|
||||||
|
if found: break
|
||||||
|
|
||||||
|
if not found:
|
||||||
|
print "Error:"
|
||||||
|
print "The variable/subroutine/function \""+arguments["<name>"] \
|
||||||
|
+ "\" was not found in the sources."
|
||||||
|
print "Did you compile the code at the root?"
|
||||||
|
print "Continue? [y/N] ",
|
||||||
|
cont = sys.stdin.read(1).strip() in [ "y", "Y" ]
|
||||||
|
if not cont:
|
||||||
|
print "Aborted"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Now search in all the files
|
||||||
|
print "Replacing..."
|
||||||
|
name = re.compile(r"\b"+arguments["<name>"]+r"\b", re.IGNORECASE)
|
||||||
|
|
||||||
|
for mod in all_modules:
|
||||||
|
dirname = os.path.join(QP_SRC,mod)
|
||||||
|
if not os.path.isdir(dirname):
|
||||||
|
continue
|
||||||
|
|
||||||
|
for filename in os.listdir(dirname):
|
||||||
|
if "." not in filename:
|
||||||
|
continue
|
||||||
|
filename = os.path.join(dirname,filename)
|
||||||
|
if not os.path.isfile(filename):
|
||||||
|
continue
|
||||||
|
with open(filename, "r") as f:
|
||||||
|
f_in = f.read()
|
||||||
|
if name.search(f_in):
|
||||||
|
print filename
|
||||||
|
if arguments["--rename"]:
|
||||||
|
f_new = name.sub(arguments["--rename"], f_in)
|
||||||
|
with open(filename, "w") as f:
|
||||||
|
f.write(f_new)
|
||||||
|
|
||||||
|
print "Done"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
arguments = docopt(__doc__)
|
||||||
|
main(arguments)
|
||||||
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
BEGIN_PROVIDER [ double precision, ao_mono_elec_integral,(ao_num,ao_num)]
|
|
||||||
&BEGIN_PROVIDER [ double precision, ao_mono_elec_integral_diag,(ao_num)]
|
|
||||||
implicit none
|
|
||||||
integer :: i,j,n,l
|
|
||||||
BEGIN_DOC
|
|
||||||
! Array of the one-electron Hamiltonian on the |AO| basis.
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
IF (read_ao_one_integrals) THEN
|
|
||||||
call ezfio_get_ao_one_e_integrals_integral_combined(ao_mono_elec_integral)
|
|
||||||
ELSE
|
|
||||||
ao_mono_elec_integral = ao_nucl_elec_integral + ao_kinetic_integral
|
|
||||||
|
|
||||||
IF (DO_PSEUDO) THEN
|
|
||||||
ao_mono_elec_integral += ao_pseudo_integral
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
DO j = 1, ao_num
|
|
||||||
ao_mono_elec_integral_diag(j) = ao_mono_elec_integral(j,j)
|
|
||||||
ENDDO
|
|
||||||
|
|
||||||
IF (write_ao_one_integrals) THEN
|
|
||||||
call ezfio_set_ao_one_e_integrals_integral_combined(ao_mono_elec_integral)
|
|
||||||
print *, 'AO integrals combined written to disk'
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
@ -1,63 +1,64 @@
|
|||||||
[integral_nuclear]
|
[ao_integrals_e_n]
|
||||||
type: double precision
|
type: double precision
|
||||||
doc: Nucleus-electron integrals in |AO| basis set
|
doc: Nucleus-electron integrals in |AO| basis set
|
||||||
size: (ao_basis.ao_num,ao_basis.ao_num)
|
size: (ao_basis.ao_num,ao_basis.ao_num)
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
|
|
||||||
[io_ao_one_integrals_nuclear]
|
[io_ao_integrals_e_n]
|
||||||
type: Disk_access
|
type: Disk_access
|
||||||
doc: Read/Write |AO| one-electron nuclear integrals from/to disk [ Write | Read | None ]
|
doc: Read/Write |AO| nucleus-electron attraction integrals from/to disk [ Write | Read | None ]
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: None
|
default: None
|
||||||
|
|
||||||
|
|
||||||
[integral_kinetic]
|
[ao_integrals_kinetic]
|
||||||
type: double precision
|
type: double precision
|
||||||
doc: Kinetic energy integrals in |AO| basis set
|
doc: Kinetic energy integrals in |AO| basis set
|
||||||
size: (ao_basis.ao_num,ao_basis.ao_num)
|
size: (ao_basis.ao_num,ao_basis.ao_num)
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
|
|
||||||
[io_ao_one_integrals_kinetic]
|
[io_ao_integrals_kinetic]
|
||||||
type: Disk_access
|
type: Disk_access
|
||||||
doc: Read/Write |AO| one-electron kinetic integrals from/to disk [ Write | Read | None ]
|
doc: Read/Write |AO| kinetic integrals from/to disk [ Write | Read | None ]
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: None
|
default: None
|
||||||
|
|
||||||
|
|
||||||
[integral_pseudo]
|
[ao_integrals_pseudo]
|
||||||
type: double precision
|
type: double precision
|
||||||
doc: Pseudopotential integrals in |AO| basis set
|
doc: Pseudopotential integrals in |AO| basis set
|
||||||
size: (ao_basis.ao_num,ao_basis.ao_num)
|
size: (ao_basis.ao_num,ao_basis.ao_num)
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
|
|
||||||
[io_ao_one_integrals_pseudo]
|
[io_ao_integrals_pseudo]
|
||||||
type: Disk_access
|
type: Disk_access
|
||||||
doc: Read/Write |AO| one-electron pseudo integrals from/to disk [ Write | Read | None ]
|
doc: Read/Write |AO| pseudopotential integrals from/to disk [ Write | Read | None ]
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: None
|
default: None
|
||||||
|
|
||||||
|
|
||||||
[integral_overlap]
|
[ao_integrals_overlap]
|
||||||
type: double precision
|
type: double precision
|
||||||
doc: Overlap integrals in |AO| basis set
|
doc: Overlap integrals in |AO| basis set
|
||||||
size: (ao_basis.ao_num,ao_basis.ao_num)
|
size: (ao_basis.ao_num,ao_basis.ao_num)
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
|
|
||||||
[io_ao_one_integrals_overlap]
|
[io_ao_integrals_overlap]
|
||||||
type: Disk_access
|
type: Disk_access
|
||||||
doc: Read/Write |AO| one-electron overlap integrals from/to disk [ Write | Read | None ]
|
doc: Read/Write |AO| overlap integrals from/to disk [ Write | Read | None ]
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: None
|
default: None
|
||||||
|
|
||||||
|
|
||||||
[integral_combined]
|
[ao_one_e_integrals]
|
||||||
type: double precision
|
type: double precision
|
||||||
doc: Combined integrals in |MO| basis set
|
doc: Combined integrals in |AO| basis set
|
||||||
size: (ao_basis.ao_num,ao_basis.ao_num)
|
size: (ao_basis.ao_num,ao_basis.ao_num)
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
|
|
||||||
[disk_access_ao_one_integrals]
|
[io_ao_one_e_integrals]
|
||||||
type: Disk_access
|
type: Disk_access
|
||||||
doc: Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ]
|
doc: Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ]
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: None
|
default: None
|
||||||
|
|
@ -8,7 +8,7 @@ The most important providers for usual quantum-chemistry calculation are:
|
|||||||
|
|
||||||
* `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`)
|
* `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`)
|
||||||
* `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`)
|
* `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`)
|
||||||
* `ao_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`)
|
* `ao_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`)
|
||||||
|
|
||||||
|
|
||||||
Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`.
|
Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`.
|
29
src/ao_one_e_ints/ao_one_e_ints.irp.f
Normal file
29
src/ao_one_e_ints/ao_one_e_ints.irp.f
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
BEGIN_PROVIDER [ double precision, ao_one_e_integrals,(ao_num,ao_num)]
|
||||||
|
&BEGIN_PROVIDER [ double precision, ao_one_e_integrals_diag,(ao_num)]
|
||||||
|
implicit none
|
||||||
|
integer :: i,j,n,l
|
||||||
|
BEGIN_DOC
|
||||||
|
! One-electron Hamiltonian in the |AO| basis.
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
IF (read_ao_one_e_integrals) THEN
|
||||||
|
call ezfio_get_ao_one_e_ints_ao_one_e_integrals(ao_one_e_integrals)
|
||||||
|
ELSE
|
||||||
|
ao_one_e_integrals = ao_nucl_elec_integrals + ao_kinetic_integrals
|
||||||
|
|
||||||
|
IF (DO_PSEUDO) THEN
|
||||||
|
ao_one_e_integrals += ao_pseudo_integrals
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
DO j = 1, ao_num
|
||||||
|
ao_one_e_integrals_diag(j) = ao_one_e_integrals(j,j)
|
||||||
|
ENDDO
|
||||||
|
|
||||||
|
IF (write_ao_one_e_integrals) THEN
|
||||||
|
call ezfio_set_ao_one_e_ints_ao_one_e_integrals(ao_one_e_integrals)
|
||||||
|
print *, 'AO one-e integrals written to disk'
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
@ -19,8 +19,8 @@
|
|||||||
ao_overlap_x = 0.d0
|
ao_overlap_x = 0.d0
|
||||||
ao_overlap_y = 0.d0
|
ao_overlap_y = 0.d0
|
||||||
ao_overlap_z = 0.d0
|
ao_overlap_z = 0.d0
|
||||||
if (read_ao_one_integrals_overlap) then
|
if (read_ao_integrals_overlap) then
|
||||||
call ezfio_get_ao_one_e_integrals_integral_overlap(ao_overlap(1:ao_num, 1:ao_num))
|
call ezfio_get_ao_one_e_ints_ao_integrals_overlap(ao_overlap(1:ao_num, 1:ao_num))
|
||||||
print *, 'AO overlap integrals read from disk'
|
print *, 'AO overlap integrals read from disk'
|
||||||
else
|
else
|
||||||
|
|
||||||
@ -63,8 +63,8 @@
|
|||||||
enddo
|
enddo
|
||||||
!$OMP END PARALLEL DO
|
!$OMP END PARALLEL DO
|
||||||
endif
|
endif
|
||||||
if (write_ao_one_integrals_overlap) then
|
if (write_ao_integrals_overlap) then
|
||||||
call ezfio_set_ao_one_e_integrals_integral_overlap(ao_overlap(1:ao_num, 1:ao_num))
|
call ezfio_set_ao_one_e_ints_ao_integrals_overlap(ao_overlap(1:ao_num, 1:ao_num))
|
||||||
print *, 'AO overlap integrals written to disk'
|
print *, 'AO overlap integrals written to disk'
|
||||||
endif
|
endif
|
||||||
|
|
@ -117,7 +117,7 @@
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, ao_kinetic_integral, (ao_num,ao_num)]
|
BEGIN_PROVIDER [double precision, ao_kinetic_integrals, (ao_num,ao_num)]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Kinetic energy integrals in the |AO| basis.
|
! Kinetic energy integrals in the |AO| basis.
|
||||||
@ -126,22 +126,22 @@ BEGIN_PROVIDER [double precision, ao_kinetic_integral, (ao_num,ao_num)]
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: i,j,k,l
|
integer :: i,j,k,l
|
||||||
|
|
||||||
if (read_ao_one_integrals_kinetic) then
|
if (read_ao_integrals_kinetic) then
|
||||||
call ezfio_get_ao_one_e_integrals_integral_kinetic(ao_kinetic_integral)
|
call ezfio_get_ao_one_e_ints_ao_integrals_kinetic(ao_kinetic_integrals)
|
||||||
print *, 'AO kinetic integrals read from disk'
|
print *, 'AO kinetic integrals read from disk'
|
||||||
else
|
else
|
||||||
!$OMP PARALLEL DO DEFAULT(NONE) &
|
!$OMP PARALLEL DO DEFAULT(NONE) &
|
||||||
!$OMP PRIVATE(i,j) &
|
!$OMP PRIVATE(i,j) &
|
||||||
!$OMP SHARED(ao_num, ao_kinetic_integral,ao_deriv2_x,ao_deriv2_y,ao_deriv2_z)
|
!$OMP SHARED(ao_num, ao_kinetic_integrals,ao_deriv2_x,ao_deriv2_y,ao_deriv2_z)
|
||||||
do j = 1, ao_num
|
do j = 1, ao_num
|
||||||
do i = 1, ao_num
|
do i = 1, ao_num
|
||||||
ao_kinetic_integral(i,j) = -0.5d0 * (ao_deriv2_x(i,j) + ao_deriv2_y(i,j) + ao_deriv2_z(i,j) )
|
ao_kinetic_integrals(i,j) = -0.5d0 * (ao_deriv2_x(i,j) + ao_deriv2_y(i,j) + ao_deriv2_z(i,j) )
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
!$OMP END PARALLEL DO
|
!$OMP END PARALLEL DO
|
||||||
endif
|
endif
|
||||||
if (write_ao_one_integrals_kinetic) then
|
if (write_ao_integrals_kinetic) then
|
||||||
call ezfio_set_ao_one_e_integrals_integral_kinetic(ao_kinetic_integral)
|
call ezfio_set_ao_one_e_ints_ao_integrals_kinetic(ao_kinetic_integrals)
|
||||||
print *, 'AO kinetic integrals written to disk'
|
print *, 'AO kinetic integrals written to disk'
|
||||||
endif
|
endif
|
||||||
END_PROVIDER
|
END_PROVIDER
|
@ -1,4 +1,4 @@
|
|||||||
BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral, (ao_num,ao_num)]
|
BEGIN_PROVIDER [ double precision, ao_nucl_elec_integrals, (ao_num,ao_num)]
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Nucleus-electron interaction, in the |AO| basis set.
|
! Nucleus-electron interaction, in the |AO| basis set.
|
||||||
!
|
!
|
||||||
@ -12,12 +12,12 @@ BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral, (ao_num,ao_num)]
|
|||||||
integer :: i,j,k,l,n_pt_in,m
|
integer :: i,j,k,l,n_pt_in,m
|
||||||
double precision :: overlap_x,overlap_y,overlap_z,overlap,dx,NAI_pol_mult
|
double precision :: overlap_x,overlap_y,overlap_z,overlap,dx,NAI_pol_mult
|
||||||
|
|
||||||
if (read_ao_one_integrals_nuclear) then
|
if (read_ao_integrals_e_n) then
|
||||||
call ezfio_get_ao_one_e_integrals_integral_nuclear(ao_nucl_elec_integral)
|
call ezfio_get_ao_one_e_ints_ao_integrals_e_n(ao_nucl_elec_integrals)
|
||||||
print *, 'AO N-e integrals read from disk'
|
print *, 'AO N-e integrals read from disk'
|
||||||
else
|
else
|
||||||
|
|
||||||
ao_nucl_elec_integral = 0.d0
|
ao_nucl_elec_integrals = 0.d0
|
||||||
|
|
||||||
! _
|
! _
|
||||||
! /| / |_)
|
! /| / |_)
|
||||||
@ -29,7 +29,7 @@ BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral, (ao_num,ao_num)]
|
|||||||
!$OMP PRIVATE (i,j,k,l,m,alpha,beta,A_center,B_center,C_center,power_A,power_B,&
|
!$OMP PRIVATE (i,j,k,l,m,alpha,beta,A_center,B_center,C_center,power_A,power_B,&
|
||||||
!$OMP num_A,num_B,Z,c,n_pt_in) &
|
!$OMP num_A,num_B,Z,c,n_pt_in) &
|
||||||
!$OMP SHARED (ao_num,ao_prim_num,ao_expo_ordered_transp,ao_power,ao_nucl,nucl_coord,ao_coef_normalized_ordered_transp,&
|
!$OMP SHARED (ao_num,ao_prim_num,ao_expo_ordered_transp,ao_power,ao_nucl,nucl_coord,ao_coef_normalized_ordered_transp,&
|
||||||
!$OMP n_pt_max_integrals,ao_nucl_elec_integral,nucl_num,nucl_charge)
|
!$OMP n_pt_max_integrals,ao_nucl_elec_integrals,nucl_num,nucl_charge)
|
||||||
|
|
||||||
n_pt_in = n_pt_max_integrals
|
n_pt_in = n_pt_max_integrals
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral, (ao_num,ao_num)]
|
|||||||
power_A,power_B,alpha,beta,C_center,n_pt_in)
|
power_A,power_B,alpha,beta,C_center,n_pt_in)
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
ao_nucl_elec_integral(i,j) = ao_nucl_elec_integral(i,j) &
|
ao_nucl_elec_integrals(i,j) = ao_nucl_elec_integrals(i,j) &
|
||||||
+ ao_coef_normalized_ordered_transp(l,j) &
|
+ ao_coef_normalized_ordered_transp(l,j) &
|
||||||
* ao_coef_normalized_ordered_transp(m,i) * c
|
* ao_coef_normalized_ordered_transp(m,i) * c
|
||||||
enddo
|
enddo
|
||||||
@ -76,14 +76,14 @@ BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral, (ao_num,ao_num)]
|
|||||||
!$OMP END DO
|
!$OMP END DO
|
||||||
!$OMP END PARALLEL
|
!$OMP END PARALLEL
|
||||||
endif
|
endif
|
||||||
if (write_ao_one_integrals_nuclear) then
|
if (write_ao_integrals_e_n) then
|
||||||
call ezfio_set_ao_one_e_integrals_integral_nuclear(ao_nucl_elec_integral)
|
call ezfio_set_ao_one_e_ints_ao_integrals_e_n(ao_nucl_elec_integrals)
|
||||||
print *, 'AO N-e integrals written to disk'
|
print *, 'AO N-e integrals written to disk'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral_per_atom, (ao_num,ao_num,nucl_num)]
|
BEGIN_PROVIDER [ double precision, ao_nucl_elec_integrals_per_atom, (ao_num,ao_num,nucl_num)]
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Nucleus-electron interaction in the |AO| basis set, per atom A.
|
! Nucleus-electron interaction in the |AO| basis set, per atom A.
|
||||||
!
|
!
|
||||||
@ -97,14 +97,14 @@ BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral_per_atom, (ao_num,ao_nu
|
|||||||
integer :: i,j,k,l,n_pt_in,m
|
integer :: i,j,k,l,n_pt_in,m
|
||||||
double precision :: overlap_x,overlap_y,overlap_z,overlap,dx,NAI_pol_mult
|
double precision :: overlap_x,overlap_y,overlap_z,overlap,dx,NAI_pol_mult
|
||||||
|
|
||||||
ao_nucl_elec_integral_per_atom = 0.d0
|
ao_nucl_elec_integrals_per_atom = 0.d0
|
||||||
|
|
||||||
!$OMP PARALLEL &
|
!$OMP PARALLEL &
|
||||||
!$OMP DEFAULT (NONE) &
|
!$OMP DEFAULT (NONE) &
|
||||||
!$OMP PRIVATE (i,j,k,l,m,alpha,beta,A_center,B_center,power_A,power_B,&
|
!$OMP PRIVATE (i,j,k,l,m,alpha,beta,A_center,B_center,power_A,power_B,&
|
||||||
!$OMP num_A,num_B,c,n_pt_in,C_center) &
|
!$OMP num_A,num_B,c,n_pt_in,C_center) &
|
||||||
!$OMP SHARED (ao_num,ao_prim_num,ao_expo_ordered_transp,ao_power,ao_nucl,nucl_coord,ao_coef_normalized_ordered_transp,&
|
!$OMP SHARED (ao_num,ao_prim_num,ao_expo_ordered_transp,ao_power,ao_nucl,nucl_coord,ao_coef_normalized_ordered_transp,&
|
||||||
!$OMP n_pt_max_integrals,ao_nucl_elec_integral_per_atom,nucl_num)
|
!$OMP n_pt_max_integrals,ao_nucl_elec_integrals_per_atom,nucl_num)
|
||||||
n_pt_in = n_pt_max_integrals
|
n_pt_in = n_pt_max_integrals
|
||||||
!$OMP DO SCHEDULE (dynamic)
|
!$OMP DO SCHEDULE (dynamic)
|
||||||
|
|
||||||
@ -140,7 +140,7 @@ BEGIN_PROVIDER [ double precision, ao_nucl_elec_integral_per_atom, (ao_num,ao_nu
|
|||||||
* ao_coef_normalized_ordered_transp(m,i)
|
* ao_coef_normalized_ordered_transp(m,i)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
ao_nucl_elec_integral_per_atom(i,j,k) = -c
|
ao_nucl_elec_integrals_per_atom(i,j,k) = -c
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
@ -1,33 +1,33 @@
|
|||||||
BEGIN_PROVIDER [ double precision, ao_pseudo_integral, (ao_num,ao_num)]
|
BEGIN_PROVIDER [ double precision, ao_pseudo_integrals, (ao_num,ao_num)]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Pseudo-potential integrals in the |AO| basis set.
|
! Pseudo-potential integrals in the |AO| basis set.
|
||||||
END_DOC
|
END_DOC
|
||||||
|
|
||||||
if (read_ao_one_integrals_pseudo) then
|
if (read_ao_integrals_pseudo) then
|
||||||
call ezfio_get_ao_one_e_integrals_integral_pseudo(ao_pseudo_integral)
|
call ezfio_get_ao_one_e_ints_ao_integrals_pseudo(ao_pseudo_integrals)
|
||||||
print *, 'AO pseudopotential integrals read from disk'
|
print *, 'AO pseudopotential integrals read from disk'
|
||||||
else
|
else
|
||||||
|
|
||||||
ao_pseudo_integral = 0.d0
|
ao_pseudo_integrals = 0.d0
|
||||||
if (do_pseudo) then
|
if (do_pseudo) then
|
||||||
if (pseudo_klocmax > 0) then
|
if (pseudo_klocmax > 0) then
|
||||||
ao_pseudo_integral += ao_pseudo_integral_local
|
ao_pseudo_integrals += ao_pseudo_integrals_local
|
||||||
endif
|
endif
|
||||||
if (pseudo_kmax > 0) then
|
if (pseudo_kmax > 0) then
|
||||||
ao_pseudo_integral += ao_pseudo_integral_non_local
|
ao_pseudo_integrals += ao_pseudo_integrals_non_local
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (write_ao_one_integrals_pseudo) then
|
if (write_ao_integrals_pseudo) then
|
||||||
call ezfio_set_ao_one_e_integrals_integral_pseudo(ao_pseudo_integral)
|
call ezfio_set_ao_one_e_ints_ao_integrals_pseudo(ao_pseudo_integrals)
|
||||||
print *, 'AO pseudopotential integrals written to disk'
|
print *, 'AO pseudopotential integrals written to disk'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, ao_pseudo_integral_local, (ao_num,ao_num)]
|
BEGIN_PROVIDER [ double precision, ao_pseudo_integrals_local, (ao_num,ao_num)]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Local pseudo-potential
|
! Local pseudo-potential
|
||||||
@ -44,7 +44,7 @@ BEGIN_PROVIDER [ double precision, ao_pseudo_integral_local, (ao_num,ao_num)]
|
|||||||
integer :: thread_num
|
integer :: thread_num
|
||||||
integer :: omp_get_thread_num
|
integer :: omp_get_thread_num
|
||||||
|
|
||||||
ao_pseudo_integral_local = 0.d0
|
ao_pseudo_integrals_local = 0.d0
|
||||||
|
|
||||||
print*, 'Providing the nuclear electron pseudo integrals (local)'
|
print*, 'Providing the nuclear electron pseudo integrals (local)'
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ BEGIN_PROVIDER [ double precision, ao_pseudo_integral_local, (ao_num,ao_num)]
|
|||||||
!$OMP num_A,num_B,Z,c,n_pt_in, &
|
!$OMP num_A,num_B,Z,c,n_pt_in, &
|
||||||
!$OMP wall_0,wall_2,thread_num) &
|
!$OMP wall_0,wall_2,thread_num) &
|
||||||
!$OMP SHARED (ao_num,ao_prim_num,ao_expo_ordered_transp,ao_power,ao_nucl,nucl_coord,ao_coef_normalized_ordered_transp,&
|
!$OMP SHARED (ao_num,ao_prim_num,ao_expo_ordered_transp,ao_power,ao_nucl,nucl_coord,ao_coef_normalized_ordered_transp,&
|
||||||
!$OMP ao_pseudo_integral_local,nucl_num,nucl_charge, &
|
!$OMP ao_pseudo_integrals_local,nucl_num,nucl_charge, &
|
||||||
!$OMP pseudo_klocmax,pseudo_lmax,pseudo_kmax,pseudo_v_k_transp,pseudo_n_k_transp, pseudo_dz_k_transp,&
|
!$OMP pseudo_klocmax,pseudo_lmax,pseudo_kmax,pseudo_v_k_transp,pseudo_n_k_transp, pseudo_dz_k_transp,&
|
||||||
!$OMP wall_1)
|
!$OMP wall_1)
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ BEGIN_PROVIDER [ double precision, ao_pseudo_integral_local, (ao_num,ao_num)]
|
|||||||
A_center,power_A,alpha,B_center,power_B,beta,C_center)
|
A_center,power_A,alpha,B_center,power_B,beta,C_center)
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
ao_pseudo_integral_local(i,j) = ao_pseudo_integral_local(i,j) +&
|
ao_pseudo_integrals_local(i,j) = ao_pseudo_integrals_local(i,j) +&
|
||||||
ao_coef_normalized_ordered_transp(l,j)*ao_coef_normalized_ordered_transp(m,i)*c
|
ao_coef_normalized_ordered_transp(l,j)*ao_coef_normalized_ordered_transp(m,i)*c
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -127,7 +127,7 @@ BEGIN_PROVIDER [ double precision, ao_pseudo_integral_local, (ao_num,ao_num)]
|
|||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, ao_pseudo_integral_non_local, (ao_num,ao_num)]
|
BEGIN_PROVIDER [ double precision, ao_pseudo_integrals_non_local, (ao_num,ao_num)]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Non-local pseudo-potential
|
! Non-local pseudo-potential
|
||||||
@ -144,7 +144,7 @@ BEGIN_PROVIDER [ double precision, ao_pseudo_integral_local, (ao_num,ao_num)]
|
|||||||
double precision :: cpu_1, cpu_2, wall_1, wall_2, wall_0
|
double precision :: cpu_1, cpu_2, wall_1, wall_2, wall_0
|
||||||
integer :: thread_num
|
integer :: thread_num
|
||||||
|
|
||||||
ao_pseudo_integral_non_local = 0.d0
|
ao_pseudo_integrals_non_local = 0.d0
|
||||||
|
|
||||||
print*, 'Providing the nuclear electron pseudo integrals (non-local)'
|
print*, 'Providing the nuclear electron pseudo integrals (non-local)'
|
||||||
|
|
||||||
@ -158,7 +158,7 @@ BEGIN_PROVIDER [ double precision, ao_pseudo_integral_local, (ao_num,ao_num)]
|
|||||||
!$OMP num_A,num_B,Z,c,n_pt_in, &
|
!$OMP num_A,num_B,Z,c,n_pt_in, &
|
||||||
!$OMP wall_0,wall_2,thread_num) &
|
!$OMP wall_0,wall_2,thread_num) &
|
||||||
!$OMP SHARED (ao_num,ao_prim_num,ao_expo_ordered_transp,ao_power,ao_nucl,nucl_coord,ao_coef_normalized_ordered_transp,&
|
!$OMP SHARED (ao_num,ao_prim_num,ao_expo_ordered_transp,ao_power,ao_nucl,nucl_coord,ao_coef_normalized_ordered_transp,&
|
||||||
!$OMP ao_pseudo_integral_non_local,nucl_num,nucl_charge,&
|
!$OMP ao_pseudo_integrals_non_local,nucl_num,nucl_charge,&
|
||||||
!$OMP pseudo_klocmax,pseudo_lmax,pseudo_kmax,pseudo_n_kl_transp, pseudo_v_kl_transp, pseudo_dz_kl_transp,&
|
!$OMP pseudo_klocmax,pseudo_lmax,pseudo_kmax,pseudo_n_kl_transp, pseudo_v_kl_transp, pseudo_dz_kl_transp,&
|
||||||
!$OMP wall_1)
|
!$OMP wall_1)
|
||||||
|
|
||||||
@ -204,7 +204,7 @@ BEGIN_PROVIDER [ double precision, ao_pseudo_integral_local, (ao_num,ao_num)]
|
|||||||
pseudo_dz_kl_transp(1,0,k), &
|
pseudo_dz_kl_transp(1,0,k), &
|
||||||
A_center,power_A,alpha,B_center,power_B,beta,C_center)
|
A_center,power_A,alpha,B_center,power_B,beta,C_center)
|
||||||
enddo
|
enddo
|
||||||
ao_pseudo_integral_non_local(i,j) = ao_pseudo_integral_non_local(i,j) +&
|
ao_pseudo_integrals_non_local(i,j) = ao_pseudo_integrals_non_local(i,j) +&
|
||||||
ao_coef_normalized_ordered_transp(l,j)*ao_coef_normalized_ordered_transp(m,i)*c
|
ao_coef_normalized_ordered_transp(l,j)*ao_coef_normalized_ordered_transp(m,i)*c
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
@ -1 +0,0 @@
|
|||||||
ao_two_e_integrals
|
|
1
src/ao_two_e_erf_ints/NEED
Normal file
1
src/ao_two_e_erf_ints/NEED
Normal file
@ -0,0 +1 @@
|
|||||||
|
ao_two_e_ints
|
@ -1,12 +1,12 @@
|
|||||||
======================
|
======================
|
||||||
ao_two_e_erf_integrals
|
ao_two_e_erf_ints
|
||||||
======================
|
======================
|
||||||
|
|
||||||
Here, all two-electron integrals (:math:`erf(\mu r_{12})/r_{12}`) are computed.
|
Here, all two-electron integrals (:math:`erf(\mu r_{12})/r_{12}`) are computed.
|
||||||
As they have 4 indices and many are zero, they are stored in a map, as defined
|
As they have 4 indices and many are zero, they are stored in a map, as defined
|
||||||
in :file:`utils/map_module.f90`.
|
in :file:`utils/map_module.f90`.
|
||||||
|
|
||||||
The main parameter of this module is :option:`ao_two_e_erf_integrals mu_erf` which is the range-separation parameter.
|
The main parameter of this module is :option:`ao_two_e_erf_ints mu_erf` which is the range-separation parameter.
|
||||||
|
|
||||||
To fetch an |AO| integral, use the
|
To fetch an |AO| integral, use the
|
||||||
`get_ao_bielec_integral_erf(i,j,k,l,ao_integrals_erf_map)` function.
|
`get_ao_bielec_integral_erf(i,j,k,l,ao_integrals_erf_map)` function.
|
@ -1,4 +1,4 @@
|
|||||||
[disk_access_ao_integrals]
|
[io_ao_two_e_integrals]
|
||||||
type: Disk_access
|
type: Disk_access
|
||||||
doc: Read/Write |AO| integrals from/to disk [ Write | Read | None ]
|
doc: Read/Write |AO| integrals from/to disk [ Write | Read | None ]
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
@ -1,4 +1,4 @@
|
|||||||
ao_one_e_integrals
|
ao_one_e_ints
|
||||||
pseudo
|
pseudo
|
||||||
bitmask
|
bitmask
|
||||||
zmq
|
zmq
|
@ -1,5 +1,5 @@
|
|||||||
==================
|
==================
|
||||||
ao_two_e_integrals
|
ao_two_e_ints
|
||||||
==================
|
==================
|
||||||
|
|
||||||
Here, all two-electron integrals (:math:`1/r_{12}`) are computed.
|
Here, all two-electron integrals (:math:`1/r_{12}`) are computed.
|
@ -351,8 +351,8 @@ BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
|
|||||||
integral = ao_bielec_integral(1,1,1,1)
|
integral = ao_bielec_integral(1,1,1,1)
|
||||||
|
|
||||||
double precision :: map_mb
|
double precision :: map_mb
|
||||||
PROVIDE read_ao_integrals disk_access_ao_integrals
|
PROVIDE read_ao_two_e_integrals io_ao_two_e_integrals
|
||||||
if (read_ao_integrals) then
|
if (read_ao_two_e_integrals) then
|
||||||
print*,'Reading the AO integrals'
|
print*,'Reading the AO integrals'
|
||||||
call map_load_from_disk(trim(ezfio_filename)//'/work/ao_ints',ao_integrals_map)
|
call map_load_from_disk(trim(ezfio_filename)//'/work/ao_ints',ao_integrals_map)
|
||||||
print*, 'AO integrals provided'
|
print*, 'AO integrals provided'
|
||||||
@ -413,7 +413,7 @@ BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
|
|||||||
|
|
||||||
ao_bielec_integrals_in_map = .True.
|
ao_bielec_integrals_in_map = .True.
|
||||||
|
|
||||||
if (write_ao_integrals.and.mpi_master) then
|
if (write_ao_two_e_integrals.and.mpi_master) then
|
||||||
call ezfio_set_work_empty(.False.)
|
call ezfio_set_work_empty(.False.)
|
||||||
call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints',ao_integrals_map)
|
call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints',ao_integrals_map)
|
||||||
call ezfio_set_ao_two_e_integrals_disk_access_ao_integrals('Read')
|
call ezfio_set_ao_two_e_integrals_disk_access_ao_integrals('Read')
|
@ -9,7 +9,7 @@ function run() {
|
|||||||
ezfio set_file $1
|
ezfio set_file $1
|
||||||
ezfio set determinants n_states 3
|
ezfio set determinants n_states 3
|
||||||
ezfio set davidson threshold_davidson 1.e-12
|
ezfio set davidson threshold_davidson 1.e-12
|
||||||
echo "Write" > $1/mo_two_e_integrals/disk_access_mo_integrals
|
ezfio set mo_two_e_ints io_mo_two_e_integrals Write
|
||||||
qp_set_frozen_core $1
|
qp_set_frozen_core $1
|
||||||
qp_run cis $1
|
qp_run cis $1
|
||||||
energy1="$(ezfio get cis energy | tr '[]' ' ' | cut -d ',' -f 1)"
|
energy1="$(ezfio get cis energy | tr '[]' ' ' | cut -d ',' -f 1)"
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
mo_basis
|
mo_basis
|
||||||
mo_one_e_integrals
|
mo_one_e_ints
|
||||||
mo_two_e_integrals
|
mo_two_e_ints
|
||||||
|
@ -33,8 +33,8 @@ subroutine build_fock_tmp(fock_diag_tmp,det_ref,Nint)
|
|||||||
! Occupied MOs
|
! Occupied MOs
|
||||||
do ii=1,elec_alpha_num
|
do ii=1,elec_alpha_num
|
||||||
i = occ(ii,1)
|
i = occ(ii,1)
|
||||||
fock_diag_tmp(1,i) = fock_diag_tmp(1,i) + mo_mono_elec_integral(i,i)
|
fock_diag_tmp(1,i) = fock_diag_tmp(1,i) + mo_mono_elec_integrals(i,i)
|
||||||
E0 = E0 + mo_mono_elec_integral(i,i)
|
E0 = E0 + mo_mono_elec_integrals(i,i)
|
||||||
do jj=1,elec_alpha_num
|
do jj=1,elec_alpha_num
|
||||||
j = occ(jj,1)
|
j = occ(jj,1)
|
||||||
if (i==j) cycle
|
if (i==j) cycle
|
||||||
@ -49,8 +49,8 @@ subroutine build_fock_tmp(fock_diag_tmp,det_ref,Nint)
|
|||||||
enddo
|
enddo
|
||||||
do ii=1,elec_beta_num
|
do ii=1,elec_beta_num
|
||||||
i = occ(ii,2)
|
i = occ(ii,2)
|
||||||
fock_diag_tmp(2,i) = fock_diag_tmp(2,i) + mo_mono_elec_integral(i,i)
|
fock_diag_tmp(2,i) = fock_diag_tmp(2,i) + mo_mono_elec_integrals(i,i)
|
||||||
E0 = E0 + mo_mono_elec_integral(i,i)
|
E0 = E0 + mo_mono_elec_integrals(i,i)
|
||||||
do jj=1,elec_beta_num
|
do jj=1,elec_beta_num
|
||||||
j = occ(jj,2)
|
j = occ(jj,2)
|
||||||
if (i==j) cycle
|
if (i==j) cycle
|
||||||
@ -66,7 +66,7 @@ subroutine build_fock_tmp(fock_diag_tmp,det_ref,Nint)
|
|||||||
! Virtual MOs
|
! Virtual MOs
|
||||||
do i=1,mo_tot_num
|
do i=1,mo_tot_num
|
||||||
if (fock_diag_tmp(1,i) /= 0.d0) cycle
|
if (fock_diag_tmp(1,i) /= 0.d0) cycle
|
||||||
fock_diag_tmp(1,i) = fock_diag_tmp(1,i) + mo_mono_elec_integral(i,i)
|
fock_diag_tmp(1,i) = fock_diag_tmp(1,i) + mo_mono_elec_integrals(i,i)
|
||||||
do jj=1,elec_alpha_num
|
do jj=1,elec_alpha_num
|
||||||
j = occ(jj,1)
|
j = occ(jj,1)
|
||||||
fock_diag_tmp(1,i) = fock_diag_tmp(1,i) + mo_bielec_integral_jj_anti(i,j)
|
fock_diag_tmp(1,i) = fock_diag_tmp(1,i) + mo_bielec_integral_jj_anti(i,j)
|
||||||
@ -78,7 +78,7 @@ subroutine build_fock_tmp(fock_diag_tmp,det_ref,Nint)
|
|||||||
enddo
|
enddo
|
||||||
do i=1,mo_tot_num
|
do i=1,mo_tot_num
|
||||||
if (fock_diag_tmp(2,i) /= 0.d0) cycle
|
if (fock_diag_tmp(2,i) /= 0.d0) cycle
|
||||||
fock_diag_tmp(2,i) = fock_diag_tmp(2,i) + mo_mono_elec_integral(i,i)
|
fock_diag_tmp(2,i) = fock_diag_tmp(2,i) + mo_mono_elec_integrals(i,i)
|
||||||
do jj=1,elec_beta_num
|
do jj=1,elec_beta_num
|
||||||
j = occ(jj,2)
|
j = occ(jj,2)
|
||||||
fock_diag_tmp(2,i) = fock_diag_tmp(2,i) + mo_bielec_integral_jj_anti(i,j)
|
fock_diag_tmp(2,i) = fock_diag_tmp(2,i) + mo_bielec_integral_jj_anti(i,j)
|
||||||
|
@ -131,7 +131,7 @@ subroutine diag_H_mat_elem_au0_h_au0(det_in,Nint,hii)
|
|||||||
! alpha - alpha
|
! alpha - alpha
|
||||||
do i = 1, elec_num_tab_local(1)
|
do i = 1, elec_num_tab_local(1)
|
||||||
iorb = occ(i,1)
|
iorb = occ(i,1)
|
||||||
hii += mo_mono_elec_integral(iorb,iorb)
|
hii += mo_mono_elec_integrals(iorb,iorb)
|
||||||
do j = i+1, elec_num_tab_local(1)
|
do j = i+1, elec_num_tab_local(1)
|
||||||
jorb = occ(j,1)
|
jorb = occ(j,1)
|
||||||
hii += mo_bielec_integral_jj_anti(jorb,iorb)
|
hii += mo_bielec_integral_jj_anti(jorb,iorb)
|
||||||
@ -141,7 +141,7 @@ subroutine diag_H_mat_elem_au0_h_au0(det_in,Nint,hii)
|
|||||||
! beta - beta
|
! beta - beta
|
||||||
do i = 1, elec_num_tab_local(2)
|
do i = 1, elec_num_tab_local(2)
|
||||||
iorb = occ(i,2)
|
iorb = occ(i,2)
|
||||||
hii += mo_mono_elec_integral(iorb,iorb)
|
hii += mo_mono_elec_integrals(iorb,iorb)
|
||||||
do j = i+1, elec_num_tab_local(2)
|
do j = i+1, elec_num_tab_local(2)
|
||||||
jorb = occ(j,2)
|
jorb = occ(j,2)
|
||||||
hii += mo_bielec_integral_jj_anti(jorb,iorb)
|
hii += mo_bielec_integral_jj_anti(jorb,iorb)
|
||||||
|
@ -5,13 +5,15 @@
|
|||||||
double precision :: tmp(mo_tot_num,mo_tot_num),mono_ints(mo_tot_num,mo_tot_num)
|
double precision :: tmp(mo_tot_num,mo_tot_num),mono_ints(mo_tot_num,mo_tot_num)
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! psi_energy_h_core = $\langle \Psi | h_{core} |\Psi \rangle$
|
! psi_energy_h_core = $\langle \Psi | h_{core} |\Psi \rangle$
|
||||||
! computed using the `one_body_dm_mo_alpha` + `one_body_dm_mo_beta` and `mo_mono_elec_integral`
|
!
|
||||||
|
! computed using the :c:data:`one_body_dm_mo_alpha` +
|
||||||
|
! :c:data:`one_body_dm_mo_beta` and :c:data:`mo_mono_elec_integrals`
|
||||||
END_DOC
|
END_DOC
|
||||||
psi_energy_h_core = 0.d0
|
psi_energy_h_core = 0.d0
|
||||||
do i = 1, N_states
|
do i = 1, N_states
|
||||||
do j = 1, mo_tot_num
|
do j = 1, mo_tot_num
|
||||||
do k = 1, mo_tot_num
|
do k = 1, mo_tot_num
|
||||||
psi_energy_h_core(i) += mo_mono_elec_integral(k,j) * (one_body_dm_mo_alpha(k,j,i) + one_body_dm_mo_beta(k,j,i))
|
psi_energy_h_core(i) += mo_mono_elec_integrals(k,j) * (one_body_dm_mo_alpha(k,j,i) + one_body_dm_mo_beta(k,j,i))
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
@ -23,15 +23,15 @@
|
|||||||
bi_elec_ref_bitmask_energy = 0.d0
|
bi_elec_ref_bitmask_energy = 0.d0
|
||||||
|
|
||||||
do i = 1, elec_beta_num
|
do i = 1, elec_beta_num
|
||||||
ref_bitmask_energy += mo_mono_elec_integral(occ(i,1),occ(i,1)) + mo_mono_elec_integral(occ(i,2),occ(i,2))
|
ref_bitmask_energy += mo_mono_elec_integrals(occ(i,1),occ(i,1)) + mo_mono_elec_integrals(occ(i,2),occ(i,2))
|
||||||
kinetic_ref_bitmask_energy += mo_kinetic_integral(occ(i,1),occ(i,1)) + mo_kinetic_integral(occ(i,2),occ(i,2))
|
kinetic_ref_bitmask_energy += mo_kinetic_integrals(occ(i,1),occ(i,1)) + mo_kinetic_integrals(occ(i,2),occ(i,2))
|
||||||
nucl_elec_ref_bitmask_energy += mo_nucl_elec_integral(occ(i,1),occ(i,1)) + mo_nucl_elec_integral(occ(i,2),occ(i,2))
|
nucl_elec_ref_bitmask_energy += mo_nucl_elec_integrals(occ(i,1),occ(i,1)) + mo_nucl_elec_integrals(occ(i,2),occ(i,2))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
do i = elec_beta_num+1,elec_alpha_num
|
do i = elec_beta_num+1,elec_alpha_num
|
||||||
ref_bitmask_energy += mo_mono_elec_integral(occ(i,1),occ(i,1))
|
ref_bitmask_energy += mo_mono_elec_integrals(occ(i,1),occ(i,1))
|
||||||
kinetic_ref_bitmask_energy += mo_kinetic_integral(occ(i,1),occ(i,1))
|
kinetic_ref_bitmask_energy += mo_kinetic_integrals(occ(i,1),occ(i,1))
|
||||||
nucl_elec_ref_bitmask_energy += mo_nucl_elec_integral(occ(i,1),occ(i,1))
|
nucl_elec_ref_bitmask_energy += mo_nucl_elec_integrals(occ(i,1),occ(i,1))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
do j= 1, elec_alpha_num
|
do j= 1, elec_alpha_num
|
||||||
|
@ -52,8 +52,8 @@ BEGIN_PROVIDER [double precision, fock_operator_closed_shell_ref_bitmask, (mo_to
|
|||||||
k = occ(k0,1)
|
k = occ(k0,1)
|
||||||
accu += 2.d0 * array_coulomb(k) - array_exchange(k)
|
accu += 2.d0 * array_coulomb(k) - array_exchange(k)
|
||||||
enddo
|
enddo
|
||||||
fock_operator_closed_shell_ref_bitmask(i,j) = accu + mo_mono_elec_integral(i,j)
|
fock_operator_closed_shell_ref_bitmask(i,j) = accu + mo_mono_elec_integrals(i,j)
|
||||||
fock_operator_closed_shell_ref_bitmask(j,i) = accu + mo_mono_elec_integral(i,j)
|
fock_operator_closed_shell_ref_bitmask(j,i) = accu + mo_mono_elec_integrals(i,j)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -69,8 +69,8 @@ BEGIN_PROVIDER [double precision, fock_operator_closed_shell_ref_bitmask, (mo_to
|
|||||||
k = occ(k0,1)
|
k = occ(k0,1)
|
||||||
accu += 2.d0 * array_coulomb(k) - array_exchange(k)
|
accu += 2.d0 * array_coulomb(k) - array_exchange(k)
|
||||||
enddo
|
enddo
|
||||||
fock_operator_closed_shell_ref_bitmask(i,j) = accu+ mo_mono_elec_integral(i,j)
|
fock_operator_closed_shell_ref_bitmask(i,j) = accu+ mo_mono_elec_integrals(i,j)
|
||||||
fock_operator_closed_shell_ref_bitmask(j,i) = accu+ mo_mono_elec_integral(i,j)
|
fock_operator_closed_shell_ref_bitmask(j,i) = accu+ mo_mono_elec_integrals(i,j)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -86,8 +86,8 @@ BEGIN_PROVIDER [double precision, fock_operator_closed_shell_ref_bitmask, (mo_to
|
|||||||
k = occ(k0,1)
|
k = occ(k0,1)
|
||||||
accu += 2.d0 * array_coulomb(k) - array_exchange(k)
|
accu += 2.d0 * array_coulomb(k) - array_exchange(k)
|
||||||
enddo
|
enddo
|
||||||
fock_operator_closed_shell_ref_bitmask(i,j) = accu+ mo_mono_elec_integral(i,j)
|
fock_operator_closed_shell_ref_bitmask(i,j) = accu+ mo_mono_elec_integrals(i,j)
|
||||||
fock_operator_closed_shell_ref_bitmask(j,i) = accu+ mo_mono_elec_integral(i,j)
|
fock_operator_closed_shell_ref_bitmask(j,i) = accu+ mo_mono_elec_integrals(i,j)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
deallocate(array_coulomb,array_exchange)
|
deallocate(array_coulomb,array_exchange)
|
||||||
@ -122,33 +122,33 @@ subroutine get_mono_excitation_from_fock(det_1,det_2,h,p,spin,phase,hij)
|
|||||||
! holes :: direct terms
|
! holes :: direct terms
|
||||||
do i0 = 1, n_occ_ab_hole(1)
|
do i0 = 1, n_occ_ab_hole(1)
|
||||||
i = occ_hole(i0,1)
|
i = occ_hole(i0,1)
|
||||||
hij -= big_array_coulomb_integrals(i,h,p) ! get_mo_bielec_integral_schwartz(h,i,p,i,mo_integrals_map)
|
hij -= big_array_coulomb_integrals(i,h,p)
|
||||||
enddo
|
enddo
|
||||||
do i0 = 1, n_occ_ab_hole(2)
|
do i0 = 1, n_occ_ab_hole(2)
|
||||||
i = occ_hole(i0,2)
|
i = occ_hole(i0,2)
|
||||||
hij -= big_array_coulomb_integrals(i,h,p) !get_mo_bielec_integral_schwartz(h,i,p,i,mo_integrals_map)
|
hij -= big_array_coulomb_integrals(i,h,p)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
! holes :: exchange terms
|
! holes :: exchange terms
|
||||||
do i0 = 1, n_occ_ab_hole(spin)
|
do i0 = 1, n_occ_ab_hole(spin)
|
||||||
i = occ_hole(i0,spin)
|
i = occ_hole(i0,spin)
|
||||||
hij += big_array_exchange_integrals(i,h,p) ! get_mo_bielec_integral_schwartz(h,i,i,p,mo_integrals_map)
|
hij += big_array_exchange_integrals(i,h,p)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
! particles :: direct terms
|
! particles :: direct terms
|
||||||
do i0 = 1, n_occ_ab_partcl(1)
|
do i0 = 1, n_occ_ab_partcl(1)
|
||||||
i = occ_partcl(i0,1)
|
i = occ_partcl(i0,1)
|
||||||
hij += big_array_coulomb_integrals(i,h,p)!get_mo_bielec_integral_schwartz(h,i,p,i,mo_integrals_map)
|
hij += big_array_coulomb_integrals(i,h,p)
|
||||||
enddo
|
enddo
|
||||||
do i0 = 1, n_occ_ab_partcl(2)
|
do i0 = 1, n_occ_ab_partcl(2)
|
||||||
i = occ_partcl(i0,2)
|
i = occ_partcl(i0,2)
|
||||||
hij += big_array_coulomb_integrals(i,h,p) !get_mo_bielec_integral_schwartz(h,i,p,i,mo_integrals_map)
|
hij += big_array_coulomb_integrals(i,h,p)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
! particles :: exchange terms
|
! particles :: exchange terms
|
||||||
do i0 = 1, n_occ_ab_partcl(spin)
|
do i0 = 1, n_occ_ab_partcl(spin)
|
||||||
i = occ_partcl(i0,spin)
|
i = occ_partcl(i0,spin)
|
||||||
hij -= big_array_exchange_integrals(i,h,p)!get_mo_bielec_integral_schwartz(h,i,i,p,mo_integrals_map)
|
hij -= big_array_exchange_integrals(i,h,p)
|
||||||
enddo
|
enddo
|
||||||
hij = hij * phase
|
hij = hij * phase
|
||||||
|
|
@ -795,7 +795,7 @@ subroutine i_H_j_verbose(key_i,key_j,Nint,hij,hmono,hdouble,phase)
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
endif
|
endif
|
||||||
hmono = mo_mono_elec_integral(m,p)
|
hmono = mo_mono_elec_integrals(m,p)
|
||||||
hij = phase*(hdouble + hmono)
|
hij = phase*(hdouble + hmono)
|
||||||
|
|
||||||
case (0)
|
case (0)
|
||||||
@ -1745,7 +1745,7 @@ subroutine a_operator(iorb,ispin,key,hjj,Nint,na,nb)
|
|||||||
call bitstring_to_list_ab(key, occ, tmp, Nint)
|
call bitstring_to_list_ab(key, occ, tmp, Nint)
|
||||||
na = na-1
|
na = na-1
|
||||||
|
|
||||||
hjj = hjj - mo_mono_elec_integral(iorb,iorb)
|
hjj = hjj - mo_mono_elec_integrals(iorb,iorb)
|
||||||
|
|
||||||
! Same spin
|
! Same spin
|
||||||
do i=1,na
|
do i=1,na
|
||||||
@ -1798,7 +1798,7 @@ subroutine ac_operator(iorb,ispin,key,hjj,Nint,na,nb)
|
|||||||
! print *, iorb, mo_tot_num
|
! print *, iorb, mo_tot_num
|
||||||
! stop -1
|
! stop -1
|
||||||
! endif
|
! endif
|
||||||
hjj = hjj + mo_mono_elec_integral(iorb,iorb)
|
hjj = hjj + mo_mono_elec_integrals(iorb,iorb)
|
||||||
|
|
||||||
! Same spin
|
! Same spin
|
||||||
do i=1,na
|
do i=1,na
|
||||||
|
@ -192,7 +192,7 @@ subroutine i_H_j_mono_spin_monoelec(key_i,key_j,Nint,spin,hij)
|
|||||||
integer :: m,p
|
integer :: m,p
|
||||||
m = exc(1,1)
|
m = exc(1,1)
|
||||||
p = exc(1,2)
|
p = exc(1,2)
|
||||||
hij = phase * mo_mono_elec_integral(m,p)
|
hij = phase * mo_mono_elec_integrals(m,p)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -225,7 +225,7 @@ double precision function diag_H_mat_elem_monoelec(det_in,Nint)
|
|||||||
call bitstring_to_list_ab(det_in, occ_particle, tmp, Nint)
|
call bitstring_to_list_ab(det_in, occ_particle, tmp, Nint)
|
||||||
do ispin = 1,2
|
do ispin = 1,2
|
||||||
do i = 1, tmp(ispin)
|
do i = 1, tmp(ispin)
|
||||||
diag_H_mat_elem_monoelec += mo_mono_elec_integral(occ_particle(i,ispin),occ_particle(i,ispin))
|
diag_H_mat_elem_monoelec += mo_mono_elec_integrals(occ_particle(i,ispin),occ_particle(i,ispin))
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
@ -262,7 +262,7 @@ subroutine i_H_j_monoelec(key_i,key_j,Nint,hij)
|
|||||||
m = exc(1,1,2)
|
m = exc(1,1,2)
|
||||||
p = exc(1,2,2)
|
p = exc(1,2,2)
|
||||||
endif
|
endif
|
||||||
hij = phase * mo_mono_elec_integral(m,p)
|
hij = phase * mo_mono_elec_integrals(m,p)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -8,6 +8,6 @@ This module contains the main keywords related to a DFT calculation or RS-DFT ca
|
|||||||
* :option:`dft_keywords correlation_functional`
|
* :option:`dft_keywords correlation_functional`
|
||||||
* :option:`dft_keywords HF_exchange` : only relevent for the :c:func:`rs_ks_scf` program
|
* :option:`dft_keywords HF_exchange` : only relevent for the :c:func:`rs_ks_scf` program
|
||||||
|
|
||||||
The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_integrals mu_erf` keyword.
|
The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_ints mu_erf` keyword.
|
||||||
|
|
||||||
The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword.
|
The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword.
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
density_for_dft
|
density_for_dft
|
||||||
dft_utils_in_r
|
dft_utils_in_r
|
||||||
mo_one_e_integrals
|
mo_one_e_ints
|
||||||
mo_two_e_integrals
|
mo_two_e_ints
|
||||||
ao_one_e_integrals
|
ao_one_e_ints
|
||||||
ao_two_e_integrals
|
ao_two_e_ints
|
||||||
mo_two_e_erf_integrals
|
mo_two_e_erf_ints
|
||||||
ao_two_e_erf_integrals
|
ao_two_e_erf_ints
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
do istate = 1, N_states
|
do istate = 1, N_states
|
||||||
do i = 1, mo_tot_num
|
do i = 1, mo_tot_num
|
||||||
do j = 1, mo_tot_num
|
do j = 1, mo_tot_num
|
||||||
psi_dft_energy_kinetic(istate) += ( one_body_dm_mo_alpha_for_dft(j,i,istate)+one_body_dm_mo_beta_for_dft(j,i,istate)) * mo_kinetic_integral(j,i)
|
psi_dft_energy_kinetic(istate) += ( one_body_dm_mo_alpha_for_dft(j,i,istate)+one_body_dm_mo_beta_for_dft(j,i,istate)) * mo_kinetic_integrals(j,i)
|
||||||
psi_dft_energy_nuclear_elec(istate) += ( one_body_dm_mo_alpha_for_dft(j,i,istate)+one_body_dm_mo_beta_for_dft(j,i,istate)) * mo_nucl_elec_integral(j,i)
|
psi_dft_energy_nuclear_elec(istate) += ( one_body_dm_mo_alpha_for_dft(j,i,istate)+one_body_dm_mo_beta_for_dft(j,i,istate)) * mo_nucl_elec_integrals(j,i)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
@ -54,10 +54,10 @@ END_PROVIDER
|
|||||||
do istate = 1, N_states
|
do istate = 1, N_states
|
||||||
do i = 1, mo_tot_num
|
do i = 1, mo_tot_num
|
||||||
do j = 1, mo_tot_num
|
do j = 1, mo_tot_num
|
||||||
effective_one_e_potential(i,j,istate) = short_range_Hartree_operator(i,j,istate) + mo_nucl_elec_integral(i,j) + mo_kinetic_integral(i,j) &
|
effective_one_e_potential(i,j,istate) = short_range_Hartree_operator(i,j,istate) + mo_nucl_elec_integrals(i,j) + mo_kinetic_integrals(i,j) &
|
||||||
+ 0.5d0 * (potential_x_alpha_mo(i,j,istate) + potential_c_alpha_mo(i,j,istate) &
|
+ 0.5d0 * (potential_x_alpha_mo(i,j,istate) + potential_c_alpha_mo(i,j,istate) &
|
||||||
+ potential_x_beta_mo(i,j,istate) + potential_c_beta_mo(i,j,istate) )
|
+ potential_x_beta_mo(i,j,istate) + potential_c_beta_mo(i,j,istate) )
|
||||||
effective_one_e_potential_without_kin(i,j,istate) = short_range_Hartree_operator(i,j,istate) + mo_nucl_elec_integral(i,j) &
|
effective_one_e_potential_without_kin(i,j,istate) = short_range_Hartree_operator(i,j,istate) + mo_nucl_elec_integrals(i,j) &
|
||||||
+ 0.5d0 * (potential_x_alpha_mo(i,j,istate) + potential_c_alpha_mo(i,j,istate) &
|
+ 0.5d0 * (potential_x_alpha_mo(i,j,istate) + potential_c_alpha_mo(i,j,istate) &
|
||||||
+ potential_x_beta_mo(i,j,istate) + potential_c_beta_mo(i,j,istate) )
|
+ potential_x_beta_mo(i,j,istate) + potential_c_beta_mo(i,j,istate) )
|
||||||
enddo
|
enddo
|
||||||
|
@ -258,7 +258,7 @@ subroutine ZMQ_dress(E, dress, delta_out, delta_s2_out, relative_error)
|
|||||||
state_average_weight(dress_stoch_istate) = 1.d0
|
state_average_weight(dress_stoch_istate) = 1.d0
|
||||||
TOUCH state_average_weight dress_stoch_istate
|
TOUCH state_average_weight dress_stoch_istate
|
||||||
|
|
||||||
provide nproc mo_bielec_integrals_in_map mo_mono_elec_integral psi_selectors pt2_F pt2_N_teeth dress_M_m
|
provide nproc mo_bielec_integrals_in_map mo_mono_elec_integrals psi_selectors pt2_F pt2_N_teeth dress_M_m
|
||||||
|
|
||||||
print *, '========== ================= ================= ================='
|
print *, '========== ================= ================= ================='
|
||||||
print *, ' Samples Energy Stat. Error Seconds '
|
print *, ' Samples Energy Stat. Error Seconds '
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
ao_basis
|
ao_basis
|
||||||
ao_one_e_integrals
|
ao_one_e_ints
|
||||||
ao_two_e_erf_integrals
|
ao_two_e_erf_ints
|
||||||
ao_two_e_integrals
|
ao_two_e_ints
|
||||||
aux_quantities
|
aux_quantities
|
||||||
becke_numerical_grid
|
becke_numerical_grid
|
||||||
bitmask
|
bitmask
|
||||||
@ -27,9 +27,9 @@ kohn_sham
|
|||||||
kohn_sham_rs
|
kohn_sham_rs
|
||||||
mo_basis
|
mo_basis
|
||||||
mo_guess
|
mo_guess
|
||||||
mo_one_e_integrals
|
mo_one_e_ints
|
||||||
mo_two_e_erf_integrals
|
mo_two_e_erf_ints
|
||||||
mo_two_e_integrals
|
mo_two_e_ints
|
||||||
mpi
|
mpi
|
||||||
nuclei
|
nuclei
|
||||||
perturbation
|
perturbation
|
||||||
|
@ -19,7 +19,7 @@ function run {
|
|||||||
qp_edit -c $EZ
|
qp_edit -c $EZ
|
||||||
ezfio set_file $EZ
|
ezfio set_file $EZ
|
||||||
ezfio set scf_utils thresh_scf 1.e-12
|
ezfio set scf_utils thresh_scf 1.e-12
|
||||||
echo "Write" > ${EZ}/ao_two_e_integrals/disk_access_ao_integrals
|
ezfio set ao_two_e_ints io_ao_two_e_integrals "Write"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ function run {
|
|||||||
qp_edit -c $EZ
|
qp_edit -c $EZ
|
||||||
ezfio set_file $EZ
|
ezfio set_file $EZ
|
||||||
ezfio set scf_utils thresh_scf 1.e-12
|
ezfio set scf_utils thresh_scf 1.e-12
|
||||||
echo "Write" > ${EZ}/ao_two_e_integrals/disk_access_ao_integrals
|
echo "Write" > ${EZ}/ao_two_e_ints/io_ao_two_e_integrals
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "HBO GAMESS" {
|
@test "HBO GAMESS" {
|
||||||
|
@ -128,7 +128,7 @@ subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm)
|
|||||||
state_average_weight(pt2_stoch_istate) = 1.d0
|
state_average_weight(pt2_stoch_istate) = 1.d0
|
||||||
TOUCH state_average_weight pt2_stoch_istate
|
TOUCH state_average_weight pt2_stoch_istate
|
||||||
|
|
||||||
provide nproc pt2_F mo_bielec_integrals_in_map mo_mono_elec_integral pt2_w psi_selectors
|
provide nproc pt2_F mo_bielec_integrals_in_map mo_mono_elec_integrals pt2_w psi_selectors
|
||||||
call new_parallel_job(zmq_to_qp_run_socket, zmq_socket_pull, 'pt2')
|
call new_parallel_job(zmq_to_qp_run_socket, zmq_socket_pull, 'pt2')
|
||||||
|
|
||||||
integer, external :: zmq_put_psi
|
integer, external :: zmq_put_psi
|
||||||
|
@ -1 +1,3 @@
|
|||||||
scf_utils ao_one_e_integrals ao_two_e_integrals
|
ao_one_e_ints
|
||||||
|
ao_two_e_ints
|
||||||
|
scf_utils
|
||||||
|
@ -169,8 +169,8 @@ END_PROVIDER
|
|||||||
integer :: i,j
|
integer :: i,j
|
||||||
do j=1,ao_num
|
do j=1,ao_num
|
||||||
do i=1,ao_num
|
do i=1,ao_num
|
||||||
Fock_matrix_ao_alpha(i,j) = ao_mono_elec_integral(i,j) + ao_bi_elec_integral_alpha(i,j)
|
Fock_matrix_ao_alpha(i,j) = ao_one_e_integrals(i,j) + ao_bi_elec_integral_alpha(i,j)
|
||||||
Fock_matrix_ao_beta (i,j) = ao_mono_elec_integral(i,j) + ao_bi_elec_integral_beta (i,j)
|
Fock_matrix_ao_beta (i,j) = ao_one_e_integrals(i,j) + ao_bi_elec_integral_beta (i,j)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ END_PROVIDER
|
|||||||
do i=1,ao_num
|
do i=1,ao_num
|
||||||
HF_two_electron_energy += 0.5d0 * ( ao_bi_elec_integral_alpha(i,j) * SCF_density_matrix_ao_alpha(i,j) &
|
HF_two_electron_energy += 0.5d0 * ( ao_bi_elec_integral_alpha(i,j) * SCF_density_matrix_ao_alpha(i,j) &
|
||||||
+ao_bi_elec_integral_beta(i,j) * SCF_density_matrix_ao_beta(i,j) )
|
+ao_bi_elec_integral_beta(i,j) * SCF_density_matrix_ao_beta(i,j) )
|
||||||
HF_one_electron_energy += ao_mono_elec_integral(i,j) * (SCF_density_matrix_ao_alpha(i,j) + SCF_density_matrix_ao_beta (i,j) )
|
HF_one_electron_energy += ao_one_e_integrals(i,j) * (SCF_density_matrix_ao_alpha(i,j) + SCF_density_matrix_ao_beta (i,j) )
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
HF_energy += HF_two_electron_energy + HF_one_electron_energy
|
HF_energy += HF_two_electron_energy + HF_one_electron_energy
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
program scf
|
program scf
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Produce `Hartree_Fock` MO orbital
|
! Produce `Hartree_Fock` |MOs|
|
||||||
|
!
|
||||||
! output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ
|
! output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ
|
||||||
|
!
|
||||||
! output: hartree_fock.energy
|
! output: hartree_fock.energy
|
||||||
|
!
|
||||||
! optional: mo_basis.mo_coef
|
! optional: mo_basis.mo_coef
|
||||||
END_DOC
|
END_DOC
|
||||||
disk_access_mo_one_integrals = "None"
|
|
||||||
touch disk_access_mo_one_integrals
|
|
||||||
disk_access_ao_one_integrals = "None"
|
|
||||||
touch disk_access_ao_one_integrals
|
|
||||||
call create_guess
|
call create_guess
|
||||||
call orthonormalize_mos
|
call orthonormalize_mos
|
||||||
call run
|
call run
|
||||||
@ -27,7 +26,10 @@ subroutine create_guess
|
|||||||
mo_coef = ao_ortho_lowdin_coef
|
mo_coef = ao_ortho_lowdin_coef
|
||||||
TOUCH mo_coef
|
TOUCH mo_coef
|
||||||
mo_label = 'Guess'
|
mo_label = 'Guess'
|
||||||
call mo_as_eigvectors_of_mo_matrix(mo_mono_elec_integral,size(mo_mono_elec_integral,1),size(mo_mono_elec_integral,2),mo_label,1,.false.)
|
call mo_as_eigvectors_of_mo_matrix(mo_mono_elec_integrals, &
|
||||||
|
size(mo_mono_elec_integrals,1), &
|
||||||
|
size(mo_mono_elec_integrals,2), &
|
||||||
|
mo_label,1,.false.)
|
||||||
SOFT_TOUCH mo_coef mo_label
|
SOFT_TOUCH mo_coef mo_label
|
||||||
else if (mo_guess_type == "Huckel") then
|
else if (mo_guess_type == "Huckel") then
|
||||||
call huckel_guess
|
call huckel_guess
|
||||||
@ -47,15 +49,9 @@ subroutine run
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
double precision :: SCF_energy_before,SCF_energy_after,diag_H_mat_elem
|
|
||||||
double precision :: EHF
|
|
||||||
integer :: i_it, i, j, k
|
integer :: i_it, i, j, k
|
||||||
|
|
||||||
EHF = SCF_energy
|
mo_label = "Orthonormalized"
|
||||||
|
|
||||||
mo_label = "Canonical"
|
|
||||||
|
|
||||||
! Choose SCF algorithm
|
|
||||||
|
|
||||||
call Roothaan_Hall_SCF
|
call Roothaan_Hall_SCF
|
||||||
call ezfio_set_hartree_fock_energy(SCF_energy)
|
call ezfio_set_hartree_fock_energy(SCF_energy)
|
||||||
|
@ -192,8 +192,8 @@ END_PROVIDER
|
|||||||
integer :: i,j
|
integer :: i,j
|
||||||
do j=1,ao_num
|
do j=1,ao_num
|
||||||
do i=1,ao_num
|
do i=1,ao_num
|
||||||
Fock_matrix_alpha_no_xc_ao(i,j) = ao_mono_elec_integral(i,j) + ao_bi_elec_integral_alpha(i,j)
|
Fock_matrix_alpha_no_xc_ao(i,j) = ao_one_e_integrals(i,j) + ao_bi_elec_integral_alpha(i,j)
|
||||||
Fock_matrix_beta_no_xc_ao(i,j) = ao_mono_elec_integral(i,j) + ao_bi_elec_integral_beta (i,j)
|
Fock_matrix_beta_no_xc_ao(i,j) = ao_one_e_integrals(i,j) + ao_bi_elec_integral_beta (i,j)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
Fock_matrix_ao_beta(i,j) * SCF_density_matrix_ao_beta(i,j)
|
Fock_matrix_ao_beta(i,j) * SCF_density_matrix_ao_beta(i,j)
|
||||||
two_electron_energy += 0.5d0 * ( ao_bi_elec_integral_alpha(i,j) * SCF_density_matrix_ao_alpha(i,j) &
|
two_electron_energy += 0.5d0 * ( ao_bi_elec_integral_alpha(i,j) * SCF_density_matrix_ao_alpha(i,j) &
|
||||||
+ao_bi_elec_integral_beta(i,j) * SCF_density_matrix_ao_beta(i,j) )
|
+ao_bi_elec_integral_beta(i,j) * SCF_density_matrix_ao_beta(i,j) )
|
||||||
one_electron_energy += ao_mono_elec_integral(i,j) * (SCF_density_matrix_ao_alpha(i,j) + SCF_density_matrix_ao_beta (i,j) )
|
one_electron_energy += ao_one_e_integrals(i,j) * (SCF_density_matrix_ao_alpha(i,j) + SCF_density_matrix_ao_beta (i,j) )
|
||||||
trace_potential_xc += ao_potential_alpha_xc(i,j) * SCF_density_matrix_ao_alpha(i,j) + ao_potential_beta_xc(i,j) * SCF_density_matrix_ao_beta (i,j)
|
trace_potential_xc += ao_potential_alpha_xc(i,j) * SCF_density_matrix_ao_alpha(i,j) + ao_potential_beta_xc(i,j) * SCF_density_matrix_ao_beta (i,j)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
@ -6,10 +6,10 @@ program srs_ks_cf
|
|||||||
! optional: mo_basis.mo_coef
|
! optional: mo_basis.mo_coef
|
||||||
END_DOC
|
END_DOC
|
||||||
|
|
||||||
disk_access_mo_one_integrals = "None"
|
io_mo_one_e_integrals = "None"
|
||||||
touch disk_access_mo_one_integrals
|
touch io_mo_one_e_integrals
|
||||||
disk_access_ao_one_integrals = "None"
|
io_ao_one_e_integrals = "None"
|
||||||
touch disk_access_ao_one_integrals
|
touch io_ao_one_e_integrals
|
||||||
read_wf = .False.
|
read_wf = .False.
|
||||||
density_for_dft ="WFT"
|
density_for_dft ="WFT"
|
||||||
touch density_for_dft
|
touch density_for_dft
|
||||||
@ -64,7 +64,7 @@ subroutine create_guess
|
|||||||
mo_coef = ao_ortho_lowdin_coef
|
mo_coef = ao_ortho_lowdin_coef
|
||||||
TOUCH mo_coef
|
TOUCH mo_coef
|
||||||
mo_label = 'Guess'
|
mo_label = 'Guess'
|
||||||
call mo_as_eigvectors_of_mo_matrix(mo_mono_elec_integral,size(mo_mono_elec_integral,1),size(mo_mono_elec_integral,2),mo_label,.false.)
|
call mo_as_eigvectors_of_mo_matrix(mo_mono_elec_integrals,size(mo_mono_elec_integrals,1),size(mo_mono_elec_integrals,2),mo_label,.false.)
|
||||||
SOFT_TOUCH mo_coef mo_label
|
SOFT_TOUCH mo_coef mo_label
|
||||||
else if (mo_guess_type == "Huckel") then
|
else if (mo_guess_type == "Huckel") then
|
||||||
call huckel_guess
|
call huckel_guess
|
||||||
|
@ -10,7 +10,7 @@ function run() {
|
|||||||
ezfio set scf_utils thresh_scf 1.e-10
|
ezfio set scf_utils thresh_scf 1.e-10
|
||||||
echo "short_range_PBE" > $1/dft_keywords/exchange_functional
|
echo "short_range_PBE" > $1/dft_keywords/exchange_functional
|
||||||
echo "short_range_PBE" > $1/dft_keywords/correlation_functional
|
echo "short_range_PBE" > $1/dft_keywords/correlation_functional
|
||||||
echo "0.5" > $1/ao_two_e_erf_integrals/mu_erf
|
echo "0.5" > $1/ao_two_e_erf_ints/mu_erf
|
||||||
echo "1" > $1/becke_numerical_grid/grid_type_sgn
|
echo "1" > $1/becke_numerical_grid/grid_type_sgn
|
||||||
qp_run rs_ks_scf $1
|
qp_run rs_ks_scf $1
|
||||||
energy="$(ezfio get kohn_sham_rs energy)"
|
energy="$(ezfio get kohn_sham_rs energy)"
|
||||||
|
@ -5,7 +5,7 @@ kohn_sham_rs
|
|||||||
|
|
||||||
The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
|
The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
|
||||||
spatial part of the |MOs| is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange.
|
spatial part of the |MOs| is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange.
|
||||||
The splitting of the interaction between long- and short-range is determined by the range-separation parameter :option:`ao_two_e_erf_integrals mu_erf`. The long-range part of the interaction is explicitly treated with exact exchange, and the short-range part of the interaction is treated with appropriate DFT functionals.
|
The splitting of the interaction between long- and short-range is determined by the range-separation parameter :option:`ao_two_e_erf_ints mu_erf`. The long-range part of the interaction is explicitly treated with exact exchange, and the short-range part of the interaction is treated with appropriate DFT functionals.
|
||||||
|
|
||||||
The Range-separated Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure.
|
The Range-separated Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure.
|
||||||
It performs the following actions:
|
It performs the following actions:
|
||||||
|
@ -238,8 +238,8 @@ END_PROVIDER
|
|||||||
integer :: i,j
|
integer :: i,j
|
||||||
do j=1,ao_num
|
do j=1,ao_num
|
||||||
do i=1,ao_num
|
do i=1,ao_num
|
||||||
Fock_matrix_alpha_no_xc_ao(i,j) = ao_mono_elec_integral(i,j) + ao_bi_elec_integral_alpha(i,j)
|
Fock_matrix_alpha_no_xc_ao(i,j) = ao_one_e_integrals(i,j) + ao_bi_elec_integral_alpha(i,j)
|
||||||
Fock_matrix_beta_no_xc_ao(i,j) = ao_mono_elec_integral(i,j) + ao_bi_elec_integral_beta (i,j)
|
Fock_matrix_beta_no_xc_ao(i,j) = ao_one_e_integrals(i,j) + ao_bi_elec_integral_beta (i,j)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
Fock_matrix_ao_beta(i,j) * SCF_density_matrix_ao_beta(i,j)
|
Fock_matrix_ao_beta(i,j) * SCF_density_matrix_ao_beta(i,j)
|
||||||
two_electron_energy += 0.5d0 * ( ao_bi_elec_integral_alpha(i,j) * SCF_density_matrix_ao_alpha(i,j) &
|
two_electron_energy += 0.5d0 * ( ao_bi_elec_integral_alpha(i,j) * SCF_density_matrix_ao_alpha(i,j) &
|
||||||
+ao_bi_elec_integral_beta(i,j) * SCF_density_matrix_ao_beta(i,j) )
|
+ao_bi_elec_integral_beta(i,j) * SCF_density_matrix_ao_beta(i,j) )
|
||||||
one_electron_energy += ao_mono_elec_integral(i,j) * (SCF_density_matrix_ao_alpha(i,j) + SCF_density_matrix_ao_beta (i,j) )
|
one_electron_energy += ao_one_e_integrals(i,j) * (SCF_density_matrix_ao_alpha(i,j) + SCF_density_matrix_ao_beta (i,j) )
|
||||||
trace_potential_xc += ao_potential_alpha_xc(i,j) * SCF_density_matrix_ao_alpha(i,j) + ao_potential_beta_xc(i,j) * SCF_density_matrix_ao_beta (i,j)
|
trace_potential_xc += ao_potential_alpha_xc(i,j) * SCF_density_matrix_ao_alpha(i,j) + ao_potential_beta_xc(i,j) * SCF_density_matrix_ao_beta (i,j)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
@ -6,10 +6,10 @@ program rs_ks_scf
|
|||||||
! optional: mo_basis.mo_coef
|
! optional: mo_basis.mo_coef
|
||||||
END_DOC
|
END_DOC
|
||||||
|
|
||||||
disk_access_mo_one_integrals = "None"
|
io_mo_one_e_integrals = "None"
|
||||||
touch disk_access_mo_one_integrals
|
touch io_mo_one_e_integrals
|
||||||
disk_access_ao_one_integrals = "None"
|
io_ao_one_e_integrals = "None"
|
||||||
touch disk_access_ao_one_integrals
|
touch io_ao_one_e_integrals
|
||||||
|
|
||||||
read_wf = .False.
|
read_wf = .False.
|
||||||
density_for_dft ="WFT"
|
density_for_dft ="WFT"
|
||||||
@ -66,7 +66,7 @@ subroutine create_guess
|
|||||||
mo_coef = ao_ortho_lowdin_coef
|
mo_coef = ao_ortho_lowdin_coef
|
||||||
TOUCH mo_coef
|
TOUCH mo_coef
|
||||||
mo_label = 'Guess'
|
mo_label = 'Guess'
|
||||||
call mo_as_eigvectors_of_mo_matrix(mo_mono_elec_integral,size(mo_mono_elec_integral,1),size(mo_mono_elec_integral,2),mo_label,.false.)
|
call mo_as_eigvectors_of_mo_matrix(mo_mono_elec_integrals,size(mo_mono_elec_integrals,1),size(mo_mono_elec_integrals,2),mo_label,.false.)
|
||||||
SOFT_TOUCH mo_coef mo_label
|
SOFT_TOUCH mo_coef mo_label
|
||||||
else if (mo_guess_type == "Huckel") then
|
else if (mo_guess_type == "Huckel") then
|
||||||
call huckel_guess
|
call huckel_guess
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
ao_basis
|
ao_basis
|
||||||
ao_one_e_integrals
|
ao_one_e_ints
|
||||||
electrons
|
electrons
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
mo_basis
|
mo_basis
|
||||||
mo_one_e_integrals
|
mo_one_e_ints
|
||||||
|
@ -5,9 +5,9 @@ subroutine hcore_guess
|
|||||||
implicit none
|
implicit none
|
||||||
character*(64) :: label
|
character*(64) :: label
|
||||||
label = "Guess"
|
label = "Guess"
|
||||||
call mo_as_eigvectors_of_mo_matrix(mo_mono_elec_integral, &
|
call mo_as_eigvectors_of_mo_matrix(mo_mono_elec_integrals, &
|
||||||
size(mo_mono_elec_integral,1), &
|
size(mo_mono_elec_integrals,1), &
|
||||||
size(mo_mono_elec_integral,2),label,1,.false.)
|
size(mo_mono_elec_integrals,2),label,1,.false.)
|
||||||
call save_mos
|
call save_mos
|
||||||
SOFT_TOUCH mo_coef mo_label
|
SOFT_TOUCH mo_coef mo_label
|
||||||
end
|
end
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
BEGIN_PROVIDER [double precision, ao_ortho_canonical_nucl_elec_integral, (mo_tot_num,mo_tot_num)]
|
BEGIN_PROVIDER [double precision, ao_ortho_canonical_nucl_elec_integrals, (mo_tot_num,mo_tot_num)]
|
||||||
implicit none
|
implicit none
|
||||||
integer :: i1,j1,i,j
|
integer :: i1,j1,i,j
|
||||||
double precision :: c_i1,c_j1
|
double precision :: c_i1,c_j1
|
||||||
|
|
||||||
ao_ortho_canonical_nucl_elec_integral = 0.d0
|
ao_ortho_canonical_nucl_elec_integrals = 0.d0
|
||||||
!$OMP PARALLEL DO DEFAULT(none) &
|
!$OMP PARALLEL DO DEFAULT(none) &
|
||||||
!$OMP PRIVATE(i,j,i1,j1,c_j1,c_i1) &
|
!$OMP PRIVATE(i,j,i1,j1,c_j1,c_i1) &
|
||||||
!$OMP SHARED(mo_tot_num,ao_num,ao_ortho_canonical_coef, &
|
!$OMP SHARED(mo_tot_num,ao_num,ao_ortho_canonical_coef, &
|
||||||
!$OMP ao_ortho_canonical_nucl_elec_integral, ao_nucl_elec_integral)
|
!$OMP ao_ortho_canonical_nucl_elec_integrals, ao_nucl_elec_integrals)
|
||||||
do i = 1, mo_tot_num
|
do i = 1, mo_tot_num
|
||||||
do j = 1, mo_tot_num
|
do j = 1, mo_tot_num
|
||||||
do i1 = 1,ao_num
|
do i1 = 1,ao_num
|
||||||
c_i1 = ao_ortho_canonical_coef(i1,i)
|
c_i1 = ao_ortho_canonical_coef(i1,i)
|
||||||
do j1 = 1,ao_num
|
do j1 = 1,ao_num
|
||||||
c_j1 = c_i1*ao_ortho_canonical_coef(j1,j)
|
c_j1 = c_i1*ao_ortho_canonical_coef(j1,j)
|
||||||
ao_ortho_canonical_nucl_elec_integral(j,i) = ao_ortho_canonical_nucl_elec_integral(j,i) + &
|
ao_ortho_canonical_nucl_elec_integrals(j,i) = ao_ortho_canonical_nucl_elec_integrals(j,i) + &
|
||||||
c_j1 * ao_nucl_elec_integral(j1,i1)
|
c_j1 * ao_nucl_elec_integrals(j1,i1)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
BEGIN_PROVIDER [double precision, ao_ortho_lowdin_nucl_elec_integral, (mo_tot_num,mo_tot_num)]
|
BEGIN_PROVIDER [double precision, ao_ortho_lowdin_nucl_elec_integrals, (mo_tot_num,mo_tot_num)]
|
||||||
implicit none
|
implicit none
|
||||||
integer :: i1,j1,i,j
|
integer :: i1,j1,i,j
|
||||||
double precision :: c_i1,c_j1
|
double precision :: c_i1,c_j1
|
||||||
|
|
||||||
ao_ortho_lowdin_nucl_elec_integral = 0.d0
|
ao_ortho_lowdin_nucl_elec_integrals = 0.d0
|
||||||
!$OMP PARALLEL DO DEFAULT(none) &
|
!$OMP PARALLEL DO DEFAULT(none) &
|
||||||
!$OMP PRIVATE(i,j,i1,j1,c_j1,c_i1) &
|
!$OMP PRIVATE(i,j,i1,j1,c_j1,c_i1) &
|
||||||
!$OMP SHARED(mo_tot_num,ao_num,ao_ortho_lowdin_coef, &
|
!$OMP SHARED(mo_tot_num,ao_num,ao_ortho_lowdin_coef, &
|
||||||
!$OMP ao_ortho_lowdin_nucl_elec_integral, ao_nucl_elec_integral)
|
!$OMP ao_ortho_lowdin_nucl_elec_integrals, ao_nucl_elec_integrals)
|
||||||
do i = 1, mo_tot_num
|
do i = 1, mo_tot_num
|
||||||
do j = 1, mo_tot_num
|
do j = 1, mo_tot_num
|
||||||
do i1 = 1,ao_num
|
do i1 = 1,ao_num
|
||||||
c_i1 = ao_ortho_lowdin_coef(i1,i)
|
c_i1 = ao_ortho_lowdin_coef(i1,i)
|
||||||
do j1 = 1,ao_num
|
do j1 = 1,ao_num
|
||||||
c_j1 = c_i1*ao_ortho_lowdin_coef(j1,j)
|
c_j1 = c_i1*ao_ortho_lowdin_coef(j1,j)
|
||||||
ao_ortho_lowdin_nucl_elec_integral(j,i) = ao_ortho_lowdin_nucl_elec_integral(j,i) + &
|
ao_ortho_lowdin_nucl_elec_integrals(j,i) = ao_ortho_lowdin_nucl_elec_integrals(j,i) + &
|
||||||
c_j1 * ao_nucl_elec_integral(j1,i1)
|
c_j1 * ao_nucl_elec_integrals(j1,i1)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
1
src/mo_one_e_integrals/.gitignore
vendored
1
src/mo_one_e_integrals/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
../../data/module_gitignore
|
|
@ -1,3 +0,0 @@
|
|||||||
ao_one_e_integrals
|
|
||||||
mo_basis
|
|
||||||
pseudo
|
|
@ -1,13 +0,0 @@
|
|||||||
==================
|
|
||||||
mo_one_e_integrals
|
|
||||||
==================
|
|
||||||
|
|
||||||
All the one-electron integrals in |MO| basis are defined here.
|
|
||||||
|
|
||||||
The most important providers for usual quantum-chemistry calculation are:
|
|
||||||
|
|
||||||
* `mo_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`)
|
|
||||||
* `mo_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`)
|
|
||||||
* `mo_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`)
|
|
||||||
|
|
||||||
Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`.
|
|
@ -1,24 +0,0 @@
|
|||||||
BEGIN_PROVIDER [double precision, mo_kinetic_integral, (mo_tot_num,mo_tot_num)]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Kinetic energy integrals in the MO basis
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
if (read_mo_one_integrals_kinetic) then
|
|
||||||
call ezfio_get_mo_one_e_integrals_integral_kinetic(mo_kinetic_integral)
|
|
||||||
print *, 'MO kinetic integrals read from disk'
|
|
||||||
else
|
|
||||||
call ao_to_mo( &
|
|
||||||
ao_kinetic_integral, &
|
|
||||||
size(ao_kinetic_integral,1), &
|
|
||||||
mo_kinetic_integral, &
|
|
||||||
size(mo_kinetic_integral,1) &
|
|
||||||
)
|
|
||||||
endif
|
|
||||||
if (write_mo_one_integrals_kinetic) then
|
|
||||||
call ezfio_set_mo_one_e_integrals_integral_kinetic(mo_kinetic_integral)
|
|
||||||
print *, 'MO kinetic integrals written to disk'
|
|
||||||
endif
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
BEGIN_PROVIDER [ double precision, mo_mono_elec_integral,(mo_tot_num,mo_tot_num)]
|
|
||||||
implicit none
|
|
||||||
integer :: i,j,n,l
|
|
||||||
BEGIN_DOC
|
|
||||||
! array of the mono electronic hamiltonian on the MOs basis :
|
|
||||||
! sum of the kinetic and nuclear electronic potential (and pseudo potential if needed)
|
|
||||||
END_DOC
|
|
||||||
print*,'Providing the mono electronic integrals'
|
|
||||||
|
|
||||||
IF (read_mo_one_integrals) THEN
|
|
||||||
call ezfio_get_mo_one_e_integrals_integral_combined(mo_mono_elec_integral)
|
|
||||||
ELSE
|
|
||||||
mo_mono_elec_integral = mo_nucl_elec_integral + mo_kinetic_integral
|
|
||||||
|
|
||||||
IF (DO_PSEUDO) THEN
|
|
||||||
mo_mono_elec_integral += mo_pseudo_integral
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF (write_mo_one_integrals) THEN
|
|
||||||
call ezfio_set_mo_one_e_integrals_integral_combined(mo_mono_elec_integral)
|
|
||||||
print *, 'MO integrals combined written to disk'
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
@ -1,46 +0,0 @@
|
|||||||
BEGIN_PROVIDER [double precision, mo_nucl_elec_integral, (mo_tot_num,mo_tot_num)]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Nucleus-electron interaction on the |MO| basis
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
if (read_mo_one_integrals_nuclear) then
|
|
||||||
call ezfio_get_mo_one_e_integrals_integral_nuclear(mo_nucl_elec_integral)
|
|
||||||
print *, 'MO N-e integrals read from disk'
|
|
||||||
else
|
|
||||||
call ao_to_mo( &
|
|
||||||
ao_nucl_elec_integral, &
|
|
||||||
size(ao_nucl_elec_integral,1), &
|
|
||||||
mo_nucl_elec_integral, &
|
|
||||||
size(mo_nucl_elec_integral,1) &
|
|
||||||
)
|
|
||||||
endif
|
|
||||||
if (write_mo_one_integrals_nuclear) then
|
|
||||||
call ezfio_set_mo_one_e_integrals_integral_nuclear(mo_nucl_elec_integral)
|
|
||||||
print *, 'MO N-e integrals written to disk'
|
|
||||||
endif
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, mo_nucl_elec_integral_per_atom, (mo_tot_num,mo_tot_num,nucl_num)]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! mo_nucl_elec_integral_per_atom(i,j,k) =
|
|
||||||
! $\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle$.
|
|
||||||
! where R_k is the coordinate of the k-th nucleus.
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
integer :: k
|
|
||||||
mo_nucl_elec_integral_per_atom = 0.d0
|
|
||||||
do k = 1, nucl_num
|
|
||||||
call ao_to_mo( &
|
|
||||||
ao_nucl_elec_integral_per_atom(1,1,k), &
|
|
||||||
size(ao_nucl_elec_integral_per_atom,1), &
|
|
||||||
mo_nucl_elec_integral_per_atom(1,1,k), &
|
|
||||||
size(mo_nucl_elec_integral_per_atom,1) &
|
|
||||||
)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
BEGIN_PROVIDER [double precision, mo_pseudo_integral, (mo_tot_num,mo_tot_num)]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! interaction nuclear electron on the MO basis
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
if (read_mo_one_integrals_pseudo) then
|
|
||||||
call ezfio_get_mo_one_e_integrals_integral_pseudo(mo_pseudo_integral)
|
|
||||||
print *, 'MO pseudopotential integrals read from disk'
|
|
||||||
else if (do_pseudo) then
|
|
||||||
call ao_to_mo( &
|
|
||||||
ao_pseudo_integral, &
|
|
||||||
size(ao_pseudo_integral,1), &
|
|
||||||
mo_pseudo_integral, &
|
|
||||||
size(mo_pseudo_integral,1) &
|
|
||||||
)
|
|
||||||
else
|
|
||||||
mo_pseudo_integral = 0.d0
|
|
||||||
endif
|
|
||||||
|
|
||||||
if (write_mo_one_integrals_pseudo) then
|
|
||||||
call ezfio_set_mo_one_e_integrals_integral_pseudo(mo_pseudo_integral)
|
|
||||||
print *, 'MO pseudopotential integrals written to disk'
|
|
||||||
endif
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
|
|
@ -1,23 +1,23 @@
|
|||||||
[integral_nuclear]
|
[mo_integrals_e_n]
|
||||||
type: double precision
|
type: double precision
|
||||||
doc: Nucleus-electron integrals in |MO| basis set
|
doc: Nucleus-electron integrals in |MO| basis set
|
||||||
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
|
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
|
|
||||||
[io_mo_one_integrals_nuclear]
|
[io_mo_integrals_e_n]
|
||||||
type: Disk_access
|
type: Disk_access
|
||||||
doc: Read/Write |MO| one-electron nuclear integrals from/to disk [ Write | Read | None ]
|
doc: Read/Write |MO| electron-nucleus attraction integrals from/to disk [ Write | Read | None ]
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: None
|
default: None
|
||||||
|
|
||||||
|
|
||||||
[integral_kinetic]
|
[mo_integrals_kinetic]
|
||||||
type: double precision
|
type: double precision
|
||||||
doc: Kinetic energy integrals in |MO| basis set
|
doc: Kinetic energy integrals in |MO| basis set
|
||||||
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
|
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
|
|
||||||
[io_mo_one_integrals_kinetic]
|
[io_mo_integrals_kinetic]
|
||||||
type: Disk_access
|
type: Disk_access
|
||||||
doc: Read/Write |MO| one-electron kinetic integrals from/to disk [ Write | Read | None ]
|
doc: Read/Write |MO| one-electron kinetic integrals from/to disk [ Write | Read | None ]
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
@ -25,39 +25,27 @@ default: None
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
[integral_pseudo]
|
[mo_integrals_pseudo]
|
||||||
type: double precision
|
type: double precision
|
||||||
doc: Pseudopotential integrals in |MO| basis set
|
doc: Pseudopotential integrals in |MO| basis set
|
||||||
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
|
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
|
|
||||||
[io_mo_one_integrals_pseudo]
|
[io_mo_integrals_pseudo]
|
||||||
type: Disk_access
|
type: Disk_access
|
||||||
doc: Read/Write |MO| one-electron pseudo integrals from/to disk [ Write | Read | None ]
|
doc: Read/Write |MO| pseudopotential integrals from/to disk [ Write | Read | None ]
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: None
|
default: None
|
||||||
|
|
||||||
[integral_overlap]
|
[mo_one_e_integrals]
|
||||||
type: double precision
|
type: double precision
|
||||||
doc: Overlap integrals in |MO| basis set
|
doc: One-electron integrals in |MO| basis set
|
||||||
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
|
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
|
|
||||||
[io_mo_one_integrals_overlap]
|
[io_mo_one_e_integrals]
|
||||||
type: Disk_access
|
|
||||||
doc: Read/Write |MO| one-electron overlap integrals from/to disk [ Write | Read | None ]
|
|
||||||
interface: ezfio,provider,ocaml
|
|
||||||
default: None
|
|
||||||
|
|
||||||
|
|
||||||
[integral_combined]
|
|
||||||
type: double precision
|
|
||||||
doc: Combined integrals in |MO| basis set
|
|
||||||
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
|
|
||||||
interface: ezfio
|
|
||||||
|
|
||||||
[disk_access_mo_one_integrals]
|
|
||||||
type: Disk_access
|
type: Disk_access
|
||||||
doc: Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ]
|
doc: Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ]
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: None
|
default: None
|
||||||
|
|
3
src/mo_one_e_ints/NEED
Normal file
3
src/mo_one_e_ints/NEED
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
ao_one_e_ints
|
||||||
|
mo_basis
|
||||||
|
pseudo
|
13
src/mo_one_e_ints/README.rst
Normal file
13
src/mo_one_e_ints/README.rst
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
==================
|
||||||
|
mo_one_e_integrals
|
||||||
|
==================
|
||||||
|
|
||||||
|
All the one-electron integrals in |MO| basis are defined here.
|
||||||
|
|
||||||
|
The most important providers for usual quantum-chemistry calculation are:
|
||||||
|
|
||||||
|
* `mo_kinetic_integrals` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`)
|
||||||
|
* `mo_nucl_elec_integrals` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`)
|
||||||
|
* `mo_mono_elec_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`)
|
||||||
|
|
||||||
|
Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`.
|
24
src/mo_one_e_ints/kin_mo_ints.irp.f
Normal file
24
src/mo_one_e_ints/kin_mo_ints.irp.f
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
BEGIN_PROVIDER [double precision, mo_kinetic_integrals, (mo_tot_num,mo_tot_num)]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Kinetic energy integrals in the MO basis
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
if (read_mo_integrals_kinetic) then
|
||||||
|
call ezfio_get_mo_one_e_ints_mo_integrals_kinetic(mo_kinetic_integrals)
|
||||||
|
print *, 'MO kinetic integrals read from disk'
|
||||||
|
else
|
||||||
|
call ao_to_mo( &
|
||||||
|
ao_kinetic_integrals, &
|
||||||
|
size(ao_kinetic_integrals,1), &
|
||||||
|
mo_kinetic_integrals, &
|
||||||
|
size(mo_kinetic_integrals,1) &
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
if (write_mo_integrals_kinetic) then
|
||||||
|
call ezfio_set_mo_one_e_ints_mo_integrals_kinetic(mo_kinetic_integrals)
|
||||||
|
print *, 'MO kinetic integrals written to disk'
|
||||||
|
endif
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
26
src/mo_one_e_ints/mo_one_e_ints.irp.f
Normal file
26
src/mo_one_e_ints/mo_one_e_ints.irp.f
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
BEGIN_PROVIDER [ double precision, mo_mono_elec_integrals,(mo_tot_num,mo_tot_num)]
|
||||||
|
implicit none
|
||||||
|
integer :: i,j,n,l
|
||||||
|
BEGIN_DOC
|
||||||
|
! array of the mono electronic hamiltonian on the MOs basis :
|
||||||
|
! sum of the kinetic and nuclear electronic potential (and pseudo potential if needed)
|
||||||
|
END_DOC
|
||||||
|
print*,'Providing the mono electronic integrals'
|
||||||
|
|
||||||
|
IF (read_mo_one_e_integrals) THEN
|
||||||
|
call ezfio_get_mo_one_e_ints_mo_one_e_integrals(mo_mono_elec_integrals)
|
||||||
|
ELSE
|
||||||
|
mo_mono_elec_integrals = mo_nucl_elec_integrals + mo_kinetic_integrals
|
||||||
|
|
||||||
|
IF (DO_PSEUDO) THEN
|
||||||
|
mo_mono_elec_integrals += mo_pseudo_integrals
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF (write_mo_one_e_integrals) THEN
|
||||||
|
call ezfio_set_mo_one_e_ints_mo_one_e_integrals(mo_mono_elec_integrals)
|
||||||
|
print *, 'MO one-e integrals written to disk'
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
END_PROVIDER
|
@ -1,16 +1,14 @@
|
|||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, mo_overlap,(mo_tot_num,mo_tot_num)]
|
BEGIN_PROVIDER [ double precision, mo_overlap,(mo_tot_num,mo_tot_num) ]
|
||||||
implicit none
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Provider to check that the MOs are indeed orthonormal.
|
||||||
|
END_DOC
|
||||||
integer :: i,j,n,l
|
integer :: i,j,n,l
|
||||||
double precision :: f
|
double precision :: f
|
||||||
integer :: lmax
|
integer :: lmax
|
||||||
|
|
||||||
|
|
||||||
if (read_mo_one_integrals_overlap) then
|
|
||||||
call ezfio_get_mo_one_e_integrals_integral_overlap(mo_kinetic_integral)
|
|
||||||
print *, 'MO kinetic overlap read from disk'
|
|
||||||
else
|
|
||||||
|
|
||||||
lmax = (ao_num/4) * 4
|
lmax = (ao_num/4) * 4
|
||||||
!$OMP PARALLEL DO SCHEDULE(STATIC) DEFAULT(NONE) &
|
!$OMP PARALLEL DO SCHEDULE(STATIC) DEFAULT(NONE) &
|
||||||
!$OMP PRIVATE(i,j,n,l) &
|
!$OMP PRIVATE(i,j,n,l) &
|
||||||
@ -36,12 +34,6 @@ BEGIN_PROVIDER [ double precision, mo_overlap,(mo_tot_num,mo_tot_num)]
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
!$OMP END PARALLEL DO
|
!$OMP END PARALLEL DO
|
||||||
endif
|
|
||||||
|
|
||||||
if (write_mo_one_integrals_overlap) then
|
|
||||||
call ezfio_set_mo_one_e_integrals_integral_overlap(mo_kinetic_integral)
|
|
||||||
print *, 'MO kinetic integrals written to disk'
|
|
||||||
endif
|
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
46
src/mo_one_e_ints/pot_mo_ints.irp.f
Normal file
46
src/mo_one_e_ints/pot_mo_ints.irp.f
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
BEGIN_PROVIDER [double precision, mo_nucl_elec_integrals, (mo_tot_num,mo_tot_num)]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Nucleus-electron interaction on the |MO| basis
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
if (read_mo_integrals_e_n) then
|
||||||
|
call ezfio_get_mo_one_e_ints_mo_integrals_e_n(mo_nucl_elec_integrals)
|
||||||
|
print *, 'MO N-e integrals read from disk'
|
||||||
|
else
|
||||||
|
call ao_to_mo( &
|
||||||
|
ao_nucl_elec_integrals, &
|
||||||
|
size(ao_nucl_elec_integrals,1), &
|
||||||
|
mo_nucl_elec_integrals, &
|
||||||
|
size(mo_nucl_elec_integrals,1) &
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
if (write_mo_integrals_e_n) then
|
||||||
|
call ezfio_set_mo_one_e_ints_mo_integrals_e_n(mo_nucl_elec_integrals)
|
||||||
|
print *, 'MO N-e integrals written to disk'
|
||||||
|
endif
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [double precision, mo_nucl_elec_integrals_per_atom, (mo_tot_num,mo_tot_num,nucl_num)]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! mo_nucl_elec_integrals_per_atom(i,j,k) =
|
||||||
|
! $\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle$.
|
||||||
|
! where R_k is the coordinate of the k-th nucleus.
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
integer :: k
|
||||||
|
mo_nucl_elec_integrals_per_atom = 0.d0
|
||||||
|
do k = 1, nucl_num
|
||||||
|
call ao_to_mo( &
|
||||||
|
ao_nucl_elec_integrals_per_atom(1,1,k), &
|
||||||
|
size(ao_nucl_elec_integrals_per_atom,1), &
|
||||||
|
mo_nucl_elec_integrals_per_atom(1,1,k), &
|
||||||
|
size(mo_nucl_elec_integrals_per_atom,1) &
|
||||||
|
)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
28
src/mo_one_e_ints/pot_mo_pseudo_ints.irp.f
Normal file
28
src/mo_one_e_ints/pot_mo_pseudo_ints.irp.f
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
BEGIN_PROVIDER [double precision, mo_pseudo_integrals, (mo_tot_num,mo_tot_num)]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Pseudopotential integrals in |MO| basis
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
if (read_mo_integrals_pseudo) then
|
||||||
|
call ezfio_get_mo_one_e_ints_mo_integrals_pseudo(mo_pseudo_integrals)
|
||||||
|
print *, 'MO pseudopotential integrals read from disk'
|
||||||
|
else if (do_pseudo) then
|
||||||
|
call ao_to_mo( &
|
||||||
|
ao_pseudo_integrals, &
|
||||||
|
size(ao_pseudo_integrals,1), &
|
||||||
|
mo_pseudo_integrals, &
|
||||||
|
size(mo_pseudo_integrals,1) &
|
||||||
|
)
|
||||||
|
else
|
||||||
|
mo_pseudo_integrals = 0.d0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (write_mo_integrals_pseudo) then
|
||||||
|
call ezfio_set_mo_one_e_ints_mo_integrals_pseudo(mo_pseudo_integrals)
|
||||||
|
print *, 'MO pseudopotential integrals written to disk'
|
||||||
|
endif
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
ao_two_e_erf_integrals
|
|
||||||
mo_two_e_integrals
|
|
||||||
mo_basis
|
|
3
src/mo_two_e_erf_ints/NEED
Normal file
3
src/mo_two_e_erf_ints/NEED
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
ao_two_e_erf_ints
|
||||||
|
mo_two_e_ints
|
||||||
|
mo_basis
|
@ -1,12 +1,12 @@
|
|||||||
======================
|
======================
|
||||||
mo_two_e_erf_integrals
|
mo_two_e_erf_ints
|
||||||
======================
|
======================
|
||||||
|
|
||||||
Here, all two-electron integrals (:math:`erf({\mu}_{erf} * r_{12})/r_{12}`) are computed.
|
Here, all two-electron integrals (:math:`erf({\mu}_{erf} * r_{12})/r_{12}`) are computed.
|
||||||
As they have 4 indices and many are zero, they are stored in a map, as defined
|
As they have 4 indices and many are zero, they are stored in a map, as defined
|
||||||
in :file:`Utils/map_module.f90`.
|
in :file:`Utils/map_module.f90`.
|
||||||
|
|
||||||
The range separation parameter :math:`{\mu}_{erf}` is the variable :option:`ao_two_e_erf_integrals mu_erf`.
|
The range separation parameter :math:`{\mu}_{erf}` is the variable :option:`ao_two_e_erf_ints mu_erf`.
|
||||||
|
|
||||||
To fetch an |MO| integral, use
|
To fetch an |MO| integral, use
|
||||||
`get_mo_bielec_integral_erf(i,j,k,l,mo_integrals_map_erf)`
|
`get_mo_bielec_integral_erf(i,j,k,l,mo_integrals_map_erf)`
|
@ -7,7 +7,7 @@ BEGIN_PROVIDER [double precision, core_energy_erf]
|
|||||||
core_energy_erf = 0.d0
|
core_energy_erf = 0.d0
|
||||||
do i = 1, n_core_orb
|
do i = 1, n_core_orb
|
||||||
j = list_core(i)
|
j = list_core(i)
|
||||||
core_energy_erf += 2.d0 * mo_mono_elec_integral(j,j) + mo_two_e_int_erf_jj(j,j)
|
core_energy_erf += 2.d0 * mo_mono_elec_integrals(j,j) + mo_two_e_int_erf_jj(j,j)
|
||||||
do k = i+1, n_core_orb
|
do k = i+1, n_core_orb
|
||||||
l = list_core(k)
|
l = list_core(k)
|
||||||
core_energy_erf += 2.d0 * (2.d0 * mo_two_e_int_erf_jj(j,l) - mo_two_e_int_erf_jj_exchange(j,l))
|
core_energy_erf += 2.d0 * (2.d0 * mo_two_e_int_erf_jj(j,l) - mo_two_e_int_erf_jj_exchange(j,l))
|
@ -1,7 +0,0 @@
|
|||||||
ao_one_e_integrals
|
|
||||||
mo_one_e_integrals
|
|
||||||
ao_two_e_integrals
|
|
||||||
pseudo
|
|
||||||
bitmask
|
|
||||||
zmq
|
|
||||||
mo_basis
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user