From 63650890e2e936934ba794b30961cef09d9792e3 Mon Sep 17 00:00:00 2001 From: Emmanuel Giner LCT Date: Fri, 22 Sep 2023 16:40:12 +0200 Subject: [PATCH 001/159] trying to fix bug --- src/tc_bi_ortho/psi_r_l_prov.irp.f | 6 ++++-- src/tc_bi_ortho/tc_h_eigvectors.irp.f | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/tc_bi_ortho/psi_r_l_prov.irp.f b/src/tc_bi_ortho/psi_r_l_prov.irp.f index b28c417f..1d233b0b 100644 --- a/src/tc_bi_ortho/psi_r_l_prov.irp.f +++ b/src/tc_bi_ortho/psi_r_l_prov.irp.f @@ -1,6 +1,7 @@ use bitmasks -BEGIN_PROVIDER [ double precision, psi_l_coef_bi_ortho, (psi_det_size,N_states) ] +!BEGIN_PROVIDER [ double precision, psi_l_coef_bi_ortho, (psi_det_size,N_states) ] +BEGIN_PROVIDER [ double precision, psi_l_coef_bi_ortho, (N_det,N_states) ] implicit none BEGIN_DOC ! The wave function coefficients. Initialized with Hartree-Fock if the |EZFIO| file @@ -68,7 +69,8 @@ BEGIN_PROVIDER [ double precision, psi_l_coef_bi_ortho, (psi_det_size,N_states) END_PROVIDER -BEGIN_PROVIDER [ double precision, psi_r_coef_bi_ortho, (psi_det_size,N_states) ] +!BEGIN_PROVIDER [ double precision, psi_r_coef_bi_ortho, (psi_det_size,N_states) ] +BEGIN_PROVIDER [ double precision, psi_r_coef_bi_ortho, (N_det,N_states) ] implicit none BEGIN_DOC ! The wave function coefficients. Initialized with Hartree-Fock if the |EZFIO| file diff --git a/src/tc_bi_ortho/tc_h_eigvectors.irp.f b/src/tc_bi_ortho/tc_h_eigvectors.irp.f index a9e22e03..a636e8d6 100644 --- a/src/tc_bi_ortho/tc_h_eigvectors.irp.f +++ b/src/tc_bi_ortho/tc_h_eigvectors.irp.f @@ -320,24 +320,38 @@ end enddo double precision, allocatable :: buffer(:,:) - allocate(buffer(N_det,N_states)) + allocate(buffer(psi_det_size,N_states)) + print*,'passed the allocate' +! print*,N_det,N_states +! print*,size(psi_l_coef_bi_ortho,1),size(psi_l_coef_bi_ortho,2) +! print*,size(leigvec_tc_bi_orth,1),size(leigvec_tc_bi_orth,2) +! print*,size(reigvec_tc_bi_orth,1),size(reigvec_tc_bi_orth,2) +! print*,size(psi_r_coef_bi_ortho,1),size(psi_r_coef_bi_ortho,2) + buffer = 0.d0 do k = 1, N_states do i = 1, N_det psi_l_coef_bi_ortho(i,k) = leigvec_tc_bi_orth(i,k) buffer(i,k) = leigvec_tc_bi_orth(i,k) enddo enddo + print*,'passed the first loop' TOUCH psi_l_coef_bi_ortho + print*,'passed the TOUCH psi_l_coef_bi_ortho' call ezfio_set_tc_bi_ortho_psi_l_coef_bi_ortho(buffer) + print*,'passed the ezfio_set_tc_bi_ortho_psi_l_coef_bi_ortho' do k = 1, N_states do i = 1, N_det psi_r_coef_bi_ortho(i,k) = reigvec_tc_bi_orth(i,k) buffer(i,k) = reigvec_tc_bi_orth(i,k) enddo enddo + print*,'passed the second loop' TOUCH psi_r_coef_bi_ortho + print*,'passed the TOUCH psi_r_coef_bi_ortho' call ezfio_set_tc_bi_ortho_psi_r_coef_bi_ortho(buffer) + print*,'passed the ezfio_set_tc_bi_ortho_psi_r_coef_bi_ortho' deallocate(buffer) + print*,'passed saving the wf' ! print*,'After diag' ! do i = 1, N_det! old version ! print*,'i',i,psi_l_coef_bi_ortho(i,1),psi_r_coef_bi_ortho(i,1) From eaab1b80648bd2b4ec38aa17722a751fccf42ce0 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Thu, 7 Mar 2024 07:34:59 +0100 Subject: [PATCH 002/159] few modif for HHG --- .../multi_s_dipole_moment.irp.f | 23 ++++++++++++++++ src/utils/constants.include.F | 27 +++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/src/mol_properties/multi_s_dipole_moment.irp.f b/src/mol_properties/multi_s_dipole_moment.irp.f index 913ae2f3..f21e08cd 100644 --- a/src/mol_properties/multi_s_dipole_moment.irp.f +++ b/src/mol_properties/multi_s_dipole_moment.irp.f @@ -91,3 +91,26 @@ BEGIN_PROVIDER [double precision, multi_s_dipole_moment, (N_states, N_states)] enddo END_PROVIDER + +! --- + + BEGIN_PROVIDER [double precision, multi_s_x_dipole_moment_eigenvec, (N_states, N_states)] +&BEGIN_PROVIDER [double precision, multi_s_y_dipole_moment_eigenvec, (N_states, N_states)] +&BEGIN_PROVIDER [double precision, multi_s_z_dipole_moment_eigenvec, (N_states, N_states)] +&BEGIN_PROVIDER [double precision, multi_s_x_dipole_moment_eigenval, (N_states)] +&BEGIN_PROVIDER [double precision, multi_s_y_dipole_moment_eigenval, (N_states)] +&BEGIN_PROVIDER [double precision, multi_s_z_dipole_moment_eigenval, (N_states)] + + implicit none + + PROVIDE multi_s_x_dipole_moment multi_s_y_dipole_moment multi_s_z_dipole_moment + + call lapack_diag(multi_s_x_dipole_moment_eigenval(1), multi_s_x_dipole_moment_eigenvec(1,1), multi_s_x_dipole_moment(1,1), N_states, N_states) + call lapack_diag(multi_s_y_dipole_moment_eigenval(1), multi_s_y_dipole_moment_eigenvec(1,1), multi_s_y_dipole_moment(1,1), N_states, N_states) + call lapack_diag(multi_s_z_dipole_moment_eigenval(1), multi_s_z_dipole_moment_eigenvec(1,1), multi_s_z_dipole_moment(1,1), N_states, N_states) + +END_PROVIDER + +! --- + + diff --git a/src/utils/constants.include.F b/src/utils/constants.include.F index 422eff95..7b01f888 100644 --- a/src/utils/constants.include.F +++ b/src/utils/constants.include.F @@ -18,3 +18,30 @@ double precision, parameter :: c_4_3 = 4.d0/3.d0 double precision, parameter :: c_1_3 = 1.d0/3.d0 double precision, parameter :: sq_op5 = dsqrt(0.5d0) double precision, parameter :: dlog_2pi = dlog(2.d0*dacos(-1.d0)) + +! physical constants and units conversion factors +double precision, parameter :: k_boltzman_si = 1.38066d-23 ! K k^-1 +double precision, parameter :: k_boltzman_au = 3.1667d-6 ! Hartree k^-1 +double precision, parameter :: k_boltzman_m1_au = 315795.26d0 ! Hartree^-1 k +double precision, parameter :: bohr_radius_si = 0.529177d-10 ! m +double precision, parameter :: bohr_radius_cm = 0.529177d-8 ! cm +double precision, parameter :: bohr_radius_angs = 0.529177d0 ! Angstrom +double precision, parameter :: electronmass_si = 9.10953d-31 ! Kg +double precision, parameter :: electronmass_uma = 5.4858d-4 ! uma +double precision, parameter :: electronvolt_si = 1.6021892d-19 ! J +double precision, parameter :: uma_si = 1.66057d-27 ! Kg +double precision, parameter :: debye_si = 3.33564d-30 ! coulomb meter +double precision, parameter :: debye_au = 0.393427228d0 ! e * Bohr +double precision, parameter :: angstrom_to_au = 1.889727d0 ! au +double precision, parameter :: au_to_ohmcmm1 = 46000.0d0 ! (ohm cm)^-1 +double precision, parameter :: au_to_kb = 294210.0d0 ! kbar +double precision, parameter :: au_to_eV = 27.211652d0 +double precision, parameter :: uma_to_au = 1822.89d0 +double precision, parameter :: au_to_terahertz = 2.4189d-5 +double precision, parameter :: au_to_sec = 2.4189d-17 +double precision, parameter :: au_to_fsec = 2.4189d-2 +double precision, parameter :: Wcm2 = 3.5d16 +double precision, parameter :: amconv = 1.66042d-24/9.1095d-28*0.5d0 ! mass conversion: a.m.u to a.u. (ry) +double precision, parameter :: uakbar = 147105.d0 ! pressure conversion from ry/(a.u)^3 to k + + From 3f861a41b5438d1722fa003da233642c79d96a47 Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 8 Mar 2024 17:27:18 +0100 Subject: [PATCH 003/159] added the thresh_de_tc_angles keyword in minimize tc angles --- bin/zcat | 23 --------------------- plugins/local/tc_keywords/EZFIO.cfg | 5 +++++ plugins/local/tc_scf/routines_rotates.irp.f | 1 + scripts/PYSCF_EOMCC.py | 1 + 4 files changed, 7 insertions(+), 23 deletions(-) delete mode 100755 bin/zcat create mode 120000 scripts/PYSCF_EOMCC.py diff --git a/bin/zcat b/bin/zcat deleted file mode 100755 index 7ccecf07..00000000 --- a/bin/zcat +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# On Darwin: try gzcat if available, otherwise use Python - -if [[ $(uname -s) = Darwin ]] ; then - which gzcat &> /dev/null - if [[ $? -eq 0 ]] ; then - exec gzcat $@ - else - - exec python3 << EOF -import sys -import gzip -with gzip.open("$1", "rt") as f: - print(f.read()) -EOF - fi -else - SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - command=$(which -a zcat | grep -v "$SCRIPTPATH/" | head -1) - exec $command $@ -fi - diff --git a/plugins/local/tc_keywords/EZFIO.cfg b/plugins/local/tc_keywords/EZFIO.cfg index 93ff790f..68fe9c94 100644 --- a/plugins/local/tc_keywords/EZFIO.cfg +++ b/plugins/local/tc_keywords/EZFIO.cfg @@ -280,3 +280,8 @@ doc: approach used to evaluate TC integrals [ analytic | numeric | semi-analytic interface: ezfio,ocaml,provider default: semi-analytic +[thresh_de_tc_angles] +type: Threshold +doc: Thresholds on delta E for changing angles between orbitals +interface: ezfio,provider,ocaml +default: 1.e-03 diff --git a/plugins/local/tc_scf/routines_rotates.irp.f b/plugins/local/tc_scf/routines_rotates.irp.f index c42e846e..92abfa44 100644 --- a/plugins/local/tc_scf/routines_rotates.irp.f +++ b/plugins/local/tc_scf/routines_rotates.irp.f @@ -301,6 +301,7 @@ subroutine routine_save_rotated_mos(thr_deg, good_angles) ! check if TC energy has changed E_new = TC_HF_energy + E_thr = thresh_de_tc_angles if(dabs(E_new - E_old) .gt. E_thr) then mo_r_coef = mo_r_coef_old mo_l_coef = mo_l_coef_old diff --git a/scripts/PYSCF_EOMCC.py b/scripts/PYSCF_EOMCC.py new file mode 120000 index 00000000..8ad341da --- /dev/null +++ b/scripts/PYSCF_EOMCC.py @@ -0,0 +1 @@ +/home_lct/eginer/qp2/plugins/qp_plugins_lct/dev/fcidump_for_vbarb/PYSCF_EOMCC.py \ No newline at end of file From d405aea95785060f7550be7901c90d133b287a65 Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Mon, 11 Mar 2024 10:21:59 +0100 Subject: [PATCH 004/159] few mom opt --- .../local/bi_ort_ints/total_twoe_pot.irp.f | 99 +++++++++++++++---- .../local/non_h_ints_mu/total_tc_int.irp.f | 2 + src/tools/print_detweights.irp.f | 66 +++++++++++++ 3 files changed, 148 insertions(+), 19 deletions(-) create mode 100644 src/tools/print_detweights.irp.f diff --git a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f index 5e6a24e9..bf5cc36f 100644 --- a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f +++ b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f @@ -40,38 +40,95 @@ BEGIN_PROVIDER [double precision, mo_bi_ortho_tc_two_e_chemist, (mo_num, mo_num, END_DOC implicit none - integer :: i, j, k, l, m, n, p, q + integer :: i, j, k, l, m, n, p, q, s, r + double precision :: t1, t2 double precision, allocatable :: a1(:,:,:,:), a2(:,:,:,:) + double precision, allocatable :: a_jkp(:,:,:), a_kpq(:,:,:), a_pqr(:,:,:) + + print *, ' PROVIDING mo_bi_ortho_tc_two_e_chemist ...' + call wall_time(t1) + call print_memory_usage() PROVIDE mo_r_coef mo_l_coef + PROVIDe ao_two_e_tc_tot - allocate(a2(ao_num,ao_num,ao_num,mo_num)) + if(ao_to_mo_tc_n3) then - call dgemm( 'T', 'N', ao_num*ao_num*ao_num, mo_num, ao_num, 1.d0 & - , ao_two_e_tc_tot(1,1,1,1), ao_num, mo_l_coef(1,1), ao_num & - , 0.d0 , a2(1,1,1,1), ao_num*ao_num*ao_num) + print*, ' memory scale of TC ao -> mo: O(N3) ' - allocate(a1(ao_num,ao_num,mo_num,mo_num)) + allocate(a_jkp(ao_num,ao_num,mo_num)) + allocate(a_kpq(ao_num,mo_num,mo_num)) + allocate(a_pqr(mo_num,mo_num,mo_num)) - call dgemm( 'T', 'N', ao_num*ao_num*mo_num, mo_num, ao_num, 1.d0 & - , a2(1,1,1,1), ao_num, mo_r_coef(1,1), ao_num & - , 0.d0, a1(1,1,1,1), ao_num*ao_num*mo_num) + do s = 1, mo_num + mo_bi_ortho_tc_two_e_chemist(:,:,:,s) = 0.d0 - deallocate(a2) - allocate(a2(ao_num,mo_num,mo_num,mo_num)) + do l = 1, ao_num - call dgemm( 'T', 'N', ao_num*mo_num*mo_num, mo_num, ao_num, 1.d0 & - , a1(1,1,1,1), ao_num, mo_l_coef(1,1), ao_num & - , 0.d0, a2(1,1,1,1), ao_num*mo_num*mo_num) + call dgemm( 'T', 'N', ao_num*ao_num, mo_num, ao_num, 1.d0 & + , ao_two_e_tc_tot(1,1,1,l), ao_num, mo_l_coef(1,1), ao_num & + , 0.d0, a_jkp(1,1,1), ao_num*ao_num) + + call dgemm( 'T', 'N', ao_num*mo_num, mo_num, ao_num, 1.d0 & + , a_jkp(1,1,1), ao_num, mo_r_coef(1,1), ao_num & + , 0.d0, a_kpq(1,1,1), ao_num*mo_num) + + call dgemm( 'T', 'N', mo_num*mo_num, mo_num, ao_num, 1.d0 & + , a_kpq(1,1,1), ao_num, mo_l_coef(1,1), ao_num & + , 0.d0, a_pqr(1,1,1), mo_num*mo_num) - deallocate(a1) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, q, r) & + !$OMP SHARED(s, l, mo_num, mo_bi_ortho_tc_two_e_chemist, mo_r_coef, a_pqr) + !$OMP DO COLLAPSE(2) + do p = 1, mo_num + do q = 1, mo_num + do r = 1, mo_num + mo_bi_ortho_tc_two_e_chemist(p,q,r,s) = mo_bi_ortho_tc_two_e_chemist(p,q,r,s) + mo_r_coef(l,s) * a_pqr(p,q,r) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL - call dgemm( 'T', 'N', mo_num*mo_num*mo_num, mo_num, ao_num, 1.d0 & - , a2(1,1,1,1), ao_num, mo_r_coef(1,1), ao_num & - , 0.d0, mo_bi_ortho_tc_two_e_chemist(1,1,1,1), mo_num*mo_num*mo_num) + enddo ! l + enddo ! s - deallocate(a2) + deallocate(a_jkp, a_kpq, a_pqr) + else + + print*, ' memory scale of TC ao -> mo: O(N4) ' + + allocate(a2(ao_num,ao_num,ao_num,mo_num)) + + call dgemm( 'T', 'N', ao_num*ao_num*ao_num, mo_num, ao_num, 1.d0 & + , ao_two_e_tc_tot(1,1,1,1), ao_num, mo_l_coef(1,1), ao_num & + , 0.d0, a2(1,1,1,1), ao_num*ao_num*ao_num) + + allocate(a1(ao_num,ao_num,mo_num,mo_num)) + + call dgemm( 'T', 'N', ao_num*ao_num*mo_num, mo_num, ao_num, 1.d0 & + , a2(1,1,1,1), ao_num, mo_r_coef(1,1), ao_num & + , 0.d0, a1(1,1,1,1), ao_num*ao_num*mo_num) + + deallocate(a2) + allocate(a2(ao_num,mo_num,mo_num,mo_num)) + + call dgemm( 'T', 'N', ao_num*mo_num*mo_num, mo_num, ao_num, 1.d0 & + , a1(1,1,1,1), ao_num, mo_l_coef(1,1), ao_num & + , 0.d0, a2(1,1,1,1), ao_num*mo_num*mo_num) + + deallocate(a1) + + call dgemm( 'T', 'N', mo_num*mo_num*mo_num, mo_num, ao_num, 1.d0 & + , a2(1,1,1,1), ao_num, mo_r_coef(1,1), ao_num & + , 0.d0, mo_bi_ortho_tc_two_e_chemist(1,1,1,1), mo_num*mo_num*mo_num) + + deallocate(a2) + + endif !allocate(a1(mo_num,ao_num,ao_num,ao_num)) !a1 = 0.d0 @@ -135,6 +192,10 @@ BEGIN_PROVIDER [double precision, mo_bi_ortho_tc_two_e_chemist, (mo_num, mo_num, !enddo !deallocate(a1) + call wall_time(t2) + print *, ' WALL TIME for PROVIDING mo_bi_ortho_tc_two_e_chemist (min)', (t2-t1)/60.d0 + call print_memory_usage() + END_PROVIDER ! --- diff --git a/plugins/local/non_h_ints_mu/total_tc_int.irp.f b/plugins/local/non_h_ints_mu/total_tc_int.irp.f index 9d3cf565..ba078d9b 100644 --- a/plugins/local/non_h_ints_mu/total_tc_int.irp.f +++ b/plugins/local/non_h_ints_mu/total_tc_int.irp.f @@ -201,6 +201,8 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n !$OMP END DO !$OMP END PARALLEL + call clear_ao_map() + if(tc_integ_type .eq. "numeric") then FREE int2_grad1_u12_ao_num int2_grad1_u12_square_ao_num endif diff --git a/src/tools/print_detweights.irp.f b/src/tools/print_detweights.irp.f new file mode 100644 index 00000000..d5b0f2c9 --- /dev/null +++ b/src/tools/print_detweights.irp.f @@ -0,0 +1,66 @@ +program print_detweights + + implicit none + + read_wf = .True. + touch read_wf + + call main() + +end + +! --- + +subroutine main() + + implicit none + integer :: i + integer :: degree + integer :: ios + integer, allocatable :: deg(:), ii(:), deg_sorted(:) + double precision, allocatable :: c(:) + + PROVIDE N_int + PROVIDE N_det + PROVIDE psi_det + PROVIDe psi_coef + + allocate(deg(N_det), ii(N_det), deg_sorted(N_det), c(N_det)) + + do i = 1, N_det + + call debug_det(psi_det(1,1,i), N_int) + call get_excitation_degree(psi_det(1,1,i), psi_det(1,1,1), degree, N_int) + + ii (i) = i + deg(i) = degree + c (i) = dabs(psi_coef(i,1)) + enddo + + call dsort(c, ii, N_det) + + do i = 1, N_det + deg_sorted(i) = deg(ii(i)) + enddo + + print *, ' saving psi' + + ! Writing output in binary format + open(unit=10, file="coef.bin", status="replace", action="write", iostat=ios, form="unformatted") + + if(ios /= 0) then + print *, ' Error opening file!' + stop + endif + + write(10) N_det + write(10) deg_sorted + write(10) c + + close(10) + + deallocate(deg, ii, deg_sorted, c) + +end + + From 1dbde5643920054cc16f148c50d84fed01a88b13 Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Wed, 13 Mar 2024 07:04:54 +0100 Subject: [PATCH 005/159] O(N4) -> O(N3) transformations --- .../local/bi_ort_ints/total_twoe_pot.irp.f | 19 ++++++++++++++++--- plugins/local/tc_keywords/EZFIO.cfg | 7 +++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f index bf5cc36f..79bfd336 100644 --- a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f +++ b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f @@ -41,7 +41,7 @@ BEGIN_PROVIDER [double precision, mo_bi_ortho_tc_two_e_chemist, (mo_num, mo_num, implicit none integer :: i, j, k, l, m, n, p, q, s, r - double precision :: t1, t2 + double precision :: t1, t2, tt1, tt2 double precision, allocatable :: a1(:,:,:,:), a2(:,:,:,:) double precision, allocatable :: a_jkp(:,:,:), a_kpq(:,:,:), a_pqr(:,:,:) @@ -60,9 +60,11 @@ BEGIN_PROVIDER [double precision, mo_bi_ortho_tc_two_e_chemist, (mo_num, mo_num, allocate(a_kpq(ao_num,mo_num,mo_num)) allocate(a_pqr(mo_num,mo_num,mo_num)) - do s = 1, mo_num - mo_bi_ortho_tc_two_e_chemist(:,:,:,s) = 0.d0 + call wall_time(tt1) + do s = 1, mo_num + + mo_bi_ortho_tc_two_e_chemist(:,:,:,s) = 0.d0 do l = 1, ao_num call dgemm( 'T', 'N', ao_num*ao_num, mo_num, ao_num, 1.d0 & @@ -93,6 +95,17 @@ BEGIN_PROVIDER [double precision, mo_bi_ortho_tc_two_e_chemist, (mo_num, mo_num, !$OMP END PARALLEL enddo ! l + + if(s == 2) then + call wall_time(tt2) + print*, ' 1 / mo_num done in (min)', (tt2-tt1)/60.d0 + print*, ' estimated time required (min)', dble(mo_num-1)*(tt2-tt1)/60.d0 + elseif(s == 11) then + call wall_time(tt2) + print*, ' 10 / mo_num done in (min)', (tt2-tt1)/60.d0 + print*, ' estimated time required (min)', dble(mo_num-10)*(tt2-tt1)/600.d0 + endif + enddo ! s deallocate(a_jkp, a_kpq, a_pqr) diff --git a/plugins/local/tc_keywords/EZFIO.cfg b/plugins/local/tc_keywords/EZFIO.cfg index 93ff790f..a8491660 100644 --- a/plugins/local/tc_keywords/EZFIO.cfg +++ b/plugins/local/tc_keywords/EZFIO.cfg @@ -280,3 +280,10 @@ doc: approach used to evaluate TC integrals [ analytic | numeric | semi-analytic interface: ezfio,ocaml,provider default: semi-analytic +[ao_to_mo_tc_n3] +type: logical +doc: If |true|, memory scale of TC ao -> mo: O(N3) +interface: ezfio,provider,ocaml +default: False + + From 83ed57312d9bc86dc2ec4cbc486491ded16d7053 Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Tue, 19 Mar 2024 17:23:41 +0100 Subject: [PATCH 006/159] few modif in ao tc integ --- .../local/bi_ort_ints/total_twoe_pot.irp.f | 25 +++++++++++++++++-- .../local/non_h_ints_mu/tc_integ_num.irp.f | 2 +- .../local/non_h_ints_mu/total_tc_int.irp.f | 3 ++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f index 79bfd336..1e558038 100644 --- a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f +++ b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f @@ -50,7 +50,7 @@ BEGIN_PROVIDER [double precision, mo_bi_ortho_tc_two_e_chemist, (mo_num, mo_num, call print_memory_usage() PROVIDE mo_r_coef mo_l_coef - PROVIDe ao_two_e_tc_tot + PROVIDE ao_two_e_tc_tot if(ao_to_mo_tc_n3) then @@ -103,9 +103,30 @@ BEGIN_PROVIDER [double precision, mo_bi_ortho_tc_two_e_chemist, (mo_num, mo_num, elseif(s == 11) then call wall_time(tt2) print*, ' 10 / mo_num done in (min)', (tt2-tt1)/60.d0 - print*, ' estimated time required (min)', dble(mo_num-10)*(tt2-tt1)/600.d0 + print*, ' estimated time required (min)', dble(mo_num-10)*(tt2-tt1)/(60.d0*10.d0) + elseif(s == 26) then + call wall_time(tt2) + print*, ' 25 / mo_num done in (min)', (tt2-tt1)/60.d0 + print*, ' estimated time required (min)', dble(mo_num-25)*(tt2-tt1)/(60.d0*25.d0) + elseif(s == 51) then + call wall_time(tt2) + print*, ' 50 / mo_num done in (min)', (tt2-tt1)/60.d0 + print*, ' estimated time required (min)', dble(mo_num-50)*(tt2-tt1)/(60.d0*50.d0) + elseif(s == 101) then + call wall_time(tt2) + print*, ' 100 / mo_num done in (min)', (tt2-tt1)/60.d0 + print*, ' estimated time required (min)', dble(mo_num-100)*(tt2-tt1)/(60.d0*100.d0) + elseif(s == 201) then + call wall_time(tt2) + print*, ' 200 / mo_num done in (min)', (tt2-tt1)/60.d0 + print*, ' estimated time required (min)', dble(mo_num-200)*(tt2-tt1)/(60.d0*200.d0) + elseif(s == 501) then + call wall_time(tt2) + print*, ' 500 / mo_num done in (min)', (tt2-tt1)/60.d0 + print*, ' estimated time required (min)', dble(mo_num-500)*(tt2-tt1)/(60.d0*500.d0) endif + enddo ! s deallocate(a_jkp, a_kpq, a_pqr) diff --git a/plugins/local/non_h_ints_mu/tc_integ_num.irp.f b/plugins/local/non_h_ints_mu/tc_integ_num.irp.f index e5d75c3d..6d446037 100644 --- a/plugins/local/non_h_ints_mu/tc_integ_num.irp.f +++ b/plugins/local/non_h_ints_mu/tc_integ_num.irp.f @@ -131,7 +131,7 @@ deallocate(tmp) call wall_time(time1) - print*, ' wall time for int2_grad1_u12_ao_num & int2_grad1_u12_square_ao_num =', time1-time0 + print*, ' wall time for int2_grad1_u12_ao_num & int2_grad1_u12_square_ao_num = (min)', (time1-time0) / 60.d0 call print_memory_usage() END_PROVIDER diff --git a/plugins/local/non_h_ints_mu/total_tc_int.irp.f b/plugins/local/non_h_ints_mu/total_tc_int.irp.f index ba078d9b..c7230dc3 100644 --- a/plugins/local/non_h_ints_mu/total_tc_int.irp.f +++ b/plugins/local/non_h_ints_mu/total_tc_int.irp.f @@ -201,7 +201,8 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n !$OMP END DO !$OMP END PARALLEL - call clear_ao_map() + !call clear_ao_map() + FREE ao_integrals_map if(tc_integ_type .eq. "numeric") then FREE int2_grad1_u12_ao_num int2_grad1_u12_square_ao_num From d872d60e70f8eedb3913f5566d4f35d198d4aad5 Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Sun, 7 Apr 2024 00:29:40 +0200 Subject: [PATCH 007/159] saving olympe2 modif --- plugins/local/bi_ortho_mos/overlap.irp.f | 8 +- .../lapack_diag_non_hermit.irp.f | 1 + plugins/local/tc_scf/minimize_tc_angles.irp.f | 2 +- plugins/local/tc_scf/routines_rotates.irp.f | 79 ++++++++++--------- src/tools/print_detweights.irp.f | 35 +++++++- src/utils/block_diag_degen.irp.f | 2 +- 6 files changed, 81 insertions(+), 46 deletions(-) diff --git a/plugins/local/bi_ortho_mos/overlap.irp.f b/plugins/local/bi_ortho_mos/overlap.irp.f index ff5d5c84..7f07929f 100644 --- a/plugins/local/bi_ortho_mos/overlap.irp.f +++ b/plugins/local/bi_ortho_mos/overlap.irp.f @@ -56,10 +56,10 @@ print*,'Average trace of overlap_bi_ortho is different from 1 by ', dabs(accu_d-1.d0) print*,'And bi orthogonality is off by an average of ',accu_nd print*,'****************' - print*,'Overlap matrix betwee mo_l_coef and mo_r_coef ' - do i = 1, mo_num - write(*,'(100(F16.10,X))')overlap_bi_ortho(i,:) - enddo + !print*,'Overlap matrix betwee mo_l_coef and mo_r_coef ' + !do i = 1, mo_num + ! write(*,'(100(F16.10,X))')overlap_bi_ortho(i,:) + !enddo endif print*,'Average trace of overlap_bi_ortho (should be 1.)' print*,'accu_d = ',accu_d diff --git a/plugins/local/non_hermit_dav/lapack_diag_non_hermit.irp.f b/plugins/local/non_hermit_dav/lapack_diag_non_hermit.irp.f index cb38347e..4d4bc047 100644 --- a/plugins/local/non_hermit_dav/lapack_diag_non_hermit.irp.f +++ b/plugins/local/non_hermit_dav/lapack_diag_non_hermit.irp.f @@ -2144,6 +2144,7 @@ subroutine impose_biorthog_degen_eigvec(n, deg_num, e0, L0, R0) enddo !print*,' accu_nd after = ', accu_nd if(accu_nd .gt. 1d-12) then + print*, ' accu_nd =', accu_nd print*, ' your strategy for degenerates orbitals failed !' print*, m, 'deg on', i stop diff --git a/plugins/local/tc_scf/minimize_tc_angles.irp.f b/plugins/local/tc_scf/minimize_tc_angles.irp.f index c7752930..e5f6cf87 100644 --- a/plugins/local/tc_scf/minimize_tc_angles.irp.f +++ b/plugins/local/tc_scf/minimize_tc_angles.irp.f @@ -20,7 +20,7 @@ program minimize_tc_angles ! TODO ! check if rotations of orbitals affect the TC energy ! and refuse the step - call minimize_tc_orb_angles + call minimize_tc_orb_angles() end diff --git a/plugins/local/tc_scf/routines_rotates.irp.f b/plugins/local/tc_scf/routines_rotates.irp.f index c42e846e..2c5510f2 100644 --- a/plugins/local/tc_scf/routines_rotates.irp.f +++ b/plugins/local/tc_scf/routines_rotates.irp.f @@ -40,9 +40,6 @@ subroutine LTxSxR(n, m, L, S, R, C) end subroutine LTxR -! --- - - ! --- subroutine minimize_tc_orb_angles() @@ -103,7 +100,10 @@ subroutine routine_save_rotated_mos(thr_deg, good_angles) double precision, allocatable :: stmp(:,:), T(:,:), Snew(:,:), smat2(:,:) double precision, allocatable :: mo_l_coef_tmp(:,:), mo_r_coef_tmp(:,:), mo_l_coef_new(:,:) - E_thr = 1d-04 + PROVIDE TC_HF_energy + PROVIDE mo_r_coef mo_l_coef + + E_thr = 1d-07 E_old = TC_HF_energy allocate(mo_l_coef_old(ao_num,mo_num), mo_r_coef_old(ao_num,mo_num)) mo_r_coef_old = mo_r_coef @@ -111,7 +111,7 @@ subroutine routine_save_rotated_mos(thr_deg, good_angles) good_angles = .False. - allocate(mo_l_coef_good(ao_num, mo_num), mo_r_coef_good(ao_num,mo_num)) + allocate(mo_l_coef_good(ao_num,mo_num), mo_r_coef_good(ao_num,mo_num)) print *, ' ***************************************' print *, ' ***************************************' @@ -123,7 +123,7 @@ subroutine routine_save_rotated_mos(thr_deg, good_angles) mo_r_coef_good = mo_r_coef mo_l_coef_good = mo_l_coef - allocate(mo_r_coef_new(ao_num, mo_num)) + allocate(mo_r_coef_new(ao_num,mo_num)) mo_r_coef_new = mo_r_coef do i = 1, mo_num norm = 1.d0/dsqrt(overlap_mo_r(i,i)) @@ -141,10 +141,11 @@ subroutine routine_save_rotated_mos(thr_deg, good_angles) call build_s_matrix(ao_num, mo_num, mo_r_coef_new, mo_r_coef_new, ao_overlap, s_mat) ! call give_degen(fock_diag,mo_num,thr_deg,list_degen,n_degen_list) if(n_core_orb.ne.0)then - call give_degen_full_listcore(fock_diag, mo_num, list_core, n_core_orb, thr_deg, list_degen, n_degen_list) + call give_degen_full_listcore(fock_diag, mo_num, list_core, n_core_orb, thr_deg, list_degen, n_degen_list) else - call give_degen_full_list(fock_diag, mo_num, thr_deg, list_degen, n_degen_list) + call give_degen_full_list(fock_diag, mo_num, thr_deg, list_degen, n_degen_list) endif + print *, ' fock_matrix_mo' do i = 1, mo_num print *, i, fock_diag(i), angle_left_right(i) @@ -156,50 +157,52 @@ subroutine routine_save_rotated_mos(thr_deg, good_angles) ! n_degen = ilast - ifirst +1 n_degen = list_degen(i,0) - if(n_degen .ge. 1000)n_degen = 1 ! convention for core orbitals + if(n_degen .ge. 1000) n_degen = 1 ! convention for core orbitals if(n_degen .eq. 1) cycle + print*, ' working on orbital', i + print*, ' multiplicity =', n_degen allocate(stmp(n_degen,n_degen), smat2(n_degen,n_degen)) allocate(mo_r_coef_tmp(ao_num,n_degen), mo_l_coef_tmp(ao_num,n_degen), mo_l_coef_new(ao_num,n_degen)) allocate(T(n_degen,n_degen), Snew(n_degen,n_degen)) print*,'Right orbitals before' - do j = 1, n_degen - write(*,'(100(F16.10,X))') mo_r_coef_new(1:ao_num,list_degen(i,j)) - enddo + do j = 1, n_degen + write(*,'(1000(F16.10,X))') mo_r_coef_new(1:ao_num,list_degen(i,j)) + enddo print*,'Left orbitals before' - do j = 1, n_degen - write(*,'(100(F16.10,X))')mo_l_coef(1:ao_num,list_degen(i,j)) - enddo + do j = 1, n_degen + write(*,'(1000(F16.10,X))') mo_l_coef(1:ao_num,list_degen(i,j)) + enddo if(angle_left_right(list_degen(i,1)).gt.80.d0.and.n_degen==2)then - integer :: i_list, j_list - i_list = list_degen(i,1) - j_list = list_degen(i,2) - print*,'Huge angle !!! == ',angle_left_right(list_degen(i,1)),angle_left_right(list_degen(i,2)) - print*,'i_list = ',i_list - print*,'i_list = ',j_list - print*,'Swapping left/right orbitals' - call print_strong_overlap(i_list, j_list) - mo_r_coef_tmp(1:ao_num,1) = mo_r_coef_new(1:ao_num,i_list) - mo_r_coef_tmp(1:ao_num,2) = mo_l_coef(1:ao_num,i_list) - mo_l_coef_tmp(1:ao_num,1) = mo_l_coef(1:ao_num,j_list) - mo_l_coef_tmp(1:ao_num,2) = mo_r_coef_new(1:ao_num,j_list) + integer :: i_list, j_list + i_list = list_degen(i,1) + j_list = list_degen(i,2) + print*,'Huge angle !!! == ',angle_left_right(list_degen(i,1)),angle_left_right(list_degen(i,2)) + print*,'i_list = ',i_list + print*,'i_list = ',j_list + print*,'Swapping left/right orbitals' + call print_strong_overlap(i_list, j_list) + mo_r_coef_tmp(1:ao_num,1) = mo_r_coef_new(1:ao_num,i_list) + mo_r_coef_tmp(1:ao_num,2) = mo_l_coef(1:ao_num,i_list) + mo_l_coef_tmp(1:ao_num,1) = mo_l_coef(1:ao_num,j_list) + mo_l_coef_tmp(1:ao_num,2) = mo_r_coef_new(1:ao_num,j_list) else - do j = 1, n_degen - print*,'i_list = ',list_degen(i,j) - mo_r_coef_tmp(1:ao_num,j) = mo_r_coef_new(1:ao_num,list_degen(i,j)) - mo_l_coef_tmp(1:ao_num,j) = mo_l_coef(1:ao_num,list_degen(i,j)) - enddo + do j = 1, n_degen + print*,'i_list = ',list_degen(i,j) + mo_r_coef_tmp(1:ao_num,j) = mo_r_coef_new(1:ao_num,list_degen(i,j)) + mo_l_coef_tmp(1:ao_num,j) = mo_l_coef(1:ao_num,list_degen(i,j)) + enddo endif print*,'Right orbitals ' - do j = 1, n_degen - write(*,'(100(F16.10,X))')mo_r_coef_tmp(1:ao_num,j) - enddo + do j = 1, n_degen + write(*,'(1000(F16.10,X))') mo_r_coef_tmp(1:ao_num,j) + enddo print*,'Left orbitals ' - do j = 1, n_degen - write(*,'(100(F16.10,X))')mo_l_coef_tmp(1:ao_num,j) - enddo + do j = 1, n_degen + write(*,'(100(F16.10,X))') mo_l_coef_tmp(1:ao_num,j) + enddo ! Orthogonalization of right functions print *, ' Orthogonalization of RIGHT functions' print *, ' ------------------------------------' diff --git a/src/tools/print_detweights.irp.f b/src/tools/print_detweights.irp.f index d5b0f2c9..5e5f2bb1 100644 --- a/src/tools/print_detweights.irp.f +++ b/src/tools/print_detweights.irp.f @@ -5,7 +5,8 @@ program print_detweights read_wf = .True. touch read_wf - call main() + call print_exc() + !call main() end @@ -41,6 +42,7 @@ subroutine main() do i = 1, N_det deg_sorted(i) = deg(ii(i)) + print *, deg_sorted(i), c(i) enddo print *, ' saving psi' @@ -52,7 +54,7 @@ subroutine main() print *, ' Error opening file!' stop endif - + write(10) N_det write(10) deg_sorted write(10) c @@ -63,4 +65,33 @@ subroutine main() end +! --- + +subroutine print_exc() + + implicit none + + integer :: i + integer, allocatable :: deg(:) + + PROVIDE N_int + PROVIDE N_det + PROVIDE psi_det + + allocate(deg(N_det)) + + do i = 1, N_det + call get_excitation_degree(psi_det(1,1,1), psi_det(1,1,i), deg(i), N_int) + enddo + + open(unit=10, file="exc.dat", action="write") + write(10,*) N_det + write(10,*) deg + close(10) + + deallocate(deg) + +end + + diff --git a/src/utils/block_diag_degen.irp.f b/src/utils/block_diag_degen.irp.f index 188bfa58..1a9ca8d6 100644 --- a/src/utils/block_diag_degen.irp.f +++ b/src/utils/block_diag_degen.irp.f @@ -191,7 +191,7 @@ subroutine give_degen_full_list(A, n, thr, list_degen, n_degen_list) list_degen(n_degen_list,1) = i icount = 1 do j = i+1, n - if(dabs(A(i)-A(j)).lt.thr.and.is_ok(j)) then + if(dabs(A(i)-A(j)).lt.thr .and. is_ok(j)) then is_ok(j) = .False. icount += 1 list_degen(n_degen_list,icount) = j From f8bff471222ac9cd2e6f23342f7d7a7aff5d62cd Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Thu, 28 Mar 2024 15:27:11 +0100 Subject: [PATCH 008/159] added loops --- .../local/non_h_ints_mu/total_tc_int.irp.f | 165 +++++++++++++----- 1 file changed, 121 insertions(+), 44 deletions(-) diff --git a/plugins/local/non_h_ints_mu/total_tc_int.irp.f b/plugins/local/non_h_ints_mu/total_tc_int.irp.f index c7230dc3..72fd0f53 100644 --- a/plugins/local/non_h_ints_mu/total_tc_int.irp.f +++ b/plugins/local/non_h_ints_mu/total_tc_int.irp.f @@ -65,27 +65,59 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n PROVIDE int2_grad1_u12_square_ao - allocate(c_mat(n_points_final_grid,ao_num,ao_num)) + if(tc_save_mem) then - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, k, ipoint) & - !$OMP SHARED (aos_in_r_array_transp, c_mat, ao_num, n_points_final_grid, final_weight_at_r_vector) - !$OMP DO SCHEDULE (static) - do i = 1, ao_num - do k = 1, ao_num - do ipoint = 1, n_points_final_grid - c_mat(ipoint,k,i) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,k) + print*, ' LOOPS are used to evaluate Hermitian part of ao_two_e_tc_tot ...' + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, k, l, ipoint, ao_i_r, ao_k_r, weight1) & + !$OMP SHARED (ao_num, n_points_final_grid, ao_two_e_tc_tot, & + !$OMP aos_in_r_array_transp, final_weight_at_r_vector, int2_grad1_u12_square_ao) + !$OMP DO COLLAPSE(4) + do i = 1, ao_num + do k = 1, ao_num + do l = 1, ao_num + do j = 1, ao_num + ao_two_e_tc_tot(j,l,k,i) = 0.d0 + do ipoint = 1, n_points_final_grid + weight1 = final_weight_at_r_vector(ipoint) + ao_i_r = aos_in_r_array_transp(ipoint,i) + ao_k_r = aos_in_r_array_transp(ipoint,k) + ao_two_e_tc_tot(j,l,k,i) = ao_two_e_tc_tot(j,l,k,i) + int2_grad1_u12_square_ao(j,l,ipoint) * weight1 * ao_i_r * ao_k_r + enddo + enddo + enddo enddo enddo - enddo - !$OMP END DO - !$OMP END PARALLEL + !$OMP END DO + !$OMP END PARALLEL - call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & - , int2_grad1_u12_square_ao(1,1,1), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & - , 0.d0, ao_two_e_tc_tot, ao_num*ao_num) + else + print*, ' DGEMM are used to evaluate Hermitian part of ao_two_e_tc_tot ...' + + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint) & + !$OMP SHARED (aos_in_r_array_transp, c_mat, ao_num, n_points_final_grid, final_weight_at_r_vector) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + c_mat(ipoint,k,i) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,k) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & + , int2_grad1_u12_square_ao(1,1,1), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 0.d0, ao_two_e_tc_tot, ao_num*ao_num) + deallocate(c_mat) + endif + FREE int2_grad1_u12_square_ao if( (tc_integ_type .eq. "semi-analytic") .and. & @@ -96,6 +128,7 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n ! an additional term is added here directly instead of ! being added in int2_grad1_u12_square_ao for performance + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) PROVIDE int2_u2_env2 !$OMP PARALLEL & @@ -127,10 +160,13 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n , int2_u2_env2(1,1,1), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 1.d0, ao_two_e_tc_tot(1,1,1,1), ao_num*ao_num) + deallocate(c_mat) FREE int2_u2_env2 endif ! use_ipp - deallocate(c_mat) + call wall_time(time1) + print*, ' done with Hermitian part after (min) ', (time1 - time0) / 60.d0 + call print_memory_usage() ! --- @@ -138,38 +174,73 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n PROVIDE int2_grad1_u12_ao - allocate(b_mat(n_points_final_grid,ao_num,ao_num,3)) + if(tc_save_mem) then - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & - !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, b_mat, & - !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector) - !$OMP DO SCHEDULE (static) - do i = 1, ao_num - do k = 1, ao_num - do ipoint = 1, n_points_final_grid + print*, ' LOOPS are used to evaluate non-Hermitian part of ao_two_e_tc_tot ...' - weight1 = 0.5d0 * final_weight_at_r_vector(ipoint) - ao_i_r = aos_in_r_array_transp(ipoint,i) - ao_k_r = aos_in_r_array_transp(ipoint,k) - - b_mat(ipoint,k,i,1) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,1) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,1)) - b_mat(ipoint,k,i,2) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,2) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,2)) - b_mat(ipoint,k,i,3) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,3) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,3)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, k, l, ipoint, ao_i_r, ao_k_r, weight1) & + !$OMP SHARED (ao_num, n_points_final_grid, ao_two_e_tc_tot, & + !$OMP aos_in_r_array_transp, final_weight_at_r_vector, & + !$OMP int2_grad1_u12_ao, aos_grad_in_r_array_transp_bis) + !$OMP DO COLLAPSE(4) + do i = 1, ao_num + do k = 1, ao_num + do l = 1, ao_num + do j = 1, ao_num + do ipoint = 1, n_points_final_grid + weight1 = 0.5d0 * final_weight_at_r_vector(ipoint) + ao_i_r = aos_in_r_array_transp(ipoint,i) + ao_k_r = aos_in_r_array_transp(ipoint,k) + ao_two_e_tc_tot(j,l,k,i) = ao_two_e_tc_tot(j,l,k,i) & + + weight1 * int2_grad1_u12_ao(j,l,ipoint,1) * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,1) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,1)) & + + weight1 * int2_grad1_u12_ao(j,l,ipoint,2) * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,2) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,2)) & + + weight1 * int2_grad1_u12_ao(j,l,ipoint,3) * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,3) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,3)) + enddo + enddo + enddo enddo enddo - enddo - !$OMP END DO - !$OMP END PARALLEL + !$OMP END DO + !$OMP END PARALLEL - do m = 1, 3 - call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -1.d0 & - , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, b_mat(1,1,1,m), n_points_final_grid & - , 1.d0, ao_two_e_tc_tot(1,1,1,1), ao_num*ao_num) - enddo - deallocate(b_mat) + else + print*, ' DGEMM are used to evaluate non-Hermitian part of ao_two_e_tc_tot ...' + + allocate(b_mat(n_points_final_grid,ao_num,ao_num,3)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & + !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, b_mat, & + !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + + weight1 = 0.5d0 * final_weight_at_r_vector(ipoint) + ao_i_r = aos_in_r_array_transp(ipoint,i) + ao_k_r = aos_in_r_array_transp(ipoint,k) + + b_mat(ipoint,k,i,1) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,1) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,1)) + b_mat(ipoint,k,i,2) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,2) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,2)) + b_mat(ipoint,k,i,3) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,3) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,3)) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + do m = 1, 3 + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -1.d0 & + , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, b_mat(1,1,1,m), n_points_final_grid & + , 1.d0, ao_two_e_tc_tot(1,1,1,1), ao_num*ao_num) + enddo + deallocate(b_mat) + + end if FREE int2_grad1_u12_ao if(tc_integ_type .eq. "semi-analytic") then @@ -178,16 +249,22 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n endif ! var_tc + call wall_time(time1) + print*, ' done with non-Hermitian part after (min) ', (time1 - time0) / 60.d0 + call print_memory_usage() + ! --- call sum_A_At(ao_two_e_tc_tot(1,1,1,1), ao_num*ao_num) + ! --- + PROVIDE ao_integrals_map !$OMP PARALLEL DEFAULT(NONE) & !$OMP SHARED(ao_num, ao_two_e_tc_tot, ao_integrals_map) & !$OMP PRIVATE(i, j, k, l) - !$OMP DO + !$OMP DO COLLAPSE(4) do j = 1, ao_num do l = 1, ao_num do i = 1, ao_num From 002aff90f5e6ecd7a4929eb48e75608d94f9e3a8 Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Thu, 28 Mar 2024 17:05:00 +0100 Subject: [PATCH 009/159] working on mem reduction --- .../local/non_h_ints_mu/total_tc_int.irp.f | 98 ++++++++++++------- plugins/local/tc_keywords/EZFIO.cfg | 6 ++ 2 files changed, 67 insertions(+), 37 deletions(-) diff --git a/plugins/local/non_h_ints_mu/total_tc_int.irp.f b/plugins/local/non_h_ints_mu/total_tc_int.irp.f index 72fd0f53..b8379006 100644 --- a/plugins/local/non_h_ints_mu/total_tc_int.irp.f +++ b/plugins/local/non_h_ints_mu/total_tc_int.irp.f @@ -33,8 +33,10 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n double precision :: weight1, ao_k_r, ao_i_r double precision :: der_envsq_x, der_envsq_y, der_envsq_z, lap_envsq double precision :: time0, time1 - double precision, allocatable :: b_mat(:,:,:,:), c_mat(:,:,:) + double precision, allocatable :: c_mat(:,:,:) + logical, external :: ao_two_e_integral_zero double precision, external :: get_ao_two_e_integral + double precision, external :: ao_two_e_integral PROVIDe tc_integ_type PROVIDE env_type @@ -194,9 +196,9 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n ao_i_r = aos_in_r_array_transp(ipoint,i) ao_k_r = aos_in_r_array_transp(ipoint,k) ao_two_e_tc_tot(j,l,k,i) = ao_two_e_tc_tot(j,l,k,i) & - + weight1 * int2_grad1_u12_ao(j,l,ipoint,1) * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,1) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,1)) & - + weight1 * int2_grad1_u12_ao(j,l,ipoint,2) * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,2) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,2)) & - + weight1 * int2_grad1_u12_ao(j,l,ipoint,3) * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,3) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,3)) + - weight1 * int2_grad1_u12_ao(j,l,ipoint,1) * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,1) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,1)) & + - weight1 * int2_grad1_u12_ao(j,l,ipoint,2) * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,2) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,2)) & + - weight1 * int2_grad1_u12_ao(j,l,ipoint,3) * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,3) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,3)) enddo enddo enddo @@ -209,39 +211,37 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n print*, ' DGEMM are used to evaluate non-Hermitian part of ao_two_e_tc_tot ...' - allocate(b_mat(n_points_final_grid,ao_num,ao_num,3)) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & - !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, b_mat, & - !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector) - !$OMP DO SCHEDULE (static) - do i = 1, ao_num - do k = 1, ao_num - do ipoint = 1, n_points_final_grid + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) + do m = 1, 3 + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & + !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, c_mat, & + !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector, m) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid - weight1 = 0.5d0 * final_weight_at_r_vector(ipoint) - ao_i_r = aos_in_r_array_transp(ipoint,i) - ao_k_r = aos_in_r_array_transp(ipoint,k) + weight1 = 0.5d0 * final_weight_at_r_vector(ipoint) + ao_i_r = aos_in_r_array_transp(ipoint,i) + ao_k_r = aos_in_r_array_transp(ipoint,k) - b_mat(ipoint,k,i,1) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,1) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,1)) - b_mat(ipoint,k,i,2) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,2) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,2)) - b_mat(ipoint,k,i,3) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,3) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,3)) + c_mat(ipoint,k,i) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,m) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,m)) + enddo enddo enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - do m = 1, 3 - call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -1.d0 & - , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, b_mat(1,1,1,m), n_points_final_grid & + !$OMP END DO + !$OMP END PARALLEL + + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -1.d0 & + , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 1.d0, ao_two_e_tc_tot(1,1,1,1), ao_num*ao_num) enddo - deallocate(b_mat) + deallocate(c_mat) end if - FREE int2_grad1_u12_ao + !FREE int2_grad1_u12_ao if(tc_integ_type .eq. "semi-analytic") then FREE int2_grad1_u2e_ao @@ -258,19 +258,26 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n call sum_A_At(ao_two_e_tc_tot(1,1,1,1), ao_num*ao_num) ! --- + + logical :: integ_zero + double precision :: integ_val - PROVIDE ao_integrals_map + print*, ' adding ERI to ao_two_e_tc_tot ...' - !$OMP PARALLEL DEFAULT(NONE) & - !$OMP SHARED(ao_num, ao_two_e_tc_tot, ao_integrals_map) & - !$OMP PRIVATE(i, j, k, l) + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP PRIVATE(i, j, k, l, integ_zero, integ_val) & + !$OMP SHARED(ao_num, ao_two_e_tc_tot) !$OMP DO COLLAPSE(4) do j = 1, ao_num do l = 1, ao_num do i = 1, ao_num do k = 1, ao_num - ! < 1:i, 2:j | 1:k, 2:l > - ao_two_e_tc_tot(k,i,l,j) = ao_two_e_tc_tot(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) + integ_zero = ao_two_e_integral_zero(i,j,k,l) + if(.not. integ_zero) then + ! i,k : r1 j,l : r2 + integ_val = ao_two_e_integral(i,k,j,l) + ao_two_e_tc_tot(k,i,l,j) = ao_two_e_tc_tot(k,i,l,j) + integ_val + endif enddo enddo enddo @@ -278,8 +285,25 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n !$OMP END DO !$OMP END PARALLEL - !call clear_ao_map() - FREE ao_integrals_map + !PROVIDE ao_integrals_map + !!$OMP PARALLEL DEFAULT(NONE) & + !!$OMP SHARED(ao_num, ao_two_e_tc_tot, ao_integrals_map) & + !!$OMP PRIVATE(i, j, k, l) + !!$OMP DO COLLAPSE(4) + !do j = 1, ao_num + ! do l = 1, ao_num + ! do i = 1, ao_num + ! do k = 1, ao_num + ! ! < 1:i, 2:j | 1:k, 2:l > + ! ao_two_e_tc_tot(k,i,l,j) = ao_two_e_tc_tot(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) + ! enddo + ! enddo + ! enddo + !enddo + !!$OMP END DO + !!$OMP END PARALLEL + !!call clear_ao_map() + !FREE ao_integrals_map if(tc_integ_type .eq. "numeric") then FREE int2_grad1_u12_ao_num int2_grad1_u12_square_ao_num diff --git a/plugins/local/tc_keywords/EZFIO.cfg b/plugins/local/tc_keywords/EZFIO.cfg index a8491660..24362796 100644 --- a/plugins/local/tc_keywords/EZFIO.cfg +++ b/plugins/local/tc_keywords/EZFIO.cfg @@ -286,4 +286,10 @@ doc: If |true|, memory scale of TC ao -> mo: O(N3) interface: ezfio,provider,ocaml default: False +[tc_save_mem] +type: logical +doc: If |true|, use loops to save memory TC +interface: ezfio,provider,ocaml +default: False + From 1a36d974b0bd5cd0c06453a15c96a8492c4baecc Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Sun, 7 Apr 2024 00:33:09 +0200 Subject: [PATCH 010/159] saving lcpq-ampere --- .../local/bi_ort_ints/semi_num_ints_mo.irp.f | 68 ++++--- .../bi_ort_ints/three_body_ints_bi_ort.irp.f | 2 +- .../local/bi_ort_ints/total_twoe_pot.irp.f | 87 ++++----- plugins/local/non_h_ints_mu/tc_integ.irp.f | 175 ++++++++++++++++-- .../local/non_h_ints_mu/total_tc_int.irp.f | 93 +++++----- plugins/local/tc_keywords/EZFIO.cfg | 8 +- .../local/tc_scf/fock_3e_bi_ortho_cs.irp.f | 121 +++++++----- .../local/tc_scf/fock_3e_bi_ortho_uhf.irp.f | 2 +- plugins/local/tc_scf/fock_tc.irp.f | 2 +- .../local/tc_scf/write_ao_2e_tc_integ.irp.f | 58 ++++++ .../multi_s_dipole_moment.irp.f | 22 ++- 11 files changed, 442 insertions(+), 196 deletions(-) create mode 100644 plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f diff --git a/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f b/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f index 51f0cba4..77e4cb9b 100644 --- a/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f +++ b/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f @@ -107,8 +107,8 @@ BEGIN_PROVIDER [ double precision, int2_grad1_u12_ao_transp, (ao_num, ao_num, 3, integer :: i, j, ipoint double precision :: wall0, wall1 - print *, ' providing int2_grad1_u12_ao_transp ...' - call wall_time(wall0) + !print *, ' providing int2_grad1_u12_ao_transp ...' + !call wall_time(wall0) if(test_cycle_tc) then @@ -142,15 +142,15 @@ BEGIN_PROVIDER [ double precision, int2_grad1_u12_ao_transp, (ao_num, ao_num, 3, endif - call wall_time(wall1) - print *, ' wall time for int2_grad1_u12_ao_transp ', wall1 - wall0 - call print_memory_usage() + !call wall_time(wall1) + !print *, ' wall time for int2_grad1_u12_ao_transp (min) = ', (wall1 - wall0) / 60.d0 + !call print_memory_usage() END_PROVIDER ! --- -BEGIN_PROVIDER [ double precision, int2_grad1_u12_bimo_transp, (mo_num, mo_num, 3, n_points_final_grid)] +BEGIN_PROVIDER [double precision, int2_grad1_u12_bimo_transp, (mo_num, mo_num, 3, n_points_final_grid)] implicit none integer :: ipoint @@ -159,7 +159,7 @@ BEGIN_PROVIDER [ double precision, int2_grad1_u12_bimo_transp, (mo_num, mo_num, PROVIDE mo_l_coef mo_r_coef PROVIDE int2_grad1_u12_ao_transp - !print *, ' providing int2_grad1_u12_bimo_transp' + !print *, ' providing int2_grad1_u12_bimo_transp ...' !call wall_time(wall0) !$OMP PARALLEL & @@ -167,33 +167,35 @@ BEGIN_PROVIDER [ double precision, int2_grad1_u12_bimo_transp, (mo_num, mo_num, !$OMP PRIVATE (ipoint) & !$OMP SHARED (n_points_final_grid,int2_grad1_u12_ao_transp,int2_grad1_u12_bimo_transp) !$OMP DO SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,1,ipoint), size(int2_grad1_u12_ao_transp , 1) & - , int2_grad1_u12_bimo_transp(1,1,1,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) - call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,2,ipoint), size(int2_grad1_u12_ao_transp , 1) & - , int2_grad1_u12_bimo_transp(1,1,2,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) - call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,3,ipoint), size(int2_grad1_u12_ao_transp , 1) & - , int2_grad1_u12_bimo_transp(1,1,3,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) - enddo + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,1,ipoint), size(int2_grad1_u12_ao_transp , 1) & + , int2_grad1_u12_bimo_transp(1,1,1,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) + call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,2,ipoint), size(int2_grad1_u12_ao_transp , 1) & + , int2_grad1_u12_bimo_transp(1,1,2,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) + call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,3,ipoint), size(int2_grad1_u12_ao_transp , 1) & + , int2_grad1_u12_bimo_transp(1,1,3,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) + enddo !$OMP END DO !$OMP END PARALLEL + !FREE int2_grad1_u12_ao_transp + !call wall_time(wall1) - !print *, ' Wall time for providing int2_grad1_u12_bimo_transp',wall1 - wall0 + !print *, ' wall time for int2_grad1_u12_bimo_transp (min) =', (wall1 - wall0) / 60.d0 !call print_memory_usage() END_PROVIDER ! --- -BEGIN_PROVIDER [ double precision, int2_grad1_u12_bimo_t, (n_points_final_grid, 3, mo_num, mo_num)] +BEGIN_PROVIDER [double precision, int2_grad1_u12_bimo_t, (n_points_final_grid, 3, mo_num, mo_num)] implicit none integer :: i, j, ipoint double precision :: wall0, wall1 !call wall_time(wall0) - !print *, ' Providing int2_grad1_u12_bimo_t ...' + !print *, ' providing int2_grad1_u12_bimo_t ...' PROVIDE mo_l_coef mo_r_coef PROVIDE int2_grad1_u12_bimo_transp @@ -211,17 +213,21 @@ BEGIN_PROVIDER [ double precision, int2_grad1_u12_bimo_t, (n_points_final_grid, FREE int2_grad1_u12_bimo_transp !call wall_time(wall1) - !print *, ' wall time for int2_grad1_u12_bimo_t,', wall1 - wall0 + !print *, ' wall time for int2_grad1_u12_bimo_t (min) =', (wall1 - wall0) / 60.d0 !call print_memory_usage() END_PROVIDER ! --- -BEGIN_PROVIDER [ double precision, int2_grad1_u12_ao_t, (n_points_final_grid, 3, ao_num, ao_num)] +BEGIN_PROVIDER [double precision, int2_grad1_u12_ao_t, (n_points_final_grid, 3, ao_num, ao_num)] implicit none - integer :: i, j, ipoint + integer :: i, j, ipoint + double precision :: wall0, wall1 + + !call wall_time(wall0) + !print *, ' providing int2_grad1_u12_ao_t ...' PROVIDE int2_grad1_u12_ao @@ -235,6 +241,10 @@ BEGIN_PROVIDER [ double precision, int2_grad1_u12_ao_t, (n_points_final_grid, 3, enddo enddo + !call wall_time(wall1) + !print *, ' wall time for int2_grad1_u12_ao_t (min) =', (wall1 - wall0) / 60.d0 + !call print_memory_usage() + END_PROVIDER ! --- @@ -275,8 +285,8 @@ BEGIN_PROVIDER [ double precision, x_W_ki_bi_ortho_erf_rk, (n_points_final_grid, double precision :: xyz double precision :: wall0, wall1 - print*, ' providing x_W_ki_bi_ortho_erf_rk ...' - call wall_time(wall0) + !print*, ' providing x_W_ki_bi_ortho_erf_rk ...' + !call wall_time(wall0) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & @@ -300,8 +310,8 @@ BEGIN_PROVIDER [ double precision, x_W_ki_bi_ortho_erf_rk, (n_points_final_grid, ! FREE mo_v_ki_bi_ortho_erf_rk_cst_mu_transp ! FREE mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp - call wall_time(wall1) - print *, ' time to provide x_W_ki_bi_ortho_erf_rk = ', wall1 - wall0 + !call wall_time(wall1) + !print *, ' time to provide x_W_ki_bi_ortho_erf_rk = ', wall1 - wall0 END_PROVIDER @@ -323,8 +333,8 @@ BEGIN_PROVIDER [ double precision, x_W_ki_bi_ortho_erf_rk_diag, (n_points_final_ double precision :: xyz double precision :: wall0, wall1 - print*,'providing x_W_ki_bi_ortho_erf_rk_diag ...' - call wall_time(wall0) + !print*,'providing x_W_ki_bi_ortho_erf_rk_diag ...' + !call wall_time(wall0) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & @@ -343,8 +353,8 @@ BEGIN_PROVIDER [ double precision, x_W_ki_bi_ortho_erf_rk_diag, (n_points_final_ !$OMP END DO !$OMP END PARALLEL - call wall_time(wall1) - print*,'time to provide x_W_ki_bi_ortho_erf_rk_diag = ',wall1 - wall0 + !call wall_time(wall1) + !print*,'time to provide x_W_ki_bi_ortho_erf_rk_diag = ',wall1 - wall0 END_PROVIDER diff --git a/plugins/local/bi_ort_ints/three_body_ints_bi_ort.irp.f b/plugins/local/bi_ort_ints/three_body_ints_bi_ort.irp.f index 726e48ba..fd4a162f 100644 --- a/plugins/local/bi_ort_ints/three_body_ints_bi_ort.irp.f +++ b/plugins/local/bi_ort_ints/three_body_ints_bi_ort.irp.f @@ -168,7 +168,7 @@ subroutine give_integrals_3_body_bi_ort(n, l, k, m, j, i, integral) integral = integral + tmp * final_weight_at_r_vector(ipoint) enddo -end subroutine give_integrals_3_body_bi_ort +end ! --- diff --git a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f index 1e558038..e34a7b7b 100644 --- a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f +++ b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f @@ -16,10 +16,10 @@ double precision function bi_ortho_mo_ints(l, k, j, i) integer :: m, n, p, q bi_ortho_mo_ints = 0.d0 - do m = 1, ao_num - do p = 1, ao_num - do n = 1, ao_num - do q = 1, ao_num + do p = 1, ao_num + do m = 1, ao_num + do q = 1, ao_num + do n = 1, ao_num ! p1h1p2h2 l1 l2 r1 r2 bi_ortho_mo_ints += ao_two_e_tc_tot(n,q,m,p) * mo_l_coef(m,l) * mo_l_coef(n,k) * mo_r_coef(p,j) * mo_r_coef(q,i) enddo @@ -27,7 +27,7 @@ double precision function bi_ortho_mo_ints(l, k, j, i) enddo enddo -end function bi_ortho_mo_ints +end ! --- @@ -43,93 +43,68 @@ BEGIN_PROVIDER [double precision, mo_bi_ortho_tc_two_e_chemist, (mo_num, mo_num, integer :: i, j, k, l, m, n, p, q, s, r double precision :: t1, t2, tt1, tt2 double precision, allocatable :: a1(:,:,:,:), a2(:,:,:,:) - double precision, allocatable :: a_jkp(:,:,:), a_kpq(:,:,:), a_pqr(:,:,:) + double precision, allocatable :: a_jkp(:,:,:), a_kpq(:,:,:), ao_two_e_tc_tot_tmp(:,:,:) print *, ' PROVIDING mo_bi_ortho_tc_two_e_chemist ...' call wall_time(t1) call print_memory_usage() PROVIDE mo_r_coef mo_l_coef - PROVIDE ao_two_e_tc_tot if(ao_to_mo_tc_n3) then print*, ' memory scale of TC ao -> mo: O(N3) ' + if(.not.read_tc_integ) then + stop 'read_tc_integ needs to be set to true' + endif + allocate(a_jkp(ao_num,ao_num,mo_num)) allocate(a_kpq(ao_num,mo_num,mo_num)) - allocate(a_pqr(mo_num,mo_num,mo_num)) + allocate(ao_two_e_tc_tot_tmp(ao_num,ao_num,ao_num)) + + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/ao_two_e_tc_tot', action="read") call wall_time(tt1) - do s = 1, mo_num + mo_bi_ortho_tc_two_e_chemist(:,:,:,:) = 0.d0 + do l = 1, ao_num + read(11) ao_two_e_tc_tot_tmp(:,:,:) - mo_bi_ortho_tc_two_e_chemist(:,:,:,s) = 0.d0 - do l = 1, ao_num + do s = 1, mo_num - call dgemm( 'T', 'N', ao_num*ao_num, mo_num, ao_num, 1.d0 & - , ao_two_e_tc_tot(1,1,1,l), ao_num, mo_l_coef(1,1), ao_num & + call dgemm( 'T', 'N', ao_num*ao_num, mo_num, ao_num, 1.d0 & + , ao_two_e_tc_tot_tmp(1,1,1), ao_num, mo_l_coef(1,1), ao_num & , 0.d0, a_jkp(1,1,1), ao_num*ao_num) - + call dgemm( 'T', 'N', ao_num*mo_num, mo_num, ao_num, 1.d0 & , a_jkp(1,1,1), ao_num, mo_r_coef(1,1), ao_num & , 0.d0, a_kpq(1,1,1), ao_num*mo_num) - - call dgemm( 'T', 'N', mo_num*mo_num, mo_num, ao_num, 1.d0 & - , a_kpq(1,1,1), ao_num, mo_l_coef(1,1), ao_num & - , 0.d0, a_pqr(1,1,1), mo_num*mo_num) - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(p, q, r) & - !$OMP SHARED(s, l, mo_num, mo_bi_ortho_tc_two_e_chemist, mo_r_coef, a_pqr) - !$OMP DO COLLAPSE(2) - do p = 1, mo_num - do q = 1, mo_num - do r = 1, mo_num - mo_bi_ortho_tc_two_e_chemist(p,q,r,s) = mo_bi_ortho_tc_two_e_chemist(p,q,r,s) + mo_r_coef(l,s) * a_pqr(p,q,r) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL + call dgemm( 'T', 'N', mo_num*mo_num, mo_num, ao_num, mo_r_coef(l,s) & + , a_kpq(1,1,1), ao_num, mo_l_coef(1,1), ao_num & + , 1.d0, mo_bi_ortho_tc_two_e_chemist(1,1,1,s), mo_num*mo_num) - enddo ! l + enddo ! s - if(s == 2) then + if(l == 2) then call wall_time(tt2) print*, ' 1 / mo_num done in (min)', (tt2-tt1)/60.d0 print*, ' estimated time required (min)', dble(mo_num-1)*(tt2-tt1)/60.d0 - elseif(s == 11) then + elseif(l == 11) then call wall_time(tt2) print*, ' 10 / mo_num done in (min)', (tt2-tt1)/60.d0 print*, ' estimated time required (min)', dble(mo_num-10)*(tt2-tt1)/(60.d0*10.d0) - elseif(s == 26) then - call wall_time(tt2) - print*, ' 25 / mo_num done in (min)', (tt2-tt1)/60.d0 - print*, ' estimated time required (min)', dble(mo_num-25)*(tt2-tt1)/(60.d0*25.d0) - elseif(s == 51) then - call wall_time(tt2) - print*, ' 50 / mo_num done in (min)', (tt2-tt1)/60.d0 - print*, ' estimated time required (min)', dble(mo_num-50)*(tt2-tt1)/(60.d0*50.d0) - elseif(s == 101) then + elseif(l == 101) then call wall_time(tt2) print*, ' 100 / mo_num done in (min)', (tt2-tt1)/60.d0 print*, ' estimated time required (min)', dble(mo_num-100)*(tt2-tt1)/(60.d0*100.d0) - elseif(s == 201) then - call wall_time(tt2) - print*, ' 200 / mo_num done in (min)', (tt2-tt1)/60.d0 - print*, ' estimated time required (min)', dble(mo_num-200)*(tt2-tt1)/(60.d0*200.d0) - elseif(s == 501) then - call wall_time(tt2) - print*, ' 500 / mo_num done in (min)', (tt2-tt1)/60.d0 - print*, ' estimated time required (min)', dble(mo_num-500)*(tt2-tt1)/(60.d0*500.d0) endif + enddo ! l + close(11) - enddo ! s - - deallocate(a_jkp, a_kpq, a_pqr) + deallocate(a_jkp, a_kpq, ao_two_e_tc_tot_tmp) else @@ -141,6 +116,8 @@ BEGIN_PROVIDER [double precision, mo_bi_ortho_tc_two_e_chemist, (mo_num, mo_num, , ao_two_e_tc_tot(1,1,1,1), ao_num, mo_l_coef(1,1), ao_num & , 0.d0, a2(1,1,1,1), ao_num*ao_num*ao_num) + FREE ao_two_e_tc_tot + allocate(a1(ao_num,ao_num,mo_num,mo_num)) call dgemm( 'T', 'N', ao_num*ao_num*mo_num, mo_num, ao_num, 1.d0 & diff --git a/plugins/local/non_h_ints_mu/tc_integ.irp.f b/plugins/local/non_h_ints_mu/tc_integ.irp.f index 775a9e4c..58e3db48 100644 --- a/plugins/local/non_h_ints_mu/tc_integ.irp.f +++ b/plugins/local/non_h_ints_mu/tc_integ.irp.f @@ -44,14 +44,92 @@ BEGIN_PROVIDER [double precision, int2_grad1_u12_ao, (ao_num, ao_num, n_points_f elseif(tc_integ_type .eq. "numeric") then print *, ' Numerical integration over r1 and r2 will be performed' - - ! TODO combine 1shot & int2_grad1_u12_ao_num - PROVIDE int2_grad1_u12_ao_num - int2_grad1_u12_ao = int2_grad1_u12_ao_num + if(tc_save_mem) then - !PROVIDE int2_grad1_u12_ao_num_1shot - !int2_grad1_u12_ao = int2_grad1_u12_ao_num_1shot + integer :: n_blocks, n_rest, n_pass + integer :: i_blocks, i_rest, i_pass, ii + double precision :: mem, n_double + double precision, allocatable :: tmp(:,:,:), xx(:) + double precision, allocatable :: tmp_grad1_u12(:,:,:) + + PROVIDE final_weight_at_r_vector_extra aos_in_r_array_extra + + allocate(tmp(n_points_extra_final_grid,ao_num,ao_num), xx(n_points_extra_final_grid)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (tmp, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO COLLAPSE(2) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + tmp(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call total_memory(mem) + mem = max(1.d0, qp_max_mem - mem) + n_double = mem * 1.d8 + n_blocks = int(min(n_double / (n_points_extra_final_grid * 4.d0), 1.d0*n_points_final_grid)) + n_rest = int(mod(n_points_final_grid, n_blocks)) + n_pass = int((n_points_final_grid - n_rest) / n_blocks) + call write_int(6, n_pass, 'Number of passes') + call write_int(6, n_blocks, 'Size of the blocks') + call write_int(6, n_rest, 'Size of the last block') + allocate(tmp_grad1_u12(n_points_extra_final_grid,n_blocks,3)) + do i_pass = 1, n_pass + ii = (i_pass-1)*n_blocks + 1 + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_blocks, ipoint) & + !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, final_grid_points, xx, tmp_grad1_u12) + !$OMP DO + do i_blocks = 1, n_blocks + ipoint = ii - 1 + i_blocks ! r1 + call get_grad1_u12_withsq_r1_seq(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_blocks,1), tmp_grad1_u12(1,i_blocks,2), tmp_grad1_u12(1,i_blocks,3), xx(1)) + enddo + !$OMP END DO + !$OMP END PARALLEL + do m = 1, 3 + call dgemm( "T", "N", ao_num*ao_num, n_blocks, n_points_extra_final_grid, 1.d0 & + , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) + enddo + enddo + deallocate(tmp_grad1_u12) + if(n_rest .gt. 0) then + allocate(tmp_grad1_u12(n_points_extra_final_grid,n_rest,3)) + ii = n_pass*n_blocks + 1 + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_rest, ipoint) & + !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, final_grid_points, xx, tmp_grad1_u12) + !$OMP DO + do i_rest = 1, n_rest + ipoint = ii - 1 + i_rest ! r1 + call get_grad1_u12_withsq_r1_seq(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_rest,1), tmp_grad1_u12(1,i_rest,2), tmp_grad1_u12(1,i_rest,3), xx(1)) + enddo + !$OMP END DO + !$OMP END PARALLEL + do m = 1, 3 + call dgemm( "T", "N", ao_num*ao_num, n_rest, n_points_extra_final_grid, 1.d0 & + , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) + enddo + deallocate(tmp_grad1_u12) + endif + deallocate(tmp,xx) + + else + ! TODO combine 1shot & int2_grad1_u12_ao_num + PROVIDE int2_grad1_u12_ao_num + int2_grad1_u12_ao = int2_grad1_u12_ao_num + !PROVIDE int2_grad1_u12_ao_num_1shot + !int2_grad1_u12_ao = int2_grad1_u12_ao_num_1shot + endif elseif(tc_integ_type .eq. "semi-analytic") then @@ -177,13 +255,88 @@ BEGIN_PROVIDER [double precision, int2_grad1_u12_square_ao, (ao_num, ao_num, n_p print *, ' Numerical integration over r1 and r2 will be performed' - ! TODO combine 1shot & int2_grad1_u12_square_ao_num + if(tc_save_mem) then - PROVIDE int2_grad1_u12_square_ao_num - int2_grad1_u12_square_ao = int2_grad1_u12_square_ao_num + integer :: n_blocks, n_rest, n_pass + integer :: i_blocks, i_rest, i_pass, ii + double precision :: mem, n_double + double precision, allocatable :: tmp(:,:,:), xx(:,:,:) + double precision, allocatable :: tmp_grad1_u12_squared(:,:) - !PROVIDE int2_grad1_u12_square_ao_num_1shot - !int2_grad1_u12_square_ao = int2_grad1_u12_square_ao_num_1shot + PROVIDE final_weight_at_r_vector_extra aos_in_r_array_extra + + allocate(tmp(n_points_extra_final_grid,ao_num,ao_num)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (tmp, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO COLLAPSE(2) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + tmp(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call total_memory(mem) + mem = max(1.d0, qp_max_mem - mem) + n_double = mem * 1.d8 + n_blocks = int(min(n_double / (n_points_extra_final_grid * 4.d0), 1.d0*n_points_final_grid)) + n_rest = int(mod(n_points_final_grid, n_blocks)) + n_pass = int((n_points_final_grid - n_rest) / n_blocks) + call write_int(6, n_pass, 'Number of passes') + call write_int(6, n_blocks, 'Size of the blocks') + call write_int(6, n_rest, 'Size of the last block') + allocate(tmp_grad1_u12_squared(n_points_extra_final_grid,n_blocks), xx(n_points_extra_final_grid,n_blocks,3)) + do i_pass = 1, n_pass + ii = (i_pass-1)*n_blocks + 1 + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_blocks, ipoint) & + !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, xx, final_grid_points, tmp_grad1_u12_squared) + !$OMP DO + do i_blocks = 1, n_blocks + ipoint = ii - 1 + i_blocks ! r1 + call get_grad1_u12_withsq_r1_seq(ipoint, n_points_extra_final_grid, xx(1,i_blocks,1), xx(1,i_blocks,2), xx(1,i_blocks,3), tmp_grad1_u12_squared(1,i_blocks)) + enddo + !$OMP END DO + !$OMP END PARALLEL + call dgemm( "T", "N", ao_num*ao_num, n_blocks, n_points_extra_final_grid, -0.5d0 & + , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12_squared(1,1), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_square_ao(1,1,ii), ao_num*ao_num) + enddo + deallocate(tmp_grad1_u12_squared, xx) + if(n_rest .gt. 0) then + ii = n_pass*n_blocks + 1 + allocate(tmp_grad1_u12_squared(n_points_extra_final_grid,n_rest), xx(n_points_extra_final_grid,n_rest,3)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_rest, ipoint) & + !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, xx, final_grid_points, tmp_grad1_u12_squared) + !$OMP DO + do i_rest = 1, n_rest + ipoint = ii - 1 + i_rest ! r1 + call get_grad1_u12_withsq_r1_seq(ipoint, n_points_extra_final_grid, xx(1,i_rest,1), xx(1,i_rest,2), xx(1,i_rest,3), tmp_grad1_u12_squared(1,i_rest)) + enddo + !$OMP END DO + !$OMP END PARALLEL + call dgemm( "T", "N", ao_num*ao_num, n_rest, n_points_extra_final_grid, -0.5d0 & + , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12_squared(1,1), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_square_ao(1,1,ii), ao_num*ao_num) + deallocate(tmp_grad1_u12_squared, xx) + endif + deallocate(tmp) + + else + + ! TODO combine 1shot & int2_grad1_u12_square_ao_num + PROVIDE int2_grad1_u12_square_ao_num + int2_grad1_u12_square_ao = int2_grad1_u12_square_ao_num + !PROVIDE int2_grad1_u12_square_ao_num_1shot + !int2_grad1_u12_square_ao = int2_grad1_u12_square_ao_num_1shot + endif elseif(tc_integ_type .eq. "semi-analytic") then diff --git a/plugins/local/non_h_ints_mu/total_tc_int.irp.f b/plugins/local/non_h_ints_mu/total_tc_int.irp.f index b8379006..a1bbd6e0 100644 --- a/plugins/local/non_h_ints_mu/total_tc_int.irp.f +++ b/plugins/local/non_h_ints_mu/total_tc_int.irp.f @@ -55,7 +55,9 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n print*, ' Reading ao_two_e_tc_tot from ', trim(ezfio_filename) // '/work/ao_two_e_tc_tot' open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/ao_two_e_tc_tot', action="read") - read(11) ao_two_e_tc_tot + do i = 1, ao_num + read(11) ao_two_e_tc_tot(:,:,:,i) + enddo close(11) else @@ -67,7 +69,7 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n PROVIDE int2_grad1_u12_square_ao - if(tc_save_mem) then + if(tc_save_mem_loops) then print*, ' LOOPS are used to evaluate Hermitian part of ao_two_e_tc_tot ...' @@ -176,7 +178,7 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n PROVIDE int2_grad1_u12_ao - if(tc_save_mem) then + if(tc_save_mem_loops) then print*, ' LOOPS are used to evaluate non-Hermitian part of ao_two_e_tc_tot ...' @@ -241,7 +243,6 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n deallocate(c_mat) end if - !FREE int2_grad1_u12_ao if(tc_integ_type .eq. "semi-analytic") then FREE int2_grad1_u2e_ao @@ -264,48 +265,52 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n print*, ' adding ERI to ao_two_e_tc_tot ...' - !$OMP PARALLEL DEFAULT(NONE) & - !$OMP PRIVATE(i, j, k, l, integ_zero, integ_val) & - !$OMP SHARED(ao_num, ao_two_e_tc_tot) - !$OMP DO COLLAPSE(4) - do j = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do k = 1, ao_num - integ_zero = ao_two_e_integral_zero(i,j,k,l) - if(.not. integ_zero) then - ! i,k : r1 j,l : r2 - integ_val = ao_two_e_integral(i,k,j,l) - ao_two_e_tc_tot(k,i,l,j) = ao_two_e_tc_tot(k,i,l,j) + integ_val - endif + if(tc_save_mem) then + print*, ' ao_integrals_map will not be used' + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP PRIVATE(i, j, k, l, integ_zero, integ_val) & + !$OMP SHARED(ao_num, ao_two_e_tc_tot) + !$OMP DO COLLAPSE(4) + do j = 1, ao_num + do l = 1, ao_num + do i = 1, ao_num + do k = 1, ao_num + integ_zero = ao_two_e_integral_zero(i,j,k,l) + if(.not. integ_zero) then + ! i,k : r1 j,l : r2 + integ_val = ao_two_e_integral(i,k,j,l) + ao_two_e_tc_tot(k,i,l,j) = ao_two_e_tc_tot(k,i,l,j) + integ_val + endif + enddo enddo enddo enddo - enddo - !$OMP END DO - !$OMP END PARALLEL + !$OMP END DO + !$OMP END PARALLEL + else + print*, ' ao_integrals_map will be used' + PROVIDE ao_integrals_map + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP SHARED(ao_num, ao_two_e_tc_tot, ao_integrals_map) & + !$OMP PRIVATE(i, j, k, l) + !$OMP DO COLLAPSE(4) + do j = 1, ao_num + do l = 1, ao_num + do i = 1, ao_num + do k = 1, ao_num + ! < 1:i, 2:j | 1:k, 2:l > + ao_two_e_tc_tot(k,i,l,j) = ao_two_e_tc_tot(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + !call clear_ao_map() + FREE ao_integrals_map + endif - !PROVIDE ao_integrals_map - !!$OMP PARALLEL DEFAULT(NONE) & - !!$OMP SHARED(ao_num, ao_two_e_tc_tot, ao_integrals_map) & - !!$OMP PRIVATE(i, j, k, l) - !!$OMP DO COLLAPSE(4) - !do j = 1, ao_num - ! do l = 1, ao_num - ! do i = 1, ao_num - ! do k = 1, ao_num - ! ! < 1:i, 2:j | 1:k, 2:l > - ! ao_two_e_tc_tot(k,i,l,j) = ao_two_e_tc_tot(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) - ! enddo - ! enddo - ! enddo - !enddo - !!$OMP END DO - !!$OMP END PARALLEL - !!call clear_ao_map() - !FREE ao_integrals_map - - if(tc_integ_type .eq. "numeric") then + if((tc_integ_type .eq. "numeric") .and. (.not. tc_save_mem)) then FREE int2_grad1_u12_ao_num int2_grad1_u12_square_ao_num endif @@ -315,7 +320,9 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n print*, ' Saving ao_two_e_tc_tot in ', trim(ezfio_filename) // '/work/ao_two_e_tc_tot' open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/ao_two_e_tc_tot', action="write") call ezfio_set_work_empty(.False.) - write(11) ao_two_e_tc_tot + do i = 1, ao_num + write(11) ao_two_e_tc_tot(:,:,:,i) + enddo close(11) call ezfio_set_tc_keywords_io_tc_integ('Read') endif diff --git a/plugins/local/tc_keywords/EZFIO.cfg b/plugins/local/tc_keywords/EZFIO.cfg index 24362796..70169189 100644 --- a/plugins/local/tc_keywords/EZFIO.cfg +++ b/plugins/local/tc_keywords/EZFIO.cfg @@ -286,10 +286,16 @@ doc: If |true|, memory scale of TC ao -> mo: O(N3) interface: ezfio,provider,ocaml default: False -[tc_save_mem] +[tc_save_mem_loops] type: logical doc: If |true|, use loops to save memory TC interface: ezfio,provider,ocaml default: False +[tc_save_mem] +type: logical +doc: If |true|, more calc but less mem +interface: ezfio,provider,ocaml +default: False + diff --git a/plugins/local/tc_scf/fock_3e_bi_ortho_cs.irp.f b/plugins/local/tc_scf/fock_3e_bi_ortho_cs.irp.f index 0b883865..8fd5e5b6 100644 --- a/plugins/local/tc_scf/fock_3e_bi_ortho_cs.irp.f +++ b/plugins/local/tc_scf/fock_3e_bi_ortho_cs.irp.f @@ -9,7 +9,7 @@ BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_cs, (mo_num, mo_num)] double precision :: loc_1, loc_2, loc_3 double precision, allocatable :: Okappa(:), Jkappa(:,:) double precision, allocatable :: tmp_omp_d1(:), tmp_omp_d2(:,:) - double precision, allocatable :: tmp_1(:,:), tmp_2(:,:,:,:) + double precision, allocatable :: tmp_1(:,:), tmp_2(:,:,:,:), tmp_22(:,:,:) double precision, allocatable :: tmp_3(:,:,:), tmp_4(:,:,:) PROVIDE mo_l_coef mo_r_coef @@ -63,17 +63,13 @@ BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_cs, (mo_num, mo_num)] allocate(tmp_1(n_points_final_grid,4)) do ipoint = 1, n_points_final_grid - loc_1 = 2.d0 * Okappa(ipoint) - tmp_1(ipoint,1) = loc_1 * Jkappa(ipoint,1) tmp_1(ipoint,2) = loc_1 * Jkappa(ipoint,2) tmp_1(ipoint,3) = loc_1 * Jkappa(ipoint,3) - tmp_1(ipoint,4) = Okappa(ipoint) enddo - !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (ipoint, i, j, loc_1, tmp_omp_d2) & @@ -112,58 +108,81 @@ BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_cs, (mo_num, mo_num)] ! --- - allocate(tmp_2(n_points_final_grid,4,mo_num,mo_num)) + if(tc_save_mem) then - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, a, b) & - !$OMP SHARED (n_points_final_grid, mo_num, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, final_weight_at_r_vector, & - !$OMP tmp_2) - !$OMP DO COLLAPSE(2) - do a = 1, mo_num - do b = 1, mo_num - do ipoint = 1, n_points_final_grid - tmp_2(ipoint,1,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,1,b,a) - tmp_2(ipoint,2,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,2,b,a) - tmp_2(ipoint,3,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,3,b,a) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, a, b, i) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, & - !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & - !$OMP tmp_2) - !$OMP DO COLLAPSE(2) - do a = 1, mo_num - do b = 1, mo_num - tmp_2(:,4,b,a) = 0.d0 - do i = 1, elec_beta_num + allocate(tmp_22(n_points_final_grid,4,mo_num)) + do a = 1, mo_num + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b, i) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, a, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, final_weight_at_r_vector, & + !$OMP tmp_22) + !$OMP DO + do b = 1, mo_num do ipoint = 1, n_points_final_grid - tmp_2(ipoint,4,b,a) -= final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & - + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & - + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) + tmp_22(ipoint,1,b) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,1,b,a) + tmp_22(ipoint,2,b) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,2,b,a) + tmp_22(ipoint,3,b) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,3,b,a) + enddo + tmp_22(:,4,b) = 0.d0 + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + tmp_22(ipoint,4,b) -= final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & + + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & + + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call dgemv( 'T', 4*n_points_final_grid, mo_num, -2.d0 & + , tmp_22(1,1,1), size(tmp_22, 1) * size(tmp_22, 2) & + , tmp_1(1,1), 1 & + , 0.d0, fock_3e_uhf_mo_cs(1,a), 1) + enddo + deallocate(tmp_22) + + else + + allocate(tmp_2(n_points_final_grid,4,mo_num,mo_num)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, a, b, i) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, final_weight_at_r_vector, & + !$OMP tmp_2) + !$OMP DO COLLAPSE(2) + do a = 1, mo_num + do b = 1, mo_num + do ipoint = 1, n_points_final_grid + tmp_2(ipoint,1,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,1,b,a) + tmp_2(ipoint,2,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,2,b,a) + tmp_2(ipoint,3,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,3,b,a) + enddo + tmp_2(:,4,b,a) = 0.d0 + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + tmp_2(ipoint,4,b,a) -= final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & + + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & + + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) + enddo enddo enddo enddo - enddo - !$OMP END DO - !$OMP END PARALLEL + !$OMP END DO + !$OMP END PARALLEL + call dgemv( 'T', 4*n_points_final_grid, mo_num*mo_num, -2.d0 & + , tmp_2(1,1,1,1), size(tmp_2, 1) * size(tmp_2, 2) & + , tmp_1(1,1), 1 & + , 0.d0, fock_3e_uhf_mo_cs(1,1), 1) + deallocate(tmp_2) - ! --- + endif - call dgemv( 'T', 4*n_points_final_grid, mo_num*mo_num, -2.d0 & - , tmp_2(1,1,1,1), size(tmp_2, 1) * size(tmp_2, 2) & - , tmp_1(1,1), 1 & - , 0.d0, fock_3e_uhf_mo_cs(1,1), 1) - - deallocate(tmp_1, tmp_2) + deallocate(tmp_1) ! --- @@ -272,7 +291,7 @@ BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_cs, (mo_num, mo_num)] ! --- !call wall_time(tf) - !print *, ' total Wall time for fock_3e_uhf_mo_cs =', tf - ti + !print *, ' total Wall time for fock_3e_uhf_mo_cs =', (tf - ti) / 60.d0 END_PROVIDER diff --git a/plugins/local/tc_scf/fock_3e_bi_ortho_uhf.irp.f b/plugins/local/tc_scf/fock_3e_bi_ortho_uhf.irp.f index 63a1e162..47ee5b48 100644 --- a/plugins/local/tc_scf/fock_3e_bi_ortho_uhf.irp.f +++ b/plugins/local/tc_scf/fock_3e_bi_ortho_uhf.irp.f @@ -32,7 +32,7 @@ BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_a, (mo_num, mo_num)] endif !call wall_time(tf) - !print *, ' Wall time for fock_3e_uhf_mo_a =', tf - ti + !print *, ' Wall time for fock_3e_uhf_mo_a (min) =', (tf - ti)/60.d0 END_PROVIDER diff --git a/plugins/local/tc_scf/fock_tc.irp.f b/plugins/local/tc_scf/fock_tc.irp.f index 282f9873..d3ddb8ad 100644 --- a/plugins/local/tc_scf/fock_tc.irp.f +++ b/plugins/local/tc_scf/fock_tc.irp.f @@ -175,7 +175,7 @@ END_PROVIDER ! --- -BEGIN_PROVIDER [ double precision, Fock_matrix_tc_mo_alpha, (mo_num, mo_num) ] +BEGIN_PROVIDER [double precision, Fock_matrix_tc_mo_alpha, (mo_num, mo_num)] BEGIN_DOC ! Total alpha TC Fock matrix : h_c + Two-e^TC terms on the MO basis diff --git a/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f b/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f new file mode 100644 index 00000000..7ce57578 --- /dev/null +++ b/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f @@ -0,0 +1,58 @@ +! --- + +program write_ao_2e_tc_integ + + implicit none + + PROVIDE j1e_type + PROVIDE j2e_type + + print *, ' j1e_type = ', j1e_type + print *, ' j2e_type = ', j2e_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + if(tc_integ_type .eq. "numeric") then + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + endif + + call main() + +end + +! --- + +subroutine main() + + implicit none + + PROVIDE io_tc_integ + + print*, 'io_tc_integ = ', io_tc_integ + + if(io_tc_integ .ne. "Write") then + print*, 'io_tc_integ != Write' + print*, io_tc_integ + stop + endif + + PROVIDE ao_two_e_tc_tot + +end + +! --- + diff --git a/src/mol_properties/multi_s_dipole_moment.irp.f b/src/mol_properties/multi_s_dipole_moment.irp.f index f21e08cd..c7216a61 100644 --- a/src/mol_properties/multi_s_dipole_moment.irp.f +++ b/src/mol_properties/multi_s_dipole_moment.irp.f @@ -102,12 +102,28 @@ END_PROVIDER &BEGIN_PROVIDER [double precision, multi_s_z_dipole_moment_eigenval, (N_states)] implicit none + double precision, allocatable :: eigval(:), eigvec(:,:), A(:,:) PROVIDE multi_s_x_dipole_moment multi_s_y_dipole_moment multi_s_z_dipole_moment - call lapack_diag(multi_s_x_dipole_moment_eigenval(1), multi_s_x_dipole_moment_eigenvec(1,1), multi_s_x_dipole_moment(1,1), N_states, N_states) - call lapack_diag(multi_s_y_dipole_moment_eigenval(1), multi_s_y_dipole_moment_eigenvec(1,1), multi_s_y_dipole_moment(1,1), N_states, N_states) - call lapack_diag(multi_s_z_dipole_moment_eigenval(1), multi_s_z_dipole_moment_eigenvec(1,1), multi_s_z_dipole_moment(1,1), N_states, N_states) + allocate(A(N_states,N_states), eigvec(N_states,N_states), eigval(N_states)) + + A = multi_s_x_dipole_moment + call lapack_diag(eigval(1), eigvec(1,1), A(1,1), N_states, N_states) + multi_s_x_dipole_moment_eigenval = eigval + multi_s_x_dipole_moment_eigenvec = eigvec + + A = multi_s_y_dipole_moment + call lapack_diag(eigval(1), eigvec(1,1), A(1,1), N_states, N_states) + multi_s_y_dipole_moment_eigenval = eigval + multi_s_y_dipole_moment_eigenvec = eigvec + + A = multi_s_z_dipole_moment + call lapack_diag(eigval(1), eigvec(1,1), A(1,1), N_states, N_states) + multi_s_z_dipole_moment_eigenval = eigval + multi_s_z_dipole_moment_eigenvec = eigvec + + deallocate(A, eigvec, eigval) END_PROVIDER From e65d7913bfdf83159ffd50eb39c76e63dea221d5 Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Sun, 7 Apr 2024 00:43:32 +0200 Subject: [PATCH 011/159] saving lcpq --- bin/qp_convert_output_to_ezfio | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/qp_convert_output_to_ezfio b/bin/qp_convert_output_to_ezfio index 1b33f156..6f2d02d0 100755 --- a/bin/qp_convert_output_to_ezfio +++ b/bin/qp_convert_output_to_ezfio @@ -227,8 +227,8 @@ def write_ezfio(res, filename): shell_index += [nshell_tot] * len(b.prim) shell_num = len(ang_mom) - assert(shell_index[0] = 1) - assert(shell_index[-1] = shell_num) + assert(shell_index[0] == 1) + assert(shell_index[-1] == shell_num) # ~#~#~#~#~ # # W r i t e # From 2c899e6dd71247ae26cd337ede2bb13ce9419489 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Sat, 20 Apr 2024 12:39:39 +0200 Subject: [PATCH 012/159] few modif in grids --- .../extra_grid_vector.irp.f | 23 +++++++++++++++++-- .../grid_becke_vector.irp.f | 6 ++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/becke_numerical_grid/extra_grid_vector.irp.f b/src/becke_numerical_grid/extra_grid_vector.irp.f index ae167282..16a52dc6 100644 --- a/src/becke_numerical_grid/extra_grid_vector.irp.f +++ b/src/becke_numerical_grid/extra_grid_vector.irp.f @@ -47,8 +47,12 @@ END_PROVIDER END_DOC implicit none - integer :: i,j,k,l,i_count - double precision :: r(3) + integer :: i, j, k, l, i_count + double precision :: r(3) + double precision :: wall0, wall1 + + call wall_time(wall0) + print *, ' Providing extra_final_grid_points ...' i_count = 0 do j = 1, nucl_num @@ -66,10 +70,25 @@ END_PROVIDER index_final_points_extra(2,i_count) = i index_final_points_extra(3,i_count) = j index_final_points_extra_reverse(k,i,j) = i_count + + if(final_weight_at_r_vector_extra(i_count) .lt. 0.d0) then + print *, ' !!! WARNING !!!' + print *, ' negative weight !!!!' + print *, i_count, final_weight_at_r_vector_extra(i_count) + if(dabs(final_weight_at_r_vector_extra(i_count)) .lt. 1d-10) then + final_weight_at_r_vector_extra(i_count) = 0.d0 + else + stop + endif + endif enddo enddo enddo + call wall_time(wall1) + print *, ' wall time for extra_final_grid_points,', wall1 - wall0 + call print_memory_usage() + END_PROVIDER diff --git a/src/becke_numerical_grid/grid_becke_vector.irp.f b/src/becke_numerical_grid/grid_becke_vector.irp.f index 473096d0..c35918c3 100644 --- a/src/becke_numerical_grid/grid_becke_vector.irp.f +++ b/src/becke_numerical_grid/grid_becke_vector.irp.f @@ -72,7 +72,11 @@ END_PROVIDER print *, ' !!! WARNING !!!' print *, ' negative weight !!!!' print *, i_count, final_weight_at_r_vector(i_count) - stop + if(dabs(final_weight_at_r_vector(i_count)) .lt. 1d-10) then + final_weight_at_r_vector(i_count) = 0.d0 + else + stop + endif endif enddo enddo From e9dccd2364f282397df9f3b5bc4e3373fe3bd7e6 Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 25 Apr 2024 19:46:26 +0200 Subject: [PATCH 013/159] added spherical harmonics --- plugins/local/spher_harm/.gitignore | 59 +++++ plugins/local/spher_harm/NEED | 1 + plugins/local/spher_harm/README.rst | 4 + plugins/local/spher_harm/assoc_gaus_pol.irp.f | 50 ++++ plugins/local/spher_harm/spher_harm.irp.f | 217 ++++++++++++++++++ .../local/spher_harm/spher_harm_func.irp.f | 151 ++++++++++++ 6 files changed, 482 insertions(+) create mode 100644 plugins/local/spher_harm/.gitignore create mode 100644 plugins/local/spher_harm/NEED create mode 100644 plugins/local/spher_harm/README.rst create mode 100644 plugins/local/spher_harm/assoc_gaus_pol.irp.f create mode 100644 plugins/local/spher_harm/spher_harm.irp.f create mode 100644 plugins/local/spher_harm/spher_harm_func.irp.f diff --git a/plugins/local/spher_harm/.gitignore b/plugins/local/spher_harm/.gitignore new file mode 100644 index 00000000..1561915b --- /dev/null +++ b/plugins/local/spher_harm/.gitignore @@ -0,0 +1,59 @@ +IRPF90_temp/ +IRPF90_man/ +build.ninja +irpf90.make +ezfio_interface.irp.f +irpf90_entities +tags +Makefile +ao_basis +ao_one_e_ints +ao_two_e_erf_ints +ao_two_e_ints +aux_quantities +becke_numerical_grid +bitmask +cis +cisd +cipsi +davidson +davidson_dressed +davidson_undressed +density_for_dft +determinants +dft_keywords +dft_utils_in_r +dft_utils_one_e +dft_utils_two_body +dressing +dummy +electrons +ezfio_files +fci +generators_cas +generators_full +hartree_fock +iterations +kohn_sham +kohn_sham_rs +mo_basis +mo_guess +mo_one_e_ints +mo_two_e_erf_ints +mo_two_e_ints +mpi +mrpt_utils +nuclei +perturbation +pseudo +psiref_cas +psiref_utils +scf_utils +selectors_cassd +selectors_full +selectors_utils +single_ref_method +slave +tools +utils +zmq diff --git a/plugins/local/spher_harm/NEED b/plugins/local/spher_harm/NEED new file mode 100644 index 00000000..92df7f12 --- /dev/null +++ b/plugins/local/spher_harm/NEED @@ -0,0 +1 @@ +dft_utils_in_r diff --git a/plugins/local/spher_harm/README.rst b/plugins/local/spher_harm/README.rst new file mode 100644 index 00000000..bf897f73 --- /dev/null +++ b/plugins/local/spher_harm/README.rst @@ -0,0 +1,4 @@ +========== +spher_harm +========== + diff --git a/plugins/local/spher_harm/assoc_gaus_pol.irp.f b/plugins/local/spher_harm/assoc_gaus_pol.irp.f new file mode 100644 index 00000000..fa790307 --- /dev/null +++ b/plugins/local/spher_harm/assoc_gaus_pol.irp.f @@ -0,0 +1,50 @@ +double precision function plgndr(l,m,x) + integer, intent(in) :: l,m + double precision, intent(in) :: x + BEGIN_DOC + ! associated Legenre polynom P_l,m(x). Used for the Y_lm(theta,phi) + ! Taken from https://iate.oac.uncor.edu/~mario/materia/nr/numrec/f6-8.pdf + END_DOC + integer :: i,ll + double precision :: fact,pll,pmm,pmmp1,somx2 + if(m.lt.0.or.m.gt.l.or.dabs(x).gt.1.d0)then + print*,'bad arguments in plgndr' + pause + endif + pmm=1.d0 + if(m.gt.0) then + somx2=dsqrt((1.d0-x)*(1.d0+x)) + fact=1.d0 + do i=1,m + pmm=-pmm*fact*somx2 + fact=fact+2.d0 + enddo + endif ! m > 0 + if(l.eq.m) then + plgndr=pmm + else + pmmp1=x*(2*m+1)*pmm ! Compute P_m+1^m + if(l.eq.m+1) then + plgndr=pmmp1 + else ! Compute P_l^m, l> m+1 + do ll=m+2,l + pll=(x*dble(2*ll-1)*pmmp1-dble(ll+m-1)*pmm)/(ll-m) + pmm=pmmp1 + pmmp1=pll + enddo + plgndr=pll + endif ! l.eq.m+1 + endif ! l.eq.m + return +end + +double precision function ortho_assoc_gaus_pol(l1,m1,l2) + implicit none + integer, intent(in) :: l1,m1,l2 + double precision :: fact + if(l1.ne.l2)then + ortho_assoc_gaus_pol= 0.d0 + else + ortho_assoc_gaus_pol = 2.d0*fact(l1+m1) / (dble(2*l1+1)*fact(l1-m1)) + endif +end diff --git a/plugins/local/spher_harm/spher_harm.irp.f b/plugins/local/spher_harm/spher_harm.irp.f new file mode 100644 index 00000000..40661db1 --- /dev/null +++ b/plugins/local/spher_harm/spher_harm.irp.f @@ -0,0 +1,217 @@ +program spher_harm + implicit none + call test_spher_harm +! call test_cart +! call test_brutal_spheric +end + +subroutine test_cart + implicit none + include 'constants.include.F' + double precision :: r(3),theta,phi,r_abs + print*,'' + r = 0.d0 + r(1) = 1.d0 + r(2) = 1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi + print*,'' + r = 0.d0 + r(1) =-1.d0 + r(2) = 1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi + print*,'' + r = 0.d0 + r(1) =-1.d0 + r(2) =-1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi + print*,'' + r = 0.d0 + r(1) = 1.d0 + r(2) =-1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi +end + +subroutine test_spher_harm + implicit none + include 'constants.include.F' + integer :: l1,m1,i,l2,m2,lmax + double precision :: r(3),weight,accu_re, accu_im,accu + double precision :: re_ylm_1, im_ylm_1,re_ylm_2, im_ylm_2 + l1 = 0 + m1 = 0 + l2 = 0 + m2 = 0 + lmax = 5 + do l1 = 0,lmax + do m1 = -l1 ,l1 + do l2 = 0,lmax + do m2 = -l2 ,l2 + accu_re = 0.d0 + accu_im = 0.d0 + ! = \int dOmega Y_l1,m1^* Y_l2,m2 + ! = \int dOmega (re_ylm_1 -i im_ylm_1) * (re_ylm_2 +i im_ylm_2) + ! = \int dOmega (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) +i (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu = 0.d0 + do i = 1, n_points_integration_angular + double precision :: theta,phi,r_abs + r(1:3) = angular_quadrature_points(i,1:3) + weight = weights_angular_points(i) + call cartesian_to_spherical(r,theta,phi,r_abs) + if(theta.gt.pi.or.theta.lt.0.d0)then + print*,'pb with theta',theta + print*,r + endif + if(phi.gt.2.d0*pi.or.phi.lt.0.d0)then + print*,'pb with phi',phi/pi + print*,r + endif + call spher_harm_func_r3(r,l1,m1,re_ylm_1, im_ylm_1) + call spher_harm_func_r3(r,l2,m2,re_ylm_2, im_ylm_2) +! call spher_harm_func_m_pos(l1,m1,theta,phi,re_ylm_1, im_ylm_1) +! call spher_harm_func_m_pos(l2,m2,theta,phi,re_ylm_2, im_ylm_2) +! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) +! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) +! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) +! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) + accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) + accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu += weight + write(33,'(10(F16.10,X))')phi/pi + enddo + if(l1.ne.l2.or.m1.ne.m2)then + if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then + print*,'pb OFF DIAG !!!!! ' + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + endif + endif + if(l1==l2.and.m1==m2)then + if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then + print*,'pb DIAG !!!!! ' + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + endif + endif + enddo + enddo + enddo + enddo + double precision :: x,dx,xmax,xmin + integer:: nx + nx = 10000 + xmin = -5.d0 + xmax = 5.d0 + dx = (xmax - xmin)/dble(nx) + x = xmin + do i = 1, nx + write(34,*)x,datan(x),dacos(x) + x += dx + enddo +end + +subroutine test_brutal_spheric + implicit none + include 'constants.include.F' + integer :: itheta, iphi,ntheta,nphi + double precision :: theta_min, theta_max, dtheta,theta + double precision :: phi_min, phi_max, dphi,phi + double precision :: accu_re, accu_im,weight + double precision :: re_ylm_1, im_ylm_1 ,re_ylm_2, im_ylm_2,accu + integer :: l1,m1,i,l2,m2,lmax + phi_min = 0.d0 + phi_max = 2.D0 * pi + theta_min = 0.d0 + theta_max = 1.D0 * pi + ntheta = 1000 + nphi = 1000 + dphi = (phi_max - phi_min)/dble(nphi) + dtheta = (theta_max - theta_min)/dble(ntheta) + + lmax = 3 + do l1 = 0,lmax + do m1 = 0 ,l1 + do l2 = 0,lmax + do m2 = 0 ,l2 + accu_re = 0.d0 + accu_im = 0.d0 + accu = 0.d0 + theta = theta_min + do itheta = 1, ntheta + phi = phi_min + do iphi = 1, nphi +! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) +! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) + call spher_harm_func_m_pos(l1,m1,theta,phi,re_ylm_1, im_ylm_1) + call spher_harm_func_m_pos(l2,m2,theta,phi,re_ylm_2, im_ylm_2) + weight = dtheta * dphi * dsin(theta) + accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) + accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu += weight + phi += dphi + enddo + theta += dtheta + enddo + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + print*,'accu = ',accu + if(l1.ne.l2.or.m1.ne.m2)then + if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then + print*,'pb OFF DIAG !!!!! ' + endif + endif + if(l1==l2.and.m1==m2)then + if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then + print*,'pb DIAG !!!!! ' + endif + endif + enddo + enddo + enddo + enddo + + +end + +subroutine test_assoc_leg_pol + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + print *, 'Hello world' + integer :: l1,m1,ngrid,i,l2,m2 + l1 = 0 + m1 = 0 + l2 = 2 + m2 = 0 + double precision :: x, dx,xmax,accu,xmin + double precision :: plgndr,func_1,func_2,ortho_assoc_gaus_pol + ngrid = 100000 + xmax = 1.d0 + xmin = -1.d0 + dx = (xmax-xmin)/dble(ngrid) + do l2 = 0,10 + x = xmin + accu = 0.d0 + do i = 1, ngrid + func_1 = plgndr(l1,m1,x) + func_2 = plgndr(l2,m2,x) + write(33,*)x, func_1,func_2 + accu += func_1 * func_2 * dx + x += dx + enddo + print*,'l2 = ',l2 + print*,'accu = ',accu + print*,ortho_assoc_gaus_pol(l1,m1,l2) + enddo +end diff --git a/plugins/local/spher_harm/spher_harm_func.irp.f b/plugins/local/spher_harm/spher_harm_func.irp.f new file mode 100644 index 00000000..825bd8ac --- /dev/null +++ b/plugins/local/spher_harm/spher_harm_func.irp.f @@ -0,0 +1,151 @@ +subroutine spher_harm_func_r3(r,l,m,re_ylm, im_ylm) + implicit none + integer, intent(in) :: l,m + double precision, intent(in) :: r(3) + double precision, intent(out) :: re_ylm, im_ylm + + double precision :: theta, phi,r_abs + call cartesian_to_spherical(r,theta,phi,r_abs) + call spher_harm_func(l,m,theta,phi,re_ylm, im_ylm) +end + + +subroutine spher_harm_func_m_pos(l,m,theta,phi,re_ylm, im_ylm) + include 'constants.include.F' + implicit none + BEGIN_DOC +! Y_lm(theta,phi) with m >0 +! + END_DOC + double precision, intent(in) :: theta, phi + integer, intent(in) :: l,m + double precision, intent(out):: re_ylm,im_ylm + double precision :: prefact,fact,cos_theta,plgndr,p_lm + double precision :: tmp + prefact = dble(2*l+1)*fact(l-m)/(dfour_pi * fact(l+m)) + prefact = dsqrt(prefact) + cos_theta = dcos(theta) + p_lm = plgndr(l,m,cos_theta) + tmp = prefact * p_lm + re_ylm = dcos(dble(m)*phi) * tmp + im_ylm = dsin(dble(m)*phi) * tmp +end + +subroutine spher_harm_func(l,m,theta,phi,re_ylm, im_ylm) + implicit none + BEGIN_DOC + ! Y_lm(theta,phi) with -l l in spher_harm_func !! stopping ...' + stop + endif + if(m.ge.0)then + call spher_harm_func_m_pos(l,m,theta,phi,re_ylm_pos, im_ylm_pos) + re_ylm = re_ylm_pos + im_ylm = im_ylm_pos + else + minus_m = -m !> 0 + call spher_harm_func_m_pos(l,minus_m,theta,phi,re_ylm_pos, im_ylm_pos) + tmp = (-1)**minus_m + re_ylm = tmp * re_ylm_pos + im_ylm = -tmp * im_ylm_pos ! complex conjugate + endif +end + +subroutine cartesian_to_spherical(r,theta,phi,r_abs) + implicit none + double precision, intent(in) :: r(3) + double precision, intent(out):: theta, phi,r_abs + double precision :: r_2,x_2_y_2,tmp + include 'constants.include.F' + x_2_y_2 = r(1)*r(1) + r(2)*r(2) + r_2 = x_2_y_2 + r(3)*r(3) + r_abs = dsqrt(r_2) + + if(r_abs.gt.1.d-20)then + theta = dacos(r(3)/r_abs) + else + theta = 0.d0 + endif + + if(.true.)then + if(dabs(r(1)).gt.0.d0)then + tmp = datan(r(2)/r(1)) +! phi = datan2(r(2),r(1)) + endif + ! From Wikipedia on Spherical Harmonics + if(r(1).gt.0.d0)then + phi = tmp + else if(r(1).lt.0.d0.and.r(2).ge.0.d0)then + phi = tmp + pi + else if(r(1).lt.0.d0.and.r(2).lt.0.d0)then + phi = tmp - pi + else if(r(1)==0.d0.and.r(2).gt.0.d0)then + phi = 0.5d0*pi + else if(r(1)==0.d0.and.r(2).lt.0.d0)then + phi =-0.5d0*pi + else if(r(1)==0.d0.and.r(2)==0.d0)then + phi = 0.d0 + endif + if(r(2).lt.0.d0.and.r(1).le.0.d0)then + tmp = pi - dabs(phi) + phi = pi + tmp + else if(r(2).lt.0.d0.and.r(1).gt.0.d0)then + phi = dtwo_pi + phi + endif + endif + + if(.false.)then + x_2_y_2 = dsqrt(x_2_y_2) + if(dabs(x_2_y_2).gt.1.d-20.and.dabs(r(2)).gt.1.d-20)then + phi = dabs(r(2))/r(2) * dacos(r(1)/x_2_y_2) + else + phi = 0.d0 + endif + endif +end + + +subroutine spher_harm_func_expl(l,m,theta,phi,re_ylm, im_ylm) + implicit none + BEGIN_DOC + ! Y_lm(theta,phi) with -l Date: Wed, 24 Apr 2024 14:48:23 +0200 Subject: [PATCH 014/159] Begining to make some cleaning in TC --- .../local/bi_ort_ints/total_twoe_pot.irp.f | 22 +++++++++++++++++++ plugins/local/mo_localization/README.md | 2 +- .../normal_ordered.irp.f | 0 .../normal_ordered_contractions.irp.f | 0 .../normal_ordered_old.irp.f | 0 .../normal_ordered_v0.irp.f | 0 .../h_biortho.irp.f | 0 .../h_mat_triple.irp.f | 0 .../h_tc_bi_ortho_psi.irp.f | 0 .../h_tc_s2_u0.irp.f | 0 .../slater_tc_3e_slow.irp.f | 0 .../slater_tc_opt.irp.f | 0 .../slater_tc_opt_diag.irp.f | 0 .../slater_tc_opt_double.irp.f | 0 .../slater_tc_opt_single.irp.f | 0 .../slater_tc_slow.irp.f | 0 .../{tc_bi_ortho => slater_tc}/tc_hmat.irp.f | 0 plugins/local/tc_bi_ortho/NEED | 6 +---- 18 files changed, 24 insertions(+), 6 deletions(-) rename plugins/local/{tc_bi_ortho => normal_order_old}/normal_ordered.irp.f (100%) rename plugins/local/{tc_bi_ortho => normal_order_old}/normal_ordered_contractions.irp.f (100%) rename plugins/local/{tc_bi_ortho => normal_order_old}/normal_ordered_old.irp.f (100%) rename plugins/local/{tc_bi_ortho => normal_order_old}/normal_ordered_v0.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/h_biortho.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/h_mat_triple.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/h_tc_bi_ortho_psi.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/h_tc_s2_u0.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/slater_tc_3e_slow.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/slater_tc_opt.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/slater_tc_opt_diag.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/slater_tc_opt_double.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/slater_tc_opt_single.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/slater_tc_slow.irp.f (100%) rename plugins/local/{tc_bi_ortho => slater_tc}/tc_hmat.irp.f (100%) diff --git a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f index 5e6a24e9..42a7ba62 100644 --- a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f +++ b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f @@ -176,6 +176,28 @@ BEGIN_PROVIDER [double precision, mo_bi_ortho_tc_two_e, (mo_num, mo_num, mo_num, END_PROVIDER +BEGIN_PROVIDER [ double precision, mo_bi_ortho_tc_two_e_transp, (mo_num, mo_num, mo_num, mo_num)] + implicit none + BEGIN_DOC + ! + ! mo_bi_ortho_tc_two_e_transp(i,j,k,l) = = transpose of mo_bi_ortho_tc_two_e + ! + ! the potential V(r_12) contains ALL TWO-E CONTRIBUTION OF THE TC-HAMILTONIAN + ! + END_DOC + + integer :: i,j,k,l + do i = 1, mo_num + do j = 1, mo_num + do k = 1, mo_num + do l = 1, mo_num + mo_bi_ortho_tc_two_e_transp(i,j,k,l) = mo_bi_ortho_tc_two_e_transp(k,l,i,j) + enddo + enddo + enddo + enddo + +END_PROVIDER ! --- BEGIN_PROVIDER [ double precision, mo_bi_ortho_tc_two_e_jj, (mo_num,mo_num)] diff --git a/plugins/local/mo_localization/README.md b/plugins/local/mo_localization/README.md index c28a5ee1..512e36af 100644 --- a/plugins/local/mo_localization/README.md +++ b/plugins/local/mo_localization/README.md @@ -3,7 +3,7 @@ To localize the MOs: ``` qp run localization ``` -By default, the different otbital classes are automatically set by splitting +By default, the different orbital classes are automatically set by splitting the orbitales in the following classes: - Core -> Core - Active, doubly occupied -> Inactive diff --git a/plugins/local/tc_bi_ortho/normal_ordered.irp.f b/plugins/local/normal_order_old/normal_ordered.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/normal_ordered.irp.f rename to plugins/local/normal_order_old/normal_ordered.irp.f diff --git a/plugins/local/tc_bi_ortho/normal_ordered_contractions.irp.f b/plugins/local/normal_order_old/normal_ordered_contractions.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/normal_ordered_contractions.irp.f rename to plugins/local/normal_order_old/normal_ordered_contractions.irp.f diff --git a/plugins/local/tc_bi_ortho/normal_ordered_old.irp.f b/plugins/local/normal_order_old/normal_ordered_old.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/normal_ordered_old.irp.f rename to plugins/local/normal_order_old/normal_ordered_old.irp.f diff --git a/plugins/local/tc_bi_ortho/normal_ordered_v0.irp.f b/plugins/local/normal_order_old/normal_ordered_v0.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/normal_ordered_v0.irp.f rename to plugins/local/normal_order_old/normal_ordered_v0.irp.f diff --git a/plugins/local/tc_bi_ortho/h_biortho.irp.f b/plugins/local/slater_tc/h_biortho.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/h_biortho.irp.f rename to plugins/local/slater_tc/h_biortho.irp.f diff --git a/plugins/local/tc_bi_ortho/h_mat_triple.irp.f b/plugins/local/slater_tc/h_mat_triple.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/h_mat_triple.irp.f rename to plugins/local/slater_tc/h_mat_triple.irp.f diff --git a/plugins/local/tc_bi_ortho/h_tc_bi_ortho_psi.irp.f b/plugins/local/slater_tc/h_tc_bi_ortho_psi.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/h_tc_bi_ortho_psi.irp.f rename to plugins/local/slater_tc/h_tc_bi_ortho_psi.irp.f diff --git a/plugins/local/tc_bi_ortho/h_tc_s2_u0.irp.f b/plugins/local/slater_tc/h_tc_s2_u0.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/h_tc_s2_u0.irp.f rename to plugins/local/slater_tc/h_tc_s2_u0.irp.f diff --git a/plugins/local/tc_bi_ortho/slater_tc_3e_slow.irp.f b/plugins/local/slater_tc/slater_tc_3e_slow.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/slater_tc_3e_slow.irp.f rename to plugins/local/slater_tc/slater_tc_3e_slow.irp.f diff --git a/plugins/local/tc_bi_ortho/slater_tc_opt.irp.f b/plugins/local/slater_tc/slater_tc_opt.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/slater_tc_opt.irp.f rename to plugins/local/slater_tc/slater_tc_opt.irp.f diff --git a/plugins/local/tc_bi_ortho/slater_tc_opt_diag.irp.f b/plugins/local/slater_tc/slater_tc_opt_diag.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/slater_tc_opt_diag.irp.f rename to plugins/local/slater_tc/slater_tc_opt_diag.irp.f diff --git a/plugins/local/tc_bi_ortho/slater_tc_opt_double.irp.f b/plugins/local/slater_tc/slater_tc_opt_double.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/slater_tc_opt_double.irp.f rename to plugins/local/slater_tc/slater_tc_opt_double.irp.f diff --git a/plugins/local/tc_bi_ortho/slater_tc_opt_single.irp.f b/plugins/local/slater_tc/slater_tc_opt_single.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/slater_tc_opt_single.irp.f rename to plugins/local/slater_tc/slater_tc_opt_single.irp.f diff --git a/plugins/local/tc_bi_ortho/slater_tc_slow.irp.f b/plugins/local/slater_tc/slater_tc_slow.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/slater_tc_slow.irp.f rename to plugins/local/slater_tc/slater_tc_slow.irp.f diff --git a/plugins/local/tc_bi_ortho/tc_hmat.irp.f b/plugins/local/slater_tc/tc_hmat.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/tc_hmat.irp.f rename to plugins/local/slater_tc/tc_hmat.irp.f diff --git a/plugins/local/tc_bi_ortho/NEED b/plugins/local/tc_bi_ortho/NEED index 9a0c20ef..01841e02 100644 --- a/plugins/local/tc_bi_ortho/NEED +++ b/plugins/local/tc_bi_ortho/NEED @@ -1,6 +1,2 @@ -bi_ort_ints -bi_ortho_mos -tc_keywords -non_hermit_dav -dav_general_mat tc_scf +slater_tc From 05f35ab601a1f8ee17a3b55136bec92aefc96176 Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 25 Apr 2024 20:00:42 +0200 Subject: [PATCH 015/159] Added properly the routines for the test of the Spherical Harmonics --- plugins/local/spher_harm/routines_test.irp.f | 227 +++++++++++++++++++ plugins/local/spher_harm/spher_harm.irp.f | 210 ----------------- 2 files changed, 227 insertions(+), 210 deletions(-) create mode 100644 plugins/local/spher_harm/routines_test.irp.f diff --git a/plugins/local/spher_harm/routines_test.irp.f b/plugins/local/spher_harm/routines_test.irp.f new file mode 100644 index 00000000..6f7cbc1c --- /dev/null +++ b/plugins/local/spher_harm/routines_test.irp.f @@ -0,0 +1,227 @@ + +subroutine test_cart + implicit none + BEGIN_DOC + ! test for the cartesian --> spherical change of coordinates + ! + ! simple test such that the polar angle theta ranges in [0,pi] + ! + ! and the asymuthal angle phi ranges in [0,2pi] + END_DOC + include 'constants.include.F' + double precision :: r(3),theta,phi,r_abs + print*,'' + r = 0.d0 + r(1) = 1.d0 + r(2) = 1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi + print*,'' + r = 0.d0 + r(1) =-1.d0 + r(2) = 1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi + print*,'' + r = 0.d0 + r(1) =-1.d0 + r(2) =-1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi + print*,'' + r = 0.d0 + r(1) = 1.d0 + r(2) =-1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi +end + +subroutine test_spher_harm + implicit none + BEGIN_DOC + ! routine to test the spherical harmonics integration on a sphere with the grid. + ! + ! We test = delta_m1,m2 delta_l1,l2 + END_DOC + include 'constants.include.F' + integer :: l1,m1,i,l2,m2,lmax + double precision :: r(3),weight,accu_re, accu_im,accu + double precision :: re_ylm_1, im_ylm_1,re_ylm_2, im_ylm_2 + l1 = 0 + m1 = 0 + l2 = 0 + m2 = 0 + lmax = 5 + do l1 = 0,lmax + do m1 = -l1 ,l1 + do l2 = 0,lmax + do m2 = -l2 ,l2 + accu_re = 0.d0 + accu_im = 0.d0 + ! = \int dOmega Y_l1,m1^* Y_l2,m2 + ! = \int dOmega (re_ylm_1 -i im_ylm_1) * (re_ylm_2 +i im_ylm_2) + ! = \int dOmega (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) +i (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu = 0.d0 + do i = 1, n_points_integration_angular + double precision :: theta,phi,r_abs + r(1:3) = angular_quadrature_points(i,1:3) + weight = weights_angular_points(i) + call cartesian_to_spherical(r,theta,phi,r_abs) + if(theta.gt.pi.or.theta.lt.0.d0)then + print*,'pb with theta',theta + print*,r + endif + if(phi.gt.2.d0*pi.or.phi.lt.0.d0)then + print*,'pb with phi',phi/pi + print*,r + endif + call spher_harm_func_r3(r,l1,m1,re_ylm_1, im_ylm_1) + call spher_harm_func_r3(r,l2,m2,re_ylm_2, im_ylm_2) + accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) + accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu += weight + write(33,'(10(F16.10,X))')phi/pi + enddo + ! Test for the delta l1,l2 and delta m1,m2 + if(l1.ne.l2.or.m1.ne.m2)then + if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then + print*,'pb OFF DIAG !!!!! ' + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + endif + endif + if(l1==l2.and.m1==m2)then + if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then + print*,'pb DIAG !!!!! ' + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + endif + endif + enddo + enddo + enddo + enddo + double precision :: x,dx,xmax,xmin + integer:: nx + nx = 10000 + xmin = -5.d0 + xmax = 5.d0 + dx = (xmax - xmin)/dble(nx) + x = xmin + do i = 1, nx + write(34,*)x,datan(x),dacos(x) + x += dx + enddo +end + +subroutine test_brutal_spheric + implicit none + include 'constants.include.F' + BEGIN_DOC + ! test for the = delta_m1,m2 delta_l1,l2 using a two dimentional integration + ! + ! \int_0^2pi d Phi \int_-1^+1 d(cos(Theta)) Y_l1,m1^*(Theta,Phi) Y_l2,m2(Theta,Phi) + ! + != \int_0^2pi d Phi \int_0^pi dTheta sin(Theta) Y_l1,m1^*(Theta,Phi) Y_l2,m2(Theta,Phi) + ! + ! Allows to test for the general functions spher_harm_func_m_pos with spher_harm_func_expl + END_DOC + integer :: itheta, iphi,ntheta,nphi + double precision :: theta_min, theta_max, dtheta,theta + double precision :: phi_min, phi_max, dphi,phi + double precision :: accu_re, accu_im,weight + double precision :: re_ylm_1, im_ylm_1 ,re_ylm_2, im_ylm_2,accu + integer :: l1,m1,i,l2,m2,lmax + phi_min = 0.d0 + phi_max = 2.D0 * pi + theta_min = 0.d0 + theta_max = 1.D0 * pi + ntheta = 1000 + nphi = 1000 + dphi = (phi_max - phi_min)/dble(nphi) + dtheta = (theta_max - theta_min)/dble(ntheta) + + lmax = 3 + do l1 = 0,lmax + do m1 = 0 ,l1 + do l2 = 0,lmax + do m2 = 0 ,l2 + accu_re = 0.d0 + accu_im = 0.d0 + accu = 0.d0 + theta = theta_min + do itheta = 1, ntheta + phi = phi_min + do iphi = 1, nphi +! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) +! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) + call spher_harm_func_m_pos(l1,m1,theta,phi,re_ylm_1, im_ylm_1) + call spher_harm_func_m_pos(l2,m2,theta,phi,re_ylm_2, im_ylm_2) + weight = dtheta * dphi * dsin(theta) + accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) + accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu += weight + phi += dphi + enddo + theta += dtheta + enddo + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + print*,'accu = ',accu + if(l1.ne.l2.or.m1.ne.m2)then + if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then + print*,'pb OFF DIAG !!!!! ' + endif + endif + if(l1==l2.and.m1==m2)then + if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then + print*,'pb DIAG !!!!! ' + endif + endif + enddo + enddo + enddo + enddo + + +end + +subroutine test_assoc_leg_pol + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + print *, 'Hello world' + integer :: l1,m1,ngrid,i,l2,m2 + l1 = 0 + m1 = 0 + l2 = 2 + m2 = 0 + double precision :: x, dx,xmax,accu,xmin + double precision :: plgndr,func_1,func_2,ortho_assoc_gaus_pol + ngrid = 100000 + xmax = 1.d0 + xmin = -1.d0 + dx = (xmax-xmin)/dble(ngrid) + do l2 = 0,10 + x = xmin + accu = 0.d0 + do i = 1, ngrid + func_1 = plgndr(l1,m1,x) + func_2 = plgndr(l2,m2,x) + write(33,*)x, func_1,func_2 + accu += func_1 * func_2 * dx + x += dx + enddo + print*,'l2 = ',l2 + print*,'accu = ',accu + print*,ortho_assoc_gaus_pol(l1,m1,l2) + enddo +end diff --git a/plugins/local/spher_harm/spher_harm.irp.f b/plugins/local/spher_harm/spher_harm.irp.f index 40661db1..e8deafb9 100644 --- a/plugins/local/spher_harm/spher_harm.irp.f +++ b/plugins/local/spher_harm/spher_harm.irp.f @@ -5,213 +5,3 @@ program spher_harm ! call test_brutal_spheric end -subroutine test_cart - implicit none - include 'constants.include.F' - double precision :: r(3),theta,phi,r_abs - print*,'' - r = 0.d0 - r(1) = 1.d0 - r(2) = 1.d0 - call cartesian_to_spherical(r,theta,phi,r_abs) - print*,r - print*,phi/pi - print*,'' - r = 0.d0 - r(1) =-1.d0 - r(2) = 1.d0 - call cartesian_to_spherical(r,theta,phi,r_abs) - print*,r - print*,phi/pi - print*,'' - r = 0.d0 - r(1) =-1.d0 - r(2) =-1.d0 - call cartesian_to_spherical(r,theta,phi,r_abs) - print*,r - print*,phi/pi - print*,'' - r = 0.d0 - r(1) = 1.d0 - r(2) =-1.d0 - call cartesian_to_spherical(r,theta,phi,r_abs) - print*,r - print*,phi/pi -end - -subroutine test_spher_harm - implicit none - include 'constants.include.F' - integer :: l1,m1,i,l2,m2,lmax - double precision :: r(3),weight,accu_re, accu_im,accu - double precision :: re_ylm_1, im_ylm_1,re_ylm_2, im_ylm_2 - l1 = 0 - m1 = 0 - l2 = 0 - m2 = 0 - lmax = 5 - do l1 = 0,lmax - do m1 = -l1 ,l1 - do l2 = 0,lmax - do m2 = -l2 ,l2 - accu_re = 0.d0 - accu_im = 0.d0 - ! = \int dOmega Y_l1,m1^* Y_l2,m2 - ! = \int dOmega (re_ylm_1 -i im_ylm_1) * (re_ylm_2 +i im_ylm_2) - ! = \int dOmega (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) +i (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) - accu = 0.d0 - do i = 1, n_points_integration_angular - double precision :: theta,phi,r_abs - r(1:3) = angular_quadrature_points(i,1:3) - weight = weights_angular_points(i) - call cartesian_to_spherical(r,theta,phi,r_abs) - if(theta.gt.pi.or.theta.lt.0.d0)then - print*,'pb with theta',theta - print*,r - endif - if(phi.gt.2.d0*pi.or.phi.lt.0.d0)then - print*,'pb with phi',phi/pi - print*,r - endif - call spher_harm_func_r3(r,l1,m1,re_ylm_1, im_ylm_1) - call spher_harm_func_r3(r,l2,m2,re_ylm_2, im_ylm_2) -! call spher_harm_func_m_pos(l1,m1,theta,phi,re_ylm_1, im_ylm_1) -! call spher_harm_func_m_pos(l2,m2,theta,phi,re_ylm_2, im_ylm_2) -! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) -! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) -! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) -! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) - accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) - accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) - accu += weight - write(33,'(10(F16.10,X))')phi/pi - enddo - if(l1.ne.l2.or.m1.ne.m2)then - if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then - print*,'pb OFF DIAG !!!!! ' - print*,'l1,m1,l2,m2',l1,m1,l2,m2 - print*,'accu_re = ',accu_re - print*,'accu_im = ',accu_im - endif - endif - if(l1==l2.and.m1==m2)then - if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then - print*,'pb DIAG !!!!! ' - print*,'l1,m1,l2,m2',l1,m1,l2,m2 - print*,'accu_re = ',accu_re - print*,'accu_im = ',accu_im - endif - endif - enddo - enddo - enddo - enddo - double precision :: x,dx,xmax,xmin - integer:: nx - nx = 10000 - xmin = -5.d0 - xmax = 5.d0 - dx = (xmax - xmin)/dble(nx) - x = xmin - do i = 1, nx - write(34,*)x,datan(x),dacos(x) - x += dx - enddo -end - -subroutine test_brutal_spheric - implicit none - include 'constants.include.F' - integer :: itheta, iphi,ntheta,nphi - double precision :: theta_min, theta_max, dtheta,theta - double precision :: phi_min, phi_max, dphi,phi - double precision :: accu_re, accu_im,weight - double precision :: re_ylm_1, im_ylm_1 ,re_ylm_2, im_ylm_2,accu - integer :: l1,m1,i,l2,m2,lmax - phi_min = 0.d0 - phi_max = 2.D0 * pi - theta_min = 0.d0 - theta_max = 1.D0 * pi - ntheta = 1000 - nphi = 1000 - dphi = (phi_max - phi_min)/dble(nphi) - dtheta = (theta_max - theta_min)/dble(ntheta) - - lmax = 3 - do l1 = 0,lmax - do m1 = 0 ,l1 - do l2 = 0,lmax - do m2 = 0 ,l2 - accu_re = 0.d0 - accu_im = 0.d0 - accu = 0.d0 - theta = theta_min - do itheta = 1, ntheta - phi = phi_min - do iphi = 1, nphi -! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) -! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) - call spher_harm_func_m_pos(l1,m1,theta,phi,re_ylm_1, im_ylm_1) - call spher_harm_func_m_pos(l2,m2,theta,phi,re_ylm_2, im_ylm_2) - weight = dtheta * dphi * dsin(theta) - accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) - accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) - accu += weight - phi += dphi - enddo - theta += dtheta - enddo - print*,'l1,m1,l2,m2',l1,m1,l2,m2 - print*,'accu_re = ',accu_re - print*,'accu_im = ',accu_im - print*,'accu = ',accu - if(l1.ne.l2.or.m1.ne.m2)then - if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then - print*,'pb OFF DIAG !!!!! ' - endif - endif - if(l1==l2.and.m1==m2)then - if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then - print*,'pb DIAG !!!!! ' - endif - endif - enddo - enddo - enddo - enddo - - -end - -subroutine test_assoc_leg_pol - implicit none - BEGIN_DOC -! TODO : Put the documentation of the program here - END_DOC - print *, 'Hello world' - integer :: l1,m1,ngrid,i,l2,m2 - l1 = 0 - m1 = 0 - l2 = 2 - m2 = 0 - double precision :: x, dx,xmax,accu,xmin - double precision :: plgndr,func_1,func_2,ortho_assoc_gaus_pol - ngrid = 100000 - xmax = 1.d0 - xmin = -1.d0 - dx = (xmax-xmin)/dble(ngrid) - do l2 = 0,10 - x = xmin - accu = 0.d0 - do i = 1, ngrid - func_1 = plgndr(l1,m1,x) - func_2 = plgndr(l2,m2,x) - write(33,*)x, func_1,func_2 - accu += func_1 * func_2 * dx - x += dx - enddo - print*,'l2 = ',l2 - print*,'accu = ',accu - print*,ortho_assoc_gaus_pol(l1,m1,l2) - enddo -end From c3483df9a16003065a41bfa92d37274a3eb466ee Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 25 Apr 2024 20:00:42 +0200 Subject: [PATCH 016/159] Added properly the routines for the test of the Spherical Harmonics --- plugins/local/spher_harm/routines_test.irp.f | 227 +++++++++++++++++++ plugins/local/spher_harm/spher_harm.irp.f | 210 ----------------- 2 files changed, 227 insertions(+), 210 deletions(-) create mode 100644 plugins/local/spher_harm/routines_test.irp.f diff --git a/plugins/local/spher_harm/routines_test.irp.f b/plugins/local/spher_harm/routines_test.irp.f new file mode 100644 index 00000000..6f7cbc1c --- /dev/null +++ b/plugins/local/spher_harm/routines_test.irp.f @@ -0,0 +1,227 @@ + +subroutine test_cart + implicit none + BEGIN_DOC + ! test for the cartesian --> spherical change of coordinates + ! + ! simple test such that the polar angle theta ranges in [0,pi] + ! + ! and the asymuthal angle phi ranges in [0,2pi] + END_DOC + include 'constants.include.F' + double precision :: r(3),theta,phi,r_abs + print*,'' + r = 0.d0 + r(1) = 1.d0 + r(2) = 1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi + print*,'' + r = 0.d0 + r(1) =-1.d0 + r(2) = 1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi + print*,'' + r = 0.d0 + r(1) =-1.d0 + r(2) =-1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi + print*,'' + r = 0.d0 + r(1) = 1.d0 + r(2) =-1.d0 + call cartesian_to_spherical(r,theta,phi,r_abs) + print*,r + print*,phi/pi +end + +subroutine test_spher_harm + implicit none + BEGIN_DOC + ! routine to test the spherical harmonics integration on a sphere with the grid. + ! + ! We test = delta_m1,m2 delta_l1,l2 + END_DOC + include 'constants.include.F' + integer :: l1,m1,i,l2,m2,lmax + double precision :: r(3),weight,accu_re, accu_im,accu + double precision :: re_ylm_1, im_ylm_1,re_ylm_2, im_ylm_2 + l1 = 0 + m1 = 0 + l2 = 0 + m2 = 0 + lmax = 5 + do l1 = 0,lmax + do m1 = -l1 ,l1 + do l2 = 0,lmax + do m2 = -l2 ,l2 + accu_re = 0.d0 + accu_im = 0.d0 + ! = \int dOmega Y_l1,m1^* Y_l2,m2 + ! = \int dOmega (re_ylm_1 -i im_ylm_1) * (re_ylm_2 +i im_ylm_2) + ! = \int dOmega (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) +i (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu = 0.d0 + do i = 1, n_points_integration_angular + double precision :: theta,phi,r_abs + r(1:3) = angular_quadrature_points(i,1:3) + weight = weights_angular_points(i) + call cartesian_to_spherical(r,theta,phi,r_abs) + if(theta.gt.pi.or.theta.lt.0.d0)then + print*,'pb with theta',theta + print*,r + endif + if(phi.gt.2.d0*pi.or.phi.lt.0.d0)then + print*,'pb with phi',phi/pi + print*,r + endif + call spher_harm_func_r3(r,l1,m1,re_ylm_1, im_ylm_1) + call spher_harm_func_r3(r,l2,m2,re_ylm_2, im_ylm_2) + accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) + accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu += weight + write(33,'(10(F16.10,X))')phi/pi + enddo + ! Test for the delta l1,l2 and delta m1,m2 + if(l1.ne.l2.or.m1.ne.m2)then + if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then + print*,'pb OFF DIAG !!!!! ' + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + endif + endif + if(l1==l2.and.m1==m2)then + if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then + print*,'pb DIAG !!!!! ' + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + endif + endif + enddo + enddo + enddo + enddo + double precision :: x,dx,xmax,xmin + integer:: nx + nx = 10000 + xmin = -5.d0 + xmax = 5.d0 + dx = (xmax - xmin)/dble(nx) + x = xmin + do i = 1, nx + write(34,*)x,datan(x),dacos(x) + x += dx + enddo +end + +subroutine test_brutal_spheric + implicit none + include 'constants.include.F' + BEGIN_DOC + ! test for the = delta_m1,m2 delta_l1,l2 using a two dimentional integration + ! + ! \int_0^2pi d Phi \int_-1^+1 d(cos(Theta)) Y_l1,m1^*(Theta,Phi) Y_l2,m2(Theta,Phi) + ! + != \int_0^2pi d Phi \int_0^pi dTheta sin(Theta) Y_l1,m1^*(Theta,Phi) Y_l2,m2(Theta,Phi) + ! + ! Allows to test for the general functions spher_harm_func_m_pos with spher_harm_func_expl + END_DOC + integer :: itheta, iphi,ntheta,nphi + double precision :: theta_min, theta_max, dtheta,theta + double precision :: phi_min, phi_max, dphi,phi + double precision :: accu_re, accu_im,weight + double precision :: re_ylm_1, im_ylm_1 ,re_ylm_2, im_ylm_2,accu + integer :: l1,m1,i,l2,m2,lmax + phi_min = 0.d0 + phi_max = 2.D0 * pi + theta_min = 0.d0 + theta_max = 1.D0 * pi + ntheta = 1000 + nphi = 1000 + dphi = (phi_max - phi_min)/dble(nphi) + dtheta = (theta_max - theta_min)/dble(ntheta) + + lmax = 3 + do l1 = 0,lmax + do m1 = 0 ,l1 + do l2 = 0,lmax + do m2 = 0 ,l2 + accu_re = 0.d0 + accu_im = 0.d0 + accu = 0.d0 + theta = theta_min + do itheta = 1, ntheta + phi = phi_min + do iphi = 1, nphi +! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) +! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) + call spher_harm_func_m_pos(l1,m1,theta,phi,re_ylm_1, im_ylm_1) + call spher_harm_func_m_pos(l2,m2,theta,phi,re_ylm_2, im_ylm_2) + weight = dtheta * dphi * dsin(theta) + accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) + accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu += weight + phi += dphi + enddo + theta += dtheta + enddo + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + print*,'accu = ',accu + if(l1.ne.l2.or.m1.ne.m2)then + if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then + print*,'pb OFF DIAG !!!!! ' + endif + endif + if(l1==l2.and.m1==m2)then + if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then + print*,'pb DIAG !!!!! ' + endif + endif + enddo + enddo + enddo + enddo + + +end + +subroutine test_assoc_leg_pol + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + print *, 'Hello world' + integer :: l1,m1,ngrid,i,l2,m2 + l1 = 0 + m1 = 0 + l2 = 2 + m2 = 0 + double precision :: x, dx,xmax,accu,xmin + double precision :: plgndr,func_1,func_2,ortho_assoc_gaus_pol + ngrid = 100000 + xmax = 1.d0 + xmin = -1.d0 + dx = (xmax-xmin)/dble(ngrid) + do l2 = 0,10 + x = xmin + accu = 0.d0 + do i = 1, ngrid + func_1 = plgndr(l1,m1,x) + func_2 = plgndr(l2,m2,x) + write(33,*)x, func_1,func_2 + accu += func_1 * func_2 * dx + x += dx + enddo + print*,'l2 = ',l2 + print*,'accu = ',accu + print*,ortho_assoc_gaus_pol(l1,m1,l2) + enddo +end diff --git a/plugins/local/spher_harm/spher_harm.irp.f b/plugins/local/spher_harm/spher_harm.irp.f index 40661db1..e8deafb9 100644 --- a/plugins/local/spher_harm/spher_harm.irp.f +++ b/plugins/local/spher_harm/spher_harm.irp.f @@ -5,213 +5,3 @@ program spher_harm ! call test_brutal_spheric end -subroutine test_cart - implicit none - include 'constants.include.F' - double precision :: r(3),theta,phi,r_abs - print*,'' - r = 0.d0 - r(1) = 1.d0 - r(2) = 1.d0 - call cartesian_to_spherical(r,theta,phi,r_abs) - print*,r - print*,phi/pi - print*,'' - r = 0.d0 - r(1) =-1.d0 - r(2) = 1.d0 - call cartesian_to_spherical(r,theta,phi,r_abs) - print*,r - print*,phi/pi - print*,'' - r = 0.d0 - r(1) =-1.d0 - r(2) =-1.d0 - call cartesian_to_spherical(r,theta,phi,r_abs) - print*,r - print*,phi/pi - print*,'' - r = 0.d0 - r(1) = 1.d0 - r(2) =-1.d0 - call cartesian_to_spherical(r,theta,phi,r_abs) - print*,r - print*,phi/pi -end - -subroutine test_spher_harm - implicit none - include 'constants.include.F' - integer :: l1,m1,i,l2,m2,lmax - double precision :: r(3),weight,accu_re, accu_im,accu - double precision :: re_ylm_1, im_ylm_1,re_ylm_2, im_ylm_2 - l1 = 0 - m1 = 0 - l2 = 0 - m2 = 0 - lmax = 5 - do l1 = 0,lmax - do m1 = -l1 ,l1 - do l2 = 0,lmax - do m2 = -l2 ,l2 - accu_re = 0.d0 - accu_im = 0.d0 - ! = \int dOmega Y_l1,m1^* Y_l2,m2 - ! = \int dOmega (re_ylm_1 -i im_ylm_1) * (re_ylm_2 +i im_ylm_2) - ! = \int dOmega (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) +i (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) - accu = 0.d0 - do i = 1, n_points_integration_angular - double precision :: theta,phi,r_abs - r(1:3) = angular_quadrature_points(i,1:3) - weight = weights_angular_points(i) - call cartesian_to_spherical(r,theta,phi,r_abs) - if(theta.gt.pi.or.theta.lt.0.d0)then - print*,'pb with theta',theta - print*,r - endif - if(phi.gt.2.d0*pi.or.phi.lt.0.d0)then - print*,'pb with phi',phi/pi - print*,r - endif - call spher_harm_func_r3(r,l1,m1,re_ylm_1, im_ylm_1) - call spher_harm_func_r3(r,l2,m2,re_ylm_2, im_ylm_2) -! call spher_harm_func_m_pos(l1,m1,theta,phi,re_ylm_1, im_ylm_1) -! call spher_harm_func_m_pos(l2,m2,theta,phi,re_ylm_2, im_ylm_2) -! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) -! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) -! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) -! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) - accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) - accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) - accu += weight - write(33,'(10(F16.10,X))')phi/pi - enddo - if(l1.ne.l2.or.m1.ne.m2)then - if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then - print*,'pb OFF DIAG !!!!! ' - print*,'l1,m1,l2,m2',l1,m1,l2,m2 - print*,'accu_re = ',accu_re - print*,'accu_im = ',accu_im - endif - endif - if(l1==l2.and.m1==m2)then - if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then - print*,'pb DIAG !!!!! ' - print*,'l1,m1,l2,m2',l1,m1,l2,m2 - print*,'accu_re = ',accu_re - print*,'accu_im = ',accu_im - endif - endif - enddo - enddo - enddo - enddo - double precision :: x,dx,xmax,xmin - integer:: nx - nx = 10000 - xmin = -5.d0 - xmax = 5.d0 - dx = (xmax - xmin)/dble(nx) - x = xmin - do i = 1, nx - write(34,*)x,datan(x),dacos(x) - x += dx - enddo -end - -subroutine test_brutal_spheric - implicit none - include 'constants.include.F' - integer :: itheta, iphi,ntheta,nphi - double precision :: theta_min, theta_max, dtheta,theta - double precision :: phi_min, phi_max, dphi,phi - double precision :: accu_re, accu_im,weight - double precision :: re_ylm_1, im_ylm_1 ,re_ylm_2, im_ylm_2,accu - integer :: l1,m1,i,l2,m2,lmax - phi_min = 0.d0 - phi_max = 2.D0 * pi - theta_min = 0.d0 - theta_max = 1.D0 * pi - ntheta = 1000 - nphi = 1000 - dphi = (phi_max - phi_min)/dble(nphi) - dtheta = (theta_max - theta_min)/dble(ntheta) - - lmax = 3 - do l1 = 0,lmax - do m1 = 0 ,l1 - do l2 = 0,lmax - do m2 = 0 ,l2 - accu_re = 0.d0 - accu_im = 0.d0 - accu = 0.d0 - theta = theta_min - do itheta = 1, ntheta - phi = phi_min - do iphi = 1, nphi -! call spher_harm_func_expl(l1,m1,theta,phi,re_ylm_1, im_ylm_1) -! call spher_harm_func_expl(l2,m2,theta,phi,re_ylm_2, im_ylm_2) - call spher_harm_func_m_pos(l1,m1,theta,phi,re_ylm_1, im_ylm_1) - call spher_harm_func_m_pos(l2,m2,theta,phi,re_ylm_2, im_ylm_2) - weight = dtheta * dphi * dsin(theta) - accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) - accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) - accu += weight - phi += dphi - enddo - theta += dtheta - enddo - print*,'l1,m1,l2,m2',l1,m1,l2,m2 - print*,'accu_re = ',accu_re - print*,'accu_im = ',accu_im - print*,'accu = ',accu - if(l1.ne.l2.or.m1.ne.m2)then - if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then - print*,'pb OFF DIAG !!!!! ' - endif - endif - if(l1==l2.and.m1==m2)then - if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then - print*,'pb DIAG !!!!! ' - endif - endif - enddo - enddo - enddo - enddo - - -end - -subroutine test_assoc_leg_pol - implicit none - BEGIN_DOC -! TODO : Put the documentation of the program here - END_DOC - print *, 'Hello world' - integer :: l1,m1,ngrid,i,l2,m2 - l1 = 0 - m1 = 0 - l2 = 2 - m2 = 0 - double precision :: x, dx,xmax,accu,xmin - double precision :: plgndr,func_1,func_2,ortho_assoc_gaus_pol - ngrid = 100000 - xmax = 1.d0 - xmin = -1.d0 - dx = (xmax-xmin)/dble(ngrid) - do l2 = 0,10 - x = xmin - accu = 0.d0 - do i = 1, ngrid - func_1 = plgndr(l1,m1,x) - func_2 = plgndr(l2,m2,x) - write(33,*)x, func_1,func_2 - accu += func_1 * func_2 * dx - x += dx - enddo - print*,'l2 = ',l2 - print*,'accu = ',accu - print*,ortho_assoc_gaus_pol(l1,m1,l2) - enddo -end From 5c69a7c005ecabe8428c386bf17bad3327891578 Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 26 Apr 2024 10:57:57 +0200 Subject: [PATCH 017/159] removed stupid stuffs in spher_harm --- plugins/local/spher_harm/README.rst | 3 + plugins/local/spher_harm/routines_test.irp.f | 172 ++++++++++--------- plugins/local/spher_harm/spher_harm.irp.f | 4 +- 3 files changed, 93 insertions(+), 86 deletions(-) diff --git a/plugins/local/spher_harm/README.rst b/plugins/local/spher_harm/README.rst index bf897f73..9c9b12a6 100644 --- a/plugins/local/spher_harm/README.rst +++ b/plugins/local/spher_harm/README.rst @@ -2,3 +2,6 @@ spher_harm ========== +Routines for spherical Harmonics evaluation in real space. +The main routine is "spher_harm_func_r3(r,l,m,re_ylm, im_ylm)". +The test routine is "test_spher_harm" where everything is explained in details. diff --git a/plugins/local/spher_harm/routines_test.irp.f b/plugins/local/spher_harm/routines_test.irp.f index 6f7cbc1c..fe8fc422 100644 --- a/plugins/local/spher_harm/routines_test.irp.f +++ b/plugins/local/spher_harm/routines_test.irp.f @@ -1,10 +1,93 @@ +subroutine test_spher_harm + implicit none + BEGIN_DOC + ! routine to test the generic spherical harmonics routine "spher_harm_func_r3" from R^3 --> C + ! + ! We test = delta_m1,m2 delta_l1,l2 + ! + ! The test is done through the integration on a sphere with the Lebedev grid. + END_DOC + include 'constants.include.F' + integer :: l1,m1,i,l2,m2,lmax + double precision :: r(3),weight,accu_re, accu_im,accu + double precision :: re_ylm_1, im_ylm_1,re_ylm_2, im_ylm_2 + double precision :: theta,phi,r_abs + lmax = 5 ! Maximum angular momentum until which we are going to test orthogonality conditions + do l1 = 0,lmax + do m1 = -l1 ,l1 + do l2 = 0,lmax + do m2 = -l2 ,l2 + accu_re = 0.d0 ! accumulator for the REAL part of + accu_im = 0.d0 ! accumulator for the IMAGINARY part of + accu = 0.d0 ! accumulator for the weights ==> should be \int dOmega == 4 pi + ! = \int dOmega Y_l1,m1^* Y_l2,m2 + ! \approx \sum_i W_i Y_l1,m1^*(r_i) Y_l2,m2(r_i) WITH r_i being on the spher of radius 1 + do i = 1, n_points_integration_angular + r(1:3) = angular_quadrature_points(i,1:3) ! ith Lebedev point (x,y,z) on the sphere of radius 1 + weight = weights_angular_points(i) ! associated Lebdev weight not necessarily positive + +!!!!!!!!!!! Test of the Cartesian --> Spherical coordinates + ! theta MUST belong to [0,pi] and phi to [0,2pi] + ! gets the cartesian to spherical change of coordinates + call cartesian_to_spherical(r,theta,phi,r_abs) + if(theta.gt.pi.or.theta.lt.0.d0)then + print*,'pb with theta, it should be in [0,pi]',theta + print*,r + endif + if(phi.gt.2.d0*pi.or.phi.lt.0.d0)then + print*,'pb with phi, it should be in [0,2 pi]',phi/pi + print*,r + endif + +!!!!!!!!!!! Routines returning the Spherical harmonics on the grid point + call spher_harm_func_r3(r,l1,m1,re_ylm_1, im_ylm_1) + call spher_harm_func_r3(r,l2,m2,re_ylm_2, im_ylm_2) + +!!!!!!!!!!! Integration of Y_l1,m1^*(r) Y_l2,m2(r) + ! = \int dOmega (re_ylm_1 -i im_ylm_1) * (re_ylm_2 +i im_ylm_2) + ! = \int dOmega (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) +i (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) + accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) + accu += weight + enddo + ! Test that the sum of the weights is 4 pi + if(dabs(accu - dfour_pi).gt.1.d-6)then + print*,'Problem !! The sum of the Lebedev weight is not 4 pi ..' + print*,accu + stop + endif + ! Test for the delta l1,l2 and delta m1,m2 + ! + ! Test for the off-diagonal part of the Kronecker delta + if(l1.ne.l2.or.m1.ne.m2)then + if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then + print*,'pb OFF DIAG !!!!! ' + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + endif + endif + ! Test for the diagonal part of the Kronecker delta + if(l1==l2.and.m1==m2)then + if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then + print*,'pb DIAG !!!!! ' + print*,'l1,m1,l2,m2',l1,m1,l2,m2 + print*,'accu_re = ',accu_re + print*,'accu_im = ',accu_im + endif + endif + enddo + enddo + enddo + enddo +end subroutine test_cart implicit none BEGIN_DOC ! test for the cartesian --> spherical change of coordinates ! - ! simple test such that the polar angle theta ranges in [0,pi] + ! test the routine "cartesian_to_spherical" such that the polar angle theta ranges in [0,pi] ! ! and the asymuthal angle phi ranges in [0,2pi] END_DOC @@ -40,97 +123,18 @@ subroutine test_cart print*,phi/pi end -subroutine test_spher_harm - implicit none - BEGIN_DOC - ! routine to test the spherical harmonics integration on a sphere with the grid. - ! - ! We test = delta_m1,m2 delta_l1,l2 - END_DOC - include 'constants.include.F' - integer :: l1,m1,i,l2,m2,lmax - double precision :: r(3),weight,accu_re, accu_im,accu - double precision :: re_ylm_1, im_ylm_1,re_ylm_2, im_ylm_2 - l1 = 0 - m1 = 0 - l2 = 0 - m2 = 0 - lmax = 5 - do l1 = 0,lmax - do m1 = -l1 ,l1 - do l2 = 0,lmax - do m2 = -l2 ,l2 - accu_re = 0.d0 - accu_im = 0.d0 - ! = \int dOmega Y_l1,m1^* Y_l2,m2 - ! = \int dOmega (re_ylm_1 -i im_ylm_1) * (re_ylm_2 +i im_ylm_2) - ! = \int dOmega (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) +i (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) - accu = 0.d0 - do i = 1, n_points_integration_angular - double precision :: theta,phi,r_abs - r(1:3) = angular_quadrature_points(i,1:3) - weight = weights_angular_points(i) - call cartesian_to_spherical(r,theta,phi,r_abs) - if(theta.gt.pi.or.theta.lt.0.d0)then - print*,'pb with theta',theta - print*,r - endif - if(phi.gt.2.d0*pi.or.phi.lt.0.d0)then - print*,'pb with phi',phi/pi - print*,r - endif - call spher_harm_func_r3(r,l1,m1,re_ylm_1, im_ylm_1) - call spher_harm_func_r3(r,l2,m2,re_ylm_2, im_ylm_2) - accu_re += weight * (re_ylm_1*re_ylm_2 + im_ylm_1*im_ylm_2) - accu_im += weight * (im_ylm_2*re_ylm_1 - im_ylm_1*re_ylm_2) - accu += weight - write(33,'(10(F16.10,X))')phi/pi - enddo - ! Test for the delta l1,l2 and delta m1,m2 - if(l1.ne.l2.or.m1.ne.m2)then - if(dabs(accu_re).gt.1.d-6.or.dabs(accu_im).gt.1.d-6)then - print*,'pb OFF DIAG !!!!! ' - print*,'l1,m1,l2,m2',l1,m1,l2,m2 - print*,'accu_re = ',accu_re - print*,'accu_im = ',accu_im - endif - endif - if(l1==l2.and.m1==m2)then - if(dabs(accu_re-1.d0).gt.1.d-5.or.dabs(accu_im).gt.1.d-6)then - print*,'pb DIAG !!!!! ' - print*,'l1,m1,l2,m2',l1,m1,l2,m2 - print*,'accu_re = ',accu_re - print*,'accu_im = ',accu_im - endif - endif - enddo - enddo - enddo - enddo - double precision :: x,dx,xmax,xmin - integer:: nx - nx = 10000 - xmin = -5.d0 - xmax = 5.d0 - dx = (xmax - xmin)/dble(nx) - x = xmin - do i = 1, nx - write(34,*)x,datan(x),dacos(x) - x += dx - enddo -end subroutine test_brutal_spheric implicit none include 'constants.include.F' BEGIN_DOC - ! test for the = delta_m1,m2 delta_l1,l2 using a two dimentional integration + ! Test for the = delta_m1,m2 delta_l1,l2 using the following two dimentional integration ! ! \int_0^2pi d Phi \int_-1^+1 d(cos(Theta)) Y_l1,m1^*(Theta,Phi) Y_l2,m2(Theta,Phi) ! != \int_0^2pi d Phi \int_0^pi dTheta sin(Theta) Y_l1,m1^*(Theta,Phi) Y_l2,m2(Theta,Phi) ! - ! Allows to test for the general functions spher_harm_func_m_pos with spher_harm_func_expl + ! Allows to test for the general functions "spher_harm_func_m_pos" with "spher_harm_func_expl" END_DOC integer :: itheta, iphi,ntheta,nphi double precision :: theta_min, theta_max, dtheta,theta @@ -147,7 +151,7 @@ subroutine test_brutal_spheric dphi = (phi_max - phi_min)/dble(nphi) dtheta = (theta_max - theta_min)/dble(ntheta) - lmax = 3 + lmax = 2 do l1 = 0,lmax do m1 = 0 ,l1 do l2 = 0,lmax @@ -196,7 +200,7 @@ end subroutine test_assoc_leg_pol implicit none BEGIN_DOC -! TODO : Put the documentation of the program here +! Test for the associated Legendre Polynoms. The test is done through the orthogonality condition. END_DOC print *, 'Hello world' integer :: l1,m1,ngrid,i,l2,m2 diff --git a/plugins/local/spher_harm/spher_harm.irp.f b/plugins/local/spher_harm/spher_harm.irp.f index e8deafb9..7a2eea06 100644 --- a/plugins/local/spher_harm/spher_harm.irp.f +++ b/plugins/local/spher_harm/spher_harm.irp.f @@ -1,7 +1,7 @@ program spher_harm implicit none - call test_spher_harm +! call test_spher_harm ! call test_cart -! call test_brutal_spheric + call test_brutal_spheric end From 40ea886cf1f6fe18d2501f1964e4f69deb66d947 Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 1 May 2024 19:00:02 +0200 Subject: [PATCH 018/159] added NEED in local/slater_tc --- external/irpf90 | 2 +- plugins/local/slater_tc/NEED | 7 +++++++ plugins/local/slater_tc/slater_tc.irp.f | 7 +++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 plugins/local/slater_tc/NEED create mode 100644 plugins/local/slater_tc/slater_tc.irp.f diff --git a/external/irpf90 b/external/irpf90 index beac6153..4ab1b175 160000 --- a/external/irpf90 +++ b/external/irpf90 @@ -1 +1 @@ -Subproject commit beac615343f421bd6c0571a408ba389a6d5a32ac +Subproject commit 4ab1b175fc7ed0d96c1912f13dc53579b24157a6 diff --git a/plugins/local/slater_tc/NEED b/plugins/local/slater_tc/NEED new file mode 100644 index 00000000..ef0aa3f7 --- /dev/null +++ b/plugins/local/slater_tc/NEED @@ -0,0 +1,7 @@ +determinants +normal_order_old +bi_ort_ints +bi_ortho_mos +tc_keywords +non_hermit_dav +dav_general_mat diff --git a/plugins/local/slater_tc/slater_tc.irp.f b/plugins/local/slater_tc/slater_tc.irp.f new file mode 100644 index 00000000..27ab47c5 --- /dev/null +++ b/plugins/local/slater_tc/slater_tc.irp.f @@ -0,0 +1,7 @@ +program slater_tc + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + print *, 'Hello world' +end From 0465a0f4397a53daa5a3a1c8374a5e34f5b61c67 Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 1 May 2024 19:03:21 +0200 Subject: [PATCH 019/159] added local/normal_order_old/NEED --- plugins/local/normal_order_old/NEED | 1 + plugins/local/normal_order_old/README.rst | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 plugins/local/normal_order_old/NEED create mode 100644 plugins/local/normal_order_old/README.rst diff --git a/plugins/local/normal_order_old/NEED b/plugins/local/normal_order_old/NEED new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/plugins/local/normal_order_old/NEED @@ -0,0 +1 @@ + diff --git a/plugins/local/normal_order_old/README.rst b/plugins/local/normal_order_old/README.rst new file mode 100644 index 00000000..a284fcfd --- /dev/null +++ b/plugins/local/normal_order_old/README.rst @@ -0,0 +1,4 @@ +================ +normal_order_old +================ + From c50018e8bdbd0e11da5af2ddfe4032c7d6e86df2 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Wed, 1 May 2024 20:25:01 +0200 Subject: [PATCH 020/159] TC SPRING CLEANING: BEGINNING --- .../bi_ort_ints/three_body_ints_bi_ort.irp.f | 2 +- .../local/non_h_ints_mu/jast_1e_utils.irp.f | 18 +- .../local/non_h_ints_mu/numerical_integ.irp.f | 6 +- .../local/non_h_ints_mu/tc_integ_num.irp.f | 20 +- .../local/non_h_ints_mu/test_non_h_ints.irp.f | 26 +- plugins/local/non_hermit_dav/biorthog.irp.f | 1069 +---------------- .../lapack_diag_non_hermit.irp.f | 118 -- .../local/non_hermit_dav/new_routines.irp.f | 670 ----------- .../mu_j_ints_usual_mos.irp.f | 8 - plugins/local/tc_bi_ortho/EZFIO.cfg | 11 + .../local/tc_bi_ortho/print_tc_energy.irp.f | 30 +- plugins/local/tc_bi_ortho/print_tc_var.irp.f | 5 +- .../save_bitcpsileft_for_qmcchem.irp.f | 8 +- plugins/local/tc_bi_ortho/tc_utils.irp.f | 89 +- plugins/local/tc_scf/EZFIO.cfg | 4 +- plugins/local/tc_scf/combine_lr_tcscf.irp.f | 75 -- plugins/local/tc_scf/diago_vartcfock.irp.f | 96 -- plugins/local/tc_scf/diis_tcscf.irp.f | 75 +- .../local/tc_scf/fock_3e_bi_ortho_cs.irp.f | 299 ----- .../local/tc_scf/fock_3e_bi_ortho_os.irp.f | 536 --------- .../local/tc_scf/fock_3e_bi_ortho_uhf.irp.f | 77 -- .../tc_scf/fock_3e_bi_ortho_uhf_old.irp.f | 490 -------- plugins/local/tc_scf/fock_tc.irp.f | 1000 +++++++++++++-- plugins/local/tc_scf/fock_tc_mo_tot.irp.f | 11 +- plugins/local/tc_scf/fock_vartc.irp.f | 287 ----- plugins/local/tc_scf/rh_tcscf_diis.irp.f | 4 +- plugins/local/tc_scf/rh_tcscf_simple.irp.f | 2 +- plugins/local/tc_scf/rh_vartcscf_simple.irp.f | 89 -- plugins/local/tc_scf/tc_scf.irp.f | 58 +- plugins/local/tc_scf/tc_scf_energy.irp.f | 41 +- plugins/local/tc_scf/test_int.irp.f | 970 --------------- .../extra_grid_vector.irp.f | 11 - .../grid_becke_vector.irp.f | 11 - src/utils/util.irp.f | 80 +- 34 files changed, 1188 insertions(+), 5108 deletions(-) delete mode 100644 plugins/local/non_hermit_dav/new_routines.irp.f delete mode 100644 plugins/local/tc_scf/combine_lr_tcscf.irp.f delete mode 100644 plugins/local/tc_scf/diago_vartcfock.irp.f delete mode 100644 plugins/local/tc_scf/fock_3e_bi_ortho_cs.irp.f delete mode 100644 plugins/local/tc_scf/fock_3e_bi_ortho_os.irp.f delete mode 100644 plugins/local/tc_scf/fock_3e_bi_ortho_uhf.irp.f delete mode 100644 plugins/local/tc_scf/fock_3e_bi_ortho_uhf_old.irp.f delete mode 100644 plugins/local/tc_scf/fock_vartc.irp.f delete mode 100644 plugins/local/tc_scf/rh_vartcscf_simple.irp.f delete mode 100644 plugins/local/tc_scf/test_int.irp.f diff --git a/plugins/local/bi_ort_ints/three_body_ints_bi_ort.irp.f b/plugins/local/bi_ort_ints/three_body_ints_bi_ort.irp.f index fd4a162f..73e5a611 100644 --- a/plugins/local/bi_ort_ints/three_body_ints_bi_ort.irp.f +++ b/plugins/local/bi_ort_ints/three_body_ints_bi_ort.irp.f @@ -123,7 +123,7 @@ subroutine give_integrals_3_body_bi_ort_spin( n, sigma_n, l, sigma_l, k, sigma_k endif return -end subroutine give_integrals_3_body_bi_ort_spin +end ! --- diff --git a/plugins/local/non_h_ints_mu/jast_1e_utils.irp.f b/plugins/local/non_h_ints_mu/jast_1e_utils.irp.f index 9cfabf58..c6b2b0a0 100644 --- a/plugins/local/non_h_ints_mu/jast_1e_utils.irp.f +++ b/plugins/local/non_h_ints_mu/jast_1e_utils.irp.f @@ -132,6 +132,7 @@ subroutine get_j1e_coef_fit_ao2(dim_fit, coef_fit) double precision, allocatable :: A(:,:,:,:), b(:), A_tmp(:,:,:,:) double precision, allocatable :: Pa(:,:), Pb(:,:), Pt(:,:) double precision, allocatable :: u1e_tmp(:), tmp(:,:,:) + double precision, allocatable :: tmp1(:,:,:), tmp2(:,:,:) double precision, allocatable :: U(:,:), D(:), Vt(:,:), work(:) @@ -176,26 +177,27 @@ subroutine get_j1e_coef_fit_ao2(dim_fit, coef_fit) ! --- --- --- ! get A - allocate(tmp(n_points_final_grid,ao_num,ao_num)) + allocate(tmp1(n_points_final_grid,ao_num,ao_num), tmp2(n_points_final_grid,ao_num,ao_num)) allocate(A(ao_num,ao_num,ao_num,ao_num)) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (i, j, ipoint) & - !$OMP SHARED (n_points_final_grid, ao_num, final_weight_at_r_vector, aos_in_r_array_transp, tmp) + !$OMP SHARED (n_points_final_grid, ao_num, final_weight_at_r_vector, aos_in_r_array_transp, tmp1, tmp2) !$OMP DO COLLAPSE(2) do j = 1, ao_num do i = 1, ao_num do ipoint = 1, n_points_final_grid - tmp(ipoint,i,j) = dsqrt(final_weight_at_r_vector(ipoint)) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,j) + tmp1(ipoint,i,j) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,j) + tmp2(ipoint,i,j) = aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,j) enddo enddo enddo !$OMP END DO !$OMP END PARALLEL - call dgemm( "T", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & - , tmp(1,1,1), n_points_final_grid, tmp(1,1,1), n_points_final_grid & + call dgemm( "T", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & + , tmp1(1,1,1), n_points_final_grid, tmp2(1,1,1), n_points_final_grid & , 0.d0, A(1,1,1,1), ao_num*ao_num) allocate(A_tmp(ao_num,ao_num,ao_num,ao_num)) @@ -207,13 +209,13 @@ subroutine get_j1e_coef_fit_ao2(dim_fit, coef_fit) allocate(b(ao_num*ao_num)) do ipoint = 1, n_points_final_grid - u1e_tmp(ipoint) = dsqrt(final_weight_at_r_vector(ipoint)) * u1e_tmp(ipoint) + u1e_tmp(ipoint) = u1e_tmp(ipoint) enddo - call dgemv("T", n_points_final_grid, ao_num*ao_num, 1.d0, tmp(1,1,1), n_points_final_grid, u1e_tmp(1), 1, 0.d0, b(1), 1) + call dgemv("T", n_points_final_grid, ao_num*ao_num, 1.d0, tmp1(1,1,1), n_points_final_grid, u1e_tmp(1), 1, 0.d0, b(1), 1) deallocate(u1e_tmp) - deallocate(tmp) + deallocate(tmp1, tmp2) ! --- --- --- ! solve Ax = b diff --git a/plugins/local/non_h_ints_mu/numerical_integ.irp.f b/plugins/local/non_h_ints_mu/numerical_integ.irp.f index 5436b857..2737774a 100644 --- a/plugins/local/non_h_ints_mu/numerical_integ.irp.f +++ b/plugins/local/non_h_ints_mu/numerical_integ.irp.f @@ -179,7 +179,7 @@ double precision function num_v_ij_erf_rk_cst_mu_env(i, j, ipoint) dx = r1(1) - r2(1) dy = r1(2) - r2(2) dz = r1(3) - r2(3) - r12 = dsqrt( dx * dx + dy * dy + dz * dz ) + r12 = dsqrt(dx*dx + dy*dy + dz*dz) if(r12 .lt. 1d-10) cycle tmp1 = (derf(mu_erf * r12) - 1.d0) / r12 @@ -228,7 +228,7 @@ subroutine num_x_v_ij_erf_rk_cst_mu_env(i, j, ipoint, integ) dx = r1(1) - r2(1) dy = r1(2) - r2(2) dz = r1(3) - r2(3) - r12 = dsqrt( dx * dx + dy * dy + dz * dz ) + r12 = dsqrt(dx*dx + dy*dy + dz*dz) if(r12 .lt. 1d-10) cycle tmp1 = (derf(mu_erf * r12) - 1.d0) / r12 @@ -530,7 +530,7 @@ subroutine num_int2_u_grad1u_total_env2(i, j, ipoint, integ) dx = r1(1) - r2(1) dy = r1(2) - r2(2) dz = r1(3) - r2(3) - r12 = dsqrt( dx * dx + dy * dy + dz * dz ) + r12 = dsqrt(dx*dx + dy*dy + dz*dz) if(r12 .lt. 1d-10) cycle tmp0 = env_nucl(r2) diff --git a/plugins/local/non_h_ints_mu/tc_integ_num.irp.f b/plugins/local/non_h_ints_mu/tc_integ_num.irp.f index 6d446037..9d9601c0 100644 --- a/plugins/local/non_h_ints_mu/tc_integ_num.irp.f +++ b/plugins/local/non_h_ints_mu/tc_integ_num.irp.f @@ -63,12 +63,10 @@ do i_pass = 1, n_pass ii = (i_pass-1)*n_blocks + 1 - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i_blocks, ipoint) & - !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, & - !$OMP final_grid_points, tmp_grad1_u12, & - !$OMP tmp_grad1_u12_squared) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_blocks, ipoint) & + !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12, tmp_grad1_u12_squared) !$OMP DO do i_blocks = 1, n_blocks ipoint = ii - 1 + i_blocks ! r1 @@ -99,12 +97,10 @@ ii = n_pass*n_blocks + 1 - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i_rest, ipoint) & - !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, & - !$OMP final_grid_points, tmp_grad1_u12, & - !$OMP tmp_grad1_u12_squared) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_rest, ipoint) & + !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12, tmp_grad1_u12_squared) !$OMP DO do i_rest = 1, n_rest ipoint = ii - 1 + i_rest ! r1 diff --git a/plugins/local/non_h_ints_mu/test_non_h_ints.irp.f b/plugins/local/non_h_ints_mu/test_non_h_ints.irp.f index 464a1c1f..4c63dec4 100644 --- a/plugins/local/non_h_ints_mu/test_non_h_ints.irp.f +++ b/plugins/local/non_h_ints_mu/test_non_h_ints.irp.f @@ -1125,6 +1125,7 @@ subroutine test_fit_coef_A1() double precision :: accu, norm, diff double precision, allocatable :: A1(:,:) double precision, allocatable :: A2(:,:,:,:), tmp(:,:,:) + double precision, allocatable :: tmp1(:,:,:), tmp2(:,:,:) ! --- @@ -1165,16 +1166,17 @@ subroutine test_fit_coef_A1() call wall_time(t1) - allocate(tmp(ao_num,ao_num,n_points_final_grid)) + allocate(tmp1(ao_num,ao_num,n_points_final_grid), tmp2(ao_num,ao_num,n_points_final_grid)) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (i, j, ipoint) & - !$OMP SHARED (n_points_final_grid, ao_num, final_weight_at_r_vector, aos_in_r_array_transp, tmp) + !$OMP SHARED (n_points_final_grid, ao_num, final_weight_at_r_vector, aos_in_r_array_transp, tmp1, tmp2) !$OMP DO COLLAPSE(2) do j = 1, ao_num do i = 1, ao_num do ipoint = 1, n_points_final_grid - tmp(i,j,ipoint) = dsqrt(final_weight_at_r_vector(ipoint)) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,j) + tmp1(i,j,ipoint) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,j) + tmp2(i,j,ipoint) = aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,j) enddo enddo enddo @@ -1184,9 +1186,9 @@ subroutine test_fit_coef_A1() allocate(A2(ao_num,ao_num,ao_num,ao_num)) call dgemm( "N", "T", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & - , tmp(1,1,1), ao_num*ao_num, tmp(1,1,1), ao_num*ao_num & + , tmp1(1,1,1), ao_num*ao_num, tmp2(1,1,1), ao_num*ao_num & , 0.d0, A2(1,1,1,1), ao_num*ao_num) - deallocate(tmp) + deallocate(tmp1, tmp2) call wall_time(t2) print*, ' WALL TIME FOR A2 (min) =', (t2-t1)/60.d0 @@ -1238,6 +1240,7 @@ subroutine test_fit_coef_inv() double precision, allocatable :: A1(:,:), A1_inv(:,:), A1_tmp(:,:) double precision, allocatable :: A2(:,:,:,:), tmp(:,:,:), A2_inv(:,:,:,:) double precision, allocatable :: U(:,:), D(:), Vt(:,:), work(:), A2_tmp(:,:,:,:) + double precision, allocatable :: tmp1(:,:,:), tmp2(:,:,:) cutoff_svd = 5d-8 @@ -1286,16 +1289,17 @@ subroutine test_fit_coef_inv() call wall_time(t1) - allocate(tmp(n_points_final_grid,ao_num,ao_num)) + allocate(tmp1(n_points_final_grid,ao_num,ao_num), tmp2(n_points_final_grid,ao_num,ao_num)) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (i, j, ipoint) & - !$OMP SHARED (n_points_final_grid, ao_num, final_weight_at_r_vector, aos_in_r_array_transp, tmp) + !$OMP SHARED (n_points_final_grid, ao_num, final_weight_at_r_vector, aos_in_r_array_transp, tmp1, tmp2) !$OMP DO COLLAPSE(2) do j = 1, ao_num do i = 1, ao_num do ipoint = 1, n_points_final_grid - tmp(ipoint,i,j) = dsqrt(final_weight_at_r_vector(ipoint)) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,j) + tmp1(ipoint,i,j) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,j) + tmp2(ipoint,i,j) = aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,j) enddo enddo enddo @@ -1304,11 +1308,11 @@ subroutine test_fit_coef_inv() allocate(A2(ao_num,ao_num,ao_num,ao_num)) - call dgemm( "T", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & - , tmp(1,1,1), n_points_final_grid, tmp(1,1,1), n_points_final_grid & + call dgemm( "T", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & + , tmp1(1,1,1), n_points_final_grid, tmp2(1,1,1), n_points_final_grid & , 0.d0, A2(1,1,1,1), ao_num*ao_num) - deallocate(tmp) + deallocate(tmp1, tmp2) call wall_time(t2) print*, ' WALL TIME FOR A2 (min) =', (t2-t1)/60.d0 diff --git a/plugins/local/non_hermit_dav/biorthog.irp.f b/plugins/local/non_hermit_dav/biorthog.irp.f index 2229e17d..b36b0130 100644 --- a/plugins/local/non_hermit_dav/biorthog.irp.f +++ b/plugins/local/non_hermit_dav/biorthog.irp.f @@ -1,254 +1,3 @@ -subroutine non_hrmt_diag_split_degen(n, A, leigvec, reigvec, n_real_eigv, eigval) - - BEGIN_DOC - ! - ! routine which returns the sorted REAL EIGENVALUES ONLY and corresponding LEFT/RIGHT eigenvetors - ! - ! of a non hermitian matrix A(n,n) - ! - ! n_real_eigv is the number of real eigenvalues, which might be smaller than the dimension "n" - ! - END_DOC - - implicit none - - integer, intent(in) :: n - double precision, intent(in) :: A(n,n) - integer, intent(out) :: n_real_eigv - double precision, intent(out) :: reigvec(n,n), leigvec(n,n), eigval(n) - double precision, allocatable :: reigvec_tmp(:,:), leigvec_tmp(:,:) - - integer :: i, j, n_degen,k , iteration - integer :: n_good - double precision :: shift,shift_current - double precision :: r,thr - integer, allocatable :: list_good(:), iorder_origin(:),iorder(:) - double precision, allocatable :: WR(:), WI(:), Vl(:,:), VR(:,:),S(:,:) - double precision, allocatable :: Aw(:,:),diag_elem(:),A_save(:,:) - double precision, allocatable :: im_part(:),re_part(:) - - - print*,'Computing the left/right eigenvectors ...' - print*,'Using the degeneracy splitting algorithm' - - - ! pre-processing the matrix :: sorting by diagonal elements - allocate(reigvec_tmp(n,n), leigvec_tmp(n,n)) - allocate(diag_elem(n),iorder_origin(n),A_save(n,n)) - do i = 1, n - iorder_origin(i) = i - diag_elem(i) = A(i,i) - enddo - call dsort(diag_elem, iorder_origin, n) - do i = 1, n - do j = 1, n - A_save(j,i) = A(iorder_origin(j),iorder_origin(i)) - enddo - enddo - - shift = 1.d-15 - shift_current = shift - iteration = 1 - logical :: good_ortho - good_ortho = .False. - do while(n_real_eigv.ne.n.or. .not.good_ortho) - if(shift.gt.1.d-3)then - print*,'shift > 1.d-3 !!' - print*,'Your matrix intrinsically contains complex eigenvalues' - stop - endif - print*,'***** iteration = ',iteration - print*,'shift = ',shift - allocate(WR(n), WI(n), VL(n,n), VR(n,n), Aw(n,n)) - Aw = A_save - do i = 1, n - do j = 1, n - if(dabs(Aw(j,i)).lt.shift)then - Aw(j,i) = 0.d0 - endif - enddo - enddo - call lapack_diag_non_sym(n,Aw,WR,WI,VL,VR) - allocate(im_part(n),iorder(n)) - do i = 1, n - im_part(i) = -dabs(WI(i)) - iorder(i) = i - enddo - call dsort(im_part, iorder, n) - - shift_current = max(10.d0 * dabs(im_part(1)),shift) - print*,'Largest imaginary part found in eigenvalues = ',im_part(1) - print*,'Splitting the degeneracies by ',shift_current - Aw = A_save - call split_matrix_degen(Aw,n,shift_current) - deallocate( im_part, iorder ) - call lapack_diag_non_sym(n,Aw,WR,WI,VL,VR) - ! You track the real eigenvalues - n_good = 0 - do i = 1, n - if(dabs(WI(i)).lt.1.d-20)then - n_good += 1 - else - print*,'Found an imaginary component to eigenvalue' - print*,'Re(i) + Im(i)',WR(i),WI(i) - endif - enddo - allocate( list_good(n_good), iorder(n_good) ) - n_good = 0 - do i = 1, n - if(dabs(WI(i)).lt.1.d-20)then - n_good += 1 - list_good(n_good) = i - eigval(n_good) = WR(i) - endif - enddo - deallocate( WR, WI ) - - n_real_eigv = n_good - do i = 1, n_good - iorder(i) = i - enddo - - ! You sort the real eigenvalues - call dsort(eigval, iorder, n_good) - - reigvec(:,:) = 0.d0 - leigvec(:,:) = 0.d0 - do i = 1, n_real_eigv - do j = 1, n - reigvec_tmp(j,i) = VR(j,list_good(iorder(i))) - leigvec_tmp(j,i) = Vl(j,list_good(iorder(i))) - enddo - enddo - - if(n_real_eigv == n)then - allocate(S(n,n)) - call check_bi_ortho(reigvec_tmp,leigvec_tmp,n,S,accu_nd) - print*,'accu_nd = ',accu_nd - double precision :: accu_nd - good_ortho = accu_nd .lt. 1.d-10 - deallocate(S) - endif - - deallocate( list_good, iorder ) - deallocate( VL, VR, Aw) - shift *= 10.d0 - iteration += 1 - enddo - do i = 1, n - do j = 1, n - reigvec(iorder_origin(j),i) = reigvec_tmp(j,i) - leigvec(iorder_origin(j),i) = leigvec_tmp(j,i) - enddo - enddo - -end - -! --- - -subroutine non_hrmt_real_diag_new(n, A, leigvec, reigvec, n_real_eigv, eigval) - - BEGIN_DOC - ! - ! routine which returns the sorted REAL EIGENVALUES ONLY and corresponding LEFT/RIGHT eigenvetors - ! - ! of a non hermitian matrix A(n,n) - ! - ! n_real_eigv is the number of real eigenvalues, which might be smaller than the dimension "n" - ! - END_DOC - - implicit none - - integer, intent(in) :: n - double precision, intent(in) :: A(n,n) - integer, intent(out) :: n_real_eigv - double precision, intent(out) :: reigvec(n,n), leigvec(n,n), eigval(n) - - integer :: i, j - integer :: n_good - double precision :: shift,shift_current - double precision :: r,thr - integer, allocatable :: list_good(:), iorder(:) - double precision, allocatable :: WR(:), WI(:), Vl(:,:), VR(:,:) - double precision, allocatable :: Aw(:,:) - double precision, allocatable :: im_part(:) - - - print*,'Computing the left/right eigenvectors ...' - - ! Eigvalue(n) = WR(n) + i * WI(n) - shift = 1.d-10 - do while(n_real_eigv.ne.n.or.shift.gt.1.d-3) - allocate(WR(n), WI(n), VL(n,n), VR(n,n), Aw(n,n)) - Aw = A - call lapack_diag_non_sym(n,Aw,WR,WI,VL,VR) - allocate(im_part(n), iorder(n)) - do i = 1, n - im_part(i) = -dabs(WI(i)) - iorder(i) = i - enddo - shift_current = max(10.d0 * dabs(im_part(1)),shift) - print*,'adding random number of magnitude ',shift_current - Aw = A - do i = 1, n - call RANDOM_NUMBER(r) - Aw(i,i) += shift_current * r - enddo - deallocate( im_part, iorder ) - call lapack_diag_non_sym(n,Aw,WR,WI,VL,VR) - - ! You track the real eigenvalues - thr = 1.d-10 - n_good = 0 - do i = 1, n - if(dabs(WI(i)).lt.thr)then - n_good += 1 - else - print*,'Found an imaginary component to eigenvalue' - print*,'Re(i) + Im(i)',WR(i),WI(i) - endif - enddo - - allocate( list_good(n_good), iorder(n_good) ) - n_good = 0 - do i = 1, n - if(dabs(WI(i)).lt.thr)then - n_good += 1 - list_good(n_good) = i - eigval(n_good) = WR(i) - endif - enddo - - deallocate( WR, WI ) - - n_real_eigv = n_good - do i = 1, n_good - iorder(i) = i - enddo - - ! You sort the real eigenvalues - call dsort(eigval, iorder, n_good) - - reigvec(:,:) = 0.d0 - leigvec(:,:) = 0.d0 - do i = 1, n_real_eigv - do j = 1, n - reigvec(j,i) = VR(j,list_good(iorder(i))) - leigvec(j,i) = Vl(j,list_good(iorder(i))) - enddo - enddo - - deallocate( list_good, iorder ) - deallocate( VL, VR, Aw) - shift *= 10.d0 - enddo - if(shift.gt.1.d-3)then - print*,'shift > 1.d-3 !!' - print*,'Your matrix intrinsically contains complex eigenvalues' - endif - -end ! --- @@ -282,126 +31,20 @@ subroutine non_hrmt_bieig(n, A, thr_d, thr_nd, leigvec, reigvec, n_real_eigv, ei allocate(phi_1_tilde(n),phi_2_tilde(n),chi_1_tilde(n),chi_2_tilde(n)) - - ! ------------------------------------------------------------------------------------- - ! - - !print *, ' ' - !print *, ' Computing the left/right eigenvectors ...' - !print *, ' ' - allocate(WR(n), WI(n), VL(n,n), VR(n,n)) - - !print *, ' fock matrix' - !do i = 1, n - ! write(*, '(1000(F16.10,X))') A(i,:) - !enddo - !thr_cut = 1.d-15 - !call cancel_small_elmts(A, n, thr_cut) - - !call lapack_diag_non_sym_right(n, A, WR, WI, VR) call lapack_diag_non_sym(n, A, WR, WI, VL, VR) - !call lapack_diag_non_sym_new(n, A, WR, WI, VL, VR) - - - - !print *, ' ' - !print *, ' eigenvalues' - i = 1 - do while(i .le. n) - !write(*, '(I3,X,1000(F16.10,X))')i, WR(i), WI(i) - if(.false.)then - if(WI(i).ne.0.d0)then - print*,'*****************' - print*,'WARNING ! IMAGINARY EIGENVALUES !!!' - write(*, '(1000(F16.10,X))') WR(i), WI(i+1) - ! phi = VR(:,i), psi = VR(:,i+1), |Phi_i> = phi + j psi , |Phi_i+1> = phi - j psi - ! chi = VL(:,i), xhi = VL(:,i+1), |Chi_i> = chi + j xhi , |Chi_i+1> = chi - j xhi - ! - accu_chi_phi = 0.d0 - accu_xhi_psi = 0.d0 - accu_chi_psi = 0.d0 - accu_xhi_phi = 0.d0 - double precision :: accu_chi_phi, accu_xhi_psi, accu_chi_psi, accu_xhi_phi - double precision :: mat_ovlp(2,2),eigval_tmp(2),eigvec(2,2),mat_ovlp_orig(2,2) - do j = 1, n - accu_chi_phi += VL(j,i) * VR(j,i) - accu_xhi_psi += VL(j,i+1) * VR(j,i+1) - accu_chi_psi += VL(j,i) * VR(j,i+1) - accu_xhi_phi += VL(j,i+1) * VR(j,i) - enddo - mat_ovlp_orig(1,1) = accu_chi_phi - mat_ovlp_orig(2,1) = accu_xhi_phi - mat_ovlp_orig(1,2) = accu_chi_psi - mat_ovlp_orig(2,2) = accu_xhi_psi - print*,'old overlap matrix ' - write(*,'(100(F16.10,X))')mat_ovlp_orig(1:2,1) - write(*,'(100(F16.10,X))')mat_ovlp_orig(1:2,2) - - - mat_ovlp(1,1) = accu_xhi_phi - mat_ovlp(2,1) = accu_chi_phi - mat_ovlp(1,2) = accu_xhi_psi - mat_ovlp(2,2) = accu_chi_psi - !print*,'accu_chi_phi = ',accu_chi_phi - !print*,'accu_xhi_psi = ',accu_xhi_psi - !print*,'accu_chi_psi = ',accu_chi_psi - !print*,'accu_xhi_phi = ',accu_xhi_phi - print*,'new overlap matrix ' - write(*,'(100(F16.10,X))')mat_ovlp(1:2,1) - write(*,'(100(F16.10,X))')mat_ovlp(1:2,2) - call lapack_diag(eigval_tmp,eigvec,mat_ovlp,2,2) - print*,'eigval_tmp(1) = ',eigval_tmp(1) - print*,'eigvec(1) = ',eigvec(1:2,1) - print*,'eigval_tmp(2) = ',eigval_tmp(2) - print*,'eigvec(2) = ',eigvec(1:2,2) - print*,'*****************' - phi_1_tilde = 0.d0 - phi_2_tilde = 0.d0 - chi_1_tilde = 0.d0 - chi_2_tilde = 0.d0 - do j = 1, n - phi_1_tilde(j) += VR(j,i) * eigvec(1,1) + VR(j,i+1) * eigvec(2,1) - phi_2_tilde(j) += VR(j,i) * eigvec(1,2) + VR(j,i+1) * eigvec(2,2) - chi_1_tilde(j) += VL(j,i+1) * eigvec(1,1) + VL(j,i) * eigvec(2,1) - chi_2_tilde(j) += VL(j,i+1) * eigvec(1,2) + VL(j,i) * eigvec(2,2) - enddo - VR(1:n,i) = phi_1_tilde(1:n) - VR(1:n,i+1) = phi_2_tilde(1:n) -! Vl(1:n,i) = -chi_1_tilde(1:n) -! Vl(1:n,i+1) = chi_2_tilde(1:n) - i+=1 - endif - endif - i+=1 - enddo - !print *, ' right eigenvect bef' - !do i = 1, n - ! write(*, '(1000(F16.10,X))') VR(:,i) - !enddo - !print *, ' left eigenvect bef' - !do i = 1, n - ! write(*, '(1000(F16.10,X))') VL(:,i) - !enddo thr_diag = 1d-06 thr_norm = 1d+10 - !call check_EIGVEC(n, n, A, WR, VL, VR, thr_diag, thr_norm, .false.) - - ! - ! ------------------------------------------------------------------------------------- ! --- - ! ------------------------------------------------------------------------------------- - ! track & sort the real eigenvalues + ! track & sort the real eigenvalues n_good = 0 - !thr = 100d0 thr = Im_thresh_tcscf do i = 1, n - !print*, 'Re(i) + Im(i)', WR(i), WI(i) if(dabs(WI(i)) .lt. thr) then n_good += 1 else @@ -410,11 +53,12 @@ subroutine non_hrmt_bieig(n, A, thr_d, thr_nd, leigvec, reigvec, n_real_eigv, ei endif enddo - if(n_good.ne.n)then - print*,'there are some imaginary eigenvalues ' - thr_diag = 1d-03 - n_good = n + if(n_good.ne.n) then + print*,'there are some imaginary eigenvalues ' + thr_diag = 1d-03 + n_good = n endif + allocate(list_good(n_good), iorder(n_good)) n_good = 0 @@ -446,26 +90,9 @@ subroutine non_hrmt_bieig(n, A, thr_d, thr_nd, leigvec, reigvec, n_real_eigv, ei ASSERT(n==n_real_eigv) - !print *, ' eigenvalues' - !do i = 1, n - ! write(*, '(1000(F16.10,X))') eigval(i) - !enddo - !print *, ' right eigenvect aft ord' - !do i = 1, n - ! write(*, '(1000(F16.10,X))') reigvec(:,i) - !enddo - !print *, ' left eigenvect aft ord' - !do i = 1, n - ! write(*, '(1000(F16.10,X))') leigvec(:,i) - !enddo - - ! - ! ------------------------------------------------------------------------------------- - ! --- - ! ------------------------------------------------------------------------------------- - ! check bi-orthogonality + ! check bi-orthogonality thr_diag = 10.d0 thr_norm = 1d+10 @@ -495,8 +122,6 @@ subroutine non_hrmt_bieig(n, A, thr_d, thr_nd, leigvec, reigvec, n_real_eigv, ei print *, ' lapack vectors are not normalized neither bi-orthogonalized' - ! --- - allocate(deg_num(n)) call reorder_degen_eigvec(n, deg_num, eigval, leigvec, reigvec) call impose_biorthog_degen_eigvec(n, deg_num, eigval, leigvec, reigvec) @@ -508,700 +133,36 @@ subroutine non_hrmt_bieig(n, A, thr_d, thr_nd, leigvec, reigvec, n_real_eigv, ei endif call check_biorthog(n, n_real_eigv, leigvec, reigvec, accu_d, accu_nd, S, thr_d, thr_nd, .true.) - !call check_EIGVEC(n, n, A, eigval, leigvec, reigvec, thr_diag, thr_norm, .true.) - deallocate(S) endif - ! - ! ------------------------------------------------------------------------------------- - return end ! --- -subroutine non_hrmt_bieig_random_diag(n, A, leigvec, reigvec, n_real_eigv, eigval) +subroutine check_bi_ortho(reigvec, leigvec, n, S, accu_nd) BEGIN_DOC - ! - ! routine which returns the sorted REAL EIGENVALUES ONLY and corresponding LEFT/RIGHT eigenvetors - ! of a non hermitian matrix A(n,n) - ! - ! n_real_eigv is the number of real eigenvalues, which might be smaller than the dimension "n" + ! retunrs the overlap matrix S = Leigvec^T Reigvec ! + ! and the square root of the sum of the squared off-diagonal elements of S END_DOC implicit none integer, intent(in) :: n - double precision, intent(in) :: A(n,n) - integer, intent(out) :: n_real_eigv - double precision, intent(out) :: reigvec(n,n), leigvec(n,n), eigval(n) + double precision, intent(in) :: reigvec(n,n), leigvec(n,n) + double precision, intent(out) :: S(n,n), accu_nd - integer :: i, j - integer :: n_good - double precision :: thr - double precision :: accu_nd + integer :: i,j - integer, allocatable :: list_good(:), iorder(:) - double precision, allocatable :: Aw(:,:) - double precision, allocatable :: WR(:), WI(:), VL(:,:), VR(:,:) - double precision, allocatable :: S(:,:) - double precision :: r - - - ! ------------------------------------------------------------------------------------- - ! - - print *, 'Computing the left/right eigenvectors ...' - allocate( WR(n), WI(n), VL(n,n), VR(n,n), Aw(n,n) ) - - Aw(:,:) = A(:,:) - call lapack_diag_non_sym_new(n, Aw, WR, WI, VL, VR) - - thr = 1.d-12 - double precision, allocatable :: im_part(:) - n_good = 0 - do i = 1, n - if( dabs(WI(i)).lt.thr ) then - n_good += 1 - else - print*, 'Found an imaginary component to eigenvalue on i = ', i - print*, 'Re(i) + Im(i)', WR(i), WI(i) - endif - enddo - print*,'n_good = ',n_good - if(n_good .lt. n)then - print*,'Removing degeneracies to remove imaginary parts' - allocate(im_part(n),iorder(n)) - r = 0.d0 - do i = 1, n - im_part(i) = -dabs(WI(i)) - iorder(i) = i - enddo - call dsort(im_part,iorder,n) - thr = 10.d0 * dabs(im_part(1)) - print*,'adding random numbers on the diagonal of magnitude ',thr - Aw(:,:) = A(:,:) - do i = 1, n - call RANDOM_NUMBER(r) - print*,'r = ',r*thr - Aw(i,i) += thr * r - enddo - print*,'Rediagonalizing the matrix with random numbers' - call lapack_diag_non_sym_new(n, Aw, WR, WI, VL, VR) - deallocate(im_part,iorder) - endif - deallocate( Aw ) - - ! - ! ------------------------------------------------------------------------------------- - - ! --- - - ! ------------------------------------------------------------------------------------- - ! track & sort the real eigenvalues - - n_good = 0 - thr = 1.d-5 - do i = 1, n - if( dabs(WI(i)).lt.thr ) then - n_good += 1 - else - print*, 'Found an imaginary component to eigenvalue on i = ', i - print*, 'Re(i) + Im(i)', WR(i), WI(i) - endif - enddo - print*,'n_good = ',n_good - allocate( list_good(n_good), iorder(n_good) ) - - n_good = 0 - do i = 1, n - if( dabs(WI(i)).lt.thr ) then - n_good += 1 - list_good(n_good) = i - eigval(n_good) = WR(i) - endif - enddo - - deallocate( WR, WI ) - - n_real_eigv = n_good - do i = 1, n_good - iorder(i) = i - enddo - call dsort(eigval, iorder, n_good) - - reigvec(:,:) = 0.d0 - leigvec(:,:) = 0.d0 - do i = 1, n_real_eigv - do j = 1, n - reigvec(j,i) = VR(j,list_good(iorder(i))) - leigvec(j,i) = VL(j,list_good(iorder(i))) - enddo - enddo - - deallocate( list_good, iorder ) - deallocate( VL, VR ) - - ! - ! ------------------------------------------------------------------------------------- - - ! --- - - ! ------------------------------------------------------------------------------------- - ! check bi-orthogonality - - allocate( S(n_real_eigv,n_real_eigv) ) - - ! S = VL x VR - call dgemm( 'T', 'N', n_real_eigv, n_real_eigv, n, 1.d0 & - , leigvec, size(leigvec, 1), reigvec, size(reigvec, 1) & - , 0.d0, S, size(S, 1) ) - - accu_nd = 0.d0 - do i = 1, n_real_eigv - do j = 1, n_real_eigv - if(i==j) cycle - accu_nd = accu_nd + S(j,i) * S(j,i) - enddo - enddo - accu_nd = dsqrt(accu_nd) - - if(accu_nd .lt. thresh_biorthog_nondiag) then - ! L x R is already bi-orthogonal - - print *, ' L & T bi-orthogonality: ok' - deallocate( S ) - return - - else - ! impose bi-orthogonality - - print *, ' L & T bi-orthogonality: not imposed yet' - print *, ' accu_nd = ', accu_nd - call impose_biorthog_qr(n, n_real_eigv, thresh_biorthog_diag, thresh_biorthog_nondiag, leigvec, reigvec) - deallocate( S ) - - endif - - ! - ! ------------------------------------------------------------------------------------- - - return - -end - -! --- - -subroutine non_hrmt_real_im(n, A, leigvec, reigvec, n_real_eigv, eigval) - - BEGIN_DOC - ! - ! routine which returns the EIGENVALUES sorted the REAL part and corresponding LEFT/RIGHT eigenvetors - ! of a non hermitian matrix A(n,n) - ! - ! n_real_eigv is the number of real eigenvalues, which might be smaller than the dimension "n" - ! - END_DOC - - implicit none - integer, intent(in) :: n - double precision, intent(in) :: A(n,n) - integer, intent(out) :: n_real_eigv - double precision, intent(out) :: reigvec(n,n), leigvec(n,n), eigval(n) - - integer :: i, j - integer :: n_bad - double precision :: thr - double precision :: accu_nd - - integer, allocatable :: iorder(:) - double precision, allocatable :: Aw(:,:) - double precision, allocatable :: WR(:), WI(:), VL(:,:), VR(:,:) - double precision, allocatable :: S(:,:) - double precision :: r - - ! ------------------------------------------------------------------------------------- - ! - - print *, 'Computing the left/right eigenvectors ...' - allocate( WR(n), WI(n), VL(n,n), VR(n,n), Aw(n,n), iorder(n)) - - Aw(:,:) = A(:,:) - do i = 1, n - call RANDOM_NUMBER(r) - Aw(i,i) += 10.d-10* r - enddo - call lapack_diag_non_sym(n, Aw, WR, WI, VL, VR) - - ! ------------------------------------------------------------------------------------- - ! track & sort the real eigenvalues - - i = 1 - thr = 1.d-15 - n_real_eigv = 0 - do while (i.le.n) -! print*,i,dabs(WI(i)) - if( dabs(WI(i)).gt.thr ) then - print*, 'Found an imaginary component to eigenvalue on i = ', i - print*, 'Re(i) , Im(i) ', WR(i), WI(i) - iorder(i) = i - eigval(i) = WR(i) - i+=1 - print*, 'Re(i+1),Im(i+1)',WR(i), WI(i) - iorder(i) = i - eigval(i) = WR(i) - i+=1 - else - n_real_eigv += 1 - iorder(i) = i - eigval(i) = WR(i) - i+=1 - endif - enddo - call dsort(eigval, iorder, n) - reigvec(:,:) = 0.d0 - leigvec(:,:) = 0.d0 - do i = 1, n - do j = 1, n - reigvec(j,i) = VR(j,iorder(i)) - leigvec(j,i) = VL(j,iorder(i)) - enddo - enddo - - deallocate( iorder ) - deallocate( VL, VR ) - - ! - ! ------------------------------------------------------------------------------------- - - ! --- - - ! ------------------------------------------------------------------------------------- - ! check bi-orthogonality - - allocate( S(n,n) ) - - ! S = VL x VR - call dgemm( 'T', 'N', n, n, n, 1.d0 & - , leigvec, size(leigvec, 1), reigvec, size(reigvec, 1) & - , 0.d0, S, size(S, 1) ) - - accu_nd = 0.d0 - do i = 1, n - do j = 1, n - if(i==j) cycle - accu_nd = accu_nd + S(j,i) * S(j,i) - enddo - enddo - accu_nd = dsqrt(accu_nd) - - deallocate( S ) - -end - -! --- - -subroutine non_hrmt_generalized_real_im(n, A, B, leigvec, reigvec, n_real_eigv, eigval) - - BEGIN_DOC - ! - ! routine which returns the EIGENVALUES sorted the REAL part and corresponding LEFT/RIGHT eigenvetors - ! for A R = lambda B R and A^\dagger L = lambda B^\dagger L - ! - ! n_real_eigv is the number of real eigenvalues, which might be smaller than the dimension "n" - ! - END_DOC - - implicit none - integer, intent(in) :: n - double precision, intent(in) :: A(n,n),B(n,n) - integer, intent(out) :: n_real_eigv - double precision, intent(out) :: reigvec(n,n), leigvec(n,n), eigval(n) - - integer :: i, j - integer :: n_bad - double precision :: thr - double precision :: accu_nd - - integer, allocatable :: iorder(:) - double precision, allocatable :: Aw(:,:),Bw(:,:) - double precision, allocatable :: WR(:), WI(:), VL(:,:), VR(:,:), beta(:) - double precision, allocatable :: S(:,:) - double precision :: r - - ! ------------------------------------------------------------------------------------- - ! - - print *, 'Computing the left/right eigenvectors ...' - allocate( WR(n), WI(n), VL(n,n), VR(n,n), Aw(n,n), Bw(n,n),iorder(n),beta(n)) - - Aw(:,:) = A(:,:) - Bw(:,:) = B(:,:) - call lapack_diag_general_non_sym(n,Aw,Bw,WR,beta,WI,VL,VR) - - ! ------------------------------------------------------------------------------------- - ! track & sort the real eigenvalues - - i = 1 - thr = 1.d-10 - n_real_eigv = 0 - do while (i.le.n) - if( dabs(WI(i)).gt.thr ) then - print*, 'Found an imaginary component to eigenvalue on i = ', i - print*, 'Re(i) , Im(i) ', WR(i), WI(i) - iorder(i) = i - eigval(i) = WR(i)/(beta(i) + 1.d-10) - i+=1 - print*, 'Re(i+1),Im(i+1)',WR(i), WI(i) - iorder(i) = i - eigval(i) = WR(i)/(beta(i) + 1.d-10) - i+=1 - else - n_real_eigv += 1 - iorder(i) = i - eigval(i) = WR(i)/(beta(i) + 1.d-10) - i+=1 - endif - enddo - call dsort(eigval, iorder, n) - reigvec(:,:) = 0.d0 - leigvec(:,:) = 0.d0 - do i = 1, n - do j = 1, n - reigvec(j,i) = VR(j,iorder(i)) - leigvec(j,i) = VL(j,iorder(i)) - enddo - enddo - - deallocate( iorder ) - deallocate( VL, VR ) - - ! - ! ------------------------------------------------------------------------------------- - - ! --- - - ! ------------------------------------------------------------------------------------- - ! check bi-orthogonality - - allocate( S(n,n) ) - - ! S = VL x VR - call dgemm( 'T', 'N', n, n, n, 1.d0 & - , leigvec, size(leigvec, 1), reigvec, size(reigvec, 1) & - , 0.d0, S, size(S, 1) ) - - accu_nd = 0.d0 - do i = 1, n - do j = 1, n - if(i==j) cycle - accu_nd = accu_nd + S(j,i) * S(j,i) - enddo - enddo - accu_nd = dsqrt(accu_nd) - - deallocate( S ) - -end - -! --- - -subroutine non_hrmt_bieig_fullvect(n, A, leigvec, reigvec, n_real_eigv, eigval) - - BEGIN_DOC - ! - ! routine which returns the sorted REAL EIGENVALUES ONLY and corresponding LEFT/RIGHT eigenvetors - ! of a non hermitian matrix A(n,n) - ! - ! n_real_eigv is the number of real eigenvalues, which might be smaller than the dimension "n" - ! - END_DOC - - implicit none - integer, intent(in) :: n - double precision, intent(in) :: A(n,n) - integer, intent(out) :: n_real_eigv - double precision, intent(out) :: reigvec(n,n), leigvec(n,n), eigval(n) - - integer :: i, j - integer :: n_good - double precision :: thr - double precision :: accu_nd - - integer, allocatable :: iorder(:) - double precision, allocatable :: Aw(:,:) - double precision, allocatable :: WR(:), WI(:), VL(:,:), VR(:,:) - double precision, allocatable :: S(:,:) - double precision, allocatable :: eigval_sorted(:) - - - ! ------------------------------------------------------------------------------------- - ! - - print *, 'Computing the left/right eigenvectors ...' - - allocate( WR(n), WI(n), VL(n,n), VR(n,n), Aw(n,n) ) - Aw(:,:) = A(:,:) - - call lapack_diag_non_sym_new(n, Aw, WR, WI, VL, VR) - - deallocate( Aw ) - - ! - ! ------------------------------------------------------------------------------------- - - ! --- - - ! ------------------------------------------------------------------------------------- - ! track & sort the real eigenvalues - - allocate( eigval_sorted(n), iorder(n) ) - - n_good = 0 - thr = 1.d-10 - - do i = 1, n - - iorder(i) = i - eigval_sorted(i) = WR(i) - - if(dabs(WI(i)) .gt. thr) then - print*, ' Found an imaginary component to eigenvalue on i = ', i - print*, ' Re(i) + Im(i)', WR(i), WI(i) - else - n_good += 1 - endif - - enddo - - n_real_eigv = n_good - - call dsort(eigval_sorted, iorder, n) - - reigvec(:,:) = 0.d0 - leigvec(:,:) = 0.d0 - do i = 1, n - eigval(i) = WR(i) - do j = 1, n - reigvec(j,i) = VR(j,iorder(i)) - leigvec(j,i) = VL(j,iorder(i)) - enddo - enddo - - deallocate( eigval_sorted, iorder ) - deallocate( WR, WI ) - deallocate( VL, VR ) - - ! - ! ------------------------------------------------------------------------------------- - - ! --- - - ! ------------------------------------------------------------------------------------- - ! check bi-orthogonality - - allocate( S(n,n) ) - - ! S = VL x VR - call dgemm( 'T', 'N', n, n, n, 1.d0 & - , leigvec, size(leigvec, 1), reigvec, size(reigvec, 1) & - , 0.d0, S, size(S, 1) ) - - accu_nd = 0.d0 - do i = 1, n - do j = 1, n - if(i==j) cycle - accu_nd = accu_nd + S(j,i) * S(j,i) - enddo - enddo - accu_nd = dsqrt(accu_nd) - - if(accu_nd .lt. thresh_biorthog_nondiag) then - ! L x R is already bi-orthogonal - - !print *, ' L & T bi-orthogonality: ok' - deallocate( S ) - return - - else - ! impose bi-orthogonality - - !print *, ' L & T bi-orthogonality: not imposed yet' - !print *, ' accu_nd = ', accu_nd - call impose_biorthog_qr(n, n, thresh_biorthog_diag, thresh_biorthog_nondiag, leigvec, reigvec) - deallocate( S ) - - endif - - ! - ! ------------------------------------------------------------------------------------- - - return - -end - -! --- - - -subroutine split_matrix_degen(aw,n,shift) - implicit none - BEGIN_DOC - ! subroutines that splits the degeneracies of a matrix by adding a splitting of magnitude thr * n_degen/2 - ! - ! WARNING !! THE MATRIX IS ASSUMED TO BE PASSED WITH INCREASING DIAGONAL ELEMENTS - END_DOC - double precision,intent(inout) :: Aw(n,n) - double precision,intent(in) :: shift - integer, intent(in) :: n - integer :: i,j,n_degen - logical :: keep_on - i=1 - do while(i.lt.n) - if(dabs(Aw(i,i)-Aw(i+1,i+1)).lt.shift)then - j=1 - keep_on = .True. - do while(keep_on) - if(i+j.gt.n)then - keep_on = .False. - exit - endif - if(dabs(Aw(i,i)-Aw(i+j,i+j)).lt.shift)then - j+=1 - else - keep_on=.False. - exit - endif - enddo - n_degen = j - j=0 - keep_on = .True. - do while(keep_on) - if(i+j+1.gt.n)then - keep_on = .False. - exit - endif - if(dabs(Aw(i+j,i+j)-Aw(i+j+1,i+j+1)).lt.shift)then - Aw(i+j,i+j) += (j-n_degen/2) * shift - j+=1 - else - keep_on = .False. - exit - endif - enddo - Aw(i+n_degen-1,i+n_degen-1) += (n_degen-1-n_degen/2) * shift - i+=n_degen - else - i+=1 - endif - enddo - -end - -subroutine give_degen(a,n,shift,list_degen,n_degen_list) - implicit none - BEGIN_DOC - ! returns n_degen_list :: the number of degenerated SET of elements (i.e. with |A(i)-A(i+1)| below shift) - ! - ! for each of these sets, list_degen(1,i) = first degenerate element of the set i, - ! - ! list_degen(2,i) = last degenerate element of the set i. - END_DOC - double precision,intent(in) :: A(n) - double precision,intent(in) :: shift - integer, intent(in) :: n - integer, intent(out) :: list_degen(2,n),n_degen_list - integer :: i,j,n_degen,k - logical :: keep_on - double precision,allocatable :: Aw(:) - list_degen = -1 - allocate(Aw(n)) - Aw = A - i=1 - k = 0 - do while(i.lt.n) - if(dabs(Aw(i)-Aw(i+1)).lt.shift)then - k+=1 - j=1 - list_degen(1,k) = i - keep_on = .True. - do while(keep_on) - if(i+j.gt.n)then - keep_on = .False. - exit - endif - if(dabs(Aw(i)-Aw(i+j)).lt.shift)then - j+=1 - else - keep_on=.False. - exit - endif - enddo - n_degen = j - list_degen(2,k) = list_degen(1,k)-1 + n_degen - j=0 - keep_on = .True. - do while(keep_on) - if(i+j+1.gt.n)then - keep_on = .False. - exit - endif - if(dabs(Aw(i+j)-Aw(i+j+1)).lt.shift)then - Aw(i+j) += (j-n_degen/2) * shift - j+=1 - else - keep_on = .False. - exit - endif - enddo - Aw(i+n_degen-1) += (n_degen-1-n_degen/2) * shift - i+=n_degen - else - i+=1 - endif - enddo - n_degen_list = k - -end - -subroutine cancel_small_elmts(aw,n,shift) - implicit none - BEGIN_DOC - ! subroutines that splits the degeneracies of a matrix by adding a splitting of magnitude thr * n_degen/2 - ! - ! WARNING !! THE MATRIX IS ASSUMED TO BE PASSED WITH INCREASING DIAGONAL ELEMENTS - END_DOC - double precision,intent(inout) :: Aw(n,n) - double precision,intent(in) :: shift - integer, intent(in) :: n - integer :: i,j - do i = 1, n - do j = 1, n - if(dabs(Aw(j,i)).lt.shift)then - Aw(j,i) = 0.d0 - endif - enddo - enddo -end - -subroutine check_bi_ortho(reigvec,leigvec,n,S,accu_nd) - implicit none - integer, intent(in) :: n - double precision,intent(in) :: reigvec(n,n),leigvec(n,n) - double precision, intent(out) :: S(n,n),accu_nd - BEGIN_DOC -! retunrs the overlap matrix S = Leigvec^T Reigvec -! -! and the square root of the sum of the squared off-diagonal elements of S - END_DOC - integer :: i,j ! S = VL x VR call dgemm( 'T', 'N', n, n, n, 1.d0 & , leigvec, size(leigvec, 1), reigvec, size(reigvec, 1) & , 0.d0, S, size(S, 1) ) + accu_nd = 0.d0 do i = 1, n do j = 1, n @@ -1213,3 +174,5 @@ subroutine check_bi_ortho(reigvec,leigvec,n,S,accu_nd) accu_nd = dsqrt(accu_nd) end + + diff --git a/plugins/local/non_hermit_dav/lapack_diag_non_hermit.irp.f b/plugins/local/non_hermit_dav/lapack_diag_non_hermit.irp.f index 4d4bc047..2c053ac8 100644 --- a/plugins/local/non_hermit_dav/lapack_diag_non_hermit.irp.f +++ b/plugins/local/non_hermit_dav/lapack_diag_non_hermit.irp.f @@ -273,60 +273,6 @@ end ! --- -subroutine lapack_diag_non_sym_right(n, A, WR, WI, VR) - - implicit none - - integer, intent(in) :: n - double precision, intent(in) :: A(n,n) - double precision, intent(out) :: WR(n), WI(n), VR(n,n) - - integer :: i, lda, ldvl, ldvr, LWORK, INFO - double precision, allocatable :: Atmp(:,:), WORK(:), VL(:,:) - - lda = n - ldvl = 1 - ldvr = n - - allocate( Atmp(n,n), VL(1,1) ) - Atmp(1:n,1:n) = A(1:n,1:n) - - allocate(WORK(1)) - LWORK = -1 - call dgeev('N', 'V', n, Atmp, lda, WR, WI, VL, ldvl, VR, ldvr, WORK, LWORK, INFO) - if(INFO.gt.0)then - print*,'dgeev failed !!',INFO - stop - endif - - LWORK = max(int(WORK(1)), 1) ! this is the optimal size of WORK - deallocate(WORK) - - allocate(WORK(LWORK)) - - ! Actual diagonalization - call dgeev('N', 'V', n, Atmp, lda, WR, WI, VL, ldvl, VR, ldvr, WORK, LWORK, INFO) - if(INFO.ne.0) then - print*,'dgeev failed !!', INFO - stop - endif - - deallocate(Atmp, WORK, VL) - -! print *, ' JOBL = F' -! print *, ' eigenvalues' -! do i = 1, n -! write(*, '(1000(F16.10,X))') WR(i), WI(i) -! enddo -! print *, ' right eigenvect' -! do i = 1, n -! write(*, '(1000(F16.10,X))') VR(:,i) -! enddo - -end - -! --- - subroutine non_hrmt_real_diag(n, A, leigvec, reigvec, n_real_eigv, eigval) BEGIN_DOC @@ -1780,70 +1726,6 @@ end ! --- -subroutine check_weighted_biorthog(n, m, W, Vl, Vr, thr_d, thr_nd, accu_d, accu_nd, S, stop_ifnot) - - implicit none - - integer, intent(in) :: n, m - double precision, intent(in) :: Vl(n,m), Vr(n,m), W(n,n) - double precision, intent(in) :: thr_d, thr_nd - logical, intent(in) :: stop_ifnot - double precision, intent(out) :: accu_d, accu_nd, S(m,m) - - integer :: i, j - double precision, allocatable :: SS(:,:), tmp(:,:) - - print *, ' check weighted bi-orthogonality' - - ! --- - - allocate(tmp(m,n)) - call dgemm( 'T', 'N', m, n, n, 1.d0 & - , Vl, size(Vl, 1), W, size(W, 1) & - , 0.d0, tmp, size(tmp, 1) ) - call dgemm( 'N', 'N', m, m, n, 1.d0 & - , tmp, size(tmp, 1), Vr, size(Vr, 1) & - , 0.d0, S, size(S, 1) ) - deallocate(tmp) - - !print *, ' overlap matrix:' - !do i = 1, m - ! write(*,'(1000(F16.10,X))') S(i,:) - !enddo - - accu_d = 0.d0 - accu_nd = 0.d0 - do i = 1, m - do j = 1, m - if(i==j) then - accu_d = accu_d + dabs(S(i,i)) - else - accu_nd = accu_nd + S(j,i) * S(j,i) - endif - enddo - enddo - accu_nd = dsqrt(accu_nd) - - print *, ' accu_nd = ', accu_nd - print *, ' accu_d = ', dabs(accu_d-dble(m))/dble(m) - - ! --- - - if( stop_ifnot .and. ((accu_nd .gt. thr_nd) .or. dabs(accu_d-dble(m))/dble(m) .gt. thr_d) ) then - print *, ' non bi-orthogonal vectors !' - print *, ' accu_nd = ', accu_nd - print *, ' accu_d = ', dabs(accu_d-dble(m))/dble(m) - !print *, ' overlap matrix:' - !do i = 1, m - ! write(*,'(1000(F16.10,X))') S(i,:) - !enddo - stop - endif - -end - -! --- - subroutine check_biorthog(n, m, Vl, Vr, accu_d, accu_nd, S, thr_d, thr_nd, stop_ifnot) implicit none diff --git a/plugins/local/non_hermit_dav/new_routines.irp.f b/plugins/local/non_hermit_dav/new_routines.irp.f deleted file mode 100644 index 8db044d3..00000000 --- a/plugins/local/non_hermit_dav/new_routines.irp.f +++ /dev/null @@ -1,670 +0,0 @@ -subroutine non_hrmt_diag_split_degen_bi_orthog(n, A, leigvec, reigvec, n_real_eigv, eigval) - - BEGIN_DOC - ! - ! routine which returns the sorted REAL EIGENVALUES ONLY and corresponding LEFT/RIGHT eigenvetors - ! - ! of a non hermitian matrix A(n,n) - ! - ! n_real_eigv is the number of real eigenvalues, which might be smaller than the dimension "n" - ! - END_DOC - - implicit none - - integer, intent(in) :: n - double precision, intent(in) :: A(n,n) - integer, intent(out) :: n_real_eigv - double precision, intent(out) :: reigvec(n,n), leigvec(n,n), eigval(n) - double precision, allocatable :: reigvec_tmp(:,:), leigvec_tmp(:,:) - - integer :: i, j, n_degen,k , iteration - double precision :: shift_current - double precision :: r,thr,accu_d, accu_nd - integer, allocatable :: iorder_origin(:),iorder(:) - double precision, allocatable :: WR(:), WI(:), Vl(:,:), VR(:,:),S(:,:) - double precision, allocatable :: Aw(:,:),diag_elem(:),A_save(:,:) - double precision, allocatable :: im_part(:),re_part(:) - double precision :: accu,thr_cut, thr_norm=1d0 - - - thr_cut = 1.d-15 - print*,'Computing the left/right eigenvectors ...' - print*,'Using the degeneracy splitting algorithm' - ! initialization - shift_current = 1.d-15 - iteration = 0 - print*,'***** iteration = ',iteration - - - ! pre-processing the matrix :: sorting by diagonal elements - allocate(reigvec_tmp(n,n), leigvec_tmp(n,n)) - allocate(diag_elem(n),iorder_origin(n),A_save(n,n)) -! print*,'Aw' - do i = 1, n - iorder_origin(i) = i - diag_elem(i) = A(i,i) -! write(*,'(100(F16.10,X))')A(:,i) - enddo - call dsort(diag_elem, iorder_origin, n) - do i = 1, n - do j = 1, n - A_save(j,i) = A(iorder_origin(j),iorder_origin(i)) - enddo - enddo - - allocate(WR(n), WI(n), VL(n,n), VR(n,n), Aw(n,n)) - allocate(im_part(n),iorder(n)) - allocate( S(n,n) ) - - - Aw = A_save - call cancel_small_elmts(aw,n,thr_cut) - call lapack_diag_non_sym(n,Aw,WR,WI,VL,VR) - do i = 1, n - im_part(i) = -dabs(WI(i)) - iorder(i) = i - enddo - call dsort(im_part, iorder, n) - n_real_eigv = 0 - do i = 1, n - if(dabs(WI(i)).lt.1.d-20)then - n_real_eigv += 1 - else -! print*,'Found an imaginary component to eigenvalue' -! print*,'Re(i) + Im(i)',WR(i),WI(i) - endif - enddo - if(n_real_eigv.ne.n)then - shift_current = max(10.d0 * dabs(im_part(1)),shift_current*10.d0) - print*,'Largest imaginary part found in eigenvalues = ',im_part(1) - print*,'Splitting the degeneracies by ',shift_current - else - print*,'All eigenvalues are real !' - endif - - - do while(n_real_eigv.ne.n) - iteration += 1 - print*,'***** iteration = ',iteration - if(shift_current.gt.1.d-3)then - print*,'shift_current > 1.d-3 !!' - print*,'Your matrix intrinsically contains complex eigenvalues' - stop - endif - Aw = A_save - call cancel_small_elmts(Aw,n,thr_cut) - call split_matrix_degen(Aw,n,shift_current) - call lapack_diag_non_sym(n,Aw,WR,WI,VL,VR) - n_real_eigv = 0 - do i = 1, n - if(dabs(WI(i)).lt.1.d-20)then - n_real_eigv+= 1 - else -! print*,'Found an imaginary component to eigenvalue' -! print*,'Re(i) + Im(i)',WR(i),WI(i) - endif - enddo - if(n_real_eigv.ne.n)then - do i = 1, n - im_part(i) = -dabs(WI(i)) - iorder(i) = i - enddo - call dsort(im_part, iorder, n) - shift_current = max(10.d0 * dabs(im_part(1)),shift_current*10.d0) - print*,'Largest imaginary part found in eigenvalues = ',im_part(1) - print*,'Splitting the degeneracies by ',shift_current - else - print*,'All eigenvalues are real !' - endif - enddo - !!!!!!!!!!!!!!!! SORTING THE EIGENVALUES - do i = 1, n - eigval(i) = WR(i) - iorder(i) = i - enddo - call dsort(eigval,iorder,n) - do i = 1, n -! print*,'eigval(i) = ',eigval(i) - reigvec_tmp(:,i) = VR(:,iorder(i)) - leigvec_tmp(:,i) = Vl(:,iorder(i)) - enddo - -!!! ONCE ALL EIGENVALUES ARE REAL ::: CHECK BI-ORTHONORMALITY - ! check bi-orthogonality - call check_biorthog(n, n, leigvec_tmp, reigvec_tmp, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - print *, ' accu_nd bi-orthog = ', accu_nd - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print *, ' ' - print *, ' bi-orthogonality: not imposed yet' - print *, ' ' - print *, ' ' - print *, ' orthog between degen eigenvect' - print *, ' ' - double precision, allocatable :: S_nh_inv_half(:,:) - allocate(S_nh_inv_half(n,n)) - logical :: complex_root - deallocate(S_nh_inv_half) - call impose_orthog_degen_eigvec(n, eigval, reigvec_tmp) - call impose_orthog_degen_eigvec(n, eigval, leigvec_tmp) - call check_biorthog(n, n, leigvec_tmp, reigvec_tmp, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print*,'New vectors not bi-orthonormals at ',accu_nd - call impose_biorthog_qr(n, n, leigvec_tmp, reigvec_tmp, S) - call check_biorthog(n, n, leigvec_tmp, reigvec_tmp, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print*,'New vectors not bi-orthonormals at ',accu_nd - print*,'Must be a deep problem ...' - stop - endif - endif - endif - - !! EIGENVECTORS SORTED AND BI-ORTHONORMAL - do i = 1, n - do j = 1, n - VR(iorder_origin(j),i) = reigvec_tmp(j,i) - VL(iorder_origin(j),i) = leigvec_tmp(j,i) - enddo - enddo - - !! RECOMPUTING THE EIGENVALUES - eigval = 0.d0 - do i = 1, n - iorder(i) = i - accu = 0.d0 - do j = 1, n - accu += VL(j,i) * VR(j,i) - do k = 1, n - eigval(i) += VL(j,i) * A(j,k) * VR(k,i) - enddo - enddo - eigval(i) *= 1.d0/accu -! print*,'eigval(i) = ',eigval(i) - enddo - !! RESORT JUST TO BE SURE - call dsort(eigval, iorder, n) - do i = 1, n - do j = 1, n - reigvec(j,i) = VR(j,iorder(i)) - leigvec(j,i) = VL(j,iorder(i)) - enddo - enddo - print*,'Checking for final reigvec/leigvec' - shift_current = max(1.d-10,shift_current) - print*,'Thr for eigenvectors = ',shift_current - call check_EIGVEC(n, n, A, eigval, leigvec, reigvec, shift_current, thr_norm, .false.) - call check_biorthog(n, n, leigvec, reigvec, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - print *, ' accu_nd bi-orthog = ', accu_nd - - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print*,'Something went wrong in non_hrmt_diag_split_degen_bi_orthog' - print*,'Eigenvectors are not bi orthonormal ..' - print*,'accu_nd = ',accu_nd - stop - endif - -end - - - -subroutine non_hrmt_diag_split_degen_s_inv_half(n, A, leigvec, reigvec, n_real_eigv, eigval) - - BEGIN_DOC - ! - ! routine which returns the sorted REAL EIGENVALUES ONLY and corresponding LEFT/RIGHT eigenvetors - ! - ! of a non hermitian matrix A(n,n) - ! - ! n_real_eigv is the number of real eigenvalues, which might be smaller than the dimension "n" - ! - END_DOC - - implicit none - - integer, intent(in) :: n - double precision, intent(in) :: A(n,n) - integer, intent(out) :: n_real_eigv - double precision, intent(out) :: reigvec(n,n), leigvec(n,n), eigval(n) - double precision, allocatable :: reigvec_tmp(:,:), leigvec_tmp(:,:) - - integer :: i, j, n_degen,k , iteration - double precision :: shift_current - double precision :: r,thr,accu_d, accu_nd - integer, allocatable :: iorder_origin(:),iorder(:) - double precision, allocatable :: WR(:), WI(:), Vl(:,:), VR(:,:),S(:,:) - double precision, allocatable :: Aw(:,:),diag_elem(:),A_save(:,:) - double precision, allocatable :: im_part(:),re_part(:) - double precision :: accu,thr_cut, thr_norm=1.d0 - double precision, allocatable :: S_nh_inv_half(:,:) - logical :: complex_root - - - thr_cut = 1.d-15 - print*,'Computing the left/right eigenvectors ...' - print*,'Using the degeneracy splitting algorithm' - ! initialization - shift_current = 1.d-15 - iteration = 0 - print*,'***** iteration = ',iteration - - - ! pre-processing the matrix :: sorting by diagonal elements - allocate(reigvec_tmp(n,n), leigvec_tmp(n,n)) - allocate(diag_elem(n),iorder_origin(n),A_save(n,n)) -! print*,'Aw' - do i = 1, n - iorder_origin(i) = i - diag_elem(i) = A(i,i) -! write(*,'(100(F16.10,X))')A(:,i) - enddo - call dsort(diag_elem, iorder_origin, n) - do i = 1, n - do j = 1, n - A_save(j,i) = A(iorder_origin(j),iorder_origin(i)) - enddo - enddo - - allocate(WR(n), WI(n), VL(n,n), VR(n,n), Aw(n,n)) - allocate(im_part(n),iorder(n)) - allocate( S(n,n) ) - allocate(S_nh_inv_half(n,n)) - - - Aw = A_save - call cancel_small_elmts(aw,n,thr_cut) - call lapack_diag_non_sym(n,Aw,WR,WI,VL,VR) - do i = 1, n - im_part(i) = -dabs(WI(i)) - iorder(i) = i - enddo - call dsort(im_part, iorder, n) - n_real_eigv = 0 - do i = 1, n - if(dabs(WI(i)).lt.1.d-20)then - n_real_eigv += 1 - else -! print*,'Found an imaginary component to eigenvalue' -! print*,'Re(i) + Im(i)',WR(i),WI(i) - endif - enddo - if(n_real_eigv.ne.n)then - shift_current = max(10.d0 * dabs(im_part(1)),shift_current*10.d0) - print*,'Largest imaginary part found in eigenvalues = ',im_part(1) - print*,'Splitting the degeneracies by ',shift_current - else - print*,'All eigenvalues are real !' - endif - - - do while(n_real_eigv.ne.n) - iteration += 1 - print*,'***** iteration = ',iteration - if(shift_current.gt.1.d-3)then - print*,'shift_current > 1.d-3 !!' - print*,'Your matrix intrinsically contains complex eigenvalues' - stop - endif - Aw = A_save -! thr_cut = shift_current - call cancel_small_elmts(Aw,n,thr_cut) - call split_matrix_degen(Aw,n,shift_current) - call lapack_diag_non_sym(n,Aw,WR,WI,VL,VR) - n_real_eigv = 0 - do i = 1, n - if(dabs(WI(i)).lt.1.d-20)then - n_real_eigv+= 1 - else -! print*,'Found an imaginary component to eigenvalue' -! print*,'Re(i) + Im(i)',WR(i),WI(i) - endif - enddo - if(n_real_eigv.ne.n)then - do i = 1, n - im_part(i) = -dabs(WI(i)) - iorder(i) = i - enddo - call dsort(im_part, iorder, n) - shift_current = max(10.d0 * dabs(im_part(1)),shift_current*10.d0) - print*,'Largest imaginary part found in eigenvalues = ',im_part(1) - print*,'Splitting the degeneracies by ',shift_current - else - print*,'All eigenvalues are real !' - endif - enddo - !!!!!!!!!!!!!!!! SORTING THE EIGENVALUES - do i = 1, n - eigval(i) = WR(i) - iorder(i) = i - enddo - call dsort(eigval,iorder,n) - do i = 1, n -! print*,'eigval(i) = ',eigval(i) - reigvec_tmp(:,i) = VR(:,iorder(i)) - leigvec_tmp(:,i) = Vl(:,iorder(i)) - enddo - -!!! ONCE ALL EIGENVALUES ARE REAL ::: CHECK BI-ORTHONORMALITY - ! check bi-orthogonality - call check_biorthog(n, n, leigvec_tmp, reigvec_tmp, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - print *, ' accu_nd bi-orthog = ', accu_nd - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print *, ' ' - print *, ' bi-orthogonality: not imposed yet' - if(complex_root) then - print *, ' ' - print *, ' ' - print *, ' orthog between degen eigenvect' - print *, ' ' - ! bi-orthonormalization using orthogonalization of left, right and then QR between left and right - call impose_orthog_degen_eigvec(n, eigval, reigvec_tmp) ! orthogonalization of reigvec - call impose_orthog_degen_eigvec(n, eigval, leigvec_tmp) ! orthogonalization of leigvec - call check_biorthog(n, n, leigvec_tmp, reigvec_tmp, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print*,'New vectors not bi-orthonormals at ', accu_nd - call get_inv_half_nonsymmat_diago(S, n, S_nh_inv_half, complex_root) - if(complex_root)then - call impose_biorthog_qr(n, n, leigvec_tmp, reigvec_tmp, S) ! bi-orthonormalization using QR - else - print*,'S^{-1/2} exists !!' - call bi_ortho_s_inv_half(n,leigvec_tmp,reigvec_tmp,S_nh_inv_half) ! use of S^{-1/2} bi-orthonormalization - endif - endif - else ! the matrix S^{-1/2} exists - print*,'S^{-1/2} exists !!' - call bi_ortho_s_inv_half(n,leigvec_tmp,reigvec_tmp,S_nh_inv_half) ! use of S^{-1/2} bi-orthonormalization - endif - call check_biorthog(n, n, leigvec_tmp, reigvec_tmp, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print*,'New vectors not bi-orthonormals at ',accu_nd - print*,'Must be a deep problem ...' - stop - endif - endif - - !! EIGENVECTORS SORTED AND BI-ORTHONORMAL - do i = 1, n - do j = 1, n - VR(iorder_origin(j),i) = reigvec_tmp(j,i) - VL(iorder_origin(j),i) = leigvec_tmp(j,i) - enddo - enddo - - !! RECOMPUTING THE EIGENVALUES - eigval = 0.d0 - do i = 1, n - iorder(i) = i - accu = 0.d0 - do j = 1, n - accu += VL(j,i) * VR(j,i) - do k = 1, n - eigval(i) += VL(j,i) * A(j,k) * VR(k,i) - enddo - enddo - eigval(i) *= 1.d0/accu -! print*,'eigval(i) = ',eigval(i) - enddo - !! RESORT JUST TO BE SURE - call dsort(eigval, iorder, n) - do i = 1, n - do j = 1, n - reigvec(j,i) = VR(j,iorder(i)) - leigvec(j,i) = VL(j,iorder(i)) - enddo - enddo - print*,'Checking for final reigvec/leigvec' - shift_current = max(1.d-10,shift_current) - print*,'Thr for eigenvectors = ',shift_current - call check_EIGVEC(n, n, A, eigval, leigvec, reigvec, shift_current, thr_norm, .false.) - call check_biorthog(n, n, leigvec, reigvec, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - print *, ' accu_nd bi-orthog = ', accu_nd - - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print*,'Something went wrong in non_hrmt_diag_split_degen_bi_orthog' - print*,'Eigenvectors are not bi orthonormal ..' - print*,'accu_nd = ',accu_nd - stop - endif - -end - - -subroutine non_hrmt_fock_mat(n, A, leigvec, reigvec, n_real_eigv, eigval) - - BEGIN_DOC - ! - ! routine returning the eigenvalues and left/right eigenvectors of the TC fock matrix - ! - END_DOC - - implicit none - - integer, intent(in) :: n - double precision, intent(in) :: A(n,n) - integer, intent(out) :: n_real_eigv - double precision, intent(out) :: reigvec(n,n), leigvec(n,n), eigval(n) - double precision, allocatable :: reigvec_tmp(:,:), leigvec_tmp(:,:) - - integer :: i, j, n_degen,k , iteration - double precision :: shift_current - double precision :: r,thr,accu_d, accu_nd - integer, allocatable :: iorder_origin(:),iorder(:) - double precision, allocatable :: WR(:), WI(:), Vl(:,:), VR(:,:),S(:,:) - double precision, allocatable :: Aw(:,:),diag_elem(:),A_save(:,:) - double precision, allocatable :: im_part(:),re_part(:) - double precision :: accu,thr_cut - double precision, allocatable :: S_nh_inv_half(:,:) - logical :: complex_root - double precision :: thr_norm=1d0 - - - thr_cut = 1.d-15 - print*,'Computing the left/right eigenvectors ...' - print*,'Using the degeneracy splitting algorithm' - ! initialization - shift_current = 1.d-15 - iteration = 0 - print*,'***** iteration = ',iteration - - - ! pre-processing the matrix :: sorting by diagonal elements - allocate(reigvec_tmp(n,n), leigvec_tmp(n,n)) - allocate(diag_elem(n),iorder_origin(n),A_save(n,n)) -! print*,'Aw' - do i = 1, n - iorder_origin(i) = i - diag_elem(i) = A(i,i) -! write(*,'(100(F16.10,X))')A(:,i) - enddo - call dsort(diag_elem, iorder_origin, n) - do i = 1, n - do j = 1, n - A_save(j,i) = A(iorder_origin(j),iorder_origin(i)) - enddo - enddo - - allocate(WR(n), WI(n), VL(n,n), VR(n,n), Aw(n,n)) - allocate(im_part(n),iorder(n)) - allocate( S(n,n) ) - allocate(S_nh_inv_half(n,n)) - - - Aw = A_save - call cancel_small_elmts(aw,n,thr_cut) - call lapack_diag_non_sym(n,Aw,WR,WI,VL,VR) - do i = 1, n - im_part(i) = -dabs(WI(i)) - iorder(i) = i - enddo - call dsort(im_part, iorder, n) - n_real_eigv = 0 - do i = 1, n - if(dabs(WI(i)).lt.1.d-20)then - n_real_eigv += 1 - else -! print*,'Found an imaginary component to eigenvalue' -! print*,'Re(i) + Im(i)',WR(i),WI(i) - endif - enddo - if(n_real_eigv.ne.n)then - shift_current = max(10.d0 * dabs(im_part(1)),shift_current*10.d0) - print*,'Largest imaginary part found in eigenvalues = ',im_part(1) - print*,'Splitting the degeneracies by ',shift_current - else - print*,'All eigenvalues are real !' - endif - - - do while(n_real_eigv.ne.n) - iteration += 1 - print*,'***** iteration = ',iteration - if(shift_current.gt.1.d-3)then - print*,'shift_current > 1.d-3 !!' - print*,'Your matrix intrinsically contains complex eigenvalues' - stop - endif - Aw = A_save -! thr_cut = shift_current - call cancel_small_elmts(Aw,n,thr_cut) - call split_matrix_degen(Aw,n,shift_current) - call lapack_diag_non_sym(n,Aw,WR,WI,VL,VR) - n_real_eigv = 0 - do i = 1, n - if(dabs(WI(i)).lt.1.d-20)then - n_real_eigv+= 1 - else -! print*,'Found an imaginary component to eigenvalue' -! print*,'Re(i) + Im(i)',WR(i),WI(i) - endif - enddo - if(n_real_eigv.ne.n)then - do i = 1, n - im_part(i) = -dabs(WI(i)) - iorder(i) = i - enddo - call dsort(im_part, iorder, n) - shift_current = max(10.d0 * dabs(im_part(1)),shift_current*10.d0) - print*,'Largest imaginary part found in eigenvalues = ',im_part(1) - print*,'Splitting the degeneracies by ',shift_current - else - print*,'All eigenvalues are real !' - endif - enddo - !!!!!!!!!!!!!!!! SORTING THE EIGENVALUES - do i = 1, n - eigval(i) = WR(i) - iorder(i) = i - enddo - call dsort(eigval,iorder,n) - do i = 1, n -! print*,'eigval(i) = ',eigval(i) - reigvec_tmp(:,i) = VR(:,iorder(i)) - leigvec_tmp(:,i) = Vl(:,iorder(i)) - enddo - -!!! ONCE ALL EIGENVALUES ARE REAL ::: CHECK BI-ORTHONORMALITY - ! check bi-orthogonality - call check_biorthog(n, n, leigvec_tmp, reigvec_tmp, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - print *, ' accu_nd bi-orthog = ', accu_nd - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print *, ' ' - print *, ' bi-orthogonality: not imposed yet' - print *, ' ' - print *, ' ' - print *, ' Using impose_unique_biorthog_degen_eigvec' - print *, ' ' - ! bi-orthonormalization using orthogonalization of left, right and then QR between left and right - call impose_unique_biorthog_degen_eigvec(n, eigval, mo_coef, leigvec_tmp, reigvec_tmp) - call check_biorthog(n, n, leigvec_tmp, reigvec_tmp, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - print*,'accu_nd = ',accu_nd - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print*,'New vectors not bi-orthonormals at ',accu_nd - call get_inv_half_nonsymmat_diago(S, n, S_nh_inv_half,complex_root) - if(complex_root)then - print*,'S^{-1/2} does not exits, using QR bi-orthogonalization' - call impose_biorthog_qr(n, n, leigvec_tmp, reigvec_tmp, S) ! bi-orthonormalization using QR - else - print*,'S^{-1/2} exists !!' - call bi_ortho_s_inv_half(n,leigvec_tmp,reigvec_tmp,S_nh_inv_half) ! use of S^{-1/2} bi-orthonormalization - endif - endif - call check_biorthog(n, n, leigvec_tmp, reigvec_tmp, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print*,'New vectors not bi-orthonormals at ',accu_nd - print*,'Must be a deep problem ...' - stop - endif - endif - - !! EIGENVECTORS SORTED AND BI-ORTHONORMAL - do i = 1, n - do j = 1, n - VR(iorder_origin(j),i) = reigvec_tmp(j,i) - VL(iorder_origin(j),i) = leigvec_tmp(j,i) - enddo - enddo - - !! RECOMPUTING THE EIGENVALUES - eigval = 0.d0 - do i = 1, n - iorder(i) = i - accu = 0.d0 - do j = 1, n - accu += VL(j,i) * VR(j,i) - do k = 1, n - eigval(i) += VL(j,i) * A(j,k) * VR(k,i) - enddo - enddo - eigval(i) *= 1.d0/accu -! print*,'eigval(i) = ',eigval(i) - enddo - !! RESORT JUST TO BE SURE - call dsort(eigval, iorder, n) - do i = 1, n - do j = 1, n - reigvec(j,i) = VR(j,iorder(i)) - leigvec(j,i) = VL(j,iorder(i)) - enddo - enddo - print*,'Checking for final reigvec/leigvec' - shift_current = max(1.d-10,shift_current) - print*,'Thr for eigenvectors = ',shift_current - call check_EIGVEC(n, n, A, eigval, leigvec, reigvec, shift_current, thr_norm, .false.) - call check_biorthog(n, n, leigvec, reigvec, accu_d, accu_nd, S, thresh_biorthog_diag, thresh_biorthog_nondiag, .false.) - print *, ' accu_nd bi-orthog = ', accu_nd - - if(accu_nd .lt. thresh_biorthog_nondiag) then - print *, ' bi-orthogonality: ok' - else - print*,'Something went wrong in non_hrmt_diag_split_degen_bi_orthog' - print*,'Eigenvectors are not bi orthonormal ..' - print*,'accu_nd = ',accu_nd - stop - endif - -end - - diff --git a/plugins/local/ortho_three_e_ints/mu_j_ints_usual_mos.irp.f b/plugins/local/ortho_three_e_ints/mu_j_ints_usual_mos.irp.f index a3f1b6ef..cb7cdb22 100644 --- a/plugins/local/ortho_three_e_ints/mu_j_ints_usual_mos.irp.f +++ b/plugins/local/ortho_three_e_ints/mu_j_ints_usual_mos.irp.f @@ -183,11 +183,3 @@ BEGIN_PROVIDER [ double precision, x_W_ij_erf_rk, ( n_points_final_grid,3,mo_num END_PROVIDER -BEGIN_PROVIDER [ double precision, sqrt_weight_at_r, (n_points_final_grid)] - implicit none - integer :: ipoint - do ipoint = 1, n_points_final_grid - sqrt_weight_at_r(ipoint) = dsqrt(final_weight_at_r_vector(ipoint)) - enddo -END_PROVIDER - diff --git a/plugins/local/tc_bi_ortho/EZFIO.cfg b/plugins/local/tc_bi_ortho/EZFIO.cfg index a34d2134..67c780d7 100644 --- a/plugins/local/tc_bi_ortho/EZFIO.cfg +++ b/plugins/local/tc_bi_ortho/EZFIO.cfg @@ -9,3 +9,14 @@ interface: ezfio doc: Coefficients for the right wave function type: double precision size: (determinants.n_det,determinants.n_states) + +[tc_gs_energy] +type: Threshold +doc: TC GS Energy +interface: ezfio + +[tc_gs_var] +type: Threshold +doc: TC GS VAR +interface: ezfio + diff --git a/plugins/local/tc_bi_ortho/print_tc_energy.irp.f b/plugins/local/tc_bi_ortho/print_tc_energy.irp.f index ef38cbcc..1fa0c6d9 100644 --- a/plugins/local/tc_bi_ortho/print_tc_energy.irp.f +++ b/plugins/local/tc_bi_ortho/print_tc_energy.irp.f @@ -6,18 +6,9 @@ program print_tc_energy implicit none - print *, 'Hello world' - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - read_wf = .True. touch read_wf - PROVIDE j2e_type PROVIDE j1e_type PROVIDE env_type @@ -26,6 +17,27 @@ program print_tc_energy print *, ' j1e_type = ', j1e_type print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + if(tc_integ_type .eq. "numeric") then + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + endif + call write_tc_energy() end diff --git a/plugins/local/tc_bi_ortho/print_tc_var.irp.f b/plugins/local/tc_bi_ortho/print_tc_var.irp.f index bec34f18..6743cd11 100644 --- a/plugins/local/tc_bi_ortho/print_tc_var.irp.f +++ b/plugins/local/tc_bi_ortho/print_tc_var.irp.f @@ -6,7 +6,8 @@ program print_tc_var implicit none - print *, 'Hello world' + print *, ' TC VAR is available only for HF REF WF' + print *, ' DO NOT FORGET TO RUN A CISD CALCULATION BEF' my_grid_becke = .True. PROVIDE tc_grid1_a tc_grid1_r @@ -17,7 +18,7 @@ program print_tc_var read_wf = .True. touch read_wf - call write_tc_var() + call write_tc_gs_var_HF() end diff --git a/plugins/local/tc_bi_ortho/save_bitcpsileft_for_qmcchem.irp.f b/plugins/local/tc_bi_ortho/save_bitcpsileft_for_qmcchem.irp.f index efa4aa2c..ac90f737 100644 --- a/plugins/local/tc_bi_ortho/save_bitcpsileft_for_qmcchem.irp.f +++ b/plugins/local/tc_bi_ortho/save_bitcpsileft_for_qmcchem.irp.f @@ -38,9 +38,9 @@ subroutine main() call ezfio_has_cisd_energy(exists) if(.not.exists) then - call ezfio_has_tc_scf_bitc_energy(exists) + call ezfio_has_tc_scf_tcscf_energy(exists) if(exists) then - call ezfio_get_tc_scf_bitc_energy(e_ref) + call ezfio_get_tc_scf_tcscf_energy(e_ref) endif else @@ -59,7 +59,7 @@ subroutine main() close(iunit) -end subroutine main +end ! -- @@ -89,7 +89,7 @@ subroutine write_lr_spindeterminants() call ezfio_set_spindeterminants_psi_left_coef_matrix_values(buffer) deallocate(buffer) -end subroutine write_lr_spindeterminants +end ! --- diff --git a/plugins/local/tc_bi_ortho/tc_utils.irp.f b/plugins/local/tc_bi_ortho/tc_utils.irp.f index 53fe5884..43a6865e 100644 --- a/plugins/local/tc_bi_ortho/tc_utils.irp.f +++ b/plugins/local/tc_bi_ortho/tc_utils.irp.f @@ -2,12 +2,67 @@ subroutine write_tc_energy() implicit none - integer :: i, j, k - double precision :: hmono, htwoe, hthree, htot - double precision :: E_TC, O_TC - double precision :: E_1e, E_2e, E_3e + integer :: i, j, k + double precision :: hmono, htwoe, hthree, htot + double precision :: E_TC, O_TC + double precision :: E_1e, E_2e, E_3e + double precision, allocatable :: E_TC_tmp(:), E_1e_tmp(:), E_2e_tmp(:), E_3e_tmp(:) - do k = 1, n_states + ! GS + ! --- + + allocate(E_TC_tmp(N_det), E_1e_tmp(N_det), E_2e_tmp(N_det), E_3e_tmp(N_det)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE(i, j, hmono, htwoe, hthree, htot) & + !$OMP SHARED(N_det, psi_det, N_int, psi_l_coef_bi_ortho, psi_r_coef_bi_ortho, & + !$OMP E_TC_tmp, E_1e_tmp, E_2e_tmp, E_3e_tmp) + !$OMP DO + do i = 1, N_det + E_TC_tmp(i) = 0.d0 + E_1e_tmp(i) = 0.d0 + E_2e_tmp(i) = 0.d0 + E_3e_tmp(i) = 0.d0 + do j = 1, N_det + call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i), psi_det(1,1,j), N_int, hmono, htwoe, hthree, htot) + E_TC_tmp(i) = E_TC_tmp(i) + psi_l_coef_bi_ortho(i,1) * psi_r_coef_bi_ortho(j,1) * htot + E_1e_tmp(i) = E_1e_tmp(i) + psi_l_coef_bi_ortho(i,1) * psi_r_coef_bi_ortho(j,1) * hmono + E_2e_tmp(i) = E_2e_tmp(i) + psi_l_coef_bi_ortho(i,1) * psi_r_coef_bi_ortho(j,1) * htwoe + E_3e_tmp(i) = E_3e_tmp(i) + psi_l_coef_bi_ortho(i,1) * psi_r_coef_bi_ortho(j,1) * hthree + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + E_1e = 0.d0 + E_2e = 0.d0 + E_3e = 0.d0 + E_TC = 0.d0 + O_TC = 0.d0 + do i = 1, N_det + E_1e = E_1e + E_1e_tmp(i) + E_2e = E_2e + E_2e_tmp(i) + E_3e = E_3e + E_3e_tmp(i) + E_TC = E_TC + E_TC_tmp(i) + O_TC = O_TC + psi_l_coef_bi_ortho(i,1) * psi_r_coef_bi_ortho(i,1) + enddo + + print *, ' state :', 1 + print *, " E_TC = ", E_TC / O_TC + print *, " E_1e = ", E_1e / O_TC + print *, " E_2e = ", E_2e / O_TC + print *, " E_3e = ", E_3e / O_TC + print *, " O_TC = ", O_TC + + call ezfio_set_tc_bi_ortho_tc_gs_energy(E_TC/O_TC) + + ! --- + + ! ES + ! --- + + do k = 2, n_states E_TC = 0.d0 E_1e = 0.d0 @@ -37,6 +92,8 @@ subroutine write_tc_energy() enddo + deallocate(E_TC_tmp, E_1e_tmp, E_2e_tmp, E_3e_tmp) + end ! --- @@ -66,3 +123,25 @@ end ! --- +subroutine write_tc_gs_var_HF() + + implicit none + integer :: i, j, k + double precision :: hmono, htwoe, hthree, htot + double precision :: SIGMA_TC + + SIGMA_TC = 0.d0 + do j = 2, N_det + call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,j), psi_det(1,1,1), N_int, hmono, htwoe, hthree, htot) + SIGMA_TC = SIGMA_TC + htot * htot + enddo + + print *, " SIGMA_TC = ", SIGMA_TC + + call ezfio_set_tc_bi_ortho_tc_gs_var(SIGMA_TC) + +end + +! --- + + diff --git a/plugins/local/tc_scf/EZFIO.cfg b/plugins/local/tc_scf/EZFIO.cfg index 3dfa9a71..510c777c 100644 --- a/plugins/local/tc_scf/EZFIO.cfg +++ b/plugins/local/tc_scf/EZFIO.cfg @@ -1,6 +1,6 @@ -[bitc_energy] +[tcscf_energy] type: Threshold -doc: Energy bi-tc HF +doc: TC-SCF ENERGY interface: ezfio [converged_tcscf] diff --git a/plugins/local/tc_scf/combine_lr_tcscf.irp.f b/plugins/local/tc_scf/combine_lr_tcscf.irp.f deleted file mode 100644 index a22614ba..00000000 --- a/plugins/local/tc_scf/combine_lr_tcscf.irp.f +++ /dev/null @@ -1,75 +0,0 @@ - -! --- - -program combine_lr_tcscf - - BEGIN_DOC - ! TODO : Put the documentation of the program here - END_DOC - - implicit none - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - bi_ortho = .True. - touch bi_ortho - - call comb_orbitals() - -end - -! --- - -subroutine comb_orbitals() - - implicit none - integer :: i, m, n, nn, mm - double precision :: accu_d, accu_nd - double precision, allocatable :: R(:,:), L(:,:), Rnew(:,:), tmp(:,:), S(:,:) - - n = ao_num - m = mo_num - nn = elec_alpha_num - mm = m - nn - - allocate(L(n,m), R(n,m), Rnew(n,m), S(m,m)) - L = mo_l_coef - R = mo_r_coef - - call check_weighted_biorthog(n, m, ao_overlap, L, R, accu_d, accu_nd, S, .true.) - - allocate(tmp(n,nn)) - do i = 1, nn - tmp(1:n,i) = R(1:n,i) - enddo - call impose_weighted_orthog_svd(n, nn, ao_overlap, tmp) - do i = 1, nn - Rnew(1:n,i) = tmp(1:n,i) - enddo - deallocate(tmp) - - allocate(tmp(n,mm)) - do i = 1, mm - tmp(1:n,i) = L(1:n,i+nn) - enddo - call impose_weighted_orthog_svd(n, mm, ao_overlap, tmp) - do i = 1, mm - Rnew(1:n,i+nn) = tmp(1:n,i) - enddo - deallocate(tmp) - - call check_weighted_biorthog(n, m, ao_overlap, Rnew, Rnew, accu_d, accu_nd, S, .true.) - - mo_r_coef = Rnew - call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef) - - deallocate(L, R, Rnew, S) - -end subroutine comb_orbitals - -! --- - diff --git a/plugins/local/tc_scf/diago_vartcfock.irp.f b/plugins/local/tc_scf/diago_vartcfock.irp.f deleted file mode 100644 index 0c881dcb..00000000 --- a/plugins/local/tc_scf/diago_vartcfock.irp.f +++ /dev/null @@ -1,96 +0,0 @@ - -! --- - -BEGIN_PROVIDER [ double precision, fock_vartc_eigvec_mo, (mo_num, mo_num)] - - implicit none - - integer :: i, j - integer :: liwork, lwork, n, info - integer, allocatable :: iwork(:) - double precision, allocatable :: work(:), F(:,:), F_save(:,:) - double precision, allocatable :: diag(:) - - PROVIDE mo_r_coef - PROVIDE Fock_matrix_vartc_mo_tot - - allocate( F(mo_num,mo_num), F_save(mo_num,mo_num) ) - allocate (diag(mo_num) ) - - do j = 1, mo_num - do i = 1, mo_num - F(i,j) = Fock_matrix_vartc_mo_tot(i,j) - enddo - enddo - - ! Insert level shift here - do i = elec_beta_num+1, elec_alpha_num - F(i,i) += 0.5d0 * level_shift_tcscf - enddo - do i = elec_alpha_num+1, mo_num - F(i,i) += level_shift_tcscf - enddo - - n = mo_num - lwork = 1+6*n + 2*n*n - liwork = 3 + 5*n - - allocate(work(lwork)) - allocate(iwork(liwork) ) - - lwork = -1 - liwork = -1 - - F_save = F - call dsyevd('V', 'U', mo_num, F, size(F, 1), diag, work, lwork, iwork, liwork, info) - - if (info /= 0) then - print *, irp_here//' DSYEVD failed : ', info - stop 1 - endif - lwork = int(work(1)) - liwork = iwork(1) - deallocate(iwork) - deallocate(work) - - allocate(work(lwork)) - allocate(iwork(liwork) ) - call dsyevd('V', 'U', mo_num, F, size(F, 1), diag, work, lwork, iwork, liwork, info) - deallocate(iwork) - - if (info /= 0) then - F = F_save - call dsyev('V', 'L', mo_num, F, size(F, 1), diag, work, lwork, info) - - if (info /= 0) then - print *, irp_here//' DSYEV failed : ', info - stop 1 - endif - endif - - do i = 1, mo_num - do j = 1, mo_num - fock_vartc_eigvec_mo(j,i) = F(j,i) - enddo - enddo - - deallocate(work, F, F_save, diag) - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, fock_vartc_eigvec_ao, (ao_num, mo_num)] - - implicit none - - PROVIDE mo_r_coef - - call dgemm( 'N', 'N', ao_num, mo_num, mo_num, 1.d0 & - , mo_r_coef, size(mo_r_coef, 1), fock_vartc_eigvec_mo, size(fock_vartc_eigvec_mo, 1) & - , 0.d0, fock_vartc_eigvec_ao, size(fock_vartc_eigvec_ao, 1)) - -END_PROVIDER - -! --- - diff --git a/plugins/local/tc_scf/diis_tcscf.irp.f b/plugins/local/tc_scf/diis_tcscf.irp.f index 5d7d6b2e..ccc8eb15 100644 --- a/plugins/local/tc_scf/diis_tcscf.irp.f +++ b/plugins/local/tc_scf/diis_tcscf.irp.f @@ -91,28 +91,14 @@ BEGIN_PROVIDER [double precision, FQS_SQF_ao, (ao_num, ao_num)] double precision, allocatable :: tmp(:,:) double precision, allocatable :: F(:,:) - !print *, ' Providing FQS_SQF_ao ...' - !call wall_time(t0) + PROVIDE Fock_matrix_tc_ao_tot allocate(F(ao_num,ao_num)) - if(var_tc) then - - do i = 1, ao_num - do j = 1, ao_num - F(j,i) = Fock_matrix_vartc_ao_tot(j,i) - enddo + do i = 1, ao_num + do j = 1, ao_num + F(j,i) = Fock_matrix_tc_ao_tot(j,i) enddo - - else - - PROVIDE Fock_matrix_tc_ao_tot - do i = 1, ao_num - do j = 1, ao_num - F(j,i) = Fock_matrix_tc_ao_tot(j,i) - enddo - enddo - - endif + enddo allocate(tmp(ao_num,ao_num)) @@ -140,9 +126,6 @@ BEGIN_PROVIDER [double precision, FQS_SQF_ao, (ao_num, ao_num)] deallocate(tmp) deallocate(F) - !call wall_time(t1) - !print *, ' Wall time for FQS_SQF_ao =', t1-t0 - END_PROVIDER ! --- @@ -152,61 +135,13 @@ BEGIN_PROVIDER [double precision, FQS_SQF_mo, (mo_num, mo_num)] implicit none double precision :: t0, t1 - !print*, ' Providing FQS_SQF_mo ...' - !call wall_time(t0) - PROVIDE mo_r_coef mo_l_coef PROVIDE FQS_SQF_ao call ao_to_mo_bi_ortho( FQS_SQF_ao, size(FQS_SQF_ao, 1) & , FQS_SQF_mo, size(FQS_SQF_mo, 1) ) - !call wall_time(t1) - !print*, ' Wall time for FQS_SQF_mo =', t1-t0 - END_PROVIDER ! --- -! BEGIN_PROVIDER [ double precision, eigenval_Fock_tc_ao, (ao_num) ] -!&BEGIN_PROVIDER [ double precision, eigenvec_Fock_tc_ao, (ao_num,ao_num) ] -! -! BEGIN_DOC -! ! -! ! Eigenvalues and eigenvectors of the Fock matrix over the ao basis -! ! -! ! F' = X.T x F x X where X = ao_overlap^(-1/2) -! ! -! ! F' x Cr' = Cr' x E ==> F Cr = Cr x E with Cr = X x Cr' -! ! F'.T x Cl' = Cl' x E ==> F.T Cl = Cl x E with Cl = X x Cl' -! ! -! END_DOC -! -! implicit none -! double precision, allocatable :: tmp1(:,:), tmp2(:,:) -! -! ! --- -! ! Fock matrix in orthogonal basis: F' = X.T x F x X -! -! allocate(tmp1(ao_num,ao_num)) -! call dgemm( 'N', 'N', ao_num, ao_num, ao_num, 1.d0 & -! , Fock_matrix_tc_ao_tot, size(Fock_matrix_tc_ao_tot, 1), S_half_inv, size(S_half_inv, 1) & -! , 0.d0, tmp1, size(tmp1, 1) ) -! -! allocate(tmp2(ao_num,ao_num)) -! call dgemm( 'T', 'N', ao_num, ao_num, ao_num, 1.d0 & -! , S_half_inv, size(S_half_inv, 1), tmp1, size(tmp1, 1) & -! , 0.d0, tmp2, size(tmp2, 1) ) -! -! ! --- -! -! ! Diagonalize F' to obtain eigenvectors in orthogonal basis C' and eigenvalues -! ! TODO -! -! ! Back-transform eigenvectors: C =X.C' -! -!END_PROVIDER - -! --- - -~ diff --git a/plugins/local/tc_scf/fock_3e_bi_ortho_cs.irp.f b/plugins/local/tc_scf/fock_3e_bi_ortho_cs.irp.f deleted file mode 100644 index 8fd5e5b6..00000000 --- a/plugins/local/tc_scf/fock_3e_bi_ortho_cs.irp.f +++ /dev/null @@ -1,299 +0,0 @@ - -! --- - -BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_cs, (mo_num, mo_num)] - - implicit none - integer :: a, b, i, j, ipoint - double precision :: ti, tf - double precision :: loc_1, loc_2, loc_3 - double precision, allocatable :: Okappa(:), Jkappa(:,:) - double precision, allocatable :: tmp_omp_d1(:), tmp_omp_d2(:,:) - double precision, allocatable :: tmp_1(:,:), tmp_2(:,:,:,:), tmp_22(:,:,:) - double precision, allocatable :: tmp_3(:,:,:), tmp_4(:,:,:) - - PROVIDE mo_l_coef mo_r_coef - - !print *, ' PROVIDING fock_3e_uhf_mo_cs ...' - !call wall_time(ti) - - ! --- - - allocate(Jkappa(n_points_final_grid,3), Okappa(n_points_final_grid)) - Jkappa = 0.d0 - Okappa = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, i, tmp_omp_d1, tmp_omp_d2) & - !$OMP SHARED (n_points_final_grid, elec_beta_num, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, Okappa, Jkappa) - - allocate(tmp_omp_d2(n_points_final_grid,3), tmp_omp_d1(n_points_final_grid)) - tmp_omp_d2 = 0.d0 - tmp_omp_d1 = 0.d0 - - !$OMP DO - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_omp_d2(ipoint,1) += int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_omp_d2(ipoint,2) += int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_omp_d2(ipoint,3) += int2_grad1_u12_bimo_t(ipoint,3,i,i) - tmp_omp_d1(ipoint) += mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - do ipoint = 1, n_points_final_grid - Jkappa(ipoint,1) += tmp_omp_d2(ipoint,1) - Jkappa(ipoint,2) += tmp_omp_d2(ipoint,2) - Jkappa(ipoint,3) += tmp_omp_d2(ipoint,3) - Okappa(ipoint) += tmp_omp_d1(ipoint) - enddo - !$OMP END CRITICAL - - deallocate(tmp_omp_d2, tmp_omp_d1) - - !$OMP END PARALLEL - - ! --- - - allocate(tmp_1(n_points_final_grid,4)) - - do ipoint = 1, n_points_final_grid - loc_1 = 2.d0 * Okappa(ipoint) - tmp_1(ipoint,1) = loc_1 * Jkappa(ipoint,1) - tmp_1(ipoint,2) = loc_1 * Jkappa(ipoint,2) - tmp_1(ipoint,3) = loc_1 * Jkappa(ipoint,3) - tmp_1(ipoint,4) = Okappa(ipoint) - enddo - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, i, j, loc_1, tmp_omp_d2) & - !$OMP SHARED (n_points_final_grid, elec_beta_num, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_1) - - allocate(tmp_omp_d2(n_points_final_grid,3)) - tmp_omp_d2 = 0.d0 - - !$OMP DO COLLAPSE(2) - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - loc_1 = mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - - tmp_omp_d2(ipoint,1) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,1,i,j) - tmp_omp_d2(ipoint,2) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,2,i,j) - tmp_omp_d2(ipoint,3) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,3,i,j) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - do ipoint = 1, n_points_final_grid - tmp_1(ipoint,1) += tmp_omp_d2(ipoint,1) - tmp_1(ipoint,2) += tmp_omp_d2(ipoint,2) - tmp_1(ipoint,3) += tmp_omp_d2(ipoint,3) - enddo - !$OMP END CRITICAL - - deallocate(tmp_omp_d2) - !$OMP END PARALLEL - - ! --- - - if(tc_save_mem) then - - allocate(tmp_22(n_points_final_grid,4,mo_num)) - do a = 1, mo_num - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, b, i) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, a, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, final_weight_at_r_vector, & - !$OMP tmp_22) - !$OMP DO - do b = 1, mo_num - do ipoint = 1, n_points_final_grid - tmp_22(ipoint,1,b) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,1,b,a) - tmp_22(ipoint,2,b) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,2,b,a) - tmp_22(ipoint,3,b) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,3,b,a) - enddo - tmp_22(:,4,b) = 0.d0 - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_22(ipoint,4,b) -= final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & - + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & - + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - call dgemv( 'T', 4*n_points_final_grid, mo_num, -2.d0 & - , tmp_22(1,1,1), size(tmp_22, 1) * size(tmp_22, 2) & - , tmp_1(1,1), 1 & - , 0.d0, fock_3e_uhf_mo_cs(1,a), 1) - enddo - deallocate(tmp_22) - - else - - allocate(tmp_2(n_points_final_grid,4,mo_num,mo_num)) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, a, b, i) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, final_weight_at_r_vector, & - !$OMP tmp_2) - !$OMP DO COLLAPSE(2) - do a = 1, mo_num - do b = 1, mo_num - do ipoint = 1, n_points_final_grid - tmp_2(ipoint,1,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,1,b,a) - tmp_2(ipoint,2,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,2,b,a) - tmp_2(ipoint,3,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,3,b,a) - enddo - tmp_2(:,4,b,a) = 0.d0 - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_2(ipoint,4,b,a) -= final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & - + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & - + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) - enddo - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - call dgemv( 'T', 4*n_points_final_grid, mo_num*mo_num, -2.d0 & - , tmp_2(1,1,1,1), size(tmp_2, 1) * size(tmp_2, 2) & - , tmp_1(1,1), 1 & - , 0.d0, fock_3e_uhf_mo_cs(1,1), 1) - deallocate(tmp_2) - - endif - - deallocate(tmp_1) - - ! --- - - allocate(tmp_3(n_points_final_grid,5,mo_num), tmp_4(n_points_final_grid,5,mo_num)) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, b, loc_1, loc_2) & - !$OMP SHARED (n_points_final_grid, mo_num, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP final_weight_at_r_vector, Jkappa, tmp_3, tmp_4) - !$OMP DO - do b = 1, mo_num - tmp_3(:,:,b) = 0.d0 - tmp_4(:,:,b) = 0.d0 - do ipoint = 1, n_points_final_grid - tmp_3(ipoint,1,b) = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,b) - - tmp_4(ipoint,1,b) = -2.d0 * mos_r_in_r_array_transp(ipoint,b) * ( Jkappa(ipoint,1) * Jkappa(ipoint,1) & - + Jkappa(ipoint,2) * Jkappa(ipoint,2) & - + Jkappa(ipoint,3) * Jkappa(ipoint,3) ) - tmp_4(ipoint,5,b) = mos_r_in_r_array_transp(ipoint,b) - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, b, i, loc_1, loc_2) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, & - !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP Jkappa, tmp_3, tmp_4) - !$OMP DO - do b = 1, mo_num - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,i) - loc_2 = mos_r_in_r_array_transp(ipoint,i) - - tmp_3(ipoint,2,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,1,b,i) - tmp_3(ipoint,3,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,2,b,i) - tmp_3(ipoint,4,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,3,b,i) - tmp_3(ipoint,5,b) += 2.d0 * loc_1 * ( Jkappa(ipoint,1) * int2_grad1_u12_bimo_t(ipoint,1,b,i) & - + Jkappa(ipoint,2) * int2_grad1_u12_bimo_t(ipoint,2,b,i) & - + Jkappa(ipoint,3) * int2_grad1_u12_bimo_t(ipoint,3,b,i) ) - - tmp_4(ipoint,2,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,1,i,b) - tmp_4(ipoint,3,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,2,i,b) - tmp_4(ipoint,4,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,3,i,b) - tmp_4(ipoint,1,b) += 2.d0 * loc_2 * ( Jkappa(ipoint,1) * int2_grad1_u12_bimo_t(ipoint,1,i,b) & - + Jkappa(ipoint,2) * int2_grad1_u12_bimo_t(ipoint,2,i,b) & - + Jkappa(ipoint,3) * int2_grad1_u12_bimo_t(ipoint,3,i,b) ) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, b, i, j, loc_1, loc_2, loc_3) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, & - !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP tmp_3, tmp_4) - !$OMP DO - do b = 1, mo_num - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,j) - loc_2 = mos_r_in_r_array_transp(ipoint,b) - loc_3 = mos_r_in_r_array_transp(ipoint,i) - - tmp_3(ipoint,5,b) -= loc_1 * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,j) & - + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,j) & - + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,j) ) - - tmp_4(ipoint,1,b) += ( loc_2 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) ) & - - loc_3 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,b) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,b) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,b) ) ) - enddo - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - ! --- - - call dgemm( 'T', 'N', mo_num, mo_num, 5*n_points_final_grid, 1.d0 & - , tmp_3(1,1,1), 5*n_points_final_grid & - , tmp_4(1,1,1), 5*n_points_final_grid & - , 1.d0, fock_3e_uhf_mo_cs(1,1), mo_num) - - deallocate(tmp_3, tmp_4) - deallocate(Jkappa, Okappa) - - ! --- - - !call wall_time(tf) - !print *, ' total Wall time for fock_3e_uhf_mo_cs =', (tf - ti) / 60.d0 - -END_PROVIDER - -! --- - diff --git a/plugins/local/tc_scf/fock_3e_bi_ortho_os.irp.f b/plugins/local/tc_scf/fock_3e_bi_ortho_os.irp.f deleted file mode 100644 index 4bbce720..00000000 --- a/plugins/local/tc_scf/fock_3e_bi_ortho_os.irp.f +++ /dev/null @@ -1,536 +0,0 @@ - -! --- - - BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_a_os, (mo_num, mo_num)] -&BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_b_os, (mo_num, mo_num)] - - BEGIN_DOC - ! - ! Open Shell part of the Fock matrix from three-electron terms - ! - ! WARNING :: non hermitian if bi-ortho MOS used - ! - END_DOC - - implicit none - integer :: a, b, i, j, ipoint - double precision :: loc_1, loc_2, loc_3, loc_4 - double precision :: ti, tf - double precision, allocatable :: Okappa(:), Jkappa(:,:), Obarkappa(:), Jbarkappa(:,:) - double precision, allocatable :: tmp_omp_d1(:), tmp_omp_d2(:,:) - double precision, allocatable :: tmp_1(:,:), tmp_2(:,:,:,:) - double precision, allocatable :: tmp_3(:,:,:), tmp_4(:,:,:) - - PROVIDE mo_l_coef mo_r_coef - - !print *, ' Providing fock_3e_uhf_mo_a_os and fock_3e_uhf_mo_b_os ...' - !call wall_time(ti) - - ! --- - - allocate(Jkappa(n_points_final_grid,3), Okappa(n_points_final_grid)) - allocate(Jbarkappa(n_points_final_grid,3), Obarkappa(n_points_final_grid)) - Jkappa = 0.d0 - Okappa = 0.d0 - Jbarkappa = 0.d0 - Obarkappa = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, i, tmp_omp_d1, tmp_omp_d2) & - !$OMP SHARED (n_points_final_grid, elec_beta_num, elec_alpha_num, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, Okappa, Jkappa, Obarkappa, Jbarkappa) - - allocate(tmp_omp_d2(n_points_final_grid,3), tmp_omp_d1(n_points_final_grid)) - - tmp_omp_d2 = 0.d0 - tmp_omp_d1 = 0.d0 - !$OMP DO - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_omp_d2(ipoint,1) += int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_omp_d2(ipoint,2) += int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_omp_d2(ipoint,3) += int2_grad1_u12_bimo_t(ipoint,3,i,i) - tmp_omp_d1(ipoint) += mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - !$OMP END DO NOWAIT - !$OMP CRITICAL - do ipoint = 1, n_points_final_grid - Jkappa(ipoint,1) += tmp_omp_d2(ipoint,1) - Jkappa(ipoint,2) += tmp_omp_d2(ipoint,2) - Jkappa(ipoint,3) += tmp_omp_d2(ipoint,3) - Okappa(ipoint) += tmp_omp_d1(ipoint) - enddo - !$OMP END CRITICAL - - tmp_omp_d2 = 0.d0 - tmp_omp_d1 = 0.d0 - !$OMP DO - do i = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - tmp_omp_d2(ipoint,1) += int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_omp_d2(ipoint,2) += int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_omp_d2(ipoint,3) += int2_grad1_u12_bimo_t(ipoint,3,i,i) - tmp_omp_d1(ipoint) += mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - !$OMP END DO NOWAIT - !$OMP CRITICAL - do ipoint = 1, n_points_final_grid - Jbarkappa(ipoint,1) += tmp_omp_d2(ipoint,1) - Jbarkappa(ipoint,2) += tmp_omp_d2(ipoint,2) - Jbarkappa(ipoint,3) += tmp_omp_d2(ipoint,3) - Obarkappa(ipoint) += tmp_omp_d1(ipoint) - enddo - !$OMP END CRITICAL - - deallocate(tmp_omp_d2, tmp_omp_d1) - !$OMP END PARALLEL - - ! --- - - allocate(tmp_1(n_points_final_grid,4)) - - do ipoint = 1, n_points_final_grid - - loc_1 = -2.d0 * Okappa (ipoint) - loc_2 = -2.d0 * Obarkappa(ipoint) - loc_3 = Obarkappa(ipoint) - - tmp_1(ipoint,1) = (loc_1 - loc_3) * Jbarkappa(ipoint,1) + loc_2 * Jkappa(ipoint,1) - tmp_1(ipoint,2) = (loc_1 - loc_3) * Jbarkappa(ipoint,2) + loc_2 * Jkappa(ipoint,2) - tmp_1(ipoint,3) = (loc_1 - loc_3) * Jbarkappa(ipoint,3) + loc_2 * Jkappa(ipoint,3) - - tmp_1(ipoint,4) = Obarkappa(ipoint) - enddo - - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, i, j, loc_1, loc_2, tmp_omp_d2) & - !$OMP SHARED (n_points_final_grid, elec_beta_num, elec_alpha_num, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_1) - - allocate(tmp_omp_d2(n_points_final_grid,3)) - - tmp_omp_d2 = 0.d0 - !$OMP DO COLLAPSE(2) - do i = 1, elec_beta_num - do j = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - loc_1 = mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - loc_2 = mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_omp_d2(ipoint,1) += loc_1 * int2_grad1_u12_bimo_t(ipoint,1,i,j) + loc_2 * int2_grad1_u12_bimo_t(ipoint,1,j,i) - tmp_omp_d2(ipoint,2) += loc_1 * int2_grad1_u12_bimo_t(ipoint,2,i,j) + loc_2 * int2_grad1_u12_bimo_t(ipoint,2,j,i) - tmp_omp_d2(ipoint,3) += loc_1 * int2_grad1_u12_bimo_t(ipoint,3,i,j) + loc_2 * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - !$OMP CRITICAL - do ipoint = 1, n_points_final_grid - tmp_1(ipoint,1) += tmp_omp_d2(ipoint,1) - tmp_1(ipoint,2) += tmp_omp_d2(ipoint,2) - tmp_1(ipoint,3) += tmp_omp_d2(ipoint,3) - enddo - !$OMP END CRITICAL - - tmp_omp_d2 = 0.d0 - !$OMP DO COLLAPSE(2) - do i = elec_beta_num+1, elec_alpha_num - do j = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - loc_1 = mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - - tmp_omp_d2(ipoint,1) += loc_1 * int2_grad1_u12_bimo_t(ipoint,1,i,j) - tmp_omp_d2(ipoint,2) += loc_1 * int2_grad1_u12_bimo_t(ipoint,2,i,j) - tmp_omp_d2(ipoint,3) += loc_1 * int2_grad1_u12_bimo_t(ipoint,3,i,j) - enddo - enddo - enddo - !$OMP END DO NOWAIT - !$OMP CRITICAL - do ipoint = 1, n_points_final_grid - tmp_1(ipoint,1) += tmp_omp_d2(ipoint,1) - tmp_1(ipoint,2) += tmp_omp_d2(ipoint,2) - tmp_1(ipoint,3) += tmp_omp_d2(ipoint,3) - enddo - !$OMP END CRITICAL - - deallocate(tmp_omp_d2) - !$OMP END PARALLEL - - ! --- - - allocate(tmp_2(n_points_final_grid,4,mo_num,mo_num)) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, a, b) & - !$OMP SHARED (n_points_final_grid, mo_num, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, final_weight_at_r_vector, & - !$OMP tmp_2) - !$OMP DO COLLAPSE(2) - do a = 1, mo_num - do b = 1, mo_num - do ipoint = 1, n_points_final_grid - tmp_2(ipoint,1,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,1,b,a) - tmp_2(ipoint,2,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,2,b,a) - tmp_2(ipoint,3,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,3,b,a) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, a, b, i) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & - !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & - !$OMP tmp_2) - !$OMP DO COLLAPSE(2) - do a = 1, mo_num - do b = 1, mo_num - - tmp_2(:,4,b,a) = 0.d0 - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_2(ipoint,4,b,a) += final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & - + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & - + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) - enddo - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - ! --- - - call dgemv( 'T', 4*n_points_final_grid, mo_num*mo_num, 1.d0 & - , tmp_2(1,1,1,1), size(tmp_2, 1) * size(tmp_2, 2) & - , tmp_1(1,1), 1 & - , 0.d0, fock_3e_uhf_mo_b_os(1,1), 1) - - deallocate(tmp_1, tmp_2) - - ! --- - - allocate(tmp_3(n_points_final_grid,2,mo_num), tmp_4(n_points_final_grid,2,mo_num)) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, b, loc_1, loc_2) & - !$OMP SHARED (n_points_final_grid, mo_num, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP final_weight_at_r_vector, Jkappa, Jbarkappa, tmp_3, tmp_4) - !$OMP DO - do b = 1, mo_num - tmp_3(:,:,b) = 0.d0 - tmp_4(:,:,b) = 0.d0 - do ipoint = 1, n_points_final_grid - - tmp_3(ipoint,1,b) = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,b) - - loc_1 = -2.0d0 * mos_r_in_r_array_transp(ipoint,b) - - tmp_4(ipoint,1,b) = loc_1 * ( Jbarkappa(ipoint,1) * (Jkappa(ipoint,1) + 0.25d0 * Jbarkappa(ipoint,1)) & - + Jbarkappa(ipoint,2) * (Jkappa(ipoint,2) + 0.25d0 * Jbarkappa(ipoint,2)) & - + Jbarkappa(ipoint,3) * (Jkappa(ipoint,3) + 0.25d0 * Jbarkappa(ipoint,3)) ) - - tmp_4(ipoint,2,b) = mos_r_in_r_array_transp(ipoint,b) - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, b, i, loc_1, loc_2, loc_3, loc_4) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & - !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP Jkappa, Jbarkappa, tmp_3, tmp_4) - !$OMP DO - do b = 1, mo_num - - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,i) - loc_2 = mos_r_in_r_array_transp(ipoint,i) - - tmp_3(ipoint,2,b) += loc_1 * ( Jbarkappa(ipoint,1) * int2_grad1_u12_bimo_t(ipoint,1,b,i) & - + Jbarkappa(ipoint,2) * int2_grad1_u12_bimo_t(ipoint,2,b,i) & - + Jbarkappa(ipoint,3) * int2_grad1_u12_bimo_t(ipoint,3,b,i) ) - - tmp_4(ipoint,1,b) += loc_2 * ( Jbarkappa(ipoint,1) * int2_grad1_u12_bimo_t(ipoint,1,i,b) & - + Jbarkappa(ipoint,2) * int2_grad1_u12_bimo_t(ipoint,2,i,b) & - + Jbarkappa(ipoint,3) * int2_grad1_u12_bimo_t(ipoint,3,i,b) ) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, b, i, j, loc_1, loc_2, loc_3) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & - !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP tmp_3, tmp_4) - !$OMP DO - do b = 1, mo_num - do i = 1, elec_beta_num - do j = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - loc_2 = mos_r_in_r_array_transp(ipoint,b) - - tmp_4(ipoint,1,b) += loc_2 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) ) - enddo - enddo - enddo - - do i = elec_beta_num+1, elec_alpha_num - do j = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - loc_2 = 0.5d0 * mos_r_in_r_array_transp(ipoint,b) - - tmp_4(ipoint,1,b) += loc_2 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) ) - enddo - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - ! --- - - call dgemm( 'T', 'N', mo_num, mo_num, 2*n_points_final_grid, 1.d0 & - , tmp_3(1,1,1), 2*n_points_final_grid & - , tmp_4(1,1,1), 2*n_points_final_grid & - , 1.d0, fock_3e_uhf_mo_b_os(1,1), mo_num) - - deallocate(tmp_3, tmp_4) - - - - - ! --- - - fock_3e_uhf_mo_a_os = fock_3e_uhf_mo_b_os - - allocate(tmp_1(n_points_final_grid,1)) - - do ipoint = 1, n_points_final_grid - tmp_1(ipoint,1) = Obarkappa(ipoint) + 2.d0 * Okappa(ipoint) - enddo - - allocate(tmp_2(n_points_final_grid,1,mo_num,mo_num)) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, a, b, i) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & - !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & - !$OMP tmp_2) - !$OMP DO COLLAPSE(2) - do a = 1, mo_num - do b = 1, mo_num - - tmp_2(:,1,b,a) = 0.d0 - do i = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - tmp_2(ipoint,1,b,a) += final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & - + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & - + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) - enddo - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - call dgemv( 'T', n_points_final_grid, mo_num*mo_num, 1.d0 & - , tmp_2(1,1,1,1), size(tmp_2, 1) * size(tmp_2, 2) & - , tmp_1(1,1), 1 & - , 1.d0, fock_3e_uhf_mo_a_os(1,1), 1) - - deallocate(tmp_1, tmp_2) - - ! --- - - allocate(tmp_3(n_points_final_grid,8,mo_num), tmp_4(n_points_final_grid,8,mo_num)) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, b) & - !$OMP SHARED (n_points_final_grid, mo_num, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP final_weight_at_r_vector, Jkappa, Jbarkappa, tmp_3, tmp_4) - !$OMP DO - do b = 1, mo_num - tmp_3(:,:,b) = 0.d0 - tmp_4(:,:,b) = 0.d0 - do ipoint = 1, n_points_final_grid - - tmp_3(ipoint,1,b) = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,b) - - tmp_4(ipoint,8,b) = mos_r_in_r_array_transp(ipoint,b) - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, b, i, loc_1, loc_2, loc_3, loc_4) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & - !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP Jkappa, Jbarkappa, tmp_3, tmp_4) - !$OMP DO - do b = 1, mo_num - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,i) - loc_2 = mos_r_in_r_array_transp(ipoint,i) - - tmp_3(ipoint,2,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,1,b,i) - tmp_3(ipoint,3,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,2,b,i) - tmp_3(ipoint,4,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,3,b,i) - - tmp_4(ipoint,5,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,1,i,b) - tmp_4(ipoint,6,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,2,i,b) - tmp_4(ipoint,7,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,3,i,b) - enddo - enddo - - do i = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,i) - loc_3 = 2.d0 * loc_1 - loc_2 = mos_r_in_r_array_transp(ipoint,i) - loc_4 = 2.d0 * loc_2 - - tmp_3(ipoint,5,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,1,b,i) - tmp_3(ipoint,6,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,2,b,i) - tmp_3(ipoint,7,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,3,b,i) - - tmp_3(ipoint,8,b) += loc_3 * ( (Jkappa(ipoint,1) + 0.5d0 * Jbarkappa(ipoint,1)) * int2_grad1_u12_bimo_t(ipoint,1,b,i) & - + (Jkappa(ipoint,2) + 0.5d0 * Jbarkappa(ipoint,2)) * int2_grad1_u12_bimo_t(ipoint,2,b,i) & - + (Jkappa(ipoint,3) + 0.5d0 * Jbarkappa(ipoint,3)) * int2_grad1_u12_bimo_t(ipoint,3,b,i) ) - - tmp_4(ipoint,1,b) += loc_4 * ( (Jkappa(ipoint,1) + 0.5d0 * Jbarkappa(ipoint,1)) * int2_grad1_u12_bimo_t(ipoint,1,i,b) & - + (Jkappa(ipoint,2) + 0.5d0 * Jbarkappa(ipoint,2)) * int2_grad1_u12_bimo_t(ipoint,2,i,b) & - + (Jkappa(ipoint,3) + 0.5d0 * Jbarkappa(ipoint,3)) * int2_grad1_u12_bimo_t(ipoint,3,i,b) ) - - tmp_4(ipoint,2,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,1,i,b) - tmp_4(ipoint,3,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,2,i,b) - tmp_4(ipoint,4,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,3,i,b) - - tmp_4(ipoint,5,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,1,i,b) - tmp_4(ipoint,6,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,2,i,b) - tmp_4(ipoint,7,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,3,i,b) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint, b, i, j, loc_1, loc_2, loc_3) & - !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & - !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP tmp_3, tmp_4) - !$OMP DO - do b = 1, mo_num - - do i = 1, elec_beta_num - do j = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,j) - loc_2 = mos_r_in_r_array_transp(ipoint,b) - loc_3 = mos_r_in_r_array_transp(ipoint,i) - - tmp_3(ipoint,8,b) -= loc_1 * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,j) & - + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,j) & - + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,j) ) - - tmp_4(ipoint,1,b) -= loc_3 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,b) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,b) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,b) ) - - loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,i) - loc_3 = mos_r_in_r_array_transp(ipoint,j) - - tmp_3(ipoint,8,b) -= loc_1 * ( int2_grad1_u12_bimo_t(ipoint,1,b,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,b,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,b,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) ) - - tmp_4(ipoint,1,b) -= loc_3 * ( int2_grad1_u12_bimo_t(ipoint,1,j,i) * int2_grad1_u12_bimo_t(ipoint,1,i,b) & - + int2_grad1_u12_bimo_t(ipoint,2,j,i) * int2_grad1_u12_bimo_t(ipoint,2,i,b) & - + int2_grad1_u12_bimo_t(ipoint,3,j,i) * int2_grad1_u12_bimo_t(ipoint,3,i,b) ) - enddo - enddo - enddo - - do i = elec_beta_num+1, elec_alpha_num - do j = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,j) - loc_2 = 0.5d0 * mos_r_in_r_array_transp(ipoint,b) - loc_3 = mos_r_in_r_array_transp(ipoint,i) - - tmp_3(ipoint,8,b) -= loc_1 * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,j) & - + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,j) & - + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,j) ) - - tmp_4(ipoint,1,b) -= loc_3 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,b) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,b) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,b) ) - enddo - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - ! --- - - call dgemm( 'T', 'N', mo_num, mo_num, 8*n_points_final_grid, 1.d0 & - , tmp_3(1,1,1), 8*n_points_final_grid & - , tmp_4(1,1,1), 8*n_points_final_grid & - , 1.d0, fock_3e_uhf_mo_a_os(1,1), mo_num) - - deallocate(tmp_3, tmp_4) - deallocate(Jkappa, Okappa) - - !call wall_time(tf) - !print *, ' Wall time for fock_3e_uhf_mo_a_os and fock_3e_uhf_mo_b_os =', tf - ti - -END_PROVIDER - -! --- - diff --git a/plugins/local/tc_scf/fock_3e_bi_ortho_uhf.irp.f b/plugins/local/tc_scf/fock_3e_bi_ortho_uhf.irp.f deleted file mode 100644 index 47ee5b48..00000000 --- a/plugins/local/tc_scf/fock_3e_bi_ortho_uhf.irp.f +++ /dev/null @@ -1,77 +0,0 @@ - -! --- - -BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_a, (mo_num, mo_num)] - - BEGIN_DOC - ! - ! Fock matrix alpha from three-electron terms - ! - ! WARNING :: non hermitian if bi-ortho MOS used - ! - END_DOC - - implicit none - double precision :: ti, tf - - PROVIDE mo_l_coef mo_r_coef - - !print *, ' Providing fock_3e_uhf_mo_a ...' - !call wall_time(ti) - - ! CLOSED-SHELL PART - PROVIDE fock_3e_uhf_mo_cs - fock_3e_uhf_mo_a = fock_3e_uhf_mo_cs - - if(elec_alpha_num .ne. elec_beta_num) then - - ! OPEN-SHELL PART - PROVIDE fock_3e_uhf_mo_a_os - - fock_3e_uhf_mo_a += fock_3e_uhf_mo_a_os - endif - - !call wall_time(tf) - !print *, ' Wall time for fock_3e_uhf_mo_a (min) =', (tf - ti)/60.d0 - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_b, (mo_num, mo_num)] - - BEGIN_DOC - ! - ! Fock matrix beta from three-electron terms - ! - ! WARNING :: non hermitian if bi-ortho MOS used - ! - END_DOC - - implicit none - double precision :: ti, tf - - PROVIDE mo_l_coef mo_r_coef - - !print *, ' Providing and fock_3e_uhf_mo_b ...' - !call wall_time(ti) - - ! CLOSED-SHELL PART - PROVIDE fock_3e_uhf_mo_cs - fock_3e_uhf_mo_b = fock_3e_uhf_mo_cs - - if(elec_alpha_num .ne. elec_beta_num) then - - ! OPEN-SHELL PART - PROVIDE fock_3e_uhf_mo_b_os - - fock_3e_uhf_mo_b += fock_3e_uhf_mo_b_os - endif - - !call wall_time(tf) - !print *, ' Wall time for fock_3e_uhf_mo_b =', tf - ti - -END_PROVIDER - -! --- - diff --git a/plugins/local/tc_scf/fock_3e_bi_ortho_uhf_old.irp.f b/plugins/local/tc_scf/fock_3e_bi_ortho_uhf_old.irp.f deleted file mode 100644 index 3bf6bd85..00000000 --- a/plugins/local/tc_scf/fock_3e_bi_ortho_uhf_old.irp.f +++ /dev/null @@ -1,490 +0,0 @@ - -! --- - -BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_cs_old, (mo_num, mo_num)] - - implicit none - integer :: a, b, i, j - double precision :: I_bij_aij, I_bij_ija, I_bij_jai, I_bij_aji, I_bij_iaj, I_bij_jia - double precision :: ti, tf - double precision, allocatable :: tmp(:,:) - - PROVIDE mo_l_coef mo_r_coef - call give_integrals_3_body_bi_ort(1, 1, 1, 1, 1, 1, I_bij_aij) - - !print *, ' PROVIDING fock_3e_uhf_mo_cs_old ...' - !call wall_time(ti) - - fock_3e_uhf_mo_cs_old = 0.d0 - - !$OMP PARALLEL DEFAULT (NONE) & - !$OMP PRIVATE (a, b, i, j, I_bij_aij, I_bij_ija, I_bij_jai, I_bij_aji, I_bij_iaj, I_bij_jia, tmp) & - !$OMP SHARED (mo_num, elec_beta_num, fock_3e_uhf_mo_cs_old) - - allocate(tmp(mo_num,mo_num)) - tmp = 0.d0 - - !$OMP DO - do a = 1, mo_num - do b = 1, mo_num - - do j = 1, elec_beta_num - do i = 1, elec_beta_num - - call give_integrals_3_body_bi_ort(b, i, j, a, i, j, I_bij_aij) - call give_integrals_3_body_bi_ort(b, i, j, i, j, a, I_bij_ija) - call give_integrals_3_body_bi_ort(b, i, j, j, a, i, I_bij_jai) - call give_integrals_3_body_bi_ort(b, i, j, a, j, i, I_bij_aji) - call give_integrals_3_body_bi_ort(b, i, j, i, a, j, I_bij_iaj) - call give_integrals_3_body_bi_ort(b, i, j, j, i, a, I_bij_jia) - - tmp(b,a) -= 0.5d0 * ( 4.d0 * I_bij_aij & - + I_bij_ija & - + I_bij_jai & - - 2.d0 * I_bij_aji & - - 2.d0 * I_bij_iaj & - - 2.d0 * I_bij_jia ) - - enddo - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - do a = 1, mo_num - do b = 1, mo_num - fock_3e_uhf_mo_cs_old(b,a) += tmp(b,a) - enddo - enddo - !$OMP END CRITICAL - - deallocate(tmp) - !$OMP END PARALLEL - - !call wall_time(tf) - !print *, ' total Wall time for fock_3e_uhf_mo_cs_old =', tf - ti - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_a_old, (mo_num, mo_num)] - - BEGIN_DOC - ! - ! ALPHA part of the Fock matrix from three-electron terms - ! - ! WARNING :: non hermitian if bi-ortho MOS used - ! - END_DOC - - implicit none - integer :: a, b, i, j, o - double precision :: I_bij_aij, I_bij_ija, I_bij_jai, I_bij_aji, I_bij_iaj, I_bij_jia - double precision :: ti, tf - double precision, allocatable :: tmp(:,:) - - PROVIDE mo_l_coef mo_r_coef - PROVIDE fock_3e_uhf_mo_cs - - !print *, ' Providing fock_3e_uhf_mo_a_old ...' - !call wall_time(ti) - - o = elec_beta_num + 1 - call give_integrals_3_body_bi_ort(1, 1, 1, 1, 1, 1, I_bij_aij) - - PROVIDE fock_3e_uhf_mo_cs_old - fock_3e_uhf_mo_a_old = fock_3e_uhf_mo_cs_old - - !$OMP PARALLEL DEFAULT (NONE) & - !$OMP PRIVATE (a, b, i, j, I_bij_aij, I_bij_ija, I_bij_jai, I_bij_aji, I_bij_iaj, I_bij_jia, tmp) & - !$OMP SHARED (mo_num, o, elec_alpha_num, elec_beta_num, fock_3e_uhf_mo_a_old) - - allocate(tmp(mo_num,mo_num)) - tmp = 0.d0 - - !$OMP DO - do a = 1, mo_num - do b = 1, mo_num - - ! --- - - do j = o, elec_alpha_num - do i = 1, elec_beta_num - - call give_integrals_3_body_bi_ort(b, i, j, a, i, j, I_bij_aij) - call give_integrals_3_body_bi_ort(b, i, j, i, j, a, I_bij_ija) - call give_integrals_3_body_bi_ort(b, i, j, j, a, i, I_bij_jai) - call give_integrals_3_body_bi_ort(b, i, j, a, j, i, I_bij_aji) - call give_integrals_3_body_bi_ort(b, i, j, i, a, j, I_bij_iaj) - call give_integrals_3_body_bi_ort(b, i, j, j, i, a, I_bij_jia) - - tmp(b,a) -= 0.5d0 * ( 2.d0 * I_bij_aij & - + I_bij_ija & - + I_bij_jai & - - I_bij_aji & - - I_bij_iaj & - - 2.d0 * I_bij_jia ) - - enddo - enddo - - ! --- - - do j = 1, elec_beta_num - do i = o, elec_alpha_num - - call give_integrals_3_body_bi_ort(b, i, j, a, i, j, I_bij_aij) - call give_integrals_3_body_bi_ort(b, i, j, i, j, a, I_bij_ija) - call give_integrals_3_body_bi_ort(b, i, j, j, a, i, I_bij_jai) - call give_integrals_3_body_bi_ort(b, i, j, a, j, i, I_bij_aji) - call give_integrals_3_body_bi_ort(b, i, j, i, a, j, I_bij_iaj) - call give_integrals_3_body_bi_ort(b, i, j, j, i, a, I_bij_jia) - - tmp(b,a) -= 0.5d0 * ( 2.d0 * I_bij_aij & - + I_bij_ija & - + I_bij_jai & - - I_bij_aji & - - 2.d0 * I_bij_iaj & - - I_bij_jia ) - - enddo - enddo - - ! --- - - do j = o, elec_alpha_num - do i = o, elec_alpha_num - - call give_integrals_3_body_bi_ort(b, i, j, a, i, j, I_bij_aij) - call give_integrals_3_body_bi_ort(b, i, j, i, j, a, I_bij_ija) - call give_integrals_3_body_bi_ort(b, i, j, j, a, i, I_bij_jai) - call give_integrals_3_body_bi_ort(b, i, j, a, j, i, I_bij_aji) - call give_integrals_3_body_bi_ort(b, i, j, i, a, j, I_bij_iaj) - call give_integrals_3_body_bi_ort(b, i, j, j, i, a, I_bij_jia) - - tmp(b,a) -= 0.5d0 * ( I_bij_aij & - + I_bij_ija & - + I_bij_jai & - - I_bij_aji & - - I_bij_iaj & - - I_bij_jia ) - - enddo - enddo - - ! --- - - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - do a = 1, mo_num - do b = 1, mo_num - fock_3e_uhf_mo_a_old(b,a) += tmp(b,a) - enddo - enddo - !$OMP END CRITICAL - - deallocate(tmp) - !$OMP END PARALLEL - - !call wall_time(tf) - !print *, ' Wall time for fock_3e_uhf_mo_a_old =', tf - ti - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [double precision, fock_3e_uhf_mo_b_old, (mo_num, mo_num)] - - BEGIN_DOC - ! - ! BETA part of the Fock matrix from three-electron terms - ! - ! WARNING :: non hermitian if bi-ortho MOS used - ! - END_DOC - - implicit none - integer :: a, b, i, j, o - double precision :: I_bij_aij, I_bij_ija, I_bij_jai, I_bij_aji, I_bij_iaj, I_bij_jia - double precision :: ti, tf - double precision, allocatable :: tmp(:,:) - - PROVIDE mo_l_coef mo_r_coef - - !print *, ' PROVIDING fock_3e_uhf_mo_b_old ...' - !call wall_time(ti) - - o = elec_beta_num + 1 - call give_integrals_3_body_bi_ort(1, 1, 1, 1, 1, 1, I_bij_aij) - - PROVIDE fock_3e_uhf_mo_cs_old - fock_3e_uhf_mo_b_old = fock_3e_uhf_mo_cs_old - - !$OMP PARALLEL DEFAULT (NONE) & - !$OMP PRIVATE (a, b, i, j, I_bij_aij, I_bij_ija, I_bij_jai, I_bij_aji, I_bij_iaj, I_bij_jia, tmp) & - !$OMP SHARED (mo_num, o, elec_alpha_num, elec_beta_num, fock_3e_uhf_mo_b_old) - - allocate(tmp(mo_num,mo_num)) - tmp = 0.d0 - - !$OMP DO - do a = 1, mo_num - do b = 1, mo_num - - ! --- - - do j = o, elec_alpha_num - do i = 1, elec_beta_num - - call give_integrals_3_body_bi_ort(b, i, j, a, i, j, I_bij_aij) - call give_integrals_3_body_bi_ort(b, i, j, i, j, a, I_bij_ija) - call give_integrals_3_body_bi_ort(b, i, j, j, a, i, I_bij_jai) - call give_integrals_3_body_bi_ort(b, i, j, a, j, i, I_bij_aji) - call give_integrals_3_body_bi_ort(b, i, j, i, a, j, I_bij_iaj) - call give_integrals_3_body_bi_ort(b, i, j, j, i, a, I_bij_jia) - - tmp(b,a) -= 0.5d0 * ( 2.d0 * I_bij_aij & - - I_bij_aji & - - I_bij_iaj ) - - enddo - enddo - - ! --- - - do j = 1, elec_beta_num - do i = o, elec_alpha_num - - call give_integrals_3_body_bi_ort(b, i, j, a, i, j, I_bij_aij) - call give_integrals_3_body_bi_ort(b, i, j, i, j, a, I_bij_ija) - call give_integrals_3_body_bi_ort(b, i, j, j, a, i, I_bij_jai) - call give_integrals_3_body_bi_ort(b, i, j, a, j, i, I_bij_aji) - call give_integrals_3_body_bi_ort(b, i, j, i, a, j, I_bij_iaj) - call give_integrals_3_body_bi_ort(b, i, j, j, i, a, I_bij_jia) - - tmp(b,a) -= 0.5d0 * ( 2.d0 * I_bij_aij & - - I_bij_aji & - - I_bij_jia ) - - enddo - enddo - - ! --- - - do j = o, elec_alpha_num - do i = o, elec_alpha_num - - call give_integrals_3_body_bi_ort(b, i, j, a, i, j, I_bij_aij) - call give_integrals_3_body_bi_ort(b, i, j, i, j, a, I_bij_ija) - call give_integrals_3_body_bi_ort(b, i, j, j, a, i, I_bij_jai) - call give_integrals_3_body_bi_ort(b, i, j, a, j, i, I_bij_aji) - call give_integrals_3_body_bi_ort(b, i, j, i, a, j, I_bij_iaj) - call give_integrals_3_body_bi_ort(b, i, j, j, i, a, I_bij_jia) - - tmp(b,a) -= 0.5d0 * ( I_bij_aij & - - I_bij_aji ) - - enddo - enddo - - ! --- - - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - do a = 1, mo_num - do b = 1, mo_num - fock_3e_uhf_mo_b_old(b,a) += tmp(b,a) - enddo - enddo - !$OMP END CRITICAL - - deallocate(tmp) - !$OMP END PARALLEL - - !call wall_time(tf) - !print *, ' total Wall time for fock_3e_uhf_mo_b_old =', tf - ti - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [double precision, fock_3e_uhf_ao_a, (ao_num, ao_num)] - - BEGIN_DOC - ! - ! Equations (B6) and (B7) - ! - ! g <--> gamma - ! d <--> delta - ! e <--> eta - ! k <--> kappa - ! - END_DOC - - implicit none - integer :: g, d, e, k, mu, nu - double precision :: dm_ge_a, dm_ge_b, dm_ge - double precision :: dm_dk_a, dm_dk_b, dm_dk - double precision :: i_mugd_nuek, i_mugd_eknu, i_mugd_knue, i_mugd_nuke, i_mugd_enuk, i_mugd_kenu - double precision :: ti, tf - double precision, allocatable :: f_tmp(:,:) - - !print *, ' PROVIDING fock_3e_uhf_ao_a ...' - !call wall_time(ti) - - fock_3e_uhf_ao_a = 0.d0 - - !$OMP PARALLEL DEFAULT (NONE) & - !$OMP PRIVATE (g, e, d, k, mu, nu, dm_ge_a, dm_ge_b, dm_ge, dm_dk_a, dm_dk_b, dm_dk, f_tmp, & - !$OMP i_mugd_nuek, i_mugd_eknu, i_mugd_knue, i_mugd_nuke, i_mugd_enuk, i_mugd_kenu) & - !$OMP SHARED (ao_num, TCSCF_bi_ort_dm_ao_alpha, TCSCF_bi_ort_dm_ao_beta, fock_3e_uhf_ao_a) - - allocate(f_tmp(ao_num,ao_num)) - f_tmp = 0.d0 - - !$OMP DO - do g = 1, ao_num - do e = 1, ao_num - dm_ge_a = TCSCF_bi_ort_dm_ao_alpha(g,e) - dm_ge_b = TCSCF_bi_ort_dm_ao_beta (g,e) - dm_ge = dm_ge_a + dm_ge_b - do d = 1, ao_num - do k = 1, ao_num - dm_dk_a = TCSCF_bi_ort_dm_ao_alpha(d,k) - dm_dk_b = TCSCF_bi_ort_dm_ao_beta (d,k) - dm_dk = dm_dk_a + dm_dk_b - do mu = 1, ao_num - do nu = 1, ao_num - call give_integrals_3_body_bi_ort_ao(mu, g, d, nu, e, k, i_mugd_nuek) - call give_integrals_3_body_bi_ort_ao(mu, g, d, e, k, nu, i_mugd_eknu) - call give_integrals_3_body_bi_ort_ao(mu, g, d, k, nu, e, i_mugd_knue) - call give_integrals_3_body_bi_ort_ao(mu, g, d, nu, k, e, i_mugd_nuke) - call give_integrals_3_body_bi_ort_ao(mu, g, d, e, nu, k, i_mugd_enuk) - call give_integrals_3_body_bi_ort_ao(mu, g, d, k, e, nu, i_mugd_kenu) - f_tmp(mu,nu) -= 0.5d0 * ( dm_ge * dm_dk * i_mugd_nuek & - + dm_ge_a * dm_dk_a * i_mugd_eknu & - + dm_ge_a * dm_dk_a * i_mugd_knue & - - dm_ge_a * dm_dk * i_mugd_enuk & - - dm_ge * dm_dk_a * i_mugd_kenu & - - dm_ge_a * dm_dk_a * i_mugd_nuke & - - dm_ge_b * dm_dk_b * i_mugd_nuke ) - enddo - enddo - enddo - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - do mu = 1, ao_num - do nu = 1, ao_num - fock_3e_uhf_ao_a(mu,nu) += f_tmp(mu,nu) - enddo - enddo - !$OMP END CRITICAL - - deallocate(f_tmp) - !$OMP END PARALLEL - - !call wall_time(tf) - !print *, ' total Wall time for fock_3e_uhf_ao_a =', tf - ti - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [double precision, fock_3e_uhf_ao_b, (ao_num, ao_num)] - - BEGIN_DOC - ! - ! Equations (B6) and (B7) - ! - ! g <--> gamma - ! d <--> delta - ! e <--> eta - ! k <--> kappa - ! - END_DOC - - implicit none - integer :: g, d, e, k, mu, nu - double precision :: dm_ge_a, dm_ge_b, dm_ge - double precision :: dm_dk_a, dm_dk_b, dm_dk - double precision :: i_mugd_nuek, i_mugd_eknu, i_mugd_knue, i_mugd_nuke, i_mugd_enuk, i_mugd_kenu - double precision :: ti, tf - double precision, allocatable :: f_tmp(:,:) - - !print *, ' PROVIDING fock_3e_uhf_ao_b ...' - !call wall_time(ti) - - fock_3e_uhf_ao_b = 0.d0 - - !$OMP PARALLEL DEFAULT (NONE) & - !$OMP PRIVATE (g, e, d, k, mu, nu, dm_ge_a, dm_ge_b, dm_ge, dm_dk_a, dm_dk_b, dm_dk, f_tmp, & - !$OMP i_mugd_nuek, i_mugd_eknu, i_mugd_knue, i_mugd_nuke, i_mugd_enuk, i_mugd_kenu) & - !$OMP SHARED (ao_num, TCSCF_bi_ort_dm_ao_alpha, TCSCF_bi_ort_dm_ao_beta, fock_3e_uhf_ao_b) - - allocate(f_tmp(ao_num,ao_num)) - f_tmp = 0.d0 - - !$OMP DO - do g = 1, ao_num - do e = 1, ao_num - dm_ge_a = TCSCF_bi_ort_dm_ao_alpha(g,e) - dm_ge_b = TCSCF_bi_ort_dm_ao_beta (g,e) - dm_ge = dm_ge_a + dm_ge_b - do d = 1, ao_num - do k = 1, ao_num - dm_dk_a = TCSCF_bi_ort_dm_ao_alpha(d,k) - dm_dk_b = TCSCF_bi_ort_dm_ao_beta (d,k) - dm_dk = dm_dk_a + dm_dk_b - do mu = 1, ao_num - do nu = 1, ao_num - call give_integrals_3_body_bi_ort_ao(mu, g, d, nu, e, k, i_mugd_nuek) - call give_integrals_3_body_bi_ort_ao(mu, g, d, e, k, nu, i_mugd_eknu) - call give_integrals_3_body_bi_ort_ao(mu, g, d, k, nu, e, i_mugd_knue) - call give_integrals_3_body_bi_ort_ao(mu, g, d, nu, k, e, i_mugd_nuke) - call give_integrals_3_body_bi_ort_ao(mu, g, d, e, nu, k, i_mugd_enuk) - call give_integrals_3_body_bi_ort_ao(mu, g, d, k, e, nu, i_mugd_kenu) - f_tmp(mu,nu) -= 0.5d0 * ( dm_ge * dm_dk * i_mugd_nuek & - + dm_ge_b * dm_dk_b * i_mugd_eknu & - + dm_ge_b * dm_dk_b * i_mugd_knue & - - dm_ge_b * dm_dk * i_mugd_enuk & - - dm_ge * dm_dk_b * i_mugd_kenu & - - dm_ge_b * dm_dk_b * i_mugd_nuke & - - dm_ge_a * dm_dk_a * i_mugd_nuke ) - enddo - enddo - enddo - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - do mu = 1, ao_num - do nu = 1, ao_num - fock_3e_uhf_ao_b(mu,nu) += f_tmp(mu,nu) - enddo - enddo - !$OMP END CRITICAL - - deallocate(f_tmp) - !$OMP END PARALLEL - - !call wall_time(tf) - !print *, ' total Wall time for fock_3e_uhf_ao_b =', tf - ti - -END_PROVIDER - -! --- - diff --git a/plugins/local/tc_scf/fock_tc.irp.f b/plugins/local/tc_scf/fock_tc.irp.f index d3ddb8ad..508f3cd7 100644 --- a/plugins/local/tc_scf/fock_tc.irp.f +++ b/plugins/local/tc_scf/fock_tc.irp.f @@ -1,78 +1,15 @@ + ! --- - BEGIN_PROVIDER [ double precision, two_e_tc_non_hermit_integral_seq_alpha, (ao_num, ao_num)] -&BEGIN_PROVIDER [ double precision, two_e_tc_non_hermit_integral_seq_beta , (ao_num, ao_num)] + BEGIN_PROVIDER [ double precision, two_e_tc_integral_alpha, (ao_num, ao_num)] +&BEGIN_PROVIDER [ double precision, two_e_tc_integral_beta , (ao_num, ao_num)] BEGIN_DOC ! - ! two_e_tc_non_hermit_integral_seq_alpha(k,i) = ON THE AO BASIS + ! two_e_tc_integral_alpha(k,i) = ON THE AO BASIS ! - ! where F^tc is the TWO-BODY part of the TC Fock matrix and k,i are AO basis functions - ! - ! works in SEQUENTIAL - END_DOC - - implicit none - integer :: i, j, k, l - double precision :: density, density_a, density_b - double precision :: t0, t1 - - PROVIDE ao_two_e_tc_tot - - !print*, ' providing two_e_tc_non_hermit_integral_seq ...' - !call wall_time(t0) - - two_e_tc_non_hermit_integral_seq_alpha = 0.d0 - two_e_tc_non_hermit_integral_seq_beta = 0.d0 - - do i = 1, ao_num - do k = 1, ao_num - do j = 1, ao_num - do l = 1, ao_num - - density_a = TCSCF_density_matrix_ao_alpha(l,j) - density_b = TCSCF_density_matrix_ao_beta (l,j) - density = density_a + density_b - - !! rho(l,j) * < k l| T | i j> - !two_e_tc_non_hermit_integral_seq_alpha(k,i) += density * ao_two_e_tc_tot(l,j,k,i) - !! rho(l,j) * < k l| T | i j> - !two_e_tc_non_hermit_integral_seq_beta (k,i) += density * ao_two_e_tc_tot(l,j,k,i) - !! rho_a(l,j) * < l k| T | i j> - !two_e_tc_non_hermit_integral_seq_alpha(k,i) -= density_a * ao_two_e_tc_tot(k,j,l,i) - !! rho_b(l,j) * < l k| T | i j> - !two_e_tc_non_hermit_integral_seq_beta (k,i) -= density_b * ao_two_e_tc_tot(k,j,l,i) - - ! rho(l,j) * < k l| T | i j> - two_e_tc_non_hermit_integral_seq_alpha(k,i) += density * ao_two_e_tc_tot(k,i,l,j) - ! rho(l,j) * < k l| T | i j> - two_e_tc_non_hermit_integral_seq_beta (k,i) += density * ao_two_e_tc_tot(k,i,l,j) - ! rho_a(l,j) * < k l| T | j i> - two_e_tc_non_hermit_integral_seq_alpha(k,i) -= density_a * ao_two_e_tc_tot(k,j,l,i) - ! rho_b(l,j) * < k l| T | j i> - two_e_tc_non_hermit_integral_seq_beta (k,i) -= density_b * ao_two_e_tc_tot(k,j,l,i) - - enddo - enddo - enddo - enddo - - !call wall_time(t1) - !print*, ' wall time for two_e_tc_non_hermit_integral_seq after = ', t1 - t0 - -END_PROVIDER - -! --- - - BEGIN_PROVIDER [ double precision, two_e_tc_non_hermit_integral_alpha, (ao_num, ao_num)] -&BEGIN_PROVIDER [ double precision, two_e_tc_non_hermit_integral_beta , (ao_num, ao_num)] - - BEGIN_DOC - ! - ! two_e_tc_non_hermit_integral_alpha(k,i) = ON THE AO BASIS - ! - ! where F^tc is the TWO-BODY part of the TC Fock matrix and k,i are AO basis functions + ! where F^tc_2e is the TWO-BODY part of the TC Fock matrix and k,i are AO basis functions ! END_DOC @@ -86,16 +23,13 @@ END_PROVIDER PROVIDE mo_l_coef mo_r_coef PROVIDE TCSCF_density_matrix_ao_alpha TCSCF_density_matrix_ao_beta - !print*, ' Providing two_e_tc_non_hermit_integral ...' - !call wall_time(t0) - - two_e_tc_non_hermit_integral_alpha = 0.d0 - two_e_tc_non_hermit_integral_beta = 0.d0 + two_e_tc_integral_alpha = 0.d0 + two_e_tc_integral_beta = 0.d0 !$OMP PARALLEL DEFAULT (NONE) & !$OMP PRIVATE (i, j, k, l, density_a, density_b, density, tmp_a, tmp_b, I_coul, I_kjli) & !$OMP SHARED (ao_num, TCSCF_density_matrix_ao_alpha, TCSCF_density_matrix_ao_beta, ao_two_e_tc_tot, & - !$OMP two_e_tc_non_hermit_integral_alpha, two_e_tc_non_hermit_integral_beta) + !$OMP two_e_tc_integral_alpha, two_e_tc_integral_beta) allocate(tmp_a(ao_num,ao_num), tmp_b(ao_num,ao_num)) tmp_a = 0.d0 @@ -124,8 +58,8 @@ END_PROVIDER !$OMP CRITICAL do i = 1, ao_num do j = 1, ao_num - two_e_tc_non_hermit_integral_alpha(j,i) += tmp_a(j,i) - two_e_tc_non_hermit_integral_beta (j,i) += tmp_b(j,i) + two_e_tc_integral_alpha(j,i) += tmp_a(j,i) + two_e_tc_integral_beta (j,i) += tmp_b(j,i) enddo enddo !$OMP END CRITICAL @@ -133,9 +67,6 @@ END_PROVIDER deallocate(tmp_a, tmp_b) !$OMP END PARALLEL - !call wall_time(t1) - !print*, ' Wall time for two_e_tc_non_hermit_integral = ', t1 - t0 - END_PROVIDER ! --- @@ -149,13 +80,7 @@ BEGIN_PROVIDER [ double precision, Fock_matrix_tc_ao_alpha, (ao_num, ao_num)] implicit none double precision :: t0, t1 - !print*, ' Providing Fock_matrix_tc_ao_alpha ...' - !call wall_time(t0) - - Fock_matrix_tc_ao_alpha = ao_one_e_integrals_tc_tot + two_e_tc_non_hermit_integral_alpha - - !call wall_time(t1) - !print*, ' Wall time for Fock_matrix_tc_ao_alpha =', t1-t0 + Fock_matrix_tc_ao_alpha = ao_one_e_integrals_tc_tot + two_e_tc_integral_alpha END_PROVIDER @@ -169,7 +94,7 @@ BEGIN_PROVIDER [ double precision, Fock_matrix_tc_ao_beta, (ao_num, ao_num)] implicit none - Fock_matrix_tc_ao_beta = ao_one_e_integrals_tc_tot + two_e_tc_non_hermit_integral_beta + Fock_matrix_tc_ao_beta = ao_one_e_integrals_tc_tot + two_e_tc_integral_beta END_PROVIDER @@ -185,9 +110,6 @@ BEGIN_PROVIDER [double precision, Fock_matrix_tc_mo_alpha, (mo_num, mo_num)] double precision :: t0, t1, tt0, tt1 double precision, allocatable :: tmp(:,:) - !print*, ' Providing Fock_matrix_tc_mo_alpha ...' - !call wall_time(t0) - if(bi_ortho) then PROVIDE mo_l_coef mo_r_coef @@ -196,8 +118,8 @@ BEGIN_PROVIDER [double precision, Fock_matrix_tc_mo_alpha, (mo_num, mo_num)] , Fock_matrix_tc_mo_alpha, size(Fock_matrix_tc_mo_alpha, 1) ) if(three_body_h_tc) then - PROVIDE fock_3e_uhf_mo_a - Fock_matrix_tc_mo_alpha += fock_3e_uhf_mo_a + PROVIDE fock_3e_mo_a + Fock_matrix_tc_mo_alpha += fock_3e_mo_a endif else @@ -207,9 +129,6 @@ BEGIN_PROVIDER [double precision, Fock_matrix_tc_mo_alpha, (mo_num, mo_num)] endif - !call wall_time(t1) - !print*, ' Wall time for Fock_matrix_tc_mo_alpha =', t1-t0 - END_PROVIDER ! --- @@ -229,8 +148,8 @@ BEGIN_PROVIDER [ double precision, Fock_matrix_tc_mo_beta, (mo_num,mo_num) ] , Fock_matrix_tc_mo_beta, size(Fock_matrix_tc_mo_beta, 1) ) if(three_body_h_tc) then - PROVIDE fock_3e_uhf_mo_b - Fock_matrix_tc_mo_beta += fock_3e_uhf_mo_b + PROVIDE fock_3e_mo_b + Fock_matrix_tc_mo_beta += fock_3e_mo_b endif else @@ -286,20 +205,895 @@ BEGIN_PROVIDER [ double precision, Fock_matrix_tc_ao_tot, (ao_num, ao_num) ] implicit none double precision :: t0, t1 - !print*, ' Providing Fock_matrix_tc_ao_tot ...' - !call wall_time(t0) - PROVIDE mo_l_coef mo_r_coef PROVIDE Fock_matrix_tc_mo_tot call mo_to_ao_bi_ortho( Fock_matrix_tc_mo_tot, size(Fock_matrix_tc_mo_tot, 1) & , Fock_matrix_tc_ao_tot, size(Fock_matrix_tc_ao_tot, 1) ) - !call wall_time(t1) - !print*, ' Wall time for Fock_matrix_tc_ao_tot =', t1-t0 - END_PROVIDER ! --- + +! --- + +BEGIN_PROVIDER [double precision, fock_3e_mo_a, (mo_num, mo_num)] + + BEGIN_DOC + ! + ! Fock matrix alpha from three-electron terms + ! + ! WARNING :: non hermitian if bi-ortho MOS used + ! + END_DOC + + implicit none + double precision :: ti, tf + + PROVIDE mo_l_coef mo_r_coef + + ! CLOSED-SHELL PART + PROVIDE fock_3e_mo_cs + fock_3e_mo_a = fock_3e_mo_cs + + if(elec_alpha_num .ne. elec_beta_num) then + + ! OPEN-SHELL PART + PROVIDE fock_3e_mo_a_os + + fock_3e_mo_a += fock_3e_mo_a_os + endif + +END_PROVIDER + +! --- + +BEGIN_PROVIDER [double precision, fock_3e_mo_b, (mo_num, mo_num)] + + BEGIN_DOC + ! + ! Fock matrix beta from three-electron terms + ! + ! WARNING :: non hermitian if bi-ortho MOS used + ! + END_DOC + + implicit none + double precision :: ti, tf + + PROVIDE mo_l_coef mo_r_coef + + ! CLOSED-SHELL PART + PROVIDE fock_3e_mo_cs + fock_3e_mo_b = fock_3e_mo_cs + + if(elec_alpha_num .ne. elec_beta_num) then + + ! OPEN-SHELL PART + PROVIDE fock_3e_mo_b_os + + fock_3e_mo_b += fock_3e_mo_b_os + endif + +END_PROVIDER + +! --- + + +! --- + + BEGIN_PROVIDER [double precision, fock_3e_mo_a_os, (mo_num, mo_num)] +&BEGIN_PROVIDER [double precision, fock_3e_mo_b_os, (mo_num, mo_num)] + + BEGIN_DOC + ! + ! Open Shell part of the Fock matrix from three-electron terms + ! + ! WARNING :: non hermitian if bi-ortho MOS used + ! + END_DOC + + implicit none + integer :: a, b, i, j, ipoint + double precision :: loc_1, loc_2, loc_3, loc_4 + double precision :: ti, tf + double precision, allocatable :: Okappa(:), Jkappa(:,:), Obarkappa(:), Jbarkappa(:,:) + double precision, allocatable :: tmp_omp_d1(:), tmp_omp_d2(:,:) + double precision, allocatable :: tmp_1(:,:), tmp_2(:,:,:,:) + double precision, allocatable :: tmp_3(:,:,:), tmp_4(:,:,:) + + PROVIDE mo_l_coef mo_r_coef + + ! --- + + allocate(Jkappa(n_points_final_grid,3), Okappa(n_points_final_grid)) + allocate(Jbarkappa(n_points_final_grid,3), Obarkappa(n_points_final_grid)) + Jkappa = 0.d0 + Okappa = 0.d0 + Jbarkappa = 0.d0 + Obarkappa = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, i, tmp_omp_d1, tmp_omp_d2) & + !$OMP SHARED (n_points_final_grid, elec_beta_num, elec_alpha_num, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, Okappa, Jkappa, Obarkappa, Jbarkappa) + + allocate(tmp_omp_d2(n_points_final_grid,3), tmp_omp_d1(n_points_final_grid)) + + tmp_omp_d2 = 0.d0 + tmp_omp_d1 = 0.d0 + !$OMP DO + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + tmp_omp_d2(ipoint,1) += int2_grad1_u12_bimo_t(ipoint,1,i,i) + tmp_omp_d2(ipoint,2) += int2_grad1_u12_bimo_t(ipoint,2,i,i) + tmp_omp_d2(ipoint,3) += int2_grad1_u12_bimo_t(ipoint,3,i,i) + tmp_omp_d1(ipoint) += mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) + enddo + enddo + !$OMP END DO NOWAIT + !$OMP CRITICAL + do ipoint = 1, n_points_final_grid + Jkappa(ipoint,1) += tmp_omp_d2(ipoint,1) + Jkappa(ipoint,2) += tmp_omp_d2(ipoint,2) + Jkappa(ipoint,3) += tmp_omp_d2(ipoint,3) + Okappa(ipoint) += tmp_omp_d1(ipoint) + enddo + !$OMP END CRITICAL + + tmp_omp_d2 = 0.d0 + tmp_omp_d1 = 0.d0 + !$OMP DO + do i = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + tmp_omp_d2(ipoint,1) += int2_grad1_u12_bimo_t(ipoint,1,i,i) + tmp_omp_d2(ipoint,2) += int2_grad1_u12_bimo_t(ipoint,2,i,i) + tmp_omp_d2(ipoint,3) += int2_grad1_u12_bimo_t(ipoint,3,i,i) + tmp_omp_d1(ipoint) += mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) + enddo + enddo + !$OMP END DO NOWAIT + !$OMP CRITICAL + do ipoint = 1, n_points_final_grid + Jbarkappa(ipoint,1) += tmp_omp_d2(ipoint,1) + Jbarkappa(ipoint,2) += tmp_omp_d2(ipoint,2) + Jbarkappa(ipoint,3) += tmp_omp_d2(ipoint,3) + Obarkappa(ipoint) += tmp_omp_d1(ipoint) + enddo + !$OMP END CRITICAL + + deallocate(tmp_omp_d2, tmp_omp_d1) + !$OMP END PARALLEL + + ! --- + + allocate(tmp_1(n_points_final_grid,4)) + + do ipoint = 1, n_points_final_grid + + loc_1 = -2.d0 * Okappa (ipoint) + loc_2 = -2.d0 * Obarkappa(ipoint) + loc_3 = Obarkappa(ipoint) + + tmp_1(ipoint,1) = (loc_1 - loc_3) * Jbarkappa(ipoint,1) + loc_2 * Jkappa(ipoint,1) + tmp_1(ipoint,2) = (loc_1 - loc_3) * Jbarkappa(ipoint,2) + loc_2 * Jkappa(ipoint,2) + tmp_1(ipoint,3) = (loc_1 - loc_3) * Jbarkappa(ipoint,3) + loc_2 * Jkappa(ipoint,3) + + tmp_1(ipoint,4) = Obarkappa(ipoint) + enddo + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, i, j, loc_1, loc_2, tmp_omp_d2) & + !$OMP SHARED (n_points_final_grid, elec_beta_num, elec_alpha_num, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, tmp_1) + + allocate(tmp_omp_d2(n_points_final_grid,3)) + + tmp_omp_d2 = 0.d0 + !$OMP DO COLLAPSE(2) + do i = 1, elec_beta_num + do j = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + + loc_1 = mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) + loc_2 = mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + + tmp_omp_d2(ipoint,1) += loc_1 * int2_grad1_u12_bimo_t(ipoint,1,i,j) + loc_2 * int2_grad1_u12_bimo_t(ipoint,1,j,i) + tmp_omp_d2(ipoint,2) += loc_1 * int2_grad1_u12_bimo_t(ipoint,2,i,j) + loc_2 * int2_grad1_u12_bimo_t(ipoint,2,j,i) + tmp_omp_d2(ipoint,3) += loc_1 * int2_grad1_u12_bimo_t(ipoint,3,i,j) + loc_2 * int2_grad1_u12_bimo_t(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + !$OMP CRITICAL + do ipoint = 1, n_points_final_grid + tmp_1(ipoint,1) += tmp_omp_d2(ipoint,1) + tmp_1(ipoint,2) += tmp_omp_d2(ipoint,2) + tmp_1(ipoint,3) += tmp_omp_d2(ipoint,3) + enddo + !$OMP END CRITICAL + + tmp_omp_d2 = 0.d0 + !$OMP DO COLLAPSE(2) + do i = elec_beta_num+1, elec_alpha_num + do j = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + + loc_1 = mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) + + tmp_omp_d2(ipoint,1) += loc_1 * int2_grad1_u12_bimo_t(ipoint,1,i,j) + tmp_omp_d2(ipoint,2) += loc_1 * int2_grad1_u12_bimo_t(ipoint,2,i,j) + tmp_omp_d2(ipoint,3) += loc_1 * int2_grad1_u12_bimo_t(ipoint,3,i,j) + enddo + enddo + enddo + !$OMP END DO NOWAIT + !$OMP CRITICAL + do ipoint = 1, n_points_final_grid + tmp_1(ipoint,1) += tmp_omp_d2(ipoint,1) + tmp_1(ipoint,2) += tmp_omp_d2(ipoint,2) + tmp_1(ipoint,3) += tmp_omp_d2(ipoint,3) + enddo + !$OMP END CRITICAL + + deallocate(tmp_omp_d2) + !$OMP END PARALLEL + + ! --- + + allocate(tmp_2(n_points_final_grid,4,mo_num,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, a, b) & + !$OMP SHARED (n_points_final_grid, mo_num, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, final_weight_at_r_vector, & + !$OMP tmp_2) + !$OMP DO COLLAPSE(2) + do a = 1, mo_num + do b = 1, mo_num + do ipoint = 1, n_points_final_grid + tmp_2(ipoint,1,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,1,b,a) + tmp_2(ipoint,2,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,2,b,a) + tmp_2(ipoint,3,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,3,b,a) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, a, b, i) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & + !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & + !$OMP tmp_2) + !$OMP DO COLLAPSE(2) + do a = 1, mo_num + do b = 1, mo_num + + tmp_2(:,4,b,a) = 0.d0 + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + tmp_2(ipoint,4,b,a) += final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & + + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & + + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + ! --- + + call dgemv( 'T', 4*n_points_final_grid, mo_num*mo_num, 1.d0 & + , tmp_2(1,1,1,1), size(tmp_2, 1) * size(tmp_2, 2) & + , tmp_1(1,1), 1 & + , 0.d0, fock_3e_mo_b_os(1,1), 1) + + deallocate(tmp_1, tmp_2) + + ! --- + + allocate(tmp_3(n_points_final_grid,2,mo_num), tmp_4(n_points_final_grid,2,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b, loc_1, loc_2) & + !$OMP SHARED (n_points_final_grid, mo_num, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP final_weight_at_r_vector, Jkappa, Jbarkappa, tmp_3, tmp_4) + !$OMP DO + do b = 1, mo_num + tmp_3(:,:,b) = 0.d0 + tmp_4(:,:,b) = 0.d0 + do ipoint = 1, n_points_final_grid + + tmp_3(ipoint,1,b) = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,b) + + loc_1 = -2.0d0 * mos_r_in_r_array_transp(ipoint,b) + + tmp_4(ipoint,1,b) = loc_1 * ( Jbarkappa(ipoint,1) * (Jkappa(ipoint,1) + 0.25d0 * Jbarkappa(ipoint,1)) & + + Jbarkappa(ipoint,2) * (Jkappa(ipoint,2) + 0.25d0 * Jbarkappa(ipoint,2)) & + + Jbarkappa(ipoint,3) * (Jkappa(ipoint,3) + 0.25d0 * Jbarkappa(ipoint,3)) ) + + tmp_4(ipoint,2,b) = mos_r_in_r_array_transp(ipoint,b) + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b, i, loc_1, loc_2, loc_3, loc_4) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & + !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP Jkappa, Jbarkappa, tmp_3, tmp_4) + !$OMP DO + do b = 1, mo_num + + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + + loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,i) + loc_2 = mos_r_in_r_array_transp(ipoint,i) + + tmp_3(ipoint,2,b) += loc_1 * ( Jbarkappa(ipoint,1) * int2_grad1_u12_bimo_t(ipoint,1,b,i) & + + Jbarkappa(ipoint,2) * int2_grad1_u12_bimo_t(ipoint,2,b,i) & + + Jbarkappa(ipoint,3) * int2_grad1_u12_bimo_t(ipoint,3,b,i) ) + + tmp_4(ipoint,1,b) += loc_2 * ( Jbarkappa(ipoint,1) * int2_grad1_u12_bimo_t(ipoint,1,i,b) & + + Jbarkappa(ipoint,2) * int2_grad1_u12_bimo_t(ipoint,2,i,b) & + + Jbarkappa(ipoint,3) * int2_grad1_u12_bimo_t(ipoint,3,i,b) ) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b, i, j, loc_1, loc_2, loc_3) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & + !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP tmp_3, tmp_4) + !$OMP DO + do b = 1, mo_num + do i = 1, elec_beta_num + do j = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + + loc_2 = mos_r_in_r_array_transp(ipoint,b) + + tmp_4(ipoint,1,b) += loc_2 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & + + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & + + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) ) + enddo + enddo + enddo + + do i = elec_beta_num+1, elec_alpha_num + do j = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + + loc_2 = 0.5d0 * mos_r_in_r_array_transp(ipoint,b) + + tmp_4(ipoint,1,b) += loc_2 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & + + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & + + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) ) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + ! --- + + call dgemm( 'T', 'N', mo_num, mo_num, 2*n_points_final_grid, 1.d0 & + , tmp_3(1,1,1), 2*n_points_final_grid & + , tmp_4(1,1,1), 2*n_points_final_grid & + , 1.d0, fock_3e_mo_b_os(1,1), mo_num) + + deallocate(tmp_3, tmp_4) + + ! --- + + fock_3e_mo_a_os = fock_3e_mo_b_os + + allocate(tmp_1(n_points_final_grid,1)) + + do ipoint = 1, n_points_final_grid + tmp_1(ipoint,1) = Obarkappa(ipoint) + 2.d0 * Okappa(ipoint) + enddo + + allocate(tmp_2(n_points_final_grid,1,mo_num,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, a, b, i) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & + !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & + !$OMP tmp_2) + !$OMP DO COLLAPSE(2) + do a = 1, mo_num + do b = 1, mo_num + + tmp_2(:,1,b,a) = 0.d0 + do i = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + tmp_2(ipoint,1,b,a) += final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & + + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & + + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + call dgemv( 'T', n_points_final_grid, mo_num*mo_num, 1.d0 & + , tmp_2(1,1,1,1), size(tmp_2, 1) * size(tmp_2, 2) & + , tmp_1(1,1), 1 & + , 1.d0, fock_3e_mo_a_os(1,1), 1) + + deallocate(tmp_1, tmp_2) + + ! --- + + allocate(tmp_3(n_points_final_grid,8,mo_num), tmp_4(n_points_final_grid,8,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b) & + !$OMP SHARED (n_points_final_grid, mo_num, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP final_weight_at_r_vector, Jkappa, Jbarkappa, tmp_3, tmp_4) + !$OMP DO + do b = 1, mo_num + tmp_3(:,:,b) = 0.d0 + tmp_4(:,:,b) = 0.d0 + do ipoint = 1, n_points_final_grid + + tmp_3(ipoint,1,b) = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,b) + + tmp_4(ipoint,8,b) = mos_r_in_r_array_transp(ipoint,b) + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b, i, loc_1, loc_2, loc_3, loc_4) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & + !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP Jkappa, Jbarkappa, tmp_3, tmp_4) + !$OMP DO + do b = 1, mo_num + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + + loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,i) + loc_2 = mos_r_in_r_array_transp(ipoint,i) + + tmp_3(ipoint,2,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,1,b,i) + tmp_3(ipoint,3,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,2,b,i) + tmp_3(ipoint,4,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,3,b,i) + + tmp_4(ipoint,5,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,1,i,b) + tmp_4(ipoint,6,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,2,i,b) + tmp_4(ipoint,7,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,3,i,b) + enddo + enddo + + do i = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + + loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,i) + loc_3 = 2.d0 * loc_1 + loc_2 = mos_r_in_r_array_transp(ipoint,i) + loc_4 = 2.d0 * loc_2 + + tmp_3(ipoint,5,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,1,b,i) + tmp_3(ipoint,6,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,2,b,i) + tmp_3(ipoint,7,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,3,b,i) + + tmp_3(ipoint,8,b) += loc_3 * ( (Jkappa(ipoint,1) + 0.5d0 * Jbarkappa(ipoint,1)) * int2_grad1_u12_bimo_t(ipoint,1,b,i) & + + (Jkappa(ipoint,2) + 0.5d0 * Jbarkappa(ipoint,2)) * int2_grad1_u12_bimo_t(ipoint,2,b,i) & + + (Jkappa(ipoint,3) + 0.5d0 * Jbarkappa(ipoint,3)) * int2_grad1_u12_bimo_t(ipoint,3,b,i) ) + + tmp_4(ipoint,1,b) += loc_4 * ( (Jkappa(ipoint,1) + 0.5d0 * Jbarkappa(ipoint,1)) * int2_grad1_u12_bimo_t(ipoint,1,i,b) & + + (Jkappa(ipoint,2) + 0.5d0 * Jbarkappa(ipoint,2)) * int2_grad1_u12_bimo_t(ipoint,2,i,b) & + + (Jkappa(ipoint,3) + 0.5d0 * Jbarkappa(ipoint,3)) * int2_grad1_u12_bimo_t(ipoint,3,i,b) ) + + tmp_4(ipoint,2,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,1,i,b) + tmp_4(ipoint,3,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,2,i,b) + tmp_4(ipoint,4,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,3,i,b) + + tmp_4(ipoint,5,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,1,i,b) + tmp_4(ipoint,6,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,2,i,b) + tmp_4(ipoint,7,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,3,i,b) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b, i, j, loc_1, loc_2, loc_3) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, elec_alpha_num, & + !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP tmp_3, tmp_4) + !$OMP DO + do b = 1, mo_num + + do i = 1, elec_beta_num + do j = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + + loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,j) + loc_2 = mos_r_in_r_array_transp(ipoint,b) + loc_3 = mos_r_in_r_array_transp(ipoint,i) + + tmp_3(ipoint,8,b) -= loc_1 * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,j) & + + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,j) & + + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,j) ) + + tmp_4(ipoint,1,b) -= loc_3 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,b) & + + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,b) & + + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,b) ) + + loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,i) + loc_3 = mos_r_in_r_array_transp(ipoint,j) + + tmp_3(ipoint,8,b) -= loc_1 * ( int2_grad1_u12_bimo_t(ipoint,1,b,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & + + int2_grad1_u12_bimo_t(ipoint,2,b,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & + + int2_grad1_u12_bimo_t(ipoint,3,b,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) ) + + tmp_4(ipoint,1,b) -= loc_3 * ( int2_grad1_u12_bimo_t(ipoint,1,j,i) * int2_grad1_u12_bimo_t(ipoint,1,i,b) & + + int2_grad1_u12_bimo_t(ipoint,2,j,i) * int2_grad1_u12_bimo_t(ipoint,2,i,b) & + + int2_grad1_u12_bimo_t(ipoint,3,j,i) * int2_grad1_u12_bimo_t(ipoint,3,i,b) ) + enddo + enddo + enddo + + do i = elec_beta_num+1, elec_alpha_num + do j = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + + loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,j) + loc_2 = 0.5d0 * mos_r_in_r_array_transp(ipoint,b) + loc_3 = mos_r_in_r_array_transp(ipoint,i) + + tmp_3(ipoint,8,b) -= loc_1 * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,j) & + + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,j) & + + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,j) ) + + tmp_4(ipoint,1,b) -= loc_3 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,b) & + + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,b) & + + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,b) ) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + ! --- + + call dgemm( 'T', 'N', mo_num, mo_num, 8*n_points_final_grid, 1.d0 & + , tmp_3(1,1,1), 8*n_points_final_grid & + , tmp_4(1,1,1), 8*n_points_final_grid & + , 1.d0, fock_3e_mo_a_os(1,1), mo_num) + + deallocate(tmp_3, tmp_4) + deallocate(Jkappa, Okappa) + +END_PROVIDER + +! --- + +BEGIN_PROVIDER [double precision, fock_3e_mo_cs, (mo_num, mo_num)] + + implicit none + integer :: a, b, i, j, ipoint + double precision :: ti, tf + double precision :: loc_1, loc_2, loc_3 + double precision, allocatable :: Okappa(:), Jkappa(:,:) + double precision, allocatable :: tmp_omp_d1(:), tmp_omp_d2(:,:) + double precision, allocatable :: tmp_1(:,:), tmp_2(:,:,:,:), tmp_22(:,:,:) + double precision, allocatable :: tmp_3(:,:,:), tmp_4(:,:,:) + + PROVIDE mo_l_coef mo_r_coef + + ! --- + + allocate(Jkappa(n_points_final_grid,3), Okappa(n_points_final_grid)) + Jkappa = 0.d0 + Okappa = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, i, tmp_omp_d1, tmp_omp_d2) & + !$OMP SHARED (n_points_final_grid, elec_beta_num, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, Okappa, Jkappa) + + allocate(tmp_omp_d2(n_points_final_grid,3), tmp_omp_d1(n_points_final_grid)) + tmp_omp_d2 = 0.d0 + tmp_omp_d1 = 0.d0 + + !$OMP DO + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + tmp_omp_d2(ipoint,1) += int2_grad1_u12_bimo_t(ipoint,1,i,i) + tmp_omp_d2(ipoint,2) += int2_grad1_u12_bimo_t(ipoint,2,i,i) + tmp_omp_d2(ipoint,3) += int2_grad1_u12_bimo_t(ipoint,3,i,i) + tmp_omp_d1(ipoint) += mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + do ipoint = 1, n_points_final_grid + Jkappa(ipoint,1) += tmp_omp_d2(ipoint,1) + Jkappa(ipoint,2) += tmp_omp_d2(ipoint,2) + Jkappa(ipoint,3) += tmp_omp_d2(ipoint,3) + Okappa(ipoint) += tmp_omp_d1(ipoint) + enddo + !$OMP END CRITICAL + + deallocate(tmp_omp_d2, tmp_omp_d1) + + !$OMP END PARALLEL + + ! --- + + allocate(tmp_1(n_points_final_grid,4)) + + do ipoint = 1, n_points_final_grid + loc_1 = 2.d0 * Okappa(ipoint) + tmp_1(ipoint,1) = loc_1 * Jkappa(ipoint,1) + tmp_1(ipoint,2) = loc_1 * Jkappa(ipoint,2) + tmp_1(ipoint,3) = loc_1 * Jkappa(ipoint,3) + tmp_1(ipoint,4) = Okappa(ipoint) + enddo + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, i, j, loc_1, tmp_omp_d2) & + !$OMP SHARED (n_points_final_grid, elec_beta_num, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, tmp_1) + + allocate(tmp_omp_d2(n_points_final_grid,3)) + tmp_omp_d2 = 0.d0 + + !$OMP DO COLLAPSE(2) + do i = 1, elec_beta_num + do j = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + + loc_1 = mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) + + tmp_omp_d2(ipoint,1) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,1,i,j) + tmp_omp_d2(ipoint,2) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,2,i,j) + tmp_omp_d2(ipoint,3) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,3,i,j) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + do ipoint = 1, n_points_final_grid + tmp_1(ipoint,1) += tmp_omp_d2(ipoint,1) + tmp_1(ipoint,2) += tmp_omp_d2(ipoint,2) + tmp_1(ipoint,3) += tmp_omp_d2(ipoint,3) + enddo + !$OMP END CRITICAL + + deallocate(tmp_omp_d2) + !$OMP END PARALLEL + + ! --- + + if(tc_save_mem) then + + allocate(tmp_22(n_points_final_grid,4,mo_num)) + do a = 1, mo_num + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b, i) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, a, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, final_weight_at_r_vector, & + !$OMP tmp_22) + !$OMP DO + do b = 1, mo_num + do ipoint = 1, n_points_final_grid + tmp_22(ipoint,1,b) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,1,b,a) + tmp_22(ipoint,2,b) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,2,b,a) + tmp_22(ipoint,3,b) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,3,b,a) + enddo + tmp_22(:,4,b) = 0.d0 + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + tmp_22(ipoint,4,b) -= final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & + + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & + + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call dgemv( 'T', 4*n_points_final_grid, mo_num, -2.d0 & + , tmp_22(1,1,1), size(tmp_22, 1) * size(tmp_22, 2) & + , tmp_1(1,1), 1 & + , 0.d0, fock_3e_mo_cs(1,a), 1) + enddo + deallocate(tmp_22) + + else + + allocate(tmp_2(n_points_final_grid,4,mo_num,mo_num)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, a, b, i) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, final_weight_at_r_vector, & + !$OMP tmp_2) + !$OMP DO COLLAPSE(2) + do a = 1, mo_num + do b = 1, mo_num + do ipoint = 1, n_points_final_grid + tmp_2(ipoint,1,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,1,b,a) + tmp_2(ipoint,2,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,2,b,a) + tmp_2(ipoint,3,b,a) = final_weight_at_r_vector(ipoint) * int2_grad1_u12_bimo_t(ipoint,3,b,a) + enddo + tmp_2(:,4,b,a) = 0.d0 + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + tmp_2(ipoint,4,b,a) -= final_weight_at_r_vector(ipoint) * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,a) & + + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,a) & + + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,a) ) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call dgemv( 'T', 4*n_points_final_grid, mo_num*mo_num, -2.d0 & + , tmp_2(1,1,1,1), size(tmp_2, 1) * size(tmp_2, 2) & + , tmp_1(1,1), 1 & + , 0.d0, fock_3e_mo_cs(1,1), 1) + deallocate(tmp_2) + + endif + + deallocate(tmp_1) + + ! --- + + allocate(tmp_3(n_points_final_grid,5,mo_num), tmp_4(n_points_final_grid,5,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b, loc_1, loc_2) & + !$OMP SHARED (n_points_final_grid, mo_num, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP final_weight_at_r_vector, Jkappa, tmp_3, tmp_4) + !$OMP DO + do b = 1, mo_num + tmp_3(:,:,b) = 0.d0 + tmp_4(:,:,b) = 0.d0 + do ipoint = 1, n_points_final_grid + tmp_3(ipoint,1,b) = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,b) + + tmp_4(ipoint,1,b) = -2.d0 * mos_r_in_r_array_transp(ipoint,b) * ( Jkappa(ipoint,1) * Jkappa(ipoint,1) & + + Jkappa(ipoint,2) * Jkappa(ipoint,2) & + + Jkappa(ipoint,3) * Jkappa(ipoint,3) ) + tmp_4(ipoint,5,b) = mos_r_in_r_array_transp(ipoint,b) + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b, i, loc_1, loc_2) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, & + !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP Jkappa, tmp_3, tmp_4) + !$OMP DO + do b = 1, mo_num + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + + loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,i) + loc_2 = mos_r_in_r_array_transp(ipoint,i) + + tmp_3(ipoint,2,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,1,b,i) + tmp_3(ipoint,3,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,2,b,i) + tmp_3(ipoint,4,b) -= loc_1 * int2_grad1_u12_bimo_t(ipoint,3,b,i) + tmp_3(ipoint,5,b) += 2.d0 * loc_1 * ( Jkappa(ipoint,1) * int2_grad1_u12_bimo_t(ipoint,1,b,i) & + + Jkappa(ipoint,2) * int2_grad1_u12_bimo_t(ipoint,2,b,i) & + + Jkappa(ipoint,3) * int2_grad1_u12_bimo_t(ipoint,3,b,i) ) + + tmp_4(ipoint,2,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,1,i,b) + tmp_4(ipoint,3,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,2,i,b) + tmp_4(ipoint,4,b) += loc_2 * int2_grad1_u12_bimo_t(ipoint,3,i,b) + tmp_4(ipoint,1,b) += 2.d0 * loc_2 * ( Jkappa(ipoint,1) * int2_grad1_u12_bimo_t(ipoint,1,i,b) & + + Jkappa(ipoint,2) * int2_grad1_u12_bimo_t(ipoint,2,i,b) & + + Jkappa(ipoint,3) * int2_grad1_u12_bimo_t(ipoint,3,i,b) ) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint, b, i, j, loc_1, loc_2, loc_3) & + !$OMP SHARED (n_points_final_grid, mo_num, elec_beta_num, & + !$OMP final_weight_at_r_vector, int2_grad1_u12_bimo_t, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP tmp_3, tmp_4) + !$OMP DO + do b = 1, mo_num + do i = 1, elec_beta_num + do j = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + + loc_1 = final_weight_at_r_vector(ipoint) * mos_l_in_r_array_transp(ipoint,j) + loc_2 = mos_r_in_r_array_transp(ipoint,b) + loc_3 = mos_r_in_r_array_transp(ipoint,i) + + tmp_3(ipoint,5,b) -= loc_1 * ( int2_grad1_u12_bimo_t(ipoint,1,b,i) * int2_grad1_u12_bimo_t(ipoint,1,i,j) & + + int2_grad1_u12_bimo_t(ipoint,2,b,i) * int2_grad1_u12_bimo_t(ipoint,2,i,j) & + + int2_grad1_u12_bimo_t(ipoint,3,b,i) * int2_grad1_u12_bimo_t(ipoint,3,i,j) ) + + tmp_4(ipoint,1,b) += ( loc_2 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & + + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & + + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) ) & + - loc_3 * ( int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,b) & + + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,b) & + + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,b) ) ) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + ! --- + + call dgemm( 'T', 'N', mo_num, mo_num, 5*n_points_final_grid, 1.d0 & + , tmp_3(1,1,1), 5*n_points_final_grid & + , tmp_4(1,1,1), 5*n_points_final_grid & + , 1.d0, fock_3e_mo_cs(1,1), mo_num) + + deallocate(tmp_3, tmp_4) + deallocate(Jkappa, Okappa) + + ! --- + +END_PROVIDER + +! --- + diff --git a/plugins/local/tc_scf/fock_tc_mo_tot.irp.f b/plugins/local/tc_scf/fock_tc_mo_tot.irp.f index eb8973ff..2df2421e 100644 --- a/plugins/local/tc_scf/fock_tc_mo_tot.irp.f +++ b/plugins/local/tc_scf/fock_tc_mo_tot.irp.f @@ -1,4 +1,6 @@ +! --- + BEGIN_PROVIDER [ double precision, Fock_matrix_tc_mo_tot, (mo_num,mo_num) ] &BEGIN_PROVIDER [ double precision, Fock_matrix_tc_diag_mo_tot, (mo_num)] @@ -23,9 +25,6 @@ integer :: i, j, n double precision :: t0, t1 - !print*, ' Providing Fock_matrix_tc_mo_tot ...' - !call wall_time(t0) - if(elec_alpha_num == elec_beta_num) then PROVIDE Fock_matrix_tc_mo_alpha @@ -158,8 +157,8 @@ Fock_matrix_tc_mo_tot += fock_3_mat endif - !call wall_time(t1) - !print*, ' Wall time for Fock_matrix_tc_mo_tot =', t1-t0 - END_PROVIDER +! --- + + diff --git a/plugins/local/tc_scf/fock_vartc.irp.f b/plugins/local/tc_scf/fock_vartc.irp.f deleted file mode 100644 index 2b4a57e5..00000000 --- a/plugins/local/tc_scf/fock_vartc.irp.f +++ /dev/null @@ -1,287 +0,0 @@ - -! --- - - BEGIN_PROVIDER [ double precision, two_e_vartc_integral_alpha, (ao_num, ao_num)] -&BEGIN_PROVIDER [ double precision, two_e_vartc_integral_beta , (ao_num, ao_num)] - - implicit none - integer :: i, j, k, l - double precision :: density, density_a, density_b, I_coul, I_kjli - double precision :: t0, t1 - double precision, allocatable :: tmp_a(:,:), tmp_b(:,:) - - two_e_vartc_integral_alpha = 0.d0 - two_e_vartc_integral_beta = 0.d0 - - !$OMP PARALLEL DEFAULT (NONE) & - !$OMP PRIVATE (i, j, k, l, density_a, density_b, density, tmp_a, tmp_b, I_coul, I_kjli) & - !$OMP SHARED (ao_num, TCSCF_density_matrix_ao_alpha, TCSCF_density_matrix_ao_beta, ao_two_e_tc_tot, & - !$OMP two_e_vartc_integral_alpha, two_e_vartc_integral_beta) - - allocate(tmp_a(ao_num,ao_num), tmp_b(ao_num,ao_num)) - tmp_a = 0.d0 - tmp_b = 0.d0 - - !$OMP DO - do j = 1, ao_num - do l = 1, ao_num - density_a = TCSCF_density_matrix_ao_alpha(l,j) - density_b = TCSCF_density_matrix_ao_beta (l,j) - density = density_a + density_b - do i = 1, ao_num - do k = 1, ao_num - - I_coul = density * ao_two_e_tc_tot(k,i,l,j) - I_kjli = ao_two_e_tc_tot(k,j,l,i) - - tmp_a(k,i) += I_coul - density_a * I_kjli - tmp_b(k,i) += I_coul - density_b * I_kjli - enddo - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - do i = 1, ao_num - do j = 1, ao_num - two_e_vartc_integral_alpha(j,i) += tmp_a(j,i) - two_e_vartc_integral_beta (j,i) += tmp_b(j,i) - enddo - enddo - !$OMP END CRITICAL - - deallocate(tmp_a, tmp_b) - !$OMP END PARALLEL - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, Fock_matrix_vartc_ao_alpha, (ao_num, ao_num)] - - implicit none - - Fock_matrix_vartc_ao_alpha = ao_one_e_integrals_tc_tot + two_e_vartc_integral_alpha - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, Fock_matrix_vartc_ao_beta, (ao_num, ao_num)] - - implicit none - - Fock_matrix_vartc_ao_beta = ao_one_e_integrals_tc_tot + two_e_vartc_integral_beta - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, Fock_matrix_vartc_mo_alpha, (mo_num, mo_num) ] - - implicit none - - call ao_to_mo_bi_ortho( Fock_matrix_vartc_ao_alpha, size(Fock_matrix_vartc_ao_alpha, 1) & - , Fock_matrix_vartc_mo_alpha, size(Fock_matrix_vartc_mo_alpha, 1) ) - if(three_body_h_tc) then - Fock_matrix_vartc_mo_alpha += fock_3e_uhf_mo_a - endif - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, Fock_matrix_vartc_mo_beta, (mo_num,mo_num) ] - - implicit none - - call ao_to_mo_bi_ortho( Fock_matrix_vartc_ao_beta, size(Fock_matrix_vartc_ao_beta, 1) & - , Fock_matrix_vartc_mo_beta, size(Fock_matrix_vartc_mo_beta, 1) ) - if(three_body_h_tc) then - Fock_matrix_vartc_mo_beta += fock_3e_uhf_mo_b - endif - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, grad_vartc] - - implicit none - integer :: i, k - double precision :: grad_left, grad_right - - grad_left = 0.d0 - grad_right = 0.d0 - - do i = 1, elec_beta_num ! doc --> SOMO - do k = elec_beta_num+1, elec_alpha_num - grad_left = max(grad_left , dabs(Fock_matrix_vartc_mo_tot(k,i))) - grad_right = max(grad_right, dabs(Fock_matrix_vartc_mo_tot(i,k))) - enddo - enddo - - do i = 1, elec_beta_num ! doc --> virt - do k = elec_alpha_num+1, mo_num - grad_left = max(grad_left , dabs(Fock_matrix_vartc_mo_tot(k,i))) - grad_right = max(grad_right, dabs(Fock_matrix_vartc_mo_tot(i,k))) - enddo - enddo - - do i = elec_beta_num+1, elec_alpha_num ! SOMO --> virt - do k = elec_alpha_num+1, mo_num - grad_left = max(grad_left , dabs(Fock_matrix_vartc_mo_tot(k,i))) - grad_right = max(grad_right, dabs(Fock_matrix_vartc_mo_tot(i,k))) - enddo - enddo - - grad_vartc = grad_left + grad_right - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, Fock_matrix_vartc_ao_tot, (ao_num, ao_num) ] - - implicit none - - call mo_to_ao_bi_ortho( Fock_matrix_vartc_mo_tot, size(Fock_matrix_vartc_mo_tot, 1) & - , Fock_matrix_vartc_ao_tot, size(Fock_matrix_vartc_ao_tot, 1) ) - -END_PROVIDER - -! --- - - BEGIN_PROVIDER [ double precision, Fock_matrix_vartc_mo_tot, (mo_num,mo_num) ] -&BEGIN_PROVIDER [ double precision, Fock_matrix_vartc_diag_mo_tot, (mo_num)] - - implicit none - integer :: i, j, n - - if(elec_alpha_num == elec_beta_num) then - Fock_matrix_vartc_mo_tot = Fock_matrix_vartc_mo_alpha - else - - do j = 1, elec_beta_num - ! F-K - do i = 1, elec_beta_num !CC - Fock_matrix_vartc_mo_tot(i,j) = 0.5d0*(Fock_matrix_vartc_mo_alpha(i,j)+Fock_matrix_vartc_mo_beta(i,j))& - - (Fock_matrix_vartc_mo_beta(i,j) - Fock_matrix_vartc_mo_alpha(i,j)) - enddo - ! F+K/2 - do i = elec_beta_num+1, elec_alpha_num !CA - Fock_matrix_vartc_mo_tot(i,j) = 0.5d0*(Fock_matrix_vartc_mo_alpha(i,j)+Fock_matrix_vartc_mo_beta(i,j))& - + 0.5d0*(Fock_matrix_vartc_mo_beta(i,j) - Fock_matrix_vartc_mo_alpha(i,j)) - enddo - ! F - do i = elec_alpha_num+1, mo_num !CV - Fock_matrix_vartc_mo_tot(i,j) = 0.5d0*(Fock_matrix_vartc_mo_alpha(i,j)+Fock_matrix_vartc_mo_beta(i,j)) - enddo - enddo - - do j = elec_beta_num+1, elec_alpha_num - ! F+K/2 - do i = 1, elec_beta_num !AC - Fock_matrix_vartc_mo_tot(i,j) = 0.5d0*(Fock_matrix_vartc_mo_alpha(i,j)+Fock_matrix_vartc_mo_beta(i,j))& - + 0.5d0*(Fock_matrix_vartc_mo_beta(i,j) - Fock_matrix_vartc_mo_alpha(i,j)) - enddo - ! F - do i = elec_beta_num+1, elec_alpha_num !AA - Fock_matrix_vartc_mo_tot(i,j) = 0.5d0*(Fock_matrix_vartc_mo_alpha(i,j)+Fock_matrix_vartc_mo_beta(i,j)) - enddo - ! F-K/2 - do i = elec_alpha_num+1, mo_num !AV - Fock_matrix_vartc_mo_tot(i,j) = 0.5d0*(Fock_matrix_vartc_mo_alpha(i,j)+Fock_matrix_vartc_mo_beta(i,j))& - - 0.5d0*(Fock_matrix_vartc_mo_beta(i,j) - Fock_matrix_vartc_mo_alpha(i,j)) - enddo - enddo - - do j = elec_alpha_num+1, mo_num - ! F - do i = 1, elec_beta_num !VC - Fock_matrix_vartc_mo_tot(i,j) = 0.5d0*(Fock_matrix_vartc_mo_alpha(i,j)+Fock_matrix_vartc_mo_beta(i,j)) - enddo - ! F-K/2 - do i = elec_beta_num+1, elec_alpha_num !VA - Fock_matrix_vartc_mo_tot(i,j) = 0.5d0*(Fock_matrix_vartc_mo_alpha(i,j)+Fock_matrix_vartc_mo_beta(i,j))& - - 0.5d0*(Fock_matrix_vartc_mo_beta(i,j) - Fock_matrix_vartc_mo_alpha(i,j)) - enddo - ! F+K - do i = elec_alpha_num+1, mo_num !VV - Fock_matrix_vartc_mo_tot(i,j) = 0.5d0*(Fock_matrix_vartc_mo_alpha(i,j)+Fock_matrix_vartc_mo_beta(i,j)) & - + (Fock_matrix_vartc_mo_beta(i,j) - Fock_matrix_vartc_mo_alpha(i,j)) - enddo - enddo - if(three_body_h_tc)then - ! C-O - do j = 1, elec_beta_num - do i = elec_beta_num+1, elec_alpha_num - Fock_matrix_vartc_mo_tot(i,j) += 0.5d0*(fock_a_tot_3e_bi_orth(i,j) + fock_b_tot_3e_bi_orth(i,j)) - Fock_matrix_vartc_mo_tot(j,i) += 0.5d0*(fock_a_tot_3e_bi_orth(j,i) + fock_b_tot_3e_bi_orth(j,i)) - enddo - enddo - ! C-V - do j = 1, elec_beta_num - do i = elec_alpha_num+1, mo_num - Fock_matrix_vartc_mo_tot(i,j) += 0.5d0*(fock_a_tot_3e_bi_orth(i,j) + fock_b_tot_3e_bi_orth(i,j)) - Fock_matrix_vartc_mo_tot(j,i) += 0.5d0*(fock_a_tot_3e_bi_orth(j,i) + fock_b_tot_3e_bi_orth(j,i)) - enddo - enddo - ! O-V - do j = elec_beta_num+1, elec_alpha_num - do i = elec_alpha_num+1, mo_num - Fock_matrix_vartc_mo_tot(i,j) += 0.5d0*(fock_a_tot_3e_bi_orth(i,j) + fock_b_tot_3e_bi_orth(i,j)) - Fock_matrix_vartc_mo_tot(j,i) += 0.5d0*(fock_a_tot_3e_bi_orth(j,i) + fock_b_tot_3e_bi_orth(j,i)) - enddo - enddo - endif - - endif - - do i = 1, mo_num - Fock_matrix_vartc_diag_mo_tot(i) = Fock_matrix_vartc_mo_tot(i,i) - enddo - - if(frozen_orb_scf)then - integer :: iorb, jorb - do i = 1, n_core_orb - iorb = list_core(i) - do j = 1, n_act_orb - jorb = list_act(j) - Fock_matrix_vartc_mo_tot(iorb,jorb) = 0.d0 - Fock_matrix_vartc_mo_tot(jorb,iorb) = 0.d0 - enddo - enddo - endif - - if(no_oa_or_av_opt)then - do i = 1, n_act_orb - iorb = list_act(i) - do j = 1, n_inact_orb - jorb = list_inact(j) - Fock_matrix_vartc_mo_tot(iorb,jorb) = 0.d0 - Fock_matrix_vartc_mo_tot(jorb,iorb) = 0.d0 - enddo - do j = 1, n_virt_orb - jorb = list_virt(j) - Fock_matrix_vartc_mo_tot(iorb,jorb) = 0.d0 - Fock_matrix_vartc_mo_tot(jorb,iorb) = 0.d0 - enddo - do j = 1, n_core_orb - jorb = list_core(j) - Fock_matrix_vartc_mo_tot(iorb,jorb) = 0.d0 - Fock_matrix_vartc_mo_tot(jorb,iorb) = 0.d0 - enddo - enddo - endif - - !call check_sym(Fock_matrix_vartc_mo_tot, mo_num) - !do i = 1, mo_num - ! write(*,'(100(F15.8, I4))') Fock_matrix_vartc_mo_tot(i,:) - !enddo - -END_PROVIDER - -! --- - diff --git a/plugins/local/tc_scf/rh_tcscf_diis.irp.f b/plugins/local/tc_scf/rh_tcscf_diis.irp.f index 431b6e08..853c4ab5 100644 --- a/plugins/local/tc_scf/rh_tcscf_diis.irp.f +++ b/plugins/local/tc_scf/rh_tcscf_diis.irp.f @@ -234,7 +234,7 @@ subroutine rh_tcscf_diis() call unlock_io if(er_delta .lt. 0.d0) then - call ezfio_set_tc_scf_bitc_energy(etc_tot) + call ezfio_set_tc_scf_tcscf_energy(etc_tot) call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef) call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef) write(json_unit, json_true_fmt) 'saved' @@ -263,7 +263,7 @@ subroutine rh_tcscf_diis() deallocate(mo_r_coef_save, mo_l_coef_save, F_DIIS, E_DIIS) - call ezfio_set_tc_scf_bitc_energy(TC_HF_energy) + call ezfio_set_tc_scf_tcscf_energy(TC_HF_energy) call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef) call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef) diff --git a/plugins/local/tc_scf/rh_tcscf_simple.irp.f b/plugins/local/tc_scf/rh_tcscf_simple.irp.f index 0b79e8ea..2c2cf2c2 100644 --- a/plugins/local/tc_scf/rh_tcscf_simple.irp.f +++ b/plugins/local/tc_scf/rh_tcscf_simple.irp.f @@ -91,7 +91,7 @@ subroutine rh_tcscf_simple() e_delta = dabs(etc_tot - e_save) e_save = etc_tot - call ezfio_set_tc_scf_bitc_energy(etc_tot) + call ezfio_set_tc_scf_tcscf_energy(etc_tot) call wall_time(t1) write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') & diff --git a/plugins/local/tc_scf/rh_vartcscf_simple.irp.f b/plugins/local/tc_scf/rh_vartcscf_simple.irp.f deleted file mode 100644 index ecb0709e..00000000 --- a/plugins/local/tc_scf/rh_vartcscf_simple.irp.f +++ /dev/null @@ -1,89 +0,0 @@ -! --- - -subroutine rh_vartcscf_simple() - - implicit none - integer :: i, j, it, dim_DIIS - double precision :: t0, t1 - double precision :: e_save, e_delta, rho_delta - double precision :: etc_tot, etc_1e, etc_2e, etc_3e - double precision :: er_DIIS - - - it = 0 - e_save = 0.d0 - dim_DIIS = 0 - - ! --- - - PROVIDE level_shift_tcscf - PROVIDE mo_r_coef - - write(6, '(A4,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A4, 1X, A8)') & - '====', '================', '================', '================', '================', '================' & - , '================', '================', '====', '========' - write(6, '(A4,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A4, 1X, A8)') & - ' it ', ' SCF TC Energy ', ' E(1e) ', ' E(2e) ', ' E(3e) ', ' energy diff ' & - , ' DIIS error ', ' level shift ', 'DIIS', ' WT (m)' - write(6, '(A4,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A4, 1X, A8)') & - '====', '================', '================', '================', '================', '================' & - , '================', '================', '====', '========' - - - ! first iteration (HF orbitals) - call wall_time(t0) - - etc_tot = VARTC_HF_energy - etc_1e = VARTC_HF_one_e_energy - etc_2e = VARTC_HF_two_e_energy - etc_3e = 0.d0 - if(three_body_h_tc) then - etc_3e = diag_three_elem_hf - endif - er_DIIS = maxval(abs(FQS_SQF_mo)) - e_delta = dabs(etc_tot - e_save) - e_save = etc_tot - - call wall_time(t1) - write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') & - it, etc_tot, etc_1e, etc_2e, etc_3e, e_delta, er_DIIS, level_shift_tcscf, dim_DIIS, (t1-t0)/60.d0 - - do while(er_DIIS .gt. dsqrt(thresh_tcscf)) - call wall_time(t0) - - it += 1 - if(it > n_it_tcscf_max) then - print *, ' max of TCSCF iterations is reached ', n_it_TCSCF_max - stop - endif - - mo_r_coef = fock_vartc_eigvec_ao - mo_l_coef = mo_r_coef - call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef) - call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef) - TOUCH mo_l_coef mo_r_coef - - etc_tot = VARTC_HF_energy - etc_1e = VARTC_HF_one_e_energy - etc_2e = VARTC_HF_two_e_energy - etc_3e = 0.d0 - if(three_body_h_tc) then - etc_3e = diag_three_elem_hf - endif - er_DIIS = maxval(abs(FQS_SQF_mo)) - e_delta = dabs(etc_tot - e_save) - e_save = etc_tot - - call ezfio_set_tc_scf_bitc_energy(etc_tot) - - call wall_time(t1) - write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') & - it, etc_tot, etc_1e, etc_2e, etc_3e, e_delta, er_DIIS, level_shift_tcscf, dim_DIIS, (t1-t0)/60.d0 - enddo - - print *, ' VAR-TCSCF Simple converged !' - -end - -! --- - diff --git a/plugins/local/tc_scf/tc_scf.irp.f b/plugins/local/tc_scf/tc_scf.irp.f index 768069d6..ee8e8dad 100644 --- a/plugins/local/tc_scf/tc_scf.irp.f +++ b/plugins/local/tc_scf/tc_scf.irp.f @@ -13,7 +13,6 @@ program tc_scf PROVIDE j1e_type PROVIDE j2e_type PROVIDE tcscf_algorithm - PROVIDE var_tc print *, ' TC-SCF with:' print *, ' j1e_type = ', j1e_type @@ -45,46 +44,29 @@ program tc_scf !call create_guess() !call orthonormalize_mos() - - if(var_tc) then - - print *, ' VAR-TC' - - if(tcscf_algorithm == 'DIIS') then - print*, ' NOT implemented yet' - elseif(tcscf_algorithm == 'Simple') then - call rh_vartcscf_simple() - else - print *, ' not implemented yet', tcscf_algorithm - stop - endif - + if(tcscf_algorithm == 'DIIS') then + call rh_tcscf_diis() + elseif(tcscf_algorithm == 'Simple') then + call rh_tcscf_simple() else - - if(tcscf_algorithm == 'DIIS') then - call rh_tcscf_diis() - elseif(tcscf_algorithm == 'Simple') then - call rh_tcscf_simple() - else - print *, ' not implemented yet', tcscf_algorithm - stop - endif - - PROVIDE Fock_matrix_tc_diag_mo_tot - print*, ' Eigenvalues:' - do i = 1, mo_num - print*, i, Fock_matrix_tc_diag_mo_tot(i) - enddo - - ! TODO - ! rotate angles in separate code only if necessary - if(minimize_lr_angles)then - call minimize_tc_orb_angles() - endif - call print_energy_and_mos(good_angles) - + print *, ' not implemented yet', tcscf_algorithm + stop endif + PROVIDE Fock_matrix_tc_diag_mo_tot + print*, ' Eigenvalues:' + do i = 1, mo_num + print*, i, Fock_matrix_tc_diag_mo_tot(i) + enddo + + ! TODO + ! rotate angles in separate code only if necessary + if(minimize_lr_angles)then + call minimize_tc_orb_angles() + endif + call print_energy_and_mos(good_angles) + + write(json_unit,json_array_close_fmtx) call json_close diff --git a/plugins/local/tc_scf/tc_scf_energy.irp.f b/plugins/local/tc_scf/tc_scf_energy.irp.f index 833b48aa..0266c605 100644 --- a/plugins/local/tc_scf/tc_scf_energy.irp.f +++ b/plugins/local/tc_scf/tc_scf_energy.irp.f @@ -11,11 +11,8 @@ integer :: i, j double precision :: t0, t1 - !print*, ' Providing TC energy ...' - !call wall_time(t0) - PROVIDE mo_l_coef mo_r_coef - PROVIDE two_e_tc_non_hermit_integral_alpha two_e_tc_non_hermit_integral_beta + PROVIDE two_e_tc_integral_alpha two_e_tc_integral_beta TC_HF_energy = nuclear_repulsion TC_HF_one_e_energy = 0.d0 @@ -23,8 +20,8 @@ do j = 1, ao_num do i = 1, ao_num - TC_HF_two_e_energy += 0.5d0 * ( two_e_tc_non_hermit_integral_alpha(i,j) * TCSCF_density_matrix_ao_alpha(i,j) & - + two_e_tc_non_hermit_integral_beta (i,j) * TCSCF_density_matrix_ao_beta (i,j) ) + TC_HF_two_e_energy += 0.5d0 * ( two_e_tc_integral_alpha(i,j) * TCSCF_density_matrix_ao_alpha(i,j) & + + two_e_tc_integral_beta (i,j) * TCSCF_density_matrix_ao_beta (i,j) ) TC_HF_one_e_energy += ao_one_e_integrals_tc_tot(i,j) & * (TCSCF_density_matrix_ao_alpha(i,j) + TCSCF_density_matrix_ao_beta (i,j) ) enddo @@ -33,38 +30,6 @@ TC_HF_energy += TC_HF_one_e_energy + TC_HF_two_e_energy TC_HF_energy += diag_three_elem_hf - !call wall_time(t1) - !print*, ' Wall time for TC energy=', t1-t0 - -END_PROVIDER - -! --- - - BEGIN_PROVIDER [ double precision, VARTC_HF_energy] -&BEGIN_PROVIDER [ double precision, VARTC_HF_one_e_energy] -&BEGIN_PROVIDER [ double precision, VARTC_HF_two_e_energy] - - implicit none - integer :: i, j - - PROVIDE mo_r_coef - - VARTC_HF_energy = nuclear_repulsion - VARTC_HF_one_e_energy = 0.d0 - VARTC_HF_two_e_energy = 0.d0 - - do j = 1, ao_num - do i = 1, ao_num - VARTC_HF_two_e_energy += 0.5d0 * ( two_e_vartc_integral_alpha(i,j) * TCSCF_density_matrix_ao_alpha(i,j) & - + two_e_vartc_integral_beta (i,j) * TCSCF_density_matrix_ao_beta (i,j) ) - VARTC_HF_one_e_energy += ao_one_e_integrals_tc_tot(i,j) & - * (TCSCF_density_matrix_ao_alpha(i,j) + TCSCF_density_matrix_ao_beta (i,j) ) - enddo - enddo - - VARTC_HF_energy += VARTC_HF_one_e_energy + VARTC_HF_two_e_energy - VARTC_HF_energy += diag_three_elem_hf - END_PROVIDER ! --- diff --git a/plugins/local/tc_scf/test_int.irp.f b/plugins/local/tc_scf/test_int.irp.f deleted file mode 100644 index e135fcd8..00000000 --- a/plugins/local/tc_scf/test_int.irp.f +++ /dev/null @@ -1,970 +0,0 @@ -program test_ints - - BEGIN_DOC - ! TODO : Put the documentation of the program here - END_DOC - - implicit none - - print *, ' starting test_ints ...' - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - my_extra_grid_becke = .True. - my_n_pt_r_extra_grid = 30 - my_n_pt_a_extra_grid = 50 ! small extra_grid for quick debug - touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid - -!! OK -! call routine_int2_u_grad1u_env2 -! OK -! call routine_v_ij_erf_rk_cst_mu_env -! OK -! call routine_x_v_ij_erf_rk_cst_mu_env -! OK -! call routine_int2_u2_env2 -! OK -! call routine_int2_u_grad1u_x_env2 -! OK -! call routine_int2_grad1u2_grad2u2_env2 -! call routine_int2_u_grad1u_env2 -! call test_int2_grad1_u12_ao_test -! call routine_v_ij_u_cst_mu_env_test -! call test_grid_points_ao - !call test_int_gauss - - !call test_fock_3e_uhf_ao() - !call test_fock_3e_uhf_mo() - - !call test_two_e_tc_non_hermit_integral() - -!!PROVIDE TC_HF_energy VARTC_HF_energy -!!print *, ' TC_HF_energy = ', TC_HF_energy -!!print *, ' VARTC_HF_energy = ', VARTC_HF_energy - - call test_fock_3e_uhf_mo_cs() - call test_fock_3e_uhf_mo_a() - call test_fock_3e_uhf_mo_b() - -end - -! --- - -subroutine routine_test_env - implicit none - integer :: i,icount,j - icount = 0 - do i = 1, List_env1s_square_size - if(dabs(List_env1s_square_coef(i)).gt.1.d-10)then - print*,'' - print*,List_env1s_square_expo(i),List_env1s_square_coef(i) - print*,List_env1s_square_cent(1:3,i) - print*,'' - icount += 1 - endif - - enddo - print*,'List_env1s_square_coef,icount = ',List_env1s_square_size,icount - do i = 1, ao_num - do j = 1, ao_num - do icount = 1, List_comb_thr_b3_size(j,i) - print*,'',j,i - print*,List_comb_thr_b3_expo(icount,j,i),List_comb_thr_b3_coef(icount,j,i) - print*,List_comb_thr_b3_cent(1:3,icount,j,i) - print*,'' - enddo -! enddo - enddo - enddo - print*,'max_List_comb_thr_b3_size = ',max_List_comb_thr_b3_size,List_env1s_square_size - -end - -subroutine routine_int2_u_grad1u_env2 - implicit none - integer :: i,j,ipoint,k,l - double precision :: weight,accu_relat, accu_abs, contrib - double precision, allocatable :: array(:,:,:,:), array_ref(:,:,:,:) - - allocate(array(ao_num, ao_num, ao_num, ao_num)) - array = 0.d0 - allocate(array_ref(ao_num, ao_num, ao_num, ao_num)) - array_ref = 0.d0 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - array(j,i,l,k) += int2_u_grad1u_env2_test(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - array_ref(j,i,l,k) += int2_u_grad1u_env2(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - enddo - enddo - enddo - enddo - enddo - accu_relat = 0.d0 - accu_abs = 0.d0 - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - contrib = dabs(array(j,i,l,k) - array_ref(j,i,l,k)) - accu_abs += contrib - if(dabs(array_ref(j,i,l,k)).gt.1.d-10)then - accu_relat += contrib/dabs(array_ref(j,i,l,k)) - endif - enddo - enddo - enddo - enddo - print*,'******' - print*,'******' - print*,'routine_int2_u_grad1u_env2' - print*,'accu_abs = ',accu_abs/dble(ao_num)**4 - print*,'accu_relat = ',accu_relat/dble(ao_num)**4 - - - -end - -subroutine routine_v_ij_erf_rk_cst_mu_env - implicit none - integer :: i,j,ipoint,k,l - double precision :: weight,accu_relat, accu_abs, contrib - double precision, allocatable :: array(:,:,:,:), array_ref(:,:,:,:) - allocate(array(ao_num, ao_num, ao_num, ao_num)) - array = 0.d0 - allocate(array_ref(ao_num, ao_num, ao_num, ao_num)) - array_ref = 0.d0 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - array(j,i,l,k) += v_ij_erf_rk_cst_mu_env_test(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - array_ref(j,i,l,k) += v_ij_erf_rk_cst_mu_env(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - enddo - enddo - enddo - enddo - enddo - accu_relat = 0.d0 - accu_abs = 0.d0 - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - contrib = dabs(array(j,i,l,k) - array_ref(j,i,l,k)) - accu_abs += contrib - if(dabs(array_ref(j,i,l,k)).gt.1.d-10)then - accu_relat += contrib/dabs(array_ref(j,i,l,k)) - endif - enddo - enddo - enddo - enddo - print*,'******' - print*,'******' - print*,'routine_v_ij_erf_rk_cst_mu_env' - print*,'accu_abs = ',accu_abs/dble(ao_num)**4 - print*,'accu_relat = ',accu_relat/dble(ao_num)**4 - - - -end - - -subroutine routine_x_v_ij_erf_rk_cst_mu_env - implicit none - integer :: i,j,ipoint,k,l,m - double precision :: weight,accu_relat, accu_abs, contrib - double precision, allocatable :: array(:,:,:,:), array_ref(:,:,:,:) - allocate(array(ao_num, ao_num, ao_num, ao_num)) - array = 0.d0 - allocate(array_ref(ao_num, ao_num, ao_num, ao_num)) - array_ref = 0.d0 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - do m = 1, 3 - array(j,i,l,k) += x_v_ij_erf_rk_cst_mu_env_test(j,i,ipoint,m) * aos_grad_in_r_array_transp(m,k,ipoint) * aos_in_r_array(l,ipoint) * weight - array_ref(j,i,l,k) += x_v_ij_erf_rk_cst_mu_env (j,i,ipoint,m) * aos_grad_in_r_array_transp(m,k,ipoint) * aos_in_r_array(l,ipoint) * weight - enddo - enddo - enddo - enddo - enddo - enddo - accu_relat = 0.d0 - accu_abs = 0.d0 - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - contrib = dabs(array(j,i,l,k) - array_ref(j,i,l,k)) - accu_abs += contrib - if(dabs(array_ref(j,i,l,k)).gt.1.d-10)then - accu_relat += contrib/dabs(array_ref(j,i,l,k)) - endif - enddo - enddo - enddo - enddo - - print*,'******' - print*,'******' - print*,'routine_x_v_ij_erf_rk_cst_mu_env' - print*,'accu_abs = ',accu_abs/dble(ao_num)**4 - print*,'accu_relat = ',accu_relat/dble(ao_num)**4 - - - -end - - - -subroutine routine_v_ij_u_cst_mu_env_test - implicit none - integer :: i,j,ipoint,k,l - double precision :: weight,accu_relat, accu_abs, contrib - double precision, allocatable :: array(:,:,:,:), array_ref(:,:,:,:) - allocate(array(ao_num, ao_num, ao_num, ao_num)) - array = 0.d0 - allocate(array_ref(ao_num, ao_num, ao_num, ao_num)) - array_ref = 0.d0 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - array(j,i,l,k) += v_ij_u_cst_mu_env_test(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - array_ref(j,i,l,k) += v_ij_u_cst_mu_env_fit (j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - enddo - enddo - enddo - enddo - enddo - accu_relat = 0.d0 - accu_abs = 0.d0 - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - contrib = dabs(array(j,i,l,k) - array_ref(j,i,l,k)) - accu_abs += contrib - if(dabs(array_ref(j,i,l,k)).gt.1.d-10)then - accu_relat += contrib/dabs(array_ref(j,i,l,k)) - endif - enddo - enddo - enddo - enddo - print*,'******' - print*,'******' - print*,'routine_v_ij_u_cst_mu_env_test' - print*,'accu_abs = ',accu_abs/dble(ao_num)**4 - print*,'accu_relat = ',accu_relat/dble(ao_num)**4 - -end - -subroutine routine_int2_grad1u2_grad2u2_env2 - implicit none - integer :: i,j,ipoint,k,l - integer :: ii , jj - double precision :: weight,accu_relat, accu_abs, contrib - double precision, allocatable :: array(:,:,:,:), array_ref(:,:,:,:) - double precision, allocatable :: ints(:,:,:) - allocate(ints(ao_num, ao_num, n_points_final_grid)) -! do ipoint = 1, n_points_final_grid -! do i = 1, ao_num -! do j = 1, ao_num -! read(33,*)ints(j,i,ipoint) -! enddo -! enddo -! enddo - - allocate(array(ao_num, ao_num, ao_num, ao_num)) - array = 0.d0 - allocate(array_ref(ao_num, ao_num, ao_num, ao_num)) - array_ref = 0.d0 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - array(j,i,l,k) += int2_grad1u2_grad2u2_env2_test(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight -! !array(j,i,l,k) += int2_grad1u2_grad2u2_env2_test(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight -! array_ref(j,i,l,k) += int2_grad1u2_grad2u2_env2_test(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight -! !array(j,i,l,k) += ints(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight -! array_ref(j,i,l,k) += int2_grad1u2_grad2u2_env2(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - array_ref(j,i,l,k) += ints(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight -! if(dabs(int2_grad1u2_grad2u2_env2_test(j,i,ipoint)).gt.1.d-6)then -! if(dabs(int2_grad1u2_grad2u2_env2_test(j,i,ipoint) - int2_grad1u2_grad2u2_env2_test(j,i,ipoint)).gt.1.d-6)then -! print*,j,i,ipoint -! print*,int2_grad1u2_grad2u2_env2_test(j,i,ipoint) , int2_grad1u2_grad2u2_env2_test(j,i,ipoint), dabs(int2_grad1u2_grad2u2_env2_test(j,i,ipoint) - int2_grad1u2_grad2u2_env2_test(j,i,ipoint)) -! print*,int2_grad1u2_grad2u2_env2_test(i,j,ipoint) , int2_grad1u2_grad2u2_env2_test(i,j,ipoint), dabs(int2_grad1u2_grad2u2_env2_test(i,j,ipoint) - int2_grad1u2_grad2u2_env2_test(i,j,ipoint)) -! stop -! endif -! endif - enddo - enddo - enddo - enddo - enddo - double precision :: e_ref, e_new - accu_relat = 0.d0 - accu_abs = 0.d0 - e_ref = 0.d0 - e_new = 0.d0 - do ii = 1, elec_alpha_num - do jj = ii, elec_alpha_num - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - e_ref += mo_coef(j,ii) * mo_coef(i,ii) * array_ref(j,i,l,k) * mo_coef(l,jj) * mo_coef(k,jj) - e_new += mo_coef(j,ii) * mo_coef(i,ii) * array(j,i,l,k) * mo_coef(l,jj) * mo_coef(k,jj) - contrib = dabs(array(j,i,l,k) - array_ref(j,i,l,k)) - accu_abs += contrib -! if(dabs(array_ref(j,i,l,k)).gt.1.d-10)then -! accu_relat += contrib/dabs(array_ref(j,i,l,k)) -! endif - enddo - enddo - enddo - enddo - - enddo - enddo - print*,'e_ref = ',e_ref - print*,'e_new = ',e_new -! print*,'accu_abs = ',accu_abs/dble(ao_num)**4 -! print*,'accu_relat = ',accu_relat/dble(ao_num)**4 - - - -end - -subroutine routine_int2_u2_env2 - implicit none - integer :: i,j,ipoint,k,l - double precision :: weight,accu_relat, accu_abs, contrib - double precision, allocatable :: array(:,:,:,:), array_ref(:,:,:,:) - - allocate(array(ao_num, ao_num, ao_num, ao_num)) - array = 0.d0 - allocate(array_ref(ao_num, ao_num, ao_num, ao_num)) - array_ref = 0.d0 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - array(j,i,l,k) += int2_u2_env2_test(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - array_ref(j,i,l,k) += int2_u2_env2(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - enddo - enddo - enddo - enddo - enddo - accu_relat = 0.d0 - accu_abs = 0.d0 - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - contrib = dabs(array(j,i,l,k) - array_ref(j,i,l,k)) - accu_abs += contrib - if(dabs(array_ref(j,i,l,k)).gt.1.d-10)then - accu_relat += contrib/dabs(array_ref(j,i,l,k)) - endif - enddo - enddo - enddo - enddo - print*,'******' - print*,'******' - print*,'routine_int2_u2_env2' - print*,'accu_abs = ',accu_abs/dble(ao_num)**4 - print*,'accu_relat = ',accu_relat/dble(ao_num)**4 - - - -end - - -subroutine routine_int2_u_grad1u_x_env2 - implicit none - integer :: i,j,ipoint,k,l,m - double precision :: weight,accu_relat, accu_abs, contrib - double precision, allocatable :: array(:,:,:,:), array_ref(:,:,:,:) - - allocate(array(ao_num, ao_num, ao_num, ao_num)) - array = 0.d0 - allocate(array_ref(ao_num, ao_num, ao_num, ao_num)) - array_ref = 0.d0 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - do m = 1, 3 - array(j,i,l,k) += int2_u_grad1u_x_env2_test(j,i,ipoint,m) * aos_grad_in_r_array_transp(m,k,ipoint) * aos_in_r_array(l,ipoint) * weight - array_ref(j,i,l,k) += int2_u_grad1u_x_env2 (j,i,ipoint,m) * aos_grad_in_r_array_transp(m,k,ipoint) * aos_in_r_array(l,ipoint) * weight - enddo - enddo - enddo - enddo - enddo - enddo - accu_relat = 0.d0 - accu_abs = 0.d0 - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - contrib = dabs(array(j,i,l,k) - array_ref(j,i,l,k)) - accu_abs += contrib - if(dabs(array_ref(j,i,l,k)).gt.1.d-10)then - accu_relat += contrib/dabs(array_ref(j,i,l,k)) - endif - enddo - enddo - enddo - enddo - print*,'******' - print*,'******' - print*,'routine_int2_u_grad1u_x_env2' - print*,'accu_abs = ',accu_abs/dble(ao_num)**4 - print*,'accu_relat = ',accu_relat/dble(ao_num)**4 - - - -end - -subroutine routine_v_ij_u_cst_mu_env - implicit none - integer :: i,j,ipoint,k,l - double precision :: weight,accu_relat, accu_abs, contrib - double precision, allocatable :: array(:,:,:,:), array_ref(:,:,:,:) - - allocate(array(ao_num, ao_num, ao_num, ao_num)) - array = 0.d0 - allocate(array_ref(ao_num, ao_num, ao_num, ao_num)) - array_ref = 0.d0 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - array(j,i,l,k) += v_ij_u_cst_mu_env_test(j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - array_ref(j,i,l,k) += v_ij_u_cst_mu_env_fit (j,i,ipoint) * aos_in_r_array(k,ipoint) * aos_in_r_array(l,ipoint) * weight - enddo - enddo - enddo - enddo - enddo - accu_relat = 0.d0 - accu_abs = 0.d0 - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - contrib = dabs(array(j,i,l,k) - array_ref(j,i,l,k)) - accu_abs += contrib - if(dabs(array_ref(j,i,l,k)).gt.1.d-10)then - accu_relat += contrib/dabs(array_ref(j,i,l,k)) - endif - enddo - enddo - enddo - enddo - print*,'******' - print*,'******' - print*,'routine_v_ij_u_cst_mu_env' - print*,'accu_abs = ',accu_abs/dble(ao_num)**4 - print*,'accu_relat = ',accu_relat/dble(ao_num)**4 - -end - -! --- - -subroutine test_fock_3e_uhf_ao() - - implicit none - integer :: i, j - double precision :: diff_tot, diff_ij, thr_ih, norm - double precision, allocatable :: fock_3e_uhf_ao_a_mo(:,:), fock_3e_uhf_ao_b_mo(:,:) - - thr_ih = 1d-7 - - PROVIDE fock_a_tot_3e_bi_orth fock_b_tot_3e_bi_orth - PROVIDE fock_3e_uhf_ao_a fock_3e_uhf_ao_b - - ! --- - - allocate(fock_3e_uhf_ao_a_mo(mo_num,mo_num)) - call ao_to_mo_bi_ortho( fock_3e_uhf_ao_a , size(fock_3e_uhf_ao_a , 1) & - , fock_3e_uhf_ao_a_mo, size(fock_3e_uhf_ao_a_mo, 1) ) - - norm = 0.d0 - diff_tot = 0.d0 - do i = 1, mo_num - do j = 1, mo_num - - diff_ij = dabs(fock_3e_uhf_ao_a_mo(j,i) - fock_a_tot_3e_bi_orth(j,i)) - if(diff_ij .gt. thr_ih) then - print *, ' difference on ', j, i - print *, ' MANU : ', fock_a_tot_3e_bi_orth(j,i) - print *, ' UHF : ', fock_3e_uhf_ao_a_mo (j,i) - !stop - endif - - norm += dabs(fock_a_tot_3e_bi_orth(j,i)) - diff_tot += diff_ij - enddo - enddo - print *, ' diff on F_a = ', diff_tot / norm - print *, ' ' - - deallocate(fock_3e_uhf_ao_a_mo) - - ! --- - - allocate(fock_3e_uhf_ao_b_mo(mo_num,mo_num)) - call ao_to_mo_bi_ortho( fock_3e_uhf_ao_b , size(fock_3e_uhf_ao_b , 1) & - , fock_3e_uhf_ao_b_mo, size(fock_3e_uhf_ao_b_mo, 1) ) - - norm = 0.d0 - diff_tot = 0.d0 - do i = 1, mo_num - do j = 1, mo_num - - diff_ij = dabs(fock_3e_uhf_ao_b_mo(j,i) - fock_b_tot_3e_bi_orth(j,i)) - if(diff_ij .gt. thr_ih) then - print *, ' difference on ', j, i - print *, ' MANU : ', fock_b_tot_3e_bi_orth(j,i) - print *, ' UHF : ', fock_3e_uhf_ao_b_mo (j,i) - !stop - endif - - norm += dabs(fock_b_tot_3e_bi_orth(j,i)) - diff_tot += diff_ij - enddo - enddo - print *, ' diff on F_b = ', diff_tot/norm - print *, ' ' - - deallocate(fock_3e_uhf_ao_b_mo) - - ! --- - -end subroutine test_fock_3e_uhf_ao() - -! --- - -subroutine test_fock_3e_uhf_mo() - - implicit none - integer :: i, j - double precision :: diff_tot, diff_ij, thr_ih, norm - - thr_ih = 1d-12 - - PROVIDE fock_a_tot_3e_bi_orth fock_b_tot_3e_bi_orth - PROVIDE fock_3e_uhf_mo_a fock_3e_uhf_mo_b - - ! --- - - norm = 0.d0 - diff_tot = 0.d0 - do i = 1, mo_num - do j = 1, mo_num - - diff_ij = dabs(fock_3e_uhf_mo_a(j,i) - fock_a_tot_3e_bi_orth(j,i)) - if(diff_ij .gt. thr_ih) then - print *, ' difference on ', j, i - print *, ' MANU : ', fock_a_tot_3e_bi_orth(j,i) - print *, ' UHF : ', fock_3e_uhf_mo_a (j,i) - !stop - endif - - norm += dabs(fock_a_tot_3e_bi_orth(j,i)) - diff_tot += diff_ij - enddo - enddo - print *, ' diff on F_a = ', diff_tot / norm - print *, ' norm_a = ', norm - print *, ' ' - - ! --- - - norm = 0.d0 - diff_tot = 0.d0 - do i = 1, mo_num - do j = 1, mo_num - - diff_ij = dabs(fock_3e_uhf_mo_b(j,i) - fock_b_tot_3e_bi_orth(j,i)) - if(diff_ij .gt. thr_ih) then - print *, ' difference on ', j, i - print *, ' MANU : ', fock_b_tot_3e_bi_orth(j,i) - print *, ' UHF : ', fock_3e_uhf_mo_b (j,i) - !stop - endif - - norm += dabs(fock_b_tot_3e_bi_orth(j,i)) - diff_tot += diff_ij - enddo - enddo - print *, ' diff on F_b = ', diff_tot/norm - print *, ' norm_b = ', norm - print *, ' ' - - ! --- - -end - -! --- - -subroutine test_grid_points_ao - implicit none - integer :: i,j,ipoint,icount,icount_good, icount_bad,icount_full - double precision :: thr - thr = 1.d-10 -! print*,'max_n_pts_grid_ao_prod = ',max_n_pts_grid_ao_prod -! print*,'n_pts_grid_ao_prod' - do i = 1, ao_num - do j = i, ao_num - icount = 0 - icount_good = 0 - icount_bad = 0 - icount_full = 0 - do ipoint = 1, n_points_final_grid -! if(dabs(int2_u_grad1u_x_env2_test(j,i,ipoint,1)) & -! + dabs(int2_u_grad1u_x_env2_test(j,i,ipoint,2)) & -! + dabs(int2_u_grad1u_x_env2_test(j,i,ipoint,3)) ) -! if(dabs(int2_u2_env2_test(j,i,ipoint)).gt.thr)then -! icount += 1 -! endif - if(dabs(v_ij_u_cst_mu_env_ng_1_test(j,i,ipoint)).gt.thr*0.1d0)then - icount_full += 1 - endif - if(dabs(v_ij_u_cst_mu_env_test(j,i,ipoint)).gt.thr)then - icount += 1 - if(dabs(v_ij_u_cst_mu_env_ng_1_test(j,i,ipoint)).gt.thr*0.1d0)then - icount_good += 1 - else - print*,j,i,ipoint - print*,dabs(v_ij_u_cst_mu_env_test(j,i,ipoint)), dabs(v_ij_u_cst_mu_env_ng_1_test(j,i,ipoint)),dabs(v_ij_u_cst_mu_env_ng_1_test(j,i,ipoint))/dabs(v_ij_u_cst_mu_env_test(j,i,ipoint)) - icount_bad += 1 - endif - endif -! if(dabs(v_ij_u_cst_mu_env_ng_1_test(j,i,ipoint)).gt.thr)then -! endif - enddo - print*,'' - print*,j,i - print*,icount,icount_full, icount_bad!,n_pts_grid_ao_prod(j,i) - print*,dble(icount)/dble(n_points_final_grid),dble(icount_full)/dble(n_points_final_grid) -! dble(n_pts_grid_ao_prod(j,i))/dble(n_points_final_grid) -! if(icount.gt.n_pts_grid_ao_prod(j,i))then -! print*,'pb !!' -! endif - enddo - enddo -end - -subroutine test_int_gauss - implicit none - integer :: i,j - print*,'center' - do i = 1, ao_num - do j = i, ao_num - print*,j,i - print*,ao_prod_sigma(j,i),ao_overlap_abs_grid(j,i) - print*,ao_prod_center(1:3,j,i) - enddo - enddo - print*,'' - double precision :: weight, r(3),integral_1,pi,center(3),f_r,alpha,distance,integral_2 - center = 0.d0 - pi = dacos(-1.d0) - integral_1 = 0.d0 - integral_2 = 0.d0 - alpha = 0.75d0 - do i = 1, n_points_final_grid - ! you get x, y and z of the ith grid point - r(1) = final_grid_points(1,i) - r(2) = final_grid_points(2,i) - r(3) = final_grid_points(3,i) - weight = final_weight_at_r_vector(i) - distance = dsqrt( (r(1) - center(1))**2 + (r(2) - center(2))**2 + (r(3) - center(3))**2 ) - f_r = dexp(-alpha * distance*distance) - ! you add the contribution of the grid point to the integral - integral_1 += f_r * weight - integral_2 += f_r * distance * weight - enddo - print*,'integral_1 =',integral_1 - print*,'(pi/alpha)**1.5 =',(pi / alpha)**1.5 - print*,'integral_2 =',integral_2 - print*,'(pi/alpha)**1.5 =',2.d0*pi / (alpha)**2 - - -end - -! --- - -subroutine test_two_e_tc_non_hermit_integral() - - implicit none - integer :: i, j - double precision :: diff_tot, diff, thr_ih, norm - - thr_ih = 1d-10 - - PROVIDE two_e_tc_non_hermit_integral_beta two_e_tc_non_hermit_integral_alpha - PROVIDE two_e_tc_non_hermit_integral_seq_beta two_e_tc_non_hermit_integral_seq_alpha - - ! --- - - norm = 0.d0 - diff_tot = 0.d0 - do i = 1, ao_num - do j = 1, ao_num - - diff = dabs(two_e_tc_non_hermit_integral_seq_alpha(j,i) - two_e_tc_non_hermit_integral_alpha(j,i)) - if(diff .gt. thr_ih) then - print *, ' difference on ', j, i - print *, ' seq : ', two_e_tc_non_hermit_integral_seq_alpha(j,i) - print *, ' // : ', two_e_tc_non_hermit_integral_alpha (j,i) - !stop - endif - - norm += dabs(two_e_tc_non_hermit_integral_seq_alpha(j,i)) - diff_tot += diff - enddo - enddo - - print *, ' diff tot a = ', diff_tot / norm - print *, ' norm a = ', norm - print *, ' ' - - ! --- - - norm = 0.d0 - diff_tot = 0.d0 - do i = 1, ao_num - do j = 1, ao_num - - diff = dabs(two_e_tc_non_hermit_integral_seq_beta(j,i) - two_e_tc_non_hermit_integral_beta(j,i)) - if(diff .gt. thr_ih) then - print *, ' difference on ', j, i - print *, ' seq : ', two_e_tc_non_hermit_integral_seq_beta(j,i) - print *, ' // : ', two_e_tc_non_hermit_integral_beta (j,i) - !stop - endif - - norm += dabs(two_e_tc_non_hermit_integral_seq_beta(j,i)) - diff_tot += diff - enddo - enddo - - print *, ' diff tot b = ', diff_tot / norm - print *, ' norm b = ', norm - print *, ' ' - - ! --- - - return - -end - -! --- - -subroutine test_int2_grad1_u12_ao_test - implicit none - integer :: i,j,ipoint,m,k,l - double precision :: weight,accu_relat, accu_abs, contrib - double precision, allocatable :: array(:,:,:,:), array_ref(:,:,:,:) - allocate(array(ao_num, ao_num, ao_num, ao_num)) - array = 0.d0 - allocate(array_ref(ao_num, ao_num, ao_num, ao_num)) - array_ref = 0.d0 - do m = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - array(j,i,l,k) += int2_grad1_u12_ao_test(j,i,ipoint,m) * aos_grad_in_r_array_transp(m,k,ipoint) * aos_in_r_array(l,ipoint) * weight - array_ref(j,i,l,k) += int2_grad1_u12_ao(j,i,ipoint,m) * aos_grad_in_r_array_transp(m,k,ipoint) * aos_in_r_array(l,ipoint) * weight - enddo - enddo - enddo - enddo - enddo - enddo - - accu_relat = 0.d0 - accu_abs = 0.d0 - do k = 1, ao_num - do l = 1, ao_num - do i = 1, ao_num - do j = 1, ao_num - contrib = dabs(array(j,i,l,k) - array_ref(j,i,l,k)) - accu_abs += contrib - if(dabs(array_ref(j,i,l,k)).gt.1.d-10)then - accu_relat += contrib/dabs(array_ref(j,i,l,k)) - endif - enddo - enddo - enddo - enddo - print*,'******' - print*,'******' - print*,'test_int2_grad1_u12_ao_test' - print*,'accu_abs = ',accu_abs/dble(ao_num)**4 - print*,'accu_relat = ',accu_relat/dble(ao_num)**4 -end - -! --- - -subroutine test_fock_3e_uhf_mo_cs() - - implicit none - integer :: i, j - double precision :: I_old, I_new - double precision :: diff_tot, diff, thr_ih, norm - -! double precision :: t0, t1 -! print*, ' Providing fock_a_tot_3e_bi_orth ...' -! call wall_time(t0) -! PROVIDE fock_a_tot_3e_bi_orth -! call wall_time(t1) -! print*, ' Wall time for fock_a_tot_3e_bi_orth =', t1 - t0 - - PROVIDE fock_3e_uhf_mo_cs fock_3e_uhf_mo_cs_old - - thr_ih = 1d-8 - norm = 0.d0 - diff_tot = 0.d0 - - do i = 1, mo_num - do j = 1, mo_num - - I_old = fock_3e_uhf_mo_cs_old(j,i) - I_new = fock_3e_uhf_mo_cs (j,i) - - diff = dabs(I_old - I_new) - if(diff .gt. thr_ih) then - print *, ' problem in fock_3e_uhf_mo_cs on ', j, i - print *, ' old value = ', I_old - print *, ' new value = ', I_new - !stop - endif - - norm += dabs(I_old) - diff_tot += diff - enddo - enddo - - print *, ' diff tot (%) = ', 100.d0 * diff_tot / norm - - return -end - -! --- - -subroutine test_fock_3e_uhf_mo_a() - - implicit none - integer :: i, j - double precision :: I_old, I_new - double precision :: diff_tot, diff, thr_ih, norm - - PROVIDE fock_3e_uhf_mo_a fock_3e_uhf_mo_a_old - - thr_ih = 1d-8 - norm = 0.d0 - diff_tot = 0.d0 - - do i = 1, mo_num - do j = 1, mo_num - - I_old = fock_3e_uhf_mo_a_old(j,i) - I_new = fock_3e_uhf_mo_a (j,i) - - diff = dabs(I_old - I_new) - if(diff .gt. thr_ih) then - print *, ' problem in fock_3e_uhf_mo_a on ', j, i - print *, ' old value = ', I_old - print *, ' new value = ', I_new - !stop - endif - - norm += dabs(I_old) - diff_tot += diff - enddo - enddo - - print *, ' diff tot (%) = ', 100.d0 * diff_tot / norm - - return -end - -! --- - -subroutine test_fock_3e_uhf_mo_b() - - implicit none - integer :: i, j - double precision :: I_old, I_new - double precision :: diff_tot, diff, thr_ih, norm - - PROVIDE fock_3e_uhf_mo_b fock_3e_uhf_mo_b_old - - thr_ih = 1d-8 - norm = 0.d0 - diff_tot = 0.d0 - - do i = 1, mo_num - do j = 1, mo_num - - I_old = fock_3e_uhf_mo_b_old(j,i) - I_new = fock_3e_uhf_mo_b (j,i) - - diff = dabs(I_old - I_new) - if(diff .gt. thr_ih) then - print *, ' problem in fock_3e_uhf_mo_b on ', j, i - print *, ' old value = ', I_old - print *, ' new value = ', I_new - !stop - endif - - norm += dabs(I_old) - diff_tot += diff - enddo - enddo - - print *, ' diff tot (%) = ', 100.d0 * diff_tot / norm - - return -end - -! --- - diff --git a/src/becke_numerical_grid/extra_grid_vector.irp.f b/src/becke_numerical_grid/extra_grid_vector.irp.f index 16a52dc6..e054e22c 100644 --- a/src/becke_numerical_grid/extra_grid_vector.irp.f +++ b/src/becke_numerical_grid/extra_grid_vector.irp.f @@ -70,17 +70,6 @@ END_PROVIDER index_final_points_extra(2,i_count) = i index_final_points_extra(3,i_count) = j index_final_points_extra_reverse(k,i,j) = i_count - - if(final_weight_at_r_vector_extra(i_count) .lt. 0.d0) then - print *, ' !!! WARNING !!!' - print *, ' negative weight !!!!' - print *, i_count, final_weight_at_r_vector_extra(i_count) - if(dabs(final_weight_at_r_vector_extra(i_count)) .lt. 1d-10) then - final_weight_at_r_vector_extra(i_count) = 0.d0 - else - stop - endif - endif enddo enddo enddo diff --git a/src/becke_numerical_grid/grid_becke_vector.irp.f b/src/becke_numerical_grid/grid_becke_vector.irp.f index c35918c3..9da8a099 100644 --- a/src/becke_numerical_grid/grid_becke_vector.irp.f +++ b/src/becke_numerical_grid/grid_becke_vector.irp.f @@ -67,17 +67,6 @@ END_PROVIDER index_final_points(2,i_count) = i index_final_points(3,i_count) = j index_final_points_reverse(k,i,j) = i_count - - if(final_weight_at_r_vector(i_count) .lt. 0.d0) then - print *, ' !!! WARNING !!!' - print *, ' negative weight !!!!' - print *, i_count, final_weight_at_r_vector(i_count) - if(dabs(final_weight_at_r_vector(i_count)) .lt. 1d-10) then - final_weight_at_r_vector(i_count) = 0.d0 - else - stop - endif - endif enddo enddo enddo diff --git a/src/utils/util.irp.f b/src/utils/util.irp.f index 97cbde67..c67bbf03 100644 --- a/src/utils/util.irp.f +++ b/src/utils/util.irp.f @@ -576,7 +576,7 @@ logical function is_same_spin(sigma_1, sigma_2) is_same_spin = .false. endif -end function is_same_spin +end ! --- @@ -596,7 +596,7 @@ function Kronecker_delta(i, j) result(delta) delta = 0.d0 endif -end function Kronecker_delta +end ! --- @@ -634,7 +634,81 @@ subroutine diagonalize_sym_matrix(N, A, e) print*,'Problem in diagonalize_sym_matrix (dsyev)!!' endif -end subroutine diagonalize_sym_matrix +end + +! --- + + +subroutine give_degen(A, n, shift, list_degen, n_degen_list) + + BEGIN_DOC + ! returns n_degen_list :: the number of degenerated SET of elements (i.e. with |A(i)-A(i+1)| below shift) + ! + ! for each of these sets, list_degen(1,i) = first degenerate element of the set i, + ! + ! list_degen(2,i) = last degenerate element of the set i. + END_DOC + + implicit none + + double precision, intent(in) :: A(n) + double precision, intent(in) :: shift + integer, intent(in) :: n + integer, intent(out) :: list_degen(2,n), n_degen_list + + integer :: i, j, n_degen, k + logical :: keep_on + double precision, allocatable :: Aw(:) + + list_degen = -1 + allocate(Aw(n)) + Aw = A + i=1 + k = 0 + do while(i.lt.n) + if(dabs(Aw(i)-Aw(i+1)).lt.shift)then + k+=1 + j=1 + list_degen(1,k) = i + keep_on = .True. + do while(keep_on) + if(i+j.gt.n)then + keep_on = .False. + exit + endif + if(dabs(Aw(i)-Aw(i+j)).lt.shift)then + j+=1 + else + keep_on=.False. + exit + endif + enddo + n_degen = j + list_degen(2,k) = list_degen(1,k)-1 + n_degen + j=0 + keep_on = .True. + do while(keep_on) + if(i+j+1.gt.n)then + keep_on = .False. + exit + endif + if(dabs(Aw(i+j)-Aw(i+j+1)).lt.shift)then + Aw(i+j) += (j-n_degen/2) * shift + j+=1 + else + keep_on = .False. + exit + endif + enddo + Aw(i+n_degen-1) += (n_degen-1-n_degen/2) * shift + i+=n_degen + else + i+=1 + endif + enddo + n_degen_list = k + +end ! --- From da8eac81e01e9ee558351195aba1f964ed5fbc0b Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Wed, 1 May 2024 21:52:00 +0200 Subject: [PATCH 021/159] TC-SCF CLEANED --- plugins/local/bi_ort_ints/no_dressing.irp.f | 7 +- plugins/local/tc_scf/EZFIO.cfg | 36 + plugins/local/tc_scf/fock_hermit.irp.f | 107 --- plugins/local/tc_scf/fock_tc.irp.f | 40 +- plugins/local/tc_scf/fock_tc_mo_tot.irp.f | 19 +- plugins/local/tc_scf/fock_three_hermit.irp.f | 771 ------------------ .../local/tc_scf/integrals_in_r_stuff.irp.f | 391 --------- plugins/local/tc_scf/jast_schmos_90.irp.f | 318 -------- plugins/local/tc_scf/plot_j_schMos.irp.f | 69 -- plugins/local/tc_scf/print_fit_param.irp.f | 59 -- plugins/local/tc_scf/print_tcscf_energy.irp.f | 55 -- plugins/local/tc_scf/rh_tcscf_simple.irp.f | 129 --- .../local/tc_scf/rotate_tcscf_orbitals.irp.f | 369 --------- .../local/tc_scf/tc_petermann_factor.irp.f | 91 --- plugins/local/tc_scf/tc_scf.irp.f | 25 +- plugins/local/tc_scf/tc_scf_dm.irp.f | 24 +- plugins/local/tc_scf/tc_scf_energy.irp.f | 423 ++++++++++ plugins/local/tc_scf/tcscf_energy_naive.irp.f | 80 -- .../tc_scf/three_e_energy_bi_ortho.irp.f | 189 ----- .../local/tc_scf/write_ao_2e_tc_integ.irp.f | 6 +- 20 files changed, 502 insertions(+), 2706 deletions(-) delete mode 100644 plugins/local/tc_scf/fock_hermit.irp.f delete mode 100644 plugins/local/tc_scf/fock_three_hermit.irp.f delete mode 100644 plugins/local/tc_scf/integrals_in_r_stuff.irp.f delete mode 100644 plugins/local/tc_scf/jast_schmos_90.irp.f delete mode 100644 plugins/local/tc_scf/plot_j_schMos.irp.f delete mode 100644 plugins/local/tc_scf/print_fit_param.irp.f delete mode 100644 plugins/local/tc_scf/print_tcscf_energy.irp.f delete mode 100644 plugins/local/tc_scf/rh_tcscf_simple.irp.f delete mode 100644 plugins/local/tc_scf/rotate_tcscf_orbitals.irp.f delete mode 100644 plugins/local/tc_scf/tc_petermann_factor.irp.f delete mode 100644 plugins/local/tc_scf/tcscf_energy_naive.irp.f delete mode 100644 plugins/local/tc_scf/three_e_energy_bi_ortho.irp.f diff --git a/plugins/local/bi_ort_ints/no_dressing.irp.f b/plugins/local/bi_ort_ints/no_dressing.irp.f index bd225274..721ac0f8 100644 --- a/plugins/local/bi_ort_ints/no_dressing.irp.f +++ b/plugins/local/bi_ort_ints/no_dressing.irp.f @@ -322,6 +322,12 @@ END_PROVIDER BEGIN_PROVIDER [double precision, noL_0e] + BEGIN_DOC + ! + ! < Phi_left | L | Phi_right > + ! + END_DOC + implicit none integer :: i, j, k, ipoint double precision :: t0, t1 @@ -330,7 +336,6 @@ BEGIN_PROVIDER [double precision, noL_0e] double precision, allocatable :: tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) - call wall_time(t0) print*, " Providing noL_0e ..." diff --git a/plugins/local/tc_scf/EZFIO.cfg b/plugins/local/tc_scf/EZFIO.cfg index 510c777c..6820a8b0 100644 --- a/plugins/local/tc_scf/EZFIO.cfg +++ b/plugins/local/tc_scf/EZFIO.cfg @@ -9,3 +9,39 @@ doc: If |true|, tc-scf has converged interface: ezfio,provider,ocaml default: False +[max_dim_diis_tcscf] +type: integer +doc: Maximum size of the DIIS extrapolation procedure +interface: ezfio,provider,ocaml +default: 15 + +[level_shift_tcscf] +type: Positive_float +doc: Energy shift on the virtual MOs to improve TCSCF convergence +interface: ezfio,provider,ocaml +default: 0. + +[im_thresh_tcscf] +type: Threshold +doc: Thresholds on the Imag part of energy +interface: ezfio,provider,ocaml +default: 1.e-7 + +[thresh_tcscf] +type: Threshold +doc: Threshold on the convergence of the Hartree Fock energy. +interface: ezfio,provider,ocaml +default: 1.e-8 + +[n_it_tcscf_max] +type: Strictly_positive_int +doc: Maximum number of SCF iterations +interface: ezfio,provider,ocaml +default: 50 + +[tc_Brillouin_Right] +type: logical +doc: If |true|, impose only right-Brillouin condition +interface: ezfio,provider,ocaml +default: False + diff --git a/plugins/local/tc_scf/fock_hermit.irp.f b/plugins/local/tc_scf/fock_hermit.irp.f deleted file mode 100644 index 5a51b324..00000000 --- a/plugins/local/tc_scf/fock_hermit.irp.f +++ /dev/null @@ -1,107 +0,0 @@ - -! --- - -BEGIN_PROVIDER [ double precision, good_hermit_tc_fock_mat, (mo_num, mo_num)] - - BEGIN_DOC -! good_hermit_tc_fock_mat = Hermitian Upper triangular Fock matrix -! -! The converged eigenvectors of such matrix yield to orthonormal vectors satisfying the left Brillouin theorem - END_DOC - implicit none - integer :: i, j - - good_hermit_tc_fock_mat = Fock_matrix_tc_mo_tot - do j = 1, mo_num - do i = 1, j-1 - good_hermit_tc_fock_mat(i,j) = Fock_matrix_tc_mo_tot(j,i) - enddo - enddo - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, hermit_average_tc_fock_mat, (mo_num, mo_num)] - - BEGIN_DOC -! hermit_average_tc_fock_mat = (F + F^\dagger)/2 - END_DOC - implicit none - integer :: i, j - - hermit_average_tc_fock_mat = Fock_matrix_tc_mo_tot - do j = 1, mo_num - do i = 1, mo_num - hermit_average_tc_fock_mat(i,j) = 0.5d0 * (Fock_matrix_tc_mo_tot(j,i) + Fock_matrix_tc_mo_tot(i,j)) - enddo - enddo - -END_PROVIDER - - -! --- -BEGIN_PROVIDER [ double precision, grad_hermit] - implicit none - BEGIN_DOC - ! square of gradient of the energy - END_DOC - if(symetric_fock_tc)then - grad_hermit = grad_hermit_average_tc_fock_mat - else - grad_hermit = grad_good_hermit_tc_fock_mat - endif - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, grad_good_hermit_tc_fock_mat] - implicit none - BEGIN_DOC - ! grad_good_hermit_tc_fock_mat = norm of gradients of the upper triangular TC fock - END_DOC - integer :: i, j - grad_good_hermit_tc_fock_mat = 0.d0 - do i = 1, elec_alpha_num - do j = elec_alpha_num+1, mo_num - grad_good_hermit_tc_fock_mat += dabs(good_hermit_tc_fock_mat(i,j)) - enddo - enddo -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, grad_hermit_average_tc_fock_mat] - implicit none - BEGIN_DOC - ! grad_hermit_average_tc_fock_mat = norm of gradients of the upper triangular TC fock - END_DOC - integer :: i, j - grad_hermit_average_tc_fock_mat = 0.d0 - do i = 1, elec_alpha_num - do j = elec_alpha_num+1, mo_num - grad_hermit_average_tc_fock_mat += dabs(hermit_average_tc_fock_mat(i,j)) - enddo - enddo -END_PROVIDER - - -! --- - -subroutine save_good_hermit_tc_eigvectors() - - implicit none - integer :: sign - character*(64) :: label - logical :: output - - sign = 1 - label = "Canonical" - output = .False. - - if(symetric_fock_tc)then - call mo_as_eigvectors_of_mo_matrix(hermit_average_tc_fock_mat, mo_num, mo_num, label, sign, output) - else - call mo_as_eigvectors_of_mo_matrix(good_hermit_tc_fock_mat, mo_num, mo_num, label, sign, output) - endif -end subroutine save_good_hermit_tc_eigvectors - -! --- - diff --git a/plugins/local/tc_scf/fock_tc.irp.f b/plugins/local/tc_scf/fock_tc.irp.f index 508f3cd7..16bb5c87 100644 --- a/plugins/local/tc_scf/fock_tc.irp.f +++ b/plugins/local/tc_scf/fock_tc.irp.f @@ -110,23 +110,14 @@ BEGIN_PROVIDER [double precision, Fock_matrix_tc_mo_alpha, (mo_num, mo_num)] double precision :: t0, t1, tt0, tt1 double precision, allocatable :: tmp(:,:) - if(bi_ortho) then + PROVIDE mo_l_coef mo_r_coef - PROVIDE mo_l_coef mo_r_coef - - call ao_to_mo_bi_ortho( Fock_matrix_tc_ao_alpha, size(Fock_matrix_tc_ao_alpha, 1) & - , Fock_matrix_tc_mo_alpha, size(Fock_matrix_tc_mo_alpha, 1) ) - - if(three_body_h_tc) then - PROVIDE fock_3e_mo_a - Fock_matrix_tc_mo_alpha += fock_3e_mo_a - endif - - else - - call ao_to_mo( Fock_matrix_tc_ao_alpha, size(Fock_matrix_tc_ao_alpha, 1) & - , Fock_matrix_tc_mo_alpha, size(Fock_matrix_tc_mo_alpha, 1) ) + call ao_to_mo_bi_ortho( Fock_matrix_tc_ao_alpha, size(Fock_matrix_tc_ao_alpha, 1) & + , Fock_matrix_tc_mo_alpha, size(Fock_matrix_tc_mo_alpha, 1) ) + if(three_body_h_tc) then + PROVIDE fock_3e_mo_a + Fock_matrix_tc_mo_alpha += fock_3e_mo_a endif END_PROVIDER @@ -142,21 +133,12 @@ BEGIN_PROVIDER [ double precision, Fock_matrix_tc_mo_beta, (mo_num,mo_num) ] implicit none double precision, allocatable :: tmp(:,:) - if(bi_ortho) then - - call ao_to_mo_bi_ortho( Fock_matrix_tc_ao_beta, size(Fock_matrix_tc_ao_beta, 1) & - , Fock_matrix_tc_mo_beta, size(Fock_matrix_tc_mo_beta, 1) ) - - if(three_body_h_tc) then - PROVIDE fock_3e_mo_b - Fock_matrix_tc_mo_beta += fock_3e_mo_b - endif - - else - - call ao_to_mo( Fock_matrix_tc_ao_beta, size(Fock_matrix_tc_ao_beta, 1) & - , Fock_matrix_tc_mo_beta, size(Fock_matrix_tc_mo_beta, 1) ) + call ao_to_mo_bi_ortho( Fock_matrix_tc_ao_beta, size(Fock_matrix_tc_ao_beta, 1) & + , Fock_matrix_tc_mo_beta, size(Fock_matrix_tc_mo_beta, 1) ) + if(three_body_h_tc) then + PROVIDE fock_3e_mo_b + Fock_matrix_tc_mo_beta += fock_3e_mo_b endif END_PROVIDER diff --git a/plugins/local/tc_scf/fock_tc_mo_tot.irp.f b/plugins/local/tc_scf/fock_tc_mo_tot.irp.f index 2df2421e..fd490af6 100644 --- a/plugins/local/tc_scf/fock_tc_mo_tot.irp.f +++ b/plugins/local/tc_scf/fock_tc_mo_tot.irp.f @@ -132,7 +132,7 @@ enddo endif - if(no_oa_or_av_opt)then + if(no_oa_or_av_opt) then do i = 1, n_act_orb iorb = list_act(i) do j = 1, n_inact_orb @@ -153,8 +153,21 @@ enddo endif - if(.not.bi_ortho .and. three_body_h_tc)then - Fock_matrix_tc_mo_tot += fock_3_mat + if(tc_Brillouin_Right) then + + double precision, allocatable :: tmp(:,:) + allocate(tmp(mo_num,mo_num)) + + tmp = Fock_matrix_tc_mo_tot + do j = 1, mo_num + do i = 1, j-1 + tmp(i,j) = Fock_matrix_tc_mo_tot(j,i) + enddo + enddo + + Fock_matrix_tc_mo_tot = tmp + deallocate(tmp) + endif END_PROVIDER diff --git a/plugins/local/tc_scf/fock_three_hermit.irp.f b/plugins/local/tc_scf/fock_three_hermit.irp.f deleted file mode 100644 index 00d47fae..00000000 --- a/plugins/local/tc_scf/fock_three_hermit.irp.f +++ /dev/null @@ -1,771 +0,0 @@ - -! --- - -BEGIN_PROVIDER [ double precision, fock_3_mat, (mo_num, mo_num)] - - implicit none - integer :: i,j - double precision :: contrib - - fock_3_mat = 0.d0 - if(.not.bi_ortho .and. three_body_h_tc) then - - call give_fock_ia_three_e_total(1, 1, contrib) - !! !$OMP PARALLEL & - !! !$OMP DEFAULT (NONE) & - !! !$OMP PRIVATE (i,j,m,integral) & - !! !$OMP SHARED (mo_num,three_body_3_index) - !! !$OMP DO SCHEDULE (guided) COLLAPSE(3) - do i = 1, mo_num - do j = 1, mo_num - call give_fock_ia_three_e_total(j,i,contrib) - fock_3_mat(j,i) = -contrib - enddo - enddo - !else if(bi_ortho.and.three_body_h_tc) then - !! !$OMP END DO - !! !$OMP END PARALLEL - !! do i = 1, mo_num - !! do j = 1, i-1 - !! mat_three(j,i) = mat_three(i,j) - !! enddo - !! enddo - endif - -END_PROVIDER - - -subroutine give_fock_ia_three_e_total(i,a,contrib) - implicit none - BEGIN_DOC -! contrib is the TOTAL (same spins / opposite spins) contribution from the three body term to the Fock operator -! - END_DOC - integer, intent(in) :: i,a - double precision, intent(out) :: contrib - double precision :: int_1, int_2, int_3 - double precision :: mos_i, mos_a, w_ia - double precision :: mos_ia, weight - - integer :: mm, ipoint,k,l - - int_1 = 0.d0 - int_2 = 0.d0 - int_3 = 0.d0 - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - mos_i = mos_in_r_array_transp(ipoint,i) - mos_a = mos_in_r_array_transp(ipoint,a) - mos_ia = mos_a * mos_i - w_ia = x_W_ij_erf_rk(ipoint,mm,i,a) - - int_1 += weight * fock_3_w_kk_sum(ipoint,mm) * (4.d0 * fock_3_rho_beta(ipoint) * w_ia & - + 2.0d0 * mos_ia * fock_3_w_kk_sum(ipoint,mm) & - - 2.0d0 * fock_3_w_ki_mos_k(ipoint,mm,i) * mos_a & - - 2.0d0 * fock_3_w_ki_mos_k(ipoint,mm,a) * mos_i ) - int_2 += weight * (-1.d0) * ( 2.0d0 * fock_3_w_kl_mo_k_mo_l(ipoint,mm) * w_ia & - + 2.0d0 * fock_3_rho_beta(ipoint) * fock_3_w_ki_wk_a(ipoint,mm,i,a) & - + 1.0d0 * mos_ia * fock_3_trace_w_tilde(ipoint,mm) ) - - int_3 += weight * 1.d0 * (fock_3_w_kl_wla_phi_k(ipoint,mm,i) * mos_a + fock_3_w_kl_wla_phi_k(ipoint,mm,a) * mos_i & - +fock_3_w_ki_mos_k(ipoint,mm,i) * fock_3_w_ki_mos_k(ipoint,mm,a) ) - enddo - enddo - contrib = int_1 + int_2 + int_3 - -end - -! --- - -BEGIN_PROVIDER [double precision, diag_three_elem_hf] - - implicit none - integer :: i, j, k, ipoint, mm - double precision :: contrib, weight, four_third, one_third, two_third, exchange_int_231 - double precision :: integral_aaa, hthree, integral_aab, integral_abb, integral_bbb - double precision, allocatable :: tmp(:) - double precision, allocatable :: tmp_L(:,:), tmp_R(:,:) - double precision, allocatable :: tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) - double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) - - PROVIDE mo_l_coef mo_r_coef - - !print *, ' providing diag_three_elem_hf' - - if(.not. three_body_h_tc) then - - if(noL_standard) then - PROVIDE noL_0e - diag_three_elem_hf = noL_0e - else - diag_three_elem_hf = 0.d0 - endif - - else - - if(.not. bi_ortho) then - - ! --- - - one_third = 1.d0/3.d0 - two_third = 2.d0/3.d0 - four_third = 4.d0/3.d0 - diag_three_elem_hf = 0.d0 - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do k = 1, elec_beta_num - call give_integrals_3_body(k, j, i, j, i, k, exchange_int_231) - diag_three_elem_hf += two_third * exchange_int_231 - enddo - enddo - enddo - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - contrib = 3.d0 * fock_3_w_kk_sum(ipoint,mm) * fock_3_rho_beta(ipoint) * fock_3_w_kk_sum(ipoint,mm) & - - 2.d0 * fock_3_w_kl_mo_k_mo_l(ipoint,mm) * fock_3_w_kk_sum(ipoint,mm) & - - 1.d0 * fock_3_rho_beta(ipoint) * fock_3_w_kl_w_kl(ipoint,mm) - contrib *= four_third - contrib += -two_third * fock_3_rho_beta(ipoint) * fock_3_w_kl_w_kl(ipoint,mm) & - -four_third * fock_3_w_kk_sum(ipoint,mm) * fock_3_w_kl_mo_k_mo_l(ipoint,mm) - diag_three_elem_hf += weight * contrib - enddo - enddo - - diag_three_elem_hf = - diag_three_elem_hf - - ! --- - - else - - ! ------------ - ! SLOW VERSION - ! ------------ - - !call give_aaa_contrib(integral_aaa) - !call give_aab_contrib(integral_aab) - !call give_abb_contrib(integral_abb) - !call give_bbb_contrib(integral_bbb) - !diag_three_elem_hf = integral_aaa + integral_aab + integral_abb + integral_bbb - - ! ------------ - ! ------------ - - PROVIDE int2_grad1_u12_bimo_t - PROVIDE mos_l_in_r_array_transp - PROVIDE mos_r_in_r_array_transp - - if(elec_alpha_num .eq. elec_beta_num) then - - allocate(tmp(elec_beta_num)) - allocate(tmp_L(n_points_final_grid,3), tmp_R(n_points_final_grid,3)) - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(elec_beta_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) - - !$OMP DO - do j = 1, elec_beta_num - - tmp_L = 0.d0 - tmp_R = 0.d0 - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - tmp(j) = 0.d0 - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - enddo ! j - !$OMP END DO - !$OMP END PARALLEL - - diag_three_elem_hf = -2.d0 * sum(tmp) - - deallocate(tmp) - deallocate(tmp_L, tmp_R) - - ! --- - - allocate(tmp_O(n_points_final_grid), tmp_J(n_points_final_grid,3)) - tmp_O = 0.d0 - tmp_J = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & - !$OMP SHARED(elec_beta_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_O, tmp_J) - - allocate(tmp_O_priv(n_points_final_grid), tmp_J_priv(n_points_final_grid,3)) - tmp_O_priv = 0.d0 - tmp_J_priv = 0.d0 - - !$OMP DO - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,i) - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_O = tmp_O + tmp_O_priv - tmp_J = tmp_J + tmp_J_priv - !$OMP END CRITICAL - - deallocate(tmp_O_priv, tmp_J_priv) - !$OMP END PARALLEL - - allocate(tmp_M(n_points_final_grid,3), tmp_S(n_points_final_grid)) - tmp_M = 0.d0 - tmp_S = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & - !$OMP SHARED(elec_beta_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_M, tmp_S) - - allocate(tmp_M_priv(n_points_final_grid,3), tmp_S_priv(n_points_final_grid)) - tmp_M_priv = 0.d0 - tmp_S_priv = 0.d0 - - !$OMP DO COLLAPSE(2) - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_M = tmp_M + tmp_M_priv - tmp_S = tmp_S + tmp_S_priv - !$OMP END CRITICAL - - deallocate(tmp_M_priv, tmp_S_priv) - !$OMP END PARALLEL - - allocate(tmp(n_points_final_grid)) - - do ipoint = 1, n_points_final_grid - - tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) - - tmp(ipoint) = final_weight_at_r_vector(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & - - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & - + tmp_J(ipoint,2) * tmp_M(ipoint,2) & - + tmp_J(ipoint,3) * tmp_M(ipoint,3))) - enddo - - diag_three_elem_hf = diag_three_elem_hf -2.d0 * (sum(tmp)) - - deallocate(tmp) - - else - - allocate(tmp(elec_alpha_num)) - allocate(tmp_L(n_points_final_grid,3), tmp_R(n_points_final_grid,3)) - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) - - !$OMP DO - do j = 1, elec_beta_num - - tmp_L = 0.d0 - tmp_R = 0.d0 - do i = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - tmp_L(ipoint,1) = tmp_L(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - tmp(j) = 0.d0 - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - enddo ! j - !$OMP END DO - !$OMP END PARALLEL - - ! --- - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) - - !$OMP DO - do j = elec_beta_num+1, elec_alpha_num - - tmp_L = 0.d0 - tmp_R = 0.d0 - do i = 1, elec_alpha_num - do ipoint = 1, n_points_final_grid - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - tmp(j) = 0.d0 - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + 0.5d0 * final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - enddo ! j - !$OMP END DO - !$OMP END PARALLEL - - diag_three_elem_hf = -2.d0 * sum(tmp) - - deallocate(tmp) - deallocate(tmp_L, tmp_R) - - ! --- - - allocate(tmp_O(n_points_final_grid), tmp_J(n_points_final_grid,3)) - tmp_O = 0.d0 - tmp_J = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_O, tmp_J) - - allocate(tmp_O_priv(n_points_final_grid), tmp_J_priv(n_points_final_grid,3)) - tmp_O_priv = 0.d0 - tmp_J_priv = 0.d0 - - !$OMP DO - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,i) - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP DO - do i = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + 0.5d0 * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,i) - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_O = tmp_O + tmp_O_priv - tmp_J = tmp_J + tmp_J_priv - !$OMP END CRITICAL - - deallocate(tmp_O_priv, tmp_J_priv) - !$OMP END PARALLEL - - ! --- - - allocate(tmp_M(n_points_final_grid,3), tmp_S(n_points_final_grid)) - tmp_M = 0.d0 - tmp_S = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_M, tmp_S) - - allocate(tmp_M_priv(n_points_final_grid,3), tmp_S_priv(n_points_final_grid)) - tmp_M_priv = 0.d0 - tmp_S_priv = 0.d0 - - !$OMP DO COLLAPSE(2) - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP DO COLLAPSE(2) - do i = elec_beta_num+1, elec_alpha_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP DO COLLAPSE(2) - do i = elec_beta_num+1, elec_alpha_num - do j = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_M = tmp_M + tmp_M_priv - tmp_S = tmp_S + tmp_S_priv - !$OMP END CRITICAL - - deallocate(tmp_M_priv, tmp_S_priv) - !$OMP END PARALLEL - - allocate(tmp(n_points_final_grid)) - - do ipoint = 1, n_points_final_grid - - tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) - - tmp(ipoint) = final_weight_at_r_vector(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & - - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & - + tmp_J(ipoint,2) * tmp_M(ipoint,2) & - + tmp_J(ipoint,3) * tmp_M(ipoint,3))) - enddo - - diag_three_elem_hf = diag_three_elem_hf - 2.d0 * (sum(tmp)) - - deallocate(tmp) - - endif - - - endif - - endif - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, fock_3_mat_a_op_sh, (mo_num, mo_num)] - implicit none - integer :: h,p,i,j - double precision :: direct_int, exch_int, exchange_int_231, exchange_int_312 - double precision :: exchange_int_23, exchange_int_12, exchange_int_13 - - fock_3_mat_a_op_sh = 0.d0 - do h = 1, mo_num - do p = 1, mo_num - !F_a^{ab}(h,p) - do i = 1, elec_beta_num ! beta - do j = elec_beta_num+1, elec_alpha_num ! alpha - call give_integrals_3_body(h,j,i,p,j,i,direct_int) ! - call give_integrals_3_body(h,j,i,j,p,i,exch_int) - fock_3_mat_a_op_sh(h,p) -= direct_int - exch_int - enddo - enddo - !F_a^{aa}(h,p) - do i = 1, elec_beta_num ! alpha - do j = elec_beta_num+1, elec_alpha_num ! alpha - call give_integrals_3_body(h,j,i,p,j,i,direct_int) - call give_integrals_3_body(h,j,i,i,p,j,exchange_int_231) - call give_integrals_3_body(h,j,i,j,i,p,exchange_int_312) - call give_integrals_3_body(h,j,i,p,i,j,exchange_int_23) - call give_integrals_3_body(h,j,i,i,j,p,exchange_int_12) - call give_integrals_3_body(h,j,i,j,p,i,exchange_int_13) - fock_3_mat_a_op_sh(h,p) -= ( direct_int + exchange_int_231 + exchange_int_312 & - - exchange_int_23 & ! i <-> j - - exchange_int_12 & ! p <-> j - - exchange_int_13 )! p <-> i - enddo - enddo - enddo - enddo -! symmetrized -! do p = 1, elec_beta_num -! do h = elec_alpha_num +1, mo_num -! fock_3_mat_a_op_sh(h,p) = fock_3_mat_a_op_sh(p,h) -! enddo -! enddo - -! do h = elec_beta_num+1, elec_alpha_num -! do p = elec_alpha_num +1, mo_num -! !F_a^{bb}(h,p) -! do i = 1, elec_beta_num -! do j = i+1, elec_beta_num -! call give_integrals_3_body(h,j,i,p,j,i,direct_int) -! call give_integrals_3_body(h,j,i,p,i,j,exch_int) -! fock_3_mat_a_op_sh(h,p) -= direct_int - exch_int -! enddo -! enddo -! enddo -! enddo - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_mat_b_op_sh, (mo_num, mo_num)] - implicit none - integer :: h,p,i,j - double precision :: direct_int, exch_int - fock_3_mat_b_op_sh = 0.d0 - do h = 1, elec_beta_num - do p = elec_alpha_num +1, mo_num - !F_b^{aa}(h,p) - do i = 1, elec_beta_num - do j = elec_beta_num+1, elec_alpha_num - call give_integrals_3_body(h,j,i,p,j,i,direct_int) - call give_integrals_3_body(h,j,i,p,i,j,exch_int) - fock_3_mat_b_op_sh(h,p) += direct_int - exch_int - enddo - enddo - - !F_b^{ab}(h,p) - do i = elec_beta_num+1, elec_beta_num - do j = 1, elec_beta_num - call give_integrals_3_body(h,j,i,p,j,i,direct_int) - call give_integrals_3_body(h,j,i,j,p,i,exch_int) - fock_3_mat_b_op_sh(h,p) += direct_int - exch_int - enddo - enddo - - enddo - enddo - -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, fock_3_w_kk_sum, (n_points_final_grid,3)] - implicit none - integer :: mm, ipoint,k - double precision :: w_kk - fock_3_w_kk_sum = 0.d0 - do k = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - w_kk = x_W_ij_erf_rk(ipoint,mm,k,k) - fock_3_w_kk_sum(ipoint,mm) += w_kk - enddo - enddo - enddo -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_w_ki_mos_k, (n_points_final_grid,3,mo_num)] - implicit none - integer :: mm, ipoint,k,i - double precision :: w_ki, mo_k - fock_3_w_ki_mos_k = 0.d0 - do i = 1, mo_num - do k = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - w_ki = x_W_ij_erf_rk(ipoint,mm,k,i) - mo_k = mos_in_r_array(k,ipoint) - fock_3_w_ki_mos_k(ipoint,mm,i) += w_ki * mo_k - enddo - enddo - enddo - enddo - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_w_kl_w_kl, (n_points_final_grid,3)] - implicit none - integer :: k,j,ipoint,mm - double precision :: w_kj - fock_3_w_kl_w_kl = 0.d0 - do j = 1, elec_beta_num - do k = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - w_kj = x_W_ij_erf_rk(ipoint,mm,k,j) - fock_3_w_kl_w_kl(ipoint,mm) += w_kj * w_kj - enddo - enddo - enddo - enddo - - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_rho_beta, (n_points_final_grid)] - implicit none - integer :: ipoint,k - fock_3_rho_beta = 0.d0 - do ipoint = 1, n_points_final_grid - do k = 1, elec_beta_num - fock_3_rho_beta(ipoint) += mos_in_r_array(k,ipoint) * mos_in_r_array(k,ipoint) - enddo - enddo -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_w_kl_mo_k_mo_l, (n_points_final_grid,3)] - implicit none - integer :: ipoint,k,l,mm - double precision :: mos_k, mos_l, w_kl - fock_3_w_kl_mo_k_mo_l = 0.d0 - do k = 1, elec_beta_num - do l = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - mos_k = mos_in_r_array_transp(ipoint,k) - mos_l = mos_in_r_array_transp(ipoint,l) - w_kl = x_W_ij_erf_rk(ipoint,mm,l,k) - fock_3_w_kl_mo_k_mo_l(ipoint,mm) += w_kl * mos_k * mos_l - enddo - enddo - enddo - enddo - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_w_ki_wk_a, (n_points_final_grid,3,mo_num, mo_num)] - implicit none - integer :: ipoint,i,a,k,mm - double precision :: w_ki,w_ka - fock_3_w_ki_wk_a = 0.d0 - do i = 1, mo_num - do a = 1, mo_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - do k = 1, elec_beta_num - w_ki = x_W_ij_erf_rk(ipoint,mm,k,i) - w_ka = x_W_ij_erf_rk(ipoint,mm,k,a) - fock_3_w_ki_wk_a(ipoint,mm,a,i) += w_ki * w_ka - enddo - enddo - enddo - enddo - enddo -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_trace_w_tilde, (n_points_final_grid,3)] - implicit none - integer :: ipoint,k,mm - fock_3_trace_w_tilde = 0.d0 - do k = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - fock_3_trace_w_tilde(ipoint,mm) += fock_3_w_ki_wk_a(ipoint,mm,k,k) - enddo - enddo - enddo - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_w_kl_wla_phi_k, (n_points_final_grid,3,mo_num)] - implicit none - integer :: ipoint,a,k,mm,l - double precision :: w_kl,w_la, mo_k - fock_3_w_kl_wla_phi_k = 0.d0 - do a = 1, mo_num - do k = 1, elec_beta_num - do l = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - w_kl = x_W_ij_erf_rk(ipoint,mm,l,k) - w_la = x_W_ij_erf_rk(ipoint,mm,l,a) - mo_k = mos_in_r_array_transp(ipoint,k) - fock_3_w_kl_wla_phi_k(ipoint,mm,a) += w_kl * w_la * mo_k - enddo - enddo - enddo - enddo - enddo -END_PROVIDER - - - - - diff --git a/plugins/local/tc_scf/integrals_in_r_stuff.irp.f b/plugins/local/tc_scf/integrals_in_r_stuff.irp.f deleted file mode 100644 index 3ce85a97..00000000 --- a/plugins/local/tc_scf/integrals_in_r_stuff.irp.f +++ /dev/null @@ -1,391 +0,0 @@ - -! --- - -BEGIN_PROVIDER [ double precision, tc_scf_dm_in_r, (n_points_final_grid) ] - - implicit none - integer :: i, j - - tc_scf_dm_in_r = 0.d0 - do i = 1, n_points_final_grid - do j = 1, elec_beta_num - tc_scf_dm_in_r(i) += mos_r_in_r_array(j,i) * mos_l_in_r_array(j,i) - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, w_sum_in_r, (n_points_final_grid, 3)] - - implicit none - integer :: ipoint, j, xi - - w_sum_in_r = 0.d0 - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - !w_sum_in_r(ipoint,xi) += x_W_ki_bi_ortho_erf_rk(ipoint,xi,j,j) - w_sum_in_r(ipoint,xi) += x_W_ki_bi_ortho_erf_rk_diag(ipoint,xi,j) - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, ww_sum_in_r, (n_points_final_grid, 3)] - - implicit none - integer :: ipoint, j, xi - double precision :: tmp - - ww_sum_in_r = 0.d0 - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - tmp = x_W_ki_bi_ortho_erf_rk_diag(ipoint,xi,j) - ww_sum_in_r(ipoint,xi) += tmp * tmp - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_r_in_r, (n_points_final_grid, 3, mo_num)] - - implicit none - integer :: i, j, xi, ipoint - - ! TODO: call lapack - - W1_r_in_r = 0.d0 - do i = 1, mo_num - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_r_in_r(ipoint,xi,i) += mos_r_in_r_array_transp(ipoint,j) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,j,i) - enddo - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_l_in_r, (n_points_final_grid, 3, mo_num)] - - implicit none - integer :: i, j, xi, ipoint - - ! TODO: call lapack - - W1_l_in_r = 0.d0 - do i = 1, mo_num - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_l_in_r(ipoint,xi,i) += mos_l_in_r_array_transp(ipoint,j) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,i,j) - enddo - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_in_r, (n_points_final_grid, 3)] - - implicit none - integer :: j, xi, ipoint - - ! TODO: call lapack - - W1_in_r = 0.d0 - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_in_r(ipoint,xi) += W1_l_in_r(ipoint,xi,j) * mos_r_in_r_array_transp(ipoint,j) - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_diag_in_r, (n_points_final_grid, 3)] - - implicit none - integer :: j, xi, ipoint - - ! TODO: call lapack - - W1_diag_in_r = 0.d0 - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_diag_in_r(ipoint,xi) += mos_r_in_r_array_transp(ipoint,j) * mos_l_in_r_array_transp(ipoint,j) * x_W_ki_bi_ortho_erf_rk_diag(ipoint,xi,j) - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, v_sum_in_r, (n_points_final_grid, 3)] - - implicit none - integer :: i, j, xi, ipoint - - ! TODO: call lapack - v_sum_in_r = 0.d0 - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - v_sum_in_r(ipoint,xi) += x_W_ki_bi_ortho_erf_rk(ipoint,xi,i,j) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,j,i) - enddo - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_W1_r_in_r, (n_points_final_grid, 3, mo_num)] - - implicit none - integer :: i, m, xi, ipoint - - ! TODO: call lapack - - W1_W1_r_in_r = 0.d0 - do i = 1, mo_num - do m = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_W1_r_in_r(ipoint,xi,i) += x_W_ki_bi_ortho_erf_rk(ipoint,xi,m,i) * W1_r_in_r(ipoint,xi,m) - enddo - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_W1_l_in_r, (n_points_final_grid, 3, mo_num)] - - implicit none - integer :: i, j, xi, ipoint - - ! TODO: call lapack - - W1_W1_l_in_r = 0.d0 - do i = 1, mo_num - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_W1_l_in_r(ipoint,xi,i) += x_W_ki_bi_ortho_erf_rk(ipoint,xi,i,j) * W1_l_in_r(ipoint,xi,j) - enddo - enddo - enddo - enddo - -END_PROVIDER - -! --- - -subroutine direct_term_imj_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j,m = 1, elec_beta_num) < a m j | i m j > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi - double precision :: weight, tmp - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - !integral += ( mos_l_in_r_array(a,ipoint) * mos_r_in_r_array(i,ipoint) * w_sum_in_r(ipoint,xi) * w_sum_in_r(ipoint,xi) & - ! + 2.d0 * tc_scf_dm_in_r(ipoint) * w_sum_in_r(ipoint,xi) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,a,i) ) * weight - - tmp = w_sum_in_r(ipoint,xi) - - integral += ( mos_l_in_r_array_transp(ipoint,a) * mos_r_in_r_array_transp(ipoint,i) * tmp * tmp & - + 2.d0 * tc_scf_dm_in_r(ipoint) * tmp * x_W_ki_bi_ortho_erf_rk(ipoint,xi,a,i) & - ) * weight - enddo - enddo - -end - -! --- - -subroutine exch_term_jmi_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j,m = 1, elec_beta_num) < a m j | j m i > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi, j - double precision :: weight, tmp - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - - tmp = 0.d0 - do j = 1, elec_beta_num - tmp = tmp + x_W_ki_bi_ortho_erf_rk(ipoint,xi,a,j) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,j,i) - enddo - - integral += ( mos_l_in_r_array_transp(ipoint,a) * W1_r_in_r(ipoint,xi,i) * w_sum_in_r(ipoint,xi) & - + tc_scf_dm_in_r(ipoint) * tmp & - + mos_r_in_r_array_transp(ipoint,i) * W1_l_in_r(ipoint,xi,a) * w_sum_in_r(ipoint,xi) & - ) * weight - - enddo - enddo - -end - -! --- - -subroutine exch_term_ijm_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j,m = 1, elec_beta_num) < a m j | i j m > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi - double precision :: weight - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - - integral += ( mos_l_in_r_array_transp(ipoint,a) * mos_r_in_r_array_transp(ipoint,i) * v_sum_in_r(ipoint,xi) & - + 2.d0 * x_W_ki_bi_ortho_erf_rk(ipoint,xi,a,i) * W1_in_r(ipoint,xi) & - ) * weight - - enddo - enddo - -end - -! --- - -subroutine direct_term_ijj_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j = 1, elec_beta_num) < a j j | i j j > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi - double precision :: weight - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - - integral += ( mos_l_in_r_array_transp(ipoint,a) * mos_r_in_r_array_transp(ipoint,i) * ww_sum_in_r(ipoint,xi) & - + 2.d0 * W1_diag_in_r(ipoint, xi) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,a,i) & - ) * weight - enddo - enddo - -end - -! --- - -subroutine cyclic_term_jim_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j,m = 1, elec_beta_num) < a m j | j i m > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi - double precision :: weight - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - - integral += ( mos_l_in_r_array_transp(ipoint,a) * W1_W1_r_in_r(ipoint,xi,i) & - + W1_W1_l_in_r(ipoint,xi,a) * mos_r_in_r_array_transp(ipoint,i) & - + W1_l_in_r(ipoint,xi,a) * W1_r_in_r(ipoint,xi,i) & - ) * weight - - enddo - enddo - -end - -! --- - -subroutine cyclic_term_mji_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j,m = 1, elec_beta_num) < a m j | m j i > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi - double precision :: weight - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - - integral += ( mos_l_in_r_array_transp(ipoint,a) * W1_W1_r_in_r(ipoint,xi,i) & - + W1_l_in_r(ipoint,xi,a) * W1_r_in_r(ipoint,xi,i) & - + W1_W1_l_in_r(ipoint,xi,a) * mos_r_in_r_array_transp(ipoint,i) & - ) * weight - - enddo - enddo - -end - -! --- - diff --git a/plugins/local/tc_scf/jast_schmos_90.irp.f b/plugins/local/tc_scf/jast_schmos_90.irp.f deleted file mode 100644 index 5c5e625f..00000000 --- a/plugins/local/tc_scf/jast_schmos_90.irp.f +++ /dev/null @@ -1,318 +0,0 @@ - BEGIN_PROVIDER [integer , m_max_sm_7] -&BEGIN_PROVIDER [integer , n_max_sm_7] -&BEGIN_PROVIDER [integer , o_max_sm_7] - implicit none - BEGIN_DOC -! maximum value of the "m", "n" and "o" integer in the Jastrow function as in Eq. (4) -! of Schmidt,Moskowitz, JCP, 93, 4172 (1990) for the SM_7 version of Table IV - END_DOC - m_max_sm_7 = 4 - n_max_sm_7 = 0 - o_max_sm_7 = 4 -END_PROVIDER - - BEGIN_PROVIDER [integer , m_max_sm_9] -&BEGIN_PROVIDER [integer , n_max_sm_9] -&BEGIN_PROVIDER [integer , o_max_sm_9] - implicit none - BEGIN_DOC -! maximum value of the "m", "n" and "o" integer in the Jastrow function as in Eq. (4) -! of Schmidt,Moskowitz, JCP, 93, 4172 (1990) for the SM_9 version of Table IV - END_DOC - m_max_sm_9 = 4 - n_max_sm_9 = 2 - o_max_sm_9 = 4 -END_PROVIDER - - - BEGIN_PROVIDER [integer , m_max_sm_17] -&BEGIN_PROVIDER [integer , n_max_sm_17] -&BEGIN_PROVIDER [integer , o_max_sm_17] - implicit none - BEGIN_DOC -! maximum value of the "m", "n" and "o" integer in the Jastrow function as in Eq. (4) -! of Schmidt,Moskowitz, JCP, 93, 4172 (1990) for the SM_17 version of Table IV - END_DOC - m_max_sm_17 = 6 - n_max_sm_17 = 2 - o_max_sm_17 = 6 -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, c_mn_o_sm_7, (0:m_max_sm_7,0:n_max_sm_7,0:o_max_sm_7,2:10)] - implicit none - BEGIN_DOC - ! - !c_mn_o_7(0:4,0:4,2:10) = coefficient for the SM_7 correlation factor as given is Table IV of - ! Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! the first index (0:4) is the "m" integer for the 1e part - ! the second index(0:0) is the "n" integer for the 1e part WHICH IS ALWAYS SET TO 0 FOR SM_7 - ! the third index (0:4) is the "o" integer for the 2e part - ! the fourth index (2:10) is the nuclear charge of the atom - END_DOC - c_mn_o_sm_7 = 0.d0 - integer :: i - do i = 2, 10 ! loop over nuclear charge - c_mn_o_sm_7(0,0,1,i) = 0.5d0 ! all the linear terms are set to 1/2 to satisfy the anti-parallel spin condition - enddo - ! He atom - ! two electron terms - c_mn_o_sm_7(0,0,2,2) = 0.50516d0 - c_mn_o_sm_7(0,0,3,2) = -0.19313d0 - c_mn_o_sm_7(0,0,4,2) = 0.30276d0 - ! one-electron terms - c_mn_o_sm_7(2,0,0,2) = -0.16995d0 - c_mn_o_sm_7(3,0,0,2) = -0.34505d0 - c_mn_o_sm_7(4,0,0,2) = -0.54777d0 - ! Ne atom - ! two electron terms - c_mn_o_sm_7(0,0,2,10) = -0.792d0 - c_mn_o_sm_7(0,0,3,10) = 1.05232d0 - c_mn_o_sm_7(0,0,4,10) = -0.65615d0 - ! one-electron terms - c_mn_o_sm_7(2,0,0,10) = -0.13312d0 - c_mn_o_sm_7(3,0,0,10) = -0.00131d0 - c_mn_o_sm_7(4,0,0,10) = 0.09083d0 - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, c_mn_o_sm_9, (0:m_max_sm_9,0:n_max_sm_9,0:o_max_sm_9,2:10)] - implicit none - BEGIN_DOC - ! - !c_mn_o_9(0:4,0:4,2:10) = coefficient for the SM_9 correlation factor as given is Table IV of - ! Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! the first index (0:4) is the "m" integer for the 1e part - ! the second index(0:0) is the "n" integer for the 1e part WHICH IS ALWAYS SET TO 0 FOR SM_9 - ! the third index (0:4) is the "o" integer for the 2e part - ! the fourth index (2:10) is the nuclear charge of the atom - END_DOC - c_mn_o_sm_9 = 0.d0 - integer :: i - do i = 2, 10 ! loop over nuclear charge - c_mn_o_sm_9(0,0,1,i) = 0.5d0 ! all the linear terms are set to 1/2 to satisfy the anti-parallel spin condition - enddo - ! He atom - ! two electron terms - c_mn_o_sm_9(0,0,2,2) = 0.50516d0 - c_mn_o_sm_9(0,0,3,2) = -0.19313d0 - c_mn_o_sm_9(0,0,4,2) = 0.30276d0 - ! one-electron terms - c_mn_o_sm_9(2,0,0,2) = -0.16995d0 - c_mn_o_sm_9(3,0,0,2) = -0.34505d0 - c_mn_o_sm_9(4,0,0,2) = -0.54777d0 - ! Ne atom - ! two electron terms - c_mn_o_sm_9(0,0,2,10) = -0.792d0 - c_mn_o_sm_9(0,0,3,10) = 1.05232d0 - c_mn_o_sm_9(0,0,4,10) = -0.65615d0 - ! one-electron terms - c_mn_o_sm_9(2,0,0,10) = -0.13312d0 - c_mn_o_sm_9(3,0,0,10) = -0.00131d0 - c_mn_o_sm_9(4,0,0,10) = 0.09083d0 - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, c_mn_o_sm_17, (0:m_max_sm_17,0:n_max_sm_17,0:o_max_sm_17,2:10)] - implicit none - BEGIN_DOC - ! - !c_mn_o_17(0:4,0:4,2:10) = coefficient for the SM_17 correlation factor as given is Table IV of - ! Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! the first index (0:4) is the "m" integer for the 1e part - ! the second index(0:0) is the "n" integer for the 1e part WHICH IS ALWAYS SET TO 0 FOR SM_17 - ! the third index (0:4) is the "o" integer for the 2e part - ! the fourth index (2:10) is the nuclear charge of the atom - END_DOC - c_mn_o_sm_17 = 0.d0 - integer :: i - do i = 2, 10 ! loop over nuclear charge - c_mn_o_sm_17(0,0,1,i) = 0.5d0 ! all the linear terms are set to 1/2 to satisfy the anti-parallel spin condition - enddo - ! He atom - ! two electron terms - c_mn_o_sm_17(0,0,2,2) = 0.09239d0 - c_mn_o_sm_17(0,0,3,2) = -0.38664d0 - c_mn_o_sm_17(0,0,4,2) = 0.95764d0 - ! one-electron terms - c_mn_o_sm_17(2,0,0,2) = 0.23208d0 - c_mn_o_sm_17(3,0,0,2) = -0.45032d0 - c_mn_o_sm_17(4,0,0,2) = 0.82777d0 - c_mn_o_sm_17(2,2,0,2) = -4.15388d0 - ! ee-n terms - c_mn_o_sm_17(2,0,2,2) = 0.80622d0 - c_mn_o_sm_17(2,2,2,2) = 10.19704d0 - c_mn_o_sm_17(4,0,2,2) = -4.96259d0 - c_mn_o_sm_17(2,0,4,2) = -1.35647d0 - c_mn_o_sm_17(4,2,2,2) = -5.90907d0 - c_mn_o_sm_17(6,0,2,2) = 0.90343d0 - c_mn_o_sm_17(4,0,4,2) = 5.50739d0 - c_mn_o_sm_17(2,2,4,2) = -0.03154d0 - c_mn_o_sm_17(2,0,6,2) = -1.1051860 - - - ! Ne atom - ! two electron terms - c_mn_o_sm_17(0,0,2,10) = -0.80909d0 - c_mn_o_sm_17(0,0,3,10) = -0.00219d0 - c_mn_o_sm_17(0,0,4,10) = 0.59188d0 - ! one-electron terms - c_mn_o_sm_17(2,0,0,10) = -0.00567d0 - c_mn_o_sm_17(3,0,0,10) = 0.14011d0 - c_mn_o_sm_17(4,0,0,10) = -0.05671d0 - c_mn_o_sm_17(2,2,0,10) = -3.33767d0 - ! ee-n terms - c_mn_o_sm_17(2,0,2,10) = 1.95067d0 - c_mn_o_sm_17(2,2,2,10) = 6.83340d0 - c_mn_o_sm_17(4,0,2,10) = -3.29231d0 - c_mn_o_sm_17(2,0,4,10) = -2.44998d0 - c_mn_o_sm_17(4,2,2,10) = -2.13029d0 - c_mn_o_sm_17(6,0,2,10) = 2.25768d0 - c_mn_o_sm_17(4,0,4,10) = 1.97951d0 - c_mn_o_sm_17(2,2,4,10) = -2.0924160 - c_mn_o_sm_17(2,0,6,10) = 0.35493d0 - -END_PROVIDER - - BEGIN_PROVIDER [ double precision, b_I_sm_90,(2:10)] -&BEGIN_PROVIDER [ double precision, d_I_sm_90,(2:10)] - implicit none - BEGIN_DOC -! "b_I" and "d_I" parameters of Eqs. (4) and (5) of Schmidt,Moskowitz, JCP, 93, 4172 (1990) - END_DOC - b_I_sm_90 = 1.d0 - d_I_sm_90 = 1.d0 - -END_PROVIDER - -subroutine get_full_sm_90_jastrow(r1,r2,rI,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - implicit none - double precision, intent(in) :: r1(3),r2(3),rI(3) - integer, intent(in) :: sm_j, i_charge - double precision, intent(out):: j_1e,j_2e,j_een,j_tot - BEGIN_DOC - ! Jastrow function as in Eq. (4) of Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! the i_charge variable is the integer specifying the charge of the atom for the Jastrow - ! the sm_j integer variable represents the "quality" of the jastrow : sm_j = 7, 9, 17 - END_DOC - double precision :: r_inucl,r_jnucl,r_ij,b_I, d_I - b_I = b_I_sm_90(i_charge) - d_I = d_I_sm_90(i_charge) - call get_rescaled_variables_j_sm_90(r1,r2,rI,b_I,d_I,r_inucl,r_jnucl,r_ij) - call jastrow_func_sm_90(r_inucl,r_jnucl,r_ij,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) -end - -subroutine get_rescaled_variables_j_sm_90(r1,r2,rI,b_I,d_I,r_inucl,r_jnucl,r_ij) - implicit none - BEGIN_DOC - ! rescaled variables of Eq. (5) and (6) of Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! the "b_I" and "d_I" parameters are the same as in Eqs. (5) and (6) - END_DOC - double precision, intent(in) :: r1(3),r2(3),rI(3) - double precision, intent(in) :: b_I, d_I - double precision, intent(out):: r_inucl,r_jnucl,r_ij - double precision :: rin, rjn, rij - integer :: i - rin = 0.d0 - rjn = 0.d0 - rij = 0.d0 - do i = 1,3 - rin += (r1(i) - rI(i)) * (r1(i) - rI(i)) - rjn += (r2(i) - rI(i)) * (r2(i) - rI(i)) - rij += (r2(i) - r1(i)) * (r2(i) - r1(i)) - enddo - rin = dsqrt(rin) - rjn = dsqrt(rjn) - rij = dsqrt(rij) - r_inucl = b_I * rin/(1.d0 + b_I * rin) - r_jnucl = b_I * rjn/(1.d0 + b_I * rjn) - r_ij = d_I * rij/(1.d0 + b_I * rij) -end - -subroutine jastrow_func_sm_90(r_inucl,r_jnucl,r_ij,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - implicit none - BEGIN_DOC - ! Jastrow function as in Eq. (4) of Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! Here the r_inucl, r_jnucl are the rescaled variables as defined in Eq. (5) with "b_I" - ! r_ij is the rescaled variable as defined in Eq. (6) with "d_I" - ! the i_charge variable is the integer specifying the charge of the atom for the Jastrow - ! the sm_j integer variable represents the "quality" of the jastrow : sm_j = 7, 9, 17 - ! - ! it returns the j_1e : sum of terms with "o" = "n" = 0, "m" /= 0, - ! j_2e : sum of terms with "m" = "n" = 0, "o" /= 0, - ! j_een : sum of terms with "m" /=0, "n" /= 0, "o" /= 0, - ! j_tot : the total sum - END_DOC - double precision, intent(in) :: r_inucl,r_jnucl,r_ij - integer, intent(in) :: sm_j,i_charge - double precision, intent(out):: j_1e,j_2e,j_een,j_tot - j_1e = 0.D0 - j_2e = 0.D0 - j_een = 0.D0 - double precision :: delta_mn,jastrow_sm_90_atomic - integer :: m,n,o -BEGIN_TEMPLATE - ! pure 2e part - n = 0 - m = 0 - if(sm_j == $X )then - do o = 1, o_max_sm_$X - if(dabs(c_mn_o_sm_$X(m,n,o,i_charge)).lt.1.d-10)cycle - j_2e += c_mn_o_sm_$X(m,n,o,i_charge) * jastrow_sm_90_atomic(m,n,o,i_charge,r_inucl,r_jnucl,r_ij) - enddo -! else -! print*,'sm_j = ',sm_j -! print*,'not implemented, stop' -! stop - endif - ! pure one-e part - o = 0 - if(sm_j == $X)then - do n = 2, n_max_sm_$X - do m = 2, m_max_sm_$X - j_1e += c_mn_o_sm_$X(m,n,o,i_charge) * jastrow_sm_90_atomic(m,n,o,i_charge,r_inucl,r_jnucl,r_ij) - enddo - enddo -! else -! print*,'sm_j = ',sm_j -! print*,'not implemented, stop' -! stop - endif - ! e-e-n part - if(sm_j == $X)then - do o = 1, o_max_sm_$X - do m = 2, m_max_sm_$X - do n = 2, n_max_sm_$X - j_een += c_mn_o_sm_$X(m,n,o,i_charge) * jastrow_sm_90_atomic(m,n,o,i_charge,r_inucl,r_jnucl,r_ij) - enddo - enddo - enddo - else -! print*,'sm_j = ',sm_j -! print*,'not implemented, stop' -! stop - endif - j_tot = j_1e + j_2e + j_een -SUBST [ X] - 7 ;; - 9 ;; - 17 ;; -END_TEMPLATE -end - -double precision function jastrow_sm_90_atomic(m,n,o,i_charge,r_inucl,r_jnucl,r_ij) - implicit none - BEGIN_DOC -! contribution to the function of Eq. (4) of Schmidt,Moskowitz, JCP, 93, 4172 (1990) -! for a given m,n,o and atom - END_DOC - double precision, intent(in) :: r_inucl,r_jnucl,r_ij - integer , intent(in) :: m,n,o,i_charge - double precision :: delta_mn - if(m==n)then - delta_mn = 0.5d0 - else - delta_mn = 1.D0 - endif - jastrow_sm_90_atomic = delta_mn * (r_inucl**m * r_jnucl**n + r_jnucl**m * r_inucl**n)*r_ij**o -end diff --git a/plugins/local/tc_scf/plot_j_schMos.irp.f b/plugins/local/tc_scf/plot_j_schMos.irp.f deleted file mode 100644 index eda0dd25..00000000 --- a/plugins/local/tc_scf/plot_j_schMos.irp.f +++ /dev/null @@ -1,69 +0,0 @@ -program plot_j - implicit none - double precision :: r1(3),rI(3),r2(3) - double precision :: r12,dx,xmax, j_1e,j_2e,j_een,j_tot - double precision :: j_mu_F_x_j - integer :: i,nx,m,i_charge,sm_j - - character*(128) :: output - integer :: i_unit_output_He_sm_7,i_unit_output_Ne_sm_7 - integer :: i_unit_output_He_sm_17,i_unit_output_Ne_sm_17 - integer :: getUnitAndOpen - output='J_SM_7_He' - i_unit_output_He_sm_7 = getUnitAndOpen(output,'w') - output='J_SM_7_Ne' - i_unit_output_Ne_sm_7 = getUnitAndOpen(output,'w') - - output='J_SM_17_He' - i_unit_output_He_sm_17 = getUnitAndOpen(output,'w') - output='J_SM_17_Ne' - i_unit_output_Ne_sm_17 = getUnitAndOpen(output,'w') - - rI = 0.d0 - r1 = 0.d0 - r2 = 0.d0 - r1(1) = 1.5d0 - xmax = 20.d0 - r2(1) = -xmax*0.5d0 - nx = 1000 - dx = xmax/dble(nx) - do i = 1, nx - r12 = 0.d0 - do m = 1, 3 - r12 += (r1(m) - r2(m))*(r1(m) - r2(m)) - enddo - r12 = dsqrt(r12) - double precision :: jmu,env_nucl,jmu_env,jmu_scaled, jmu_scaled_env - double precision :: b_I,d_I,r_inucl,r_jnucl,r_ij - b_I = 1.D0 - d_I = 1.D0 - call get_rescaled_variables_j_sm_90(r1,r2,rI,b_I,d_I,r_inucl,r_jnucl,r_ij) - jmu=j_mu_F_x_j(r12) - jmu_scaled=j_mu_F_x_j(r_ij) - jmu_env = jmu * env_nucl(r1) * env_nucl(r2) -! jmu_scaled_env= jmu_scaled * (1.d0 - env_coef(1) * dexp(-env_expo(1)*r_inucl**2)) * (1.d0 - env_coef(1) * dexp(-env_expo(1)*r_jnucl**2)) - jmu_scaled_env= jmu_scaled * env_nucl(r1) * env_nucl(r2) - ! He - i_charge = 2 - ! SM 7 Jastrow - sm_j = 7 - call get_full_sm_90_jastrow(r1,r2,rI,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - write(i_unit_output_He_sm_7,'(100(F16.10,X))')r2(1),r12,j_mu_F_x_j(r12), j_1e,j_2e,j_een,j_tot,jmu_env,jmu_scaled,jmu_scaled_env - ! SM 17 Jastrow - sm_j = 17 - call get_full_sm_90_jastrow(r1,r2,rI,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - write(i_unit_output_He_sm_17,'(100(F16.10,X))')r2(1),r12,j_mu_F_x_j(r12), j_1e,j_2e,j_een,j_tot,jmu_env,jmu_scaled,jmu_scaled_env - ! Ne - i_charge = 10 - ! SM 7 Jastrow - sm_j = 7 - call get_full_sm_90_jastrow(r1,r2,rI,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - write(i_unit_output_Ne_sm_7,'(100(F16.10,X))')r2(1),r12,j_mu_F_x_j(r12), j_1e,j_2e,j_een,j_tot,jmu_env,jmu_scaled,jmu_scaled_env - ! SM 17 Jastrow - sm_j = 17 - call get_full_sm_90_jastrow(r1,r2,rI,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - write(i_unit_output_Ne_sm_17,'(100(F16.10,X))')r2(1),r12,j_mu_F_x_j(r12), j_1e,j_2e,j_een,j_tot,jmu_env,jmu_scaled,jmu_scaled_env - r2(1) += dx - enddo - -end diff --git a/plugins/local/tc_scf/print_fit_param.irp.f b/plugins/local/tc_scf/print_fit_param.irp.f deleted file mode 100644 index e62f0dde..00000000 --- a/plugins/local/tc_scf/print_fit_param.irp.f +++ /dev/null @@ -1,59 +0,0 @@ -program print_fit_param - - BEGIN_DOC -! TODO : Put the documentation of the program here - END_DOC - - implicit none - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - !call create_guess - !call orthonormalize_mos - - call main() - -end - -! --- - -subroutine main() - - implicit none - integer :: i - - mu_erf = 1.d0 - touch mu_erf - - print *, ' fit for (1 - erf(x))^2' - do i = 1, n_max_fit_slat - print*, expo_gauss_1_erf_x_2(i), coef_gauss_1_erf_x_2(i) - enddo - - print *, '' - print *, ' fit for [x * (1 - erf(x)) - 1/sqrt(pi) * exp(-x**2)]' - do i = 1, n_max_fit_slat - print *, expo_gauss_j_mu_x(i), 2.d0 * coef_gauss_j_mu_x(i) - enddo - - print *, '' - print *, ' fit for [x * (1 - erf(x)) - 1/sqrt(pi) * exp(-x**2)]^2' - do i = 1, n_max_fit_slat - print *, expo_gauss_j_mu_x_2(i), 4.d0 * coef_gauss_j_mu_x_2(i) - enddo - - print *, '' - print *, ' fit for [x * (1 - erf(x)) - 1/sqrt(pi) * exp(-x**2)] x [1 - erf(mu * r12)]' - do i = 1, n_max_fit_slat - print *, expo_gauss_j_mu_1_erf(i), 4.d0 * coef_gauss_j_mu_1_erf(i) - enddo - - return -end subroutine main - -! --- - diff --git a/plugins/local/tc_scf/print_tcscf_energy.irp.f b/plugins/local/tc_scf/print_tcscf_energy.irp.f deleted file mode 100644 index 6f9afd9a..00000000 --- a/plugins/local/tc_scf/print_tcscf_energy.irp.f +++ /dev/null @@ -1,55 +0,0 @@ -program print_tcscf_energy - - BEGIN_DOC - ! TODO : Put the documentation of the program here - END_DOC - - implicit none - - print *, 'Hello world' - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - call main() - -end - -! --- - -subroutine main() - - implicit none - double precision :: etc_tot, etc_1e, etc_2e, etc_3e - - PROVIDE j2e_type mu_erf - PROVIDE j1e_type j1e_coef j1e_expo - PROVIDE env_type env_coef env_expo - - print*, ' j2e_type = ', j2e_type - print*, ' j1e_type = ', j1e_type - print*, ' env_type = ', env_type - - print*, ' mu_erf = ', mu_erf - - etc_tot = TC_HF_energy - etc_1e = TC_HF_one_e_energy - etc_2e = TC_HF_two_e_energy - etc_3e = 0.d0 - if(three_body_h_tc) then - !etc_3e = diag_three_elem_hf - etc_3e = tcscf_energy_3e_naive - endif - - print *, " E_TC = ", etc_tot - print *, " E_1e = ", etc_1e - print *, " E_2e = ", etc_2e - print *, " E_3e = ", etc_3e - - return -end subroutine main - -! --- - diff --git a/plugins/local/tc_scf/rh_tcscf_simple.irp.f b/plugins/local/tc_scf/rh_tcscf_simple.irp.f deleted file mode 100644 index 2c2cf2c2..00000000 --- a/plugins/local/tc_scf/rh_tcscf_simple.irp.f +++ /dev/null @@ -1,129 +0,0 @@ -! --- - -subroutine rh_tcscf_simple() - - implicit none - integer :: i, j, it, dim_DIIS - double precision :: t0, t1 - double precision :: e_save, e_delta, rho_delta - double precision :: etc_tot, etc_1e, etc_2e, etc_3e, tc_grad - double precision :: er_DIIS - double precision, allocatable :: rho_old(:,:), rho_new(:,:) - - allocate(rho_old(ao_num,ao_num), rho_new(ao_num,ao_num)) - - it = 0 - e_save = 0.d0 - dim_DIIS = 0 - - ! --- - - if(.not. bi_ortho) then - print *, ' grad_hermit = ', grad_hermit - call save_good_hermit_tc_eigvectors - TOUCH mo_coef - call save_mos - endif - - ! --- - - if(bi_ortho) then - - PROVIDE level_shift_tcscf - PROVIDE mo_l_coef mo_r_coef - - write(6, '(A4,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A4, 1X, A8)') & - '====', '================', '================', '================', '================', '================' & - , '================', '================', '================', '====', '========' - - write(6, '(A4,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A4, 1X, A8)') & - ' it ', ' SCF TC Energy ', ' E(1e) ', ' E(2e) ', ' E(3e) ', ' energy diff ' & - , ' gradient ', ' DIIS error ', ' level shift ', 'DIIS', ' WT (m)' - - write(6, '(A4,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A4, 1X, A8)') & - '====', '================', '================', '================', '================', '================' & - , '================', '================', '================', '====', '========' - - - ! first iteration (HF orbitals) - call wall_time(t0) - - etc_tot = TC_HF_energy - etc_1e = TC_HF_one_e_energy - etc_2e = TC_HF_two_e_energy - etc_3e = 0.d0 - if(three_body_h_tc) then - etc_3e = diag_three_elem_hf - endif - tc_grad = grad_non_hermit - er_DIIS = maxval(abs(FQS_SQF_mo)) - e_delta = dabs(etc_tot - e_save) - e_save = etc_tot - - call wall_time(t1) - write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') & - it, etc_tot, etc_1e, etc_2e, etc_3e, e_delta, tc_grad, er_DIIS, level_shift_tcscf, dim_DIIS, (t1-t0)/60.d0 - - do while(tc_grad .gt. dsqrt(thresh_tcscf)) - call wall_time(t0) - - it += 1 - if(it > n_it_tcscf_max) then - print *, ' max of TCSCF iterations is reached ', n_it_TCSCF_max - stop - endif - - mo_l_coef = fock_tc_leigvec_ao - mo_r_coef = fock_tc_reigvec_ao - call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef) - call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef) - TOUCH mo_l_coef mo_r_coef - - etc_tot = TC_HF_energy - etc_1e = TC_HF_one_e_energy - etc_2e = TC_HF_two_e_energy - etc_3e = 0.d0 - if(three_body_h_tc) then - etc_3e = diag_three_elem_hf - endif - tc_grad = grad_non_hermit - er_DIIS = maxval(abs(FQS_SQF_mo)) - e_delta = dabs(etc_tot - e_save) - e_save = etc_tot - - call ezfio_set_tc_scf_tcscf_energy(etc_tot) - - call wall_time(t1) - write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') & - it, etc_tot, etc_1e, etc_2e, etc_3e, e_delta, tc_grad, er_DIIS, level_shift_tcscf, dim_DIIS, (t1-t0)/60.d0 - enddo - - else - - do while( (grad_hermit.gt.dsqrt(thresh_tcscf)) .and. (it.lt.n_it_tcscf_max) ) - print*,'grad_hermit = ',grad_hermit - it += 1 - print *, 'iteration = ', it - print *, '***' - print *, 'TC HF total energy = ', TC_HF_energy - print *, 'TC HF 1 e energy = ', TC_HF_one_e_energy - print *, 'TC HF 2 e energy = ', TC_HF_two_e_energy - print *, 'TC HF 3 body = ', diag_three_elem_hf - print *, '***' - print *, '' - call save_good_hermit_tc_eigvectors - TOUCH mo_coef - call save_mos - enddo - - endif - - print *, ' TCSCF Simple converged !' - !call print_energy_and_mos(good_angles) - - deallocate(rho_old, rho_new) - -end - -! --- - diff --git a/plugins/local/tc_scf/rotate_tcscf_orbitals.irp.f b/plugins/local/tc_scf/rotate_tcscf_orbitals.irp.f deleted file mode 100644 index 0f2663e5..00000000 --- a/plugins/local/tc_scf/rotate_tcscf_orbitals.irp.f +++ /dev/null @@ -1,369 +0,0 @@ - -! --- - -program rotate_tcscf_orbitals - - BEGIN_DOC - ! TODO : Rotate the bi-orthonormal orbitals in order to minimize left-right angles when degenerate - END_DOC - - implicit none - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - bi_ortho = .True. - touch bi_ortho - - call minimize_tc_orb_angles() - !call maximize_overlap() - -end - -! --- - -subroutine maximize_overlap() - - implicit none - integer :: i, m, n - double precision :: accu_d, accu_nd - double precision, allocatable :: C(:,:), R(:,:), L(:,:), W(:,:), e(:) - double precision, allocatable :: S(:,:) - - n = ao_num - m = mo_num - - allocate(L(n,m), R(n,m), C(n,m), W(n,n), e(m)) - L = mo_l_coef - R = mo_r_coef - C = mo_coef - W = ao_overlap - - print*, ' fock matrix diag elements' - do i = 1, m - e(i) = Fock_matrix_tc_mo_tot(i,i) - print*, e(i) - enddo - - ! --- - - print *, ' overlap before :' - print *, ' ' - - allocate(S(m,m)) - - call LTxSxR(n, m, L, W, R, S) - !print*, " L.T x R" - !do i = 1, m - ! write(*, '(100(F16.10,X))') S(i,i) - !enddo - call LTxSxR(n, m, L, W, C, S) - print*, " L.T x C" - do i = 1, m - write(*, '(100(F16.10,X))') S(i,:) - enddo - call LTxSxR(n, m, C, W, R, S) - print*, " C.T x R" - do i = 1, m - write(*, '(100(F16.10,X))') S(i,:) - enddo - - deallocate(S) - - ! --- - - call rotate_degen_eigvec_to_maximize_overlap(n, m, e, C, W, L, R) - - ! --- - - print *, ' overlap after :' - print *, ' ' - - allocate(S(m,m)) - - call LTxSxR(n, m, L, W, R, S) - !print*, " L.T x R" - !do i = 1, m - ! write(*, '(100(F16.10,X))') S(i,i) - !enddo - call LTxSxR(n, m, L, W, C, S) - print*, " L.T x C" - do i = 1, m - write(*, '(100(F16.10,X))') S(i,:) - enddo - call LTxSxR(n, m, C, W, R, S) - print*, " C.T x R" - do i = 1, m - write(*, '(100(F16.10,X))') S(i,:) - enddo - - deallocate(S) - - ! --- - - mo_l_coef = L - mo_r_coef = R - call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef) - call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef) - - ! --- - - deallocate(L, R, C, W, e) - -end subroutine maximize_overlap - -! --- - -subroutine rotate_degen_eigvec_to_maximize_overlap(n, m, e0, C0, W0, L0, R0) - - implicit none - - integer, intent(in) :: n, m - double precision, intent(in) :: e0(m), W0(n,n), C0(n,m) - double precision, intent(inout) :: L0(n,m), R0(n,m) - - - integer :: i, j, k, kk, mm, id1, tot_deg - double precision :: ei, ej, de, de_thr - integer, allocatable :: deg_num(:) - double precision, allocatable :: L(:,:), R(:,:), C(:,:), Lnew(:,:), Rnew(:,:), tmp(:,:) - !double precision, allocatable :: S(:,:), Snew(:,:), T(:,:), Ttmp(:,:), Stmp(:,:) - double precision, allocatable :: S(:,:), Snew(:,:), T(:,:), Ttmp(:,:), Stmp(:,:) - !real*8 :: S(m,m), Snew(m,m), T(m,m) - - id1 = 700 - allocate(S(id1,id1), Snew(id1,id1), T(id1,id1)) - - ! --- - - allocate( deg_num(m) ) - do i = 1, m - deg_num(i) = 1 - enddo - - de_thr = thr_degen_tc - - do i = 1, m-1 - ei = e0(i) - - ! already considered in degen vectors - if(deg_num(i).eq.0) cycle - - do j = i+1, m - ej = e0(j) - de = dabs(ei - ej) - - if(de .lt. de_thr) then - deg_num(i) = deg_num(i) + 1 - deg_num(j) = 0 - endif - - enddo - enddo - - tot_deg = 0 - do i = 1, m - if(deg_num(i).gt.1) then - print *, ' degen on', i, deg_num(i) - tot_deg = tot_deg + 1 - endif - enddo - - if(tot_deg .eq. 0) then - print *, ' no degen' - return - endif - - ! --- - - do i = 1, m - mm = deg_num(i) - - if(mm .gt. 1) then - - allocate(L(n,mm), R(n,mm), C(n,mm)) - do j = 1, mm - L(1:n,j) = L0(1:n,i+j-1) - R(1:n,j) = R0(1:n,i+j-1) - C(1:n,j) = C0(1:n,i+j-1) - enddo - - ! --- - - ! C.T x W0 x R - allocate(tmp(mm,n), Stmp(mm,mm)) - call dgemm( 'T', 'N', mm, n, n, 1.d0 & - , C, size(C, 1), W0, size(W0, 1) & - , 0.d0, tmp, size(tmp, 1) ) - call dgemm( 'N', 'N', mm, mm, n, 1.d0 & - , tmp, size(tmp, 1), R, size(R, 1) & - , 0.d0, Stmp, size(Stmp, 1) ) - deallocate(C, tmp) - - S = 0.d0 - do k = 1, mm - do kk = 1, mm - S(kk,k) = Stmp(kk,k) - enddo - enddo - deallocate(Stmp) - - !print*, " overlap bef" - !do k = 1, mm - ! write(*, '(100(F16.10,X))') (S(k,kk), kk=1, mm) - !enddo - - T = 0.d0 - Snew = 0.d0 - call maxovl(mm, mm, S, T, Snew) - - !print*, " overlap aft" - !do k = 1, mm - ! write(*, '(100(F16.10,X))') (Snew(k,kk), kk=1, mm) - !enddo - - allocate(Ttmp(mm,mm)) - Ttmp(1:mm,1:mm) = T(1:mm,1:mm) - - allocate(Lnew(n,mm), Rnew(n,mm)) - call dgemm( 'N', 'N', n, mm, mm, 1.d0 & - , R, size(R, 1), Ttmp(1,1), size(Ttmp, 1) & - , 0.d0, Rnew, size(Rnew, 1) ) - call dgemm( 'N', 'N', n, mm, mm, 1.d0 & - , L, size(L, 1), Ttmp(1,1), size(Ttmp, 1) & - , 0.d0, Lnew, size(Lnew, 1) ) - - deallocate(L, R) - deallocate(Ttmp) - - ! --- - - do j = 1, mm - L0(1:n,i+j-1) = Lnew(1:n,j) - R0(1:n,i+j-1) = Rnew(1:n,j) - enddo - deallocate(Lnew, Rnew) - - endif - enddo - - deallocate(S, Snew, T) - -end subroutine rotate_degen_eigvec_to_maximize_overlap - -! --- - -subroutine fix_right_to_one() - - implicit none - integer :: i, j, m, n, mm, tot_deg - double precision :: accu_d, accu_nd - double precision :: de_thr, ei, ej, de - integer, allocatable :: deg_num(:) - double precision, allocatable :: R0(:,:), L0(:,:), W(:,:), e0(:) - double precision, allocatable :: R(:,:), L(:,:), S(:,:), Stmp(:,:), tmp(:,:) - - n = ao_num - m = mo_num - - allocate(L0(n,m), R0(n,m), W(n,n), e0(m)) - L0 = mo_l_coef - R0 = mo_r_coef - W = ao_overlap - - print*, ' fock matrix diag elements' - do i = 1, m - e0(i) = Fock_matrix_tc_mo_tot(i,i) - print*, e0(i) - enddo - - ! --- - - allocate( deg_num(m) ) - do i = 1, m - deg_num(i) = 1 - enddo - - de_thr = 1d-6 - - do i = 1, m-1 - ei = e0(i) - - ! already considered in degen vectors - if(deg_num(i).eq.0) cycle - - do j = i+1, m - ej = e0(j) - de = dabs(ei - ej) - - if(de .lt. de_thr) then - deg_num(i) = deg_num(i) + 1 - deg_num(j) = 0 - endif - - enddo - enddo - - deallocate(e0) - - tot_deg = 0 - do i = 1, m - if(deg_num(i).gt.1) then - print *, ' degen on', i, deg_num(i) - tot_deg = tot_deg + 1 - endif - enddo - - if(tot_deg .eq. 0) then - print *, ' no degen' - return - endif - - ! --- - - do i = 1, m - mm = deg_num(i) - - if(mm .gt. 1) then - - allocate(L(n,mm), R(n,mm)) - do j = 1, mm - L(1:n,j) = L0(1:n,i+j-1) - R(1:n,j) = R0(1:n,i+j-1) - enddo - - ! --- - - call impose_weighted_orthog_svd(n, mm, W, R) - call impose_weighted_biorthog_qr(n, mm, thresh_biorthog_diag, thresh_biorthog_nondiag, R, W, L) - - ! --- - - do j = 1, mm - L0(1:n,i+j-1) = L(1:n,j) - R0(1:n,i+j-1) = R(1:n,j) - enddo - deallocate(L, R) - - endif - enddo - - call check_weighted_biorthog_binormalize(n, m, L0, W, R0, thresh_biorthog_diag, thresh_biorthog_nondiag, .true.) - - deallocate(W, deg_num) - - mo_l_coef = L0 - mo_r_coef = R0 - deallocate(L0, R0) - - call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef) - call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef) - print *, ' orbitals are rotated ' - - return -end subroutine fix_right_to_one - -! --- diff --git a/plugins/local/tc_scf/tc_petermann_factor.irp.f b/plugins/local/tc_scf/tc_petermann_factor.irp.f deleted file mode 100644 index 14fff898..00000000 --- a/plugins/local/tc_scf/tc_petermann_factor.irp.f +++ /dev/null @@ -1,91 +0,0 @@ - -! --- - -program tc_petermann_factor - - BEGIN_DOC - ! TODO : Put the documentation of the program here - END_DOC - - implicit none - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - call main() - -end - -! --- - -subroutine main() - - implicit none - integer :: i, j - double precision :: Pf_diag_av - double precision, allocatable :: Sl(:,:), Sr(:,:), Pf(:,:) - - allocate(Sl(mo_num,mo_num), Sr(mo_num,mo_num), Pf(mo_num,mo_num)) - - - call LTxSxR(ao_num, mo_num, mo_l_coef, ao_overlap, mo_r_coef, Sl) - !call dgemm( "T", "N", mo_num, mo_num, ao_num, 1.d0 & - ! , mo_l_coef, size(mo_l_coef, 1), mo_l_coef, size(mo_l_coef, 1) & - ! , 0.d0, Sl, size(Sl, 1) ) - - print *, '' - print *, ' left-right orthog matrix:' - do i = 1, mo_num - write(*,'(100(F8.4,X))') Sl(:,i) - enddo - - call LTxSxR(ao_num, mo_num, mo_l_coef, ao_overlap, mo_l_coef, Sl) - !call dgemm( "T", "N", mo_num, mo_num, ao_num, 1.d0 & - ! , mo_l_coef, size(mo_l_coef, 1), mo_l_coef, size(mo_l_coef, 1) & - ! , 0.d0, Sl, size(Sl, 1) ) - - print *, '' - print *, ' left-orthog matrix:' - do i = 1, mo_num - write(*,'(100(F8.4,X))') Sl(:,i) - enddo - - call LTxSxR(ao_num, mo_num, mo_r_coef, ao_overlap, mo_r_coef, Sr) -! call dgemm( "T", "N", mo_num, mo_num, ao_num, 1.d0 & -! , mo_r_coef, size(mo_r_coef, 1), mo_r_coef, size(mo_r_coef, 1) & -! , 0.d0, Sr, size(Sr, 1) ) - - print *, '' - print *, ' right-orthog matrix:' - do i = 1, mo_num - write(*,'(100(F8.4,X))') Sr(:,i) - enddo - - print *, '' - print *, ' Petermann matrix:' - do i = 1, mo_num - do j = 1, mo_num - Pf(j,i) = Sl(j,i) * Sr(j,i) - enddo - write(*,'(100(F8.4,X))') Pf(:,i) - enddo - - Pf_diag_av = 0.d0 - do i = 1, mo_num - Pf_diag_av = Pf_diag_av + Pf(i,i) - enddo - Pf_diag_av = Pf_diag_av / dble(mo_num) - - print *, '' - print *, ' mean of the diagonal Petermann factor = ', Pf_diag_av - - deallocate(Sl, Sr, Pf) - - return -end subroutine - -! --- - diff --git a/plugins/local/tc_scf/tc_scf.irp.f b/plugins/local/tc_scf/tc_scf.irp.f index ee8e8dad..f099b90e 100644 --- a/plugins/local/tc_scf/tc_scf.irp.f +++ b/plugins/local/tc_scf/tc_scf.irp.f @@ -10,13 +10,10 @@ program tc_scf integer :: i logical :: good_angles - PROVIDE j1e_type - PROVIDE j2e_type - PROVIDE tcscf_algorithm - print *, ' TC-SCF with:' - print *, ' j1e_type = ', j1e_type print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type write(json_unit,json_array_open_fmt) 'tc-scf' @@ -29,7 +26,6 @@ program tc_scf call write_int(6, my_n_pt_r_grid, 'radial external grid over') call write_int(6, my_n_pt_a_grid, 'angular external grid over') - if(tc_integ_type .eq. "numeric") then my_extra_grid_becke = .True. PROVIDE tc_grid2_a tc_grid2_r @@ -41,17 +37,7 @@ program tc_scf call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') endif - !call create_guess() - !call orthonormalize_mos() - - if(tcscf_algorithm == 'DIIS') then - call rh_tcscf_diis() - elseif(tcscf_algorithm == 'Simple') then - call rh_tcscf_simple() - else - print *, ' not implemented yet', tcscf_algorithm - stop - endif + call rh_tcscf_diis() PROVIDE Fock_matrix_tc_diag_mo_tot print*, ' Eigenvalues:' @@ -59,14 +45,11 @@ program tc_scf print*, i, Fock_matrix_tc_diag_mo_tot(i) enddo - ! TODO - ! rotate angles in separate code only if necessary - if(minimize_lr_angles)then + if(minimize_lr_angles) then call minimize_tc_orb_angles() endif call print_energy_and_mos(good_angles) - write(json_unit,json_array_close_fmtx) call json_close diff --git a/plugins/local/tc_scf/tc_scf_dm.irp.f b/plugins/local/tc_scf/tc_scf_dm.irp.f index bf31a4a1..5d25fce2 100644 --- a/plugins/local/tc_scf/tc_scf_dm.irp.f +++ b/plugins/local/tc_scf/tc_scf_dm.irp.f @@ -10,16 +10,8 @@ BEGIN_PROVIDER [double precision, TCSCF_density_matrix_ao_beta, (ao_num, ao_num) implicit none - if(bi_ortho) then - - PROVIDE mo_l_coef mo_r_coef - TCSCF_density_matrix_ao_beta = TCSCF_bi_ort_dm_ao_beta - - else - - TCSCF_density_matrix_ao_beta = SCF_density_matrix_ao_beta - - endif + PROVIDE mo_l_coef mo_r_coef + TCSCF_density_matrix_ao_beta = TCSCF_bi_ort_dm_ao_beta END_PROVIDER @@ -35,16 +27,8 @@ BEGIN_PROVIDER [double precision, TCSCF_density_matrix_ao_alpha, (ao_num, ao_num implicit none - if(bi_ortho) then - - PROVIDE mo_l_coef mo_r_coef - TCSCF_density_matrix_ao_alpha = TCSCF_bi_ort_dm_ao_alpha - - else - - TCSCF_density_matrix_ao_alpha = SCF_density_matrix_ao_alpha - - endif + PROVIDE mo_l_coef mo_r_coef + TCSCF_density_matrix_ao_alpha = TCSCF_bi_ort_dm_ao_alpha END_PROVIDER diff --git a/plugins/local/tc_scf/tc_scf_energy.irp.f b/plugins/local/tc_scf/tc_scf_energy.irp.f index 0266c605..c9366195 100644 --- a/plugins/local/tc_scf/tc_scf_energy.irp.f +++ b/plugins/local/tc_scf/tc_scf_energy.irp.f @@ -34,3 +34,426 @@ END_PROVIDER ! --- +BEGIN_PROVIDER [double precision, diag_three_elem_hf] + + BEGIN_DOC + ! + ! < Phi_left | L | Phi_right > + ! + ! + ! if three_body_h_tc == false and noL_standard == true ==> do a normal ordering + ! + ! todo + ! this should be equivalent to + ! three_body_h_tc == true and noL_standard == false + ! + ! if three_body_h_tc == false and noL_standard == false ==> this is equal to 0 + ! + END_DOC + + implicit none + integer :: i, j, k, ipoint, mm + double precision :: contrib, weight, four_third, one_third, two_third, exchange_int_231 + double precision :: integral_aaa, hthree, integral_aab, integral_abb, integral_bbb + double precision, allocatable :: tmp(:) + double precision, allocatable :: tmp_L(:,:), tmp_R(:,:) + double precision, allocatable :: tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) + double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) + + PROVIDE mo_l_coef mo_r_coef + + if(.not. three_body_h_tc) then + + if(noL_standard) then + PROVIDE noL_0e + diag_three_elem_hf = noL_0e + else + diag_three_elem_hf = 0.d0 + endif + + else + + PROVIDE int2_grad1_u12_bimo_t + PROVIDE mos_l_in_r_array_transp + PROVIDE mos_r_in_r_array_transp + + if(elec_alpha_num .eq. elec_beta_num) then + + allocate(tmp(elec_beta_num)) + allocate(tmp_L(n_points_final_grid,3), tmp_R(n_points_final_grid,3)) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & + !$OMP SHARED(elec_beta_num, n_points_final_grid, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) + + !$OMP DO + do j = 1, elec_beta_num + + tmp_L = 0.d0 + tmp_R = 0.d0 + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + + tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) + tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) + tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) + + tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) + tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) + tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) + enddo + enddo + + tmp(j) = 0.d0 + do ipoint = 1, n_points_final_grid + tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + enddo + enddo ! j + !$OMP END DO + !$OMP END PARALLEL + + diag_three_elem_hf = -2.d0 * sum(tmp) + + deallocate(tmp) + deallocate(tmp_L, tmp_R) + + ! --- + + allocate(tmp_O(n_points_final_grid), tmp_J(n_points_final_grid,3)) + tmp_O = 0.d0 + tmp_J = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & + !$OMP SHARED(elec_beta_num, n_points_final_grid, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, tmp_O, tmp_J) + + allocate(tmp_O_priv(n_points_final_grid), tmp_J_priv(n_points_final_grid,3)) + tmp_O_priv = 0.d0 + tmp_J_priv = 0.d0 + + !$OMP DO + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) + tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,i) + tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,i) + tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_O = tmp_O + tmp_O_priv + tmp_J = tmp_J + tmp_J_priv + !$OMP END CRITICAL + + deallocate(tmp_O_priv, tmp_J_priv) + !$OMP END PARALLEL + + allocate(tmp_M(n_points_final_grid,3), tmp_S(n_points_final_grid)) + tmp_M = 0.d0 + tmp_S = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & + !$OMP SHARED(elec_beta_num, n_points_final_grid, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, tmp_M, tmp_S) + + allocate(tmp_M_priv(n_points_final_grid,3), tmp_S_priv(n_points_final_grid)) + tmp_M_priv = 0.d0 + tmp_S_priv = 0.d0 + + !$OMP DO COLLAPSE(2) + do i = 1, elec_beta_num + do j = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & + + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & + + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_M = tmp_M + tmp_M_priv + tmp_S = tmp_S + tmp_S_priv + !$OMP END CRITICAL + + deallocate(tmp_M_priv, tmp_S_priv) + !$OMP END PARALLEL + + allocate(tmp(n_points_final_grid)) + + do ipoint = 1, n_points_final_grid + + tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) + + tmp(ipoint) = final_weight_at_r_vector(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & + - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & + + tmp_J(ipoint,2) * tmp_M(ipoint,2) & + + tmp_J(ipoint,3) * tmp_M(ipoint,3))) + enddo + + diag_three_elem_hf = diag_three_elem_hf -2.d0 * (sum(tmp)) + + deallocate(tmp) + + else ! elec_alpha_num .neq. elec_beta_num + + allocate(tmp(elec_alpha_num)) + allocate(tmp_L(n_points_final_grid,3), tmp_R(n_points_final_grid,3)) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & + !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) + + !$OMP DO + do j = 1, elec_beta_num + + tmp_L = 0.d0 + tmp_R = 0.d0 + do i = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + + tmp_L(ipoint,1) = tmp_L(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) + tmp_L(ipoint,2) = tmp_L(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) + tmp_L(ipoint,3) = tmp_L(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) + + tmp_R(ipoint,1) = tmp_R(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) + tmp_R(ipoint,2) = tmp_R(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) + tmp_R(ipoint,3) = tmp_R(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) + enddo + enddo + + tmp(j) = 0.d0 + do ipoint = 1, n_points_final_grid + tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + enddo + + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + + tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) + tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) + tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) + + tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) + tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) + tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) + enddo + enddo + + do ipoint = 1, n_points_final_grid + tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + enddo + enddo ! j + !$OMP END DO + !$OMP END PARALLEL + + ! --- + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & + !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) + + !$OMP DO + do j = elec_beta_num+1, elec_alpha_num + + tmp_L = 0.d0 + tmp_R = 0.d0 + do i = 1, elec_alpha_num + do ipoint = 1, n_points_final_grid + tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) + tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) + tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) + + tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) + tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) + tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) + enddo + enddo + + tmp(j) = 0.d0 + do ipoint = 1, n_points_final_grid + tmp(j) = tmp(j) + 0.5d0 * final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + enddo + enddo ! j + !$OMP END DO + !$OMP END PARALLEL + + diag_three_elem_hf = -2.d0 * sum(tmp) + + deallocate(tmp) + deallocate(tmp_L, tmp_R) + + ! --- + + allocate(tmp_O(n_points_final_grid), tmp_J(n_points_final_grid,3)) + tmp_O = 0.d0 + tmp_J = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & + !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, tmp_O, tmp_J) + + allocate(tmp_O_priv(n_points_final_grid), tmp_J_priv(n_points_final_grid,3)) + tmp_O_priv = 0.d0 + tmp_J_priv = 0.d0 + + !$OMP DO + do i = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) + tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,i) + tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,i) + tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO + do i = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + 0.5d0 * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) + tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,i) + tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,i) + tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_O = tmp_O + tmp_O_priv + tmp_J = tmp_J + tmp_J_priv + !$OMP END CRITICAL + + deallocate(tmp_O_priv, tmp_J_priv) + !$OMP END PARALLEL + + ! --- + + allocate(tmp_M(n_points_final_grid,3), tmp_S(n_points_final_grid)) + tmp_M = 0.d0 + tmp_S = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & + !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & + !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & + !$OMP int2_grad1_u12_bimo_t, tmp_M, tmp_S) + + allocate(tmp_M_priv(n_points_final_grid,3), tmp_S_priv(n_points_final_grid)) + tmp_M_priv = 0.d0 + tmp_S_priv = 0.d0 + + !$OMP DO COLLAPSE(2) + do i = 1, elec_beta_num + do j = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & + + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & + + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO COLLAPSE(2) + do i = elec_beta_num+1, elec_alpha_num + do j = 1, elec_beta_num + do ipoint = 1, n_points_final_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & + + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & + + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO COLLAPSE(2) + do i = elec_beta_num+1, elec_alpha_num + do j = elec_beta_num+1, elec_alpha_num + do ipoint = 1, n_points_final_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & + + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & + + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_M = tmp_M + tmp_M_priv + tmp_S = tmp_S + tmp_S_priv + !$OMP END CRITICAL + + deallocate(tmp_M_priv, tmp_S_priv) + !$OMP END PARALLEL + + allocate(tmp(n_points_final_grid)) + + do ipoint = 1, n_points_final_grid + + tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) + + tmp(ipoint) = final_weight_at_r_vector(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & + - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & + + tmp_J(ipoint,2) * tmp_M(ipoint,2) & + + tmp_J(ipoint,3) * tmp_M(ipoint,3))) + enddo + + diag_three_elem_hf = diag_three_elem_hf - 2.d0 * (sum(tmp)) + + deallocate(tmp) + + endif ! alpha/beta condition + + endif ! three_body_h_tc + +END_PROVIDER + +! --- + diff --git a/plugins/local/tc_scf/tcscf_energy_naive.irp.f b/plugins/local/tc_scf/tcscf_energy_naive.irp.f deleted file mode 100644 index 82bb8799..00000000 --- a/plugins/local/tc_scf/tcscf_energy_naive.irp.f +++ /dev/null @@ -1,80 +0,0 @@ - -! --- - -BEGIN_PROVIDER [double precision, tcscf_energy_3e_naive] - - implicit none - integer :: i, j, k - integer :: neu, ned, D(elec_num) - integer :: ii, jj, kk - integer :: si, sj, sk - double precision :: I_ijk, I_jki, I_kij, I_jik, I_ikj, I_kji - double precision :: I_tot - - PROVIDE mo_l_coef mo_r_coef - - neu = elec_alpha_num - ned = elec_beta_num - if (neu > 0) D(1:neu) = [(2*i-1, i = 1, neu)] - if (ned > 0) D(neu+1:neu+ned) = [(2*i, i = 1, ned)] - - !print*, "D = " - !do i = 1, elec_num - ! ii = (D(i) - 1) / 2 + 1 - ! si = mod(D(i), 2) - ! print*, i, D(i), ii, si - !enddo - - tcscf_energy_3e_naive = 0.d0 - - do i = 1, elec_num - 2 - ii = (D(i) - 1) / 2 + 1 - si = mod(D(i), 2) - - do j = i + 1, elec_num - 1 - jj = (D(j) - 1) / 2 + 1 - sj = mod(D(j), 2) - - do k = j + 1, elec_num - kk = (D(k) - 1) / 2 + 1 - sk = mod(D(k), 2) - - call give_integrals_3_body_bi_ort(ii, jj, kk, ii, jj, kk, I_ijk) - I_tot = I_ijk - - if(sj==si .and. sk==sj) then - call give_integrals_3_body_bi_ort(ii, jj, kk, jj, kk, ii, I_jki) - I_tot += I_jki - endif - - if(sk==si .and. si==sj) then - call give_integrals_3_body_bi_ort(ii, jj, kk, kk, ii, jj, I_kij) - I_tot += I_kij - endif - - if(sj==si) then - call give_integrals_3_body_bi_ort(ii, jj, kk, jj, ii, kk, I_jik) - I_tot -= I_jik - endif - - if(sk==sj) then - call give_integrals_3_body_bi_ort(ii, jj, kk, ii, kk, jj, I_ikj) - I_tot -= I_ikj - endif - - if(sk==si) then - call give_integrals_3_body_bi_ort(ii, jj, kk, kk, jj, ii, I_kji) - I_tot -= I_kji - endif - - tcscf_energy_3e_naive += I_tot - enddo - enddo - enddo - - tcscf_energy_3e_naive = -tcscf_energy_3e_naive - -END_PROVIDER - -! --- - diff --git a/plugins/local/tc_scf/three_e_energy_bi_ortho.irp.f b/plugins/local/tc_scf/three_e_energy_bi_ortho.irp.f deleted file mode 100644 index 0c9ebbd7..00000000 --- a/plugins/local/tc_scf/three_e_energy_bi_ortho.irp.f +++ /dev/null @@ -1,189 +0,0 @@ - -subroutine contrib_3e_diag_sss(i, j, k, integral) - - BEGIN_DOC - ! returns the pure same spin contribution to diagonal matrix element of 3e term - END_DOC - - implicit none - integer, intent(in) :: i, j, k - double precision, intent(out) :: integral - double precision :: direct_int, exch_13_int, exch_23_int, exch_12_int, c_3_int, c_minus_3_int - - call give_integrals_3_body_bi_ort(i, k, j, i, k, j, direct_int )!!! < i k j | i k j > - call give_integrals_3_body_bi_ort(i, k, j, j, i, k, c_3_int) ! < i k j | j i k > - call give_integrals_3_body_bi_ort(i, k, j, k, j, i, c_minus_3_int)! < i k j | k j i > - integral = direct_int + c_3_int + c_minus_3_int - - ! negative terms :: exchange contrib - call give_integrals_3_body_bi_ort(i, k, j, j, k, i, exch_13_int)!!! < i k j | j k i > : E_13 - call give_integrals_3_body_bi_ort(i, k, j, i, j, k, exch_23_int)!!! < i k j | i j k > : E_23 - call give_integrals_3_body_bi_ort(i, k, j, k, i, j, exch_12_int)!!! < i k j | k i j > : E_12 - - integral += - exch_13_int - exch_23_int - exch_12_int - integral = -integral - -end - -! --- - -subroutine contrib_3e_diag_soo(i,j,k,integral) - implicit none - integer, intent(in) :: i,j,k - BEGIN_DOC - ! returns the pure same spin contribution to diagonal matrix element of 3e term - END_DOC - double precision, intent(out) :: integral - double precision :: direct_int, exch_23_int - call give_integrals_3_body_bi_ort(i, k, j, i, k, j, direct_int) ! < i k j | i k j > - call give_integrals_3_body_bi_ort(i, k, j, i, j, k, exch_23_int)! < i k j | i j k > : E_23 - integral = direct_int - exch_23_int - integral = -integral -end - - -subroutine give_aaa_contrib_bis(integral_aaa) - implicit none - double precision, intent(out) :: integral_aaa - double precision :: integral - integer :: i,j,k - integral_aaa = 0.d0 - do i = 1, elec_alpha_num - do j = i+1, elec_alpha_num - do k = j+1, elec_alpha_num - call contrib_3e_diag_sss(i,j,k,integral) - integral_aaa += integral - enddo - enddo - enddo - -end - -! --- - -subroutine give_aaa_contrib(integral_aaa) - - implicit none - integer :: i, j, k - double precision :: integral - double precision, intent(out) :: integral_aaa - - integral_aaa = 0.d0 - do i = 1, elec_alpha_num - do j = 1, elec_alpha_num - do k = 1, elec_alpha_num - call contrib_3e_diag_sss(i, j, k, integral) - integral_aaa += integral - enddo - enddo - enddo - integral_aaa *= 1.d0/6.d0 - - return -end - -! --- - -subroutine give_aab_contrib(integral_aab) - implicit none - double precision, intent(out) :: integral_aab - double precision :: integral - integer :: i,j,k - integral_aab = 0.d0 - do i = 1, elec_beta_num - do j = 1, elec_alpha_num - do k = 1, elec_alpha_num - call contrib_3e_diag_soo(i,j,k,integral) - integral_aab += integral - enddo - enddo - enddo - integral_aab *= 0.5d0 -end - - -subroutine give_aab_contrib_bis(integral_aab) - implicit none - double precision, intent(out) :: integral_aab - double precision :: integral - integer :: i,j,k - integral_aab = 0.d0 - do i = 1, elec_beta_num - do j = 1, elec_alpha_num - do k = j+1, elec_alpha_num - call contrib_3e_diag_soo(i,j,k,integral) - integral_aab += integral - enddo - enddo - enddo -end - - -subroutine give_abb_contrib(integral_abb) - implicit none - double precision, intent(out) :: integral_abb - double precision :: integral - integer :: i,j,k - integral_abb = 0.d0 - do i = 1, elec_alpha_num - do j = 1, elec_beta_num - do k = 1, elec_beta_num - call contrib_3e_diag_soo(i,j,k,integral) - integral_abb += integral - enddo - enddo - enddo - integral_abb *= 0.5d0 -end - -subroutine give_abb_contrib_bis(integral_abb) - implicit none - double precision, intent(out) :: integral_abb - double precision :: integral - integer :: i,j,k - integral_abb = 0.d0 - do i = 1, elec_alpha_num - do j = 1, elec_beta_num - do k = j+1, elec_beta_num - call contrib_3e_diag_soo(i,j,k,integral) - integral_abb += integral - enddo - enddo - enddo -end - -subroutine give_bbb_contrib_bis(integral_bbb) - implicit none - double precision, intent(out) :: integral_bbb - double precision :: integral - integer :: i,j,k - integral_bbb = 0.d0 - do i = 1, elec_beta_num - do j = i+1, elec_beta_num - do k = j+1, elec_beta_num - call contrib_3e_diag_sss(i,j,k,integral) - integral_bbb += integral - enddo - enddo - enddo - -end - -subroutine give_bbb_contrib(integral_bbb) - implicit none - double precision, intent(out) :: integral_bbb - double precision :: integral - integer :: i,j,k - integral_bbb = 0.d0 - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do k = 1, elec_beta_num - call contrib_3e_diag_sss(i,j,k,integral) - integral_bbb += integral - enddo - enddo - enddo - integral_bbb *= 1.d0/6.d0 -end - - diff --git a/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f b/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f index 7ce57578..ec5167d1 100644 --- a/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f +++ b/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f @@ -4,11 +4,9 @@ program write_ao_2e_tc_integ implicit none - PROVIDE j1e_type - PROVIDE j2e_type - - print *, ' j1e_type = ', j1e_type print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type my_grid_becke = .True. PROVIDE tc_grid1_a tc_grid1_r From d43d960b1a15e7ddb9dcf1e871bf6e9a4e70983b Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Wed, 1 May 2024 21:52:00 +0200 Subject: [PATCH 022/159] TC-SCF CLEANED --- plugins/local/bi_ort_ints/no_dressing.irp.f | 7 +- plugins/local/non_hermit_dav/biorthog.irp.f | 2 +- plugins/local/slater_tc/NEED | 1 + .../symmetrized_3_e_int_prov.irp.f | 0 plugins/local/tc_bi_ortho/test_tc_fock.irp.f | 33 - plugins/local/tc_keywords/EZFIO.cfg | 48 +- plugins/local/tc_keywords/tc_keywords.irp.f | 7 - plugins/local/tc_scf/EZFIO.cfg | 30 + plugins/local/tc_scf/fock_hermit.irp.f | 107 --- plugins/local/tc_scf/fock_tc.irp.f | 40 +- plugins/local/tc_scf/fock_tc_mo_tot.irp.f | 19 +- plugins/local/tc_scf/fock_three_hermit.irp.f | 771 ------------------ .../local/tc_scf/integrals_in_r_stuff.irp.f | 391 --------- plugins/local/tc_scf/jast_schmos_90.irp.f | 318 -------- plugins/local/tc_scf/plot_j_schMos.irp.f | 69 -- plugins/local/tc_scf/print_fit_param.irp.f | 59 -- plugins/local/tc_scf/print_tcscf_energy.irp.f | 55 -- plugins/local/tc_scf/rh_tcscf_diis.irp.f | 4 +- plugins/local/tc_scf/rh_tcscf_simple.irp.f | 129 --- .../local/tc_scf/rotate_tcscf_orbitals.irp.f | 369 --------- .../local/tc_scf/tc_petermann_factor.irp.f | 91 --- plugins/local/tc_scf/tc_scf.irp.f | 25 +- plugins/local/tc_scf/tc_scf_dm.irp.f | 24 +- plugins/local/tc_scf/tc_scf_energy.irp.f | 16 +- plugins/local/tc_scf/tcscf_energy_naive.irp.f | 80 -- .../tc_scf/three_e_energy_bi_ortho.irp.f | 189 ----- .../local/tc_scf/write_ao_2e_tc_integ.irp.f | 6 +- 27 files changed, 94 insertions(+), 2796 deletions(-) rename plugins/local/{tc_bi_ortho => slater_tc}/symmetrized_3_e_int_prov.irp.f (100%) delete mode 100644 plugins/local/tc_keywords/tc_keywords.irp.f delete mode 100644 plugins/local/tc_scf/fock_hermit.irp.f delete mode 100644 plugins/local/tc_scf/fock_three_hermit.irp.f delete mode 100644 plugins/local/tc_scf/integrals_in_r_stuff.irp.f delete mode 100644 plugins/local/tc_scf/jast_schmos_90.irp.f delete mode 100644 plugins/local/tc_scf/plot_j_schMos.irp.f delete mode 100644 plugins/local/tc_scf/print_fit_param.irp.f delete mode 100644 plugins/local/tc_scf/print_tcscf_energy.irp.f delete mode 100644 plugins/local/tc_scf/rh_tcscf_simple.irp.f delete mode 100644 plugins/local/tc_scf/rotate_tcscf_orbitals.irp.f delete mode 100644 plugins/local/tc_scf/tc_petermann_factor.irp.f delete mode 100644 plugins/local/tc_scf/tcscf_energy_naive.irp.f delete mode 100644 plugins/local/tc_scf/three_e_energy_bi_ortho.irp.f diff --git a/plugins/local/bi_ort_ints/no_dressing.irp.f b/plugins/local/bi_ort_ints/no_dressing.irp.f index bd225274..721ac0f8 100644 --- a/plugins/local/bi_ort_ints/no_dressing.irp.f +++ b/plugins/local/bi_ort_ints/no_dressing.irp.f @@ -322,6 +322,12 @@ END_PROVIDER BEGIN_PROVIDER [double precision, noL_0e] + BEGIN_DOC + ! + ! < Phi_left | L | Phi_right > + ! + END_DOC + implicit none integer :: i, j, k, ipoint double precision :: t0, t1 @@ -330,7 +336,6 @@ BEGIN_PROVIDER [double precision, noL_0e] double precision, allocatable :: tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) - call wall_time(t0) print*, " Providing noL_0e ..." diff --git a/plugins/local/non_hermit_dav/biorthog.irp.f b/plugins/local/non_hermit_dav/biorthog.irp.f index b36b0130..4b618228 100644 --- a/plugins/local/non_hermit_dav/biorthog.irp.f +++ b/plugins/local/non_hermit_dav/biorthog.irp.f @@ -43,7 +43,7 @@ subroutine non_hrmt_bieig(n, A, thr_d, thr_nd, leigvec, reigvec, n_real_eigv, ei ! track & sort the real eigenvalues n_good = 0 - thr = Im_thresh_tcscf + thr = Im_thresh_tc do i = 1, n if(dabs(WI(i)) .lt. thr) then n_good += 1 diff --git a/plugins/local/slater_tc/NEED b/plugins/local/slater_tc/NEED index ef0aa3f7..a8669866 100644 --- a/plugins/local/slater_tc/NEED +++ b/plugins/local/slater_tc/NEED @@ -5,3 +5,4 @@ bi_ortho_mos tc_keywords non_hermit_dav dav_general_mat +tc_scf diff --git a/plugins/local/tc_bi_ortho/symmetrized_3_e_int_prov.irp.f b/plugins/local/slater_tc/symmetrized_3_e_int_prov.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/symmetrized_3_e_int_prov.irp.f rename to plugins/local/slater_tc/symmetrized_3_e_int_prov.irp.f diff --git a/plugins/local/tc_bi_ortho/test_tc_fock.irp.f b/plugins/local/tc_bi_ortho/test_tc_fock.irp.f index f1a7cc0a..85f3ed97 100644 --- a/plugins/local/tc_bi_ortho/test_tc_fock.irp.f +++ b/plugins/local/tc_bi_ortho/test_tc_fock.irp.f @@ -24,44 +24,12 @@ program test_tc_fock !call routine_2 ! call routine_3() -! call test_3e call routine_tot end ! --- -subroutine test_3e - implicit none - double precision :: integral_aaa,integral_aab,integral_abb,integral_bbb,accu - double precision :: hmono, htwoe, hthree, htot - call htilde_mu_mat_bi_ortho_slow(ref_bitmask, ref_bitmask, N_int, hmono, htwoe, hthree, htot) - print*,'hmono = ',hmono - print*,'htwoe = ',htwoe - print*,'hthree= ',hthree - print*,'htot = ',htot - print*,'' - print*,'' - print*,'TC_one= ',tc_hf_one_e_energy - print*,'TC_two= ',TC_HF_two_e_energy - print*,'TC_3e = ',diag_three_elem_hf - print*,'TC_tot= ',TC_HF_energy - print*,'' - print*,'' - call give_aaa_contrib(integral_aaa) - print*,'integral_aaa = ',integral_aaa - call give_aab_contrib(integral_aab) - print*,'integral_aab = ',integral_aab - call give_abb_contrib(integral_abb) - print*,'integral_abb = ',integral_abb - call give_bbb_contrib(integral_bbb) - print*,'integral_bbb = ',integral_bbb - accu = integral_aaa + integral_aab + integral_abb + integral_bbb - print*,'accu = ',accu - print*,'delta = ',hthree - accu - -end - subroutine routine_3() use bitmasks ! you need to include the bitmasks_module.f90 features @@ -86,7 +54,6 @@ subroutine routine_3() do i = 1, elec_num_tab(s1) do a = elec_num_tab(s1)+1, mo_num ! virtual - det_i = ref_bitmask call do_single_excitation(det_i, i, a, s1, i_ok) if(i_ok == -1) then diff --git a/plugins/local/tc_keywords/EZFIO.cfg b/plugins/local/tc_keywords/EZFIO.cfg index e4d9701a..33b9db57 100644 --- a/plugins/local/tc_keywords/EZFIO.cfg +++ b/plugins/local/tc_keywords/EZFIO.cfg @@ -100,30 +100,12 @@ doc: If |true|, the states are re-ordered to match the input states default: False interface: ezfio,provider,ocaml -[bi_ortho] -type: logical -doc: If |true|, the MO basis is assumed to be bi-orthonormal -interface: ezfio,provider,ocaml -default: True - [symetric_fock_tc] type: logical doc: If |true|, using F+F^t as Fock TC interface: ezfio,provider,ocaml default: False -[thresh_tcscf] -type: Threshold -doc: Threshold on the convergence of the Hartree Fock energy. -interface: ezfio,provider,ocaml -default: 1.e-8 - -[n_it_tcscf_max] -type: Strictly_positive_int -doc: Maximum number of SCF iterations -interface: ezfio,provider,ocaml -default: 50 - [selection_tc] type: integer doc: if +1: only positive is selected, -1: only negative is selected, :0 both positive and negative @@ -160,30 +142,6 @@ doc: If |true|, maximize the overlap between orthogonalized left- and right eige interface: ezfio,provider,ocaml default: False -[max_dim_diis_tcscf] -type: integer -doc: Maximum size of the DIIS extrapolation procedure -interface: ezfio,provider,ocaml -default: 15 - -[level_shift_tcscf] -type: Positive_float -doc: Energy shift on the virtual MOs to improve TCSCF convergence -interface: ezfio,provider,ocaml -default: 0. - -[tcscf_algorithm] -type: character*(32) -doc: Type of TCSCF algorithm used. Possible choices are [Simple | DIIS] -interface: ezfio,provider,ocaml -default: DIIS - -[im_thresh_tcscf] -type: Threshold -doc: Thresholds on the Imag part of energy -interface: ezfio,provider,ocaml -default: 1.e-7 - [test_cycle_tc] type: logical doc: If |true|, the integrals of the three-body jastrow are computed with cycles @@ -304,3 +262,9 @@ doc: If |true|, more calc but less mem interface: ezfio,provider,ocaml default: False +[im_thresh_tc] +type: Threshold +doc: Thresholds on the Imag part of TC energy +interface: ezfio,provider,ocaml +default: 1.e-7 + diff --git a/plugins/local/tc_keywords/tc_keywords.irp.f b/plugins/local/tc_keywords/tc_keywords.irp.f deleted file mode 100644 index 3bc68550..00000000 --- a/plugins/local/tc_keywords/tc_keywords.irp.f +++ /dev/null @@ -1,7 +0,0 @@ -program tc_keywords - implicit none - BEGIN_DOC -! TODO : Put the documentation of the program here - END_DOC - print *, 'Hello world' -end diff --git a/plugins/local/tc_scf/EZFIO.cfg b/plugins/local/tc_scf/EZFIO.cfg index 510c777c..e3d24338 100644 --- a/plugins/local/tc_scf/EZFIO.cfg +++ b/plugins/local/tc_scf/EZFIO.cfg @@ -9,3 +9,33 @@ doc: If |true|, tc-scf has converged interface: ezfio,provider,ocaml default: False +[max_dim_diis_tcscf] +type: integer +doc: Maximum size of the DIIS extrapolation procedure +interface: ezfio,provider,ocaml +default: 15 + +[level_shift_tcscf] +type: Positive_float +doc: Energy shift on the virtual MOs to improve TCSCF convergence +interface: ezfio,provider,ocaml +default: 0. + +[thresh_tcscf] +type: Threshold +doc: Threshold on the convergence of the Hartree Fock energy. +interface: ezfio,provider,ocaml +default: 1.e-8 + +[n_it_tcscf_max] +type: Strictly_positive_int +doc: Maximum number of SCF iterations +interface: ezfio,provider,ocaml +default: 50 + +[tc_Brillouin_Right] +type: logical +doc: If |true|, impose only right-Brillouin condition +interface: ezfio,provider,ocaml +default: False + diff --git a/plugins/local/tc_scf/fock_hermit.irp.f b/plugins/local/tc_scf/fock_hermit.irp.f deleted file mode 100644 index 5a51b324..00000000 --- a/plugins/local/tc_scf/fock_hermit.irp.f +++ /dev/null @@ -1,107 +0,0 @@ - -! --- - -BEGIN_PROVIDER [ double precision, good_hermit_tc_fock_mat, (mo_num, mo_num)] - - BEGIN_DOC -! good_hermit_tc_fock_mat = Hermitian Upper triangular Fock matrix -! -! The converged eigenvectors of such matrix yield to orthonormal vectors satisfying the left Brillouin theorem - END_DOC - implicit none - integer :: i, j - - good_hermit_tc_fock_mat = Fock_matrix_tc_mo_tot - do j = 1, mo_num - do i = 1, j-1 - good_hermit_tc_fock_mat(i,j) = Fock_matrix_tc_mo_tot(j,i) - enddo - enddo - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, hermit_average_tc_fock_mat, (mo_num, mo_num)] - - BEGIN_DOC -! hermit_average_tc_fock_mat = (F + F^\dagger)/2 - END_DOC - implicit none - integer :: i, j - - hermit_average_tc_fock_mat = Fock_matrix_tc_mo_tot - do j = 1, mo_num - do i = 1, mo_num - hermit_average_tc_fock_mat(i,j) = 0.5d0 * (Fock_matrix_tc_mo_tot(j,i) + Fock_matrix_tc_mo_tot(i,j)) - enddo - enddo - -END_PROVIDER - - -! --- -BEGIN_PROVIDER [ double precision, grad_hermit] - implicit none - BEGIN_DOC - ! square of gradient of the energy - END_DOC - if(symetric_fock_tc)then - grad_hermit = grad_hermit_average_tc_fock_mat - else - grad_hermit = grad_good_hermit_tc_fock_mat - endif - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, grad_good_hermit_tc_fock_mat] - implicit none - BEGIN_DOC - ! grad_good_hermit_tc_fock_mat = norm of gradients of the upper triangular TC fock - END_DOC - integer :: i, j - grad_good_hermit_tc_fock_mat = 0.d0 - do i = 1, elec_alpha_num - do j = elec_alpha_num+1, mo_num - grad_good_hermit_tc_fock_mat += dabs(good_hermit_tc_fock_mat(i,j)) - enddo - enddo -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, grad_hermit_average_tc_fock_mat] - implicit none - BEGIN_DOC - ! grad_hermit_average_tc_fock_mat = norm of gradients of the upper triangular TC fock - END_DOC - integer :: i, j - grad_hermit_average_tc_fock_mat = 0.d0 - do i = 1, elec_alpha_num - do j = elec_alpha_num+1, mo_num - grad_hermit_average_tc_fock_mat += dabs(hermit_average_tc_fock_mat(i,j)) - enddo - enddo -END_PROVIDER - - -! --- - -subroutine save_good_hermit_tc_eigvectors() - - implicit none - integer :: sign - character*(64) :: label - logical :: output - - sign = 1 - label = "Canonical" - output = .False. - - if(symetric_fock_tc)then - call mo_as_eigvectors_of_mo_matrix(hermit_average_tc_fock_mat, mo_num, mo_num, label, sign, output) - else - call mo_as_eigvectors_of_mo_matrix(good_hermit_tc_fock_mat, mo_num, mo_num, label, sign, output) - endif -end subroutine save_good_hermit_tc_eigvectors - -! --- - diff --git a/plugins/local/tc_scf/fock_tc.irp.f b/plugins/local/tc_scf/fock_tc.irp.f index 508f3cd7..16bb5c87 100644 --- a/plugins/local/tc_scf/fock_tc.irp.f +++ b/plugins/local/tc_scf/fock_tc.irp.f @@ -110,23 +110,14 @@ BEGIN_PROVIDER [double precision, Fock_matrix_tc_mo_alpha, (mo_num, mo_num)] double precision :: t0, t1, tt0, tt1 double precision, allocatable :: tmp(:,:) - if(bi_ortho) then + PROVIDE mo_l_coef mo_r_coef - PROVIDE mo_l_coef mo_r_coef - - call ao_to_mo_bi_ortho( Fock_matrix_tc_ao_alpha, size(Fock_matrix_tc_ao_alpha, 1) & - , Fock_matrix_tc_mo_alpha, size(Fock_matrix_tc_mo_alpha, 1) ) - - if(three_body_h_tc) then - PROVIDE fock_3e_mo_a - Fock_matrix_tc_mo_alpha += fock_3e_mo_a - endif - - else - - call ao_to_mo( Fock_matrix_tc_ao_alpha, size(Fock_matrix_tc_ao_alpha, 1) & - , Fock_matrix_tc_mo_alpha, size(Fock_matrix_tc_mo_alpha, 1) ) + call ao_to_mo_bi_ortho( Fock_matrix_tc_ao_alpha, size(Fock_matrix_tc_ao_alpha, 1) & + , Fock_matrix_tc_mo_alpha, size(Fock_matrix_tc_mo_alpha, 1) ) + if(three_body_h_tc) then + PROVIDE fock_3e_mo_a + Fock_matrix_tc_mo_alpha += fock_3e_mo_a endif END_PROVIDER @@ -142,21 +133,12 @@ BEGIN_PROVIDER [ double precision, Fock_matrix_tc_mo_beta, (mo_num,mo_num) ] implicit none double precision, allocatable :: tmp(:,:) - if(bi_ortho) then - - call ao_to_mo_bi_ortho( Fock_matrix_tc_ao_beta, size(Fock_matrix_tc_ao_beta, 1) & - , Fock_matrix_tc_mo_beta, size(Fock_matrix_tc_mo_beta, 1) ) - - if(three_body_h_tc) then - PROVIDE fock_3e_mo_b - Fock_matrix_tc_mo_beta += fock_3e_mo_b - endif - - else - - call ao_to_mo( Fock_matrix_tc_ao_beta, size(Fock_matrix_tc_ao_beta, 1) & - , Fock_matrix_tc_mo_beta, size(Fock_matrix_tc_mo_beta, 1) ) + call ao_to_mo_bi_ortho( Fock_matrix_tc_ao_beta, size(Fock_matrix_tc_ao_beta, 1) & + , Fock_matrix_tc_mo_beta, size(Fock_matrix_tc_mo_beta, 1) ) + if(three_body_h_tc) then + PROVIDE fock_3e_mo_b + Fock_matrix_tc_mo_beta += fock_3e_mo_b endif END_PROVIDER diff --git a/plugins/local/tc_scf/fock_tc_mo_tot.irp.f b/plugins/local/tc_scf/fock_tc_mo_tot.irp.f index 2df2421e..fd490af6 100644 --- a/plugins/local/tc_scf/fock_tc_mo_tot.irp.f +++ b/plugins/local/tc_scf/fock_tc_mo_tot.irp.f @@ -132,7 +132,7 @@ enddo endif - if(no_oa_or_av_opt)then + if(no_oa_or_av_opt) then do i = 1, n_act_orb iorb = list_act(i) do j = 1, n_inact_orb @@ -153,8 +153,21 @@ enddo endif - if(.not.bi_ortho .and. three_body_h_tc)then - Fock_matrix_tc_mo_tot += fock_3_mat + if(tc_Brillouin_Right) then + + double precision, allocatable :: tmp(:,:) + allocate(tmp(mo_num,mo_num)) + + tmp = Fock_matrix_tc_mo_tot + do j = 1, mo_num + do i = 1, j-1 + tmp(i,j) = Fock_matrix_tc_mo_tot(j,i) + enddo + enddo + + Fock_matrix_tc_mo_tot = tmp + deallocate(tmp) + endif END_PROVIDER diff --git a/plugins/local/tc_scf/fock_three_hermit.irp.f b/plugins/local/tc_scf/fock_three_hermit.irp.f deleted file mode 100644 index 00d47fae..00000000 --- a/plugins/local/tc_scf/fock_three_hermit.irp.f +++ /dev/null @@ -1,771 +0,0 @@ - -! --- - -BEGIN_PROVIDER [ double precision, fock_3_mat, (mo_num, mo_num)] - - implicit none - integer :: i,j - double precision :: contrib - - fock_3_mat = 0.d0 - if(.not.bi_ortho .and. three_body_h_tc) then - - call give_fock_ia_three_e_total(1, 1, contrib) - !! !$OMP PARALLEL & - !! !$OMP DEFAULT (NONE) & - !! !$OMP PRIVATE (i,j,m,integral) & - !! !$OMP SHARED (mo_num,three_body_3_index) - !! !$OMP DO SCHEDULE (guided) COLLAPSE(3) - do i = 1, mo_num - do j = 1, mo_num - call give_fock_ia_three_e_total(j,i,contrib) - fock_3_mat(j,i) = -contrib - enddo - enddo - !else if(bi_ortho.and.three_body_h_tc) then - !! !$OMP END DO - !! !$OMP END PARALLEL - !! do i = 1, mo_num - !! do j = 1, i-1 - !! mat_three(j,i) = mat_three(i,j) - !! enddo - !! enddo - endif - -END_PROVIDER - - -subroutine give_fock_ia_three_e_total(i,a,contrib) - implicit none - BEGIN_DOC -! contrib is the TOTAL (same spins / opposite spins) contribution from the three body term to the Fock operator -! - END_DOC - integer, intent(in) :: i,a - double precision, intent(out) :: contrib - double precision :: int_1, int_2, int_3 - double precision :: mos_i, mos_a, w_ia - double precision :: mos_ia, weight - - integer :: mm, ipoint,k,l - - int_1 = 0.d0 - int_2 = 0.d0 - int_3 = 0.d0 - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - mos_i = mos_in_r_array_transp(ipoint,i) - mos_a = mos_in_r_array_transp(ipoint,a) - mos_ia = mos_a * mos_i - w_ia = x_W_ij_erf_rk(ipoint,mm,i,a) - - int_1 += weight * fock_3_w_kk_sum(ipoint,mm) * (4.d0 * fock_3_rho_beta(ipoint) * w_ia & - + 2.0d0 * mos_ia * fock_3_w_kk_sum(ipoint,mm) & - - 2.0d0 * fock_3_w_ki_mos_k(ipoint,mm,i) * mos_a & - - 2.0d0 * fock_3_w_ki_mos_k(ipoint,mm,a) * mos_i ) - int_2 += weight * (-1.d0) * ( 2.0d0 * fock_3_w_kl_mo_k_mo_l(ipoint,mm) * w_ia & - + 2.0d0 * fock_3_rho_beta(ipoint) * fock_3_w_ki_wk_a(ipoint,mm,i,a) & - + 1.0d0 * mos_ia * fock_3_trace_w_tilde(ipoint,mm) ) - - int_3 += weight * 1.d0 * (fock_3_w_kl_wla_phi_k(ipoint,mm,i) * mos_a + fock_3_w_kl_wla_phi_k(ipoint,mm,a) * mos_i & - +fock_3_w_ki_mos_k(ipoint,mm,i) * fock_3_w_ki_mos_k(ipoint,mm,a) ) - enddo - enddo - contrib = int_1 + int_2 + int_3 - -end - -! --- - -BEGIN_PROVIDER [double precision, diag_three_elem_hf] - - implicit none - integer :: i, j, k, ipoint, mm - double precision :: contrib, weight, four_third, one_third, two_third, exchange_int_231 - double precision :: integral_aaa, hthree, integral_aab, integral_abb, integral_bbb - double precision, allocatable :: tmp(:) - double precision, allocatable :: tmp_L(:,:), tmp_R(:,:) - double precision, allocatable :: tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) - double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) - - PROVIDE mo_l_coef mo_r_coef - - !print *, ' providing diag_three_elem_hf' - - if(.not. three_body_h_tc) then - - if(noL_standard) then - PROVIDE noL_0e - diag_three_elem_hf = noL_0e - else - diag_three_elem_hf = 0.d0 - endif - - else - - if(.not. bi_ortho) then - - ! --- - - one_third = 1.d0/3.d0 - two_third = 2.d0/3.d0 - four_third = 4.d0/3.d0 - diag_three_elem_hf = 0.d0 - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do k = 1, elec_beta_num - call give_integrals_3_body(k, j, i, j, i, k, exchange_int_231) - diag_three_elem_hf += two_third * exchange_int_231 - enddo - enddo - enddo - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - contrib = 3.d0 * fock_3_w_kk_sum(ipoint,mm) * fock_3_rho_beta(ipoint) * fock_3_w_kk_sum(ipoint,mm) & - - 2.d0 * fock_3_w_kl_mo_k_mo_l(ipoint,mm) * fock_3_w_kk_sum(ipoint,mm) & - - 1.d0 * fock_3_rho_beta(ipoint) * fock_3_w_kl_w_kl(ipoint,mm) - contrib *= four_third - contrib += -two_third * fock_3_rho_beta(ipoint) * fock_3_w_kl_w_kl(ipoint,mm) & - -four_third * fock_3_w_kk_sum(ipoint,mm) * fock_3_w_kl_mo_k_mo_l(ipoint,mm) - diag_three_elem_hf += weight * contrib - enddo - enddo - - diag_three_elem_hf = - diag_three_elem_hf - - ! --- - - else - - ! ------------ - ! SLOW VERSION - ! ------------ - - !call give_aaa_contrib(integral_aaa) - !call give_aab_contrib(integral_aab) - !call give_abb_contrib(integral_abb) - !call give_bbb_contrib(integral_bbb) - !diag_three_elem_hf = integral_aaa + integral_aab + integral_abb + integral_bbb - - ! ------------ - ! ------------ - - PROVIDE int2_grad1_u12_bimo_t - PROVIDE mos_l_in_r_array_transp - PROVIDE mos_r_in_r_array_transp - - if(elec_alpha_num .eq. elec_beta_num) then - - allocate(tmp(elec_beta_num)) - allocate(tmp_L(n_points_final_grid,3), tmp_R(n_points_final_grid,3)) - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(elec_beta_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) - - !$OMP DO - do j = 1, elec_beta_num - - tmp_L = 0.d0 - tmp_R = 0.d0 - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - tmp(j) = 0.d0 - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - enddo ! j - !$OMP END DO - !$OMP END PARALLEL - - diag_three_elem_hf = -2.d0 * sum(tmp) - - deallocate(tmp) - deallocate(tmp_L, tmp_R) - - ! --- - - allocate(tmp_O(n_points_final_grid), tmp_J(n_points_final_grid,3)) - tmp_O = 0.d0 - tmp_J = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & - !$OMP SHARED(elec_beta_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_O, tmp_J) - - allocate(tmp_O_priv(n_points_final_grid), tmp_J_priv(n_points_final_grid,3)) - tmp_O_priv = 0.d0 - tmp_J_priv = 0.d0 - - !$OMP DO - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,i) - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_O = tmp_O + tmp_O_priv - tmp_J = tmp_J + tmp_J_priv - !$OMP END CRITICAL - - deallocate(tmp_O_priv, tmp_J_priv) - !$OMP END PARALLEL - - allocate(tmp_M(n_points_final_grid,3), tmp_S(n_points_final_grid)) - tmp_M = 0.d0 - tmp_S = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & - !$OMP SHARED(elec_beta_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_M, tmp_S) - - allocate(tmp_M_priv(n_points_final_grid,3), tmp_S_priv(n_points_final_grid)) - tmp_M_priv = 0.d0 - tmp_S_priv = 0.d0 - - !$OMP DO COLLAPSE(2) - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_M = tmp_M + tmp_M_priv - tmp_S = tmp_S + tmp_S_priv - !$OMP END CRITICAL - - deallocate(tmp_M_priv, tmp_S_priv) - !$OMP END PARALLEL - - allocate(tmp(n_points_final_grid)) - - do ipoint = 1, n_points_final_grid - - tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) - - tmp(ipoint) = final_weight_at_r_vector(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & - - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & - + tmp_J(ipoint,2) * tmp_M(ipoint,2) & - + tmp_J(ipoint,3) * tmp_M(ipoint,3))) - enddo - - diag_three_elem_hf = diag_three_elem_hf -2.d0 * (sum(tmp)) - - deallocate(tmp) - - else - - allocate(tmp(elec_alpha_num)) - allocate(tmp_L(n_points_final_grid,3), tmp_R(n_points_final_grid,3)) - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) - - !$OMP DO - do j = 1, elec_beta_num - - tmp_L = 0.d0 - tmp_R = 0.d0 - do i = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - tmp_L(ipoint,1) = tmp_L(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - tmp(j) = 0.d0 - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - enddo ! j - !$OMP END DO - !$OMP END PARALLEL - - ! --- - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) - - !$OMP DO - do j = elec_beta_num+1, elec_alpha_num - - tmp_L = 0.d0 - tmp_R = 0.d0 - do i = 1, elec_alpha_num - do ipoint = 1, n_points_final_grid - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - tmp(j) = 0.d0 - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + 0.5d0 * final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - enddo ! j - !$OMP END DO - !$OMP END PARALLEL - - diag_three_elem_hf = -2.d0 * sum(tmp) - - deallocate(tmp) - deallocate(tmp_L, tmp_R) - - ! --- - - allocate(tmp_O(n_points_final_grid), tmp_J(n_points_final_grid,3)) - tmp_O = 0.d0 - tmp_J = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_O, tmp_J) - - allocate(tmp_O_priv(n_points_final_grid), tmp_J_priv(n_points_final_grid,3)) - tmp_O_priv = 0.d0 - tmp_J_priv = 0.d0 - - !$OMP DO - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,i) - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP DO - do i = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + 0.5d0 * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,i) - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_O = tmp_O + tmp_O_priv - tmp_J = tmp_J + tmp_J_priv - !$OMP END CRITICAL - - deallocate(tmp_O_priv, tmp_J_priv) - !$OMP END PARALLEL - - ! --- - - allocate(tmp_M(n_points_final_grid,3), tmp_S(n_points_final_grid)) - tmp_M = 0.d0 - tmp_S = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_M, tmp_S) - - allocate(tmp_M_priv(n_points_final_grid,3), tmp_S_priv(n_points_final_grid)) - tmp_M_priv = 0.d0 - tmp_S_priv = 0.d0 - - !$OMP DO COLLAPSE(2) - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP DO COLLAPSE(2) - do i = elec_beta_num+1, elec_alpha_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP DO COLLAPSE(2) - do i = elec_beta_num+1, elec_alpha_num - do j = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_M = tmp_M + tmp_M_priv - tmp_S = tmp_S + tmp_S_priv - !$OMP END CRITICAL - - deallocate(tmp_M_priv, tmp_S_priv) - !$OMP END PARALLEL - - allocate(tmp(n_points_final_grid)) - - do ipoint = 1, n_points_final_grid - - tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) - - tmp(ipoint) = final_weight_at_r_vector(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & - - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & - + tmp_J(ipoint,2) * tmp_M(ipoint,2) & - + tmp_J(ipoint,3) * tmp_M(ipoint,3))) - enddo - - diag_three_elem_hf = diag_three_elem_hf - 2.d0 * (sum(tmp)) - - deallocate(tmp) - - endif - - - endif - - endif - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, fock_3_mat_a_op_sh, (mo_num, mo_num)] - implicit none - integer :: h,p,i,j - double precision :: direct_int, exch_int, exchange_int_231, exchange_int_312 - double precision :: exchange_int_23, exchange_int_12, exchange_int_13 - - fock_3_mat_a_op_sh = 0.d0 - do h = 1, mo_num - do p = 1, mo_num - !F_a^{ab}(h,p) - do i = 1, elec_beta_num ! beta - do j = elec_beta_num+1, elec_alpha_num ! alpha - call give_integrals_3_body(h,j,i,p,j,i,direct_int) ! - call give_integrals_3_body(h,j,i,j,p,i,exch_int) - fock_3_mat_a_op_sh(h,p) -= direct_int - exch_int - enddo - enddo - !F_a^{aa}(h,p) - do i = 1, elec_beta_num ! alpha - do j = elec_beta_num+1, elec_alpha_num ! alpha - call give_integrals_3_body(h,j,i,p,j,i,direct_int) - call give_integrals_3_body(h,j,i,i,p,j,exchange_int_231) - call give_integrals_3_body(h,j,i,j,i,p,exchange_int_312) - call give_integrals_3_body(h,j,i,p,i,j,exchange_int_23) - call give_integrals_3_body(h,j,i,i,j,p,exchange_int_12) - call give_integrals_3_body(h,j,i,j,p,i,exchange_int_13) - fock_3_mat_a_op_sh(h,p) -= ( direct_int + exchange_int_231 + exchange_int_312 & - - exchange_int_23 & ! i <-> j - - exchange_int_12 & ! p <-> j - - exchange_int_13 )! p <-> i - enddo - enddo - enddo - enddo -! symmetrized -! do p = 1, elec_beta_num -! do h = elec_alpha_num +1, mo_num -! fock_3_mat_a_op_sh(h,p) = fock_3_mat_a_op_sh(p,h) -! enddo -! enddo - -! do h = elec_beta_num+1, elec_alpha_num -! do p = elec_alpha_num +1, mo_num -! !F_a^{bb}(h,p) -! do i = 1, elec_beta_num -! do j = i+1, elec_beta_num -! call give_integrals_3_body(h,j,i,p,j,i,direct_int) -! call give_integrals_3_body(h,j,i,p,i,j,exch_int) -! fock_3_mat_a_op_sh(h,p) -= direct_int - exch_int -! enddo -! enddo -! enddo -! enddo - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_mat_b_op_sh, (mo_num, mo_num)] - implicit none - integer :: h,p,i,j - double precision :: direct_int, exch_int - fock_3_mat_b_op_sh = 0.d0 - do h = 1, elec_beta_num - do p = elec_alpha_num +1, mo_num - !F_b^{aa}(h,p) - do i = 1, elec_beta_num - do j = elec_beta_num+1, elec_alpha_num - call give_integrals_3_body(h,j,i,p,j,i,direct_int) - call give_integrals_3_body(h,j,i,p,i,j,exch_int) - fock_3_mat_b_op_sh(h,p) += direct_int - exch_int - enddo - enddo - - !F_b^{ab}(h,p) - do i = elec_beta_num+1, elec_beta_num - do j = 1, elec_beta_num - call give_integrals_3_body(h,j,i,p,j,i,direct_int) - call give_integrals_3_body(h,j,i,j,p,i,exch_int) - fock_3_mat_b_op_sh(h,p) += direct_int - exch_int - enddo - enddo - - enddo - enddo - -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, fock_3_w_kk_sum, (n_points_final_grid,3)] - implicit none - integer :: mm, ipoint,k - double precision :: w_kk - fock_3_w_kk_sum = 0.d0 - do k = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - w_kk = x_W_ij_erf_rk(ipoint,mm,k,k) - fock_3_w_kk_sum(ipoint,mm) += w_kk - enddo - enddo - enddo -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_w_ki_mos_k, (n_points_final_grid,3,mo_num)] - implicit none - integer :: mm, ipoint,k,i - double precision :: w_ki, mo_k - fock_3_w_ki_mos_k = 0.d0 - do i = 1, mo_num - do k = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - w_ki = x_W_ij_erf_rk(ipoint,mm,k,i) - mo_k = mos_in_r_array(k,ipoint) - fock_3_w_ki_mos_k(ipoint,mm,i) += w_ki * mo_k - enddo - enddo - enddo - enddo - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_w_kl_w_kl, (n_points_final_grid,3)] - implicit none - integer :: k,j,ipoint,mm - double precision :: w_kj - fock_3_w_kl_w_kl = 0.d0 - do j = 1, elec_beta_num - do k = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - w_kj = x_W_ij_erf_rk(ipoint,mm,k,j) - fock_3_w_kl_w_kl(ipoint,mm) += w_kj * w_kj - enddo - enddo - enddo - enddo - - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_rho_beta, (n_points_final_grid)] - implicit none - integer :: ipoint,k - fock_3_rho_beta = 0.d0 - do ipoint = 1, n_points_final_grid - do k = 1, elec_beta_num - fock_3_rho_beta(ipoint) += mos_in_r_array(k,ipoint) * mos_in_r_array(k,ipoint) - enddo - enddo -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_w_kl_mo_k_mo_l, (n_points_final_grid,3)] - implicit none - integer :: ipoint,k,l,mm - double precision :: mos_k, mos_l, w_kl - fock_3_w_kl_mo_k_mo_l = 0.d0 - do k = 1, elec_beta_num - do l = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - mos_k = mos_in_r_array_transp(ipoint,k) - mos_l = mos_in_r_array_transp(ipoint,l) - w_kl = x_W_ij_erf_rk(ipoint,mm,l,k) - fock_3_w_kl_mo_k_mo_l(ipoint,mm) += w_kl * mos_k * mos_l - enddo - enddo - enddo - enddo - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_w_ki_wk_a, (n_points_final_grid,3,mo_num, mo_num)] - implicit none - integer :: ipoint,i,a,k,mm - double precision :: w_ki,w_ka - fock_3_w_ki_wk_a = 0.d0 - do i = 1, mo_num - do a = 1, mo_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - do k = 1, elec_beta_num - w_ki = x_W_ij_erf_rk(ipoint,mm,k,i) - w_ka = x_W_ij_erf_rk(ipoint,mm,k,a) - fock_3_w_ki_wk_a(ipoint,mm,a,i) += w_ki * w_ka - enddo - enddo - enddo - enddo - enddo -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_trace_w_tilde, (n_points_final_grid,3)] - implicit none - integer :: ipoint,k,mm - fock_3_trace_w_tilde = 0.d0 - do k = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - fock_3_trace_w_tilde(ipoint,mm) += fock_3_w_ki_wk_a(ipoint,mm,k,k) - enddo - enddo - enddo - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, fock_3_w_kl_wla_phi_k, (n_points_final_grid,3,mo_num)] - implicit none - integer :: ipoint,a,k,mm,l - double precision :: w_kl,w_la, mo_k - fock_3_w_kl_wla_phi_k = 0.d0 - do a = 1, mo_num - do k = 1, elec_beta_num - do l = 1, elec_beta_num - do mm = 1, 3 - do ipoint = 1, n_points_final_grid - w_kl = x_W_ij_erf_rk(ipoint,mm,l,k) - w_la = x_W_ij_erf_rk(ipoint,mm,l,a) - mo_k = mos_in_r_array_transp(ipoint,k) - fock_3_w_kl_wla_phi_k(ipoint,mm,a) += w_kl * w_la * mo_k - enddo - enddo - enddo - enddo - enddo -END_PROVIDER - - - - - diff --git a/plugins/local/tc_scf/integrals_in_r_stuff.irp.f b/plugins/local/tc_scf/integrals_in_r_stuff.irp.f deleted file mode 100644 index 3ce85a97..00000000 --- a/plugins/local/tc_scf/integrals_in_r_stuff.irp.f +++ /dev/null @@ -1,391 +0,0 @@ - -! --- - -BEGIN_PROVIDER [ double precision, tc_scf_dm_in_r, (n_points_final_grid) ] - - implicit none - integer :: i, j - - tc_scf_dm_in_r = 0.d0 - do i = 1, n_points_final_grid - do j = 1, elec_beta_num - tc_scf_dm_in_r(i) += mos_r_in_r_array(j,i) * mos_l_in_r_array(j,i) - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, w_sum_in_r, (n_points_final_grid, 3)] - - implicit none - integer :: ipoint, j, xi - - w_sum_in_r = 0.d0 - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - !w_sum_in_r(ipoint,xi) += x_W_ki_bi_ortho_erf_rk(ipoint,xi,j,j) - w_sum_in_r(ipoint,xi) += x_W_ki_bi_ortho_erf_rk_diag(ipoint,xi,j) - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, ww_sum_in_r, (n_points_final_grid, 3)] - - implicit none - integer :: ipoint, j, xi - double precision :: tmp - - ww_sum_in_r = 0.d0 - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - tmp = x_W_ki_bi_ortho_erf_rk_diag(ipoint,xi,j) - ww_sum_in_r(ipoint,xi) += tmp * tmp - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_r_in_r, (n_points_final_grid, 3, mo_num)] - - implicit none - integer :: i, j, xi, ipoint - - ! TODO: call lapack - - W1_r_in_r = 0.d0 - do i = 1, mo_num - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_r_in_r(ipoint,xi,i) += mos_r_in_r_array_transp(ipoint,j) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,j,i) - enddo - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_l_in_r, (n_points_final_grid, 3, mo_num)] - - implicit none - integer :: i, j, xi, ipoint - - ! TODO: call lapack - - W1_l_in_r = 0.d0 - do i = 1, mo_num - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_l_in_r(ipoint,xi,i) += mos_l_in_r_array_transp(ipoint,j) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,i,j) - enddo - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_in_r, (n_points_final_grid, 3)] - - implicit none - integer :: j, xi, ipoint - - ! TODO: call lapack - - W1_in_r = 0.d0 - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_in_r(ipoint,xi) += W1_l_in_r(ipoint,xi,j) * mos_r_in_r_array_transp(ipoint,j) - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_diag_in_r, (n_points_final_grid, 3)] - - implicit none - integer :: j, xi, ipoint - - ! TODO: call lapack - - W1_diag_in_r = 0.d0 - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_diag_in_r(ipoint,xi) += mos_r_in_r_array_transp(ipoint,j) * mos_l_in_r_array_transp(ipoint,j) * x_W_ki_bi_ortho_erf_rk_diag(ipoint,xi,j) - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, v_sum_in_r, (n_points_final_grid, 3)] - - implicit none - integer :: i, j, xi, ipoint - - ! TODO: call lapack - v_sum_in_r = 0.d0 - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - v_sum_in_r(ipoint,xi) += x_W_ki_bi_ortho_erf_rk(ipoint,xi,i,j) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,j,i) - enddo - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_W1_r_in_r, (n_points_final_grid, 3, mo_num)] - - implicit none - integer :: i, m, xi, ipoint - - ! TODO: call lapack - - W1_W1_r_in_r = 0.d0 - do i = 1, mo_num - do m = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_W1_r_in_r(ipoint,xi,i) += x_W_ki_bi_ortho_erf_rk(ipoint,xi,m,i) * W1_r_in_r(ipoint,xi,m) - enddo - enddo - enddo - enddo - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, W1_W1_l_in_r, (n_points_final_grid, 3, mo_num)] - - implicit none - integer :: i, j, xi, ipoint - - ! TODO: call lapack - - W1_W1_l_in_r = 0.d0 - do i = 1, mo_num - do j = 1, elec_beta_num - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - W1_W1_l_in_r(ipoint,xi,i) += x_W_ki_bi_ortho_erf_rk(ipoint,xi,i,j) * W1_l_in_r(ipoint,xi,j) - enddo - enddo - enddo - enddo - -END_PROVIDER - -! --- - -subroutine direct_term_imj_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j,m = 1, elec_beta_num) < a m j | i m j > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi - double precision :: weight, tmp - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - !integral += ( mos_l_in_r_array(a,ipoint) * mos_r_in_r_array(i,ipoint) * w_sum_in_r(ipoint,xi) * w_sum_in_r(ipoint,xi) & - ! + 2.d0 * tc_scf_dm_in_r(ipoint) * w_sum_in_r(ipoint,xi) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,a,i) ) * weight - - tmp = w_sum_in_r(ipoint,xi) - - integral += ( mos_l_in_r_array_transp(ipoint,a) * mos_r_in_r_array_transp(ipoint,i) * tmp * tmp & - + 2.d0 * tc_scf_dm_in_r(ipoint) * tmp * x_W_ki_bi_ortho_erf_rk(ipoint,xi,a,i) & - ) * weight - enddo - enddo - -end - -! --- - -subroutine exch_term_jmi_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j,m = 1, elec_beta_num) < a m j | j m i > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi, j - double precision :: weight, tmp - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - - tmp = 0.d0 - do j = 1, elec_beta_num - tmp = tmp + x_W_ki_bi_ortho_erf_rk(ipoint,xi,a,j) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,j,i) - enddo - - integral += ( mos_l_in_r_array_transp(ipoint,a) * W1_r_in_r(ipoint,xi,i) * w_sum_in_r(ipoint,xi) & - + tc_scf_dm_in_r(ipoint) * tmp & - + mos_r_in_r_array_transp(ipoint,i) * W1_l_in_r(ipoint,xi,a) * w_sum_in_r(ipoint,xi) & - ) * weight - - enddo - enddo - -end - -! --- - -subroutine exch_term_ijm_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j,m = 1, elec_beta_num) < a m j | i j m > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi - double precision :: weight - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - - integral += ( mos_l_in_r_array_transp(ipoint,a) * mos_r_in_r_array_transp(ipoint,i) * v_sum_in_r(ipoint,xi) & - + 2.d0 * x_W_ki_bi_ortho_erf_rk(ipoint,xi,a,i) * W1_in_r(ipoint,xi) & - ) * weight - - enddo - enddo - -end - -! --- - -subroutine direct_term_ijj_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j = 1, elec_beta_num) < a j j | i j j > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi - double precision :: weight - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - - integral += ( mos_l_in_r_array_transp(ipoint,a) * mos_r_in_r_array_transp(ipoint,i) * ww_sum_in_r(ipoint,xi) & - + 2.d0 * W1_diag_in_r(ipoint, xi) * x_W_ki_bi_ortho_erf_rk(ipoint,xi,a,i) & - ) * weight - enddo - enddo - -end - -! --- - -subroutine cyclic_term_jim_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j,m = 1, elec_beta_num) < a m j | j i m > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi - double precision :: weight - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - - integral += ( mos_l_in_r_array_transp(ipoint,a) * W1_W1_r_in_r(ipoint,xi,i) & - + W1_W1_l_in_r(ipoint,xi,a) * mos_r_in_r_array_transp(ipoint,i) & - + W1_l_in_r(ipoint,xi,a) * W1_r_in_r(ipoint,xi,i) & - ) * weight - - enddo - enddo - -end - -! --- - -subroutine cyclic_term_mji_bi_ortho(a, i, integral) - - BEGIN_DOC - ! computes sum_(j,m = 1, elec_beta_num) < a m j | m j i > with bi ortho mos - END_DOC - - implicit none - integer, intent(in) :: i, a - double precision, intent(out) :: integral - - integer :: ipoint, xi - double precision :: weight - - integral = 0.d0 - do xi = 1, 3 - do ipoint = 1, n_points_final_grid - weight = final_weight_at_r_vector(ipoint) - - integral += ( mos_l_in_r_array_transp(ipoint,a) * W1_W1_r_in_r(ipoint,xi,i) & - + W1_l_in_r(ipoint,xi,a) * W1_r_in_r(ipoint,xi,i) & - + W1_W1_l_in_r(ipoint,xi,a) * mos_r_in_r_array_transp(ipoint,i) & - ) * weight - - enddo - enddo - -end - -! --- - diff --git a/plugins/local/tc_scf/jast_schmos_90.irp.f b/plugins/local/tc_scf/jast_schmos_90.irp.f deleted file mode 100644 index 5c5e625f..00000000 --- a/plugins/local/tc_scf/jast_schmos_90.irp.f +++ /dev/null @@ -1,318 +0,0 @@ - BEGIN_PROVIDER [integer , m_max_sm_7] -&BEGIN_PROVIDER [integer , n_max_sm_7] -&BEGIN_PROVIDER [integer , o_max_sm_7] - implicit none - BEGIN_DOC -! maximum value of the "m", "n" and "o" integer in the Jastrow function as in Eq. (4) -! of Schmidt,Moskowitz, JCP, 93, 4172 (1990) for the SM_7 version of Table IV - END_DOC - m_max_sm_7 = 4 - n_max_sm_7 = 0 - o_max_sm_7 = 4 -END_PROVIDER - - BEGIN_PROVIDER [integer , m_max_sm_9] -&BEGIN_PROVIDER [integer , n_max_sm_9] -&BEGIN_PROVIDER [integer , o_max_sm_9] - implicit none - BEGIN_DOC -! maximum value of the "m", "n" and "o" integer in the Jastrow function as in Eq. (4) -! of Schmidt,Moskowitz, JCP, 93, 4172 (1990) for the SM_9 version of Table IV - END_DOC - m_max_sm_9 = 4 - n_max_sm_9 = 2 - o_max_sm_9 = 4 -END_PROVIDER - - - BEGIN_PROVIDER [integer , m_max_sm_17] -&BEGIN_PROVIDER [integer , n_max_sm_17] -&BEGIN_PROVIDER [integer , o_max_sm_17] - implicit none - BEGIN_DOC -! maximum value of the "m", "n" and "o" integer in the Jastrow function as in Eq. (4) -! of Schmidt,Moskowitz, JCP, 93, 4172 (1990) for the SM_17 version of Table IV - END_DOC - m_max_sm_17 = 6 - n_max_sm_17 = 2 - o_max_sm_17 = 6 -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, c_mn_o_sm_7, (0:m_max_sm_7,0:n_max_sm_7,0:o_max_sm_7,2:10)] - implicit none - BEGIN_DOC - ! - !c_mn_o_7(0:4,0:4,2:10) = coefficient for the SM_7 correlation factor as given is Table IV of - ! Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! the first index (0:4) is the "m" integer for the 1e part - ! the second index(0:0) is the "n" integer for the 1e part WHICH IS ALWAYS SET TO 0 FOR SM_7 - ! the third index (0:4) is the "o" integer for the 2e part - ! the fourth index (2:10) is the nuclear charge of the atom - END_DOC - c_mn_o_sm_7 = 0.d0 - integer :: i - do i = 2, 10 ! loop over nuclear charge - c_mn_o_sm_7(0,0,1,i) = 0.5d0 ! all the linear terms are set to 1/2 to satisfy the anti-parallel spin condition - enddo - ! He atom - ! two electron terms - c_mn_o_sm_7(0,0,2,2) = 0.50516d0 - c_mn_o_sm_7(0,0,3,2) = -0.19313d0 - c_mn_o_sm_7(0,0,4,2) = 0.30276d0 - ! one-electron terms - c_mn_o_sm_7(2,0,0,2) = -0.16995d0 - c_mn_o_sm_7(3,0,0,2) = -0.34505d0 - c_mn_o_sm_7(4,0,0,2) = -0.54777d0 - ! Ne atom - ! two electron terms - c_mn_o_sm_7(0,0,2,10) = -0.792d0 - c_mn_o_sm_7(0,0,3,10) = 1.05232d0 - c_mn_o_sm_7(0,0,4,10) = -0.65615d0 - ! one-electron terms - c_mn_o_sm_7(2,0,0,10) = -0.13312d0 - c_mn_o_sm_7(3,0,0,10) = -0.00131d0 - c_mn_o_sm_7(4,0,0,10) = 0.09083d0 - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, c_mn_o_sm_9, (0:m_max_sm_9,0:n_max_sm_9,0:o_max_sm_9,2:10)] - implicit none - BEGIN_DOC - ! - !c_mn_o_9(0:4,0:4,2:10) = coefficient for the SM_9 correlation factor as given is Table IV of - ! Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! the first index (0:4) is the "m" integer for the 1e part - ! the second index(0:0) is the "n" integer for the 1e part WHICH IS ALWAYS SET TO 0 FOR SM_9 - ! the third index (0:4) is the "o" integer for the 2e part - ! the fourth index (2:10) is the nuclear charge of the atom - END_DOC - c_mn_o_sm_9 = 0.d0 - integer :: i - do i = 2, 10 ! loop over nuclear charge - c_mn_o_sm_9(0,0,1,i) = 0.5d0 ! all the linear terms are set to 1/2 to satisfy the anti-parallel spin condition - enddo - ! He atom - ! two electron terms - c_mn_o_sm_9(0,0,2,2) = 0.50516d0 - c_mn_o_sm_9(0,0,3,2) = -0.19313d0 - c_mn_o_sm_9(0,0,4,2) = 0.30276d0 - ! one-electron terms - c_mn_o_sm_9(2,0,0,2) = -0.16995d0 - c_mn_o_sm_9(3,0,0,2) = -0.34505d0 - c_mn_o_sm_9(4,0,0,2) = -0.54777d0 - ! Ne atom - ! two electron terms - c_mn_o_sm_9(0,0,2,10) = -0.792d0 - c_mn_o_sm_9(0,0,3,10) = 1.05232d0 - c_mn_o_sm_9(0,0,4,10) = -0.65615d0 - ! one-electron terms - c_mn_o_sm_9(2,0,0,10) = -0.13312d0 - c_mn_o_sm_9(3,0,0,10) = -0.00131d0 - c_mn_o_sm_9(4,0,0,10) = 0.09083d0 - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, c_mn_o_sm_17, (0:m_max_sm_17,0:n_max_sm_17,0:o_max_sm_17,2:10)] - implicit none - BEGIN_DOC - ! - !c_mn_o_17(0:4,0:4,2:10) = coefficient for the SM_17 correlation factor as given is Table IV of - ! Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! the first index (0:4) is the "m" integer for the 1e part - ! the second index(0:0) is the "n" integer for the 1e part WHICH IS ALWAYS SET TO 0 FOR SM_17 - ! the third index (0:4) is the "o" integer for the 2e part - ! the fourth index (2:10) is the nuclear charge of the atom - END_DOC - c_mn_o_sm_17 = 0.d0 - integer :: i - do i = 2, 10 ! loop over nuclear charge - c_mn_o_sm_17(0,0,1,i) = 0.5d0 ! all the linear terms are set to 1/2 to satisfy the anti-parallel spin condition - enddo - ! He atom - ! two electron terms - c_mn_o_sm_17(0,0,2,2) = 0.09239d0 - c_mn_o_sm_17(0,0,3,2) = -0.38664d0 - c_mn_o_sm_17(0,0,4,2) = 0.95764d0 - ! one-electron terms - c_mn_o_sm_17(2,0,0,2) = 0.23208d0 - c_mn_o_sm_17(3,0,0,2) = -0.45032d0 - c_mn_o_sm_17(4,0,0,2) = 0.82777d0 - c_mn_o_sm_17(2,2,0,2) = -4.15388d0 - ! ee-n terms - c_mn_o_sm_17(2,0,2,2) = 0.80622d0 - c_mn_o_sm_17(2,2,2,2) = 10.19704d0 - c_mn_o_sm_17(4,0,2,2) = -4.96259d0 - c_mn_o_sm_17(2,0,4,2) = -1.35647d0 - c_mn_o_sm_17(4,2,2,2) = -5.90907d0 - c_mn_o_sm_17(6,0,2,2) = 0.90343d0 - c_mn_o_sm_17(4,0,4,2) = 5.50739d0 - c_mn_o_sm_17(2,2,4,2) = -0.03154d0 - c_mn_o_sm_17(2,0,6,2) = -1.1051860 - - - ! Ne atom - ! two electron terms - c_mn_o_sm_17(0,0,2,10) = -0.80909d0 - c_mn_o_sm_17(0,0,3,10) = -0.00219d0 - c_mn_o_sm_17(0,0,4,10) = 0.59188d0 - ! one-electron terms - c_mn_o_sm_17(2,0,0,10) = -0.00567d0 - c_mn_o_sm_17(3,0,0,10) = 0.14011d0 - c_mn_o_sm_17(4,0,0,10) = -0.05671d0 - c_mn_o_sm_17(2,2,0,10) = -3.33767d0 - ! ee-n terms - c_mn_o_sm_17(2,0,2,10) = 1.95067d0 - c_mn_o_sm_17(2,2,2,10) = 6.83340d0 - c_mn_o_sm_17(4,0,2,10) = -3.29231d0 - c_mn_o_sm_17(2,0,4,10) = -2.44998d0 - c_mn_o_sm_17(4,2,2,10) = -2.13029d0 - c_mn_o_sm_17(6,0,2,10) = 2.25768d0 - c_mn_o_sm_17(4,0,4,10) = 1.97951d0 - c_mn_o_sm_17(2,2,4,10) = -2.0924160 - c_mn_o_sm_17(2,0,6,10) = 0.35493d0 - -END_PROVIDER - - BEGIN_PROVIDER [ double precision, b_I_sm_90,(2:10)] -&BEGIN_PROVIDER [ double precision, d_I_sm_90,(2:10)] - implicit none - BEGIN_DOC -! "b_I" and "d_I" parameters of Eqs. (4) and (5) of Schmidt,Moskowitz, JCP, 93, 4172 (1990) - END_DOC - b_I_sm_90 = 1.d0 - d_I_sm_90 = 1.d0 - -END_PROVIDER - -subroutine get_full_sm_90_jastrow(r1,r2,rI,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - implicit none - double precision, intent(in) :: r1(3),r2(3),rI(3) - integer, intent(in) :: sm_j, i_charge - double precision, intent(out):: j_1e,j_2e,j_een,j_tot - BEGIN_DOC - ! Jastrow function as in Eq. (4) of Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! the i_charge variable is the integer specifying the charge of the atom for the Jastrow - ! the sm_j integer variable represents the "quality" of the jastrow : sm_j = 7, 9, 17 - END_DOC - double precision :: r_inucl,r_jnucl,r_ij,b_I, d_I - b_I = b_I_sm_90(i_charge) - d_I = d_I_sm_90(i_charge) - call get_rescaled_variables_j_sm_90(r1,r2,rI,b_I,d_I,r_inucl,r_jnucl,r_ij) - call jastrow_func_sm_90(r_inucl,r_jnucl,r_ij,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) -end - -subroutine get_rescaled_variables_j_sm_90(r1,r2,rI,b_I,d_I,r_inucl,r_jnucl,r_ij) - implicit none - BEGIN_DOC - ! rescaled variables of Eq. (5) and (6) of Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! the "b_I" and "d_I" parameters are the same as in Eqs. (5) and (6) - END_DOC - double precision, intent(in) :: r1(3),r2(3),rI(3) - double precision, intent(in) :: b_I, d_I - double precision, intent(out):: r_inucl,r_jnucl,r_ij - double precision :: rin, rjn, rij - integer :: i - rin = 0.d0 - rjn = 0.d0 - rij = 0.d0 - do i = 1,3 - rin += (r1(i) - rI(i)) * (r1(i) - rI(i)) - rjn += (r2(i) - rI(i)) * (r2(i) - rI(i)) - rij += (r2(i) - r1(i)) * (r2(i) - r1(i)) - enddo - rin = dsqrt(rin) - rjn = dsqrt(rjn) - rij = dsqrt(rij) - r_inucl = b_I * rin/(1.d0 + b_I * rin) - r_jnucl = b_I * rjn/(1.d0 + b_I * rjn) - r_ij = d_I * rij/(1.d0 + b_I * rij) -end - -subroutine jastrow_func_sm_90(r_inucl,r_jnucl,r_ij,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - implicit none - BEGIN_DOC - ! Jastrow function as in Eq. (4) of Schmidt,Moskowitz, JCP, 93, 4172 (1990) - ! Here the r_inucl, r_jnucl are the rescaled variables as defined in Eq. (5) with "b_I" - ! r_ij is the rescaled variable as defined in Eq. (6) with "d_I" - ! the i_charge variable is the integer specifying the charge of the atom for the Jastrow - ! the sm_j integer variable represents the "quality" of the jastrow : sm_j = 7, 9, 17 - ! - ! it returns the j_1e : sum of terms with "o" = "n" = 0, "m" /= 0, - ! j_2e : sum of terms with "m" = "n" = 0, "o" /= 0, - ! j_een : sum of terms with "m" /=0, "n" /= 0, "o" /= 0, - ! j_tot : the total sum - END_DOC - double precision, intent(in) :: r_inucl,r_jnucl,r_ij - integer, intent(in) :: sm_j,i_charge - double precision, intent(out):: j_1e,j_2e,j_een,j_tot - j_1e = 0.D0 - j_2e = 0.D0 - j_een = 0.D0 - double precision :: delta_mn,jastrow_sm_90_atomic - integer :: m,n,o -BEGIN_TEMPLATE - ! pure 2e part - n = 0 - m = 0 - if(sm_j == $X )then - do o = 1, o_max_sm_$X - if(dabs(c_mn_o_sm_$X(m,n,o,i_charge)).lt.1.d-10)cycle - j_2e += c_mn_o_sm_$X(m,n,o,i_charge) * jastrow_sm_90_atomic(m,n,o,i_charge,r_inucl,r_jnucl,r_ij) - enddo -! else -! print*,'sm_j = ',sm_j -! print*,'not implemented, stop' -! stop - endif - ! pure one-e part - o = 0 - if(sm_j == $X)then - do n = 2, n_max_sm_$X - do m = 2, m_max_sm_$X - j_1e += c_mn_o_sm_$X(m,n,o,i_charge) * jastrow_sm_90_atomic(m,n,o,i_charge,r_inucl,r_jnucl,r_ij) - enddo - enddo -! else -! print*,'sm_j = ',sm_j -! print*,'not implemented, stop' -! stop - endif - ! e-e-n part - if(sm_j == $X)then - do o = 1, o_max_sm_$X - do m = 2, m_max_sm_$X - do n = 2, n_max_sm_$X - j_een += c_mn_o_sm_$X(m,n,o,i_charge) * jastrow_sm_90_atomic(m,n,o,i_charge,r_inucl,r_jnucl,r_ij) - enddo - enddo - enddo - else -! print*,'sm_j = ',sm_j -! print*,'not implemented, stop' -! stop - endif - j_tot = j_1e + j_2e + j_een -SUBST [ X] - 7 ;; - 9 ;; - 17 ;; -END_TEMPLATE -end - -double precision function jastrow_sm_90_atomic(m,n,o,i_charge,r_inucl,r_jnucl,r_ij) - implicit none - BEGIN_DOC -! contribution to the function of Eq. (4) of Schmidt,Moskowitz, JCP, 93, 4172 (1990) -! for a given m,n,o and atom - END_DOC - double precision, intent(in) :: r_inucl,r_jnucl,r_ij - integer , intent(in) :: m,n,o,i_charge - double precision :: delta_mn - if(m==n)then - delta_mn = 0.5d0 - else - delta_mn = 1.D0 - endif - jastrow_sm_90_atomic = delta_mn * (r_inucl**m * r_jnucl**n + r_jnucl**m * r_inucl**n)*r_ij**o -end diff --git a/plugins/local/tc_scf/plot_j_schMos.irp.f b/plugins/local/tc_scf/plot_j_schMos.irp.f deleted file mode 100644 index eda0dd25..00000000 --- a/plugins/local/tc_scf/plot_j_schMos.irp.f +++ /dev/null @@ -1,69 +0,0 @@ -program plot_j - implicit none - double precision :: r1(3),rI(3),r2(3) - double precision :: r12,dx,xmax, j_1e,j_2e,j_een,j_tot - double precision :: j_mu_F_x_j - integer :: i,nx,m,i_charge,sm_j - - character*(128) :: output - integer :: i_unit_output_He_sm_7,i_unit_output_Ne_sm_7 - integer :: i_unit_output_He_sm_17,i_unit_output_Ne_sm_17 - integer :: getUnitAndOpen - output='J_SM_7_He' - i_unit_output_He_sm_7 = getUnitAndOpen(output,'w') - output='J_SM_7_Ne' - i_unit_output_Ne_sm_7 = getUnitAndOpen(output,'w') - - output='J_SM_17_He' - i_unit_output_He_sm_17 = getUnitAndOpen(output,'w') - output='J_SM_17_Ne' - i_unit_output_Ne_sm_17 = getUnitAndOpen(output,'w') - - rI = 0.d0 - r1 = 0.d0 - r2 = 0.d0 - r1(1) = 1.5d0 - xmax = 20.d0 - r2(1) = -xmax*0.5d0 - nx = 1000 - dx = xmax/dble(nx) - do i = 1, nx - r12 = 0.d0 - do m = 1, 3 - r12 += (r1(m) - r2(m))*(r1(m) - r2(m)) - enddo - r12 = dsqrt(r12) - double precision :: jmu,env_nucl,jmu_env,jmu_scaled, jmu_scaled_env - double precision :: b_I,d_I,r_inucl,r_jnucl,r_ij - b_I = 1.D0 - d_I = 1.D0 - call get_rescaled_variables_j_sm_90(r1,r2,rI,b_I,d_I,r_inucl,r_jnucl,r_ij) - jmu=j_mu_F_x_j(r12) - jmu_scaled=j_mu_F_x_j(r_ij) - jmu_env = jmu * env_nucl(r1) * env_nucl(r2) -! jmu_scaled_env= jmu_scaled * (1.d0 - env_coef(1) * dexp(-env_expo(1)*r_inucl**2)) * (1.d0 - env_coef(1) * dexp(-env_expo(1)*r_jnucl**2)) - jmu_scaled_env= jmu_scaled * env_nucl(r1) * env_nucl(r2) - ! He - i_charge = 2 - ! SM 7 Jastrow - sm_j = 7 - call get_full_sm_90_jastrow(r1,r2,rI,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - write(i_unit_output_He_sm_7,'(100(F16.10,X))')r2(1),r12,j_mu_F_x_j(r12), j_1e,j_2e,j_een,j_tot,jmu_env,jmu_scaled,jmu_scaled_env - ! SM 17 Jastrow - sm_j = 17 - call get_full_sm_90_jastrow(r1,r2,rI,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - write(i_unit_output_He_sm_17,'(100(F16.10,X))')r2(1),r12,j_mu_F_x_j(r12), j_1e,j_2e,j_een,j_tot,jmu_env,jmu_scaled,jmu_scaled_env - ! Ne - i_charge = 10 - ! SM 7 Jastrow - sm_j = 7 - call get_full_sm_90_jastrow(r1,r2,rI,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - write(i_unit_output_Ne_sm_7,'(100(F16.10,X))')r2(1),r12,j_mu_F_x_j(r12), j_1e,j_2e,j_een,j_tot,jmu_env,jmu_scaled,jmu_scaled_env - ! SM 17 Jastrow - sm_j = 17 - call get_full_sm_90_jastrow(r1,r2,rI,sm_j,i_charge, j_1e,j_2e,j_een,j_tot) - write(i_unit_output_Ne_sm_17,'(100(F16.10,X))')r2(1),r12,j_mu_F_x_j(r12), j_1e,j_2e,j_een,j_tot,jmu_env,jmu_scaled,jmu_scaled_env - r2(1) += dx - enddo - -end diff --git a/plugins/local/tc_scf/print_fit_param.irp.f b/plugins/local/tc_scf/print_fit_param.irp.f deleted file mode 100644 index e62f0dde..00000000 --- a/plugins/local/tc_scf/print_fit_param.irp.f +++ /dev/null @@ -1,59 +0,0 @@ -program print_fit_param - - BEGIN_DOC -! TODO : Put the documentation of the program here - END_DOC - - implicit none - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - !call create_guess - !call orthonormalize_mos - - call main() - -end - -! --- - -subroutine main() - - implicit none - integer :: i - - mu_erf = 1.d0 - touch mu_erf - - print *, ' fit for (1 - erf(x))^2' - do i = 1, n_max_fit_slat - print*, expo_gauss_1_erf_x_2(i), coef_gauss_1_erf_x_2(i) - enddo - - print *, '' - print *, ' fit for [x * (1 - erf(x)) - 1/sqrt(pi) * exp(-x**2)]' - do i = 1, n_max_fit_slat - print *, expo_gauss_j_mu_x(i), 2.d0 * coef_gauss_j_mu_x(i) - enddo - - print *, '' - print *, ' fit for [x * (1 - erf(x)) - 1/sqrt(pi) * exp(-x**2)]^2' - do i = 1, n_max_fit_slat - print *, expo_gauss_j_mu_x_2(i), 4.d0 * coef_gauss_j_mu_x_2(i) - enddo - - print *, '' - print *, ' fit for [x * (1 - erf(x)) - 1/sqrt(pi) * exp(-x**2)] x [1 - erf(mu * r12)]' - do i = 1, n_max_fit_slat - print *, expo_gauss_j_mu_1_erf(i), 4.d0 * coef_gauss_j_mu_1_erf(i) - enddo - - return -end subroutine main - -! --- - diff --git a/plugins/local/tc_scf/print_tcscf_energy.irp.f b/plugins/local/tc_scf/print_tcscf_energy.irp.f deleted file mode 100644 index 6f9afd9a..00000000 --- a/plugins/local/tc_scf/print_tcscf_energy.irp.f +++ /dev/null @@ -1,55 +0,0 @@ -program print_tcscf_energy - - BEGIN_DOC - ! TODO : Put the documentation of the program here - END_DOC - - implicit none - - print *, 'Hello world' - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - call main() - -end - -! --- - -subroutine main() - - implicit none - double precision :: etc_tot, etc_1e, etc_2e, etc_3e - - PROVIDE j2e_type mu_erf - PROVIDE j1e_type j1e_coef j1e_expo - PROVIDE env_type env_coef env_expo - - print*, ' j2e_type = ', j2e_type - print*, ' j1e_type = ', j1e_type - print*, ' env_type = ', env_type - - print*, ' mu_erf = ', mu_erf - - etc_tot = TC_HF_energy - etc_1e = TC_HF_one_e_energy - etc_2e = TC_HF_two_e_energy - etc_3e = 0.d0 - if(three_body_h_tc) then - !etc_3e = diag_three_elem_hf - etc_3e = tcscf_energy_3e_naive - endif - - print *, " E_TC = ", etc_tot - print *, " E_1e = ", etc_1e - print *, " E_2e = ", etc_2e - print *, " E_3e = ", etc_3e - - return -end subroutine main - -! --- - diff --git a/plugins/local/tc_scf/rh_tcscf_diis.irp.f b/plugins/local/tc_scf/rh_tcscf_diis.irp.f index 853c4ab5..1cade02a 100644 --- a/plugins/local/tc_scf/rh_tcscf_diis.irp.f +++ b/plugins/local/tc_scf/rh_tcscf_diis.irp.f @@ -61,7 +61,7 @@ subroutine rh_tcscf_diis() etc_tot = TC_HF_energy etc_1e = TC_HF_one_e_energy etc_2e = TC_HF_two_e_energy - etc_3e = diag_three_elem_hf + etc_3e = TC_HF_three_e_energy !tc_grad = grad_non_hermit er_DIIS = maxval(abs(FQS_SQF_mo)) e_delta = dabs(etc_tot - e_save) @@ -189,7 +189,7 @@ subroutine rh_tcscf_diis() etc_tot = TC_HF_energy etc_1e = TC_HF_one_e_energy etc_2e = TC_HF_two_e_energy - etc_3e = diag_three_elem_hf + etc_3e = TC_HF_three_e_energy !tc_grad = grad_non_hermit er_DIIS = maxval(abs(FQS_SQF_mo)) e_delta = dabs(etc_tot - e_save) diff --git a/plugins/local/tc_scf/rh_tcscf_simple.irp.f b/plugins/local/tc_scf/rh_tcscf_simple.irp.f deleted file mode 100644 index 2c2cf2c2..00000000 --- a/plugins/local/tc_scf/rh_tcscf_simple.irp.f +++ /dev/null @@ -1,129 +0,0 @@ -! --- - -subroutine rh_tcscf_simple() - - implicit none - integer :: i, j, it, dim_DIIS - double precision :: t0, t1 - double precision :: e_save, e_delta, rho_delta - double precision :: etc_tot, etc_1e, etc_2e, etc_3e, tc_grad - double precision :: er_DIIS - double precision, allocatable :: rho_old(:,:), rho_new(:,:) - - allocate(rho_old(ao_num,ao_num), rho_new(ao_num,ao_num)) - - it = 0 - e_save = 0.d0 - dim_DIIS = 0 - - ! --- - - if(.not. bi_ortho) then - print *, ' grad_hermit = ', grad_hermit - call save_good_hermit_tc_eigvectors - TOUCH mo_coef - call save_mos - endif - - ! --- - - if(bi_ortho) then - - PROVIDE level_shift_tcscf - PROVIDE mo_l_coef mo_r_coef - - write(6, '(A4,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A4, 1X, A8)') & - '====', '================', '================', '================', '================', '================' & - , '================', '================', '================', '====', '========' - - write(6, '(A4,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A4, 1X, A8)') & - ' it ', ' SCF TC Energy ', ' E(1e) ', ' E(2e) ', ' E(3e) ', ' energy diff ' & - , ' gradient ', ' DIIS error ', ' level shift ', 'DIIS', ' WT (m)' - - write(6, '(A4,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A16,1X, A4, 1X, A8)') & - '====', '================', '================', '================', '================', '================' & - , '================', '================', '================', '====', '========' - - - ! first iteration (HF orbitals) - call wall_time(t0) - - etc_tot = TC_HF_energy - etc_1e = TC_HF_one_e_energy - etc_2e = TC_HF_two_e_energy - etc_3e = 0.d0 - if(three_body_h_tc) then - etc_3e = diag_three_elem_hf - endif - tc_grad = grad_non_hermit - er_DIIS = maxval(abs(FQS_SQF_mo)) - e_delta = dabs(etc_tot - e_save) - e_save = etc_tot - - call wall_time(t1) - write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') & - it, etc_tot, etc_1e, etc_2e, etc_3e, e_delta, tc_grad, er_DIIS, level_shift_tcscf, dim_DIIS, (t1-t0)/60.d0 - - do while(tc_grad .gt. dsqrt(thresh_tcscf)) - call wall_time(t0) - - it += 1 - if(it > n_it_tcscf_max) then - print *, ' max of TCSCF iterations is reached ', n_it_TCSCF_max - stop - endif - - mo_l_coef = fock_tc_leigvec_ao - mo_r_coef = fock_tc_reigvec_ao - call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef) - call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef) - TOUCH mo_l_coef mo_r_coef - - etc_tot = TC_HF_energy - etc_1e = TC_HF_one_e_energy - etc_2e = TC_HF_two_e_energy - etc_3e = 0.d0 - if(three_body_h_tc) then - etc_3e = diag_three_elem_hf - endif - tc_grad = grad_non_hermit - er_DIIS = maxval(abs(FQS_SQF_mo)) - e_delta = dabs(etc_tot - e_save) - e_save = etc_tot - - call ezfio_set_tc_scf_tcscf_energy(etc_tot) - - call wall_time(t1) - write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') & - it, etc_tot, etc_1e, etc_2e, etc_3e, e_delta, tc_grad, er_DIIS, level_shift_tcscf, dim_DIIS, (t1-t0)/60.d0 - enddo - - else - - do while( (grad_hermit.gt.dsqrt(thresh_tcscf)) .and. (it.lt.n_it_tcscf_max) ) - print*,'grad_hermit = ',grad_hermit - it += 1 - print *, 'iteration = ', it - print *, '***' - print *, 'TC HF total energy = ', TC_HF_energy - print *, 'TC HF 1 e energy = ', TC_HF_one_e_energy - print *, 'TC HF 2 e energy = ', TC_HF_two_e_energy - print *, 'TC HF 3 body = ', diag_three_elem_hf - print *, '***' - print *, '' - call save_good_hermit_tc_eigvectors - TOUCH mo_coef - call save_mos - enddo - - endif - - print *, ' TCSCF Simple converged !' - !call print_energy_and_mos(good_angles) - - deallocate(rho_old, rho_new) - -end - -! --- - diff --git a/plugins/local/tc_scf/rotate_tcscf_orbitals.irp.f b/plugins/local/tc_scf/rotate_tcscf_orbitals.irp.f deleted file mode 100644 index 0f2663e5..00000000 --- a/plugins/local/tc_scf/rotate_tcscf_orbitals.irp.f +++ /dev/null @@ -1,369 +0,0 @@ - -! --- - -program rotate_tcscf_orbitals - - BEGIN_DOC - ! TODO : Rotate the bi-orthonormal orbitals in order to minimize left-right angles when degenerate - END_DOC - - implicit none - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - bi_ortho = .True. - touch bi_ortho - - call minimize_tc_orb_angles() - !call maximize_overlap() - -end - -! --- - -subroutine maximize_overlap() - - implicit none - integer :: i, m, n - double precision :: accu_d, accu_nd - double precision, allocatable :: C(:,:), R(:,:), L(:,:), W(:,:), e(:) - double precision, allocatable :: S(:,:) - - n = ao_num - m = mo_num - - allocate(L(n,m), R(n,m), C(n,m), W(n,n), e(m)) - L = mo_l_coef - R = mo_r_coef - C = mo_coef - W = ao_overlap - - print*, ' fock matrix diag elements' - do i = 1, m - e(i) = Fock_matrix_tc_mo_tot(i,i) - print*, e(i) - enddo - - ! --- - - print *, ' overlap before :' - print *, ' ' - - allocate(S(m,m)) - - call LTxSxR(n, m, L, W, R, S) - !print*, " L.T x R" - !do i = 1, m - ! write(*, '(100(F16.10,X))') S(i,i) - !enddo - call LTxSxR(n, m, L, W, C, S) - print*, " L.T x C" - do i = 1, m - write(*, '(100(F16.10,X))') S(i,:) - enddo - call LTxSxR(n, m, C, W, R, S) - print*, " C.T x R" - do i = 1, m - write(*, '(100(F16.10,X))') S(i,:) - enddo - - deallocate(S) - - ! --- - - call rotate_degen_eigvec_to_maximize_overlap(n, m, e, C, W, L, R) - - ! --- - - print *, ' overlap after :' - print *, ' ' - - allocate(S(m,m)) - - call LTxSxR(n, m, L, W, R, S) - !print*, " L.T x R" - !do i = 1, m - ! write(*, '(100(F16.10,X))') S(i,i) - !enddo - call LTxSxR(n, m, L, W, C, S) - print*, " L.T x C" - do i = 1, m - write(*, '(100(F16.10,X))') S(i,:) - enddo - call LTxSxR(n, m, C, W, R, S) - print*, " C.T x R" - do i = 1, m - write(*, '(100(F16.10,X))') S(i,:) - enddo - - deallocate(S) - - ! --- - - mo_l_coef = L - mo_r_coef = R - call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef) - call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef) - - ! --- - - deallocate(L, R, C, W, e) - -end subroutine maximize_overlap - -! --- - -subroutine rotate_degen_eigvec_to_maximize_overlap(n, m, e0, C0, W0, L0, R0) - - implicit none - - integer, intent(in) :: n, m - double precision, intent(in) :: e0(m), W0(n,n), C0(n,m) - double precision, intent(inout) :: L0(n,m), R0(n,m) - - - integer :: i, j, k, kk, mm, id1, tot_deg - double precision :: ei, ej, de, de_thr - integer, allocatable :: deg_num(:) - double precision, allocatable :: L(:,:), R(:,:), C(:,:), Lnew(:,:), Rnew(:,:), tmp(:,:) - !double precision, allocatable :: S(:,:), Snew(:,:), T(:,:), Ttmp(:,:), Stmp(:,:) - double precision, allocatable :: S(:,:), Snew(:,:), T(:,:), Ttmp(:,:), Stmp(:,:) - !real*8 :: S(m,m), Snew(m,m), T(m,m) - - id1 = 700 - allocate(S(id1,id1), Snew(id1,id1), T(id1,id1)) - - ! --- - - allocate( deg_num(m) ) - do i = 1, m - deg_num(i) = 1 - enddo - - de_thr = thr_degen_tc - - do i = 1, m-1 - ei = e0(i) - - ! already considered in degen vectors - if(deg_num(i).eq.0) cycle - - do j = i+1, m - ej = e0(j) - de = dabs(ei - ej) - - if(de .lt. de_thr) then - deg_num(i) = deg_num(i) + 1 - deg_num(j) = 0 - endif - - enddo - enddo - - tot_deg = 0 - do i = 1, m - if(deg_num(i).gt.1) then - print *, ' degen on', i, deg_num(i) - tot_deg = tot_deg + 1 - endif - enddo - - if(tot_deg .eq. 0) then - print *, ' no degen' - return - endif - - ! --- - - do i = 1, m - mm = deg_num(i) - - if(mm .gt. 1) then - - allocate(L(n,mm), R(n,mm), C(n,mm)) - do j = 1, mm - L(1:n,j) = L0(1:n,i+j-1) - R(1:n,j) = R0(1:n,i+j-1) - C(1:n,j) = C0(1:n,i+j-1) - enddo - - ! --- - - ! C.T x W0 x R - allocate(tmp(mm,n), Stmp(mm,mm)) - call dgemm( 'T', 'N', mm, n, n, 1.d0 & - , C, size(C, 1), W0, size(W0, 1) & - , 0.d0, tmp, size(tmp, 1) ) - call dgemm( 'N', 'N', mm, mm, n, 1.d0 & - , tmp, size(tmp, 1), R, size(R, 1) & - , 0.d0, Stmp, size(Stmp, 1) ) - deallocate(C, tmp) - - S = 0.d0 - do k = 1, mm - do kk = 1, mm - S(kk,k) = Stmp(kk,k) - enddo - enddo - deallocate(Stmp) - - !print*, " overlap bef" - !do k = 1, mm - ! write(*, '(100(F16.10,X))') (S(k,kk), kk=1, mm) - !enddo - - T = 0.d0 - Snew = 0.d0 - call maxovl(mm, mm, S, T, Snew) - - !print*, " overlap aft" - !do k = 1, mm - ! write(*, '(100(F16.10,X))') (Snew(k,kk), kk=1, mm) - !enddo - - allocate(Ttmp(mm,mm)) - Ttmp(1:mm,1:mm) = T(1:mm,1:mm) - - allocate(Lnew(n,mm), Rnew(n,mm)) - call dgemm( 'N', 'N', n, mm, mm, 1.d0 & - , R, size(R, 1), Ttmp(1,1), size(Ttmp, 1) & - , 0.d0, Rnew, size(Rnew, 1) ) - call dgemm( 'N', 'N', n, mm, mm, 1.d0 & - , L, size(L, 1), Ttmp(1,1), size(Ttmp, 1) & - , 0.d0, Lnew, size(Lnew, 1) ) - - deallocate(L, R) - deallocate(Ttmp) - - ! --- - - do j = 1, mm - L0(1:n,i+j-1) = Lnew(1:n,j) - R0(1:n,i+j-1) = Rnew(1:n,j) - enddo - deallocate(Lnew, Rnew) - - endif - enddo - - deallocate(S, Snew, T) - -end subroutine rotate_degen_eigvec_to_maximize_overlap - -! --- - -subroutine fix_right_to_one() - - implicit none - integer :: i, j, m, n, mm, tot_deg - double precision :: accu_d, accu_nd - double precision :: de_thr, ei, ej, de - integer, allocatable :: deg_num(:) - double precision, allocatable :: R0(:,:), L0(:,:), W(:,:), e0(:) - double precision, allocatable :: R(:,:), L(:,:), S(:,:), Stmp(:,:), tmp(:,:) - - n = ao_num - m = mo_num - - allocate(L0(n,m), R0(n,m), W(n,n), e0(m)) - L0 = mo_l_coef - R0 = mo_r_coef - W = ao_overlap - - print*, ' fock matrix diag elements' - do i = 1, m - e0(i) = Fock_matrix_tc_mo_tot(i,i) - print*, e0(i) - enddo - - ! --- - - allocate( deg_num(m) ) - do i = 1, m - deg_num(i) = 1 - enddo - - de_thr = 1d-6 - - do i = 1, m-1 - ei = e0(i) - - ! already considered in degen vectors - if(deg_num(i).eq.0) cycle - - do j = i+1, m - ej = e0(j) - de = dabs(ei - ej) - - if(de .lt. de_thr) then - deg_num(i) = deg_num(i) + 1 - deg_num(j) = 0 - endif - - enddo - enddo - - deallocate(e0) - - tot_deg = 0 - do i = 1, m - if(deg_num(i).gt.1) then - print *, ' degen on', i, deg_num(i) - tot_deg = tot_deg + 1 - endif - enddo - - if(tot_deg .eq. 0) then - print *, ' no degen' - return - endif - - ! --- - - do i = 1, m - mm = deg_num(i) - - if(mm .gt. 1) then - - allocate(L(n,mm), R(n,mm)) - do j = 1, mm - L(1:n,j) = L0(1:n,i+j-1) - R(1:n,j) = R0(1:n,i+j-1) - enddo - - ! --- - - call impose_weighted_orthog_svd(n, mm, W, R) - call impose_weighted_biorthog_qr(n, mm, thresh_biorthog_diag, thresh_biorthog_nondiag, R, W, L) - - ! --- - - do j = 1, mm - L0(1:n,i+j-1) = L(1:n,j) - R0(1:n,i+j-1) = R(1:n,j) - enddo - deallocate(L, R) - - endif - enddo - - call check_weighted_biorthog_binormalize(n, m, L0, W, R0, thresh_biorthog_diag, thresh_biorthog_nondiag, .true.) - - deallocate(W, deg_num) - - mo_l_coef = L0 - mo_r_coef = R0 - deallocate(L0, R0) - - call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef) - call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef) - print *, ' orbitals are rotated ' - - return -end subroutine fix_right_to_one - -! --- diff --git a/plugins/local/tc_scf/tc_petermann_factor.irp.f b/plugins/local/tc_scf/tc_petermann_factor.irp.f deleted file mode 100644 index 14fff898..00000000 --- a/plugins/local/tc_scf/tc_petermann_factor.irp.f +++ /dev/null @@ -1,91 +0,0 @@ - -! --- - -program tc_petermann_factor - - BEGIN_DOC - ! TODO : Put the documentation of the program here - END_DOC - - implicit none - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - call main() - -end - -! --- - -subroutine main() - - implicit none - integer :: i, j - double precision :: Pf_diag_av - double precision, allocatable :: Sl(:,:), Sr(:,:), Pf(:,:) - - allocate(Sl(mo_num,mo_num), Sr(mo_num,mo_num), Pf(mo_num,mo_num)) - - - call LTxSxR(ao_num, mo_num, mo_l_coef, ao_overlap, mo_r_coef, Sl) - !call dgemm( "T", "N", mo_num, mo_num, ao_num, 1.d0 & - ! , mo_l_coef, size(mo_l_coef, 1), mo_l_coef, size(mo_l_coef, 1) & - ! , 0.d0, Sl, size(Sl, 1) ) - - print *, '' - print *, ' left-right orthog matrix:' - do i = 1, mo_num - write(*,'(100(F8.4,X))') Sl(:,i) - enddo - - call LTxSxR(ao_num, mo_num, mo_l_coef, ao_overlap, mo_l_coef, Sl) - !call dgemm( "T", "N", mo_num, mo_num, ao_num, 1.d0 & - ! , mo_l_coef, size(mo_l_coef, 1), mo_l_coef, size(mo_l_coef, 1) & - ! , 0.d0, Sl, size(Sl, 1) ) - - print *, '' - print *, ' left-orthog matrix:' - do i = 1, mo_num - write(*,'(100(F8.4,X))') Sl(:,i) - enddo - - call LTxSxR(ao_num, mo_num, mo_r_coef, ao_overlap, mo_r_coef, Sr) -! call dgemm( "T", "N", mo_num, mo_num, ao_num, 1.d0 & -! , mo_r_coef, size(mo_r_coef, 1), mo_r_coef, size(mo_r_coef, 1) & -! , 0.d0, Sr, size(Sr, 1) ) - - print *, '' - print *, ' right-orthog matrix:' - do i = 1, mo_num - write(*,'(100(F8.4,X))') Sr(:,i) - enddo - - print *, '' - print *, ' Petermann matrix:' - do i = 1, mo_num - do j = 1, mo_num - Pf(j,i) = Sl(j,i) * Sr(j,i) - enddo - write(*,'(100(F8.4,X))') Pf(:,i) - enddo - - Pf_diag_av = 0.d0 - do i = 1, mo_num - Pf_diag_av = Pf_diag_av + Pf(i,i) - enddo - Pf_diag_av = Pf_diag_av / dble(mo_num) - - print *, '' - print *, ' mean of the diagonal Petermann factor = ', Pf_diag_av - - deallocate(Sl, Sr, Pf) - - return -end subroutine - -! --- - diff --git a/plugins/local/tc_scf/tc_scf.irp.f b/plugins/local/tc_scf/tc_scf.irp.f index ee8e8dad..f099b90e 100644 --- a/plugins/local/tc_scf/tc_scf.irp.f +++ b/plugins/local/tc_scf/tc_scf.irp.f @@ -10,13 +10,10 @@ program tc_scf integer :: i logical :: good_angles - PROVIDE j1e_type - PROVIDE j2e_type - PROVIDE tcscf_algorithm - print *, ' TC-SCF with:' - print *, ' j1e_type = ', j1e_type print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type write(json_unit,json_array_open_fmt) 'tc-scf' @@ -29,7 +26,6 @@ program tc_scf call write_int(6, my_n_pt_r_grid, 'radial external grid over') call write_int(6, my_n_pt_a_grid, 'angular external grid over') - if(tc_integ_type .eq. "numeric") then my_extra_grid_becke = .True. PROVIDE tc_grid2_a tc_grid2_r @@ -41,17 +37,7 @@ program tc_scf call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') endif - !call create_guess() - !call orthonormalize_mos() - - if(tcscf_algorithm == 'DIIS') then - call rh_tcscf_diis() - elseif(tcscf_algorithm == 'Simple') then - call rh_tcscf_simple() - else - print *, ' not implemented yet', tcscf_algorithm - stop - endif + call rh_tcscf_diis() PROVIDE Fock_matrix_tc_diag_mo_tot print*, ' Eigenvalues:' @@ -59,14 +45,11 @@ program tc_scf print*, i, Fock_matrix_tc_diag_mo_tot(i) enddo - ! TODO - ! rotate angles in separate code only if necessary - if(minimize_lr_angles)then + if(minimize_lr_angles) then call minimize_tc_orb_angles() endif call print_energy_and_mos(good_angles) - write(json_unit,json_array_close_fmtx) call json_close diff --git a/plugins/local/tc_scf/tc_scf_dm.irp.f b/plugins/local/tc_scf/tc_scf_dm.irp.f index bf31a4a1..5d25fce2 100644 --- a/plugins/local/tc_scf/tc_scf_dm.irp.f +++ b/plugins/local/tc_scf/tc_scf_dm.irp.f @@ -10,16 +10,8 @@ BEGIN_PROVIDER [double precision, TCSCF_density_matrix_ao_beta, (ao_num, ao_num) implicit none - if(bi_ortho) then - - PROVIDE mo_l_coef mo_r_coef - TCSCF_density_matrix_ao_beta = TCSCF_bi_ort_dm_ao_beta - - else - - TCSCF_density_matrix_ao_beta = SCF_density_matrix_ao_beta - - endif + PROVIDE mo_l_coef mo_r_coef + TCSCF_density_matrix_ao_beta = TCSCF_bi_ort_dm_ao_beta END_PROVIDER @@ -35,16 +27,8 @@ BEGIN_PROVIDER [double precision, TCSCF_density_matrix_ao_alpha, (ao_num, ao_num implicit none - if(bi_ortho) then - - PROVIDE mo_l_coef mo_r_coef - TCSCF_density_matrix_ao_alpha = TCSCF_bi_ort_dm_ao_alpha - - else - - TCSCF_density_matrix_ao_alpha = SCF_density_matrix_ao_alpha - - endif + PROVIDE mo_l_coef mo_r_coef + TCSCF_density_matrix_ao_alpha = TCSCF_bi_ort_dm_ao_alpha END_PROVIDER diff --git a/plugins/local/tc_scf/tc_scf_energy.irp.f b/plugins/local/tc_scf/tc_scf_energy.irp.f index 0266c605..74ab9d05 100644 --- a/plugins/local/tc_scf/tc_scf_energy.irp.f +++ b/plugins/local/tc_scf/tc_scf_energy.irp.f @@ -1,7 +1,8 @@ - BEGIN_PROVIDER [ double precision, TC_HF_energy ] -&BEGIN_PROVIDER [ double precision, TC_HF_one_e_energy] -&BEGIN_PROVIDER [ double precision, TC_HF_two_e_energy] + BEGIN_PROVIDER [double precision, TC_HF_energy ] +&BEGIN_PROVIDER [double precision, TC_HF_one_e_energy ] +&BEGIN_PROVIDER [double precision, TC_HF_two_e_energy ] +&BEGIN_PROVIDER [double precision, TC_HF_three_e_energy] BEGIN_DOC ! TC Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. @@ -27,8 +28,13 @@ enddo enddo - TC_HF_energy += TC_HF_one_e_energy + TC_HF_two_e_energy - TC_HF_energy += diag_three_elem_hf + if((three_body_h_tc .eq. .False.) .and. (.not. noL_standard)) then + TC_HF_three_e_energy = 0.d0 + else + TC_HF_three_e_energy = noL_0e + endif + + TC_HF_energy += TC_HF_one_e_energy + TC_HF_two_e_energy + TC_HF_three_e_energy END_PROVIDER diff --git a/plugins/local/tc_scf/tcscf_energy_naive.irp.f b/plugins/local/tc_scf/tcscf_energy_naive.irp.f deleted file mode 100644 index 82bb8799..00000000 --- a/plugins/local/tc_scf/tcscf_energy_naive.irp.f +++ /dev/null @@ -1,80 +0,0 @@ - -! --- - -BEGIN_PROVIDER [double precision, tcscf_energy_3e_naive] - - implicit none - integer :: i, j, k - integer :: neu, ned, D(elec_num) - integer :: ii, jj, kk - integer :: si, sj, sk - double precision :: I_ijk, I_jki, I_kij, I_jik, I_ikj, I_kji - double precision :: I_tot - - PROVIDE mo_l_coef mo_r_coef - - neu = elec_alpha_num - ned = elec_beta_num - if (neu > 0) D(1:neu) = [(2*i-1, i = 1, neu)] - if (ned > 0) D(neu+1:neu+ned) = [(2*i, i = 1, ned)] - - !print*, "D = " - !do i = 1, elec_num - ! ii = (D(i) - 1) / 2 + 1 - ! si = mod(D(i), 2) - ! print*, i, D(i), ii, si - !enddo - - tcscf_energy_3e_naive = 0.d0 - - do i = 1, elec_num - 2 - ii = (D(i) - 1) / 2 + 1 - si = mod(D(i), 2) - - do j = i + 1, elec_num - 1 - jj = (D(j) - 1) / 2 + 1 - sj = mod(D(j), 2) - - do k = j + 1, elec_num - kk = (D(k) - 1) / 2 + 1 - sk = mod(D(k), 2) - - call give_integrals_3_body_bi_ort(ii, jj, kk, ii, jj, kk, I_ijk) - I_tot = I_ijk - - if(sj==si .and. sk==sj) then - call give_integrals_3_body_bi_ort(ii, jj, kk, jj, kk, ii, I_jki) - I_tot += I_jki - endif - - if(sk==si .and. si==sj) then - call give_integrals_3_body_bi_ort(ii, jj, kk, kk, ii, jj, I_kij) - I_tot += I_kij - endif - - if(sj==si) then - call give_integrals_3_body_bi_ort(ii, jj, kk, jj, ii, kk, I_jik) - I_tot -= I_jik - endif - - if(sk==sj) then - call give_integrals_3_body_bi_ort(ii, jj, kk, ii, kk, jj, I_ikj) - I_tot -= I_ikj - endif - - if(sk==si) then - call give_integrals_3_body_bi_ort(ii, jj, kk, kk, jj, ii, I_kji) - I_tot -= I_kji - endif - - tcscf_energy_3e_naive += I_tot - enddo - enddo - enddo - - tcscf_energy_3e_naive = -tcscf_energy_3e_naive - -END_PROVIDER - -! --- - diff --git a/plugins/local/tc_scf/three_e_energy_bi_ortho.irp.f b/plugins/local/tc_scf/three_e_energy_bi_ortho.irp.f deleted file mode 100644 index 0c9ebbd7..00000000 --- a/plugins/local/tc_scf/three_e_energy_bi_ortho.irp.f +++ /dev/null @@ -1,189 +0,0 @@ - -subroutine contrib_3e_diag_sss(i, j, k, integral) - - BEGIN_DOC - ! returns the pure same spin contribution to diagonal matrix element of 3e term - END_DOC - - implicit none - integer, intent(in) :: i, j, k - double precision, intent(out) :: integral - double precision :: direct_int, exch_13_int, exch_23_int, exch_12_int, c_3_int, c_minus_3_int - - call give_integrals_3_body_bi_ort(i, k, j, i, k, j, direct_int )!!! < i k j | i k j > - call give_integrals_3_body_bi_ort(i, k, j, j, i, k, c_3_int) ! < i k j | j i k > - call give_integrals_3_body_bi_ort(i, k, j, k, j, i, c_minus_3_int)! < i k j | k j i > - integral = direct_int + c_3_int + c_minus_3_int - - ! negative terms :: exchange contrib - call give_integrals_3_body_bi_ort(i, k, j, j, k, i, exch_13_int)!!! < i k j | j k i > : E_13 - call give_integrals_3_body_bi_ort(i, k, j, i, j, k, exch_23_int)!!! < i k j | i j k > : E_23 - call give_integrals_3_body_bi_ort(i, k, j, k, i, j, exch_12_int)!!! < i k j | k i j > : E_12 - - integral += - exch_13_int - exch_23_int - exch_12_int - integral = -integral - -end - -! --- - -subroutine contrib_3e_diag_soo(i,j,k,integral) - implicit none - integer, intent(in) :: i,j,k - BEGIN_DOC - ! returns the pure same spin contribution to diagonal matrix element of 3e term - END_DOC - double precision, intent(out) :: integral - double precision :: direct_int, exch_23_int - call give_integrals_3_body_bi_ort(i, k, j, i, k, j, direct_int) ! < i k j | i k j > - call give_integrals_3_body_bi_ort(i, k, j, i, j, k, exch_23_int)! < i k j | i j k > : E_23 - integral = direct_int - exch_23_int - integral = -integral -end - - -subroutine give_aaa_contrib_bis(integral_aaa) - implicit none - double precision, intent(out) :: integral_aaa - double precision :: integral - integer :: i,j,k - integral_aaa = 0.d0 - do i = 1, elec_alpha_num - do j = i+1, elec_alpha_num - do k = j+1, elec_alpha_num - call contrib_3e_diag_sss(i,j,k,integral) - integral_aaa += integral - enddo - enddo - enddo - -end - -! --- - -subroutine give_aaa_contrib(integral_aaa) - - implicit none - integer :: i, j, k - double precision :: integral - double precision, intent(out) :: integral_aaa - - integral_aaa = 0.d0 - do i = 1, elec_alpha_num - do j = 1, elec_alpha_num - do k = 1, elec_alpha_num - call contrib_3e_diag_sss(i, j, k, integral) - integral_aaa += integral - enddo - enddo - enddo - integral_aaa *= 1.d0/6.d0 - - return -end - -! --- - -subroutine give_aab_contrib(integral_aab) - implicit none - double precision, intent(out) :: integral_aab - double precision :: integral - integer :: i,j,k - integral_aab = 0.d0 - do i = 1, elec_beta_num - do j = 1, elec_alpha_num - do k = 1, elec_alpha_num - call contrib_3e_diag_soo(i,j,k,integral) - integral_aab += integral - enddo - enddo - enddo - integral_aab *= 0.5d0 -end - - -subroutine give_aab_contrib_bis(integral_aab) - implicit none - double precision, intent(out) :: integral_aab - double precision :: integral - integer :: i,j,k - integral_aab = 0.d0 - do i = 1, elec_beta_num - do j = 1, elec_alpha_num - do k = j+1, elec_alpha_num - call contrib_3e_diag_soo(i,j,k,integral) - integral_aab += integral - enddo - enddo - enddo -end - - -subroutine give_abb_contrib(integral_abb) - implicit none - double precision, intent(out) :: integral_abb - double precision :: integral - integer :: i,j,k - integral_abb = 0.d0 - do i = 1, elec_alpha_num - do j = 1, elec_beta_num - do k = 1, elec_beta_num - call contrib_3e_diag_soo(i,j,k,integral) - integral_abb += integral - enddo - enddo - enddo - integral_abb *= 0.5d0 -end - -subroutine give_abb_contrib_bis(integral_abb) - implicit none - double precision, intent(out) :: integral_abb - double precision :: integral - integer :: i,j,k - integral_abb = 0.d0 - do i = 1, elec_alpha_num - do j = 1, elec_beta_num - do k = j+1, elec_beta_num - call contrib_3e_diag_soo(i,j,k,integral) - integral_abb += integral - enddo - enddo - enddo -end - -subroutine give_bbb_contrib_bis(integral_bbb) - implicit none - double precision, intent(out) :: integral_bbb - double precision :: integral - integer :: i,j,k - integral_bbb = 0.d0 - do i = 1, elec_beta_num - do j = i+1, elec_beta_num - do k = j+1, elec_beta_num - call contrib_3e_diag_sss(i,j,k,integral) - integral_bbb += integral - enddo - enddo - enddo - -end - -subroutine give_bbb_contrib(integral_bbb) - implicit none - double precision, intent(out) :: integral_bbb - double precision :: integral - integer :: i,j,k - integral_bbb = 0.d0 - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do k = 1, elec_beta_num - call contrib_3e_diag_sss(i,j,k,integral) - integral_bbb += integral - enddo - enddo - enddo - integral_bbb *= 1.d0/6.d0 -end - - diff --git a/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f b/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f index 7ce57578..ec5167d1 100644 --- a/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f +++ b/plugins/local/tc_scf/write_ao_2e_tc_integ.irp.f @@ -4,11 +4,9 @@ program write_ao_2e_tc_integ implicit none - PROVIDE j1e_type - PROVIDE j2e_type - - print *, ' j1e_type = ', j1e_type print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type my_grid_becke = .True. PROVIDE tc_grid1_a tc_grid1_r From 23acd603d01118e0f2ce59fb14568a64d9994335 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Wed, 1 May 2024 23:17:36 +0200 Subject: [PATCH 023/159] removed diag_three_elem_hf --- plugins/local/tc_scf/tc_scf_energy.irp.f | 423 ----------------------- 1 file changed, 423 deletions(-) diff --git a/plugins/local/tc_scf/tc_scf_energy.irp.f b/plugins/local/tc_scf/tc_scf_energy.irp.f index 14d618ae..74ab9d05 100644 --- a/plugins/local/tc_scf/tc_scf_energy.irp.f +++ b/plugins/local/tc_scf/tc_scf_energy.irp.f @@ -40,426 +40,3 @@ END_PROVIDER ! --- -BEGIN_PROVIDER [double precision, diag_three_elem_hf] - - BEGIN_DOC - ! - ! < Phi_left | L | Phi_right > - ! - ! - ! if three_body_h_tc == false and noL_standard == true ==> do a normal ordering - ! - ! todo - ! this should be equivalent to - ! three_body_h_tc == true and noL_standard == false - ! - ! if three_body_h_tc == false and noL_standard == false ==> this is equal to 0 - ! - END_DOC - - implicit none - integer :: i, j, k, ipoint, mm - double precision :: contrib, weight, four_third, one_third, two_third, exchange_int_231 - double precision :: integral_aaa, hthree, integral_aab, integral_abb, integral_bbb - double precision, allocatable :: tmp(:) - double precision, allocatable :: tmp_L(:,:), tmp_R(:,:) - double precision, allocatable :: tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) - double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) - - PROVIDE mo_l_coef mo_r_coef - - if(.not. three_body_h_tc) then - - if(noL_standard) then - PROVIDE noL_0e - diag_three_elem_hf = noL_0e - else - diag_three_elem_hf = 0.d0 - endif - - else - - PROVIDE int2_grad1_u12_bimo_t - PROVIDE mos_l_in_r_array_transp - PROVIDE mos_r_in_r_array_transp - - if(elec_alpha_num .eq. elec_beta_num) then - - allocate(tmp(elec_beta_num)) - allocate(tmp_L(n_points_final_grid,3), tmp_R(n_points_final_grid,3)) - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(elec_beta_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) - - !$OMP DO - do j = 1, elec_beta_num - - tmp_L = 0.d0 - tmp_R = 0.d0 - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - tmp(j) = 0.d0 - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - enddo ! j - !$OMP END DO - !$OMP END PARALLEL - - diag_three_elem_hf = -2.d0 * sum(tmp) - - deallocate(tmp) - deallocate(tmp_L, tmp_R) - - ! --- - - allocate(tmp_O(n_points_final_grid), tmp_J(n_points_final_grid,3)) - tmp_O = 0.d0 - tmp_J = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & - !$OMP SHARED(elec_beta_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_O, tmp_J) - - allocate(tmp_O_priv(n_points_final_grid), tmp_J_priv(n_points_final_grid,3)) - tmp_O_priv = 0.d0 - tmp_J_priv = 0.d0 - - !$OMP DO - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,i) - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_O = tmp_O + tmp_O_priv - tmp_J = tmp_J + tmp_J_priv - !$OMP END CRITICAL - - deallocate(tmp_O_priv, tmp_J_priv) - !$OMP END PARALLEL - - allocate(tmp_M(n_points_final_grid,3), tmp_S(n_points_final_grid)) - tmp_M = 0.d0 - tmp_S = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & - !$OMP SHARED(elec_beta_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_M, tmp_S) - - allocate(tmp_M_priv(n_points_final_grid,3), tmp_S_priv(n_points_final_grid)) - tmp_M_priv = 0.d0 - tmp_S_priv = 0.d0 - - !$OMP DO COLLAPSE(2) - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_M = tmp_M + tmp_M_priv - tmp_S = tmp_S + tmp_S_priv - !$OMP END CRITICAL - - deallocate(tmp_M_priv, tmp_S_priv) - !$OMP END PARALLEL - - allocate(tmp(n_points_final_grid)) - - do ipoint = 1, n_points_final_grid - - tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) - - tmp(ipoint) = final_weight_at_r_vector(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & - - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & - + tmp_J(ipoint,2) * tmp_M(ipoint,2) & - + tmp_J(ipoint,3) * tmp_M(ipoint,3))) - enddo - - diag_three_elem_hf = diag_three_elem_hf -2.d0 * (sum(tmp)) - - deallocate(tmp) - - else ! elec_alpha_num .neq. elec_beta_num - - allocate(tmp(elec_alpha_num)) - allocate(tmp_L(n_points_final_grid,3), tmp_R(n_points_final_grid,3)) - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) - - !$OMP DO - do j = 1, elec_beta_num - - tmp_L = 0.d0 - tmp_R = 0.d0 - do i = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - tmp_L(ipoint,1) = tmp_L(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - tmp(j) = 0.d0 - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - enddo ! j - !$OMP END DO - !$OMP END PARALLEL - - ! --- - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp, final_weight_at_r_vector) - - !$OMP DO - do j = elec_beta_num+1, elec_alpha_num - - tmp_L = 0.d0 - tmp_R = 0.d0 - do i = 1, elec_alpha_num - do ipoint = 1, n_points_final_grid - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) - - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_r_in_r_array_transp(ipoint,i) - enddo - enddo - - tmp(j) = 0.d0 - do ipoint = 1, n_points_final_grid - tmp(j) = tmp(j) + 0.5d0 * final_weight_at_r_vector(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) - enddo - enddo ! j - !$OMP END DO - !$OMP END PARALLEL - - diag_three_elem_hf = -2.d0 * sum(tmp) - - deallocate(tmp) - deallocate(tmp_L, tmp_R) - - ! --- - - allocate(tmp_O(n_points_final_grid), tmp_J(n_points_final_grid,3)) - tmp_O = 0.d0 - tmp_J = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_O, tmp_J) - - allocate(tmp_O_priv(n_points_final_grid), tmp_J_priv(n_points_final_grid,3)) - tmp_O_priv = 0.d0 - tmp_J_priv = 0.d0 - - !$OMP DO - do i = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,i,i) - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP DO - do i = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + 0.5d0 * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,i) - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_O = tmp_O + tmp_O_priv - tmp_J = tmp_J + tmp_J_priv - !$OMP END CRITICAL - - deallocate(tmp_O_priv, tmp_J_priv) - !$OMP END PARALLEL - - ! --- - - allocate(tmp_M(n_points_final_grid,3), tmp_S(n_points_final_grid)) - tmp_M = 0.d0 - tmp_S = 0.d0 - - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & - !$OMP SHARED(elec_beta_num, elec_alpha_num, n_points_final_grid, & - !$OMP mos_l_in_r_array_transp, mos_r_in_r_array_transp, & - !$OMP int2_grad1_u12_bimo_t, tmp_M, tmp_S) - - allocate(tmp_M_priv(n_points_final_grid,3), tmp_S_priv(n_points_final_grid)) - tmp_M_priv = 0.d0 - tmp_S_priv = 0.d0 - - !$OMP DO COLLAPSE(2) - do i = 1, elec_beta_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP DO COLLAPSE(2) - do i = elec_beta_num+1, elec_alpha_num - do j = 1, elec_beta_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * mos_l_in_r_array_transp(ipoint,j) * mos_r_in_r_array_transp(ipoint,i) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP DO COLLAPSE(2) - do i = elec_beta_num+1, elec_alpha_num - do j = elec_beta_num+1, elec_alpha_num - do ipoint = 1, n_points_final_grid - - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,j,i) * mos_l_in_r_array_transp(ipoint,i) * mos_r_in_r_array_transp(ipoint,j) - - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,1,i,j) * int2_grad1_u12_bimo_t(ipoint,1,j,i) & - + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,2,i,j) * int2_grad1_u12_bimo_t(ipoint,2,j,i) & - + 0.5d0 * int2_grad1_u12_bimo_t(ipoint,3,i,j) * int2_grad1_u12_bimo_t(ipoint,3,j,i) - enddo - enddo - enddo - !$OMP END DO NOWAIT - - !$OMP CRITICAL - tmp_M = tmp_M + tmp_M_priv - tmp_S = tmp_S + tmp_S_priv - !$OMP END CRITICAL - - deallocate(tmp_M_priv, tmp_S_priv) - !$OMP END PARALLEL - - allocate(tmp(n_points_final_grid)) - - do ipoint = 1, n_points_final_grid - - tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) - - tmp(ipoint) = final_weight_at_r_vector(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & - - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & - + tmp_J(ipoint,2) * tmp_M(ipoint,2) & - + tmp_J(ipoint,3) * tmp_M(ipoint,3))) - enddo - - diag_three_elem_hf = diag_three_elem_hf - 2.d0 * (sum(tmp)) - - deallocate(tmp) - - endif ! alpha/beta condition - - endif ! three_body_h_tc - -END_PROVIDER - -! --- - From bd8d45b99b7505e00533bd9e97ad1b43453fb037 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Thu, 2 May 2024 17:18:45 +0200 Subject: [PATCH 024/159] FIXED BUG IN OPTIM J_BH --- plugins/local/bi_ort_ints/no_dressing.irp.f | 8 - .../non_h_ints_mu/jast_deriv_utils_vect.irp.f | 183 ++++++++---------- plugins/local/slater_tc/tc_hmat.irp.f | 1 + .../local/tc_bi_ortho/print_tc_energy.irp.f | 27 ++- plugins/local/tc_scf/tc_scf.irp.f | 31 ++- 5 files changed, 117 insertions(+), 133 deletions(-) diff --git a/plugins/local/bi_ort_ints/no_dressing.irp.f b/plugins/local/bi_ort_ints/no_dressing.irp.f index 721ac0f8..fd2c6285 100644 --- a/plugins/local/bi_ort_ints/no_dressing.irp.f +++ b/plugins/local/bi_ort_ints/no_dressing.irp.f @@ -336,9 +336,6 @@ BEGIN_PROVIDER [double precision, noL_0e] double precision, allocatable :: tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) - call wall_time(t0) - print*, " Providing noL_0e ..." - if(elec_alpha_num .eq. elec_beta_num) then allocate(tmp(elec_beta_num)) @@ -713,11 +710,6 @@ BEGIN_PROVIDER [double precision, noL_0e] endif - call wall_time(t1) - print*, " Wall time for noL_0e (min) = ", (t1 - t0)/60.d0 - - print*, " noL_0e = ", noL_0e - END_PROVIDER ! --- diff --git a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f index 33563102..db06e835 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f @@ -4,7 +4,7 @@ subroutine get_grad1_u12_withsq_r1_seq(ipoint, n_grid2, resx, resy, resz, res) BEGIN_DOC - ! + ! ! grad_1 u(r1,r2) ! ! we use grid for r1 and extra_grid for r2 @@ -167,7 +167,7 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) integer :: jpoint integer :: i_nucl, p, mpA, npA, opA double precision :: r2(3) - double precision :: dx, dy, dz, r12, tmp, r12_inv + double precision :: dx, dy, dz, r12, tmp double precision :: mu_val, mu_tmp, mu_der(3) double precision :: rn(3), f1A, grad1_f1A(3), f2A, grad2_f2A(3), g12, grad1_g12(3) double precision :: tmp1, tmp2 @@ -181,7 +181,7 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) ! d/dy1 j(mu,r12) = 0.5 * [(1 - erf(mu * r12)) / r12] * (y1 - y2) ! d/dz1 j(mu,r12) = 0.5 * [(1 - erf(mu * r12)) / r12] * (z1 - z2) - do jpoint = 1, n_points_extra_final_grid ! r2 + do jpoint = 1, n_points_extra_final_grid ! r2 r2(1) = final_grid_points_extra(1,jpoint) r2(2) = final_grid_points_extra(2,jpoint) @@ -191,19 +191,15 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) dy = r1(2) - r2(2) dz = r1(3) - r2(3) - r12 = dx * dx + dy * dy + dz * dz - - if(r12 .lt. 1d-20) then - gradx(jpoint) = 0.d0 - grady(jpoint) = 0.d0 - gradz(jpoint) = 0.d0 + r12 = dsqrt(dx * dx + dy * dy + dz * dz) + if(r12 .lt. 1d-10) then + gradx(jpoint) = 0.d0 + grady(jpoint) = 0.d0 + gradz(jpoint) = 0.d0 cycle endif - r12_inv = 1.d0/dsqrt(r12) - r12 = r12*r12_inv - - tmp = 0.5d0 * (1.d0 - derf(mu_erf * r12)) * r12_inv + tmp = 0.5d0 * (1.d0 - derf(mu_erf * r12)) / r12 gradx(jpoint) = tmp * dx grady(jpoint) = tmp * dy @@ -212,10 +208,10 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) elseif(j2e_type .eq. "Mur") then - ! d/dx1 j(mu(r1,r2),r12) = exp(-(mu(r1,r2)*r12)**2) /(2 *sqrt(pi) * mu(r1,r2)**2 ) d/dx1 mu(r1,r2) + ! d/dx1 j(mu(r1,r2),r12) = exp(-(mu(r1,r2)*r12)**2) /(2 *sqrt(pi) * mu(r1,r2)**2 ) d/dx1 mu(r1,r2) ! + 0.5 * (1 - erf(mu(r1,r2) *r12))/r12 * (x1 - x2) - do jpoint = 1, n_points_extra_final_grid ! r2 + do jpoint = 1, n_points_extra_final_grid ! r2 r2(1) = final_grid_points_extra(1,jpoint) r2(2) = final_grid_points_extra(2,jpoint) @@ -224,29 +220,23 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) dx = r1(1) - r2(1) dy = r1(2) - r2(2) dz = r1(3) - r2(3) + r12 = dsqrt(dx * dx + dy * dy + dz * dz) - r12 = dx * dx + dy * dy + dz * dz + call mu_r_val_and_grad(r1, r2, mu_val, mu_der) + mu_tmp = mu_val * r12 + tmp = inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / (mu_val * mu_val) + gradx(jpoint) = tmp * mu_der(1) + grady(jpoint) = tmp * mu_der(2) + gradz(jpoint) = tmp * mu_der(3) - if(r12 .lt. 1d-20) then + if(r12 .lt. 1d-10) then gradx(jpoint) = 0.d0 grady(jpoint) = 0.d0 gradz(jpoint) = 0.d0 cycle endif - r12_inv = 1.d0/dsqrt(r12) - r12 = r12*r12_inv - - call mu_r_val_and_grad(r1, r2, mu_val, mu_der) - - mu_tmp = mu_val * r12 - tmp = inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / (mu_val * mu_val) - - gradx(jpoint) = tmp * mu_der(1) - grady(jpoint) = tmp * mu_der(2) - gradz(jpoint) = tmp * mu_der(3) - - tmp = 0.5d0 * (1.d0 - derf(mu_tmp)) * r12_inv + tmp = 0.5d0 * (1.d0 - derf(mu_tmp)) / r12 gradx(jpoint) = gradx(jpoint) + tmp * dx grady(jpoint) = grady(jpoint) + tmp * dy @@ -264,7 +254,7 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) PROVIDE a_boys - do jpoint = 1, n_points_extra_final_grid ! r2 + do jpoint = 1, n_points_extra_final_grid ! r2 r2(1) = final_grid_points_extra(1,jpoint) r2(2) = final_grid_points_extra(2,jpoint) @@ -273,17 +263,14 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) dx = r1(1) - r2(1) dy = r1(2) - r2(2) dz = r1(3) - r2(3) - r12 = dx * dx + dy * dy + dz * dz - + r12 = dsqrt(dx * dx + dy * dy + dz * dz) if(r12 .lt. 1d-10) then - gradx(jpoint) = 0.d0 - grady(jpoint) = 0.d0 - gradz(jpoint) = 0.d0 + gradx(jpoint) = 0.d0 + grady(jpoint) = 0.d0 + gradz(jpoint) = 0.d0 cycle endif - r12 = dsqrt(r12) - tmp = 1.d0 + a_boys * r12 tmp = 0.5d0 / (r12 * tmp * tmp) @@ -294,13 +281,16 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) elseif(j2e_type .eq. "Boys_Handy") then - integer :: powmax - powmax = max(maxval(jBH_m),maxval(jBH_n)) - + integer :: powmax1, powmax, powmax2 double precision, allocatable :: f1A_power(:), f2A_power(:), double_p(:), g12_power(:) - allocate (f1A_power(-1:powmax), f2A_power(-1:powmax), g12_power(-1:powmax), double_p(0:powmax)) - do p=0,powmax + powmax1 = max(maxval(jBH_m), maxval(jBH_n)) + powmax2 = maxval(jBH_o) + powmax = max(powmax1, powmax2) + + allocate(f1A_power(-1:powmax), f2A_power(-1:powmax), g12_power(-1:powmax), double_p(0:powmax)) + + do p = 0, powmax double_p(p) = dble(p) enddo @@ -318,11 +308,10 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) r2(2) = final_grid_points_extra(2,jpoint) r2(3) = final_grid_points_extra(3,jpoint) - gradx(jpoint) = 0.d0 - grady(jpoint) = 0.d0 - gradz(jpoint) = 0.d0 - - do i_nucl = 1, nucl_num + gradx(jpoint) = 0.d0 + grady(jpoint) = 0.d0 + gradz(jpoint) = 0.d0 + do i_nucl = 1, nucl_num rn(1) = nucl_coord(i_nucl,1) rn(2) = nucl_coord(i_nucl,2) @@ -332,23 +321,15 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) call jBH_elem_fct_grad(jBH_en(i_nucl), r2, rn, f2A, grad2_f2A) call jBH_elem_fct_grad(jBH_ee(i_nucl), r1, r2, g12, grad1_g12) - ! Compute powers of f1A and f2A - - do p = 1, maxval(jBH_m(:,i_nucl)) + do p = 1, powmax1 f1A_power(p) = f1A_power(p-1) * f1A - enddo - - do p = 1, maxval(jBH_n(:,i_nucl)) f2A_power(p) = f2A_power(p-1) * f2A enddo - - do p = 1, maxval(jBH_o(:,i_nucl)) + do p = 1, powmax2 g12_power(p) = g12_power(p-1) * g12 enddo - - do p = 1, jBH_size mpA = jBH_m(p,i_nucl) npA = jBH_n(p,i_nucl) @@ -358,27 +339,22 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) tmp = tmp * 0.5d0 endif -!TODO : Powers to optimize here - -! tmp1 = 0.d0 -! if(mpA .gt. 0) then -! tmp1 = tmp1 + dble(mpA) * f1A**(mpA-1) * f2A**npA -! endif -! if(npA .gt. 0) then -! tmp1 = tmp1 + dble(npA) * f1A**(npA-1) * f2A**mpA -! endif -! tmp1 = tmp1 * g12**(opA) -! -! tmp2 = 0.d0 -! if(opA .gt. 0) then -! tmp2 = tmp2 + dble(opA) * g12**(opA-1) * (f1A**(mpA) * f2A**(npA) + f1A**(npA) * f2A**(mpA)) -! endif - tmp1 = double_p(mpA) * f1A_power(mpA-1) * f2A_power(npA) + double_p(npA) * f1A_power(npA-1) * f2A_power(mpA) tmp1 = tmp1 * g12_power(opA) - tmp2 = double_p(opA) * g12_power(opA-1) * (f1A_power(mpA) * f2A_power(npA) + f1A_power(npA) * f2A_power(mpA)) + !tmp1 = 0.d0 + !if(mpA .gt. 0) then + ! tmp1 = tmp1 + dble(mpA) * f1A**dble(mpA-1) * f2A**dble(npA) + !endif + !if(npA .gt. 0) then + ! tmp1 = tmp1 + dble(npA) * f1A**dble(npA-1) * f2A**dble(mpA) + !endif + !tmp1 = tmp1 * g12**dble(opA) + !tmp2 = 0.d0 + !if(opA .gt. 0) then + ! tmp2 = tmp2 + dble(opA) * g12**dble(opA-1) * (f1A**dble(mpA) * f2A**dble(npA) + f1A**dble(npA) * f2A**dble(mpA)) + !endif gradx(jpoint) = gradx(jpoint) + tmp * (tmp1 * grad1_f1A(1) + tmp2 * grad1_g12(1)) grady(jpoint) = grady(jpoint) + tmp * (tmp1 * grad1_f1A(2) + tmp2 * grad1_g12(2)) @@ -418,10 +394,10 @@ subroutine grad1_jmu_r1_seq(mu, r1, n_grid2, gradx, grady, gradz) integer :: jpoint double precision :: r2(3) - double precision :: dx, dy, dz, r12, r12_inv, tmp + double precision :: dx, dy, dz, r12, tmp - do jpoint = 1, n_points_extra_final_grid ! r2 + do jpoint = 1, n_points_extra_final_grid ! r2 r2(1) = final_grid_points_extra(1,jpoint) r2(2) = final_grid_points_extra(2,jpoint) @@ -431,19 +407,15 @@ subroutine grad1_jmu_r1_seq(mu, r1, n_grid2, gradx, grady, gradz) dy = r1(2) - r2(2) dz = r1(3) - r2(3) - r12 = dx * dx + dy * dy + dz * dz - - if(r12 .lt. 1d-20) then - gradx(jpoint) = 0.d0 - grady(jpoint) = 0.d0 - gradz(jpoint) = 0.d0 + r12 = dsqrt(dx * dx + dy * dy + dz * dz) + if(r12 .lt. 1d-10) then + gradx(jpoint) = 0.d0 + grady(jpoint) = 0.d0 + gradz(jpoint) = 0.d0 cycle endif - r12_inv = 1.d0 / dsqrt(r12) - r12 = r12 * r12_inv - - tmp = 0.5d0 * (1.d0 - derf(mu * r12)) * r12_inv + tmp = 0.5d0 * (1.d0 - derf(mu * r12)) / r12 gradx(jpoint) = tmp * dx grady(jpoint) = tmp * dy @@ -467,7 +439,7 @@ subroutine j12_r1_seq(r1, n_grid2, res) integer :: jpoint double precision :: r2(3) double precision :: dx, dy, dz - double precision :: mu_tmp, r12, mu_erf_inv + double precision :: mu_tmp, r12 PROVIDE final_grid_points_extra @@ -475,21 +447,20 @@ subroutine j12_r1_seq(r1, n_grid2, res) PROVIDE mu_erf - mu_erf_inv = 1.d0 / mu_erf - do jpoint = 1, n_points_extra_final_grid ! r2 - + do jpoint = 1, n_points_extra_final_grid ! r2 + r2(1) = final_grid_points_extra(1,jpoint) r2(2) = final_grid_points_extra(2,jpoint) r2(3) = final_grid_points_extra(3,jpoint) - + dx = r1(1) - r2(1) dy = r1(2) - r2(2) dz = r1(3) - r2(3) r12 = dsqrt(dx * dx + dy * dy + dz * dz) mu_tmp = mu_erf * r12 - - res(jpoint) = 0.5d0 * r12 * (1.d0 - derf(mu_tmp)) - inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) * mu_erf_inv + + res(jpoint) = 0.5d0 * r12 * (1.d0 - derf(mu_tmp)) - inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / mu_erf enddo elseif(j2e_type .eq. "Boys") then @@ -498,7 +469,7 @@ subroutine j12_r1_seq(r1, n_grid2, res) PROVIDE a_boys - do jpoint = 1, n_points_extra_final_grid ! r2 + do jpoint = 1, n_points_extra_final_grid ! r2 r2(1) = final_grid_points_extra(1,jpoint) r2(2) = final_grid_points_extra(2,jpoint) @@ -540,19 +511,19 @@ subroutine jmu_r1_seq(mu, r1, n_grid2, res) tmp1 = inv_sq_pi_2 / mu - do jpoint = 1, n_points_extra_final_grid ! r2 - + do jpoint = 1, n_points_extra_final_grid ! r2 + r2(1) = final_grid_points_extra(1,jpoint) r2(2) = final_grid_points_extra(2,jpoint) r2(3) = final_grid_points_extra(3,jpoint) - + dx = r1(1) - r2(1) dy = r1(2) - r2(2) dz = r1(3) - r2(3) r12 = dsqrt(dx * dx + dy * dy + dz * dz) tmp2 = mu * r12 - + res(jpoint) = 0.5d0 * r12 * (1.d0 - derf(tmp2)) - tmp1 * dexp(-tmp2*tmp2) enddo @@ -579,7 +550,7 @@ subroutine env_nucl_r1_seq(n_grid2, res) res = 1.d0 - do jpoint = 1, n_points_extra_final_grid ! r2 + do jpoint = 1, n_points_extra_final_grid ! r2 r(1) = final_grid_points_extra(1,jpoint) r(2) = final_grid_points_extra(2,jpoint) r(3) = final_grid_points_extra(3,jpoint) @@ -598,7 +569,7 @@ subroutine env_nucl_r1_seq(n_grid2, res) res = 1.d0 - do jpoint = 1, n_points_extra_final_grid ! r2 + do jpoint = 1, n_points_extra_final_grid ! r2 r(1) = final_grid_points_extra(1,jpoint) r(2) = final_grid_points_extra(2,jpoint) r(3) = final_grid_points_extra(3,jpoint) @@ -618,7 +589,7 @@ subroutine env_nucl_r1_seq(n_grid2, res) res = 1.d0 - do jpoint = 1, n_points_extra_final_grid ! r2 + do jpoint = 1, n_points_extra_final_grid ! r2 r(1) = final_grid_points_extra(1,jpoint) r(2) = final_grid_points_extra(2,jpoint) r(3) = final_grid_points_extra(3,jpoint) @@ -636,7 +607,7 @@ subroutine env_nucl_r1_seq(n_grid2, res) res = 1.d0 - do jpoint = 1, n_points_extra_final_grid ! r2 + do jpoint = 1, n_points_extra_final_grid ! r2 r(1) = final_grid_points_extra(1,jpoint) r(2) = final_grid_points_extra(2,jpoint) r(3) = final_grid_points_extra(3,jpoint) @@ -666,7 +637,7 @@ end subroutine get_grad1_u12_2e_r1_seq(ipoint, n_grid2, resx, resy, resz) BEGIN_DOC - ! + ! ! grad_1 u_2e(r1,r2) ! ! we use grid for r1 and extra_grid for r2 @@ -786,7 +757,7 @@ end subroutine get_u12_2e_r1_seq(ipoint, n_grid2, res) BEGIN_DOC - ! + ! ! u_2e(r1,r2) ! ! we use grid for r1 and extra_grid for r2 @@ -909,7 +880,7 @@ subroutine jBH_elem_fct_grad(alpha, r1, r2, fct, grad1_fct) endif return -end +end ! --- diff --git a/plugins/local/slater_tc/tc_hmat.irp.f b/plugins/local/slater_tc/tc_hmat.irp.f index abec410d..cc780364 100644 --- a/plugins/local/slater_tc/tc_hmat.irp.f +++ b/plugins/local/slater_tc/tc_hmat.irp.f @@ -22,6 +22,7 @@ BEGIN_PROVIDER [double precision, htilde_matrix_elmt_bi_ortho, (N_det,N_det)] if(noL_standard) then PROVIDE noL_0e + print*, "noL_0e =", noL_0e PROVIDE noL_1e PROVIDE noL_2e endif diff --git a/plugins/local/tc_bi_ortho/print_tc_energy.irp.f b/plugins/local/tc_bi_ortho/print_tc_energy.irp.f index 1fa0c6d9..979d792b 100644 --- a/plugins/local/tc_bi_ortho/print_tc_energy.irp.f +++ b/plugins/local/tc_bi_ortho/print_tc_energy.irp.f @@ -9,15 +9,6 @@ program print_tc_energy read_wf = .True. touch read_wf - PROVIDE j2e_type - PROVIDE j1e_type - PROVIDE env_type - - print *, ' j2e_type = ', j2e_type - print *, ' j1e_type = ', j1e_type - print *, ' env_type = ', env_type - - my_grid_becke = .True. PROVIDE tc_grid1_a tc_grid1_r my_n_pt_r_grid = tc_grid1_r @@ -38,6 +29,24 @@ program print_tc_energy call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') endif + call main() + +end + +! --- + +subroutine main() + + implicit none + + PROVIDE j2e_type + PROVIDE j1e_type + PROVIDE env_type + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + call write_tc_energy() end diff --git a/plugins/local/tc_scf/tc_scf.irp.f b/plugins/local/tc_scf/tc_scf.irp.f index f099b90e..83da03ec 100644 --- a/plugins/local/tc_scf/tc_scf.irp.f +++ b/plugins/local/tc_scf/tc_scf.irp.f @@ -7,15 +7,6 @@ program tc_scf END_DOC implicit none - integer :: i - logical :: good_angles - - print *, ' TC-SCF with:' - print *, ' j2e_type = ', j2e_type - print *, ' j1e_type = ', j1e_type - print *, ' env_type = ', env_type - - write(json_unit,json_array_open_fmt) 'tc-scf' my_grid_becke = .True. PROVIDE tc_grid1_a tc_grid1_r @@ -37,6 +28,26 @@ program tc_scf call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') endif + call main() + +end + +! --- + +subroutine main() + + implicit none + + integer :: i + logical :: good_angles + + print *, ' TC-SCF with:' + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + write(json_unit,json_array_open_fmt) 'tc-scf' + call rh_tcscf_diis() PROVIDE Fock_matrix_tc_diag_mo_tot @@ -84,7 +95,7 @@ subroutine create_guess() SOFT_TOUCH mo_label endif -end subroutine create_guess +end ! --- From 13785b267c36319925ffa72ebe42399fa932ffae Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 3 May 2024 11:34:30 +0200 Subject: [PATCH 025/159] fixed a bug in src/scf_utils/roothaan_hall_scf.irp.f --- .../extra_grid_vector.irp.f | 20 +++++++++---------- .../grid_becke_vector.irp.f | 20 +++++++++---------- src/scf_utils/roothaan_hall_scf.irp.f | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/becke_numerical_grid/extra_grid_vector.irp.f b/src/becke_numerical_grid/extra_grid_vector.irp.f index 16a52dc6..44fc4435 100644 --- a/src/becke_numerical_grid/extra_grid_vector.irp.f +++ b/src/becke_numerical_grid/extra_grid_vector.irp.f @@ -71,16 +71,16 @@ END_PROVIDER index_final_points_extra(3,i_count) = j index_final_points_extra_reverse(k,i,j) = i_count - if(final_weight_at_r_vector_extra(i_count) .lt. 0.d0) then - print *, ' !!! WARNING !!!' - print *, ' negative weight !!!!' - print *, i_count, final_weight_at_r_vector_extra(i_count) - if(dabs(final_weight_at_r_vector_extra(i_count)) .lt. 1d-10) then - final_weight_at_r_vector_extra(i_count) = 0.d0 - else - stop - endif - endif +! if(final_weight_at_r_vector_extra(i_count) .lt. 0.d0) then +! print *, ' !!! WARNING !!!' +! print *, ' negative weight !!!!' +! print *, i_count, final_weight_at_r_vector_extra(i_count) +! if(dabs(final_weight_at_r_vector_extra(i_count)) .lt. 1d-10) then +! final_weight_at_r_vector_extra(i_count) = 0.d0 +! else +! stop +! endif +! endif enddo enddo enddo diff --git a/src/becke_numerical_grid/grid_becke_vector.irp.f b/src/becke_numerical_grid/grid_becke_vector.irp.f index c35918c3..7097dbb3 100644 --- a/src/becke_numerical_grid/grid_becke_vector.irp.f +++ b/src/becke_numerical_grid/grid_becke_vector.irp.f @@ -68,16 +68,16 @@ END_PROVIDER index_final_points(3,i_count) = j index_final_points_reverse(k,i,j) = i_count - if(final_weight_at_r_vector(i_count) .lt. 0.d0) then - print *, ' !!! WARNING !!!' - print *, ' negative weight !!!!' - print *, i_count, final_weight_at_r_vector(i_count) - if(dabs(final_weight_at_r_vector(i_count)) .lt. 1d-10) then - final_weight_at_r_vector(i_count) = 0.d0 - else - stop - endif - endif +! if(final_weight_at_r_vector(i_count) .lt. 0.d0) then +! print *, ' !!! WARNING !!!' +! print *, ' negative weight !!!!' +! print *, i_count, final_weight_at_r_vector(i_count) +! if(dabs(final_weight_at_r_vector(i_count)) .lt. 1d-10) then +! final_weight_at_r_vector(i_count) = 0.d0 +! else +! stop +! endif +! endif enddo enddo enddo diff --git a/src/scf_utils/roothaan_hall_scf.irp.f b/src/scf_utils/roothaan_hall_scf.irp.f index 3f5c8549..e0fe5319 100644 --- a/src/scf_utils/roothaan_hall_scf.irp.f +++ b/src/scf_utils/roothaan_hall_scf.irp.f @@ -217,7 +217,7 @@ END_DOC do while (i Date: Mon, 6 May 2024 17:47:48 +0200 Subject: [PATCH 026/159] updated get_fci_tc_conv.sh --- scripts/get_fci_tc_conv.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/get_fci_tc_conv.sh b/scripts/get_fci_tc_conv.sh index 643f3ac0..f0c99baf 100755 --- a/scripts/get_fci_tc_conv.sh +++ b/scripts/get_fci_tc_conv.sh @@ -1,2 +1,2 @@ file=$1 -grep "Ndet,E,E+PT2,E+RPT2,|PT2|=" $file | cut -d "=" -f 2 > ${file}.conv_fci_tc +grep "Ndet,E,E+PT2,pt2_minus,pt2_plus,pt2_abs=" $file | cut -d "=" -f 2 > ${file}.conv_fci_tc From b14325fef482bdf6cb471b40edf8fa46f2aeac65 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 6 May 2024 18:21:58 +0200 Subject: [PATCH 027/159] Introducing qmckl --- plugins/local/non_h_ints_mu/NEED | 1 + plugins/local/non_h_ints_mu/deb_aos.irp.f | 49 ++++++++-- plugins/local/non_h_ints_mu/qmckl.irp.f | 104 ++++++++++++++++++++++ 3 files changed, 148 insertions(+), 6 deletions(-) diff --git a/plugins/local/non_h_ints_mu/NEED b/plugins/local/non_h_ints_mu/NEED index 48c1c24b..5ca1d543 100644 --- a/plugins/local/non_h_ints_mu/NEED +++ b/plugins/local/non_h_ints_mu/NEED @@ -3,3 +3,4 @@ hamiltonian jastrow ao_tc_eff_map bi_ortho_mos +trexio diff --git a/plugins/local/non_h_ints_mu/deb_aos.irp.f b/plugins/local/non_h_ints_mu/deb_aos.irp.f index c9bc9c9a..86d011fb 100644 --- a/plugins/local/non_h_ints_mu/deb_aos.irp.f +++ b/plugins/local/non_h_ints_mu/deb_aos.irp.f @@ -34,21 +34,58 @@ subroutine print_aos() PROVIDE final_grid_points aos_in_r_array aos_grad_in_r_array aos_lapl_in_r_array - do ipoint = 1, n_points_final_grid - r(:) = final_grid_points(:,ipoint) - print*, r - enddo +! do ipoint = 1, n_points_final_grid +! r(:) = final_grid_points(:,ipoint) +! print*, r +! enddo +double precision :: accu_vgl(5) +double precision :: accu_vgl_nrm(5) do ipoint = 1, n_points_final_grid - r(:) = final_grid_points(:,ipoint) do i = 1, ao_num ao_val = aos_in_r_array (i,ipoint) ao_der(:) = aos_grad_in_r_array(i,ipoint,:) ao_lap = aos_lapl_in_r_array(1,i,ipoint) + aos_lapl_in_r_array(2,i,ipoint) + aos_lapl_in_r_array(3,i,ipoint) - write(*, '(5(f15.7, 3X))') ao_val, ao_der, ao_lap + write(111, '(5(f15.7, 3X))') ao_val, ao_der, ao_lap enddo enddo + do ipoint = 1, n_points_final_grid + do i = 1, ao_num + ao_val = aos_in_r_array_qmckl (i,ipoint) + ao_der(:) = aos_grad_in_r_array_qmckl(i,ipoint,:) + ao_lap = aos_lapl_in_r_array_qmckl(i,ipoint) + write(222, '(5(f15.7, 3X))') ao_val, ao_der, ao_lap + enddo + enddo + + accu_vgl = 0.d0 + accu_vgl_nrm = 0.d0 + do ipoint = 1, n_points_final_grid + do i = 1, ao_num + ao_val = aos_in_r_array (i,ipoint) + ao_der(:) = aos_grad_in_r_array(i,ipoint,:) + ao_lap = aos_lapl_in_r_array(1,i,ipoint) + aos_lapl_in_r_array(2,i,ipoint) + aos_lapl_in_r_array(3,i,ipoint) + accu_vgl_nrm(1) += dabs(ao_val) + accu_vgl_nrm(2) += dabs(ao_der(1)) + accu_vgl_nrm(3) += dabs(ao_der(2)) + accu_vgl_nrm(4) += dabs(ao_der(3)) + accu_vgl_nrm(5) += dabs(ao_lap) + + ao_val -= aos_in_r_array_qmckl (i,ipoint) + ao_der(:) -= aos_grad_in_r_array_qmckl(i,ipoint,:) + ao_lap -= aos_lapl_in_r_array_qmckl(i,ipoint) + accu_vgl(1) += dabs(ao_val) + accu_vgl(2) += dabs(ao_der(1)) + accu_vgl(3) += dabs(ao_der(2)) + accu_vgl(4) += dabs(ao_der(3)) + accu_vgl(5) += dabs(ao_lap) + enddo + + enddo + accu_vgl(:) *= 1.d0 / accu_vgl_nrm(:) + print *, accu_vgl + return end diff --git a/plugins/local/non_h_ints_mu/qmckl.irp.f b/plugins/local/non_h_ints_mu/qmckl.irp.f index 1df80457..4d419e24 100644 --- a/plugins/local/non_h_ints_mu/qmckl.irp.f +++ b/plugins/local/non_h_ints_mu/qmckl.irp.f @@ -75,3 +75,107 @@ BEGIN_PROVIDER [ integer*8, qmckl_ctx_jastrow ] endif END_PROVIDER + + + BEGIN_PROVIDER [ double precision, aos_in_r_array_qmckl, (ao_num,n_points_final_grid)] +&BEGIN_PROVIDER [ double precision, aos_grad_in_r_array_qmckl, (ao_num,n_points_final_grid,3)] +&BEGIN_PROVIDER [ double precision, aos_lapl_in_r_array_qmckl, (ao_num, n_points_final_grid)] + implicit none + BEGIN_DOC + ! AOS computed with qmckl + END_DOC + use qmckl + + integer*8 :: qmckl_ctx + integer(qmckl_exit_code) :: rc + + qmckl_ctx = qmckl_context_create() + + rc = qmckl_trexio_read(qmckl_ctx, trexio_file, 1_8*len(trim(trexio_filename))) + if (rc /= QMCKL_SUCCESS) then + print *, irp_here, 'qmckl error in read_trexio' + rc = qmckl_check(qmckl_ctx, rc) + stop -1 + endif + + rc = qmckl_set_point(qmckl_ctx, 'N', n_points_final_grid*1_8, final_grid_points, n_points_final_grid*3_8) + if (rc /= QMCKL_SUCCESS) then + print *, irp_here, 'qmckl error in set_electron_point' + rc = qmckl_check(qmckl_ctx, rc) + stop -1 + endif + + double precision, allocatable :: vgl(:,:,:) + allocate( vgl(ao_num,5,n_points_final_grid)) + rc = qmckl_get_ao_basis_ao_vgl_inplace(qmckl_ctx, vgl, n_points_final_grid*ao_num*5_8) + if (rc /= QMCKL_SUCCESS) then + print *, irp_here, 'qmckl error in get_ao_vgl' + rc = qmckl_check(qmckl_ctx, rc) + stop -1 + endif + + integer :: i,k + do k=1,n_points_final_grid + do i=1,ao_num + aos_in_r_array_qmckl(i,k) = vgl(i,1,k) + aos_grad_in_r_array_qmckl(i,k,1) = vgl(i,2,k) + aos_grad_in_r_array_qmckl(i,k,2) = vgl(i,3,k) + aos_grad_in_r_array_qmckl(i,k,3) = vgl(i,4,k) + aos_lapl_in_r_array_qmckl(i,k) = vgl(i,5,k) + enddo + enddo + +END_PROVIDER + + + BEGIN_PROVIDER [ double precision, mos_in_r_array_qmckl, (mo_num,n_points_final_grid)] +&BEGIN_PROVIDER [ double precision, mos_grad_in_r_array_qmckl, (mo_num,n_points_final_grid,3)] +&BEGIN_PROVIDER [ double precision, mos_lapl_in_r_array_qmckl, (mo_num, n_points_final_grid)] + implicit none + BEGIN_DOC + ! moS computed with qmckl + END_DOC + use qmckl + + integer*8 :: qmckl_ctx + integer(qmckl_exit_code) :: rc + + qmckl_ctx = qmckl_context_create() + + rc = qmckl_trexio_read(qmckl_ctx, trexio_file, 1_8*len(trim(trexio_filename))) + if (rc /= QMCKL_SUCCESS) then + print *, irp_here, 'qmckl error in read_trexio' + rc = qmckl_check(qmckl_ctx, rc) + stop -1 + endif + + rc = qmckl_set_point(qmckl_ctx, 'N', n_points_final_grid*1_8, final_grid_points, n_points_final_grid*3_8) + if (rc /= QMCKL_SUCCESS) then + print *, irp_here, 'qmckl error in set_electron_point' + rc = qmckl_check(qmckl_ctx, rc) + stop -1 + endif + + double precision, allocatable :: vgl(:,:,:) + allocate( vgl(mo_num,5,n_points_final_grid)) + rc = qmckl_get_mo_basis_mo_vgl_inplace(qmckl_ctx, vgl, n_points_final_grid*mo_num*5_8) + if (rc /= QMCKL_SUCCESS) then + print *, irp_here, 'qmckl error in get_mo_vgl' + rc = qmckl_check(qmckl_ctx, rc) + stop -1 + endif + + integer :: i,k + do k=1,n_points_final_grid + do i=1,mo_num + mos_in_r_array_qmckl(i,k) = vgl(i,1,k) + mos_grad_in_r_array_qmckl(i,k,1) = vgl(i,2,k) + mos_grad_in_r_array_qmckl(i,k,2) = vgl(i,3,k) + mos_grad_in_r_array_qmckl(i,k,3) = vgl(i,4,k) + mos_lapl_in_r_array_qmckl(i,k) = vgl(i,5,k) + enddo + enddo + +END_PROVIDER + + From 109a956f0d947665af7fbd3ed02d3569c49e592e Mon Sep 17 00:00:00 2001 From: eginer Date: Mon, 6 May 2024 18:30:05 +0200 Subject: [PATCH 028/159] does not compile but working on it --- plugins/local/slater_tc/h_mat_triple.irp.f | 391 ------------------ .../local/slater_tc/slater_tc_opt_diag.irp.f | 311 +++++++++++++- .../slater_tc/symmetrized_3_e_int_prov.irp.f | 140 ------- plugins/local/slater_tc_no_opt/.gitignore | 59 +++ plugins/local/slater_tc_no_opt/NEED | 8 + plugins/local/slater_tc_no_opt/README.rst | 4 + .../h_biortho.irp.f | 0 .../local/slater_tc_no_opt/h_mat_triple.irp.f | 193 +++++++++ .../h_tc_bi_ortho_psi.irp.f | 0 .../slater_tc_3e_slow.irp.f | 2 +- .../slater_tc_no_opt.irp.f} | 2 +- .../slater_tc_slow.irp.f | 73 +--- src/determinants/slater_rules_general.irp.f | 192 +++++++++ 13 files changed, 769 insertions(+), 606 deletions(-) delete mode 100644 plugins/local/slater_tc/h_mat_triple.irp.f delete mode 100644 plugins/local/slater_tc/symmetrized_3_e_int_prov.irp.f create mode 100644 plugins/local/slater_tc_no_opt/.gitignore create mode 100644 plugins/local/slater_tc_no_opt/NEED create mode 100644 plugins/local/slater_tc_no_opt/README.rst rename plugins/local/{slater_tc => slater_tc_no_opt}/h_biortho.irp.f (100%) create mode 100644 plugins/local/slater_tc_no_opt/h_mat_triple.irp.f rename plugins/local/{slater_tc => slater_tc_no_opt}/h_tc_bi_ortho_psi.irp.f (100%) rename plugins/local/{slater_tc => slater_tc_no_opt}/slater_tc_3e_slow.irp.f (99%) rename plugins/local/{slater_tc/slater_tc.irp.f => slater_tc_no_opt/slater_tc_no_opt.irp.f} (82%) rename plugins/local/{slater_tc => slater_tc_no_opt}/slater_tc_slow.irp.f (80%) create mode 100644 src/determinants/slater_rules_general.irp.f diff --git a/plugins/local/slater_tc/h_mat_triple.irp.f b/plugins/local/slater_tc/h_mat_triple.irp.f deleted file mode 100644 index 6f5697a2..00000000 --- a/plugins/local/slater_tc/h_mat_triple.irp.f +++ /dev/null @@ -1,391 +0,0 @@ -subroutine get_excitation_general(key_i,key_j, Nint,degree_array,holes_array, particles_array,phase) - use bitmasks - BEGIN_DOC -! returns the array, for each spin, of holes/particles between key_i and key_j -! -! with the following convention: a^+_{particle} a_{hole}|key_i> = |key_j> - END_DOC - include 'utils/constants.include.F' - implicit none - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) - integer, intent(out) :: holes_array(100,2),particles_array(100,2),degree_array(2) - double precision, intent(out) :: phase - integer :: ispin,k,i,pos - integer(bit_kind) :: key_hole, key_particle - integer(bit_kind) :: xorvec(N_int_max,2) - holes_array = -1 - particles_array = -1 - degree_array = 0 - do i = 1, N_int - xorvec(i,1) = xor( key_i(i,1), key_j(i,1)) - xorvec(i,2) = xor( key_i(i,2), key_j(i,2)) - degree_array(1) += popcnt(xorvec(i,1)) - degree_array(2) += popcnt(xorvec(i,2)) - enddo - degree_array(1) = shiftr(degree_array(1),1) - degree_array(2) = shiftr(degree_array(2),1) - - do ispin = 1, 2 - k = 1 - !!! GETTING THE HOLES - do i = 1, N_int - key_hole = iand(xorvec(i,ispin),key_i(i,ispin)) - do while(key_hole .ne.0_bit_kind) - pos = trailz(key_hole) - holes_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos - key_hole = ibclr(key_hole,pos) - k += 1 - if(k .gt.100)then - print*,'WARNING in get_excitation_general' - print*,'More than a 100-th excitation for spin ',ispin - print*,'stoping ...' - stop - endif - enddo - enddo - enddo - do ispin = 1, 2 - k = 1 - !!! GETTING THE PARTICLES - do i = 1, N_int - key_particle = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_j(i,ispin)) - do while(key_particle .ne.0_bit_kind) - pos = trailz(key_particle) - particles_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos - key_particle = ibclr(key_particle,pos) - k += 1 - if(k .gt.100)then - print*,'WARNING in get_excitation_general ' - print*,'More than a 100-th excitation for spin ',ispin - print*,'stoping ...' - stop - endif - enddo - enddo - enddo - integer :: h,p, i_ok - integer(bit_kind), allocatable :: det_i(:,:),det_ip(:,:) - integer :: exc(0:2,2,2) - double precision :: phase_tmp - allocate(det_i(Nint,2),det_ip(N_int,2)) - det_i = key_i - phase = 1.d0 - do ispin = 1, 2 - do i = 1, degree_array(ispin) - h = holes_array(i,ispin) - p = particles_array(i,ispin) - det_ip = det_i - call do_single_excitation(det_ip,h,p,ispin,i_ok) - if(i_ok == -1)then - print*,'excitation was not possible ' - stop - endif - call get_single_excitation(det_i,det_ip,exc,phase_tmp,Nint) - phase *= phase_tmp - det_i = det_ip - enddo - enddo - -end - -subroutine get_holes_general(key_i, key_j,Nint, holes_array) - use bitmasks - BEGIN_DOC -! returns the array, per spin, of holes between key_i and key_j -! -! with the following convention: a_{hole}|key_i> --> |key_j> - END_DOC - implicit none - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) - integer, intent(out) :: holes_array(100,2) - integer(bit_kind) :: key_hole - integer :: ispin,k,i,pos - holes_array = -1 - do ispin = 1, 2 - k = 1 - do i = 1, N_int - key_hole = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_i(i,ispin)) - do while(key_hole .ne.0_bit_kind) - pos = trailz(key_hole) - holes_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos - key_hole = ibclr(key_hole,pos) - k += 1 - if(k .gt.100)then - print*,'WARNING in get_holes_general' - print*,'More than a 100-th excitation for spin ',ispin - print*,'stoping ...' - stop - endif - enddo - enddo - enddo -end - -subroutine get_particles_general(key_i, key_j,Nint,particles_array) - use bitmasks - BEGIN_DOC -! returns the array, per spin, of particles between key_i and key_j -! -! with the following convention: a^dagger_{particle}|key_i> --> |key_j> - END_DOC - implicit none - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) - integer, intent(out) :: particles_array(100,2) - integer(bit_kind) :: key_particle - integer :: ispin,k,i,pos - particles_array = -1 - do ispin = 1, 2 - k = 1 - do i = 1, N_int - key_particle = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_j(i,ispin)) - do while(key_particle .ne.0_bit_kind) - pos = trailz(key_particle) - particles_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos - key_particle = ibclr(key_particle,pos) - k += 1 - if(k .gt.100)then - print*,'WARNING in get_holes_general' - print*,'More than a 100-th excitation for spin ',ispin - print*,'Those are the two determinants' - call debug_det(key_i, N_int) - call debug_det(key_j, N_int) - print*,'stoping ...' - stop - endif - enddo - enddo - enddo -end - -subroutine get_phase_general(key_i,Nint,degree, holes_array, particles_array,phase) - implicit none - integer, intent(in) :: degree(2), Nint - integer(bit_kind), intent(in) :: key_i(Nint,2) - integer, intent(in) :: holes_array(100,2),particles_array(100,2) - double precision, intent(out) :: phase - integer :: i,ispin,h,p, i_ok - integer(bit_kind), allocatable :: det_i(:,:),det_ip(:,:) - integer :: exc(0:2,2,2) - double precision :: phase_tmp - allocate(det_i(Nint,2),det_ip(N_int,2)) - det_i = key_i - phase = 1.d0 - do ispin = 1, 2 - do i = 1, degree(ispin) - h = holes_array(i,ispin) - p = particles_array(i,ispin) - det_ip = det_i - call do_single_excitation(det_ip,h,p,ispin,i_ok) - if(i_ok == -1)then - print*,'excitation was not possible ' - stop - endif - call get_single_excitation(det_i,det_ip,exc,phase_tmp,Nint) - phase *= phase_tmp - det_i = det_ip - enddo - enddo - -end - -subroutine H_tc_s2_u_0_with_pure_three(v_0, s_0, u_0, N_st, sze) - BEGIN_DOC - ! Computes $v_0 = H^TC | u_0\rangle$ WITH PURE TRIPLE EXCITATION TERMS - ! - ! Assumes that the determinants are in psi_det - ! - ! istart, iend, ishift, istep are used in ZMQ parallelization. - END_DOC - - use bitmasks - implicit none - - integer, intent(in) :: N_st,sze - double precision, intent(in) :: u_0(sze,N_st) - double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st) - call H_tc_s2_u_0_opt(v_0, s_0, u_0, N_st, sze) - integer :: i,j,degree,ist - double precision :: hmono, htwoe, hthree, htot - do i = 1, N_det - do j = 1, N_det - call get_excitation_degree(psi_det(1,1,i),psi_det(1,1,j),degree,N_int) - if(degree .ne. 3)cycle - call triple_htilde_mu_mat_fock_bi_ortho(N_int, psi_det(1,1,i), psi_det(1,1,j), hmono, htwoe, hthree, htot) - do ist = 1, N_st - v_0(i,ist) += htot * u_0(j,ist) - enddo - enddo - enddo -end - -subroutine H_tc_s2_u_0_with_pure_three_omp(v_0, s_0, u_0, N_st, sze) - BEGIN_DOC - ! Computes $v_0 = H^TC | u_0\rangle$ WITH PURE TRIPLE EXCITATION TERMS - ! - ! Assumes that the determinants are in psi_det - ! - ! istart, iend, ishift, istep are used in ZMQ parallelization. - END_DOC - - use bitmasks - implicit none - - integer, intent(in) :: N_st,sze - double precision, intent(in) :: u_0(sze,N_st) - double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st) - call H_tc_s2_u_0_opt(v_0, s_0, u_0, N_st, sze) - integer :: i,j,degree,ist - double precision :: hmono, htwoe, hthree, htot - !$OMP PARALLEL DO DEFAULT(NONE) SCHEDULE(dynamic,8) & - !$OMP SHARED(N_st, N_det, N_int, psi_det, u_0, v_0) & - !$OMP PRIVATE(ist, i, j, degree, hmono, htwoe, hthree,htot) - do i = 1, N_det - do j = 1, N_det - call get_excitation_degree(psi_det(1,1,i),psi_det(1,1,j),degree,N_int) - if(degree .ne. 3)cycle - call triple_htilde_mu_mat_fock_bi_ortho(N_int, psi_det(1,1,i), psi_det(1,1,j), hmono, htwoe, hthree, htot) - do ist = 1, N_st - v_0(i,ist) += htot * u_0(j,ist) - enddo - enddo - enddo - !$OMP END PARALLEL DO -end - -! --- - -subroutine H_tc_s2_dagger_u_0_with_pure_three(v_0, s_0, u_0, N_st, sze) - BEGIN_DOC - ! Computes $v_0 = (H^TC)^dagger | u_0\rangle$ WITH PURE TRIPLE EXCITATION TERMS - ! - ! Assumes that the determinants are in psi_det - ! - ! istart, iend, ishift, istep are used in ZMQ parallelization. - END_DOC - - use bitmasks - implicit none - - integer, intent(in) :: N_st,sze - double precision, intent(in) :: u_0(sze,N_st) - double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st) - call H_tc_s2_dagger_u_0_opt(v_0, s_0, u_0, N_st, sze) - integer :: i,j,degree,ist - double precision :: hmono, htwoe, hthree, htot - do i = 1, N_det - do j = 1, N_det - call get_excitation_degree(psi_det(1,1,i),psi_det(1,1,j),degree,N_int) - if(degree .ne. 3)cycle - call triple_htilde_mu_mat_fock_bi_ortho(N_int, psi_det(1,1,j), psi_det(1,1,i), hmono, htwoe, hthree, htot) - do ist = 1, N_st - v_0(i,ist) += htot * u_0(j,ist) - enddo - enddo - enddo -end - -subroutine H_tc_s2_dagger_u_0_with_pure_three_omp(v_0, s_0, u_0, N_st, sze) - BEGIN_DOC - ! Computes $v_0 = (H^TC)^dagger | u_0\rangle$ WITH PURE TRIPLE EXCITATION TERMS - ! - ! Assumes that the determinants are in psi_det - ! - ! istart, iend, ishift, istep are used in ZMQ parallelization. - END_DOC - - use bitmasks - implicit none - - integer, intent(in) :: N_st,sze - double precision, intent(in) :: u_0(sze,N_st) - double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st) - call H_tc_s2_dagger_u_0_opt(v_0, s_0, u_0, N_st, sze) - integer :: i,j,degree,ist - double precision :: hmono, htwoe, hthree, htot - !$OMP PARALLEL DO DEFAULT(NONE) SCHEDULE(dynamic,8) & - !$OMP SHARED(N_st, N_det, N_int, psi_det, u_0, v_0) & - !$OMP PRIVATE(ist, i, j, degree, hmono, htwoe, hthree,htot) - do i = 1, N_det - do j = 1, N_det - call get_excitation_degree(psi_det(1,1,i),psi_det(1,1,j),degree,N_int) - if(degree .ne. 3)cycle - call triple_htilde_mu_mat_fock_bi_ortho(N_int, psi_det(1,1,j), psi_det(1,1,i), hmono, htwoe, hthree, htot) - do ist = 1, N_st - v_0(i,ist) += htot * u_0(j,ist) - enddo - enddo - enddo - !$OMP END PARALLEL DO -end - -! --- -subroutine triple_htilde_mu_mat_fock_bi_ortho(Nint, key_j, key_i, hmono, htwoe, hthree, htot) - use bitmasks - BEGIN_DOC -! for triple excitation -!! -!! WARNING !! -! -! Genuine triple excitations of the same spin are not yet implemented - END_DOC - implicit none - integer(bit_kind), intent(in) :: key_j(N_int,2),key_i(N_int,2) - integer, intent(in) :: Nint - double precision, intent(out) :: hmono, htwoe, hthree, htot - integer :: degree - integer :: h1, p1, h2, p2, s1, s2, h3, p3, s3 - integer :: holes_array(100,2),particles_array(100,2),degree_array(2) - double precision :: phase,sym_3_e_int_from_6_idx_tensor - - hmono = 0.d0 - htwoe = 0.d0 - hthree = 0.d0 - htot = 0.d0 - call get_excitation_general(key_j, key_i, Nint,degree_array,holes_array, particles_array,phase) - degree = degree_array(1) + degree_array(2) - if(degree .ne. 3)return - if(degree_array(1)==3.or.degree_array(2)==3)then - if(degree_array(1) == 3)then - h1 = holes_array(1,1) - h2 = holes_array(2,1) - h3 = holes_array(3,1) - p1 = particles_array(1,1) - p2 = particles_array(2,1) - p3 = particles_array(3,1) - else - h1 = holes_array(1,2) - h2 = holes_array(2,2) - h3 = holes_array(3,2) - p1 = particles_array(1,2) - p2 = particles_array(2,2) - p3 = particles_array(3,2) - endif - hthree = sym_3_e_int_from_6_idx_tensor(p3, p2, p1, h3, h2, h1) - else - if(degree_array(1) == 2.and.degree_array(2) == 1)then ! double alpha + single beta - h1 = holes_array(1,1) - h2 = holes_array(2,1) - h3 = holes_array(1,2) - p1 = particles_array(1,1) - p2 = particles_array(2,1) - p3 = particles_array(1,2) - else if(degree_array(2) == 2 .and. degree_array(1) == 1)then ! double beta + single alpha - h1 = holes_array(1,2) - h2 = holes_array(2,2) - h3 = holes_array(1,1) - p1 = particles_array(1,2) - p2 = particles_array(2,2) - p3 = particles_array(1,1) - else - print*,'PB !!' - stop - endif - hthree = three_body_ints_bi_ort(p3,p2,p1,h3,h2,h1) - three_body_ints_bi_ort(p3,p2,p1,h3,h1,h2) - endif - hthree *= phase - htot = hthree - end - diff --git a/plugins/local/slater_tc/slater_tc_opt_diag.irp.f b/plugins/local/slater_tc/slater_tc_opt_diag.irp.f index 78f9dc66..3c5a5d12 100644 --- a/plugins/local/slater_tc/slater_tc_opt_diag.irp.f +++ b/plugins/local/slater_tc/slater_tc_opt_diag.irp.f @@ -19,13 +19,13 @@ PROVIDE HF_bitmask PROVIDE mo_l_coef mo_r_coef - call diag_htilde_mu_mat_bi_ortho_slow(N_int, HF_bitmask, hmono, htwoe, htot) + call diag_htc_bi_orth_2e_brute(N_int, HF_bitmask, hmono, htwoe, htot) ref_tc_energy_1e = hmono ref_tc_energy_2e = htwoe if(three_body_h_tc) then - call diag_htilde_three_body_ints_bi_ort_slow(N_int, HF_bitmask, hthree) + call diag_htc_bi_orth_3e_brute(N_int, HF_bitmask, hthree) ref_tc_energy_3e = hthree else ref_tc_energy_3e = 0.d0 @@ -524,3 +524,310 @@ end ! --- +subroutine diag_htc_bi_orth_2e_brute(Nint, key_i, hmono, htwoe, htot) + + BEGIN_DOC + ! + ! diagonal element of htilde ONLY FOR ONE- AND TWO-BODY TERMS + ! + END_DOC + + use bitmasks + + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_i(Nint,2) + double precision, intent(out) :: hmono,htwoe,htot + integer :: occ(Nint*bit_kind_size,2) + integer :: Ne(2), i, j, ii, jj, ispin, jspin, k, kk + double precision :: get_mo_two_e_integral_tc_int + integer(bit_kind) :: key_i_core(Nint,2) + + PROVIDE mo_bi_ortho_tc_two_e + + hmono = 0.d0 + htwoe = 0.d0 + htot = 0.d0 + + call bitstring_to_list_ab(key_i, occ, Ne, Nint) + + do ispin = 1, 2 + do i = 1, Ne(ispin) + ii = occ(i,ispin) + hmono += mo_bi_ortho_tc_one_e(ii,ii) + enddo + enddo + + ! alpha/beta two-body + ispin = 1 + jspin = 2 + do i = 1, Ne(ispin) ! electron 1 (so it can be associated to mu(r1)) + ii = occ(i,ispin) + do j = 1, Ne(jspin) ! electron 2 + jj = occ(j,jspin) + htwoe += mo_bi_ortho_tc_two_e(jj,ii,jj,ii) + enddo + enddo + + ! alpha/alpha two-body + do i = 1, Ne(ispin) + ii = occ(i,ispin) + do j = i+1, Ne(ispin) + jj = occ(j,ispin) + htwoe += mo_bi_ortho_tc_two_e(ii,jj,ii,jj) - mo_bi_ortho_tc_two_e(ii,jj,jj,ii) + enddo + enddo + + ! beta/beta two-body + do i = 1, Ne(jspin) + ii = occ(i,jspin) + do j = i+1, Ne(jspin) + jj = occ(j,jspin) + htwoe += mo_bi_ortho_tc_two_e(ii,jj,ii,jj) - mo_bi_ortho_tc_two_e(ii,jj,jj,ii) + enddo + enddo + + htot = hmono + htwoe + +end + +! --- + +subroutine diag_htc_bi_orth_3e_brute(Nint, key_i, hthree) + + BEGIN_DOC + ! diagonal element of htilde ONLY FOR THREE-BODY TERMS WITH BI ORTHONORMAL ORBITALS + END_DOC + + use bitmasks + + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_i(Nint,2) + double precision, intent(out) :: hthree + integer :: occ(Nint*bit_kind_size,2) + integer :: Ne(2),i,j,ii,jj,ispin,jspin,m,mm + integer(bit_kind) :: key_i_core(Nint,2) + double precision :: direct_int, exchange_int, ref + double precision, external :: sym_3_e_int_from_6_idx_tensor + double precision, external :: three_e_diag_parrallel_spin + + PROVIDE mo_l_coef mo_r_coef + + if(core_tc_op) then + do i = 1, Nint + key_i_core(i,1) = xor(key_i(i,1), core_bitmask(i,1)) + key_i_core(i,2) = xor(key_i(i,2), core_bitmask(i,2)) + enddo + call bitstring_to_list_ab(key_i_core, occ, Ne, Nint) + else + call bitstring_to_list_ab(key_i, occ, Ne, Nint) + endif + + hthree = 0.d0 + + if((Ne(1)+Ne(2)) .ge. 3) then + + ! alpha/alpha/beta three-body + do i = 1, Ne(1) + ii = occ(i,1) + do j = i+1, Ne(1) + jj = occ(j,1) + do m = 1, Ne(2) + mm = occ(m,2) + !direct_int = three_body_ints_bi_ort(mm,jj,ii,mm,jj,ii) !uses the 6-idx tensor + !exchange_int = three_body_ints_bi_ort(mm,jj,ii,mm,ii,jj) !uses the 6-idx tensor + direct_int = three_e_3_idx_direct_bi_ort(mm,jj,ii) !uses 3-idx tensor + exchange_int = three_e_3_idx_exch12_bi_ort(mm,jj,ii) !uses 3-idx tensor + hthree += direct_int - exchange_int + enddo + enddo + enddo + + ! beta/beta/alpha three-body + do i = 1, Ne(2) + ii = occ(i,2) + do j = i+1, Ne(2) + jj = occ(j,2) + do m = 1, Ne(1) + mm = occ(m,1) + !direct_int = three_body_ints_bi_ort(mm,jj,ii,mm,jj,ii) !uses the 6-idx tensor + !exchange_int = three_body_ints_bi_ort(mm,jj,ii,mm,ii,jj) !uses the 6-idx tensor + direct_int = three_e_3_idx_direct_bi_ort(mm,jj,ii) + exchange_int = three_e_3_idx_exch12_bi_ort(mm,jj,ii) + hthree += direct_int - exchange_int + enddo + enddo + enddo + + ! alpha/alpha/alpha three-body + do i = 1, Ne(1) + ii = occ(i,1) ! 1 + do j = i+1, Ne(1) + jj = occ(j,1) ! 2 + do m = j+1, Ne(1) + mm = occ(m,1) ! 3 + !hthree += sym_3_e_int_from_6_idx_tensor(mm,jj,ii,mm,jj,ii) !uses the 6 idx tensor + hthree += three_e_diag_parrallel_spin(mm,jj,ii) !uses only 3-idx tensors + enddo + enddo + enddo + + ! beta/beta/beta three-body + do i = 1, Ne(2) + ii = occ(i,2) ! 1 + do j = i+1, Ne(2) + jj = occ(j,2) ! 2 + do m = j+1, Ne(2) + mm = occ(m,2) ! 3 + !hthree += sym_3_e_int_from_6_idx_tensor(mm,jj,ii,mm,jj,ii) !uses the 6 idx tensor + hthree += three_e_diag_parrallel_spin(mm,jj,ii) !uses only 3-idx tensors + enddo + enddo + enddo + + endif + +end + + + +BEGIN_PROVIDER [ double precision, three_e_diag_parrallel_spin_prov, (mo_num, mo_num, mo_num)] + + BEGIN_DOC + ! + ! matrix element of the -L three-body operator ON A BI ORTHONORMAL BASIS + ! + ! three_e_diag_parrallel_spin_prov(m,j,i) = All combinations of the form for same spin matrix elements + ! + ! notice the -1 sign: in this way three_e_diag_parrallel_spin_prov can be directly used to compute Slater rules with a + sign + ! + END_DOC + + implicit none + integer :: i, j, m + double precision :: integral, wall1, wall0, three_e_diag_parrallel_spin + + three_e_diag_parrallel_spin_prov = 0.d0 + print *, ' Providing the three_e_diag_parrallel_spin_prov ...' + + integral = three_e_diag_parrallel_spin(1,1,1) ! to provide all stuffs + call wall_time(wall0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i,j,m,integral) & + !$OMP SHARED (mo_num,three_e_diag_parrallel_spin_prov) + !$OMP DO SCHEDULE (dynamic) + do i = 1, mo_num + do j = 1, mo_num + do m = j, mo_num + three_e_diag_parrallel_spin_prov(m,j,i) = three_e_diag_parrallel_spin(m,j,i) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + do i = 1, mo_num + do j = 1, mo_num + do m = 1, j + three_e_diag_parrallel_spin_prov(m,j,i) = three_e_diag_parrallel_spin_prov(j,m,i) + enddo + enddo + enddo + + call wall_time(wall1) + print *, ' wall time for three_e_diag_parrallel_spin_prov', wall1 - wall0 + +END_PROVIDER + +BEGIN_PROVIDER [ double precision, three_e_single_parrallel_spin_prov, (mo_num, mo_num, mo_num, mo_num)] + + BEGIN_DOC + ! + ! matrix element of the -L three-body operator FOR THE DIRECT TERMS OF SINGLE EXCITATIONS AND BI ORTHO MOs + ! + ! three_e_single_parrallel_spin_prov(m,j,k,i) = All combination of for same spin matrix elements + ! + ! notice the -1 sign: in this way three_e_3_idx_direct_bi_ort can be directly used to compute Slater rules with a + sign + ! + END_DOC + + implicit none + integer :: i, j, k, m + double precision :: integral, wall1, wall0, three_e_single_parrallel_spin + + three_e_single_parrallel_spin_prov = 0.d0 + print *, ' Providing the three_e_single_parrallel_spin_prov ...' + + integral = three_e_single_parrallel_spin(1,1,1,1) + call wall_time(wall0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i,j,k,m,integral) & + !$OMP SHARED (mo_num,three_e_single_parrallel_spin_prov) + !$OMP DO SCHEDULE (dynamic) + do i = 1, mo_num + do k = 1, mo_num + do j = 1, mo_num + do m = 1, mo_num + three_e_single_parrallel_spin_prov(m,j,k,i) = three_e_single_parrallel_spin(m,j,k,i) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + call wall_time(wall1) + print *, ' wall time for three_e_single_parrallel_spin_prov', wall1 - wall0 + +END_PROVIDER + + +! --- + +BEGIN_PROVIDER [ double precision, three_e_double_parrallel_spin_prov, (mo_num, mo_num, mo_num, mo_num, mo_num)] + + BEGIN_DOC + ! + ! matrix element of the -L three-body operator FOR THE DIRECT TERMS OF DOUBLE EXCITATIONS AND BI ORTHO MOs + ! + ! three_e_double_parrallel_spin_prov(m,l,j,k,i) = ::: notice that i is the RIGHT MO and k is the LEFT MO + ! + ! notice the -1 sign: in this way three_e_3_idx_direct_bi_ort can be directly used to compute Slater rules with a + sign + END_DOC + + implicit none + integer :: i, j, k, m, l + double precision :: integral, wall1, wall0, three_e_double_parrallel_spin + + three_e_double_parrallel_spin_prov = 0.d0 + print *, ' Providing the three_e_double_parrallel_spin_prov ...' + call wall_time(wall0) + + integral = three_e_double_parrallel_spin(1,1,1,1,1) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i,j,k,m,l,integral) & + !$OMP SHARED (mo_num,three_e_double_parrallel_spin_prov) + !$OMP DO SCHEDULE (dynamic) + do i = 1, mo_num + do k = 1, mo_num + do j = 1, mo_num + do l = 1, mo_num + do m = 1, mo_num + three_e_double_parrallel_spin_prov(m,l,j,k,i) = three_e_double_parrallel_spin(m,l,j,k,i) + enddo + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + call wall_time(wall1) + print *, ' wall time for three_e_double_parrallel_spin_prov', wall1 - wall0 + +END_PROVIDER + diff --git a/plugins/local/slater_tc/symmetrized_3_e_int_prov.irp.f b/plugins/local/slater_tc/symmetrized_3_e_int_prov.irp.f deleted file mode 100644 index e8277a74..00000000 --- a/plugins/local/slater_tc/symmetrized_3_e_int_prov.irp.f +++ /dev/null @@ -1,140 +0,0 @@ - -BEGIN_PROVIDER [ double precision, three_e_diag_parrallel_spin_prov, (mo_num, mo_num, mo_num)] - - BEGIN_DOC - ! - ! matrix element of the -L three-body operator ON A BI ORTHONORMAL BASIS - ! - ! three_e_diag_parrallel_spin_prov(m,j,i) = All combinations of the form for same spin matrix elements - ! - ! notice the -1 sign: in this way three_e_diag_parrallel_spin_prov can be directly used to compute Slater rules with a + sign - ! - END_DOC - - implicit none - integer :: i, j, m - double precision :: integral, wall1, wall0, three_e_diag_parrallel_spin - - three_e_diag_parrallel_spin_prov = 0.d0 - print *, ' Providing the three_e_diag_parrallel_spin_prov ...' - - integral = three_e_diag_parrallel_spin(1,1,1) ! to provide all stuffs - call wall_time(wall0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i,j,m,integral) & - !$OMP SHARED (mo_num,three_e_diag_parrallel_spin_prov) - !$OMP DO SCHEDULE (dynamic) - do i = 1, mo_num - do j = 1, mo_num - do m = j, mo_num - three_e_diag_parrallel_spin_prov(m,j,i) = three_e_diag_parrallel_spin(m,j,i) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - do i = 1, mo_num - do j = 1, mo_num - do m = 1, j - three_e_diag_parrallel_spin_prov(m,j,i) = three_e_diag_parrallel_spin_prov(j,m,i) - enddo - enddo - enddo - - call wall_time(wall1) - print *, ' wall time for three_e_diag_parrallel_spin_prov', wall1 - wall0 - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, three_e_single_parrallel_spin_prov, (mo_num, mo_num, mo_num, mo_num)] - - BEGIN_DOC - ! - ! matrix element of the -L three-body operator FOR THE DIRECT TERMS OF SINGLE EXCITATIONS AND BI ORTHO MOs - ! - ! three_e_single_parrallel_spin_prov(m,j,k,i) = All combination of for same spin matrix elements - ! - ! notice the -1 sign: in this way three_e_3_idx_direct_bi_ort can be directly used to compute Slater rules with a + sign - ! - END_DOC - - implicit none - integer :: i, j, k, m - double precision :: integral, wall1, wall0, three_e_single_parrallel_spin - - three_e_single_parrallel_spin_prov = 0.d0 - print *, ' Providing the three_e_single_parrallel_spin_prov ...' - - integral = three_e_single_parrallel_spin(1,1,1,1) - call wall_time(wall0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i,j,k,m,integral) & - !$OMP SHARED (mo_num,three_e_single_parrallel_spin_prov) - !$OMP DO SCHEDULE (dynamic) - do i = 1, mo_num - do k = 1, mo_num - do j = 1, mo_num - do m = 1, mo_num - three_e_single_parrallel_spin_prov(m,j,k,i) = three_e_single_parrallel_spin(m,j,k,i) - enddo - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - call wall_time(wall1) - print *, ' wall time for three_e_single_parrallel_spin_prov', wall1 - wall0 - -END_PROVIDER - - -! --- - -BEGIN_PROVIDER [ double precision, three_e_double_parrallel_spin_prov, (mo_num, mo_num, mo_num, mo_num, mo_num)] - - BEGIN_DOC - ! - ! matrix element of the -L three-body operator FOR THE DIRECT TERMS OF DOUBLE EXCITATIONS AND BI ORTHO MOs - ! - ! three_e_double_parrallel_spin_prov(m,l,j,k,i) = ::: notice that i is the RIGHT MO and k is the LEFT MO - ! - ! notice the -1 sign: in this way three_e_3_idx_direct_bi_ort can be directly used to compute Slater rules with a + sign - END_DOC - - implicit none - integer :: i, j, k, m, l - double precision :: integral, wall1, wall0, three_e_double_parrallel_spin - - three_e_double_parrallel_spin_prov = 0.d0 - print *, ' Providing the three_e_double_parrallel_spin_prov ...' - call wall_time(wall0) - - integral = three_e_double_parrallel_spin(1,1,1,1,1) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i,j,k,m,l,integral) & - !$OMP SHARED (mo_num,three_e_double_parrallel_spin_prov) - !$OMP DO SCHEDULE (dynamic) - do i = 1, mo_num - do k = 1, mo_num - do j = 1, mo_num - do l = 1, mo_num - do m = 1, mo_num - three_e_double_parrallel_spin_prov(m,l,j,k,i) = three_e_double_parrallel_spin(m,l,j,k,i) - enddo - enddo - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - call wall_time(wall1) - print *, ' wall time for three_e_double_parrallel_spin_prov', wall1 - wall0 - -END_PROVIDER - diff --git a/plugins/local/slater_tc_no_opt/.gitignore b/plugins/local/slater_tc_no_opt/.gitignore new file mode 100644 index 00000000..1561915b --- /dev/null +++ b/plugins/local/slater_tc_no_opt/.gitignore @@ -0,0 +1,59 @@ +IRPF90_temp/ +IRPF90_man/ +build.ninja +irpf90.make +ezfio_interface.irp.f +irpf90_entities +tags +Makefile +ao_basis +ao_one_e_ints +ao_two_e_erf_ints +ao_two_e_ints +aux_quantities +becke_numerical_grid +bitmask +cis +cisd +cipsi +davidson +davidson_dressed +davidson_undressed +density_for_dft +determinants +dft_keywords +dft_utils_in_r +dft_utils_one_e +dft_utils_two_body +dressing +dummy +electrons +ezfio_files +fci +generators_cas +generators_full +hartree_fock +iterations +kohn_sham +kohn_sham_rs +mo_basis +mo_guess +mo_one_e_ints +mo_two_e_erf_ints +mo_two_e_ints +mpi +mrpt_utils +nuclei +perturbation +pseudo +psiref_cas +psiref_utils +scf_utils +selectors_cassd +selectors_full +selectors_utils +single_ref_method +slave +tools +utils +zmq diff --git a/plugins/local/slater_tc_no_opt/NEED b/plugins/local/slater_tc_no_opt/NEED new file mode 100644 index 00000000..a8669866 --- /dev/null +++ b/plugins/local/slater_tc_no_opt/NEED @@ -0,0 +1,8 @@ +determinants +normal_order_old +bi_ort_ints +bi_ortho_mos +tc_keywords +non_hermit_dav +dav_general_mat +tc_scf diff --git a/plugins/local/slater_tc_no_opt/README.rst b/plugins/local/slater_tc_no_opt/README.rst new file mode 100644 index 00000000..90679e4c --- /dev/null +++ b/plugins/local/slater_tc_no_opt/README.rst @@ -0,0 +1,4 @@ +================ +slater_tc_no_opt +================ + diff --git a/plugins/local/slater_tc/h_biortho.irp.f b/plugins/local/slater_tc_no_opt/h_biortho.irp.f similarity index 100% rename from plugins/local/slater_tc/h_biortho.irp.f rename to plugins/local/slater_tc_no_opt/h_biortho.irp.f diff --git a/plugins/local/slater_tc_no_opt/h_mat_triple.irp.f b/plugins/local/slater_tc_no_opt/h_mat_triple.irp.f new file mode 100644 index 00000000..e2c8f982 --- /dev/null +++ b/plugins/local/slater_tc_no_opt/h_mat_triple.irp.f @@ -0,0 +1,193 @@ +subroutine get_excitation_general(key_i,key_j, Nint,degree_array,holes_array, particles_array,phase) + use bitmasks + BEGIN_DOC +! returns the array, for each spin, of holes/particles between key_i and key_j +! +! with the following convention: a^+_{particle} a_{hole}|key_i> = |key_j> + END_DOC + include 'utils/constants.include.F' + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) + integer, intent(out) :: holes_array(100,2),particles_array(100,2),degree_array(2) + double precision, intent(out) :: phase + integer :: ispin,k,i,pos + integer(bit_kind) :: key_hole, key_particle + integer(bit_kind) :: xorvec(N_int_max,2) + holes_array = -1 + particles_array = -1 + degree_array = 0 + do i = 1, N_int + xorvec(i,1) = xor( key_i(i,1), key_j(i,1)) + xorvec(i,2) = xor( key_i(i,2), key_j(i,2)) + degree_array(1) += popcnt(xorvec(i,1)) + degree_array(2) += popcnt(xorvec(i,2)) + enddo + degree_array(1) = shiftr(degree_array(1),1) + degree_array(2) = shiftr(degree_array(2),1) + + do ispin = 1, 2 + k = 1 + !!! GETTING THE HOLES + do i = 1, N_int + key_hole = iand(xorvec(i,ispin),key_i(i,ispin)) + do while(key_hole .ne.0_bit_kind) + pos = trailz(key_hole) + holes_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos + key_hole = ibclr(key_hole,pos) + k += 1 + if(k .gt.100)then + print*,'WARNING in get_excitation_general' + print*,'More than a 100-th excitation for spin ',ispin + print*,'stoping ...' + stop + endif + enddo + enddo + enddo + do ispin = 1, 2 + k = 1 + !!! GETTING THE PARTICLES + do i = 1, N_int + key_particle = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_j(i,ispin)) + do while(key_particle .ne.0_bit_kind) + pos = trailz(key_particle) + particles_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos + key_particle = ibclr(key_particle,pos) + k += 1 + if(k .gt.100)then + print*,'WARNING in get_excitation_general ' + print*,'More than a 100-th excitation for spin ',ispin + print*,'stoping ...' + stop + endif + enddo + enddo + enddo + integer :: h,p, i_ok + integer(bit_kind), allocatable :: det_i(:,:),det_ip(:,:) + integer :: exc(0:2,2,2) + double precision :: phase_tmp + allocate(det_i(Nint,2),det_ip(N_int,2)) + det_i = key_i + phase = 1.d0 + do ispin = 1, 2 + do i = 1, degree_array(ispin) + h = holes_array(i,ispin) + p = particles_array(i,ispin) + det_ip = det_i + call do_single_excitation(det_ip,h,p,ispin,i_ok) + if(i_ok == -1)then + print*,'excitation was not possible ' + stop + endif + call get_single_excitation(det_i,det_ip,exc,phase_tmp,Nint) + phase *= phase_tmp + det_i = det_ip + enddo + enddo + +end + +subroutine get_holes_general(key_i, key_j,Nint, holes_array) + use bitmasks + BEGIN_DOC +! returns the array, per spin, of holes between key_i and key_j +! +! with the following convention: a_{hole}|key_i> --> |key_j> + END_DOC + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) + integer, intent(out) :: holes_array(100,2) + integer(bit_kind) :: key_hole + integer :: ispin,k,i,pos + holes_array = -1 + do ispin = 1, 2 + k = 1 + do i = 1, N_int + key_hole = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_i(i,ispin)) + do while(key_hole .ne.0_bit_kind) + pos = trailz(key_hole) + holes_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos + key_hole = ibclr(key_hole,pos) + k += 1 + if(k .gt.100)then + print*,'WARNING in get_holes_general' + print*,'More than a 100-th excitation for spin ',ispin + print*,'stoping ...' + stop + endif + enddo + enddo + enddo +end + +subroutine get_particles_general(key_i, key_j,Nint,particles_array) + use bitmasks + BEGIN_DOC +! returns the array, per spin, of particles between key_i and key_j +! +! with the following convention: a^dagger_{particle}|key_i> --> |key_j> + END_DOC + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) + integer, intent(out) :: particles_array(100,2) + integer(bit_kind) :: key_particle + integer :: ispin,k,i,pos + particles_array = -1 + do ispin = 1, 2 + k = 1 + do i = 1, N_int + key_particle = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_j(i,ispin)) + do while(key_particle .ne.0_bit_kind) + pos = trailz(key_particle) + particles_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos + key_particle = ibclr(key_particle,pos) + k += 1 + if(k .gt.100)then + print*,'WARNING in get_holes_general' + print*,'More than a 100-th excitation for spin ',ispin + print*,'Those are the two determinants' + call debug_det(key_i, N_int) + call debug_det(key_j, N_int) + print*,'stoping ...' + stop + endif + enddo + enddo + enddo +end + +subroutine get_phase_general(key_i,Nint,degree, holes_array, particles_array,phase) + implicit none + integer, intent(in) :: degree(2), Nint + integer(bit_kind), intent(in) :: key_i(Nint,2) + integer, intent(in) :: holes_array(100,2),particles_array(100,2) + double precision, intent(out) :: phase + integer :: i,ispin,h,p, i_ok + integer(bit_kind), allocatable :: det_i(:,:),det_ip(:,:) + integer :: exc(0:2,2,2) + double precision :: phase_tmp + allocate(det_i(Nint,2),det_ip(N_int,2)) + det_i = key_i + phase = 1.d0 + do ispin = 1, 2 + do i = 1, degree(ispin) + h = holes_array(i,ispin) + p = particles_array(i,ispin) + det_ip = det_i + call do_single_excitation(det_ip,h,p,ispin,i_ok) + if(i_ok == -1)then + print*,'excitation was not possible ' + stop + endif + call get_single_excitation(det_i,det_ip,exc,phase_tmp,Nint) + phase *= phase_tmp + det_i = det_ip + enddo + enddo + +end + diff --git a/plugins/local/slater_tc/h_tc_bi_ortho_psi.irp.f b/plugins/local/slater_tc_no_opt/h_tc_bi_ortho_psi.irp.f similarity index 100% rename from plugins/local/slater_tc/h_tc_bi_ortho_psi.irp.f rename to plugins/local/slater_tc_no_opt/h_tc_bi_ortho_psi.irp.f diff --git a/plugins/local/slater_tc/slater_tc_3e_slow.irp.f b/plugins/local/slater_tc_no_opt/slater_tc_3e_slow.irp.f similarity index 99% rename from plugins/local/slater_tc/slater_tc_3e_slow.irp.f rename to plugins/local/slater_tc_no_opt/slater_tc_3e_slow.irp.f index cb33d343..f7919653 100644 --- a/plugins/local/slater_tc/slater_tc_3e_slow.irp.f +++ b/plugins/local/slater_tc_no_opt/slater_tc_3e_slow.irp.f @@ -1,7 +1,7 @@ ! --- -subroutine diag_htilde_three_body_ints_bi_ort_slow(Nint, key_i, hthree) +subroutine diag_htc_bi_orth_3e_brute(Nint, key_i, hthree) BEGIN_DOC ! diagonal element of htilde ONLY FOR THREE-BODY TERMS WITH BI ORTHONORMAL ORBITALS diff --git a/plugins/local/slater_tc/slater_tc.irp.f b/plugins/local/slater_tc_no_opt/slater_tc_no_opt.irp.f similarity index 82% rename from plugins/local/slater_tc/slater_tc.irp.f rename to plugins/local/slater_tc_no_opt/slater_tc_no_opt.irp.f index 27ab47c5..0fcc587f 100644 --- a/plugins/local/slater_tc/slater_tc.irp.f +++ b/plugins/local/slater_tc_no_opt/slater_tc_no_opt.irp.f @@ -1,4 +1,4 @@ -program slater_tc +program slater_tc_no_opt implicit none BEGIN_DOC ! TODO : Put the documentation of the program here diff --git a/plugins/local/slater_tc/slater_tc_slow.irp.f b/plugins/local/slater_tc_no_opt/slater_tc_slow.irp.f similarity index 80% rename from plugins/local/slater_tc/slater_tc_slow.irp.f rename to plugins/local/slater_tc_no_opt/slater_tc_slow.irp.f index caf7d665..b06fd12f 100644 --- a/plugins/local/slater_tc/slater_tc_slow.irp.f +++ b/plugins/local/slater_tc_no_opt/slater_tc_slow.irp.f @@ -61,7 +61,7 @@ subroutine htilde_mu_mat_bi_ortho_slow(key_j, key_i, Nint, hmono, htwoe, hthree, if(degree.gt.2) return if(degree == 0) then - call diag_htilde_mu_mat_bi_ortho_slow(Nint, key_i, hmono, htwoe, htot) + call diag_htc_bi_orth_2e_brute(Nint, key_i, hmono, htwoe, htot) else if (degree == 1) then call single_htilde_mu_mat_bi_ortho_slow(Nint, key_j, key_i, hmono, htwoe, htot) else if(degree == 2) then @@ -76,7 +76,7 @@ subroutine htilde_mu_mat_bi_ortho_slow(key_j, key_i, Nint, hmono, htwoe, hthree, else if((degree == 1) .and. (elec_num .gt. 2) .and. three_e_4_idx_term) then call single_htilde_three_body_ints_bi_ort_slow(Nint, key_j, key_i, hthree) else if((degree == 0) .and. (elec_num .gt. 2) .and. three_e_3_idx_term) then - call diag_htilde_three_body_ints_bi_ort_slow(Nint, key_i, hthree) + call diag_htc_bi_orth_3e_brute(Nint, key_i, hthree) endif endif @@ -95,75 +95,6 @@ end ! --- -subroutine diag_htilde_mu_mat_bi_ortho_slow(Nint, key_i, hmono, htwoe, htot) - - BEGIN_DOC - ! - ! diagonal element of htilde ONLY FOR ONE- AND TWO-BODY TERMS - ! - END_DOC - - use bitmasks - - implicit none - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_i(Nint,2) - double precision, intent(out) :: hmono,htwoe,htot - integer :: occ(Nint*bit_kind_size,2) - integer :: Ne(2), i, j, ii, jj, ispin, jspin, k, kk - double precision :: get_mo_two_e_integral_tc_int - integer(bit_kind) :: key_i_core(Nint,2) - - PROVIDE mo_bi_ortho_tc_two_e - - hmono = 0.d0 - htwoe = 0.d0 - htot = 0.d0 - - call bitstring_to_list_ab(key_i, occ, Ne, Nint) - - do ispin = 1, 2 - do i = 1, Ne(ispin) - ii = occ(i,ispin) - hmono += mo_bi_ortho_tc_one_e(ii,ii) - enddo - enddo - - ! alpha/beta two-body - ispin = 1 - jspin = 2 - do i = 1, Ne(ispin) ! electron 1 (so it can be associated to mu(r1)) - ii = occ(i,ispin) - do j = 1, Ne(jspin) ! electron 2 - jj = occ(j,jspin) - htwoe += mo_bi_ortho_tc_two_e(jj,ii,jj,ii) - enddo - enddo - - ! alpha/alpha two-body - do i = 1, Ne(ispin) - ii = occ(i,ispin) - do j = i+1, Ne(ispin) - jj = occ(j,ispin) - htwoe += mo_bi_ortho_tc_two_e(ii,jj,ii,jj) - mo_bi_ortho_tc_two_e(ii,jj,jj,ii) - enddo - enddo - - ! beta/beta two-body - do i = 1, Ne(jspin) - ii = occ(i,jspin) - do j = i+1, Ne(jspin) - jj = occ(j,jspin) - htwoe += mo_bi_ortho_tc_two_e(ii,jj,ii,jj) - mo_bi_ortho_tc_two_e(ii,jj,jj,ii) - enddo - enddo - - htot = hmono + htwoe - -end - -! --- - subroutine double_htilde_mu_mat_bi_ortho_slow(Nint, key_j, key_i, hmono, htwoe, htot) BEGIN_DOC diff --git a/src/determinants/slater_rules_general.irp.f b/src/determinants/slater_rules_general.irp.f new file mode 100644 index 00000000..e987c846 --- /dev/null +++ b/src/determinants/slater_rules_general.irp.f @@ -0,0 +1,192 @@ +subroutine get_excitation_general(key_i,key_j, Nint,degree_array,holes_array, particles_array,phase) + use bitmasks + BEGIN_DOC +! returns the array, for each spin, of holes/particles between key_i and key_j +! +! with the following convention: a^+_{particle} a_{hole}|key_i> = |key_j> + END_DOC + include 'utils/constants.include.F' + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) + integer, intent(out) :: holes_array(100,2),particles_array(100,2),degree_array(2) + double precision, intent(out) :: phase + integer :: ispin,k,i,pos + integer(bit_kind) :: key_hole, key_particle + integer(bit_kind) :: xorvec(N_int_max,2) + holes_array = -1 + particles_array = -1 + degree_array = 0 + do i = 1, N_int + xorvec(i,1) = xor( key_i(i,1), key_j(i,1)) + xorvec(i,2) = xor( key_i(i,2), key_j(i,2)) + degree_array(1) += popcnt(xorvec(i,1)) + degree_array(2) += popcnt(xorvec(i,2)) + enddo + degree_array(1) = shiftr(degree_array(1),1) + degree_array(2) = shiftr(degree_array(2),1) + + do ispin = 1, 2 + k = 1 + !!! GETTING THE HOLES + do i = 1, N_int + key_hole = iand(xorvec(i,ispin),key_i(i,ispin)) + do while(key_hole .ne.0_bit_kind) + pos = trailz(key_hole) + holes_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos + key_hole = ibclr(key_hole,pos) + k += 1 + if(k .gt.100)then + print*,'WARNING in get_excitation_general' + print*,'More than a 100-th excitation for spin ',ispin + print*,'stoping ...' + stop + endif + enddo + enddo + enddo + do ispin = 1, 2 + k = 1 + !!! GETTING THE PARTICLES + do i = 1, N_int + key_particle = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_j(i,ispin)) + do while(key_particle .ne.0_bit_kind) + pos = trailz(key_particle) + particles_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos + key_particle = ibclr(key_particle,pos) + k += 1 + if(k .gt.100)then + print*,'WARNING in get_excitation_general ' + print*,'More than a 100-th excitation for spin ',ispin + print*,'stoping ...' + stop + endif + enddo + enddo + enddo + integer :: h,p, i_ok + integer(bit_kind), allocatable :: det_i(:,:),det_ip(:,:) + integer :: exc(0:2,2,2) + double precision :: phase_tmp + allocate(det_i(Nint,2),det_ip(N_int,2)) + det_i = key_i + phase = 1.d0 + do ispin = 1, 2 + do i = 1, degree_array(ispin) + h = holes_array(i,ispin) + p = particles_array(i,ispin) + det_ip = det_i + call do_single_excitation(det_ip,h,p,ispin,i_ok) + if(i_ok == -1)then + print*,'excitation was not possible ' + stop + endif + call get_single_excitation(det_i,det_ip,exc,phase_tmp,Nint) + phase *= phase_tmp + det_i = det_ip + enddo + enddo + +end + +subroutine get_holes_general(key_i, key_j,Nint, holes_array) + use bitmasks + BEGIN_DOC +! returns the array, per spin, of holes between key_i and key_j +! +! with the following convention: a_{hole}|key_i> --> |key_j> + END_DOC + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) + integer, intent(out) :: holes_array(100,2) + integer(bit_kind) :: key_hole + integer :: ispin,k,i,pos + holes_array = -1 + do ispin = 1, 2 + k = 1 + do i = 1, N_int + key_hole = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_i(i,ispin)) + do while(key_hole .ne.0_bit_kind) + pos = trailz(key_hole) + holes_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos + key_hole = ibclr(key_hole,pos) + k += 1 + if(k .gt.100)then + print*,'WARNING in get_holes_general' + print*,'More than a 100-th excitation for spin ',ispin + print*,'stoping ...' + stop + endif + enddo + enddo + enddo +end + +subroutine get_particles_general(key_i, key_j,Nint,particles_array) + use bitmasks + BEGIN_DOC +! returns the array, per spin, of particles between key_i and key_j +! +! with the following convention: a^dagger_{particle}|key_i> --> |key_j> + END_DOC + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) + integer, intent(out) :: particles_array(100,2) + integer(bit_kind) :: key_particle + integer :: ispin,k,i,pos + particles_array = -1 + do ispin = 1, 2 + k = 1 + do i = 1, N_int + key_particle = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_j(i,ispin)) + do while(key_particle .ne.0_bit_kind) + pos = trailz(key_particle) + particles_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos + key_particle = ibclr(key_particle,pos) + k += 1 + if(k .gt.100)then + print*,'WARNING in get_holes_general' + print*,'More than a 100-th excitation for spin ',ispin + print*,'Those are the two determinants' + call debug_det(key_i, N_int) + call debug_det(key_j, N_int) + print*,'stoping ...' + stop + endif + enddo + enddo + enddo +end + +subroutine get_phase_general(key_i,Nint,degree, holes_array, particles_array,phase) + implicit none + integer, intent(in) :: degree(2), Nint + integer(bit_kind), intent(in) :: key_i(Nint,2) + integer, intent(in) :: holes_array(100,2),particles_array(100,2) + double precision, intent(out) :: phase + integer :: i,ispin,h,p, i_ok + integer(bit_kind), allocatable :: det_i(:,:),det_ip(:,:) + integer :: exc(0:2,2,2) + double precision :: phase_tmp + allocate(det_i(Nint,2),det_ip(N_int,2)) + det_i = key_i + phase = 1.d0 + do ispin = 1, 2 + do i = 1, degree(ispin) + h = holes_array(i,ispin) + p = particles_array(i,ispin) + det_ip = det_i + call do_single_excitation(det_ip,h,p,ispin,i_ok) + if(i_ok == -1)then + print*,'excitation was not possible ' + stop + endif + call get_single_excitation(det_i,det_ip,exc,phase_tmp,Nint) + phase *= phase_tmp + det_i = det_ip + enddo + enddo + +end From b749796d931401f2c7e966e2c7eeedfff2f4477c Mon Sep 17 00:00:00 2001 From: eginer Date: Mon, 6 May 2024 18:33:29 +0200 Subject: [PATCH 029/159] still not compiling --- .../tc_bi_ortho/dressing_vectors_lr.irp.f | 8 ++++---- .../local/tc_bi_ortho/e_corr_bi_ortho.irp.f | 18 +++++++++--------- plugins/local/tc_bi_ortho/print_tc_wf.irp.f | 6 +++--- .../local/tc_bi_ortho/tc_cisd_sc2_utils.irp.f | 2 +- plugins/local/tc_bi_ortho/tc_som.irp.f | 4 ++-- plugins/local/tc_bi_ortho/tc_utils.irp.f | 10 +++++----- .../local/tc_bi_ortho/test_normal_order.irp.f | 8 ++++---- .../local/tc_bi_ortho/test_tc_bi_ortho.irp.f | 10 +++++----- plugins/local/tc_bi_ortho/test_tc_fock.irp.f | 4 ++-- 9 files changed, 35 insertions(+), 35 deletions(-) diff --git a/plugins/local/tc_bi_ortho/dressing_vectors_lr.irp.f b/plugins/local/tc_bi_ortho/dressing_vectors_lr.irp.f index 0aff9980..135f9d17 100644 --- a/plugins/local/tc_bi_ortho/dressing_vectors_lr.irp.f +++ b/plugins/local/tc_bi_ortho/dressing_vectors_lr.irp.f @@ -27,7 +27,7 @@ subroutine get_delta_bitc_right(psidet, psicoef, ndet, Nint, delta) i = 1 j = 1 - call htilde_mu_mat_bi_ortho_slow(psidet(1,1,i), psidet(1,1,j), Nint, htc_mono, htc_twoe, htc_three, htc_tot) + call htilde_mu_mat_opt_bi_ortho(psidet(1,1,i), psidet(1,1,j), Nint, htc_mono, htc_twoe, htc_three, htc_tot) call hmat_bi_ortho (psidet(1,1,i), psidet(1,1,j), Nint, h_mono, h_twoe, h_tot) delta = 0.d0 @@ -39,7 +39,7 @@ subroutine get_delta_bitc_right(psidet, psicoef, ndet, Nint, delta) do j = 1, ndet ! < I |Htilde | J > - call htilde_mu_mat_bi_ortho_slow(psidet(1,1,i), psidet(1,1,j), Nint, htc_mono, htc_twoe, htc_three, htc_tot) + call htilde_mu_mat_opt_bi_ortho(psidet(1,1,i), psidet(1,1,j), Nint, htc_mono, htc_twoe, htc_three, htc_tot) ! < I |H | J > call hmat_bi_ortho(psidet(1,1,i), psidet(1,1,j), Nint, h_mono, h_twoe, h_tot) @@ -78,7 +78,7 @@ subroutine get_htc_bitc_right(psidet, psicoef, ndet, Nint, delta) i = 1 j = 1 - call htilde_mu_mat_bi_ortho_slow(psidet(1,1,i), psidet(1,1,j), Nint, htc_mono, htc_twoe, htc_three, htc_tot) + call htilde_mu_mat_opt_bi_ortho(psidet(1,1,i), psidet(1,1,j), Nint, htc_mono, htc_twoe, htc_three, htc_tot) delta = 0.d0 !$OMP PARALLEL DO DEFAULT(NONE) SCHEDULE(dynamic,8) & @@ -88,7 +88,7 @@ subroutine get_htc_bitc_right(psidet, psicoef, ndet, Nint, delta) do j = 1, ndet ! < I |Htilde | J > - call htilde_mu_mat_bi_ortho_slow(psidet(1,1,i), psidet(1,1,j), Nint, htc_mono, htc_twoe, htc_three, htc_tot) + call htilde_mu_mat_opt_bi_ortho(psidet(1,1,i), psidet(1,1,j), Nint, htc_mono, htc_twoe, htc_three, htc_tot) delta(i) = delta(i) + psicoef(j) * htc_tot enddo diff --git a/plugins/local/tc_bi_ortho/e_corr_bi_ortho.irp.f b/plugins/local/tc_bi_ortho/e_corr_bi_ortho.irp.f index 6d5c3b21..4abdc25b 100644 --- a/plugins/local/tc_bi_ortho/e_corr_bi_ortho.irp.f +++ b/plugins/local/tc_bi_ortho/e_corr_bi_ortho.irp.f @@ -2,7 +2,7 @@ BEGIN_PROVIDER [ double precision, e_tilde_00] implicit none double precision :: hmono,htwoe,hthree,htot - call htilde_mu_mat_bi_ortho_slow(HF_bitmask,HF_bitmask,N_int,hmono,htwoe,hthree,htot) + call htilde_mu_mat_opt_bi_ortho(HF_bitmask,HF_bitmask,N_int,hmono,htwoe,hthree,htot) e_tilde_00 = htot END_PROVIDER @@ -18,11 +18,11 @@ do i = 1, N_det call get_excitation_degree(HF_bitmask,psi_det(1,1,i),degree,N_int) if(degree == 1 .or. degree == 2)then - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i),HF_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i),psi_det(1,1,i),N_int,hmono,htwoe,hthree,e_i0) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,i),HF_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,i),psi_det(1,1,i),N_int,hmono,htwoe,hthree,e_i0) delta_e = e_tilde_00 - e_i0 coef_pt1 = htilde_ij / delta_e - call htilde_mu_mat_bi_ortho_slow(HF_bitmask,psi_det(1,1,i),N_int,hmono,htwoe,hthree,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(HF_bitmask,psi_det(1,1,i),N_int,hmono,htwoe,hthree,htilde_ij) e_pt2_tc_bi_orth += coef_pt1 * htilde_ij if(degree == 1)then e_pt2_tc_bi_orth_single += coef_pt1 * htilde_ij @@ -37,7 +37,7 @@ BEGIN_PROVIDER [ double precision, e_tilde_bi_orth_00] implicit none double precision :: hmono,htwoe,hthree,htilde_ij - call htilde_mu_mat_bi_ortho_slow(HF_bitmask,HF_bitmask,N_int,hmono,htwoe,hthree,e_tilde_bi_orth_00) + call htilde_mu_mat_opt_bi_ortho(HF_bitmask,HF_bitmask,N_int,hmono,htwoe,hthree,e_tilde_bi_orth_00) e_tilde_bi_orth_00 += nuclear_repulsion END_PROVIDER @@ -57,7 +57,7 @@ e_corr_double_bi_orth = 0.d0 do i = 1, N_det call get_excitation_degree(HF_bitmask,psi_det(1,1,i),degree,N_int) - call htilde_mu_mat_bi_ortho_slow(HF_bitmask,psi_det(1,1,i),N_int,hmono,htwoe,hthree,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(HF_bitmask,psi_det(1,1,i),N_int,hmono,htwoe,hthree,htilde_ij) if(degree == 1)then e_corr_single_bi_orth += reigvec_tc_bi_orth(i,1) * htilde_ij/reigvec_tc_bi_orth(1,1) e_corr_single_bi_orth_abs += dabs(reigvec_tc_bi_orth(i,1) * htilde_ij/reigvec_tc_bi_orth(1,1)) @@ -80,7 +80,7 @@ do i = 1, N_det accu += reigvec_tc_bi_orth(i,1) * leigvec_tc_bi_orth(i,1) do j = 1, N_det - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,j),psi_det(1,1,i),N_int,hmono,htwoe,hthree,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,j),psi_det(1,1,i),N_int,hmono,htwoe,hthree,htilde_ij) e_tc_left_right += htilde_ij * reigvec_tc_bi_orth(i,1) * leigvec_tc_bi_orth(j,1) enddo enddo @@ -99,8 +99,8 @@ BEGIN_PROVIDER [ double precision, coef_pt1_bi_ortho, (N_det)] if(degree==0)then coef_pt1_bi_ortho(i) = 1.d0 else - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i),HF_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i),psi_det(1,1,i),N_int,hmono,htwoe,hthree,e_i0) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,i),HF_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,i),psi_det(1,1,i),N_int,hmono,htwoe,hthree,e_i0) delta_e = e_tilde_00 - e_i0 coef_pt1 = htilde_ij / delta_e coef_pt1_bi_ortho(i)= coef_pt1 diff --git a/plugins/local/tc_bi_ortho/print_tc_wf.irp.f b/plugins/local/tc_bi_ortho/print_tc_wf.irp.f index 2b88bc5b..ab5ce371 100644 --- a/plugins/local/tc_bi_ortho/print_tc_wf.irp.f +++ b/plugins/local/tc_bi_ortho/print_tc_wf.irp.f @@ -61,12 +61,12 @@ subroutine routine do i = 1, N_det call get_excitation_degree(HF_bitmask,psi_det(1,1,i),degree,N_int) if(degree == 1 .or. degree == 2)then - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i),HF_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i),psi_det(1,1,i),N_int,hmono,htwoe,hthree,e_i0) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,i),HF_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,i),psi_det(1,1,i),N_int,hmono,htwoe,hthree,e_i0) delta_e = e_tilde_00 - e_i0 coef_pt1 = htilde_ij / delta_e - call htilde_mu_mat_bi_ortho_slow(HF_bitmask,psi_det(1,1,i),N_int,hmono,htwoe,hthree,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(HF_bitmask,psi_det(1,1,i),N_int,hmono,htwoe,hthree,htilde_ij) contrib_pt = coef_pt1 * htilde_ij e_pt2 += contrib_pt diff --git a/plugins/local/tc_bi_ortho/tc_cisd_sc2_utils.irp.f b/plugins/local/tc_bi_ortho/tc_cisd_sc2_utils.irp.f index 4c3c0788..5cbf26d2 100644 --- a/plugins/local/tc_bi_ortho/tc_cisd_sc2_utils.irp.f +++ b/plugins/local/tc_bi_ortho/tc_cisd_sc2_utils.irp.f @@ -14,7 +14,7 @@ call htilde_mu_mat_bi_ortho_tot_slow(psi_det(1,1,i), psi_det(1,1,i), N_int, H_jj(i)) call get_excitation_degree(HF_bitmask,psi_det(1,1,i),degree,N_int) if(degree == 1 .or. degree == 2)then - call htilde_mu_mat_bi_ortho_slow(HF_bitmask,psi_det(1,1,i),N_int,hmono,htwoe,hthree,h0j(i)) + call htilde_mu_mat_opt_bi_ortho(HF_bitmask,psi_det(1,1,i),N_int,hmono,htwoe,hthree,h0j(i)) endif enddo reigvec_tc_bi_orth_tmp = 0.d0 diff --git a/plugins/local/tc_bi_ortho/tc_som.irp.f b/plugins/local/tc_bi_ortho/tc_som.irp.f index 1d11c81b..6bdcc1f0 100644 --- a/plugins/local/tc_bi_ortho/tc_som.irp.f +++ b/plugins/local/tc_bi_ortho/tc_som.irp.f @@ -49,8 +49,8 @@ subroutine main() U_SOM = 0.d0 do i = 1, N_det if(i == i_HF) cycle - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i_HF), psi_det(1,1,i), N_int, hmono_1, htwoe_1, hthree_1, htot_1) - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i), psi_det(1,1,i_HF), N_int, hmono_2, htwoe_2, hthree_2, htot_2) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,i_HF), psi_det(1,1,i), N_int, hmono_1, htwoe_1, hthree_1, htot_1) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,i), psi_det(1,1,i_HF), N_int, hmono_2, htwoe_2, hthree_2, htot_2) U_SOM += htot_1 * htot_2 enddo U_SOM = 0.5d0 * U_SOM diff --git a/plugins/local/tc_bi_ortho/tc_utils.irp.f b/plugins/local/tc_bi_ortho/tc_utils.irp.f index 43a6865e..2aa148a3 100644 --- a/plugins/local/tc_bi_ortho/tc_utils.irp.f +++ b/plugins/local/tc_bi_ortho/tc_utils.irp.f @@ -25,7 +25,7 @@ subroutine write_tc_energy() E_2e_tmp(i) = 0.d0 E_3e_tmp(i) = 0.d0 do j = 1, N_det - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i), psi_det(1,1,j), N_int, hmono, htwoe, hthree, htot) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,i), psi_det(1,1,j), N_int, hmono, htwoe, hthree, htot) E_TC_tmp(i) = E_TC_tmp(i) + psi_l_coef_bi_ortho(i,1) * psi_r_coef_bi_ortho(j,1) * htot E_1e_tmp(i) = E_1e_tmp(i) + psi_l_coef_bi_ortho(i,1) * psi_r_coef_bi_ortho(j,1) * hmono E_2e_tmp(i) = E_2e_tmp(i) + psi_l_coef_bi_ortho(i,1) * psi_r_coef_bi_ortho(j,1) * htwoe @@ -70,7 +70,7 @@ subroutine write_tc_energy() E_3e = 0.d0 do i = 1, N_det do j = 1, N_det - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,i), psi_det(1,1,j), N_int, hmono, htwoe, hthree, htot) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,i), psi_det(1,1,j), N_int, hmono, htwoe, hthree, htot) E_TC = E_TC + psi_l_coef_bi_ortho(i,k) * psi_r_coef_bi_ortho(j,k) * htot E_1e = E_1e + psi_l_coef_bi_ortho(i,k) * psi_r_coef_bi_ortho(j,k) * hmono E_2e = E_2e + psi_l_coef_bi_ortho(i,k) * psi_r_coef_bi_ortho(j,k) * htwoe @@ -109,8 +109,8 @@ subroutine write_tc_var() SIGMA_TC = 0.d0 do j = 2, N_det - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,1), psi_det(1,1,j), N_int, hmono, htwoe, hthree, htot_1j) - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,j), psi_det(1,1,1), N_int, hmono, htwoe, hthree, htot_j1) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,1), psi_det(1,1,j), N_int, hmono, htwoe, hthree, htot_1j) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,j), psi_det(1,1,1), N_int, hmono, htwoe, hthree, htot_j1) SIGMA_TC = SIGMA_TC + htot_1j * htot_j1 enddo @@ -132,7 +132,7 @@ subroutine write_tc_gs_var_HF() SIGMA_TC = 0.d0 do j = 2, N_det - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,j), psi_det(1,1,1), N_int, hmono, htwoe, hthree, htot) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,j), psi_det(1,1,1), N_int, hmono, htwoe, hthree, htot) SIGMA_TC = SIGMA_TC + htot * htot enddo diff --git a/plugins/local/tc_bi_ortho/test_normal_order.irp.f b/plugins/local/tc_bi_ortho/test_normal_order.irp.f index 0cf27396..7b4c558f 100644 --- a/plugins/local/tc_bi_ortho/test_normal_order.irp.f +++ b/plugins/local/tc_bi_ortho/test_normal_order.irp.f @@ -54,7 +54,7 @@ subroutine test if(i_ok.ne.1)cycle call do_single_excitation(det_i,h2,p2,s2,i_ok) if(i_ok.ne.1)cycle - call htilde_mu_mat_bi_ortho_slow(det_i,HF_bitmask,N_int,hmono,htwoe,hthree_tmp,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(det_i,HF_bitmask,N_int,hmono,htwoe,hthree_tmp,htilde_ij) call get_excitation_degree(ref_bitmask,det_i,degree,N_int) call get_excitation(ref_bitmask,det_i,exc,degree,phase,N_int) hthree_tmp *= phase @@ -66,7 +66,7 @@ subroutine test if(i_ok.ne.1)cycle call do_single_excitation(det_i,h2,p2,s2,i_ok) if(i_ok.ne.1)cycle - call htilde_mu_mat_bi_ortho_slow(det_i,HF_bitmask,N_int,hmono,htwoe,hthree_tmp,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(det_i,HF_bitmask,N_int,hmono,htwoe,hthree_tmp,htilde_ij) call get_excitation_degree(ref_bitmask,det_i,degree,N_int) call get_excitation(ref_bitmask,det_i,exc,degree,phase,N_int) hthree_tmp *= phase @@ -109,7 +109,7 @@ do h1 = 1, elec_alpha_num if(i_ok.ne.1)cycle call do_single_excitation(det_i,h2,p2,s2,i_ok) if(i_ok.ne.1)cycle - call htilde_mu_mat_bi_ortho_slow(det_i,ref_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(det_i,ref_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) call get_excitation_degree(ref_bitmask,det_i,degree,N_int) call get_excitation(ref_bitmask,det_i,exc,degree,phase,N_int) integer :: hh1, pp1, hh2, pp2, ss1, ss2 @@ -145,7 +145,7 @@ do h1 = 1, elec_beta_num if(i_ok.ne.1)cycle call do_single_excitation(det_i,h2,p2,s2,i_ok) if(i_ok.ne.1)cycle - call htilde_mu_mat_bi_ortho_slow(det_i,ref_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) + call htilde_mu_mat_opt_bi_ortho(det_i,ref_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) call get_excitation_degree(ref_bitmask,det_i,degree,N_int) call get_excitation(ref_bitmask,det_i,exc,degree,phase,N_int) call decode_exc(exc, 2, hh1, pp1, hh2, pp2, ss1, ss2) diff --git a/plugins/local/tc_bi_ortho/test_tc_bi_ortho.irp.f b/plugins/local/tc_bi_ortho/test_tc_bi_ortho.irp.f index 369efd15..559c0200 100644 --- a/plugins/local/tc_bi_ortho/test_tc_bi_ortho.irp.f +++ b/plugins/local/tc_bi_ortho/test_tc_bi_ortho.irp.f @@ -88,7 +88,7 @@ subroutine test_slater_tc_opt i_count = 0.d0 do i = 1, N_det do j = 1,N_det - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,j), psi_det(1,1,i), N_int, hmono, htwoe, hthree, htot) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,j), psi_det(1,1,i), N_int, hmono, htwoe, hthree, htot) call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,j), psi_det(1,1,i), N_int, hnewmono, hnewtwoe, hnewthree, hnewtot) if(dabs(htot).gt.1.d-15)then i_count += 1.D0 @@ -124,7 +124,7 @@ subroutine timing_tot do j = 1, N_det ! call get_excitation_degree(psi_det(1,1,j), psi_det(1,1,i),degree,N_int) i_count += 1.d0 - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,j), psi_det(1,1,i), N_int, hmono, htwoe, hthree, htot) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,j), psi_det(1,1,i), N_int, hmono, htwoe, hthree, htot) enddo enddo call wall_time(wall1) @@ -171,7 +171,7 @@ subroutine timing_diag do i = 1, N_det do j = i,i i_count += 1.d0 - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,j), psi_det(1,1,i), N_int, hmono, htwoe, hthree, htot) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,j), psi_det(1,1,i), N_int, hmono, htwoe, hthree, htot) enddo enddo call wall_time(wall1) @@ -208,7 +208,7 @@ subroutine timing_single if(degree.ne.1)cycle i_count += 1.d0 call wall_time(wall0) - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,j), psi_det(1,1,i), N_int, hmono, htwoe, hthree, htot) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,j), psi_det(1,1,i), N_int, hmono, htwoe, hthree, htot) call wall_time(wall1) accu += wall1 - wall0 enddo @@ -250,7 +250,7 @@ subroutine timing_double if(degree.ne.2)cycle i_count += 1.d0 call wall_time(wall0) - call htilde_mu_mat_bi_ortho_slow(psi_det(1,1,j), psi_det(1,1,i), N_int, hmono, htwoe, hthree, htot) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,j), psi_det(1,1,i), N_int, hmono, htwoe, hthree, htot) call wall_time(wall1) accu += wall1 - wall0 enddo diff --git a/plugins/local/tc_bi_ortho/test_tc_fock.irp.f b/plugins/local/tc_bi_ortho/test_tc_fock.irp.f index 85f3ed97..b33b2e93 100644 --- a/plugins/local/tc_bi_ortho/test_tc_fock.irp.f +++ b/plugins/local/tc_bi_ortho/test_tc_fock.irp.f @@ -64,7 +64,7 @@ subroutine routine_3() print*, ' excited det' call debug_det(det_i, N_int) - call htilde_mu_mat_bi_ortho_slow(det_i, ref_bitmask, N_int, hmono, htwoe, hthree, htilde_ij) + call htilde_mu_mat_opt_bi_ortho(det_i, ref_bitmask, N_int, hmono, htwoe, hthree, htilde_ij) if(dabs(hthree).lt.1.d-10)cycle ref = hthree if(s1 == 1)then @@ -130,7 +130,7 @@ subroutine routine_tot() stop endif - call htilde_mu_mat_bi_ortho_slow(det_i, ref_bitmask, N_int, hmono, htwoe, hthree, htilde_ij) + call htilde_mu_mat_opt_bi_ortho(det_i, ref_bitmask, N_int, hmono, htwoe, hthree, htilde_ij) print*,htilde_ij ! if(dabs(htilde_ij).lt.1.d-10)cycle print*, ' excited det' From 366afb2933baba919db1ad85b7eee965ea56d0c6 Mon Sep 17 00:00:00 2001 From: eginer Date: Mon, 6 May 2024 18:53:20 +0200 Subject: [PATCH 030/159] compiling after some cleaning --- plugins/local/old_delta_tc_qmc/NEED | 1 + plugins/local/old_delta_tc_qmc/README.rst | 4 + .../compute_deltamu_right.irp.f | 0 .../dressing_vectors_lr.irp.f | 0 .../old_delta_tc_qmc/old_delta_tc_qmc.irp.f | 7 + plugins/local/slater_tc/h_mat_triple.irp.f | 198 ++++++++++++++++++ .../local/slater_tc_no_opt/h_mat_triple.irp.f | 193 ----------------- .../test_tc_bi_ortho.irp.f | 0 plugins/local/tc_bi_ortho/pt2_tc_cisd.irp.f | 129 ------------ plugins/local/tc_bi_ortho/tc_cisd_sc2.irp.f | 36 ---- .../local/tc_bi_ortho/tc_cisd_sc2_utils.irp.f | 145 ------------- plugins/local/tc_bi_ortho/test_s2_tc.irp.f | 170 --------------- 12 files changed, 210 insertions(+), 673 deletions(-) create mode 100644 plugins/local/old_delta_tc_qmc/NEED create mode 100644 plugins/local/old_delta_tc_qmc/README.rst rename plugins/local/{tc_bi_ortho => old_delta_tc_qmc}/compute_deltamu_right.irp.f (100%) rename plugins/local/{tc_bi_ortho => old_delta_tc_qmc}/dressing_vectors_lr.irp.f (100%) create mode 100644 plugins/local/old_delta_tc_qmc/old_delta_tc_qmc.irp.f create mode 100644 plugins/local/slater_tc/h_mat_triple.irp.f delete mode 100644 plugins/local/slater_tc_no_opt/h_mat_triple.irp.f rename plugins/local/{tc_bi_ortho => slater_tc_no_opt}/test_tc_bi_ortho.irp.f (100%) delete mode 100644 plugins/local/tc_bi_ortho/pt2_tc_cisd.irp.f delete mode 100644 plugins/local/tc_bi_ortho/tc_cisd_sc2.irp.f delete mode 100644 plugins/local/tc_bi_ortho/tc_cisd_sc2_utils.irp.f delete mode 100644 plugins/local/tc_bi_ortho/test_s2_tc.irp.f diff --git a/plugins/local/old_delta_tc_qmc/NEED b/plugins/local/old_delta_tc_qmc/NEED new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/plugins/local/old_delta_tc_qmc/NEED @@ -0,0 +1 @@ + diff --git a/plugins/local/old_delta_tc_qmc/README.rst b/plugins/local/old_delta_tc_qmc/README.rst new file mode 100644 index 00000000..1d56f96c --- /dev/null +++ b/plugins/local/old_delta_tc_qmc/README.rst @@ -0,0 +1,4 @@ +================ +old_delta_tc_qmc +================ + diff --git a/plugins/local/tc_bi_ortho/compute_deltamu_right.irp.f b/plugins/local/old_delta_tc_qmc/compute_deltamu_right.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/compute_deltamu_right.irp.f rename to plugins/local/old_delta_tc_qmc/compute_deltamu_right.irp.f diff --git a/plugins/local/tc_bi_ortho/dressing_vectors_lr.irp.f b/plugins/local/old_delta_tc_qmc/dressing_vectors_lr.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/dressing_vectors_lr.irp.f rename to plugins/local/old_delta_tc_qmc/dressing_vectors_lr.irp.f diff --git a/plugins/local/old_delta_tc_qmc/old_delta_tc_qmc.irp.f b/plugins/local/old_delta_tc_qmc/old_delta_tc_qmc.irp.f new file mode 100644 index 00000000..5ff08bd6 --- /dev/null +++ b/plugins/local/old_delta_tc_qmc/old_delta_tc_qmc.irp.f @@ -0,0 +1,7 @@ +program old_delta_tc_qmc + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + print *, 'Hello world' +end diff --git a/plugins/local/slater_tc/h_mat_triple.irp.f b/plugins/local/slater_tc/h_mat_triple.irp.f new file mode 100644 index 00000000..9cb4b60a --- /dev/null +++ b/plugins/local/slater_tc/h_mat_triple.irp.f @@ -0,0 +1,198 @@ +subroutine H_tc_s2_u_0_with_pure_three(v_0, s_0, u_0, N_st, sze) + BEGIN_DOC + ! Computes $v_0 = H^TC | u_0\rangle$ WITH PURE TRIPLE EXCITATION TERMS + ! + ! Assumes that the determinants are in psi_det + ! + ! istart, iend, ishift, istep are used in ZMQ parallelization. + END_DOC + + use bitmasks + implicit none + + integer, intent(in) :: N_st,sze + double precision, intent(in) :: u_0(sze,N_st) + double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st) + call H_tc_s2_u_0_opt(v_0, s_0, u_0, N_st, sze) + integer :: i,j,degree,ist + double precision :: hmono, htwoe, hthree, htot + do i = 1, N_det + do j = 1, N_det + call get_excitation_degree(psi_det(1,1,i),psi_det(1,1,j),degree,N_int) + if(degree .ne. 3)cycle + call triple_htilde_mu_mat_fock_bi_ortho(N_int, psi_det(1,1,i), psi_det(1,1,j), hmono, htwoe, hthree, htot) + do ist = 1, N_st + v_0(i,ist) += htot * u_0(j,ist) + enddo + enddo + enddo +end + +subroutine H_tc_s2_u_0_with_pure_three_omp(v_0, s_0, u_0, N_st, sze) + BEGIN_DOC + ! Computes $v_0 = H^TC | u_0\rangle$ WITH PURE TRIPLE EXCITATION TERMS + ! + ! Assumes that the determinants are in psi_det + ! + ! istart, iend, ishift, istep are used in ZMQ parallelization. + END_DOC + + use bitmasks + implicit none + + integer, intent(in) :: N_st,sze + double precision, intent(in) :: u_0(sze,N_st) + double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st) + call H_tc_s2_u_0_opt(v_0, s_0, u_0, N_st, sze) + integer :: i,j,degree,ist + double precision :: hmono, htwoe, hthree, htot + !$OMP PARALLEL DO DEFAULT(NONE) SCHEDULE(dynamic,8) & + !$OMP SHARED(N_st, N_det, N_int, psi_det, u_0, v_0) & + !$OMP PRIVATE(ist, i, j, degree, hmono, htwoe, hthree,htot) + do i = 1, N_det + do j = 1, N_det + call get_excitation_degree(psi_det(1,1,i),psi_det(1,1,j),degree,N_int) + if(degree .ne. 3)cycle + call triple_htilde_mu_mat_fock_bi_ortho(N_int, psi_det(1,1,i), psi_det(1,1,j), hmono, htwoe, hthree, htot) + do ist = 1, N_st + v_0(i,ist) += htot * u_0(j,ist) + enddo + enddo + enddo + !$OMP END PARALLEL DO +end + +! --- + +subroutine H_tc_s2_dagger_u_0_with_pure_three(v_0, s_0, u_0, N_st, sze) + BEGIN_DOC + ! Computes $v_0 = (H^TC)^dagger | u_0\rangle$ WITH PURE TRIPLE EXCITATION TERMS + ! + ! Assumes that the determinants are in psi_det + ! + ! istart, iend, ishift, istep are used in ZMQ parallelization. + END_DOC + + use bitmasks + implicit none + + integer, intent(in) :: N_st,sze + double precision, intent(in) :: u_0(sze,N_st) + double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st) + call H_tc_s2_dagger_u_0_opt(v_0, s_0, u_0, N_st, sze) + integer :: i,j,degree,ist + double precision :: hmono, htwoe, hthree, htot + do i = 1, N_det + do j = 1, N_det + call get_excitation_degree(psi_det(1,1,i),psi_det(1,1,j),degree,N_int) + if(degree .ne. 3)cycle + call triple_htilde_mu_mat_fock_bi_ortho(N_int, psi_det(1,1,j), psi_det(1,1,i), hmono, htwoe, hthree, htot) + do ist = 1, N_st + v_0(i,ist) += htot * u_0(j,ist) + enddo + enddo + enddo +end + +subroutine H_tc_s2_dagger_u_0_with_pure_three_omp(v_0, s_0, u_0, N_st, sze) + BEGIN_DOC + ! Computes $v_0 = (H^TC)^dagger | u_0\rangle$ WITH PURE TRIPLE EXCITATION TERMS + ! + ! Assumes that the determinants are in psi_det + ! + ! istart, iend, ishift, istep are used in ZMQ parallelization. + END_DOC + + use bitmasks + implicit none + + integer, intent(in) :: N_st,sze + double precision, intent(in) :: u_0(sze,N_st) + double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st) + call H_tc_s2_dagger_u_0_opt(v_0, s_0, u_0, N_st, sze) + integer :: i,j,degree,ist + double precision :: hmono, htwoe, hthree, htot + !$OMP PARALLEL DO DEFAULT(NONE) SCHEDULE(dynamic,8) & + !$OMP SHARED(N_st, N_det, N_int, psi_det, u_0, v_0) & + !$OMP PRIVATE(ist, i, j, degree, hmono, htwoe, hthree,htot) + do i = 1, N_det + do j = 1, N_det + call get_excitation_degree(psi_det(1,1,i),psi_det(1,1,j),degree,N_int) + if(degree .ne. 3)cycle + call triple_htilde_mu_mat_fock_bi_ortho(N_int, psi_det(1,1,j), psi_det(1,1,i), hmono, htwoe, hthree, htot) + do ist = 1, N_st + v_0(i,ist) += htot * u_0(j,ist) + enddo + enddo + enddo + !$OMP END PARALLEL DO +end + +! --- +subroutine triple_htilde_mu_mat_fock_bi_ortho(Nint, key_j, key_i, hmono, htwoe, hthree, htot) + use bitmasks + BEGIN_DOC +! for triple excitation +!! +!! WARNING !! +! +! Genuine triple excitations of the same spin are not yet implemented + END_DOC + implicit none + integer(bit_kind), intent(in) :: key_j(N_int,2),key_i(N_int,2) + integer, intent(in) :: Nint + double precision, intent(out) :: hmono, htwoe, hthree, htot + integer :: degree + integer :: h1, p1, h2, p2, s1, s2, h3, p3, s3 + integer :: holes_array(100,2),particles_array(100,2),degree_array(2) + double precision :: phase,sym_3_e_int_from_6_idx_tensor + + hmono = 0.d0 + htwoe = 0.d0 + hthree = 0.d0 + htot = 0.d0 + call get_excitation_general(key_j, key_i, Nint,degree_array,holes_array, particles_array,phase) + degree = degree_array(1) + degree_array(2) + if(degree .ne. 3)return + if(degree_array(1)==3.or.degree_array(2)==3)then + if(degree_array(1) == 3)then + h1 = holes_array(1,1) + h2 = holes_array(2,1) + h3 = holes_array(3,1) + p1 = particles_array(1,1) + p2 = particles_array(2,1) + p3 = particles_array(3,1) + else + h1 = holes_array(1,2) + h2 = holes_array(2,2) + h3 = holes_array(3,2) + p1 = particles_array(1,2) + p2 = particles_array(2,2) + p3 = particles_array(3,2) + endif + hthree = sym_3_e_int_from_6_idx_tensor(p3, p2, p1, h3, h2, h1) + else + if(degree_array(1) == 2.and.degree_array(2) == 1)then ! double alpha + single beta + h1 = holes_array(1,1) + h2 = holes_array(2,1) + h3 = holes_array(1,2) + p1 = particles_array(1,1) + p2 = particles_array(2,1) + p3 = particles_array(1,2) + else if(degree_array(2) == 2 .and. degree_array(1) == 1)then ! double beta + single alpha + h1 = holes_array(1,2) + h2 = holes_array(2,2) + h3 = holes_array(1,1) + p1 = particles_array(1,2) + p2 = particles_array(2,2) + p3 = particles_array(1,1) + else + print*,'PB !!' + stop + endif + hthree = three_body_ints_bi_ort(p3,p2,p1,h3,h2,h1) - three_body_ints_bi_ort(p3,p2,p1,h3,h1,h2) + endif + hthree *= phase + htot = hthree + end + diff --git a/plugins/local/slater_tc_no_opt/h_mat_triple.irp.f b/plugins/local/slater_tc_no_opt/h_mat_triple.irp.f deleted file mode 100644 index e2c8f982..00000000 --- a/plugins/local/slater_tc_no_opt/h_mat_triple.irp.f +++ /dev/null @@ -1,193 +0,0 @@ -subroutine get_excitation_general(key_i,key_j, Nint,degree_array,holes_array, particles_array,phase) - use bitmasks - BEGIN_DOC -! returns the array, for each spin, of holes/particles between key_i and key_j -! -! with the following convention: a^+_{particle} a_{hole}|key_i> = |key_j> - END_DOC - include 'utils/constants.include.F' - implicit none - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) - integer, intent(out) :: holes_array(100,2),particles_array(100,2),degree_array(2) - double precision, intent(out) :: phase - integer :: ispin,k,i,pos - integer(bit_kind) :: key_hole, key_particle - integer(bit_kind) :: xorvec(N_int_max,2) - holes_array = -1 - particles_array = -1 - degree_array = 0 - do i = 1, N_int - xorvec(i,1) = xor( key_i(i,1), key_j(i,1)) - xorvec(i,2) = xor( key_i(i,2), key_j(i,2)) - degree_array(1) += popcnt(xorvec(i,1)) - degree_array(2) += popcnt(xorvec(i,2)) - enddo - degree_array(1) = shiftr(degree_array(1),1) - degree_array(2) = shiftr(degree_array(2),1) - - do ispin = 1, 2 - k = 1 - !!! GETTING THE HOLES - do i = 1, N_int - key_hole = iand(xorvec(i,ispin),key_i(i,ispin)) - do while(key_hole .ne.0_bit_kind) - pos = trailz(key_hole) - holes_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos - key_hole = ibclr(key_hole,pos) - k += 1 - if(k .gt.100)then - print*,'WARNING in get_excitation_general' - print*,'More than a 100-th excitation for spin ',ispin - print*,'stoping ...' - stop - endif - enddo - enddo - enddo - do ispin = 1, 2 - k = 1 - !!! GETTING THE PARTICLES - do i = 1, N_int - key_particle = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_j(i,ispin)) - do while(key_particle .ne.0_bit_kind) - pos = trailz(key_particle) - particles_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos - key_particle = ibclr(key_particle,pos) - k += 1 - if(k .gt.100)then - print*,'WARNING in get_excitation_general ' - print*,'More than a 100-th excitation for spin ',ispin - print*,'stoping ...' - stop - endif - enddo - enddo - enddo - integer :: h,p, i_ok - integer(bit_kind), allocatable :: det_i(:,:),det_ip(:,:) - integer :: exc(0:2,2,2) - double precision :: phase_tmp - allocate(det_i(Nint,2),det_ip(N_int,2)) - det_i = key_i - phase = 1.d0 - do ispin = 1, 2 - do i = 1, degree_array(ispin) - h = holes_array(i,ispin) - p = particles_array(i,ispin) - det_ip = det_i - call do_single_excitation(det_ip,h,p,ispin,i_ok) - if(i_ok == -1)then - print*,'excitation was not possible ' - stop - endif - call get_single_excitation(det_i,det_ip,exc,phase_tmp,Nint) - phase *= phase_tmp - det_i = det_ip - enddo - enddo - -end - -subroutine get_holes_general(key_i, key_j,Nint, holes_array) - use bitmasks - BEGIN_DOC -! returns the array, per spin, of holes between key_i and key_j -! -! with the following convention: a_{hole}|key_i> --> |key_j> - END_DOC - implicit none - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) - integer, intent(out) :: holes_array(100,2) - integer(bit_kind) :: key_hole - integer :: ispin,k,i,pos - holes_array = -1 - do ispin = 1, 2 - k = 1 - do i = 1, N_int - key_hole = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_i(i,ispin)) - do while(key_hole .ne.0_bit_kind) - pos = trailz(key_hole) - holes_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos - key_hole = ibclr(key_hole,pos) - k += 1 - if(k .gt.100)then - print*,'WARNING in get_holes_general' - print*,'More than a 100-th excitation for spin ',ispin - print*,'stoping ...' - stop - endif - enddo - enddo - enddo -end - -subroutine get_particles_general(key_i, key_j,Nint,particles_array) - use bitmasks - BEGIN_DOC -! returns the array, per spin, of particles between key_i and key_j -! -! with the following convention: a^dagger_{particle}|key_i> --> |key_j> - END_DOC - implicit none - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_j(Nint,2),key_i(Nint,2) - integer, intent(out) :: particles_array(100,2) - integer(bit_kind) :: key_particle - integer :: ispin,k,i,pos - particles_array = -1 - do ispin = 1, 2 - k = 1 - do i = 1, N_int - key_particle = iand(xor(key_i(i,ispin),key_j(i,ispin)),key_j(i,ispin)) - do while(key_particle .ne.0_bit_kind) - pos = trailz(key_particle) - particles_array(k,ispin) = 1+ bit_kind_size * (i-1) + pos - key_particle = ibclr(key_particle,pos) - k += 1 - if(k .gt.100)then - print*,'WARNING in get_holes_general' - print*,'More than a 100-th excitation for spin ',ispin - print*,'Those are the two determinants' - call debug_det(key_i, N_int) - call debug_det(key_j, N_int) - print*,'stoping ...' - stop - endif - enddo - enddo - enddo -end - -subroutine get_phase_general(key_i,Nint,degree, holes_array, particles_array,phase) - implicit none - integer, intent(in) :: degree(2), Nint - integer(bit_kind), intent(in) :: key_i(Nint,2) - integer, intent(in) :: holes_array(100,2),particles_array(100,2) - double precision, intent(out) :: phase - integer :: i,ispin,h,p, i_ok - integer(bit_kind), allocatable :: det_i(:,:),det_ip(:,:) - integer :: exc(0:2,2,2) - double precision :: phase_tmp - allocate(det_i(Nint,2),det_ip(N_int,2)) - det_i = key_i - phase = 1.d0 - do ispin = 1, 2 - do i = 1, degree(ispin) - h = holes_array(i,ispin) - p = particles_array(i,ispin) - det_ip = det_i - call do_single_excitation(det_ip,h,p,ispin,i_ok) - if(i_ok == -1)then - print*,'excitation was not possible ' - stop - endif - call get_single_excitation(det_i,det_ip,exc,phase_tmp,Nint) - phase *= phase_tmp - det_i = det_ip - enddo - enddo - -end - diff --git a/plugins/local/tc_bi_ortho/test_tc_bi_ortho.irp.f b/plugins/local/slater_tc_no_opt/test_tc_bi_ortho.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/test_tc_bi_ortho.irp.f rename to plugins/local/slater_tc_no_opt/test_tc_bi_ortho.irp.f diff --git a/plugins/local/tc_bi_ortho/pt2_tc_cisd.irp.f b/plugins/local/tc_bi_ortho/pt2_tc_cisd.irp.f deleted file mode 100644 index 8940a4f6..00000000 --- a/plugins/local/tc_bi_ortho/pt2_tc_cisd.irp.f +++ /dev/null @@ -1,129 +0,0 @@ -program pt2_tc_cisd - - BEGIN_DOC - ! - ! TODO : Reads psi_det in the EZFIO folder and prints out the left- and right-eigenvectors together - ! with the energy. Saves the left-right wave functions at the end. - ! - END_DOC - - implicit none - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - read_wf = .True. - touch read_wf - - print*, ' nb of states = ', N_states - print*, ' nb of det = ', N_det - call routine_diag() - - call routine -end - -subroutine routine - implicit none - integer :: i,h1,p1,h2,p2,s1,s2,degree - double precision :: h0i,hi0,e00,ei,delta_e - double precision :: norm,e_corr,coef,e_corr_pos,e_corr_neg,e_corr_abs - - integer :: exc(0:2,2,2) - double precision :: phase - double precision :: eh1,ep1,eh2,ep2 - - norm = 0.d0 - e_corr = 0.d0 - e_corr_abs = 0.d0 - e_corr_pos = 0.d0 - e_corr_neg = 0.d0 - call htilde_mu_mat_bi_ortho_tot_slow(psi_det(1,1,1), psi_det(1,1,1), N_int, e00) - do i = 2, N_det - call htilde_mu_mat_bi_ortho_tot_slow(psi_det(1,1,i), psi_det(1,1,1), N_int, hi0) - call htilde_mu_mat_bi_ortho_tot_slow(psi_det(1,1,1), psi_det(1,1,i), N_int, h0i) - call htilde_mu_mat_bi_ortho_tot_slow(psi_det(1,1,i), psi_det(1,1,i), N_int, ei) - call get_excitation_degree(psi_det(1,1,1), psi_det(1,1,i),degree,N_int) - call get_excitation(psi_det(1,1,1), psi_det(1,1,i),exc,degree,phase,N_int) - call decode_exc(exc,degree,h1,p1,h2,p2,s1,s2) - eh1 = Fock_matrix_tc_diag_mo_tot(h1) - ep1 = Fock_matrix_tc_diag_mo_tot(p1) - delta_e = eh1 - ep1 - if (degree==2)then - eh2 = Fock_matrix_tc_diag_mo_tot(h2) - ep2 = Fock_matrix_tc_diag_mo_tot(p2) - delta_e += eh2 - ep2 - endif -! delta_e = e00 - ei - coef = hi0/delta_e - norm += coef*coef - e_corr = coef* h0i - if(e_corr.lt.0.d0)then - e_corr_neg += e_corr - elseif(e_corr.gt.0.d0)then - e_corr_pos += e_corr - endif - e_corr_abs += dabs(e_corr) - enddo - print*,'e_corr_abs = ',e_corr_abs - print*,'e_corr_pos = ',e_corr_pos - print*,'e_corr_neg = ',e_corr_neg - print*,'norm = ',dsqrt(norm) - -end - -subroutine routine_diag() - - implicit none - integer :: i, j, k - double precision :: dE - - ! provide eigval_right_tc_bi_orth - ! provide overlap_bi_ortho - ! provide htilde_matrix_elmt_bi_ortho - - if(N_states .eq. 1) then - - print*,'eigval_right_tc_bi_orth = ',eigval_right_tc_bi_orth(1) - print*,'e_tc_left_right = ',e_tc_left_right - print*,'e_tilde_bi_orth_00 = ',e_tilde_bi_orth_00 - print*,'e_pt2_tc_bi_orth = ',e_pt2_tc_bi_orth - print*,'e_pt2_tc_bi_orth_single = ',e_pt2_tc_bi_orth_single - print*,'e_pt2_tc_bi_orth_double = ',e_pt2_tc_bi_orth_double - print*,'***' - print*,'e_corr_bi_orth = ',e_corr_bi_orth - print*,'e_corr_bi_orth_proj = ',e_corr_bi_orth_proj - print*,'e_corr_bi_orth_proj_abs = ',e_corr_bi_orth_proj_abs - print*,'e_corr_single_bi_orth = ',e_corr_single_bi_orth - print*,'e_corr_double_bi_orth = ',e_corr_double_bi_orth - print*,'e_corr_single_bi_orth_abs = ',e_corr_single_bi_orth_abs - print*,'e_corr_double_bi_orth_abs = ',e_corr_double_bi_orth_abs - print*,'Left/right eigenvectors' - do i = 1,N_det - write(*,'(I5,X,(100(F12.7,X)))')i,leigvec_tc_bi_orth(i,1),reigvec_tc_bi_orth(i,1),leigvec_tc_bi_orth(i,1)*reigvec_tc_bi_orth(i,1) - enddo - - else - - print*,'eigval_right_tc_bi_orth : ' - do i = 1, N_states - print*, i, eigval_right_tc_bi_orth(i) - enddo - - print*,'' - print*,'******************************************************' - print*,'TC Excitation energies (au) (eV)' - do i = 2, N_states - dE = eigval_right_tc_bi_orth(i) - eigval_right_tc_bi_orth(1) - print*, i, dE, dE/0.0367502d0 - enddo - print*,'' - - endif - -end - - - diff --git a/plugins/local/tc_bi_ortho/tc_cisd_sc2.irp.f b/plugins/local/tc_bi_ortho/tc_cisd_sc2.irp.f deleted file mode 100644 index d4c8c55d..00000000 --- a/plugins/local/tc_bi_ortho/tc_cisd_sc2.irp.f +++ /dev/null @@ -1,36 +0,0 @@ - -! --- - -program tc_cisd_sc2 - - BEGIN_DOC - ! TODO : Put the documentation of the program here - END_DOC - - implicit none - - print *, 'Hello world' - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - read_wf = .True. - touch read_wf - - call test - -end - -! --- - -subroutine test() - implicit none -! double precision, allocatable :: dressing_dets(:),e_corr_dets(:) -! allocate(dressing_dets(N_det),e_corr_dets(N_det)) -! e_corr_dets = 0.d0 -! call get_cisd_sc2_dressing(psi_det,e_corr_dets,N_det,dressing_dets) - provide eigval_tc_cisd_sc2_bi_ortho -end diff --git a/plugins/local/tc_bi_ortho/tc_cisd_sc2_utils.irp.f b/plugins/local/tc_bi_ortho/tc_cisd_sc2_utils.irp.f deleted file mode 100644 index 5cbf26d2..00000000 --- a/plugins/local/tc_bi_ortho/tc_cisd_sc2_utils.irp.f +++ /dev/null @@ -1,145 +0,0 @@ - BEGIN_PROVIDER [ double precision, reigvec_tc_cisd_sc2_bi_ortho, (N_det,N_states)] -&BEGIN_PROVIDER [ double precision, leigvec_tc_cisd_sc2_bi_ortho, (N_det,N_states)] -&BEGIN_PROVIDER [ double precision, eigval_tc_cisd_sc2_bi_ortho, (N_states)] - implicit none - integer :: it,n_real,degree,i,istate - double precision :: e_before, e_current,thr, hmono,htwoe,hthree,accu - double precision, allocatable :: e_corr_dets(:),h0j(:), h_sc2(:,:), dressing_dets(:) - double precision, allocatable :: leigvec_tc_bi_orth_tmp(:,:),reigvec_tc_bi_orth_tmp(:,:),eigval_right_tmp(:) - allocate(leigvec_tc_bi_orth_tmp(N_det,N_det),reigvec_tc_bi_orth_tmp(N_det,N_det),eigval_right_tmp(N_det)) - allocate(e_corr_dets(N_det),h0j(N_det),h_sc2(N_det,N_det),dressing_dets(N_det)) - allocate(H_jj(N_det),vec_tmp(N_det,n_states_diag),eigval_tmp(N_states)) - dressing_dets = 0.d0 - do i = 1, N_det - call htilde_mu_mat_bi_ortho_tot_slow(psi_det(1,1,i), psi_det(1,1,i), N_int, H_jj(i)) - call get_excitation_degree(HF_bitmask,psi_det(1,1,i),degree,N_int) - if(degree == 1 .or. degree == 2)then - call htilde_mu_mat_opt_bi_ortho(HF_bitmask,psi_det(1,1,i),N_int,hmono,htwoe,hthree,h0j(i)) - endif - enddo - reigvec_tc_bi_orth_tmp = 0.d0 - do i = 1, N_det - reigvec_tc_bi_orth_tmp(i,1) = psi_r_coef_bi_ortho(i,1) - enddo - vec_tmp = 0.d0 - do istate = 1, N_states - vec_tmp(:,istate) = reigvec_tc_bi_orth_tmp(:,istate) - enddo - do istate = N_states+1, n_states_diag - vec_tmp(istate,istate) = 1.d0 - enddo - print*,'Diagonalizing the TC CISD ' - call davidson_general_diag_dressed_ext_rout_nonsym_b1space(vec_tmp, H_jj, dressing_dets,eigval_tmp, N_det, n_states, n_states_diag, converged, htc_bi_ortho_calc_tdav_slow) - do i = 1, N_det - e_corr_dets(i) = reigvec_tc_bi_orth_tmp(i,1) * h0j(i)/reigvec_tc_bi_orth_tmp(1,1) - enddo - E_before = eigval_tmp(1) - print*,'Starting from ',E_before - - e_current = 10.d0 - thr = 1.d-5 - it = 0 - dressing_dets = 0.d0 - double precision, allocatable :: H_jj(:),vec_tmp(:,:),eigval_tmp(:) - external htc_bi_ortho_calc_tdav_slow - external htcdag_bi_ortho_calc_tdav_slow - logical :: converged - do while (dabs(E_before-E_current).gt.thr) - it += 1 - E_before = E_current -! h_sc2 = htilde_matrix_elmt_bi_ortho - call get_cisd_sc2_dressing(psi_det,e_corr_dets,N_det,dressing_dets) - do i = 1, N_det -! print*,'dressing_dets(i) = ',dressing_dets(i) - h_sc2(i,i) += dressing_dets(i) - enddo - print*,'********************' - print*,'iteration ',it -! call non_hrmt_real_diag(N_det,h_sc2,& -! leigvec_tc_bi_orth_tmp,reigvec_tc_bi_orth_tmp,& -! n_real,eigval_right_tmp) -! print*,'eigval_right_tmp(1)',eigval_right_tmp(1) - vec_tmp = 0.d0 - do istate = 1, N_states - vec_tmp(:,istate) = reigvec_tc_bi_orth_tmp(:,istate) - enddo - do istate = N_states+1, n_states_diag - vec_tmp(istate,istate) = 1.d0 - enddo - call davidson_general_diag_dressed_ext_rout_nonsym_b1space(vec_tmp, H_jj, dressing_dets,eigval_tmp, N_det, n_states, n_states_diag, converged, htc_bi_ortho_calc_tdav_slow) - print*,'outside Davidson' - print*,'eigval_tmp(1) = ',eigval_tmp(1) - do i = 1, N_det - reigvec_tc_bi_orth_tmp(i,1) = vec_tmp(i,1) - e_corr_dets(i) = reigvec_tc_bi_orth_tmp(i,1) * h0j(i)/reigvec_tc_bi_orth_tmp(1,1) - enddo -! E_current = eigval_right_tmp(1) - E_current = eigval_tmp(1) - print*,'it, E(SC)^2 = ',it,E_current - enddo - eigval_tc_cisd_sc2_bi_ortho(1:N_states) = eigval_right_tmp(1:N_states) - reigvec_tc_cisd_sc2_bi_ortho(1:N_det,1:N_states) = reigvec_tc_bi_orth_tmp(1:N_det,1:N_states) - leigvec_tc_cisd_sc2_bi_ortho(1:N_det,1:N_states) = leigvec_tc_bi_orth_tmp(1:N_det,1:N_states) - -END_PROVIDER - -subroutine get_cisd_sc2_dressing(dets,e_corr_dets,ndet,dressing_dets) - implicit none - use bitmasks - integer, intent(in) :: ndet - integer(bit_kind), intent(in) :: dets(N_int,2,ndet) - double precision, intent(in) :: e_corr_dets(ndet) - double precision, intent(out) :: dressing_dets(ndet) - integer, allocatable :: degree(:),hole(:,:),part(:,:),spin(:,:) - integer(bit_kind), allocatable :: hole_part(:,:,:) - integer :: i,j,k, exc(0:2,2,2),h1,p1,h2,p2,s1,s2 - integer(bit_kind) :: xorvec(2,N_int) - - double precision :: phase - dressing_dets = 0.d0 - allocate(degree(ndet),hole(2,ndet),part(2,ndet), spin(2,ndet),hole_part(N_int,2,ndet)) - do i = 2, ndet - call get_excitation_degree(HF_bitmask,dets(1,1,i),degree(i),N_int) - do j = 1, N_int - hole_part(j,1,i) = xor( HF_bitmask(j,1), dets(j,1,i)) - hole_part(j,2,i) = xor( HF_bitmask(j,2), dets(j,2,i)) - enddo - if(degree(i) == 1)then - call get_single_excitation(HF_bitmask,psi_det(1,1,i),exc,phase,N_int) - else if(degree(i) == 2)then - call get_double_excitation(HF_bitmask,psi_det(1,1,i),exc,phase,N_int) - endif - call decode_exc(exc,degree,h1,p1,h2,p2,s1,s2) - hole(1,i) = h1 - hole(2,i) = h2 - part(1,i) = p1 - part(2,i) = p2 - spin(1,i) = s1 - spin(2,i) = s2 - enddo - - integer :: same - if(elec_alpha_num+elec_beta_num<3)return - do i = 2, ndet - do j = i+1, ndet - same = 0 - if(degree(i) == degree(j) .and. degree(i)==1)cycle - do k = 1, N_int - xorvec(k,1) = iand(hole_part(k,1,i),hole_part(k,1,j)) - xorvec(k,2) = iand(hole_part(k,2,i),hole_part(k,2,j)) - same += popcnt(xorvec(k,1)) + popcnt(xorvec(k,2)) - enddo -! print*,'i,j',i,j -! call debug_det(dets(1,1,i),N_int) -! call debug_det(hole_part(1,1,i),N_int) -! call debug_det(dets(1,1,j),N_int) -! call debug_det(hole_part(1,1,j),N_int) -! print*,'same = ',same - if(same.eq.0)then - dressing_dets(i) += e_corr_dets(j) - dressing_dets(j) += e_corr_dets(i) - endif - enddo - enddo - -end diff --git a/plugins/local/tc_bi_ortho/test_s2_tc.irp.f b/plugins/local/tc_bi_ortho/test_s2_tc.irp.f deleted file mode 100644 index 7c70b119..00000000 --- a/plugins/local/tc_bi_ortho/test_s2_tc.irp.f +++ /dev/null @@ -1,170 +0,0 @@ - -! --- - -program test_tc - - implicit none - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - read_wf = .True. - touch read_wf - - call provide_all_three_ints_bi_ortho() - call routine_h_triple_left - call routine_h_triple_right -! call routine_test_s2_davidson - -end - -subroutine routine_h_triple_right - implicit none - logical :: do_right - integer :: sze ,i, N_st, j - double precision :: sij, accu_e, accu_s, accu_e_0, accu_s_0 - double precision, allocatable :: v_0_ref(:,:),u_0(:,:),s_0_ref(:,:) - double precision, allocatable :: v_0_new(:,:),s_0_new(:,:) - sze = N_det - N_st = 1 - allocate(v_0_ref(N_det,1),u_0(N_det,1),s_0_ref(N_det,1),s_0_new(N_det,1),v_0_new(N_det,1)) - print*,'Checking first the Right ' - do i = 1, sze - u_0(i,1) = psi_r_coef_bi_ortho(i,1) - enddo - double precision :: wall0,wall1 - call wall_time(wall0) - call H_tc_s2_u_0_with_pure_three_omp(v_0_ref,s_0_ref, u_0,N_st,sze) - call wall_time(wall1) - print*,'time for omp',wall1 - wall0 - call wall_time(wall0) - call H_tc_s2_u_0_with_pure_three(v_0_new, s_0_new, u_0, N_st, sze) - call wall_time(wall1) - print*,'time serial ',wall1 - wall0 - accu_e = 0.d0 - accu_s = 0.d0 - do i = 1, sze - accu_e += dabs(v_0_ref(i,1) - v_0_new(i,1)) - accu_s += dabs(s_0_ref(i,1) - s_0_new(i,1)) - enddo - print*,'accu_e = ',accu_e - print*,'accu_s = ',accu_s - -end - -subroutine routine_h_triple_left - implicit none - logical :: do_right - integer :: sze ,i, N_st, j - double precision :: sij, accu_e, accu_s, accu_e_0, accu_s_0 - double precision, allocatable :: v_0_ref(:,:),u_0(:,:),s_0_ref(:,:) - double precision, allocatable :: v_0_new(:,:),s_0_new(:,:) - sze = N_det - N_st = 1 - allocate(v_0_ref(N_det,1),u_0(N_det,1),s_0_ref(N_det,1),s_0_new(N_det,1),v_0_new(N_det,1)) - print*,'Checking the Left ' - do i = 1, sze - u_0(i,1) = psi_l_coef_bi_ortho(i,1) - enddo - double precision :: wall0,wall1 - call wall_time(wall0) - call H_tc_s2_dagger_u_0_with_pure_three_omp(v_0_ref,s_0_ref, u_0,N_st,sze) - call wall_time(wall1) - print*,'time for omp',wall1 - wall0 - call wall_time(wall0) - call H_tc_s2_dagger_u_0_with_pure_three(v_0_new, s_0_new, u_0, N_st, sze) - call wall_time(wall1) - print*,'time serial ',wall1 - wall0 - accu_e = 0.d0 - accu_s = 0.d0 - do i = 1, sze - accu_e += dabs(v_0_ref(i,1) - v_0_new(i,1)) - accu_s += dabs(s_0_ref(i,1) - s_0_new(i,1)) - enddo - print*,'accu_e = ',accu_e - print*,'accu_s = ',accu_s - -end - - -subroutine routine_test_s2_davidson - implicit none - double precision, allocatable :: H_jj(:),vec_tmp(:,:), energies(:) , s2(:) - integer :: i,istate - logical :: converged - external H_tc_s2_dagger_u_0_opt - external H_tc_s2_u_0_opt - allocate(H_jj(N_det),vec_tmp(N_det,n_states_diag),energies(n_states_diag), s2(n_states_diag)) - do i = 1, N_det - call htilde_mu_mat_bi_ortho_tot_slow(psi_det(1,1,i), psi_det(1,1,i), N_int, H_jj(i)) - enddo - ! Preparing the left-eigenvector - print*,'Computing the left-eigenvector ' - vec_tmp = 0.d0 - do istate = 1, N_states - vec_tmp(1:N_det,istate) = psi_l_coef_bi_ortho(1:N_det,istate) - enddo - do istate = N_states+1, n_states_diag - vec_tmp(istate,istate) = 1.d0 - enddo - do istate = 1, N_states - leigvec_tc_bi_orth(1:N_det,istate) = vec_tmp(1:N_det,istate) - enddo - integer :: n_it_max - n_it_max = 1 - call davidson_hs2_nonsym_b1space(vec_tmp, H_jj, s2, energies, N_det, n_states, n_states_diag, n_it_max, converged, H_tc_s2_dagger_u_0_opt) - double precision, allocatable :: v_0_new(:,:),s_0_new(:,:) - integer :: sze,N_st - logical :: do_right - sze = N_det - N_st = 1 - do_right = .False. - allocate(s_0_new(N_det,1),v_0_new(N_det,1)) - call H_tc_s2_u_0_nstates_openmp(v_0_new,s_0_new,vec_tmp,N_st,sze, do_right) - double precision :: accu_e_0, accu_s_0 - accu_e_0 = 0.d0 - accu_s_0 = 0.d0 - do i = 1, sze - accu_e_0 += v_0_new(i,1) * vec_tmp(i,1) - accu_s_0 += s_0_new(i,1) * vec_tmp(i,1) - enddo - print*,'energies = ',energies - print*,'s2 = ',s2 - print*,'accu_e_0',accu_e_0 - print*,'accu_s_0',accu_s_0 - - ! Preparing the right-eigenvector - print*,'Computing the right-eigenvector ' - vec_tmp = 0.d0 - do istate = 1, N_states - vec_tmp(1:N_det,istate) = psi_r_coef_bi_ortho(1:N_det,istate) - enddo - do istate = N_states+1, n_states_diag - vec_tmp(istate,istate) = 1.d0 - enddo - do istate = 1, N_states - leigvec_tc_bi_orth(1:N_det,istate) = vec_tmp(1:N_det,istate) - enddo - n_it_max = 1 - call davidson_hs2_nonsym_b1space(vec_tmp, H_jj, s2, energies, N_det, n_states, n_states_diag, n_it_max, converged, H_tc_s2_u_0_opt) - sze = N_det - N_st = 1 - do_right = .True. - v_0_new = 0.d0 - s_0_new = 0.d0 - call H_tc_s2_u_0_nstates_openmp(v_0_new,s_0_new,vec_tmp,N_st,sze, do_right) - accu_e_0 = 0.d0 - accu_s_0 = 0.d0 - do i = 1, sze - accu_e_0 += v_0_new(i,1) * vec_tmp(i,1) - accu_s_0 += s_0_new(i,1) * vec_tmp(i,1) - enddo - print*,'energies = ',energies - print*,'s2 = ',s2 - print*,'accu_e_0',accu_e_0 - print*,'accu_s_0',accu_s_0 - -end From 2a8b9e544b8c9f47ce55dd8f0c4e7df5b0a67ea1 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Tue, 7 May 2024 01:56:14 +0200 Subject: [PATCH 031/159] working on aos debug --- plugins/local/non_h_ints_mu/deb_aos.irp.f | 16 +- src/ao_basis/aos_in_r.irp.f | 508 ++++++++++++---------- 2 files changed, 285 insertions(+), 239 deletions(-) diff --git a/plugins/local/non_h_ints_mu/deb_aos.irp.f b/plugins/local/non_h_ints_mu/deb_aos.irp.f index c9bc9c9a..a84e1b91 100644 --- a/plugins/local/non_h_ints_mu/deb_aos.irp.f +++ b/plugins/local/non_h_ints_mu/deb_aos.irp.f @@ -31,12 +31,14 @@ subroutine print_aos() integer :: i, ipoint double precision :: r(3) double precision :: ao_val, ao_der(3), ao_lap + double precision :: mo_val, mo_der(3), mo_lap PROVIDE final_grid_points aos_in_r_array aos_grad_in_r_array aos_lapl_in_r_array + write(1000, *) n_points_final_grid do ipoint = 1, n_points_final_grid r(:) = final_grid_points(:,ipoint) - print*, r + write(1000, '(3(f15.7, 3X))') r enddo do ipoint = 1, n_points_final_grid @@ -45,7 +47,17 @@ subroutine print_aos() ao_val = aos_in_r_array (i,ipoint) ao_der(:) = aos_grad_in_r_array(i,ipoint,:) ao_lap = aos_lapl_in_r_array(1,i,ipoint) + aos_lapl_in_r_array(2,i,ipoint) + aos_lapl_in_r_array(3,i,ipoint) - write(*, '(5(f15.7, 3X))') ao_val, ao_der, ao_lap + write(1010, '(5(f15.7, 3X))') ao_val, ao_der, ao_lap + enddo + enddo + + do ipoint = 1, n_points_final_grid + r(:) = final_grid_points(:,ipoint) + do i = 1, mo_num + mo_val = mos_in_r_array (i,ipoint) + mo_der(:) = mos_grad_in_r_array(i,ipoint,:) + mo_lap = mos_lapl_in_r_array(i,ipoint,1) + mos_lapl_in_r_array(i,ipoint,2) + mos_lapl_in_r_array(i,ipoint,3) + write(2010, '(5(f15.7, 3X))') mo_val, mo_der, mo_lap enddo enddo diff --git a/src/ao_basis/aos_in_r.irp.f b/src/ao_basis/aos_in_r.irp.f index 1b1595a3..053c86a2 100644 --- a/src/ao_basis/aos_in_r.irp.f +++ b/src/ao_basis/aos_in_r.irp.f @@ -1,67 +1,76 @@ -double precision function ao_value(i,r) - implicit none - BEGIN_DOC -! Returns the value of the i-th ao at point $\textbf{r}$ - END_DOC - double precision, intent(in) :: r(3) - integer, intent(in) :: i - integer :: m,num_ao - double precision :: center_ao(3) - double precision :: beta - integer :: power_ao(3) - double precision :: accu,dx,dy,dz,r2 - num_ao = ao_nucl(i) - power_ao(1:3)= ao_power(i,1:3) - center_ao(1:3) = nucl_coord(num_ao,1:3) - dx = (r(1) - center_ao(1)) - dy = (r(2) - center_ao(2)) - dz = (r(3) - center_ao(3)) - r2 = dx*dx + dy*dy + dz*dz - dx = dx**power_ao(1) - dy = dy**power_ao(2) - dz = dz**power_ao(3) +! --- - accu = 0.d0 - do m=1,ao_prim_num(i) - beta = ao_expo_ordered_transp(m,i) - accu += ao_coef_normalized_ordered_transp(m,i) * dexp(-beta*r2) - enddo - ao_value = accu * dx * dy * dz +double precision function ao_value(i, r) + + BEGIN_DOC + ! Returns the value of the i-th ao at point $\textbf{r}$ + END_DOC + + implicit none + integer, intent(in) :: i + double precision, intent(in) :: r(3) + + integer :: m, num_ao + integer :: power_ao(3) + double precision :: center_ao(3) + double precision :: beta + double precision :: accu, dx, dy, dz, r2 + + num_ao = ao_nucl(i) + power_ao(1:3) = ao_power(i,1:3) + center_ao(1:3) = nucl_coord(num_ao,1:3) + dx = r(1) - center_ao(1) + dy = r(2) - center_ao(2) + dz = r(3) - center_ao(3) + r2 = dx*dx + dy*dy + dz*dz + dx = dx**power_ao(1) + dy = dy**power_ao(2) + dz = dz**power_ao(3) + + accu = 0.d0 + do m = 1, ao_prim_num(i) + beta = ao_expo_ordered_transp(m,i) + accu += ao_coef_normalized_ordered_transp(m,i) * dexp(-beta*r2) + enddo + ao_value = accu * dx * dy * dz end -double precision function primitive_value(i,j,r) - implicit none - BEGIN_DOC -! Returns the value of the j-th primitive of the i-th |AO| at point $\textbf{r} -! **without the coefficient** - END_DOC - double precision, intent(in) :: r(3) - integer, intent(in) :: i,j +double precision function primitive_value(i, j, r) - integer :: m,num_ao - double precision :: center_ao(3) - double precision :: beta - integer :: power_ao(3) - double precision :: accu,dx,dy,dz,r2 - num_ao = ao_nucl(i) - power_ao(1:3)= ao_power(i,1:3) - center_ao(1:3) = nucl_coord(num_ao,1:3) - dx = (r(1) - center_ao(1)) - dy = (r(2) - center_ao(2)) - dz = (r(3) - center_ao(3)) - r2 = dx*dx + dy*dy + dz*dz - dx = dx**power_ao(1) - dy = dy**power_ao(2) - dz = dz**power_ao(3) + BEGIN_DOC + ! Returns the value of the j-th primitive of the i-th |AO| at point $\textbf{r} + ! **without the coefficient** + END_DOC - accu = 0.d0 - m=j - beta = ao_expo_ordered_transp(m,i) - accu += dexp(-beta*r2) - primitive_value = accu * dx * dy * dz + implicit none + integer, intent(in) :: i, j + double precision, intent(in) :: r(3) + + integer :: m, num_ao + integer :: power_ao(3) + double precision :: center_ao(3) + double precision :: beta + double precision :: accu, dx, dy, dz, r2 + + num_ao = ao_nucl(i) + power_ao(1:3)= ao_power(i,1:3) + center_ao(1:3) = nucl_coord(num_ao,1:3) + dx = r(1) - center_ao(1) + dy = r(2) - center_ao(2) + dz = r(3) - center_ao(3) + r2 = dx*dx + dy*dy + dz*dz + dx = dx**power_ao(1) + dy = dy**power_ao(2) + dz = dz**power_ao(3) + + accu = 0.d0 + m = j + beta = ao_expo_ordered_transp(m,i) + accu += dexp(-beta*r2) + primitive_value = accu * dx * dy * dz end @@ -104,9 +113,9 @@ subroutine give_all_aos_at_r(r, tmp_array) dz2 = dz**p_ao(3) tmp_array(k) = 0.d0 - do l = 1,ao_prim_num(k) + do l = 1, ao_prim_num(k) beta = ao_expo_ordered_transp_per_nucl(l,j,i) - if(dabs(beta*r2).gt.40.d0) cycle + if(beta*r2.gt.50.d0) cycle tmp_array(k) += ao_coef_normalized_ordered_transp_per_nucl(l,j,i) * dexp(-beta*r2) enddo @@ -120,207 +129,232 @@ end ! --- -subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) - implicit none - BEGIN_DOC -! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z -! -! output : -! -! * aos_array(i) = ao(i) evaluated at ro -! * aos_grad_array(1,i) = gradient X of the ao(i) evaluated at $\textbf{r}$ -! - END_DOC - double precision, intent(in) :: r(3) - double precision, intent(out) :: aos_array(ao_num) - double precision, intent(out) :: aos_grad_array(3,ao_num) +subroutine give_all_aos_and_grad_at_r(r, aos_array, aos_grad_array) - integer :: power_ao(3) - integer :: i,j,k,l,m - double precision :: dx,dy,dz,r2 - double precision :: dx2,dy2,dz2 - double precision :: dx1,dy1,dz1 - double precision :: center_ao(3) - double precision :: beta,accu_1,accu_2,contrib - do i = 1, nucl_num - center_ao(1:3) = nucl_coord(i,1:3) - dx = (r(1) - center_ao(1)) - dy = (r(2) - center_ao(2)) - dz = (r(3) - center_ao(3)) - r2 = dx*dx + dy*dy + dz*dz - do j = 1,Nucl_N_Aos(i) - k = Nucl_Aos_transposed(j,i) ! index of the ao in the ordered format - aos_array(k) = 0.d0 - aos_grad_array(1,k) = 0.d0 - aos_grad_array(2,k) = 0.d0 - aos_grad_array(3,k) = 0.d0 - power_ao(1:3)= ao_power_ordered_transp_per_nucl(1:3,j,i) - dx2 = dx**power_ao(1) - dy2 = dy**power_ao(2) - dz2 = dz**power_ao(3) - if(power_ao(1) .ne. 0)then - dx1 = dble(power_ao(1)) * dx**(power_ao(1)-1) - else - dx1 = 0.d0 - endif - if(power_ao(2) .ne. 0)then - dy1 = dble(power_ao(2)) * dy**(power_ao(2)-1) - else - dy1 = 0.d0 - endif - if(power_ao(3) .ne. 0)then - dz1 = dble(power_ao(3)) * dz**(power_ao(3)-1) - else - dz1 = 0.d0 - endif - accu_1 = 0.d0 - accu_2 = 0.d0 - do l = 1,ao_prim_num(k) - beta = ao_expo_ordered_transp_per_nucl(l,j,i) - contrib = 0.d0 - if(beta*r2.gt.50.d0)cycle - contrib = ao_coef_normalized_ordered_transp_per_nucl(l,j,i) * dexp(-beta*r2) - accu_1 += contrib - accu_2 += contrib * beta - enddo - aos_array(k) = accu_1 * dx2 * dy2 * dz2 - aos_grad_array(1,k) = accu_1 * dx1 * dy2 * dz2- 2.d0 * dx2 * dx * dy2 * dz2 * accu_2 - aos_grad_array(2,k) = accu_1 * dx2 * dy1 * dz2- 2.d0 * dx2 * dy2 * dy * dz2 * accu_2 - aos_grad_array(3,k) = accu_1 * dx2 * dy2 * dz1- 2.d0 * dx2 * dy2 * dz2 * dz * accu_2 + BEGIN_DOC + ! + ! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z + ! + ! output : + ! + ! * aos_array(i) = ao(i) evaluated at ro + ! * aos_grad_array(1,i) = gradient X of the ao(i) evaluated at $\textbf{r}$ + ! + END_DOC + + implicit none + double precision, intent(in) :: r(3) + double precision, intent(out) :: aos_array(ao_num) + double precision, intent(out) :: aos_grad_array(3,ao_num) + + integer :: power_ao(3) + integer :: i, j, k, l, m + double precision :: dx, dy, dz, r2 + double precision :: dx1, dy1, dz1 + double precision :: dx2, dy2, dz2 + double precision :: center_ao(3) + double precision :: beta, accu_1, accu_2, contrib + + do i = 1, nucl_num + + center_ao(1:3) = nucl_coord(i,1:3) + + dx = r(1) - center_ao(1) + dy = r(2) - center_ao(2) + dz = r(3) - center_ao(3) + r2 = dx*dx + dy*dy + dz*dz + + do j = 1, Nucl_N_Aos(i) + + k = Nucl_Aos_transposed(j,i) ! index of the ao in the ordered format + + aos_array(k) = 0.d0 + aos_grad_array(1,k) = 0.d0 + aos_grad_array(2,k) = 0.d0 + aos_grad_array(3,k) = 0.d0 + + power_ao(1:3) = ao_power_ordered_transp_per_nucl(1:3,j,i) + dx2 = dx**power_ao(1) + dy2 = dy**power_ao(2) + dz2 = dz**power_ao(3) + + dx1 = 0.d0 + if(power_ao(1) .ne. 0) then + dx1 = dble(power_ao(1)) * dx**(power_ao(1)-1) + endif + + dy1 = 0.d0 + if(power_ao(2) .ne. 0) then + dy1 = dble(power_ao(2)) * dy**(power_ao(2)-1) + endif + + dz1 = 0.d0 + if(power_ao(3) .ne. 0) then + dz1 = dble(power_ao(3)) * dz**(power_ao(3)-1) + endif + + accu_1 = 0.d0 + accu_2 = 0.d0 + do l = 1, ao_prim_num(k) + beta = ao_expo_ordered_transp_per_nucl(l,j,i) + if(beta*r2.gt.50.d0) cycle + contrib = ao_coef_normalized_ordered_transp_per_nucl(l,j,i) * dexp(-beta*r2) + accu_1 += contrib + accu_2 += contrib * beta + enddo + + aos_array(k) = accu_1 * dx2 * dy2 * dz2 + aos_grad_array(1,k) = accu_1 * dx1 * dy2 * dz2 - 2.d0 * dx2 * dx * dy2 * dz2 * accu_2 + aos_grad_array(2,k) = accu_1 * dx2 * dy1 * dz2 - 2.d0 * dx2 * dy2 * dy * dz2 * accu_2 + aos_grad_array(3,k) = accu_1 * dx2 * dy2 * dz1 - 2.d0 * dx2 * dy2 * dz2 * dz * accu_2 + enddo enddo - enddo + end +! --- -subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array) - implicit none - BEGIN_DOC -! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z -! -! output : -! -! * aos_array(i) = ao(i) evaluated at $\textbf{r}$ -! * aos_grad_array(1,i) = $\nabla_x$ of the ao(i) evaluated at $\textbf{r}$ - END_DOC - double precision, intent(in) :: r(3) - double precision, intent(out) :: aos_array(ao_num) - double precision, intent(out) :: aos_grad_array(3,ao_num) - double precision, intent(out) :: aos_lapl_array(3,ao_num) +subroutine give_all_aos_and_grad_and_lapl_at_r(r, aos_array, aos_grad_array, aos_lapl_array) - integer :: power_ao(3) - integer :: i,j,k,l,m - double precision :: dx,dy,dz,r2 - double precision :: dx2,dy2,dz2 - double precision :: dx1,dy1,dz1 - double precision :: dx3,dy3,dz3 - double precision :: dx4,dy4,dz4 - double precision :: dx5,dy5,dz5 - double precision :: center_ao(3) - double precision :: beta,accu_1,accu_2,accu_3,contrib - do i = 1, nucl_num - center_ao(1:3) = nucl_coord(i,1:3) - dx = (r(1) - center_ao(1)) - dy = (r(2) - center_ao(2)) - dz = (r(3) - center_ao(3)) - r2 = dx*dx + dy*dy + dz*dz - do j = 1,Nucl_N_Aos(i) - k = Nucl_Aos_transposed(j,i) ! index of the ao in the ordered format - aos_array(k) = 0.d0 - aos_grad_array(1,k) = 0.d0 - aos_grad_array(2,k) = 0.d0 - aos_grad_array(3,k) = 0.d0 + BEGIN_DOC + ! + ! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z + ! + ! output : + ! + ! * aos_array(i) = ao(i) evaluated at $\textbf{r}$ + ! * aos_grad_array(1,i) = $\nabla_x$ of the ao(i) evaluated at $\textbf{r}$ + ! + END_DOC - aos_lapl_array(1,k) = 0.d0 - aos_lapl_array(2,k) = 0.d0 - aos_lapl_array(3,k) = 0.d0 + implicit none + double precision, intent(in) :: r(3) + double precision, intent(out) :: aos_array(ao_num) + double precision, intent(out) :: aos_grad_array(3,ao_num) + double precision, intent(out) :: aos_lapl_array(3,ao_num) - power_ao(1:3)= ao_power_ordered_transp_per_nucl(1:3,j,i) - dx2 = dx**power_ao(1) - dy2 = dy**power_ao(2) - dz2 = dz**power_ao(3) - if(power_ao(1) .ne. 0)then - dx1 = dble(power_ao(1)) * dx**(power_ao(1)-1) - else - dx1 = 0.d0 - endif - ! For the Laplacian - if(power_ao(1) .ge. 2)then - dx3 = dble(power_ao(1)) * dble((power_ao(1)-1)) * dx**(power_ao(1)-2) - else - dx3 = 0.d0 - endif - if(power_ao(1) .ge. 1)then - dx4 = dble((2 * power_ao(1) + 1)) * dx**(power_ao(1)) - else - dx4 = dble((power_ao(1) + 1)) * dx**(power_ao(1)) - endif + integer :: power_ao(3) + integer :: i, j, k, l, m + double precision :: dx, dy, dz, r2 + double precision :: dx1, dy1, dz1 + double precision :: dx2, dy2, dz2 + double precision :: dx3, dy3, dz3 + double precision :: dx4, dy4, dz4 + double precision :: dx5, dy5, dz5 + double precision :: center_ao(3) + double precision :: beta, accu_1, accu_2, accu_3, contrib - dx5 = dx**(power_ao(1)+2) + do i = 1, nucl_num - if(power_ao(2) .ne. 0)then - dy1 = dble(power_ao(2)) * dy**(power_ao(2)-1) - else - dy1 = 0.d0 - endif - ! For the Laplacian - if(power_ao(2) .ge. 2)then - dy3 = dble(power_ao(2)) * dble((power_ao(2)-1)) * dy**(power_ao(2)-2) - else - dy3 = 0.d0 - endif + center_ao(1:3) = nucl_coord(i,1:3) - if(power_ao(2) .ge. 1)then - dy4 = dble((2 * power_ao(2) + 1)) * dy**(power_ao(2)) - else - dy4 = dble((power_ao(2) + 1)) * dy**(power_ao(2)) - endif + dx = r(1) - center_ao(1) + dy = r(2) - center_ao(2) + dz = r(3) - center_ao(3) + r2 = dx*dx + dy*dy + dz*dz + + do j = 1, Nucl_N_Aos(i) - dy5 = dy**(power_ao(2)+2) + k = Nucl_Aos_transposed(j,i) ! index of the ao in the ordered format + aos_array(k) = 0.d0 + aos_grad_array(1,k) = 0.d0 + aos_grad_array(2,k) = 0.d0 + aos_grad_array(3,k) = 0.d0 + aos_lapl_array(1,k) = 0.d0 + aos_lapl_array(2,k) = 0.d0 + aos_lapl_array(3,k) = 0.d0 + + power_ao(1:3)= ao_power_ordered_transp_per_nucl(1:3,j,i) + dx2 = dx**power_ao(1) + dy2 = dy**power_ao(2) + dz2 = dz**power_ao(3) - if(power_ao(3) .ne. 0)then - dz1 = dble(power_ao(3)) * dz**(power_ao(3)-1) - else - dz1 = 0.d0 - endif - ! For the Laplacian - if(power_ao(3) .ge. 2)then - dz3 = dble(power_ao(3)) * dble((power_ao(3)-1)) * dz**(power_ao(3)-2) - else - dz3 = 0.d0 - endif + ! --- - if(power_ao(3) .ge. 1)then - dz4 = dble((2 * power_ao(3) + 1)) * dz**(power_ao(3)) - else - dz4 = dble((power_ao(3) + 1)) * dz**(power_ao(3)) - endif + dx1 = 0.d0 + if(power_ao(1) .ne. 0) then + dx1 = dble(power_ao(1)) * dx**(power_ao(1)-1) + endif - dz5 = dz**(power_ao(3)+2) + dx3 = 0.d0 + if(power_ao(1) .ge. 2) then + dx3 = dble(power_ao(1)) * dble((power_ao(1)-1)) * dx**(power_ao(1)-2) + endif + if(power_ao(1) .ge. 1) then + dx4 = dble((2 * power_ao(1) + 1)) * dx**(power_ao(1)) + else + dx4 = dble((power_ao(1) + 1)) * dx**(power_ao(1)) + endif + + dx5 = dx**(power_ao(1)+2) + + ! --- + + dy1 = 0.d0 + if(power_ao(2) .ne. 0) then + dy1 = dble(power_ao(2)) * dy**(power_ao(2)-1) + endif - accu_1 = 0.d0 - accu_2 = 0.d0 - accu_3 = 0.d0 - do l = 1,ao_prim_num(k) - beta = ao_expo_ordered_transp_per_nucl(l,j,i) - contrib = ao_coef_normalized_ordered_transp_per_nucl(l,j,i) * dexp(-beta*r2) - accu_1 += contrib - accu_2 += contrib * beta - accu_3 += contrib * beta**2 - enddo - aos_array(k) = accu_1 * dx2 * dy2 * dz2 + dy3 = 0.d0 + if(power_ao(2) .ge. 2) then + dy3 = dble(power_ao(2)) * dble((power_ao(2)-1)) * dy**(power_ao(2)-2) + endif + + if(power_ao(2) .ge. 1) then + dy4 = dble((2 * power_ao(2) + 1)) * dy**(power_ao(2)) + else + dy4 = dble((power_ao(2) + 1)) * dy**(power_ao(2)) + endif + + dy5 = dy**(power_ao(2)+2) - aos_grad_array(1,k) = accu_1 * dx1 * dy2 * dz2- 2.d0 * dx2 * dx * dy2 * dz2 * accu_2 - aos_grad_array(2,k) = accu_1 * dx2 * dy1 * dz2- 2.d0 * dx2 * dy2 * dy * dz2 * accu_2 - aos_grad_array(3,k) = accu_1 * dx2 * dy2 * dz1- 2.d0 * dx2 * dy2 * dz2 * dz * accu_2 + ! --- + + dz1 = 0.d0 + if(power_ao(3) .ne. 0) then + dz1 = dble(power_ao(3)) * dz**(power_ao(3)-1) + endif - aos_lapl_array(1,k) = accu_1 * dx3 * dy2 * dz2- 2.d0 * dx4 * dy2 * dz2* accu_2 +4.d0 * dx5 *dy2 * dz2* accu_3 - aos_lapl_array(2,k) = accu_1 * dx2 * dy3 * dz2- 2.d0 * dx2 * dy4 * dz2* accu_2 +4.d0 * dx2 *dy5 * dz2* accu_3 - aos_lapl_array(3,k) = accu_1 * dx2 * dy2 * dz3- 2.d0 * dx2 * dy2 * dz4* accu_2 +4.d0 * dx2 *dy2 * dz5* accu_3 + dz3 = 0.d0 + if(power_ao(3) .ge. 2) then + dz3 = dble(power_ao(3)) * dble((power_ao(3)-1)) * dz**(power_ao(3)-2) + endif + + if(power_ao(3) .ge. 1) then + dz4 = dble((2 * power_ao(3) + 1)) * dz**(power_ao(3)) + else + dz4 = dble((power_ao(3) + 1)) * dz**(power_ao(3)) + endif + + dz5 = dz**(power_ao(3)+2) + + ! --- + + accu_1 = 0.d0 + accu_2 = 0.d0 + accu_3 = 0.d0 + do l = 1,ao_prim_num(k) + beta = ao_expo_ordered_transp_per_nucl(l,j,i) + if(beta*r2.gt.50.d0) cycle + contrib = ao_coef_normalized_ordered_transp_per_nucl(l,j,i) * dexp(-beta*r2) + accu_1 += contrib + accu_2 += contrib * beta + accu_3 += contrib * beta**2 + enddo + aos_array(k) = accu_1 * dx2 * dy2 * dz2 + aos_grad_array(1,k) = accu_1 * dx1 * dy2 * dz2 - 2.d0 * dx2 * dx * dy2 * dz2 * accu_2 + aos_grad_array(2,k) = accu_1 * dx2 * dy1 * dz2 - 2.d0 * dx2 * dy2 * dy * dz2 * accu_2 + aos_grad_array(3,k) = accu_1 * dx2 * dy2 * dz1 - 2.d0 * dx2 * dy2 * dz2 * dz * accu_2 + aos_lapl_array(1,k) = accu_1 * dx3 * dy2 * dz2 - 2.d0 * dx4 * dy2 * dz2 * accu_2 + 4.d0 * dx5 * dy2 * dz2 * accu_3 + aos_lapl_array(2,k) = accu_1 * dx2 * dy3 * dz2 - 2.d0 * dx2 * dy4 * dz2 * accu_2 + 4.d0 * dx2 * dy5 * dz2 * accu_3 + aos_lapl_array(3,k) = accu_1 * dx2 * dy2 * dz3 - 2.d0 * dx2 * dy2 * dz4 * accu_2 + 4.d0 * dx2 * dy2 * dz5 * accu_3 + enddo enddo - enddo + end +! --- From 17ae4d8fe2f103bac46205380ae0e6a33736de71 Mon Sep 17 00:00:00 2001 From: eginer Date: Tue, 7 May 2024 18:27:09 +0200 Subject: [PATCH 032/159] added tc_progs --- .../local/cipsi_tc_bi_ortho/selection.irp.f | 4 +- ..._bi_ortho.irp.f => diagonalize_tc_h.irp.f} | 0 plugins/local/tc_bi_ortho/test_natorb.irp.f | 64 ------- .../local/tc_bi_ortho/test_normal_order.irp.f | 173 ------------------ plugins/local/tc_bi_ortho/test_tc_fock.irp.f | 171 ----------------- plugins/local/tc_progs/NEED | 1 + .../print_he_tc_energy.irp.f | 0 .../print_tc_dump.irp.f | 0 .../print_tc_energy.irp.f | 0 .../print_tc_spin_dens.irp.f | 0 .../print_tc_var.irp.f | 0 .../print_tc_wf.irp.f | 0 .../save_bitcpsileft_for_qmcchem.irp.f | 0 .../save_tc_bi_ortho_nat.irp.f | 0 .../select_dets_bi_ortho.irp.f | 0 .../tc_bi_ortho_prop.irp.f | 0 .../{tc_bi_ortho => tc_progs}/tc_som.irp.f | 0 .../test_tc_two_rdm.irp.f | 0 18 files changed, 3 insertions(+), 410 deletions(-) rename plugins/local/tc_bi_ortho/{tc_bi_ortho.irp.f => diagonalize_tc_h.irp.f} (100%) delete mode 100644 plugins/local/tc_bi_ortho/test_natorb.irp.f delete mode 100644 plugins/local/tc_bi_ortho/test_normal_order.irp.f delete mode 100644 plugins/local/tc_bi_ortho/test_tc_fock.irp.f create mode 100644 plugins/local/tc_progs/NEED rename plugins/local/{tc_bi_ortho => tc_progs}/print_he_tc_energy.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/print_tc_dump.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/print_tc_energy.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/print_tc_spin_dens.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/print_tc_var.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/print_tc_wf.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/save_bitcpsileft_for_qmcchem.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/save_tc_bi_ortho_nat.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/select_dets_bi_ortho.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/tc_bi_ortho_prop.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/tc_som.irp.f (100%) rename plugins/local/{tc_bi_ortho => tc_progs}/test_tc_two_rdm.irp.f (100%) diff --git a/plugins/local/cipsi_tc_bi_ortho/selection.irp.f b/plugins/local/cipsi_tc_bi_ortho/selection.irp.f index 12163e06..0b4345d5 100644 --- a/plugins/local/cipsi_tc_bi_ortho/selection.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/selection.irp.f @@ -892,8 +892,8 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d psi_h_alpha = 0.d0 alpha_h_psi = 0.d0 do iii = 1, N_det_selectors - call htilde_mu_mat_bi_ortho_tot_slow(psi_selectors(1,1,iii), det, N_int, i_h_alpha) - call htilde_mu_mat_bi_ortho_tot_slow(det, psi_selectors(1,1,iii), N_int, alpha_h_i) + call htilde_mu_mat_opt_bi_ortho_tot(psi_selectors(1,1,iii), det, N_int, i_h_alpha) + call htilde_mu_mat_opt_bi_ortho_tot(det, psi_selectors(1,1,iii), N_int, alpha_h_i) call get_excitation_degree(psi_selectors(1,1,iii), det,degree,N_int) if(degree == 0)then print*,'problem !!!' diff --git a/plugins/local/tc_bi_ortho/tc_bi_ortho.irp.f b/plugins/local/tc_bi_ortho/diagonalize_tc_h.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/tc_bi_ortho.irp.f rename to plugins/local/tc_bi_ortho/diagonalize_tc_h.irp.f diff --git a/plugins/local/tc_bi_ortho/test_natorb.irp.f b/plugins/local/tc_bi_ortho/test_natorb.irp.f deleted file mode 100644 index 5b8801f7..00000000 --- a/plugins/local/tc_bi_ortho/test_natorb.irp.f +++ /dev/null @@ -1,64 +0,0 @@ - -! --- - -program test_natorb - - BEGIN_DOC - ! TODO : Reads psi_det in the EZFIO folder and prints out the left- and right-eigenvectors together with the energy. Saves the left-right wave functions at the end. - END_DOC - - implicit none - - print *, 'Hello world' - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - read_wf = .True. - touch read_wf - - call routine() - ! call test() - -end - -! --- - -subroutine routine() - - implicit none - double precision, allocatable :: fock_diag(:),eigval(:),leigvec(:,:),reigvec(:,:),mat_ref(:,:) - allocate(eigval(mo_num),leigvec(mo_num,mo_num),reigvec(mo_num,mo_num),fock_diag(mo_num),mat_ref(mo_num, mo_num)) - double precision, allocatable :: eigval_ref(:),leigvec_ref(:,:),reigvec_ref(:,:) - allocate(eigval_ref(mo_num),leigvec_ref(mo_num,mo_num),reigvec_ref(mo_num,mo_num)) - - double precision :: thr_deg - integer :: i,n_real,j - print*,'fock_matrix' - do i = 1, mo_num - fock_diag(i) = Fock_matrix_mo(i,i) - print*,i,fock_diag(i) - enddo - thr_deg = 1.d-6 - mat_ref = -one_e_dm_mo - print*,'diagonalization by block' - call diag_mat_per_fock_degen(fock_diag,mat_ref,mo_num,thr_deg,leigvec,reigvec,eigval) - call non_hrmt_bieig( mo_num, mat_ref& - , leigvec_ref, reigvec_ref& - , n_real, eigval_ref) - print*,'TEST ***********************************' - double precision :: accu_l, accu_r - do i = 1, mo_num - accu_l = 0.d0 - accu_r = 0.d0 - do j = 1, mo_num - accu_r += reigvec_ref(j,i) * reigvec(j,i) - accu_l += leigvec_ref(j,i) * leigvec(j,i) - enddo - print*,i - write(*,'(I3,X,100(F16.10,X))')i,eigval(i),eigval_ref(i),accu_l,accu_r - enddo -end diff --git a/plugins/local/tc_bi_ortho/test_normal_order.irp.f b/plugins/local/tc_bi_ortho/test_normal_order.irp.f deleted file mode 100644 index 7b4c558f..00000000 --- a/plugins/local/tc_bi_ortho/test_normal_order.irp.f +++ /dev/null @@ -1,173 +0,0 @@ - -! --- - -program test_normal_order - - BEGIN_DOC - ! TODO : Put the documentation of the program here - END_DOC - - implicit none - - print *, 'Hello world' - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - read_wf = .True. - touch read_wf - - call provide_all_three_ints_bi_ortho() - call test() - -end - -! --- - -subroutine test - implicit none - use bitmasks ! you need to include the bitmasks_module.f90 features - integer :: h1,h2,p1,p2,s1,s2,i_ok,degree,Ne(2) - integer :: exc(0:2,2,2) - integer(bit_kind), allocatable :: det_i(:,:) - double precision :: hmono,htwoe,hthree,htilde_ij,accu,phase,normal,hthree_tmp - integer, allocatable :: occ(:,:) - allocate( occ(N_int*bit_kind_size,2) ) - call bitstring_to_list_ab(ref_bitmask, occ, Ne, N_int) - allocate(det_i(N_int,2)) - s1 = 1 - s2 = 2 - accu = 0.d0 - do h1 = 1, elec_beta_num - do p1 = elec_alpha_num+1, mo_num - do h2 = 1, elec_beta_num - do p2 = elec_beta_num+1, mo_num - hthree = 0.d0 - - det_i = ref_bitmask - s1 = 1 - s2 = 2 - call do_single_excitation(det_i,h1,p1,s1,i_ok) - if(i_ok.ne.1)cycle - call do_single_excitation(det_i,h2,p2,s2,i_ok) - if(i_ok.ne.1)cycle - call htilde_mu_mat_opt_bi_ortho(det_i,HF_bitmask,N_int,hmono,htwoe,hthree_tmp,htilde_ij) - call get_excitation_degree(ref_bitmask,det_i,degree,N_int) - call get_excitation(ref_bitmask,det_i,exc,degree,phase,N_int) - hthree_tmp *= phase - hthree += 0.5d0 * hthree_tmp - det_i = ref_bitmask - s1 = 2 - s2 = 1 - call do_single_excitation(det_i,h1,p1,s1,i_ok) - if(i_ok.ne.1)cycle - call do_single_excitation(det_i,h2,p2,s2,i_ok) - if(i_ok.ne.1)cycle - call htilde_mu_mat_opt_bi_ortho(det_i,HF_bitmask,N_int,hmono,htwoe,hthree_tmp,htilde_ij) - call get_excitation_degree(ref_bitmask,det_i,degree,N_int) - call get_excitation(ref_bitmask,det_i,exc,degree,phase,N_int) - hthree_tmp *= phase - hthree += 0.5d0 * hthree_tmp - - -! normal = normal_two_body_bi_orth_ab(p2,h2,p1,h1) - call give_aba_contraction(N_int, h1, h2, p1, p2, Ne, occ, normal) - if(dabs(hthree).lt.1.d-10)cycle - if(dabs(hthree-normal).gt.1.d-10)then -! print*,pp2,pp1,hh2,hh1 - print*,p2,p1,h2,h1 - print*,hthree,normal,dabs(hthree-normal) - stop - endif -! call three_comp_two_e_elem(det_i,h1,h2,p1,p2,s1,s2,normal) -! normal = eff_2_e_from_3_e_ab(p2,p1,h2,h1) - accu += dabs(hthree-normal) - enddo - enddo - enddo - enddo -print*,'accu opposite spin = ',accu -stop - -! p2=6 -! p1=5 -! h2=2 -! h1=1 - -s1 = 1 -s2 = 1 -accu = 0.d0 -do h1 = 1, elec_alpha_num - do p1 = elec_alpha_num+1, mo_num - do p2 = p1+1, mo_num - do h2 = h1+1, elec_alpha_num - det_i = ref_bitmask - call do_single_excitation(det_i,h1,p1,s1,i_ok) - if(i_ok.ne.1)cycle - call do_single_excitation(det_i,h2,p2,s2,i_ok) - if(i_ok.ne.1)cycle - call htilde_mu_mat_opt_bi_ortho(det_i,ref_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) - call get_excitation_degree(ref_bitmask,det_i,degree,N_int) - call get_excitation(ref_bitmask,det_i,exc,degree,phase,N_int) - integer :: hh1, pp1, hh2, pp2, ss1, ss2 - call decode_exc(exc, 2, hh1, pp1, hh2, pp2, ss1, ss2) - hthree *= phase - normal = normal_two_body_bi_orth_aa_bb(p2,h2,p1,h1) -! normal = eff_2_e_from_3_e_aa(p2,p1,h2,h1) - if(dabs(hthree).lt.1.d-10)cycle - if(dabs(hthree-normal).gt.1.d-10)then - print*,pp2,pp1,hh2,hh1 - print*,p2,p1,h2,h1 - print*,hthree,normal,dabs(hthree-normal) - stop - endif -! print*,hthree,normal,dabs(hthree-normal) - accu += dabs(hthree-normal) - enddo - enddo - enddo -enddo -print*,'accu same spin alpha = ',accu - - -s1 = 2 -s2 = 2 -accu = 0.d0 -do h1 = 1, elec_beta_num - do p1 = elec_beta_num+1, mo_num - do p2 = p1+1, mo_num - do h2 = h1+1, elec_beta_num - det_i = ref_bitmask - call do_single_excitation(det_i,h1,p1,s1,i_ok) - if(i_ok.ne.1)cycle - call do_single_excitation(det_i,h2,p2,s2,i_ok) - if(i_ok.ne.1)cycle - call htilde_mu_mat_opt_bi_ortho(det_i,ref_bitmask,N_int,hmono,htwoe,hthree,htilde_ij) - call get_excitation_degree(ref_bitmask,det_i,degree,N_int) - call get_excitation(ref_bitmask,det_i,exc,degree,phase,N_int) - call decode_exc(exc, 2, hh1, pp1, hh2, pp2, ss1, ss2) - hthree *= phase -! normal = normal_two_body_bi_orth_aa_bb(p2,h2,p1,h1) - normal = eff_2_e_from_3_e_bb(p2,p1,h2,h1) - if(dabs(hthree).lt.1.d-10)cycle - if(dabs(hthree-normal).gt.1.d-10)then - print*,pp2,pp1,hh2,hh1 - print*,p2,p1,h2,h1 - print*,hthree,normal,dabs(hthree-normal) - stop - endif -! print*,hthree,normal,dabs(hthree-normal) - accu += dabs(hthree-normal) - enddo - enddo - enddo -enddo -print*,'accu same spin beta = ',accu - - -end - - diff --git a/plugins/local/tc_bi_ortho/test_tc_fock.irp.f b/plugins/local/tc_bi_ortho/test_tc_fock.irp.f deleted file mode 100644 index b33b2e93..00000000 --- a/plugins/local/tc_bi_ortho/test_tc_fock.irp.f +++ /dev/null @@ -1,171 +0,0 @@ - -! --- - -program test_tc_fock - - BEGIN_DOC - ! TODO : Put the documentation of the program here - END_DOC - - implicit none - - print *, 'Hello world' - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - read_wf = .True. - touch read_wf - - !call routine_1 - !call routine_2 -! call routine_3() - - call routine_tot - -end - -! --- - -subroutine routine_3() - - use bitmasks ! you need to include the bitmasks_module.f90 features - - implicit none - integer :: i, a, i_ok, s1 - double precision :: hmono, htwoe, hthree, htilde_ij - double precision :: err_ai, err_tot, ref, new - integer(bit_kind), allocatable :: det_i(:,:) - - allocate(det_i(N_int,2)) - - err_tot = 0.d0 - - do s1 = 1, 2 - - det_i = ref_bitmask - call debug_det(det_i, N_int) - print*, ' HF det' - call debug_det(det_i, N_int) - - do i = 1, elec_num_tab(s1) - do a = elec_num_tab(s1)+1, mo_num ! virtual - - det_i = ref_bitmask - call do_single_excitation(det_i, i, a, s1, i_ok) - if(i_ok == -1) then - print*, 'PB !!' - print*, i, a - stop - endif - print*, ' excited det' - call debug_det(det_i, N_int) - - call htilde_mu_mat_opt_bi_ortho(det_i, ref_bitmask, N_int, hmono, htwoe, hthree, htilde_ij) - if(dabs(hthree).lt.1.d-10)cycle - ref = hthree - if(s1 == 1)then - new = fock_a_tot_3e_bi_orth(a,i) - else if(s1 == 2)then - new = fock_b_tot_3e_bi_orth(a,i) - endif - err_ai = dabs(dabs(ref) - dabs(new)) - if(err_ai .gt. 1d-7) then - print*,'s1 = ',s1 - print*, ' warning on', i, a - print*, ref,new,err_ai - endif - print*, ref,new,err_ai - err_tot += err_ai - - write(22, *) htilde_ij - enddo - enddo - enddo - - print *, ' err_tot = ', err_tot - - deallocate(det_i) - -end subroutine routine_3 - -! --- -subroutine routine_tot() - - use bitmasks ! you need to include the bitmasks_module.f90 features - - implicit none - integer :: i, a, i_ok, s1,other_spin(2) - double precision :: hmono, htwoe, hthree, htilde_ij - double precision :: err_ai, err_tot, ref, new - integer(bit_kind), allocatable :: det_i(:,:) - - allocate(det_i(N_int,2)) - other_spin(1) = 2 - other_spin(2) = 1 - - err_tot = 0.d0 - -! do s1 = 1, 2 - s1 = 2 - det_i = ref_bitmask - call debug_det(det_i, N_int) - print*, ' HF det' - call debug_det(det_i, N_int) - -! do i = 1, elec_num_tab(s1) -! do a = elec_num_tab(s1)+1, mo_num ! virtual - do i = 1, elec_beta_num - do a = elec_beta_num+1, mo_num! virtual - print*,i,a - - det_i = ref_bitmask - call do_single_excitation(det_i, i, a, s1, i_ok) - if(i_ok == -1) then - print*, 'PB !!' - print*, i, a - stop - endif - - call htilde_mu_mat_opt_bi_ortho(det_i, ref_bitmask, N_int, hmono, htwoe, hthree, htilde_ij) - print*,htilde_ij -! if(dabs(htilde_ij).lt.1.d-10)cycle - print*, ' excited det' - call debug_det(det_i, N_int) - - if(s1 == 1)then - new = Fock_matrix_tc_mo_alpha(a,i) - else - new = Fock_matrix_tc_mo_beta(a,i) - endif - ref = htilde_ij -! if(s1 == 1)then -! new = fock_a_tot_3e_bi_orth(a,i) -! else if(s1 == 2)then -! new = fock_b_tot_3e_bi_orth(a,i) -! endif - err_ai = dabs(dabs(ref) - dabs(new)) - if(err_ai .gt. 1d-7) then - print*,'---------' - print*,'s1 = ',s1 - print*, ' warning on', i, a - print*, ref,new,err_ai - print*,hmono, htwoe, hthree - print*,'---------' - endif - print*, ref,new,err_ai - err_tot += err_ai - - write(22, *) htilde_ij - enddo - enddo -! enddo - - print *, ' err_tot = ', err_tot - - deallocate(det_i) - -end subroutine routine_3 diff --git a/plugins/local/tc_progs/NEED b/plugins/local/tc_progs/NEED new file mode 100644 index 00000000..9deb3db4 --- /dev/null +++ b/plugins/local/tc_progs/NEED @@ -0,0 +1 @@ +tc_bi_ortho diff --git a/plugins/local/tc_bi_ortho/print_he_tc_energy.irp.f b/plugins/local/tc_progs/print_he_tc_energy.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/print_he_tc_energy.irp.f rename to plugins/local/tc_progs/print_he_tc_energy.irp.f diff --git a/plugins/local/tc_bi_ortho/print_tc_dump.irp.f b/plugins/local/tc_progs/print_tc_dump.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/print_tc_dump.irp.f rename to plugins/local/tc_progs/print_tc_dump.irp.f diff --git a/plugins/local/tc_bi_ortho/print_tc_energy.irp.f b/plugins/local/tc_progs/print_tc_energy.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/print_tc_energy.irp.f rename to plugins/local/tc_progs/print_tc_energy.irp.f diff --git a/plugins/local/tc_bi_ortho/print_tc_spin_dens.irp.f b/plugins/local/tc_progs/print_tc_spin_dens.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/print_tc_spin_dens.irp.f rename to plugins/local/tc_progs/print_tc_spin_dens.irp.f diff --git a/plugins/local/tc_bi_ortho/print_tc_var.irp.f b/plugins/local/tc_progs/print_tc_var.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/print_tc_var.irp.f rename to plugins/local/tc_progs/print_tc_var.irp.f diff --git a/plugins/local/tc_bi_ortho/print_tc_wf.irp.f b/plugins/local/tc_progs/print_tc_wf.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/print_tc_wf.irp.f rename to plugins/local/tc_progs/print_tc_wf.irp.f diff --git a/plugins/local/tc_bi_ortho/save_bitcpsileft_for_qmcchem.irp.f b/plugins/local/tc_progs/save_bitcpsileft_for_qmcchem.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/save_bitcpsileft_for_qmcchem.irp.f rename to plugins/local/tc_progs/save_bitcpsileft_for_qmcchem.irp.f diff --git a/plugins/local/tc_bi_ortho/save_tc_bi_ortho_nat.irp.f b/plugins/local/tc_progs/save_tc_bi_ortho_nat.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/save_tc_bi_ortho_nat.irp.f rename to plugins/local/tc_progs/save_tc_bi_ortho_nat.irp.f diff --git a/plugins/local/tc_bi_ortho/select_dets_bi_ortho.irp.f b/plugins/local/tc_progs/select_dets_bi_ortho.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/select_dets_bi_ortho.irp.f rename to plugins/local/tc_progs/select_dets_bi_ortho.irp.f diff --git a/plugins/local/tc_bi_ortho/tc_bi_ortho_prop.irp.f b/plugins/local/tc_progs/tc_bi_ortho_prop.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/tc_bi_ortho_prop.irp.f rename to plugins/local/tc_progs/tc_bi_ortho_prop.irp.f diff --git a/plugins/local/tc_bi_ortho/tc_som.irp.f b/plugins/local/tc_progs/tc_som.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/tc_som.irp.f rename to plugins/local/tc_progs/tc_som.irp.f diff --git a/plugins/local/tc_bi_ortho/test_tc_two_rdm.irp.f b/plugins/local/tc_progs/test_tc_two_rdm.irp.f similarity index 100% rename from plugins/local/tc_bi_ortho/test_tc_two_rdm.irp.f rename to plugins/local/tc_progs/test_tc_two_rdm.irp.f From b7787f5e6dce198bee06eb92f69b9904a7448bea Mon Sep 17 00:00:00 2001 From: eginer Date: Tue, 7 May 2024 19:43:05 +0200 Subject: [PATCH 033/159] trying to speed up the PT2 in TC by transposing the array of tc integrals --- .../local/bi_ort_ints/total_twoe_pot.irp.f | 8 +- .../cipsi_tc_bi_ortho/get_d0_transp.irp.f | 140 +++++++++++ .../local/cipsi_tc_bi_ortho/get_d2_good.irp.f | 3 - .../cipsi_tc_bi_ortho/get_d2_transp.irp.f | 235 ++++++++++++++++++ plugins/local/cipsi_tc_bi_ortho/pt2.irp.f | 1 + .../local/cipsi_tc_bi_ortho/selection.irp.f | 94 +------ .../cipsi_tc_bi_ortho/stochastic_cipsi.irp.f | 3 + plugins/local/fci_tc_bi/pt2_tc.irp.f | 2 + .../local/tc_bi_ortho/e_corr_bi_ortho.irp.f | 1 - plugins/local/tc_keywords/EZFIO.cfg | 11 +- 10 files changed, 404 insertions(+), 94 deletions(-) create mode 100644 plugins/local/cipsi_tc_bi_ortho/get_d0_transp.irp.f create mode 100644 plugins/local/cipsi_tc_bi_ortho/get_d2_transp.irp.f diff --git a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f index 1e127fac..71269fdc 100644 --- a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f +++ b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f @@ -259,15 +259,21 @@ BEGIN_PROVIDER [ double precision, mo_bi_ortho_tc_two_e_transp, (mo_num, mo_num, END_DOC integer :: i,j,k,l + print*,'Providing mo_bi_ortho_tc_two_e_transp' + double precision :: t0,t1 + call wall_time(t0) do i = 1, mo_num do j = 1, mo_num do k = 1, mo_num do l = 1, mo_num - mo_bi_ortho_tc_two_e_transp(i,j,k,l) = mo_bi_ortho_tc_two_e_transp(k,l,i,j) + mo_bi_ortho_tc_two_e_transp(i,j,k,l) = mo_bi_ortho_tc_two_e(k,l,i,j) enddo enddo enddo enddo + call wall_time(t1) + + print *, ' WALL TIME for PROVIDING mo_bi_ortho_tc_two_e_transp (min)', (t1-t0)/60.d0 END_PROVIDER ! --- diff --git a/plugins/local/cipsi_tc_bi_ortho/get_d0_transp.irp.f b/plugins/local/cipsi_tc_bi_ortho/get_d0_transp.irp.f new file mode 100644 index 00000000..56238e13 --- /dev/null +++ b/plugins/local/cipsi_tc_bi_ortho/get_d0_transp.irp.f @@ -0,0 +1,140 @@ +subroutine get_d0_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, coefs) + !todo: indices/conjg should be okay for complex + use bitmasks + implicit none + + integer(bit_kind), intent(in) :: gen(N_int, 2), mask(N_int, 2) + integer(bit_kind), intent(in) :: phasemask(N_int,2) + logical, intent(in) :: bannedOrb(mo_num, 2), banned(mo_num, mo_num,2) + integer(bit_kind) :: det(N_int, 2) + double precision, intent(in) :: coefs(N_states,2) + double precision, intent(inout) :: mat_l(N_states, mo_num, mo_num) + double precision, intent(inout) :: mat_r(N_states, mo_num, mo_num) + integer, intent(in) :: h(0:2,2), p(0:4,2), sp + + integer :: i, j, k, s, h1, h2, p1, p2, puti, putj, mm + double precision :: phase + double precision :: hij,hji + double precision, external :: get_phase_bi + logical :: ok + + integer, parameter :: bant=1 + double precision, allocatable :: hij_cache1(:), hij_cache2(:) + allocate (hij_cache1(mo_num),hij_cache2(mo_num)) + double precision, allocatable :: hji_cache1(:), hji_cache2(:) + allocate (hji_cache1(mo_num),hji_cache2(mo_num)) +! print*,'in get_d0_new' +! call debug_det(gen,N_int) +! print*,'coefs',coefs(1,:) + + if(sp == 3) then ! AB + h1 = p(1,1) + h2 = p(1,2) + do p1=1, mo_num + if(bannedOrb(p1, 1)) cycle +! call get_mo_two_e_integrals_complex(p1,h2,h1,mo_num,hij_cache1,mo_integrals_map) + do mm = 1, mo_num + hij_cache1(mm) = mo_bi_ortho_tc_two_e(mm,p1,h2,h1) + hji_cache1(mm) = mo_bi_ortho_tc_two_e_transp(mm,p1,h2,h1) + enddo + !!!!!!!!!! + do p2=1, mo_num + if(bannedOrb(p2,2)) cycle + if(banned(p1, p2, bant)) cycle ! rentable? + if(p1 == h1 .or. p2 == h2) then + call apply_particles(mask, 1,p1,2,p2, det, ok, N_int) + ! call i_h_j_complex(gen, det, N_int, hij) ! need to take conjugate of this +! call i_h_j_complex(det, gen, N_int, hij) + call htilde_mu_mat_opt_bi_ortho_no_3e(det,gen,N_int, hij) + else + phase = get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int) + hij = hij_cache1(p2) * phase + end if + if (hij == (0.d0,0.d0)) cycle + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k, p1, p2) = mat_r(k, p1, p2) + coefs(k,2) * hij ! HOTSPOT + enddo + end do + !!!!!!!!!! + do p2=1, mo_num + if(bannedOrb(p2,2)) cycle + if(banned(p1, p2, bant)) cycle ! rentable? + if(p1 == h1 .or. p2 == h2) then + call apply_particles(mask, 1,p1,2,p2, det, ok, N_int) + ! call i_h_j_complex(gen, det, N_int, hij) ! need to take conjugate of this +! call i_h_j_complex(det, gen, N_int, hij) + call htilde_mu_mat_opt_bi_ortho_no_3e(gen,det,N_int, hji) + else + phase = get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int) + hji = hji_cache1(p2) * phase + end if + if (hji == (0.d0,0.d0)) cycle + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_l(k, p1, p2) = mat_l(k, p1, p2) + coefs(k,1) * hji ! HOTSPOT + enddo + end do + end do + + else ! AA BB + p1 = p(1,sp) + p2 = p(2,sp) + do puti=1, mo_num + if(bannedOrb(puti, sp)) cycle +! call get_mo_two_e_integrals_complex(puti,p2,p1,mo_num,hij_cache1,mo_integrals_map,mo_integrals_map_2) +! call get_mo_two_e_integrals_complex(puti,p1,p2,mo_num,hij_cache2,mo_integrals_map,mo_integrals_map_2) + do mm = 1, mo_num + hij_cache1(mm) = mo_bi_ortho_tc_two_e(mm,puti,p2,p1) + hij_cache2(mm) = mo_bi_ortho_tc_two_e(mm,puti,p1,p2) + hji_cache1(mm) = mo_bi_ortho_tc_two_e_transp(mm,puti,p2,p1) + hji_cache2(mm) = mo_bi_ortho_tc_two_e_transp(mm,puti,p1,p2) + enddo + !!!!!!!!!! + do putj=puti+1, mo_num + if(bannedOrb(putj, sp)) cycle + if(banned(puti, putj, bant)) cycle ! rentable? + if(puti == p1 .or. putj == p2 .or. puti == p2 .or. putj == p1) then + call apply_particles(mask, sp,puti,sp,putj, det, ok, N_int) + !call i_h_j_complex(gen, det, N_int, hij) ! need to take conjugate of this +! call i_h_j_complex(det, gen, N_int, hij) + call htilde_mu_mat_opt_bi_ortho_no_3e(det,gen,N_int, hij) + if (hij == 0.d0) cycle + else +! hij = (mo_two_e_integral_complex(p1, p2, puti, putj) - mo_two_e_integral_complex(p2, p1, puti, putj)) +! hij = (mo_bi_ortho_tc_two_e(p1, p2, puti, putj) - mo_bi_ortho_tc_two_e(p2, p1, puti, putj)) + hij = (mo_bi_ortho_tc_two_e(puti, putj, p1, p2) - mo_bi_ortho_tc_two_e(puti, putj, p2, p1)) + if (hij == 0.d0) cycle + hij = (hij) * get_phase_bi(phasemask, sp, sp, puti, p1 , putj, p2, N_int) + end if + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k, puti, putj) = mat_r(k, puti, putj) + coefs(k,2) * hij + enddo + end do + + !!!!!!!!!! + do putj=puti+1, mo_num + if(bannedOrb(putj, sp)) cycle + if(banned(puti, putj, bant)) cycle ! rentable? + if(puti == p1 .or. putj == p2 .or. puti == p2 .or. putj == p1) then + call apply_particles(mask, sp,puti,sp,putj, det, ok, N_int) + call htilde_mu_mat_opt_bi_ortho_no_3e(gen,det,N_int, hji) + if (hji == 0.d0) cycle + else +! hji = (mo_bi_ortho_tc_two_e( p1, p2, puti, putj) - mo_bi_ortho_tc_two_e( p2, p1, puti, putj)) + hji = (mo_bi_ortho_tc_two_e_transp(puti, putj, p1, p2 ) - mo_bi_ortho_tc_two_e_transp( puti, putj, p2, p1)) + if (hji == 0.d0) cycle + hji = (hji) * get_phase_bi(phasemask, sp, sp, puti, p1 , putj, p2, N_int) + end if + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_l(k, puti, putj) = mat_l(k, puti, putj) + coefs(k,1) * hji + enddo + end do + end do + end if + + deallocate(hij_cache1,hij_cache2) +end + diff --git a/plugins/local/cipsi_tc_bi_ortho/get_d2_good.irp.f b/plugins/local/cipsi_tc_bi_ortho/get_d2_good.irp.f index d01ed433..86922ae9 100644 --- a/plugins/local/cipsi_tc_bi_ortho/get_d2_good.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/get_d2_good.irp.f @@ -25,9 +25,6 @@ subroutine get_d2_new(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, integer :: bant bant = 1 -! print*, 'in get_d2_new' -! call debug_det(gen,N_int) -! print*,'coefs',coefs(1,:) tip = p(0,1) * p(0,2) ! number of alpha particles times number of beta particles diff --git a/plugins/local/cipsi_tc_bi_ortho/get_d2_transp.irp.f b/plugins/local/cipsi_tc_bi_ortho/get_d2_transp.irp.f new file mode 100644 index 00000000..b2a7ea31 --- /dev/null +++ b/plugins/local/cipsi_tc_bi_ortho/get_d2_transp.irp.f @@ -0,0 +1,235 @@ + +subroutine get_d2_new_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, coefs) + !todo: indices/conjg should be correct for complex + use bitmasks + implicit none + + integer(bit_kind), intent(in) :: mask(N_int, 2), gen(N_int, 2) + integer(bit_kind), intent(in) :: phasemask(N_int,2) + logical, intent(in) :: bannedOrb(mo_num, 2), banned(mo_num, mo_num,2) + double precision, intent(in) :: coefs(N_states,2) + double precision, intent(inout) :: mat_r(N_states, mo_num, mo_num) + double precision, intent(inout) :: mat_l(N_states, mo_num, mo_num) + integer, intent(in) :: h(0:2,2), p(0:4,2), sp + + double precision, external :: get_phase_bi + + integer :: i, j, k, tip, ma, mi, puti, putj + integer :: h1, h2, p1, p2, i1, i2 + double precision :: phase + double precision :: hij,hji + + integer, parameter:: turn2d(2,3,4) = reshape((/0,0, 0,0, 0,0, 3,4, 0,0, 0,0, 2,4, 1,4, 0,0, 2,3, 1,3, 1,2 /), (/2,3,4/)) + integer, parameter :: turn2(2) = (/2, 1/) + integer, parameter :: turn3(2,3) = reshape((/2,3, 1,3, 1,2/), (/2,3/)) + + integer :: bant + bant = 1 + + tip = p(0,1) * p(0,2) ! number of alpha particles times number of beta particles + + ma = sp !1:(alpha,alpha); 2:(b,b); 3:(a,b) + if(p(0,1) > p(0,2)) ma = 1 ! more alpha particles than beta particles + if(p(0,1) < p(0,2)) ma = 2 ! fewer alpha particles than beta particles + mi = mod(ma, 2) + 1 + + if(sp == 3) then ! if one alpha and one beta xhole + !(where xholes refer to the ionizations from the generator, not the holes occupied in the ionized generator) + if(ma == 2) bant = 2 ! if more beta particles than alpha particles + + if(tip == 3) then ! if 3 of one particle spin and 1 of the other particle spin + puti = p(1, mi) + if(bannedOrb(puti, mi)) return + h1 = h(1, ma) + h2 = h(2, ma) + + !! + do i = 1, 3 ! loop over all 3 combinations of 2 particles with spin ma + putj = p(i, ma) + if(banned(putj,puti,bant)) cycle + i1 = turn3(1,i) + i2 = turn3(2,i) + p1 = p(i1, ma) + p2 = p(i2, ma) + + ! |G> = |psi_{gen,i}> + ! |G'> = a_{x1} a_{x2} |G> + ! |alpha> = a_{puti}^{\dagger} a_{putj}^{\dagger} |G'> + ! |alpha> = t_{x1,x2}^{puti,putj} |G> + ! hij = + ! |alpha> = t_{p1,p2}^{h1,h2}|psi_{selectors,i}> + !todo: = ( - ) * phase + ! += dconjg(c_i) * + ! = ( - ) * phase + ! += * c_i + +!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!! + ! take the transpose of what's written above because later use the complex conjugate + +! hij = mo_bi_ortho_tc_two_e(h1, h2, p1, p2) - mo_bi_ortho_tc_two_e( h1, h2, p2, p1) +! hji = mo_bi_ortho_tc_two_e_transp(h1, h2, p1, p2) - mo_bi_ortho_tc_two_e_transp( h1, h2, p2, p1) + hij = mo_bi_ortho_tc_two_e_transp(p1, p2,h1, h2) - mo_bi_ortho_tc_two_e_transp( p1, p2, h2, h1) + hji = mo_bi_ortho_tc_two_e(p1, p2, h1, h2) - mo_bi_ortho_tc_two_e( p1, p2, h2, h1) + if (hij == 0.d0.or.hji==0.d0) cycle + + ! take conjugate to get contribution to instead of +! hij = dconjg(hij) * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2, N_int) + phase = get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2, N_int) + hij = hij * phase + hji = hji * phase + + if(ma == 1) then ! if particle spins are (alpha,alpha,alpha,beta), then puti is beta and putj is alpha + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k, putj, puti) = mat_r(k, putj, puti) + coefs(k,2) * hij + mat_l(k, putj, puti) = mat_l(k, putj, puti) + coefs(k,1) * hji + enddo + else ! if particle spins are (beta,beta,beta,alpha), then puti is alpha and putj is beta + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k, puti, putj) = mat_r(k, puti, putj) + coefs(k,2) * hij + mat_l(k, puti, putj) = mat_l(k, puti, putj) + coefs(k,1) * hji + enddo + end if + end do + else ! if 2 alpha and 2 beta particles + h1 = h(1,1) + h2 = h(1,2) + !! + do j = 1,2 ! loop over all 4 combinations of one alpha and one beta particle + putj = p(j, 2) + if(bannedOrb(putj, 2)) cycle + p2 = p(turn2(j), 2) + do i = 1,2 + puti = p(i, 1) + if(banned(puti,putj,bant) .or. bannedOrb(puti,1)) cycle + p1 = p(turn2(i), 1) + ! hij = +! hij = mo_bi_ortho_tc_two_e(p1, p2, h1, h2) +!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!! + ! take the transpose of what's written above because later use the complex conjugate +! hij = mo_bi_ortho_tc_two_e(h1, h2, p1, p2 ) +! hji = mo_bi_ortho_tc_two_e_transp(h1, h2, p1, p2 ) + hij = mo_bi_ortho_tc_two_e_transp(p1, p2 ,h1, h2 ) + hji = mo_bi_ortho_tc_two_e( p1, p2, h1, h2) + if (hij /= 0.d0.or.hji==0.d0) then + ! take conjugate to get contribution to instead of +! hij = dconjg(hij) * get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int) + phase = get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int) + hij = hij * phase + hji = hji * phase + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k, puti, putj) = mat_r(k, puti, putj) + coefs(k,2) * hij + mat_l(k, puti, putj) = mat_l(k, puti, putj) + coefs(k,1) * hji + enddo + endif + end do + end do + end if + + else ! if holes are (a,a) or (b,b) + if(tip == 0) then ! if particles are (a,a,a,a) or (b,b,b,b) + h1 = h(1, ma) + h2 = h(2, ma) + !! + do i=1,3 + puti = p(i, ma) + if(bannedOrb(puti,ma)) cycle + do j=i+1,4 + putj = p(j, ma) + if(bannedOrb(putj,ma)) cycle + if(banned(puti,putj,1)) cycle + + i1 = turn2d(1, i, j) + i2 = turn2d(2, i, j) + p1 = p(i1, ma) + p2 = p(i2, ma) +! hij = mo_bi_ortho_tc_two_e(p1, p2, h1, h2) - mo_bi_ortho_tc_two_e(p2,p1, h1, h2) +!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!! + ! take the transpose of what's written above because later use the complex conjugate + hij = mo_bi_ortho_tc_two_e_transp(p1, p2, h1, h2) - mo_bi_ortho_tc_two_e_transp(p1, p2, h2,h1 ) + hji = mo_bi_ortho_tc_two_e(p1, p2, h1, h2) - mo_bi_ortho_tc_two_e(p1, p2, h2,h1 ) + if (hij == 0.d0.or.hji == 0.d0) cycle + + ! take conjugate to get contribution to instead of +! hij = dconjg(hij) * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2, N_int) + phase = get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2, N_int) + hij = hij * phase + hji = hji * phase + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k, puti, putj) = mat_r(k, puti, putj) +coefs(k,2) * hij + mat_l(k, puti, putj) = mat_l(k, puti, putj) +coefs(k,1) * hji + enddo + end do + end do + else if(tip == 3) then ! if particles are (a,a,a,b) (ma=1,mi=2) or (a,b,b,b) (ma=2,mi=1) + h1 = h(1, mi) + h2 = h(1, ma) + p1 = p(1, mi) + !! + do i=1,3 + puti = p(turn3(1,i), ma) + if(bannedOrb(puti,ma)) cycle + putj = p(turn3(2,i), ma) + if(bannedOrb(putj,ma)) cycle + if(banned(puti,putj,1)) cycle + p2 = p(i, ma) + +! hij = mo_bi_ortho_tc_two_e(p1, p2, h1, h2) +!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!! + ! take the transpose of what's written above because later use the complex conjugate + hij = mo_bi_ortho_tc_two_e_transp(p1, p2 ,h1, h2) + hji = mo_bi_ortho_tc_two_e(p1, p2,h1, h2 ) + if (hij == 0.d0) cycle + + ! take conjugate to get contribution to instead of +! hij = dconjg(hij) * get_phase_bi(phasemask, mi, ma, h1, p1, h2, p2, N_int) + phase = get_phase_bi(phasemask, mi, ma, h1, p1, h2, p2, N_int) + hij = hij * phase + hji = hji * phase + if (puti < putj) then + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k, puti, putj) = mat_r(k, puti, putj) + coefs(k,2) * hij + mat_l(k, puti, putj) = mat_l(k, puti, putj) + coefs(k,1) * hji + enddo + else + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k, putj, puti) = mat_r(k, putj, puti) + coefs(k,2) * hij + mat_l(k, putj, puti) = mat_l(k, putj, puti) + coefs(k,1) * hji + enddo + endif + end do + else ! tip == 4 (a,a,b,b) + puti = p(1, sp) + putj = p(2, sp) + if(.not. banned(puti,putj,1)) then + p1 = p(1, mi) + p2 = p(2, mi) + h1 = h(1, mi) + h2 = h(2, mi) + !! +! hij = (mo_bi_ortho_tc_two_e(p1, p2, h1, h2) - mo_bi_ortho_tc_two_e(p2,p1, h1, h2)) +!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!! + ! take the transpose of what's written above because later use the complex conjugate + hij = (mo_bi_ortho_tc_two_e_transp(p1, p2,h1, h2) - mo_bi_ortho_tc_two_e_transp(p2,p1,h1, h2)) + hji = (mo_bi_ortho_tc_two_e(p1, p2,h1, h2) - mo_bi_ortho_tc_two_e(p2,p1,h1, h2)) + if (hij /= 0.d0.or.hji==0.d0) then + ! take conjugate to get contribution to instead of +! hij = dconjg(hij) * get_phase_bi(phasemask, mi, mi, h1, p1, h2, p2, N_int) + phase = get_phase_bi(phasemask, mi, mi, h1, p1, h2, p2, N_int) + hij = hij * phase + hji = hji* phase + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k, puti, putj) = mat_r(k, puti, putj) + coefs(k,2) * hij + mat_l(k, puti, putj) = mat_l(k, puti, putj) + coefs(k,1) * hji + enddo + end if + end if + end if + end if +end diff --git a/plugins/local/cipsi_tc_bi_ortho/pt2.irp.f b/plugins/local/cipsi_tc_bi_ortho/pt2.irp.f index 833cc0ea..ada19c6b 100644 --- a/plugins/local/cipsi_tc_bi_ortho/pt2.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/pt2.irp.f @@ -67,6 +67,7 @@ subroutine tc_pt2 call pt2_alloc(pt2_data_err, N_states) call ZMQ_pt2(E_tc, pt2_data, pt2_data_err, relative_error,0) ! Stochastic PT2 and selection call diagonalize_CI_tc_bi_ortho(ndet, E_tc,norm,pt2_data,print_pt2) + call print_summary_tc(psi_energy_with_nucl_rep, pt2_data, pt2_data_err, N_det, N_configuration, N_states, psi_s2) end diff --git a/plugins/local/cipsi_tc_bi_ortho/selection.irp.f b/plugins/local/cipsi_tc_bi_ortho/selection.irp.f index 0b4345d5..0f785ba2 100644 --- a/plugins/local/cipsi_tc_bi_ortho/selection.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/selection.irp.f @@ -636,10 +636,7 @@ subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, intere negMask(i,2) = not(mask(i,2)) end do -! print*,'in selection ' do i = 1, N_sel -! call debug_det(det(1,1,i),N_int) -! print*,i,dabs(psi_selectors_coef_transp_tc(1,2,i) * psi_selectors_coef_transp_tc(1,1,i)) if(interesting(i) < 0) then stop 'prefetch interesting(i) and det(i)' endif @@ -691,11 +688,19 @@ subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, intere call get_mask_phase(psi_det_sorted_tc(1,1,interesting(i)), phasemask,N_int) if(nt == 4) then - call get_d2_new(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + if(transpose_two_e_int)then + call get_d2_new_transp(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + else + call get_d2_new(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + endif elseif(nt == 3) then call get_d1_new(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) else + if(transpose_two_e_int)then + call get_d0_transp (det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + else call get_d0_new (det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + endif endif elseif(nt == 4) then call bitstring_to_list_in_selection(mobMask(1,1), p(1,1), p(0,1), N_int) @@ -887,79 +892,11 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d call diag_htilde_mu_mat_fock_bi_ortho(N_int, det, hmono, htwoe, hthree, hii) do istate = 1,N_states delta_E = E0(istate) - Hii + E_shift - double precision :: alpha_h_psi_tmp, psi_h_alpha_tmp, error - if(debug_tc_pt2 == 1)then !! Using the old version - psi_h_alpha = 0.d0 - alpha_h_psi = 0.d0 - do iii = 1, N_det_selectors - call htilde_mu_mat_opt_bi_ortho_tot(psi_selectors(1,1,iii), det, N_int, i_h_alpha) - call htilde_mu_mat_opt_bi_ortho_tot(det, psi_selectors(1,1,iii), N_int, alpha_h_i) - call get_excitation_degree(psi_selectors(1,1,iii), det,degree,N_int) - if(degree == 0)then - print*,'problem !!!' - print*,'a determinant is already in the wave function !!' - print*,'it corresponds to the selector number ',iii - call debug_det(det,N_int) - stop - endif -! call htilde_mu_mat_opt_bi_ortho_no_3e(psi_selectors(1,1,iii), det, N_int, i_h_alpha) -! call htilde_mu_mat_opt_bi_ortho_no_3e(det, psi_selectors(1,1,iii), N_int, alpha_h_i) - psi_h_alpha += i_h_alpha * psi_selectors_coef_tc(iii,2,1) ! left function - alpha_h_psi += alpha_h_i * psi_selectors_coef_tc(iii,1,1) ! right function - enddo - else if(debug_tc_pt2 == 2)then !! debugging the new version -! psi_h_alpha_tmp = 0.d0 -! alpha_h_psi_tmp = 0.d0 -! do iii = 1, N_det_selectors ! old version -! call htilde_mu_mat_opt_bi_ortho_no_3e(psi_selectors(1,1,iii), det, N_int, i_h_alpha) -! call htilde_mu_mat_opt_bi_ortho_no_3e(det, psi_selectors(1,1,iii), N_int, alpha_h_i) -! psi_h_alpha_tmp += i_h_alpha * psi_selectors_coef_tc(iii,1,1) ! left function -! alpha_h_psi_tmp += alpha_h_i * psi_selectors_coef_tc(iii,2,1) ! right function -! enddo - psi_h_alpha_tmp = mat_l(istate, p1, p2) ! new version - alpha_h_psi_tmp = mat_r(istate, p1, p2) ! new version - psi_h_alpha = 0.d0 - alpha_h_psi = 0.d0 - do iii = 1, N_det ! old version - call htilde_mu_mat_opt_bi_ortho_no_3e(psi_det(1,1,iii), det, N_int, i_h_alpha) - call htilde_mu_mat_opt_bi_ortho_no_3e(det, psi_det(1,1,iii), N_int, alpha_h_i) - psi_h_alpha += i_h_alpha * psi_l_coef_bi_ortho(iii,1) ! left function - alpha_h_psi += alpha_h_i * psi_r_coef_bi_ortho(iii,1) ! right function - enddo - if(dabs(psi_h_alpha*alpha_h_psi/delta_E).gt.1.d-10)then - error = dabs(psi_h_alpha * alpha_h_psi - psi_h_alpha_tmp * alpha_h_psi_tmp)/dabs(psi_h_alpha * alpha_h_psi) - if(error.gt.1.d-2)then - call debug_det(det, N_int) - print*,'error =',error,psi_h_alpha * alpha_h_psi/delta_E,psi_h_alpha_tmp * alpha_h_psi_tmp/delta_E - print*,psi_h_alpha , alpha_h_psi - print*,psi_h_alpha_tmp , alpha_h_psi_tmp - print*,'selectors ' - do iii = 1, N_det_selectors ! old version - print*,'iii',iii,psi_selectors_coef_tc(iii,1,1),psi_selectors_coef_tc(iii,2,1) - call htilde_mu_mat_opt_bi_ortho_no_3e(psi_selectors(1,1,iii), det, N_int, i_h_alpha) - call htilde_mu_mat_opt_bi_ortho_no_3e(det, psi_selectors(1,1,iii), N_int, alpha_h_i) - print*,i_h_alpha,alpha_h_i - call debug_det(psi_selectors(1,1,iii),N_int) - enddo -! print*,'psi_det ' -! do iii = 1, N_det! old version -! print*,'iii',iii,psi_l_coef_bi_ortho(iii,1),psi_r_coef_bi_ortho(iii,1) -! call debug_det(psi_det(1,1,iii),N_int) -! enddo - stop - endif - endif - else - psi_h_alpha = mat_l(istate, p1, p2) - alpha_h_psi = mat_r(istate, p1, p2) - endif + psi_h_alpha = mat_l(istate, p1, p2) + alpha_h_psi = mat_r(istate, p1, p2) val = 4.d0 * psi_h_alpha * alpha_h_psi tmp = dsqrt(delta_E * delta_E + val) -! if (delta_E < 0.d0) then -! tmp = -tmp -! endif e_pert(istate) = 0.25 * val / delta_E -! e_pert(istate) = 0.5d0 * (tmp - delta_E) if(dsqrt(tmp).gt.1.d-4.and.dabs(psi_h_alpha).gt.1.d-4)then coef(istate) = e_pert(istate) / psi_h_alpha else @@ -976,15 +913,6 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d if(e_pert(istate).gt.0.d0)e_pert(istate)=0.d0 endif -! if(selection_tc == 1 )then -! if(e_pert(istate).lt.0.d0)then -! e_pert(istate) = 0.d0 -! endif -! else if(selection_tc == -1)then -! if(e_pert(istate).gt.0.d0)then -! e_pert(istate) = 0.d0 -! endif -! endif enddo diff --git a/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f b/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f index 99a8de7e..bb5a89a1 100644 --- a/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f @@ -88,6 +88,9 @@ subroutine run_stochastic_cipsi call pt2_dealloc(pt2_data_err) call pt2_alloc(pt2_data, N_states) call pt2_alloc(pt2_data_err, N_states) + if(transpose_two_e_int)then + provide mo_bi_ortho_tc_two_e_transp + endif call ZMQ_pt2(E_tc, pt2_data, pt2_data_err, relative_error,to_select) ! Stochastic PT2 and selection ! stop diff --git a/plugins/local/fci_tc_bi/pt2_tc.irp.f b/plugins/local/fci_tc_bi/pt2_tc.irp.f index 390042bf..3c07e367 100644 --- a/plugins/local/fci_tc_bi/pt2_tc.irp.f +++ b/plugins/local/fci_tc_bi/pt2_tc.irp.f @@ -13,6 +13,8 @@ program tc_pt2_prog pruning = -1.d0 touch pruning + read_wf = .True. + touch read_wf ! pt2_relative_error = 0.01d0 ! touch pt2_relative_error diff --git a/plugins/local/tc_bi_ortho/e_corr_bi_ortho.irp.f b/plugins/local/tc_bi_ortho/e_corr_bi_ortho.irp.f index 4abdc25b..5a3971c5 100644 --- a/plugins/local/tc_bi_ortho/e_corr_bi_ortho.irp.f +++ b/plugins/local/tc_bi_ortho/e_corr_bi_ortho.irp.f @@ -27,7 +27,6 @@ if(degree == 1)then e_pt2_tc_bi_orth_single += coef_pt1 * htilde_ij else -! print*,'coef_pt1, e_pt2',coef_pt1,coef_pt1 * htilde_ij e_pt2_tc_bi_orth_double += coef_pt1 * htilde_ij endif endif diff --git a/plugins/local/tc_keywords/EZFIO.cfg b/plugins/local/tc_keywords/EZFIO.cfg index 1e89eaa4..39968ec8 100644 --- a/plugins/local/tc_keywords/EZFIO.cfg +++ b/plugins/local/tc_keywords/EZFIO.cfg @@ -184,12 +184,6 @@ doc: Read/Write normal_two_body_bi_orth from/to disk [ Write | Read | None ] interface: ezfio,provider,ocaml default: None -[debug_tc_pt2] -type: integer -doc: If :: 1 then you compute the TC-PT2 the old way, :: 2 then you check with the new version but without three-body -interface: ezfio,provider,ocaml -default: -1 - [only_spin_tc_right] type: logical doc: If |true|, only the right part of WF is used to compute spin dens @@ -268,3 +262,8 @@ doc: Thresholds on the Imag part of TC energy interface: ezfio,provider,ocaml default: 1.e-7 +[transpose_two_e_int] +type: logical +doc: If |true|, you duplicate the two-electron TC integrals with the transpose matrix. Acceleates the PT2. +interface: ezfio,provider,ocaml +default: False From 18fd70f1b88ee4a412a351a92a98f4b1ef1ee3d0 Mon Sep 17 00:00:00 2001 From: eginer Date: Tue, 7 May 2024 20:18:24 +0200 Subject: [PATCH 034/159] added get_d1_transp.irp.f --- .../cipsi_tc_bi_ortho/get_d1_transp.irp.f | 350 ++++++++++++++++++ .../local/cipsi_tc_bi_ortho/selection.irp.f | 6 +- 2 files changed, 355 insertions(+), 1 deletion(-) create mode 100644 plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f diff --git a/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f b/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f new file mode 100644 index 00000000..3c6cbf60 --- /dev/null +++ b/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f @@ -0,0 +1,350 @@ +subroutine get_d1_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, coefs) + !todo: indices should be okay for complex? + use bitmasks + implicit none + + integer(bit_kind), intent(in) :: mask(N_int, 2), gen(N_int, 2) + integer(bit_kind), intent(in) :: phasemask(N_int,2) + logical, intent(in) :: bannedOrb(mo_num, 2), banned(mo_num, mo_num,2) + integer(bit_kind) :: det(N_int, 2) + double precision, intent(in) :: coefs(N_states,2) + double precision, intent(inout) :: mat_l(N_states, mo_num, mo_num) + double precision, intent(inout) :: mat_r(N_states, mo_num, mo_num) + integer, intent(in) :: h(0:2,2), p(0:4,2), sp + double precision, external :: get_phase_bi + double precision, external :: mo_two_e_integral_complex + logical :: ok + + logical, allocatable :: lbanned(:,:) + integer :: puti, putj, ma, mi, s1, s2, i, i1, i2, j + integer :: hfix, pfix, h1, h2, p1, p2, ib, k, l, mm + + integer, parameter :: turn2(2) = (/2,1/) + integer, parameter :: turn3(2,3) = reshape((/2,3, 1,3, 1,2/), (/2,3/)) + + integer :: bant + double precision, allocatable :: hij_cache(:,:) + double precision :: hij, tmp_rowij(N_states, mo_num), tmp_rowij2(N_states, mo_num),phase + double precision, allocatable :: hji_cache(:,:) + double precision :: hji, tmp_rowji(N_states, mo_num), tmp_rowji2(N_states, mo_num) +! PROVIDE mo_integrals_map N_int +! print*,'in get_d1_new' +! call debug_det(gen,N_int) +! print*,'coefs',coefs(1,:) + + allocate (lbanned(mo_num, 2)) + allocate (hij_cache(mo_num,2)) + allocate (hji_cache(mo_num,2)) + lbanned = bannedOrb + + do i=1, p(0,1) + lbanned(p(i,1), 1) = .true. + end do + do i=1, p(0,2) + lbanned(p(i,2), 2) = .true. + end do + + ma = 1 + if(p(0,2) >= 2) ma = 2 + mi = turn2(ma) + + bant = 1 + + if(sp == 3) then + !move MA + if(ma == 2) bant = 2 + puti = p(1,mi) + hfix = h(1,ma) + p1 = p(1,ma) + p2 = p(2,ma) + if(.not. bannedOrb(puti, mi)) then +! call get_mo_two_e_integrals_complex(hfix,p1,p2,mo_num,hij_cache(1,1),mo_integrals_map,mo_integrals_map_2) +! call get_mo_two_e_integrals_complex(hfix,p2,p1,mo_num,hij_cache(1,2),mo_integrals_map,mo_integrals_map_2) + do mm = 1, mo_num + hij_cache(mm,1) = mo_bi_ortho_tc_two_e(mm,hfix,p1,p2) + hij_cache(mm,2) = mo_bi_ortho_tc_two_e(mm,hfix,p2,p1) + hji_cache(mm,1) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p1,p2) + hji_cache(mm,2) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p2,p1) + enddo + !! + tmp_rowij = 0.d0 + tmp_rowji = 0.d0 + do putj=1, hfix-1 + if(lbanned(putj, ma)) cycle + if(banned(putj, puti,bant)) cycle + hij = hij_cache(putj,1) - hij_cache(putj,2) + hji = hji_cache(putj,1) - hji_cache(putj,2) + if (hij /= 0.d0.and.hji/=0.d0) then + phase = get_phase_bi(phasemask, ma, ma, putj, p1, hfix, p2, N_int) + hij = hij * phase + hji = hji * phase + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + tmp_rowij(k,putj) = tmp_rowij(k,putj) + hij * coefs(k,2) + tmp_rowji(k,putj) = tmp_rowji(k,putj) + hji * coefs(k,1) + enddo + endif + end do + do putj=hfix+1, mo_num + if(lbanned(putj, ma)) cycle + if(banned(putj, puti,bant)) cycle + hij = hij_cache(putj,2) - hij_cache(putj,1) + hji = hji_cache(putj,2) - hji_cache(putj,1) + if (hij /= 0.d0.and.hji/=0.d0) then + phase = get_phase_bi(phasemask, ma, ma, hfix, p1, putj, p2, N_int) + hij = hij * phase + hji = hji * phase + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + tmp_rowij(k,putj) = tmp_rowij(k,putj) + hij * coefs(k,2) + tmp_rowji(k,putj) = tmp_rowji(k,putj) + hji * coefs(k,1) + enddo + endif + end do + + if(ma == 1) then + mat_r(1:N_states,1:mo_num,puti) = mat_r(1:N_states,1:mo_num,puti) + tmp_rowij(1:N_states,1:mo_num) + mat_l(1:N_states,1:mo_num,puti) = mat_l(1:N_states,1:mo_num,puti) + tmp_rowji(1:N_states,1:mo_num) + else + do l=1,mo_num + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k,puti,l) = mat_r(k,puti,l) + tmp_rowij(k,l) + mat_l(k,puti,l) = mat_l(k,puti,l) + tmp_rowji(k,l) + enddo + enddo + end if + + end if + + !MOVE MI + pfix = p(1,mi) + tmp_rowij = 0.d0 + tmp_rowij2 = 0.d0 + tmp_rowji = 0.d0 + tmp_rowji2 = 0.d0 +! call get_mo_two_e_integrals_complex(hfix,pfix,p1,mo_num,hij_cache(1,1),mo_integrals_map,mo_integrals_map_2) +! call get_mo_two_e_integrals_complex(hfix,pfix,p2,mo_num,hij_cache(1,2),mo_integrals_map,mo_integrals_map_2) + do mm = 1, mo_num + hij_cache(mm,1) = mo_bi_ortho_tc_two_e(mm,hfix,pfix,p1) + hij_cache(mm,2) = mo_bi_ortho_tc_two_e(mm,hfix,pfix,p2) + hji_cache(mm,1) = mo_bi_ortho_tc_two_e_transp(mm,hfix,pfix,p1) + hji_cache(mm,2) = mo_bi_ortho_tc_two_e_transp(mm,hfix,pfix,p2) + enddo + putj = p1 + !! + do puti=1,mo_num !HOT + if(lbanned(puti,mi)) cycle + !p1 fixed + putj = p1 + if(.not. banned(putj,puti,bant)) then + hij = hij_cache(puti,2) + hji = hji_cache(puti,2) + if (hij /= 0.d0.and.hji/=0.d0) then + phase = get_phase_bi(phasemask, ma, mi, hfix, p2, puti, pfix, N_int) + hij = hij * phase + hji = hji * phase + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + tmp_rowij(k,puti) = tmp_rowij(k,puti) + hij * coefs(k,2) + tmp_rowji(k,puti) = tmp_rowji(k,puti) + hji * coefs(k,1) + enddo + endif + end if +! + putj = p2 + if(.not. banned(putj,puti,bant)) then + hij = hij_cache(puti,1) + hji = hji_cache(puti,1) + if (hij /= 0.d0.and.hji/=0.d0) then + phase = get_phase_bi(phasemask, ma, mi, hfix, p1, puti, pfix, N_int) + hij = hij * phase + hji = hji * phase + do k=1,N_states + tmp_rowij2(k,puti) = tmp_rowij2(k,puti) + hij * coefs(k,2) + tmp_rowji2(k,puti) = tmp_rowji2(k,puti) + hji * coefs(k,1) + enddo + endif + end if + end do + + if(mi == 1) then + mat_r(:,:,p1) = mat_r(:,:,p1) + tmp_rowij(:,:) + mat_r(:,:,p2) = mat_r(:,:,p2) + tmp_rowij2(:,:) + mat_l(:,:,p1) = mat_l(:,:,p1) + tmp_rowji(:,:) + mat_l(:,:,p2) = mat_l(:,:,p2) + tmp_rowji2(:,:) + else + do l=1,mo_num + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k,p1,l) = mat_r(k,p1,l) + tmp_rowij(k,l) + mat_r(k,p2,l) = mat_r(k,p2,l) + tmp_rowij2(k,l) + mat_l(k,p1,l) = mat_l(k,p1,l) + tmp_rowji(k,l) + mat_l(k,p2,l) = mat_l(k,p2,l) + tmp_rowji2(k,l) + enddo + enddo + end if + + else ! sp /= 3 + + if(p(0,ma) == 3) then + do i=1,3 + hfix = h(1,ma) + puti = p(i, ma) + p1 = p(turn3(1,i), ma) + p2 = p(turn3(2,i), ma) +! call get_mo_two_e_integrals_complex(hfix,p1,p2,mo_num,hij_cache(1,1),mo_integrals_map,mo_integrals_map_2) +! call get_mo_two_e_integrals_complex(hfix,p2,p1,mo_num,hij_cache(1,2),mo_integrals_map,mo_integrals_map_2) + do mm = 1, mo_num + hij_cache(mm,1) = mo_bi_ortho_tc_two_e(mm,hfix,p1,p2) + hij_cache(mm,2) = mo_bi_ortho_tc_two_e(mm,hfix,p2,p1) + hji_cache(mm,1) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p1,p2) + hji_cache(mm,2) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p2,p1) + enddo + !! + tmp_rowij = 0.d0 + tmp_rowji = 0.d0 + do putj=1,hfix-1 + if(banned(putj,puti,1)) cycle + if(lbanned(putj,ma)) cycle + hij = hij_cache(putj,1) - hij_cache(putj,2) + hji = hji_cache(putj,1) - hji_cache(putj,2) + if (hij /= 0.d0.and.hji/=0.d0) then + phase = get_phase_bi(phasemask, ma, ma, putj, p1, hfix, p2, N_int) + hij = hij * phase + hji = hji * phase + tmp_rowij(:,putj) = tmp_rowij(:,putj) + hij * coefs(:,2) + tmp_rowji(:,putj) = tmp_rowji(:,putj) + hji * coefs(:,1) + endif + end do + do putj=hfix+1,mo_num + if(banned(putj,puti,1)) cycle + if(lbanned(putj,ma)) cycle + hij = hij_cache(putj,2) - hij_cache(putj,1) + hji = hji_cache(putj,2) - hji_cache(putj,1) + if (hij /= 0.d0.and.hji/=0.d0) then + phase = get_phase_bi(phasemask, ma, ma, hfix, p1, putj, p2, N_int) + hij = hij * phase + hji = hji * phase + tmp_rowij(:,putj) = tmp_rowij(:,putj) + hij * coefs(:,2) + tmp_rowji(:,putj) = tmp_rowji(:,putj) + hji * coefs(:,1) + endif + end do + + mat_r(:, :puti-1, puti) = mat_r(:, :puti-1, puti) + tmp_rowij(:,:puti-1) + mat_l(:, :puti-1, puti) = mat_l(:, :puti-1, puti) + tmp_rowji(:,:puti-1) + do l=puti,mo_num + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k, puti, l) = mat_r(k, puti,l) + tmp_rowij(k,l) + mat_l(k, puti, l) = mat_l(k, puti,l) + tmp_rowji(k,l) + enddo + enddo + end do + else + hfix = h(1,mi) + pfix = p(1,mi) + p1 = p(1,ma) + p2 = p(2,ma) + tmp_rowij = 0.d0 + tmp_rowij2 = 0.d0 + tmp_rowji = 0.d0 + tmp_rowji2 = 0.d0 +! call get_mo_two_e_integrals_complex(hfix,p1,pfix,mo_num,hij_cache(1,1),mo_integrals_map,mo_integrals_map_2) +! call get_mo_two_e_integrals_complex(hfix,p2,pfix,mo_num,hij_cache(1,2),mo_integrals_map,mo_integrals_map_2) + do mm = 1, mo_num + hij_cache(mm,1) = mo_bi_ortho_tc_two_e(mm,hfix,p1,pfix) + hij_cache(mm,2) = mo_bi_ortho_tc_two_e(mm,hfix,p2,pfix) + hji_cache(mm,1) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p1,pfix) + hji_cache(mm,2) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p2,pfix) + enddo + putj = p2 + !! + do puti=1,mo_num + if(lbanned(puti,ma)) cycle + putj = p2 + if(.not. banned(puti,putj,1)) then + hij = hij_cache(puti,1) + hji = hji_cache(puti,1) + if (hij /= 0.d0.and.hji/=0.d0) then + phase = get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p1, N_int) + hij = hij * phase + hji = hji * phase + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + tmp_rowij(k,puti) = tmp_rowij(k,puti) + hij * coefs(k,2) + tmp_rowji(k,puti) = tmp_rowji(k,puti) + hji * coefs(k,1) + enddo + endif + end if + + putj = p1 + if(.not. banned(puti,putj,1)) then + hij = hij_cache(puti,2) + hji = hji_cache(puti,2) + if (hij /= 0.d0.and.hji/=0.d0) then + phase = get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p2, N_int) + hij = hij * phase + hji = hji * phase + do k=1,N_states + tmp_rowij2(k,puti) = tmp_rowij2(k,puti) + hij * coefs(k,2) + tmp_rowji2(k,puti) = tmp_rowji2(k,puti) + hji * coefs(k,1) + enddo + endif + end if + end do + mat_r(:,:p2-1,p2) = mat_r(:,:p2-1,p2) + tmp_rowij(:,:p2-1) + mat_l(:,:p2-1,p2) = mat_l(:,:p2-1,p2) + tmp_rowji(:,:p2-1) + do l=p2,mo_num + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k,p2,l) = mat_r(k,p2,l) + tmp_rowij(k,l) + mat_l(k,p2,l) = mat_l(k,p2,l) + tmp_rowji(k,l) + enddo + enddo + mat_r(:,:p1-1,p1) = mat_r(:,:p1-1,p1) + tmp_rowij2(:,:p1-1) + mat_l(:,:p1-1,p1) = mat_l(:,:p1-1,p1) + tmp_rowji2(:,:p1-1) + do l=p1,mo_num + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + mat_r(k,p1,l) = mat_r(k,p1,l) + tmp_rowij2(k,l) + mat_l(k,p1,l) = mat_l(k,p1,l) + tmp_rowji2(k,l) + enddo + enddo + end if + end if + deallocate(lbanned,hij_cache, hji_cache) + + !! MONO + if(sp == 3) then + s1 = 1 + s2 = 2 + else + s1 = sp + s2 = sp + end if + + do i1=1,p(0,s1) + ib = 1 + if(s1 == s2) ib = i1+1 + do i2=ib,p(0,s2) + p1 = p(i1,s1) + p2 = p(i2,s2) + if(bannedOrb(p1, s1) .or. bannedOrb(p2, s2) .or. banned(p1, p2, 1)) cycle + call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int) + ! gen is a selector; mask is ionized generator; det is alpha + ! hij is contribution to +! call i_h_j_complex(gen, det, N_int, hij) + call htilde_mu_mat_opt_bi_ortho_no_3e(det, gen, N_int, hij) + call htilde_mu_mat_opt_bi_ortho_no_3e(gen, det, N_int, hji) + !DIR$ LOOP COUNT AVG(4) + do k=1,N_states + ! take conjugate to get contribution to instead of +! mat_r(k, p1, p2) = mat_r(k, p1, p2) + coefs(k,1) * dconjg(hij) + mat_r(k, p1, p2) = mat_r(k, p1, p2) + coefs(k,2) * hij + mat_l(k, p1, p2) = mat_l(k, p1, p2) + coefs(k,1) * hji + enddo + end do + end do +end + diff --git a/plugins/local/cipsi_tc_bi_ortho/selection.irp.f b/plugins/local/cipsi_tc_bi_ortho/selection.irp.f index 0f785ba2..17d34f43 100644 --- a/plugins/local/cipsi_tc_bi_ortho/selection.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/selection.irp.f @@ -694,7 +694,11 @@ subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, intere call get_d2_new(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) endif elseif(nt == 3) then - call get_d1_new(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + if(transpose_two_e_int)then + call get_d1_transp(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + else + call get_d1_new(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + endif else if(transpose_two_e_int)then call get_d0_transp (det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) From 687259c25feb8ec568b31b89b760d2e08d07ad3a Mon Sep 17 00:00:00 2001 From: eginer Date: Tue, 7 May 2024 20:32:48 +0200 Subject: [PATCH 035/159] working on the matrix elements both --- .../local/bi_ort_ints/total_twoe_pot.irp.f | 20 +++ plugins/local/slater_tc/slater_tc_opt.irp.f | 42 ++++++ .../slater_tc/slater_tc_opt_double.irp.f | 60 ++++++++ .../slater_tc/slater_tc_opt_single.irp.f | 142 ++++++++++++++++++ 4 files changed, 264 insertions(+) diff --git a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f index 71269fdc..e27fdb7f 100644 --- a/plugins/local/bi_ort_ints/total_twoe_pot.irp.f +++ b/plugins/local/bi_ort_ints/total_twoe_pot.irp.f @@ -332,3 +332,23 @@ END_PROVIDER ! --- + BEGIN_PROVIDER [double precision, tc_2e_3idx_coulomb_integrals_transp , (mo_num,mo_num,mo_num)] +&BEGIN_PROVIDER [double precision, tc_2e_3idx_exchange_integrals_transp, (mo_num,mo_num,mo_num)] + + BEGIN_DOC + ! tc_2e_3idx_coulomb_integrals_transp (j,k,i) = + ! tc_2e_3idx_exchange_integrals_transp(j,k,i) = + END_DOC + implicit none + integer :: i, j, k + + do i = 1, mo_num + do k = 1, mo_num + do j = 1, mo_num + tc_2e_3idx_coulomb_integrals_transp(j, k,i) = mo_bi_ortho_tc_two_e_transp(j ,k ,j ,i ) + tc_2e_3idx_exchange_integrals_transp(j,k,i) = mo_bi_ortho_tc_two_e_transp(k ,j ,j ,i ) + enddo + enddo + enddo + +END_PROVIDER diff --git a/plugins/local/slater_tc/slater_tc_opt.irp.f b/plugins/local/slater_tc/slater_tc_opt.irp.f index 59efc943..9ed2b389 100644 --- a/plugins/local/slater_tc/slater_tc_opt.irp.f +++ b/plugins/local/slater_tc/slater_tc_opt.irp.f @@ -181,3 +181,45 @@ end ! --- +subroutine htilde_mu_mat_opt_bi_ortho_no_3e_both(key_j, key_i, Nint, htot) + + BEGIN_DOC + ! + ! where |key_j> is developed on the LEFT basis and |key_i> is developed on the RIGHT basis + !! + ! Returns the detail of the matrix element WITHOUT ANY CONTRIBUTION FROM THE THREE ELECTRON TERMS + !! WARNING !! + ! + ! Non hermitian !! + ! + END_DOC + + use bitmasks + + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_i(Nint,2), key_j(Nint,2) + double precision, intent(out) :: htot + integer :: degree + + htot = 0.d0 + + call get_excitation_degree(key_i, key_j, degree, Nint) + if(degree.gt.2) return + + if(degree == 0) then + call diag_htilde_mu_mat_fock_bi_ortho_no_3e(Nint, key_i,htot) + else if (degree == 1) then + call single_htilde_mu_mat_fock_bi_ortho_no_3e_both(Nint,key_j, key_i , htot) + else if(degree == 2) then + call double_htilde_mu_mat_fock_bi_ortho_no_3e_both(Nint, key_j, key_i, htot) + endif + + if(degree==0) then + htot += nuclear_repulsion + endif + +end + +! --- + diff --git a/plugins/local/slater_tc/slater_tc_opt_double.irp.f b/plugins/local/slater_tc/slater_tc_opt_double.irp.f index 4067473c..181ae11d 100644 --- a/plugins/local/slater_tc/slater_tc_opt_double.irp.f +++ b/plugins/local/slater_tc/slater_tc_opt_double.irp.f @@ -505,3 +505,63 @@ subroutine double_htilde_mu_mat_fock_bi_ortho_no_3e(Nint, key_j, key_i, htot) end +subroutine double_htilde_mu_mat_fock_bi_ortho_no_3e_both(Nint, key_j, key_i, hji,hij) + + BEGIN_DOC + ! and for double excitation ONLY FOR ONE- AND TWO-BODY TERMS + !! + !! WARNING !! + ! + ! Non hermitian !! + END_DOC + + use bitmasks + + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_j(Nint,2), key_i(Nint,2) + double precision, intent(out) :: hji,hij + double precision :: hmono, htwoe_ji, htwoe_ij + integer :: occ(Nint*bit_kind_size,2) + integer :: Ne(2), i, j, ii, jj, ispin, jspin, k, kk + integer :: degree,exc(0:2,2,2) + integer :: h1, p1, h2, p2, s1, s2 + double precision :: get_mo_two_e_integral_tc_int,phase + + + call get_excitation_degree(key_i, key_j, degree, Nint) + + hmono = 0.d0 + htwoe_ji = 0.d0 + htwoe_ij = 0.d0 + hji = 0.d0 + hij = 0.d0 + + if(degree.ne.2)then + return + endif + integer :: degree_i,degree_j + call get_excitation_degree(ref_bitmask,key_i,degree_i,N_int) + call get_excitation_degree(ref_bitmask,key_j,degree_j,N_int) + call get_double_excitation(key_i, key_j, exc, phase, Nint) + call decode_exc(exc, 2, h1, p1, h2, p2, s1, s2) + + if(s1.ne.s2)then + ! opposite spin two-body + htwoe_ji = mo_bi_ortho_tc_two_e(p2,p1,h2,h1) + htwoe_ij = mo_bi_ortho_tc_two_e_transp(p2,p1,h2,h1) + else + ! same spin two-body + ! direct terms + htwoe_ji = mo_bi_ortho_tc_two_e(p2,p1,h2,h1) + htwoe_ij = mo_bi_ortho_tc_two_e_transp(p2,p1,h2,h1) + ! exchange terms + htwoe_ji -= mo_bi_ortho_tc_two_e(p1,p2,h2,h1) + htwoe_ij -= mo_bi_ortho_tc_two_e_transp(p1,p2,h2,h1) + endif + htwoe_ji *= phase + hji = htwoe_ji + htwoe_ij *= phase + hij = htwoe_ij + +end diff --git a/plugins/local/slater_tc/slater_tc_opt_single.irp.f b/plugins/local/slater_tc/slater_tc_opt_single.irp.f index e57cb05c..3f4e17e2 100644 --- a/plugins/local/slater_tc/slater_tc_opt_single.irp.f +++ b/plugins/local/slater_tc/slater_tc_opt_single.irp.f @@ -618,3 +618,145 @@ subroutine get_single_excitation_from_fock_tc_no_3e(Nint, key_i, key_j, h, p, sp end + +subroutine single_htilde_mu_mat_fock_bi_ortho_no_3e_both(Nint, key_j, key_i, hji,hij) + + BEGIN_DOC + ! and for single excitation ONLY FOR ONE- AND TWO-BODY TERMS + !! + !! WARNING !! + ! + ! Non hermitian !! + END_DOC + + use bitmasks + + implicit none + integer, intent(in) :: Nint + integer(bit_kind), intent(in) :: key_j(Nint,2), key_i(Nint,2) + double precision, intent(out) :: hji,hij + + double precision :: hmono, htwoe + integer :: occ(Nint*bit_kind_size,2) + integer :: Ne(2), i, j, ii, jj, ispin, jspin, k, kk + integer :: degree,exc(0:2,2,2) + integer :: h1, p1, h2, p2, s1, s2 + double precision :: get_mo_two_e_integral_tc_int, phase + double precision :: direct_int, exchange_int_12, exchange_int_23, exchange_int_13 + integer :: other_spin(2) + integer(bit_kind) :: key_j_core(Nint,2), key_i_core(Nint,2) + + other_spin(1) = 2 + other_spin(2) = 1 + + hmono = 0.d0 + htwoe = 0.d0 + hji = 0.d0 + hji = 0.d0 + call get_excitation_degree(key_i, key_j, degree, Nint) + if(degree.ne.1)then + return + endif + call bitstring_to_list_ab(key_i, occ, Ne, Nint) + + call get_single_excitation(key_i, key_j, exc, phase, Nint) + call decode_exc(exc,1,h1,p1,h2,p2,s1,s2) + call get_single_excitation_from_fock_tc_no_3e_both(Nint, key_i, key_j, h1, p1, s1, phase, hmono, htwoe, hji,hij) + +end + +! --- + +subroutine get_single_excitation_from_fock_tc_no_3e_both(Nint, key_i, key_j, h, p, spin, phase, hji,hij) + + use bitmasks + + implicit none + integer, intent(in) :: Nint + integer, intent(in) :: h, p, spin + double precision, intent(in) :: phase + integer(bit_kind), intent(in) :: key_i(Nint,2), key_j(Nint,2) + double precision, intent(out) :: hji,hij + double precision :: hmono_ji,htwoe_ji + double precision :: hmono_ij,htwoe_ij + + integer(bit_kind) :: differences(Nint,2) + integer(bit_kind) :: hole(Nint,2) + integer(bit_kind) :: partcl(Nint,2) + integer :: occ_hole(Nint*bit_kind_size,2) + integer :: occ_partcl(Nint*bit_kind_size,2) + integer :: n_occ_ab_hole(2),n_occ_ab_partcl(2) + integer :: i0,i + double precision :: buffer_c_ji(mo_num), buffer_x_ji(mo_num) + double precision :: buffer_c_ij(mo_num), buffer_x_ij(mo_num) + + do i = 1, mo_num + buffer_c_ji(i) = tc_2e_3idx_coulomb_integrals(i,p,h) + buffer_x_ji(i) = tc_2e_3idx_exchange_integrals(i,p,h) + buffer_c_ij(i) = tc_2e_3idx_coulomb_integrals_transp(i,p,h) + buffer_x_ij(i) = tc_2e_3idx_exchange_integrals_transp(i,p,h) + enddo + + do i = 1, Nint + differences(i,1) = xor(key_i(i,1),ref_closed_shell_bitmask(i,1)) + differences(i,2) = xor(key_i(i,2),ref_closed_shell_bitmask(i,2)) + hole(i,1) = iand(differences(i,1),ref_closed_shell_bitmask(i,1)) + hole(i,2) = iand(differences(i,2),ref_closed_shell_bitmask(i,2)) + partcl(i,1) = iand(differences(i,1),key_i(i,1)) + partcl(i,2) = iand(differences(i,2),key_i(i,2)) + enddo + + call bitstring_to_list_ab(hole, occ_hole, n_occ_ab_hole, Nint) + call bitstring_to_list_ab(partcl, occ_partcl, n_occ_ab_partcl, Nint) + hmono_ji = mo_bi_ortho_tc_one_e(p,h) + htwoe_ji = fock_op_2_e_tc_closed_shell(p,h) + hmono_ij = mo_bi_ortho_tc_one_e(h,p) + htwoe_ij = fock_op_2_e_tc_closed_shell(h,p) + + ! holes :: direct terms + do i0 = 1, n_occ_ab_hole(1) + i = occ_hole(i0,1) + htwoe_ji -= buffer_c_ji(i) + htwoe_ij -= buffer_c_ij(i) + enddo + do i0 = 1, n_occ_ab_hole(2) + i = occ_hole(i0,2) + htwoe_ji -= buffer_c_ji(i) + htwoe_ij -= buffer_c_ij(i) + enddo + + ! holes :: exchange terms + do i0 = 1, n_occ_ab_hole(spin) + i = occ_hole(i0,spin) + htwoe_ji += buffer_x_ji(i) + htwoe_ij += buffer_x_ij(i) + enddo + + ! particles :: direct terms + do i0 = 1, n_occ_ab_partcl(1) + i = occ_partcl(i0,1) + htwoe_ji += buffer_c_ji(i) + htwoe_ij += buffer_c_ij(i) + enddo + do i0 = 1, n_occ_ab_partcl(2) + i = occ_partcl(i0,2) + htwoe_ji += buffer_c_ji(i) + htwoe_ij += buffer_c_ij(i) + enddo + + ! particles :: exchange terms + do i0 = 1, n_occ_ab_partcl(spin) + i = occ_partcl(i0,spin) + htwoe_ji -= buffer_x_ji(i) + htwoe_ij -= buffer_x_ij(i) + enddo + htwoe_ji = htwoe_ji * phase + hmono_ji = hmono_ji * phase + hji = htwoe_ji + hmono_ji + + htwoe_ij = htwoe_ij * phase + hmono_ij = hmono_ij * phase + hij = htwoe_ij + hmono_ij + +end + From 42fdb3c4350c0452a7169614ff9dba4e0e381f62 Mon Sep 17 00:00:00 2001 From: eginer Date: Tue, 7 May 2024 20:52:10 +0200 Subject: [PATCH 036/159] it works with new routines for pt2 tc --- .../cipsi_tc_bi_ortho/get_d0_transp.irp.f | 54 ++++--------------- .../cipsi_tc_bi_ortho/get_d1_transp.irp.f | 4 +- plugins/local/slater_tc/slater_tc_opt.irp.f | 17 +++--- .../slater_tc/slater_tc_opt_single.irp.f | 4 +- 4 files changed, 25 insertions(+), 54 deletions(-) diff --git a/plugins/local/cipsi_tc_bi_ortho/get_d0_transp.irp.f b/plugins/local/cipsi_tc_bi_ortho/get_d0_transp.irp.f index 56238e13..f149e7c6 100644 --- a/plugins/local/cipsi_tc_bi_ortho/get_d0_transp.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/get_d0_transp.irp.f @@ -45,33 +45,16 @@ subroutine get_d0_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, call apply_particles(mask, 1,p1,2,p2, det, ok, N_int) ! call i_h_j_complex(gen, det, N_int, hij) ! need to take conjugate of this ! call i_h_j_complex(det, gen, N_int, hij) - call htilde_mu_mat_opt_bi_ortho_no_3e(det,gen,N_int, hij) + call htilde_mu_mat_opt_bi_ortho_no_3e_both(det,gen,N_int, hij,hji) else phase = get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int) hij = hij_cache1(p2) * phase + hji = hji_cache1(p2) * phase end if - if (hij == (0.d0,0.d0)) cycle + if (hij == 0.d0.or.hji == 0.d0) cycle !DIR$ LOOP COUNT AVG(4) do k=1,N_states mat_r(k, p1, p2) = mat_r(k, p1, p2) + coefs(k,2) * hij ! HOTSPOT - enddo - end do - !!!!!!!!!! - do p2=1, mo_num - if(bannedOrb(p2,2)) cycle - if(banned(p1, p2, bant)) cycle ! rentable? - if(p1 == h1 .or. p2 == h2) then - call apply_particles(mask, 1,p1,2,p2, det, ok, N_int) - ! call i_h_j_complex(gen, det, N_int, hij) ! need to take conjugate of this -! call i_h_j_complex(det, gen, N_int, hij) - call htilde_mu_mat_opt_bi_ortho_no_3e(gen,det,N_int, hji) - else - phase = get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int) - hji = hji_cache1(p2) * phase - end if - if (hji == (0.d0,0.d0)) cycle - !DIR$ LOOP COUNT AVG(4) - do k=1,N_states mat_l(k, p1, p2) = mat_l(k, p1, p2) + coefs(k,1) * hji ! HOTSPOT enddo end do @@ -98,40 +81,25 @@ subroutine get_d0_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, call apply_particles(mask, sp,puti,sp,putj, det, ok, N_int) !call i_h_j_complex(gen, det, N_int, hij) ! need to take conjugate of this ! call i_h_j_complex(det, gen, N_int, hij) - call htilde_mu_mat_opt_bi_ortho_no_3e(det,gen,N_int, hij) - if (hij == 0.d0) cycle + call htilde_mu_mat_opt_bi_ortho_no_3e_both(det,gen,N_int, hij,hji) + if (hij == 0.d0.or.hji == 0.d0) cycle else ! hij = (mo_two_e_integral_complex(p1, p2, puti, putj) - mo_two_e_integral_complex(p2, p1, puti, putj)) ! hij = (mo_bi_ortho_tc_two_e(p1, p2, puti, putj) - mo_bi_ortho_tc_two_e(p2, p1, puti, putj)) hij = (mo_bi_ortho_tc_two_e(puti, putj, p1, p2) - mo_bi_ortho_tc_two_e(puti, putj, p2, p1)) - if (hij == 0.d0) cycle - hij = (hij) * get_phase_bi(phasemask, sp, sp, puti, p1 , putj, p2, N_int) + hji = (mo_bi_ortho_tc_two_e_transp(puti, putj, p1, p2) - mo_bi_ortho_tc_two_e_transp(puti, putj, p2, p1)) + if (hij == 0.d0.or.hji == 0.d0) cycle + phase = get_phase_bi(phasemask, sp, sp, puti, p1 , putj, p2, N_int) + hij = (hij) * phase + hji = (hji) * phase end if !DIR$ LOOP COUNT AVG(4) do k=1,N_states mat_r(k, puti, putj) = mat_r(k, puti, putj) + coefs(k,2) * hij - enddo - end do - - !!!!!!!!!! - do putj=puti+1, mo_num - if(bannedOrb(putj, sp)) cycle - if(banned(puti, putj, bant)) cycle ! rentable? - if(puti == p1 .or. putj == p2 .or. puti == p2 .or. putj == p1) then - call apply_particles(mask, sp,puti,sp,putj, det, ok, N_int) - call htilde_mu_mat_opt_bi_ortho_no_3e(gen,det,N_int, hji) - if (hji == 0.d0) cycle - else -! hji = (mo_bi_ortho_tc_two_e( p1, p2, puti, putj) - mo_bi_ortho_tc_two_e( p2, p1, puti, putj)) - hji = (mo_bi_ortho_tc_two_e_transp(puti, putj, p1, p2 ) - mo_bi_ortho_tc_two_e_transp( puti, putj, p2, p1)) - if (hji == 0.d0) cycle - hji = (hji) * get_phase_bi(phasemask, sp, sp, puti, p1 , putj, p2, N_int) - end if - !DIR$ LOOP COUNT AVG(4) - do k=1,N_states mat_l(k, puti, putj) = mat_l(k, puti, putj) + coefs(k,1) * hji enddo end do + end do end if diff --git a/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f b/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f index 3c6cbf60..84a1ce24 100644 --- a/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f @@ -335,8 +335,8 @@ subroutine get_d1_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, ! gen is a selector; mask is ionized generator; det is alpha ! hij is contribution to ! call i_h_j_complex(gen, det, N_int, hij) - call htilde_mu_mat_opt_bi_ortho_no_3e(det, gen, N_int, hij) - call htilde_mu_mat_opt_bi_ortho_no_3e(gen, det, N_int, hji) + call htilde_mu_mat_opt_bi_ortho_no_3e_both(det, gen, N_int, hij,hji) +! call htilde_mu_mat_opt_bi_ortho_no_3e(gen, det, N_int, hji) !DIR$ LOOP COUNT AVG(4) do k=1,N_states ! take conjugate to get contribution to instead of diff --git a/plugins/local/slater_tc/slater_tc_opt.irp.f b/plugins/local/slater_tc/slater_tc_opt.irp.f index 9ed2b389..5651a299 100644 --- a/plugins/local/slater_tc/slater_tc_opt.irp.f +++ b/plugins/local/slater_tc/slater_tc_opt.irp.f @@ -181,7 +181,7 @@ end ! --- -subroutine htilde_mu_mat_opt_bi_ortho_no_3e_both(key_j, key_i, Nint, htot) +subroutine htilde_mu_mat_opt_bi_ortho_no_3e_both(key_j, key_i, Nint, hji,hij) BEGIN_DOC ! @@ -199,24 +199,27 @@ subroutine htilde_mu_mat_opt_bi_ortho_no_3e_both(key_j, key_i, Nint, htot) implicit none integer, intent(in) :: Nint integer(bit_kind), intent(in) :: key_i(Nint,2), key_j(Nint,2) - double precision, intent(out) :: htot + double precision, intent(out) :: hji,hij integer :: degree - htot = 0.d0 + hji = 0.d0 + hij = 0.d0 call get_excitation_degree(key_i, key_j, degree, Nint) if(degree.gt.2) return if(degree == 0) then - call diag_htilde_mu_mat_fock_bi_ortho_no_3e(Nint, key_i,htot) + call diag_htilde_mu_mat_fock_bi_ortho_no_3e(Nint, key_i,hji) + hij = hji else if (degree == 1) then - call single_htilde_mu_mat_fock_bi_ortho_no_3e_both(Nint,key_j, key_i , htot) + call single_htilde_mu_mat_fock_bi_ortho_no_3e_both(Nint,key_j, key_i , hji,hij) else if(degree == 2) then - call double_htilde_mu_mat_fock_bi_ortho_no_3e_both(Nint, key_j, key_i, htot) + call double_htilde_mu_mat_fock_bi_ortho_no_3e_both(Nint, key_j, key_i, hji,hij) endif if(degree==0) then - htot += nuclear_repulsion + hji += nuclear_repulsion + hij += nuclear_repulsion endif end diff --git a/plugins/local/slater_tc/slater_tc_opt_single.irp.f b/plugins/local/slater_tc/slater_tc_opt_single.irp.f index 3f4e17e2..47bcbe34 100644 --- a/plugins/local/slater_tc/slater_tc_opt_single.irp.f +++ b/plugins/local/slater_tc/slater_tc_opt_single.irp.f @@ -652,7 +652,7 @@ subroutine single_htilde_mu_mat_fock_bi_ortho_no_3e_both(Nint, key_j, key_i, hj hmono = 0.d0 htwoe = 0.d0 hji = 0.d0 - hji = 0.d0 + hij = 0.d0 call get_excitation_degree(key_i, key_j, degree, Nint) if(degree.ne.1)then return @@ -661,7 +661,7 @@ subroutine single_htilde_mu_mat_fock_bi_ortho_no_3e_both(Nint, key_j, key_i, hj call get_single_excitation(key_i, key_j, exc, phase, Nint) call decode_exc(exc,1,h1,p1,h2,p2,s1,s2) - call get_single_excitation_from_fock_tc_no_3e_both(Nint, key_i, key_j, h1, p1, s1, phase, hmono, htwoe, hji,hij) + call get_single_excitation_from_fock_tc_no_3e_both(Nint, key_i, key_j, h1, p1, s1, phase, hji,hij) end From a38bf00975365cc755fc7c8c24e9e74c02cd2a00 Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 8 May 2024 17:26:48 +0200 Subject: [PATCH 037/159] updated default keywords in tc_keywords and ao_twoe_e_ints --- .../cipsi_tc_bi_ortho/get_d1_transp.irp.f | 34 ++++++++++++------- plugins/local/cipsi_tc_bi_ortho/pt2.irp.f | 3 ++ .../local/cipsi_tc_bi_ortho/selection.irp.f | 6 ++-- .../cipsi_tc_bi_ortho/stochastic_cipsi.irp.f | 2 +- .../local/tc_bi_ortho/diagonalize_tc_h.irp.f | 34 +++++++++---------- plugins/local/tc_keywords/EZFIO.cfg | 4 +-- src/ao_two_e_ints/EZFIO.cfg | 6 ++-- 7 files changed, 49 insertions(+), 40 deletions(-) diff --git a/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f b/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f index 84a1ce24..a3d7b076 100644 --- a/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/get_d1_transp.irp.f @@ -16,7 +16,7 @@ subroutine get_d1_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, logical :: ok logical, allocatable :: lbanned(:,:) - integer :: puti, putj, ma, mi, s1, s2, i, i1, i2, j + integer :: puti, putj, ma, mi, s1, s2, i, i1, i2, j, istate integer :: hfix, pfix, h1, h2, p1, p2, ib, k, l, mm integer, parameter :: turn2(2) = (/2,1/) @@ -65,10 +65,12 @@ subroutine get_d1_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, hij_cache(mm,2) = mo_bi_ortho_tc_two_e(mm,hfix,p2,p1) hji_cache(mm,1) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p1,p2) hji_cache(mm,2) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p2,p1) + do istate = 1,N_states + tmp_rowij(istate,mm) = 0.d0 + tmp_rowji(istate,mm) = 0.d0 + enddo enddo !! - tmp_rowij = 0.d0 - tmp_rowji = 0.d0 do putj=1, hfix-1 if(lbanned(putj, ma)) cycle if(banned(putj, puti,bant)) cycle @@ -119,13 +121,15 @@ subroutine get_d1_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, !MOVE MI pfix = p(1,mi) - tmp_rowij = 0.d0 - tmp_rowij2 = 0.d0 - tmp_rowji = 0.d0 - tmp_rowji2 = 0.d0 ! call get_mo_two_e_integrals_complex(hfix,pfix,p1,mo_num,hij_cache(1,1),mo_integrals_map,mo_integrals_map_2) ! call get_mo_two_e_integrals_complex(hfix,pfix,p2,mo_num,hij_cache(1,2),mo_integrals_map,mo_integrals_map_2) do mm = 1, mo_num + do istate = 1,N_states + tmp_rowij(istate,mm) = 0.d0 + tmp_rowij2(istate,mm) = 0.d0 + tmp_rowji(istate,mm) = 0.d0 + tmp_rowji2(istate,mm) = 0.d0 + enddo hij_cache(mm,1) = mo_bi_ortho_tc_two_e(mm,hfix,pfix,p1) hij_cache(mm,2) = mo_bi_ortho_tc_two_e(mm,hfix,pfix,p2) hji_cache(mm,1) = mo_bi_ortho_tc_two_e_transp(mm,hfix,pfix,p1) @@ -200,10 +204,12 @@ subroutine get_d1_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, hij_cache(mm,2) = mo_bi_ortho_tc_two_e(mm,hfix,p2,p1) hji_cache(mm,1) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p1,p2) hji_cache(mm,2) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p2,p1) + do istate = 1, N_states + tmp_rowij(istate,mm) = 0.d0 + tmp_rowji(istate,mm) = 0.d0 + enddo enddo !! - tmp_rowij = 0.d0 - tmp_rowji = 0.d0 do putj=1,hfix-1 if(banned(putj,puti,1)) cycle if(lbanned(putj,ma)) cycle @@ -246,10 +252,6 @@ subroutine get_d1_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, pfix = p(1,mi) p1 = p(1,ma) p2 = p(2,ma) - tmp_rowij = 0.d0 - tmp_rowij2 = 0.d0 - tmp_rowji = 0.d0 - tmp_rowji2 = 0.d0 ! call get_mo_two_e_integrals_complex(hfix,p1,pfix,mo_num,hij_cache(1,1),mo_integrals_map,mo_integrals_map_2) ! call get_mo_two_e_integrals_complex(hfix,p2,pfix,mo_num,hij_cache(1,2),mo_integrals_map,mo_integrals_map_2) do mm = 1, mo_num @@ -257,6 +259,12 @@ subroutine get_d1_transp(gen, phasemask, bannedOrb, banned, mat_l, mat_r, mask, hij_cache(mm,2) = mo_bi_ortho_tc_two_e(mm,hfix,p2,pfix) hji_cache(mm,1) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p1,pfix) hji_cache(mm,2) = mo_bi_ortho_tc_two_e_transp(mm,hfix,p2,pfix) + do istate = 1,N_states + tmp_rowij (istate,mm) = 0.d0 + tmp_rowij2(istate,mm) = 0.d0 + tmp_rowji (istate,mm) = 0.d0 + tmp_rowji2(istate,mm) = 0.d0 + enddo enddo putj = p2 !! diff --git a/plugins/local/cipsi_tc_bi_ortho/pt2.irp.f b/plugins/local/cipsi_tc_bi_ortho/pt2.irp.f index ada19c6b..22381991 100644 --- a/plugins/local/cipsi_tc_bi_ortho/pt2.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/pt2.irp.f @@ -65,6 +65,9 @@ subroutine tc_pt2 call pt2_dealloc(pt2_data_err) call pt2_alloc(pt2_data, N_states) call pt2_alloc(pt2_data_err, N_states) + if(transpose_two_e_int)then + provide mo_bi_ortho_tc_two_e_transp tc_2e_3idx_coulomb_integrals_transp + endif call ZMQ_pt2(E_tc, pt2_data, pt2_data_err, relative_error,0) ! Stochastic PT2 and selection call diagonalize_CI_tc_bi_ortho(ndet, E_tc,norm,pt2_data,print_pt2) call print_summary_tc(psi_energy_with_nucl_rep, pt2_data, pt2_data_err, N_det, N_configuration, N_states, psi_s2) diff --git a/plugins/local/cipsi_tc_bi_ortho/selection.irp.f b/plugins/local/cipsi_tc_bi_ortho/selection.irp.f index 17d34f43..72ccf9c4 100644 --- a/plugins/local/cipsi_tc_bi_ortho/selection.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/selection.irp.f @@ -691,19 +691,19 @@ subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, intere if(transpose_two_e_int)then call get_d2_new_transp(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) else - call get_d2_new(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + call get_d2_new (det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) endif elseif(nt == 3) then if(transpose_two_e_int)then call get_d1_transp(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) else - call get_d1_new(det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + call get_d1_new (det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) endif else if(transpose_two_e_int)then call get_d0_transp (det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) else - call get_d0_new (det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) + call get_d0_new (det(1,1,i), phasemask, bannedOrb, banned, mat_l, mat_r, mask, h, p, sp, psi_selectors_coef_transp_tc(1, 1, interesting(i))) endif endif elseif(nt == 4) then diff --git a/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f b/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f index bb5a89a1..e363830d 100644 --- a/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f @@ -89,7 +89,7 @@ subroutine run_stochastic_cipsi call pt2_alloc(pt2_data, N_states) call pt2_alloc(pt2_data_err, N_states) if(transpose_two_e_int)then - provide mo_bi_ortho_tc_two_e_transp + provide mo_bi_ortho_tc_two_e_transp tc_2e_3idx_coulomb_integrals_transp endif call ZMQ_pt2(E_tc, pt2_data, pt2_data_err, relative_error,to_select) ! Stochastic PT2 and selection ! stop diff --git a/plugins/local/tc_bi_ortho/diagonalize_tc_h.irp.f b/plugins/local/tc_bi_ortho/diagonalize_tc_h.irp.f index 398e96db..03388898 100644 --- a/plugins/local/tc_bi_ortho/diagonalize_tc_h.irp.f +++ b/plugins/local/tc_bi_ortho/diagonalize_tc_h.irp.f @@ -35,8 +35,8 @@ program tc_bi_ortho print*, ' nb of det = ', N_det call routine_diag() - call write_tc_energy() - call save_tc_bi_ortho_wavefunction() +! call write_tc_energy() +! call save_tc_bi_ortho_wavefunction() end @@ -76,28 +76,26 @@ subroutine routine_diag() PROVIDE noL_2e endif - PROVIDE htilde_matrix_elmt_bi_ortho - return if(N_states .eq. 1) then print*,'eigval_right_tc_bi_orth = ',eigval_right_tc_bi_orth(1) - print*,'e_tc_left_right = ',e_tc_left_right - print*,'e_tilde_bi_orth_00 = ',e_tilde_bi_orth_00 - print*,'e_pt2_tc_bi_orth = ',e_pt2_tc_bi_orth - print*,'e_pt2_tc_bi_orth_single = ',e_pt2_tc_bi_orth_single - print*,'e_pt2_tc_bi_orth_double = ',e_pt2_tc_bi_orth_double - print*,'***' - print*,'e_corr_bi_orth = ',e_corr_bi_orth - print*,'e_corr_bi_orth_proj = ',e_corr_bi_orth_proj - print*,'e_corr_bi_orth_proj_abs = ',e_corr_bi_orth_proj_abs - print*,'e_corr_single_bi_orth = ',e_corr_single_bi_orth - print*,'e_corr_double_bi_orth = ',e_corr_double_bi_orth - print*,'e_corr_single_bi_orth_abs = ',e_corr_single_bi_orth_abs - print*,'e_corr_double_bi_orth_abs = ',e_corr_double_bi_orth_abs +! print*,'e_tc_left_right = ',e_tc_left_right +! print*,'e_tilde_bi_orth_00 = ',e_tilde_bi_orth_00 +! print*,'e_pt2_tc_bi_orth = ',e_pt2_tc_bi_orth +! print*,'e_pt2_tc_bi_orth_single = ',e_pt2_tc_bi_orth_single +! print*,'e_pt2_tc_bi_orth_double = ',e_pt2_tc_bi_orth_double +! print*,'***' +! print*,'e_corr_bi_orth = ',e_corr_bi_orth +! print*,'e_corr_bi_orth_proj = ',e_corr_bi_orth_proj +! print*,'e_corr_bi_orth_proj_abs = ',e_corr_bi_orth_proj_abs +! print*,'e_corr_single_bi_orth = ',e_corr_single_bi_orth +! print*,'e_corr_double_bi_orth = ',e_corr_double_bi_orth +! print*,'e_corr_single_bi_orth_abs = ',e_corr_single_bi_orth_abs +! print*,'e_corr_double_bi_orth_abs = ',e_corr_double_bi_orth_abs print*,'Left/right eigenvectors' do i = 1,N_det - write(*,'(I5,X,(100(F12.7,X)))')i,leigvec_tc_bi_orth(i,1),reigvec_tc_bi_orth(i,1),leigvec_tc_bi_orth(i,1)*reigvec_tc_bi_orth(i,1) + write(*,'(I6,X,(100(F12.7,X)))')i,leigvec_tc_bi_orth(i,1),reigvec_tc_bi_orth(i,1),leigvec_tc_bi_orth(i,1)*reigvec_tc_bi_orth(i,1) enddo else diff --git a/plugins/local/tc_keywords/EZFIO.cfg b/plugins/local/tc_keywords/EZFIO.cfg index 39968ec8..d764224a 100644 --- a/plugins/local/tc_keywords/EZFIO.cfg +++ b/plugins/local/tc_keywords/EZFIO.cfg @@ -14,7 +14,7 @@ default: False type: logical doc: If |true|, three-body terms are included interface: ezfio,provider,ocaml -default: True +default: False [three_e_3_idx_term] type: logical @@ -50,7 +50,7 @@ default: False type: logical doc: If |true|, standard normal-ordering for L (to be used with three_body_h_tc |false|) interface: ezfio,provider,ocaml -default: False +default: True [core_tc_op] type: logical diff --git a/src/ao_two_e_ints/EZFIO.cfg b/src/ao_two_e_ints/EZFIO.cfg index ff932b0c..c2e083a3 100644 --- a/src/ao_two_e_ints/EZFIO.cfg +++ b/src/ao_two_e_ints/EZFIO.cfg @@ -25,16 +25,16 @@ default: 1.e-12 [do_direct_integrals] type: logical -doc: Compute integrals on the fly (very slow, only for debugging) +doc: Compute integrals on the fly (Useful only for Cholesky decomposition) interface: ezfio,provider,ocaml -default: False +default: True ezfio_name: direct [do_ao_cholesky] type: logical doc: Perform Cholesky decomposition of AO integrals interface: ezfio,provider,ocaml -default: False +default: True [io_ao_two_e_integrals_erf] type: Disk_access From 2af293fd291481896cd5114df6f653ca0f04f797 Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 8 May 2024 17:38:54 +0200 Subject: [PATCH 038/159] minor modifs in BH jastrows --- .../local/non_h_ints_mu/jast_deriv_utils_vect.irp.f | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f index db06e835..09bb6528 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f @@ -340,8 +340,8 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) endif tmp1 = double_p(mpA) * f1A_power(mpA-1) * f2A_power(npA) + double_p(npA) * f1A_power(npA-1) * f2A_power(mpA) - tmp1 = tmp1 * g12_power(opA) - tmp2 = double_p(opA) * g12_power(opA-1) * (f1A_power(mpA) * f2A_power(npA) + f1A_power(npA) * f2A_power(mpA)) + tmp1 = tmp1 * g12_power(opA) * tmp + tmp2 = double_p(opA) * g12_power(opA-1) * (f1A_power(mpA) * f2A_power(npA) + f1A_power(npA) * f2A_power(mpA)) * tmp !tmp1 = 0.d0 !if(mpA .gt. 0) then @@ -356,9 +356,12 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) ! tmp2 = tmp2 + dble(opA) * g12**dble(opA-1) * (f1A**dble(mpA) * f2A**dble(npA) + f1A**dble(npA) * f2A**dble(mpA)) !endif - gradx(jpoint) = gradx(jpoint) + tmp * (tmp1 * grad1_f1A(1) + tmp2 * grad1_g12(1)) - grady(jpoint) = grady(jpoint) + tmp * (tmp1 * grad1_f1A(2) + tmp2 * grad1_g12(2)) - gradz(jpoint) = gradz(jpoint) + tmp * (tmp1 * grad1_f1A(3) + tmp2 * grad1_g12(3)) +! gradx(jpoint) = gradx(jpoint) + tmp * (tmp1 * grad1_f1A(1) + tmp2 * grad1_g12(1)) +! grady(jpoint) = grady(jpoint) + tmp * (tmp1 * grad1_f1A(2) + tmp2 * grad1_g12(2)) +! gradz(jpoint) = gradz(jpoint) + tmp * (tmp1 * grad1_f1A(3) + tmp2 * grad1_g12(3)) + gradx(jpoint) = gradx(jpoint) + tmp1 * grad1_f1A(1) + tmp2 * grad1_g12(1) + grady(jpoint) = grady(jpoint) + tmp1 * grad1_f1A(2) + tmp2 * grad1_g12(2) + gradz(jpoint) = gradz(jpoint) + tmp1 * grad1_f1A(3) + tmp2 * grad1_g12(3) enddo ! p enddo ! i_nucl enddo ! jpoint From 812e75982b96959485b8f7ccd333ef3a1b1b570b Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 10 May 2024 17:23:51 +0200 Subject: [PATCH 039/159] minor modifs in plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f --- .../non_h_ints_mu/jast_deriv_utils_vect.irp.f | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f index 09bb6528..2c41b535 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f @@ -867,19 +867,20 @@ subroutine jBH_elem_fct_grad(alpha, r1, r2, fct, grad1_fct) + (r1(2) - r2(2)) * (r1(2) - r2(2)) & + (r1(3) - r2(3)) * (r1(3) - r2(3)) ) - tmp1 = 1.d0 / (1.d0 + alpha * dist) - fct = alpha * dist * tmp1 - - if(dist .lt. 1d-10) then - grad1_fct(1) = 0.d0 - grad1_fct(2) = 0.d0 - grad1_fct(3) = 0.d0 - else + if(dist .ge. 1d-10) then + tmp1 = 1.d0 / (1.d0 + alpha * dist) + + fct = alpha * dist * tmp1 tmp2 = alpha * tmp1 * tmp1 / dist grad1_fct(1) = tmp2 * (r1(1) - r2(1)) grad1_fct(2) = tmp2 * (r1(2) - r2(2)) grad1_fct(3) = tmp2 * (r1(3) - r2(3)) + else + grad1_fct(1) = 0.d0 + grad1_fct(2) = 0.d0 + grad1_fct(3) = 0.d0 + fct = 0.d0 endif return From 6e2f28b97fbf3c961c9461689a8db9adf81bd6f8 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Sat, 11 May 2024 10:27:03 +0200 Subject: [PATCH 040/159] COLLAPSE(4) -> COLLAPSE(3) --- plugins/local/non_h_ints_mu/deb_aos.irp.f | 6 +++--- plugins/local/non_h_ints_mu/total_tc_int.irp.f | 9 ++++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/plugins/local/non_h_ints_mu/deb_aos.irp.f b/plugins/local/non_h_ints_mu/deb_aos.irp.f index 4012f47c..70604f54 100644 --- a/plugins/local/non_h_ints_mu/deb_aos.irp.f +++ b/plugins/local/non_h_ints_mu/deb_aos.irp.f @@ -31,6 +31,9 @@ subroutine print_aos() integer :: i, ipoint double precision :: r(3) double precision :: ao_val, ao_der(3), ao_lap + double precision :: accu_vgl(5) + double precision :: accu_vgl_nrm(5) + double precision :: mo_val, mo_der(3), mo_lap PROVIDE final_grid_points aos_in_r_array aos_grad_in_r_array aos_lapl_in_r_array @@ -40,9 +43,6 @@ subroutine print_aos() write(1000, '(3(f15.7, 3X))') r enddo -double precision :: accu_vgl(5) -double precision :: accu_vgl_nrm(5) - do ipoint = 1, n_points_final_grid do i = 1, ao_num ao_val = aos_in_r_array (i,ipoint) diff --git a/plugins/local/non_h_ints_mu/total_tc_int.irp.f b/plugins/local/non_h_ints_mu/total_tc_int.irp.f index a1bbd6e0..656f5f16 100644 --- a/plugins/local/non_h_ints_mu/total_tc_int.irp.f +++ b/plugins/local/non_h_ints_mu/total_tc_int.irp.f @@ -78,7 +78,7 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n !$OMP PRIVATE (i, j, k, l, ipoint, ao_i_r, ao_k_r, weight1) & !$OMP SHARED (ao_num, n_points_final_grid, ao_two_e_tc_tot, & !$OMP aos_in_r_array_transp, final_weight_at_r_vector, int2_grad1_u12_square_ao) - !$OMP DO COLLAPSE(4) + !$OMP DO COLLAPSE(3) do i = 1, ao_num do k = 1, ao_num do l = 1, ao_num @@ -188,7 +188,7 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n !$OMP SHARED (ao_num, n_points_final_grid, ao_two_e_tc_tot, & !$OMP aos_in_r_array_transp, final_weight_at_r_vector, & !$OMP int2_grad1_u12_ao, aos_grad_in_r_array_transp_bis) - !$OMP DO COLLAPSE(4) + !$OMP DO COLLAPSE(3) do i = 1, ao_num do k = 1, ao_num do l = 1, ao_num @@ -270,7 +270,7 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n !$OMP PARALLEL DEFAULT(NONE) & !$OMP PRIVATE(i, j, k, l, integ_zero, integ_val) & !$OMP SHARED(ao_num, ao_two_e_tc_tot) - !$OMP DO COLLAPSE(4) + !$OMP DO COLLAPSE(3) do j = 1, ao_num do l = 1, ao_num do i = 1, ao_num @@ -293,7 +293,7 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n !$OMP PARALLEL DEFAULT(NONE) & !$OMP SHARED(ao_num, ao_two_e_tc_tot, ao_integrals_map) & !$OMP PRIVATE(i, j, k, l) - !$OMP DO COLLAPSE(4) + !$OMP DO COLLAPSE(3) do j = 1, ao_num do l = 1, ao_num do i = 1, ao_num @@ -306,7 +306,6 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n enddo !$OMP END DO !$OMP END PARALLEL - !call clear_ao_map() FREE ao_integrals_map endif From 8eea5d7f7f142103998d8bfa1b3bcc630935f69b Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 15 May 2024 15:41:35 +0200 Subject: [PATCH 041/159] fixed a bug in cholesk_ao_transp --- .../tuto_plugins/tuto_I/test_cholesky.irp.f | 53 +++++++++++++++++++ src/ao_two_e_ints/cholesky.irp.f | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 plugins/local/tuto_plugins/tuto_I/test_cholesky.irp.f diff --git a/plugins/local/tuto_plugins/tuto_I/test_cholesky.irp.f b/plugins/local/tuto_plugins/tuto_I/test_cholesky.irp.f new file mode 100644 index 00000000..d09d100a --- /dev/null +++ b/plugins/local/tuto_plugins/tuto_I/test_cholesky.irp.f @@ -0,0 +1,53 @@ +program my_program_to_print_stuffs + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + integer :: i,j,k,l,m + double precision :: integral, accu, accu_tot, integral_cholesky + double precision :: get_ao_two_e_integral, get_two_e_integral ! declaration of the functions + print*,'AO integrals, physicist notations : ' + accu_tot = 0.D0 + do i = 1, ao_num + do j = 1, ao_num + do k = 1, ao_num + do l = 1, ao_num + integral = get_ao_two_e_integral(i, j, k, l, ao_integrals_map) + integral_cholesky = 0.D0 + do m = 1, cholesky_ao_num + integral_cholesky += cholesky_ao_transp(m,i,k) * cholesky_ao_transp(m,j,l) + enddo + accu = dabs(integral_cholesky-integral) + accu_tot += accu + if(accu.gt.1.d-10)then + print*,i,j,k,l + print*,accu, integral, integral_cholesky + endif + enddo + enddo + enddo + enddo + print*,'accu_tot',accu_tot + + print*,'MO integrals, physicist notations : ' + do i = 1, mo_num + do j = 1, mo_num + do k = 1, mo_num + do l = 1, mo_num + integral = get_two_e_integral(i, j, k, l, mo_integrals_map) + accu = 0.D0 + integral_cholesky = 0.D0 + do m = 1, cholesky_mo_num + integral_cholesky += cholesky_mo_transp(m,i,k) * cholesky_mo_transp(m,j,l) + enddo + accu = dabs(integral_cholesky-integral) + accu_tot += accu + if(accu.gt.1.d-10)then + print*,i,j,k,l + print*,accu, integral, integral_cholesky + endif + enddo + enddo + enddo + enddo +end diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 33304026..5fbd166c 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -6,7 +6,7 @@ BEGIN_PROVIDER [ double precision, cholesky_ao_transp, (cholesky_ao_num, ao_num, integer :: i,j,k do j=1,ao_num do i=1,ao_num - do k=1,ao_num + do k=1,cholesky_ao_num cholesky_ao_transp(k,i,j) = cholesky_ao(i,j,k) enddo enddo From c6a61639445229eca3ecb2e32556ddef646064d6 Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 16 May 2024 17:57:00 +0200 Subject: [PATCH 042/159] added f_hf with cholesky by default --- src/dft_utils_in_r/mo_in_r.irp.f | 2 +- src/mu_of_r/f_cholesky.irp.f | 221 +++++++++++++++++++++++++++ src/mu_of_r/mu_of_r_conditions.irp.f | 46 +++++- 3 files changed, 264 insertions(+), 5 deletions(-) create mode 100644 src/mu_of_r/f_cholesky.irp.f diff --git a/src/dft_utils_in_r/mo_in_r.irp.f b/src/dft_utils_in_r/mo_in_r.irp.f index 192cb25a..ad931402 100644 --- a/src/dft_utils_in_r/mo_in_r.irp.f +++ b/src/dft_utils_in_r/mo_in_r.irp.f @@ -48,7 +48,7 @@ integer :: i,j do i = 1, n_points_final_grid do j = 1, mo_num - mos_in_r_array_transp(i,j) = mos_in_r_array(j,i) + mos_in_r_array_transp(i,j) = mos_in_r_array_omp(j,i) enddo enddo END_PROVIDER diff --git a/src/mu_of_r/f_cholesky.irp.f b/src/mu_of_r/f_cholesky.irp.f new file mode 100644 index 00000000..1ad4ce36 --- /dev/null +++ b/src/mu_of_r/f_cholesky.irp.f @@ -0,0 +1,221 @@ +BEGIN_PROVIDER [integer, list_couple_orb_r1, (2,n_couple_orb_r1)] + implicit none + integer :: ii,i,mm,m,itmp + itmp = 0 + do ii = 1, n_occ_val_orb_for_hf(1) + i = list_valence_orb_for_hf(ii,1) + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + itmp += 1 + list_couple_orb_r1(1,itmp) = i + list_couple_orb_r1(2,itmp) = m + enddo + enddo +END_PROVIDER + + +BEGIN_PROVIDER [integer, list_couple_orb_r2, (2,n_couple_orb_r2)] + implicit none + integer :: ii,i,mm,m,itmp + itmp = 0 + do ii = 1, n_occ_val_orb_for_hf(2) + i = list_valence_orb_for_hf(ii,2) + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + itmp += 1 + list_couple_orb_r2(1,itmp) = i + list_couple_orb_r2(2,itmp) = m + enddo + enddo +END_PROVIDER + + +BEGIN_PROVIDER [integer, n_couple_orb_r1] + implicit none + BEGIN_DOC + ! number of couples of alpha occupied times any basis orbital + END_DOC + n_couple_orb_r1 = n_occ_val_orb_for_hf(1) * n_basis_orb +END_PROVIDER + +BEGIN_PROVIDER [integer, n_couple_orb_r2] + implicit none + BEGIN_DOC + ! number of couples of beta occupied times any basis orbital + END_DOC + n_couple_orb_r2 = n_occ_val_orb_for_hf(2) * n_basis_orb +END_PROVIDER + +BEGIN_PROVIDER [ double precision, mos_times_cholesky_r1, (cholesky_mo_num,n_points_final_grid)] + implicit none + BEGIN_DOC + ! V1_AR = \sum_{I}V_AI Phi_IR where "R" specifies the index of the grid point and A the number of cholesky point + ! + ! here Phi_IR is phi_i(R)xphi_b(R) for r1 and V_AI = (ib|A) chollesky vector + END_DOC + double precision, allocatable :: mos_ib_r1(:,:),mo_chol_r1(:,:) + double precision, allocatable :: test(:,:) + double precision :: mo_i_r1,mo_b_r1 + integer :: ii,i,mm,m,itmp,ipoint,ll + allocate(mos_ib_r1(n_couple_orb_r1,n_points_final_grid)) + allocate(mo_chol_r1(cholesky_mo_num,n_couple_orb_r1)) + + do ipoint = 1, n_points_final_grid + itmp = 0 + do ii = 1, n_occ_val_orb_for_hf(1) + i = list_valence_orb_for_hf(ii,1) + mo_i_r1 = mos_in_r_array_omp(i,ipoint) + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + mo_b_r1 = mos_in_r_array_omp(m,ipoint) + itmp += 1 + mos_ib_r1(itmp,ipoint) = mo_i_r1 * mo_b_r1 + enddo + enddo + enddo + + itmp = 0 + do ii = 1, n_occ_val_orb_for_hf(1) + i = list_valence_orb_for_hf(ii,1) + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + itmp += 1 + do ll = 1, cholesky_mo_num + mo_chol_r1(ll,itmp) = cholesky_mo_transp(ll,m,i) + enddo + enddo + enddo + + call get_AB_prod(mo_chol_r1,cholesky_mo_num,n_couple_orb_r1,mos_ib_r1,n_points_final_grid,mos_times_cholesky_r1) + allocate(test(cholesky_mo_num,n_points_final_grid)) + test = 0.d0 + do ipoint = 1, n_points_final_grid + do itmp = 1, n_couple_orb_r1 + i = list_couple_orb_r1(1,itmp) + m = list_couple_orb_r1(2,itmp) + mo_i_r1 = mos_in_r_array_omp(i,ipoint) + mo_b_r1 = mos_in_r_array_omp(m,ipoint) + do mm = 1, cholesky_mo_num + test(mm,ipoint) += mo_i_r1 * mo_b_r1 * mo_chol_r1(mm,itmp) + enddo + enddo + enddo + double precision :: accu + accu = 0.d0 + do ipoint = 1, n_points_final_grid + do mm = 1, cholesky_mo_num + accu += dabs(mos_times_cholesky_r1(mm,ipoint) - test(mm,ipoint) ) + if(dabs(mos_times_cholesky_r1(mm,ipoint) - test(mm,ipoint)).gt.1.d-10)then + print*,'problem ! ',dabs(mos_times_cholesky_r1(mm,ipoint) - test(mm,ipoint)) & + , mos_times_cholesky_r1(mm,ipoint) , test(mm,ipoint) + endif + enddo + enddo + print*,'accu = ',accu + + +END_PROVIDER + +BEGIN_PROVIDER [ double precision, mos_times_cholesky_r2, (cholesky_mo_num,n_points_final_grid)] + implicit none + BEGIN_DOC + ! V1_AR = \sum_{I}V_AI Phi_IR where "R" specifies the index of the grid point and A the number of cholesky point + ! + ! here Phi_IR is phi_i(R)xphi_b(R) for r2 and V_AI = (ib|A) chollesky vector + END_DOC + double precision, allocatable :: mos_ib_r2(:,:),mo_chol_r2(:,:) + double precision, allocatable :: test(:,:) + double precision :: mo_i_r2,mo_b_r2 + integer :: ii,i,mm,m,itmp,ipoint,ll + allocate(mos_ib_r2(n_couple_orb_r2,n_points_final_grid)) + allocate(mo_chol_r2(cholesky_mo_num,n_couple_orb_r2)) + + do ipoint = 1, n_points_final_grid + itmp = 0 + do ii = 1, n_occ_val_orb_for_hf(2) + i = list_valence_orb_for_hf(ii,2) + mo_i_r2 = mos_in_r_array_omp(i,ipoint) + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + mo_b_r2 = mos_in_r_array_omp(m,ipoint) + itmp += 1 + mos_ib_r2(itmp,ipoint) = mo_i_r2 * mo_b_r2 + enddo + enddo + enddo + + itmp = 0 + do ii = 1, n_occ_val_orb_for_hf(2) + i = list_valence_orb_for_hf(ii,2) + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + itmp += 1 + do ll = 1, cholesky_mo_num + mo_chol_r2(ll,itmp) = cholesky_mo_transp(ll,m,i) + enddo + enddo + enddo + + call get_AB_prod(mo_chol_r2,cholesky_mo_num,n_couple_orb_r2,mos_ib_r2,n_points_final_grid,mos_times_cholesky_r2) + allocate(test(cholesky_mo_num,n_points_final_grid)) + test = 0.d0 + do ipoint = 1, n_points_final_grid + do itmp = 1, n_couple_orb_r2 + i = list_couple_orb_r2(1,itmp) + m = list_couple_orb_r2(2,itmp) + mo_i_r2 = mos_in_r_array_omp(i,ipoint) + mo_b_r2 = mos_in_r_array_omp(m,ipoint) + do mm = 1, cholesky_mo_num + test(mm,ipoint) += mo_i_r2 * mo_b_r2 * mo_chol_r2(mm,itmp) + enddo + enddo + enddo + double precision :: accu + accu = 0.d0 + do ipoint = 1, n_points_final_grid + do mm = 1, cholesky_mo_num + accu += dabs(mos_times_cholesky_r2(mm,ipoint) - test(mm,ipoint) ) + if(dabs(mos_times_cholesky_r2(mm,ipoint) - test(mm,ipoint)).gt.1.d-10)then + print*,'problem ! ',dabs(mos_times_cholesky_r2(mm,ipoint) - test(mm,ipoint)) & + , mos_times_cholesky_r2(mm,ipoint) , test(mm,ipoint) + endif + enddo + enddo + print*,'accu = ',accu + +END_PROVIDER + + +BEGIN_PROVIDER [ double precision, f_hf_cholesky, (n_points_final_grid)] + implicit none + integer :: ipoint + !!f(R) = \sum_{I} \sum_{J} Phi_I(R) Phi_J(R) V_IJ + !! = \sum_{I}\sum_{J}\sum_A Phi_I(R) Phi_J(R) V_AI V_AJ + !! = \sum_A \sum_{I}Phi_I(R)V_AI \sum_{J}V_AJ Phi_J(R) + !! = \sum_A V_AR G_AR + !! V_AR = \sum_{I}Phi_IR V_AI = \sum_{I}Phi^t_RI V_AI + double precision :: u_dot_v + do ipoint = 1, n_points_final_grid + f_hf_cholesky(ipoint) = 2.D0 * u_dot_v(mos_times_cholesky_r2(1,ipoint),mos_times_cholesky_r1(1,ipoint),cholesky_mo_num) + enddo +END_PROVIDER + +BEGIN_PROVIDER [ double precision, on_top_hf_grid, (n_points_final_grid)] + implicit none + integer :: ipoint,i,ii + double precision :: dm_a, dm_b + do ipoint = 1, n_points_final_grid + dm_a = 0.d0 + do ii = 1, n_occ_val_orb_for_hf(1) + i = list_valence_orb_for_hf(ii,1) + dm_a += mos_in_r_array_omp(i,ipoint)*mos_in_r_array_omp(i,ipoint) + enddo + dm_b = 0.d0 + do ii = 1, n_occ_val_orb_for_hf(2) + i = list_valence_orb_for_hf(ii,2) + dm_b += mos_in_r_array_omp(i,ipoint)*mos_in_r_array_omp(i,ipoint) + enddo + on_top_hf_grid(ipoint) = 2.D0 * dm_a*dm_b + enddo +END_PROVIDER + diff --git a/src/mu_of_r/mu_of_r_conditions.irp.f b/src/mu_of_r/mu_of_r_conditions.irp.f index 6b49b9df..5b4d4b83 100644 --- a/src/mu_of_r/mu_of_r_conditions.irp.f +++ b/src/mu_of_r/mu_of_r_conditions.irp.f @@ -61,7 +61,7 @@ END_DOC integer :: ipoint double precision :: wall0,wall1,f_hf,on_top,w_hf,sqpi - PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals + PROVIDE f_hf_cholesky on_top_hf_grid print*,'providing mu_of_r_hf ...' call wall_time(wall0) sqpi = dsqrt(dacos(-1.d0)) @@ -69,10 +69,10 @@ !$OMP PARALLEL DO & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (ipoint,f_hf,on_top,w_hf) & - !$OMP ShARED (n_points_final_grid,mu_of_r_hf,f_psi_hf_ab,on_top_hf_mu_r,sqpi) + !$OMP ShARED (n_points_final_grid,mu_of_r_hf,f_hf_cholesky,on_top_hf_grid,sqpi) do ipoint = 1, n_points_final_grid - f_hf = f_psi_hf_ab(ipoint) - on_top = on_top_hf_mu_r(ipoint) + f_hf = f_hf_cholesky(ipoint) + on_top = on_top_hf_grid(ipoint) if(on_top.le.1.d-12.or.f_hf.le.0.d0.or.f_hf * on_top.lt.0.d0)then w_hf = 1.d+10 else @@ -85,6 +85,44 @@ print*,'Time to provide mu_of_r_hf = ',wall1-wall0 END_PROVIDER + BEGIN_PROVIDER [double precision, mu_of_r_hf_old, (n_points_final_grid) ] + implicit none + BEGIN_DOC + ! mu(r) computed with a HF wave function (assumes that HF MOs are stored in the EZFIO) + ! + ! corresponds to Eq. (37) of J. Chem. Phys. 149, 194301 (2018) but for \Psi^B = HF^B + ! + ! !!!!!! WARNING !!!!!! if no_core_density == .True. then all contributions from the core orbitals + ! + ! in the two-body density matrix are excluded + END_DOC + integer :: ipoint + double precision :: wall0,wall1,f_hf,on_top,w_hf,sqpi + PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals + print*,'providing mu_of_r_hf_old ...' + call wall_time(wall0) + sqpi = dsqrt(dacos(-1.d0)) + provide f_psi_hf_ab + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint,f_hf,on_top,w_hf) & + !$OMP ShARED (n_points_final_grid,mu_of_r_hf_old,f_psi_hf_ab,on_top_hf_mu_r,sqpi) + do ipoint = 1, n_points_final_grid + f_hf = f_psi_hf_ab(ipoint) + on_top = on_top_hf_mu_r(ipoint) + if(on_top.le.1.d-12.or.f_hf.le.0.d0.or.f_hf * on_top.lt.0.d0)then + w_hf = 1.d+10 + else + w_hf = f_hf / on_top + endif + mu_of_r_hf_old(ipoint) = w_hf * sqpi * 0.5d0 + enddo + !$OMP END PARALLEL DO + call wall_time(wall1) + print*,'Time to provide mu_of_r_hf_old = ',wall1-wall0 + END_PROVIDER + + BEGIN_PROVIDER [double precision, mu_of_r_psi_cas, (n_points_final_grid,N_states) ] implicit none BEGIN_DOC From ce042fbd787a21a600830596fa3caa5f7aa2cdb1 Mon Sep 17 00:00:00 2001 From: eginer Date: Tue, 21 May 2024 12:01:28 +0200 Subject: [PATCH 043/159] basis set correction with cholesky works for hf --- .../local/basis_correction/51.basis_c.bats | 8 -- .../{01.convert.bats => convert_bats_old} | 0 src/hartree_fock/10.hf.bats | 13 -- src/mu_of_r/basis_def.irp.f | 45 +++++++ .../{f_cholesky.irp.f => f_hf_cholesky.irp.f} | 121 +++++++++--------- 5 files changed, 104 insertions(+), 83 deletions(-) rename src/ezfio_files/{01.convert.bats => convert_bats_old} (100%) rename src/mu_of_r/{f_cholesky.irp.f => f_hf_cholesky.irp.f} (67%) diff --git a/plugins/local/basis_correction/51.basis_c.bats b/plugins/local/basis_correction/51.basis_c.bats index 914b482b..1e20bae3 100644 --- a/plugins/local/basis_correction/51.basis_c.bats +++ b/plugins/local/basis_correction/51.basis_c.bats @@ -37,14 +37,6 @@ function run_sd() { eq $energy1 $1 $thresh } -@test "O2 CAS" { - qp set_file o2_cas.gms.ezfio - qp set_mo_class -c "[1-2]" -a "[3-10]" -d "[11-46]" - run -149.72435425 3.e-4 10000 - qp set_mo_class -c "[1-2]" -a "[3-10]" -v "[11-46]" - run_md -0.1160222327 1.e-6 -} - @test "LiF RHF" { qp set_file lif.ezfio diff --git a/src/ezfio_files/01.convert.bats b/src/ezfio_files/convert_bats_old similarity index 100% rename from src/ezfio_files/01.convert.bats rename to src/ezfio_files/convert_bats_old diff --git a/src/hartree_fock/10.hf.bats b/src/hartree_fock/10.hf.bats index b496a089..214dfa86 100644 --- a/src/hartree_fock/10.hf.bats +++ b/src/hartree_fock/10.hf.bats @@ -115,9 +115,6 @@ rm -rf $EZFIO run hco.ezfio -113.1841002944744 } -@test "HBO" { # 0.805600 1.4543s - run hbo.ezfio -100.018582259096 -} @test "H2S" { # 1.655600 4.21402s run h2s.ezfio -398.6944130421982 @@ -127,9 +124,6 @@ rm -rf $EZFIO run h3coh.ezfio -114.9865030596373 } -@test "H2O" { # 1.811100 1.84387s - run h2o.ezfio -0.760270218692179E+02 -} @test "H2O2" { # 2.217000 8.50267s run h2o2.ezfio -150.7806608469964 @@ -187,13 +181,6 @@ rm -rf $EZFIO run oh.ezfio -75.42025413469165 } -@test "[Cu(NH3)4]2+" { # 59.610100 4.18766m - [[ -n $TRAVIS ]] && skip - qp set_file cu_nh3_4_2plus.ezfio - qp set scf_utils thresh_scf 1.e-10 - run cu_nh3_4_2plus.ezfio -1862.97590358903 -} - @test "SO2" { # 71.894900 3.22567m [[ -n $TRAVIS ]] && skip run so2.ezfio -41.55800401346361 diff --git a/src/mu_of_r/basis_def.irp.f b/src/mu_of_r/basis_def.irp.f index fff9f581..e433f4d8 100644 --- a/src/mu_of_r/basis_def.irp.f +++ b/src/mu_of_r/basis_def.irp.f @@ -114,3 +114,48 @@ BEGIN_PROVIDER [double precision, basis_mos_in_r_array, (n_basis_orb,n_points_fi enddo enddo END_PROVIDER + +! BEGIN_PROVIDER [integer, n_docc_val_orb_for_cas] +!&BEGIN_PROVIDER [integer, n_max_docc_val_orb_for_cas] +! implicit none +! BEGIN_DOC +! ! Number of DOUBLY OCCUPIED VALENCE ORBITALS for the CAS wave function +! ! +! ! This determines the size of the space \mathcal{A} of Eqs. (15-16) of Phys.Chem.Lett.2019, 10, 2931 2937 +! END_DOC +! integer :: i +! n_docc_val_orb_for_cas = 0 +! ! You browse the BETA ELECTRONS and check if its not a CORE ORBITAL +! do i = 1, elec_beta_num +! if( trim(mo_class(i))=="Inactive" & +! .or. trim(mo_class(i))=="Active" & +! .or. trim(mo_class(i))=="Virtual" )then +! n_docc_val_orb_for_cas +=1 +! endif +! enddo +! n_max_docc_val_orb_for_cas = maxval(n_docc_val_orb_for_cas) +! +!END_PROVIDER +! +!BEGIN_PROVIDER [integer, list_doc_valence_orb_for_cas, (n_max_docc_val_orb_for_cas)] +! implicit none +! BEGIN_DOC +! ! List of OCCUPIED valence orbitals for each spin to build the f_{HF}(r_1,r_2) function +! ! +! ! This corresponds to ALL OCCUPIED orbitals in the HF wave function, except those defined as "core" +! ! +! ! This determines the space \mathcal{A} of Eqs. (15-16) of Phys.Chem.Lett.2019, 10, 2931 2937 +! END_DOC +! j = 0 +! ! You browse the BETA ELECTRONS and check if its not a CORE ORBITAL +! do i = 1, elec_beta_num +! if( trim(mo_class(i))=="Inactive" & +! .or. trim(mo_class(i))=="Active" & +! .or. trim(mo_class(i))=="Virtual" )then +! j +=1 +! list_doc_valence_orb_for_cas(j) = i +! endif +! enddo +! +!END_PROVIDER + diff --git a/src/mu_of_r/f_cholesky.irp.f b/src/mu_of_r/f_hf_cholesky.irp.f similarity index 67% rename from src/mu_of_r/f_cholesky.irp.f rename to src/mu_of_r/f_hf_cholesky.irp.f index 1ad4ce36..84097f09 100644 --- a/src/mu_of_r/f_cholesky.irp.f +++ b/src/mu_of_r/f_hf_cholesky.irp.f @@ -1,4 +1,4 @@ -BEGIN_PROVIDER [integer, list_couple_orb_r1, (2,n_couple_orb_r1)] +BEGIN_PROVIDER [integer, list_couple_hf_orb_r1, (2,n_couple_orb_r1)] implicit none integer :: ii,i,mm,m,itmp itmp = 0 @@ -7,14 +7,14 @@ BEGIN_PROVIDER [integer, list_couple_orb_r1, (2,n_couple_orb_r1)] do mm = 1, n_basis_orb ! electron 1 m = list_basis(mm) itmp += 1 - list_couple_orb_r1(1,itmp) = i - list_couple_orb_r1(2,itmp) = m + list_couple_hf_orb_r1(1,itmp) = i + list_couple_hf_orb_r1(2,itmp) = m enddo enddo END_PROVIDER -BEGIN_PROVIDER [integer, list_couple_orb_r2, (2,n_couple_orb_r2)] +BEGIN_PROVIDER [integer, list_couple_hf_orb_r2, (2,n_couple_orb_r2)] implicit none integer :: ii,i,mm,m,itmp itmp = 0 @@ -23,8 +23,8 @@ BEGIN_PROVIDER [integer, list_couple_orb_r2, (2,n_couple_orb_r2)] do mm = 1, n_basis_orb ! electron 1 m = list_basis(mm) itmp += 1 - list_couple_orb_r2(1,itmp) = i - list_couple_orb_r2(2,itmp) = m + list_couple_hf_orb_r2(1,itmp) = i + list_couple_hf_orb_r2(2,itmp) = m enddo enddo END_PROVIDER @@ -87,31 +87,6 @@ BEGIN_PROVIDER [ double precision, mos_times_cholesky_r1, (cholesky_mo_num,n_poi enddo call get_AB_prod(mo_chol_r1,cholesky_mo_num,n_couple_orb_r1,mos_ib_r1,n_points_final_grid,mos_times_cholesky_r1) - allocate(test(cholesky_mo_num,n_points_final_grid)) - test = 0.d0 - do ipoint = 1, n_points_final_grid - do itmp = 1, n_couple_orb_r1 - i = list_couple_orb_r1(1,itmp) - m = list_couple_orb_r1(2,itmp) - mo_i_r1 = mos_in_r_array_omp(i,ipoint) - mo_b_r1 = mos_in_r_array_omp(m,ipoint) - do mm = 1, cholesky_mo_num - test(mm,ipoint) += mo_i_r1 * mo_b_r1 * mo_chol_r1(mm,itmp) - enddo - enddo - enddo - double precision :: accu - accu = 0.d0 - do ipoint = 1, n_points_final_grid - do mm = 1, cholesky_mo_num - accu += dabs(mos_times_cholesky_r1(mm,ipoint) - test(mm,ipoint) ) - if(dabs(mos_times_cholesky_r1(mm,ipoint) - test(mm,ipoint)).gt.1.d-10)then - print*,'problem ! ',dabs(mos_times_cholesky_r1(mm,ipoint) - test(mm,ipoint)) & - , mos_times_cholesky_r1(mm,ipoint) , test(mm,ipoint) - endif - enddo - enddo - print*,'accu = ',accu END_PROVIDER @@ -157,53 +132,72 @@ BEGIN_PROVIDER [ double precision, mos_times_cholesky_r2, (cholesky_mo_num,n_poi enddo call get_AB_prod(mo_chol_r2,cholesky_mo_num,n_couple_orb_r2,mos_ib_r2,n_points_final_grid,mos_times_cholesky_r2) - allocate(test(cholesky_mo_num,n_points_final_grid)) - test = 0.d0 - do ipoint = 1, n_points_final_grid - do itmp = 1, n_couple_orb_r2 - i = list_couple_orb_r2(1,itmp) - m = list_couple_orb_r2(2,itmp) - mo_i_r2 = mos_in_r_array_omp(i,ipoint) - mo_b_r2 = mos_in_r_array_omp(m,ipoint) - do mm = 1, cholesky_mo_num - test(mm,ipoint) += mo_i_r2 * mo_b_r2 * mo_chol_r2(mm,itmp) - enddo - enddo - enddo - double precision :: accu - accu = 0.d0 - do ipoint = 1, n_points_final_grid - do mm = 1, cholesky_mo_num - accu += dabs(mos_times_cholesky_r2(mm,ipoint) - test(mm,ipoint) ) - if(dabs(mos_times_cholesky_r2(mm,ipoint) - test(mm,ipoint)).gt.1.d-10)then - print*,'problem ! ',dabs(mos_times_cholesky_r2(mm,ipoint) - test(mm,ipoint)) & - , mos_times_cholesky_r2(mm,ipoint) , test(mm,ipoint) - endif - enddo - enddo - print*,'accu = ',accu END_PROVIDER BEGIN_PROVIDER [ double precision, f_hf_cholesky, (n_points_final_grid)] implicit none - integer :: ipoint + integer :: ipoint,m,k !!f(R) = \sum_{I} \sum_{J} Phi_I(R) Phi_J(R) V_IJ !! = \sum_{I}\sum_{J}\sum_A Phi_I(R) Phi_J(R) V_AI V_AJ !! = \sum_A \sum_{I}Phi_I(R)V_AI \sum_{J}V_AJ Phi_J(R) !! = \sum_A V_AR G_AR !! V_AR = \sum_{I}Phi_IR V_AI = \sum_{I}Phi^t_RI V_AI - double precision :: u_dot_v - do ipoint = 1, n_points_final_grid - f_hf_cholesky(ipoint) = 2.D0 * u_dot_v(mos_times_cholesky_r2(1,ipoint),mos_times_cholesky_r1(1,ipoint),cholesky_mo_num) - enddo + double precision :: u_dot_v,wall0,wall1 + if(elec_alpha_num == elec_beta_num)then + provide mos_times_cholesky_r1 + print*,'providing f_hf_cholesky ...' + call wall_time(wall0) + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint,m) & + !$OMP ShARED (mos_times_cholesky_r1,cholesky_mo_num,f_hf_cholesky,n_points_final_grid) + do ipoint = 1, n_points_final_grid + f_hf_cholesky(ipoint) = 0.d0 + do m = 1, cholesky_mo_num + f_hf_cholesky(ipoint) = f_hf_cholesky(ipoint) + & + mos_times_cholesky_r1(m,ipoint) * mos_times_cholesky_r1(m,ipoint) + enddo + f_hf_cholesky(ipoint) *= 2.D0 + enddo + !$OMP END PARALLEL DO + + call wall_time(wall1) + print*,'Time to provide f_hf_cholesky = ',wall1-wall0 + free mos_times_cholesky_r1 + else + provide mos_times_cholesky_r2 mos_times_cholesky_r1 + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint,m) & + !$OMP ShARED (mos_times_cholesky_r2,mos_times_cholesky_r1,cholesky_mo_num,f_hf_cholesky,n_points_final_grid) + do ipoint = 1, n_points_final_grid + f_hf_cholesky(ipoint) = 0.D0 + do m = 1, cholesky_mo_num + f_hf_cholesky(ipoint) = f_hf_cholesky(ipoint) + & + mos_times_cholesky_r2(m,ipoint)*mos_times_cholesky_r1(m,ipoint) + enddo + f_hf_cholesky(ipoint) *= 2.D0 + enddo + !$OMP END PARALLEL DO + call wall_time(wall1) + print*,'Time to provide f_hf_cholesky = ',wall1-wall0 + free mos_times_cholesky_r2 mos_times_cholesky_r1 + endif END_PROVIDER BEGIN_PROVIDER [ double precision, on_top_hf_grid, (n_points_final_grid)] implicit none integer :: ipoint,i,ii - double precision :: dm_a, dm_b + double precision :: dm_a, dm_b,wall0,wall1 + print*,'providing on_top_hf_grid ...' + provide mos_in_r_array_omp + call wall_time(wall0) + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint,dm_a,dm_b,ii,i) & + !$OMP ShARED (n_points_final_grid,n_occ_val_orb_for_hf,mos_in_r_array_omp,list_valence_orb_for_hf,on_top_hf_grid) do ipoint = 1, n_points_final_grid dm_a = 0.d0 do ii = 1, n_occ_val_orb_for_hf(1) @@ -217,5 +211,8 @@ BEGIN_PROVIDER [ double precision, on_top_hf_grid, (n_points_final_grid)] enddo on_top_hf_grid(ipoint) = 2.D0 * dm_a*dm_b enddo + !$OMP END PARALLEL DO + call wall_time(wall1) + print*,'Time to provide on_top_hf_grid = ',wall1-wall0 END_PROVIDER From 112f113ccb3f363262930b53e21aed010a29f746 Mon Sep 17 00:00:00 2001 From: eginer Date: Tue, 21 May 2024 12:26:30 +0200 Subject: [PATCH 044/159] fixed forgotten stuffs in normal_order_old/NEED --- plugins/local/normal_order_old/NEED | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/local/normal_order_old/NEED b/plugins/local/normal_order_old/NEED index 8b137891..e8c8c478 100644 --- a/plugins/local/normal_order_old/NEED +++ b/plugins/local/normal_order_old/NEED @@ -1 +1 @@ - +tc_scf From 6fb0f2a58e803ea02a03fe01b4ce9daa6b2fba91 Mon Sep 17 00:00:00 2001 From: eginer Date: Tue, 21 May 2024 12:53:55 +0200 Subject: [PATCH 045/159] modified scripts/get_fci_tc_conv.sh according to new printing --- plugins/local/tc_bi_ortho/print_tc_wf.irp.f | 2 +- scripts/get_fci_tc_conv.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/local/tc_bi_ortho/print_tc_wf.irp.f b/plugins/local/tc_bi_ortho/print_tc_wf.irp.f index 2b88bc5b..4d9f7c48 100644 --- a/plugins/local/tc_bi_ortho/print_tc_wf.irp.f +++ b/plugins/local/tc_bi_ortho/print_tc_wf.irp.f @@ -37,7 +37,7 @@ subroutine write_l_r_wf integer :: i print*,'Writing the left-right wf' do i = 1, N_det - write(i_unit_output,*)i, psi_coef_sorted_tc(i,1)/psi_coef_sorted_tc(i,1) & + write(i_unit_output,'(I8,X,10(F16.10,X))')i, psi_coef_sorted_tc(i,1),psi_coef_sorted_tc(i,1)/psi_coef_sorted_tc(1,1)& , psi_l_coef_sorted_bi_ortho_left(i)/psi_l_coef_sorted_bi_ortho_left(1) & , psi_r_coef_sorted_bi_ortho_right(i)/psi_r_coef_sorted_bi_ortho_right(1) enddo diff --git a/scripts/get_fci_tc_conv.sh b/scripts/get_fci_tc_conv.sh index 643f3ac0..f0c99baf 100755 --- a/scripts/get_fci_tc_conv.sh +++ b/scripts/get_fci_tc_conv.sh @@ -1,2 +1,2 @@ file=$1 -grep "Ndet,E,E+PT2,E+RPT2,|PT2|=" $file | cut -d "=" -f 2 > ${file}.conv_fci_tc +grep "Ndet,E,E+PT2,pt2_minus,pt2_plus,pt2_abs=" $file | cut -d "=" -f 2 > ${file}.conv_fci_tc From 3600c3c5ca92c6c62a0bbbb6cc1d01ec595e148c Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 22 May 2024 17:02:26 +0200 Subject: [PATCH 046/159] removed stupid dead link for PYSCF_EOMCC.py --- scripts/PYSCF_EOMCC.py | 1 - 1 file changed, 1 deletion(-) delete mode 120000 scripts/PYSCF_EOMCC.py diff --git a/scripts/PYSCF_EOMCC.py b/scripts/PYSCF_EOMCC.py deleted file mode 120000 index 8ad341da..00000000 --- a/scripts/PYSCF_EOMCC.py +++ /dev/null @@ -1 +0,0 @@ -/home_lct/eginer/qp2/plugins/qp_plugins_lct/dev/fcidump_for_vbarb/PYSCF_EOMCC.py \ No newline at end of file From 29da3b6542cdfeb52f9d1b7f8c23f3967018bf0f Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Thu, 23 May 2024 00:45:56 +0200 Subject: [PATCH 047/159] bypass one_e_tr_dm_mo for large mo_num & n_states --- .../multi_s_dipole_moment.irp.f | 154 ++++++++++++++++-- 1 file changed, 140 insertions(+), 14 deletions(-) diff --git a/src/mol_properties/multi_s_dipole_moment.irp.f b/src/mol_properties/multi_s_dipole_moment.irp.f index c7216a61..8aae3bf4 100644 --- a/src/mol_properties/multi_s_dipole_moment.irp.f +++ b/src/mol_properties/multi_s_dipole_moment.irp.f @@ -18,7 +18,7 @@ -BEGIN_PROVIDER [double precision, multi_s_dipole_moment, (N_states, N_states)] + BEGIN_PROVIDER [double precision, multi_s_dipole_moment , (N_states, N_states)] &BEGIN_PROVIDER [double precision, multi_s_x_dipole_moment, (N_states, N_states)] &BEGIN_PROVIDER [double precision, multi_s_y_dipole_moment, (N_states, N_states)] &BEGIN_PROVIDER [double precision, multi_s_z_dipole_moment, (N_states, N_states)] @@ -40,27 +40,153 @@ BEGIN_PROVIDER [double precision, multi_s_dipole_moment, (N_states, N_states)] ! gamma^{nm}: density matrix \bra{\Psi^n} a^{\dagger}_a a_i \ket{\Psi^m} END_DOC - integer :: istate,jstate ! States - integer :: i,j ! general spatial MOs + integer :: istate, jstate ! States + integer :: i, j ! general spatial MOs double precision :: nuclei_part_x, nuclei_part_y, nuclei_part_z multi_s_x_dipole_moment = 0.d0 multi_s_y_dipole_moment = 0.d0 multi_s_z_dipole_moment = 0.d0 + + if(8.d0*mo_num*mo_num*n_states*n_states*1d-9 .lt. 200.d0) then - do jstate = 1, N_states - do istate = 1, N_states - - do i = 1, mo_num - do j = 1, mo_num - multi_s_x_dipole_moment(istate,jstate) -= one_e_tr_dm_mo(j,i,istate,jstate) * mo_dipole_x(j,i) - multi_s_y_dipole_moment(istate,jstate) -= one_e_tr_dm_mo(j,i,istate,jstate) * mo_dipole_y(j,i) - multi_s_z_dipole_moment(istate,jstate) -= one_e_tr_dm_mo(j,i,istate,jstate) * mo_dipole_z(j,i) - enddo + do jstate = 1, N_states + do istate = 1, N_states + do i = 1, mo_num + do j = 1, mo_num + multi_s_x_dipole_moment(istate,jstate) -= one_e_tr_dm_mo(j,i,istate,jstate) * mo_dipole_x(j,i) + multi_s_y_dipole_moment(istate,jstate) -= one_e_tr_dm_mo(j,i,istate,jstate) * mo_dipole_y(j,i) + multi_s_z_dipole_moment(istate,jstate) -= one_e_tr_dm_mo(j,i,istate,jstate) * mo_dipole_z(j,i) + enddo + enddo enddo - enddo - enddo + + else + + ! no enouph memory + ! on the fly scheme + + PROVIDE psi_det_alpha_unique psi_det_beta_unique + + integer :: l, k_a, k_b + integer :: occ(N_int*bit_kind_size,2) + integer :: h1, h2, p1, p2, degree + integer :: exc(0:2,2), n_occ(2) + integer :: krow, kcol, lrow, lcol + integer(bit_kind) :: tmp_det(N_int,2), tmp_det2(N_int) + double precision :: ck, ckl, phase + + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP PRIVATE(j, l, k_a, k_b, istate, jstate, occ, ck, ckl, h1, h2, p1, p2, exc, & + !$OMP phase, degree, n_occ, krow, kcol, lrow, lcol, tmp_det, tmp_det2) & + !$OMP SHARED(N_int, N_states, elec_alpha_num, elec_beta_num, N_det, & + !$OMP psi_bilinear_matrix_rows, psi_bilinear_matrix_columns, & + !$OMP psi_bilinear_matrix_transp_rows, psi_bilinear_matrix_transp_columns, & + !$OMP psi_det_alpha_unique, psi_det_beta_unique, & + !$OMP psi_bilinear_matrix_values, psi_bilinear_matrix_transp_values, & + !$OMP mo_dipole_x, mo_dipole_y, mo_dipole_z, & + !$OMP multi_s_x_dipole_moment, multi_s_y_dipole_moment, multi_s_z_dipole_moment) + !$OMP DO COLLAPSE(2) + do istate = 1, N_states + do jstate = 1, N_states + + do k_a = 1, N_det + krow = psi_bilinear_matrix_rows (k_a) + kcol = psi_bilinear_matrix_columns(k_a) + + tmp_det(1:N_int,1) = psi_det_alpha_unique(1:N_int,krow) + tmp_det(1:N_int,2) = psi_det_beta_unique (1:N_int,kcol) + + ! Diagonal part + call bitstring_to_list_ab(tmp_det, occ, n_occ, N_int) + ck = psi_bilinear_matrix_values(k_a,istate)*psi_bilinear_matrix_values(k_a,jstate) + do l = 1, elec_alpha_num + j = occ(l,1) + multi_s_x_dipole_moment(istate,jstate) -= ck * mo_dipole_x(j,j) + multi_s_y_dipole_moment(istate,jstate) -= ck * mo_dipole_y(j,j) + multi_s_z_dipole_moment(istate,jstate) -= ck * mo_dipole_z(j,j) + enddo + + if (k_a == N_det) cycle + l = k_a + 1 + lrow = psi_bilinear_matrix_rows (l) + lcol = psi_bilinear_matrix_columns(l) + ! Fix beta determinant, loop over alphas + do while (lcol == kcol) + tmp_det2(:) = psi_det_alpha_unique(:,lrow) + call get_excitation_degree_spin(tmp_det(1,1), tmp_det2, degree, N_int) + if (degree == 1) then + exc = 0 + call get_single_excitation_spin(tmp_det(1,1), tmp_det2, exc, phase, N_int) + call decode_exc_spin(exc, h1, p1, h2, p2) + ckl = psi_bilinear_matrix_values(k_a,istate)*psi_bilinear_matrix_values(l,jstate) * phase + multi_s_x_dipole_moment(istate,jstate) -= ckl * mo_dipole_x(h1,p1) + multi_s_y_dipole_moment(istate,jstate) -= ckl * mo_dipole_y(h1,p1) + multi_s_z_dipole_moment(istate,jstate) -= ckl * mo_dipole_z(h1,p1) + ckl = psi_bilinear_matrix_values(k_a,jstate)*psi_bilinear_matrix_values(l,istate) * phase + multi_s_x_dipole_moment(istate,jstate) -= ckl * mo_dipole_x(p1,h1) + multi_s_y_dipole_moment(istate,jstate) -= ckl * mo_dipole_y(p1,h1) + multi_s_z_dipole_moment(istate,jstate) -= ckl * mo_dipole_z(p1,h1) + endif + l = l+1 + if (l > N_det) exit + lrow = psi_bilinear_matrix_rows (l) + lcol = psi_bilinear_matrix_columns(l) + enddo + enddo ! k_a + + do k_b = 1, N_det + krow = psi_bilinear_matrix_transp_rows (k_b) + kcol = psi_bilinear_matrix_transp_columns(k_b) + + tmp_det(1:N_int,1) = psi_det_alpha_unique(1:N_int,krow) + tmp_det(1:N_int,2) = psi_det_beta_unique (1:N_int,kcol) + + ! Diagonal part + call bitstring_to_list_ab(tmp_det, occ, n_occ, N_int) + ck = psi_bilinear_matrix_transp_values(k_b,istate)*psi_bilinear_matrix_transp_values(k_b,jstate) + do l = 1, elec_beta_num + j = occ(l,2) + multi_s_x_dipole_moment(istate,jstate) -= ck * mo_dipole_x(j,j) + multi_s_y_dipole_moment(istate,jstate) -= ck * mo_dipole_y(j,j) + multi_s_z_dipole_moment(istate,jstate) -= ck * mo_dipole_z(j,j) + enddo + + if (k_b == N_det) cycle + l = k_b+1 + lrow = psi_bilinear_matrix_transp_rows (l) + lcol = psi_bilinear_matrix_transp_columns(l) + ! Fix beta determinant, loop over alphas + do while (lrow == krow) + tmp_det2(:) = psi_det_beta_unique(:,lcol) + call get_excitation_degree_spin(tmp_det(1,2), tmp_det2, degree, N_int) + if (degree == 1) then + exc = 0 + call get_single_excitation_spin(tmp_det(1,2), tmp_det2, exc, phase, N_int) + call decode_exc_spin(exc, h1, p1, h2, p2) + ckl = psi_bilinear_matrix_transp_values(k_b,istate)*psi_bilinear_matrix_transp_values(l,jstate) * phase + multi_s_x_dipole_moment(istate,jstate) -= ckl * mo_dipole_x(h1,p1) + multi_s_y_dipole_moment(istate,jstate) -= ckl * mo_dipole_y(h1,p1) + multi_s_z_dipole_moment(istate,jstate) -= ckl * mo_dipole_z(h1,p1) + ckl = psi_bilinear_matrix_transp_values(k_b,jstate)*psi_bilinear_matrix_transp_values(l,istate) * phase + multi_s_x_dipole_moment(istate,jstate) -= ckl * mo_dipole_x(p1,h1) + multi_s_y_dipole_moment(istate,jstate) -= ckl * mo_dipole_y(p1,h1) + multi_s_z_dipole_moment(istate,jstate) -= ckl * mo_dipole_z(p1,h1) + endif + l = l+1 + if (l > N_det) exit + lrow = psi_bilinear_matrix_transp_rows (l) + lcol = psi_bilinear_matrix_transp_columns(l) + enddo + enddo ! k_b + + enddo ! istate + enddo ! jstate + !$OMP END DO + !$OMP END PARALLEL + + endif ! memory condition ! Nuclei part nuclei_part_x = 0.d0 From 70f8019960140b965476e1efa88ee8e03850b0d9 Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 23 May 2024 10:02:46 +0200 Subject: [PATCH 048/159] removed stupid print in tc_keywords/EZFIO.cfg --- plugins/local/tc_keywords/EZFIO.cfg | 1 - src/mu_of_r/f_hf_cholesky.irp.f | 75 +++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/plugins/local/tc_keywords/EZFIO.cfg b/plugins/local/tc_keywords/EZFIO.cfg index b7ce0b19..f3bd75c8 100644 --- a/plugins/local/tc_keywords/EZFIO.cfg +++ b/plugins/local/tc_keywords/EZFIO.cfg @@ -273,4 +273,3 @@ type: logical doc: If |true|, you duplicate the two-electron TC integrals with the transpose matrix. Acceleates the PT2. interface: ezfio,provider,ocaml default: False ->>>>>>> 8c4183cf6e38711b097df202d1f430b76823aeff diff --git a/src/mu_of_r/f_hf_cholesky.irp.f b/src/mu_of_r/f_hf_cholesky.irp.f index 84097f09..101f9cc9 100644 --- a/src/mu_of_r/f_hf_cholesky.irp.f +++ b/src/mu_of_r/f_hf_cholesky.irp.f @@ -187,6 +187,81 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky, (n_points_final_grid)] endif END_PROVIDER +BEGIN_PROVIDER [ double precision, f_hf_sparse_cholesky, (n_points_final_grid)] + implicit none + integer :: ipoint,m,mm,i,ii,p + !!f(R) = \sum_{I} \sum_{J} Phi_I(R) Phi_J(R) V_IJ + !! = \sum_{I}\sum_{J}\sum_A Phi_I(R) Phi_J(R) V_AI V_AJ + !! = \sum_A \sum_{I}Phi_I(R)V_AI \sum_{J}V_AJ Phi_J(R) + !! = \sum_A V_AR G_AR + !! V_AR = \sum_{I}Phi_IR V_AI = \sum_{I}Phi^t_RI V_AI + double precision :: u_dot_v,wall0,wall1,accu_1, accu_2,mo_i_r1,mo_b_r1 + if(elec_alpha_num == elec_beta_num)then + call wall_time(wall0) +! !$OMP PARALLEL DO & +! !$OMP DEFAULT (NONE) & +! !$OMP PRIVATE (ipoint,m) & +! !$OMP ShARED (mos_times_cholesky_r1,cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid) + do ipoint = 1, n_points_final_grid + f_hf_sparse_cholesky(ipoint) = 0.d0 + do p = 1, cholesky_mo_num + accu_1 = 0.d0 + do ii = 1, n_occ_val_orb_for_hf(1) + i = list_valence_orb_for_hf(ii,1) + mo_i_r1 = mos_in_r_array_omp(i,ipoint) + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + mo_b_r1 = mos_in_r_array_omp(m,ipoint) + accu_1 += mo_i_r1 * mo_b_r1 * cholesky_mo(m,i,p) + enddo + enddo + f_hf_sparse_cholesky(ipoint) += accu_1 * accu_1 + enddo + f_hf_sparse_cholesky(ipoint) *= 2.D0 + enddo +! !$OMP END PARALLEL DO + + call wall_time(wall1) + print*,'Time to provide f_hf_sparse_cholesky = ',wall1-wall0 + else + call wall_time(wall0) +! !$OMP PARALLEL DO & +! !$OMP DEFAULT (NONE) & +! !$OMP PRIVATE (ipoint,m) & +! !$OMP ShARED (mos_times_cholesky_r1,cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid) + do ipoint = 1, n_points_final_grid + f_hf_sparse_cholesky(ipoint) = 0.d0 + do p = 1, cholesky_mo_num + accu_2 = 0.d0 + do ii = 1, n_occ_val_orb_for_hf(2) + i = list_valence_orb_for_hf(ii,2) + mo_i_r1 = mos_in_r_array_omp(i,ipoint) + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + mo_b_r1 = mos_in_r_array_omp(m,ipoint) + accu_2 += mo_i_r1 * mo_b_r1 * cholesky_mo(m,i,p) + enddo + enddo + accu_1 = accu_2 + do ii = n_occ_val_orb_for_hf(2)+1,n_occ_val_orb_for_hf(1) + i = list_valence_orb_for_hf(ii,1) + mo_i_r1 = mos_in_r_array_omp(i,ipoint) + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + mo_b_r1 = mos_in_r_array_omp(m,ipoint) + accu_1 += mo_i_r1 * mo_b_r1 * cholesky_mo(m,i,p) + enddo + enddo + f_hf_sparse_cholesky(ipoint) += accu_1 * accu_2 + enddo + f_hf_sparse_cholesky(ipoint) *= 2.D0 + enddo +! !$OMP END PARALLEL DO + call wall_time(wall1) + print*,'Time to provide f_hf_sparse_cholesky = ',wall1-wall0 + endif +END_PROVIDER + BEGIN_PROVIDER [ double precision, on_top_hf_grid, (n_points_final_grid)] implicit none integer :: ipoint,i,ii From 49a96d4400c640928ba213f33e0493eadb4457ad Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 23 May 2024 10:17:31 +0200 Subject: [PATCH 049/159] added f_hf_cholesky without big storage in memory --- .../basis_correction/test_chol_bas.irp.f | 18 ++++++++++++ src/mu_of_r/f_hf_cholesky.irp.f | 28 +++++++++++-------- 2 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 plugins/local/basis_correction/test_chol_bas.irp.f diff --git a/plugins/local/basis_correction/test_chol_bas.irp.f b/plugins/local/basis_correction/test_chol_bas.irp.f new file mode 100644 index 00000000..ae47ec09 --- /dev/null +++ b/plugins/local/basis_correction/test_chol_bas.irp.f @@ -0,0 +1,18 @@ +program pouet + implicit none + call test +end +subroutine test + implicit none +! provide mos_times_cholesky_r1 +! provide mos_times_cholesky_r2 + integer :: ipoint + double precision :: accu,weight + accu = 0.d0 + do ipoint = 1, n_points_final_grid + weight = final_weight_at_r_vector(ipoint) +! accu += dabs(mu_of_r_hf(ipoint) - mu_of_r_hf_old(ipoint)) * weight + accu += dabs(f_hf_sparse_cholesky(ipoint) - f_hf_cholesky(ipoint)) * weight + enddo + print*,'accu = ',accu +end diff --git a/src/mu_of_r/f_hf_cholesky.irp.f b/src/mu_of_r/f_hf_cholesky.irp.f index 101f9cc9..b937addf 100644 --- a/src/mu_of_r/f_hf_cholesky.irp.f +++ b/src/mu_of_r/f_hf_cholesky.irp.f @@ -146,9 +146,9 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky, (n_points_final_grid)] !! V_AR = \sum_{I}Phi_IR V_AI = \sum_{I}Phi^t_RI V_AI double precision :: u_dot_v,wall0,wall1 if(elec_alpha_num == elec_beta_num)then - provide mos_times_cholesky_r1 print*,'providing f_hf_cholesky ...' call wall_time(wall0) + provide mos_times_cholesky_r1 !$OMP PARALLEL DO & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (ipoint,m) & @@ -167,6 +167,8 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky, (n_points_final_grid)] print*,'Time to provide f_hf_cholesky = ',wall1-wall0 free mos_times_cholesky_r1 else + print*,'providing f_hf_cholesky ...' + call wall_time(wall0) provide mos_times_cholesky_r2 mos_times_cholesky_r1 !$OMP PARALLEL DO & !$OMP DEFAULT (NONE) & @@ -198,10 +200,11 @@ BEGIN_PROVIDER [ double precision, f_hf_sparse_cholesky, (n_points_final_grid)] double precision :: u_dot_v,wall0,wall1,accu_1, accu_2,mo_i_r1,mo_b_r1 if(elec_alpha_num == elec_beta_num)then call wall_time(wall0) -! !$OMP PARALLEL DO & -! !$OMP DEFAULT (NONE) & -! !$OMP PRIVATE (ipoint,m) & -! !$OMP ShARED (mos_times_cholesky_r1,cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid) + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (accu_1,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) & + !$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,list_basis,mos_in_r_array_omp) & + !$OMP ShARED (cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid,cholesky_mo,n_basis_orb) do ipoint = 1, n_points_final_grid f_hf_sparse_cholesky(ipoint) = 0.d0 do p = 1, cholesky_mo_num @@ -219,16 +222,17 @@ BEGIN_PROVIDER [ double precision, f_hf_sparse_cholesky, (n_points_final_grid)] enddo f_hf_sparse_cholesky(ipoint) *= 2.D0 enddo -! !$OMP END PARALLEL DO + !$OMP END PARALLEL DO call wall_time(wall1) print*,'Time to provide f_hf_sparse_cholesky = ',wall1-wall0 - else + else call wall_time(wall0) -! !$OMP PARALLEL DO & -! !$OMP DEFAULT (NONE) & -! !$OMP PRIVATE (ipoint,m) & -! !$OMP ShARED (mos_times_cholesky_r1,cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid) + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (accu_2,accu_1,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) & + !$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,list_basis,mos_in_r_array_omp) & + !$OMP ShARED (cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid,cholesky_mo,n_basis_orb) do ipoint = 1, n_points_final_grid f_hf_sparse_cholesky(ipoint) = 0.d0 do p = 1, cholesky_mo_num @@ -256,7 +260,7 @@ BEGIN_PROVIDER [ double precision, f_hf_sparse_cholesky, (n_points_final_grid)] enddo f_hf_sparse_cholesky(ipoint) *= 2.D0 enddo -! !$OMP END PARALLEL DO + !$OMP END PARALLEL DO call wall_time(wall1) print*,'Time to provide f_hf_sparse_cholesky = ',wall1-wall0 endif From 70745cbeaaf59900c3ce4e1df042ef88ff1ecb11 Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 23 May 2024 14:45:33 +0200 Subject: [PATCH 050/159] added sparse cholesky mu_of_r --- external/irpf90 | 2 +- .../basis_correction/basis_correction.irp.f | 4 -- .../basis_correction/print_routine.irp.f | 2 +- .../basis_correction/test_chol_bas.irp.f | 2 +- src/mu_of_r/f_hf_cholesky.irp.f | 52 ++++++++++++------- src/mu_of_r/mu_of_r_conditions.irp.f | 44 ++++++++++++++-- 6 files changed, 76 insertions(+), 30 deletions(-) diff --git a/external/irpf90 b/external/irpf90 index 0007f72f..4ab1b175 160000 --- a/external/irpf90 +++ b/external/irpf90 @@ -1 +1 @@ -Subproject commit 0007f72f677fe7d61c5e1ed461882cb239517102 +Subproject commit 4ab1b175fc7ed0d96c1912f13dc53579b24157a6 diff --git a/plugins/local/basis_correction/basis_correction.irp.f b/plugins/local/basis_correction/basis_correction.irp.f index a7ea7244..f17b5d5b 100644 --- a/plugins/local/basis_correction/basis_correction.irp.f +++ b/plugins/local/basis_correction/basis_correction.irp.f @@ -7,10 +7,6 @@ program basis_correction touch read_wf no_core_density = .True. touch no_core_density - if(io_mo_two_e_integrals .ne. "Read")then - provide ao_two_e_integrals_in_map - endif - provide mo_two_e_integrals_in_map call print_basis_correction end diff --git a/plugins/local/basis_correction/print_routine.irp.f b/plugins/local/basis_correction/print_routine.irp.f index 96faba30..b3b38673 100644 --- a/plugins/local/basis_correction/print_routine.irp.f +++ b/plugins/local/basis_correction/print_routine.irp.f @@ -22,7 +22,7 @@ subroutine print_basis_correction print*, '****************************************' print*, '****************************************' print*, 'mu_of_r_potential = ',mu_of_r_potential - if(mu_of_r_potential.EQ."hf")then + if(mu_of_r_potential.EQ."hf".or.mu_of_r_potential.EQ."hf_old".or.mu_of_r_potential.EQ."hf_sparse")then print*, '' print*,'Using a HF-like two-body density to define mu(r)' print*,'This assumes that HF is a qualitative representation of the wave function ' diff --git a/plugins/local/basis_correction/test_chol_bas.irp.f b/plugins/local/basis_correction/test_chol_bas.irp.f index ae47ec09..076d888c 100644 --- a/plugins/local/basis_correction/test_chol_bas.irp.f +++ b/plugins/local/basis_correction/test_chol_bas.irp.f @@ -12,7 +12,7 @@ subroutine test do ipoint = 1, n_points_final_grid weight = final_weight_at_r_vector(ipoint) ! accu += dabs(mu_of_r_hf(ipoint) - mu_of_r_hf_old(ipoint)) * weight - accu += dabs(f_hf_sparse_cholesky(ipoint) - f_hf_cholesky(ipoint)) * weight + accu += dabs(f_hf_cholesky_sparse(ipoint) - f_hf_cholesky(ipoint)) * weight enddo print*,'accu = ',accu end diff --git a/src/mu_of_r/f_hf_cholesky.irp.f b/src/mu_of_r/f_hf_cholesky.irp.f index b937addf..17f0229a 100644 --- a/src/mu_of_r/f_hf_cholesky.irp.f +++ b/src/mu_of_r/f_hf_cholesky.irp.f @@ -189,7 +189,7 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky, (n_points_final_grid)] endif END_PROVIDER -BEGIN_PROVIDER [ double precision, f_hf_sparse_cholesky, (n_points_final_grid)] +BEGIN_PROVIDER [ double precision, f_hf_cholesky_sparse, (n_points_final_grid)] implicit none integer :: ipoint,m,mm,i,ii,p !!f(R) = \sum_{I} \sum_{J} Phi_I(R) Phi_J(R) V_IJ @@ -198,43 +198,55 @@ BEGIN_PROVIDER [ double precision, f_hf_sparse_cholesky, (n_points_final_grid)] !! = \sum_A V_AR G_AR !! V_AR = \sum_{I}Phi_IR V_AI = \sum_{I}Phi^t_RI V_AI double precision :: u_dot_v,wall0,wall1,accu_1, accu_2,mo_i_r1,mo_b_r1 + double precision :: thresh_1,thresh_2 + double precision, allocatable :: accu_vec(:) + thresh_2 = ao_cholesky_threshold * 100.d0 + thresh_1 = dsqrt(thresh_2) + provide cholesky_mo_transp if(elec_alpha_num == elec_beta_num)then call wall_time(wall0) - !$OMP PARALLEL DO & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (accu_1,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) & - !$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,list_basis,mos_in_r_array_omp) & - !$OMP ShARED (cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid,cholesky_mo,n_basis_orb) + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP PRIVATE (accu_vec,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) & + !$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,list_basis,mos_in_r_array_omp,thresh_1,thresh_2) & + !$OMP ShARED (cholesky_mo_num,f_hf_cholesky_sparse,n_points_final_grid,cholesky_mo_transp,n_basis_orb) + allocate(accu_vec(cholesky_mo_num)) + !$OMP DO do ipoint = 1, n_points_final_grid - f_hf_sparse_cholesky(ipoint) = 0.d0 - do p = 1, cholesky_mo_num - accu_1 = 0.d0 + f_hf_cholesky_sparse(ipoint) = 0.d0 + accu_vec = 0.d0 do ii = 1, n_occ_val_orb_for_hf(1) i = list_valence_orb_for_hf(ii,1) mo_i_r1 = mos_in_r_array_omp(i,ipoint) + if(dabs(mo_i_r1).lt.thresh_1)cycle do mm = 1, n_basis_orb ! electron 1 m = list_basis(mm) mo_b_r1 = mos_in_r_array_omp(m,ipoint) - accu_1 += mo_i_r1 * mo_b_r1 * cholesky_mo(m,i,p) + if(dabs(mo_i_r1*mo_b_r1).lt.thresh_2)cycle + do p = 1, cholesky_mo_num + accu_vec(p) += mo_i_r1 * mo_b_r1 * cholesky_mo_transp(p,m,i) + enddo enddo enddo - f_hf_sparse_cholesky(ipoint) += accu_1 * accu_1 - enddo - f_hf_sparse_cholesky(ipoint) *= 2.D0 + do p = 1, cholesky_mo_num + f_hf_cholesky_sparse(ipoint) += accu_vec(p) * accu_vec(p) + enddo + f_hf_cholesky_sparse(ipoint) *= 2.D0 enddo - !$OMP END PARALLEL DO + !$OMP END DO + deallocate(accu_vec) + !$OMP END PARALLEL call wall_time(wall1) - print*,'Time to provide f_hf_sparse_cholesky = ',wall1-wall0 + print*,'Time to provide f_hf_cholesky_sparse = ',wall1-wall0 else call wall_time(wall0) !$OMP PARALLEL DO & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (accu_2,accu_1,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) & !$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,list_basis,mos_in_r_array_omp) & - !$OMP ShARED (cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid,cholesky_mo,n_basis_orb) + !$OMP ShARED (cholesky_mo_num,f_hf_cholesky_sparse,n_points_final_grid,cholesky_mo,n_basis_orb) do ipoint = 1, n_points_final_grid - f_hf_sparse_cholesky(ipoint) = 0.d0 + f_hf_cholesky_sparse(ipoint) = 0.d0 do p = 1, cholesky_mo_num accu_2 = 0.d0 do ii = 1, n_occ_val_orb_for_hf(2) @@ -256,13 +268,13 @@ BEGIN_PROVIDER [ double precision, f_hf_sparse_cholesky, (n_points_final_grid)] accu_1 += mo_i_r1 * mo_b_r1 * cholesky_mo(m,i,p) enddo enddo - f_hf_sparse_cholesky(ipoint) += accu_1 * accu_2 + f_hf_cholesky_sparse(ipoint) += accu_1 * accu_2 enddo - f_hf_sparse_cholesky(ipoint) *= 2.D0 + f_hf_cholesky_sparse(ipoint) *= 2.D0 enddo !$OMP END PARALLEL DO call wall_time(wall1) - print*,'Time to provide f_hf_sparse_cholesky = ',wall1-wall0 + print*,'Time to provide f_hf_cholesky_sparse = ',wall1-wall0 endif END_PROVIDER diff --git a/src/mu_of_r/mu_of_r_conditions.irp.f b/src/mu_of_r/mu_of_r_conditions.irp.f index 5b4d4b83..f2bb7145 100644 --- a/src/mu_of_r/mu_of_r_conditions.irp.f +++ b/src/mu_of_r/mu_of_r_conditions.irp.f @@ -13,7 +13,6 @@ integer :: ipoint,istate double precision :: wall0,wall1 print*,'providing mu_of_r ...' -! PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals call wall_time(wall0) if (read_mu_of_r) then @@ -26,6 +25,10 @@ do ipoint = 1, n_points_final_grid if(mu_of_r_potential.EQ."hf")then mu_of_r_prov(ipoint,istate) = mu_of_r_hf(ipoint) + else if(mu_of_r_potential.EQ."hf_old")then + mu_of_r_prov(ipoint,istate) = mu_of_r_hf_old(ipoint) + else if(mu_of_r_potential.EQ."hf_sparse")then + mu_of_r_prov(ipoint,istate) = mu_of_r_hf_sparse(ipoint) else if(mu_of_r_potential.EQ."cas_full".or.mu_of_r_potential.EQ."cas_truncated".or.mu_of_r_potential.EQ."pure_act")then mu_of_r_prov(ipoint,istate) = mu_of_r_psi_cas(ipoint,istate) else @@ -61,11 +64,10 @@ END_DOC integer :: ipoint double precision :: wall0,wall1,f_hf,on_top,w_hf,sqpi - PROVIDE f_hf_cholesky on_top_hf_grid print*,'providing mu_of_r_hf ...' call wall_time(wall0) + PROVIDE f_hf_cholesky on_top_hf_grid sqpi = dsqrt(dacos(-1.d0)) - provide f_psi_hf_ab !$OMP PARALLEL DO & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (ipoint,f_hf,on_top,w_hf) & @@ -85,6 +87,42 @@ print*,'Time to provide mu_of_r_hf = ',wall1-wall0 END_PROVIDER + BEGIN_PROVIDER [double precision, mu_of_r_hf_sparse, (n_points_final_grid) ] + implicit none + BEGIN_DOC + ! mu(r) computed with a HF wave function (assumes that HF MOs are stored in the EZFIO) + ! + ! corresponds to Eq. (37) of J. Chem. Phys. 149, 194301 (2018) but for \Psi^B = HF^B + ! + ! !!!!!! WARNING !!!!!! if no_core_density == .True. then all contributions from the core orbitals + ! + ! in the two-body density matrix are excluded + END_DOC + integer :: ipoint + double precision :: wall0,wall1,f_hf,on_top,w_hf,sqpi + print*,'providing mu_of_r_hf_sparse ...' + call wall_time(wall0) + sqpi = dsqrt(dacos(-1.d0)) + PROVIDE f_hf_cholesky_sparse on_top_hf_grid + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint,f_hf,on_top,w_hf) & + !$OMP ShARED (n_points_final_grid,mu_of_r_hf_sparse,f_hf_cholesky_sparse,on_top_hf_grid,sqpi) + do ipoint = 1, n_points_final_grid + f_hf = f_hf_cholesky_sparse(ipoint) + on_top = on_top_hf_grid(ipoint) + if(on_top.le.1.d-12.or.f_hf.le.0.d0.or.f_hf * on_top.lt.0.d0)then + w_hf = 1.d+10 + else + w_hf = f_hf / on_top + endif + mu_of_r_hf_sparse(ipoint) = w_hf * sqpi * 0.5d0 + enddo + !$OMP END PARALLEL DO + call wall_time(wall1) + print*,'Time to provide mu_of_r_hf_sparse = ',wall1-wall0 + END_PROVIDER + BEGIN_PROVIDER [double precision, mu_of_r_hf_old, (n_points_final_grid) ] implicit none BEGIN_DOC From 1e886ac128187624af9efac5dd0cbe29e594ff5b Mon Sep 17 00:00:00 2001 From: eginer Date: Mon, 27 May 2024 10:21:29 +0200 Subject: [PATCH 051/159] implemented the f_hf_sparse for open systems in basis set correction --- src/dft_utils_func/on_top_from_ueg.irp.f | 1 - src/mo_two_e_ints/cholesky.irp.f | 4 +++ src/mu_of_r/f_hf_cholesky.irp.f | 45 +++++++++++++++--------- 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/src/dft_utils_func/on_top_from_ueg.irp.f b/src/dft_utils_func/on_top_from_ueg.irp.f index 4e28ad89..711ffc39 100644 --- a/src/dft_utils_func/on_top_from_ueg.irp.f +++ b/src/dft_utils_func/on_top_from_ueg.irp.f @@ -32,7 +32,6 @@ double precision function g0_UEG_mu_inf(rho_a,rho_b) C = 0.08193d0 D = -0.01277d0 E = 0.001859d0 - x = -d2*rs if (dabs(rho) > 1.d-20) then rs = (3d0 / (4d0*pi*rho))**(1d0/3d0) ! JT: serious bug fixed 20/03/19 x = -d2*rs diff --git a/src/mo_two_e_ints/cholesky.irp.f b/src/mo_two_e_ints/cholesky.irp.f index 349f13b9..0d0989d7 100644 --- a/src/mo_two_e_ints/cholesky.irp.f +++ b/src/mo_two_e_ints/cholesky.irp.f @@ -34,8 +34,10 @@ BEGIN_PROVIDER [ double precision, cholesky_mo_transp, (cholesky_mo_num, mo_num, END_DOC double precision, allocatable :: X(:,:,:) + double precision :: wall0, wall1 integer :: ierr print *, 'AO->MO Transformation of Cholesky vectors' + call wall_time(wall0) allocate(X(mo_num,cholesky_mo_num,ao_num), stat=ierr) if (ierr /= 0) then @@ -46,6 +48,8 @@ BEGIN_PROVIDER [ double precision, cholesky_mo_transp, (cholesky_mo_num, mo_num, call dgemm('T','N', cholesky_mo_num*mo_num, mo_num, ao_num, 1.d0, & X, ao_num, mo_coef, ao_num, 0.d0, cholesky_mo_transp, cholesky_mo_num*mo_num) deallocate(X) + call wall_time(wall1) + print*,'Time for AO->MO Cholesky vectors = ',wall1-wall0 END_PROVIDER diff --git a/src/mu_of_r/f_hf_cholesky.irp.f b/src/mu_of_r/f_hf_cholesky.irp.f index 17f0229a..472abb1c 100644 --- a/src/mu_of_r/f_hf_cholesky.irp.f +++ b/src/mu_of_r/f_hf_cholesky.irp.f @@ -199,7 +199,7 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky_sparse, (n_points_final_grid)] !! V_AR = \sum_{I}Phi_IR V_AI = \sum_{I}Phi^t_RI V_AI double precision :: u_dot_v,wall0,wall1,accu_1, accu_2,mo_i_r1,mo_b_r1 double precision :: thresh_1,thresh_2 - double precision, allocatable :: accu_vec(:) + double precision, allocatable :: accu_vec(:),delta_vec(:) thresh_2 = ao_cholesky_threshold * 100.d0 thresh_1 = dsqrt(thresh_2) provide cholesky_mo_transp @@ -223,12 +223,12 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky_sparse, (n_points_final_grid)] mo_b_r1 = mos_in_r_array_omp(m,ipoint) if(dabs(mo_i_r1*mo_b_r1).lt.thresh_2)cycle do p = 1, cholesky_mo_num - accu_vec(p) += mo_i_r1 * mo_b_r1 * cholesky_mo_transp(p,m,i) + accu_vec(p) = accu_vec(p) + mo_i_r1 * mo_b_r1 * cholesky_mo_transp(p,m,i) enddo enddo enddo do p = 1, cholesky_mo_num - f_hf_cholesky_sparse(ipoint) += accu_vec(p) * accu_vec(p) + f_hf_cholesky_sparse(ipoint) = f_hf_cholesky_sparse(ipoint) + accu_vec(p) * accu_vec(p) enddo f_hf_cholesky_sparse(ipoint) *= 2.D0 enddo @@ -240,39 +240,50 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky_sparse, (n_points_final_grid)] print*,'Time to provide f_hf_cholesky_sparse = ',wall1-wall0 else call wall_time(wall0) - !$OMP PARALLEL DO & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (accu_2,accu_1,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) & - !$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,list_basis,mos_in_r_array_omp) & - !$OMP ShARED (cholesky_mo_num,f_hf_cholesky_sparse,n_points_final_grid,cholesky_mo,n_basis_orb) + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP PRIVATE (accu_vec,delta_vec,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) & + !$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,list_basis,mos_in_r_array_omp,thresh_1,thresh_2) & + !$OMP ShARED (cholesky_mo_num,f_hf_cholesky_sparse,n_points_final_grid,cholesky_mo_transp,n_basis_orb) + allocate(accu_vec(cholesky_mo_num),delta_vec(cholesky_mo_num)) + !$OMP DO do ipoint = 1, n_points_final_grid f_hf_cholesky_sparse(ipoint) = 0.d0 - do p = 1, cholesky_mo_num - accu_2 = 0.d0 + accu_vec = 0.d0 do ii = 1, n_occ_val_orb_for_hf(2) i = list_valence_orb_for_hf(ii,2) mo_i_r1 = mos_in_r_array_omp(i,ipoint) + if(dabs(mo_i_r1).lt.thresh_1)cycle do mm = 1, n_basis_orb ! electron 1 m = list_basis(mm) mo_b_r1 = mos_in_r_array_omp(m,ipoint) - accu_2 += mo_i_r1 * mo_b_r1 * cholesky_mo(m,i,p) + if(dabs(mo_i_r1*mo_b_r1).lt.thresh_2)cycle + do p = 1, cholesky_mo_num + accu_vec(p) = accu_vec(p) + mo_i_r1 * mo_b_r1 * cholesky_mo_transp(p,m,i) + enddo enddo enddo - accu_1 = accu_2 - do ii = n_occ_val_orb_for_hf(2)+1,n_occ_val_orb_for_hf(1) + delta_vec = 0.d0 + do ii = n_occ_val_orb_for_hf(2)+1,n_occ_val_orb_for_hf(1) i = list_valence_orb_for_hf(ii,1) mo_i_r1 = mos_in_r_array_omp(i,ipoint) + if(dabs(mo_i_r1).lt.thresh_1)cycle do mm = 1, n_basis_orb ! electron 1 m = list_basis(mm) mo_b_r1 = mos_in_r_array_omp(m,ipoint) - accu_1 += mo_i_r1 * mo_b_r1 * cholesky_mo(m,i,p) + if(dabs(mo_i_r1*mo_b_r1).lt.thresh_2)cycle + do p = 1, cholesky_mo_num + delta_vec(p) = delta_vec(p) + mo_i_r1 * mo_b_r1 * cholesky_mo_transp(p,m,i) + enddo enddo enddo - f_hf_cholesky_sparse(ipoint) += accu_1 * accu_2 - enddo + do p = 1, cholesky_mo_num + f_hf_cholesky_sparse(ipoint) = f_hf_cholesky_sparse(ipoint) + accu_vec(p) * accu_vec(p) + accu_vec(p) * delta_vec(p) + enddo f_hf_cholesky_sparse(ipoint) *= 2.D0 enddo - !$OMP END PARALLEL DO + !$OMP END DO + deallocate(accu_vec) + !$OMP END PARALLEL call wall_time(wall1) print*,'Time to provide f_hf_cholesky_sparse = ',wall1-wall0 endif From 4d18a0124e9a3cd088ce19e0c56801d7e4fb478d Mon Sep 17 00:00:00 2001 From: eginer Date: Mon, 27 May 2024 10:23:47 +0200 Subject: [PATCH 052/159] changed the default in mu_of_r_potential --- src/mu_of_r/EZFIO.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mu_of_r/EZFIO.cfg b/src/mu_of_r/EZFIO.cfg index a66b00ef..7a39b012 100644 --- a/src/mu_of_r/EZFIO.cfg +++ b/src/mu_of_r/EZFIO.cfg @@ -6,9 +6,9 @@ size: (becke_numerical_grid.n_points_final_grid,determinants.n_states) [mu_of_r_potential] type: character*(32) -doc: type of potential for the mu(r) interaction: can be [ hf| cas_full | cas_truncated | pure_act] +doc: type of potential for the mu(r) interaction: can be [ hf| hf_sparse | cas_full | cas_truncated | pure_act] interface: ezfio, provider, ocaml -default: hf +default: hf_sparse [io_mu_of_r] type: Disk_access From 09d9a814d2646cc599bdbdcb0886461fd8ed6688 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 27 May 2024 11:38:57 +0200 Subject: [PATCH 053/159] Added stop in (T) --- plugins/local/non_h_ints_mu/deb_mos.irp.f | 101 ++++++++++++++++++++++ plugins/local/non_h_ints_mu/qmckl.irp.f | 2 +- src/ccsd/ccsd_t_space_orb_stoch.irp.f | 17 +++- src/utils_cc/EZFIO.cfg | 6 ++ 4 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 plugins/local/non_h_ints_mu/deb_mos.irp.f diff --git a/plugins/local/non_h_ints_mu/deb_mos.irp.f b/plugins/local/non_h_ints_mu/deb_mos.irp.f new file mode 100644 index 00000000..26344786 --- /dev/null +++ b/plugins/local/non_h_ints_mu/deb_mos.irp.f @@ -0,0 +1,101 @@ + +! --- + +program deb_mos + + implicit none + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + if(tc_integ_type .eq. "numeric") then + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + endif + + call print_mos() + +end + +! --- + +subroutine print_mos() + + implicit none + integer :: i, ipoint + double precision :: r(3) + double precision :: mo_val, mo_der(3), mo_lap + + PROVIDE final_grid_points mos_in_r_array mos_grad_in_r_array mos_lapl_in_r_array + +! do ipoint = 1, n_points_final_grid +! r(:) = final_grid_points(:,ipoint) +! print*, r +! enddo +double precision :: accu_vgl(5) +double precision :: accu_vgl_nrm(5) + + do ipoint = 1, n_points_final_grid + r(1) = final_grid_points(1,i) + r(2) = final_grid_points(2,i) + r(3) = final_grid_points(3,i) + write(1111, '(5(f15.7, 3X))') r + do i = 1, mo_num + mo_val = mos_in_r_array (i,ipoint) + mo_der(:) = mos_grad_in_r_array(i,ipoint,:) + mo_lap = mos_lapl_in_r_array(i,ipoint,1) + mos_lapl_in_r_array(i,ipoint,2) + mos_lapl_in_r_array(i,ipoint,3) + write(1111, '(5(f15.7, 3X))') mo_val, mo_der, mo_lap + enddo + enddo + + do ipoint = 1, n_points_final_grid + r(1) = final_grid_points(1,i) + r(2) = final_grid_points(2,i) + r(3) = final_grid_points(3,i) + write(2222, '(5(f15.7, 3X))') r + do i = 1, mo_num + mo_val = mos_in_r_array_qmckl (i,ipoint) + mo_der(:) = mos_grad_in_r_array_qmckl(i,ipoint,:) + mo_lap = mos_lapl_in_r_array_qmckl(i,ipoint) + write(2222, '(5(f15.7, 3X))') mo_val, mo_der, mo_lap + enddo + enddo + + accu_vgl = 0.d0 + accu_vgl_nrm = 0.d0 + do ipoint = 1, n_points_final_grid + do i = 1, mo_num + mo_val = mos_in_r_array (i,ipoint) + mo_der(:) = mos_grad_in_r_array(i,ipoint,:) + mo_lap = mos_lapl_in_r_array(i,ipoint,1) + mos_lapl_in_r_array(i,ipoint,2) + mos_lapl_in_r_array(i,ipoint,3) + accu_vgl_nrm(1) += dabs(mo_val) + accu_vgl_nrm(2) += dabs(mo_der(1)) + accu_vgl_nrm(3) += dabs(mo_der(2)) + accu_vgl_nrm(4) += dabs(mo_der(3)) + accu_vgl_nrm(5) += dabs(mo_lap) + + mo_val -= mos_in_r_array_qmckl (i,ipoint) + mo_der(:) -= mos_grad_in_r_array_qmckl(i,ipoint,:) + mo_lap -= mos_lapl_in_r_array_qmckl(i,ipoint) + accu_vgl(1) += dabs(mo_val) + accu_vgl(2) += dabs(mo_der(1)) + accu_vgl(3) += dabs(mo_der(2)) + accu_vgl(4) += dabs(mo_der(3)) + accu_vgl(5) += dabs(mo_lap) + enddo + + enddo + accu_vgl(:) *= 1.d0 / accu_vgl_nrm(:) + print *, accu_vgl + + return +end + +! --- + diff --git a/plugins/local/non_h_ints_mu/qmckl.irp.f b/plugins/local/non_h_ints_mu/qmckl.irp.f index 4d419e24..de440f14 100644 --- a/plugins/local/non_h_ints_mu/qmckl.irp.f +++ b/plugins/local/non_h_ints_mu/qmckl.irp.f @@ -158,7 +158,7 @@ END_PROVIDER double precision, allocatable :: vgl(:,:,:) allocate( vgl(mo_num,5,n_points_final_grid)) - rc = qmckl_get_mo_basis_mo_vgl_inplace(qmckl_ctx, vgl, n_points_final_grid*mo_num*5_8) + rc = qmckl_get_mo_basis_mo_vgl(qmckl_ctx, vgl, n_points_final_grid*mo_num*5_8) if (rc /= QMCKL_SUCCESS) then print *, irp_here, 'qmckl error in get_mo_vgl' rc = qmckl_check(qmckl_ctx, rc) diff --git a/src/ccsd/ccsd_t_space_orb_stoch.irp.f b/src/ccsd/ccsd_t_space_orb_stoch.irp.f index 1093c59d..485382e2 100644 --- a/src/ccsd/ccsd_t_space_orb_stoch.irp.f +++ b/src/ccsd/ccsd_t_space_orb_stoch.irp.f @@ -217,11 +217,14 @@ subroutine ccsd_par_t_space_stoch(nO,nV,t1,t2,f_o,f_v,v_vvvo,v_vvoo,v_vooo,energ print '(A)', ' ======================= ============== ==========' + double precision :: t_error call set_multiple_levels_omp(.False.) call wall_time(t00) imin = 1_8 - !$OMP PARALLEL & - !$OMP PRIVATE(ieta,eta,a,b,c,kiter,isample) & + t_error = huge(1.d0) + + !$OMP PARALLEL & + !$OMP PRIVATE(ieta,eta,a,b,c,kiter,isample) & !$OMP DEFAULT(SHARED) NUM_THREADS(nthreads_pt2) do kiter=1,Nabc @@ -328,15 +331,23 @@ subroutine ccsd_par_t_space_stoch(nO,nV,t1,t2,f_o,f_v,v_vvvo,v_vvoo,v_vooo,energ if (norm > 0.d0) then energy_stoch = ET / norm variance = ET2 / norm - energy_stoch*energy_stoch + if (norm > 1.d0) then + t_error = dsqrt(variance/(norm-1.d0)) + else + t_error = dsqrt(variance) + endif endif energy = energy_det + energy_stoch - print '('' '',F20.8, '' '', ES12.4,'' '', F8.2,'' '')', eccsd+energy, dsqrt(variance/(norm-1.d0)), 100.*real(Ncomputed)/real(Nabc) + print '('' '',F20.8, '' '', ES12.4,'' '', F8.2,'' '')', eccsd+energy, t_error, 100.*real(Ncomputed)/real(Nabc) + endif !$OMP END MASTER + if (t_error < cc_par_t_stop) exit if (imin > Nabc) exit enddo + !$OMP TASKWAIT !$OMP END PARALLEL print '(A)', ' ======================= ============== ========== ' diff --git a/src/utils_cc/EZFIO.cfg b/src/utils_cc/EZFIO.cfg index fb6d9034..7d50d66a 100644 --- a/src/utils_cc/EZFIO.cfg +++ b/src/utils_cc/EZFIO.cfg @@ -58,6 +58,12 @@ doc: If true, the CCSD(T) will be computed. interface: ezfio,ocaml,provider default: False +[cc_par_t_stop] +type: double precision +doc: Stops the calculation when the statistical error bar is below the given value. +interface: ezfio,ocaml,provider +default: 1.e-5 + [cc_dev] type: logical doc: Only for dev purposes. From ed8cfdc599bdbeb6b66fd444cef6dc0ac2756d55 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 27 May 2024 12:58:07 +0200 Subject: [PATCH 054/159] Added print of the error bar in (T) --- src/ccsd/ccsd_space_orb_sub.irp.f | 14 ++++++++------ src/ccsd/ccsd_t_space_orb_stoch.irp.f | 5 ++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index b48ca7da..b8cfab2a 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -192,7 +192,7 @@ subroutine run_ccsd_space_orb deallocate(H_vv,H_oo,H_vo,r1,r2,tau) ! CCSD(T) - double precision :: e_t + double precision :: e_t, e_t_err e_t = 0.d0 if (cc_par_t .and. elec_alpha_num + elec_beta_num > 2) then @@ -210,22 +210,24 @@ subroutine run_ccsd_space_orb !print*,'' ! New + e_t = uncorr_energy + energy ! For print in (T) call + e_t_err = 0.d0 + print*,'Computing (T) correction...' call wall_time(ta) ! call ccsd_par_t_space_v3(nO,nV,t1,t2,cc_space_f_o,cc_space_f_v & ! ,cc_space_v_vvvo,cc_space_v_vvoo,cc_space_v_vooo,e_t) - e_t = uncorr_energy + energy ! For print in next call call ccsd_par_t_space_stoch(nO,nV,t1,t2,cc_space_f_o,cc_space_f_v & - ,cc_space_v_vvvo,cc_space_v_vvoo,cc_space_v_vooo,e_t) + ,cc_space_v_vvvo,cc_space_v_vvoo,cc_space_v_vooo,e_t, e_t_err) call wall_time(tb) print*,'Time: ',tb-ta, ' s' print*,'' - write(*,'(A15,F18.12,A3)') ' E(CCSD(T)) = ', uncorr_energy + energy + e_t, ' Ha' - write(*,'(A15,F18.12,A3)') ' E(T) = ', e_t, ' Ha' - write(*,'(A15,F18.12,A3)') ' Correlation = ', energy + e_t, ' Ha' + write(*,'(A15,F18.12,A7,F18.12)') ' E(CCSD(T)) = ', uncorr_energy + energy + e_t, ' Ha +/- ', e_t_err + write(*,'(A15,F18.12,A7,F18.12)') ' E(T) = ', e_t, ' Ha +/- ', e_t_err + write(*,'(A15,F18.12,A7,F18.12)') ' Correlation = ', energy + e_t, ' Ha +/- ', e_t_err print*,'' endif diff --git a/src/ccsd/ccsd_t_space_orb_stoch.irp.f b/src/ccsd/ccsd_t_space_orb_stoch.irp.f index 485382e2..851b6a9f 100644 --- a/src/ccsd/ccsd_t_space_orb_stoch.irp.f +++ b/src/ccsd/ccsd_t_space_orb_stoch.irp.f @@ -1,5 +1,5 @@ ! Main -subroutine ccsd_par_t_space_stoch(nO,nV,t1,t2,f_o,f_v,v_vvvo,v_vvoo,v_vooo,energy) +subroutine ccsd_par_t_space_stoch(nO,nV,t1,t2,f_o,f_v,v_vvvo,v_vvoo,v_vooo,energy,t_error) implicit none @@ -7,7 +7,7 @@ subroutine ccsd_par_t_space_stoch(nO,nV,t1,t2,f_o,f_v,v_vvvo,v_vvoo,v_vooo,energ double precision, intent(in) :: t1(nO,nV), f_o(nO), f_v(nV) double precision, intent(in) :: t2(nO,nO,nV,nV) double precision, intent(in) :: v_vvvo(nV,nV,nV,nO), v_vvoo(nV,nV,nO,nO), v_vooo(nV,nO,nO,nO) - double precision, intent(inout) :: energy + double precision, intent(inout) :: energy, t_error double precision, allocatable :: X_vovv(:,:,:,:), X_ooov(:,:,:,:), X_oovv(:,:,:,:) double precision, allocatable :: T_voov(:,:,:,:), T_oovv(:,:,:,:) @@ -217,7 +217,6 @@ subroutine ccsd_par_t_space_stoch(nO,nV,t1,t2,f_o,f_v,v_vvvo,v_vvoo,v_vooo,energ print '(A)', ' ======================= ============== ==========' - double precision :: t_error call set_multiple_levels_omp(.False.) call wall_time(t00) imin = 1_8 From b773a361b204a1f8424ae26bc2ac1a1a9d424a9f Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 31 May 2024 20:07:29 +0200 Subject: [PATCH 055/159] fixed uninitialized variable in cholesky' --- src/ao_two_e_ints/cholesky.irp.f | 38 ++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 5fbd166c..09d86679 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -22,6 +22,9 @@ END_PROVIDER ! = (ik|jl) = sum_a (ik|a).(a|jl) ! ! Last dimension of cholesky_ao is cholesky_ao_num + ! + ! https://mogp-emulator.readthedocs.io/en/latest/methods/proc/ProcPivotedCholesky.html + ! https://doi.org/10.1016/j.apnum.2011.10.001 : Page 4, Algorithm 1 END_DOC integer :: rank, ndim @@ -86,20 +89,25 @@ END_PROVIDER call print_memory_usage() allocate(L(ndim,1)) +!print *, 'allocate : (L(ndim,1))', memory_of_double(ndim) print *, '' print *, 'Cholesky decomposition of AO integrals' print *, '======================================' print *, '' - print *, '============ =============' - print *, ' Rank Threshold' - print *, '============ =============' + print *, '============ ============ =============' + print *, ' Rank Block size Threshold' + print *, '============ ============ =============' rank = 0 allocate( D(ndim), Lset(ndim), Dset(ndim) ) allocate( addr(3,ndim) ) +!print *, 'allocate : (D(ndim))', memory_of_int(ndim) +!print *, 'allocate : (Lset(ndim))', memory_of_int(ndim) +!print *, 'allocate : (Dset(ndim))', memory_of_int(ndim) +!print *, 'allocate : (3,addr(ndim))', memory_of_int(3*ndim) ! 1. k=0 @@ -151,9 +159,10 @@ END_PROVIDER ! a. i = i+1 - s = 0.01d0 ! Inrease s until the arrays fit in memory + s = 0.01d0 + block_size = max(N,24) do while (.True.) ! b. @@ -168,6 +177,7 @@ END_PROVIDER endif enddo + call total_memory(mem) mem = mem & + np*memory_of_double(nq) &! Delta(np,nq) @@ -176,23 +186,28 @@ END_PROVIDER if (mem > qp_max_mem) then s = s*2.d0 + block_size = block_size / 2 else exit endif if ((s > 1.d0).or.(nq == 0)) then call print_memory_usage() - print *, 'Not enough memory. Reduce cholesky threshold' + print *, 'Required peak memory: ', mem, 'Gb' + call total_memory(mem) + print *, 'Already used memory: ', mem, 'Gb' + print *, 'Not enough memory. Reduce cholesky threshold' stop -1 endif enddo ! d., e. - block_size = max(N,24) L_old => L allocate(L(ndim,rank+nq), stat=ierr) +!print *, 'allocate : L(ndim,rank+nq)', memory_of_double(ndim*(rank+nq)) + if (ierr /= 0) then call print_memory_usage() print *, irp_here, ': allocation failed : (L(ndim,rank+nq))' @@ -210,6 +225,8 @@ END_PROVIDER deallocate(L_old) allocate(Delta(np,nq), stat=ierr) +!print *, 'allocate : Delta(np,nq)', memory_of_double(np*nq) + if (ierr /= 0) then call print_memory_usage() print *, irp_here, ': allocation failed : (Delta(np,nq))' @@ -217,6 +234,8 @@ END_PROVIDER endif allocate(Ltmp_p(np,block_size), stat=ierr) +!print *, 'allocate : Ltmp_p(np,block_size)', memory_of_double(np*block_size) + if (ierr /= 0) then call print_memory_usage() print *, irp_here, ': allocation failed : (Ltmp_p(np,block_size))' @@ -224,6 +243,8 @@ END_PROVIDER endif allocate(Ltmp_q(nq,block_size), stat=ierr) +!print *, 'allocate : Ltmp_q(nq,block_size)', memory_of_double(nq*block_size) + if (ierr /= 0) then call print_memory_usage() print *, irp_here, ': allocation failed : (Ltmp_q(nq,block_size))' @@ -232,6 +253,7 @@ END_PROVIDER allocate(computed(nq)) +!print *, 'allocate : computed(nq)', memory_of_int(nq) !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(m,k,p,q,j) @@ -353,7 +375,7 @@ END_PROVIDER enddo - print '(I10, 4X, ES12.3)', rank, Qmax + print '(I10, 4X, I10, 4X, ES12.3)', rank, block_size, Qmax deallocate(computed) deallocate(Delta) @@ -380,6 +402,8 @@ END_PROVIDER enddo allocate(cholesky_ao(ao_num,ao_num,rank), stat=ierr) +!print *, 'allocate : cholesky_ao(ao_num,ao_num,rank)', ao_num*ao_num*(rank*1_8) * 8_8 / 1024_8**3 + if (ierr /= 0) then call print_memory_usage() print *, irp_here, ': Allocation failed' From 0dca6cfde4ba658518637c2f42ecb2e45c04de6a Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 31 May 2024 20:20:04 +0200 Subject: [PATCH 056/159] block size in cholesky --- src/ao_two_e_ints/cholesky.irp.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 09d86679..5a44571c 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -186,7 +186,7 @@ END_PROVIDER if (mem > qp_max_mem) then s = s*2.d0 - block_size = block_size / 2 + block_size = max(block_size / 2, 1) else exit endif From 0a3d462510a6146da21770ff6fff2f7a1794a0fb Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 31 May 2024 20:30:48 +0200 Subject: [PATCH 057/159] Clean up openmp in cholesky --- src/ao_two_e_ints/cholesky.irp.f | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 5a44571c..cfd57050 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -255,7 +255,7 @@ END_PROVIDER allocate(computed(nq)) !print *, 'allocate : computed(nq)', memory_of_int(nq) - !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(m,k,p,q,j) + !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q,j) !$OMP DO do q=1,nq @@ -351,7 +351,7 @@ END_PROVIDER ! iii. f = 1.d0/dsqrt(Qmax) - !$OMP PARALLEL PRIVATE(m,p,q,k) DEFAULT(shared) + !$OMP PARALLEL PRIVATE(p,q) DEFAULT(shared) !$OMP DO do p=1,np Ltmp_p(p,iblock) = Ltmp_p(p,iblock) * f From b743201efe692294db887f175dceb02a81f73422 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 31 May 2024 20:50:30 +0200 Subject: [PATCH 058/159] Use integer*8 in cholesky --- src/ao_two_e_ints/cholesky.irp.f | 152 ++++++++++++++++++------------- src/utils/memory.irp.f | 20 ++++ 2 files changed, 109 insertions(+), 63 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index cfd57050..daa29079 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -27,19 +27,22 @@ END_PROVIDER ! https://doi.org/10.1016/j.apnum.2011.10.001 : Page 4, Algorithm 1 END_DOC - integer :: rank, ndim + integer*8 :: ndim8 + integer :: rank double precision :: tau double precision, pointer :: L(:,:), L_old(:,:) double precision :: s - double precision, parameter :: dscale = 1.d0 + double precision :: dscale double precision, allocatable :: D(:), Delta(:,:), Ltmp_p(:,:), Ltmp_q(:,:) - integer, allocatable :: Lset(:), Dset(:), addr(:,:) + integer, allocatable :: addr1(:,:), addr2(:,:) + integer**, allocatable :: Lset(:), Dset(:), addr3(:,:) logical, allocatable :: computed(:) - integer :: i,j,k,m,p,q, qj, dj, p2, q2 + integer :: i,j,k,m,p,q, dj, p2, q2 + integer*8 :: i8, j8, p8, qj8 integer :: N, np, nq double precision :: Dmax, Dmin, Qmax, f @@ -47,15 +50,15 @@ END_PROVIDER logical, external :: ao_two_e_integral_zero double precision, external :: ao_two_e_integral - integer :: block_size, iblock, ierr + integer :: block_size, iblock double precision :: mem - double precision, external :: memory_of_double, memory_of_int + double precision, external :: memory_of_double8, memory_of_int8 integer, external :: getUnitAndOpen - integer :: iunit + integer :: iunit, ierr - ndim = ao_num*ao_num + ndim8 = ao_num*ao_num*1_8 deallocate(cholesky_ao) if (read_ao_cholesky) then @@ -83,13 +86,13 @@ END_PROVIDER tau = ao_cholesky_threshold - mem = 6.d0 * memory_of_double(ndim) + 6.d0 * memory_of_int(ndim) + mem = 6.d0 * memory_of_double8(ndim8) + 6.d0 * memory_of_int8(ndim8) call check_mem(mem, irp_here) call print_memory_usage() - allocate(L(ndim,1)) -!print *, 'allocate : (L(ndim,1))', memory_of_double(ndim) + allocate(L(ndim8,1)) +print *, 'allocate : (L(ndim8,1))', memory_of_double8(ndim8) print *, '' print *, 'Cholesky decomposition of AO integrals' @@ -102,36 +105,36 @@ END_PROVIDER rank = 0 - allocate( D(ndim), Lset(ndim), Dset(ndim) ) - allocate( addr(3,ndim) ) -!print *, 'allocate : (D(ndim))', memory_of_int(ndim) -!print *, 'allocate : (Lset(ndim))', memory_of_int(ndim) -!print *, 'allocate : (Dset(ndim))', memory_of_int(ndim) -!print *, 'allocate : (3,addr(ndim))', memory_of_int(3*ndim) + allocate( D(ndim8), Lset(ndim8), Dset(ndim8) ) + allocate( addr1(ndim8), addr2(ndim8), addr3(ndim8), ) +print *, 'allocate : (D(ndim8))', memory_of_int8(ndim8) +print *, 'allocate : (Lset(ndim8))', memory_of_int8(ndim8) +print *, 'allocate : (Dset(ndim8))', memory_of_int8(ndim8) +print *, 'allocate : (4,addr(ndim8))', memory_of_int8(4_8*ndim8) ! 1. k=0 do j=1,ao_num do i=1,ao_num k = k+1 - addr(1,k) = i - addr(2,k) = j - addr(3,k) = (i-1)*ao_num + j + addr1(k) = i + addr2(k) = j + addr3(k) = (i-1)*ao_num + j enddo enddo if (do_direct_integrals) then - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i) SCHEDULE(guided) - do i=1,ndim - D(i) = ao_two_e_integral(addr(1,i), addr(2,i), & - addr(1,i), addr(2,i)) + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(guided) + do i8=1,ndim8 + D(i8) = ao_two_e_integral(addr1(i8), addr2(i8), & + addr1(i8), addr2(i8)) enddo !$OMP END PARALLEL DO else - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i) SCHEDULE(guided) - do i=1,ndim - D(i) = get_ao_two_e_integral(addr(1,i), addr(1,i), & - addr(2,i), addr(2,i), & + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(guided) + do i8=1,ndim8 + D(i8) = get_ao_two_e_integral(addr1(i8), addr1(i8), & + addr2(i8), addr2(i8), & ao_integrals_map) enddo !$OMP END PARALLEL DO @@ -140,12 +143,21 @@ END_PROVIDER Dmax = maxval(D) ! 2. - np=0 - do p=1,ndim - if ( dscale*dscale*Dmax*D(p) > tau*tau ) then - np = np+1 - Lset(np) = p - endif + np = huge(1_4) + dscale = 1.d0 + do while (np == huge(1_4)) + np=0 + do p8=1,ndim8 + if ( dscale*dscale*Dmax*D(p8) > tau*tau ) then + np = np+1 + Lset(np) = p8 + if (np == huge(1_4)) then + ! Overflow detected + dscale = dscale*0.5d0 + exit + endif + endif + enddo enddo ! 3. @@ -155,7 +167,7 @@ END_PROVIDER i = 0 ! 5. - do while ( (Dmax > tau).and.(rank < ndim) ) + do while ( (Dmax > tau).and.(rank < min(ndim8,huge(1_4)) ) ! a. i = i+1 @@ -181,7 +193,8 @@ END_PROVIDER call total_memory(mem) mem = mem & + np*memory_of_double(nq) &! Delta(np,nq) - + (rank+nq)* memory_of_double(ndim) &! L(ndim,rank+nq) + + (rank+nq)* memory_of_double8(ndim8) +&! L(ndim8,rank+nq) + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) if (mem > qp_max_mem) then @@ -205,19 +218,19 @@ END_PROVIDER ! d., e. L_old => L - allocate(L(ndim,rank+nq), stat=ierr) -!print *, 'allocate : L(ndim,rank+nq)', memory_of_double(ndim*(rank+nq)) + allocate(L(ndim8,rank+nq), stat=ierr) +print *, 'allocate : L(ndim8,rank+nq)', memory_of_double8(ndim8*(rank+nq)) if (ierr /= 0) then call print_memory_usage() - print *, irp_here, ': allocation failed : (L(ndim,rank+nq))' + print *, irp_here, ': allocation failed : (L(ndim8,rank+nq))' stop -1 endif !$OMP PARALLEL DO PRIVATE(k,j) do k=1,rank - do j=1,ndim - L(j,k) = L_old(j,k) + do j8=1,ndim8 + L(j8,k) = L_old(j8,k) enddo enddo !$OMP END PARALLEL DO @@ -225,7 +238,7 @@ END_PROVIDER deallocate(L_old) allocate(Delta(np,nq), stat=ierr) -!print *, 'allocate : Delta(np,nq)', memory_of_double(np*nq) +print *, 'allocate : Delta(np,nq)', memory_of_double8(np*nq*1_8) if (ierr /= 0) then call print_memory_usage() @@ -234,7 +247,7 @@ END_PROVIDER endif allocate(Ltmp_p(np,block_size), stat=ierr) -!print *, 'allocate : Ltmp_p(np,block_size)', memory_of_double(np*block_size) +print *, 'allocate : Ltmp_p(np,block_size)', memory_of_double8(np*block_size*1_8) if (ierr /= 0) then call print_memory_usage() @@ -243,7 +256,7 @@ END_PROVIDER endif allocate(Ltmp_q(nq,block_size), stat=ierr) -!print *, 'allocate : Ltmp_q(nq,block_size)', memory_of_double(nq*block_size) +print *, 'allocate : Ltmp_q(nq,block_size)', memory_of_double8(nq*block_size*1_8) if (ierr /= 0) then call print_memory_usage() @@ -253,8 +266,9 @@ END_PROVIDER allocate(computed(nq)) -!print *, 'allocate : computed(nq)', memory_of_int(nq) +print *, 'allocate : computed(nq)', memory_of_int(nq) +print *, 'p1' !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q,j) !$OMP DO @@ -296,7 +310,7 @@ END_PROVIDER iblock = 0 do j=1,nq - if ( (Qmax <= Dmin).or.(N+j > ndim) ) exit + if ( (Qmax <= Dmin).or.(N+j*1_8 > ndim8) ) exit ! i. rank = N+j @@ -308,28 +322,28 @@ END_PROVIDER ! ii. do dj=1,nq - qj = Dset(dj) - if (D(qj) == Qmax) then + qj8 = Dset(dj) + if (D(qj8) == Qmax) then exit endif enddo - L(1:ndim, rank) = 0.d0 + L(1:ndim8, rank) = 0.d0 if (.not.computed(dj)) then m = dj !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(guided) do k=np,1,-1 - if (.not.ao_two_e_integral_zero( addr(1,Lset(k)), addr(1,Dset(m)),& - addr(2,Lset(k)), addr(2,Dset(m)) ) ) then + if (.not.ao_two_e_integral_zero( addr1(Lset(k)), addr1(Dset(m)),& + addr2(Lset(k)), addr2(Dset(m)) ) ) then if (do_direct_integrals) then Delta(k,m) = Delta(k,m) + & - ao_two_e_integral(addr(1,Lset(k)), addr(2,Lset(k)),& - addr(1,Dset(m)), addr(2,Dset(m))) + ao_two_e_integral(addr1(Lset(k)), addr2(Lset(k)),& + addr1(Dset(m)), addr2(Dset(m))) else Delta(k,m) = Delta(k,m) + & - get_ao_two_e_integral( addr(1,Lset(k)), addr(1,Dset(m)),& - addr(2,Lset(k)), addr(2,Dset(m)), ao_integrals_map) + get_ao_two_e_integral( addr1(Lset(k)), addr1(Dset(m)),& + addr2(Lset(k)), addr2(Dset(m)), ao_integrals_map) endif endif enddo @@ -391,18 +405,28 @@ END_PROVIDER Dmax = max(Dmax, D(Lset(p))) enddo - np=0 - do p=1,ndim - if ( dscale*dscale*Dmax*D(p) > tau*tau ) then - np = np+1 - Lset(np) = p - endif + np = huge(1_4) + dscale = 1.d0 + do while (np == huge(1_4)) + np=0 + do p8=1,ndim8 + if ( dscale*dscale*Dmax*D(p8) > tau*tau ) then + np = np+1 + Lset(np) = p8 + if (np == huge(1_4)) then + ! Overflow detected + dscale = dscale*0.5d0 + exit + endif + endif + enddo enddo + enddo allocate(cholesky_ao(ao_num,ao_num,rank), stat=ierr) -!print *, 'allocate : cholesky_ao(ao_num,ao_num,rank)', ao_num*ao_num*(rank*1_8) * 8_8 / 1024_8**3 +print *, 'allocate : cholesky_ao(ao_num,ao_num,rank)', memory_of_double8(ao_num*ao_num*rank*1_8) if (ierr /= 0) then call print_memory_usage() @@ -411,7 +435,9 @@ END_PROVIDER endif !$OMP PARALLEL DO PRIVATE(k) do k=1,rank - call dcopy(ndim, L(1,k), 1, cholesky_ao(1,1,k), 1) + do j=1,ao_num + call dcopy(ao_num, L((j-1)*ao_num+1,k), 1, cholesky_ao(1,j,k), 1) + enddo enddo !$OMP END PARALLEL DO deallocate(L) diff --git a/src/utils/memory.irp.f b/src/utils/memory.irp.f index e69bf71e..043562db 100644 --- a/src/utils/memory.irp.f +++ b/src/utils/memory.irp.f @@ -79,6 +79,26 @@ IRP_ENDIF call unlock_io() end function +double precision function memory_of_double8(n) + implicit none + BEGIN_DOC +! Computes the memory required for n double precision elements in gigabytes. + END_DOC + integer*8, intent(in) :: n + double precision, parameter :: f = 8.d0 / (1024.d0*1024.d0*1024.d0) + memory_of_double8 = dble(n) * f +end function + +double precision function memory_of_int8(n) + implicit none + BEGIN_DOC +! Computes the memory required for n double precision elements in gigabytes. + END_DOC + integer*8, intent(in) :: n + double precision, parameter :: f = 4.d0 / (1024.d0*1024.d0*1024.d0) + memory_of_int8 = dble(n) * f +end function + double precision function memory_of_double(n) implicit none BEGIN_DOC From 38d386d36c78ff87a6c1062d065ab2b12fa4dcc9 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Sun, 2 Jun 2024 19:03:05 +0200 Subject: [PATCH 059/159] Debug cholesky --- config/gfortran_debug_mkl.cfg | 63 ++++++++++++ src/ao_two_e_ints/cholesky.irp.f | 169 +++++++++++++++++++------------ 2 files changed, 166 insertions(+), 66 deletions(-) create mode 100644 config/gfortran_debug_mkl.cfg diff --git a/config/gfortran_debug_mkl.cfg b/config/gfortran_debug_mkl.cfg new file mode 100644 index 00000000..1dc3f2b2 --- /dev/null +++ b/config/gfortran_debug_mkl.cfg @@ -0,0 +1,63 @@ +# Common flags +############## +# +# -ffree-line-length-none : Needed for IRPF90 which produces long lines +# -lblas -llapack : Link with libblas and liblapack libraries provided by the system +# -I . : Include the curent directory (Mandatory) +# +# --ninja : Allow the utilisation of ninja. (Mandatory) +# --align=32 : Align all provided arrays on a 32-byte boundary +# +# +[COMMON] +FC : gfortran -g -ffree-line-length-none -I . -fPIC -std=legacy +LAPACK_LIB : -I${MKLROOT}/include -L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_gf_lp64 -lmkl_core -lpthread -lm -ldl -lmkl_gnu_thread -lgomp -fopenmp +IRPF90 : irpf90 +IRPF90_FLAGS : --ninja --align=32 --assert -DSET_NESTED + +# Global options +################ +# +# 1 : Activate +# 0 : Deactivate +# +[OPTION] +MODE : DEBUG ; [ OPT | PROFILE | DEBUG ] : Chooses the section below +CACHE : 0 ; Enable cache_compile.py +OPENMP : 1 ; Append OpenMP flags + +# Optimization flags +#################### +# +# -Ofast : Disregard strict standards compliance. Enables all -O3 optimizations. +# It also enables optimizations that are not valid +# for all standard-compliant programs. It turns on +# -ffast-math and the Fortran-specific +# -fno-protect-parens and -fstack-arrays. +[OPT] +FCFLAGS : -Ofast + +# Profiling flags +################# +# +[PROFILE] +FC : -p -g +FCFLAGS : -Ofast + +# Debugging flags +################# +# +# -fcheck=all : Checks uninitialized variables, array subscripts, etc... +# -g : Extra debugging information +# +[DEBUG] +#FCFLAGS : -g -msse4.2 -fcheck=all -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant -Wuninitialized -fbacktrace -ffpe-trap=zero,overflow,underflow -finit-real=nan +FCFLAGS : -g -mavx -fcheck=all -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant -Wuninitialized -fbacktrace -ffpe-trap=zero,overflow -finit-real=nan + +# OpenMP flags +################# +# +[OPENMP] +FC : -fopenmp +IRPF90_FLAGS : --openmp + diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index daa29079..3d0baa48 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -29,21 +29,20 @@ END_PROVIDER integer*8 :: ndim8 integer :: rank - double precision :: tau + double precision :: tau, tau2 double precision, pointer :: L(:,:), L_old(:,:) - double precision :: s - double precision :: dscale + double precision :: dscale, dscale_tmp double precision, allocatable :: D(:), Delta(:,:), Ltmp_p(:,:), Ltmp_q(:,:) - integer, allocatable :: addr1(:,:), addr2(:,:) - integer**, allocatable :: Lset(:), Dset(:), addr3(:,:) + integer, allocatable :: addr1(:), addr2(:) + integer*8, allocatable :: Lset(:), Dset(:), addr3(:) logical, allocatable :: computed(:) integer :: i,j,k,m,p,q, dj, p2, q2 integer*8 :: i8, j8, p8, qj8 - integer :: N, np, nq + integer :: N, np, nq, npmax double precision :: Dmax, Dmin, Qmax, f double precision, external :: get_ao_two_e_integral @@ -53,6 +52,7 @@ END_PROVIDER integer :: block_size, iblock double precision :: mem + double precision, external :: memory_of_double, memory_of_int double precision, external :: memory_of_double8, memory_of_int8 integer, external :: getUnitAndOpen @@ -61,6 +61,9 @@ END_PROVIDER ndim8 = ao_num*ao_num*1_8 deallocate(cholesky_ao) + +! TODO : Save L() to disk + if (read_ao_cholesky) then print *, 'Reading Cholesky vectors from disk...' iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_ao', 'R') @@ -85,6 +88,7 @@ END_PROVIDER endif tau = ao_cholesky_threshold + tau2 = tau*tau mem = 6.d0 * memory_of_double8(ndim8) + 6.d0 * memory_of_int8(ndim8) call check_mem(mem, irp_here) @@ -92,25 +96,25 @@ END_PROVIDER call print_memory_usage() allocate(L(ndim8,1)) -print *, 'allocate : (L(ndim8,1))', memory_of_double8(ndim8) +!print *, 'allocate : (L(ndim8,1))', memory_of_double8(ndim8) print *, '' print *, 'Cholesky decomposition of AO integrals' print *, '======================================' print *, '' - print *, '============ ============ =============' - print *, ' Rank Block size Threshold' - print *, '============ ============ =============' + print *, '============ =============' + print *, ' Rank Threshold' + print *, '============ =============' rank = 0 allocate( D(ndim8), Lset(ndim8), Dset(ndim8) ) - allocate( addr1(ndim8), addr2(ndim8), addr3(ndim8), ) -print *, 'allocate : (D(ndim8))', memory_of_int8(ndim8) -print *, 'allocate : (Lset(ndim8))', memory_of_int8(ndim8) -print *, 'allocate : (Dset(ndim8))', memory_of_int8(ndim8) -print *, 'allocate : (4,addr(ndim8))', memory_of_int8(4_8*ndim8) + allocate( addr1(ndim8), addr2(ndim8), addr3(ndim8) ) +!print *, 'allocate : (D(ndim8))', memory_of_int8(ndim8) +!print *, 'allocate : (Lset(ndim8))', memory_of_int8(ndim8) +!print *, 'allocate : (Dset(ndim8))', memory_of_int8(ndim8) +!print *, 'allocate : (4,addr(ndim8))', memory_of_int8(4_8*ndim8) ! 1. k=0 @@ -124,14 +128,14 @@ print *, 'allocate : (4,addr(ndim8))', memory_of_int8(4_8*ndim8) enddo if (do_direct_integrals) then - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(guided) + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(dynamic,16) do i8=1,ndim8 D(i8) = ao_two_e_integral(addr1(i8), addr2(i8), & addr1(i8), addr2(i8)) enddo !$OMP END PARALLEL DO else - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(guided) + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(dynamic,16) do i8=1,ndim8 D(i8) = get_ao_two_e_integral(addr1(i8), addr1(i8), & addr2(i8), addr2(i8), & @@ -143,17 +147,22 @@ print *, 'allocate : (4,addr(ndim8))', memory_of_int8(4_8*ndim8) Dmax = maxval(D) ! 2. - np = huge(1_4) + npmax = huge(1_4)*1_8 + np = npmax dscale = 1.d0 - do while (np == huge(1_4)) + dscale_tmp = Dmax + do while (np == npmax) np=0 do p8=1,ndim8 - if ( dscale*dscale*Dmax*D(p8) > tau*tau ) then + if ( dscale_tmp*D(p8) > tau2 ) then np = np+1 Lset(np) = p8 - if (np == huge(1_4)) then + if (np == npmax) then ! Overflow detected - dscale = dscale*0.5d0 + dscale = dscale*0.1d0 + dscale_tmp = dscale*dscale*Dmax +!print *, 'Overflow detected ' +!print *, 'dscale = ', dscale exit endif endif @@ -167,7 +176,7 @@ print *, 'allocate : (4,addr(ndim8))', memory_of_int8(4_8*ndim8) i = 0 ! 5. - do while ( (Dmax > tau).and.(rank < min(ndim8,huge(1_4)) ) + do while ( (Dmax > tau).and.(rank < min(ndim8,huge(1_4))) ) ! a. i = i+1 @@ -191,15 +200,13 @@ print *, 'allocate : (4,addr(ndim8))', memory_of_int8(4_8*ndim8) call total_memory(mem) - mem = mem & - + np*memory_of_double(nq) &! Delta(np,nq) - + (rank+nq)* memory_of_double8(ndim8) -&! L(ndim8,rank+nq) - + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) + mem = mem & + + np*memory_of_double(nq) &! Delta(np,nq) + + (rank+nq)* memory_of_double8(ndim8) &! L(ndim8,rank+nq) + + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) if (mem > qp_max_mem) then s = s*2.d0 - block_size = max(block_size / 2, 1) else exit endif @@ -219,7 +226,7 @@ print *, 'allocate : (4,addr(ndim8))', memory_of_int8(4_8*ndim8) L_old => L allocate(L(ndim8,rank+nq), stat=ierr) -print *, 'allocate : L(ndim8,rank+nq)', memory_of_double8(ndim8*(rank+nq)) +!print *, 'allocate : L(ndim8,rank+nq)', memory_of_double8(ndim8*(rank+nq)) if (ierr /= 0) then call print_memory_usage() @@ -227,7 +234,7 @@ print *, 'allocate : L(ndim8,rank+nq)', memory_of_double8(ndim8*(rank+nq)) stop -1 endif - !$OMP PARALLEL DO PRIVATE(k,j) + !$OMP PARALLEL DO PRIVATE(k,j8) do k=1,rank do j8=1,ndim8 L(j8,k) = L_old(j8,k) @@ -238,7 +245,7 @@ print *, 'allocate : L(ndim8,rank+nq)', memory_of_double8(ndim8*(rank+nq)) deallocate(L_old) allocate(Delta(np,nq), stat=ierr) -print *, 'allocate : Delta(np,nq)', memory_of_double8(np*nq*1_8) +!print *, 'allocate : Delta(np,nq)', memory_of_double8(np*nq*1_8) if (ierr /= 0) then call print_memory_usage() @@ -247,7 +254,7 @@ print *, 'allocate : Delta(np,nq)', memory_of_double8(np*nq*1_8) endif allocate(Ltmp_p(np,block_size), stat=ierr) -print *, 'allocate : Ltmp_p(np,block_size)', memory_of_double8(np*block_size*1_8) +!print *, 'allocate : Ltmp_p(np,block_size)', memory_of_double8(np*block_size*1_8), np, block_size if (ierr /= 0) then call print_memory_usage() @@ -256,7 +263,7 @@ print *, 'allocate : Ltmp_p(np,block_size)', memory_of_double8(np*block_size*1_8 endif allocate(Ltmp_q(nq,block_size), stat=ierr) -print *, 'allocate : Ltmp_q(nq,block_size)', memory_of_double8(nq*block_size*1_8) +!print *, 'allocate : Ltmp_q(nq,block_size)', memory_of_double8(nq*block_size*1_8), nq, block_size if (ierr /= 0) then call print_memory_usage() @@ -266,34 +273,47 @@ print *, 'allocate : Ltmp_q(nq,block_size)', memory_of_double8(nq*block_size*1_8 allocate(computed(nq)) -print *, 'allocate : computed(nq)', memory_of_int(nq) +!print *, 'allocate : computed(nq)', memory_of_int(nq) -print *, 'p1' +!print *, 'N, rank, block_size', N, rank, block_size +!print *, 'p1' !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q,j) +!print *, 'computed' + !$OMP DO + do q=1,nq + computed(q) = .False. + enddo + !$OMP ENDDO NOWAIT + +!print *, 'Delta' !$OMP DO do q=1,nq do j=1,np Delta(j,q) = 0.d0 enddo - computed(q) = .False. enddo !$OMP ENDDO NOWAIT - !$OMP DO +!print *, 'Ltmp_p' do k=1,N + !$OMP DO do p=1,np Ltmp_p(p,k) = L(Lset(p),k) enddo + !$OMP END DO NOWAIT + + !$OMP DO do q=1,nq Ltmp_q(q,k) = L(Dset(q),k) enddo + !$OMP END DO NOWAIT enddo - !$OMP END DO NOWAIT !$OMP BARRIER !$OMP END PARALLEL +!print *, 'p2', np, nq, N if (N>0) then call dgemm('N','T', np, nq, N, -1.d0, & Ltmp_p, np, Ltmp_q, nq, 1.d0, Delta, np) @@ -315,8 +335,10 @@ print *, 'p1' rank = N+j if (iblock == block_size) then +!print *, 'dgemm' call dgemm('N','T',np,nq,block_size,-1.d0, & Ltmp_p, np, Ltmp_q, nq, 1.d0, Delta, np) + iblock = 0 endif @@ -328,36 +350,47 @@ print *, 'p1' endif enddo - L(1:ndim8, rank) = 0.d0 + do i8=1,ndim8 + L(i8, rank) = 0.d0 + enddo if (.not.computed(dj)) then m = dj - !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(guided) - do k=np,1,-1 - if (.not.ao_two_e_integral_zero( addr1(Lset(k)), addr1(Dset(m)),& - addr2(Lset(k)), addr2(Dset(m)) ) ) then - if (do_direct_integrals) then - Delta(k,m) = Delta(k,m) + & - ao_two_e_integral(addr1(Lset(k)), addr2(Lset(k)),& - addr1(Dset(m)), addr2(Dset(m))) - else - Delta(k,m) = Delta(k,m) + & - get_ao_two_e_integral( addr1(Lset(k)), addr1(Dset(m)),& - addr2(Lset(k)), addr2(Dset(m)), ao_integrals_map) - endif - endif - enddo - !$OMP END PARALLEL DO + if (do_direct_integrals) then + !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(dynamic,16) + do k=np,1,-1 + if (.not.ao_two_e_integral_zero( addr1(Lset(k)), addr1(Dset(m)),& + addr2(Lset(k)), addr2(Dset(m)) ) ) then + Delta(k,m) = Delta(k,m) + & + ao_two_e_integral(addr1(Lset(k)), addr2(Lset(k)),& + addr1(Dset(m)), addr2(Dset(m))) + endif + enddo + !$OMP END PARALLEL DO + else + !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(dynamic,16) + do k=np,1,-1 + if (.not.ao_two_e_integral_zero( addr1(Lset(k)), addr1(Dset(m)),& + addr2(Lset(k)), addr2(Dset(m)) ) ) then + Delta(k,m) = Delta(k,m) + & + get_ao_two_e_integral( addr1(Lset(k)), addr1(Dset(m)),& + addr2(Lset(k)), addr2(Dset(m)), ao_integrals_map) + endif + enddo + !$OMP END PARALLEL DO + endif computed(dj) = .True. endif iblock = iblock+1 +!print *, iblock do p=1,np Ltmp_p(p,iblock) = Delta(p,dj) enddo ! iv. if (iblock > 1) then +!print *, 'dgemv', iblock call dgemv('N', np, iblock-1, -1.d0, Ltmp_p, np, Ltmp_q(dj,1), nq, 1.d0,& Ltmp_p(1,iblock), 1) endif @@ -365,6 +398,7 @@ print *, 'p1' ! iii. f = 1.d0/dsqrt(Qmax) +!print *, 'p4' !$OMP PARALLEL PRIVATE(p,q) DEFAULT(shared) !$OMP DO do p=1,np @@ -379,7 +413,6 @@ print *, 'p1' Ltmp_q(q,iblock) = L(Dset(q), rank) enddo !$OMP END DO - !$OMP END PARALLEL Qmax = D(Dset(1)) @@ -389,12 +422,12 @@ print *, 'p1' enddo - print '(I10, 4X, I10, 4X, ES12.3)', rank, block_size, Qmax + print '(I10, 4X, ES12.3)', rank, Qmax - deallocate(computed) - deallocate(Delta) deallocate(Ltmp_p) deallocate(Ltmp_q) + deallocate(computed) + deallocate(Delta) ! i. N = rank @@ -405,17 +438,21 @@ print *, 'p1' Dmax = max(Dmax, D(Lset(p))) enddo - np = huge(1_4) + np = npmax dscale = 1.d0 - do while (np == huge(1_4)) + dscale_tmp = Dmax + do while (np == npmax) np=0 do p8=1,ndim8 - if ( dscale*dscale*Dmax*D(p8) > tau*tau ) then + if ( dscale_tmp*D(p8) > tau2 ) then np = np+1 Lset(np) = p8 - if (np == huge(1_4)) then + if (np == npmax) then ! Overflow detected dscale = dscale*0.5d0 + dscale_tmp = dscale*dscale*Dmax +!print *, 'Overflow detected ' +!print *, 'dscale = ', dscale exit endif endif @@ -426,7 +463,7 @@ print *, 'p1' enddo allocate(cholesky_ao(ao_num,ao_num,rank), stat=ierr) -print *, 'allocate : cholesky_ao(ao_num,ao_num,rank)', memory_of_double8(ao_num*ao_num*rank*1_8) +!print *, 'allocate : cholesky_ao(ao_num,ao_num,rank)', memory_of_double8(ao_num*ao_num*rank*1_8) if (ierr /= 0) then call print_memory_usage() @@ -436,7 +473,7 @@ print *, 'allocate : cholesky_ao(ao_num,ao_num,rank)', memory_of_double8(ao_num* !$OMP PARALLEL DO PRIVATE(k) do k=1,rank do j=1,ao_num - call dcopy(ao_num, L((j-1)*ao_num+1,k), 1, cholesky_ao(1,j,k), 1) + cholesky_ao(1:ao_num,j,k) = L((j-1)*ao_num+1:j*ao_num,k) enddo enddo !$OMP END PARALLEL DO From ff59e9efcc2ab1e4ffaa352e86bbb14491ce1531 Mon Sep 17 00:00:00 2001 From: eginer Date: Sun, 2 Jun 2024 19:16:56 +0200 Subject: [PATCH 060/159] added print in src/ao_two_e_ints/cholesky.irp.f --- src/ao_two_e_ints/cholesky.irp.f | 4 ++++ src/mu_of_r/f_hf_cholesky.irp.f | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 5fbd166c..1d8b8948 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -51,7 +51,9 @@ END_PROVIDER integer, external :: getUnitAndOpen integer :: iunit + double precision :: wall0,wall1 + call wall_time(wall0) ndim = ao_num*ao_num deallocate(cholesky_ao) @@ -409,6 +411,8 @@ END_PROVIDER print *, 'Rank : ', cholesky_ao_num, '(', 100.d0*dble(cholesky_ao_num)/dble(ao_num*ao_num), ' %)' print *, '' + call wall_time(wall1) + print*,'Time to provide AO cholesky vectors = ',wall1-wall0 END_PROVIDER diff --git a/src/mu_of_r/f_hf_cholesky.irp.f b/src/mu_of_r/f_hf_cholesky.irp.f index 472abb1c..5dd69eb6 100644 --- a/src/mu_of_r/f_hf_cholesky.irp.f +++ b/src/mu_of_r/f_hf_cholesky.irp.f @@ -220,10 +220,10 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky_sparse, (n_points_final_grid)] if(dabs(mo_i_r1).lt.thresh_1)cycle do mm = 1, n_basis_orb ! electron 1 m = list_basis(mm) - mo_b_r1 = mos_in_r_array_omp(m,ipoint) - if(dabs(mo_i_r1*mo_b_r1).lt.thresh_2)cycle + mo_b_r1 = mos_in_r_array_omp(m,ipoint)*mo_i_r1 + if(dabs(mo_b_r1).lt.thresh_2)cycle do p = 1, cholesky_mo_num - accu_vec(p) = accu_vec(p) + mo_i_r1 * mo_b_r1 * cholesky_mo_transp(p,m,i) + accu_vec(p) = accu_vec(p) + mo_b_r1 * cholesky_mo_transp(p,m,i) enddo enddo enddo From c1ca673a6fd39ef574bb5a41b420a18a45f85d58 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 4 Jun 2024 11:24:25 +0200 Subject: [PATCH 061/159] Added omp_lib.F file --- etc/paths.rc | 9 +++++++++ src/ezfio_files/omp_lib.F | 4 ++++ 2 files changed, 13 insertions(+) create mode 100644 src/ezfio_files/omp_lib.F diff --git a/etc/paths.rc b/etc/paths.rc index dc1741e8..843ec383 100644 --- a/etc/paths.rc +++ b/etc/paths.rc @@ -28,6 +28,15 @@ function qp_prepend_export () { fi } +function qp_append_export () { + eval "value_1="\${$1}"" + if [[ -z $value_1 ]] ; then + echo "${2}:" + else + echo "${value_1}:${2}" + fi +} + export PYTHONPATH=$(qp_prepend_export "PYTHONPATH" "${QP_EZFIO}/Python":"${QP_PYTHON}") export PATH=$(qp_prepend_export "PATH" "${QP_PYTHON}":"${QP_ROOT}"/bin:"${QP_ROOT}"/ocaml) diff --git a/src/ezfio_files/omp_lib.F b/src/ezfio_files/omp_lib.F new file mode 100644 index 00000000..b3df8e0a --- /dev/null +++ b/src/ezfio_files/omp_lib.F @@ -0,0 +1,4 @@ + module omp_lib +#include + end module + From 2a9b8c56a121fbe9880b9d6bebe344e78ded6355 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 4 Jun 2024 11:32:56 +0200 Subject: [PATCH 062/159] omp_lib was a bad idea... --- src/ezfio_files/omp_lib.F | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 src/ezfio_files/omp_lib.F diff --git a/src/ezfio_files/omp_lib.F b/src/ezfio_files/omp_lib.F deleted file mode 100644 index b3df8e0a..00000000 --- a/src/ezfio_files/omp_lib.F +++ /dev/null @@ -1,4 +0,0 @@ - module omp_lib -#include - end module - From c95a0b2d87f34e07e52f535e1548081c97eba0eb Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 4 Jun 2024 16:15:09 +0200 Subject: [PATCH 063/159] Disk-based cholesky --- src/ao_two_e_ints/cholesky.irp.f | 180 ++++++++++++------------ src/ao_two_e_ints/two_e_integrals.irp.f | 4 +- src/ezfio_files/get_unit_and_open.irp.f | 8 +- 3 files changed, 96 insertions(+), 96 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index b98dfd5b..f689a65e 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -16,6 +16,7 @@ END_PROVIDER BEGIN_PROVIDER [ integer, cholesky_ao_num ] &BEGIN_PROVIDER [ double precision, cholesky_ao, (ao_num, ao_num, 1) ] + use mmap_module implicit none BEGIN_DOC ! Cholesky vectors in AO basis: (ik|a): @@ -30,19 +31,19 @@ END_PROVIDER integer*8 :: ndim8 integer :: rank double precision :: tau, tau2 - double precision, pointer :: L(:,:), L_old(:,:) + double precision, pointer :: L(:,:) double precision :: s double precision :: dscale, dscale_tmp - double precision, allocatable :: D(:), Delta(:,:), Ltmp_p(:,:), Ltmp_q(:,:) + double precision, allocatable :: D(:), Delta(:,:), Ltmp_p(:,:), Ltmp_q(:,:), D_sorted(:) integer, allocatable :: addr1(:), addr2(:) integer*8, allocatable :: Lset(:), Dset(:), addr3(:) logical, allocatable :: computed(:) integer :: i,j,k,m,p,q, dj, p2, q2 - integer*8 :: i8, j8, p8, qj8 - integer :: N, np, nq, npmax + integer*8 :: i8, j8, p8, qj8, rank_max, np8 + integer :: N, np, nq double precision :: Dmax, Dmin, Qmax, f double precision, external :: get_ao_two_e_integral @@ -61,12 +62,12 @@ END_PROVIDER ndim8 = ao_num*ao_num*1_8 double precision :: wall0,wall1 + type(c_ptr) :: c_pointer(2) + integer :: fd(2) + call wall_time(wall0) deallocate(cholesky_ao) - -! TODO : Save L() to disk - if (read_ao_cholesky) then print *, 'Reading Cholesky vectors from disk...' iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_ao', 'R') @@ -81,6 +82,16 @@ END_PROVIDER PROVIDE nucl_coord ao_two_e_integral_schwartz call set_multiple_levels_omp(.False.) + rank_max = min(ndim8,274877906944_8/1_8/ndim8) + call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., c_pointer(1)) + call c_f_pointer(c_pointer(1), L, (/ ndim8, rank_max /)) +!print *, 'rank_max/ndim8', dble(rank_max) / dble(ndim8) + + ! Deleting the file while it is open makes the file invisible on the filesystem, + ! and automatically deleted, even if the program crashes + iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_ao_tmp', 'R') + close(iunit,status='delete') + if (do_direct_integrals) then if (ao_two_e_integral(1,1,1,1) < huge(1.d0)) then ! Trigger providers inside ao_two_e_integral @@ -98,9 +109,6 @@ END_PROVIDER call print_memory_usage() - allocate(L(ndim8,1)) -!print *, 'allocate : (L(ndim8,1))', memory_of_double8(ndim8) - print *, '' print *, 'Cholesky decomposition of AO integrals' print *, '======================================' @@ -112,7 +120,7 @@ END_PROVIDER rank = 0 - allocate( D(ndim8), Lset(ndim8), Dset(ndim8) ) + allocate( D(ndim8), Lset(ndim8), Dset(ndim8), D_sorted(ndim8)) allocate( addr1(ndim8), addr2(ndim8), addr3(ndim8) ) !print *, 'allocate : (D(ndim8))', memory_of_int8(ndim8) !print *, 'allocate : (Lset(ndim8))', memory_of_int8(ndim8) @@ -132,44 +140,52 @@ END_PROVIDER if (do_direct_integrals) then !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(dynamic,16) - do i8=1,ndim8 + do i8=ndim8,1,-1 D(i8) = ao_two_e_integral(addr1(i8), addr2(i8), & addr1(i8), addr2(i8)) enddo !$OMP END PARALLEL DO else !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(dynamic,16) - do i8=1,ndim8 + do i8=ndim8,1,-1 D(i8) = get_ao_two_e_integral(addr1(i8), addr1(i8), & addr2(i8), addr2(i8), & ao_integrals_map) enddo !$OMP END PARALLEL DO endif + D_sorted(:) = -D(:) + call dsort_noidx_big(D_sorted,ndim8) + D_sorted(:) = dabs(D_sorted(:)) - Dmax = maxval(D) + Dmax = D_sorted(1) ! 2. - npmax = huge(1_4)*1_8 - np = npmax - dscale = 1.d0 - dscale_tmp = Dmax - do while (np == npmax) - np=0 + dscale = tau2/Dmax + do i8=1,ndim8 + if (D_sorted(i8) <= dscale) exit + enddo + + + mem = qp_max_mem+1 + do while ( (mem > qp_max_mem).and.(i8>1_8) ) + dscale = min(1.d0,dsqrt(tau2/(D_sorted(i8)*Dmax))) + dscale_tmp = dscale*dscale*Dmax +! print *, 'dscale = ', dscale, dble(i8)/dble(ndim8) + np8=0_8 do p8=1,ndim8 if ( dscale_tmp*D(p8) > tau2 ) then - np = np+1 - Lset(np) = p8 - if (np == npmax) then - ! Overflow detected - dscale = dscale*0.1d0 - dscale_tmp = dscale*dscale*Dmax -!print *, 'Overflow detected ' -!print *, 'dscale = ', dscale - exit - endif + np8 = np8+1_8 + Lset(np8) = p8 endif enddo + i8 = i8*3_8/4_8 + if (np8 > huge(1_4)/64_8) cycle + np = np8 +! print *, 'np = ', np + call resident_memory(mem) + mem = mem & + + 0.1d0*np*memory_of_double(np) ! Delta(np,nq) enddo ! 3. @@ -179,7 +195,7 @@ END_PROVIDER i = 0 ! 5. - do while ( (Dmax > tau).and.(rank < min(ndim8,huge(1_4))) ) + do while ( (Dmax > tau).and.(rank*1_8 < min(ndim8,rank_max)) ) ! a. i = i+1 @@ -202,12 +218,12 @@ END_PROVIDER enddo - call total_memory(mem) + call resident_memory(mem) mem = mem & + np*memory_of_double(nq) &! Delta(np,nq) - + (rank+nq)* memory_of_double8(ndim8) &! L(ndim8,rank+nq) + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) +!print *, 'mem = ', mem if (mem > qp_max_mem) then s = s*2.d0 else @@ -217,7 +233,7 @@ END_PROVIDER if ((s > 1.d0).or.(nq == 0)) then call print_memory_usage() print *, 'Required peak memory: ', mem, 'Gb' - call total_memory(mem) + call resident_memory(mem) print *, 'Already used memory: ', mem, 'Gb' print *, 'Not enough memory. Reduce cholesky threshold' stop -1 @@ -227,26 +243,6 @@ END_PROVIDER ! d., e. - L_old => L - allocate(L(ndim8,rank+nq), stat=ierr) -!print *, 'allocate : L(ndim8,rank+nq)', memory_of_double8(ndim8*(rank+nq)) - - if (ierr /= 0) then - call print_memory_usage() - print *, irp_here, ': allocation failed : (L(ndim8,rank+nq))' - stop -1 - endif - - !$OMP PARALLEL DO PRIVATE(k,j8) - do k=1,rank - do j8=1,ndim8 - L(j8,k) = L_old(j8,k) - enddo - enddo - !$OMP END PARALLEL DO - - deallocate(L_old) - allocate(Delta(np,nq), stat=ierr) !print *, 'allocate : Delta(np,nq)', memory_of_double8(np*nq*1_8) @@ -280,39 +276,29 @@ END_PROVIDER !print *, 'N, rank, block_size', N, rank, block_size !print *, 'p1' - !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q,j) - -!print *, 'computed' - !$OMP DO + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(p,q,j) do q=1,nq computed(q) = .False. - enddo - !$OMP ENDDO NOWAIT - -!print *, 'Delta' - !$OMP DO - do q=1,nq do j=1,np Delta(j,q) = 0.d0 enddo enddo - !$OMP ENDDO NOWAIT + !$OMP END PARALLEL DO -!print *, 'Ltmp_p' + !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q,j) do k=1,N !$OMP DO do p=1,np - Ltmp_p(p,k) = L(Lset(p),k) + Ltmp_p(p,k) = L(Lset(p),k) enddo !$OMP END DO NOWAIT !$OMP DO do q=1,nq - Ltmp_q(q,k) = L(Dset(q),k) + Ltmp_q(q,k) = L(Dset(q),k) enddo !$OMP END DO NOWAIT enddo - !$OMP BARRIER !$OMP END PARALLEL @@ -338,7 +324,7 @@ END_PROVIDER rank = N+j if (iblock == block_size) then -!print *, 'dgemm' +!print *, 'dgemm', np, nq call dgemm('N','T',np,nq,block_size,-1.d0, & Ltmp_p, np, Ltmp_q, nq, 1.d0, Delta, np) @@ -401,7 +387,6 @@ END_PROVIDER ! iii. f = 1.d0/dsqrt(Qmax) -!print *, 'p4' !$OMP PARALLEL PRIVATE(p,q) DEFAULT(shared) !$OMP DO do p=1,np @@ -441,30 +426,42 @@ END_PROVIDER Dmax = max(Dmax, D(Lset(p))) enddo - np = npmax - dscale = 1.d0 - dscale_tmp = Dmax - do while (np == npmax) - np=0 + mem = qp_max_mem+1 + do while ( (mem > qp_max_mem).and.(i8>1_8) ) + dscale = min(1.d0,dsqrt(tau2/(D_sorted(i8)*Dmax))) + dscale_tmp = dscale*dscale*Dmax +!print *, 'dscale = ', dscale, dble(i8)/dble(ndim8) + np8=0_8 do p8=1,ndim8 if ( dscale_tmp*D(p8) > tau2 ) then - np = np+1 - Lset(np) = p8 - if (np == npmax) then - ! Overflow detected - dscale = dscale*0.5d0 - dscale_tmp = dscale*dscale*Dmax -!print *, 'Overflow detected ' -!print *, 'dscale = ', dscale - exit - endif + np8 = np8+1_8 + Lset(np8) = p8 endif enddo + i8 = i8*3_8/4_8 + if (np8 > huge(1_4)/64_8) cycle + np = np8 +!print *, 'np = ', np + call resident_memory(mem) + mem = mem & + + 0.1d0*np*memory_of_double(np) ! Delta(np,nq) enddo + if (np == 0) then + call print_memory_usage() + print *, 'Required peak memory: ', mem, 'Gb' + call resident_memory(mem) + print *, 'Already used memory: ', mem, 'Gb' + print *, 'Not enough memory. Reduce cholesky threshold' + stop -1 + endif enddo + + print *, '============ =============' + print *, '' + allocate(cholesky_ao(ao_num,ao_num,rank), stat=ierr) !print *, 'allocate : cholesky_ao(ao_num,ao_num,rank)', memory_of_double8(ao_num*ao_num*rank*1_8) @@ -473,18 +470,19 @@ END_PROVIDER print *, irp_here, ': Allocation failed' stop -1 endif - !$OMP PARALLEL DO PRIVATE(k) + + + !$OMP PARALLEL DO PRIVATE(k,j) do k=1,rank do j=1,ao_num cholesky_ao(1:ao_num,j,k) = L((j-1)*ao_num+1:j*ao_num,k) enddo enddo !$OMP END PARALLEL DO - deallocate(L) - cholesky_ao_num = rank - print *, '============ =============' - print *, '' + call munmap( (/ ndim8, ndim8 /), 8, fd(1), c_pointer(1) ) + + cholesky_ao_num = rank if (write_ao_cholesky) then print *, 'Writing Cholesky vectors to disk...' diff --git a/src/ao_two_e_ints/two_e_integrals.irp.f b/src/ao_two_e_ints/two_e_integrals.irp.f index b55b5f0d..d12f3d45 100644 --- a/src/ao_two_e_ints/two_e_integrals.irp.f +++ b/src/ao_two_e_ints/two_e_integrals.irp.f @@ -460,8 +460,8 @@ BEGIN_PROVIDER [ double precision, ao_two_e_integral_schwartz, (ao_num, ao_num) !$OMP PARALLEL DO PRIVATE(i,k) & !$OMP DEFAULT(NONE) & !$OMP SHARED (ao_num,ao_two_e_integral_schwartz) & - !$OMP SCHEDULE(guided) - do i=1,ao_num + !$OMP SCHEDULE(dynamic) + do i=ao_num,1,-1 do k=1,i ao_two_e_integral_schwartz(i,k) = dsqrt(ao_two_e_integral(i,i,k,k)) ao_two_e_integral_schwartz(k,i) = ao_two_e_integral_schwartz(i,k) diff --git a/src/ezfio_files/get_unit_and_open.irp.f b/src/ezfio_files/get_unit_and_open.irp.f index 6440579f..d6a7efac 100644 --- a/src/ezfio_files/get_unit_and_open.irp.f +++ b/src/ezfio_files/get_unit_and_open.irp.f @@ -47,11 +47,13 @@ integer function getUnitAndOpen(f,mode) endif open(unit=getUnitAndOpen,file=f,status='OLD',action='READ',form='UNFORMATTED') else if (mode.eq.'W') then - open(unit=getUnitAndOpen,file=new_f,status='UNKNOWN',action='WRITE',form='UNFORMATTED') + open(unit=getUnitAndOpen,file=new_f,status='UNKNOWN',action='READWRITE',form='UNFORMATTED') + else if (mode.eq.'A') then + open(unit=getUnitAndOpen,file=new_f,status='UNKNOWN',action='READWRITE',position='APPEND',form='UNFORMATTED') else if (mode.eq.'w') then - open(unit=getUnitAndOpen,file=new_f,status='UNKNOWN',action='WRITE',form='FORMATTED') + open(unit=getUnitAndOpen,file=new_f,status='UNKNOWN',action='READWRITE',form='FORMATTED') else if (mode.eq.'a') then - open(unit=getUnitAndOpen,file=new_f,status='UNKNOWN',action='WRITE',position='APPEND',form='FORMATTED') + open(unit=getUnitAndOpen,file=new_f,status='UNKNOWN',action='READWRITE',position='APPEND',form='FORMATTED') else if (mode.eq.'x') then open(unit=getUnitAndOpen,file=new_f,form='FORMATTED') endif From b9f041e5e587e0ce96e845fd437f3fc5abeb3272 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 4 Jun 2024 19:31:39 +0200 Subject: [PATCH 064/159] More I/O in Cholesky --- src/ao_two_e_ints/cholesky.irp.f | 198 +++++++++++++++---------------- 1 file changed, 94 insertions(+), 104 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index f689a65e..34b91f0f 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -31,12 +31,12 @@ END_PROVIDER integer*8 :: ndim8 integer :: rank double precision :: tau, tau2 - double precision, pointer :: L(:,:) + double precision, pointer :: L(:,:), Delta(:,:) double precision :: s double precision :: dscale, dscale_tmp - double precision, allocatable :: D(:), Delta(:,:), Ltmp_p(:,:), Ltmp_q(:,:), D_sorted(:) + double precision, allocatable :: D(:), Ltmp_p(:,:), Ltmp_q(:,:), D_sorted(:), Delta_col(:) integer, allocatable :: addr1(:), addr2(:) integer*8, allocatable :: Lset(:), Dset(:), addr3(:) logical, allocatable :: computed(:) @@ -52,7 +52,7 @@ END_PROVIDER double precision, external :: ao_two_e_integral integer :: block_size, iblock - double precision :: mem + double precision :: mem, mem0 double precision, external :: memory_of_double, memory_of_int double precision, external :: memory_of_double8, memory_of_int8 @@ -64,8 +64,11 @@ END_PROVIDER type(c_ptr) :: c_pointer(2) integer :: fd(2) + logical :: delta_on_disk call wall_time(wall0) + + ! Will be reallocated at the end deallocate(cholesky_ao) if (read_ao_cholesky) then @@ -82,11 +85,11 @@ END_PROVIDER PROVIDE nucl_coord ao_two_e_integral_schwartz call set_multiple_levels_omp(.False.) + call resident_memory(mem0) + rank_max = min(ndim8,274877906944_8/1_8/ndim8) call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., c_pointer(1)) call c_f_pointer(c_pointer(1), L, (/ ndim8, rank_max /)) -!print *, 'rank_max/ndim8', dble(rank_max) / dble(ndim8) - ! Deleting the file while it is open makes the file invisible on the filesystem, ! and automatically deleted, even if the program crashes iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_ao_tmp', 'R') @@ -161,32 +164,16 @@ END_PROVIDER Dmax = D_sorted(1) ! 2. - dscale = tau2/Dmax - do i8=1,ndim8 - if (D_sorted(i8) <= dscale) exit - enddo - - - mem = qp_max_mem+1 - do while ( (mem > qp_max_mem).and.(i8>1_8) ) - dscale = min(1.d0,dsqrt(tau2/(D_sorted(i8)*Dmax))) - dscale_tmp = dscale*dscale*Dmax -! print *, 'dscale = ', dscale, dble(i8)/dble(ndim8) - np8=0_8 - do p8=1,ndim8 - if ( dscale_tmp*D(p8) > tau2 ) then - np8 = np8+1_8 - Lset(np8) = p8 - endif - enddo - i8 = i8*3_8/4_8 - if (np8 > huge(1_4)/64_8) cycle - np = np8 -! print *, 'np = ', np - call resident_memory(mem) - mem = mem & - + 0.1d0*np*memory_of_double(np) ! Delta(np,nq) + dscale = 1.d0 + dscale_tmp = dscale*dscale*Dmax + np8=0_8 + do p8=1,ndim8 + if ( dscale_tmp*D(p8) > tau2 ) then + np8 = np8+1_8 + Lset(np8) = p8 + endif enddo + np = np8 ! 3. N = 0 @@ -218,13 +205,11 @@ END_PROVIDER enddo - call resident_memory(mem) - mem = mem & - + np*memory_of_double(nq) &! Delta(np,nq) - + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) + mem = mem0 & + + np*memory_of_double(nq) !print *, 'mem = ', mem - if (mem > qp_max_mem) then + if (mem > 300.d0) then ! 300GB max for Delta s = s*2.d0 else exit @@ -239,18 +224,33 @@ END_PROVIDER stop -1 endif + if (s > 0.1d0) then + exit + endif + enddo ! d., e. + mem = mem0 & + + memory_of_int(nq) &! computed(nq) + + np*memory_of_int(nq) &! computed(nq) + + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) - allocate(Delta(np,nq), stat=ierr) -!print *, 'allocate : Delta(np,nq)', memory_of_double8(np*nq*1_8) - - if (ierr /= 0) then - call print_memory_usage() - print *, irp_here, ': allocation failed : (Delta(np,nq))' - stop -1 + if (mem > qp_max_mem) then + call mmap(trim(ezfio_work_dir)//'cholesky_delta', (/ np*1_8, nq*1_8 /), 8, fd(2), .False., c_pointer(2)) + call c_f_pointer(c_pointer(2), Delta, (/ np, nq /)) + ! Deleting the file while it is open makes the file invisible on the filesystem, + ! and automatically deleted, even if the program crashes + iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_delta', 'R') + close(iunit,status='delete') + delta_on_disk = .True. + else + allocate(Delta(np,nq)) + delta_on_disk = .False. endif + print *, delta_on_disk + + allocate(Delta_col(np)) allocate(Ltmp_p(np,block_size), stat=ierr) !print *, 'allocate : Ltmp_p(np,block_size)', memory_of_double8(np*block_size*1_8), np, block_size @@ -272,40 +272,38 @@ END_PROVIDER allocate(computed(nq)) -!print *, 'allocate : computed(nq)', memory_of_int(nq) !print *, 'N, rank, block_size', N, rank, block_size -!print *, 'p1' - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(p,q,j) - do q=1,nq - computed(q) = .False. - do j=1,np - Delta(j,q) = 0.d0 - enddo - enddo - !$OMP END PARALLEL DO !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q,j) do k=1,N !$OMP DO do p=1,np - Ltmp_p(p,k) = L(Lset(p),k) + Ltmp_p(p,k) = L(Lset(p),k) enddo !$OMP END DO NOWAIT !$OMP DO do q=1,nq - Ltmp_q(q,k) = L(Dset(q),k) + computed(q) = .False. + Ltmp_q(q,k) = L(Dset(q),k) enddo !$OMP END DO NOWAIT enddo !$OMP BARRIER !$OMP END PARALLEL -!print *, 'p2', np, nq, N if (N>0) then - call dgemm('N','T', np, nq, N, -1.d0, & - Ltmp_p, np, Ltmp_q, nq, 1.d0, Delta, np) + call dgemm('N','T', np, nq, N, -1.d0, & + Ltmp_p, np, Ltmp_q, nq, 0.d0, Delta, np) + else + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,j) SCHEDULE(static,1) + do q=1,nq + do j=1,np + Delta(j,q) = 0.d0 + enddo + enddo + !$OMP END PARALLEL DO endif ! f. @@ -324,10 +322,8 @@ END_PROVIDER rank = N+j if (iblock == block_size) then -!print *, 'dgemm', np, nq call dgemm('N','T',np,nq,block_size,-1.d0, & - Ltmp_p, np, Ltmp_q, nq, 1.d0, Delta, np) - + Ltmp_p, np, Ltmp_q, nq, 1.d0, Delta, np) iblock = 0 endif @@ -343,43 +339,51 @@ END_PROVIDER L(i8, rank) = 0.d0 enddo + iblock = iblock+1 + !$OMP PARALLEL DO PRIVATE(p) + do p=1,np + Ltmp_p(p,iblock) = Delta(p,dj) + enddo + !$OMP END PARALLEL DO + if (.not.computed(dj)) then m = dj if (do_direct_integrals) then - !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(dynamic,16) - do k=np,1,-1 + !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(dynamic,21) + do k=1,np if (.not.ao_two_e_integral_zero( addr1(Lset(k)), addr1(Dset(m)),& addr2(Lset(k)), addr2(Dset(m)) ) ) then - Delta(k,m) = Delta(k,m) + & + Delta_col(k) = & ao_two_e_integral(addr1(Lset(k)), addr2(Lset(k)),& addr1(Dset(m)), addr2(Dset(m))) endif enddo !$OMP END PARALLEL DO - else - !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(dynamic,16) - do k=np,1,-1 + else + !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(dynamic,21) + do k=1,np if (.not.ao_two_e_integral_zero( addr1(Lset(k)), addr1(Dset(m)),& addr2(Lset(k)), addr2(Dset(m)) ) ) then - Delta(k,m) = Delta(k,m) + & + Delta_col(k) = & get_ao_two_e_integral( addr1(Lset(k)), addr1(Dset(m)),& addr2(Lset(k)), addr2(Dset(m)), ao_integrals_map) endif enddo !$OMP END PARALLEL DO endif + + !$OMP PARALLEL DO PRIVATE(p) + do p=1,np + Ltmp_p(p,iblock) = Ltmp_p(p,iblock) + Delta_col(p) + Delta(p,dj) = Ltmp_p(p,iblock) + enddo + !$OMP END PARALLEL DO + computed(dj) = .True. endif - iblock = iblock+1 -!print *, iblock - do p=1,np - Ltmp_p(p,iblock) = Delta(p,dj) - enddo - ! iv. if (iblock > 1) then -!print *, 'dgemv', iblock call dgemv('N', np, iblock-1, -1.d0, Ltmp_p, np, Ltmp_q(dj,1), nq, 1.d0,& Ltmp_p(1,iblock), 1) endif @@ -412,10 +416,15 @@ END_PROVIDER print '(I10, 4X, ES12.3)', rank, Qmax + deallocate(Delta_col) deallocate(Ltmp_p) deallocate(Ltmp_q) deallocate(computed) - deallocate(Delta) + if (delta_on_disk) then + call munmap( (/ np*1_8, nq*1_8 /), 8, fd(2), c_pointer(2) ) + else + deallocate(Delta) + endif ! i. N = rank @@ -426,35 +435,16 @@ END_PROVIDER Dmax = max(Dmax, D(Lset(p))) enddo - mem = qp_max_mem+1 - do while ( (mem > qp_max_mem).and.(i8>1_8) ) - dscale = min(1.d0,dsqrt(tau2/(D_sorted(i8)*Dmax))) - dscale_tmp = dscale*dscale*Dmax -!print *, 'dscale = ', dscale, dble(i8)/dble(ndim8) - np8=0_8 - do p8=1,ndim8 - if ( dscale_tmp*D(p8) > tau2 ) then - np8 = np8+1_8 - Lset(np8) = p8 - endif - enddo - i8 = i8*3_8/4_8 - if (np8 > huge(1_4)/64_8) cycle - np = np8 -!print *, 'np = ', np - call resident_memory(mem) - mem = mem & - + 0.1d0*np*memory_of_double(np) ! Delta(np,nq) + dscale = 1.d0 + dscale_tmp = dscale*dscale*Dmax + np8=0_8 + do p8=1,ndim8 + if ( dscale_tmp*D(p8) > tau2 ) then + np8 = np8+1_8 + Lset(np8) = p8 + endif enddo - - if (np == 0) then - call print_memory_usage() - print *, 'Required peak memory: ', mem, 'Gb' - call resident_memory(mem) - print *, 'Already used memory: ', mem, 'Gb' - print *, 'Not enough memory. Reduce cholesky threshold' - stop -1 - endif + np = np8 enddo @@ -480,7 +470,7 @@ END_PROVIDER enddo !$OMP END PARALLEL DO - call munmap( (/ ndim8, ndim8 /), 8, fd(1), c_pointer(1) ) + call munmap( (/ ndim8, rank_max /), 8, fd(1), c_pointer(1) ) cholesky_ao_num = rank From 19286bede43e5b01b5997ccf5e709a2ade9a4456 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 5 Jun 2024 02:51:12 +0200 Subject: [PATCH 065/159] Initialization --- src/ao_two_e_ints/cholesky.irp.f | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 34b91f0f..a7b2389f 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -248,7 +248,7 @@ END_PROVIDER allocate(Delta(np,nq)) delta_on_disk = .False. endif - print *, delta_on_disk +!print *, delta_on_disk allocate(Delta_col(np)) @@ -275,7 +275,7 @@ END_PROVIDER !print *, 'N, rank, block_size', N, rank, block_size - !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q,j) + !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q) do k=1,N !$OMP DO do p=1,np @@ -356,6 +356,8 @@ END_PROVIDER Delta_col(k) = & ao_two_e_integral(addr1(Lset(k)), addr2(Lset(k)),& addr1(Dset(m)), addr2(Dset(m))) + else + Delta_col(k) = 0.d0 endif enddo !$OMP END PARALLEL DO @@ -367,6 +369,8 @@ END_PROVIDER Delta_col(k) = & get_ao_two_e_integral( addr1(Lset(k)), addr1(Dset(m)),& addr2(Lset(k)), addr2(Dset(m)), ao_integrals_map) + else + Delta_col(k) = 0.d0 endif enddo !$OMP END PARALLEL DO From 36a2f0b46ff535607764b662e8013cba49347ff8 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 5 Jun 2024 03:16:55 +0200 Subject: [PATCH 066/159] Fixed cholesky --- src/ao_two_e_ints/cholesky.irp.f | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index a7b2389f..09131b5d 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -272,9 +272,10 @@ END_PROVIDER allocate(computed(nq)) + computed(:) = .False. + !print *, 'N, rank, block_size', N, rank, block_size - !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q) do k=1,N !$OMP DO @@ -285,7 +286,6 @@ END_PROVIDER !$OMP DO do q=1,nq - computed(q) = .False. Ltmp_q(q,k) = L(Dset(q),k) enddo !$OMP END DO NOWAIT From 2241096a6485a71406c12e5c2ae3165a4a838aeb Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 6 Jun 2024 13:53:30 +0200 Subject: [PATCH 067/159] Trying to improve mmap performance --- src/ao_two_e_ints/cholesky.irp.f | 4 ++-- .../dav_diag_dressed_ext_rout.irp.f | 1 - ...diag_dressed_ext_rout_nonsym_B1space.irp.f | 2 -- .../dav_double_dress_ext_rout.irp.f | 1 - .../dav_dressed_ext_rout.irp.f | 1 - src/dav_general_mat/dav_ext_rout.irp.f | 1 - .../dav_ext_rout_nonsym_B1space.irp.f | 2 -- src/dav_general_mat/dav_general.irp.f | 6 +++--- src/davidson/diagonalization_h_dressed.irp.f | 2 +- .../diagonalization_hcsf_dressed.irp.f | 2 +- .../diagonalization_hs2_dressed.irp.f | 4 ++-- .../diagonalization_nonsym_h_dressed.irp.f | 2 +- src/utils/fortran_mmap.c | 13 +++++++++---- src/utils/map_functions.irp.f | 12 ++++++------ src/utils/memory.irp.f | 2 +- src/utils/mmap.f90 | 19 +++++++++++-------- 16 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 09131b5d..3cd400f8 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -88,7 +88,7 @@ END_PROVIDER call resident_memory(mem0) rank_max = min(ndim8,274877906944_8/1_8/ndim8) - call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., c_pointer(1)) + call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., .True., c_pointer(1)) call c_f_pointer(c_pointer(1), L, (/ ndim8, rank_max /)) ! Deleting the file while it is open makes the file invisible on the filesystem, ! and automatically deleted, even if the program crashes @@ -237,7 +237,7 @@ END_PROVIDER + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) if (mem > qp_max_mem) then - call mmap(trim(ezfio_work_dir)//'cholesky_delta', (/ np*1_8, nq*1_8 /), 8, fd(2), .False., c_pointer(2)) + call mmap(trim(ezfio_work_dir)//'cholesky_delta', (/ np*1_8, nq*1_8 /), 8, fd(2), .False., .True., c_pointer(2)) call c_f_pointer(c_pointer(2), Delta, (/ np, nq /)) ! Deleting the file while it is open makes the file invisible on the filesystem, ! and automatically deleted, even if the program crashes diff --git a/src/dav_general_mat/dav_diag_dressed_ext_rout.irp.f b/src/dav_general_mat/dav_diag_dressed_ext_rout.irp.f index 0dc939cb..f57b7f92 100644 --- a/src/dav_general_mat/dav_diag_dressed_ext_rout.irp.f +++ b/src/dav_general_mat/dav_diag_dressed_ext_rout.irp.f @@ -1,6 +1,5 @@ subroutine davidson_general_ext_rout_diag_dressed(u_in,H_jj,Dress_jj,energies,sze,N_st,N_st_diag_in,converged,hcalc) - use mmap_module implicit none BEGIN_DOC ! Generic Davidson diagonalization with ONE DIAGONAL DRESSING OPERATOR diff --git a/src/dav_general_mat/dav_diag_dressed_ext_rout_nonsym_B1space.irp.f b/src/dav_general_mat/dav_diag_dressed_ext_rout_nonsym_B1space.irp.f index 1a8269f4..c8848998 100644 --- a/src/dav_general_mat/dav_diag_dressed_ext_rout_nonsym_B1space.irp.f +++ b/src/dav_general_mat/dav_diag_dressed_ext_rout_nonsym_B1space.irp.f @@ -3,8 +3,6 @@ subroutine davidson_general_diag_dressed_ext_rout_nonsym_b1space(u_in, H_jj, Dress_jj,energies, sze, N_st, N_st_diag_in, converged, hcalc) - use mmap_module - BEGIN_DOC ! Generic modified-Davidson diagonalization ! diff --git a/src/dav_general_mat/dav_double_dress_ext_rout.irp.f b/src/dav_general_mat/dav_double_dress_ext_rout.irp.f index 24f4fa10..1ff6632c 100644 --- a/src/dav_general_mat/dav_double_dress_ext_rout.irp.f +++ b/src/dav_general_mat/dav_double_dress_ext_rout.irp.f @@ -1,5 +1,4 @@ subroutine dav_double_dressed(u_in,H_jj,Dress_jj,Dressing_vec,idx_dress,energies,sze,N_st,N_st_diag,converged,hcalc) - use mmap_module BEGIN_DOC ! Generic Davidson diagonalization with TWO DRESSING VECTORS ! diff --git a/src/dav_general_mat/dav_dressed_ext_rout.irp.f b/src/dav_general_mat/dav_dressed_ext_rout.irp.f index cedaaf0a..ca59a688 100644 --- a/src/dav_general_mat/dav_dressed_ext_rout.irp.f +++ b/src/dav_general_mat/dav_dressed_ext_rout.irp.f @@ -1,5 +1,4 @@ subroutine davidson_general_ext_rout_dressed(u_in,H_jj,energies,sze,N_st,N_st_diag,dressing_state,dressing_vec,idress,converged,hcalc) - use mmap_module implicit none BEGIN_DOC ! Davidson diagonalization. diff --git a/src/dav_general_mat/dav_ext_rout.irp.f b/src/dav_general_mat/dav_ext_rout.irp.f index deb7e3a9..ad60b2a8 100644 --- a/src/dav_general_mat/dav_ext_rout.irp.f +++ b/src/dav_general_mat/dav_ext_rout.irp.f @@ -1,6 +1,5 @@ subroutine davidson_general_ext_rout(u_in,H_jj,energies,sze,N_st,N_st_diag_in,converged,hcalc) - use mmap_module implicit none BEGIN_DOC ! Generic Davidson diagonalization diff --git a/src/dav_general_mat/dav_ext_rout_nonsym_B1space.irp.f b/src/dav_general_mat/dav_ext_rout_nonsym_B1space.irp.f index d89aaadb..ca0a835e 100644 --- a/src/dav_general_mat/dav_ext_rout_nonsym_B1space.irp.f +++ b/src/dav_general_mat/dav_ext_rout_nonsym_B1space.irp.f @@ -3,8 +3,6 @@ subroutine davidson_general_ext_rout_nonsym_b1space(u_in, H_jj, energies, sze, N_st, N_st_diag_in, converged, hcalc) - use mmap_module - BEGIN_DOC ! Generic modified-Davidson diagonalization ! diff --git a/src/dav_general_mat/dav_general.irp.f b/src/dav_general_mat/dav_general.irp.f index 9940bf1e..a277d9ef 100644 --- a/src/dav_general_mat/dav_general.irp.f +++ b/src/dav_general_mat/dav_general.irp.f @@ -1,6 +1,6 @@ subroutine davidson_general(u_in,H_jj,energies,dim_in,sze,N_st,N_st_diag_in,converged,h_mat) - use mmap_module +! use mmap_module implicit none BEGIN_DOC ! Davidson diagonalization with specific diagonal elements of the H matrix @@ -160,9 +160,9 @@ subroutine davidson_general(u_in,H_jj,energies,dim_in,sze,N_st,N_st_diag_in,conv ! type(c_ptr) :: ptr_w, ptr_s ! integer :: fd_s, fd_w ! call mmap(trim(ezfio_work_dir)//'davidson_w', (/int(sze,8),int(N_st_diag*itermax,8)/),& -! 8, fd_w, .False., ptr_w) +! 8, fd_w, .False., .True., ptr_w) ! call mmap(trim(ezfio_work_dir)//'davidson_s', (/int(sze,8),int(N_st_diag*itermax,8)/),& -! 4, fd_s, .False., ptr_s) +! 4, fd_s, .False., .True., ptr_s) ! call c_f_pointer(ptr_w, w, (/sze,N_st_diag*itermax/)) ! call c_f_pointer(ptr_s, s, (/sze,N_st_diag*itermax/)) ! else diff --git a/src/davidson/diagonalization_h_dressed.irp.f b/src/davidson/diagonalization_h_dressed.irp.f index b7179c18..15bf256d 100644 --- a/src/davidson/diagonalization_h_dressed.irp.f +++ b/src/davidson/diagonalization_h_dressed.irp.f @@ -228,7 +228,7 @@ subroutine davidson_diag_hjj(dets_in,u_in,H_jj,energies,dim_in,sze,N_st,N_st_dia type(c_ptr) :: ptr_w, ptr_s integer :: fd_s, fd_w call mmap(trim(ezfio_work_dir)//'davidson_w', (/int(sze,8),int(N_st_diag*itermax,8)/),& - 8, fd_w, .False., ptr_w) + 8, fd_w, .False., .True., ptr_w) call c_f_pointer(ptr_w, w, (/sze,N_st_diag*itermax/)) else allocate(W(sze,N_st_diag*itermax)) diff --git a/src/davidson/diagonalization_hcsf_dressed.irp.f b/src/davidson/diagonalization_hcsf_dressed.irp.f index fa8aff80..656dd1d9 100644 --- a/src/davidson/diagonalization_hcsf_dressed.irp.f +++ b/src/davidson/diagonalization_hcsf_dressed.irp.f @@ -229,7 +229,7 @@ subroutine davidson_diag_csf_hjj(dets_in,u_in,H_jj,energies,dim_in,sze,sze_csf,N type(c_ptr) :: ptr_w, ptr_s integer :: fd_s, fd_w call mmap(trim(ezfio_work_dir)//'davidson_w', (/int(sze,8),int(N_st_diag*itermax,8)/),& - 8, fd_w, .False., ptr_w) + 8, fd_w, .False., .True., ptr_w) call c_f_pointer(ptr_w, W_csf, (/sze_csf,N_st_diag*itermax/)) else allocate(W(sze,N_st_diag),W_csf(sze_csf,N_st_diag*itermax)) diff --git a/src/davidson/diagonalization_hs2_dressed.irp.f b/src/davidson/diagonalization_hs2_dressed.irp.f index fd967ecc..fb04b29b 100644 --- a/src/davidson/diagonalization_hs2_dressed.irp.f +++ b/src/davidson/diagonalization_hs2_dressed.irp.f @@ -270,9 +270,9 @@ subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_ type(c_ptr) :: ptr_w, ptr_s integer :: fd_s, fd_w call mmap(trim(ezfio_work_dir)//'davidson_w', (/int(sze,8),int(N_st_diag*itermax,8)/),& - 8, fd_w, .False., ptr_w) + 8, fd_w, .False., .True., ptr_w) call mmap(trim(ezfio_work_dir)//'davidson_s', (/int(sze,8),int(N_st_diag*itermax,8)/),& - 4, fd_s, .False., ptr_s) + 4, fd_s, .False., .True., ptr_s) call c_f_pointer(ptr_w, w, (/sze,N_st_diag*itermax/)) call c_f_pointer(ptr_s, s, (/sze,N_st_diag*itermax/)) else diff --git a/src/davidson/diagonalization_nonsym_h_dressed.irp.f b/src/davidson/diagonalization_nonsym_h_dressed.irp.f index 96ca84ab..86df3a19 100644 --- a/src/davidson/diagonalization_nonsym_h_dressed.irp.f +++ b/src/davidson/diagonalization_nonsym_h_dressed.irp.f @@ -251,7 +251,7 @@ subroutine davidson_diag_nonsym_hjj(dets_in, u_in, H_jj, energies, dim_in, sze, type(c_ptr) :: ptr_w, ptr_s integer :: fd_s, fd_w call mmap(trim(ezfio_work_dir)//'davidson_w', (/int(sze,8),int(N_st_diag*itermax,8)/),& - 8, fd_w, .False., ptr_w) + 8, fd_w, .False., .True., ptr_w) call c_f_pointer(ptr_w, w, (/sze,N_st_diag*itermax/)) else allocate(W(sze,N_st_diag*itermax)) diff --git a/src/utils/fortran_mmap.c b/src/utils/fortran_mmap.c index e8d85a2f..fdf7fb6f 100644 --- a/src/utils/fortran_mmap.c +++ b/src/utils/fortran_mmap.c @@ -7,7 +7,7 @@ #include -void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only) +void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only, int single_node) { int fd; int result; @@ -21,7 +21,7 @@ void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only) perror("Error opening mmap file for reading"); exit(EXIT_FAILURE); } - map = mmap(NULL, bytes, PROT_READ, MAP_SHARED, fd, 0); + map = mmap(NULL, bytes, PROT_READ, MAP_PRIVATE, fd, 0); } else { @@ -39,7 +39,7 @@ void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only) perror("Error calling lseek() to stretch the file"); exit(EXIT_FAILURE); } - + result = write(fd, "", 1); if (result != 1) { close(fd); @@ -48,7 +48,12 @@ void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only) exit(EXIT_FAILURE); } - map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (single_node == 1) { + map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_HUGETLB , fd, 0); + } else { + map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_HUGETLB, fd, 0); + } } if (map == MAP_FAILED) { diff --git a/src/utils/map_functions.irp.f b/src/utils/map_functions.irp.f index 97d0e8bf..e3a62b07 100644 --- a/src/utils/map_functions.irp.f +++ b/src/utils/map_functions.irp.f @@ -21,13 +21,13 @@ subroutine map_save_to_disk(filename,map) stop 'map already consolidated' endif - call mmap(trim(filename)//'_consolidated_idx', (/ map % map_size + 2_8 /), 8, fd(1), .False., c_pointer(1)) + call mmap(trim(filename)//'_consolidated_idx', (/ map % map_size + 2_8 /), 8, fd(1), .False., .False., c_pointer(1)) call c_f_pointer(c_pointer(1),map % consolidated_idx, (/ map % map_size +2_8/)) - call mmap(trim(filename)//'_consolidated_key', (/ n_elements /), cache_key_kind, fd(2), .False., c_pointer(2)) + call mmap(trim(filename)//'_consolidated_key', (/ n_elements /), cache_key_kind, fd(2), .False., .False., c_pointer(2)) call c_f_pointer(c_pointer(2),map % consolidated_key, (/ n_elements /)) - call mmap(trim(filename)//'_consolidated_value', (/ n_elements /), integral_kind, fd(3), .False., c_pointer(3)) + call mmap(trim(filename)//'_consolidated_value', (/ n_elements /), integral_kind, fd(3), .False., .False., c_pointer(3)) call c_f_pointer(c_pointer(3),map % consolidated_value, (/ n_elements /)) if (.not.associated(map%consolidated_key)) then @@ -85,15 +85,15 @@ subroutine map_load_from_disk(filename,map) stop 'map already consolidated' endif - call mmap(trim(filename)//'_consolidated_idx', (/ map % map_size + 2_8 /), 8, fd(1), .True., c_pointer(1)) + call mmap(trim(filename)//'_consolidated_idx', (/ map % map_size + 2_8 /), 8, fd(1), .True., .False., c_pointer(1)) call c_f_pointer(c_pointer(1),map % consolidated_idx, (/ map % map_size + 2_8/)) map% n_elements = map % consolidated_idx (map % map_size+2_8)-1_8 - call mmap(trim(filename)//'_consolidated_key', (/ map % n_elements /), cache_key_kind, fd(2), .True., c_pointer(2)) + call mmap(trim(filename)//'_consolidated_key', (/ map % n_elements /), cache_key_kind, fd(2), .True., .False., c_pointer(2)) call c_f_pointer(c_pointer(2),map % consolidated_key, (/ map % n_elements /)) - call mmap(trim(filename)//'_consolidated_value', (/ map % n_elements /), integral_kind, fd(3), .True., c_pointer(3)) + call mmap(trim(filename)//'_consolidated_value', (/ map % n_elements /), integral_kind, fd(3), .True., .False., c_pointer(3)) call c_f_pointer(c_pointer(3),map % consolidated_value, (/ map % n_elements /)) l = 0_8 diff --git a/src/utils/memory.irp.f b/src/utils/memory.irp.f index 043562db..e2e8dd76 100644 --- a/src/utils/memory.irp.f +++ b/src/utils/memory.irp.f @@ -6,7 +6,7 @@ BEGIN_PROVIDER [ integer, qp_max_mem ] character*(128) :: env integer, external :: get_total_available_memory - qp_max_mem = get_total_available_memory() + qp_max_mem = max(get_total_available_memory() - 1,3) call write_int(6,qp_max_mem,'Total available memory (GB)') call getenv('QP_MAXMEM',env) if (trim(env) /= '') then diff --git a/src/utils/mmap.f90 b/src/utils/mmap.f90 index 41e60224..723cb771 100644 --- a/src/utils/mmap.f90 +++ b/src/utils/mmap.f90 @@ -7,12 +7,13 @@ module mmap_module ! File descriptors ! ---------------- - type(c_ptr) function c_mmap_fortran(filename, length, fd, read_only) bind(c,name='mmap_fortran') + type(c_ptr) function c_mmap_fortran(filename, length, fd, read_only, single_node) bind(c,name='mmap_fortran') use iso_c_binding character(c_char), intent(in) :: filename(*) integer(c_size_t), intent(in), value :: length integer(c_int), intent(out) :: fd integer(c_int), intent(in), value :: read_only + integer(c_int), intent(in), value :: single_node end function subroutine c_munmap_fortran(length, fd, map) bind(c,name='munmap_fortran') @@ -33,31 +34,33 @@ module mmap_module contains - subroutine mmap(filename, shape, bytes, fd, read_only, map) + subroutine mmap(filename, shape, bytes, fd, read_only, single_node, map) use iso_c_binding implicit none character*(*), intent(in) :: filename ! Name of the mapped file integer*8, intent(in) :: shape(:) ! Shape of the array to map integer, intent(in) :: bytes ! Number of bytes per element logical, intent(in) :: read_only ! If true, mmap is read-only + logical, intent(in) :: single_node! If true, mmap is on a single node integer, intent(out) :: fd ! File descriptor type(c_ptr), intent(out) :: map ! C Pointer integer(c_size_t) :: length integer(c_int) :: fd_ - integer :: i + integer :: i, read_only_, single_node_ + + read_only_ = 0 + single_node_ = 0 + if (read_only_) read_only_ = 1 + if (single_node_) single_node_ = 1 length = int(bytes,8) do i=1,size(shape) length = length * shape(i) enddo - if (read_only) then - map = c_mmap_fortran( trim(filename)//char(0), length, fd_, 1) - else - map = c_mmap_fortran( trim(filename)//char(0), length, fd_, 0) - endif + map = c_mmap_fortran( trim(filename)//char(0), length, fd_, read_only, single_node) fd = fd_ end subroutine From 6ae162b6c93d0bb31749086736dea13af9edfb56 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 7 Jun 2024 14:33:13 +0200 Subject: [PATCH 068/159] Disk-based cholesky OK --- src/ao_two_e_ints/cholesky.irp.f | 13 ++++++++++--- src/utils/fortran_mmap.c | 5 ++--- src/utils/mmap.f90 | 6 +++--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 3cd400f8..6778d5c7 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -66,6 +66,10 @@ END_PROVIDER integer :: fd(2) logical :: delta_on_disk + PROVIDE nproc + PROVIDE nucl_coord ao_two_e_integral_schwartz + call set_multiple_levels_omp(.False.) + call wall_time(wall0) ! Will be reallocated at the end @@ -87,7 +91,7 @@ END_PROVIDER call resident_memory(mem0) - rank_max = min(ndim8,274877906944_8/1_8/ndim8) + rank_max = min(ndim8,(qp_max_mem*1024_8*1024_8*1024_8/8_8)/ndim8) call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., .True., c_pointer(1)) call c_f_pointer(c_pointer(1), L, (/ ndim8, rank_max /)) ! Deleting the file while it is open makes the file invisible on the filesystem, @@ -209,7 +213,7 @@ END_PROVIDER + np*memory_of_double(nq) !print *, 'mem = ', mem - if (mem > 300.d0) then ! 300GB max for Delta + if (mem > qp_max_mem/2) then s = s*2.d0 else exit @@ -231,9 +235,12 @@ END_PROVIDER enddo ! d., e. - mem = mem0 & + mem = mem0 & + memory_of_int(nq) &! computed(nq) + np*memory_of_int(nq) &! computed(nq) + + memory_of_double(np) &! Delta_col(np) + + 7*memory_of_double(ndim8) &! D, Lset, Dset, D_sorted, addr[1-3] + + np*memory_of_double(nq) &! Delta(np,nq) + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) if (mem > qp_max_mem) then diff --git a/src/utils/fortran_mmap.c b/src/utils/fortran_mmap.c index fdf7fb6f..711a9c34 100644 --- a/src/utils/fortran_mmap.c +++ b/src/utils/fortran_mmap.c @@ -49,10 +49,9 @@ void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only, } if (single_node == 1) { - map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_HUGETLB , fd, 0); + map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_POPULATE | MAP_NONBLOCK, fd, 0); } else { - map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_HUGETLB, fd, 0); + map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); } } diff --git a/src/utils/mmap.f90 b/src/utils/mmap.f90 index 723cb771..af3fe6ed 100644 --- a/src/utils/mmap.f90 +++ b/src/utils/mmap.f90 @@ -46,9 +46,9 @@ module mmap_module type(c_ptr), intent(out) :: map ! C Pointer integer(c_size_t) :: length - integer(c_int) :: fd_ + integer(c_int) :: fd_, read_only_, single_node_ - integer :: i, read_only_, single_node_ + integer :: i read_only_ = 0 single_node_ = 0 @@ -60,7 +60,7 @@ module mmap_module length = length * shape(i) enddo - map = c_mmap_fortran( trim(filename)//char(0), length, fd_, read_only, single_node) + map = c_mmap_fortran( trim(filename)//char(0), length, fd_, read_only_, single_node_) fd = fd_ end subroutine From af8973770e9265f6b8f997edde1873b97c1a48da Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 7 Jun 2024 14:39:34 +0200 Subject: [PATCH 069/159] Typo in mmap --- src/utils/mmap.f90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/mmap.f90 b/src/utils/mmap.f90 index af3fe6ed..e342b422 100644 --- a/src/utils/mmap.f90 +++ b/src/utils/mmap.f90 @@ -52,8 +52,8 @@ module mmap_module read_only_ = 0 single_node_ = 0 - if (read_only_) read_only_ = 1 - if (single_node_) single_node_ = 1 + if (read_only) read_only_ = 1 + if (single_node) single_node_ = 1 length = int(bytes,8) do i=1,size(shape) From f58df5e81669226e728f744308593db5a5e4cad0 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 7 Jun 2024 16:09:53 +0200 Subject: [PATCH 070/159] Added do_mo_cholesky --- src/ao_two_e_ints/EZFIO.cfg | 2 +- src/ao_two_e_ints/cholesky.irp.f | 6 +- src/mo_two_e_ints/EZFIO.cfg | 6 ++ src/mo_two_e_ints/cholesky.irp.f | 117 +++++++++++++++------- src/mo_two_e_ints/four_idx_novvvv.irp.f | 9 -- src/mo_two_e_ints/integrals_3_index.irp.f | 2 +- src/mo_two_e_ints/mo_bi_integrals.irp.f | 2 +- src/trexio/import_trexio_integrals.irp.f | 5 + 8 files changed, 97 insertions(+), 52 deletions(-) diff --git a/src/ao_two_e_ints/EZFIO.cfg b/src/ao_two_e_ints/EZFIO.cfg index c2e083a3..a985149e 100644 --- a/src/ao_two_e_ints/EZFIO.cfg +++ b/src/ao_two_e_ints/EZFIO.cfg @@ -6,7 +6,7 @@ default: None [io_ao_cholesky] type: Disk_access -doc: Read/Write |AO| integrals from/to disk [ Write | Read | None ] +doc: Read/Write |AO| Cholesky integrals from/to disk [ Write | Read | None ] interface: ezfio,provider,ocaml default: None diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 6778d5c7..a1cd8e5b 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -76,7 +76,7 @@ END_PROVIDER deallocate(cholesky_ao) if (read_ao_cholesky) then - print *, 'Reading Cholesky vectors from disk...' + print *, 'Reading Cholesky AO vectors from disk...' iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_ao', 'R') read(iunit) rank allocate(cholesky_ao(ao_num,ao_num,rank), stat=ierr) @@ -486,7 +486,7 @@ END_PROVIDER cholesky_ao_num = rank if (write_ao_cholesky) then - print *, 'Writing Cholesky vectors to disk...' + print *, 'Writing Cholesky AO vectors to disk...' iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_ao', 'W') write(iunit) rank write(iunit) cholesky_ao @@ -499,7 +499,7 @@ END_PROVIDER print *, 'Rank : ', cholesky_ao_num, '(', 100.d0*dble(cholesky_ao_num)/dble(ao_num*ao_num), ' %)' print *, '' call wall_time(wall1) - print*,'Time to provide AO cholesky vectors = ',wall1-wall0 + print*,'Time to provide AO cholesky vectors = ',(wall1-wall0)/60.d0, ' min' END_PROVIDER diff --git a/src/mo_two_e_ints/EZFIO.cfg b/src/mo_two_e_ints/EZFIO.cfg index 088a2416..49a2952c 100644 --- a/src/mo_two_e_ints/EZFIO.cfg +++ b/src/mo_two_e_ints/EZFIO.cfg @@ -1,3 +1,9 @@ +[io_mo_cholesky] +type: Disk_access +doc: Read/Write |MO| Cholesky integrals from/to disk [ Write | Read | None ] +interface: ezfio,provider,ocaml +default: None + [io_mo_two_e_integrals] type: Disk_access doc: Read/Write |MO| integrals from/to disk [ Write | Read | None ] diff --git a/src/mo_two_e_ints/cholesky.irp.f b/src/mo_two_e_ints/cholesky.irp.f index 0d0989d7..d3affd68 100644 --- a/src/mo_two_e_ints/cholesky.irp.f +++ b/src/mo_two_e_ints/cholesky.irp.f @@ -1,55 +1,98 @@ +BEGIN_PROVIDER [ logical, do_mo_cholesky ] + implicit none + BEGIN_DOC + ! If True, use Cholesky vectors for MO integrals + END_DOC + do_mo_cholesky = do_ao_cholesky +END_PROVIDER + BEGIN_PROVIDER [ integer, cholesky_mo_num ] implicit none BEGIN_DOC ! Number of Cholesky vectors in MO basis END_DOC - cholesky_mo_num = cholesky_ao_num -END_PROVIDER - -BEGIN_PROVIDER [ double precision, cholesky_mo, (mo_num, mo_num, cholesky_mo_num) ] - implicit none - BEGIN_DOC - ! Cholesky vectors in MO basis - END_DOC - - integer :: k, i, j - - call set_multiple_levels_omp(.False.) - !$OMP PARALLEL DO PRIVATE(k) - do k=1,cholesky_mo_num - do j=1,mo_num - do i=1,mo_num - cholesky_mo(i,j,k) = cholesky_mo_transp(k,i,j) - enddo - enddo - enddo - !$OMP END PARALLEL DO - + integer, external :: getUnitAndOpen + integer :: iunit + if (read_mo_cholesky) then + iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_mo_transp', 'R') + read(iunit) cholesky_mo_num + close(iunit) + else + cholesky_mo_num = cholesky_ao_num + endif END_PROVIDER +!BEGIN_PROVIDER [ double precision, cholesky_mo, (mo_num, mo_num, cholesky_mo_num) ] +! implicit none +! BEGIN_DOC +! ! Cholesky vectors in MO basis +! END_DOC +! +! integer :: k, i, j +! +! call set_multiple_levels_omp(.False.) +! !$OMP PARALLEL DO PRIVATE(k) +! do k=1,cholesky_mo_num +! do j=1,mo_num +! do i=1,mo_num +! cholesky_mo(i,j,k) = cholesky_mo_transp(k,i,j) +! enddo +! enddo +! enddo +! !$OMP END PARALLEL DO +! +!END_PROVIDER +! BEGIN_PROVIDER [ double precision, cholesky_mo_transp, (cholesky_mo_num, mo_num, mo_num) ] implicit none BEGIN_DOC - ! Cholesky vectors in MO basis + ! Cholesky vectors in MO basis. Warning: it is transposed wrt cholesky_ao: + ! + ! - cholesky_ao is (ao_num^2 x cholesky_ao_num) + ! + ! - cholesky_mo_transp is (cholesky_mo_num x mo_num^2) END_DOC double precision, allocatable :: X(:,:,:) double precision :: wall0, wall1 - integer :: ierr - print *, 'AO->MO Transformation of Cholesky vectors' - call wall_time(wall0) + integer, external :: getUnitAndOpen + integer :: iunit, ierr, rank - allocate(X(mo_num,cholesky_mo_num,ao_num), stat=ierr) - if (ierr /= 0) then - print *, irp_here, ': Allocation failed' - endif - call dgemm('T','N', ao_num*cholesky_mo_num, mo_num, ao_num, 1.d0, & - cholesky_ao, ao_num, mo_coef, ao_num, 0.d0, X, ao_num*cholesky_mo_num) - call dgemm('T','N', cholesky_mo_num*mo_num, mo_num, ao_num, 1.d0, & - X, ao_num, mo_coef, ao_num, 0.d0, cholesky_mo_transp, cholesky_mo_num*mo_num) - deallocate(X) - call wall_time(wall1) - print*,'Time for AO->MO Cholesky vectors = ',wall1-wall0 + if (read_mo_cholesky) then + print *, 'Reading Cholesky MO vectors from disk...' + iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_mo_transp', 'R') + read(iunit) rank + if (cholesky_mo_num /= rank) then + stop 'inconsistent rank' + endif + read(iunit) cholesky_mo_transp + close(iunit) + else + print *, 'AO->MO Transformation of Cholesky vectors' + call wall_time(wall0) + + allocate(X(mo_num,cholesky_mo_num,ao_num), stat=ierr) + if (ierr /= 0) then + print *, irp_here, ': Allocation failed' + endif + call dgemm('T','N', ao_num*cholesky_mo_num, mo_num, ao_num, 1.d0, & + cholesky_ao, ao_num, mo_coef, ao_num, 0.d0, X, ao_num*cholesky_mo_num) + call dgemm('T','N', cholesky_mo_num*mo_num, mo_num, ao_num, 1.d0, & + X, ao_num, mo_coef, ao_num, 0.d0, cholesky_mo_transp, cholesky_mo_num*mo_num) + deallocate(X) + call wall_time(wall1) + print*,'Time to provide MO cholesky vectors = ',(wall1-wall0)/60.d0, ' min' + + + if (write_mo_cholesky) then + print *, 'Writing Cholesky MO vectors to disk...' + iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_mo_transp', 'W') + write(iunit) rank + write(iunit) cholesky_mo_transp + close(iunit) + call ezfio_set_mo_two_e_ints_io_mo_cholesky('Read') + endif + endif END_PROVIDER diff --git a/src/mo_two_e_ints/four_idx_novvvv.irp.f b/src/mo_two_e_ints/four_idx_novvvv.irp.f index 2be09689..80af35dc 100644 --- a/src/mo_two_e_ints/four_idx_novvvv.irp.f +++ b/src/mo_two_e_ints/four_idx_novvvv.irp.f @@ -1,12 +1,3 @@ -!BEGIN_PROVIDER [ logical, no_vvvv_integrals ] -! implicit none -! BEGIN_DOC -! If `True`, computes all integrals except for the integrals having 3 or 4 virtual indices -! END_DOC -! -! no_vvvv_integrals = .False. -!END_PROVIDER - BEGIN_PROVIDER [ double precision, mo_coef_novirt, (ao_num,n_core_inact_act_orb) ] implicit none BEGIN_DOC diff --git a/src/mo_two_e_ints/integrals_3_index.irp.f b/src/mo_two_e_ints/integrals_3_index.irp.f index eb05da84..c0dab506 100644 --- a/src/mo_two_e_ints/integrals_3_index.irp.f +++ b/src/mo_two_e_ints/integrals_3_index.irp.f @@ -10,7 +10,7 @@ double precision :: get_two_e_integral double precision :: integral - if (do_ao_cholesky) then + if (do_mo_cholesky) then double precision, allocatable :: buffer_jj(:,:), buffer(:,:,:) allocate(buffer_jj(cholesky_mo_num,mo_num), buffer(mo_num,mo_num,mo_num)) diff --git a/src/mo_two_e_ints/mo_bi_integrals.irp.f b/src/mo_two_e_ints/mo_bi_integrals.irp.f index 0e77b6a2..cb3f4bc6 100644 --- a/src/mo_two_e_ints/mo_bi_integrals.irp.f +++ b/src/mo_two_e_ints/mo_bi_integrals.irp.f @@ -1362,7 +1362,7 @@ END_PROVIDER double precision :: get_two_e_integral - if (do_ao_cholesky) then + if (do_mo_cholesky) then double precision, allocatable :: buffer(:,:) allocate (buffer(cholesky_mo_num,mo_num)) do k=1,cholesky_mo_num diff --git a/src/trexio/import_trexio_integrals.irp.f b/src/trexio/import_trexio_integrals.irp.f index 8c6b79d7..5a6b3c03 100644 --- a/src/trexio/import_trexio_integrals.irp.f +++ b/src/trexio/import_trexio_integrals.irp.f @@ -41,6 +41,11 @@ subroutine run(f) integer , allocatable :: Vi(:,:) double precision :: s +! TODO: +! - If Cholesky AO in trexio file, read cholesky ao vectors +! - If Cholesky MO in trexio file, read cholesky mo vectors +! - If Cholesky MO not in trexio file, force do_cholesky_mo to False + if (trexio_has_nucleus_repulsion(f) == TREXIO_SUCCESS) then rc = trexio_read_nucleus_repulsion(f, s) if (rc /= TREXIO_SUCCESS) then From e55390c70c98d9c475bde599ab3621246cac88af Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 7 Jun 2024 16:11:10 +0200 Subject: [PATCH 071/159] Type error in cholesky --- src/ao_two_e_ints/cholesky.irp.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 6778d5c7..ffb37565 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -239,7 +239,7 @@ END_PROVIDER + memory_of_int(nq) &! computed(nq) + np*memory_of_int(nq) &! computed(nq) + memory_of_double(np) &! Delta_col(np) - + 7*memory_of_double(ndim8) &! D, Lset, Dset, D_sorted, addr[1-3] + + 7*memory_of_double8(ndim8) &! D, Lset, Dset, D_sorted, addr[1-3] + np*memory_of_double(nq) &! Delta(np,nq) + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) From b080a7a5e9adecf0544cc34b65dbf967872a77e3 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 7 Jun 2024 16:34:14 +0200 Subject: [PATCH 072/159] Clean Cholesky MO --- src/mo_two_e_ints/EZFIO.cfg | 6 -- src/mo_two_e_ints/cholesky.irp.f | 6 +- src/mo_two_e_ints/mo_bi_integrals.irp.f | 39 +++++------ src/mo_two_e_ints/no_vvvv.irp.f | 88 ------------------------- 4 files changed, 25 insertions(+), 114 deletions(-) delete mode 100644 src/mo_two_e_ints/no_vvvv.irp.f diff --git a/src/mo_two_e_ints/EZFIO.cfg b/src/mo_two_e_ints/EZFIO.cfg index 49a2952c..c967969f 100644 --- a/src/mo_two_e_ints/EZFIO.cfg +++ b/src/mo_two_e_ints/EZFIO.cfg @@ -17,12 +17,6 @@ interface: ezfio,provider,ocaml default: 1.e-15 ezfio_name: threshold_mo -[no_vvvv_integrals] -type: logical -doc: If `True`, computes all integrals except for the integrals having 3 or 4 virtual indices -interface: ezfio,provider,ocaml -default: false - [io_mo_two_e_integrals_erf] type: Disk_access doc: Read/Write MO integrals with the long range interaction from/to disk [ Write | Read | None ] diff --git a/src/mo_two_e_ints/cholesky.irp.f b/src/mo_two_e_ints/cholesky.irp.f index d3affd68..5d34fb33 100644 --- a/src/mo_two_e_ints/cholesky.irp.f +++ b/src/mo_two_e_ints/cholesky.irp.f @@ -68,7 +68,11 @@ BEGIN_PROVIDER [ double precision, cholesky_mo_transp, (cholesky_mo_num, mo_num, read(iunit) cholesky_mo_transp close(iunit) else + print *, '' print *, 'AO->MO Transformation of Cholesky vectors' + print *, '-----------------------------------------' + print *, '' + call wall_time(wall0) allocate(X(mo_num,cholesky_mo_num,ao_num), stat=ierr) @@ -87,7 +91,7 @@ BEGIN_PROVIDER [ double precision, cholesky_mo_transp, (cholesky_mo_num, mo_num, if (write_mo_cholesky) then print *, 'Writing Cholesky MO vectors to disk...' iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_mo_transp', 'W') - write(iunit) rank + write(iunit) cholesky_mo_num write(iunit) cholesky_mo_transp close(iunit) call ezfio_set_mo_two_e_ints_io_mo_cholesky('Read') diff --git a/src/mo_two_e_ints/mo_bi_integrals.irp.f b/src/mo_two_e_ints/mo_bi_integrals.irp.f index cb3f4bc6..4b9bf97f 100644 --- a/src/mo_two_e_ints/mo_bi_integrals.irp.f +++ b/src/mo_two_e_ints/mo_bi_integrals.irp.f @@ -39,29 +39,16 @@ BEGIN_PROVIDER [ logical, mo_two_e_integrals_in_map ] return endif - if (.not. do_direct_integrals) then - PROVIDE ao_two_e_integrals_in_map - endif - - print *, '' - print *, 'AO -> MO integrals transformation' - print *, '---------------------------------' - print *, '' - call wall_time(wall_1) call cpu_time(cpu_1) - if(no_vvvv_integrals)then - call four_idx_novvvv_old + if (do_mo_cholesky) then + call add_integrals_to_map_cholesky else - if (do_ao_cholesky) then - call add_integrals_to_map_cholesky + if (dble(ao_num)**4 * 32.d-9 < dble(qp_max_mem)) then + call four_idx_dgemm else - if (dble(ao_num)**4 * 32.d-9 < dble(qp_max_mem)) then - call four_idx_dgemm - else - call add_integrals_to_map(full_ijkl_bitmask_4) - endif + call add_integrals_to_map(full_ijkl_bitmask_4) endif endif @@ -92,8 +79,15 @@ subroutine four_idx_dgemm double precision, allocatable :: a1(:,:,:,:) double precision, allocatable :: a2(:,:,:,:) + PROVIDE ao_two_e_integrals_in_map mo_coef + + print *, '' + print *, 'DGEMM-based AO->MO Transformation' + print *, '---------------------------------' + print *, '' + if (ao_num > 1289) then - print *, irp_here, ': Integer overflow in ao_num**3' + print *, irp_here, ': Integer overflow in ao_num**3. Set do_ao_cholesky=.True.' endif allocate (a1(ao_num,ao_num,ao_num,ao_num)) @@ -213,6 +207,12 @@ subroutine add_integrals_to_map(mask_ijkl) PROVIDE ao_two_e_integrals_in_map mo_coef + + print *, '' + print *, 'Sparse AO->MO Transformation' + print *, '----------------------------' + print *, '' + !Get list of MOs for i,j,k and l !------------------------------- @@ -469,6 +469,7 @@ subroutine add_integrals_to_map_cholesky integer(key_kind) , allocatable :: buffer_i(:) real(integral_kind), allocatable :: buffer_value(:) + PROVIDE cholesky_mo_transp call set_multiple_levels_omp(.False.) !$OMP PARALLEL DEFAULT(SHARED) & diff --git a/src/mo_two_e_ints/no_vvvv.irp.f b/src/mo_two_e_ints/no_vvvv.irp.f deleted file mode 100644 index 48a7f5e2..00000000 --- a/src/mo_two_e_ints/no_vvvv.irp.f +++ /dev/null @@ -1,88 +0,0 @@ - -subroutine four_idx_novvvv_old - use map_module - use bitmasks - implicit none - BEGIN_DOC - ! Retransform MO integrals for next CAS-SCF step - END_DOC - integer(bit_kind) :: mask_ijkl(N_int,4) - integer(bit_kind) :: mask_ijk(N_int,3) - - print*,'Using partial transformation' - print*,'It will not transform all integrals with at least 3 indices within the virtuals' - integer :: i,j,k,l - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I I I I !!!!!!!!!!!!!!!!!!!! - ! (core+inact+act) ^ 4 - ! - print*, '' - print*, '' - do i = 1,N_int - mask_ijkl(i,1) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,2) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,3) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,4) = core_inact_act_bitmask_4(i,1) - enddo - call add_integrals_to_map(mask_ijkl) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I I V V !!!!!!!!!!!!!!!!!!!! - ! (core+inact+act) ^ 2 (virt) ^2 - ! = J_iv - print*, '' - print*, '' - do i = 1,N_int - mask_ijkl(i,1) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,2) = virt_bitmask(i,1) - mask_ijkl(i,3) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,4) = virt_bitmask(i,1) - enddo - call add_integrals_to_map(mask_ijkl) - - ! (core+inact+act) ^ 2 (virt) ^2 - ! = (iv|iv) - print*, '' - print*, '' - do i = 1,N_int - mask_ijkl(i,1) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,2) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,3) = virt_bitmask(i,1) - mask_ijkl(i,4) = virt_bitmask(i,1) - enddo - call add_integrals_to_map(mask_ijkl) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! V V V !!!!!!!!!!!!!!!!!!!!!!! -! if(.not.no_vvv_integrals)then - print*, '' - print*, ' and ' - do i = 1,N_int - mask_ijk(i,1) = virt_bitmask(i,1) - mask_ijk(i,2) = virt_bitmask(i,1) - mask_ijk(i,3) = virt_bitmask(i,1) - enddo - call add_integrals_to_map_three_indices(mask_ijk) -! endif - - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I I I V !!!!!!!!!!!!!!!!!!!! - ! (core+inact+act) ^ 3 (virt) ^1 - ! - print*, '' - print*, '' - do i = 1,N_int - mask_ijkl(i,1) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,2) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,3) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,4) = virt_bitmask(i,1) - enddo - call add_integrals_to_map(mask_ijkl) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I V V V !!!!!!!!!!!!!!!!!!!! - ! (core+inact+act) ^ 1 (virt) ^3 - ! -! if(.not.no_ivvv_integrals)then - print*, '' - print*, '' - do i = 1,N_int - mask_ijkl(i,1) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,2) = virt_bitmask(i,1) - mask_ijkl(i,3) = virt_bitmask(i,1) - mask_ijkl(i,4) = virt_bitmask(i,1) - enddo - call add_integrals_to_map_no_exit_34(mask_ijkl) -end From ca98a6b529b3aa47d125e27d4b8031ac88a55c41 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 7 Jun 2024 16:46:25 +0200 Subject: [PATCH 073/159] Fixed previous commit --- src/mo_two_e_ints/cholesky.irp.f | 42 ++++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/mo_two_e_ints/cholesky.irp.f b/src/mo_two_e_ints/cholesky.irp.f index 5d34fb33..971ab38d 100644 --- a/src/mo_two_e_ints/cholesky.irp.f +++ b/src/mo_two_e_ints/cholesky.irp.f @@ -22,27 +22,27 @@ BEGIN_PROVIDER [ integer, cholesky_mo_num ] endif END_PROVIDER -!BEGIN_PROVIDER [ double precision, cholesky_mo, (mo_num, mo_num, cholesky_mo_num) ] -! implicit none -! BEGIN_DOC -! ! Cholesky vectors in MO basis -! END_DOC -! -! integer :: k, i, j -! -! call set_multiple_levels_omp(.False.) -! !$OMP PARALLEL DO PRIVATE(k) -! do k=1,cholesky_mo_num -! do j=1,mo_num -! do i=1,mo_num -! cholesky_mo(i,j,k) = cholesky_mo_transp(k,i,j) -! enddo -! enddo -! enddo -! !$OMP END PARALLEL DO -! -!END_PROVIDER -! +BEGIN_PROVIDER [ double precision, cholesky_mo, (mo_num, mo_num, cholesky_mo_num) ] + implicit none + BEGIN_DOC + ! Cholesky vectors in MO basis + END_DOC + + integer :: k, i, j + + call set_multiple_levels_omp(.False.) + !$OMP PARALLEL DO PRIVATE(k) + do k=1,cholesky_mo_num + do j=1,mo_num + do i=1,mo_num + cholesky_mo(i,j,k) = cholesky_mo_transp(k,i,j) + enddo + enddo + enddo + !$OMP END PARALLEL DO + +END_PROVIDER + BEGIN_PROVIDER [ double precision, cholesky_mo_transp, (cholesky_mo_num, mo_num, mo_num) ] implicit none BEGIN_DOC From 7e1ed69eef611e6ff0336814c8ffded0eb9cf323 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 7 Jun 2024 18:03:51 +0200 Subject: [PATCH 074/159] Starting Cholesky transition --- src/mo_two_e_ints/map_integrals.irp.f | 38 +- src/mo_two_e_ints/mo_bi_integrals.irp.f | 856 +----------------------- 2 files changed, 57 insertions(+), 837 deletions(-) diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index ada256a2..290fdeab 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -98,7 +98,10 @@ double precision function get_two_e_integral(i,j,k,l,map) integer*8 :: ii_8 type(map_type), intent(inout) :: map real(integral_kind) :: tmp - PROVIDE mo_two_e_integrals_in_map mo_integrals_cache + integer :: kk + + PROVIDE mo_two_e_integrals_in_map mo_integrals_cache do_mo_cholesky + if (use_banned_excitation) then if (banned_excitation(i,k)) then get_two_e_integral = 0.d0 @@ -109,22 +112,43 @@ double precision function get_two_e_integral(i,j,k,l,map) return endif endif + + ii = l-mo_integrals_cache_min ii = ior(ii, k-mo_integrals_cache_min) ii = ior(ii, j-mo_integrals_cache_min) ii = ior(ii, i-mo_integrals_cache_min) - if (iand(ii, -128) /= 0) then - !DIR$ FORCEINLINE - call two_e_integrals_index(i,j,k,l,idx) - !DIR$ FORCEINLINE - call map_get(map,idx,tmp) - get_two_e_integral = dble(tmp) + +! if (iand(ii, -128) /= 0) then + if (.True.) then + ! Integral is not in the cache + + if (do_mo_cholesky) then + + get_two_e_integral = 0.d0 + do kk=1,cholesky_mo_num + get_two_e_integral = get_two_e_integral + cholesky_mo_transp(kk,i,k) * cholesky_mo_transp(kk,j,l) + enddo + + else + ! Integrals is in the map + + !DIR$ FORCEINLINE + call two_e_integrals_index(i,j,k,l,idx) + !DIR$ FORCEINLINE + call map_get(map,idx,tmp) + get_two_e_integral = dble(tmp) + endif + else + ! Integrals is in the cache + ii_8 = int(l,8)-mo_integrals_cache_min_8 ii_8 = ior( shiftl(ii_8,7), int(k,8)-mo_integrals_cache_min_8) ii_8 = ior( shiftl(ii_8,7), int(j,8)-mo_integrals_cache_min_8) ii_8 = ior( shiftl(ii_8,7), int(i,8)-mo_integrals_cache_min_8) get_two_e_integral = mo_integrals_cache(ii_8) + endif end diff --git a/src/mo_two_e_ints/mo_bi_integrals.irp.f b/src/mo_two_e_ints/mo_bi_integrals.irp.f index 4b9bf97f..d44bb38a 100644 --- a/src/mo_two_e_ints/mo_bi_integrals.irp.f +++ b/src/mo_two_e_ints/mo_bi_integrals.irp.f @@ -1,3 +1,26 @@ +! 1,2-index integrals are always taken from: +! - mo_two_e_integrals_jj_exchange +! - mo_two_e_integrals_jj_anti +! - mo_two_e_integrals_jj +! +! 3-index integrals are always taken from: +! - big_array_exchange_integrals +! - big_array_coulomb_integrals +! +! If (do_mo_cholesky): +! - Integrals with four 4 active orbitals are stored in the cache map, +! all other integrals are used from cholesky vectors +! - 1,2,3-index arrays are built from cholesky vectors +! Else: +! - All integrals are stored in the map or cache map +! - 1,2,3-index arrays are built from the map +! +! TODO: +! - build cache map from cholesky vectors +! - get_mo_integrals using cholesky +! - get_mo_integralss using cholesky +! - get_mo_integralss in PT2 + subroutine mo_two_e_integrals_index(i,j,k,l,i1) use map_module implicit none @@ -453,6 +476,9 @@ subroutine add_integrals_to_map(mask_ijkl) end + + + subroutine add_integrals_to_map_cholesky use bitmasks implicit none @@ -516,837 +542,7 @@ subroutine add_integrals_to_map_cholesky end -subroutine add_integrals_to_map_three_indices(mask_ijk) - use bitmasks - implicit none - BEGIN_DOC - ! Adds integrals to the MO map according to some bitmask - END_DOC - - integer(bit_kind), intent(in) :: mask_ijk(N_int,3) - - integer :: i,j,k,l - integer :: i0,j0,k0,l0 - double precision :: c, cpu_1, cpu_2, wall_1, wall_2, wall_0 - - integer, allocatable :: list_ijkl(:,:) - integer :: n_i, n_j, n_k - integer :: m - integer, allocatable :: two_e_tmp_0_idx(:) - real(integral_kind), allocatable :: two_e_tmp_0(:,:) - double precision, allocatable :: two_e_tmp_1(:) - double precision, allocatable :: two_e_tmp_2(:,:) - double precision, allocatable :: two_e_tmp_3(:,:,:) - !DIR$ ATTRIBUTES ALIGN : 64 :: two_e_tmp_1, two_e_tmp_2, two_e_tmp_3 - - integer :: n_integrals - integer :: size_buffer - integer(key_kind),allocatable :: buffer_i(:) - real(integral_kind),allocatable :: buffer_value(:) - double precision :: map_mb - - integer :: i1,j1,k1,l1, ii1, kmax, thread_num - integer :: i2,i3,i4 - double precision,parameter :: thr_coef = 1.d-10 - - PROVIDE ao_two_e_integrals_in_map mo_coef - - !Get list of MOs for i,j,k and l - !------------------------------- - - allocate(list_ijkl(mo_num,4)) - call bitstring_to_list( mask_ijk(1,1), list_ijkl(1,1), n_i, N_int ) - call bitstring_to_list( mask_ijk(1,2), list_ijkl(1,2), n_j, N_int ) - call bitstring_to_list( mask_ijk(1,3), list_ijkl(1,3), n_k, N_int ) - j = 0 - do i = 1, N_int - j += popcnt(mask_ijk(i,1)) - enddo - if(j==0)then - return - endif - - j = 0 - do i = 1, N_int - j += popcnt(mask_ijk(i,2)) - enddo - if(j==0)then - return - endif - - j = 0 - do i = 1, N_int - j += popcnt(mask_ijk(i,3)) - enddo - if(j==0)then - return - endif - - if (ao_num > 1289) then - print *, irp_here, ': Integer overflow in ao_num**3' - endif - size_buffer = min(ao_num*ao_num*ao_num,16000000) - print*, 'Providing the molecular integrals ' - print*, 'Buffers : ', 8.*(mo_num*(n_j)*(n_k+1) + mo_num+& - ao_num+ao_num*ao_num+ size_buffer*3)/(1024*1024), 'MB / core' - - call wall_time(wall_1) - call cpu_time(cpu_1) - !$OMP PARALLEL PRIVATE(m,l1,k1,j1,i1,i2,i3,i4,i,j,k,l,c, ii1,kmax, & - !$OMP two_e_tmp_0_idx, two_e_tmp_0, two_e_tmp_1,two_e_tmp_2,two_e_tmp_3,& - !$OMP buffer_i,buffer_value,n_integrals,wall_2,i0,j0,k0,l0, & - !$OMP wall_0,thread_num) & - !$OMP DEFAULT(NONE) & - !$OMP SHARED(size_buffer,ao_num,mo_num,n_i,n_j,n_k, & - !$OMP mo_coef_transp, & - !$OMP mo_coef_transp_is_built, list_ijkl, & - !$OMP mo_coef_is_built, wall_1, & - !$OMP mo_coef,mo_integrals_threshold,mo_integrals_map) - n_integrals = 0 - wall_0 = wall_1 - allocate(two_e_tmp_3(mo_num, n_j, n_k), & - two_e_tmp_1(mo_num), & - two_e_tmp_0(ao_num,ao_num), & - two_e_tmp_0_idx(ao_num), & - two_e_tmp_2(mo_num, n_j), & - buffer_i(size_buffer), & - buffer_value(size_buffer) ) - - thread_num = 0 - !$ thread_num = omp_get_thread_num() - !$OMP DO SCHEDULE(guided) - do l1 = 1,ao_num - two_e_tmp_3 = 0.d0 - do k1 = 1,ao_num - two_e_tmp_2 = 0.d0 - do j1 = 1,ao_num - call get_ao_two_e_integrals(j1,k1,l1,ao_num,two_e_tmp_0(1,j1)) - enddo - do j1 = 1,ao_num - kmax = 0 - do i1 = 1,ao_num - c = two_e_tmp_0(i1,j1) - if (c == 0.d0) then - cycle - endif - kmax += 1 - two_e_tmp_0(kmax,j1) = c - two_e_tmp_0_idx(kmax) = i1 - enddo - - if (kmax==0) then - cycle - endif - - two_e_tmp_1 = 0.d0 - ii1=1 - do ii1 = 1,kmax-4,4 - i1 = two_e_tmp_0_idx(ii1) - i2 = two_e_tmp_0_idx(ii1+1) - i3 = two_e_tmp_0_idx(ii1+2) - i4 = two_e_tmp_0_idx(ii1+3) - do i = list_ijkl(1,1), list_ijkl(n_i,1) - two_e_tmp_1(i) = two_e_tmp_1(i) + & - mo_coef_transp(i,i1) * two_e_tmp_0(ii1,j1) + & - mo_coef_transp(i,i2) * two_e_tmp_0(ii1+1,j1) + & - mo_coef_transp(i,i3) * two_e_tmp_0(ii1+2,j1) + & - mo_coef_transp(i,i4) * two_e_tmp_0(ii1+3,j1) - enddo ! i - enddo ! ii1 - - i2 = ii1 - do ii1 = i2,kmax - i1 = two_e_tmp_0_idx(ii1) - do i = list_ijkl(1,1), list_ijkl(n_i,1) - two_e_tmp_1(i) = two_e_tmp_1(i) + mo_coef_transp(i,i1) * two_e_tmp_0(ii1,j1) - enddo ! i - enddo ! ii1 - c = 0.d0 - - do i = list_ijkl(1,1), list_ijkl(n_i,1) - c = max(c,abs(two_e_tmp_1(i))) - if (c>mo_integrals_threshold) exit - enddo - if ( c < mo_integrals_threshold ) then - cycle - endif - - do j0 = 1, n_j - j = list_ijkl(j0,2) - c = mo_coef_transp(j,j1) - if (abs(c) < thr_coef) then - cycle - endif - do i = list_ijkl(1,1), list_ijkl(n_i,1) - two_e_tmp_2(i,j0) = two_e_tmp_2(i,j0) + c * two_e_tmp_1(i) - enddo ! i - enddo ! j - enddo !j1 - if ( maxval(abs(two_e_tmp_2)) < mo_integrals_threshold ) then - cycle - endif - - - do k0 = 1, n_k - k = list_ijkl(k0,3) - c = mo_coef_transp(k,k1) - if (abs(c) < thr_coef) then - cycle - endif - - do j0 = 1, n_j - j = list_ijkl(j0,2) - do i = list_ijkl(1,1), k - two_e_tmp_3(i,j0,k0) = two_e_tmp_3(i,j0,k0) + c* two_e_tmp_2(i,j0) - enddo!i - enddo !j - - enddo !k - enddo !k1 - - - - do l0 = 1,n_j - l = list_ijkl(l0,2) - c = mo_coef_transp(l,l1) - if (abs(c) < thr_coef) then - cycle - endif - do k0 = 1, n_k - k = list_ijkl(k0,3) - i1 = shiftr((k*k-k),1) - two_e_tmp_1 = 0.d0 - j0 = l0 - j = list_ijkl(j0,2) - do i0 = 1, n_i - i = list_ijkl(i0,1) - if (i>k) then - exit - endif - two_e_tmp_1(i) = c*two_e_tmp_3(i,j0,k0) - enddo - - do i0 = 1, n_i - i = list_ijkl(i0,1) - if (i>k) then !min(k,j1-i1) - exit - endif - if (abs(two_e_tmp_1(i)) < mo_integrals_threshold) then - cycle - endif - n_integrals += 1 - buffer_value(n_integrals) = two_e_tmp_1(i) - if(i==k .and. j==l .and. i.ne.j)then - buffer_value(n_integrals) = buffer_value(n_integrals) *0.5d0 - endif - !DIR$ FORCEINLINE - call mo_two_e_integrals_index(i,j,k,l,buffer_i(n_integrals)) - if (n_integrals == size_buffer) then - call insert_into_mo_integrals_map(n_integrals,buffer_i,buffer_value,& - real(mo_integrals_threshold,integral_kind)) - n_integrals = 0 - endif - enddo - enddo - enddo - - do l0 = 1,n_j - l = list_ijkl(l0,2) - c = mo_coef_transp(l,l1) - if (abs(c) < thr_coef) then - cycle - endif - do k0 = 1, n_k - k = list_ijkl(k0,3) - i1 = shiftr((k*k-k),1) - two_e_tmp_1 = 0.d0 - j0 = k0 - j = list_ijkl(k0,2) - i0 = l0 - i = list_ijkl(i0,2) - if (k==l) then - cycle - endif - two_e_tmp_1(i) = c*two_e_tmp_3(i,j0,k0) - - n_integrals += 1 - buffer_value(n_integrals) = two_e_tmp_1(i) - !DIR$ FORCEINLINE - call mo_two_e_integrals_index(i,j,k,l,buffer_i(n_integrals)) - if (n_integrals == size_buffer) then - call insert_into_mo_integrals_map(n_integrals,buffer_i,buffer_value,& - real(mo_integrals_threshold,integral_kind)) - n_integrals = 0 - endif - enddo - enddo - - call wall_time(wall_2) - if (thread_num == 0) then - if (wall_2 - wall_0 > 1.d0) then - wall_0 = wall_2 - print*, 100.*float(l1)/float(ao_num), '% in ', & - wall_2-wall_1, 's', map_mb(mo_integrals_map) ,'MB' - endif - endif - enddo - !$OMP END DO NOWAIT - deallocate (two_e_tmp_1,two_e_tmp_2,two_e_tmp_3) - - call insert_into_mo_integrals_map(n_integrals,buffer_i,buffer_value,& - real(mo_integrals_threshold,integral_kind)) - deallocate(buffer_i, buffer_value) - !$OMP END PARALLEL - call map_merge(mo_integrals_map) - - call wall_time(wall_2) - call cpu_time(cpu_2) - integer*8 :: get_mo_map_size, mo_map_size - mo_map_size = get_mo_map_size() - - deallocate(list_ijkl) - - - print*,'Molecular integrals provided:' - print*,' Size of MO map ', map_mb(mo_integrals_map) ,'MB' - print*,' Number of MO integrals: ', mo_map_size - print*,' cpu time :',cpu_2 - cpu_1, 's' - print*,' wall time :',wall_2 - wall_1, 's ( x ', (cpu_2-cpu_1)/(wall_2-wall_1), ')' - -end - - -subroutine add_integrals_to_map_no_exit_34(mask_ijkl) - use bitmasks - implicit none - - BEGIN_DOC - ! Adds integrals to tha MO map according to some bitmask - END_DOC - - integer(bit_kind), intent(in) :: mask_ijkl(N_int,4) - - integer :: i,j,k,l - integer :: i0,j0,k0,l0 - double precision :: c, cpu_1, cpu_2, wall_1, wall_2, wall_0 - - integer, allocatable :: list_ijkl(:,:) - integer :: n_i, n_j, n_k, n_l - integer, allocatable :: two_e_tmp_0_idx(:) - real(integral_kind), allocatable :: two_e_tmp_0(:,:) - double precision, allocatable :: two_e_tmp_1(:) - double precision, allocatable :: two_e_tmp_2(:,:) - double precision, allocatable :: two_e_tmp_3(:,:,:) - !DIR$ ATTRIBUTES ALIGN : 64 :: two_e_tmp_1, two_e_tmp_2, two_e_tmp_3 - - integer :: n_integrals - integer :: size_buffer - integer(key_kind),allocatable :: buffer_i(:) - real(integral_kind),allocatable :: buffer_value(:) - double precision :: map_mb - - integer :: i1,j1,k1,l1, ii1, kmax, thread_num - integer :: i2,i3,i4 - double precision,parameter :: thr_coef = 1.d-10 - - PROVIDE ao_two_e_integrals_in_map mo_coef - - !Get list of MOs for i,j,k and l - !------------------------------- - - allocate(list_ijkl(mo_num,4)) - call bitstring_to_list( mask_ijkl(1,1), list_ijkl(1,1), n_i, N_int ) - call bitstring_to_list( mask_ijkl(1,2), list_ijkl(1,2), n_j, N_int ) - call bitstring_to_list( mask_ijkl(1,3), list_ijkl(1,3), n_k, N_int ) - call bitstring_to_list( mask_ijkl(1,4), list_ijkl(1,4), n_l, N_int ) - - if (ao_num > 1289) then - print *, irp_here, ': Integer overflow in ao_num**3' - endif - size_buffer = min(ao_num*ao_num*ao_num,16000000) - print*, 'Providing the molecular integrals ' - print*, 'Buffers : ', 8.*(mo_num*(n_j)*(n_k+1) + mo_num+& - ao_num+ao_num*ao_num+ size_buffer*3)/(1024*1024), 'MB / core' - - call wall_time(wall_1) - call cpu_time(cpu_1) - - !$OMP PARALLEL PRIVATE(l1,k1,j1,i1,i2,i3,i4,i,j,k,l,c, ii1,kmax, & - !$OMP two_e_tmp_0_idx, two_e_tmp_0, two_e_tmp_1,two_e_tmp_2,two_e_tmp_3,& - !$OMP buffer_i,buffer_value,n_integrals,wall_2,i0,j0,k0,l0, & - !$OMP wall_0,thread_num) & - !$OMP DEFAULT(NONE) & - !$OMP SHARED(size_buffer,ao_num,mo_num,n_i,n_j,n_k,n_l, & - !$OMP mo_coef_transp, & - !$OMP mo_coef_transp_is_built, list_ijkl, & - !$OMP mo_coef_is_built, wall_1, & - !$OMP mo_coef,mo_integrals_threshold,mo_integrals_map) - n_integrals = 0 - wall_0 = wall_1 - allocate(two_e_tmp_3(mo_num, n_j, n_k), & - two_e_tmp_1(mo_num), & - two_e_tmp_0(ao_num,ao_num), & - two_e_tmp_0_idx(ao_num), & - two_e_tmp_2(mo_num, n_j), & - buffer_i(size_buffer), & - buffer_value(size_buffer) ) - - thread_num = 0 - !$ thread_num = omp_get_thread_num() - !$OMP DO SCHEDULE(guided) - do l1 = 1,ao_num - !IRP_IF COARRAY - ! if (mod(l1-this_image(),num_images()) /= 0 ) then - ! cycle - ! endif - !IRP_ENDIF - two_e_tmp_3 = 0.d0 - do k1 = 1,ao_num - two_e_tmp_2 = 0.d0 - do j1 = 1,ao_num - call get_ao_two_e_integrals(j1,k1,l1,ao_num,two_e_tmp_0(1,j1)) - enddo - do j1 = 1,ao_num - kmax = 0 - do i1 = 1,ao_num - c = two_e_tmp_0(i1,j1) - if (c == 0.d0) then - cycle - endif - kmax += 1 - two_e_tmp_0(kmax,j1) = c - two_e_tmp_0_idx(kmax) = i1 - enddo - - if (kmax==0) then - cycle - endif - - two_e_tmp_1 = 0.d0 - ii1=1 - do ii1 = 1,kmax-4,4 - i1 = two_e_tmp_0_idx(ii1) - i2 = two_e_tmp_0_idx(ii1+1) - i3 = two_e_tmp_0_idx(ii1+2) - i4 = two_e_tmp_0_idx(ii1+3) - do i = list_ijkl(1,1), list_ijkl(n_i,1) - two_e_tmp_1(i) = two_e_tmp_1(i) + & - mo_coef_transp(i,i1) * two_e_tmp_0(ii1,j1) + & - mo_coef_transp(i,i2) * two_e_tmp_0(ii1+1,j1) + & - mo_coef_transp(i,i3) * two_e_tmp_0(ii1+2,j1) + & - mo_coef_transp(i,i4) * two_e_tmp_0(ii1+3,j1) - enddo ! i - enddo ! ii1 - - i2 = ii1 - do ii1 = i2,kmax - i1 = two_e_tmp_0_idx(ii1) - do i = list_ijkl(1,1), list_ijkl(n_i,1) - two_e_tmp_1(i) = two_e_tmp_1(i) + mo_coef_transp(i,i1) * two_e_tmp_0(ii1,j1) - enddo ! i - enddo ! ii1 - c = 0.d0 - - do i = list_ijkl(1,1), list_ijkl(n_i,1) - c = max(c,abs(two_e_tmp_1(i))) - if (c>mo_integrals_threshold) exit - enddo - if ( c < mo_integrals_threshold ) then - cycle - endif - - do j0 = 1, n_j - j = list_ijkl(j0,2) - c = mo_coef_transp(j,j1) - if (abs(c) < thr_coef) then - cycle - endif - do i = list_ijkl(1,1), list_ijkl(n_i,1) - two_e_tmp_2(i,j0) = two_e_tmp_2(i,j0) + c * two_e_tmp_1(i) - enddo ! i - enddo ! j - enddo !j1 - if ( maxval(abs(two_e_tmp_2)) < mo_integrals_threshold ) then - cycle - endif - - - do k0 = 1, n_k - k = list_ijkl(k0,3) - c = mo_coef_transp(k,k1) - if (abs(c) < thr_coef) then - cycle - endif - - do j0 = 1, n_j - j = list_ijkl(j0,2) - do i = list_ijkl(1,1), k - two_e_tmp_3(i,j0,k0) = two_e_tmp_3(i,j0,k0) + c* two_e_tmp_2(i,j0) - enddo!i - enddo !j - - enddo !k - enddo !k1 - - - - do l0 = 1,n_l - l = list_ijkl(l0,4) - c = mo_coef_transp(l,l1) - if (abs(c) < thr_coef) then - cycle - endif - j1 = shiftr((l*l-l),1) - do j0 = 1, n_j - j = list_ijkl(j0,2) - if (j > l) then - exit - endif - j1 += 1 - do k0 = 1, n_k - k = list_ijkl(k0,3) - i1 = shiftr((k*k-k),1) - two_e_tmp_1 = 0.d0 - do i0 = 1, n_i - i = list_ijkl(i0,1) - if (i>k) then - exit - endif - two_e_tmp_1(i) = c*two_e_tmp_3(i,j0,k0) - enddo - - do i0 = 1, n_i - i = list_ijkl(i0,1) - if(i> k)then - exit - endif - - if (abs(two_e_tmp_1(i)) < mo_integrals_threshold) then - cycle - endif - n_integrals += 1 - buffer_value(n_integrals) = two_e_tmp_1(i) - !DIR$ FORCEINLINE - call mo_two_e_integrals_index(i,j,k,l,buffer_i(n_integrals)) - if (n_integrals == size_buffer) then - call insert_into_mo_integrals_map(n_integrals,buffer_i,buffer_value,& - real(mo_integrals_threshold,integral_kind)) - n_integrals = 0 - endif - enddo - enddo - enddo - enddo - - call wall_time(wall_2) - if (thread_num == 0) then - if (wall_2 - wall_0 > 1.d0) then - wall_0 = wall_2 - print*, 100.*float(l1)/float(ao_num), '% in ', & - wall_2-wall_1, 's', map_mb(mo_integrals_map) ,'MB' - endif - endif - enddo - !$OMP END DO NOWAIT - deallocate (two_e_tmp_1,two_e_tmp_2,two_e_tmp_3) - - call insert_into_mo_integrals_map(n_integrals,buffer_i,buffer_value,& - real(mo_integrals_threshold,integral_kind)) - deallocate(buffer_i, buffer_value) - !$OMP END PARALLEL - !IRP_IF COARRAY - ! print*, 'Communicating the map' - ! call communicate_mo_integrals() - !IRP_ENDIF - call map_merge(mo_integrals_map) - - call wall_time(wall_2) - call cpu_time(cpu_2) - integer*8 :: get_mo_map_size, mo_map_size - mo_map_size = get_mo_map_size() - - deallocate(list_ijkl) - - - print*,'Molecular integrals provided:' - print*,' Size of MO map ', map_mb(mo_integrals_map) ,'MB' - print*,' Number of MO integrals: ', mo_map_size - print*,' cpu time :',cpu_2 - cpu_1, 's' - print*,' wall time :',wall_2 - wall_1, 's ( x ', (cpu_2-cpu_1)/(wall_2-wall_1), ')' - - -end - - - - BEGIN_PROVIDER [ double precision, mo_two_e_integral_jj_from_ao, (mo_num,mo_num) ] -&BEGIN_PROVIDER [ double precision, mo_two_e_integrals_jj_exchange_from_ao, (mo_num,mo_num) ] -&BEGIN_PROVIDER [ double precision, mo_two_e_integrals_jj_anti_from_ao, (mo_num,mo_num) ] - implicit none - BEGIN_DOC - ! mo_two_e_integral_jj_from_ao(i,j) = J_ij - ! mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij - ! mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij - END_DOC - - integer :: i,j,p,q,r,s - double precision :: c - real(integral_kind) :: integral - integer :: n, pp - real(integral_kind), allocatable :: int_value(:) - integer, allocatable :: int_idx(:) - - double precision, allocatable :: iqrs(:,:), iqsr(:,:), iqis(:), iqri(:) - - if (.not.do_direct_integrals) then - PROVIDE ao_two_e_integrals_in_map mo_coef - endif - - mo_two_e_integral_jj_from_ao = 0.d0 - mo_two_e_integrals_jj_exchange_from_ao = 0.d0 - - !DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: iqrs, iqsr - - - !$OMP PARALLEL DEFAULT(NONE) & - !$OMP PRIVATE (i,j,p,q,r,s,integral,c,n,pp,int_value,int_idx, & - !$OMP iqrs, iqsr,iqri,iqis) & - !$OMP SHARED(mo_num,mo_coef_transp,ao_num, & - !$OMP ao_integrals_threshold,do_direct_integrals) & - !$OMP REDUCTION(+:mo_two_e_integral_jj_from_ao,mo_two_e_integrals_jj_exchange_from_ao) - - allocate( int_value(ao_num), int_idx(ao_num), & - iqrs(mo_num,ao_num), iqis(mo_num), iqri(mo_num), & - iqsr(mo_num,ao_num) ) - - !$OMP DO SCHEDULE (guided) - do s=1,ao_num - do q=1,ao_num - - do j=1,ao_num - do i=1,mo_num - iqrs(i,j) = 0.d0 - iqsr(i,j) = 0.d0 - enddo - enddo - - if (do_direct_integrals) then - double precision :: ao_two_e_integral - do r=1,ao_num - call compute_ao_two_e_integrals(q,r,s,ao_num,int_value) - do p=1,ao_num - integral = int_value(p) - if (abs(integral) > ao_integrals_threshold) then - do i=1,mo_num - iqrs(i,r) += mo_coef_transp(i,p) * integral - enddo - endif - enddo - call compute_ao_two_e_integrals(q,s,r,ao_num,int_value) - do p=1,ao_num - integral = int_value(p) - if (abs(integral) > ao_integrals_threshold) then - do i=1,mo_num - iqsr(i,r) += mo_coef_transp(i,p) * integral - enddo - endif - enddo - enddo - - else - - do r=1,ao_num - call get_ao_two_e_integrals_non_zero(q,r,s,ao_num,int_value,int_idx,n) - do pp=1,n - p = int_idx(pp) - integral = int_value(pp) - if (abs(integral) > ao_integrals_threshold) then - do i=1,mo_num - iqrs(i,r) += mo_coef_transp(i,p) * integral - enddo - endif - enddo - call get_ao_two_e_integrals_non_zero(q,s,r,ao_num,int_value,int_idx,n) - do pp=1,n - p = int_idx(pp) - integral = int_value(pp) - if (abs(integral) > ao_integrals_threshold) then - do i=1,mo_num - iqsr(i,r) += mo_coef_transp(i,p) * integral - enddo - endif - enddo - enddo - endif - iqis = 0.d0 - iqri = 0.d0 - do r=1,ao_num - do i=1,mo_num - iqis(i) += mo_coef_transp(i,r) * iqrs(i,r) - iqri(i) += mo_coef_transp(i,r) * iqsr(i,r) - enddo - enddo - do i=1,mo_num - do j=1,mo_num - c = mo_coef_transp(j,q)*mo_coef_transp(j,s) - mo_two_e_integral_jj_from_ao(j,i) += c * iqis(i) - mo_two_e_integrals_jj_exchange_from_ao(j,i) += c * iqri(i) - enddo - enddo - - enddo - enddo - !$OMP END DO NOWAIT - deallocate(iqrs,iqsr,int_value,int_idx) - !$OMP END PARALLEL - - mo_two_e_integrals_jj_anti_from_ao = mo_two_e_integral_jj_from_ao - mo_two_e_integrals_jj_exchange_from_ao - - -END_PROVIDER - - BEGIN_PROVIDER [ double precision, mo_two_e_integrals_vv_from_ao, (mo_num,mo_num) ] -&BEGIN_PROVIDER [ double precision, mo_two_e_integrals_vv_exchange_from_ao, (mo_num,mo_num) ] -&BEGIN_PROVIDER [ double precision, mo_two_e_integrals_vv_anti_from_ao, (mo_num,mo_num) ] - implicit none - BEGIN_DOC - ! mo_two_e_integrals_vv_from_ao(i,j) = J_ij - ! mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij - ! mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij - ! but only for the virtual orbitals - END_DOC - - integer :: i,j,p,q,r,s - integer :: i0,j0 - double precision :: c - real(integral_kind) :: integral - integer :: n, pp - real(integral_kind), allocatable :: int_value(:) - integer, allocatable :: int_idx(:) - - double precision, allocatable :: iqrs(:,:), iqsr(:,:), iqis(:), iqri(:) - - if (.not.do_direct_integrals) then - PROVIDE ao_two_e_integrals_in_map mo_coef - endif - - mo_two_e_integrals_vv_from_ao = 0.d0 - mo_two_e_integrals_vv_exchange_from_ao = 0.d0 - - !DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: iqrs, iqsr - - - !$OMP PARALLEL DEFAULT(NONE) & - !$OMP PRIVATE (i0,j0,i,j,p,q,r,s,integral,c,n,pp,int_value,int_idx, & - !$OMP iqrs, iqsr,iqri,iqis) & - !$OMP SHARED(n_virt_orb,mo_num,list_virt,mo_coef_transp,ao_num, & - !$OMP ao_integrals_threshold,do_direct_integrals) & - !$OMP REDUCTION(+:mo_two_e_integrals_vv_from_ao,mo_two_e_integrals_vv_exchange_from_ao) - - allocate( int_value(ao_num), int_idx(ao_num), & - iqrs(mo_num,ao_num), iqis(mo_num), iqri(mo_num),& - iqsr(mo_num,ao_num) ) - - !$OMP DO SCHEDULE (guided) - do s=1,ao_num - do q=1,ao_num - - do j=1,ao_num - do i0=1,n_virt_orb - i = list_virt(i0) - iqrs(i,j) = 0.d0 - iqsr(i,j) = 0.d0 - enddo - enddo - - if (do_direct_integrals) then - double precision :: ao_two_e_integral - do r=1,ao_num - call compute_ao_two_e_integrals(q,r,s,ao_num,int_value) - do p=1,ao_num - integral = int_value(p) - if (abs(integral) > ao_integrals_threshold) then - do i0=1,n_virt_orb - i = list_virt(i0) - iqrs(i,r) += mo_coef_transp(i,p) * integral - enddo - endif - enddo - call compute_ao_two_e_integrals(q,s,r,ao_num,int_value) - do p=1,ao_num - integral = int_value(p) - if (abs(integral) > ao_integrals_threshold) then - do i0=1,n_virt_orb - i =list_virt(i0) - iqsr(i,r) += mo_coef_transp(i,p) * integral - enddo - endif - enddo - enddo - - else - - do r=1,ao_num - call get_ao_two_e_integrals_non_zero(q,r,s,ao_num,int_value,int_idx,n) - do pp=1,n - p = int_idx(pp) - integral = int_value(pp) - if (abs(integral) > ao_integrals_threshold) then - do i0=1,n_virt_orb - i =list_virt(i0) - iqrs(i,r) += mo_coef_transp(i,p) * integral - enddo - endif - enddo - call get_ao_two_e_integrals_non_zero(q,s,r,ao_num,int_value,int_idx,n) - do pp=1,n - p = int_idx(pp) - integral = int_value(pp) - if (abs(integral) > ao_integrals_threshold) then - do i0=1,n_virt_orb - i = list_virt(i0) - iqsr(i,r) += mo_coef_transp(i,p) * integral - enddo - endif - enddo - enddo - endif - iqis = 0.d0 - iqri = 0.d0 - do r=1,ao_num - do i0=1,n_virt_orb - i = list_virt(i0) - iqis(i) += mo_coef_transp(i,r) * iqrs(i,r) - iqri(i) += mo_coef_transp(i,r) * iqsr(i,r) - enddo - enddo - do i0=1,n_virt_orb - i= list_virt(i0) - do j0=1,n_virt_orb - j = list_virt(j0) - c = mo_coef_transp(j,q)*mo_coef_transp(j,s) - mo_two_e_integrals_vv_from_ao(j,i) += c * iqis(i) - mo_two_e_integrals_vv_exchange_from_ao(j,i) += c * iqri(i) - enddo - enddo - - enddo - enddo - !$OMP END DO NOWAIT - deallocate(iqrs,iqsr,int_value,int_idx) - !$OMP END PARALLEL - - mo_two_e_integrals_vv_anti_from_ao = mo_two_e_integrals_vv_from_ao - mo_two_e_integrals_vv_exchange_from_ao - ! print*, '**********' - ! do i0 =1, n_virt_orb - ! i = list_virt(i0) - ! print*, mo_two_e_integrals_vv_from_ao(i,i) - ! enddo - ! print*, '**********' - - -END_PROVIDER BEGIN_PROVIDER [ double precision, mo_two_e_integrals_jj, (mo_num,mo_num) ] From bd534589e123c939de8ddd3147837b97837581dc Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 10 Jun 2024 17:36:14 +0200 Subject: [PATCH 075/159] Building mo cache from cholesky --- src/mo_two_e_ints/map_integrals.irp.f | 68 ++++++++++++++++--------- src/mo_two_e_ints/mo_bi_integrals.irp.f | 1 - 2 files changed, 43 insertions(+), 26 deletions(-) diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index 290fdeab..e99e89fb 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -59,29 +59,50 @@ BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0_8:128_8*128_8*128_8*12 integer(key_kind) :: idx real(integral_kind) :: integral FREE ao_integrals_cache - !$OMP PARALLEL DO PRIVATE (i,j,k,l,i4,j4,k4,l4,idx,ii,integral) - do l=mo_integrals_cache_min_8,mo_integrals_cache_max_8 - l4 = int(l,4) - do k=mo_integrals_cache_min_8,mo_integrals_cache_max_8 - k4 = int(k,4) - do j=mo_integrals_cache_min_8,mo_integrals_cache_max_8 - j4 = int(j,4) - do i=mo_integrals_cache_min_8,mo_integrals_cache_max_8 - i4 = int(i,4) - !DIR$ FORCEINLINE - call two_e_integrals_index(i4,j4,k4,l4,idx) - !DIR$ FORCEINLINE - call map_get(mo_integrals_map,idx,integral) + if (do_mo_cholesky) then + + call set_multiple_levels_omp(.False.) + !$OMP PARALLEL DO PRIVATE (k,l,ii) + do l=mo_integrals_cache_min_8,mo_integrals_cache_max_8 + do k=mo_integrals_cache_min_8,mo_integrals_cache_max_8 ii = l-mo_integrals_cache_min_8 ii = ior( shiftl(ii,7), k-mo_integrals_cache_min_8) - ii = ior( shiftl(ii,7), j-mo_integrals_cache_min_8) - ii = ior( shiftl(ii,7), i-mo_integrals_cache_min_8) - mo_integrals_cache(ii) = integral + ii = shiftl(ii,14) + call dgemm('T','N', mo_integrals_cache_max-mo_integrals_cache_min+1, & + mo_integrals_cache_max-mo_integrals_cache_min+1, & + cholesky_mo_num, 1.d0, & + cholesky_mo_transp(1,mo_integrals_cache_min,k), cholesky_mo_num, & + cholesky_mo_transp(1,mo_integrals_cache_min,l), cholesky_mo_num, 0.d0, & + mo_integrals_cache(ii), 128) + enddo + enddo + !$OMP END PARALLEL DO + + else + !$OMP PARALLEL DO PRIVATE (i,j,k,l,i4,j4,k4,l4,idx,ii,integral) + do l=mo_integrals_cache_min_8,mo_integrals_cache_max_8 + l4 = int(l,4) + do k=mo_integrals_cache_min_8,mo_integrals_cache_max_8 + k4 = int(k,4) + do j=mo_integrals_cache_min_8,mo_integrals_cache_max_8 + j4 = int(j,4) + do i=mo_integrals_cache_min_8,mo_integrals_cache_max_8 + i4 = int(i,4) + !DIR$ FORCEINLINE + call two_e_integrals_index(i4,j4,k4,l4,idx) + !DIR$ FORCEINLINE + call map_get(mo_integrals_map,idx,integral) + ii = l-mo_integrals_cache_min_8 + ii = ior( shiftl(ii,7), k-mo_integrals_cache_min_8) + ii = ior( shiftl(ii,7), j-mo_integrals_cache_min_8) + ii = ior( shiftl(ii,7), i-mo_integrals_cache_min_8) + mo_integrals_cache(ii) = integral + enddo enddo enddo enddo - enddo - !$OMP END PARALLEL DO + !$OMP END PARALLEL DO + endif END_PROVIDER @@ -100,7 +121,7 @@ double precision function get_two_e_integral(i,j,k,l,map) real(integral_kind) :: tmp integer :: kk - PROVIDE mo_two_e_integrals_in_map mo_integrals_cache do_mo_cholesky + PROVIDE mo_two_e_integrals_in_map mo_integrals_cache do_mo_cholesky if (use_banned_excitation) then if (banned_excitation(i,k)) then @@ -119,16 +140,13 @@ double precision function get_two_e_integral(i,j,k,l,map) ii = ior(ii, j-mo_integrals_cache_min) ii = ior(ii, i-mo_integrals_cache_min) -! if (iand(ii, -128) /= 0) then - if (.True.) then + if (iand(ii, -128) /= 0) then ! Integral is not in the cache if (do_mo_cholesky) then - get_two_e_integral = 0.d0 - do kk=1,cholesky_mo_num - get_two_e_integral = get_two_e_integral + cholesky_mo_transp(kk,i,k) * cholesky_mo_transp(kk,j,l) - enddo + double precision, external :: ddot + get_two_e_integral = ddot(cholesky_mo_num, cholesky_mo_transp(1,i,k), 1, cholesky_mo_transp(1,j,l), 1) else ! Integrals is in the map diff --git a/src/mo_two_e_ints/mo_bi_integrals.irp.f b/src/mo_two_e_ints/mo_bi_integrals.irp.f index d44bb38a..6079c9f7 100644 --- a/src/mo_two_e_ints/mo_bi_integrals.irp.f +++ b/src/mo_two_e_ints/mo_bi_integrals.irp.f @@ -16,7 +16,6 @@ ! - 1,2,3-index arrays are built from the map ! ! TODO: -! - build cache map from cholesky vectors ! - get_mo_integrals using cholesky ! - get_mo_integralss using cholesky ! - get_mo_integralss in PT2 From 10fb3a0636d74ef5a3b78dc69bb9cc4d6be63455 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 10 Jun 2024 18:23:45 +0200 Subject: [PATCH 076/159] Introducing dgemm and dgemv to get integrals --- src/mo_two_e_ints/map_integrals.irp.f | 35 ++++++++++++++++++++----- src/mo_two_e_ints/mo_bi_integrals.irp.f | 6 +++-- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index e99e89fb..c9fa81c4 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -262,9 +262,25 @@ subroutine get_mo_two_e_integrals_ij(k,l,sze,out_array,map) integer :: j real(integral_kind), allocatable :: tmp_val(:) - do j=1,sze - call get_mo_two_e_integrals(j,k,l,sze,out_array(1,j),map) - enddo + if (do_mo_cholesky) then + call dgemm('T', 'N', mo_num, mo_num, cholesky_mo_num, 1.d0, & + cholesky_mo_transp(1,1,k), cholesky_mo_num, & + cholesky_mo_transp(1,1,l), cholesky_mo_num, 0.d0, & + out_array, sze) +! integer :: i +! do j=1,mo_num +! do i=1,mo_num +! double precision, external :: get_two_e_integral +! print *, i, j, real(out_array(i,j)), real(get_two_e_integral(i,j,k,l,map)) +! enddo +! enddo +! print *, irp_here +! pause + else + do j=1,sze + call get_mo_two_e_integrals(j,k,l,sze,out_array(1,j),map) + enddo + endif end subroutine get_mo_two_e_integrals_i1j1(k,l,sze,out_array,map) @@ -303,9 +319,16 @@ subroutine get_mo_two_e_integrals_coulomb_ii(k,l,sze,out_val,map) double precision, external :: get_two_e_integral PROVIDE mo_two_e_integrals_in_map - do i=1,sze - out_val(i) = get_two_e_integral(k,i,l,i,map) - enddo + if (do_mo_cholesky) then + call dgemv('T', cholesky_mo_num, mo_num, 1.d0, & + cholesky_mo_transp(1,1,1), cholesky_mo_num*(mo_num+1), & + cholesky_mo_transp(1,k,l), 1, 0.d0, & + out_val, 1) + else + do i=1,sze + out_val(i) = get_two_e_integral(k,i,l,i,map) + enddo + endif end diff --git a/src/mo_two_e_ints/mo_bi_integrals.irp.f b/src/mo_two_e_ints/mo_bi_integrals.irp.f index 6079c9f7..04e6c3e6 100644 --- a/src/mo_two_e_ints/mo_bi_integrals.irp.f +++ b/src/mo_two_e_ints/mo_bi_integrals.irp.f @@ -65,9 +65,11 @@ BEGIN_PROVIDER [ logical, mo_two_e_integrals_in_map ] call cpu_time(cpu_1) if (do_mo_cholesky) then - call add_integrals_to_map_cholesky + PROVIDE cholesky_mo_transp else - if (dble(ao_num)**4 * 32.d-9 < dble(qp_max_mem)) then + if (do_ao_cholesky) then + call add_integrals_to_map_cholesky + else if (dble(ao_num)**4 * 32.d-9 < dble(qp_max_mem)) then call four_idx_dgemm else call add_integrals_to_map(full_ijkl_bitmask_4) From 47b80703397ec92dfec008ef2a641efba9c22f44 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 11 Jun 2024 11:53:11 +0200 Subject: [PATCH 077/159] Cache map in integer*4 --- src/mo_two_e_ints/map_integrals.irp.f | 207 ++++++++++++++++++-------- 1 file changed, 145 insertions(+), 62 deletions(-) diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index c9fa81c4..9155cd8f 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -34,28 +34,28 @@ end BEGIN_PROVIDER [ integer*4, mo_integrals_cache_min ] &BEGIN_PROVIDER [ integer*4, mo_integrals_cache_max ] -&BEGIN_PROVIDER [ integer*8, mo_integrals_cache_min_8 ] -&BEGIN_PROVIDER [ integer*8, mo_integrals_cache_max_8 ] +&BEGIN_PROVIDER [ integer*4, mo_integrals_cache_shift] +&BEGIN_PROVIDER [ integer*4, mo_integrals_cache_size ] implicit none BEGIN_DOC ! Min and max values of the MOs for which the integrals are in the cache END_DOC - mo_integrals_cache_min_8 = max(1_8,elec_alpha_num - 63_8) - mo_integrals_cache_max_8 = min(int(mo_num,8),mo_integrals_cache_min_8+127_8) - mo_integrals_cache_min = max(1,elec_alpha_num - 63) - mo_integrals_cache_max = min(mo_num,mo_integrals_cache_min+127) + mo_integrals_cache_shift = 7 ! 7 = log(128). Max 7 + mo_integrals_cache_size = 2**mo_integrals_cache_shift + + mo_integrals_cache_min = max(1,elec_alpha_num - (mo_integrals_cache_size/2 - 1) ) + mo_integrals_cache_max = min(mo_num, mo_integrals_cache_min + mo_integrals_cache_size - 1) END_PROVIDER -BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0_8:128_8*128_8*128_8*128_8) ] +BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0:mo_integrals_cache_size**4) ] implicit none BEGIN_DOC ! Cache of MO integrals for fast access END_DOC PROVIDE mo_two_e_integrals_in_map - integer*8 :: i,j,k,l - integer*4 :: i4,j4,k4,l4 - integer*8 :: ii + integer :: i,j,k,l + integer :: ii integer(key_kind) :: idx real(integral_kind) :: integral FREE ao_integrals_cache @@ -63,39 +63,36 @@ BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0_8:128_8*128_8*128_8*12 call set_multiple_levels_omp(.False.) !$OMP PARALLEL DO PRIVATE (k,l,ii) - do l=mo_integrals_cache_min_8,mo_integrals_cache_max_8 - do k=mo_integrals_cache_min_8,mo_integrals_cache_max_8 - ii = l-mo_integrals_cache_min_8 - ii = ior( shiftl(ii,7), k-mo_integrals_cache_min_8) - ii = shiftl(ii,14) + do l=mo_integrals_cache_min,mo_integrals_cache_max + do k=mo_integrals_cache_min,mo_integrals_cache_max + ii = l-mo_integrals_cache_min + ii = ior( shiftl(ii,mo_integrals_cache_shift), k-mo_integrals_cache_min) + ii = shiftl(ii,mo_integrals_cache_shift) + ii = shiftl(ii,mo_integrals_cache_shift) call dgemm('T','N', mo_integrals_cache_max-mo_integrals_cache_min+1, & mo_integrals_cache_max-mo_integrals_cache_min+1, & cholesky_mo_num, 1.d0, & cholesky_mo_transp(1,mo_integrals_cache_min,k), cholesky_mo_num, & cholesky_mo_transp(1,mo_integrals_cache_min,l), cholesky_mo_num, 0.d0, & - mo_integrals_cache(ii), 128) + mo_integrals_cache(ii), mo_integrals_cache_size) enddo enddo !$OMP END PARALLEL DO else - !$OMP PARALLEL DO PRIVATE (i,j,k,l,i4,j4,k4,l4,idx,ii,integral) - do l=mo_integrals_cache_min_8,mo_integrals_cache_max_8 - l4 = int(l,4) - do k=mo_integrals_cache_min_8,mo_integrals_cache_max_8 - k4 = int(k,4) - do j=mo_integrals_cache_min_8,mo_integrals_cache_max_8 - j4 = int(j,4) - do i=mo_integrals_cache_min_8,mo_integrals_cache_max_8 - i4 = int(i,4) + !$OMP PARALLEL DO PRIVATE (i,j,k,l,idx,ii,integral) + do l=mo_integrals_cache_min,mo_integrals_cache_max + do k=mo_integrals_cache_min,mo_integrals_cache_max + do j=mo_integrals_cache_min,mo_integrals_cache_max + do i=mo_integrals_cache_min,mo_integrals_cache_max !DIR$ FORCEINLINE - call two_e_integrals_index(i4,j4,k4,l4,idx) + call two_e_integrals_index(i,j,k,l,idx) !DIR$ FORCEINLINE call map_get(mo_integrals_map,idx,integral) - ii = l-mo_integrals_cache_min_8 - ii = ior( shiftl(ii,7), k-mo_integrals_cache_min_8) - ii = ior( shiftl(ii,7), j-mo_integrals_cache_min_8) - ii = ior( shiftl(ii,7), i-mo_integrals_cache_min_8) + ii = l-mo_integrals_cache_min + ii = ior( shiftl(ii,mo_integrals_cache_shift), k-mo_integrals_cache_min) + ii = ior( shiftl(ii,mo_integrals_cache_shift), j-mo_integrals_cache_min) + ii = ior( shiftl(ii,mo_integrals_cache_shift), i-mo_integrals_cache_min) mo_integrals_cache(ii) = integral enddo enddo @@ -116,7 +113,6 @@ double precision function get_two_e_integral(i,j,k,l,map) integer, intent(in) :: i,j,k,l integer(key_kind) :: idx integer :: ii - integer*8 :: ii_8 type(map_type), intent(inout) :: map real(integral_kind) :: tmp integer :: kk @@ -140,7 +136,7 @@ double precision function get_two_e_integral(i,j,k,l,map) ii = ior(ii, j-mo_integrals_cache_min) ii = ior(ii, i-mo_integrals_cache_min) - if (iand(ii, -128) /= 0) then + if (iand(ii, -mo_integrals_cache_size) /= 0) then ! Integral is not in the cache if (do_mo_cholesky) then @@ -161,11 +157,11 @@ double precision function get_two_e_integral(i,j,k,l,map) else ! Integrals is in the cache - ii_8 = int(l,8)-mo_integrals_cache_min_8 - ii_8 = ior( shiftl(ii_8,7), int(k,8)-mo_integrals_cache_min_8) - ii_8 = ior( shiftl(ii_8,7), int(j,8)-mo_integrals_cache_min_8) - ii_8 = ior( shiftl(ii_8,7), int(i,8)-mo_integrals_cache_min_8) - get_two_e_integral = mo_integrals_cache(ii_8) + ii = l-mo_integrals_cache_min + ii = ior( shiftl(ii,mo_integrals_cache_shift), k-mo_integrals_cache_min) + ii = ior( shiftl(ii,mo_integrals_cache_shift), j-mo_integrals_cache_min) + ii = ior( shiftl(ii,mo_integrals_cache_shift), i-mo_integrals_cache_min) + get_two_e_integral = mo_integrals_cache(ii) endif end @@ -197,19 +193,12 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) integer :: i double precision, external :: get_two_e_integral - integer :: ii, ii0 - integer*8 :: ii_8, ii0_8 + integer :: ii real(integral_kind) :: tmp integer(key_kind) :: i1, idx integer(key_kind) :: p,q,r,s,i2 PROVIDE mo_two_e_integrals_in_map mo_integrals_cache -!DEBUG -! do i=1,sze -! out_val(i) = get_two_e_integral(i,j,k,l,map) -! enddo -! return -!DEBUG out_val(1:sze) = 0.d0 if (banned_excitation(j,l)) then @@ -220,9 +209,10 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) ii0 = ior(ii0, k-mo_integrals_cache_min) ii0 = ior(ii0, j-mo_integrals_cache_min) - ii0_8 = int(l,8)-mo_integrals_cache_min_8 - ii0_8 = ior( shiftl(ii0_8,7), int(k,8)-mo_integrals_cache_min_8) - ii0_8 = ior( shiftl(ii0_8,7), int(j,8)-mo_integrals_cache_min_8) + integer :: ii0, ii0_8, ii_8 + ii0_8 = l-mo_integrals_cache_min + ii0_8 = ior( shiftl(ii0_8,mo_integrals_cache_shift), k-mo_integrals_cache_min) + ii0_8 = ior( shiftl(ii0_8,mo_integrals_cache_shift), j-mo_integrals_cache_min) q = min(j,l) s = max(j,l) @@ -231,8 +221,8 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) do i=1,sze if (banned_excitation(i,k)) cycle ii = ior(ii0, i-mo_integrals_cache_min) - if (iand(ii, -128) == 0) then - ii_8 = ior( shiftl(ii0_8,7), int(i,8)-mo_integrals_cache_min_8) + if (iand(ii, -mo_integrals_cache_size) == 0) then + ii_8 = ior( shiftl(ii0_8,mo_integrals_cache_shift), i-mo_integrals_cache_min) out_val(i) = mo_integrals_cache(ii_8) else p = min(i,k) @@ -246,6 +236,93 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) out_val(i) = dble(tmp) endif enddo + +! if (banned_excitation(j,l)) then +! out_val(1:sze) = 0.d0 +! return +! endif +! +! if (mo_integrals_cache_min > 1) then +! +! if (do_mo_cholesky) then +! +! call dgemv('T', cholesky_mo_num, mo_integrals_cache_min-1, 1.d0, & +! cholesky_mo_transp(1,1,k), cholesky_mo_num, & +! cholesky_mo_transp(1,j,l), 1, 0.d0, & +! out_val, 1) +! +! else +! +! q = min(j,l) +! s = max(j,l) +! q = q+shiftr(s*s-s,1) +! +! do i=1,mo_integrals_cache_min-1 +! if (banned_excitation(i,k)) then +! out_val(i) = 0.d0 +! cycle +! endif +! p = min(i,k) +! r = max(i,k) +! p = p+shiftr(r*r-r,1) +! i1 = min(p,q) +! i2 = max(p,q) +! idx = i1+shiftr(i2*i2-i2,1) +! !DIR$ FORCEINLINE +! call map_get(map,idx,tmp) +! out_val(i) = dble(tmp) +! enddo +! +! endif +! +! endif +! +! +! ii = l-mo_integrals_cache_min +! ii = ior( shiftl(ii, mo_integrals_cache_shift), k-mo_integrals_cache_min) +! ii = ior( shiftl(ii, mo_integrals_cache_shift), j-mo_integrals_cache_min) +! ii = shiftl(ii, mo_integrals_cache_shift) +! do i=mo_integrals_cache_min, mo_integrals_cache_max +! ii = ii+1 +! out_val(i) = mo_integrals_cache(ii) +! enddo +! +! +! if (mo_integrals_cache_max < mo_num) then +! +! if (do_mo_cholesky) then +! +! call dgemv('T', cholesky_mo_num, mo_num-mo_integrals_cache_max, 1.d0, & +! cholesky_mo_transp(1,mo_integrals_cache_max+1,k), cholesky_mo_num, & +! cholesky_mo_transp(1,j,l), 1, 0.d0, & +! out_val(mo_integrals_cache_max+1), 1) +! +! else +! +! q = min(j,l) +! s = max(j,l) +! q = q+shiftr(s*s-s,1) +! +! do i=mo_integrals_cache_max+1,mo_num +! if (banned_excitation(i,k)) then +! out_val(i) = 0.d0 +! cycle +! endif +! p = min(i,k) +! r = max(i,k) +! p = p+shiftr(r*r-r,1) +! i1 = min(p,q) +! i2 = max(p,q) +! idx = i1+shiftr(i2*i2-i2,1) +! !DIR$ FORCEINLINE +! call map_get(map,idx,tmp) +! out_val(i) = dble(tmp) +! enddo +! +! endif +! +! endif + end subroutine get_mo_two_e_integrals_ij(k,l,sze,out_array,map) @@ -267,15 +344,6 @@ subroutine get_mo_two_e_integrals_ij(k,l,sze,out_array,map) cholesky_mo_transp(1,1,k), cholesky_mo_num, & cholesky_mo_transp(1,1,l), cholesky_mo_num, 0.d0, & out_array, sze) -! integer :: i -! do j=1,mo_num -! do i=1,mo_num -! double precision, external :: get_two_e_integral -! print *, i, j, real(out_array(i,j)), real(get_two_e_integral(i,j,k,l,map)) -! enddo -! enddo -! print *, irp_here -! pause else do j=1,sze call get_mo_two_e_integrals(j,k,l,sze,out_array(1,j),map) @@ -297,9 +365,20 @@ subroutine get_mo_two_e_integrals_i1j1(k,l,sze,out_array,map) integer :: j PROVIDE mo_two_e_integrals_in_map - do j=1,sze - call get_mo_two_e_integrals(k,j,l,sze,out_array(1,j),map) - enddo + if (do_mo_cholesky) then + + call dgemv('T', cholesky_mo_num, mo_num*mo_num, 1.d0, & + cholesky_mo_transp(1,1,1), cholesky_mo_num, & + cholesky_mo_transp(1,k,l), 1, 0.d0, & + out_array, 1) + + else + + do j=1,sze + call get_mo_two_e_integrals(k,j,l,sze,out_array(1,j),map) + enddo + + endif end @@ -320,14 +399,18 @@ subroutine get_mo_two_e_integrals_coulomb_ii(k,l,sze,out_val,map) PROVIDE mo_two_e_integrals_in_map if (do_mo_cholesky) then + call dgemv('T', cholesky_mo_num, mo_num, 1.d0, & cholesky_mo_transp(1,1,1), cholesky_mo_num*(mo_num+1), & cholesky_mo_transp(1,k,l), 1, 0.d0, & out_val, 1) + else + do i=1,sze out_val(i) = get_two_e_integral(k,i,l,i,map) enddo + endif end From a4516fb8f96acabf86e5effa497fd7b0035cc0cb Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 11 Jun 2024 12:12:14 +0200 Subject: [PATCH 078/159] Accelerated cache-map access --- src/mo_two_e_ints/map_integrals.irp.f | 188 ++++++++++---------------- 1 file changed, 74 insertions(+), 114 deletions(-) diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index 9155cd8f..fb155073 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -200,128 +200,88 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) PROVIDE mo_two_e_integrals_in_map mo_integrals_cache - out_val(1:sze) = 0.d0 if (banned_excitation(j,l)) then - return + out_val(1:sze) = 0.d0 + return endif - ii0 = l-mo_integrals_cache_min - ii0 = ior(ii0, k-mo_integrals_cache_min) - ii0 = ior(ii0, j-mo_integrals_cache_min) + if (mo_integrals_cache_min > 1) then - integer :: ii0, ii0_8, ii_8 - ii0_8 = l-mo_integrals_cache_min - ii0_8 = ior( shiftl(ii0_8,mo_integrals_cache_shift), k-mo_integrals_cache_min) - ii0_8 = ior( shiftl(ii0_8,mo_integrals_cache_shift), j-mo_integrals_cache_min) + if (do_mo_cholesky) then - q = min(j,l) - s = max(j,l) - q = q+shiftr(s*s-s,1) + call dgemv('T', cholesky_mo_num, mo_integrals_cache_min-1, 1.d0, & + cholesky_mo_transp(1,1,k), cholesky_mo_num, & + cholesky_mo_transp(1,j,l), 1, 0.d0, & + out_val, 1) - do i=1,sze - if (banned_excitation(i,k)) cycle - ii = ior(ii0, i-mo_integrals_cache_min) - if (iand(ii, -mo_integrals_cache_size) == 0) then - ii_8 = ior( shiftl(ii0_8,mo_integrals_cache_shift), i-mo_integrals_cache_min) - out_val(i) = mo_integrals_cache(ii_8) else - p = min(i,k) - r = max(i,k) - p = p+shiftr(r*r-r,1) - i1 = min(p,q) - i2 = max(p,q) - idx = i1+shiftr(i2*i2-i2,1) - !DIR$ FORCEINLINE - call map_get(map,idx,tmp) - out_val(i) = dble(tmp) - endif - enddo -! if (banned_excitation(j,l)) then -! out_val(1:sze) = 0.d0 -! return -! endif -! -! if (mo_integrals_cache_min > 1) then -! -! if (do_mo_cholesky) then -! -! call dgemv('T', cholesky_mo_num, mo_integrals_cache_min-1, 1.d0, & -! cholesky_mo_transp(1,1,k), cholesky_mo_num, & -! cholesky_mo_transp(1,j,l), 1, 0.d0, & -! out_val, 1) -! -! else -! -! q = min(j,l) -! s = max(j,l) -! q = q+shiftr(s*s-s,1) -! -! do i=1,mo_integrals_cache_min-1 -! if (banned_excitation(i,k)) then -! out_val(i) = 0.d0 -! cycle -! endif -! p = min(i,k) -! r = max(i,k) -! p = p+shiftr(r*r-r,1) -! i1 = min(p,q) -! i2 = max(p,q) -! idx = i1+shiftr(i2*i2-i2,1) -! !DIR$ FORCEINLINE -! call map_get(map,idx,tmp) -! out_val(i) = dble(tmp) -! enddo -! -! endif -! -! endif -! -! -! ii = l-mo_integrals_cache_min -! ii = ior( shiftl(ii, mo_integrals_cache_shift), k-mo_integrals_cache_min) -! ii = ior( shiftl(ii, mo_integrals_cache_shift), j-mo_integrals_cache_min) -! ii = shiftl(ii, mo_integrals_cache_shift) -! do i=mo_integrals_cache_min, mo_integrals_cache_max -! ii = ii+1 -! out_val(i) = mo_integrals_cache(ii) -! enddo -! -! -! if (mo_integrals_cache_max < mo_num) then -! -! if (do_mo_cholesky) then -! -! call dgemv('T', cholesky_mo_num, mo_num-mo_integrals_cache_max, 1.d0, & -! cholesky_mo_transp(1,mo_integrals_cache_max+1,k), cholesky_mo_num, & -! cholesky_mo_transp(1,j,l), 1, 0.d0, & -! out_val(mo_integrals_cache_max+1), 1) -! -! else -! -! q = min(j,l) -! s = max(j,l) -! q = q+shiftr(s*s-s,1) -! -! do i=mo_integrals_cache_max+1,mo_num -! if (banned_excitation(i,k)) then -! out_val(i) = 0.d0 -! cycle -! endif -! p = min(i,k) -! r = max(i,k) -! p = p+shiftr(r*r-r,1) -! i1 = min(p,q) -! i2 = max(p,q) -! idx = i1+shiftr(i2*i2-i2,1) -! !DIR$ FORCEINLINE -! call map_get(map,idx,tmp) -! out_val(i) = dble(tmp) -! enddo -! -! endif -! -! endif + q = min(j,l) + s = max(j,l) + q = q+shiftr(s*s-s,1) + + do i=1,mo_integrals_cache_min-1 + if (banned_excitation(i,k)) then + out_val(i) = 0.d0 + cycle + endif + p = min(i,k) + r = max(i,k) + p = p+shiftr(r*r-r,1) + i1 = min(p,q) + i2 = max(p,q) + idx = i1+shiftr(i2*i2-i2,1) + !DIR$ FORCEINLINE + call map_get(map,idx,tmp) + out_val(i) = dble(tmp) + enddo + + endif + + endif + + + ii = l-mo_integrals_cache_min + ii = ior( shiftl(ii, mo_integrals_cache_shift), k-mo_integrals_cache_min) + ii = ior( shiftl(ii, mo_integrals_cache_shift), j-mo_integrals_cache_min) + ii = shiftl(ii, mo_integrals_cache_shift) + out_val(mo_integrals_cache_min:mo_integrals_cache_max) = & + mo_integrals_cache(ii:ii+mo_integrals_cache_max-mo_integrals_cache_min) + + if (mo_integrals_cache_max < mo_num) then + + if (do_mo_cholesky) then + + call dgemv('T', cholesky_mo_num, mo_num-mo_integrals_cache_max, 1.d0, & + cholesky_mo_transp(1,mo_integrals_cache_max+1,k), cholesky_mo_num, & + cholesky_mo_transp(1,j,l), 1, 0.d0, & + out_val(mo_integrals_cache_max+1), 1) + + else + + q = min(j,l) + s = max(j,l) + q = q+shiftr(s*s-s,1) + + do i=mo_integrals_cache_max+1,mo_num + if (banned_excitation(i,k)) then + out_val(i) = 0.d0 + cycle + endif + p = min(i,k) + r = max(i,k) + p = p+shiftr(r*r-r,1) + i1 = min(p,q) + i2 = max(p,q) + idx = i1+shiftr(i2*i2-i2,1) + !DIR$ FORCEINLINE + call map_get(map,idx,tmp) + out_val(i) = dble(tmp) + enddo + + endif + + endif end From 82654efdf9c9a19ac593b7bec54f16372fb03460 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 11 Jun 2024 13:06:32 +0200 Subject: [PATCH 079/159] Optimized get_integrals --- src/mo_two_e_ints/cholesky.irp.f | 1 + src/mo_two_e_ints/map_integrals.irp.f | 164 +++++++++++++++++--------- 2 files changed, 107 insertions(+), 58 deletions(-) diff --git a/src/mo_two_e_ints/cholesky.irp.f b/src/mo_two_e_ints/cholesky.irp.f index 971ab38d..773d240a 100644 --- a/src/mo_two_e_ints/cholesky.irp.f +++ b/src/mo_two_e_ints/cholesky.irp.f @@ -4,6 +4,7 @@ BEGIN_PROVIDER [ logical, do_mo_cholesky ] ! If True, use Cholesky vectors for MO integrals END_DOC do_mo_cholesky = do_ao_cholesky + do_mo_cholesky = .False. END_PROVIDER BEGIN_PROVIDER [ integer, cholesky_mo_num ] diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index fb155073..571de573 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -32,19 +32,27 @@ subroutine insert_into_mo_integrals_map(n_integrals, & call map_update(mo_integrals_map, buffer_i, buffer_values, n_integrals, thr) end - BEGIN_PROVIDER [ integer*4, mo_integrals_cache_min ] -&BEGIN_PROVIDER [ integer*4, mo_integrals_cache_max ] -&BEGIN_PROVIDER [ integer*4, mo_integrals_cache_shift] -&BEGIN_PROVIDER [ integer*4, mo_integrals_cache_size ] + BEGIN_PROVIDER [ integer, mo_integrals_cache_min ] +&BEGIN_PROVIDER [ integer, mo_integrals_cache_max ] +&BEGIN_PROVIDER [ integer, mo_integrals_cache_shift] +&BEGIN_PROVIDER [ integer, mo_integrals_cache_size ] implicit none BEGIN_DOC ! Min and max values of the MOs for which the integrals are in the cache END_DOC - mo_integrals_cache_shift = 7 ! 7 = log(128). Max 7 + if (qp_max_mem < 1) then + mo_integrals_cache_shift = 5 ! 5 = log(32). + else if (qp_max_mem < 2) then + mo_integrals_cache_shift = 6 ! 6 = log(64). + else + mo_integrals_cache_shift = 7 ! 7 = log(128). Max 7 + endif + mo_integrals_cache_size = 2**mo_integrals_cache_shift mo_integrals_cache_min = max(1,elec_alpha_num - (mo_integrals_cache_size/2 - 1) ) mo_integrals_cache_max = min(mo_num, mo_integrals_cache_min + mo_integrals_cache_size - 1) +print *, 'mo_integrals_cache: (', mo_integrals_cache_min, ', ', mo_integrals_cache_max, ')' END_PROVIDER @@ -136,7 +144,17 @@ double precision function get_two_e_integral(i,j,k,l,map) ii = ior(ii, j-mo_integrals_cache_min) ii = ior(ii, i-mo_integrals_cache_min) - if (iand(ii, -mo_integrals_cache_size) /= 0) then + if (iand(ii, -mo_integrals_cache_size) == 0) then + ! Integrals is in the cache + + ii = l-mo_integrals_cache_min + ii = ior( shiftl(ii,mo_integrals_cache_shift), k-mo_integrals_cache_min) + ii = ior( shiftl(ii,mo_integrals_cache_shift), j-mo_integrals_cache_min) + ii = ior( shiftl(ii,mo_integrals_cache_shift), i-mo_integrals_cache_min) + get_two_e_integral = mo_integrals_cache(ii) + + else + ! Integral is not in the cache if (do_mo_cholesky) then @@ -145,7 +163,6 @@ double precision function get_two_e_integral(i,j,k,l,map) get_two_e_integral = ddot(cholesky_mo_num, cholesky_mo_transp(1,i,k), 1, cholesky_mo_transp(1,j,l), 1) else - ! Integrals is in the map !DIR$ FORCEINLINE call two_e_integrals_index(i,j,k,l,idx) @@ -154,15 +171,6 @@ double precision function get_two_e_integral(i,j,k,l,map) get_two_e_integral = dble(tmp) endif - else - ! Integrals is in the cache - - ii = l-mo_integrals_cache_min - ii = ior( shiftl(ii,mo_integrals_cache_shift), k-mo_integrals_cache_min) - ii = ior( shiftl(ii,mo_integrals_cache_shift), j-mo_integrals_cache_min) - ii = ior( shiftl(ii,mo_integrals_cache_shift), i-mo_integrals_cache_min) - get_two_e_integral = mo_integrals_cache(ii) - endif end @@ -200,62 +208,105 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) PROVIDE mo_two_e_integrals_in_map mo_integrals_cache + if (banned_excitation(j,l)) then out_val(1:sze) = 0.d0 return endif - if (mo_integrals_cache_min > 1) then + ii = l-mo_integrals_cache_min + ii = ior(ii, k-mo_integrals_cache_min) + ii = ior(ii, j-mo_integrals_cache_min) - if (do_mo_cholesky) then + if (iand(ii, -mo_integrals_cache_size) == 0) then + ! Some integrals are in the cache - call dgemv('T', cholesky_mo_num, mo_integrals_cache_min-1, 1.d0, & - cholesky_mo_transp(1,1,k), cholesky_mo_num, & - cholesky_mo_transp(1,j,l), 1, 0.d0, & - out_val, 1) + if (mo_integrals_cache_min > 1) then - else + if (do_mo_cholesky) then - q = min(j,l) - s = max(j,l) - q = q+shiftr(s*s-s,1) + call dgemv('T', cholesky_mo_num, mo_integrals_cache_min-1, 1.d0, & + cholesky_mo_transp(1,1,k), cholesky_mo_num, & + cholesky_mo_transp(1,j,l), 1, 0.d0, & + out_val, 1) - do i=1,mo_integrals_cache_min-1 - if (banned_excitation(i,k)) then - out_val(i) = 0.d0 - cycle - endif - p = min(i,k) - r = max(i,k) - p = p+shiftr(r*r-r,1) - i1 = min(p,q) - i2 = max(p,q) - idx = i1+shiftr(i2*i2-i2,1) - !DIR$ FORCEINLINE - call map_get(map,idx,tmp) - out_val(i) = dble(tmp) - enddo + else + + q = min(j,l) + s = max(j,l) + q = q+shiftr(s*s-s,1) + + do i=1,mo_integrals_cache_min-1 + if (banned_excitation(i,k)) then + out_val(i) = 0.d0 + cycle + endif + p = min(i,k) + r = max(i,k) + p = p+shiftr(r*r-r,1) + i1 = min(p,q) + i2 = max(p,q) + idx = i1+shiftr(i2*i2-i2,1) + !DIR$ FORCEINLINE + call map_get(map,idx,tmp) + out_val(i) = dble(tmp) + enddo + + endif endif - endif + ii = l-mo_integrals_cache_min + ii = ior( shiftl(ii, mo_integrals_cache_shift), k-mo_integrals_cache_min) + ii = ior( shiftl(ii, mo_integrals_cache_shift), j-mo_integrals_cache_min) + ii = shiftl(ii, mo_integrals_cache_shift) + out_val(mo_integrals_cache_min:mo_integrals_cache_max) = & + mo_integrals_cache(ii:ii+mo_integrals_cache_max-mo_integrals_cache_min) - ii = l-mo_integrals_cache_min - ii = ior( shiftl(ii, mo_integrals_cache_shift), k-mo_integrals_cache_min) - ii = ior( shiftl(ii, mo_integrals_cache_shift), j-mo_integrals_cache_min) - ii = shiftl(ii, mo_integrals_cache_shift) - out_val(mo_integrals_cache_min:mo_integrals_cache_max) = & - mo_integrals_cache(ii:ii+mo_integrals_cache_max-mo_integrals_cache_min) + if (mo_integrals_cache_max < mo_num) then - if (mo_integrals_cache_max < mo_num) then + if (do_mo_cholesky) then + + call dgemv('T', cholesky_mo_num, mo_num-mo_integrals_cache_max, 1.d0, & + cholesky_mo_transp(1,mo_integrals_cache_max+1,k), cholesky_mo_num, & + cholesky_mo_transp(1,j,l), 1, 0.d0, & + out_val(mo_integrals_cache_max+1), 1) + + else + + q = min(j,l) + s = max(j,l) + q = q+shiftr(s*s-s,1) + + do i=mo_integrals_cache_max+1,mo_num + if (banned_excitation(i,k)) then + out_val(i) = 0.d0 + cycle + endif + p = min(i,k) + r = max(i,k) + p = p+shiftr(r*r-r,1) + i1 = min(p,q) + i2 = max(p,q) + idx = i1+shiftr(i2*i2-i2,1) + !DIR$ FORCEINLINE + call map_get(map,idx,tmp) + out_val(i) = dble(tmp) + enddo + + endif + + endif + + else if (do_mo_cholesky) then - call dgemv('T', cholesky_mo_num, mo_num-mo_integrals_cache_max, 1.d0, & - cholesky_mo_transp(1,mo_integrals_cache_max+1,k), cholesky_mo_num, & - cholesky_mo_transp(1,j,l), 1, 0.d0, & - out_val(mo_integrals_cache_max+1), 1) + call dgemv('T', cholesky_mo_num, mo_num, 1.d0, & + cholesky_mo_transp(1,1,k), cholesky_mo_num, & + cholesky_mo_transp(1,j,l), 1, 0.d0, & + out_val, 1) else @@ -263,11 +314,8 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) s = max(j,l) q = q+shiftr(s*s-s,1) - do i=mo_integrals_cache_max+1,mo_num - if (banned_excitation(i,k)) then - out_val(i) = 0.d0 - cycle - endif + do i=1,sze + if (banned_excitation(i,k)) cycle p = min(i,k) r = max(i,k) p = p+shiftr(r*r-r,1) From 90c3db31036b3aeffa3b94445960f4d092c6f929 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 11 Jun 2024 14:38:50 +0200 Subject: [PATCH 080/159] Accelerated cache --- src/mo_two_e_ints/cholesky.irp.f | 2 +- src/mo_two_e_ints/four_idx_novvvv.irp.f | 180 ------------------------ src/mo_two_e_ints/map_integrals.irp.f | 163 ++++++++++++++++----- src/mo_two_e_ints/mo_bi_integrals.irp.f | 4 - 4 files changed, 128 insertions(+), 221 deletions(-) delete mode 100644 src/mo_two_e_ints/four_idx_novvvv.irp.f diff --git a/src/mo_two_e_ints/cholesky.irp.f b/src/mo_two_e_ints/cholesky.irp.f index 773d240a..7e2c8b37 100644 --- a/src/mo_two_e_ints/cholesky.irp.f +++ b/src/mo_two_e_ints/cholesky.irp.f @@ -4,7 +4,7 @@ BEGIN_PROVIDER [ logical, do_mo_cholesky ] ! If True, use Cholesky vectors for MO integrals END_DOC do_mo_cholesky = do_ao_cholesky - do_mo_cholesky = .False. +! do_mo_cholesky = .False. END_PROVIDER BEGIN_PROVIDER [ integer, cholesky_mo_num ] diff --git a/src/mo_two_e_ints/four_idx_novvvv.irp.f b/src/mo_two_e_ints/four_idx_novvvv.irp.f deleted file mode 100644 index 80af35dc..00000000 --- a/src/mo_two_e_ints/four_idx_novvvv.irp.f +++ /dev/null @@ -1,180 +0,0 @@ -BEGIN_PROVIDER [ double precision, mo_coef_novirt, (ao_num,n_core_inact_act_orb) ] - implicit none - BEGIN_DOC - ! MO coefficients without virtual MOs - END_DOC - integer :: j,jj - - do j=1,n_core_inact_act_orb - jj = list_core_inact_act(j) - mo_coef_novirt(:,j) = mo_coef(:,jj) - enddo - -END_PROVIDER - -subroutine ao_to_mo_novirt(A_ao,LDA_ao,A_mo,LDA_mo) - implicit none - BEGIN_DOC - ! Transform A from the |AO| basis to the |MO| basis excluding virtuals - ! - ! $C^\dagger.A_{ao}.C$ - END_DOC - integer, intent(in) :: LDA_ao,LDA_mo - double precision, intent(in) :: A_ao(LDA_ao,ao_num) - double precision, intent(out) :: A_mo(LDA_mo,n_core_inact_act_orb) - double precision, allocatable :: T(:,:) - - allocate ( T(ao_num,n_core_inact_act_orb) ) - !DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: T - - call dgemm('N','N', ao_num, n_core_inact_act_orb, ao_num, & - 1.d0, A_ao,LDA_ao, & - mo_coef_novirt, size(mo_coef_novirt,1), & - 0.d0, T, size(T,1)) - - call dgemm('T','N', n_core_inact_act_orb, n_core_inact_act_orb, ao_num,& - 1.d0, mo_coef_novirt,size(mo_coef_novirt,1), & - T, ao_num, & - 0.d0, A_mo, size(A_mo,1)) - - deallocate(T) -end - - -subroutine four_idx_novvvv - print*,'********' - print*,'********' - print*,'********' - print*,'WARNING :: Using four_idx_novvvv, and we are not sure that this routine is not bugged ...' - print*,'********' - print*,'********' - print*,'********' - use map_module - implicit none - BEGIN_DOC - ! Retransform MO integrals for next CAS-SCF step - END_DOC - print*,'Using partial transformation' - print*,'It will not transform all integrals with at least 3 indices within the virtuals' - integer :: i,j,k,l,n_integrals - double precision, allocatable :: f(:,:,:), f2(:,:,:), d(:,:), T(:,:,:,:), T2(:,:,:,:) - double precision, external :: get_ao_two_e_integral - integer(key_kind), allocatable :: idx(:) - real(integral_kind), allocatable :: values(:) - - integer :: p,q,r,s - double precision :: c - allocate( T(n_core_inact_act_orb,n_core_inact_act_orb,ao_num,ao_num) , & - T2(n_core_inact_act_orb,n_core_inact_act_orb,ao_num,ao_num) ) - - !$OMP PARALLEL DEFAULT(NONE) & - !$OMP SHARED(mo_num,ao_num,T,n_core_inact_act_orb, mo_coef_transp, & - !$OMP mo_integrals_threshold,mo_coef,mo_integrals_map, & - !$OMP list_core_inact_act,T2,ao_integrals_map) & - !$OMP PRIVATE(i,j,k,l,p,q,r,s,idx,values,n_integrals, & - !$OMP f,f2,d,c) - allocate(f(ao_num,ao_num,ao_num), f2(ao_num,ao_num,ao_num), d(mo_num,mo_num), & - idx(mo_num*mo_num), values(mo_num*mo_num) ) - - ! - !$OMP DO - do s=1,ao_num - do r=1,ao_num - do q=1,ao_num - do p=1,r - f (p,q,r) = get_ao_two_e_integral(p,q,r,s,ao_integrals_map) - f (r,q,p) = f(p,q,r) - enddo - enddo - enddo - do r=1,ao_num - do q=1,ao_num - do p=1,ao_num - f2(p,q,r) = f(p,r,q) - enddo - enddo - enddo - ! f (p,q,r) = - ! f2(p,q,r) = - - do r=1,ao_num - call ao_to_mo_novirt(f (1,1,r),size(f ,1),T (1,1,r,s),size(T,1)) - call ao_to_mo_novirt(f2(1,1,r),size(f2,1),T2(1,1,r,s),size(T,1)) - enddo - ! T (i,j,p,q) = - ! T2(i,j,p,q) = - - enddo - !$OMP END DO - - !$OMP DO - do j=1,n_core_inact_act_orb - do i=1,n_core_inact_act_orb - do s=1,ao_num - do r=1,ao_num - f (r,s,1) = T (i,j,r,s) - f2(r,s,1) = T2(i,j,r,s) - enddo - enddo - call ao_to_mo(f ,size(f ,1),d,size(d,1)) - n_integrals = 0 - do l=1,mo_num - do k=1,mo_num - n_integrals+=1 - call two_e_integrals_index(list_core_inact_act(i),list_core_inact_act(j),k,l,idx(n_integrals)) - values(n_integrals) = d(k,l) - enddo - enddo - call map_append(mo_integrals_map, idx, values, n_integrals) - - call ao_to_mo(f2,size(f2,1),d,size(d,1)) - n_integrals = 0 - do l=1,mo_num - do k=1,mo_num - n_integrals+=1 - call two_e_integrals_index(list_core_inact_act(i),k,list_core_inact_act(j),l,idx(n_integrals)) - values(n_integrals) = d(k,l) - enddo - enddo - call map_append(mo_integrals_map, idx, values, n_integrals) - enddo - enddo - !$OMP END DO - deallocate(f,f2,d,idx,values) - - !$OMP END PARALLEL - - deallocate(T,T2) - - - call map_sort(mo_integrals_map) - call map_unique(mo_integrals_map) - call map_shrink(mo_integrals_map,real(mo_integrals_threshold,integral_kind)) - -end - -subroutine four_idx_novvvv2 - use bitmasks - implicit none - integer :: i - integer(bit_kind) :: mask_ijkl(N_int,4) - - print*, '' - do i = 1,N_int - mask_ijkl(i,1) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,2) = full_ijkl_bitmask_4(i,1) - mask_ijkl(i,3) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,4) = full_ijkl_bitmask_4(i,1) - enddo - call add_integrals_to_map(mask_ijkl) - - print*, '' - do i = 1,N_int - mask_ijkl(i,1) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,2) = core_inact_act_bitmask_4(i,1) - mask_ijkl(i,3) = virt_bitmask(i,1) - mask_ijkl(i,4) = virt_bitmask(i,1) - enddo - call add_integrals_to_map(mask_ijkl) - -end diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index 571de573..90257bbd 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -48,6 +48,8 @@ end mo_integrals_cache_shift = 7 ! 7 = log(128). Max 7 endif +!mo_integrals_cache_shift = 2 ! 5 = log(32). + mo_integrals_cache_size = 2**mo_integrals_cache_shift mo_integrals_cache_min = max(1,elec_alpha_num - (mo_integrals_cache_size/2 - 1) ) @@ -112,6 +114,24 @@ BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0:mo_integrals_cache_siz END_PROVIDER +double precision function get_two_e_integral_cache(i,j,k,l) + use map_module + implicit none + BEGIN_DOC + ! Returns one integral in the MO basis taken from the cache + END_DOC + integer, intent(in) :: i,j,k,l + integer :: ii + + ii = l-mo_integrals_cache_min + ii = ior( shiftl(ii,mo_integrals_cache_shift), k-mo_integrals_cache_min) + ii = ior( shiftl(ii,mo_integrals_cache_shift), j-mo_integrals_cache_min) + ii = ior( shiftl(ii,mo_integrals_cache_shift), i-mo_integrals_cache_min) + get_two_e_integral_cache = mo_integrals_cache(ii) + +end + + double precision function get_two_e_integral(i,j,k,l,map) use map_module implicit none @@ -123,7 +143,6 @@ double precision function get_two_e_integral(i,j,k,l,map) integer :: ii type(map_type), intent(inout) :: map real(integral_kind) :: tmp - integer :: kk PROVIDE mo_two_e_integrals_in_map mo_integrals_cache do_mo_cholesky @@ -145,13 +164,9 @@ double precision function get_two_e_integral(i,j,k,l,map) ii = ior(ii, i-mo_integrals_cache_min) if (iand(ii, -mo_integrals_cache_size) == 0) then - ! Integrals is in the cache - ii = l-mo_integrals_cache_min - ii = ior( shiftl(ii,mo_integrals_cache_shift), k-mo_integrals_cache_min) - ii = ior( shiftl(ii,mo_integrals_cache_shift), j-mo_integrals_cache_min) - ii = ior( shiftl(ii,mo_integrals_cache_shift), i-mo_integrals_cache_min) - get_two_e_integral = mo_integrals_cache(ii) + double precision, external :: get_two_e_integral_cache + get_two_e_integral = get_two_e_integral_cache(i,j,k,l) else @@ -199,7 +214,6 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) double precision, intent(out) :: out_val(sze) type(map_type), intent(inout) :: map integer :: i - double precision, external :: get_two_e_integral integer :: ii real(integral_kind) :: tmp @@ -256,13 +270,7 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) endif - - ii = l-mo_integrals_cache_min - ii = ior( shiftl(ii, mo_integrals_cache_shift), k-mo_integrals_cache_min) - ii = ior( shiftl(ii, mo_integrals_cache_shift), j-mo_integrals_cache_min) - ii = shiftl(ii, mo_integrals_cache_shift) - out_val(mo_integrals_cache_min:mo_integrals_cache_max) = & - mo_integrals_cache(ii:ii+mo_integrals_cache_max-mo_integrals_cache_min) + call get_mo_two_e_integrals_cache(j,k,l,sze,out_val) if (mo_integrals_cache_max < mo_num) then @@ -333,6 +341,26 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) end +subroutine get_mo_two_e_integrals_cache(j,k,l,sze,out_val) + use map_module + implicit none + BEGIN_DOC + ! Returns multiple integrals in the MO basis, all + ! i for j,k,l fixed, all integrals from the cache + END_DOC + integer, intent(in) :: j,k,l, sze + double precision, intent(out) :: out_val(sze) + integer :: ii + + ii = l-mo_integrals_cache_min + ii = ior( shiftl(ii, mo_integrals_cache_shift), k-mo_integrals_cache_min) + ii = ior( shiftl(ii, mo_integrals_cache_shift), j-mo_integrals_cache_min) + ii = shiftl(ii, mo_integrals_cache_shift) + out_val(mo_integrals_cache_min:mo_integrals_cache_max) = & + mo_integrals_cache(ii:ii+mo_integrals_cache_max-mo_integrals_cache_min) + +end + subroutine get_mo_two_e_integrals_ij(k,l,sze,out_array,map) use map_module implicit none @@ -347,16 +375,32 @@ subroutine get_mo_two_e_integrals_ij(k,l,sze,out_array,map) integer :: j real(integral_kind), allocatable :: tmp_val(:) - if (do_mo_cholesky) then - call dgemm('T', 'N', mo_num, mo_num, cholesky_mo_num, 1.d0, & - cholesky_mo_transp(1,1,k), cholesky_mo_num, & - cholesky_mo_transp(1,1,l), cholesky_mo_num, 0.d0, & - out_array, sze) + if ( (mo_integrals_cache_min>1).or.(mo_integrals_cache_max1).or.(mo_integrals_cache_max1).or.(mo_integrals_cache_max1).or.(mo_integrals_cache_max Date: Wed, 12 Jun 2024 14:59:26 +0200 Subject: [PATCH 081/159] Introduce hij_cache in PT2 --- src/cipsi/selection.irp.f | 72 ++++++++++++++------------- src/mo_two_e_ints/map_integrals.irp.f | 16 +++++- 2 files changed, 52 insertions(+), 36 deletions(-) diff --git a/src/cipsi/selection.irp.f b/src/cipsi/selection.irp.f index 0281a1d4..88a2cbdc 100644 --- a/src/cipsi/selection.irp.f +++ b/src/cipsi/selection.irp.f @@ -178,7 +178,7 @@ subroutine select_singles_and_doubles(i_generator, hole_mask, particle_mask, foc integer(bit_kind), allocatable :: minilist(:, :, :), fullminilist(:, :, :) logical, allocatable :: banned(:,:,:), bannedOrb(:,:) double precision, allocatable :: coef_fullminilist_rev(:,:) - double precision, allocatable :: mat(:,:,:) + double precision, allocatable :: mat(:,:,:), hij_cache(:,:,:) PROVIDE psi_bilinear_matrix_columns_loc psi_det_alpha_unique psi_det_beta_unique @@ -205,7 +205,7 @@ subroutine select_singles_and_doubles(i_generator, hole_mask, particle_mask, foc ! Removed to avoid introducing determinants already presents in the wf !double precision, parameter :: norm_thr = 1.d-16 - allocate (indices(N_det), & + allocate (indices(N_det), hij_cache(mo_num,mo_num,2), & exc_degree(max(N_det_alpha_unique,N_det_beta_unique))) ! Pre-compute excitation degrees wrt alpha determinants @@ -511,11 +511,15 @@ subroutine select_singles_and_doubles(i_generator, hole_mask, particle_mask, foc maskInd = maskInd + 1 if(mod(maskInd, csubset) == (subset-1)) then + call get_mo_two_e_integrals_ij(h2,h1,mo_num,hij_cache(1,1,1),mo_integrals_map) + if (sp /= 3) then ! AA or BB + call get_mo_two_e_integrals_ij(h1,h2,mo_num,hij_cache(1,1,2),mo_integrals_map) + endif call spot_isinwf(mask, fullminilist, i_generator, fullinteresting(0), banned, fullMatch, fullinteresting) if(fullMatch) cycle - call splash_pq(mask, sp, minilist, i_generator, interesting(0), bannedOrb, banned, mat, interesting) + call splash_pq(mask, sp, minilist, i_generator, interesting(0), bannedOrb, banned, mat, interesting, hij_cache) call fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2_data, mat, buf) end if @@ -531,7 +535,7 @@ subroutine select_singles_and_doubles(i_generator, hole_mask, particle_mask, foc enddo enddo deallocate(preinteresting, prefullinteresting, interesting, fullinteresting) - deallocate(banned, bannedOrb,mat) + deallocate(banned, bannedOrb, mat, hij_cache) end subroutine BEGIN_TEMPLATE @@ -914,7 +918,7 @@ single ; do p1=1,mo_num ; enddo ; p2=1 ; ; .False. ;; END_TEMPLATE -subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting) +subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting, hij_cache) use bitmasks implicit none BEGIN_DOC @@ -926,6 +930,7 @@ subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, intere integer, intent(in) :: sp, i_gen, N_sel integer, intent(in) :: interesting(0:N_sel) integer(bit_kind),intent(in) :: mask(N_int, 2), det(N_int, 2, N_sel) + double precision, intent(in) :: hij_cache(mo_num, mo_num, 2) logical, intent(inout) :: bannedOrb(mo_num, 2), banned(mo_num, mo_num, 2) double precision, intent(inout) :: mat(N_states, mo_num, mo_num) @@ -995,9 +1000,9 @@ subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, intere if(nt == 4) then call get_d2(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i))) else if(nt == 3) then - call get_d1(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i))) + call get_d1(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i))) !, hij_cache) else - call get_d0(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i))) + call get_d0(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i)), hij_cache) end if else if(nt == 4) then call bitstring_to_list_in_selection(mobMask(1,1), p(1,1), p(0,1), N_int) @@ -1190,6 +1195,8 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) double precision, intent(in) :: coefs(N_states) double precision, intent(inout) :: mat(N_states, mo_num, mo_num) integer, intent(in) :: h(0:2,2), p(0:4,2), sp +! double precision, intent(in) :: hij_cache(mo_num, mo_num, 2) + double precision, external :: get_phase_bi, mo_two_e_integral logical :: ok @@ -1201,12 +1208,12 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) integer, parameter :: turn3(2,3) = reshape((/2,3, 1,3, 1,2/), (/2,3/)) integer :: bant - double precision, allocatable :: hij_cache(:,:) + double precision, allocatable :: hij_cache1(:,:) double precision :: hij, tmp_row(N_states, mo_num), tmp_row2(N_states, mo_num) PROVIDE mo_integrals_map N_int allocate (lbanned(mo_num, 2)) - allocate (hij_cache(mo_num,2)) + allocate (hij_cache1(mo_num,2)) lbanned = bannedOrb do i=1, p(0,1) @@ -1230,13 +1237,13 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) p1 = p(1,ma) p2 = p(2,ma) if(.not. bannedOrb(puti, mi)) then - call get_mo_two_e_integrals(hfix,p1,p2,mo_num,hij_cache(1,1),mo_integrals_map) - call get_mo_two_e_integrals(hfix,p2,p1,mo_num,hij_cache(1,2),mo_integrals_map) + call get_mo_two_e_integrals(hfix,p1,p2,mo_num,hij_cache1(1,1),mo_integrals_map) + call get_mo_two_e_integrals(hfix,p2,p1,mo_num,hij_cache1(1,2),mo_integrals_map) tmp_row = 0d0 do putj=1, hfix-1 if(lbanned(putj, ma)) cycle if(banned(putj, puti,bant)) cycle - hij = hij_cache(putj,1) - hij_cache(putj,2) + hij = hij_cache1(putj,1) - hij_cache1(putj,2) if (hij /= 0.d0) then hij = hij * get_phase_bi(phasemask, ma, ma, putj, p1, hfix, p2, N_int) !DIR$ LOOP COUNT AVG(4) @@ -1248,7 +1255,7 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) do putj=hfix+1, mo_num if(lbanned(putj, ma)) cycle if(banned(putj, puti,bant)) cycle - hij = hij_cache(putj,2) - hij_cache(putj,1) + hij = hij_cache1(putj,2) - hij_cache1(putj,1) if (hij /= 0.d0) then hij = hij * get_phase_bi(phasemask, ma, ma, hfix, p1, putj, p2, N_int) !DIR$ LOOP COUNT AVG(4) @@ -1274,15 +1281,15 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) pfix = p(1,mi) tmp_row = 0d0 tmp_row2 = 0d0 - call get_mo_two_e_integrals(hfix,pfix,p1,mo_num,hij_cache(1,1),mo_integrals_map) - call get_mo_two_e_integrals(hfix,pfix,p2,mo_num,hij_cache(1,2),mo_integrals_map) + call get_mo_two_e_integrals(hfix,pfix,p1,mo_num,hij_cache1(1,1),mo_integrals_map) + call get_mo_two_e_integrals(hfix,pfix,p2,mo_num,hij_cache1(1,2),mo_integrals_map) putj = p1 do puti=1,mo_num !HOT if(lbanned(puti,mi)) cycle !p1 fixed putj = p1 if(.not. banned(putj,puti,bant)) then - hij = hij_cache(puti,2) + hij = hij_cache1(puti,2) if (hij /= 0.d0) then hij = hij * get_phase_bi(phasemask, ma, mi, hfix, p2, puti, pfix, N_int) !DIR$ LOOP COUNT AVG(4) @@ -1296,7 +1303,7 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) putj = p2 ! do puti=1,mo_num !HOT if(.not. banned(putj,puti,bant)) then - hij = hij_cache(puti,1) + hij = hij_cache1(puti,1) if (hij /= 0.d0) then hij = hij * get_phase_bi(phasemask, ma, mi, hfix, p1, puti, pfix, N_int) do k=1,N_states @@ -1327,13 +1334,13 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) puti = p(i, ma) p1 = p(turn3(1,i), ma) p2 = p(turn3(2,i), ma) - call get_mo_two_e_integrals(hfix,p1,p2,mo_num,hij_cache(1,1),mo_integrals_map) - call get_mo_two_e_integrals(hfix,p2,p1,mo_num,hij_cache(1,2),mo_integrals_map) + call get_mo_two_e_integrals(hfix,p1,p2,mo_num,hij_cache1(1,1),mo_integrals_map) + call get_mo_two_e_integrals(hfix,p2,p1,mo_num,hij_cache1(1,2),mo_integrals_map) tmp_row = 0d0 do putj=1,hfix-1 if(banned(putj,puti,1)) cycle if(lbanned(putj,ma)) cycle - hij = hij_cache(putj,1) - hij_cache(putj,2) + hij = hij_cache1(putj,1) - hij_cache1(putj,2) if (hij /= 0.d0) then hij = hij * get_phase_bi(phasemask, ma, ma, putj, p1, hfix, p2, N_int) tmp_row(:,putj) = tmp_row(:,putj) + hij * coefs(:) @@ -1342,7 +1349,7 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) do putj=hfix+1,mo_num if(banned(putj,puti,1)) cycle if(lbanned(putj,ma)) cycle - hij = hij_cache(putj,2) - hij_cache(putj,1) + hij = hij_cache1(putj,2) - hij_cache1(putj,1) if (hij /= 0.d0) then hij = hij * get_phase_bi(phasemask, ma, ma, hfix, p1, putj, p2, N_int) tmp_row(:,putj) = tmp_row(:,putj) + hij * coefs(:) @@ -1364,14 +1371,14 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) p2 = p(2,ma) tmp_row = 0d0 tmp_row2 = 0d0 - call get_mo_two_e_integrals(hfix,p1,pfix,mo_num,hij_cache(1,1),mo_integrals_map) - call get_mo_two_e_integrals(hfix,p2,pfix,mo_num,hij_cache(1,2),mo_integrals_map) + call get_mo_two_e_integrals(hfix,p1,pfix,mo_num,hij_cache1(1,1),mo_integrals_map) + call get_mo_two_e_integrals(hfix,p2,pfix,mo_num,hij_cache1(1,2),mo_integrals_map) putj = p2 do puti=1,mo_num if(lbanned(puti,ma)) cycle putj = p2 if(.not. banned(puti,putj,1)) then - hij = hij_cache(puti,1) + hij = hij_cache1(puti,1) if (hij /= 0.d0) then hij = hij * get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p1, N_int) !DIR$ LOOP COUNT AVG(4) @@ -1383,7 +1390,7 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) putj = p1 if(.not. banned(puti,putj,1)) then - hij = hij_cache(puti,2) + hij = hij_cache1(puti,2) if (hij /= 0.d0) then hij = hij * get_phase_bi(phasemask, mi, ma, hfix, pfix, puti, p2, N_int) do k=1,N_states @@ -1408,7 +1415,7 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) enddo end if end if - deallocate(lbanned,hij_cache) + deallocate(lbanned,hij_cache1) !! MONO if(sp == 3) then @@ -1439,7 +1446,7 @@ end -subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) +subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs, hij_cache) use bitmasks implicit none @@ -1450,6 +1457,7 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) double precision, intent(in) :: coefs(N_states) double precision, intent(inout) :: mat(N_states, mo_num, mo_num) integer, intent(in) :: h(0:2,2), p(0:4,2), sp + double precision, intent(in) :: hij_cache(mo_num, mo_num, 2) integer :: i, j, k, s, h1, h2, p1, p2, puti, putj double precision :: hij, phase @@ -1457,8 +1465,6 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) logical :: ok integer, parameter :: bant=1 - double precision, allocatable :: hij_cache1(:), hij_cache2(:) - allocate (hij_cache1(mo_num),hij_cache2(mo_num)) if(sp == 3) then ! AB @@ -1466,7 +1472,6 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) h2 = p(1,2) do p1=1, mo_num if(bannedOrb(p1, 1)) cycle - call get_mo_two_e_integrals(p1,h2,h1,mo_num,hij_cache1,mo_integrals_map) do p2=1, mo_num if(bannedOrb(p2,2)) cycle if(banned(p1, p2, bant)) cycle ! rentable? @@ -1475,7 +1480,7 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) call i_h_j(gen, det, N_int, hij) else phase = get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int) - hij = hij_cache1(p2) * phase + hij = hij_cache(p2,p1,1) * phase end if if (hij == 0.d0) cycle !DIR$ LOOP COUNT AVG(4) @@ -1490,8 +1495,6 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) p2 = p(2,sp) do puti=1, mo_num if (bannedOrb(puti, sp)) cycle - call get_mo_two_e_integrals(puti,p2,p1,mo_num,hij_cache1,mo_integrals_map) - call get_mo_two_e_integrals(puti,p1,p2,mo_num,hij_cache2,mo_integrals_map) do putj=puti+1, mo_num if(bannedOrb(putj, sp)) cycle if(banned(puti, putj, bant)) cycle ! rentable? @@ -1500,7 +1503,7 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) call i_h_j(gen, det, N_int, hij) if (hij == 0.d0) cycle else - hij = hij_cache1(putj) - hij_cache2(putj) + hij = hij_cache(putj,puti,1) - hij_cache(putj,puti,2) if (hij == 0.d0) cycle hij = hij * get_phase_bi(phasemask, sp, sp, puti, p1 , putj, p2, N_int) end if @@ -1512,7 +1515,6 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) end do end if - deallocate(hij_cache1,hij_cache2) end diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index 90257bbd..516851b9 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -48,7 +48,7 @@ end mo_integrals_cache_shift = 7 ! 7 = log(128). Max 7 endif -!mo_integrals_cache_shift = 2 ! 5 = log(32). +mo_integrals_cache_shift = 2 ! 5 = log(32). mo_integrals_cache_size = 2**mo_integrals_cache_shift @@ -176,6 +176,8 @@ double precision function get_two_e_integral(i,j,k,l,map) double precision, external :: ddot get_two_e_integral = ddot(cholesky_mo_num, cholesky_mo_transp(1,i,k), 1, cholesky_mo_transp(1,j,l), 1) +! double precision, external :: get_from_mo_cholesky_cache +! get_two_e_integral = get_from_mo_cholesky_cache(i,j,k,l,.False.) else @@ -227,6 +229,11 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) out_val(1:sze) = 0.d0 return endif +! +! if (do_mo_cholesky) then +! call get_from_mo_cholesky_caches(j,k,l,out_val) +! return +! endif ii = l-mo_integrals_cache_min ii = ior(ii, k-mo_integrals_cache_min) @@ -239,6 +246,7 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) if (do_mo_cholesky) then + !TODO: here call dgemv('T', cholesky_mo_num, mo_integrals_cache_min-1, 1.d0, & cholesky_mo_transp(1,1,k), cholesky_mo_num, & cholesky_mo_transp(1,j,l), 1, 0.d0, & @@ -276,6 +284,7 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) if (do_mo_cholesky) then + !TODO: here call dgemv('T', cholesky_mo_num, mo_num-mo_integrals_cache_max, 1.d0, & cholesky_mo_transp(1,mo_integrals_cache_max+1,k), cholesky_mo_num, & cholesky_mo_transp(1,j,l), 1, 0.d0, & @@ -311,6 +320,7 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) if (do_mo_cholesky) then + !TODO: here call dgemv('T', cholesky_mo_num, mo_num, 1.d0, & cholesky_mo_transp(1,1,k), cholesky_mo_num, & cholesky_mo_transp(1,j,l), 1, 0.d0, & @@ -425,6 +435,10 @@ subroutine get_mo_two_e_integrals_i1j1(k,l,sze,out_array,map) cholesky_mo_transp(1,1,1), cholesky_mo_num, & cholesky_mo_transp(1,k,l), 1, 0.d0, & out_array, 1) +! +! do j=1,sze +! call get_from_mo_cholesky_caches(k,j,l,out_array(1,j)) +! enddo else From acc0b97fbad1589c5453ec9e077668483b419759 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 13 Jun 2024 13:29:38 +0200 Subject: [PATCH 082/159] Inline past_d1 and past_d2 --- src/cipsi/selection.irp.f | 94 ++++++++++----------------- src/mo_two_e_ints/map_integrals.irp.f | 29 ++++----- 2 files changed, 50 insertions(+), 73 deletions(-) diff --git a/src/cipsi/selection.irp.f b/src/cipsi/selection.irp.f index 88a2cbdc..517220a8 100644 --- a/src/cipsi/selection.irp.f +++ b/src/cipsi/selection.irp.f @@ -560,7 +560,7 @@ subroutine fill_buffer_$DOUBLE(i_generator, sp, h1, h2, bannedOrb, banned, fock_ double precision, external :: diag_H_mat_elem_fock double precision :: E_shift double precision :: s_weight(N_states,N_states) - PROVIDE dominant_dets_of_cfgs N_dominant_dets_of_cfgs + PROVIDE dominant_dets_of_cfgs N_dominant_dets_of_cfgs thresh_sym excitation_ref hf_bitmask elec_alpha_num do jstate=1,N_states do istate=1,N_states s_weight(istate,jstate) = dsqrt(selection_weight(istate)*selection_weight(jstate)) @@ -746,7 +746,7 @@ subroutine fill_buffer_$DOUBLE(i_generator, sp, h1, h2, bannedOrb, banned, fock_ do istate=1,N_states delta_E = E0(istate) - Hii + E_shift alpha_h_psi = mat(istate, p1, p2) - if (alpha_h_psi == 0.d0) cycle + if (dabs(alpha_h_psi) < mo_integrals_threshold) cycle val = alpha_h_psi + alpha_h_psi tmp = dsqrt(delta_E * delta_E + val * val) @@ -1000,18 +1000,36 @@ subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, intere if(nt == 4) then call get_d2(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i))) else if(nt == 3) then - call get_d1(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i))) !, hij_cache) + call get_d1(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i)), hij_cache) else call get_d0(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i)), hij_cache) end if else if(nt == 4) then call bitstring_to_list_in_selection(mobMask(1,1), p(1,1), p(0,1), N_int) call bitstring_to_list_in_selection(mobMask(1,2), p(1,2), p(0,2), N_int) - call past_d2(banned, p, sp) + if(sp == 3) then + do j=1,p(0,2) + do ii=1,p(0,1) + banned(p(ii,1), p(j,2),1) = .true. + end do + end do + else + do ii=1,p(0, sp) + do j=1,ii-1 + banned(p(j,sp), p(ii,sp),1) = .true. + banned(p(ii,sp), p(j,sp),1) = .true. + end do + end do + end if else if(nt == 3) then call bitstring_to_list_in_selection(mobMask(1,1), p(1,1), p(0,1), N_int) call bitstring_to_list_in_selection(mobMask(1,2), p(1,2), p(0,2), N_int) - call past_d1(bannedOrb, p) + do ii = 1, p(0, 1) + bannedOrb(p(ii, 1), 1) = .true. + end do + do ii = 1, p(0, 2) + bannedOrb(p(ii, 2), 2) = .true. + end do end if end do @@ -1042,6 +1060,7 @@ subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) integer :: bant bant = 1 + PROVIDE mo_integrals_threshold tip = p(0,1) * p(0,2) ma = sp @@ -1067,7 +1086,7 @@ subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) p2 = p(i2, ma) hij = mo_two_e_integral(p1, p2, h1, h2) - mo_two_e_integral(p2, p1, h1, h2) - if (hij == 0.d0) cycle + if (dabs(hij) < mo_integrals_threshold) cycle hij = hij * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2, N_int) @@ -1097,7 +1116,7 @@ subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) p1 = p(turn2(i), 1) hij = mo_two_e_integral(p1, p2, h1, h2) - if (hij /= 0.d0) then + if (dabs(hij) > mo_integrals_threshold) then hij = hij * get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int) !DIR$ LOOP COUNT AVG(4) do k=1,N_states @@ -1125,7 +1144,7 @@ subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) p1 = p(i1, ma) p2 = p(i2, ma) hij = mo_two_e_integral(p1, p2, h1, h2) - mo_two_e_integral(p2,p1, h1, h2) - if (hij == 0.d0) cycle + if (dabs(hij) < mo_integrals_threshold) cycle hij = hij * get_phase_bi(phasemask, ma, ma, h1, p1, h2, p2, N_int) !DIR$ LOOP COUNT AVG(4) @@ -1147,7 +1166,7 @@ subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) p2 = p(i, ma) hij = mo_two_e_integral(p1, p2, h1, h2) - if (hij == 0.d0) cycle + if (dabs(hij) < mo_integrals_threshold) cycle hij = hij * get_phase_bi(phasemask, mi, ma, h1, p1, h2, p2, N_int) if (puti < putj) then @@ -1184,7 +1203,7 @@ subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) end -subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) +subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs, hij_cache) use bitmasks implicit none @@ -1195,7 +1214,7 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) double precision, intent(in) :: coefs(N_states) double precision, intent(inout) :: mat(N_states, mo_num, mo_num) integer, intent(in) :: h(0:2,2), p(0:4,2), sp -! double precision, intent(in) :: hij_cache(mo_num, mo_num, 2) + double precision, intent(in) :: hij_cache(mo_num, mo_num, 2) double precision, external :: get_phase_bi, mo_two_e_integral logical :: ok @@ -1237,13 +1256,11 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) p1 = p(1,ma) p2 = p(2,ma) if(.not. bannedOrb(puti, mi)) then - call get_mo_two_e_integrals(hfix,p1,p2,mo_num,hij_cache1(1,1),mo_integrals_map) - call get_mo_two_e_integrals(hfix,p2,p1,mo_num,hij_cache1(1,2),mo_integrals_map) tmp_row = 0d0 do putj=1, hfix-1 if(lbanned(putj, ma)) cycle if(banned(putj, puti,bant)) cycle - hij = hij_cache1(putj,1) - hij_cache1(putj,2) + hij = hij_cache(hfix,putj,1) - hij_cache(putj,hfix,1) if (hij /= 0.d0) then hij = hij * get_phase_bi(phasemask, ma, ma, putj, p1, hfix, p2, N_int) !DIR$ LOOP COUNT AVG(4) @@ -1255,7 +1272,7 @@ subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) do putj=hfix+1, mo_num if(lbanned(putj, ma)) cycle if(banned(putj, puti,bant)) cycle - hij = hij_cache1(putj,2) - hij_cache1(putj,1) + hij = hij_cache(putj,hfix,1) - hij_cache(hfix,putj,1) if (hij /= 0.d0) then hij = hij * get_phase_bi(phasemask, ma, ma, hfix, p1, putj, p2, N_int) !DIR$ LOOP COUNT AVG(4) @@ -1466,6 +1483,7 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs, integer, parameter :: bant=1 + PROVIDE mo_integrals_threshold if(sp == 3) then ! AB h1 = p(1,1) @@ -1482,7 +1500,7 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs, phase = get_phase_bi(phasemask, 1, 2, h1, p1, h2, p2, N_int) hij = hij_cache(p2,p1,1) * phase end if - if (hij == 0.d0) cycle + if (dabs(hij) < mo_integrals_threshold) cycle !DIR$ LOOP COUNT AVG(4) do k=1,N_states mat(k, p1, p2) = mat(k, p1, p2) + coefs(k) * hij ! HOTSPOT @@ -1501,10 +1519,10 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs, if(puti == p1 .or. putj == p2 .or. puti == p2 .or. putj == p1) then call apply_particles(mask, sp,puti,sp,putj, det, ok, N_int) call i_h_j(gen, det, N_int, hij) - if (hij == 0.d0) cycle + if (dabs(hij) < mo_integrals_threshold) cycle else hij = hij_cache(putj,puti,1) - hij_cache(putj,puti,2) - if (hij == 0.d0) cycle + if (dabs(hij) < mo_integrals_threshold) cycle hij = hij * get_phase_bi(phasemask, sp, sp, puti, p1 , putj, p2, N_int) end if !DIR$ LOOP COUNT AVG(4) @@ -1518,46 +1536,6 @@ subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs, end -subroutine past_d1(bannedOrb, p) - use bitmasks - implicit none - - logical, intent(inout) :: bannedOrb(mo_num, 2) - integer, intent(in) :: p(0:4, 2) - integer :: i,s - - do s = 1, 2 - do i = 1, p(0, s) - bannedOrb(p(i, s), s) = .true. - end do - end do -end - - -subroutine past_d2(banned, p, sp) - use bitmasks - implicit none - - logical, intent(inout) :: banned(mo_num, mo_num) - integer, intent(in) :: p(0:4, 2), sp - integer :: i,j - - if(sp == 3) then - do j=1,p(0,2) - do i=1,p(0,1) - banned(p(i,1), p(j,2)) = .true. - end do - end do - else - do i=1,p(0, sp) - do j=1,i-1 - banned(p(j,sp), p(i,sp)) = .true. - banned(p(i,sp), p(j,sp)) = .true. - end do - end do - end if -end - subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting) use bitmasks implicit none diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index 516851b9..13fcc19a 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -192,19 +192,6 @@ double precision function get_two_e_integral(i,j,k,l,map) end -double precision function mo_two_e_integral(i,j,k,l) - implicit none - BEGIN_DOC - ! Returns one integral in the MO basis - END_DOC - integer, intent(in) :: i,j,k,l - double precision :: get_two_e_integral - PROVIDE mo_two_e_integrals_in_map mo_integrals_cache - !DIR$ FORCEINLINE - mo_two_e_integral = get_two_e_integral(i,j,k,l,mo_integrals_map) - return -end - subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) use map_module implicit none @@ -223,8 +210,6 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) integer(key_kind) :: p,q,r,s,i2 PROVIDE mo_two_e_integrals_in_map mo_integrals_cache - - if (banned_excitation(j,l)) then out_val(1:sze) = 0.d0 return @@ -351,6 +336,20 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) end +double precision function mo_two_e_integral(i,j,k,l) + implicit none + BEGIN_DOC + ! Returns one integral in the MO basis + END_DOC + integer, intent(in) :: i,j,k,l + double precision :: get_two_e_integral + PROVIDE mo_two_e_integrals_in_map mo_integrals_cache + !DIR$ FORCEINLINE + mo_two_e_integral = get_two_e_integral(i,j,k,l,mo_integrals_map) + return +end + + subroutine get_mo_two_e_integrals_cache(j,k,l,sze,out_val) use map_module implicit none From 70317b2a158d69404ac9047bde280f29fa8ec82f Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 13 Jun 2024 14:54:32 +0200 Subject: [PATCH 083/159] Put mo_integrals_cache_shift in EZFIO --- src/mo_two_e_ints/EZFIO.cfg | 6 +++ src/mo_two_e_ints/map_integrals.irp.f | 59 +++++++++------------------ 2 files changed, 26 insertions(+), 39 deletions(-) diff --git a/src/mo_two_e_ints/EZFIO.cfg b/src/mo_two_e_ints/EZFIO.cfg index c967969f..da9d8fc9 100644 --- a/src/mo_two_e_ints/EZFIO.cfg +++ b/src/mo_two_e_ints/EZFIO.cfg @@ -10,6 +10,12 @@ doc: Read/Write |MO| integrals from/to disk [ Write | Read | None ] interface: ezfio,provider,ocaml default: None +[mo_integrals_cache_shift] +type: integer +doc: Adjusts the size of the MO integrals cache. 2: 2KB, 3: 32KB, 4: 512KB, 5: 8MB, 6: 128MB, 7: 2GB, 8: 32GB, 9: 512GB +interface: ezfio, provider, ocaml +default: 7 + [mo_integrals_threshold] type: Threshold doc: If | | < `mo_integrals_threshold` then is zero diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index 13fcc19a..168c34b4 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -34,38 +34,28 @@ end BEGIN_PROVIDER [ integer, mo_integrals_cache_min ] &BEGIN_PROVIDER [ integer, mo_integrals_cache_max ] -&BEGIN_PROVIDER [ integer, mo_integrals_cache_shift] &BEGIN_PROVIDER [ integer, mo_integrals_cache_size ] implicit none BEGIN_DOC ! Min and max values of the MOs for which the integrals are in the cache END_DOC - if (qp_max_mem < 1) then - mo_integrals_cache_shift = 5 ! 5 = log(32). - else if (qp_max_mem < 2) then - mo_integrals_cache_shift = 6 ! 6 = log(64). - else - mo_integrals_cache_shift = 7 ! 7 = log(128). Max 7 - endif -mo_integrals_cache_shift = 2 ! 5 = log(32). - - mo_integrals_cache_size = 2**mo_integrals_cache_shift + mo_integrals_cache_size = 2_8**mo_integrals_cache_shift mo_integrals_cache_min = max(1,elec_alpha_num - (mo_integrals_cache_size/2 - 1) ) mo_integrals_cache_max = min(mo_num, mo_integrals_cache_min + mo_integrals_cache_size - 1) -print *, 'mo_integrals_cache: (', mo_integrals_cache_min, ', ', mo_integrals_cache_max, ')' + print *, 'MO integrals cache: (', mo_integrals_cache_min, ', ', mo_integrals_cache_max, ')' END_PROVIDER -BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0:mo_integrals_cache_size**4) ] +BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0_8:(1_8*mo_integrals_cache_size)**4) ] implicit none BEGIN_DOC ! Cache of MO integrals for fast access END_DOC PROVIDE mo_two_e_integrals_in_map integer :: i,j,k,l - integer :: ii + integer*8 :: ii integer(key_kind) :: idx real(integral_kind) :: integral FREE ao_integrals_cache @@ -75,8 +65,8 @@ BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0:mo_integrals_cache_siz !$OMP PARALLEL DO PRIVATE (k,l,ii) do l=mo_integrals_cache_min,mo_integrals_cache_max do k=mo_integrals_cache_min,mo_integrals_cache_max - ii = l-mo_integrals_cache_min - ii = ior( shiftl(ii,mo_integrals_cache_shift), k-mo_integrals_cache_min) + ii = int(l-mo_integrals_cache_min,8) + ii = ior( shiftl(ii,mo_integrals_cache_shift), int(k-mo_integrals_cache_min,8)) ii = shiftl(ii,mo_integrals_cache_shift) ii = shiftl(ii,mo_integrals_cache_shift) call dgemm('T','N', mo_integrals_cache_max-mo_integrals_cache_min+1, & @@ -99,10 +89,10 @@ BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0:mo_integrals_cache_siz call two_e_integrals_index(i,j,k,l,idx) !DIR$ FORCEINLINE call map_get(mo_integrals_map,idx,integral) - ii = l-mo_integrals_cache_min - ii = ior( shiftl(ii,mo_integrals_cache_shift), k-mo_integrals_cache_min) - ii = ior( shiftl(ii,mo_integrals_cache_shift), j-mo_integrals_cache_min) - ii = ior( shiftl(ii,mo_integrals_cache_shift), i-mo_integrals_cache_min) + ii = int(l-mo_integrals_cache_min,8) + ii = ior( shiftl(ii,mo_integrals_cache_shift), int(k-mo_integrals_cache_min,8)) + ii = ior( shiftl(ii,mo_integrals_cache_shift), int(j-mo_integrals_cache_min,8)) + ii = ior( shiftl(ii,mo_integrals_cache_shift), int(i-mo_integrals_cache_min,8)) mo_integrals_cache(ii) = integral enddo enddo @@ -121,12 +111,12 @@ double precision function get_two_e_integral_cache(i,j,k,l) ! Returns one integral in the MO basis taken from the cache END_DOC integer, intent(in) :: i,j,k,l - integer :: ii + integer*8 :: ii - ii = l-mo_integrals_cache_min - ii = ior( shiftl(ii,mo_integrals_cache_shift), k-mo_integrals_cache_min) - ii = ior( shiftl(ii,mo_integrals_cache_shift), j-mo_integrals_cache_min) - ii = ior( shiftl(ii,mo_integrals_cache_shift), i-mo_integrals_cache_min) + ii = int(l-mo_integrals_cache_min,8) + ii = ior( shiftl(ii,mo_integrals_cache_shift), int(k-mo_integrals_cache_min,8)) + ii = ior( shiftl(ii,mo_integrals_cache_shift), int(j-mo_integrals_cache_min,8)) + ii = ior( shiftl(ii,mo_integrals_cache_shift), int(i-mo_integrals_cache_min,8)) get_two_e_integral_cache = mo_integrals_cache(ii) end @@ -215,11 +205,6 @@ subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) return endif ! -! if (do_mo_cholesky) then -! call get_from_mo_cholesky_caches(j,k,l,out_val) -! return -! endif - ii = l-mo_integrals_cache_min ii = ior(ii, k-mo_integrals_cache_min) ii = ior(ii, j-mo_integrals_cache_min) @@ -359,14 +344,14 @@ subroutine get_mo_two_e_integrals_cache(j,k,l,sze,out_val) END_DOC integer, intent(in) :: j,k,l, sze double precision, intent(out) :: out_val(sze) - integer :: ii + integer*8 :: ii - ii = l-mo_integrals_cache_min - ii = ior( shiftl(ii, mo_integrals_cache_shift), k-mo_integrals_cache_min) - ii = ior( shiftl(ii, mo_integrals_cache_shift), j-mo_integrals_cache_min) + ii = int(l-mo_integrals_cache_min,8) + ii = ior( shiftl(ii, mo_integrals_cache_shift), int(k-mo_integrals_cache_min,8)) + ii = ior( shiftl(ii, mo_integrals_cache_shift), int(j-mo_integrals_cache_min,8)) ii = shiftl(ii, mo_integrals_cache_shift) out_val(mo_integrals_cache_min:mo_integrals_cache_max) = & - mo_integrals_cache(ii:ii+mo_integrals_cache_max-mo_integrals_cache_min) + mo_integrals_cache(ii:ii+int(mo_integrals_cache_max-mo_integrals_cache_min,8)) end @@ -434,10 +419,6 @@ subroutine get_mo_two_e_integrals_i1j1(k,l,sze,out_array,map) cholesky_mo_transp(1,1,1), cholesky_mo_num, & cholesky_mo_transp(1,k,l), 1, 0.d0, & out_array, 1) -! -! do j=1,sze -! call get_from_mo_cholesky_caches(k,j,l,out_array(1,j)) -! enddo else From d89682cb7ee8beeb0e01d6129afd18d8cd9c78ee Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 13 Jun 2024 17:50:27 +0200 Subject: [PATCH 084/159] Improved disk access in Cholesky --- src/ao_two_e_ints/cholesky.irp.f | 98 +++++++++++++++++++++++++++++--- 1 file changed, 89 insertions(+), 9 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 41cdb80d..05f7115d 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -41,7 +41,7 @@ END_PROVIDER integer*8, allocatable :: Lset(:), Dset(:), addr3(:) logical, allocatable :: computed(:) - integer :: i,j,k,m,p,q, dj, p2, q2 + integer :: i,j,k,m,p,q, dj, p2, q2, ii, jj integer*8 :: i8, j8, p8, qj8, rank_max, np8 integer :: N, np, nq @@ -65,6 +65,8 @@ END_PROVIDER type(c_ptr) :: c_pointer(2) integer :: fd(2) logical :: delta_on_disk + integer :: dgemm_block_size, nqq + double precision, allocatable :: dgemm_buffer1(:,:), dgemm_buffer2(:,:) PROVIDE nproc PROVIDE nucl_coord ao_two_e_integral_schwartz @@ -300,17 +302,58 @@ END_PROVIDER !$OMP BARRIER !$OMP END PARALLEL + PROVIDE nproc if (N>0) then - call dgemm('N','T', np, nq, N, -1.d0, & - Ltmp_p, np, Ltmp_q, nq, 0.d0, Delta, np) - else - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,j) SCHEDULE(static,1) - do q=1,nq - do j=1,np - Delta(j,q) = 0.d0 + + if (delta_on_disk) then + ! Blocking improves I/O performance + + dgemm_block_size = nproc*4 + + allocate (dgemm_buffer1(np,dgemm_block_size)) + allocate (dgemm_buffer2(dgemm_block_size,N)) + + do jj=1,nq,dgemm_block_size + + nqq = min(nq, jj+dgemm_block_size-1) - jj + 1 + + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,ii) + do ii=1,N + do q=jj,jj+nqq-1 + dgemm_buffer2(q-jj+1,ii) = Ltmp_q(q,ii) + enddo + enddo + !$OMP END PARALLEL DO + + call dgemm('N', 'T', np, nqq, N, 1.d0, & + Ltmp_p, np, dgemm_buffer2, dgemm_block_size, 0.d0, dgemm_buffer1, np) + + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q) + do q=jj,jj+nqq-1 + Delta(:,q) = - dgemm_buffer1(:, q-jj+1) + enddo + !$OMP END PARALLEL DO + enddo + + deallocate(dgemm_buffer1, dgemm_buffer2) + + else + + call dgemm('N', 'T', np, nq, N, -1.d0, & + Ltmp_p(1,1), np, Ltmp_q(1,1), nq, 0.d0, Delta, np) + + endif + + + else + + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,j) + do q=1,nq + Delta(:,q) = 0.d0 enddo !$OMP END PARALLEL DO + endif ! f. @@ -329,9 +372,46 @@ END_PROVIDER rank = N+j if (iblock == block_size) then - call dgemm('N','T',np,nq,block_size,-1.d0, & + + if (delta_on_disk) then + ! Blocking improves I/O performance + + dgemm_block_size = nproc*4 + allocate (dgemm_buffer1(np,dgemm_block_size)) + allocate (dgemm_buffer2(dgemm_block_size,block_size)) + + do jj=1,nq,dgemm_block_size + nqq = min(nq, jj+dgemm_block_size-1) - jj + 1 + + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,ii) + do ii=1,block_size + do q=jj,jj+nqq-1 + dgemm_buffer2(q-jj+1,ii) = Ltmp_q(q,ii) + enddo + enddo + !$OMP END PARALLEL DO + + call dgemm('N', 'T', np, nqq, block_size, 1.d0, & + Ltmp_p(1,1), np, dgemm_buffer2, dgemm_block_size, 0.d0, dgemm_buffer1, np) + + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q) + do q=jj,jj+nqq-1 + Delta(:,q) = Delta(:,q) - dgemm_buffer1(:, q-jj+1) + enddo + !$OMP END PARALLEL DO + + enddo + deallocate(dgemm_buffer1, dgemm_buffer2) + + else + + call dgemm('N','T',np,nq,block_size,-1.d0, & Ltmp_p, np, Ltmp_q, nq, 1.d0, Delta, np) + + endif + iblock = 0 + endif ! ii. From e876f635d636b1cb878cdb9baf9e7b3906bf955f Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 14 Jun 2024 16:26:23 +0200 Subject: [PATCH 085/159] Asyc Fortran I/O --- src/ao_two_e_ints/cholesky.irp.f | 161 ++++++++++++++++++++++--------- src/utils/fortran_mmap.c | 7 +- 2 files changed, 118 insertions(+), 50 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 05f7115d..d731ef04 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -31,12 +31,12 @@ END_PROVIDER integer*8 :: ndim8 integer :: rank double precision :: tau, tau2 - double precision, pointer :: L(:,:), Delta(:,:) + double precision, pointer :: L(:,:) double precision :: s double precision :: dscale, dscale_tmp - double precision, allocatable :: D(:), Ltmp_p(:,:), Ltmp_q(:,:), D_sorted(:), Delta_col(:) + double precision, allocatable :: D(:), Ltmp_p(:,:), Ltmp_q(:,:), D_sorted(:), Delta_col(:), Delta(:,:) integer, allocatable :: addr1(:), addr2(:) integer*8, allocatable :: Lset(:), Dset(:), addr3(:) logical, allocatable :: computed(:) @@ -66,7 +66,7 @@ END_PROVIDER integer :: fd(2) logical :: delta_on_disk integer :: dgemm_block_size, nqq - double precision, allocatable :: dgemm_buffer1(:,:), dgemm_buffer2(:,:) + double precision, allocatable :: dgemm_buffer1(:,:), dgemm_buffer2(:,:), dgemm_buffer3(:,:) PROVIDE nproc PROVIDE nucl_coord ao_two_e_integral_schwartz @@ -230,7 +230,7 @@ END_PROVIDER stop -1 endif - if (s > 0.1d0) then + if (s > 0.3d0) then exit endif @@ -245,13 +245,16 @@ END_PROVIDER + np*memory_of_double(nq) &! Delta(np,nq) + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) - if (mem > qp_max_mem) then - call mmap(trim(ezfio_work_dir)//'cholesky_delta', (/ np*1_8, nq*1_8 /), 8, fd(2), .False., .True., c_pointer(2)) - call c_f_pointer(c_pointer(2), Delta, (/ np, nq /)) - ! Deleting the file while it is open makes the file invisible on the filesystem, - ! and automatically deleted, even if the program crashes + if (1.1*mem > qp_max_mem) then +! call mmap(trim(ezfio_work_dir)//'cholesky_delta', (/ np*1_8, nq*1_8 /), 8, fd(2), .False., .True., c_pointer(2)) +! call c_f_pointer(c_pointer(2), Delta, (/ np, nq /)) + +! ! Deleting the file while it is open makes the file invisible on the filesystem, +! ! and automatically deleted, even if the program crashes iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_delta', 'R') close(iunit,status='delete') + open(unit=iunit, access='DIRECT', form='UNFORMATTED', RECL=(np+1)*8, & + ASYNCHRONOUS='YES', file=trim(ezfio_work_dir)//'cholesky_delta') delta_on_disk = .True. else allocate(Delta(np,nq)) @@ -303,15 +306,18 @@ END_PROVIDER !$OMP END PARALLEL PROVIDE nproc - if (N>0) then - if (delta_on_disk) then + if (delta_on_disk) then + + dgemm_block_size = nproc*4 + + allocate (dgemm_buffer1(np,dgemm_block_size)) + allocate (dgemm_buffer3(np,dgemm_block_size)) + allocate (dgemm_buffer2(dgemm_block_size,N)) + + if (N>0) then ! Blocking improves I/O performance - dgemm_block_size = nproc*4 - - allocate (dgemm_buffer1(np,dgemm_block_size)) - allocate (dgemm_buffer2(dgemm_block_size,N)) do jj=1,nq,dgemm_block_size @@ -325,34 +331,55 @@ END_PROVIDER enddo !$OMP END PARALLEL DO - call dgemm('N', 'T', np, nqq, N, 1.d0, & +print *, np, nq, jj, nqq, N + call dgemm('N', 'T', np, nqq, N, -1.d0, & Ltmp_p, np, dgemm_buffer2, dgemm_block_size, 0.d0, dgemm_buffer1, np) - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q) + wait(iunit) + dgemm_buffer3(:,:) = dgemm_buffer1(:,:) +! !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q) do q=jj,jj+nqq-1 - Delta(:,q) = - dgemm_buffer1(:, q-jj+1) + write(iunit, ASYNCHRONOUS='YES', rec=q) dgemm_buffer3(1:np, q-jj+1) enddo - !$OMP END PARALLEL DO +! !$OMP END PARALLEL DO enddo - - deallocate(dgemm_buffer1, dgemm_buffer2) +print *, 'ok1' else - call dgemm('N', 'T', np, nq, N, -1.d0, & - Ltmp_p(1,1), np, Ltmp_q(1,1), nq, 0.d0, Delta, np) + + dgemm_buffer1(1:np,1) = 0.d0 + +! !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q) + do q=1,nq + write(iunit, ASYNCHRONOUS='YES', rec=q) dgemm_buffer1(1:np, 1) + enddo +! !$OMP END PARALLEL DO endif + deallocate(dgemm_buffer1, dgemm_buffer2) + if (delta_on_disk) wait(iunit) + deallocate(dgemm_buffer3) + else - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,j) - do q=1,nq - Delta(:,q) = 0.d0 - enddo - !$OMP END PARALLEL DO + if (N>0) then + + call dgemm('N', 'T', np, nq, N, -1.d0, & + Ltmp_p(1,1), np, Ltmp_q(1,1), nq, 0.d0, Delta, np) + + else + + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,j) + do q=1,nq + Delta(:,q) = 0.d0 + enddo + !$OMP END PARALLEL DO + + endif endif @@ -383,25 +410,40 @@ END_PROVIDER do jj=1,nq,dgemm_block_size nqq = min(nq, jj+dgemm_block_size-1) - jj + 1 - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,ii) + !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(q,ii) + !$OMP DO do ii=1,block_size do q=jj,jj+nqq-1 dgemm_buffer2(q-jj+1,ii) = Ltmp_q(q,ii) enddo enddo - !$OMP END PARALLEL DO + !$OMP END DO + !$OMP END PARALLEL - call dgemm('N', 'T', np, nqq, block_size, 1.d0, & - Ltmp_p(1,1), np, dgemm_buffer2, dgemm_block_size, 0.d0, dgemm_buffer1, np) - - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q) +! !$OMP DO do q=jj,jj+nqq-1 - Delta(:,q) = Delta(:,q) - dgemm_buffer1(:, q-jj+1) + read(iunit, rec=q) dgemm_buffer1(1:np, q-jj+1) enddo - !$OMP END PARALLEL DO +! !$OMP END DO + +print *, np, nq, jj, nqq, block_size + call dgemm('N', 'T', np, nqq, block_size, -1.d0, & + Ltmp_p(1,1), np, dgemm_buffer2, dgemm_block_size, 1.d0, dgemm_buffer1, np) + + wait(iunit) + dgemm_buffer3 = dgemm_buffer1 + +! !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q) + do q=jj,jj+nqq-1 + write(iunit, ASYNCHRONOUS='YES', rec=q) dgemm_buffer3(:, q-jj+1) + enddo +! !$OMP END PARALLEL DO enddo +print *, 'ok' deallocate(dgemm_buffer1, dgemm_buffer2) + wait(iunit) + deallocate(dgemm_buffer3) else @@ -427,11 +469,20 @@ END_PROVIDER enddo iblock = iblock+1 - !$OMP PARALLEL DO PRIVATE(p) - do p=1,np - Ltmp_p(p,iblock) = Delta(p,dj) - enddo - !$OMP END PARALLEL DO + + if (delta_on_disk) then + + read(iunit,rec=dj) Ltmp_p(1:np,iblock) + + else + + !$OMP PARALLEL DO PRIVATE(p) + do p=1,np + Ltmp_p(p,iblock) = Delta(p,dj) + enddo + !$OMP END PARALLEL DO + + endif if (.not.computed(dj)) then m = dj @@ -463,12 +514,26 @@ END_PROVIDER !$OMP END PARALLEL DO endif - !$OMP PARALLEL DO PRIVATE(p) - do p=1,np - Ltmp_p(p,iblock) = Ltmp_p(p,iblock) + Delta_col(p) - Delta(p,dj) = Ltmp_p(p,iblock) - enddo - !$OMP END PARALLEL DO + if (delta_on_disk) then + + !$OMP PARALLEL DO PRIVATE(p) + do p=1,np + Ltmp_p(p,iblock) = Ltmp_p(p,iblock) + Delta_col(p) + enddo + !$OMP END PARALLEL DO + + write(iunit, ASYNCHRONOUS='YES', rec=dj) Ltmp_p(1:np,iblock) + + else + + !$OMP PARALLEL DO PRIVATE(p) + do p=1,np + Ltmp_p(p,iblock) = Ltmp_p(p,iblock) + Delta_col(p) + Delta(p,dj) = Ltmp_p(p,iblock) + enddo + !$OMP END PARALLEL DO + + endif computed(dj) = .True. endif @@ -512,7 +577,7 @@ END_PROVIDER deallocate(Ltmp_q) deallocate(computed) if (delta_on_disk) then - call munmap( (/ np*1_8, nq*1_8 /), 8, fd(2), c_pointer(2) ) + close(iunit, status='delete') else deallocate(Delta) endif diff --git a/src/utils/fortran_mmap.c b/src/utils/fortran_mmap.c index 711a9c34..2dbe42b8 100644 --- a/src/utils/fortran_mmap.c +++ b/src/utils/fortran_mmap.c @@ -40,7 +40,7 @@ void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only, exit(EXIT_FAILURE); } - result = write(fd, "", 1); + result = write(fd, " ", 1); if (result != 1) { close(fd); printf("%s:\n", filename); @@ -49,7 +49,10 @@ void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only, } if (single_node == 1) { - map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_POPULATE | MAP_NONBLOCK, fd, 0); + map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_POPULATE | MAP_NONBLOCK | MAP_NORESERVE, fd, 0); + if (map == MAP_FAILED) { + map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); + } } else { map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); } From f671c669f8cae460911c1e016e9e44297e817d79 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 17 Jun 2024 14:57:48 +0200 Subject: [PATCH 086/159] Use less memory in Cholesky --- src/ao_two_e_ints/cholesky.irp.f | 378 +++++++------------------- src/hartree_fock/fock_matrix_hf.irp.f | 21 +- 2 files changed, 119 insertions(+), 280 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index d731ef04..a680e7ee 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -31,14 +31,14 @@ END_PROVIDER integer*8 :: ndim8 integer :: rank double precision :: tau, tau2 - double precision, pointer :: L(:,:) + double precision, pointer :: L(:,:), Delta(:,:) double precision :: s double precision :: dscale, dscale_tmp - double precision, allocatable :: D(:), Ltmp_p(:,:), Ltmp_q(:,:), D_sorted(:), Delta_col(:), Delta(:,:) + double precision, allocatable :: D(:), Ltmp_p(:,:), Ltmp_q(:,:), D_sorted(:), Delta_col(:) integer, allocatable :: addr1(:), addr2(:) - integer*8, allocatable :: Lset(:), Dset(:), addr3(:) + integer*8, allocatable :: Lset(:), Dset(:) logical, allocatable :: computed(:) integer :: i,j,k,m,p,q, dj, p2, q2, ii, jj @@ -64,11 +64,8 @@ END_PROVIDER type(c_ptr) :: c_pointer(2) integer :: fd(2) - logical :: delta_on_disk - integer :: dgemm_block_size, nqq - double precision, allocatable :: dgemm_buffer1(:,:), dgemm_buffer2(:,:), dgemm_buffer3(:,:) - PROVIDE nproc + PROVIDE nproc ao_cholesky_threshold do_direct_integrals qp_max_mem PROVIDE nucl_coord ao_two_e_integral_schwartz call set_multiple_levels_omp(.False.) @@ -88,19 +85,8 @@ END_PROVIDER else - PROVIDE nucl_coord ao_two_e_integral_schwartz call set_multiple_levels_omp(.False.) - call resident_memory(mem0) - - rank_max = min(ndim8,(qp_max_mem*1024_8*1024_8*1024_8/8_8)/ndim8) - call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., .True., c_pointer(1)) - call c_f_pointer(c_pointer(1), L, (/ ndim8, rank_max /)) - ! Deleting the file while it is open makes the file invisible on the filesystem, - ! and automatically deleted, even if the program crashes - iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_ao_tmp', 'R') - close(iunit,status='delete') - if (do_direct_integrals) then if (ao_two_e_integral(1,1,1,1) < huge(1.d0)) then ! Trigger providers inside ao_two_e_integral @@ -113,8 +99,12 @@ END_PROVIDER tau = ao_cholesky_threshold tau2 = tau*tau - mem = 6.d0 * memory_of_double8(ndim8) + 6.d0 * memory_of_int8(ndim8) - call check_mem(mem, irp_here) + rank = 0 + + allocate( D(ndim8), Lset(ndim8), Dset(ndim8), D_sorted(ndim8)) + allocate( addr1(ndim8), addr2(ndim8), Delta_col(ndim8) ) + + call resident_memory(mem0) call print_memory_usage() @@ -127,46 +117,35 @@ END_PROVIDER print *, '============ =============' - rank = 0 - - allocate( D(ndim8), Lset(ndim8), Dset(ndim8), D_sorted(ndim8)) - allocate( addr1(ndim8), addr2(ndim8), addr3(ndim8) ) -!print *, 'allocate : (D(ndim8))', memory_of_int8(ndim8) -!print *, 'allocate : (Lset(ndim8))', memory_of_int8(ndim8) -!print *, 'allocate : (Dset(ndim8))', memory_of_int8(ndim8) -!print *, 'allocate : (4,addr(ndim8))', memory_of_int8(4_8*ndim8) - ! 1. - k=0 + i8=0 do j=1,ao_num do i=1,ao_num - k = k+1 - addr1(k) = i - addr2(k) = j - addr3(k) = (i-1)*ao_num + j + i8 = i8+1 + addr1(i8) = i + addr2(i8) = j enddo enddo if (do_direct_integrals) then - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(dynamic,16) + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(dynamic,21) do i8=ndim8,1,-1 D(i8) = ao_two_e_integral(addr1(i8), addr2(i8), & addr1(i8), addr2(i8)) enddo !$OMP END PARALLEL DO else - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(dynamic,16) + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(dynamic,21) do i8=ndim8,1,-1 D(i8) = get_ao_two_e_integral(addr1(i8), addr1(i8), & - addr2(i8), addr2(i8), & - ao_integrals_map) + addr2(i8), addr2(i8), ao_integrals_map) enddo !$OMP END PARALLEL DO endif + D_sorted(:) = -D(:) call dsort_noidx_big(D_sorted,ndim8) - D_sorted(:) = dabs(D_sorted(:)) - + D_sorted(:) = -D_sorted(:) Dmax = D_sorted(1) ! 2. @@ -174,12 +153,24 @@ END_PROVIDER dscale_tmp = dscale*dscale*Dmax np8=0_8 do p8=1,ndim8 - if ( dscale_tmp*D(p8) > tau2 ) then + if ( dscale_tmp*D(p8) >= tau2 ) then np8 = np8+1_8 Lset(np8) = p8 endif enddo np = np8 + if (np <= 0) stop 'np<=0' + if (np > ndim8) stop 'np>ndim8' + + rank_max = min(np,20*elec_num*elec_num) + call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., .True., c_pointer(1)) + call c_f_pointer(c_pointer(1), L, (/ ndim8, rank_max /)) + + ! Deleting the file while it is open makes the file invisible on the filesystem, + ! and automatically deleted, even if the program crashes + iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_ao_tmp', 'R') + close(iunit,status='delete') + ! 3. N = 0 @@ -187,85 +178,59 @@ END_PROVIDER ! 4. i = 0 + mem = memory_of_double(np) & ! Delta(np,nq) + + (np+1)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) + +! call check_mem(mem) + ! 5. - do while ( (Dmax > tau).and.(rank*1_8 < min(ndim8,rank_max)) ) + do while ( (Dmax > tau).and.(np > 0) ) ! a. i = i+1 - ! Inrease s until the arrays fit in memory - s = 0.01d0 block_size = max(N,24) + + ! Determine nq so that Delta fits in memory + + s = 0.1d0 + Dmin = max(s*Dmax,tau) + do nq=2,np-1 + if (D_sorted(nq) < Dmin) exit + enddo + do while (.True.) - ! b. - Dmin = max(s*Dmax,tau) + mem = mem0 & + + np*memory_of_double(nq) & ! Delta(np,nq) + + (np+nq)*memory_of_double(block_size) & ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) + + memory_of_int(nq) ! computed(nq) - ! c. - nq=0 - do p=1,np - if ( D(Lset(p)) > Dmin ) then - nq = nq+1 - Dset(nq) = Lset(p) - endif - enddo - - - mem = mem0 & - + np*memory_of_double(nq) - -!print *, 'mem = ', mem - if (mem > qp_max_mem/2) then - s = s*2.d0 + if (mem > qp_max_mem*0.5d0) then + nq = nq/2 else exit endif - if ((s > 1.d0).or.(nq == 0)) then - call print_memory_usage() - print *, 'Required peak memory: ', mem, 'Gb' - call resident_memory(mem) - print *, 'Already used memory: ', mem, 'Gb' - print *, 'Not enough memory. Reduce cholesky threshold' - stop -1 - endif - - if (s > 0.3d0) then - exit - endif - enddo - ! d., e. - mem = mem0 & - + memory_of_int(nq) &! computed(nq) - + np*memory_of_int(nq) &! computed(nq) - + memory_of_double(np) &! Delta_col(np) - + 7*memory_of_double8(ndim8) &! D, Lset, Dset, D_sorted, addr[1-3] - + np*memory_of_double(nq) &! Delta(np,nq) - + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) - - if (1.1*mem > qp_max_mem) then -! call mmap(trim(ezfio_work_dir)//'cholesky_delta', (/ np*1_8, nq*1_8 /), 8, fd(2), .False., .True., c_pointer(2)) -! call c_f_pointer(c_pointer(2), Delta, (/ np, nq /)) - -! ! Deleting the file while it is open makes the file invisible on the filesystem, -! ! and automatically deleted, even if the program crashes - iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_delta', 'R') - close(iunit,status='delete') - open(unit=iunit, access='DIRECT', form='UNFORMATTED', RECL=(np+1)*8, & - ASYNCHRONOUS='YES', file=trim(ezfio_work_dir)//'cholesky_delta') - delta_on_disk = .True. - else - allocate(Delta(np,nq)) - delta_on_disk = .False. + if (nq <= 0) then + print *, nq + stop 'bug in cholesky: nq <= 0' endif -!print *, delta_on_disk - allocate(Delta_col(np)) + Dmin = D_sorted(nq) + nq=0 + do p=1,np + if ( D(Lset(p)) >= Dmin ) then + nq = nq+1 + Dset(nq) = Lset(p) + endif + enddo + + allocate(Delta(np,nq)) allocate(Ltmp_p(np,block_size), stat=ierr) -!print *, 'allocate : Ltmp_p(np,block_size)', memory_of_double8(np*block_size*1_8), np, block_size if (ierr /= 0) then call print_memory_usage() @@ -274,7 +239,6 @@ END_PROVIDER endif allocate(Ltmp_q(nq,block_size), stat=ierr) -!print *, 'allocate : Ltmp_q(nq,block_size)', memory_of_double8(nq*block_size*1_8), nq, block_size if (ierr /= 0) then call print_memory_usage() @@ -287,7 +251,6 @@ END_PROVIDER computed(:) = .False. -!print *, 'N, rank, block_size', N, rank, block_size !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q) do k=1,N !$OMP DO @@ -305,81 +268,18 @@ END_PROVIDER !$OMP BARRIER !$OMP END PARALLEL - PROVIDE nproc - - if (delta_on_disk) then - - dgemm_block_size = nproc*4 - - allocate (dgemm_buffer1(np,dgemm_block_size)) - allocate (dgemm_buffer3(np,dgemm_block_size)) - allocate (dgemm_buffer2(dgemm_block_size,N)) - - if (N>0) then - ! Blocking improves I/O performance - - - do jj=1,nq,dgemm_block_size - - nqq = min(nq, jj+dgemm_block_size-1) - jj + 1 - - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,ii) - do ii=1,N - do q=jj,jj+nqq-1 - dgemm_buffer2(q-jj+1,ii) = Ltmp_q(q,ii) - enddo - enddo - !$OMP END PARALLEL DO - -print *, np, nq, jj, nqq, N - call dgemm('N', 'T', np, nqq, N, -1.d0, & - Ltmp_p, np, dgemm_buffer2, dgemm_block_size, 0.d0, dgemm_buffer1, np) - - wait(iunit) - dgemm_buffer3(:,:) = dgemm_buffer1(:,:) -! !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q) - do q=jj,jj+nqq-1 - write(iunit, ASYNCHRONOUS='YES', rec=q) dgemm_buffer3(1:np, q-jj+1) - enddo -! !$OMP END PARALLEL DO - - enddo -print *, 'ok1' - - else - - - dgemm_buffer1(1:np,1) = 0.d0 - -! !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q) - do q=1,nq - write(iunit, ASYNCHRONOUS='YES', rec=q) dgemm_buffer1(1:np, 1) - enddo -! !$OMP END PARALLEL DO - - endif - - deallocate(dgemm_buffer1, dgemm_buffer2) - if (delta_on_disk) wait(iunit) - deallocate(dgemm_buffer3) - - - else - - if (N>0) then + if (N>0) then call dgemm('N', 'T', np, nq, N, -1.d0, & Ltmp_p(1,1), np, Ltmp_q(1,1), nq, 0.d0, Delta, np) - else + else - !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,j) - do q=1,nq - Delta(:,q) = 0.d0 - enddo - !$OMP END PARALLEL DO - - endif + !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q,j) + do q=1,nq + Delta(:,q) = 0.d0 + enddo + !$OMP END PARALLEL DO endif @@ -395,64 +295,20 @@ print *, 'ok1' do j=1,nq if ( (Qmax <= Dmin).or.(N+j*1_8 > ndim8) ) exit + ! i. rank = N+j + if (rank == rank_max) then + print *, 'cholesky: rank_max reached' + exit + endif if (iblock == block_size) then - if (delta_on_disk) then - ! Blocking improves I/O performance - - dgemm_block_size = nproc*4 - allocate (dgemm_buffer1(np,dgemm_block_size)) - allocate (dgemm_buffer2(dgemm_block_size,block_size)) - - do jj=1,nq,dgemm_block_size - nqq = min(nq, jj+dgemm_block_size-1) - jj + 1 - - !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(q,ii) - !$OMP DO - do ii=1,block_size - do q=jj,jj+nqq-1 - dgemm_buffer2(q-jj+1,ii) = Ltmp_q(q,ii) - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - -! !$OMP DO - do q=jj,jj+nqq-1 - read(iunit, rec=q) dgemm_buffer1(1:np, q-jj+1) - enddo -! !$OMP END DO - -print *, np, nq, jj, nqq, block_size - call dgemm('N', 'T', np, nqq, block_size, -1.d0, & - Ltmp_p(1,1), np, dgemm_buffer2, dgemm_block_size, 1.d0, dgemm_buffer1, np) - - wait(iunit) - dgemm_buffer3 = dgemm_buffer1 - -! !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(q) - do q=jj,jj+nqq-1 - write(iunit, ASYNCHRONOUS='YES', rec=q) dgemm_buffer3(:, q-jj+1) - enddo -! !$OMP END PARALLEL DO - - enddo -print *, 'ok' - deallocate(dgemm_buffer1, dgemm_buffer2) - wait(iunit) - deallocate(dgemm_buffer3) - - else - - call dgemm('N','T',np,nq,block_size,-1.d0, & + call dgemm('N','T',np,nq,block_size,-1.d0, & Ltmp_p, np, Ltmp_q, nq, 1.d0, Delta, np) - endif - - iblock = 0 + iblock = 0 endif @@ -469,71 +325,47 @@ print *, 'ok' enddo iblock = iblock+1 - - if (delta_on_disk) then - - read(iunit,rec=dj) Ltmp_p(1:np,iblock) - - else - - !$OMP PARALLEL DO PRIVATE(p) - do p=1,np - Ltmp_p(p,iblock) = Delta(p,dj) - enddo - !$OMP END PARALLEL DO - - endif + !$OMP PARALLEL DO PRIVATE(p) + do p=1,np + Ltmp_p(p,iblock) = Delta(p,dj) + enddo + !$OMP END PARALLEL DO if (.not.computed(dj)) then m = dj if (do_direct_integrals) then !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(dynamic,21) do k=1,np + Delta_col(k) = 0.d0 if (.not.ao_two_e_integral_zero( addr1(Lset(k)), addr1(Dset(m)),& addr2(Lset(k)), addr2(Dset(m)) ) ) then Delta_col(k) = & ao_two_e_integral(addr1(Lset(k)), addr2(Lset(k)),& addr1(Dset(m)), addr2(Dset(m))) - else - Delta_col(k) = 0.d0 endif enddo !$OMP END PARALLEL DO else + PROVIDE ao_integrals_map !$OMP PARALLEL DO PRIVATE(k) SCHEDULE(dynamic,21) do k=1,np + Delta_col(k) = 0.d0 if (.not.ao_two_e_integral_zero( addr1(Lset(k)), addr1(Dset(m)),& addr2(Lset(k)), addr2(Dset(m)) ) ) then Delta_col(k) = & get_ao_two_e_integral( addr1(Lset(k)), addr1(Dset(m)),& addr2(Lset(k)), addr2(Dset(m)), ao_integrals_map) - else - Delta_col(k) = 0.d0 endif enddo !$OMP END PARALLEL DO endif - if (delta_on_disk) then - - !$OMP PARALLEL DO PRIVATE(p) - do p=1,np - Ltmp_p(p,iblock) = Ltmp_p(p,iblock) + Delta_col(p) - enddo - !$OMP END PARALLEL DO - - write(iunit, ASYNCHRONOUS='YES', rec=dj) Ltmp_p(1:np,iblock) - - else - - !$OMP PARALLEL DO PRIVATE(p) - do p=1,np - Ltmp_p(p,iblock) = Ltmp_p(p,iblock) + Delta_col(p) - Delta(p,dj) = Ltmp_p(p,iblock) - enddo - !$OMP END PARALLEL DO - - endif + !$OMP PARALLEL DO PRIVATE(p) + do p=1,np + Ltmp_p(p,iblock) = Ltmp_p(p,iblock) + Delta_col(p) + Delta(p,dj) = Ltmp_p(p,iblock) + enddo + !$OMP END PARALLEL DO computed(dj) = .True. endif @@ -572,30 +404,26 @@ print *, 'ok' print '(I10, 4X, ES12.3)', rank, Qmax - deallocate(Delta_col) deallocate(Ltmp_p) deallocate(Ltmp_q) deallocate(computed) - if (delta_on_disk) then - close(iunit, status='delete') - else - deallocate(Delta) - endif + deallocate(Delta) ! i. N = rank ! j. - Dmax = D(Lset(1)) - do p=1,np - Dmax = max(Dmax, D(Lset(p))) - enddo + D_sorted(:) = -D(:) + call dsort_noidx_big(D_sorted,ndim8) + D_sorted(:) = -D_sorted(:) + + Dmax = D_sorted(1) dscale = 1.d0 dscale_tmp = dscale*dscale*Dmax np8=0_8 do p8=1,ndim8 - if ( dscale_tmp*D(p8) > tau2 ) then + if ( dscale_tmp*D(p8) >= tau2 ) then np8 = np8+1_8 Lset(np8) = p8 endif @@ -609,7 +437,6 @@ print *, 'ok' print *, '' allocate(cholesky_ao(ao_num,ao_num,rank), stat=ierr) -!print *, 'allocate : cholesky_ao(ao_num,ao_num,rank)', memory_of_double8(ao_num*ao_num*rank*1_8) if (ierr /= 0) then call print_memory_usage() @@ -621,7 +448,7 @@ print *, 'ok' !$OMP PARALLEL DO PRIVATE(k,j) do k=1,rank do j=1,ao_num - cholesky_ao(1:ao_num,j,k) = L((j-1)*ao_num+1:j*ao_num,k) + cholesky_ao(1:ao_num,j,k) = L((j-1_8)*ao_num+1_8:1_8*j*ao_num,k) enddo enddo !$OMP END PARALLEL DO @@ -646,5 +473,6 @@ print *, 'ok' call wall_time(wall1) print*,'Time to provide AO cholesky vectors = ',(wall1-wall0)/60.d0, ' min' + END_PROVIDER diff --git a/src/hartree_fock/fock_matrix_hf.irp.f b/src/hartree_fock/fock_matrix_hf.irp.f index 65b3d63c..6d917322 100644 --- a/src/hartree_fock/fock_matrix_hf.irp.f +++ b/src/hartree_fock/fock_matrix_hf.irp.f @@ -194,17 +194,28 @@ END_PROVIDER endif - double precision :: rss + double precision :: rss, mem0, mem double precision :: memory_of_double integer :: iblock - integer, parameter :: block_size = 32 + integer :: block_size + + call resident_memory(mem0) + + block_size = 1024 + + rss = memory_of_double(2.d0*ao_num*ao_num) + do + mem = mem0 + block_size*rss + if ( (block_size < 2).or.(mem < qp_max_mem) ) exit + block_size = block_size/2 + enddo + + call check_mem(block_size*rss, irp_here) - rss = memory_of_double(ao_num*ao_num) - call check_mem(2.d0*block_size*rss, irp_here) allocate(X2(ao_num,ao_num,block_size,2)) allocate(X3(ao_num,block_size,ao_num,2)) - + ! ao_two_e_integral_alpha_chol (l,s) -= cholesky_ao(l,m,j) * SCF_density_matrix_ao_beta (m,n) * cholesky_ao(n,s,j) do iblock=1,cholesky_ao_num,block_size From 4b578d9849df7fa548a0b8627f714df6248a8440 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 20 Jun 2024 13:43:46 +0200 Subject: [PATCH 087/159] mmap is now shared in cholesky --- src/ao_two_e_ints/cholesky.irp.f | 36 ++++++++++++++++++-------------- src/utils/fortran_mmap.c | 3 +++ 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index a680e7ee..063cc365 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -31,12 +31,11 @@ END_PROVIDER integer*8 :: ndim8 integer :: rank double precision :: tau, tau2 - double precision, pointer :: L(:,:), Delta(:,:) + double precision, pointer :: L(:,:) double precision :: s - double precision :: dscale, dscale_tmp - double precision, allocatable :: D(:), Ltmp_p(:,:), Ltmp_q(:,:), D_sorted(:), Delta_col(:) + double precision, allocatable :: D(:), Ltmp_p(:,:), Ltmp_q(:,:), D_sorted(:), Delta_col(:), Delta(:,:) integer, allocatable :: addr1(:), addr2(:) integer*8, allocatable :: Lset(:), Dset(:) logical, allocatable :: computed(:) @@ -102,7 +101,7 @@ END_PROVIDER rank = 0 allocate( D(ndim8), Lset(ndim8), Dset(ndim8), D_sorted(ndim8)) - allocate( addr1(ndim8), addr2(ndim8), Delta_col(ndim8) ) + allocate( addr1(ndim8), addr2(ndim8), Delta_col(ndim8), computed(ndim8) ) call resident_memory(mem0) @@ -149,11 +148,9 @@ END_PROVIDER Dmax = D_sorted(1) ! 2. - dscale = 1.d0 - dscale_tmp = dscale*dscale*Dmax np8=0_8 do p8=1,ndim8 - if ( dscale_tmp*D(p8) >= tau2 ) then + if ( Dmax*D(p8) >= tau2 ) then np8 = np8+1_8 Lset(np8) = p8 endif @@ -203,16 +200,23 @@ END_PROVIDER mem = mem0 & + np*memory_of_double(nq) & ! Delta(np,nq) - + (np+nq)*memory_of_double(block_size) & ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) - + memory_of_int(nq) ! computed(nq) + + (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size) if (mem > qp_max_mem*0.5d0) then - nq = nq/2 + Dmin = D_sorted(nq/2) + do ii=nq/2,np-1 + if (D_sorted(ii) < Dmin) then + nq = ii + exit + endif + enddo else exit endif enddo +!call print_memory_usage +!print *, 'np, nq, Predicted memory: ', np, nq, mem if (nq <= 0) then print *, nq @@ -247,8 +251,7 @@ END_PROVIDER endif - allocate(computed(nq)) - computed(:) = .False. + computed(1:nq) = .False. !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(k,p,q) @@ -406,7 +409,6 @@ END_PROVIDER deallocate(Ltmp_p) deallocate(Ltmp_q) - deallocate(computed) deallocate(Delta) ! i. @@ -419,11 +421,9 @@ END_PROVIDER Dmax = D_sorted(1) - dscale = 1.d0 - dscale_tmp = dscale*dscale*Dmax np8=0_8 do p8=1,ndim8 - if ( dscale_tmp*D(p8) >= tau2 ) then + if ( Dmax*D(p8) >= tau2 ) then np8 = np8+1_8 Lset(np8) = p8 endif @@ -436,6 +436,10 @@ END_PROVIDER print *, '============ =============' print *, '' + deallocate( D, Lset, Dset, D_sorted ) + deallocate( addr1, addr2, Delta_col, computed ) + + allocate(cholesky_ao(ao_num,ao_num,rank), stat=ierr) if (ierr /= 0) then diff --git a/src/utils/fortran_mmap.c b/src/utils/fortran_mmap.c index 2dbe42b8..0306f64f 100644 --- a/src/utils/fortran_mmap.c +++ b/src/utils/fortran_mmap.c @@ -49,10 +49,13 @@ void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only, } if (single_node == 1) { + map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); +/* map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_POPULATE | MAP_NONBLOCK | MAP_NORESERVE, fd, 0); if (map == MAP_FAILED) { map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); } +*/ } else { map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); } From b6b169c1cd5ad510364cf5b33800cad8a6b5272c Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 20 Jun 2024 17:27:21 +0200 Subject: [PATCH 088/159] Updated documentation --- src/ao_two_e_ints/cholesky.irp.f | 3 +++ src/utils/linear_algebra.irp.f | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index 41cdb80d..cdd64a8c 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -25,7 +25,10 @@ END_PROVIDER ! Last dimension of cholesky_ao is cholesky_ao_num ! ! https://mogp-emulator.readthedocs.io/en/latest/methods/proc/ProcPivotedCholesky.html + ! ! https://doi.org/10.1016/j.apnum.2011.10.001 : Page 4, Algorithm 1 + ! + ! https://www.diva-portal.org/smash/get/diva2:396223/FULLTEXT01.pdf END_DOC integer*8 :: ndim8 diff --git a/src/utils/linear_algebra.irp.f b/src/utils/linear_algebra.irp.f index 20386b30..4e7ca87d 100644 --- a/src/utils/linear_algebra.irp.f +++ b/src/utils/linear_algebra.irp.f @@ -1856,7 +1856,7 @@ subroutine pivoted_cholesky( A, rank, tol, ndim, U) ! ! matrix A is destroyed inside this subroutine ! Cholesky vectors are stored in U -! dimension of U: U(1:rank, 1:n) +! dimension of U: U(1:n, 1:rank) ! U is allocated inside this subroutine ! rank is the number of Cholesky vectors depending on tol ! From 7e45c517d981adcd77883a39a361be38b470ff20 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 25 Jun 2024 18:32:44 +0200 Subject: [PATCH 089/159] Introducing gpu_x86 --- src/gpu_x86/NEED | 1 + src/gpu_x86/README.rst | 5 + src/gpu_x86/gpu.c | 506 +++++++++++++++++++++++++++++++++++++ src/gpu_x86/gpu.h | 41 +++ src/gpu_x86/gpu_module.F90 | 141 +++++++++++ 5 files changed, 694 insertions(+) create mode 100644 src/gpu_x86/NEED create mode 100644 src/gpu_x86/README.rst create mode 100644 src/gpu_x86/gpu.c create mode 100644 src/gpu_x86/gpu.h create mode 100644 src/gpu_x86/gpu_module.F90 diff --git a/src/gpu_x86/NEED b/src/gpu_x86/NEED new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/gpu_x86/NEED @@ -0,0 +1 @@ + diff --git a/src/gpu_x86/README.rst b/src/gpu_x86/README.rst new file mode 100644 index 00000000..f530bf29 --- /dev/null +++ b/src/gpu_x86/README.rst @@ -0,0 +1,5 @@ +======= +gpu_x86 +======= + +x86 implementation of GPU routines. For use when GPUs are not available. diff --git a/src/gpu_x86/gpu.c b/src/gpu_x86/gpu.c new file mode 100644 index 00000000..71505dbe --- /dev/null +++ b/src/gpu_x86/gpu.c @@ -0,0 +1,506 @@ +#include +#include +#include +#include +#include + + +/* Generic functions */ + +int gpu_ndevices() { + return 1; +} + +void gpu_set_device(int32_t i) { + return; +} + + +/* Allocation functions */ + +void gpu_allocate(void** ptr, const int64_t n) { + *ptr = malloc((size_t) n); + if (*ptr == NULL) { + perror("Allocation failed"); + } +} + +void gpu_free(void** ptr) { + free(*ptr); + *ptr = NULL; +} + + +/* Memory transfer functions */ + +void gpu_upload(const void* cpu_ptr, void* gpu_ptr, const int64_t n) { + memcpy(gpu_ptr, cpu_ptr, n); +} + +void gpu_download(const void* gpu_ptr, void* cpu_ptr, const int64_t n) { + memcpy(cpu_ptr, gpu_ptr, n); +} + +void gpu_copy(const void* gpu_ptr_src, void* gpu_ptr_dest, const int64_t n) { + memcpy(gpu_ptr_dest, gpu_ptr_src, n); +} + + +/* Streams */ + +void gpu_stream_create(void** ptr) { + *ptr = (void*) 2; +} + +void gpu_stream_destroy(void** ptr) { + *ptr = NULL; +} + +void gpu_set_stream(void* handle, void* stream) { + return; +} + +void gpu_synchronize() { + return; +} + + +/* BLAS functions */ + +void gpu_blas_create(void** handle) { + *handle = (void*) 1; +} + + +void gpu_blas_destroy(void** handle) { + *handle = NULL; +} + + +double ddot_(const int32_t* n, const double* x, const int32_t* incx, const double* y, const int32_t* incy); + +void gpu_ddot(const void* handle, const int64_t n, const double* x, const int64_t incx, const double* y, const int64_t incy, double* result) { + assert (handle != NULL); + + /* Convert to int32_t */ + int32_t n_, incx_, incy_; + + n_ = (int32_t) n; + incx_ = (int32_t) incx; + incy_ = (int32_t) incy; + + /* Check for integer overflows */ + assert ( (int64_t) n_ == n ); + assert ( (int64_t) incx_ == incx); + assert ( (int64_t) incy_ == incy); + + *result = ddot_(&n_, x, &incx_, y, &incy_); +} + + +float sdot_(const int32_t* n, const float* x, const int32_t* incx, const float* y, const int32_t* incy); + +void gpu_sdot(const void* handle, const int64_t n, const float* x, const int64_t incx, const float* y, const int64_t incy, float* result) { + assert (handle != NULL); + + /* Convert to int32_t */ + int32_t n_, incx_, incy_; + + n_ = (int32_t) n; + incx_ = (int32_t) incx; + incy_ = (int32_t) incy; + + /* Check for integer overflows */ + assert ( (int64_t) n_ == n ); + assert ( (int64_t) incx_ == incx); + assert ( (int64_t) incy_ == incy); + + *result = sdot_(&n_, x, &incx_, y, &incy_); +} + + +void dgemv_(const char* transa, const int32_t* m, const int32_t* n, const double* alpha, + const double* a, const int32_t* lda, const double* x, const int32_t* incx, const double* beta, double* y, const int32_t* incy); + +void gpu_dgemv(const void* handle, const char transa, const int64_t m, const int64_t n, const double alpha, + const double* a, const int64_t lda, const double* x, const int64_t incx, const double beta, double* y, const int64_t incy) { + + assert (handle != NULL); + + /* Convert to int32_t */ + int32_t m_, n_, lda_, incx_, incy_; + + m_ = (int32_t) m; + n_ = (int32_t) n; + lda_ = (int32_t) lda; + incx_ = (int32_t) incx; + incy_ = (int32_t) incy; + + /* Check for integer overflows */ + assert ( (int64_t) m_ == m ); + assert ( (int64_t) n_ == n ); + assert ( (int64_t) lda_ == lda ); + assert ( (int64_t) incx_ == incx); + assert ( (int64_t) incy_ == incy); + + dgemv_(&transa, &m_, &n_, &alpha, a, &lda_, x, &incx_, &beta, y, &incy_); +} + + +void sgemv_(const char* transa, const int32_t* m, const int32_t* n, const float* alpha, + const float* a, const int32_t* lda, const float* x, const int32_t* incx, const float* beta, float* y, const int32_t* incy); + +void gpu_sgemv(const void* handle, const char transa, const int64_t m, const int64_t n, const float alpha, + const float* a, const int64_t lda, const float* x, const int64_t incx, const float beta, float* y, const int64_t incy) { + + assert (handle != NULL); + + /* Convert to int32_t */ + int32_t m_, n_, lda_, incx_, incy_; + + m_ = (int32_t) m; + n_ = (int32_t) n; + lda_ = (int32_t) lda; + incx_ = (int32_t) incx; + incy_ = (int32_t) incy; + + /* Check for integer overflows */ + assert ( (int64_t) m_ == m ); + assert ( (int64_t) n_ == n ); + assert ( (int64_t) lda_ == lda ); + assert ( (int64_t) incx_ == incx); + assert ( (int64_t) incy_ == incy); + + sgemv_(&transa, &m_, &n_, &alpha, a, &lda_, x, &incx_, &beta, y, &incy_); +} + + +void dgemm_(const char* transa, const char* transb, const int32_t* m, const int32_t* n, const int32_t* k, const double* alpha, + const double* a, const int32_t* lda, const double* b, const int32_t* ldb, const double* beta, double* c, const int32_t* ldc); + +void gpu_dgemm(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, + const double* a, const int64_t lda, const double* b, const int64_t ldb, const double beta, double* c, const int64_t ldc) { + + assert (handle != NULL); + + /* Convert to int32_t */ + int32_t m_, n_, k_, lda_, ldb_, ldc_; + + m_ = (int32_t) m; + n_ = (int32_t) n; + k_ = (int32_t) k; + lda_ = (int32_t) lda; + ldb_ = (int32_t) ldb; + ldc_ = (int32_t) ldc; + + /* Check for integer overflows */ + assert ( (int64_t) m_ == m ); + assert ( (int64_t) n_ == n ); + assert ( (int64_t) k_ == k ); + assert ( (int64_t) lda_ == lda); + assert ( (int64_t) ldb_ == ldb); + assert ( (int64_t) ldc_ == ldc); + + dgemm_(&transa, &transb, &m_, &n_, &k_, &alpha, a, &lda_, b, &ldb_, &beta, c, &ldc_); +} + + + +void sgemm_(const char* transa, const char* transb, const int32_t* m, const int32_t* n, const int32_t* k, const float* alpha, + const float* a, const int32_t* lda, const float* b, const int32_t* ldb, const float* beta, float* c, const int32_t* ldc); + +void gpu_sgemm(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, + const float* a, const int64_t lda, const float* b, const int64_t ldb, const float beta, float* c, const int64_t ldc) { + + assert (handle != NULL); + + /* Convert to int32_t */ + int32_t m_, n_, k_, lda_, ldb_, ldc_; + + m_ = (int32_t) m; + n_ = (int32_t) n; + k_ = (int32_t) k; + lda_ = (int32_t) lda; + ldb_ = (int32_t) ldb; + ldc_ = (int32_t) ldc; + + /* Check for integer overflows */ + assert ( (int64_t) m_ == m ); + assert ( (int64_t) n_ == n ); + assert ( (int64_t) k_ == k ); + assert ( (int64_t) lda_ == lda); + assert ( (int64_t) ldb_ == ldb); + assert ( (int64_t) ldc_ == ldc); + + sgemm_(&transa, &transb, &m_, &n_, &k_, &alpha, a, &lda_, b, &ldb_, &beta, c, &ldc_); +} + + +void gpu_dgeam(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, + const double* a, const int64_t lda, const double beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { + if (handle == NULL) { + perror("NULL handle"); + exit(-1); + } + + if ( (transa == 'N' && transb == 'N') || + (transa == 'n' && transb == 'N') || + (transa == 'N' && transb == 'n') || + (transa == 'n' && transb == 'n') ) { + + if (alpha == 0.) { + + for (int64_t j=0 ; j + +int gpu_ndevices(); +void gpu_set_device(int32_t i); + +void gpu_allocate(void** ptr, const int64_t n); +void gpu_free(void** ptr); + +void gpu_upload(const void* cpu_ptr, void* gpu_ptr, const int64_t n); +void gpu_download(const void* gpu_ptr, void* cpu_ptr, const int64_t n); +void gpu_copy(const void* gpu_ptr_src, void* gpu_ptr_dest, const int64_t n); + +void gpu_stream_create(void** ptr); +void gpu_stream_destroy(void** ptr); +void gpu_set_stream(void* handle, void* stream); +void gpu_synchronize(); + +void gpu_blas_create(void** handle); +void gpu_blas_destroy(void** handle); + +void gpu_ddot(const void* handle, const int64_t n, const double* x, const int64_t incx, const double* y, const int64_t incy, double* result); + +void gpu_sdot(const void* handle, const int64_t n, const float* x, const int64_t incx, const float* y, const int64_t incy, float* result); + +void gpu_dgemv(const void* handle, const char transa, const int64_t m, const int64_t n, const double alpha, + const double* a, const int64_t lda, const double* x, const int64_t incx, const double beta, double* y, const int64_t incy); + +void gpu_sgemv(const void* handle, const char transa, const int64_t m, const int64_t n, const float alpha, + const float* a, const int64_t lda, const float* x, const int64_t incx, const float beta, float* y, const int64_t incy); + +void gpu_dgemm(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, + const double* a, const int64_t lda, const double* b, const int64_t ldb, const double beta, double* c, const int64_t ldc); + +void gpu_sgemm(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, + const float* a, const int64_t lda, const float* b, const int64_t ldb, const float beta, float* c, const int64_t ldc); + +void gpu_dgeam(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, + const double* a, const int64_t lda, const double beta, const double* b, const int64_t ldb, double* c, const int64_t ldc); + +void gpu_sgeam(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const float alpha, + const float* a, const int64_t lda, const float beta, const float* b, const int64_t ldb, float* c, const int64_t ldc); diff --git a/src/gpu_x86/gpu_module.F90 b/src/gpu_x86/gpu_module.F90 new file mode 100644 index 00000000..86ba3926 --- /dev/null +++ b/src/gpu_x86/gpu_module.F90 @@ -0,0 +1,141 @@ +module gpu + use, intrinsic :: iso_c_binding, only : c_int32_t, c_int64_t, c_double, c_size_t, c_char + implicit none + + interface + integer function gpu_ndevices() bind(C) + end function + + subroutine gpu_set_device(id) bind(C) + import + integer(c_int32_t), value :: id + end subroutine + + subroutine gpu_allocate_c(ptr, n) bind(C, name='gpu_allocate') + import + type(c_ptr) :: ptr + integer(c_int64_t), value :: n + end subroutine + + subroutine gpu_free_c(ptr) bind(C, name='gpu_free') + import + type(c_ptr) :: ptr + end subroutine + + subroutine gpu_upload_c(cpu_ptr, gpu_ptr, n) bind(C, name='gpu_upload') + import + type(c_ptr), value :: cpu_ptr + type(c_ptr), value :: gpu_ptr + integer(c_int64_t), value :: n + end subroutine + + subroutine gpu_download_c(gpu_ptr, cpu_ptr, n) bind(C, name='gpu_download') + import + type(c_ptr), value :: gpu_ptr + type(c_ptr), value :: cpu_ptr + integer(c_int64_t), value :: n + end subroutine + + subroutine gpu_copy_c(gpu_ptr_src, gpu_ptr_dest, n) bind(C, name='gpu_copy') + import + type(c_ptr), value :: gpu_ptr_src + type(c_ptr), value :: gpu_ptr_dest + integer(c_int64_t), value :: n + end subroutine + + subroutine gpu_stream_create(stream) bind(C) + import + type(c_ptr) :: stream + end subroutine + + subroutine gpu_stream_destroy(stream) bind(C) + import + type(c_ptr) :: stream + end subroutine + + subroutine gpu_set_stream(handle, stream) bind(C) + import + type(c_ptr) :: handle, stream + end subroutine + + subroutine gpu_synchronize() + end subroutine + + subroutine gpu_blas_create(handle) bind(C) + import + type(c_ptr) :: handle + end subroutine + + subroutine gpu_blas_destroy(handle) bind(C) + import + type(c_ptr) :: handle + end subroutine + + subroutine gpu_ddot(handle, n, dx, incx, dy, incy, res) bind(C) + import + type(c_ptr), intent(in) :: handle + integer(c_int64_t), value :: n, incx, incy + real(c_double), intent(in) :: dx(*), dy(*) + real(c_double), intent(out) :: res + end subroutine + + subroutine gpu_sdot(handle, n, dx, incx, dy, incy, res) bind(C) + import + type(c_ptr), intent(in) :: handle + integer(c_int64_t), value :: n, incx, incy + real(c_float), intent(in) :: dx(*), dy(*) + real(c_float), intent(out) :: res + end subroutine + + end interface + +end module + +subroutine gpu_allocate_double(ptr, s) + use gpu + implicit none + double precision, pointer, intent(inout) :: ptr + integer*8, intent(in) :: s(*) + type(c_ptr) :: cptr + + call gpu_allocate_c(cptr, sum(s)*8_8) + call c_f_pointer(cptr, ptr, s) +end subroutine + +subroutine gpu_free_double(ptr) + use gpu + implicit none + double precision, pointer, intent(inout) :: ptr + type(c_ptr) :: cptr + cptr = cloc(ptr) + call gpu_free(cptr) + NULLIFY(ptr) +end subroutine + +subroutine gpu_upload_double(cpu_ptr, gpu_ptr, n) + use gpu + implicit none + double precision, intent(in) :: cpu_ptr(*) + double precision, intent(out) :: gpu_ptr(*) + integer(c_int64_t), intent(in) :: n + call gpu_upload_c(cpu_ptr, gpu_ptr, 8_8*n) +end subroutine + +subroutine gpu_download_double(gpu_ptr, cpu_ptr, n) + use gpu + implicit none + double precision, intent(in) :: gpu_ptr(*) + double precision, intent(out) :: cpu_ptr(*) + integer(c_int64_t), intent(in) :: n + call gpu_download_c(gpu_ptr, cpu_ptr, 8_8*n) +end subroutine + +subroutine gpu_copy_double(gpu_ptr_src, gpu_ptr_dest, n) + use gpu + implicit none + double precision, intent(in) :: gpu_ptr_src(*) + double precision, intent(out) :: gpu_ptr_dest(*) + integer(c_int64_t), intent(in) :: n + call gpu_copy_c(gpu_ptr_src, gpu_ptr_dest, 8_8*n) +end subroutine + From 646607ada4a0a58c9cd5e0593c04bce7bc9bd02e Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Wed, 26 Jun 2024 11:15:30 +0200 Subject: [PATCH 090/159] 1st commit --- plugins/local/tc_int/NEED | 5 + plugins/local/tc_int/README.rst | 4 + plugins/local/tc_int/int2_grad1_u12.irp.f | 134 ++++++++++++++++++++++ plugins/local/tc_int/jast_grad_2e.irp.f | 102 ++++++++++++++++ plugins/local/tc_int/jast_grad_full.irp.f | 51 ++++++++ plugins/local/tc_int/jast_utils_bh.irp.f | 35 ++++++ plugins/local/tc_int/write_tc_int.irp.f | 58 ++++++++++ 7 files changed, 389 insertions(+) create mode 100644 plugins/local/tc_int/NEED create mode 100644 plugins/local/tc_int/README.rst create mode 100644 plugins/local/tc_int/int2_grad1_u12.irp.f create mode 100644 plugins/local/tc_int/jast_grad_2e.irp.f create mode 100644 plugins/local/tc_int/jast_grad_full.irp.f create mode 100644 plugins/local/tc_int/jast_utils_bh.irp.f create mode 100644 plugins/local/tc_int/write_tc_int.irp.f diff --git a/plugins/local/tc_int/NEED b/plugins/local/tc_int/NEED new file mode 100644 index 00000000..8a4caf5b --- /dev/null +++ b/plugins/local/tc_int/NEED @@ -0,0 +1,5 @@ +tc_keywords +jastrow +qmckl +becke_numerical_grid +dft_utils_in_r diff --git a/plugins/local/tc_int/README.rst b/plugins/local/tc_int/README.rst new file mode 100644 index 00000000..bc9e8483 --- /dev/null +++ b/plugins/local/tc_int/README.rst @@ -0,0 +1,4 @@ +====== +tc_int +====== + diff --git a/plugins/local/tc_int/int2_grad1_u12.irp.f b/plugins/local/tc_int/int2_grad1_u12.irp.f new file mode 100644 index 00000000..0cf0d775 --- /dev/null +++ b/plugins/local/tc_int/int2_grad1_u12.irp.f @@ -0,0 +1,134 @@ + +! --- + +subroutine provide_int2_grad1_u12_ao() + + implicit none + integer :: ipoint, i, j, m, jpoint + integer :: n_blocks, n_rest, n_pass + integer :: i_blocks, i_rest, i_pass, ii + double precision :: time0, time1 + double precision :: mem, n_double + double precision, allocatable :: tmp(:,:,:) + double precision, allocatable :: tmp_grad1_u12(:,:,:) + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + + PROVIDE final_weight_at_r_vector_extra aos_in_r_array_extra + + print*, ' start provide_int2_grad1_u12_ao ...' + call wall_time(time0) + + + ! int2_grad1_u12_ao(i,j,ipoint,1) = \int dr2 [\grad1 u(r1,r2)]_x1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,2) = \int dr2 [\grad1 u(r1,r2)]_y1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,3) = \int dr2 [\grad1 u(r1,r2)]_z1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,4) = -(1/2) \int dr2 [\grad1 u(r1,r2)]^2 \chi_i(r2) \chi_j(r2) + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + + + + call total_memory(mem) + mem = max(1.d0, qp_max_mem - mem) + n_double = mem * 1.d8 + n_blocks = int(min(n_double / (n_points_extra_final_grid * 4.d0), 1.d0*n_points_final_grid)) + n_rest = int(mod(n_points_final_grid, n_blocks)) + n_pass = int((n_points_final_grid - n_rest) / n_blocks) + + call write_int(6, n_pass, 'Number of passes') + call write_int(6, n_blocks, 'Size of the blocks') + call write_int(6, n_rest, 'Size of the last block') + + + allocate(tmp(n_points_extra_final_grid,ao_num,ao_num)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (tmp, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO SCHEDULE (static) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + tmp(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + + allocate(tmp_grad1_u12(n_points_extra_final_grid,n_blocks,4)) + + do i_pass = 1, n_pass + ii = (i_pass-1)*n_blocks + 1 + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_blocks, ipoint) & + !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) + !$OMP DO + do i_blocks = 1, n_blocks + ipoint = ii - 1 + i_blocks ! r1 + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_blocks,1), tmp_grad1_u12(1,i_blocks,2), tmp_grad1_u12(1,i_blocks,3), tmp_grad1_u12(1,i_blocks,4)) + enddo + !$OMP END DO + !$OMP END PARALLEL + + do m = 1, 4 + call dgemm( "T", "N", ao_num*ao_num, n_blocks, n_points_extra_final_grid, 1.d0 & + , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) + enddo + enddo + + deallocate(tmp_grad1_u12) + + + if(n_rest .gt. 0) then + + allocate(tmp_grad1_u12(n_points_extra_final_grid,n_rest,4)) + + ii = n_pass*n_blocks + 1 + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_rest, ipoint) & + !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) + !$OMP DO + do i_rest = 1, n_rest + ipoint = ii - 1 + i_rest ! r1 + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_rest,1), tmp_grad1_u12(1,i_rest,2), tmp_grad1_u12(1,i_rest,3), tmp_grad1_u12(1,i_rest,4)) + enddo + !$OMP END DO + !$OMP END PARALLEL + + do m = 1, 4 + call dgemm( "T", "N", ao_num*ao_num, n_rest, n_points_extra_final_grid, 1.d0 & + , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) + enddo + + deallocate(tmp_grad1_u12) + endif + + deallocate(tmp) + + + ! --- + + print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") + call ezfio_set_work_empty(.False.) + write(11) int2_grad1_u12_ao(:,:,:,1:3) + close(11) + + deallocate(int2_grad1_u12_ao) + + call wall_time(time1) + print*, ' wall time for provide_int2_grad1_u12_ao (min) = ', (time1-time0) / 60.d0 + call print_memory_usage() + +end + +! --- + + diff --git a/plugins/local/tc_int/jast_grad_2e.irp.f b/plugins/local/tc_int/jast_grad_2e.irp.f new file mode 100644 index 00000000..b18b9d62 --- /dev/null +++ b/plugins/local/tc_int/jast_grad_2e.irp.f @@ -0,0 +1,102 @@ + +! --- + +subroutine get_grad1_u12_r1_2e(r1, n_grid2, gradx, grady, gradz) + + BEGIN_DOC + ! + ! d/dx1 j_2e(1,2) + ! d/dy1 j_2e(1,2) + ! d/dz1 j_2e(1,2) + ! + END_DOC + + include 'constants.include.F' + + implicit none + integer , intent(in) :: n_grid2 + double precision, intent(in) :: r1(3) + double precision, intent(out) :: gradx(n_grid2) + double precision, intent(out) :: grady(n_grid2) + double precision, intent(out) :: gradz(n_grid2) + + integer :: jpoint + integer :: i_nucl, p, mpA, npA, opA + integer :: powmax1, powmax, powmax2 + double precision :: r2(3) + double precision :: tmp, tmp1, tmp2 + double precision :: rn(3), f1A, grad1_f1A(3), f2A, grad2_f2A(3), g12, grad1_g12(3) + double precision, allocatable :: f1A_power(:), f2A_power(:), double_p(:), g12_power(:) + + + powmax1 = max(maxval(jBH_m), maxval(jBH_n)) + powmax2 = maxval(jBH_o) + powmax = max(powmax1, powmax2) + + allocate(f1A_power(-1:powmax), f2A_power(-1:powmax), g12_power(-1:powmax), double_p(0:powmax)) + + do p = 0, powmax + double_p(p) = dble(p) + enddo + + f1A_power(-1) = 0.d0 + f2A_power(-1) = 0.d0 + g12_power(-1) = 0.d0 + + f1A_power(0) = 1.d0 + f2A_power(0) = 1.d0 + g12_power(0) = 1.d0 + + do jpoint = 1, n_points_extra_final_grid ! r2 + + r2(1) = final_grid_points_extra(1,jpoint) + r2(2) = final_grid_points_extra(2,jpoint) + r2(3) = final_grid_points_extra(3,jpoint) + + gradx(jpoint) = 0.d0 + grady(jpoint) = 0.d0 + gradz(jpoint) = 0.d0 + do i_nucl = 1, nucl_num + + rn(1) = nucl_coord(i_nucl,1) + rn(2) = nucl_coord(i_nucl,2) + rn(3) = nucl_coord(i_nucl,3) + + call jBH_elem_fct_grad(jBH_en(i_nucl), r1, rn, f1A, grad1_f1A) + call jBH_elem_fct_grad(jBH_en(i_nucl), r2, rn, f2A, grad2_f2A) + call jBH_elem_fct_grad(jBH_ee(i_nucl), r1, r2, g12, grad1_g12) + + ! Compute powers of f1A and f2A + do p = 1, powmax1 + f1A_power(p) = f1A_power(p-1) * f1A + f2A_power(p) = f2A_power(p-1) * f2A + enddo + do p = 1, powmax2 + g12_power(p) = g12_power(p-1) * g12 + enddo + + do p = 1, jBH_size + mpA = jBH_m(p,i_nucl) + npA = jBH_n(p,i_nucl) + opA = jBH_o(p,i_nucl) + tmp = jBH_c(p,i_nucl) + if(mpA .eq. npA) then + tmp = tmp * 0.5d0 + endif + + tmp1 = double_p(mpA) * f1A_power(mpA-1) * f2A_power(npA) + double_p(npA) * f1A_power(npA-1) * f2A_power(mpA) + tmp1 = tmp1 * g12_power(opA) * tmp + tmp2 = double_p(opA) * g12_power(opA-1) * (f1A_power(mpA) * f2A_power(npA) + f1A_power(npA) * f2A_power(mpA)) * tmp + + gradx(jpoint) = gradx(jpoint) + tmp1 * grad1_f1A(1) + tmp2 * grad1_g12(1) + grady(jpoint) = grady(jpoint) + tmp1 * grad1_f1A(2) + tmp2 * grad1_g12(2) + gradz(jpoint) = gradz(jpoint) + tmp1 * grad1_f1A(3) + tmp2 * grad1_g12(3) + enddo ! p + enddo ! i_nucl + enddo ! jpoint + + return +end + +! --- + diff --git a/plugins/local/tc_int/jast_grad_full.irp.f b/plugins/local/tc_int/jast_grad_full.irp.f new file mode 100644 index 00000000..f63ee3e4 --- /dev/null +++ b/plugins/local/tc_int/jast_grad_full.irp.f @@ -0,0 +1,51 @@ + +! --- + +subroutine get_grad1_u12_for_tc(ipoint, n_grid2, resx, resy, resz, res) + + BEGIN_DOC + ! + ! resx(ipoint) = [grad1 u(r1,r2)]_x1 + ! resy(ipoint) = [grad1 u(r1,r2)]_y1 + ! resz(ipoint) = [grad1 u(r1,r2)]_z1 + ! res (ipoint) = -0.5 [grad1 u(r1,r2)]^2 + ! + ! We use: + ! grid for r1 + ! extra_grid for r2 + ! + END_DOC + + implicit none + integer, intent(in) :: ipoint, n_grid2 + double precision, intent(out) :: resx(n_grid2), resy(n_grid2), resz(n_grid2), res(n_grid2) + + integer :: jpoint + double precision :: env_r1, tmp + double precision :: grad1_env(3), r1(3) + double precision, allocatable :: env_r2(:) + double precision, allocatable :: u2b_r12(:), gradx1_u2b(:), grady1_u2b(:), gradz1_u2b(:) + double precision, allocatable :: u2b_mu(:), gradx1_mu(:), grady1_mu(:), gradz1_mu(:) + double precision, allocatable :: u2b_nu(:), gradx1_nu(:), grady1_nu(:), gradz1_nu(:) + double precision, external :: env_nucl + + r1(1) = final_grid_points(1,ipoint) + r1(2) = final_grid_points(2,ipoint) + r1(3) = final_grid_points(3,ipoint) + + + ! j2e_type .eq. "Boys_Handy" + ! env_type .eq. "None" + ! j1e_type .eq "None" + + call get_grad1_u12_r1_2e(r1, n_grid2, resx(1), resy(1), resz(1)) + + do jpoint = 1, n_points_extra_final_grid + res(jpoint) = -0.5d0 * (resx(jpoint) * resx(jpoint) + resy(jpoint) * resy(jpoint) + resz(jpoint) * resz(jpoint)) + enddo + + return +end + +! --- + diff --git a/plugins/local/tc_int/jast_utils_bh.irp.f b/plugins/local/tc_int/jast_utils_bh.irp.f new file mode 100644 index 00000000..750ce90b --- /dev/null +++ b/plugins/local/tc_int/jast_utils_bh.irp.f @@ -0,0 +1,35 @@ + +! --- + +subroutine jBH_elem_fct_grad(alpha, r1, r2, fct, grad1_fct) + + implicit none + double precision, intent(in) :: alpha, r1(3), r2(3) + double precision, intent(out) :: fct, grad1_fct(3) + double precision :: dist, tmp1, tmp2 + + dist = dsqrt( (r1(1) - r2(1)) * (r1(1) - r2(1)) & + + (r1(2) - r2(2)) * (r1(2) - r2(2)) & + + (r1(3) - r2(3)) * (r1(3) - r2(3)) ) + + + if(dist .ge. 1d-10) then + tmp1 = 1.d0 / (1.d0 + alpha * dist) + + fct = alpha * dist * tmp1 + tmp2 = alpha * tmp1 * tmp1 / dist + grad1_fct(1) = tmp2 * (r1(1) - r2(1)) + grad1_fct(2) = tmp2 * (r1(2) - r2(2)) + grad1_fct(3) = tmp2 * (r1(3) - r2(3)) + else + grad1_fct(1) = 0.d0 + grad1_fct(2) = 0.d0 + grad1_fct(3) = 0.d0 + fct = 0.d0 + endif + + return +end + +! --- + diff --git a/plugins/local/tc_int/write_tc_int.irp.f b/plugins/local/tc_int/write_tc_int.irp.f new file mode 100644 index 00000000..ebdce6f2 --- /dev/null +++ b/plugins/local/tc_int/write_tc_int.irp.f @@ -0,0 +1,58 @@ +! --- + +program write_tc_int + + implicit none + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + if(tc_integ_type .eq. "numeric") then + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + endif + + call main() + +end + +! --- + +subroutine main() + + implicit none + + PROVIDE io_tc_integ + + print*, 'io_tc_integ = ', io_tc_integ + + if(io_tc_integ .ne. "Write") then + print*, 'io_tc_integ != Write' + print*, io_tc_integ + stop + endif + + call provide_int2_grad1_u12_ao() + + call ezfio_set_tc_keywords_io_tc_integ('Read') + +end + +! --- + From a2f4bc218d207d4c588b3d0d1c1d4c5f7448b334 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 26 Jun 2024 13:44:45 +0200 Subject: [PATCH 091/159] GPU acceleration selection in configure --- configure | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/configure b/configure index 41c0123d..014275eb 100755 --- a/configure +++ b/configure @@ -40,14 +40,16 @@ Usage: $(basename $0) -c $(basename $0) -h $(basename $0) -i + $(basename $0) -g [nvidia|none] Options: - -c Define a COMPILATION configuration file, - in "${QP_ROOT}/config/". - -h Print the HELP message - -i INSTALL . Use at your OWN RISK: - no support will be provided for the installation of - dependencies. + -c Define a COMPILATION configuration file, + in "${QP_ROOT}/config/". + -h Print the HELP message + -i INSTALL . Use at your OWN RISK: + no support will be provided for the installation of + dependencies. + -g [nvidia|none] Choose GPU acceleration (experimental) Example: ./$(basename $0) -c config/gfortran.cfg @@ -83,7 +85,7 @@ function execute () { PACKAGES="" -while getopts "d:c:i:h" c ; do +while getopts "d:c:i:g:h" c ; do case "$c" in c) case "$OPTARG" in @@ -100,6 +102,9 @@ while getopts "d:c:i:h" c ; do "") help ; break;; *) PACKAGES="${PACKAGE} $OPTARG" esac;; + g) + GPU=$OPTARG; + break;; h) help exit 0;; @@ -109,6 +114,23 @@ while getopts "d:c:i:h" c ; do esac done +# Handle GPU acceleration +rm -f ${QP_ROOT}/src/gpu +case "$GPU" in + amd) # Nvidia + echo "Activating AMD GPU acceleration" + ln -s ${QP_ROOT}/src/gpu_amd ${QP_ROOT}/src/gpu + ;; + nvidia) # Nvidia + echo "Activating Nvidia GPU acceleration" + ln -s ${QP_ROOT}/src/gpu_nvidia ${QP_ROOT}/src/gpu + ;; + *) # No Acceleration + echo "Disabling GPU acceleration" + ln -s ${QP_ROOT}/src/gpu_x86 ${QP_ROOT}/src/gpu + ;; +esac + # Trim leading and trailing spaces PACKAGES=$(echo $PACKAGES | xargs) From 1d0bac25d081d76177c6efeba88117f397c5de3c Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Wed, 26 Jun 2024 15:31:44 +0200 Subject: [PATCH 092/159] v0 --- plugins/local/tc_int/compute_tc_int.irp.f | 295 ++++++++++++++++++++++ plugins/local/tc_int/int2_grad1_u12.irp.f | 134 ---------- plugins/local/tc_int/jast_grad_2e.irp.f | 102 -------- plugins/local/tc_int/jast_grad_full.irp.f | 113 +++++++-- plugins/local/tc_int/write_tc_int.irp.f | 18 +- 5 files changed, 401 insertions(+), 261 deletions(-) create mode 100644 plugins/local/tc_int/compute_tc_int.irp.f delete mode 100644 plugins/local/tc_int/int2_grad1_u12.irp.f delete mode 100644 plugins/local/tc_int/jast_grad_2e.irp.f diff --git a/plugins/local/tc_int/compute_tc_int.irp.f b/plugins/local/tc_int/compute_tc_int.irp.f new file mode 100644 index 00000000..02f21570 --- /dev/null +++ b/plugins/local/tc_int/compute_tc_int.irp.f @@ -0,0 +1,295 @@ + +! --- + +subroutine provide_int2_grad1_u12_ao() + + BEGIN_DOC + ! + ! int2_grad1_u12_ao(i,j,ipoint,1) = \int dr2 [\grad1 u(r1,r2)]_x1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,2) = \int dr2 [\grad1 u(r1,r2)]_y1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,3) = \int dr2 [\grad1 u(r1,r2)]_z1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,4) = \int dr2 [-(1/2) [\grad1 u(r1,r2)]^2] \chi_i(r2) \chi_j(r2) + ! + ! + ! tc_int_2e_ao(k,i,l,j) = (ki|V^TC(r_12)|lj) + ! = where V^TC(r_12) is the total TC operator + ! = tc_grad_and_lapl_ao(k,i,l,j) + tc_grad_square_ao(k,i,l,j) + ao_two_e_coul(k,i,l,j) + ! where: + ! + ! tc_grad_and_lapl_ao(k,i,l,j) = < k l | -1/2 \Delta_1 u(r1,r2) - \grad_1 u(r1,r2) . \grad_1 | ij > + ! = -1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) + ! = 1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 (-1) \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) + ! + ! tc_grad_square_ao(k,i,l,j) = -1/2 + ! + ! ao_two_e_coul(k,i,l,j) = < l k | 1/r12 | j i > = ( k i | 1/r12 | l j ) + ! + END_DOC + + implicit none + + integer :: i, j, k, l, m, ipoint, jpoint + integer :: n_blocks, n_rest, n_pass + integer :: i_blocks, i_rest, i_pass, ii + double precision :: mem, n_double + double precision :: weight1, ao_k_r, ao_i_r + double precision :: der_envsq_x, der_envsq_y, der_envsq_z, lap_envsq + double precision :: time0, time1, time2, tc1, tc2, tc + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:), tc_int_2e_ao(:,:,:,:) + double precision, allocatable :: tmp(:,:,:), c_mat(:,:,:), tmp_grad1_u12(:,:,:) + + double precision, external :: get_ao_two_e_integral + + + PROVIDE final_weight_at_r_vector_extra aos_in_r_array_extra + PROVIDE final_weight_at_r_vector aos_grad_in_r_array_transp_bis final_weight_at_r_vector aos_in_r_array_transp + + + + print*, ' start provide_int2_grad1_u12_ao ...' + call wall_time(time0) + + call total_memory(mem) + mem = max(1.d0, qp_max_mem - mem) + n_double = mem * 1.d8 + n_blocks = int(min(n_double / (n_points_extra_final_grid * 4.d0), 1.d0*n_points_final_grid)) + n_rest = int(mod(n_points_final_grid, n_blocks)) + n_pass = int((n_points_final_grid - n_rest) / n_blocks) + + call write_int(6, n_pass, 'Number of passes') + call write_int(6, n_blocks, 'Size of the blocks') + call write_int(6, n_rest, 'Size of the last block') + + ! --- + ! --- + ! --- + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + + allocate(tmp(n_points_extra_final_grid,ao_num,ao_num)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (tmp, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO SCHEDULE (static) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + tmp(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + allocate(tmp_grad1_u12(n_points_extra_final_grid,n_blocks,4)) + + tc = 0.d0 + + do i_pass = 1, n_pass + ii = (i_pass-1)*n_blocks + 1 + + call wall_time(tc1) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_blocks, ipoint) & + !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) + !$OMP DO + do i_blocks = 1, n_blocks + ipoint = ii - 1 + i_blocks ! r1 + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_blocks,1), tmp_grad1_u12(1,i_blocks,2), tmp_grad1_u12(1,i_blocks,3), tmp_grad1_u12(1,i_blocks,4)) + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(tc2) + tc = tc + tc2 - tc1 + + do m = 1, 4 + call dgemm( "T", "N", ao_num*ao_num, n_blocks, n_points_extra_final_grid, 1.d0 & + , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) + enddo + enddo + + deallocate(tmp_grad1_u12) + + + if(n_rest .gt. 0) then + + allocate(tmp_grad1_u12(n_points_extra_final_grid,n_rest,4)) + + ii = n_pass*n_blocks + 1 + + call wall_time(tc1) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_rest, ipoint) & + !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) + !$OMP DO + do i_rest = 1, n_rest + ipoint = ii - 1 + i_rest ! r1 + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_rest,1), tmp_grad1_u12(1,i_rest,2), tmp_grad1_u12(1,i_rest,3), tmp_grad1_u12(1,i_rest,4)) + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(tc2) + tc = tc + tc2 - tc1 + + do m = 1, 4 + call dgemm( "T", "N", ao_num*ao_num, n_rest, n_points_extra_final_grid, 1.d0 & + , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) + enddo + + deallocate(tmp_grad1_u12) + endif + + deallocate(tmp) + + + call wall_time(time1) + print*, ' wall time for int2_grad1_u12_ao (min) = ', (time1-time0) / 60.d0 + print*, ' wall time Jastrow derivatives (min) = ', tc / 60.d0 + call print_memory_usage() + + ! --- + ! --- + ! --- + + + allocate(tc_int_2e_ao(ao_num,ao_num,ao_num,ao_num)) + + call wall_time(time1) + + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint) & + !$OMP SHARED (aos_in_r_array_transp, c_mat, ao_num, n_points_final_grid, final_weight_at_r_vector) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + c_mat(ipoint,k,i) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,k) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & + , int2_grad1_u12_ao(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 0.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) + deallocate(c_mat) + + call wall_time(time2) + print*, ' wall time of Hermitian part of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + call print_memory_usage() + + ! --- + + call wall_time(time1) + + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) + do m = 1, 3 + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & + !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, c_mat, & + !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector, m) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + + weight1 = 0.5d0 * final_weight_at_r_vector(ipoint) + ao_i_r = aos_in_r_array_transp(ipoint,i) + ao_k_r = aos_in_r_array_transp(ipoint,k) + + c_mat(ipoint,k,i) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,m) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,m)) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -1.d0 & + , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 1.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) + enddo + deallocate(c_mat) + + call wall_time(time2) + print*, ' wall time of non-Hermitian part of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + call print_memory_usage() + + ! --- + + call wall_time(time1) + + call sum_A_At(tc_int_2e_ao(1,1,1,1), ao_num*ao_num) + + call wall_time(time2) + print*, ' lower- and upper-triangle of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + call print_memory_usage() + + ! --- + + call wall_time(time1) + + PROVIDE ao_integrals_map + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP SHARED(ao_num, tc_int_2e_ao, ao_integrals_map) & + !$OMP PRIVATE(i, j, k, l) + !$OMP DO COLLAPSE(3) + do j = 1, ao_num + do l = 1, ao_num + do i = 1, ao_num + do k = 1, ao_num + ! < 1:i, 2:j | 1:k, 2:l > + tc_int_2e_ao(k,i,l,j) = tc_int_2e_ao(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + call wall_time(time2) + print*, ' wall time of Coulomb part of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + call print_memory_usage() + + ! --- + + print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") + call ezfio_set_work_empty(.False.) + write(11) int2_grad1_u12_ao(:,:,:,1:3) + close(11) + + print*, ' Saving tc_int_2e_ao in ', trim(ezfio_filename) // '/work/ao_two_e_tc_tot' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/ao_two_e_tc_tot', action="write") + call ezfio_set_work_empty(.False.) + do i = 1, ao_num + write(11) tc_int_2e_ao(:,:,:,i) + enddo + close(11) + + ! ---- + + deallocate(int2_grad1_u12_ao) + deallocate(tc_int_2e_ao) + + call wall_time(time2) + print*, ' wall time for tc_int_2e_ao (min) = ', (time2-time1) / 60.d0 + call print_memory_usage() + + ! --- + + call wall_time(time1) + print*, ' wall time for TC-integrals (min) = ', (time1-time0) / 60.d0 + + return +end + +! --- + diff --git a/plugins/local/tc_int/int2_grad1_u12.irp.f b/plugins/local/tc_int/int2_grad1_u12.irp.f deleted file mode 100644 index 0cf0d775..00000000 --- a/plugins/local/tc_int/int2_grad1_u12.irp.f +++ /dev/null @@ -1,134 +0,0 @@ - -! --- - -subroutine provide_int2_grad1_u12_ao() - - implicit none - integer :: ipoint, i, j, m, jpoint - integer :: n_blocks, n_rest, n_pass - integer :: i_blocks, i_rest, i_pass, ii - double precision :: time0, time1 - double precision :: mem, n_double - double precision, allocatable :: tmp(:,:,:) - double precision, allocatable :: tmp_grad1_u12(:,:,:) - double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) - - PROVIDE final_weight_at_r_vector_extra aos_in_r_array_extra - - print*, ' start provide_int2_grad1_u12_ao ...' - call wall_time(time0) - - - ! int2_grad1_u12_ao(i,j,ipoint,1) = \int dr2 [\grad1 u(r1,r2)]_x1 \chi_i(r2) \chi_j(r2) - ! int2_grad1_u12_ao(i,j,ipoint,2) = \int dr2 [\grad1 u(r1,r2)]_y1 \chi_i(r2) \chi_j(r2) - ! int2_grad1_u12_ao(i,j,ipoint,3) = \int dr2 [\grad1 u(r1,r2)]_z1 \chi_i(r2) \chi_j(r2) - ! int2_grad1_u12_ao(i,j,ipoint,4) = -(1/2) \int dr2 [\grad1 u(r1,r2)]^2 \chi_i(r2) \chi_j(r2) - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) - - - - call total_memory(mem) - mem = max(1.d0, qp_max_mem - mem) - n_double = mem * 1.d8 - n_blocks = int(min(n_double / (n_points_extra_final_grid * 4.d0), 1.d0*n_points_final_grid)) - n_rest = int(mod(n_points_final_grid, n_blocks)) - n_pass = int((n_points_final_grid - n_rest) / n_blocks) - - call write_int(6, n_pass, 'Number of passes') - call write_int(6, n_blocks, 'Size of the blocks') - call write_int(6, n_rest, 'Size of the last block') - - - allocate(tmp(n_points_extra_final_grid,ao_num,ao_num)) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (j, i, jpoint) & - !$OMP SHARED (tmp, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) - !$OMP DO SCHEDULE (static) - do j = 1, ao_num - do i = 1, ao_num - do jpoint = 1, n_points_extra_final_grid - tmp(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - - allocate(tmp_grad1_u12(n_points_extra_final_grid,n_blocks,4)) - - do i_pass = 1, n_pass - ii = (i_pass-1)*n_blocks + 1 - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i_blocks, ipoint) & - !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) - !$OMP DO - do i_blocks = 1, n_blocks - ipoint = ii - 1 + i_blocks ! r1 - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_blocks,1), tmp_grad1_u12(1,i_blocks,2), tmp_grad1_u12(1,i_blocks,3), tmp_grad1_u12(1,i_blocks,4)) - enddo - !$OMP END DO - !$OMP END PARALLEL - - do m = 1, 4 - call dgemm( "T", "N", ao_num*ao_num, n_blocks, n_points_extra_final_grid, 1.d0 & - , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & - , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) - enddo - enddo - - deallocate(tmp_grad1_u12) - - - if(n_rest .gt. 0) then - - allocate(tmp_grad1_u12(n_points_extra_final_grid,n_rest,4)) - - ii = n_pass*n_blocks + 1 - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i_rest, ipoint) & - !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) - !$OMP DO - do i_rest = 1, n_rest - ipoint = ii - 1 + i_rest ! r1 - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_rest,1), tmp_grad1_u12(1,i_rest,2), tmp_grad1_u12(1,i_rest,3), tmp_grad1_u12(1,i_rest,4)) - enddo - !$OMP END DO - !$OMP END PARALLEL - - do m = 1, 4 - call dgemm( "T", "N", ao_num*ao_num, n_rest, n_points_extra_final_grid, 1.d0 & - , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & - , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) - enddo - - deallocate(tmp_grad1_u12) - endif - - deallocate(tmp) - - - ! --- - - print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' - open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") - call ezfio_set_work_empty(.False.) - write(11) int2_grad1_u12_ao(:,:,:,1:3) - close(11) - - deallocate(int2_grad1_u12_ao) - - call wall_time(time1) - print*, ' wall time for provide_int2_grad1_u12_ao (min) = ', (time1-time0) / 60.d0 - call print_memory_usage() - -end - -! --- - - diff --git a/plugins/local/tc_int/jast_grad_2e.irp.f b/plugins/local/tc_int/jast_grad_2e.irp.f deleted file mode 100644 index b18b9d62..00000000 --- a/plugins/local/tc_int/jast_grad_2e.irp.f +++ /dev/null @@ -1,102 +0,0 @@ - -! --- - -subroutine get_grad1_u12_r1_2e(r1, n_grid2, gradx, grady, gradz) - - BEGIN_DOC - ! - ! d/dx1 j_2e(1,2) - ! d/dy1 j_2e(1,2) - ! d/dz1 j_2e(1,2) - ! - END_DOC - - include 'constants.include.F' - - implicit none - integer , intent(in) :: n_grid2 - double precision, intent(in) :: r1(3) - double precision, intent(out) :: gradx(n_grid2) - double precision, intent(out) :: grady(n_grid2) - double precision, intent(out) :: gradz(n_grid2) - - integer :: jpoint - integer :: i_nucl, p, mpA, npA, opA - integer :: powmax1, powmax, powmax2 - double precision :: r2(3) - double precision :: tmp, tmp1, tmp2 - double precision :: rn(3), f1A, grad1_f1A(3), f2A, grad2_f2A(3), g12, grad1_g12(3) - double precision, allocatable :: f1A_power(:), f2A_power(:), double_p(:), g12_power(:) - - - powmax1 = max(maxval(jBH_m), maxval(jBH_n)) - powmax2 = maxval(jBH_o) - powmax = max(powmax1, powmax2) - - allocate(f1A_power(-1:powmax), f2A_power(-1:powmax), g12_power(-1:powmax), double_p(0:powmax)) - - do p = 0, powmax - double_p(p) = dble(p) - enddo - - f1A_power(-1) = 0.d0 - f2A_power(-1) = 0.d0 - g12_power(-1) = 0.d0 - - f1A_power(0) = 1.d0 - f2A_power(0) = 1.d0 - g12_power(0) = 1.d0 - - do jpoint = 1, n_points_extra_final_grid ! r2 - - r2(1) = final_grid_points_extra(1,jpoint) - r2(2) = final_grid_points_extra(2,jpoint) - r2(3) = final_grid_points_extra(3,jpoint) - - gradx(jpoint) = 0.d0 - grady(jpoint) = 0.d0 - gradz(jpoint) = 0.d0 - do i_nucl = 1, nucl_num - - rn(1) = nucl_coord(i_nucl,1) - rn(2) = nucl_coord(i_nucl,2) - rn(3) = nucl_coord(i_nucl,3) - - call jBH_elem_fct_grad(jBH_en(i_nucl), r1, rn, f1A, grad1_f1A) - call jBH_elem_fct_grad(jBH_en(i_nucl), r2, rn, f2A, grad2_f2A) - call jBH_elem_fct_grad(jBH_ee(i_nucl), r1, r2, g12, grad1_g12) - - ! Compute powers of f1A and f2A - do p = 1, powmax1 - f1A_power(p) = f1A_power(p-1) * f1A - f2A_power(p) = f2A_power(p-1) * f2A - enddo - do p = 1, powmax2 - g12_power(p) = g12_power(p-1) * g12 - enddo - - do p = 1, jBH_size - mpA = jBH_m(p,i_nucl) - npA = jBH_n(p,i_nucl) - opA = jBH_o(p,i_nucl) - tmp = jBH_c(p,i_nucl) - if(mpA .eq. npA) then - tmp = tmp * 0.5d0 - endif - - tmp1 = double_p(mpA) * f1A_power(mpA-1) * f2A_power(npA) + double_p(npA) * f1A_power(npA-1) * f2A_power(mpA) - tmp1 = tmp1 * g12_power(opA) * tmp - tmp2 = double_p(opA) * g12_power(opA-1) * (f1A_power(mpA) * f2A_power(npA) + f1A_power(npA) * f2A_power(mpA)) * tmp - - gradx(jpoint) = gradx(jpoint) + tmp1 * grad1_f1A(1) + tmp2 * grad1_g12(1) - grady(jpoint) = grady(jpoint) + tmp1 * grad1_f1A(2) + tmp2 * grad1_g12(2) - gradz(jpoint) = gradz(jpoint) + tmp1 * grad1_f1A(3) + tmp2 * grad1_g12(3) - enddo ! p - enddo ! i_nucl - enddo ! jpoint - - return -end - -! --- - diff --git a/plugins/local/tc_int/jast_grad_full.irp.f b/plugins/local/tc_int/jast_grad_full.irp.f index f63ee3e4..78ed1edf 100644 --- a/plugins/local/tc_int/jast_grad_full.irp.f +++ b/plugins/local/tc_int/jast_grad_full.irp.f @@ -16,31 +16,26 @@ subroutine get_grad1_u12_for_tc(ipoint, n_grid2, resx, resy, resz, res) ! END_DOC + include 'constants.include.F' + implicit none integer, intent(in) :: ipoint, n_grid2 double precision, intent(out) :: resx(n_grid2), resy(n_grid2), resz(n_grid2), res(n_grid2) - integer :: jpoint - double precision :: env_r1, tmp - double precision :: grad1_env(3), r1(3) - double precision, allocatable :: env_r2(:) - double precision, allocatable :: u2b_r12(:), gradx1_u2b(:), grady1_u2b(:), gradz1_u2b(:) - double precision, allocatable :: u2b_mu(:), gradx1_mu(:), grady1_mu(:), gradz1_mu(:) - double precision, allocatable :: u2b_nu(:), gradx1_nu(:), grady1_nu(:), gradz1_nu(:) - double precision, external :: env_nucl + integer :: jpoint, i_nucl, p, mpA, npA, opA, pp + integer :: powmax1, powmax, powmax2 + double precision :: r1(3), r2(3) + double precision :: tmp, tmp1, tmp2, tmp11, tmp22 + double precision :: rn(3), f1A, grad1_f1A(3), f2A, grad2_f2A(3), g12, grad1_g12(3) + double precision, allocatable :: f1A_power(:), f2A_power(:), double_p(:), g12_power(:) r1(1) = final_grid_points(1,ipoint) r1(2) = final_grid_points(2,ipoint) r1(3) = final_grid_points(3,ipoint) + call grad1_j12_r1_seq(r1, n_grid2, resx, resy, resz) - ! j2e_type .eq. "Boys_Handy" - ! env_type .eq. "None" - ! j1e_type .eq "None" - - call get_grad1_u12_r1_2e(r1, n_grid2, resx(1), resy(1), resz(1)) - - do jpoint = 1, n_points_extra_final_grid + do jpoint = 1, n_grid2 ! r2 res(jpoint) = -0.5d0 * (resx(jpoint) * resx(jpoint) + resy(jpoint) * resy(jpoint) + resz(jpoint) * resz(jpoint)) enddo @@ -49,3 +44,91 @@ end ! --- +subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) + + include 'constants.include.F' + + implicit none + integer , intent(in) :: n_grid2 + double precision, intent(in) :: r1(3) + double precision, intent(out) :: gradx(n_grid2) + double precision, intent(out) :: grady(n_grid2) + double precision, intent(out) :: gradz(n_grid2) + + integer :: jpoint, i_nucl, p, mpA, npA, opA + double precision :: r2(3) + double precision :: dx, dy, dz, r12, tmp + double precision :: rn(3), f1A, grad1_f1A(3), f2A, grad2_f2A(3), g12, grad1_g12(3) + double precision :: tmp1, tmp2 + integer :: powmax1, powmax, powmax2 + double precision, allocatable :: f1A_power(:), f2A_power(:), double_p(:), g12_power(:) + + powmax1 = max(maxval(jBH_m), maxval(jBH_n)) + powmax2 = maxval(jBH_o) + powmax = max(powmax1, powmax2) + + allocate(f1A_power(-1:powmax), f2A_power(-1:powmax), g12_power(-1:powmax), double_p(0:powmax)) + + do p = 0, powmax + double_p(p) = dble(p) + enddo + + f1A_power(-1) = 0.d0 + f2A_power(-1) = 0.d0 + g12_power(-1) = 0.d0 + + f1A_power(0) = 1.d0 + f2A_power(0) = 1.d0 + g12_power(0) = 1.d0 + + do jpoint = 1, n_grid2 ! r2 + + r2(1) = final_grid_points_extra(1,jpoint) + r2(2) = final_grid_points_extra(2,jpoint) + r2(3) = final_grid_points_extra(3,jpoint) + + gradx(jpoint) = 0.d0 + grady(jpoint) = 0.d0 + gradz(jpoint) = 0.d0 + do i_nucl = 1, nucl_num + + rn(1) = nucl_coord(i_nucl,1) + rn(2) = nucl_coord(i_nucl,2) + rn(3) = nucl_coord(i_nucl,3) + + call jBH_elem_fct_grad(jBH_en(i_nucl), r1, rn, f1A, grad1_f1A) + call jBH_elem_fct_grad(jBH_en(i_nucl), r2, rn, f2A, grad2_f2A) + call jBH_elem_fct_grad(jBH_ee(i_nucl), r1, r2, g12, grad1_g12) + + ! Compute powers of f1A and f2A + do p = 1, powmax1 + f1A_power(p) = f1A_power(p-1) * f1A + f2A_power(p) = f2A_power(p-1) * f2A + enddo + do p = 1, powmax2 + g12_power(p) = g12_power(p-1) * g12 + enddo + + do p = 1, jBH_size + mpA = jBH_m(p,i_nucl) + npA = jBH_n(p,i_nucl) + opA = jBH_o(p,i_nucl) + tmp = jBH_c(p,i_nucl) + if(mpA .eq. npA) then + tmp = tmp * 0.5d0 + endif + + tmp1 = double_p(mpA) * f1A_power(mpA-1) * f2A_power(npA) + double_p(npA) * f1A_power(npA-1) * f2A_power(mpA) + tmp1 = tmp1 * g12_power(opA) * tmp + tmp2 = double_p(opA) * g12_power(opA-1) * (f1A_power(mpA) * f2A_power(npA) + f1A_power(npA) * f2A_power(mpA)) * tmp + + gradx(jpoint) = gradx(jpoint) + tmp1 * grad1_f1A(1) + tmp2 * grad1_g12(1) + grady(jpoint) = grady(jpoint) + tmp1 * grad1_f1A(2) + tmp2 * grad1_g12(2) + gradz(jpoint) = gradz(jpoint) + tmp1 * grad1_f1A(3) + tmp2 * grad1_g12(3) + enddo ! p + enddo ! i_nucl + enddo ! jpoint + + return +end + diff --git a/plugins/local/tc_int/write_tc_int.irp.f b/plugins/local/tc_int/write_tc_int.irp.f index ebdce6f2..9f25a6fd 100644 --- a/plugins/local/tc_int/write_tc_int.irp.f +++ b/plugins/local/tc_int/write_tc_int.irp.f @@ -14,19 +14,17 @@ program write_tc_int my_n_pt_a_grid = tc_grid1_a touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + call write_int(6, my_n_pt_r_grid, 'radial external grid over') call write_int(6, my_n_pt_a_grid, 'angular external grid over') - if(tc_integ_type .eq. "numeric") then - my_extra_grid_becke = .True. - PROVIDE tc_grid2_a tc_grid2_r - my_n_pt_r_extra_grid = tc_grid2_r - my_n_pt_a_extra_grid = tc_grid2_a - touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid - - call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') - call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') - endif + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') call main() From a9d2f0e188cdc88e1cfe1387de4f1c118bb17a5d Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 26 Jun 2024 17:55:56 +0200 Subject: [PATCH 093/159] Working on TC ints. Not well tested --- plugins/local/tc_int/jast_grad_full.irp.f | 127 ++++++++++++++++++++-- plugins/local/tc_int/jast_utils_bh.irp.f | 22 ++-- 2 files changed, 134 insertions(+), 15 deletions(-) diff --git a/plugins/local/tc_int/jast_grad_full.irp.f b/plugins/local/tc_int/jast_grad_full.irp.f index 78ed1edf..599d3779 100644 --- a/plugins/local/tc_int/jast_grad_full.irp.f +++ b/plugins/local/tc_int/jast_grad_full.irp.f @@ -4,7 +4,7 @@ subroutine get_grad1_u12_for_tc(ipoint, n_grid2, resx, resy, resz, res) BEGIN_DOC - ! + ! ! resx(ipoint) = [grad1 u(r1,r2)]_x1 ! resy(ipoint) = [grad1 u(r1,r2)]_y1 ! resz(ipoint) = [grad1 u(r1,r2)]_z1 @@ -59,7 +59,7 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) double precision :: r2(3) double precision :: dx, dy, dz, r12, tmp double precision :: rn(3), f1A, grad1_f1A(3), f2A, grad2_f2A(3), g12, grad1_g12(3) - double precision :: tmp1, tmp2 + double precision :: tmp1, tmp2, dist integer :: powmax1, powmax, powmax2 double precision, allocatable :: f1A_power(:), f2A_power(:), double_p(:), g12_power(:) @@ -90,30 +90,105 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) gradx(jpoint) = 0.d0 grady(jpoint) = 0.d0 gradz(jpoint) = 0.d0 + + call jBH_elem_fct_grad_alpha1(r1, r2, g12, grad1_g12) + +! dist = (r1(1) - r2(1)) * (r1(1) - r2(1)) & +! + (r1(2) - r2(2)) * (r1(2) - r2(2)) & +! + (r1(3) - r2(3)) * (r1(3) - r2(3)) +! +! if(dist .ge. 1d-15) then +! dist = dsqrt( dist ) +! +! tmp1 = 1.d0 / (1.d0 + dist) +! +! g12 = dist * tmp1 +! tmp2 = tmp1 * tmp1 / dist +! grad1_g12(1) = tmp2 * (r1(1) - r2(1)) +! grad1_g12(2) = tmp2 * (r1(2) - r2(2)) +! grad1_g12(3) = tmp2 * (r1(3) - r2(3)) +! +! else +! +! grad1_g12(1) = 0.d0 +! grad1_g12(2) = 0.d0 +! grad1_g12(3) = 0.d0 +! g12 = 0.d0 +! +! endif +! + do p = 1, powmax2 + g12_power(p) = g12_power(p-1) * g12 + enddo + do i_nucl = 1, nucl_num rn(1) = nucl_coord(i_nucl,1) rn(2) = nucl_coord(i_nucl,2) rn(3) = nucl_coord(i_nucl,3) - call jBH_elem_fct_grad(jBH_en(i_nucl), r1, rn, f1A, grad1_f1A) - call jBH_elem_fct_grad(jBH_en(i_nucl), r2, rn, f2A, grad2_f2A) - call jBH_elem_fct_grad(jBH_ee(i_nucl), r1, r2, g12, grad1_g12) + call jBH_elem_fct_grad_alpha1(r1, rn, f1A, grad1_f1A) +! dist = (r1(1) - rn(1)) * (r1(1) - rn(1)) & +! + (r1(2) - rn(2)) * (r1(2) - rn(2)) & +! + (r1(3) - rn(3)) * (r1(3) - rn(3)) +! if (dist > 1.d-15) then +! dist = dsqrt( dist ) +! +! tmp1 = 1.d0 / (1.d0 + dist) +! +! f1A = dist * tmp1 +! tmp2 = tmp1 * tmp1 / dist +! grad1_f1A(1) = tmp2 * (r1(1) - rn(1)) +! grad1_f1A(2) = tmp2 * (r1(2) - rn(2)) +! grad1_f1A(3) = tmp2 * (r1(3) - rn(3)) +! +! else +! +! grad1_f1A(1) = 0.d0 +! grad1_f1A(2) = 0.d0 +! grad1_f1A(3) = 0.d0 +! f1A = 0.d0 +! +! endif + + call jBH_elem_fct_grad_alpha1(r2, rn, f2A, grad2_f2A) +! dist = (r2(1) - rn(1)) * (r2(1) - rn(1)) & +! + (r2(2) - rn(2)) * (r2(2) - rn(2)) & +! + (r2(3) - rn(3)) * (r2(3) - rn(3)) +! +! if (dist > 1.d-15) then +! dist = dsqrt( dist ) +! +! tmp1 = 1.d0 / (1.d0 + dist) +! +! f2A = dist * tmp1 +! tmp2 = tmp1 * tmp1 / dist +! grad2_f2A(1) = tmp2 * (r2(1) - rn(1)) +! grad2_f2A(2) = tmp2 * (r2(2) - rn(2)) +! grad2_f2A(3) = tmp2 * (r2(3) - rn(3)) +! +! else +! +! grad2_f2A(1) = 0.d0 +! grad2_f2A(2) = 0.d0 +! grad2_f2A(3) = 0.d0 +! f2A = 0.d0 +! +! endif ! Compute powers of f1A and f2A do p = 1, powmax1 f1A_power(p) = f1A_power(p-1) * f1A f2A_power(p) = f2A_power(p-1) * f2A enddo - do p = 1, powmax2 - g12_power(p) = g12_power(p-1) * g12 - enddo do p = 1, jBH_size mpA = jBH_m(p,i_nucl) npA = jBH_n(p,i_nucl) opA = jBH_o(p,i_nucl) tmp = jBH_c(p,i_nucl) +! if (dabs(tmp) <= 1.d-10) cycle +! if(mpA .eq. npA) then tmp = tmp * 0.5d0 endif @@ -132,3 +207,39 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) return end +subroutine jBH_elem_fct_grad_alpha1(r1, r2, fct, grad1_fct) + + implicit none + double precision, intent(in) :: r1(3), r2(3) + double precision, intent(out) :: fct, grad1_fct(3) + double precision :: dist, tmp1, tmp2 + + dist = (r1(1) - r2(1)) * (r1(1) - r2(1)) & + + (r1(2) - r2(2)) * (r1(2) - r2(2)) & + + (r1(3) - r2(3)) * (r1(3) - r2(3)) + + + if(dist .ge. 1d-15) then + dist = dsqrt( dist ) + + tmp1 = 1.d0 / (1.d0 + dist) + + fct = dist * tmp1 + tmp2 = tmp1 * tmp1 / dist + grad1_fct(1) = tmp2 * (r1(1) - r2(1)) + grad1_fct(2) = tmp2 * (r1(2) - r2(2)) + grad1_fct(3) = tmp2 * (r1(3) - r2(3)) + + else + + grad1_fct(1) = 0.d0 + grad1_fct(2) = 0.d0 + grad1_fct(3) = 0.d0 + fct = 0.d0 + + endif + + return +end + +! --- diff --git a/plugins/local/tc_int/jast_utils_bh.irp.f b/plugins/local/tc_int/jast_utils_bh.irp.f index 750ce90b..200bc5ff 100644 --- a/plugins/local/tc_int/jast_utils_bh.irp.f +++ b/plugins/local/tc_int/jast_utils_bh.irp.f @@ -1,35 +1,43 @@ ! --- + + subroutine jBH_elem_fct_grad(alpha, r1, r2, fct, grad1_fct) implicit none double precision, intent(in) :: alpha, r1(3), r2(3) double precision, intent(out) :: fct, grad1_fct(3) - double precision :: dist, tmp1, tmp2 + double precision :: dist, tmp1, tmp2, dist_inv - dist = dsqrt( (r1(1) - r2(1)) * (r1(1) - r2(1)) & - + (r1(2) - r2(2)) * (r1(2) - r2(2)) & - + (r1(3) - r2(3)) * (r1(3) - r2(3)) ) + dist = (r1(1) - r2(1)) * (r1(1) - r2(1)) & + + (r1(2) - r2(2)) * (r1(2) - r2(2)) & + + (r1(3) - r2(3)) * (r1(3) - r2(3)) - if(dist .ge. 1d-10) then + if(dist .ge. 1d-15) then + dist_inv = 1.d0/dsqrt( dist ) + dist = dist_inv * dist + tmp1 = 1.d0 / (1.d0 + alpha * dist) fct = alpha * dist * tmp1 - tmp2 = alpha * tmp1 * tmp1 / dist + tmp2 = alpha * tmp1 * tmp1 * dist_inv grad1_fct(1) = tmp2 * (r1(1) - r2(1)) grad1_fct(2) = tmp2 * (r1(2) - r2(2)) grad1_fct(3) = tmp2 * (r1(3) - r2(3)) + else + grad1_fct(1) = 0.d0 grad1_fct(2) = 0.d0 grad1_fct(3) = 0.d0 fct = 0.d0 + endif return -end +end ! --- From 5d80cb7b2dd53bdd9eb713e507912e6fce3cadd7 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 27 Jun 2024 12:06:06 +0200 Subject: [PATCH 094/159] Separated gpu and gpu_arch --- configure | 8 ++-- src/ccsd/NEED | 1 + src/ccsd/ccsd_space_orb_sub.irp.f | 14 +++++-- src/gpu/NEED | 1 + src/gpu/README.rst | 6 +++ src/{gpu_x86 => gpu}/gpu.h | 0 src/{gpu_x86 => gpu}/gpu_module.F90 | 59 +++++++++++++++-------------- src/gpu_x86/gpu.c | 2 +- 8 files changed, 54 insertions(+), 37 deletions(-) create mode 100644 src/gpu/NEED create mode 100644 src/gpu/README.rst rename src/{gpu_x86 => gpu}/gpu.h (100%) rename src/{gpu_x86 => gpu}/gpu_module.F90 (74%) diff --git a/configure b/configure index 014275eb..db158966 100755 --- a/configure +++ b/configure @@ -115,19 +115,19 @@ while getopts "d:c:i:g:h" c ; do done # Handle GPU acceleration -rm -f ${QP_ROOT}/src/gpu +rm -f ${QP_ROOT}/src/gpu_arch case "$GPU" in amd) # Nvidia echo "Activating AMD GPU acceleration" - ln -s ${QP_ROOT}/src/gpu_amd ${QP_ROOT}/src/gpu + ln -s ${QP_ROOT}/src/gpu_amd ${QP_ROOT}/src/gpu_arch ;; nvidia) # Nvidia echo "Activating Nvidia GPU acceleration" - ln -s ${QP_ROOT}/src/gpu_nvidia ${QP_ROOT}/src/gpu + ln -s ${QP_ROOT}/src/gpu_nvidia ${QP_ROOT}/src/gpu_arch ;; *) # No Acceleration echo "Disabling GPU acceleration" - ln -s ${QP_ROOT}/src/gpu_x86 ${QP_ROOT}/src/gpu + ln -s ${QP_ROOT}/src/gpu_x86 ${QP_ROOT}/src/gpu_arch ;; esac diff --git a/src/ccsd/NEED b/src/ccsd/NEED index e6e6bc59..8298f28e 100644 --- a/src/ccsd/NEED +++ b/src/ccsd/NEED @@ -1,2 +1,3 @@ +gpu hartree_fock utils_cc diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 9d4ae7f9..84aab08a 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -1,4 +1,5 @@ subroutine run_ccsd_space_orb + use gpu implicit none @@ -11,7 +12,7 @@ subroutine run_ccsd_space_orb double precision, allocatable :: t2(:,:,:,:), r2(:,:,:,:), tau(:,:,:,:), tau_x(:,:,:,:) double precision, allocatable :: t1(:,:), r1(:,:) - double precision, allocatable :: H_oo(:,:), H_vv(:,:), H_vo(:,:) + double precision, pointer :: H_oo, H_vv, H_vo double precision, allocatable :: all_err(:,:), all_t(:,:) integer, allocatable :: list_occ(:), list_vir(:) @@ -55,7 +56,10 @@ subroutine run_ccsd_space_orb allocate(tau(nO,nO,nV,nV)) allocate(tau_x(nO,nO,nV,nV)) allocate(t1(nO,nV), r1(nO,nV)) - allocate(H_oo(nO,nO), H_vv(nV,nV), H_vo(nV,nO)) + + call gpu_allocate_double(H_oo, (/ nO, nO /) ) + call gpu_allocate_double(H_vv, (/ nV, nV /) ) + call gpu_allocate_double(H_vo, (/ nV, nO /) ) if (cc_update_method == 'diis') then double precision :: rss, diis_mem, extra_mem @@ -191,7 +195,11 @@ subroutine run_ccsd_space_orb deallocate(all_err,all_t) endif - deallocate(H_vv,H_oo,H_vo,r1,r2,tau) + call gpu_deallocate_double(H_oo) + call gpu_deallocate_double(H_vv) + call gpu_deallocate_double(H_vo) + + deallocate(r1,r2,tau) ! CCSD(T) double precision :: e_t, e_t_err diff --git a/src/gpu/NEED b/src/gpu/NEED new file mode 100644 index 00000000..c2af78d2 --- /dev/null +++ b/src/gpu/NEED @@ -0,0 +1 @@ +gpu_arch diff --git a/src/gpu/README.rst b/src/gpu/README.rst new file mode 100644 index 00000000..17ee28a0 --- /dev/null +++ b/src/gpu/README.rst @@ -0,0 +1,6 @@ +=== +gpu +=== + +Bindings for GPU routines (architecture independent). +Architecture-dependent files are in gpu_arch. diff --git a/src/gpu_x86/gpu.h b/src/gpu/gpu.h similarity index 100% rename from src/gpu_x86/gpu.h rename to src/gpu/gpu.h diff --git a/src/gpu_x86/gpu_module.F90 b/src/gpu/gpu_module.F90 similarity index 74% rename from src/gpu_x86/gpu_module.F90 rename to src/gpu/gpu_module.F90 index 86ba3926..f35ebc97 100644 --- a/src/gpu_x86/gpu_module.F90 +++ b/src/gpu/gpu_module.F90 @@ -1,5 +1,5 @@ module gpu - use, intrinsic :: iso_c_binding, only : c_int32_t, c_int64_t, c_double, c_size_t, c_char + use, intrinsic :: iso_c_binding implicit none interface @@ -17,7 +17,7 @@ module gpu integer(c_int64_t), value :: n end subroutine - subroutine gpu_free_c(ptr) bind(C, name='gpu_free') + subroutine gpu_deallocate_c(ptr) bind(C, name='gpu_deallocate') import type(c_ptr) :: ptr end subroutine @@ -89,53 +89,54 @@ module gpu end interface + contains + + + subroutine gpu_allocate_double(ptr, s) + implicit none + double precision, pointer, intent(inout) :: ptr + integer, intent(in) :: s(:) + type(c_ptr) :: cptr + + call gpu_allocate_c(cptr, sum(s*1_8)*8_8) + call c_f_pointer(cptr, ptr, s) + end subroutine + + subroutine gpu_deallocate_double(ptr) + implicit none + double precision, pointer, intent(inout) :: ptr + type(c_ptr) :: cptr + cptr = c_loc(ptr) + call gpu_deallocate(cptr) + NULLIFY(ptr) + end subroutine + end module -subroutine gpu_allocate_double(ptr, s) - use gpu - implicit none - double precision, pointer, intent(inout) :: ptr - integer*8, intent(in) :: s(*) - type(c_ptr) :: cptr - - call gpu_allocate_c(cptr, sum(s)*8_8) - call c_f_pointer(cptr, ptr, s) -end subroutine - -subroutine gpu_free_double(ptr) - use gpu - implicit none - double precision, pointer, intent(inout) :: ptr - type(c_ptr) :: cptr - cptr = cloc(ptr) - call gpu_free(cptr) - NULLIFY(ptr) -end subroutine - subroutine gpu_upload_double(cpu_ptr, gpu_ptr, n) use gpu implicit none double precision, intent(in) :: cpu_ptr(*) - double precision, intent(out) :: gpu_ptr(*) + double precision, intent(in) :: gpu_ptr(*) integer(c_int64_t), intent(in) :: n - call gpu_upload_c(cpu_ptr, gpu_ptr, 8_8*n) + call gpu_upload_c(c_loc(cpu_ptr), c_loc(gpu_ptr), 8_8*n) end subroutine subroutine gpu_download_double(gpu_ptr, cpu_ptr, n) use gpu implicit none double precision, intent(in) :: gpu_ptr(*) - double precision, intent(out) :: cpu_ptr(*) + double precision, intent(in) :: cpu_ptr(*) integer(c_int64_t), intent(in) :: n - call gpu_download_c(gpu_ptr, cpu_ptr, 8_8*n) + call gpu_download_c(c_loc(gpu_ptr), c_loc(cpu_ptr), 8_8*n) end subroutine subroutine gpu_copy_double(gpu_ptr_src, gpu_ptr_dest, n) use gpu implicit none double precision, intent(in) :: gpu_ptr_src(*) - double precision, intent(out) :: gpu_ptr_dest(*) + double precision, intent(in) :: gpu_ptr_dest(*) integer(c_int64_t), intent(in) :: n - call gpu_copy_c(gpu_ptr_src, gpu_ptr_dest, 8_8*n) + call gpu_copy_c(c_loc(gpu_ptr_src), c_loc(gpu_ptr_dest), 8_8*n) end subroutine diff --git a/src/gpu_x86/gpu.c b/src/gpu_x86/gpu.c index 71505dbe..41ede396 100644 --- a/src/gpu_x86/gpu.c +++ b/src/gpu_x86/gpu.c @@ -25,7 +25,7 @@ void gpu_allocate(void** ptr, const int64_t n) { } } -void gpu_free(void** ptr) { +void gpu_deallocate(void** ptr) { free(*ptr); *ptr = NULL; } From 6c02ac0f0b05ea3cc16e0fde66e23c9a0de14246 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 27 Jun 2024 12:07:48 +0200 Subject: [PATCH 095/159] Separated gpu and gpu_arch --- src/gpu/gpu_module.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gpu/gpu_module.F90 b/src/gpu/gpu_module.F90 index f35ebc97..43754454 100644 --- a/src/gpu/gpu_module.F90 +++ b/src/gpu/gpu_module.F90 @@ -107,7 +107,7 @@ module gpu double precision, pointer, intent(inout) :: ptr type(c_ptr) :: cptr cptr = c_loc(ptr) - call gpu_deallocate(cptr) + call gpu_deallocate_c(cptr) NULLIFY(ptr) end subroutine From fa6d1419496d271a4715efc776790ce7fc152064 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 27 Jun 2024 15:45:52 +0200 Subject: [PATCH 096/159] Introducing GPU in CCSD --- src/ccsd/ccsd_space_orb_sub.irp.f | 224 +++++++----- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 12 +- src/gpu/gpu_module.F90 | 450 ++++++++++++++++++++++--- src/gpu_x86/gpu.c | 48 +-- 4 files changed, 570 insertions(+), 164 deletions(-) diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 84aab08a..455d62f7 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -10,9 +10,9 @@ subroutine run_ccsd_space_orb double precision :: uncorr_energy,energy, max_elem, max_r, max_r1, max_r2,ta,tb logical :: not_converged - double precision, allocatable :: t2(:,:,:,:), r2(:,:,:,:), tau(:,:,:,:), tau_x(:,:,:,:) - double precision, allocatable :: t1(:,:), r1(:,:) - double precision, pointer :: H_oo, H_vv, H_vo + type(gpu_double4) :: t2, r2, tau, tau_x + type(gpu_double2) :: t1, r1 + type(gpu_double2) :: H_oo, H_vv, H_vo double precision, allocatable :: all_err(:,:), all_t(:,:) integer, allocatable :: list_occ(:), list_vir(:) @@ -52,14 +52,15 @@ subroutine run_ccsd_space_orb !print*,'occ',list_occ !print*,'vir',list_vir - allocate(t2(nO,nO,nV,nV), r2(nO,nO,nV,nV)) - allocate(tau(nO,nO,nV,nV)) - allocate(tau_x(nO,nO,nV,nV)) - allocate(t1(nO,nV), r1(nO,nV)) - - call gpu_allocate_double(H_oo, (/ nO, nO /) ) - call gpu_allocate_double(H_vv, (/ nV, nV /) ) - call gpu_allocate_double(H_vo, (/ nV, nO /) ) + call gpu_allocate(t2, nO,nO,nV,nV) + call gpu_allocate(r2, nO,nO,nV,nV) + call gpu_allocate(tau, nO,nO,nV,nV) + call gpu_allocate(tau_x, nO,nO,nV,nV) + call gpu_allocate(t1, nO,nV) + call gpu_allocate(r1, nO,nV) + call gpu_allocate(H_oo, nO, nO) + call gpu_allocate(H_vo, nV, nO) + call gpu_allocate(H_vv, nV, nV) if (cc_update_method == 'diis') then double precision :: rss, diis_mem, extra_mem @@ -101,14 +102,21 @@ subroutine run_ccsd_space_orb endif ! Init - call guess_t1(nO,nV,cc_space_f_o,cc_space_f_v,cc_space_f_ov,t1) - call guess_t2(nO,nV,cc_space_f_o,cc_space_f_v,cc_space_v_oovv,t2) - call update_tau_space(nO,nV,t1,t2,tau) + double precision, allocatable :: h_t1(:,:), h_t2(:,:,:,:) + allocate(h_t1(nO,nV), h_t2(nO,nO,nV,nV)) + + call guess_t1(nO,nV,cc_space_f_o,cc_space_f_v,cc_space_f_ov,h_t1) + call gpu_upload(h_t1, t1) + + call guess_t2(nO,nV,cc_space_f_o,cc_space_f_v,cc_space_v_oovv,h_t2) + call gpu_upload(h_t2, t2) + + call update_tau_space(nO,nV,h_t1,t1,t2,tau) call update_tau_x_space(nO,nV,tau,tau_x) !print*,'hf_energy', hf_energy call det_energy(det,uncorr_energy) print*,'Det energy', uncorr_energy - call ccsd_energy_space_x(nO,nV,tau_x,t1,energy) + call ccsd_energy_space_x(nO,nV,tau_x%f,t1%f,energy) print*,'Guess energy', uncorr_energy+energy, energy nb_iter = 0 @@ -127,40 +135,38 @@ subroutine run_ccsd_space_orb if (do_ao_cholesky) then ! if (.False.) then call compute_H_oo_chol(nO,nV,tau_x,H_oo) - call compute_H_vv_chol(nO,nV,tau_x,H_vv) - call compute_H_vo_chol(nO,nV,t1,H_vo) + call compute_H_vv_chol(nO,nV,tau_x%f,H_vv%f) + call compute_H_vo_chol(nO,nV,t1%f,H_vo%f) - call compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) - call compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) + call compute_r1_space_chol(nO,nV,t1%f,t2%f,tau%f,H_oo%F,H_vv%F,H_vo%F,r1%f,max_r1) + call compute_r2_space_chol(nO,nV,t1%f,t2%f,tau%f,H_oo%F,H_vv%F,H_vo%F,r2%f,max_r2) else - call compute_H_oo(nO,nV,t1,t2,tau,H_oo) - call compute_H_vv(nO,nV,t1,t2,tau,H_vv) - call compute_H_vo(nO,nV,t1,t2,H_vo) + call compute_H_oo(nO,nV,t1%f,t2%f,tau%f,H_oo%f) + call compute_H_vv(nO,nV,t1%f,t2%f,tau%f,H_vv%f) + call compute_H_vo(nO,nV,t1%f,t2%f,H_vo%f) - call compute_r1_space(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) - call compute_r2_space(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) + call compute_r1_space(nO,nV,t1%f,t2%f,tau%f,H_oo%f,H_vv%f,H_vo%f,r1%f,max_r1) + call compute_r2_space(nO,nV,t1%f,t2%f,tau%f,H_oo%f,H_vv%f,H_vo%f,r2%f,max_r2) endif max_r = max(max_r1,max_r2) ! Update if (cc_update_method == 'diis') then - !call update_t_ccsd(nO,nV,nb_iter,f_o,f_v,r1,r2,t1,t2,all_err1,all_err2,all_t1,all_t2) - !call update_t_ccsd_diis(nO,nV,nb_iter,f_o,f_v,r1,r2,t1,t2,all_err1,all_err2,all_t1,all_t2) - call update_t_ccsd_diis_v3(nO,nV,nb_iter,cc_space_f_o,cc_space_f_v,r1,r2,t1,t2,all_err,all_t) + call update_t_ccsd_diis_v3(nO,nV,nb_iter,cc_space_f_o,cc_space_f_v,r1%f,r2%f,t1%f,t2%f,all_err,all_t) ! Standard update as T = T - Delta elseif (cc_update_method == 'none') then - call update_t1(nO,nV,cc_space_f_o,cc_space_f_v,r1,t1) - call update_t2(nO,nV,cc_space_f_o,cc_space_f_v,r2,t2) + call update_t1(nO,nV,cc_space_f_o,cc_space_f_v,r1%f,t1%f) + call update_t2(nO,nV,cc_space_f_o,cc_space_f_v,r2%f,t2%f) else print*,'Unkown cc_method_method: '//cc_update_method endif - call update_tau_space(nO,nV,t1,t2,tau) + call update_tau_space(nO,nV,t1%f,t1,t2,tau) call update_tau_x_space(nO,nV,tau,tau_x) ! Energy - call ccsd_energy_space_x(nO,nV,tau_x,t1,energy) + call ccsd_energy_space_x(nO,nV,tau_x%f,t1%f,energy) write(*,'(A3,I6,A3,F18.12,A3,F16.12,A3,ES10.2,A3,ES10.2,A2)') ' | ',nb_iter,' | ', uncorr_energy+energy,' | ', energy,' | ', max_r1,' | ', max_r2,' |' nb_iter = nb_iter + 1 @@ -185,8 +191,8 @@ subroutine run_ccsd_space_orb print*,'' if (write_amplitudes) then - call write_t1(nO,nV,t1) - call write_t2(nO,nV,t2) + call write_t1(nO,nV,t1%f) + call write_t2(nO,nV,t2%f) call ezfio_set_utils_cc_io_amplitudes('Read') endif @@ -195,11 +201,14 @@ subroutine run_ccsd_space_orb deallocate(all_err,all_t) endif - call gpu_deallocate_double(H_oo) - call gpu_deallocate_double(H_vv) - call gpu_deallocate_double(H_vo) + call gpu_deallocate(H_oo) + call gpu_deallocate(H_vv) + call gpu_deallocate(H_vo) - deallocate(r1,r2,tau) + call gpu_deallocate(r1) + call gpu_deallocate(r2) + call gpu_deallocate(tau) + call gpu_deallocate(tau_x) ! CCSD(T) double precision :: e_t, e_t_err @@ -207,28 +216,14 @@ subroutine run_ccsd_space_orb if (cc_par_t .and. elec_alpha_num + elec_beta_num > 2) then - ! Dumb way - !call wall_time(ta) - !call ccsd_par_t_space(nO,nV,t1,t2,e_t) - !call wall_time(tb) - !print*,'Time: ',tb-ta, ' s' - - !print*,'' - !write(*,'(A15,F18.12,A3)') ' E(CCSD(T)) = ', uncorr_energy + energy + e_t, ' Ha' - !write(*,'(A15,F18.12,A3)') ' E(T) = ', e_t, ' Ha' - !write(*,'(A15,F18.12,A3)') ' Correlation = ', energy + e_t, ' Ha' - !print*,'' - ! New e_t = uncorr_energy + energy ! For print in (T) call e_t_err = 0.d0 print*,'Computing (T) correction...' call wall_time(ta) -! call ccsd_par_t_space_v3(nO,nV,t1,t2,cc_space_f_o,cc_space_f_v & -! ,cc_space_v_vvvo,cc_space_v_vvoo,cc_space_v_vooo,e_t) - call ccsd_par_t_space_stoch(nO,nV,t1,t2,cc_space_f_o,cc_space_f_v & + call ccsd_par_t_space_stoch(nO,nV,t1%f,t2%f,cc_space_f_o,cc_space_f_v & ,cc_space_v_vvvo,cc_space_v_vvoo,cc_space_v_vooo,e_t, e_t_err) call wall_time(tb) @@ -243,7 +238,9 @@ subroutine run_ccsd_space_orb call save_energy(uncorr_energy + energy, e_t) - deallocate(t1,t2) + deallocate(h_t1, h_t2) + call gpu_deallocate(t1) + call gpu_deallocate(t2) end @@ -341,70 +338,139 @@ end ! Tau -subroutine update_tau_space(nO,nV,t1,t2,tau) - +subroutine update_tau_space(nO,nV,h_t1,t1,t2,tau) + use gpu implicit none ! in integer, intent(in) :: nO, nV - double precision, intent(in) :: t1(nO,nV), t2(nO,nO,nV,nV) + double precision, intent(in) :: h_t1(nO,nV) + type(gpu_double2), intent(in) :: t1 + type(gpu_double4), intent(in) :: t2 ! out - double precision, intent(out) :: tau(nO,nO,nV,nV) + type(gpu_double4) :: tau ! internal integer :: i,j,a,b +! !$OMP PARALLEL & +! !$OMP SHARED(nO,nV,tau,t2,t1,h_t1) & +! !$OMP PRIVATE(i,j,a,b) & +! !$OMP DEFAULT(NONE) +! !$OMP DO +! do b = 1, nV +! do a = 1, nV +! do j = 1, nO +! do i = 1, nO +! tau%f(i,j,a,b) = t2%f(i,j,a,b) + t1%f(i,a) * h_t1(j,b) +! enddo +! enddo +! enddo +! enddo +! !$OMP END DO +! !$OMP END PARALLEL + + + type(gpu_blas) :: blas + type(gpu_stream) :: stream(nV) + + call gpu_blas_create(blas) + do b=1,nV + call gpu_stream_create(stream(b)) + enddo + !$OMP PARALLEL & - !$OMP SHARED(nO,nV,tau,t2,t1) & + !$OMP SHARED(nO,nV,tau,t2,t1,h_t1,stream,blas) & !$OMP PRIVATE(i,j,a,b) & !$OMP DEFAULT(NONE) - !$OMP DO - do b = 1, nV - do a = 1, nV - do j = 1, nO - do i = 1, nO - tau(i,j,a,b) = t2(i,j,a,b) + t1(i,a) * t1(j,b) - enddo - enddo + do j=1,nO + !$OMP DO + do b=1,nV + call gpu_set_stream(blas,stream(b)) + call gpu_dgeam_c(blas%c, 'N', 'N', nO*1_8, nV*1_8, & + 1.d0, c_loc(t2%f(1,j,1,b)), nO*nO*1_8, & + h_t1(j,b), t1%c, nO*1_8, & + c_loc(tau%f(1,j,1,b)), nO*nO*1_8) enddo + !$OMP END DO enddo - !$OMP END DO !$OMP END PARALLEL + call gpu_synchronize() + + do b=1,nV + call gpu_stream_destroy(stream(b)) + enddo + + call gpu_blas_destroy(blas) + end subroutine update_tau_x_space(nO,nV,tau,tau_x) - + use gpu implicit none ! in - integer, intent(in) :: nO, nV - double precision, intent(in) :: tau(nO,nO,nV,nV) + integer, intent(in) :: nO, nV + type(gpu_double4), intent(in) :: tau ! out - double precision, intent(out) :: tau_x(nO,nO,nV,nV) + type(gpu_double4) :: tau_x ! internal integer :: i,j,a,b +! !$OMP PARALLEL & +! !$OMP SHARED(nO,nV,tau,tau_x) & +! !$OMP PRIVATE(i,j,a,b) & +! !$OMP DEFAULT(NONE) +! !$OMP DO +! do b = 1, nV +! do a = 1, nV +! do j = 1, nO +! do i = 1, nO +! tau_x%f(i,j,a,b) = 2.d0*tau%f(i,j,a,b) - tau%f(i,j,b,a) +! enddo +! enddo +! enddo +! enddo +! !$OMP END DO +! !$OMP END PARALLEL + + type(gpu_blas) :: blas + type(gpu_stream) :: stream(nV) + + call gpu_blas_create(blas) + do a=1,nV + call gpu_stream_create(stream(a)) + enddo + !$OMP PARALLEL & - !$OMP SHARED(nO,nV,tau,tau_x) & + !$OMP SHARED(nO,nV,tau,tau_x,stream,blas) & !$OMP PRIVATE(i,j,a,b) & !$OMP DEFAULT(NONE) !$OMP DO - do b = 1, nV - do a = 1, nV - do j = 1, nO - do i = 1, nO - tau_x(i,j,a,b) = 2.d0*tau(i,j,a,b) - tau(i,j,b,a) - enddo - enddo + do b=1,nV + do a=1,nV + call gpu_set_stream(blas,stream(a)) + call gpu_dgeam_c(blas%c, 'N', 'N', nO*1_8, nO*1_8, & + 2.d0, c_loc(tau%f(1,1,a,b)), nO*1_8, & + -1.d0, c_loc(tau%f(1,1,b,a)), nO*1_8, & + c_loc(tau_x%f(1,1,a,b)), nO*1_8) enddo enddo !$OMP END DO !$OMP END PARALLEL + call gpu_synchronize() + + do b=1,nV + call gpu_stream_destroy(stream(b)) + enddo + + call gpu_blas_destroy(blas) + end ! R1 diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index b59dc0bb..9b161001 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -294,12 +294,12 @@ end ! H_oo subroutine compute_H_oo_chol(nO,nV,tau_x,H_oo) - + use gpu implicit none integer, intent(in) :: nO,nV - double precision, intent(in) :: tau_x(nO, nO, nV, nV) - double precision, intent(out) :: H_oo(nO, nO) + type(gpu_double4), intent(in) :: tau_x + type(gpu_double2), intent(out) :: H_oo integer :: a,b,i,j,u,k @@ -315,7 +315,7 @@ subroutine compute_H_oo_chol(nO,nV,tau_x,H_oo) do b=1,nV do j=1,nO do a=1,nV - tmp_vov(a,j,b) = tau_x(u,j,a,b) + tmp_vov(a,j,b) = tau_x%f(u,j,a,b) enddo enddo enddo @@ -328,7 +328,7 @@ subroutine compute_H_oo_chol(nO,nV,tau_x,H_oo) !$omp do do i = 1, nO do u = 1, nO - H_oo(u,i) = cc_space_f_oo(u,i) + H_oo%f(u,i) = cc_space_f_oo(u,i) enddo enddo !$omp end do nowait @@ -336,7 +336,7 @@ subroutine compute_H_oo_chol(nO,nV,tau_x,H_oo) !$omp end parallel call dgemm('T', 'N', nO, nO, cholesky_mo_num*nV, 1.d0, & tau_kau, cholesky_mo_num*nV, cc_space_v_vo_chol, cholesky_mo_num*nV, & - 1.d0, H_oo, nO) + 1.d0, H_oo%f, nO) end diff --git a/src/gpu/gpu_module.F90 b/src/gpu/gpu_module.F90 index 43754454..51f80ac0 100644 --- a/src/gpu/gpu_module.F90 +++ b/src/gpu/gpu_module.F90 @@ -2,6 +2,52 @@ module gpu use, intrinsic :: iso_c_binding implicit none +! Data types +! ---------- + + type gpu_double1 + type(c_ptr) :: c + double precision, pointer :: f(:) + end type + + type gpu_double2 + type(c_ptr) :: c + double precision, pointer :: f(:,:) + end type + + type gpu_double3 + type(c_ptr) :: c + double precision, pointer :: f(:,:,:) + end type + + type gpu_double4 + type(c_ptr) :: c + double precision, pointer :: f(:,:,:,:) + end type + + type gpu_double5 + type(c_ptr) :: c + double precision, pointer :: f(:,:,:,:,:) + end type + + type gpu_double6 + type(c_ptr) :: c + double precision, pointer :: f(:,:,:,:,:,:) + end type + + + type gpu_blas + type(c_ptr) :: c + end type + + type gpu_stream + type(c_ptr) :: c + end type + + +! C interfaces +! ------------ + interface integer function gpu_ndevices() bind(C) end function @@ -43,100 +89,394 @@ module gpu integer(c_int64_t), value :: n end subroutine - subroutine gpu_stream_create(stream) bind(C) + subroutine gpu_stream_create_c(stream) bind(C, name='gpu_stream_create') import type(c_ptr) :: stream end subroutine - subroutine gpu_stream_destroy(stream) bind(C) + subroutine gpu_stream_destroy_c(stream) bind(C, name='gpu_stream_destroy') import type(c_ptr) :: stream end subroutine - subroutine gpu_set_stream(handle, stream) bind(C) + subroutine gpu_set_stream_c(handle, stream) bind(C, name='gpu_set_stream') import type(c_ptr) :: handle, stream end subroutine - subroutine gpu_synchronize() + subroutine gpu_synchronize() bind(C) + import end subroutine - subroutine gpu_blas_create(handle) bind(C) + subroutine gpu_blas_create_c(handle) bind(C, name='gpu_blas_create') import type(c_ptr) :: handle end subroutine - subroutine gpu_blas_destroy(handle) bind(C) + subroutine gpu_blas_destroy_c(handle) bind(C, name='gpu_blas_destroy') import type(c_ptr) :: handle end subroutine - subroutine gpu_ddot(handle, n, dx, incx, dy, incy, res) bind(C) + subroutine gpu_ddot_c(handle, n, dx, incx, dy, incy, res) bind(C, name='gpu_ddot') import - type(c_ptr), intent(in) :: handle - integer(c_int64_t), value :: n, incx, incy - real(c_double), intent(in) :: dx(*), dy(*) - real(c_double), intent(out) :: res + type(c_ptr), intent(in), value :: handle + integer(c_int64_t), value :: n, incx, incy + type(c_ptr), intent(in), value :: dx, dy + real(c_double), intent(out) :: res end subroutine - subroutine gpu_sdot(handle, n, dx, incx, dy, incy, res) bind(C) + subroutine gpu_sdot_c(handle, n, dx, incx, dy, incy, res) bind(C, name='gpu_sdot') import - type(c_ptr), intent(in) :: handle - integer(c_int64_t), value :: n, incx, incy - real(c_float), intent(in) :: dx(*), dy(*) + type(c_ptr), intent(in), value :: handle + integer(c_int64_t), value :: n, incx, incy + type(c_ptr), intent(in), value :: dx, dy real(c_float), intent(out) :: res end subroutine + subroutine gpu_dgeam_c(handle, transa, transb, m, n, alpha, a, lda, beta, & + b, ldb, c, ldc) bind(C, name='gpu_dgeam') + import + type(c_ptr), intent(in), value :: handle + character(c_char), intent(in), value :: transa, transb + integer(c_int64_t), intent(in), value :: m, n, lda, ldb, ldc + real(c_double), intent(in), value :: alpha, beta + type(c_ptr), value :: a, b, c + end subroutine + end interface + +! Polymorphic interfaces +! ---------------------- + + interface gpu_allocate + procedure gpu_allocate_double1 & + ,gpu_allocate_double2 & + ,gpu_allocate_double3 & + ,gpu_allocate_double4 & + ,gpu_allocate_double5 & + ,gpu_allocate_double6 + end interface gpu_allocate + + interface gpu_deallocate + procedure gpu_deallocate_double1 & + ,gpu_deallocate_double2 & + ,gpu_deallocate_double3 & + ,gpu_deallocate_double4 & + ,gpu_deallocate_double5 & + ,gpu_deallocate_double6 + end interface gpu_deallocate + + interface gpu_upload + procedure gpu_upload_double1 & + ,gpu_upload_double2 & + ,gpu_upload_double3 & + ,gpu_upload_double4 & + ,gpu_upload_double5 & + ,gpu_upload_double6 + end interface gpu_upload + + interface gpu_download + procedure gpu_download_double1 & + ,gpu_download_double2 & + ,gpu_download_double3 & + ,gpu_download_double4 & + ,gpu_download_double5 & + ,gpu_download_double6 + end interface gpu_download + + interface gpu_copy + procedure gpu_copy_double1 & + ,gpu_copy_double2 & + ,gpu_copy_double3 & + ,gpu_copy_double4 & + ,gpu_copy_double5 & + ,gpu_copy_double6 + end interface gpu_copy + + contains - subroutine gpu_allocate_double(ptr, s) - implicit none - double precision, pointer, intent(inout) :: ptr - integer, intent(in) :: s(:) - type(c_ptr) :: cptr +! gpu_allocate +! ------------ - call gpu_allocate_c(cptr, sum(s*1_8)*8_8) - call c_f_pointer(cptr, ptr, s) + subroutine gpu_allocate_double1(ptr, s) + implicit none + type(gpu_double1), intent(inout) :: ptr + integer, intent(in) :: s + + call gpu_allocate_c(ptr%c, s*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s /)) end subroutine - subroutine gpu_deallocate_double(ptr) + subroutine gpu_allocate_double2(ptr, s1, s2) implicit none - double precision, pointer, intent(inout) :: ptr - type(c_ptr) :: cptr - cptr = c_loc(ptr) - call gpu_deallocate_c(cptr) - NULLIFY(ptr) + type(gpu_double2), intent(inout) :: ptr + integer, intent(in) :: s1, s2 + + call gpu_allocate_c(ptr%c, s1*s2*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s1, s2 /)) + end subroutine + + subroutine gpu_allocate_double3(ptr, s1, s2, s3) + implicit none + type(gpu_double3), intent(inout) :: ptr + integer, intent(in) :: s1, s2, s3 + + call gpu_allocate_c(ptr%c, s1*s2*s3*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s1, s2, s3 /)) + end subroutine + + subroutine gpu_allocate_double4(ptr, s1, s2, s3, s4) + implicit none + type(gpu_double4), intent(inout) :: ptr + integer, intent(in) :: s1, s2, s3, s4 + + call gpu_allocate_c(ptr%c, s1*s2*s3*s4*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s1, s2, s3, s4 /)) + end subroutine + + subroutine gpu_allocate_double5(ptr, s1, s2, s3, s4, s5) + implicit none + type(gpu_double5), intent(inout) :: ptr + integer, intent(in) :: s1, s2, s3, s4, s5 + + call gpu_allocate_c(ptr%c, s1*s2*s3*s4*s5*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s1, s2, s3, s4, s5 /)) + end subroutine + + subroutine gpu_allocate_double6(ptr, s1, s2, s3, s4, s5, s6) + implicit none + type(gpu_double6), intent(inout) :: ptr + integer, intent(in) :: s1, s2, s3, s4, s5, s6 + + call gpu_allocate_c(ptr%c, s1*s2*s3*s4*s5*s6*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s1, s2, s3, s4, s5, s6 /)) + end subroutine + + +! gpu_deallocate +! -------------- + + subroutine gpu_deallocate_double1(ptr) + implicit none + type(gpu_double1), intent(inout) :: ptr + call gpu_deallocate_c(ptr%c) + NULLIFY(ptr%f) + end subroutine + + subroutine gpu_deallocate_double2(ptr) + implicit none + type(gpu_double2), intent(inout) :: ptr + call gpu_deallocate_c(ptr%c) + NULLIFY(ptr%f) + end subroutine + + subroutine gpu_deallocate_double3(ptr) + implicit none + type(gpu_double3), intent(inout) :: ptr + call gpu_deallocate_c(ptr%c) + NULLIFY(ptr%f) + end subroutine + + subroutine gpu_deallocate_double4(ptr) + implicit none + type(gpu_double4), intent(inout) :: ptr + call gpu_deallocate_c(ptr%c) + NULLIFY(ptr%f) + end subroutine + + subroutine gpu_deallocate_double5(ptr) + implicit none + type(gpu_double5), intent(inout) :: ptr + call gpu_deallocate_c(ptr%c) + NULLIFY(ptr%f) + end subroutine + + subroutine gpu_deallocate_double6(ptr) + implicit none + type(gpu_double6), intent(inout) :: ptr + call gpu_deallocate_c(ptr%c) + NULLIFY(ptr%f) + end subroutine + + +! gpu_upload +! ---------- + + subroutine gpu_upload_double1(cpu_ptr, gpu_ptr) + implicit none + double precision, intent(in) :: cpu_ptr(:) + type(gpu_double1), intent(in) :: gpu_ptr + call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, 8_8*size(gpu_ptr%f)) + end subroutine + + subroutine gpu_upload_double2(cpu_ptr, gpu_ptr) + implicit none + double precision, intent(in) :: cpu_ptr(:,:) + type(gpu_double2), intent(in) :: gpu_ptr + call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, product(shape(gpu_ptr%f)*1_8)*8_8) + end subroutine + + subroutine gpu_upload_double3(cpu_ptr, gpu_ptr) + implicit none + double precision, intent(in) :: cpu_ptr(:,:,:) + type(gpu_double3), intent(in) :: gpu_ptr + call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, product(shape(gpu_ptr%f)*1_8)*8_8) + end subroutine + + subroutine gpu_upload_double4(cpu_ptr, gpu_ptr) + implicit none + double precision, intent(in) :: cpu_ptr(:,:,:,:) + type(gpu_double4), intent(in) :: gpu_ptr + call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, product(shape(gpu_ptr%f)*1_8)*8_8) + end subroutine + + subroutine gpu_upload_double5(cpu_ptr, gpu_ptr) + implicit none + double precision, intent(in) :: cpu_ptr(:,:,:,:,:) + type(gpu_double5), intent(in) :: gpu_ptr + call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, product(shape(gpu_ptr%f)*1_8)*8_8) + end subroutine + + subroutine gpu_upload_double6(cpu_ptr, gpu_ptr) + implicit none + double precision, intent(in) :: cpu_ptr(:,:,:,:,:,:) + type(gpu_double6), intent(in) :: gpu_ptr + call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, product(shape(gpu_ptr%f)*1_8)*8_8) + end subroutine + + +! gpu_download +! ------------ + + subroutine gpu_download_double1(gpu_ptr, cpu_ptr) + implicit none + type(gpu_double1), intent(in) :: gpu_ptr + double precision, intent(in) :: cpu_ptr(:) + call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*size(gpu_ptr%f)) + end subroutine + + subroutine gpu_download_double2(gpu_ptr, cpu_ptr) + implicit none + type(gpu_double2), intent(in) :: gpu_ptr + double precision, intent(in) :: cpu_ptr(:,:) + call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*product(shape(gpu_ptr%f)*1_8)) + end subroutine + + subroutine gpu_download_double3(gpu_ptr, cpu_ptr) + implicit none + type(gpu_double3), intent(in) :: gpu_ptr + double precision, intent(in) :: cpu_ptr(:,:,:) + call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*product(shape(gpu_ptr%f)*1_8)) + end subroutine + + subroutine gpu_download_double4(gpu_ptr, cpu_ptr) + implicit none + type(gpu_double4), intent(in) :: gpu_ptr + double precision, intent(in) :: cpu_ptr(:,:,:,:) + call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*product(shape(gpu_ptr%f)*1_8)) + end subroutine + + subroutine gpu_download_double5(gpu_ptr, cpu_ptr) + implicit none + type(gpu_double5), intent(in) :: gpu_ptr + double precision, intent(in) :: cpu_ptr(:,:,:,:,:) + call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*product(shape(gpu_ptr%f)*1_8)) + end subroutine + + subroutine gpu_download_double6(gpu_ptr, cpu_ptr) + implicit none + type(gpu_double6), intent(in) :: gpu_ptr + double precision, intent(in) :: cpu_ptr(:,:,:,:,:,:) + call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*product(shape(gpu_ptr%f)*1_8)) + end subroutine + +! gpu_copy +! -------- + + subroutine gpu_copy_double1(gpu_ptr_src, gpu_ptr_dest) + implicit none + type(gpu_double1), intent(in) :: gpu_ptr_src + type(gpu_double1), intent(in) :: gpu_ptr_dest + call gpu_copy_c(gpu_ptr_src%c, gpu_ptr_dest%c, 8_8*size(gpu_ptr_dest%f)) + end subroutine + + subroutine gpu_copy_double2(gpu_ptr_src, gpu_ptr_dest) + implicit none + type(gpu_double2), intent(in) :: gpu_ptr_src + type(gpu_double2), intent(in) :: gpu_ptr_dest + call gpu_copy_c(gpu_ptr_src%c, gpu_ptr_dest%c, 8_8*product(shape(gpu_ptr_dest%f)*1_8)) + end subroutine + + subroutine gpu_copy_double3(gpu_ptr_src, gpu_ptr_dest) + implicit none + type(gpu_double3), intent(in) :: gpu_ptr_src + type(gpu_double3), intent(in) :: gpu_ptr_dest + call gpu_copy_c(gpu_ptr_src%c, gpu_ptr_dest%c, 8_8*product(shape(gpu_ptr_dest%f)*1_8)) + end subroutine + + subroutine gpu_copy_double4(gpu_ptr_src, gpu_ptr_dest) + implicit none + type(gpu_double4), intent(in) :: gpu_ptr_src + type(gpu_double4), intent(in) :: gpu_ptr_dest + call gpu_copy_c(gpu_ptr_src%c, gpu_ptr_dest%c, 8_8*product(shape(gpu_ptr_dest%f)*1_8)) + end subroutine + + subroutine gpu_copy_double5(gpu_ptr_src, gpu_ptr_dest) + implicit none + type(gpu_double5), intent(in) :: gpu_ptr_src + type(gpu_double5), intent(in) :: gpu_ptr_dest + call gpu_copy_c(gpu_ptr_src%c, gpu_ptr_dest%c, 8_8*product(shape(gpu_ptr_dest%f)*1_8)) + end subroutine + + subroutine gpu_copy_double6(gpu_ptr_src, gpu_ptr_dest) + implicit none + type(gpu_double6), intent(in) :: gpu_ptr_src + type(gpu_double6), intent(in) :: gpu_ptr_dest + call gpu_copy_c(gpu_ptr_src%c, gpu_ptr_dest%c, 8_8*product(shape(gpu_ptr_dest%f)*1_8)) + end subroutine + + +! gpu_stream +! ---------- + + subroutine gpu_stream_create(stream) + import + type(gpu_stream) :: stream + call gpu_stream_create_c(stream%c) + end subroutine + + subroutine gpu_stream_destroy(stream) + import + type(gpu_stream) :: stream + call gpu_stream_destroy_c(stream%c) + end subroutine + + subroutine gpu_set_stream(handle, stream) + import + type(gpu_blas) :: handle + type(gpu_stream) :: stream + call gpu_set_stream_c(handle%c, stream%c) + end subroutine + + +! gpu_blas +! -------- + + subroutine gpu_blas_create(handle) + import + type(gpu_blas) :: handle + call gpu_blas_create_c(handle%c) + end subroutine + + subroutine gpu_blas_destroy(handle) + import + type(gpu_blas) :: handle + call gpu_blas_destroy_c(handle%c) end subroutine end module -subroutine gpu_upload_double(cpu_ptr, gpu_ptr, n) - use gpu - implicit none - double precision, intent(in) :: cpu_ptr(*) - double precision, intent(in) :: gpu_ptr(*) - integer(c_int64_t), intent(in) :: n - call gpu_upload_c(c_loc(cpu_ptr), c_loc(gpu_ptr), 8_8*n) -end subroutine - -subroutine gpu_download_double(gpu_ptr, cpu_ptr, n) - use gpu - implicit none - double precision, intent(in) :: gpu_ptr(*) - double precision, intent(in) :: cpu_ptr(*) - integer(c_int64_t), intent(in) :: n - call gpu_download_c(c_loc(gpu_ptr), c_loc(cpu_ptr), 8_8*n) -end subroutine - -subroutine gpu_copy_double(gpu_ptr_src, gpu_ptr_dest, n) - use gpu - implicit none - double precision, intent(in) :: gpu_ptr_src(*) - double precision, intent(in) :: gpu_ptr_dest(*) - integer(c_int64_t), intent(in) :: n - call gpu_copy_c(c_loc(gpu_ptr_src), c_loc(gpu_ptr_dest), 8_8*n) -end subroutine - diff --git a/src/gpu_x86/gpu.c b/src/gpu_x86/gpu.c index 41ede396..5f42cb0d 100644 --- a/src/gpu_x86/gpu.c +++ b/src/gpu_x86/gpu.c @@ -251,7 +251,7 @@ void gpu_dgeam(const void* handle, const char transa, const char transb, const i if (alpha == 0.) { for (int64_t j=0 ; j Date: Fri, 28 Jun 2024 11:00:58 +0200 Subject: [PATCH 097/159] Added Nvidia module --- src/ccsd/ccsd_space_orb_sub.irp.f | 10 +- src/gpu/gpu_module.F90 | 6 +- src/gpu_nvidia/LIB | 1 + src/gpu_nvidia/NEED | 1 + src/gpu_nvidia/README.rst | 5 + src/gpu_nvidia/gpu.c | 327 ++++++++++++++++++++++++++++++ src/gpu_x86/gpu.c | 40 ++-- 7 files changed, 359 insertions(+), 31 deletions(-) create mode 100644 src/gpu_nvidia/LIB create mode 100644 src/gpu_nvidia/NEED create mode 100644 src/gpu_nvidia/README.rst create mode 100644 src/gpu_nvidia/gpu.c diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 455d62f7..e7c9b1ab 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -384,17 +384,17 @@ subroutine update_tau_space(nO,nV,h_t1,t1,t2,tau) !$OMP SHARED(nO,nV,tau,t2,t1,h_t1,stream,blas) & !$OMP PRIVATE(i,j,a,b) & !$OMP DEFAULT(NONE) - do j=1,nO - !$OMP DO - do b=1,nV - call gpu_set_stream(blas,stream(b)) + !$OMP DO + do b=1,nV + call gpu_set_stream(blas,stream(b)) + do j=1,nO call gpu_dgeam_c(blas%c, 'N', 'N', nO*1_8, nV*1_8, & 1.d0, c_loc(t2%f(1,j,1,b)), nO*nO*1_8, & h_t1(j,b), t1%c, nO*1_8, & c_loc(tau%f(1,j,1,b)), nO*nO*1_8) enddo - !$OMP END DO enddo + !$OMP END DO !$OMP END PARALLEL call gpu_synchronize() diff --git a/src/gpu/gpu_module.F90 b/src/gpu/gpu_module.F90 index 51f80ac0..d1ddad4c 100644 --- a/src/gpu/gpu_module.F90 +++ b/src/gpu/gpu_module.F90 @@ -120,7 +120,7 @@ module gpu subroutine gpu_ddot_c(handle, n, dx, incx, dy, incy, res) bind(C, name='gpu_ddot') import - type(c_ptr), intent(in), value :: handle + type(c_ptr), intent(in) :: handle integer(c_int64_t), value :: n, incx, incy type(c_ptr), intent(in), value :: dx, dy real(c_double), intent(out) :: res @@ -128,7 +128,7 @@ module gpu subroutine gpu_sdot_c(handle, n, dx, incx, dy, incy, res) bind(C, name='gpu_sdot') import - type(c_ptr), intent(in), value :: handle + type(c_ptr), intent(in) :: handle integer(c_int64_t), value :: n, incx, incy type(c_ptr), intent(in), value :: dx, dy real(c_float), intent(out) :: res @@ -137,7 +137,7 @@ module gpu subroutine gpu_dgeam_c(handle, transa, transb, m, n, alpha, a, lda, beta, & b, ldb, c, ldc) bind(C, name='gpu_dgeam') import - type(c_ptr), intent(in), value :: handle + type(c_ptr), intent(in) :: handle character(c_char), intent(in), value :: transa, transb integer(c_int64_t), intent(in), value :: m, n, lda, ldb, ldc real(c_double), intent(in), value :: alpha, beta diff --git a/src/gpu_nvidia/LIB b/src/gpu_nvidia/LIB new file mode 100644 index 00000000..91f54e91 --- /dev/null +++ b/src/gpu_nvidia/LIB @@ -0,0 +1 @@ +-lcudart -lcublas -lcublasLt diff --git a/src/gpu_nvidia/NEED b/src/gpu_nvidia/NEED new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/gpu_nvidia/NEED @@ -0,0 +1 @@ + diff --git a/src/gpu_nvidia/README.rst b/src/gpu_nvidia/README.rst new file mode 100644 index 00000000..5dcfca92 --- /dev/null +++ b/src/gpu_nvidia/README.rst @@ -0,0 +1,5 @@ +========== +gpu_nvidia +========== + +Nvidia implementation of GPU routines. Uses CUDA and CUBLAS libraries. diff --git a/src/gpu_nvidia/gpu.c b/src/gpu_nvidia/gpu.c new file mode 100644 index 00000000..f0bd247a --- /dev/null +++ b/src/gpu_nvidia/gpu.c @@ -0,0 +1,327 @@ +#include +#include +#include +#include +#include + +#include +#include + + +/* Generic functions */ + +int gpu_ndevices() { + int ngpus; + cudaGetDeviceCount(&ngpus); + return ngpus; +} + +void gpu_set_device(int32_t igpu) { + cudaSetDevice(igpu); +} + + +/* Allocation functions */ + +void gpu_allocate(void** ptr, const int64_t size) { + size_t free, total; + cudaError_t rc = cudaMemGetInfo( &free, &total ); + if (rc != cudaSuccess) { + free = INT64_MAX; + } + + /* Use managed memory if it does not fit on the GPU */ + if (size < free && size < total/2) { +// rc= cudaMalloc(ptr, size); + rc = cudaMallocManaged(ptr, size, cudaMemAttachGlobal); + } else { + rc = cudaMallocManaged(ptr, size, cudaMemAttachGlobal); + } + assert (rc == cudaSuccess); +} + +void gpu_deallocate(void** ptr) { + assert (*ptr != NULL); + cudaFree(*ptr); + *ptr = NULL; +} + + +/* Memory transfer functions */ + +void gpu_upload(const void* cpu_ptr, void* gpu_ptr, const int64_t n) { + cudaMemcpy (gpu_ptr, cpu_ptr, n, cudaMemcpyHostToDevice); +} + +void gpu_download(const void* gpu_ptr, void* cpu_ptr, const int64_t n) { + cudaMemcpy (cpu_ptr, gpu_ptr, n, cudaMemcpyDeviceToHost); +} + +void gpu_copy(const void* gpu_ptr_src, void* gpu_ptr_dest, const int64_t n) { + cudaMemcpy (gpu_ptr_dest, gpu_ptr_src, n, cudaMemcpyDeviceToDevice); +} + + +/* Streams */ + +void gpu_stream_create(void** ptr) { + cudaStream_t stream; + cudaError_t rc = cudaStreamCreate(&stream); + assert (rc == cudaSuccess); + *ptr = (void*) stream; +} + +void gpu_stream_destroy(void** ptr) { + assert (*ptr != NULL); + cudaError_t rc = cudaStreamDestroy( (cudaStream_t) *ptr); + assert (rc == cudaSuccess); + *ptr = NULL; +} + +void gpu_set_stream(void** handle, void** stream) { + cublasSetStream( (cublasHandle_t) *handle, (cudaStream_t) *stream); +} + +void gpu_synchronize() { + cudaDeviceSynchronize(); +} + + +/* BLAS functions */ + +void gpu_blas_create(void** handle) { + cublasHandle_t cublas_handle; + cublasStatus_t rc = cublasCreate(&cublas_handle); + assert (rc == CUBLAS_STATUS_SUCCESS); + *handle = (void*) cublas_handle; +} + + +void gpu_blas_destroy(void** handle) { + assert (*handle != NULL); + cublasStatus_t rc = cublasDestroy( (cublasHandle_t) *handle); + assert (rc == CUBLAS_STATUS_SUCCESS); + *handle = NULL; +} + + +void gpu_ddot(void** handle, const int64_t n, const double* x, const int64_t incx, const double* y, const int64_t incy, double* result) { + assert (*handle != NULL); + + /* Convert to int32_t */ + int32_t n_, incx_, incy_; + + n_ = (int32_t) n; + incx_ = (int32_t) incx; + incy_ = (int32_t) incy; + + /* Check for integer overflows */ + assert ( (int64_t) n_ == n ); + assert ( (int64_t) incx_ == incx); + assert ( (int64_t) incy_ == incy); + + cublasDdot((cublasHandle_t) *handle, n_, x, incx_, y, incy_, result); +} + + + +void gpu_sdot(void** handle, const int64_t n, const float* x, const int64_t incx, const float* y, const int64_t incy, float* result) { + assert (*handle != NULL); + + /* Convert to int32_t */ + int32_t n_, incx_, incy_; + + n_ = (int32_t) n; + incx_ = (int32_t) incx; + incy_ = (int32_t) incy; + + /* Check for integer overflows */ + assert ( (int64_t) n_ == n ); + assert ( (int64_t) incx_ == incx); + assert ( (int64_t) incy_ == incy); + + cublasSdot((cublasHandle_t) *handle, n_, x, incx_, y, incy_, result); +} + + + +void gpu_dgemv(void** handle, const char transa, const int64_t m, const int64_t n, const double alpha, + const double* a, const int64_t lda, const double* x, const int64_t incx, const double beta, double* y, const int64_t incy) { + + assert (*handle != NULL); + + /* Convert to int32_t */ + int32_t m_, n_, lda_, incx_, incy_; + + m_ = (int32_t) m; + n_ = (int32_t) n; + lda_ = (int32_t) lda; + incx_ = (int32_t) incx; + incy_ = (int32_t) incy; + + /* Check for integer overflows */ + assert ( (int64_t) m_ == m ); + assert ( (int64_t) n_ == n ); + assert ( (int64_t) lda_ == lda ); + assert ( (int64_t) incx_ == incx); + assert ( (int64_t) incy_ == incy); + + cublasOperation_t transa_ = CUBLAS_OP_N; + if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; + + cublasDgemv((cublasHandle_t) *handle, transa_, m_, n_, &alpha, a, lda_, x, incx_, &beta, y, incy_); +} + + + +void gpu_sgemv(void** handle, const char transa, const int64_t m, const int64_t n, const float alpha, + const float* a, const int64_t lda, const float* x, const int64_t incx, const float beta, float* y, const int64_t incy) { + + assert (*handle != NULL); + + /* Convert to int32_t */ + int32_t m_, n_, lda_, incx_, incy_; + + m_ = (int32_t) m; + n_ = (int32_t) n; + lda_ = (int32_t) lda; + incx_ = (int32_t) incx; + incy_ = (int32_t) incy; + + /* Check for integer overflows */ + assert ( (int64_t) m_ == m ); + assert ( (int64_t) n_ == n ); + assert ( (int64_t) lda_ == lda ); + assert ( (int64_t) incx_ == incx); + assert ( (int64_t) incy_ == incy); + + cublasOperation_t transa_ = CUBLAS_OP_N; + if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; + + cublasSgemv((cublasHandle_t) *handle, transa_, m_, n_, &alpha, a, lda_, x, incx_, &beta, y, incy_); +} + + +void gpu_dgemm(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, + const double* a, const int64_t lda, const double* b, const int64_t ldb, const double beta, double* c, const int64_t ldc) { + + assert (*handle != NULL); + + /* Convert to int32_t */ + int32_t m_, n_, k_, lda_, ldb_, ldc_; + + m_ = (int32_t) m; + n_ = (int32_t) n; + k_ = (int32_t) k; + lda_ = (int32_t) lda; + ldb_ = (int32_t) ldb; + ldc_ = (int32_t) ldc; + + /* Check for integer overflows */ + assert ( (int64_t) m_ == m ); + assert ( (int64_t) n_ == n ); + assert ( (int64_t) k_ == k ); + assert ( (int64_t) lda_ == lda); + assert ( (int64_t) ldb_ == ldb); + assert ( (int64_t) ldc_ == ldc); + + cublasOperation_t transa_ = CUBLAS_OP_N; + cublasOperation_t transb_ = CUBLAS_OP_N; + if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; + if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; + + cublasDgemm((cublasHandle_t) *handle, transa_, transb_, m_, n_, k_, &alpha, a, lda_, b, ldb_, &beta, c, ldc_); +} + + + +void gpu_sgemm(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, + const float* a, const int64_t lda, const float* b, const int64_t ldb, const float beta, float* c, const int64_t ldc) { + + assert (*handle != NULL); + + /* Convert to int32_t */ + int32_t m_, n_, k_, lda_, ldb_, ldc_; + + m_ = (int32_t) m; + n_ = (int32_t) n; + k_ = (int32_t) k; + lda_ = (int32_t) lda; + ldb_ = (int32_t) ldb; + ldc_ = (int32_t) ldc; + + /* Check for integer overflows */ + assert ( (int64_t) m_ == m ); + assert ( (int64_t) n_ == n ); + assert ( (int64_t) k_ == k ); + assert ( (int64_t) lda_ == lda); + assert ( (int64_t) ldb_ == ldb); + assert ( (int64_t) ldc_ == ldc); + + cublasOperation_t transa_ = CUBLAS_OP_N; + cublasOperation_t transb_ = CUBLAS_OP_N; + if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; + if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; + + cublasSgemm((cublasHandle_t) *handle, transa_, transb_, m_, n_, k_, &alpha, a, lda_, b, ldb_, &beta, c, ldc_); +} + + +void gpu_dgeam(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, + const double* a, const int64_t lda, const double beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { + assert (*handle != NULL); + + /* Convert to int32_t */ + int32_t m_, n_, lda_, ldb_, ldc_; + + m_ = (int32_t) m; + n_ = (int32_t) n; + lda_ = (int32_t) lda; + ldb_ = (int32_t) ldb; + ldc_ = (int32_t) ldc; + + /* Check for integer overflows */ + assert ( (int64_t) m_ == m ); + assert ( (int64_t) n_ == n ); + assert ( (int64_t) lda_ == lda); + assert ( (int64_t) ldb_ == ldb); + assert ( (int64_t) ldc_ == ldc); + + cublasOperation_t transa_ = CUBLAS_OP_N; + cublasOperation_t transb_ = CUBLAS_OP_N; + if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; + if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; + + cublasDgeam((cublasHandle_t) *handle, transa_, transb_, m_, n_, &alpha, a, lda_, &beta, b, ldb_, c, ldc_); + +} + + +void gpu_sgeam(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const float alpha, + const float* a, const int64_t lda, const float beta, const float* b, const int64_t ldb, float* c, const int64_t ldc) { + assert (*handle != NULL); + + /* Convert to int32_t */ + int32_t m_, n_, lda_, ldb_, ldc_; + + m_ = (int32_t) m; + n_ = (int32_t) n; + lda_ = (int32_t) lda; + ldb_ = (int32_t) ldb; + ldc_ = (int32_t) ldc; + + /* Check for integer overflows */ + assert ( (int64_t) m_ == m ); + assert ( (int64_t) n_ == n ); + assert ( (int64_t) lda_ == lda); + assert ( (int64_t) ldb_ == ldb); + assert ( (int64_t) ldc_ == ldc); + + cublasOperation_t transa_ = CUBLAS_OP_N; + cublasOperation_t transb_ = CUBLAS_OP_N; + if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; + if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; + + cublasSgeam((cublasHandle_t) *handle, transa_, transb_, m_, n_, &alpha, a, lda_, &beta, b, ldb_, c, ldc_); + +} diff --git a/src/gpu_x86/gpu.c b/src/gpu_x86/gpu.c index 5f42cb0d..ac7c3620 100644 --- a/src/gpu_x86/gpu.c +++ b/src/gpu_x86/gpu.c @@ -56,7 +56,7 @@ void gpu_stream_destroy(void** ptr) { *ptr = NULL; } -void gpu_set_stream(void* handle, void* stream) { +void gpu_set_stream(void** handle, void** stream) { return; } @@ -79,8 +79,8 @@ void gpu_blas_destroy(void** handle) { double ddot_(const int32_t* n, const double* x, const int32_t* incx, const double* y, const int32_t* incy); -void gpu_ddot(const void* handle, const int64_t n, const double* x, const int64_t incx, const double* y, const int64_t incy, double* result) { - assert (handle != NULL); +void gpu_ddot(void** handle, const int64_t n, const double* x, const int64_t incx, const double* y, const int64_t incy, double* result) { + assert (*handle != NULL); /* Convert to int32_t */ int32_t n_, incx_, incy_; @@ -100,8 +100,8 @@ void gpu_ddot(const void* handle, const int64_t n, const double* x, const int64_ float sdot_(const int32_t* n, const float* x, const int32_t* incx, const float* y, const int32_t* incy); -void gpu_sdot(const void* handle, const int64_t n, const float* x, const int64_t incx, const float* y, const int64_t incy, float* result) { - assert (handle != NULL); +void gpu_sdot(void** handle, const int64_t n, const float* x, const int64_t incx, const float* y, const int64_t incy, float* result) { + assert (*handle != NULL); /* Convert to int32_t */ int32_t n_, incx_, incy_; @@ -122,10 +122,10 @@ void gpu_sdot(const void* handle, const int64_t n, const float* x, const int64_t void dgemv_(const char* transa, const int32_t* m, const int32_t* n, const double* alpha, const double* a, const int32_t* lda, const double* x, const int32_t* incx, const double* beta, double* y, const int32_t* incy); -void gpu_dgemv(const void* handle, const char transa, const int64_t m, const int64_t n, const double alpha, +void gpu_dgemv(void** handle, const char transa, const int64_t m, const int64_t n, const double alpha, const double* a, const int64_t lda, const double* x, const int64_t incx, const double beta, double* y, const int64_t incy) { - assert (handle != NULL); + assert (*handle != NULL); /* Convert to int32_t */ int32_t m_, n_, lda_, incx_, incy_; @@ -150,10 +150,10 @@ void gpu_dgemv(const void* handle, const char transa, const int64_t m, const int void sgemv_(const char* transa, const int32_t* m, const int32_t* n, const float* alpha, const float* a, const int32_t* lda, const float* x, const int32_t* incx, const float* beta, float* y, const int32_t* incy); -void gpu_sgemv(const void* handle, const char transa, const int64_t m, const int64_t n, const float alpha, +void gpu_sgemv(void** handle, const char transa, const int64_t m, const int64_t n, const float alpha, const float* a, const int64_t lda, const float* x, const int64_t incx, const float beta, float* y, const int64_t incy) { - assert (handle != NULL); + assert (*handle != NULL); /* Convert to int32_t */ int32_t m_, n_, lda_, incx_, incy_; @@ -178,10 +178,10 @@ void gpu_sgemv(const void* handle, const char transa, const int64_t m, const int void dgemm_(const char* transa, const char* transb, const int32_t* m, const int32_t* n, const int32_t* k, const double* alpha, const double* a, const int32_t* lda, const double* b, const int32_t* ldb, const double* beta, double* c, const int32_t* ldc); -void gpu_dgemm(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, +void gpu_dgemm(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, const double* a, const int64_t lda, const double* b, const int64_t ldb, const double beta, double* c, const int64_t ldc) { - assert (handle != NULL); + assert (*handle != NULL); /* Convert to int32_t */ int32_t m_, n_, k_, lda_, ldb_, ldc_; @@ -209,10 +209,10 @@ void gpu_dgemm(const void* handle, const char transa, const char transb, const i void sgemm_(const char* transa, const char* transb, const int32_t* m, const int32_t* n, const int32_t* k, const float* alpha, const float* a, const int32_t* lda, const float* b, const int32_t* ldb, const float* beta, float* c, const int32_t* ldc); -void gpu_sgemm(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, +void gpu_sgemm(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, const float* a, const int64_t lda, const float* b, const int64_t ldb, const float beta, float* c, const int64_t ldc) { - assert (handle != NULL); + assert (*handle != NULL); /* Convert to int32_t */ int32_t m_, n_, k_, lda_, ldb_, ldc_; @@ -236,12 +236,9 @@ void gpu_sgemm(const void* handle, const char transa, const char transb, const i } -void gpu_dgeam(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, +void gpu_dgeam(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, const double* a, const int64_t lda, const double beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { - if (handle == NULL) { - perror("NULL handle"); - exit(-1); - } + assert (*handle != NULL); if ( (transa == 'N' && transb == 'N') || (transa == 'n' && transb == 'N') || @@ -371,12 +368,9 @@ void gpu_dgeam(const void* handle, const char transa, const char transb, const i } -void gpu_sgeam(const void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const float alpha, +void gpu_sgeam(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const float alpha, const float* a, const int64_t lda, const float beta, const float* b, const int64_t ldb, float* c, const int64_t ldc) { - if (handle == NULL) { - perror("NULL handle"); - exit(-1); - } + assert (*handle != NULL); if ( (transa == 'N' && transb == 'N') || (transa == 'n' && transb == 'N') || From 461e2164f8bc3261f46a861dad7ed2a3a2fcccec Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Fri, 28 Jun 2024 15:04:34 +0200 Subject: [PATCH 098/159] few modif in TC int --- plugins/local/tc_int/jast_grad_full.irp.f | 190 ++++++++-------------- plugins/local/tc_int/jast_utils_bh.irp.f | 43 ----- 2 files changed, 69 insertions(+), 164 deletions(-) delete mode 100644 plugins/local/tc_int/jast_utils_bh.irp.f diff --git a/plugins/local/tc_int/jast_grad_full.irp.f b/plugins/local/tc_int/jast_grad_full.irp.f index 599d3779..2f6abf39 100644 --- a/plugins/local/tc_int/jast_grad_full.irp.f +++ b/plugins/local/tc_int/jast_grad_full.irp.f @@ -58,7 +58,7 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) integer :: jpoint, i_nucl, p, mpA, npA, opA double precision :: r2(3) double precision :: dx, dy, dz, r12, tmp - double precision :: rn(3), f1A, grad1_f1A(3), f2A, grad2_f2A(3), g12, grad1_g12(3) + double precision :: rn(3), f1A, grad1_f1A(3), f2A, g12, grad1_g12(3) double precision :: tmp1, tmp2, dist integer :: powmax1, powmax, powmax2 double precision, allocatable :: f1A_power(:), f2A_power(:), double_p(:), g12_power(:) @@ -91,35 +91,29 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) grady(jpoint) = 0.d0 gradz(jpoint) = 0.d0 - call jBH_elem_fct_grad_alpha1(r1, r2, g12, grad1_g12) - -! dist = (r1(1) - r2(1)) * (r1(1) - r2(1)) & -! + (r1(2) - r2(2)) * (r1(2) - r2(2)) & -! + (r1(3) - r2(3)) * (r1(3) - r2(3)) -! -! if(dist .ge. 1d-15) then -! dist = dsqrt( dist ) -! -! tmp1 = 1.d0 / (1.d0 + dist) -! -! g12 = dist * tmp1 -! tmp2 = tmp1 * tmp1 / dist -! grad1_g12(1) = tmp2 * (r1(1) - r2(1)) -! grad1_g12(2) = tmp2 * (r1(2) - r2(2)) -! grad1_g12(3) = tmp2 * (r1(3) - r2(3)) -! -! else -! -! grad1_g12(1) = 0.d0 -! grad1_g12(2) = 0.d0 -! grad1_g12(3) = 0.d0 -! g12 = 0.d0 -! -! endif -! - do p = 1, powmax2 - g12_power(p) = g12_power(p-1) * g12 - enddo + dist = (r1(1) - r2(1)) * (r1(1) - r2(1)) & + + (r1(2) - r2(2)) * (r1(2) - r2(2)) & + + (r1(3) - r2(3)) * (r1(3) - r2(3)) + if(dist .ge. 1d-15) then + dist = dsqrt(dist) + tmp1 = 1.d0 / (1.d0 + dist) + g12 = dist * tmp1 + tmp2 = tmp1 * tmp1 / dist + grad1_g12(1) = tmp2 * (r1(1) - r2(1)) + grad1_g12(2) = tmp2 * (r1(2) - r2(2)) + grad1_g12(3) = tmp2 * (r1(3) - r2(3)) + do p = 1, powmax2 + g12_power(p) = g12_power(p-1) * g12 + enddo + else + grad1_g12(1) = 0.d0 + grad1_g12(2) = 0.d0 + grad1_g12(3) = 0.d0 + g12 = 0.d0 + do p = 1, powmax2 + g12_power(p) = 0.d0 + enddo + endif do i_nucl = 1, nucl_num @@ -127,68 +121,56 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) rn(2) = nucl_coord(i_nucl,2) rn(3) = nucl_coord(i_nucl,3) - call jBH_elem_fct_grad_alpha1(r1, rn, f1A, grad1_f1A) -! dist = (r1(1) - rn(1)) * (r1(1) - rn(1)) & -! + (r1(2) - rn(2)) * (r1(2) - rn(2)) & -! + (r1(3) - rn(3)) * (r1(3) - rn(3)) -! if (dist > 1.d-15) then -! dist = dsqrt( dist ) -! -! tmp1 = 1.d0 / (1.d0 + dist) -! -! f1A = dist * tmp1 -! tmp2 = tmp1 * tmp1 / dist -! grad1_f1A(1) = tmp2 * (r1(1) - rn(1)) -! grad1_f1A(2) = tmp2 * (r1(2) - rn(2)) -! grad1_f1A(3) = tmp2 * (r1(3) - rn(3)) -! -! else -! -! grad1_f1A(1) = 0.d0 -! grad1_f1A(2) = 0.d0 -! grad1_f1A(3) = 0.d0 -! f1A = 0.d0 -! -! endif + dist = (r1(1) - rn(1)) * (r1(1) - rn(1)) & + + (r1(2) - rn(2)) * (r1(2) - rn(2)) & + + (r1(3) - rn(3)) * (r1(3) - rn(3)) + if (dist > 1.d-15) then + dist = dsqrt(dist) + tmp1 = 1.d0 / (1.d0 + dist) + f1A = dist * tmp1 + tmp2 = tmp1 * tmp1 / dist + grad1_f1A(1) = tmp2 * (r1(1) - rn(1)) + grad1_f1A(2) = tmp2 * (r1(2) - rn(2)) + grad1_f1A(3) = tmp2 * (r1(3) - rn(3)) + do p = 1, powmax1 + f1A_power(p) = f1A_power(p-1) * f1A + enddo + else + grad1_f1A(1) = 0.d0 + grad1_f1A(2) = 0.d0 + grad1_f1A(3) = 0.d0 + f1A = 0.d0 + do p = 1, powmax1 + f1A_power(p) = 0.d0 + enddo + endif - call jBH_elem_fct_grad_alpha1(r2, rn, f2A, grad2_f2A) -! dist = (r2(1) - rn(1)) * (r2(1) - rn(1)) & -! + (r2(2) - rn(2)) * (r2(2) - rn(2)) & -! + (r2(3) - rn(3)) * (r2(3) - rn(3)) -! -! if (dist > 1.d-15) then -! dist = dsqrt( dist ) -! -! tmp1 = 1.d0 / (1.d0 + dist) -! -! f2A = dist * tmp1 -! tmp2 = tmp1 * tmp1 / dist -! grad2_f2A(1) = tmp2 * (r2(1) - rn(1)) -! grad2_f2A(2) = tmp2 * (r2(2) - rn(2)) -! grad2_f2A(3) = tmp2 * (r2(3) - rn(3)) -! -! else -! -! grad2_f2A(1) = 0.d0 -! grad2_f2A(2) = 0.d0 -! grad2_f2A(3) = 0.d0 -! f2A = 0.d0 -! -! endif - - ! Compute powers of f1A and f2A - do p = 1, powmax1 - f1A_power(p) = f1A_power(p-1) * f1A - f2A_power(p) = f2A_power(p-1) * f2A - enddo + dist = (r2(1) - rn(1)) * (r2(1) - rn(1)) & + + (r2(2) - rn(2)) * (r2(2) - rn(2)) & + + (r2(3) - rn(3)) * (r2(3) - rn(3)) + if (dist > 1.d-15) then + dist = dsqrt(dist) + f2A = dist / (1.d0 + dist) + do p = 1, powmax1 + f2A_power(p) = f2A_power(p-1) * f2A + enddo + else + f2A = 0.d0 + do p = 1, powmax1 + f2A_power(p) = 0.d0 + enddo + endif do p = 1, jBH_size + + tmp = jBH_c(p,i_nucl) + if (dabs(tmp) <= 1.d-10) cycle + mpA = jBH_m(p,i_nucl) npA = jBH_n(p,i_nucl) opA = jBH_o(p,i_nucl) - tmp = jBH_c(p,i_nucl) -! if (dabs(tmp) <= 1.d-10) cycle -! + + ! TODO to it when reading the parameters if(mpA .eq. npA) then tmp = tmp * 0.5d0 endif @@ -207,39 +189,5 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) return end -subroutine jBH_elem_fct_grad_alpha1(r1, r2, fct, grad1_fct) - - implicit none - double precision, intent(in) :: r1(3), r2(3) - double precision, intent(out) :: fct, grad1_fct(3) - double precision :: dist, tmp1, tmp2 - - dist = (r1(1) - r2(1)) * (r1(1) - r2(1)) & - + (r1(2) - r2(2)) * (r1(2) - r2(2)) & - + (r1(3) - r2(3)) * (r1(3) - r2(3)) - - - if(dist .ge. 1d-15) then - dist = dsqrt( dist ) - - tmp1 = 1.d0 / (1.d0 + dist) - - fct = dist * tmp1 - tmp2 = tmp1 * tmp1 / dist - grad1_fct(1) = tmp2 * (r1(1) - r2(1)) - grad1_fct(2) = tmp2 * (r1(2) - r2(2)) - grad1_fct(3) = tmp2 * (r1(3) - r2(3)) - - else - - grad1_fct(1) = 0.d0 - grad1_fct(2) = 0.d0 - grad1_fct(3) = 0.d0 - fct = 0.d0 - - endif - - return -end - ! --- + diff --git a/plugins/local/tc_int/jast_utils_bh.irp.f b/plugins/local/tc_int/jast_utils_bh.irp.f deleted file mode 100644 index 200bc5ff..00000000 --- a/plugins/local/tc_int/jast_utils_bh.irp.f +++ /dev/null @@ -1,43 +0,0 @@ - -! --- - - - -subroutine jBH_elem_fct_grad(alpha, r1, r2, fct, grad1_fct) - - implicit none - double precision, intent(in) :: alpha, r1(3), r2(3) - double precision, intent(out) :: fct, grad1_fct(3) - double precision :: dist, tmp1, tmp2, dist_inv - - dist = (r1(1) - r2(1)) * (r1(1) - r2(1)) & - + (r1(2) - r2(2)) * (r1(2) - r2(2)) & - + (r1(3) - r2(3)) * (r1(3) - r2(3)) - - - if(dist .ge. 1d-15) then - dist_inv = 1.d0/dsqrt( dist ) - dist = dist_inv * dist - - tmp1 = 1.d0 / (1.d0 + alpha * dist) - - fct = alpha * dist * tmp1 - tmp2 = alpha * tmp1 * tmp1 * dist_inv - grad1_fct(1) = tmp2 * (r1(1) - r2(1)) - grad1_fct(2) = tmp2 * (r1(2) - r2(2)) - grad1_fct(3) = tmp2 * (r1(3) - r2(3)) - - else - - grad1_fct(1) = 0.d0 - grad1_fct(2) = 0.d0 - grad1_fct(3) = 0.d0 - fct = 0.d0 - - endif - - return -end - -! --- - From d3d89022bc8092ab0c6131904f85475f160dfa53 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Jun 2024 16:50:52 +0200 Subject: [PATCH 099/159] Move GPU modules to plugins --- configure | 6 +++--- {src => plugins/local}/gpu_nvidia/LIB | 0 {src => plugins/local}/gpu_nvidia/NEED | 0 {src => plugins/local}/gpu_nvidia/README.rst | 0 {src => plugins/local}/gpu_nvidia/gpu.c | 0 {src => plugins/local}/gpu_x86/NEED | 0 {src => plugins/local}/gpu_x86/README.rst | 0 {src => plugins/local}/gpu_x86/gpu.c | 0 8 files changed, 3 insertions(+), 3 deletions(-) rename {src => plugins/local}/gpu_nvidia/LIB (100%) rename {src => plugins/local}/gpu_nvidia/NEED (100%) rename {src => plugins/local}/gpu_nvidia/README.rst (100%) rename {src => plugins/local}/gpu_nvidia/gpu.c (100%) rename {src => plugins/local}/gpu_x86/NEED (100%) rename {src => plugins/local}/gpu_x86/README.rst (100%) rename {src => plugins/local}/gpu_x86/gpu.c (100%) diff --git a/configure b/configure index db158966..08dac444 100755 --- a/configure +++ b/configure @@ -119,15 +119,15 @@ rm -f ${QP_ROOT}/src/gpu_arch case "$GPU" in amd) # Nvidia echo "Activating AMD GPU acceleration" - ln -s ${QP_ROOT}/src/gpu_amd ${QP_ROOT}/src/gpu_arch + ln -s ${QP_ROOT}/plugins/local/gpu_amd ${QP_ROOT}/src/gpu_arch ;; nvidia) # Nvidia echo "Activating Nvidia GPU acceleration" - ln -s ${QP_ROOT}/src/gpu_nvidia ${QP_ROOT}/src/gpu_arch + ln -s ${QP_ROOT}/plugins/local/gpu_nvidia ${QP_ROOT}/src/gpu_arch ;; *) # No Acceleration echo "Disabling GPU acceleration" - ln -s ${QP_ROOT}/src/gpu_x86 ${QP_ROOT}/src/gpu_arch + ln -s ${QP_ROOT}/plugins/local/gpu_x86 ${QP_ROOT}/src/gpu_arch ;; esac diff --git a/src/gpu_nvidia/LIB b/plugins/local/gpu_nvidia/LIB similarity index 100% rename from src/gpu_nvidia/LIB rename to plugins/local/gpu_nvidia/LIB diff --git a/src/gpu_nvidia/NEED b/plugins/local/gpu_nvidia/NEED similarity index 100% rename from src/gpu_nvidia/NEED rename to plugins/local/gpu_nvidia/NEED diff --git a/src/gpu_nvidia/README.rst b/plugins/local/gpu_nvidia/README.rst similarity index 100% rename from src/gpu_nvidia/README.rst rename to plugins/local/gpu_nvidia/README.rst diff --git a/src/gpu_nvidia/gpu.c b/plugins/local/gpu_nvidia/gpu.c similarity index 100% rename from src/gpu_nvidia/gpu.c rename to plugins/local/gpu_nvidia/gpu.c diff --git a/src/gpu_x86/NEED b/plugins/local/gpu_x86/NEED similarity index 100% rename from src/gpu_x86/NEED rename to plugins/local/gpu_x86/NEED diff --git a/src/gpu_x86/README.rst b/plugins/local/gpu_x86/README.rst similarity index 100% rename from src/gpu_x86/README.rst rename to plugins/local/gpu_x86/README.rst diff --git a/src/gpu_x86/gpu.c b/plugins/local/gpu_x86/gpu.c similarity index 100% rename from src/gpu_x86/gpu.c rename to plugins/local/gpu_x86/gpu.c From 85b1035cfba778559e629045961cb542631841bd Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Jun 2024 17:33:08 +0200 Subject: [PATCH 100/159] Working on CCSD --- src/ccsd/ccsd_space_orb_sub.irp.f | 117 +++++++++++------------------- src/gpu/gpu_module.F90 | 62 ++++++++++++++++ 2 files changed, 103 insertions(+), 76 deletions(-) diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index e7c9b1ab..1329f172 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -14,6 +14,9 @@ subroutine run_ccsd_space_orb type(gpu_double2) :: t1, r1 type(gpu_double2) :: H_oo, H_vv, H_vo + type(gpu_double2) :: d_cc_space_f_vo + type(gpu_double4) :: d_cc_space_v_oovv + double precision, allocatable :: all_err(:,:), all_t(:,:) integer, allocatable :: list_occ(:), list_vir(:) integer(bit_kind) :: det(N_int,2) @@ -52,6 +55,12 @@ subroutine run_ccsd_space_orb !print*,'occ',list_occ !print*,'vir',list_vir + call gpu_allocate(d_cc_space_f_vo, nV, nO) + call gpu_allocate(d_cc_space_v_oovv, nO, nO, nV, nV) + call gpu_upload(cc_space_f_vo, d_cc_space_f_vo) + call gpu_upload(cc_space_v_oovv, d_cc_space_v_oovv) + + call gpu_allocate(t2, nO,nO,nV,nV) call gpu_allocate(r2, nO,nO,nV,nV) call gpu_allocate(tau, nO,nO,nV,nV) @@ -116,7 +125,8 @@ subroutine run_ccsd_space_orb !print*,'hf_energy', hf_energy call det_energy(det,uncorr_energy) print*,'Det energy', uncorr_energy - call ccsd_energy_space_x(nO,nV,tau_x%f,t1%f,energy) + + call ccsd_energy_space_x(nO,nV,d_cc_space_v_oovv,d_cc_space_f_vo,tau_x,t1,energy) print*,'Guess energy', uncorr_energy+energy, energy nb_iter = 0 @@ -166,7 +176,7 @@ subroutine run_ccsd_space_orb call update_tau_x_space(nO,nV,tau,tau_x) ! Energy - call ccsd_energy_space_x(nO,nV,tau_x%f,t1%f,energy) + call ccsd_energy_space_x(nO,nV,d_cc_space_v_oovv,d_cc_space_f_vo,tau_x,t1,energy) write(*,'(A3,I6,A3,F18.12,A3,F16.12,A3,ES10.2,A3,ES10.2,A2)') ' | ',nb_iter,' | ', uncorr_energy+energy,' | ', energy,' | ', max_r1,' | ', max_r2,' |' nb_iter = nb_iter + 1 @@ -239,6 +249,8 @@ subroutine run_ccsd_space_orb call save_energy(uncorr_energy + energy, e_t) deallocate(h_t1, h_t2) + call gpu_deallocate(d_cc_space_f_vo) + call gpu_deallocate(d_cc_space_v_oovv) call gpu_deallocate(t1) call gpu_deallocate(t2) @@ -246,59 +258,14 @@ end ! Energy -subroutine ccsd_energy_space(nO,nV,tau,t1,energy) - +subroutine ccsd_energy_space_x(nO,nV,d_cc_space_v_oovv,d_cc_space_f_vo,tau_x,t1,energy) + use gpu implicit none - integer, intent(in) :: nO, nV - double precision, intent(in) :: tau(nO,nO,nV,nV) - double precision, intent(in) :: t1(nO,nV) - double precision, intent(out) :: energy - - ! internal - integer :: i,j,a,b - double precision :: e - - energy = 0d0 - !$omp parallel & - !$omp shared(nO,nV,energy,tau,t1,& - !$omp cc_space_f_vo,cc_space_w_oovv) & - !$omp private(i,j,a,b,e) & - !$omp default(none) - e = 0d0 - !$omp do - do a = 1, nV - do i = 1, nO - e = e + 2d0 * cc_space_f_vo(a,i) * t1(i,a) - enddo - enddo - !$omp end do nowait - !$omp do - do b = 1, nV - do a = 1, nV - do j = 1, nO - do i = 1, nO - e = e + tau(i,j,a,b) * cc_space_w_oovv(i,j,a,b) - enddo - enddo - enddo - enddo - !$omp end do nowait - !$omp critical - energy = energy + e - !$omp end critical - !$omp end parallel - -end - -subroutine ccsd_energy_space_x(nO,nV,tau_x,t1,energy) - - implicit none - - integer, intent(in) :: nO, nV - double precision, intent(in) :: tau_x(nO,nO,nV,nV) - double precision, intent(in) :: t1(nO,nV) - double precision, intent(out) :: energy + integer, intent(in) :: nO, nV + type(gpu_double4), intent(in) :: tau_x, d_cc_space_v_oovv + type(gpu_double2), intent(in) :: t1, d_cc_space_f_vo + double precision, intent(out) :: energy ! internal integer :: i,j,a,b @@ -307,14 +274,14 @@ subroutine ccsd_energy_space_x(nO,nV,tau_x,t1,energy) energy = 0d0 !$omp parallel & !$omp shared(nO,nV,energy,tau_x,t1,& - !$omp cc_space_f_vo,cc_space_v_oovv) & + !$omp d_cc_space_f_vo,d_cc_space_v_oovv) & !$omp private(i,j,a,b,e) & !$omp default(none) e = 0d0 !$omp do do a = 1, nV do i = 1, nO - e = e + 2d0 * cc_space_f_vo(a,i) * t1(i,a) + e = e + 2d0 * d_cc_space_f_vo%f(a,i) * t1%f(i,a) enddo enddo !$omp end do nowait @@ -323,7 +290,7 @@ subroutine ccsd_energy_space_x(nO,nV,tau_x,t1,energy) do a = 1, nV do j = 1, nO do i = 1, nO - e = e + tau_x(i,j,a,b) * cc_space_v_oovv(i,j,a,b) + e = e + tau_x%f(i,j,a,b) * d_cc_space_v_oovv%f(i,j,a,b) enddo enddo enddo @@ -333,6 +300,12 @@ subroutine ccsd_energy_space_x(nO,nV,tau_x,t1,energy) energy = energy + e !$omp end critical !$omp end parallel +! +! +! call gpu_ddot(blas_handle, nO*nO*nV*nV*1_8, tau_x, 1, d_cc_space_v_oovv, 1, energy) +! call gpu_ddot(blas_handle, nO*nV*1_8, d_cc_space_f_vo, 1, t1, 1, e) +! energy = energy + 2.d0*e + end @@ -372,26 +345,24 @@ subroutine update_tau_space(nO,nV,h_t1,t1,t2,tau) ! !$OMP END PARALLEL - type(gpu_blas) :: blas type(gpu_stream) :: stream(nV) - call gpu_blas_create(blas) do b=1,nV call gpu_stream_create(stream(b)) enddo !$OMP PARALLEL & - !$OMP SHARED(nO,nV,tau,t2,t1,h_t1,stream,blas) & + !$OMP SHARED(nO,nV,tau,t2,t1,h_t1,stream,blas_handle) & !$OMP PRIVATE(i,j,a,b) & !$OMP DEFAULT(NONE) !$OMP DO do b=1,nV - call gpu_set_stream(blas,stream(b)) + call gpu_set_stream(blas_handle,stream(b)) do j=1,nO - call gpu_dgeam_c(blas%c, 'N', 'N', nO*1_8, nV*1_8, & - 1.d0, c_loc(t2%f(1,j,1,b)), nO*nO*1_8, & - h_t1(j,b), t1%c, nO*1_8, & - c_loc(tau%f(1,j,1,b)), nO*nO*1_8) + call gpu_dgeam(blas_handle, 'N', 'N', nO*1_8, nV*1_8, & + 1.d0, t2%f(1,j,1,b), nO*nO*1_8, & + h_t1(j,b), t1%f, nO*1_8, & + tau%f(1,j,1,b), nO*nO*1_8) enddo enddo !$OMP END DO @@ -403,8 +374,6 @@ subroutine update_tau_space(nO,nV,h_t1,t1,t2,tau) call gpu_stream_destroy(stream(b)) enddo - call gpu_blas_destroy(blas) - end subroutine update_tau_x_space(nO,nV,tau,tau_x) @@ -438,26 +407,24 @@ subroutine update_tau_x_space(nO,nV,tau,tau_x) ! !$OMP END DO ! !$OMP END PARALLEL - type(gpu_blas) :: blas type(gpu_stream) :: stream(nV) - call gpu_blas_create(blas) do a=1,nV call gpu_stream_create(stream(a)) enddo !$OMP PARALLEL & - !$OMP SHARED(nO,nV,tau,tau_x,stream,blas) & + !$OMP SHARED(nO,nV,tau,tau_x,stream,blas_handle) & !$OMP PRIVATE(i,j,a,b) & !$OMP DEFAULT(NONE) !$OMP DO do b=1,nV do a=1,nV - call gpu_set_stream(blas,stream(a)) - call gpu_dgeam_c(blas%c, 'N', 'N', nO*1_8, nO*1_8, & - 2.d0, c_loc(tau%f(1,1,a,b)), nO*1_8, & - -1.d0, c_loc(tau%f(1,1,b,a)), nO*1_8, & - c_loc(tau_x%f(1,1,a,b)), nO*1_8) + call gpu_set_stream(blas_handle,stream(a)) + call gpu_dgeam(blas_handle, 'N', 'N', nO*1_8, nO*1_8, & + 2.d0, tau%f(1,1,a,b), nO*1_8, & + -1.d0, tau%f(1,1,b,a), nO*1_8, & + tau_x%f(1,1,a,b), nO*1_8) enddo enddo !$OMP END DO @@ -469,8 +436,6 @@ subroutine update_tau_x_space(nO,nV,tau,tau_x) call gpu_stream_destroy(stream(b)) enddo - call gpu_blas_destroy(blas) - end ! R1 diff --git a/src/gpu/gpu_module.F90 b/src/gpu/gpu_module.F90 index d1ddad4c..2057d1eb 100644 --- a/src/gpu/gpu_module.F90 +++ b/src/gpu/gpu_module.F90 @@ -144,6 +144,16 @@ module gpu type(c_ptr), value :: a, b, c end subroutine + subroutine gpu_sgeam_c(handle, transa, transb, m, n, alpha, a, lda, beta, & + b, ldb, c, ldc) bind(C, name='gpu_sgeam') + import + type(c_ptr), intent(in) :: handle + character(c_char), intent(in), value :: transa, transb + integer(c_int64_t), intent(in), value :: m, n, lda, ldb, ldc + real(c_float), intent(in), value :: alpha, beta + type(c_ptr), value :: a, b, c + end subroutine + end interface @@ -478,5 +488,57 @@ module gpu call gpu_blas_destroy_c(handle%c) end subroutine + end module + + +! dot +! --- + +subroutine gpu_ddot(handle, n, dx, incx, dy, incy, res) + use gpu + type(gpu_blas), intent(in) :: handle + integer*8 :: n, incx, incy + double precision, intent(in) :: dx(*), dy(*) + double precision, intent(out) :: res + call gpu_ddot_c(handle%c, n, c_loc(dx), incx, c_loc(dy), incy, res) +end subroutine + +subroutine gpu_sdot(handle, n, dx, incx, dy, incy, res) + use gpu + type(gpu_blas), intent(in) :: handle + integer*8 :: n, incx, incy + real, intent(in) :: dx(*), dy(*) + real, intent(out) :: res + call gpu_sdot_c(handle%c, n, c_loc(dx), incx, c_loc(dy), incy, res) +end subroutine + + +! geam +! ---- + +subroutine gpu_dgeam(handle, transa, transb, m, n, alpha, a, lda, beta, & + b, ldb, c, ldc) + use gpu + type(gpu_blas), intent(in) :: handle + character, intent(in) :: transa, transb + integer*8, intent(in) :: m, n, lda, ldb, ldc + double precision, intent(in) :: alpha, beta + double precision :: a(lda,*), b(ldb,*), c(ldc,*) + call gpu_dgeam_c(handle%c, transa, transb, m, n, alpha, c_loc(a), lda, beta, & + c_loc(b), ldb, c_loc(c), ldc) +end subroutine + +subroutine gpu_sgeam(handle, transa, transb, m, n, alpha, a, lda, beta, & + b, ldb, c, ldc) + use gpu + type(gpu_blas), intent(in) :: handle + character, intent(in) :: transa, transb + integer*8, intent(in) :: m, n, lda, ldb, ldc + real, intent(in) :: alpha, beta + real :: a(lda,*), b(ldb,*), c(ldc,*) + call gpu_sgeam_c(handle%c, transa, transb, m, n, alpha, c_loc(a), lda, beta, & + c_loc(b), ldb, c_loc(c), ldc) +end subroutine + From a5f4f0516eec9f17438474529616368a6f9e5de4 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Jun 2024 17:39:43 +0200 Subject: [PATCH 101/159] Fixing compile --- src/ccsd/ccsd_space_orb_sub.irp.f | 1 - src/gpu/gpu_module.F90 | 23 +++++++++-------------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 1329f172..4e06e31d 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -306,7 +306,6 @@ subroutine ccsd_energy_space_x(nO,nV,d_cc_space_v_oovv,d_cc_space_f_vo,tau_x,t1, ! call gpu_ddot(blas_handle, nO*nV*1_8, d_cc_space_f_vo, 1, t1, 1, e) ! energy = energy + 2.d0*e - end ! Tau diff --git a/src/gpu/gpu_module.F90 b/src/gpu/gpu_module.F90 index 2057d1eb..d7c26ba6 100644 --- a/src/gpu/gpu_module.F90 +++ b/src/gpu/gpu_module.F90 @@ -365,42 +365,42 @@ module gpu subroutine gpu_download_double1(gpu_ptr, cpu_ptr) implicit none type(gpu_double1), intent(in) :: gpu_ptr - double precision, intent(in) :: cpu_ptr(:) + double precision, target, intent(in) :: cpu_ptr(:) call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*size(gpu_ptr%f)) end subroutine subroutine gpu_download_double2(gpu_ptr, cpu_ptr) implicit none type(gpu_double2), intent(in) :: gpu_ptr - double precision, intent(in) :: cpu_ptr(:,:) + double precision, target, intent(in) :: cpu_ptr(:,:) call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*product(shape(gpu_ptr%f)*1_8)) end subroutine subroutine gpu_download_double3(gpu_ptr, cpu_ptr) implicit none type(gpu_double3), intent(in) :: gpu_ptr - double precision, intent(in) :: cpu_ptr(:,:,:) + double precision, target, intent(in) :: cpu_ptr(:,:,:) call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*product(shape(gpu_ptr%f)*1_8)) end subroutine subroutine gpu_download_double4(gpu_ptr, cpu_ptr) implicit none type(gpu_double4), intent(in) :: gpu_ptr - double precision, intent(in) :: cpu_ptr(:,:,:,:) + double precision, target, intent(in) :: cpu_ptr(:,:,:,:) call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*product(shape(gpu_ptr%f)*1_8)) end subroutine subroutine gpu_download_double5(gpu_ptr, cpu_ptr) implicit none type(gpu_double5), intent(in) :: gpu_ptr - double precision, intent(in) :: cpu_ptr(:,:,:,:,:) + double precision, target, intent(in) :: cpu_ptr(:,:,:,:,:) call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*product(shape(gpu_ptr%f)*1_8)) end subroutine subroutine gpu_download_double6(gpu_ptr, cpu_ptr) implicit none type(gpu_double6), intent(in) :: gpu_ptr - double precision, intent(in) :: cpu_ptr(:,:,:,:,:,:) + double precision, target, intent(in) :: cpu_ptr(:,:,:,:,:,:) call gpu_download_c(gpu_ptr%c, c_loc(cpu_ptr), 8_8*product(shape(gpu_ptr%f)*1_8)) end subroutine @@ -454,19 +454,16 @@ module gpu ! ---------- subroutine gpu_stream_create(stream) - import type(gpu_stream) :: stream call gpu_stream_create_c(stream%c) end subroutine subroutine gpu_stream_destroy(stream) - import type(gpu_stream) :: stream call gpu_stream_destroy_c(stream%c) end subroutine subroutine gpu_set_stream(handle, stream) - import type(gpu_blas) :: handle type(gpu_stream) :: stream call gpu_set_stream_c(handle%c, stream%c) @@ -477,13 +474,11 @@ module gpu ! -------- subroutine gpu_blas_create(handle) - import type(gpu_blas) :: handle call gpu_blas_create_c(handle%c) end subroutine subroutine gpu_blas_destroy(handle) - import type(gpu_blas) :: handle call gpu_blas_destroy_c(handle%c) end subroutine @@ -500,7 +495,7 @@ subroutine gpu_ddot(handle, n, dx, incx, dy, incy, res) use gpu type(gpu_blas), intent(in) :: handle integer*8 :: n, incx, incy - double precision, intent(in) :: dx(*), dy(*) + double precision, target, intent(in) :: dx(*), dy(*) double precision, intent(out) :: res call gpu_ddot_c(handle%c, n, c_loc(dx), incx, c_loc(dy), incy, res) end subroutine @@ -525,7 +520,7 @@ subroutine gpu_dgeam(handle, transa, transb, m, n, alpha, a, lda, beta, & character, intent(in) :: transa, transb integer*8, intent(in) :: m, n, lda, ldb, ldc double precision, intent(in) :: alpha, beta - double precision :: a(lda,*), b(ldb,*), c(ldc,*) + double precision, target :: a(lda,*), b(ldb,*), c(ldc,*) call gpu_dgeam_c(handle%c, transa, transb, m, n, alpha, c_loc(a), lda, beta, & c_loc(b), ldb, c_loc(c), ldc) end subroutine @@ -537,7 +532,7 @@ subroutine gpu_sgeam(handle, transa, transb, m, n, alpha, a, lda, beta, & character, intent(in) :: transa, transb integer*8, intent(in) :: m, n, lda, ldb, ldc real, intent(in) :: alpha, beta - real :: a(lda,*), b(ldb,*), c(ldc,*) + real, target :: a(lda,*), b(ldb,*), c(ldc,*) call gpu_sgeam_c(handle%c, transa, transb, m, n, alpha, c_loc(a), lda, beta, & c_loc(b), ldb, c_loc(c), ldc) end subroutine From c7df9a72cc68a7f5dfded36aa94ac50d5188a5a1 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Jun 2024 21:32:04 +0200 Subject: [PATCH 102/159] Fixing again actions --- src/gpu/gpu_module.F90 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gpu/gpu_module.F90 b/src/gpu/gpu_module.F90 index d7c26ba6..ecf79c83 100644 --- a/src/gpu/gpu_module.F90 +++ b/src/gpu/gpu_module.F90 @@ -318,42 +318,42 @@ module gpu subroutine gpu_upload_double1(cpu_ptr, gpu_ptr) implicit none - double precision, intent(in) :: cpu_ptr(:) + double precision, target, intent(in) :: cpu_ptr(*) type(gpu_double1), intent(in) :: gpu_ptr call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, 8_8*size(gpu_ptr%f)) end subroutine subroutine gpu_upload_double2(cpu_ptr, gpu_ptr) implicit none - double precision, intent(in) :: cpu_ptr(:,:) + double precision, target, intent(in) :: cpu_ptr(:,:) type(gpu_double2), intent(in) :: gpu_ptr call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, product(shape(gpu_ptr%f)*1_8)*8_8) end subroutine subroutine gpu_upload_double3(cpu_ptr, gpu_ptr) implicit none - double precision, intent(in) :: cpu_ptr(:,:,:) + double precision, target, intent(in) :: cpu_ptr(:,:,:) type(gpu_double3), intent(in) :: gpu_ptr call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, product(shape(gpu_ptr%f)*1_8)*8_8) end subroutine subroutine gpu_upload_double4(cpu_ptr, gpu_ptr) implicit none - double precision, intent(in) :: cpu_ptr(:,:,:,:) + double precision, target, intent(in) :: cpu_ptr(:,:,:,:) type(gpu_double4), intent(in) :: gpu_ptr call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, product(shape(gpu_ptr%f)*1_8)*8_8) end subroutine subroutine gpu_upload_double5(cpu_ptr, gpu_ptr) implicit none - double precision, intent(in) :: cpu_ptr(:,:,:,:,:) + double precision, target, intent(in) :: cpu_ptr(:,:,:,:,:) type(gpu_double5), intent(in) :: gpu_ptr call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, product(shape(gpu_ptr%f)*1_8)*8_8) end subroutine subroutine gpu_upload_double6(cpu_ptr, gpu_ptr) implicit none - double precision, intent(in) :: cpu_ptr(:,:,:,:,:,:) + double precision, target, intent(in) :: cpu_ptr(:,:,:,:,:,:) type(gpu_double6), intent(in) :: gpu_ptr call gpu_upload_c(c_loc(cpu_ptr), gpu_ptr%c, product(shape(gpu_ptr%f)*1_8)*8_8) end subroutine @@ -504,7 +504,7 @@ subroutine gpu_sdot(handle, n, dx, incx, dy, incy, res) use gpu type(gpu_blas), intent(in) :: handle integer*8 :: n, incx, incy - real, intent(in) :: dx(*), dy(*) + real, target, intent(in) :: dx(*), dy(*) real, intent(out) :: res call gpu_sdot_c(handle%c, n, c_loc(dx), incx, c_loc(dy), incy, res) end subroutine From b467bef6dd1e14c5914cc6508aa898d5f1665e3a Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Jun 2024 21:37:14 +0200 Subject: [PATCH 103/159] Forgot file --- src/ccsd/ccsd_space_orb_sub.irp.f | 68 +++++++++++++++---------------- src/gpu/gpu.irp.f | 11 +++++ 2 files changed, 45 insertions(+), 34 deletions(-) create mode 100644 src/gpu/gpu.irp.f diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 4e06e31d..5c2daa05 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -271,40 +271,40 @@ subroutine ccsd_energy_space_x(nO,nV,d_cc_space_v_oovv,d_cc_space_f_vo,tau_x,t1, integer :: i,j,a,b double precision :: e - energy = 0d0 - !$omp parallel & - !$omp shared(nO,nV,energy,tau_x,t1,& - !$omp d_cc_space_f_vo,d_cc_space_v_oovv) & - !$omp private(i,j,a,b,e) & - !$omp default(none) - e = 0d0 - !$omp do - do a = 1, nV - do i = 1, nO - e = e + 2d0 * d_cc_space_f_vo%f(a,i) * t1%f(i,a) - enddo - enddo - !$omp end do nowait - !$omp do - do b = 1, nV - do a = 1, nV - do j = 1, nO - do i = 1, nO - e = e + tau_x%f(i,j,a,b) * d_cc_space_v_oovv%f(i,j,a,b) - enddo - enddo - enddo - enddo - !$omp end do nowait - !$omp critical - energy = energy + e - !$omp end critical - !$omp end parallel -! -! -! call gpu_ddot(blas_handle, nO*nO*nV*nV*1_8, tau_x, 1, d_cc_space_v_oovv, 1, energy) -! call gpu_ddot(blas_handle, nO*nV*1_8, d_cc_space_f_vo, 1, t1, 1, e) -! energy = energy + 2.d0*e +! energy = 0d0 +! !$omp parallel & +! !$omp shared(nO,nV,energy,tau_x,t1,& +! !$omp d_cc_space_f_vo,d_cc_space_v_oovv) & +! !$omp private(i,j,a,b,e) & +! !$omp default(none) +! e = 0d0 +! !$omp do +! do a = 1, nV +! do i = 1, nO +! e = e + 2d0 * d_cc_space_f_vo%f(a,i) * t1%f(i,a) +! enddo +! enddo +! !$omp end do nowait +! !$omp do +! do b = 1, nV +! do a = 1, nV +! do j = 1, nO +! do i = 1, nO +! e = e + tau_x%f(i,j,a,b) * d_cc_space_v_oovv%f(i,j,a,b) +! enddo +! enddo +! enddo +! enddo +! !$omp end do nowait +! !$omp critical +! energy = energy + e +! !$omp end critical +! !$omp end parallel + + + call gpu_ddot(blas_handle, nO*nO*nV*nV*1_8, tau_x, 1, d_cc_space_v_oovv, 1, energy) + call gpu_ddot(blas_handle, nO*nV*1_8, d_cc_space_f_vo, 1, t1, 1, e) + energy = energy + 2.d0*e end diff --git a/src/gpu/gpu.irp.f b/src/gpu/gpu.irp.f new file mode 100644 index 00000000..e91d66f5 --- /dev/null +++ b/src/gpu/gpu.irp.f @@ -0,0 +1,11 @@ +use gpu + +BEGIN_PROVIDER [ type(gpu_blas), blas_handle ] + implicit none + BEGIN_DOC + ! Handle for cuBLAS or RocBLAS + END_DOC + call gpu_blas_create(blas_handle) +END_PROVIDER + + From 73066b4ac54eeb99ece66947d7827b0482da4e12 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Sat, 29 Jun 2024 01:15:47 +0200 Subject: [PATCH 104/159] issue with linking with CUDA --- plugins/local/tc_int/compute_tc_int_gpu.irp.f | 157 ++++++++++++++++++ plugins/local/tc_int/gpu.c | 2 + plugins/local/tc_int/gpu_module.F90 | 38 +++++ plugins/local/tc_int/write_tc_int_gpu.irp.f | 56 +++++++ src/dft_utils_in_r/ao_in_r.irp.f | 113 ++++++++----- 5 files changed, 329 insertions(+), 37 deletions(-) create mode 100644 plugins/local/tc_int/compute_tc_int_gpu.irp.f create mode 100644 plugins/local/tc_int/gpu.c create mode 100644 plugins/local/tc_int/gpu_module.F90 create mode 100644 plugins/local/tc_int/write_tc_int_gpu.irp.f diff --git a/plugins/local/tc_int/compute_tc_int_gpu.irp.f b/plugins/local/tc_int/compute_tc_int_gpu.irp.f new file mode 100644 index 00000000..146574a6 --- /dev/null +++ b/plugins/local/tc_int/compute_tc_int_gpu.irp.f @@ -0,0 +1,157 @@ + +! --- + +subroutine provide_int2_grad1_u12_ao_gpu() + + use gpu_module + + BEGIN_DOC + ! + ! int2_grad1_u12_ao(i,j,ipoint,1) = \int dr2 [\grad1 u(r1,r2)]_x1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,2) = \int dr2 [\grad1 u(r1,r2)]_y1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,3) = \int dr2 [\grad1 u(r1,r2)]_z1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,4) = \int dr2 [-(1/2) [\grad1 u(r1,r2)]^2] \chi_i(r2) \chi_j(r2) + ! + ! + ! tc_int_2e_ao(k,i,l,j) = (ki|V^TC(r_12)|lj) + ! = where V^TC(r_12) is the total TC operator + ! = tc_grad_and_lapl_ao(k,i,l,j) + tc_grad_square_ao(k,i,l,j) + ao_two_e_coul(k,i,l,j) + ! where: + ! + ! tc_grad_and_lapl_ao(k,i,l,j) = < k l | -1/2 \Delta_1 u(r1,r2) - \grad_1 u(r1,r2) . \grad_1 | ij > + ! = -1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) + ! = 1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 (-1) \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) + ! + ! tc_grad_square_ao(k,i,l,j) = -1/2 + ! + ! ao_two_e_coul(k,i,l,j) = < l k | 1/r12 | j i > = ( k i | 1/r12 | l j ) + ! + END_DOC + + implicit none + + integer :: i, j, k, l, m, ipoint, jpoint + integer :: n_blocks, n_rest, n_pass + integer :: i_blocks, i_rest, i_pass, ii + double precision :: mem, n_double + double precision :: weight1, ao_k_r, ao_i_r + double precision :: der_envsq_x, der_envsq_y, der_envsq_z, lap_envsq + double precision :: time0, time1, time2, tc1, tc2, tc + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:), tc_int_2e_ao(:,:,:,:) + double precision, allocatable :: tmp(:,:,:), c_mat(:,:,:), tmp_grad1_u12(:,:,:) + + double precision, external :: get_ao_two_e_integral + + + PROVIDE final_weight_at_r_vector_extra aos_in_r_array_extra + PROVIDE final_weight_at_r_vector aos_grad_in_r_array_transp_bis final_weight_at_r_vector aos_in_r_array_transp + + + + print*, ' start provide_int2_grad1_u12_ao_gpu ...' + call wall_time(time0) + + call total_memory(mem) + mem = max(1.d0, qp_max_mem - mem) + n_double = mem * 1.d8 + n_blocks = int(min(n_double / (n_points_extra_final_grid * 4.d0), 1.d0*n_points_final_grid)) + n_rest = int(mod(n_points_final_grid, n_blocks)) + n_pass = int((n_points_final_grid - n_rest) / n_blocks) + + call write_int(6, n_pass, 'Number of passes') + call write_int(6, n_blocks, 'Size of the blocks') + call write_int(6, n_rest, 'Size of the last block') + + ! --- + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + allocate(tc_int_2e_ao(ao_num,ao_num,ao_num,ao_num)) + + double precision, allocatable :: aos_data1(:,:,:) + double precision, allocatable :: aos_data2(:,:,:) + allocate(aos_data1(n_points_final_grid,ao_num,4)) + allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) + + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + aos_data1(ipoint,k,1) = aos_in_r_array(i,ipoint) + aos_data1(ipoint,k,2) = aos_grad_in_r_array(i,ipoint,1) + aos_data1(ipoint,k,3) = aos_grad_in_r_array(i,ipoint,2) + aos_data1(ipoint,k,4) = aos_grad_in_r_array(i,ipoint,3) + enddo + + do ipoint = 1, n_points_extra_final_grid + aos_data1(ipoint,k,1) = aos_in_r_array_extra(i,ipoint) + aos_data1(ipoint,k,2) = aos_grad_in_r_array_extra(i,ipoint,1) + aos_data1(ipoint,k,3) = aos_grad_in_r_array_extra(i,ipoint,2) + aos_data1(ipoint,k,4) = aos_grad_in_r_array_extra(i,ipoint,3) + enddo + enddo + + call tc_int_bh(n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, & + jBH_size, jBH_m, jBH_n, jBH_o, jBH_c, & + final_grid_points, final_grid_points_extra, nucl_coord, & + final_weight_at_r_vector, final_weight_at_r_vector_extra, & + aos_data1, aos_data2, int2_grad1_u12_ao, tc_int_2e_ao) + + ! --- + + call wall_time(time1) + + PROVIDE ao_integrals_map + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP SHARED(ao_num, tc_int_2e_ao, ao_integrals_map) & + !$OMP PRIVATE(i, j, k, l) + !$OMP DO COLLAPSE(3) + do j = 1, ao_num + do l = 1, ao_num + do i = 1, ao_num + do k = 1, ao_num + ! < 1:i, 2:j | 1:k, 2:l > + tc_int_2e_ao(k,i,l,j) = tc_int_2e_ao(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + call wall_time(time2) + print*, ' wall time of Coulomb part of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + call print_memory_usage() + + ! --- + + print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") + call ezfio_set_work_empty(.False.) + write(11) int2_grad1_u12_ao(:,:,:,1:3) + close(11) + + print*, ' Saving tc_int_2e_ao in ', trim(ezfio_filename) // '/work/ao_two_e_tc_tot' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/ao_two_e_tc_tot', action="write") + call ezfio_set_work_empty(.False.) + do i = 1, ao_num + write(11) tc_int_2e_ao(:,:,:,i) + enddo + close(11) + + ! ---- + + deallocate(int2_grad1_u12_ao) + deallocate(tc_int_2e_ao) + + call wall_time(time2) + print*, ' wall time for tc_int_2e_ao (min) = ', (time2-time1) / 60.d0 + call print_memory_usage() + + ! --- + + call wall_time(time1) + print*, ' wall time for TC-integrals (min) = ', (time1-time0) / 60.d0 + + return +end + +! --- + diff --git a/plugins/local/tc_int/gpu.c b/plugins/local/tc_int/gpu.c new file mode 100644 index 00000000..139597f9 --- /dev/null +++ b/plugins/local/tc_int/gpu.c @@ -0,0 +1,2 @@ + + diff --git a/plugins/local/tc_int/gpu_module.F90 b/plugins/local/tc_int/gpu_module.F90 new file mode 100644 index 00000000..cf7efad2 --- /dev/null +++ b/plugins/local/tc_int/gpu_module.F90 @@ -0,0 +1,38 @@ + +! --- + +module gpu_module + + use iso_c_binding + + implicit none + + interface + + subroutine tc_int_bh(n_grid1, n_grid2, ao_num, n_nuc, & + size_bh, m_bh, n_bh, o_bh, c_bh, & + r1, r2, rn, wr1, wr2, aos_data1, & + aos_data2, int2_grad1_u12, tc_int_2e_ao) bind(C) + + import c_int, c_double + + integer(c_int), intent(in), value :: n_grid1, n_grid2, ao_num, n_nuc, size_bh + integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) + real(c_double), intent(in) :: c_bh(size_bh,n_nuc) + real(c_double), intent(in) :: r1(n_grid1,3), r2(n_grid2,3) + real(c_double), intent(in) :: rn(n_nuc,3) + real(c_double), intent(in) :: wr1(n_grid1), wr2(n_grid2) + real(c_double), intent(in) :: aos_data1(n_grid1,ao_num,4), aos_data2(n_grid2,ao_num,4) + real(c_double), intent(out) :: int2_grad1_u12(n_grid1,ao_num,ao_num,4) + real(c_double), intent(out) :: tc_int_2e_ao(ao_num,ao_num,ao_num,ao_num) + + end subroutine + + end interface + +end module + +! --- + diff --git a/plugins/local/tc_int/write_tc_int_gpu.irp.f b/plugins/local/tc_int/write_tc_int_gpu.irp.f new file mode 100644 index 00000000..c0dd9c90 --- /dev/null +++ b/plugins/local/tc_int/write_tc_int_gpu.irp.f @@ -0,0 +1,56 @@ +! --- + +program write_tc_int_gpu + + implicit none + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + + call main() + +end + +! --- + +subroutine main() + + implicit none + + PROVIDE io_tc_integ + + print*, 'io_tc_integ = ', io_tc_integ + + if(io_tc_integ .ne. "Write") then + print*, 'io_tc_integ != Write' + print*, io_tc_integ + stop + endif + + call provide_int2_grad1_u12_ao_gpu() + + call ezfio_set_tc_keywords_io_tc_integ('Read') + +end + +! --- + diff --git a/src/dft_utils_in_r/ao_in_r.irp.f b/src/dft_utils_in_r/ao_in_r.irp.f index 16414f39..e9c003d4 100644 --- a/src/dft_utils_in_r/ao_in_r.irp.f +++ b/src/dft_utils_in_r/ao_in_r.irp.f @@ -52,35 +52,39 @@ END_PROVIDER BEGIN_PROVIDER[double precision, aos_grad_in_r_array, (ao_num,n_points_final_grid,3)] - BEGIN_DOC - ! aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point - ! - ! k = 1 : x, k= 2, y, k 3, z - END_DOC + BEGIN_DOC + ! + ! aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point + ! + ! k = 1 : x, k= 2, y, k 3, z + ! + END_DOC - implicit none - integer :: i,j,m - double precision :: aos_array(ao_num), r(3) - double precision :: aos_grad_array(3,ao_num) - !$OMP PARALLEL DO & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i,r,aos_array,aos_grad_array,j,m) & - !$OMP SHARED(aos_grad_in_r_array,n_points_final_grid,ao_num,final_grid_points) - do i = 1, n_points_final_grid - r(1) = final_grid_points(1,i) - r(2) = final_grid_points(2,i) - r(3) = final_grid_points(3,i) - call give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) - do m = 1, 3 - do j = 1, ao_num - aos_grad_in_r_array(j,i,m) = aos_grad_array(m,j) - enddo + implicit none + integer :: i, j, m + double precision :: aos_array(ao_num), r(3) + double precision :: aos_grad_array(3,ao_num) + + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i,j,m,r,aos_array,aos_grad_array) & + !$OMP SHARED(aos_grad_in_r_array,n_points_final_grid,ao_num,final_grid_points) + do i = 1, n_points_final_grid + r(1) = final_grid_points(1,i) + r(2) = final_grid_points(2,i) + r(3) = final_grid_points(3,i) + call give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) + do m = 1, 3 + do j = 1, ao_num + aos_grad_in_r_array(j,i,m) = aos_grad_array(m,j) + enddo + enddo enddo - enddo - !$OMP END PARALLEL DO + !$OMP END PARALLEL DO +END_PROVIDER - END_PROVIDER +! --- BEGIN_PROVIDER[double precision, aos_grad_in_r_array_transp, (3,ao_num,n_points_final_grid)] @@ -205,18 +209,53 @@ BEGIN_PROVIDER[double precision, aos_grad_in_r_array, (ao_num,n_points_final_gri END_PROVIDER - BEGIN_PROVIDER[double precision, aos_in_r_array_extra_transp, (n_points_extra_final_grid,ao_num)] - implicit none - BEGIN_DOC - ! aos_in_r_array_extra_transp(i,j) = value of the jth ao on the ith grid point - END_DOC - integer :: i,j - double precision :: aos_array(ao_num), r(3) - do i = 1, n_points_extra_final_grid - do j = 1, ao_num - aos_in_r_array_extra_transp(i,j) = aos_in_r_array_extra(j,i) +! --- + +BEGIN_PROVIDER[double precision, aos_in_r_array_extra_transp, (n_points_extra_final_grid,ao_num)] + + BEGIN_DOC + ! aos_in_r_array_extra_transp(i,j) = value of the jth ao on the ith grid point + END_DOC + + implicit none + integer :: i, j + double precision :: aos_array(ao_num), r(3) + + do i = 1, n_points_extra_final_grid + do j = 1, ao_num + aos_in_r_array_extra_transp(i,j) = aos_in_r_array_extra(j,i) + enddo enddo - enddo - END_PROVIDER +END_PROVIDER + +! --- + +BEGIN_PROVIDER[double precision, aos_grad_in_r_array_extra, (ao_num,n_points_extra_final_grid,3)] + + implicit none + integer :: i, j, m + double precision :: aos_array(ao_num), r(3) + double precision :: aos_grad_array(3,ao_num) + + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i,j,m,r,aos_array,aos_grad_array) & + !$OMP SHARED(aos_grad_in_r_array_extra,n_points_extra_final_grid,ao_num,final_grid_points_extra) + do i = 1, n_points_extra_final_grid + r(1) = final_grid_points_extra(1,i) + r(2) = final_grid_points_extra(2,i) + r(3) = final_grid_points_extra(3,i) + call give_all_aos_and_grad_at_r(r, aos_array, aos_grad_array) + do m = 1, 3 + do j = 1, ao_num + aos_grad_in_r_array_extra(j,i,m) = aos_grad_array(m,j) + enddo + enddo + enddo + !$OMP END PARALLEL DO + +END_PROVIDER + +! --- From 860121d404f7ae255790cd12136139103bdc48d0 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Sat, 29 Jun 2024 02:27:50 +0200 Subject: [PATCH 105/159] H_oo on GPU --- plugins/local/gpu_nvidia/gpu.c | 224 +++++++++++---------- plugins/local/gpu_x86/gpu.c | 38 ++-- src/ccsd/ccsd_space_orb_sub.irp.f | 112 ++++++++--- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 127 ++++++++---- src/gpu/gpu.irp.f | 7 + src/gpu/gpu_module.F90 | 260 +++++++++++++++++++++---- 6 files changed, 540 insertions(+), 228 deletions(-) diff --git a/plugins/local/gpu_nvidia/gpu.c b/plugins/local/gpu_nvidia/gpu.c index f0bd247a..189de64c 100644 --- a/plugins/local/gpu_nvidia/gpu.c +++ b/plugins/local/gpu_nvidia/gpu.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -10,6 +11,10 @@ /* Generic functions */ +bool no_gpu() { + return false; +} + int gpu_ndevices() { int ngpus; cudaGetDeviceCount(&ngpus); @@ -17,7 +22,7 @@ int gpu_ndevices() { } void gpu_set_device(int32_t igpu) { - cudaSetDevice(igpu); + cudaSetDevice((int) igpu); } @@ -64,22 +69,20 @@ void gpu_copy(const void* gpu_ptr_src, void* gpu_ptr_dest, const int64_t n) { /* Streams */ -void gpu_stream_create(void** ptr) { - cudaStream_t stream; - cudaError_t rc = cudaStreamCreate(&stream); +void gpu_stream_create(cudaStream_t* ptr) { + cudaError_t rc = cudaStreamCreate(ptr); assert (rc == cudaSuccess); - *ptr = (void*) stream; } -void gpu_stream_destroy(void** ptr) { - assert (*ptr != NULL); - cudaError_t rc = cudaStreamDestroy( (cudaStream_t) *ptr); +void gpu_stream_destroy(cudaStream_t* ptr) { + assert (ptr != NULL); + cudaError_t rc = cudaStreamDestroy(*ptr); assert (rc == cudaSuccess); *ptr = NULL; } -void gpu_set_stream(void** handle, void** stream) { - cublasSetStream( (cublasHandle_t) *handle, (cudaStream_t) *stream); +void gpu_set_stream(cublasHandle_t handle, cudaStream_t stream) { + cublasSetStream(handle, stream); } void gpu_synchronize() { @@ -89,75 +92,80 @@ void gpu_synchronize() { /* BLAS functions */ -void gpu_blas_create(void** handle) { - cublasHandle_t cublas_handle; - cublasStatus_t rc = cublasCreate(&cublas_handle); +void gpu_blas_create(cublasHandle_t* ptr) { + cublasStatus_t rc = cublasCreate(ptr); assert (rc == CUBLAS_STATUS_SUCCESS); - *handle = (void*) cublas_handle; } -void gpu_blas_destroy(void** handle) { - assert (*handle != NULL); - cublasStatus_t rc = cublasDestroy( (cublasHandle_t) *handle); +void gpu_blas_destroy(cublasHandle_t* ptr) { + assert (ptr != NULL); + cublasStatus_t rc = cublasDestroy(*ptr); assert (rc == CUBLAS_STATUS_SUCCESS); - *handle = NULL; + ptr = NULL; } -void gpu_ddot(void** handle, const int64_t n, const double* x, const int64_t incx, const double* y, const int64_t incy, double* result) { - assert (*handle != NULL); +void gpu_ddot(cublasHandle_t handle, const int64_t n, const double* x, const int64_t incx, const double* y, const int64_t incy, double* result) { + assert (handle != NULL); + /* Convert to int */ + int n_, incx_, incy_; - /* Convert to int32_t */ - int32_t n_, incx_, incy_; + n_ = (int) n; + incx_ = (int) incx; + incy_ = (int) incy; - n_ = (int32_t) n; - incx_ = (int32_t) incx; - incy_ = (int32_t) incy; + assert ( (int64_t) n_ == n ); + assert ( (int64_t) incx_ == incx); + assert ( (int64_t) incy_ == incy); + + cublasStatus_t rc = cublasDdot(handle, n_, x, incx_, y, incy_, result); +/* + double alpha = 1.0; + double beta = 0.0; + cublasStatus_t rc = cublasDgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, 1, 1, n_, &alpha, x, 1, y, n_, &beta, &result_, 1); +*/ + assert (rc == CUBLAS_STATUS_SUCCESS); +} + + + +void gpu_sdot(cublasHandle_t handle, const int64_t n, const float* x, const int64_t incx, const float* y, const int64_t incy, float* result) { + assert (handle != NULL); + + /* Convert to int */ + int n_, incx_, incy_; + + n_ = (int) n; + incx_ = (int) incx; + incy_ = (int) incy; /* Check for integer overflows */ assert ( (int64_t) n_ == n ); assert ( (int64_t) incx_ == incx); assert ( (int64_t) incy_ == incy); - cublasDdot((cublasHandle_t) *handle, n_, x, incx_, y, incy_, result); + float result_ = 0.; + cublasStatus_t rc = cublasSdot(handle, n_, x, incx_, y, incy_, &result_); + assert (rc == CUBLAS_STATUS_SUCCESS); + *result = result_; } -void gpu_sdot(void** handle, const int64_t n, const float* x, const int64_t incx, const float* y, const int64_t incy, float* result) { - assert (*handle != NULL); - - /* Convert to int32_t */ - int32_t n_, incx_, incy_; - - n_ = (int32_t) n; - incx_ = (int32_t) incx; - incy_ = (int32_t) incy; - - /* Check for integer overflows */ - assert ( (int64_t) n_ == n ); - assert ( (int64_t) incx_ == incx); - assert ( (int64_t) incy_ == incy); - - cublasSdot((cublasHandle_t) *handle, n_, x, incx_, y, incy_, result); -} - - - -void gpu_dgemv(void** handle, const char transa, const int64_t m, const int64_t n, const double alpha, +void gpu_dgemv(cublasHandle_t handle, const char transa, const int64_t m, const int64_t n, const double alpha, const double* a, const int64_t lda, const double* x, const int64_t incx, const double beta, double* y, const int64_t incy) { - assert (*handle != NULL); + assert (handle != NULL); - /* Convert to int32_t */ - int32_t m_, n_, lda_, incx_, incy_; + /* Convert to int */ + int m_, n_, lda_, incx_, incy_; - m_ = (int32_t) m; - n_ = (int32_t) n; - lda_ = (int32_t) lda; - incx_ = (int32_t) incx; - incy_ = (int32_t) incy; + m_ = (int) m; + n_ = (int) n; + lda_ = (int) lda; + incx_ = (int) incx; + incy_ = (int) incy; /* Check for integer overflows */ assert ( (int64_t) m_ == m ); @@ -169,24 +177,24 @@ void gpu_dgemv(void** handle, const char transa, const int64_t m, const int64_t cublasOperation_t transa_ = CUBLAS_OP_N; if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; - cublasDgemv((cublasHandle_t) *handle, transa_, m_, n_, &alpha, a, lda_, x, incx_, &beta, y, incy_); + cublasDgemv(handle, transa_, m_, n_, &alpha, a, lda_, x, incx_, &beta, y, incy_); } -void gpu_sgemv(void** handle, const char transa, const int64_t m, const int64_t n, const float alpha, +void gpu_sgemv(cublasHandle_t handle, const char transa, const int64_t m, const int64_t n, const float alpha, const float* a, const int64_t lda, const float* x, const int64_t incx, const float beta, float* y, const int64_t incy) { - assert (*handle != NULL); + assert (handle != NULL); - /* Convert to int32_t */ - int32_t m_, n_, lda_, incx_, incy_; + /* Convert to int */ + int m_, n_, lda_, incx_, incy_; - m_ = (int32_t) m; - n_ = (int32_t) n; - lda_ = (int32_t) lda; - incx_ = (int32_t) incx; - incy_ = (int32_t) incy; + m_ = (int) m; + n_ = (int) n; + lda_ = (int) lda; + incx_ = (int) incx; + incy_ = (int) incy; /* Check for integer overflows */ assert ( (int64_t) m_ == m ); @@ -198,24 +206,24 @@ void gpu_sgemv(void** handle, const char transa, const int64_t m, const int64_t cublasOperation_t transa_ = CUBLAS_OP_N; if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; - cublasSgemv((cublasHandle_t) *handle, transa_, m_, n_, &alpha, a, lda_, x, incx_, &beta, y, incy_); + cublasSgemv(handle, transa_, m_, n_, &alpha, a, lda_, x, incx_, &beta, y, incy_); } -void gpu_dgemm(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, +void gpu_dgemm(cublasHandle_t handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, const double* a, const int64_t lda, const double* b, const int64_t ldb, const double beta, double* c, const int64_t ldc) { - assert (*handle != NULL); + assert (handle != NULL); - /* Convert to int32_t */ - int32_t m_, n_, k_, lda_, ldb_, ldc_; + /* Convert to int */ + int m_, n_, k_, lda_, ldb_, ldc_; - m_ = (int32_t) m; - n_ = (int32_t) n; - k_ = (int32_t) k; - lda_ = (int32_t) lda; - ldb_ = (int32_t) ldb; - ldc_ = (int32_t) ldc; + m_ = (int) m; + n_ = (int) n; + k_ = (int) k; + lda_ = (int) lda; + ldb_ = (int) ldb; + ldc_ = (int) ldc; /* Check for integer overflows */ assert ( (int64_t) m_ == m ); @@ -230,25 +238,25 @@ void gpu_dgemm(void** handle, const char transa, const char transb, const int64_ if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; - cublasDgemm((cublasHandle_t) *handle, transa_, transb_, m_, n_, k_, &alpha, a, lda_, b, ldb_, &beta, c, ldc_); + cublasDgemm(handle, transa_, transb_, m_, n_, k_, &alpha, a, lda_, b, ldb_, &beta, c, ldc_); } -void gpu_sgemm(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, +void gpu_sgemm(cublasHandle_t handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, const float* a, const int64_t lda, const float* b, const int64_t ldb, const float beta, float* c, const int64_t ldc) { - assert (*handle != NULL); + assert (handle != NULL); - /* Convert to int32_t */ - int32_t m_, n_, k_, lda_, ldb_, ldc_; + /* Convert to int */ + int m_, n_, k_, lda_, ldb_, ldc_; - m_ = (int32_t) m; - n_ = (int32_t) n; - k_ = (int32_t) k; - lda_ = (int32_t) lda; - ldb_ = (int32_t) ldb; - ldc_ = (int32_t) ldc; + m_ = (int) m; + n_ = (int) n; + k_ = (int) k; + lda_ = (int) lda; + ldb_ = (int) ldb; + ldc_ = (int) ldc; /* Check for integer overflows */ assert ( (int64_t) m_ == m ); @@ -263,22 +271,22 @@ void gpu_sgemm(void** handle, const char transa, const char transb, const int64_ if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; - cublasSgemm((cublasHandle_t) *handle, transa_, transb_, m_, n_, k_, &alpha, a, lda_, b, ldb_, &beta, c, ldc_); + cublasSgemm(handle, transa_, transb_, m_, n_, k_, &alpha, a, lda_, b, ldb_, &beta, c, ldc_); } -void gpu_dgeam(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, +void gpu_dgeam(cublasHandle_t handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, const double* a, const int64_t lda, const double beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { - assert (*handle != NULL); + assert (handle != NULL); - /* Convert to int32_t */ - int32_t m_, n_, lda_, ldb_, ldc_; + /* Convert to int */ + int m_, n_, lda_, ldb_, ldc_; - m_ = (int32_t) m; - n_ = (int32_t) n; - lda_ = (int32_t) lda; - ldb_ = (int32_t) ldb; - ldc_ = (int32_t) ldc; + m_ = (int) m; + n_ = (int) n; + lda_ = (int) lda; + ldb_ = (int) ldb; + ldc_ = (int) ldc; /* Check for integer overflows */ assert ( (int64_t) m_ == m ); @@ -292,23 +300,23 @@ void gpu_dgeam(void** handle, const char transa, const char transb, const int64_ if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; - cublasDgeam((cublasHandle_t) *handle, transa_, transb_, m_, n_, &alpha, a, lda_, &beta, b, ldb_, c, ldc_); + cublasDgeam(handle, transa_, transb_, m_, n_, &alpha, a, lda_, &beta, b, ldb_, c, ldc_); } -void gpu_sgeam(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const float alpha, +void gpu_sgeam(cublasHandle_t handle, const char transa, const char transb, const int64_t m, const int64_t n, const float alpha, const float* a, const int64_t lda, const float beta, const float* b, const int64_t ldb, float* c, const int64_t ldc) { - assert (*handle != NULL); + assert (handle != NULL); - /* Convert to int32_t */ - int32_t m_, n_, lda_, ldb_, ldc_; + /* Convert to int */ + int m_, n_, lda_, ldb_, ldc_; - m_ = (int32_t) m; - n_ = (int32_t) n; - lda_ = (int32_t) lda; - ldb_ = (int32_t) ldb; - ldc_ = (int32_t) ldc; + m_ = (int) m; + n_ = (int) n; + lda_ = (int) lda; + ldb_ = (int) ldb; + ldc_ = (int) ldc; /* Check for integer overflows */ assert ( (int64_t) m_ == m ); @@ -322,6 +330,6 @@ void gpu_sgeam(void** handle, const char transa, const char transb, const int64_ if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; - cublasSgeam((cublasHandle_t) *handle, transa_, transb_, m_, n_, &alpha, a, lda_, &beta, b, ldb_, c, ldc_); + cublasSgeam(handle, transa_, transb_, m_, n_, &alpha, a, lda_, &beta, b, ldb_, c, ldc_); } diff --git a/plugins/local/gpu_x86/gpu.c b/plugins/local/gpu_x86/gpu.c index ac7c3620..53267a7c 100644 --- a/plugins/local/gpu_x86/gpu.c +++ b/plugins/local/gpu_x86/gpu.c @@ -2,8 +2,12 @@ #include #include #include +#include #include +bool no_gpu() { + return true; +} /* Generic functions */ @@ -56,7 +60,7 @@ void gpu_stream_destroy(void** ptr) { *ptr = NULL; } -void gpu_set_stream(void** handle, void** stream) { +void gpu_set_stream(void* handle, void* stream) { return; } @@ -79,8 +83,8 @@ void gpu_blas_destroy(void** handle) { double ddot_(const int32_t* n, const double* x, const int32_t* incx, const double* y, const int32_t* incy); -void gpu_ddot(void** handle, const int64_t n, const double* x, const int64_t incx, const double* y, const int64_t incy, double* result) { - assert (*handle != NULL); +void gpu_ddot(void* handle, const int64_t n, const double* x, const int64_t incx, const double* y, const int64_t incy, double* result) { + assert (handle != NULL); /* Convert to int32_t */ int32_t n_, incx_, incy_; @@ -100,8 +104,8 @@ void gpu_ddot(void** handle, const int64_t n, const double* x, const int64_t inc float sdot_(const int32_t* n, const float* x, const int32_t* incx, const float* y, const int32_t* incy); -void gpu_sdot(void** handle, const int64_t n, const float* x, const int64_t incx, const float* y, const int64_t incy, float* result) { - assert (*handle != NULL); +void gpu_sdot(void* handle, const int64_t n, const float* x, const int64_t incx, const float* y, const int64_t incy, float* result) { + assert (handle != NULL); /* Convert to int32_t */ int32_t n_, incx_, incy_; @@ -122,10 +126,10 @@ void gpu_sdot(void** handle, const int64_t n, const float* x, const int64_t incx void dgemv_(const char* transa, const int32_t* m, const int32_t* n, const double* alpha, const double* a, const int32_t* lda, const double* x, const int32_t* incx, const double* beta, double* y, const int32_t* incy); -void gpu_dgemv(void** handle, const char transa, const int64_t m, const int64_t n, const double alpha, +void gpu_dgemv(void* handle, const char transa, const int64_t m, const int64_t n, const double alpha, const double* a, const int64_t lda, const double* x, const int64_t incx, const double beta, double* y, const int64_t incy) { - assert (*handle != NULL); + assert (handle != NULL); /* Convert to int32_t */ int32_t m_, n_, lda_, incx_, incy_; @@ -150,10 +154,10 @@ void gpu_dgemv(void** handle, const char transa, const int64_t m, const int64_t void sgemv_(const char* transa, const int32_t* m, const int32_t* n, const float* alpha, const float* a, const int32_t* lda, const float* x, const int32_t* incx, const float* beta, float* y, const int32_t* incy); -void gpu_sgemv(void** handle, const char transa, const int64_t m, const int64_t n, const float alpha, +void gpu_sgemv(void* handle, const char transa, const int64_t m, const int64_t n, const float alpha, const float* a, const int64_t lda, const float* x, const int64_t incx, const float beta, float* y, const int64_t incy) { - assert (*handle != NULL); + assert (handle != NULL); /* Convert to int32_t */ int32_t m_, n_, lda_, incx_, incy_; @@ -178,10 +182,10 @@ void gpu_sgemv(void** handle, const char transa, const int64_t m, const int64_t void dgemm_(const char* transa, const char* transb, const int32_t* m, const int32_t* n, const int32_t* k, const double* alpha, const double* a, const int32_t* lda, const double* b, const int32_t* ldb, const double* beta, double* c, const int32_t* ldc); -void gpu_dgemm(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, +void gpu_dgemm(void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, const double* a, const int64_t lda, const double* b, const int64_t ldb, const double beta, double* c, const int64_t ldc) { - assert (*handle != NULL); + assert (handle != NULL); /* Convert to int32_t */ int32_t m_, n_, k_, lda_, ldb_, ldc_; @@ -209,10 +213,10 @@ void gpu_dgemm(void** handle, const char transa, const char transb, const int64_ void sgemm_(const char* transa, const char* transb, const int32_t* m, const int32_t* n, const int32_t* k, const float* alpha, const float* a, const int32_t* lda, const float* b, const int32_t* ldb, const float* beta, float* c, const int32_t* ldc); -void gpu_sgemm(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, +void gpu_sgemm(void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, const float* a, const int64_t lda, const float* b, const int64_t ldb, const float beta, float* c, const int64_t ldc) { - assert (*handle != NULL); + assert (handle != NULL); /* Convert to int32_t */ int32_t m_, n_, k_, lda_, ldb_, ldc_; @@ -236,9 +240,9 @@ void gpu_sgemm(void** handle, const char transa, const char transb, const int64_ } -void gpu_dgeam(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, +void gpu_dgeam(void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, const double* a, const int64_t lda, const double beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { - assert (*handle != NULL); + assert (handle != NULL); if ( (transa == 'N' && transb == 'N') || (transa == 'n' && transb == 'N') || @@ -368,9 +372,9 @@ void gpu_dgeam(void** handle, const char transa, const char transb, const int64_ } -void gpu_sgeam(void** handle, const char transa, const char transb, const int64_t m, const int64_t n, const float alpha, +void gpu_sgeam(void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const float alpha, const float* a, const int64_t lda, const float beta, const float* b, const int64_t ldb, float* c, const int64_t ldc) { - assert (*handle != NULL); + assert (handle != NULL); if ( (transa == 'N' && transb == 'N') || (transa == 'n' && transb == 'N') || diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 5c2daa05..5ee7366e 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -14,9 +14,15 @@ subroutine run_ccsd_space_orb type(gpu_double2) :: t1, r1 type(gpu_double2) :: H_oo, H_vv, H_vo - type(gpu_double2) :: d_cc_space_f_vo + type(gpu_double2) :: d_cc_space_f_oo, d_cc_space_f_vo + type(gpu_double2) :: d_cc_space_f_ov, d_cc_space_f_vv + + type(gpu_double3) :: d_cc_space_v_oo_chol, d_cc_space_v_vo_chol + type(gpu_double3) :: d_cc_space_v_ov_chol, d_cc_space_v_vv_chol + type(gpu_double4) :: d_cc_space_v_oovv + double precision, allocatable :: all_err(:,:), all_t(:,:) integer, allocatable :: list_occ(:), list_vir(:) integer(bit_kind) :: det(N_int,2) @@ -24,7 +30,7 @@ subroutine run_ccsd_space_orb call set_multiple_levels_omp(.False.) - if (do_ao_cholesky) then + if (do_mo_cholesky) then PROVIDE cholesky_mo_transp FREE cholesky_ao else @@ -55,11 +61,36 @@ subroutine run_ccsd_space_orb !print*,'occ',list_occ !print*,'vir',list_vir + ! GPU arrays + call gpu_allocate(d_cc_space_f_oo, nO, nO) call gpu_allocate(d_cc_space_f_vo, nV, nO) - call gpu_allocate(d_cc_space_v_oovv, nO, nO, nV, nV) - call gpu_upload(cc_space_f_vo, d_cc_space_f_vo) - call gpu_upload(cc_space_v_oovv, d_cc_space_v_oovv) + call gpu_allocate(d_cc_space_f_ov, nO, nV) + call gpu_allocate(d_cc_space_f_vv, nV, nV) + call gpu_upload(cc_space_f_oo, d_cc_space_f_oo) + call gpu_upload(cc_space_f_vo, d_cc_space_f_vo) + call gpu_upload(cc_space_f_vv, d_cc_space_f_vv) + +! FREE cc_space_f_oo +! FREE cc_space_f_vo +! FREE cc_space_f_vv + + if (do_mo_cholesky) then + call gpu_allocate(d_cc_space_v_oo_chol, cholesky_mo_num, nO, nO) + call gpu_allocate(d_cc_space_v_ov_chol, cholesky_mo_num, nO, nV) + call gpu_allocate(d_cc_space_v_vo_chol, cholesky_mo_num, nV, nO) + call gpu_allocate(d_cc_space_v_vv_chol, cholesky_mo_num, nV, nV) + + call gpu_upload(cc_space_v_oo_chol, d_cc_space_v_oo_chol) + call gpu_upload(cc_space_v_ov_chol, d_cc_space_v_ov_chol) + call gpu_upload(cc_space_v_vo_chol, d_cc_space_v_vo_chol) + call gpu_upload(cc_space_v_vv_chol, d_cc_space_v_vv_chol) + +! FREE cc_space_v_oo_chol +! FREE cc_space_v_ov_chol +! FREE cc_space_v_vo_chol +! FREE cc_space_v_vv_chol + endif call gpu_allocate(t2, nO,nO,nV,nV) call gpu_allocate(r2, nO,nO,nV,nV) @@ -120,6 +151,13 @@ subroutine run_ccsd_space_orb call guess_t2(nO,nV,cc_space_f_o,cc_space_f_v,cc_space_v_oovv,h_t2) call gpu_upload(h_t2, t2) + + call gpu_allocate(d_cc_space_v_oovv, nO, nO, nV, nV) + call gpu_upload(cc_space_v_oovv, d_cc_space_v_oovv) + +! FREE cc_space_v_oovv + + call update_tau_space(nO,nV,h_t1,t1,t2,tau) call update_tau_x_space(nO,nV,tau,tau_x) !print*,'hf_energy', hf_energy @@ -142,10 +180,10 @@ subroutine run_ccsd_space_orb do while (not_converged) ! Residue - if (do_ao_cholesky) then -! if (.False.) then - call compute_H_oo_chol(nO,nV,tau_x,H_oo) - call compute_H_vv_chol(nO,nV,tau_x%f,H_vv%f) + if (do_mo_cholesky) then + call compute_H_oo_chol(nO,nV,tau_x,d_cc_space_f_oo, & + d_cc_space_v_ov_chol,d_cc_space_v_vo_chol,H_oo) + call compute_H_vv_chol(nO,nV,tau_x,H_vv) call compute_H_vo_chol(nO,nV,t1%f,H_vo%f) call compute_r1_space_chol(nO,nV,t1%f,t2%f,tau%f,H_oo%F,H_vv%F,H_vo%F,r1%f,max_r1) @@ -249,6 +287,12 @@ subroutine run_ccsd_space_orb call save_energy(uncorr_energy + energy, e_t) deallocate(h_t1, h_t2) + if (do_mo_cholesky) then + call gpu_deallocate(d_cc_space_v_oo_chol) + call gpu_deallocate(d_cc_space_v_ov_chol) + call gpu_deallocate(d_cc_space_v_vo_chol) + call gpu_deallocate(d_cc_space_v_vv_chol) + endif call gpu_deallocate(d_cc_space_f_vo) call gpu_deallocate(d_cc_space_v_oovv) call gpu_deallocate(t1) @@ -302,8 +346,21 @@ subroutine ccsd_energy_space_x(nO,nV,d_cc_space_v_oovv,d_cc_space_f_vo,tau_x,t1, ! !$omp end parallel - call gpu_ddot(blas_handle, nO*nO*nV*nV*1_8, tau_x, 1, d_cc_space_v_oovv, 1, energy) - call gpu_ddot(blas_handle, nO*nV*1_8, d_cc_space_f_vo, 1, t1, 1, e) + type(gpu_stream) :: s1, s2 + call gpu_stream_create(s1) + call gpu_stream_create(s2) + + call gpu_set_stream(blas_handle,s1) + call gpu_ddot(blas_handle, nO*nV, d_cc_space_f_vo, 1, t1, 1, e) + + call gpu_set_stream(blas_handle,s2) + call gpu_ddot_64(blas_handle, nO*nO*nV*nV*1_8, tau_x, 1_8, d_cc_space_v_oovv, 1_8, energy) + call gpu_synchronize() + call gpu_set_stream(blas_handle,gpu_default_stream) + + call gpu_stream_destroy(s1) + call gpu_stream_destroy(s2) + energy = energy + 2.d0*e end @@ -346,32 +403,29 @@ subroutine update_tau_space(nO,nV,h_t1,t1,t2,tau) type(gpu_stream) :: stream(nV) - do b=1,nV - call gpu_stream_create(stream(b)) - enddo - - !$OMP PARALLEL & + !$OMP PARALLEL if (no_gpu()) & !$OMP SHARED(nO,nV,tau,t2,t1,h_t1,stream,blas_handle) & !$OMP PRIVATE(i,j,a,b) & !$OMP DEFAULT(NONE) !$OMP DO do b=1,nV + call gpu_stream_create(stream(b)) call gpu_set_stream(blas_handle,stream(b)) do j=1,nO - call gpu_dgeam(blas_handle, 'N', 'N', nO*1_8, nV*1_8, & - 1.d0, t2%f(1,j,1,b), nO*nO*1_8, & - h_t1(j,b), t1%f, nO*1_8, & - tau%f(1,j,1,b), nO*nO*1_8) + call gpu_dgeam_f(blas_handle, 'N', 'N', nO, nV, & + 1.d0, t2%f(1,j,1,b), nO*nO, & + h_t1(j,b), t1%f, nO, & + tau%f(1,j,1,b), nO*nO) enddo enddo !$OMP END DO !$OMP END PARALLEL - call gpu_synchronize() - do b=1,nV call gpu_stream_destroy(stream(b)) enddo + call gpu_set_stream(blas_handle,gpu_default_stream) + end @@ -412,7 +466,7 @@ subroutine update_tau_x_space(nO,nV,tau,tau_x) call gpu_stream_create(stream(a)) enddo - !$OMP PARALLEL & + !$OMP PARALLEL if (no_gpu()) & !$OMP SHARED(nO,nV,tau,tau_x,stream,blas_handle) & !$OMP PRIVATE(i,j,a,b) & !$OMP DEFAULT(NONE) @@ -420,20 +474,20 @@ subroutine update_tau_x_space(nO,nV,tau,tau_x) do b=1,nV do a=1,nV call gpu_set_stream(blas_handle,stream(a)) - call gpu_dgeam(blas_handle, 'N', 'N', nO*1_8, nO*1_8, & - 2.d0, tau%f(1,1,a,b), nO*1_8, & - -1.d0, tau%f(1,1,b,a), nO*1_8, & - tau_x%f(1,1,a,b), nO*1_8) + call gpu_dgeam_f(blas_handle, 'N', 'N', nO, nO, & + 2.d0, tau%f(1,1,a,b), nO, & + -1.d0, tau%f(1,1,b,a), nO, & + tau_x%f(1,1,a,b), nO) enddo enddo !$OMP END DO !$OMP END PARALLEL - call gpu_synchronize() - do b=1,nV call gpu_stream_destroy(stream(b)) enddo + call gpu_set_stream(blas_handle,gpu_default_stream) + end diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index 9b161001..288724f3 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -293,62 +293,115 @@ end ! H_oo -subroutine compute_H_oo_chol(nO,nV,tau_x,H_oo) +subroutine compute_H_oo_chol(nO,nV,tau_x,d_cc_space_f_oo, & + d_cc_space_v_ov_chol,d_cc_space_v_vo_chol,H_oo) use gpu implicit none integer, intent(in) :: nO,nV + type(gpu_double2), intent(in) :: d_cc_space_f_oo + type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol, d_cc_space_v_vo_chol type(gpu_double4), intent(in) :: tau_x type(gpu_double2), intent(out) :: H_oo integer :: a,b,i,j,u,k - double precision, allocatable :: tau_kau(:,:,:), tmp_vov(:,:,:) + type(gpu_double3) :: tau_kau, tmp_vov, tmp_ovv - allocate(tau_kau(cholesky_mo_num,nV,nO)) - !$omp parallel & - !$omp default(shared) & - !$omp private(i,u,j,k,a,b,tmp_vov) - allocate(tmp_vov(nV,nO,nV) ) - !$omp do - do u = 1, nO + call gpu_allocate(tau_kau, cholesky_mo_num, nV, nO) + +! !$omp parallel & +! !$omp default(shared) & +! !$omp private(i,u,j,k,a,b,tmp_vov) +! call gpu_allocate(tmp_vov, nV, nO, nV) +! !$omp do +! do u = 1, nO +! do b=1,nV +! do j=1,nO +! do a=1,nV +! tmp_vov%f(a,j,b) = tau_x%f(u,j,a,b) +! enddo +! enddo +! enddo +! call dgemm('N','T',cholesky_mo_num,nV,nO*nV,1.d0, & +! d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num, tmp_vov%f, nV, & +! 0.d0, tau_kau%f(1,1,u), cholesky_mo_num) +! enddo +! !$omp end do nowait +! call gpu_deallocate(tmp_vov) +! !$omp do +! do i = 1, nO +! do u = 1, nO +! H_oo%f(u,i) = d_cc_space_f_oo%f(u,i) +! enddo +! enddo +! !$omp end do nowait +! +! !$omp barrier +! !$omp end parallel +! call dgemm('T', 'N', nO, nO, cholesky_mo_num*nV, 1.d0, & +! tau_kau%f(1,1,1), cholesky_mo_num*nV, d_cc_space_v_vo_chol%f(1,1,1), cholesky_mo_num*nV, & +! 1.d0, H_oo%f(1,1), nO) +! + + type(gpu_stream) :: stream(nV) + + do b=1,nV + call gpu_stream_create(stream(b)) + enddo + + !$OMP PARALLEL if (no_gpu()) & + !$OMP DEFAULT(SHARED) & + !$OMP PRIVATE(u,b,tmp_vov,tmp_ovv) + + call gpu_allocate(tmp_vov, nV, nO, nV) + call gpu_allocate(tmp_ovv, nO, nV, nV) + + !$OMP DO + do u=1,nO + call gpu_dgeam_f(blas_handle, 'N', 'N', 1, nO*nV*nV, 1.d0, & + tau_x%f(u,1,1,1), nO, 0.d0, tau_x%f, nO, tmp_ovv%f, 1) do b=1,nV - do j=1,nO - do a=1,nV - tmp_vov(a,j,b) = tau_x%f(u,j,a,b) - enddo - enddo + call gpu_set_stream(blas_handle,stream(b)) + call gpu_dgeam_f(blas_handle, 'T', 'T', nV, nO, 1.d0, & + tmp_ovv%f(1,1,b), nO, 0.d0, & + tmp_ovv%f(1,1,b), nO, tmp_vov%f(1,1,b), nV) enddo - call dgemm('N','T',cholesky_mo_num,nV,nO*nV,1.d0, & - cc_space_v_ov_chol, cholesky_mo_num, tmp_vov, nV, & - 0.d0, tau_kau(1,1,u), cholesky_mo_num) + call gpu_dgemm_f(blas_handle, 'N','T',cholesky_mo_num,nV,nO*nV,1.d0, & + d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_vov%f, nV, & + 0.d0, tau_kau%f(1,1,u), cholesky_mo_num) + call gpu_synchronize() enddo - !$omp end do nowait - deallocate(tmp_vov) - !$omp do - do i = 1, nO - do u = 1, nO - H_oo%f(u,i) = cc_space_f_oo(u,i) - enddo - enddo - !$omp end do nowait - !$omp barrier - !$omp end parallel - call dgemm('T', 'N', nO, nO, cholesky_mo_num*nV, 1.d0, & - tau_kau, cholesky_mo_num*nV, cc_space_v_vo_chol, cholesky_mo_num*nV, & - 1.d0, H_oo%f, nO) + !$OMP END DO + call gpu_deallocate(tmp_vov) + call gpu_deallocate(tmp_ovv) + !$OMP END PARALLEL + + do b=1,nV + call gpu_stream_destroy(stream(b)) + enddo + + call gpu_set_stream(blas_handle,gpu_default_stream) + + call gpu_copy(d_cc_space_f_oo, H_oo) + + call gpu_dgemm(blas_handle, 'T', 'N', nO, nO, cholesky_mo_num*nV, 1.d0, & + tau_kau, cholesky_mo_num*nV, d_cc_space_v_vo_chol, cholesky_mo_num*nV, & + 1.d0, H_oo, nO) + + call gpu_deallocate(tau_kau) end ! H_vv subroutine compute_H_vv_chol(nO,nV,tau_x,H_vv) - + use gpu implicit none integer, intent(in) :: nO,nV - double precision, intent(in) :: tau_x(nO, nO, nV, nV) - double precision, intent(out) :: H_vv(nV, nV) + type(gpu_double4), intent(in) :: tau_x + type(gpu_double2), intent(out) :: H_vv integer :: a,b,i,j,u,k, beta @@ -364,7 +417,7 @@ subroutine compute_H_vv_chol(nO,nV,tau_x,H_vv) do b=1,nV do j=1,nO do i=1,nO - tmp_oov(i,j,b) = tau_x(i,j,a,b) + tmp_oov(i,j,b) = tau_x%f(i,j,a,b) enddo enddo enddo @@ -378,7 +431,7 @@ subroutine compute_H_vv_chol(nO,nV,tau_x,H_vv) !$omp do do beta = 1, nV do a = 1, nV - H_vv(a,beta) = cc_space_f_vv(a,beta) + H_vv%f(a,beta) = cc_space_f_vv(a,beta) enddo enddo !$omp end do nowait @@ -386,7 +439,7 @@ subroutine compute_H_vv_chol(nO,nV,tau_x,H_vv) !$omp end parallel call dgemm('T', 'N', nV, nV, cholesky_mo_num*nO, -1.d0, & tau_kia, cholesky_mo_num*nO, cc_space_v_ov_chol, cholesky_mo_num*nO, & - 1.d0, H_vv, nV) + 1.d0, H_vv%f, nV) end diff --git a/src/gpu/gpu.irp.f b/src/gpu/gpu.irp.f index e91d66f5..6ad0a075 100644 --- a/src/gpu/gpu.irp.f +++ b/src/gpu/gpu.irp.f @@ -8,4 +8,11 @@ BEGIN_PROVIDER [ type(gpu_blas), blas_handle ] call gpu_blas_create(blas_handle) END_PROVIDER +BEGIN_PROVIDER [ type(gpu_stream), gpu_default_stream ] + implicit none + BEGIN_DOC + ! Default stream + END_DOC + gpu_default_stream%c = C_NULL_PTR +END_PROVIDER diff --git a/src/gpu/gpu_module.F90 b/src/gpu/gpu_module.F90 index ecf79c83..2676b339 100644 --- a/src/gpu/gpu_module.F90 +++ b/src/gpu/gpu_module.F90 @@ -49,7 +49,12 @@ module gpu ! ------------ interface + logical(c_bool) function no_gpu() bind(C) + import + end function + integer function gpu_ndevices() bind(C) + import end function subroutine gpu_set_device(id) bind(C) @@ -101,7 +106,7 @@ module gpu subroutine gpu_set_stream_c(handle, stream) bind(C, name='gpu_set_stream') import - type(c_ptr) :: handle, stream + type(c_ptr), value :: handle, stream end subroutine subroutine gpu_synchronize() bind(C) @@ -120,15 +125,15 @@ module gpu subroutine gpu_ddot_c(handle, n, dx, incx, dy, incy, res) bind(C, name='gpu_ddot') import - type(c_ptr), intent(in) :: handle + type(c_ptr), value, intent(in) :: handle integer(c_int64_t), value :: n, incx, incy - type(c_ptr), intent(in), value :: dx, dy + type(c_ptr), value :: dx, dy real(c_double), intent(out) :: res end subroutine subroutine gpu_sdot_c(handle, n, dx, incx, dy, incy, res) bind(C, name='gpu_sdot') import - type(c_ptr), intent(in) :: handle + type(c_ptr), value, intent(in) :: handle integer(c_int64_t), value :: n, incx, incy type(c_ptr), intent(in), value :: dx, dy real(c_float), intent(out) :: res @@ -137,8 +142,8 @@ module gpu subroutine gpu_dgeam_c(handle, transa, transb, m, n, alpha, a, lda, beta, & b, ldb, c, ldc) bind(C, name='gpu_dgeam') import - type(c_ptr), intent(in) :: handle - character(c_char), intent(in), value :: transa, transb + type(c_ptr), value, intent(in) :: handle + character(c_char), intent(in), value :: transa, transb integer(c_int64_t), intent(in), value :: m, n, lda, ldb, ldc real(c_double), intent(in), value :: alpha, beta type(c_ptr), value :: a, b, c @@ -147,13 +152,33 @@ module gpu subroutine gpu_sgeam_c(handle, transa, transb, m, n, alpha, a, lda, beta, & b, ldb, c, ldc) bind(C, name='gpu_sgeam') import - type(c_ptr), intent(in) :: handle - character(c_char), intent(in), value :: transa, transb + type(c_ptr), value, intent(in) :: handle + character(c_char), intent(in), value :: transa, transb integer(c_int64_t), intent(in), value :: m, n, lda, ldb, ldc real(c_float), intent(in), value :: alpha, beta type(c_ptr), value :: a, b, c end subroutine + subroutine gpu_dgemm_c(handle, transa, transb, m, n, k, alpha, a, lda, & + b, ldb, beta, c, ldc) bind(C, name='gpu_dgemm') + import + type(c_ptr), value, intent(in) :: handle + character(c_char), intent(in), value :: transa, transb + integer(c_int64_t), intent(in), value :: m, n, k, lda, ldb, ldc + real(c_double), intent(in), value :: alpha, beta + type(c_ptr), value :: a, b, c + end subroutine + + subroutine gpu_sgemm_c(handle, transa, transb, m, n, k, alpha, a, lda, & + b, ldb, beta, c, ldc) bind(C, name='gpu_sgemm') + import + type(c_ptr), value, intent(in) :: handle + character(c_char), intent(in), value :: transa, transb + integer(c_int64_t), intent(in), value :: m, n, k, lda, ldb, ldc + real(c_float), intent(in), value :: alpha, beta + type(c_ptr), value :: a, b, c + end subroutine + end interface @@ -161,20 +186,26 @@ module gpu ! ---------------------- interface gpu_allocate - procedure gpu_allocate_double1 & - ,gpu_allocate_double2 & - ,gpu_allocate_double3 & - ,gpu_allocate_double4 & - ,gpu_allocate_double5 & - ,gpu_allocate_double6 + procedure gpu_allocate_double1 & + ,gpu_allocate_double2 & + ,gpu_allocate_double3 & + ,gpu_allocate_double4 & + ,gpu_allocate_double5 & + ,gpu_allocate_double6 & + ,gpu_allocate_double1_64 & + ,gpu_allocate_double2_64 & + ,gpu_allocate_double3_64 & + ,gpu_allocate_double4_64 & + ,gpu_allocate_double5_64 & + ,gpu_allocate_double6_64 end interface gpu_allocate interface gpu_deallocate - procedure gpu_deallocate_double1 & - ,gpu_deallocate_double2 & - ,gpu_deallocate_double3 & - ,gpu_deallocate_double4 & - ,gpu_deallocate_double5 & + procedure gpu_deallocate_double1 & + ,gpu_deallocate_double2 & + ,gpu_deallocate_double3 & + ,gpu_deallocate_double4 & + ,gpu_deallocate_double5 & ,gpu_deallocate_double6 end interface gpu_deallocate @@ -267,6 +298,61 @@ module gpu end subroutine + subroutine gpu_allocate_double1_64(ptr, s) + implicit none + type(gpu_double1), intent(inout) :: ptr + integer*8, intent(in) :: s + + call gpu_allocate_c(ptr%c, s) + call c_f_pointer(ptr%c, ptr%f, (/ s /)) + end subroutine + + subroutine gpu_allocate_double2_64(ptr, s1, s2) + implicit none + type(gpu_double2), intent(inout) :: ptr + integer*8, intent(in) :: s1, s2 + + call gpu_allocate_c(ptr%c, s1*s2*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s1, s2 /)) + end subroutine + + subroutine gpu_allocate_double3_64(ptr, s1, s2, s3) + implicit none + type(gpu_double3), intent(inout) :: ptr + integer*8, intent(in) :: s1, s2, s3 + + call gpu_allocate_c(ptr%c, s1*s2*s3*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s1, s2, s3 /)) + end subroutine + + subroutine gpu_allocate_double4_64(ptr, s1, s2, s3, s4) + implicit none + type(gpu_double4), intent(inout) :: ptr + integer*8, intent(in) :: s1, s2, s3, s4 + + call gpu_allocate_c(ptr%c, s1*s2*s3*s4*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s1, s2, s3, s4 /)) + end subroutine + + subroutine gpu_allocate_double5_64(ptr, s1, s2, s3, s4, s5) + implicit none + type(gpu_double5), intent(inout) :: ptr + integer*8, intent(in) :: s1, s2, s3, s4, s5 + + call gpu_allocate_c(ptr%c, s1*s2*s3*s4*s5*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s1, s2, s3, s4, s5 /)) + end subroutine + + subroutine gpu_allocate_double6_64(ptr, s1, s2, s3, s4, s5, s6) + implicit none + type(gpu_double6), intent(inout) :: ptr + integer*8, intent(in) :: s1, s2, s3, s4, s5, s6 + + call gpu_allocate_c(ptr%c, s1*s2*s3*s4*s5*s6*8_8) + call c_f_pointer(ptr%c, ptr%f, (/ s1, s2, s3, s4, s5, s6 /)) + end subroutine + + ! gpu_deallocate ! -------------- @@ -494,19 +580,38 @@ end module subroutine gpu_ddot(handle, n, dx, incx, dy, incy, res) use gpu type(gpu_blas), intent(in) :: handle - integer*8 :: n, incx, incy - double precision, target, intent(in) :: dx(*), dy(*) - double precision, intent(out) :: res - call gpu_ddot_c(handle%c, n, c_loc(dx), incx, c_loc(dy), incy, res) + integer*4 :: n, incx, incy + type(gpu_double1), intent(in) :: dx, dy + double precision, intent(out) :: res + call gpu_ddot_c(handle%c, int(n,c_int64_t), dx%c, int(incx,c_int64_t), dy%c, int(incy,c_int64_t), res) end subroutine -subroutine gpu_sdot(handle, n, dx, incx, dy, incy, res) +subroutine gpu_ddot_f(handle, n, dx, incx, dy, incy, res) + use gpu + type(gpu_blas), intent(in) :: handle + integer*4 :: n, incx, incy + double precision, target :: dx(*), dy(*) + double precision, intent(out) :: res + call gpu_ddot_c(handle%c, int(n,c_int64_t), c_loc(dx), int(incx,c_int64_t), c_loc(dy), int(incy,c_int64_t), res) +end subroutine + + +subroutine gpu_ddot_64(handle, n, dx, incx, dy, incy, res) use gpu type(gpu_blas), intent(in) :: handle integer*8 :: n, incx, incy - real, target, intent(in) :: dx(*), dy(*) - real, intent(out) :: res - call gpu_sdot_c(handle%c, n, c_loc(dx), incx, c_loc(dy), incy, res) + type(gpu_double1), intent(in) :: dx, dy + double precision, intent(out) :: res + call gpu_ddot_c(handle%c, n, dx%c, incx, dy%c, incy, res) +end subroutine + +subroutine gpu_ddot_f_64(handle, n, dx, incx, dy, incy, res) + use gpu + type(gpu_blas), intent(in) :: handle + integer*8 :: n, incx, incy + double precision, target :: dx(*), dy(*) + double precision, intent(out) :: res + call gpu_ddot_c(handle%c, n, c_loc(dx), incx, c_loc(dy), incy, res) end subroutine @@ -518,22 +623,103 @@ subroutine gpu_dgeam(handle, transa, transb, m, n, alpha, a, lda, beta, & use gpu type(gpu_blas), intent(in) :: handle character, intent(in) :: transa, transb - integer*8, intent(in) :: m, n, lda, ldb, ldc + integer*4, intent(in) :: m, n, lda, ldb, ldc double precision, intent(in) :: alpha, beta - double precision, target :: a(lda,*), b(ldb,*), c(ldc,*) - call gpu_dgeam_c(handle%c, transa, transb, m, n, alpha, c_loc(a), lda, beta, & - c_loc(b), ldb, c_loc(c), ldc) + type(gpu_double2) :: a, b, c + call gpu_dgeam_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), alpha, a%c, int(lda,c_int64_t), beta, & + b%c, int(ldb,c_int64_t), c%c, int(ldc,c_int64_t)) end subroutine -subroutine gpu_sgeam(handle, transa, transb, m, n, alpha, a, lda, beta, & + +subroutine gpu_dgeam_f(handle, transa, transb, m, n, alpha, a, lda, beta, & b, ldb, c, ldc) - use gpu + use gpu + type(gpu_blas), intent(in) :: handle + character, intent(in) :: transa, transb + integer*4, intent(in) :: m, n, lda, ldb, ldc + double precision, intent(in) :: alpha, beta + double precision, target :: a(*), b(*), c(*) + call gpu_dgeam_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), alpha, c_loc(a), int(lda,c_int64_t), beta, & + c_loc(b), int(ldb,c_int64_t), c_loc(c), int(ldc,c_int64_t)) +end subroutine + + +subroutine gpu_dgeam_64(handle, transa, transb, m, n, alpha, a, lda, beta, & + b, ldb, c, ldc) + use gpu type(gpu_blas), intent(in) :: handle character, intent(in) :: transa, transb integer*8, intent(in) :: m, n, lda, ldb, ldc - real, intent(in) :: alpha, beta - real, target :: a(lda,*), b(ldb,*), c(ldc,*) - call gpu_sgeam_c(handle%c, transa, transb, m, n, alpha, c_loc(a), lda, beta, & - c_loc(b), ldb, c_loc(c), ldc) + double precision, intent(in) :: alpha, beta + type(gpu_double2) :: a, b, c + call gpu_dgeam_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), alpha, a%c, int(lda,c_int64_t), beta, & + b%c, int(ldb,c_int64_t), c%c, int(ldc,c_int64_t)) +end subroutine + + +subroutine gpu_dgeam_f_64(handle, transa, transb, m, n, alpha, a, lda, beta, & + b, ldb, c, ldc) + use gpu + type(gpu_blas), intent(in) :: handle + character, intent(in) :: transa, transb + integer*8, intent(in) :: m, n, lda, ldb, ldc + double precision, intent(in) :: alpha, beta + double precision, target :: a(*), b(*), c(*) + call gpu_dgeam_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), alpha, c_loc(a), int(lda,c_int64_t), beta, & + c_loc(b), int(ldb,c_int64_t), c_loc(c), int(ldc,c_int64_t)) +end subroutine + + +! gemm +! ---- + +subroutine gpu_dgemm(handle, transa, transb, m, n, k, alpha, a, lda, & + b, ldb, beta, c, ldc) + use gpu + type(gpu_blas), intent(in) :: handle + character, intent(in) :: transa, transb + integer*4, intent(in) :: m, n, k, lda, ldb, ldc + double precision, intent(in) :: alpha, beta + type(gpu_double2) :: a, b, c + call gpu_dgemm_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), int(k,c_int64_t), & + alpha, a%c, int(lda,c_int64_t), & + b%c, int(ldb,c_int64_t), beta, c%c, int(ldc,c_int64_t)) +end subroutine + +subroutine gpu_dgemm_64(handle, transa, transb, m, n, k, alpha, a, lda, & + b, ldb, beta, c, ldc) + use gpu + type(gpu_blas), intent(in) :: handle + character, intent(in) :: transa, transb + integer*8, intent(in) :: m, n, k, lda, ldb, ldc + double precision, intent(in) :: alpha, beta + type(gpu_double2) :: a, b, c + call gpu_dgemm_c(handle%c, transa, transb, m, n, k, & + alpha, a%c, lda, b%c, ldb, beta, c%c, ldc) +end subroutine + +subroutine gpu_dgemm_f(handle, transa, transb, m, n, k, alpha, a, lda, & + b, ldb, beta, c, ldc) + use gpu + type(gpu_blas), intent(in) :: handle + character, intent(in) :: transa, transb + integer*4, intent(in) :: m, n, k, lda, ldb, ldc + double precision, intent(in) :: alpha, beta + double precision, target :: a(*), b(*), c(*) + call gpu_dgemm_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), int(k,c_int64_t), & + alpha, c_loc(a), int(lda,c_int64_t), & + c_loc(b), int(ldb,c_int64_t), beta, c_loc(c), int(ldc,c_int64_t)) +end subroutine + +subroutine gpu_dgemm_f_64(handle, transa, transb, m, n, k, alpha, a, lda, & + b, ldb, beta, c, ldc) + use gpu + type(gpu_blas), intent(in) :: handle + character, intent(in) :: transa, transb + integer*8, intent(in) :: m, n, k, lda, ldb, ldc + double precision, intent(in) :: alpha, beta + double precision, target :: a(*), b(*), c(*) + call gpu_dgemm_c(handle%c, transa, transb, m, n, k, & + alpha, c_loc(a), lda, c_loc(b), ldb, beta, c_loc(c), ldc) end subroutine From d3c1994c64ed9ae9914ce605a6b7c364ac518d9b Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 1 Jul 2024 18:04:48 +0200 Subject: [PATCH 106/159] H_vv --- plugins/local/gpu_nvidia/gpu.c | 16 +-- plugins/local/gpu_x86/gpu.c | 6 +- src/ccsd/ccsd_space_orb_sub.irp.f | 7 +- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 146 ++++++++++++++++--------- src/gpu/gpu.irp.f | 8 ++ 5 files changed, 114 insertions(+), 69 deletions(-) diff --git a/plugins/local/gpu_nvidia/gpu.c b/plugins/local/gpu_nvidia/gpu.c index 189de64c..39a82984 100644 --- a/plugins/local/gpu_nvidia/gpu.c +++ b/plugins/local/gpu_nvidia/gpu.c @@ -11,10 +11,6 @@ /* Generic functions */ -bool no_gpu() { - return false; -} - int gpu_ndevices() { int ngpus; cudaGetDeviceCount(&ngpus); @@ -35,13 +31,13 @@ void gpu_allocate(void** ptr, const int64_t size) { free = INT64_MAX; } - /* Use managed memory if it does not fit on the GPU */ - if (size < free && size < total/2) { + rc = cudaMallocManaged(ptr, size, cudaMemAttachGlobal); +// /* Use managed memory if it does not fit on the GPU */ +// if (size < free && size < total/2) { // rc= cudaMalloc(ptr, size); - rc = cudaMallocManaged(ptr, size, cudaMemAttachGlobal); - } else { - rc = cudaMallocManaged(ptr, size, cudaMemAttachGlobal); - } +// } else { +// rc = cudaMallocManaged(ptr, size, cudaMemAttachGlobal); +// } assert (rc == cudaSuccess); } diff --git a/plugins/local/gpu_x86/gpu.c b/plugins/local/gpu_x86/gpu.c index 53267a7c..dab23a25 100644 --- a/plugins/local/gpu_x86/gpu.c +++ b/plugins/local/gpu_x86/gpu.c @@ -5,14 +5,10 @@ #include #include -bool no_gpu() { - return true; -} - /* Generic functions */ int gpu_ndevices() { - return 1; + return 0; } void gpu_set_device(int32_t i) { diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 5ee7366e..0b3636ac 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -183,7 +183,8 @@ subroutine run_ccsd_space_orb if (do_mo_cholesky) then call compute_H_oo_chol(nO,nV,tau_x,d_cc_space_f_oo, & d_cc_space_v_ov_chol,d_cc_space_v_vo_chol,H_oo) - call compute_H_vv_chol(nO,nV,tau_x,H_vv) + call compute_H_vv_chol(nO,nV,tau_x,d_cc_space_f_vv, & + d_cc_space_v_ov_chol,H_vv) call compute_H_vo_chol(nO,nV,t1%f,H_vo%f) call compute_r1_space_chol(nO,nV,t1%f,t2%f,tau%f,H_oo%F,H_vv%F,H_vo%F,r1%f,max_r1) @@ -403,7 +404,7 @@ subroutine update_tau_space(nO,nV,h_t1,t1,t2,tau) type(gpu_stream) :: stream(nV) - !$OMP PARALLEL if (no_gpu()) & + !$OMP PARALLEL if (gpu_num == 0) & !$OMP SHARED(nO,nV,tau,t2,t1,h_t1,stream,blas_handle) & !$OMP PRIVATE(i,j,a,b) & !$OMP DEFAULT(NONE) @@ -466,7 +467,7 @@ subroutine update_tau_x_space(nO,nV,tau,tau_x) call gpu_stream_create(stream(a)) enddo - !$OMP PARALLEL if (no_gpu()) & + !$OMP PARALLEL if (gpu_num == 0) & !$OMP SHARED(nO,nV,tau,tau_x,stream,blas_handle) & !$OMP PRIVATE(i,j,a,b) & !$OMP DEFAULT(NONE) diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index 288724f3..458016fb 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -344,48 +344,47 @@ subroutine compute_H_oo_chol(nO,nV,tau_x,d_cc_space_f_oo, & ! 1.d0, H_oo%f(1,1), nO) ! - type(gpu_stream) :: stream(nV) + type(gpu_blas) :: blas - do b=1,nV - call gpu_stream_create(stream(b)) - enddo - !$OMP PARALLEL if (no_gpu()) & + !$OMP PARALLEL & !$OMP DEFAULT(SHARED) & - !$OMP PRIVATE(u,b,tmp_vov,tmp_ovv) + !$OMP PRIVATE(blas,u,b,tmp_vov,tmp_ovv) + + !$OMP SINGLE + !$OMP TASK + call gpu_copy(d_cc_space_f_oo, H_oo) + !$OMP END TASK + !$OMP END SINGLE - call gpu_allocate(tmp_vov, nV, nO, nV) call gpu_allocate(tmp_ovv, nO, nV, nV) + call gpu_allocate(tmp_vov, nV, nO, nV) + + call gpu_blas_create(blas) !$OMP DO do u=1,nO - call gpu_dgeam_f(blas_handle, 'N', 'N', 1, nO*nV*nV, 1.d0, & + call gpu_dgeam_f(blas, 'N', 'N', 1, nO*nV*nV, 1.d0, & tau_x%f(u,1,1,1), nO, 0.d0, tau_x%f, nO, tmp_ovv%f, 1) do b=1,nV - call gpu_set_stream(blas_handle,stream(b)) - call gpu_dgeam_f(blas_handle, 'T', 'T', nV, nO, 1.d0, & + call gpu_dgeam_f(blas, 'T', 'T', nV, nO, 1.d0, & tmp_ovv%f(1,1,b), nO, 0.d0, & tmp_ovv%f(1,1,b), nO, tmp_vov%f(1,1,b), nV) enddo - call gpu_dgemm_f(blas_handle, 'N','T',cholesky_mo_num,nV,nO*nV,1.d0, & + call gpu_dgemm_f(blas, 'N','T',cholesky_mo_num,nV,nO*nV,1.d0, & d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_vov%f, nV, & 0.d0, tau_kau%f(1,1,u), cholesky_mo_num) - call gpu_synchronize() enddo !$OMP END DO + call gpu_blas_destroy(blas) + call gpu_deallocate(tmp_vov) call gpu_deallocate(tmp_ovv) + + !$OMP TASKWAIT !$OMP END PARALLEL - do b=1,nV - call gpu_stream_destroy(stream(b)) - enddo - - call gpu_set_stream(blas_handle,gpu_default_stream) - - call gpu_copy(d_cc_space_f_oo, H_oo) - call gpu_dgemm(blas_handle, 'T', 'N', nO, nO, cholesky_mo_num*nV, 1.d0, & tau_kau, cholesky_mo_num*nV, d_cc_space_v_vo_chol, cholesky_mo_num*nV, & 1.d0, H_oo, nO) @@ -395,52 +394,97 @@ end ! H_vv -subroutine compute_H_vv_chol(nO,nV,tau_x,H_vv) +subroutine compute_H_vv_chol(nO,nV,tau_x,d_cc_space_f_vv, & + d_cc_space_v_ov_chol,H_vv) use gpu implicit none - integer, intent(in) :: nO,nV + integer, intent(in) :: nO,nV + type(gpu_double2), intent(in) :: d_cc_space_f_vv + type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol type(gpu_double4), intent(in) :: tau_x type(gpu_double2), intent(out) :: H_vv integer :: a,b,i,j,u,k, beta - double precision, allocatable :: tau_kia(:,:,:), tmp_oov(:,:,:) + type(gpu_double3) :: tau_kia, tmp_oov - allocate(tau_kia(cholesky_mo_num,nO,nV)) - !$omp parallel & - !$omp default(shared) & - !$omp private(i,beta,j,k,a,b,tmp_oov) - allocate(tmp_oov(nO,nO,nV) ) - !$omp do + call gpu_allocate(tau_kia, cholesky_mo_num, nO, nV) + +! !$omp parallel & +! !$omp default(shared) & +! !$omp private(i,beta,j,k,a,b,tmp_oov) +! allocate(tmp_oov(nO,nO,nV) ) +! !$omp do +! do a = 1, nV +! do b=1,nV +! do j=1,nO +! do i=1,nO +! tmp_oov(i,j,b) = tau_x%f(i,j,a,b) +! enddo +! enddo +! enddo +! call dgemm('N','T',cholesky_mo_num,nO,nO*nV,1.d0, & +! d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_oov, nO, & +! 0.d0, tau_kia(1,1,a), cholesky_mo_num) +! enddo +! !$omp end do nowait +! deallocate(tmp_oov) + +! !$omp do +! do beta = 1, nV +! do a = 1, nV +! H_vv%f(a,beta) = cc_space_f_vv(a,beta) +! enddo +! enddo +! !$omp end do nowait +! !$omp barrier +! !$omp end parallel +! call dgemm('T', 'N', nV, nV, cholesky_mo_num*nO, -1.d0, & +! tau_kia, cholesky_mo_num*nO, d_cc_space_v_ov_chol%f, cholesky_mo_num*nO, & +! 1.d0, H_vv%f, nV) + + type(gpu_blas) :: blas + + + PROVIDE gpu_num + !$OMP PARALLEL & + !$OMP DEFAULT(SHARED) & + !$OMP PRIVATE(a,b,tmp_oov,blas) + + !$OMP SINGLE + !$OMP TASK + call gpu_copy(d_cc_space_f_vv, H_vv) + !$OMP END TASK + !$OMP END SINGLE + + call gpu_blas_create(blas) + call gpu_allocate(tmp_oov, nO, nO, nV) + + !$OMP DO do a = 1, nV do b=1,nV - do j=1,nO - do i=1,nO - tmp_oov(i,j,b) = tau_x%f(i,j,a,b) - enddo - enddo + call gpu_dgeam_f(blas, 'N', 'N', nO, nO, 1.d0, & + tau_x%f(1,1,a,b), nO, 0.d0, & + tau_x%f(1,1,a,b), nO, tmp_oov%f(1,1,b), nO) enddo - call dgemm('N','T',cholesky_mo_num,nO,nO*nV,1.d0, & - cc_space_v_ov_chol, cholesky_mo_num, tmp_oov, nO, & - 0.d0, tau_kia(1,1,a), cholesky_mo_num) + call gpu_dgemm_f(blas, 'N','T',cholesky_mo_num,nO,nO*nV,1.d0, & + d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_oov%f, nO, & + 0.d0, tau_kia%f(1,1,a), cholesky_mo_num) enddo - !$omp end do nowait - deallocate(tmp_oov) + !$OMP END DO - !$omp do - do beta = 1, nV - do a = 1, nV - H_vv%f(a,beta) = cc_space_f_vv(a,beta) - enddo - enddo - !$omp end do nowait - !$omp barrier - !$omp end parallel - call dgemm('T', 'N', nV, nV, cholesky_mo_num*nO, -1.d0, & - tau_kia, cholesky_mo_num*nO, cc_space_v_ov_chol, cholesky_mo_num*nO, & - 1.d0, H_vv%f, nV) + call gpu_blas_destroy(blas) + call gpu_deallocate(tmp_oov) + !$OMP TASKWAIT + !$OMP END PARALLEL + + call gpu_dgemm(blas_handle,'T', 'N', nV, nV, cholesky_mo_num*nO, -1.d0, & + tau_kia, cholesky_mo_num*nO, d_cc_space_v_ov_chol, cholesky_mo_num*nO, & + 1.d0, H_vv, nV) + + call gpu_deallocate(tau_kia) end ! H_vo diff --git a/src/gpu/gpu.irp.f b/src/gpu/gpu.irp.f index 6ad0a075..3b2feeb6 100644 --- a/src/gpu/gpu.irp.f +++ b/src/gpu/gpu.irp.f @@ -16,3 +16,11 @@ BEGIN_PROVIDER [ type(gpu_stream), gpu_default_stream ] gpu_default_stream%c = C_NULL_PTR END_PROVIDER +BEGIN_PROVIDER [ integer, gpu_num ] + implicit none + BEGIN_DOC + ! Number of usable GPUs + END_DOC + gpu_num = gpu_ndevices() +END_PROVIDER + From 44a7729f65a37cc3a7c35ae55f462bb1d61e411b Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 1 Jul 2024 19:00:27 +0200 Subject: [PATCH 107/159] H_ finished in CCSD --- src/ccsd/ccsd_space_orb_sub.irp.f | 108 ++---- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 482 +++++++++---------------- 2 files changed, 200 insertions(+), 390 deletions(-) diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 0b3636ac..13b974be 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -181,11 +181,9 @@ subroutine run_ccsd_space_orb ! Residue if (do_mo_cholesky) then - call compute_H_oo_chol(nO,nV,tau_x,d_cc_space_f_oo, & - d_cc_space_v_ov_chol,d_cc_space_v_vo_chol,H_oo) - call compute_H_vv_chol(nO,nV,tau_x,d_cc_space_f_vv, & - d_cc_space_v_ov_chol,H_vv) - call compute_H_vo_chol(nO,nV,t1%f,H_vo%f) + call compute_H_oo_chol(nO,nV,tau_x,d_cc_space_f_oo, d_cc_space_v_ov_chol,d_cc_space_v_vo_chol,H_oo) + call compute_H_vv_chol(nO,nV,tau_x,d_cc_space_f_vv, d_cc_space_v_ov_chol,H_vv) + call compute_H_vo_chol(nO,nV,t1,d_cc_space_f_vo, d_cc_space_v_ov_chol,d_cc_space_v_vo_chol, H_vo) call compute_r1_space_chol(nO,nV,t1%f,t2%f,tau%f,H_oo%F,H_vv%F,H_vo%F,r1%f,max_r1) call compute_r2_space_chol(nO,nV,t1%f,t2%f,tau%f,H_oo%F,H_vv%F,H_vo%F,r2%f,max_r2) @@ -316,51 +314,20 @@ subroutine ccsd_energy_space_x(nO,nV,d_cc_space_v_oovv,d_cc_space_f_vo,tau_x,t1, integer :: i,j,a,b double precision :: e -! energy = 0d0 -! !$omp parallel & -! !$omp shared(nO,nV,energy,tau_x,t1,& -! !$omp d_cc_space_f_vo,d_cc_space_v_oovv) & -! !$omp private(i,j,a,b,e) & -! !$omp default(none) -! e = 0d0 -! !$omp do -! do a = 1, nV -! do i = 1, nO -! e = e + 2d0 * d_cc_space_f_vo%f(a,i) * t1%f(i,a) -! enddo -! enddo -! !$omp end do nowait -! !$omp do -! do b = 1, nV -! do a = 1, nV -! do j = 1, nO -! do i = 1, nO -! e = e + tau_x%f(i,j,a,b) * d_cc_space_v_oovv%f(i,j,a,b) -! enddo -! enddo -! enddo -! enddo -! !$omp end do nowait -! !$omp critical -! energy = energy + e -! !$omp end critical -! !$omp end parallel + type(gpu_stream) :: s1, s2 + call gpu_stream_create(s1) + call gpu_stream_create(s2) + call gpu_set_stream(blas_handle,s1) + call gpu_ddot(blas_handle, nO*nV, d_cc_space_f_vo, 1, t1, 1, e) - type(gpu_stream) :: s1, s2 - call gpu_stream_create(s1) - call gpu_stream_create(s2) + call gpu_set_stream(blas_handle,s2) + call gpu_ddot_64(blas_handle, nO*nO*nV*nV*1_8, tau_x, 1_8, d_cc_space_v_oovv, 1_8, energy) + call gpu_set_stream(blas_handle,gpu_default_stream) - call gpu_set_stream(blas_handle,s1) - call gpu_ddot(blas_handle, nO*nV, d_cc_space_f_vo, 1, t1, 1, e) - - call gpu_set_stream(blas_handle,s2) - call gpu_ddot_64(blas_handle, nO*nO*nV*nV*1_8, tau_x, 1_8, d_cc_space_v_oovv, 1_8, energy) - call gpu_synchronize() - call gpu_set_stream(blas_handle,gpu_default_stream) - - call gpu_stream_destroy(s1) - call gpu_stream_destroy(s2) + call gpu_synchronize() + call gpu_stream_destroy(s1) + call gpu_stream_destroy(s2) energy = energy + 2.d0*e @@ -384,27 +351,9 @@ subroutine update_tau_space(nO,nV,h_t1,t1,t2,tau) ! internal integer :: i,j,a,b -! !$OMP PARALLEL & -! !$OMP SHARED(nO,nV,tau,t2,t1,h_t1) & -! !$OMP PRIVATE(i,j,a,b) & -! !$OMP DEFAULT(NONE) -! !$OMP DO -! do b = 1, nV -! do a = 1, nV -! do j = 1, nO -! do i = 1, nO -! tau%f(i,j,a,b) = t2%f(i,j,a,b) + t1%f(i,a) * h_t1(j,b) -! enddo -! enddo -! enddo -! enddo -! !$OMP END DO -! !$OMP END PARALLEL - - type(gpu_stream) :: stream(nV) - !$OMP PARALLEL if (gpu_num == 0) & + !$OMP PARALLEL & !$OMP SHARED(nO,nV,tau,t2,t1,h_t1,stream,blas_handle) & !$OMP PRIVATE(i,j,a,b) & !$OMP DEFAULT(NONE) @@ -422,6 +371,8 @@ subroutine update_tau_space(nO,nV,h_t1,t1,t2,tau) !$OMP END DO !$OMP END PARALLEL + call gpu_synchronize() + do b=1,nV call gpu_stream_destroy(stream(b)) enddo @@ -444,32 +395,15 @@ subroutine update_tau_x_space(nO,nV,tau,tau_x) ! internal integer :: i,j,a,b -! !$OMP PARALLEL & -! !$OMP SHARED(nO,nV,tau,tau_x) & -! !$OMP PRIVATE(i,j,a,b) & -! !$OMP DEFAULT(NONE) -! !$OMP DO -! do b = 1, nV -! do a = 1, nV -! do j = 1, nO -! do i = 1, nO -! tau_x%f(i,j,a,b) = 2.d0*tau%f(i,j,a,b) - tau%f(i,j,b,a) -! enddo -! enddo -! enddo -! enddo -! !$OMP END DO -! !$OMP END PARALLEL - type(gpu_stream) :: stream(nV) do a=1,nV call gpu_stream_create(stream(a)) enddo - !$OMP PARALLEL if (gpu_num == 0) & + !$OMP PARALLEL & !$OMP SHARED(nO,nV,tau,tau_x,stream,blas_handle) & - !$OMP PRIVATE(i,j,a,b) & + !$OMP PRIVATE(a,b) & !$OMP DEFAULT(NONE) !$OMP DO do b=1,nV @@ -484,10 +418,12 @@ subroutine update_tau_x_space(nO,nV,tau,tau_x) !$OMP END DO !$OMP END PARALLEL + call gpu_set_stream(blas_handle,gpu_default_stream) + call gpu_synchronize() + do b=1,nV call gpu_stream_destroy(stream(b)) enddo - call gpu_set_stream(blas_handle,gpu_default_stream) end diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index 458016fb..5eb95a06 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -1,81 +1,200 @@ -subroutine ccsd_energy_space_chol(nO,nV,tau,t1,energy) +! H_oo +subroutine compute_H_oo_chol(nO,nV,tau_x,d_cc_space_f_oo, & + d_cc_space_v_ov_chol,d_cc_space_v_vo_chol,H_oo) + use gpu implicit none - integer, intent(in) :: nO, nV - double precision, intent(in) :: tau(nO,nO,nV,nV) - double precision, intent(in) :: t1(nO,nV) - double precision, intent(out) :: energy + integer, intent(in) :: nO,nV + type(gpu_double2), intent(in) :: d_cc_space_f_oo + type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol, d_cc_space_v_vo_chol + type(gpu_double4), intent(in) :: tau_x + type(gpu_double2), intent(out) :: H_oo - ! internal - integer :: i,j,a,b - double precision :: e + integer :: a,b,i,j,u,k - energy = 0d0 - !$omp parallel & - !$omp shared(nO,nV,energy,tau,t1,& - !$omp cc_space_f_vo,cc_space_w_oovv) & - !$omp private(i,j,a,b,e) & - !$omp default(none) - e = 0d0 - !$omp do - do a = 1, nV - do i = 1, nO - e = e + 2d0 * cc_space_f_vo(a,i) * t1(i,a) - enddo - enddo - !$omp end do nowait - !$omp do - do b = 1, nV - do a = 1, nV - do j = 1, nO - do i = 1, nO - e = e + tau(i,j,a,b) * cc_space_w_oovv(i,j,a,b) - enddo - enddo - enddo - enddo - !$omp end do nowait - !$omp critical - energy = energy + e - !$omp end critical - !$omp end parallel + type(gpu_double3) :: tau_kau, tmp_vov, tmp_ovv -end + call gpu_allocate(tau_kau, cholesky_mo_num, nV, nO) -! Tau + type(gpu_blas) :: blas -subroutine update_tau_space_chol(nO,nV,t1,t2,tau) - implicit none + !$OMP PARALLEL & + !$OMP DEFAULT(SHARED) & + !$OMP PRIVATE(blas,u,b,tmp_vov,tmp_ovv) - ! in - integer, intent(in) :: nO, nV - double precision, intent(in) :: t1(nO,nV), t2(nO,nO,nV,nV) + !$OMP SINGLE + !$OMP TASK + call gpu_copy(d_cc_space_f_oo, H_oo) + !$OMP END TASK + !$OMP END SINGLE - ! out - double precision, intent(out) :: tau(nO,nO,nV,nV) + call gpu_allocate(tmp_ovv, nO, nV, nV) + call gpu_allocate(tmp_vov, nV, nO, nV) - ! internal - integer :: i,j,a,b + call gpu_blas_create(blas) - !$OMP PARALLEL & - !$OMP SHARED(nO,nV,tau,t2,t1) & - !$OMP PRIVATE(i,j,a,b) & - !$OMP DEFAULT(NONE) !$OMP DO - do b = 1, nV - do a = 1, nV - do j = 1, nO - do i = 1, nO - tau(i,j,a,b) = t2(i,j,a,b) + t1(i,a) * t1(j,b) - enddo - enddo + do u=1,nO + call gpu_dgeam_f(blas, 'N', 'N', 1, nO*nV*nV, 1.d0, & + tau_x%f(u,1,1,1), nO, 0.d0, tau_x%f, nO, tmp_ovv%f, 1) + do b=1,nV + call gpu_dgeam_f(blas, 'T', 'T', nV, nO, 1.d0, & + tmp_ovv%f(1,1,b), nO, 0.d0, & + tmp_ovv%f(1,1,b), nO, tmp_vov%f(1,1,b), nV) enddo + call gpu_dgemm_f(blas, 'N','T',cholesky_mo_num,nV,nO*nV,1.d0, & + d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_vov%f, nV, & + 0.d0, tau_kau%f(1,1,u), cholesky_mo_num) enddo !$OMP END DO + + call gpu_blas_destroy(blas) + + call gpu_deallocate(tmp_vov) + call gpu_deallocate(tmp_ovv) + + !$OMP TASKWAIT !$OMP END PARALLEL + call gpu_dgemm(blas_handle, 'T', 'N', nO, nO, cholesky_mo_num*nV, 1.d0, & + tau_kau, cholesky_mo_num*nV, d_cc_space_v_vo_chol, cholesky_mo_num*nV, & + 1.d0, H_oo, nO) + + call gpu_synchronize() + call gpu_deallocate(tau_kau) +end + +! H_vv + +subroutine compute_H_vv_chol(nO,nV,tau_x,d_cc_space_f_vv, & + d_cc_space_v_ov_chol,H_vv) + use gpu + implicit none + + integer, intent(in) :: nO,nV + type(gpu_double2), intent(in) :: d_cc_space_f_vv + type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol + type(gpu_double4), intent(in) :: tau_x + type(gpu_double2), intent(out) :: H_vv + + integer :: a,b,i,j,u,k, beta + + type(gpu_double3) :: tau_kia, tmp_oov + + call gpu_allocate(tau_kia, cholesky_mo_num, nO, nV) + + type(gpu_blas) :: blas + + !$OMP PARALLEL & + !$OMP DEFAULT(SHARED) & + !$OMP PRIVATE(a,b,tmp_oov,blas) + + !$OMP SINGLE + !$OMP TASK + call gpu_copy(d_cc_space_f_vv, H_vv) + !$OMP END TASK + !$OMP END SINGLE + + call gpu_blas_create(blas) + call gpu_allocate(tmp_oov, nO, nO, nV) + + !$OMP DO + do a = 1, nV + do b=1,nV + call gpu_dgeam_f(blas, 'N', 'N', nO, nO, 1.d0, & + tau_x%f(1,1,a,b), nO, 0.d0, & + tau_x%f(1,1,a,b), nO, tmp_oov%f(1,1,b), nO) + enddo + call gpu_dgemm_f(blas, 'N','T',cholesky_mo_num,nO,nO*nV,1.d0, & + d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_oov%f, nO, & + 0.d0, tau_kia%f(1,1,a), cholesky_mo_num) + enddo + !$OMP END DO + + call gpu_blas_destroy(blas) + + call gpu_deallocate(tmp_oov) + !$OMP TASKWAIT + !$OMP END PARALLEL + + call gpu_dgemm(blas_handle,'T', 'N', nV, nV, cholesky_mo_num*nO, -1.d0, & + tau_kia, cholesky_mo_num*nO, d_cc_space_v_ov_chol, cholesky_mo_num*nO, & + 1.d0, H_vv, nV) + + call gpu_synchronize() + call gpu_deallocate(tau_kia) +end + +! H_vo +subroutine compute_H_vo_chol(nO,nV,t1,d_cc_space_f_vo, & + d_cc_space_v_ov_chol,d_cc_space_v_vo_chol, H_vo) + use gpu + implicit none + + integer, intent(in) :: nO,nV + type(gpu_double2), intent(in) :: t1, d_cc_space_f_vo + type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol, d_cc_space_v_vo_chol + type(gpu_double2), intent(out) :: H_vo + + integer :: a,b,i,j,u,k + + type(gpu_double1) :: tmp_k + type(gpu_double3) :: tmp, tmp2 + + call gpu_copy(d_cc_space_f_vo, H_vo) + + call gpu_allocate(tmp_k, cholesky_mo_num) + + call gpu_dgemm(blas_handle, 'N', 'N', cholesky_mo_num, 1, nO*nV, 2.d0, & + d_cc_space_v_ov_chol, cholesky_mo_num, & + t1, nO*nV, 0.d0, tmp_k, cholesky_mo_num) + + call gpu_dgemm(blas_handle, 'T','N',nV*nO,1,cholesky_mo_num,1.d0, & + d_cc_space_v_vo_chol, cholesky_mo_num, tmp_k, cholesky_mo_num, 1.d0, & + H_vo, nV*nO) + + call gpu_deallocate(tmp_k) + + + call gpu_allocate(tmp, cholesky_mo_num, nO, nO) + + call gpu_dgemm(blas_handle, 'N','T', cholesky_mo_num*nO, nO, nV, 1.d0, & + d_cc_space_v_ov_chol, cholesky_mo_num*nO, t1, nO, 0.d0, tmp, cholesky_mo_num*nO) + + call gpu_allocate(tmp2, cholesky_mo_num, nO, nO) + + type(gpu_stream) :: stream(nO) + do i=1,nO + call gpu_stream_create(stream(i)) + enddo + + !$OMP PARALLEL DO COLLAPSE(2) PRIVATE(i,j) + do i=1,nO + do j=1,nO + call gpu_set_stream(blas_handle,stream(j)) + call gpu_dgeam_f(blas_handle, 'N', 'N', cholesky_mo_num, 1, 1.d0, & + tmp%f(1,i,j), cholesky_mo_num, 0.d0, & + tmp%f(1,i,j), cholesky_mo_num, tmp2%f(1,j,i), cholesky_mo_num) + enddo + enddo + !$OMP END PARALLEL DO + + call gpu_set_stream(blas_handle,gpu_default_stream) + call gpu_synchronize() + + do i=1,nO + call gpu_stream_destroy(stream(i)) + enddo + call gpu_deallocate(tmp) + + call gpu_dgemm(blas_handle, 'T','N', nV, nO, cholesky_mo_num*nO, -1.d0, & + d_cc_space_v_ov_chol, cholesky_mo_num*nO, tmp2, cholesky_mo_num*nO, & + 1.d0, H_vo, nV) + + call gpu_synchronize() + call gpu_deallocate(tmp2) end ! R1 @@ -291,251 +410,6 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) end -! H_oo - -subroutine compute_H_oo_chol(nO,nV,tau_x,d_cc_space_f_oo, & - d_cc_space_v_ov_chol,d_cc_space_v_vo_chol,H_oo) - use gpu - implicit none - - integer, intent(in) :: nO,nV - type(gpu_double2), intent(in) :: d_cc_space_f_oo - type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol, d_cc_space_v_vo_chol - type(gpu_double4), intent(in) :: tau_x - type(gpu_double2), intent(out) :: H_oo - - integer :: a,b,i,j,u,k - - type(gpu_double3) :: tau_kau, tmp_vov, tmp_ovv - - call gpu_allocate(tau_kau, cholesky_mo_num, nV, nO) - -! !$omp parallel & -! !$omp default(shared) & -! !$omp private(i,u,j,k,a,b,tmp_vov) -! call gpu_allocate(tmp_vov, nV, nO, nV) -! !$omp do -! do u = 1, nO -! do b=1,nV -! do j=1,nO -! do a=1,nV -! tmp_vov%f(a,j,b) = tau_x%f(u,j,a,b) -! enddo -! enddo -! enddo -! call dgemm('N','T',cholesky_mo_num,nV,nO*nV,1.d0, & -! d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num, tmp_vov%f, nV, & -! 0.d0, tau_kau%f(1,1,u), cholesky_mo_num) -! enddo -! !$omp end do nowait -! call gpu_deallocate(tmp_vov) -! !$omp do -! do i = 1, nO -! do u = 1, nO -! H_oo%f(u,i) = d_cc_space_f_oo%f(u,i) -! enddo -! enddo -! !$omp end do nowait -! -! !$omp barrier -! !$omp end parallel -! call dgemm('T', 'N', nO, nO, cholesky_mo_num*nV, 1.d0, & -! tau_kau%f(1,1,1), cholesky_mo_num*nV, d_cc_space_v_vo_chol%f(1,1,1), cholesky_mo_num*nV, & -! 1.d0, H_oo%f(1,1), nO) -! - - type(gpu_blas) :: blas - - - !$OMP PARALLEL & - !$OMP DEFAULT(SHARED) & - !$OMP PRIVATE(blas,u,b,tmp_vov,tmp_ovv) - - !$OMP SINGLE - !$OMP TASK - call gpu_copy(d_cc_space_f_oo, H_oo) - !$OMP END TASK - !$OMP END SINGLE - - call gpu_allocate(tmp_ovv, nO, nV, nV) - call gpu_allocate(tmp_vov, nV, nO, nV) - - call gpu_blas_create(blas) - - !$OMP DO - do u=1,nO - call gpu_dgeam_f(blas, 'N', 'N', 1, nO*nV*nV, 1.d0, & - tau_x%f(u,1,1,1), nO, 0.d0, tau_x%f, nO, tmp_ovv%f, 1) - do b=1,nV - call gpu_dgeam_f(blas, 'T', 'T', nV, nO, 1.d0, & - tmp_ovv%f(1,1,b), nO, 0.d0, & - tmp_ovv%f(1,1,b), nO, tmp_vov%f(1,1,b), nV) - enddo - call gpu_dgemm_f(blas, 'N','T',cholesky_mo_num,nV,nO*nV,1.d0, & - d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_vov%f, nV, & - 0.d0, tau_kau%f(1,1,u), cholesky_mo_num) - enddo - !$OMP END DO - - call gpu_blas_destroy(blas) - - call gpu_deallocate(tmp_vov) - call gpu_deallocate(tmp_ovv) - - !$OMP TASKWAIT - !$OMP END PARALLEL - - call gpu_dgemm(blas_handle, 'T', 'N', nO, nO, cholesky_mo_num*nV, 1.d0, & - tau_kau, cholesky_mo_num*nV, d_cc_space_v_vo_chol, cholesky_mo_num*nV, & - 1.d0, H_oo, nO) - - call gpu_deallocate(tau_kau) -end - -! H_vv - -subroutine compute_H_vv_chol(nO,nV,tau_x,d_cc_space_f_vv, & - d_cc_space_v_ov_chol,H_vv) - use gpu - implicit none - - integer, intent(in) :: nO,nV - type(gpu_double2), intent(in) :: d_cc_space_f_vv - type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol - type(gpu_double4), intent(in) :: tau_x - type(gpu_double2), intent(out) :: H_vv - - integer :: a,b,i,j,u,k, beta - - type(gpu_double3) :: tau_kia, tmp_oov - - call gpu_allocate(tau_kia, cholesky_mo_num, nO, nV) - -! !$omp parallel & -! !$omp default(shared) & -! !$omp private(i,beta,j,k,a,b,tmp_oov) -! allocate(tmp_oov(nO,nO,nV) ) -! !$omp do -! do a = 1, nV -! do b=1,nV -! do j=1,nO -! do i=1,nO -! tmp_oov(i,j,b) = tau_x%f(i,j,a,b) -! enddo -! enddo -! enddo -! call dgemm('N','T',cholesky_mo_num,nO,nO*nV,1.d0, & -! d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_oov, nO, & -! 0.d0, tau_kia(1,1,a), cholesky_mo_num) -! enddo -! !$omp end do nowait -! deallocate(tmp_oov) - -! !$omp do -! do beta = 1, nV -! do a = 1, nV -! H_vv%f(a,beta) = cc_space_f_vv(a,beta) -! enddo -! enddo -! !$omp end do nowait -! !$omp barrier -! !$omp end parallel -! call dgemm('T', 'N', nV, nV, cholesky_mo_num*nO, -1.d0, & -! tau_kia, cholesky_mo_num*nO, d_cc_space_v_ov_chol%f, cholesky_mo_num*nO, & -! 1.d0, H_vv%f, nV) - - type(gpu_blas) :: blas - - - PROVIDE gpu_num - !$OMP PARALLEL & - !$OMP DEFAULT(SHARED) & - !$OMP PRIVATE(a,b,tmp_oov,blas) - - !$OMP SINGLE - !$OMP TASK - call gpu_copy(d_cc_space_f_vv, H_vv) - !$OMP END TASK - !$OMP END SINGLE - - call gpu_blas_create(blas) - call gpu_allocate(tmp_oov, nO, nO, nV) - - !$OMP DO - do a = 1, nV - do b=1,nV - call gpu_dgeam_f(blas, 'N', 'N', nO, nO, 1.d0, & - tau_x%f(1,1,a,b), nO, 0.d0, & - tau_x%f(1,1,a,b), nO, tmp_oov%f(1,1,b), nO) - enddo - call gpu_dgemm_f(blas, 'N','T',cholesky_mo_num,nO,nO*nV,1.d0, & - d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_oov%f, nO, & - 0.d0, tau_kia%f(1,1,a), cholesky_mo_num) - enddo - !$OMP END DO - - call gpu_blas_destroy(blas) - - call gpu_deallocate(tmp_oov) - !$OMP TASKWAIT - !$OMP END PARALLEL - - call gpu_dgemm(blas_handle,'T', 'N', nV, nV, cholesky_mo_num*nO, -1.d0, & - tau_kia, cholesky_mo_num*nO, d_cc_space_v_ov_chol, cholesky_mo_num*nO, & - 1.d0, H_vv, nV) - - call gpu_deallocate(tau_kia) -end - -! H_vo -subroutine compute_H_vo_chol(nO,nV,t1,H_vo) - - implicit none - - integer, intent(in) :: nO,nV - double precision, intent(in) :: t1(nO, nV) - double precision, intent(out) :: H_vo(nV, nO) - - integer :: a,b,i,j,u,k - - double precision, allocatable :: tmp_k(:), tmp(:,:,:), tmp2(:,:,:) - do i=1,nO - do a=1,nV - H_vo(a,i) = cc_space_f_vo(a,i) - enddo - enddo - - allocate(tmp_k(cholesky_mo_num)) - call dgemm('N', 'N', cholesky_mo_num, 1, nO*nV, 2.d0, & - cc_space_v_ov_chol, cholesky_mo_num, & - t1, nO*nV, 0.d0, tmp_k, cholesky_mo_num) - - call dgemm('T','N',nV*nO,1,cholesky_mo_num,1.d0, & - cc_space_v_vo_chol, cholesky_mo_num, tmp_k, cholesky_mo_num, 1.d0, & - H_vo, nV*nO) - deallocate(tmp_k) - - allocate(tmp(cholesky_mo_num,nO,nO)) - allocate(tmp2(cholesky_mo_num,nO,nO)) - - call dgemm('N','T', cholesky_mo_num*nO, nO, nV, 1.d0, & - cc_space_v_ov_chol, cholesky_mo_num*nO, t1, nO, 0.d0, tmp, cholesky_mo_num*nO) - - do i=1,nO - do j=1,nO - do k=1,cholesky_mo_num - tmp2(k,j,i) = tmp(k,i,j) - enddo - enddo - enddo - deallocate(tmp) - - call dgemm('T','N', nV, nO, cholesky_mo_num*nO, -1.d0, & - cc_space_v_ov_chol, cholesky_mo_num*nO, tmp2, cholesky_mo_num*nO, & - 1.d0, H_vo, nV) - -end - ! R2 From 2bead959d0eee7790162df656e3781e4dcdedb7d Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 2 Jul 2024 13:58:19 +0200 Subject: [PATCH 108/159] Fxied GPU interface for gfortran --- plugins/local/gpu_x86/gpu.c | 90 ++++++++++---------- src/ccsd/ccsd_space_orb_sub.irp.f | 10 +-- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 46 +++++------ src/gpu/gpu_module.F90 | 109 +++++-------------------- 4 files changed, 94 insertions(+), 161 deletions(-) diff --git a/plugins/local/gpu_x86/gpu.c b/plugins/local/gpu_x86/gpu.c index dab23a25..fe3cadc5 100644 --- a/plugins/local/gpu_x86/gpu.c +++ b/plugins/local/gpu_x86/gpu.c @@ -49,10 +49,11 @@ void gpu_copy(const void* gpu_ptr_src, void* gpu_ptr_dest, const int64_t n) { /* Streams */ void gpu_stream_create(void** ptr) { - *ptr = (void*) 2; + *ptr = (void*) malloc(sizeof(char)); } void gpu_stream_destroy(void** ptr) { + free(*ptr); *ptr = NULL; } @@ -68,11 +69,12 @@ void gpu_synchronize() { /* BLAS functions */ void gpu_blas_create(void** handle) { - *handle = (void*) 1; + *handle = (void*) malloc(sizeof(char)); } void gpu_blas_destroy(void** handle) { + free(*handle); *handle = NULL; } @@ -122,7 +124,7 @@ void gpu_sdot(void* handle, const int64_t n, const float* x, const int64_t incx, void dgemv_(const char* transa, const int32_t* m, const int32_t* n, const double* alpha, const double* a, const int32_t* lda, const double* x, const int32_t* incx, const double* beta, double* y, const int32_t* incy); -void gpu_dgemv(void* handle, const char transa, const int64_t m, const int64_t n, const double alpha, +void gpu_dgemv(void* handle, const char* transa, const int64_t m, const int64_t n, const double alpha, const double* a, const int64_t lda, const double* x, const int64_t incx, const double beta, double* y, const int64_t incy) { assert (handle != NULL); @@ -143,14 +145,14 @@ void gpu_dgemv(void* handle, const char transa, const int64_t m, const int64_t n assert ( (int64_t) incx_ == incx); assert ( (int64_t) incy_ == incy); - dgemv_(&transa, &m_, &n_, &alpha, a, &lda_, x, &incx_, &beta, y, &incy_); + dgemv_(transa, &m_, &n_, &alpha, a, &lda_, x, &incx_, &beta, y, &incy_); } void sgemv_(const char* transa, const int32_t* m, const int32_t* n, const float* alpha, const float* a, const int32_t* lda, const float* x, const int32_t* incx, const float* beta, float* y, const int32_t* incy); -void gpu_sgemv(void* handle, const char transa, const int64_t m, const int64_t n, const float alpha, +void gpu_sgemv(void* handle, const char* transa, const int64_t m, const int64_t n, const float alpha, const float* a, const int64_t lda, const float* x, const int64_t incx, const float beta, float* y, const int64_t incy) { assert (handle != NULL); @@ -171,14 +173,14 @@ void gpu_sgemv(void* handle, const char transa, const int64_t m, const int64_t n assert ( (int64_t) incx_ == incx); assert ( (int64_t) incy_ == incy); - sgemv_(&transa, &m_, &n_, &alpha, a, &lda_, x, &incx_, &beta, y, &incy_); + sgemv_(transa, &m_, &n_, &alpha, a, &lda_, x, &incx_, &beta, y, &incy_); } void dgemm_(const char* transa, const char* transb, const int32_t* m, const int32_t* n, const int32_t* k, const double* alpha, const double* a, const int32_t* lda, const double* b, const int32_t* ldb, const double* beta, double* c, const int32_t* ldc); -void gpu_dgemm(void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, +void gpu_dgemm(void* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, const double* a, const int64_t lda, const double* b, const int64_t ldb, const double beta, double* c, const int64_t ldc) { assert (handle != NULL); @@ -201,7 +203,7 @@ void gpu_dgemm(void* handle, const char transa, const char transb, const int64_t assert ( (int64_t) ldb_ == ldb); assert ( (int64_t) ldc_ == ldc); - dgemm_(&transa, &transb, &m_, &n_, &k_, &alpha, a, &lda_, b, &ldb_, &beta, c, &ldc_); + dgemm_(transa, transb, &m_, &n_, &k_, &alpha, a, &lda_, b, &ldb_, &beta, c, &ldc_); } @@ -209,7 +211,7 @@ void gpu_dgemm(void* handle, const char transa, const char transb, const int64_t void sgemm_(const char* transa, const char* transb, const int32_t* m, const int32_t* n, const int32_t* k, const float* alpha, const float* a, const int32_t* lda, const float* b, const int32_t* ldb, const float* beta, float* c, const int32_t* ldc); -void gpu_sgemm(void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, +void gpu_sgemm(void* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, const float* a, const int64_t lda, const float* b, const int64_t ldb, const float beta, float* c, const int64_t ldc) { assert (handle != NULL); @@ -232,18 +234,18 @@ void gpu_sgemm(void* handle, const char transa, const char transb, const int64_t assert ( (int64_t) ldb_ == ldb); assert ( (int64_t) ldc_ == ldc); - sgemm_(&transa, &transb, &m_, &n_, &k_, &alpha, a, &lda_, b, &ldb_, &beta, c, &ldc_); + sgemm_(transa, transb, &m_, &n_, &k_, &alpha, a, &lda_, b, &ldb_, &beta, c, &ldc_); } -void gpu_dgeam(void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, +void gpu_dgeam(void* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const double alpha, const double* a, const int64_t lda, const double beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { assert (handle != NULL); - if ( (transa == 'N' && transb == 'N') || - (transa == 'n' && transb == 'N') || - (transa == 'N' && transb == 'n') || - (transa == 'n' && transb == 'n') ) { + if ( (*transa == 'N' && *transb == 'N') || + (*transa == 'n' && *transb == 'N') || + (*transa == 'N' && *transb == 'n') || + (*transa == 'n' && *transb == 'n') ) { if (alpha == 0.) { @@ -271,10 +273,10 @@ void gpu_dgeam(void* handle, const char transa, const char transb, const int64_t } - } else if ( (transa == 'N' && transb == 'T') || - (transa == 'n' && transb == 'T') || - (transa == 'N' && transb == 't') || - (transa == 'n' && transb == 't') ) { + } else if ( (*transa == 'N' && *transb == 'T') || + (*transa == 'n' && *transb == 'T') || + (*transa == 'N' && *transb == 't') || + (*transa == 'n' && *transb == 't') ) { if (alpha == 0.) { @@ -302,10 +304,10 @@ void gpu_dgeam(void* handle, const char transa, const char transb, const int64_t } - } else if ( (transa == 'T' && transb == 'N') || - (transa == 't' && transb == 'N') || - (transa == 'T' && transb == 'n') || - (transa == 't' && transb == 'n') ) { + } else if ( (*transa == 'T' && *transb == 'N') || + (*transa == 't' && *transb == 'N') || + (*transa == 'T' && *transb == 'n') || + (*transa == 't' && *transb == 'n') ) { if (alpha == 0.) { @@ -333,10 +335,10 @@ void gpu_dgeam(void* handle, const char transa, const char transb, const int64_t } - } else if ( (transa == 'T' && transb == 'T') || - (transa == 't' && transb == 'T') || - (transa == 'T' && transb == 't') || - (transa == 't' && transb == 't') ) { + } else if ( (*transa == 'T' && *transb == 'T') || + (*transa == 't' && *transb == 'T') || + (*transa == 'T' && *transb == 't') || + (*transa == 't' && *transb == 't') ) { if (alpha == 0.) { @@ -368,14 +370,14 @@ void gpu_dgeam(void* handle, const char transa, const char transb, const int64_t } -void gpu_sgeam(void* handle, const char transa, const char transb, const int64_t m, const int64_t n, const float alpha, +void gpu_sgeam(void* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const float alpha, const float* a, const int64_t lda, const float beta, const float* b, const int64_t ldb, float* c, const int64_t ldc) { assert (handle != NULL); - if ( (transa == 'N' && transb == 'N') || - (transa == 'n' && transb == 'N') || - (transa == 'N' && transb == 'n') || - (transa == 'n' && transb == 'n') ) { + if ( (*transa == 'N' && *transb == 'N') || + (*transa == 'n' && *transb == 'N') || + (*transa == 'N' && *transb == 'n') || + (*transa == 'n' && *transb == 'n') ) { if (alpha == 0.) { @@ -403,10 +405,10 @@ void gpu_sgeam(void* handle, const char transa, const char transb, const int64_t } - } else if ( (transa == 'N' && transb == 'T') || - (transa == 'n' && transb == 'T') || - (transa == 'N' && transb == 't') || - (transa == 'n' && transb == 't') ) { + } else if ( (*transa == 'N' && *transb == 'T') || + (*transa == 'n' && *transb == 'T') || + (*transa == 'N' && *transb == 't') || + (*transa == 'n' && *transb == 't') ) { if (alpha == 0.) { @@ -434,10 +436,10 @@ void gpu_sgeam(void* handle, const char transa, const char transb, const int64_t } - } else if ( (transa == 'T' && transb == 'N') || - (transa == 't' && transb == 'N') || - (transa == 'T' && transb == 'n') || - (transa == 't' && transb == 'n') ) { + } else if ( (*transa == 'T' && *transb == 'N') || + (*transa == 't' && *transb == 'N') || + (*transa == 'T' && *transb == 'n') || + (*transa == 't' && *transb == 'n') ) { if (alpha == 0.) { @@ -465,10 +467,10 @@ void gpu_sgeam(void* handle, const char transa, const char transb, const int64_t } - } else if ( (transa == 'T' && transb == 'T') || - (transa == 't' && transb == 'T') || - (transa == 'T' && transb == 't') || - (transa == 't' && transb == 't') ) { + } else if ( (*transa == 'T' && *transb == 'T') || + (*transa == 't' && *transb == 'T') || + (*transa == 'T' && *transb == 't') || + (*transa == 't' && *transb == 't') ) { if (alpha == 0.) { diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 13b974be..de109cea 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -319,10 +319,10 @@ subroutine ccsd_energy_space_x(nO,nV,d_cc_space_v_oovv,d_cc_space_f_vo,tau_x,t1, call gpu_stream_create(s2) call gpu_set_stream(blas_handle,s1) - call gpu_ddot(blas_handle, nO*nV, d_cc_space_f_vo, 1, t1, 1, e) + call gpu_ddot(blas_handle, nO*nV, d_cc_space_f_vo%f(1,1), 1, t1%f(1,1), 1, e) call gpu_set_stream(blas_handle,s2) - call gpu_ddot_64(blas_handle, nO*nO*nV*nV*1_8, tau_x, 1_8, d_cc_space_v_oovv, 1_8, energy) + call gpu_ddot_64(blas_handle, nO*nO*nV*nV*1_8, tau_x%f(1,1,1,1), 1_8, d_cc_space_v_oovv%f(1,1,1,1), 1_8, energy) call gpu_set_stream(blas_handle,gpu_default_stream) call gpu_synchronize() @@ -362,9 +362,9 @@ subroutine update_tau_space(nO,nV,h_t1,t1,t2,tau) call gpu_stream_create(stream(b)) call gpu_set_stream(blas_handle,stream(b)) do j=1,nO - call gpu_dgeam_f(blas_handle, 'N', 'N', nO, nV, & + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, & 1.d0, t2%f(1,j,1,b), nO*nO, & - h_t1(j,b), t1%f, nO, & + h_t1(j,b), t1%f(1,1), nO, & tau%f(1,j,1,b), nO*nO) enddo enddo @@ -409,7 +409,7 @@ subroutine update_tau_x_space(nO,nV,tau,tau_x) do b=1,nV do a=1,nV call gpu_set_stream(blas_handle,stream(a)) - call gpu_dgeam_f(blas_handle, 'N', 'N', nO, nO, & + call gpu_dgeam(blas_handle, 'N', 'N', nO, nO, & 2.d0, tau%f(1,1,a,b), nO, & -1.d0, tau%f(1,1,b,a), nO, & tau_x%f(1,1,a,b), nO) diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index 5eb95a06..a3490589 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -37,15 +37,15 @@ subroutine compute_H_oo_chol(nO,nV,tau_x,d_cc_space_f_oo, & !$OMP DO do u=1,nO - call gpu_dgeam_f(blas, 'N', 'N', 1, nO*nV*nV, 1.d0, & - tau_x%f(u,1,1,1), nO, 0.d0, tau_x%f, nO, tmp_ovv%f, 1) + call gpu_dgeam(blas, 'N', 'N', 1, nO*nV*nV, 1.d0, & + tau_x%f(u,1,1,1), nO, 0.d0, tau_x%f(1,1,1,1), nO, tmp_ovv%f(1,1,1), 1) do b=1,nV - call gpu_dgeam_f(blas, 'T', 'T', nV, nO, 1.d0, & + call gpu_dgeam(blas, 'T', 'T', nV, nO, 1.d0, & tmp_ovv%f(1,1,b), nO, 0.d0, & tmp_ovv%f(1,1,b), nO, tmp_vov%f(1,1,b), nV) enddo - call gpu_dgemm_f(blas, 'N','T',cholesky_mo_num,nV,nO*nV,1.d0, & - d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_vov%f, nV, & + call gpu_dgemm(blas, 'N','T',cholesky_mo_num,nV,nO*nV,1.d0, & + d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num, tmp_vov%f(1,1,1), nV, & 0.d0, tau_kau%f(1,1,u), cholesky_mo_num) enddo !$OMP END DO @@ -59,8 +59,8 @@ subroutine compute_H_oo_chol(nO,nV,tau_x,d_cc_space_f_oo, & !$OMP END PARALLEL call gpu_dgemm(blas_handle, 'T', 'N', nO, nO, cholesky_mo_num*nV, 1.d0, & - tau_kau, cholesky_mo_num*nV, d_cc_space_v_vo_chol, cholesky_mo_num*nV, & - 1.d0, H_oo, nO) + tau_kau%f(1,1,1), cholesky_mo_num*nV, d_cc_space_v_vo_chol%f(1,1,1), cholesky_mo_num*nV, & + 1.d0, H_oo%f(1,1), nO) call gpu_synchronize() call gpu_deallocate(tau_kau) @@ -103,12 +103,12 @@ subroutine compute_H_vv_chol(nO,nV,tau_x,d_cc_space_f_vv, & !$OMP DO do a = 1, nV do b=1,nV - call gpu_dgeam_f(blas, 'N', 'N', nO, nO, 1.d0, & + call gpu_dgeam(blas, 'N', 'N', nO, nO, 1.d0, & tau_x%f(1,1,a,b), nO, 0.d0, & tau_x%f(1,1,a,b), nO, tmp_oov%f(1,1,b), nO) enddo - call gpu_dgemm_f(blas, 'N','T',cholesky_mo_num,nO,nO*nV,1.d0, & - d_cc_space_v_ov_chol%f, cholesky_mo_num, tmp_oov%f, nO, & + call gpu_dgemm(blas, 'N', 'T', cholesky_mo_num, nO, nO*nV, 1.d0, & + d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num, tmp_oov%f(1,1,1), nO, & 0.d0, tau_kia%f(1,1,a), cholesky_mo_num) enddo !$OMP END DO @@ -119,9 +119,9 @@ subroutine compute_H_vv_chol(nO,nV,tau_x,d_cc_space_f_vv, & !$OMP TASKWAIT !$OMP END PARALLEL - call gpu_dgemm(blas_handle,'T', 'N', nV, nV, cholesky_mo_num*nO, -1.d0, & - tau_kia, cholesky_mo_num*nO, d_cc_space_v_ov_chol, cholesky_mo_num*nO, & - 1.d0, H_vv, nV) + call gpu_dgemm(blas_handle, 'T', 'N', nV, nV, cholesky_mo_num*nO, -1.d0, & + tau_kia%f(1,1,1), cholesky_mo_num*nO, d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num*nO, & + 1.d0, H_vv%f(1,1), nV) call gpu_synchronize() call gpu_deallocate(tau_kia) @@ -148,20 +148,20 @@ subroutine compute_H_vo_chol(nO,nV,t1,d_cc_space_f_vo, & call gpu_allocate(tmp_k, cholesky_mo_num) call gpu_dgemm(blas_handle, 'N', 'N', cholesky_mo_num, 1, nO*nV, 2.d0, & - d_cc_space_v_ov_chol, cholesky_mo_num, & - t1, nO*nV, 0.d0, tmp_k, cholesky_mo_num) + d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num, & + t1%f(1,1), nO*nV, 0.d0, tmp_k%f(1), cholesky_mo_num) - call gpu_dgemm(blas_handle, 'T','N',nV*nO,1,cholesky_mo_num,1.d0, & - d_cc_space_v_vo_chol, cholesky_mo_num, tmp_k, cholesky_mo_num, 1.d0, & - H_vo, nV*nO) + call gpu_dgemm(blas_handle, 'T', 'N', nV*nO, 1, cholesky_mo_num, 1.d0, & + d_cc_space_v_vo_chol%f(1,1,1), cholesky_mo_num, tmp_k%f(1), cholesky_mo_num, 1.d0, & + H_vo%f(1,1), nV*nO) call gpu_deallocate(tmp_k) call gpu_allocate(tmp, cholesky_mo_num, nO, nO) - call gpu_dgemm(blas_handle, 'N','T', cholesky_mo_num*nO, nO, nV, 1.d0, & - d_cc_space_v_ov_chol, cholesky_mo_num*nO, t1, nO, 0.d0, tmp, cholesky_mo_num*nO) + call gpu_dgemm(blas_handle, 'N', 'T', cholesky_mo_num*nO, nO, nV, 1.d0, & + d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num*nO, t1%f(1,1), nO, 0.d0, tmp%f(1,1,1), cholesky_mo_num*nO) call gpu_allocate(tmp2, cholesky_mo_num, nO, nO) @@ -174,7 +174,7 @@ subroutine compute_H_vo_chol(nO,nV,t1,d_cc_space_f_vo, & do i=1,nO do j=1,nO call gpu_set_stream(blas_handle,stream(j)) - call gpu_dgeam_f(blas_handle, 'N', 'N', cholesky_mo_num, 1, 1.d0, & + call gpu_dgeam(blas_handle, 'N', 'N', cholesky_mo_num, 1, 1.d0, & tmp%f(1,i,j), cholesky_mo_num, 0.d0, & tmp%f(1,i,j), cholesky_mo_num, tmp2%f(1,j,i), cholesky_mo_num) enddo @@ -190,8 +190,8 @@ subroutine compute_H_vo_chol(nO,nV,t1,d_cc_space_f_vo, & call gpu_deallocate(tmp) call gpu_dgemm(blas_handle, 'T','N', nV, nO, cholesky_mo_num*nO, -1.d0, & - d_cc_space_v_ov_chol, cholesky_mo_num*nO, tmp2, cholesky_mo_num*nO, & - 1.d0, H_vo, nV) + d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num*nO, tmp2%f(1,1,1), cholesky_mo_num*nO, & + 1.d0, H_vo%f(1,1), nV) call gpu_synchronize() call gpu_deallocate(tmp2) diff --git a/src/gpu/gpu_module.F90 b/src/gpu/gpu_module.F90 index 2676b339..20d99ede 100644 --- a/src/gpu/gpu_module.F90 +++ b/src/gpu/gpu_module.F90 @@ -156,17 +156,17 @@ module gpu character(c_char), intent(in), value :: transa, transb integer(c_int64_t), intent(in), value :: m, n, lda, ldb, ldc real(c_float), intent(in), value :: alpha, beta - type(c_ptr), value :: a, b, c + real(c_float) :: a, b, c end subroutine subroutine gpu_dgemm_c(handle, transa, transb, m, n, k, alpha, a, lda, & b, ldb, beta, c, ldc) bind(C, name='gpu_dgemm') import type(c_ptr), value, intent(in) :: handle - character(c_char), intent(in), value :: transa, transb + character(c_char), intent(in) :: transa, transb integer(c_int64_t), intent(in), value :: m, n, k, lda, ldb, ldc real(c_double), intent(in), value :: alpha, beta - type(c_ptr), value :: a, b, c + real(c_double) :: a, b, c end subroutine subroutine gpu_sgemm_c(handle, transa, transb, m, n, k, alpha, a, lda, & @@ -176,7 +176,7 @@ module gpu character(c_char), intent(in), value :: transa, transb integer(c_int64_t), intent(in), value :: m, n, k, lda, ldb, ldc real(c_float), intent(in), value :: alpha, beta - type(c_ptr), value :: a, b, c + real(c_float) :: a, b, c end subroutine end interface @@ -570,7 +570,6 @@ module gpu end subroutine -end module @@ -578,38 +577,20 @@ end module ! --- subroutine gpu_ddot(handle, n, dx, incx, dy, incy, res) - use gpu +! use gpu type(gpu_blas), intent(in) :: handle integer*4 :: n, incx, incy - type(gpu_double1), intent(in) :: dx, dy - double precision, intent(out) :: res - call gpu_ddot_c(handle%c, int(n,c_int64_t), dx%c, int(incx,c_int64_t), dy%c, int(incy,c_int64_t), res) -end subroutine - -subroutine gpu_ddot_f(handle, n, dx, incx, dy, incy, res) - use gpu - type(gpu_blas), intent(in) :: handle - integer*4 :: n, incx, incy - double precision, target :: dx(*), dy(*) + double precision, target :: dx, dy double precision, intent(out) :: res call gpu_ddot_c(handle%c, int(n,c_int64_t), c_loc(dx), int(incx,c_int64_t), c_loc(dy), int(incy,c_int64_t), res) end subroutine subroutine gpu_ddot_64(handle, n, dx, incx, dy, incy, res) - use gpu +! use gpu type(gpu_blas), intent(in) :: handle integer*8 :: n, incx, incy - type(gpu_double1), intent(in) :: dx, dy - double precision, intent(out) :: res - call gpu_ddot_c(handle%c, n, dx%c, incx, dy%c, incy, res) -end subroutine - -subroutine gpu_ddot_f_64(handle, n, dx, incx, dy, incy, res) - use gpu - type(gpu_blas), intent(in) :: handle - integer*8 :: n, incx, incy - double precision, target :: dx(*), dy(*) + double precision, target :: dx, dy double precision, intent(out) :: res call gpu_ddot_c(handle%c, n, c_loc(dx), incx, c_loc(dy), incy, res) end subroutine @@ -620,25 +601,12 @@ end subroutine subroutine gpu_dgeam(handle, transa, transb, m, n, alpha, a, lda, beta, & b, ldb, c, ldc) - use gpu +! use gpu type(gpu_blas), intent(in) :: handle character, intent(in) :: transa, transb integer*4, intent(in) :: m, n, lda, ldb, ldc double precision, intent(in) :: alpha, beta - type(gpu_double2) :: a, b, c - call gpu_dgeam_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), alpha, a%c, int(lda,c_int64_t), beta, & - b%c, int(ldb,c_int64_t), c%c, int(ldc,c_int64_t)) -end subroutine - - -subroutine gpu_dgeam_f(handle, transa, transb, m, n, alpha, a, lda, beta, & - b, ldb, c, ldc) - use gpu - type(gpu_blas), intent(in) :: handle - character, intent(in) :: transa, transb - integer*4, intent(in) :: m, n, lda, ldb, ldc - double precision, intent(in) :: alpha, beta - double precision, target :: a(*), b(*), c(*) + double precision, target :: a, b, c call gpu_dgeam_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), alpha, c_loc(a), int(lda,c_int64_t), beta, & c_loc(b), int(ldb,c_int64_t), c_loc(c), int(ldc,c_int64_t)) end subroutine @@ -646,25 +614,12 @@ end subroutine subroutine gpu_dgeam_64(handle, transa, transb, m, n, alpha, a, lda, beta, & b, ldb, c, ldc) - use gpu +! use gpu type(gpu_blas), intent(in) :: handle character, intent(in) :: transa, transb integer*8, intent(in) :: m, n, lda, ldb, ldc double precision, intent(in) :: alpha, beta - type(gpu_double2) :: a, b, c - call gpu_dgeam_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), alpha, a%c, int(lda,c_int64_t), beta, & - b%c, int(ldb,c_int64_t), c%c, int(ldc,c_int64_t)) -end subroutine - - -subroutine gpu_dgeam_f_64(handle, transa, transb, m, n, alpha, a, lda, beta, & - b, ldb, c, ldc) - use gpu - type(gpu_blas), intent(in) :: handle - character, intent(in) :: transa, transb - integer*8, intent(in) :: m, n, lda, ldb, ldc - double precision, intent(in) :: alpha, beta - double precision, target :: a(*), b(*), c(*) + double precision, target :: a, b, c call gpu_dgeam_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), alpha, c_loc(a), int(lda,c_int64_t), beta, & c_loc(b), int(ldb,c_int64_t), c_loc(c), int(ldc,c_int64_t)) end subroutine @@ -675,51 +630,27 @@ end subroutine subroutine gpu_dgemm(handle, transa, transb, m, n, k, alpha, a, lda, & b, ldb, beta, c, ldc) - use gpu +! use gpu type(gpu_blas), intent(in) :: handle character, intent(in) :: transa, transb integer*4, intent(in) :: m, n, k, lda, ldb, ldc double precision, intent(in) :: alpha, beta - type(gpu_double2) :: a, b, c + double precision :: a, b, c call gpu_dgemm_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), int(k,c_int64_t), & - alpha, a%c, int(lda,c_int64_t), & - b%c, int(ldb,c_int64_t), beta, c%c, int(ldc,c_int64_t)) + alpha, a, int(lda,c_int64_t), & + b, int(ldb,c_int64_t), beta, c, int(ldc,c_int64_t)) end subroutine subroutine gpu_dgemm_64(handle, transa, transb, m, n, k, alpha, a, lda, & b, ldb, beta, c, ldc) - use gpu +! use gpu type(gpu_blas), intent(in) :: handle character, intent(in) :: transa, transb integer*8, intent(in) :: m, n, k, lda, ldb, ldc double precision, intent(in) :: alpha, beta - type(gpu_double2) :: a, b, c - call gpu_dgemm_c(handle%c, transa, transb, m, n, k, & - alpha, a%c, lda, b%c, ldb, beta, c%c, ldc) -end subroutine - -subroutine gpu_dgemm_f(handle, transa, transb, m, n, k, alpha, a, lda, & - b, ldb, beta, c, ldc) - use gpu - type(gpu_blas), intent(in) :: handle - character, intent(in) :: transa, transb - integer*4, intent(in) :: m, n, k, lda, ldb, ldc - double precision, intent(in) :: alpha, beta - double precision, target :: a(*), b(*), c(*) + double precision :: a, b, c call gpu_dgemm_c(handle%c, transa, transb, int(m,c_int64_t), int(n,c_int64_t), int(k,c_int64_t), & - alpha, c_loc(a), int(lda,c_int64_t), & - c_loc(b), int(ldb,c_int64_t), beta, c_loc(c), int(ldc,c_int64_t)) -end subroutine - -subroutine gpu_dgemm_f_64(handle, transa, transb, m, n, k, alpha, a, lda, & - b, ldb, beta, c, ldc) - use gpu - type(gpu_blas), intent(in) :: handle - character, intent(in) :: transa, transb - integer*8, intent(in) :: m, n, k, lda, ldb, ldc - double precision, intent(in) :: alpha, beta - double precision, target :: a(*), b(*), c(*) - call gpu_dgemm_c(handle%c, transa, transb, m, n, k, & - alpha, c_loc(a), lda, c_loc(b), ldb, beta, c_loc(c), ldc) + alpha, a, int(lda,c_int64_t), b, int(ldb,c_int64_t), beta, c, int(ldc,c_int64_t)) end subroutine +end module From 447cdcd907dd864252777423763ed6947efc32d8 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 2 Jul 2024 17:22:41 +0200 Subject: [PATCH 109/159] Working on r1 --- plugins/local/gpu_nvidia/gpu.c | 32 ++--- src/ccsd/ccsd_space_orb_sub.irp.f | 31 ++++- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 176 ++++++++++++------------- src/gpu/gpu_module.F90 | 57 +++++++- 4 files changed, 182 insertions(+), 114 deletions(-) diff --git a/plugins/local/gpu_nvidia/gpu.c b/plugins/local/gpu_nvidia/gpu.c index 39a82984..e77847a6 100644 --- a/plugins/local/gpu_nvidia/gpu.c +++ b/plugins/local/gpu_nvidia/gpu.c @@ -149,7 +149,7 @@ void gpu_sdot(cublasHandle_t handle, const int64_t n, const float* x, const int6 -void gpu_dgemv(cublasHandle_t handle, const char transa, const int64_t m, const int64_t n, const double alpha, +void gpu_dgemv(cublasHandle_t handle, const char* transa, const int64_t m, const int64_t n, const double alpha, const double* a, const int64_t lda, const double* x, const int64_t incx, const double beta, double* y, const int64_t incy) { assert (handle != NULL); @@ -171,14 +171,14 @@ void gpu_dgemv(cublasHandle_t handle, const char transa, const int64_t m, const assert ( (int64_t) incy_ == incy); cublasOperation_t transa_ = CUBLAS_OP_N; - if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; + if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; cublasDgemv(handle, transa_, m_, n_, &alpha, a, lda_, x, incx_, &beta, y, incy_); } -void gpu_sgemv(cublasHandle_t handle, const char transa, const int64_t m, const int64_t n, const float alpha, +void gpu_sgemv(cublasHandle_t handle, const char* transa, const int64_t m, const int64_t n, const float alpha, const float* a, const int64_t lda, const float* x, const int64_t incx, const float beta, float* y, const int64_t incy) { assert (handle != NULL); @@ -200,13 +200,13 @@ void gpu_sgemv(cublasHandle_t handle, const char transa, const int64_t m, const assert ( (int64_t) incy_ == incy); cublasOperation_t transa_ = CUBLAS_OP_N; - if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; + if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; cublasSgemv(handle, transa_, m_, n_, &alpha, a, lda_, x, incx_, &beta, y, incy_); } -void gpu_dgemm(cublasHandle_t handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, +void gpu_dgemm(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, const double* a, const int64_t lda, const double* b, const int64_t ldb, const double beta, double* c, const int64_t ldc) { assert (handle != NULL); @@ -231,15 +231,15 @@ void gpu_dgemm(cublasHandle_t handle, const char transa, const char transb, cons cublasOperation_t transa_ = CUBLAS_OP_N; cublasOperation_t transb_ = CUBLAS_OP_N; - if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; - if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; + if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; + if (*transb == 'T' || *transb == 't') transb_ = CUBLAS_OP_T; cublasDgemm(handle, transa_, transb_, m_, n_, k_, &alpha, a, lda_, b, ldb_, &beta, c, ldc_); } -void gpu_sgemm(cublasHandle_t handle, const char transa, const char transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, +void gpu_sgemm(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, const float* a, const int64_t lda, const float* b, const int64_t ldb, const float beta, float* c, const int64_t ldc) { assert (handle != NULL); @@ -264,14 +264,14 @@ void gpu_sgemm(cublasHandle_t handle, const char transa, const char transb, cons cublasOperation_t transa_ = CUBLAS_OP_N; cublasOperation_t transb_ = CUBLAS_OP_N; - if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; - if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; + if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; + if (*transb == 'T' || *transb == 't') transb_ = CUBLAS_OP_T; cublasSgemm(handle, transa_, transb_, m_, n_, k_, &alpha, a, lda_, b, ldb_, &beta, c, ldc_); } -void gpu_dgeam(cublasHandle_t handle, const char transa, const char transb, const int64_t m, const int64_t n, const double alpha, +void gpu_dgeam(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const double alpha, const double* a, const int64_t lda, const double beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { assert (handle != NULL); @@ -293,15 +293,15 @@ void gpu_dgeam(cublasHandle_t handle, const char transa, const char transb, cons cublasOperation_t transa_ = CUBLAS_OP_N; cublasOperation_t transb_ = CUBLAS_OP_N; - if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; - if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; + if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; + if (*transb == 'T' || *transb == 't') transb_ = CUBLAS_OP_T; cublasDgeam(handle, transa_, transb_, m_, n_, &alpha, a, lda_, &beta, b, ldb_, c, ldc_); } -void gpu_sgeam(cublasHandle_t handle, const char transa, const char transb, const int64_t m, const int64_t n, const float alpha, +void gpu_sgeam(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const float alpha, const float* a, const int64_t lda, const float beta, const float* b, const int64_t ldb, float* c, const int64_t ldc) { assert (handle != NULL); @@ -323,8 +323,8 @@ void gpu_sgeam(cublasHandle_t handle, const char transa, const char transb, cons cublasOperation_t transa_ = CUBLAS_OP_N; cublasOperation_t transb_ = CUBLAS_OP_N; - if (transa == 'T' || transa == 't') transa_ = CUBLAS_OP_T; - if (transb == 'T' || transb == 't') transb_ = CUBLAS_OP_T; + if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; + if (*transb == 'T' || *transb == 't') transb_ = CUBLAS_OP_T; cublasSgeam(handle, transa_, transb_, m_, n_, &alpha, a, lda_, &beta, b, ldb_, c, ldc_); diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index de109cea..256f743b 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -20,8 +20,8 @@ subroutine run_ccsd_space_orb type(gpu_double3) :: d_cc_space_v_oo_chol, d_cc_space_v_vo_chol type(gpu_double3) :: d_cc_space_v_ov_chol, d_cc_space_v_vv_chol - type(gpu_double4) :: d_cc_space_v_oovv - + type(gpu_double4) :: d_cc_space_v_oovv, d_cc_space_v_voov, d_cc_space_v_ovov + type(gpu_double4) :: d_cc_space_v_oovo double precision, allocatable :: all_err(:,:), all_t(:,:) integer, allocatable :: list_occ(:), list_vir(:) @@ -69,6 +69,7 @@ subroutine run_ccsd_space_orb call gpu_upload(cc_space_f_oo, d_cc_space_f_oo) call gpu_upload(cc_space_f_vo, d_cc_space_f_vo) + call gpu_upload(cc_space_f_ov, d_cc_space_f_ov) call gpu_upload(cc_space_f_vv, d_cc_space_f_vv) ! FREE cc_space_f_oo @@ -92,6 +93,18 @@ subroutine run_ccsd_space_orb ! FREE cc_space_v_vv_chol endif + call gpu_allocate(d_cc_space_v_voov, nV, nO, nO, nV) + call gpu_allocate(d_cc_space_v_ovov, nO, nV, nO, nV) + call gpu_allocate(d_cc_space_v_oovo, nO, nO, nV, nO) + + call gpu_upload(cc_space_v_voov, d_cc_space_v_voov) + call gpu_upload(cc_space_v_ovov, d_cc_space_v_ovov) + call gpu_upload(cc_space_v_oovo, d_cc_space_v_oovo) + +! FREE cc_space_v_voov +! FREE cc_space_v_ovov +! FREE cc_space_v_oovo + call gpu_allocate(t2, nO,nO,nV,nV) call gpu_allocate(r2, nO,nO,nV,nV) call gpu_allocate(tau, nO,nO,nV,nV) @@ -185,7 +198,8 @@ subroutine run_ccsd_space_orb call compute_H_vv_chol(nO,nV,tau_x,d_cc_space_f_vv, d_cc_space_v_ov_chol,H_vv) call compute_H_vo_chol(nO,nV,t1,d_cc_space_f_vo, d_cc_space_v_ov_chol,d_cc_space_v_vo_chol, H_vo) - call compute_r1_space_chol(nO,nV,t1%f,t2%f,tau%f,H_oo%F,H_vv%F,H_vo%F,r1%f,max_r1) + call compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1,d_cc_space_f_ov,d_cc_space_f_vo, & + d_cc_space_v_voov, d_cc_space_v_ovov, d_cc_space_v_oovo, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol) call compute_r2_space_chol(nO,nV,t1%f,t2%f,tau%f,H_oo%F,H_vv%F,H_vo%F,r2%f,max_r2) else call compute_H_oo(nO,nV,t1%f,t2%f,tau%f,H_oo%f) @@ -292,8 +306,17 @@ subroutine run_ccsd_space_orb call gpu_deallocate(d_cc_space_v_vo_chol) call gpu_deallocate(d_cc_space_v_vv_chol) endif - call gpu_deallocate(d_cc_space_f_vo) + call gpu_deallocate(d_cc_space_v_oovv) + call gpu_deallocate(d_cc_space_v_voov) + call gpu_deallocate(d_cc_space_v_ovov) + call gpu_deallocate(d_cc_space_v_oovo) + + call gpu_deallocate(d_cc_space_f_oo) + call gpu_deallocate(d_cc_space_f_vo) + call gpu_deallocate(d_cc_space_f_ov) + call gpu_deallocate(d_cc_space_f_vv) + call gpu_deallocate(t1) call gpu_deallocate(t2) diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index a3490589..6190e985 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -199,59 +199,52 @@ end ! R1 -subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) - +subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1,d_cc_space_f_ov,d_cc_space_f_vo, & + d_cc_space_v_voov, d_cc_space_v_ovov, d_cc_space_v_oovo, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol) + use gpu implicit none ! in integer, intent(in) :: nO, nV - double precision, intent(in) :: t1(nO,nV), t2(nO,nO,nV,nV), tau(nO,nO,nV,nV) - double precision, intent(in) :: H_oo(nO,nO), H_vv(nV,nV), H_vo(nV,nO) + type(gpu_double2), intent(in) :: t1, H_oo, H_vo, H_vv, d_cc_space_f_ov,d_cc_space_f_vo + type(gpu_double3), intent(in) :: d_cc_space_v_vo_chol, d_cc_space_v_vv_chol + type(gpu_double4), intent(in) :: t2, tau, d_cc_space_v_voov, d_cc_space_v_ovov, d_cc_space_v_oovo ! out - double precision, intent(out) :: r1(nO,nV), max_r1 + type(gpu_double2), intent(out) :: r1 + double precision, intent(out) :: max_r1 ! internal integer :: u,i,j,beta,a,b - !$omp parallel & - !$omp shared(nO,nV,r1,cc_space_f_ov) & - !$omp private(u,beta) & - !$omp default(none) - !$omp do - do beta = 1, nV - do u = 1, nO - r1(u,beta) = cc_space_f_ov(u,beta) - enddo - enddo - !$omp end do - !$omp end parallel + call gpu_copy(d_cc_space_f_ov, r1) - double precision, allocatable :: X_oo(:,:) - allocate(X_oo(nO,nO)) - call dgemm('N','N', nO, nO, nV, & - -2d0, t1 , size(t1,1), & - cc_space_f_vo, size(cc_space_f_vo,1), & - 0d0, X_oo , size(X_oo,1)) + type(gpu_double2) :: X_oo + call gpu_allocate(X_oo,nO,nO) - call dgemm('T','N', nO, nV, nO, & - 1d0, X_oo, size(X_oo,2), & - t1 , size(t1,1), & - 1d0, r1 , size(r1,1)) - deallocate(X_oo) + call gpu_dgemm(blas_handle, 'N','N', nO, nO, nV, & + -2d0, t1%f(1,1), size(t1%f,1), & + d_cc_space_f_vo%f(1,1), size(d_cc_space_f_vo%f,1), & + 0d0, X_oo%f(1,1), size(X_oo%f,1)) - call dgemm('N','N', nO, nV, nV, & - 1d0, t1 , size(t1,1), & - H_vv, size(H_vv,1), & - 1d0, r1 , size(r1,1)) + call gpu_dgemm(blas_handle, 'T','N', nO, nV, nO, & + 1d0, X_oo%f(1,1), size(X_oo%f,2), & + t1%f(1,1) , size(t1%f,1), & + 1d0, r1%f(1,1) , size(r1%f,1)) - call dgemm('N','N', nO, nV, nO, & - -1d0, H_oo, size(H_oo,1), & - t1 , size(t1,1), & - 1d0, r1, size(r1,1)) + call gpu_dgemm(blas_handle, 'N','N', nO, nV, nV, & + 1d0, t1%f(1,1) , size(t1%f,1), & + H_vv%f(1,1), size(H_vv%f,1), & + 1d0, r1%f(1,1) , size(r1%f,1)) + + call gpu_dgemm(blas_handle, 'N','N', nO, nV, nO, & + -1d0, H_oo%f(1,1), size(H_oo%f,1), & + t1%f(1,1) , size(t1%f,1), & + 1d0, r1%f(1,1), size(r1%f,1)) + + type(gpu_double4) :: X_voov + call gpu_allocate(X_voov, nV, nO, nO, nV) - double precision, allocatable :: X_voov(:,:,:,:) - allocate(X_voov(nV, nO, nO, nV)) !$omp parallel & !$omp shared(nO,nV,X_voov,t2,t1) & @@ -262,7 +255,7 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) do u = 1, nO do i = 1, nO do a = 1, nV - X_voov(a,i,u,beta) = 2d0 * t2(i,u,a,beta) - t2(u,i,a,beta) + t1(u,a) * t1(i,beta) + X_voov%f(a,i,u,beta) = 2d0 * t2%f(i,u,a,beta) - t2%f(u,i,a,beta) + t1%f(u,a) * t1%f(i,beta) enddo enddo enddo @@ -270,18 +263,20 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) !$omp end do !$omp end parallel - call dgemv('T', nV*nO, nO*nV, & - 1d0, X_voov, size(X_voov,1) * size(X_voov,2), & - H_vo , 1, & - 1d0, r1 , 1) + call gpu_dgemv(blas_handle, 'T', nV*nO, nO*nV, & + 1d0, X_voov%f(1,1,1,1), size(X_voov%f,1) * size(X_voov%f,2), & + H_vo%f(1,1) , 1, & + 1d0, r1%f(1,1) , 1) - deallocate(X_voov) + call gpu_synchronize() + call gpu_deallocate(X_oo) + call gpu_deallocate(X_voov) - double precision, allocatable :: X_ovov(:,:,:,:) - allocate(X_ovov(nO, nV, nO, nV)) + type(gpu_double4) :: X_ovov + call gpu_allocate(X_ovov, nO, nV, nO, nV) !$omp parallel & - !$omp shared(nO,nV,cc_space_v_ovov,cc_space_v_voov,X_ovov) & + !$omp shared(nO,nV,d_cc_space_v_ovov,d_cc_space_v_voov,X_ovov) & !$omp private(u,beta,i,a) & !$omp default(none) !$omp do @@ -289,7 +284,7 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) do u = 1, nO do a = 1, nv do i = 1, nO - X_ovov(i,a,u,beta) = 2d0 * cc_space_v_voov(a,u,i,beta) - cc_space_v_ovov(u,a,i,beta) + X_ovov%f(i,a,u,beta) = 2d0 * d_cc_space_v_voov%f(a,u,i,beta) - d_cc_space_v_ovov%f(u,a,i,beta) enddo enddo enddo @@ -297,17 +292,25 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) !$omp end do !$omp end parallel - call dgemv('T', nO*nV, nO*nV, & - 1d0, X_ovov, size(X_ovov,1) * size(X_ovov,2), & - t1 , 1, & - 1d0, r1 , 1) - - deallocate(X_ovov) +! call dgemv('T', nO*nV, nO*nV, & +! 1d0, X_ovov%f, size(X_ovov%f,1) * size(X_ovov%f,2), & +! t1%f, 1, & +! 1d0, r1%f, 1) + call gpu_dgemv(blas_handle, 'T', nO*nV, nO*nV, & + 1d0, X_ovov%f(1,1,1,1), size(X_ovov%f,1) * size(X_ovov%f,2), & + t1%f(1,1), 1, & + 1d0, r1%f(1,1), 1) integer :: iblock, block_size, nVmax - double precision, allocatable :: W_vvov(:,:,:,:), W_vvov_tmp(:,:,:,:), T_vvoo(:,:,:,:) + type(gpu_double4) :: W_vvov, W_vvov_tmp, T_vvoo + block_size = 16 - allocate(W_vvov(nV,nV,nO,block_size), W_vvov_tmp(nV,nO,nV,block_size), T_vvoo(nV,nV,nO,nO)) + call gpu_allocate(W_vvov,nV, nV,nO,block_size) + call gpu_allocate(W_vvov_tmp, nV,nO,nV,block_size) + call gpu_allocate(T_vvoo, nV,nV,nO,nO) + + call gpu_synchronize() + call gpu_deallocate(X_ovov) !$omp parallel & !$omp private(u,i,b,a) & @@ -317,7 +320,7 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) do i = 1, nO do b = 1, nV do a = 1, nV - T_vvoo(a,b,i,u) = tau(i,u,a,b) + T_vvoo%f(a,b,i,u) = tau%f(i,u,a,b) enddo enddo enddo @@ -328,11 +331,12 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) do iblock = 1, nV, block_size nVmax = min(block_size,nV-iblock+1) - call dgemm('T','N', nV*nO, nV*nVmax, cholesky_mo_num, 1.d0, & - cc_space_v_vo_chol , cholesky_mo_num, & - cc_space_v_vv_chol(1,1,iblock), cholesky_mo_num, & - 0.d0, W_vvov_tmp, nV*nO) + call gpu_dgemm(blas_handle, 'T','N', nV*nO, nV*nVmax, cholesky_mo_num, 1.d0, & + d_cc_space_v_vo_chol%f(1,1,1) , cholesky_mo_num, & + d_cc_space_v_vv_chol%f(1,1,iblock), cholesky_mo_num, & + 0.d0, W_vvov_tmp%f(1,1,1,1), nV*nO) + call gpu_synchronize() !$omp parallel & !$omp private(b,i,a,beta) & !$omp default(shared) @@ -341,7 +345,7 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) !$omp do do b = 1, nV do a = 1, nV - W_vvov(a,b,i,beta) = 2d0 * W_vvov_tmp(a,i,b,beta) - W_vvov_tmp(b,i,a,beta) + W_vvov%f(a,b,i,beta) = 2d0 * W_vvov_tmp%f(a,i,b,beta) - W_vvov_tmp%f(b,i,a,beta) enddo enddo !$omp end do nowait @@ -350,20 +354,22 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) !$omp barrier !$omp end parallel - call dgemm('T','N',nO,nVmax,nO*nV*nV, & - 1d0, T_vvoo, nV*nV*nO, & - W_vvov, nO*nV*nV, & - 1d0, r1(1,iblock), nO) + call gpu_dgemm(blas_handle, 'T','N',nO,nVmax,nO*nV*nV, & + 1d0, T_vvoo%f(1,1,1,1), nV*nV*nO, & + W_vvov%f(1,1,1,1), nO*nV*nV, & + 1d0, r1%f(1,iblock), nO) enddo - deallocate(W_vvov,T_vvoo) + call gpu_synchronize() + call gpu_deallocate(W_vvov) + call gpu_deallocate(T_vvoo) - double precision, allocatable :: W_oovo(:,:,:,:) - allocate(W_oovo(nO,nO,nV,nO)) + type(gpu_double4) :: W_oovo + call gpu_allocate(W_oovo, nO,nO,nV,nO) !$omp parallel & - !$omp shared(nO,nV,cc_space_v_oovo,W_oovo) & + !$omp shared(nO,nV,d_cc_space_v_oovo,W_oovo) & !$omp private(u,a,i,j) & !$omp default(none) do u = 1, nO @@ -371,8 +377,7 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) do a = 1, nV do j = 1, nO do i = 1, nO -! W_oovo(i,j,a,u) = 2d0 * cc_space_v_vooo(a,u,i,j) - cc_space_v_vooo(a,u,j,i) - W_oovo(i,j,a,u) = 2d0 * cc_space_v_oovo(i,j,a,u) - cc_space_v_oovo(j,i,a,u) + W_oovo%f(i,j,a,u) = 2d0 * d_cc_space_v_oovo%f(i,j,a,u) - d_cc_space_v_oovo%f(j,i,a,u) enddo enddo enddo @@ -380,33 +385,22 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1) enddo !$omp end parallel - call dgemm('T','N', nO, nV, nO*nO*nV, & - -1d0, W_oovo, size(W_oovo,1) * size(W_oovo,2) * size(W_oovo,3), & - tau , size(tau,1) * size(tau,2) * size(tau,3), & - 1d0, r1 , size(r1,1)) + ! Change the sign for consistency with the code in spin orbitals + call gpu_dgemm(blas_handle, 'T','N', nO, nV, nO*nO*nV, & + 1d0, W_oovo%f(1,1,1,1), size(W_oovo%f,1) * size(W_oovo%f,2) * size(W_oovo%f,3), & + tau%f(1,1,1,1), size(tau%f,1) * size(tau%f,2) * size(tau%f,3), & + -1d0, r1%f(1,1), size(r1%f,1)) - deallocate(W_oovo) + call gpu_synchronize() + call gpu_deallocate(W_oovo) max_r1 = 0d0 do a = 1, nV do i = 1, nO - max_r1 = max(dabs(r1(i,a)), max_r1) + max_r1 = max(dabs(r1%f(i,a)), max_r1) enddo enddo - ! Change the sign for consistency with the code in spin orbitals - !$omp parallel & - !$omp shared(nO,nV,r1) & - !$omp private(a,i) & - !$omp default(none) - !$omp do - do a = 1, nV - do i = 1, nO - r1(i,a) = -r1(i,a) - enddo - enddo - !$omp end do - !$omp end parallel end diff --git a/src/gpu/gpu_module.F90 b/src/gpu/gpu_module.F90 index 20d99ede..949ae4fc 100644 --- a/src/gpu/gpu_module.F90 +++ b/src/gpu/gpu_module.F90 @@ -136,7 +136,7 @@ module gpu type(c_ptr), value, intent(in) :: handle integer(c_int64_t), value :: n, incx, incy type(c_ptr), intent(in), value :: dx, dy - real(c_float), intent(out) :: res + real(c_float), intent(out) :: res end subroutine subroutine gpu_dgeam_c(handle, transa, transb, m, n, alpha, a, lda, beta, & @@ -145,7 +145,7 @@ module gpu type(c_ptr), value, intent(in) :: handle character(c_char), intent(in), value :: transa, transb integer(c_int64_t), intent(in), value :: m, n, lda, ldb, ldc - real(c_double), intent(in), value :: alpha, beta + real(c_double), intent(in), value :: alpha, beta type(c_ptr), value :: a, b, c end subroutine @@ -155,10 +155,31 @@ module gpu type(c_ptr), value, intent(in) :: handle character(c_char), intent(in), value :: transa, transb integer(c_int64_t), intent(in), value :: m, n, lda, ldb, ldc - real(c_float), intent(in), value :: alpha, beta + real(c_float), intent(in), value :: alpha, beta real(c_float) :: a, b, c end subroutine + subroutine gpu_dgemv_c(handle, transa, m, n, alpha, a, lda, & + x, incx, beta, y, incy) bind(C, name='gpu_dgemv') + import + type(c_ptr), value, intent(in) :: handle + character(c_char), intent(in) :: transa + integer(c_int64_t), intent(in), value :: m, n, lda, incx, incy + real(c_double), intent(in), value :: alpha, beta + real(c_double) :: a, x, y + end subroutine + + subroutine gpu_sgemv_c(handle, transa, m, n, alpha, a, lda, & + x, incx, beta, y, incy) bind(C, name='gpu_sgemv') + import + type(c_ptr), value, intent(in) :: handle + character(c_char), intent(in) :: transa + integer(c_int64_t), intent(in), value :: m, n, lda, incx, incy + real(c_float), intent(in), value :: alpha, beta + real(c_float) :: a, x, y + end subroutine + + subroutine gpu_dgemm_c(handle, transa, transb, m, n, k, alpha, a, lda, & b, ldb, beta, c, ldc) bind(C, name='gpu_dgemm') import @@ -625,6 +646,36 @@ subroutine gpu_dgeam_64(handle, transa, transb, m, n, alpha, a, lda, beta, & end subroutine +! gemv +! ---- + +subroutine gpu_dgemv(handle, transa, m, n, alpha, a, lda, & + x, incx, beta, y, incy) +! use gpu + type(gpu_blas), intent(in) :: handle + character, intent(in) :: transa + integer*4, intent(in) :: m, n, lda, incx, incy + double precision, intent(in) :: alpha, beta + double precision :: a, x, y + call gpu_dgemv_c(handle%c, transa, int(m,c_int64_t), int(n,c_int64_t), & + alpha, a, int(lda,c_int64_t), & + x, int(incx,c_int64_t), beta, y, int(incy,c_int64_t)) +end subroutine + +subroutine gpu_dgemv_64(handle, transa, m, n, alpha, a, lda, & + x, incx, beta, y, incy) +! use gpu + type(gpu_blas), intent(in) :: handle + character, intent(in) :: transa + integer*8, intent(in) :: m, n, lda, incx, incy + double precision, intent(in) :: alpha, beta + double precision :: a, x, y + call gpu_dgemv_c(handle%c, transa, int(m,c_int64_t), int(n,c_int64_t), & + alpha, a, int(lda,c_int64_t), & + x, int(incx,c_int64_t), beta, y, int(incy,c_int64_t)) +end subroutine + + ! gemm ! ---- From 92fe3a6f84b0af99bf554602528969699c206cde Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 2 Jul 2024 18:36:19 +0200 Subject: [PATCH 110/159] Working on r1 --- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 37 ++++++++++++++++++++------ 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index 6190e985..e0048637 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -245,23 +245,44 @@ subroutine compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1,d_cc_s type(gpu_double4) :: X_voov call gpu_allocate(X_voov, nV, nO, nO, nV) + type(gpu_stream) :: stream(nV) + + do a=1,nV + call gpu_stream_create(stream(a)) + enddo + + call gpu_synchronize() + +! do i=1,nO +! do beta=1,nV +! call gpu_set_stream(blas_handle, stream(beta)) +! call gpu_dgeam(blas_handle, 'T', 'T', nV, nO, -1.d0, t2%f(1,i,1,beta), & +! nO*nO, t1%f(i,beta), t1%f(1,1), nO, X_voov%f(1,i,1,beta), nV) +! enddo +! enddo - !$omp parallel & - !$omp shared(nO,nV,X_voov,t2,t1) & - !$omp private(u,beta,i,a) & - !$omp default(none) - !$omp do do beta = 1, nV do u = 1, nO do i = 1, nO do a = 1, nV - X_voov%f(a,i,u,beta) = 2d0 * t2%f(i,u,a,beta) - t2%f(u,i,a,beta) + t1%f(u,a) * t1%f(i,beta) + X_voov%f(a,i,u,beta) = - t2%f(u,i,a,beta) + t1%f(u,a) * t1%f(i,beta) enddo enddo enddo enddo - !$omp end do - !$omp end parallel + call gpu_synchronize() + + do beta=1,nV + call gpu_set_stream(blas_handle, stream(beta)) + call gpu_dgeam(blas_handle, 'N', 'T', nV, nO*nO, 1.d0, X_voov%f(1,1,1,beta), & + nV, 2.d0, t2%f(1,1,1,beta), nO*nO, X_voov%f(1,1,1,beta), nV) + enddo + + call gpu_synchronize() + do a=1,nV + call gpu_stream_destroy(stream(a)) + enddo + call gpu_set_stream(blas_handle, gpu_default_stream) call gpu_dgemv(blas_handle, 'T', nV*nO, nO*nV, & 1d0, X_voov%f(1,1,1,1), size(X_voov%f,1) * size(X_voov%f,2), & From cc09f8c61a0e8a29e7d2a2933d9659c1ad70a7b5 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 3 Jul 2024 14:52:11 +0200 Subject: [PATCH 111/159] Minor changes in Cholesky --- src/ao_two_e_ints/cholesky.irp.f | 6 +++--- src/mo_two_e_ints/map_integrals.irp.f | 2 +- src/tools/four_idx_transform.irp.f | 3 +++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index acb0872b..a2d9d043 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -158,9 +158,9 @@ END_PROVIDER Lset(np8) = p8 endif enddo - np = np8 + if (np8 > ndim8) stop 'np>ndim8' + np = int(np8,4) if (np <= 0) stop 'np<=0' - if (np > ndim8) stop 'np>ndim8' rank_max = min(np,20*elec_num*elec_num) call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., .True., c_pointer(1)) @@ -431,7 +431,7 @@ END_PROVIDER Lset(np8) = p8 endif enddo - np = np8 + np = int(np8,4) enddo diff --git a/src/mo_two_e_ints/map_integrals.irp.f b/src/mo_two_e_ints/map_integrals.irp.f index 168c34b4..eeb4279f 100644 --- a/src/mo_two_e_ints/map_integrals.irp.f +++ b/src/mo_two_e_ints/map_integrals.irp.f @@ -40,7 +40,7 @@ end ! Min and max values of the MOs for which the integrals are in the cache END_DOC - mo_integrals_cache_size = 2_8**mo_integrals_cache_shift + mo_integrals_cache_size = 2**mo_integrals_cache_shift mo_integrals_cache_min = max(1,elec_alpha_num - (mo_integrals_cache_size/2 - 1) ) mo_integrals_cache_max = min(mo_num, mo_integrals_cache_min + mo_integrals_cache_size - 1) diff --git a/src/tools/four_idx_transform.irp.f b/src/tools/four_idx_transform.irp.f index 92e87cad..fc6bface 100644 --- a/src/tools/four_idx_transform.irp.f +++ b/src/tools/four_idx_transform.irp.f @@ -12,6 +12,9 @@ program four_idx_transform ! END_DOC + if (do_mo_cholesky) then + stop 'Not implemented with Cholesky integrals' + endif io_mo_two_e_integrals = 'Write' SOFT_TOUCH io_mo_two_e_integrals if (.true.) then From 2f8e7bd4f79108476bcc1b04165912d629d7d924 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 3 Jul 2024 15:32:38 +0200 Subject: [PATCH 112/159] Updated to read CHolesky MO integrals from TREXIO --- src/trexio/export_trexio_routines.irp.f | 2 +- src/trexio/import_trexio_integrals.irp.f | 226 ++++++++++++++++------- 2 files changed, 159 insertions(+), 69 deletions(-) diff --git a/src/trexio/export_trexio_routines.irp.f b/src/trexio/export_trexio_routines.irp.f index 63630243..0eec68bd 100644 --- a/src/trexio/export_trexio_routines.irp.f +++ b/src/trexio/export_trexio_routines.irp.f @@ -557,7 +557,7 @@ subroutine export_trexio(update,full_path) do k=1,cholesky_ao_num do j=1,mo_num do i=1,mo_num - integral = cholesky_mo(i,j,k) + integral = cholesky_mo_transp(k,i,j) if (integral == 0.d0) cycle icount += 1_8 chol_buffer(icount) = integral diff --git a/src/trexio/import_trexio_integrals.irp.f b/src/trexio/import_trexio_integrals.irp.f index 5a6b3c03..556ed7bc 100644 --- a/src/trexio/import_trexio_integrals.irp.f +++ b/src/trexio/import_trexio_integrals.irp.f @@ -28,7 +28,7 @@ subroutine run(f) integer(trexio_t), intent(in) :: f ! TREXIO file handle integer(trexio_exit_code) :: rc - integer ::i,j,k,l + integer :: i,j,k,l, iunit integer(8) :: m, n_integrals double precision :: integral @@ -41,10 +41,12 @@ subroutine run(f) integer , allocatable :: Vi(:,:) double precision :: s -! TODO: -! - If Cholesky AO in trexio file, read cholesky ao vectors -! - If Cholesky MO in trexio file, read cholesky mo vectors -! - If Cholesky MO not in trexio file, force do_cholesky_mo to False + integer*4 :: BUFSIZE + integer :: rank + double precision, allocatable :: tmp(:,:,:) + integer*8 :: offset, icount + + integer, external :: getUnitAndOpen if (trexio_has_nucleus_repulsion(f) == TREXIO_SUCCESS) then rc = trexio_read_nucleus_repulsion(f, s) @@ -120,45 +122,88 @@ subroutine run(f) rc = trexio_has_ao_2e_int(f) PROVIDE ao_num if (rc /= TREXIO_HAS_NOT) then - PROVIDE ao_integrals_map - integer*4 :: BUFSIZE - BUFSIZE=ao_num**2 - allocate(buffer_i(BUFSIZE), buffer_values(BUFSIZE)) - allocate(Vi(4,BUFSIZE), V(BUFSIZE)) + rc = trexio_has_ao_2e_int_eri_cholesky(f) + if (rc /= TREXIO_HAS_NOT) then - integer*8 :: offset, icount + rc = trexio_read_ao_2e_int_eri_cholesky_num(f, rank) + call trexio_assert(rc, TREXIO_SUCCESS) - offset = 0_8 - icount = BUFSIZE - rc = TREXIO_SUCCESS - do while (icount == size(V)) - rc = trexio_read_ao_2e_int_eri(f, offset, icount, Vi, V) - do m=1,icount - i = Vi(1,m) - j = Vi(2,m) - k = Vi(3,m) - l = Vi(4,m) - integral = V(m) - call two_e_integrals_index(i, j, k, l, buffer_i(m) ) - buffer_values(m) = integral - enddo - call insert_into_ao_integrals_map(int(icount,4),buffer_i,buffer_values) - offset = offset + icount - if (rc /= TREXIO_SUCCESS) then - exit - endif - end do - n_integrals = offset + allocate(tmp(ao_num,ao_num,rank)) + tmp(:,:,:) = 0.d0 - call map_sort(ao_integrals_map) - call map_unique(ao_integrals_map) + BUFSIZE=ao_num**2 + allocate(Vi(3,BUFSIZE), V(BUFSIZE)) - call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints',ao_integrals_map) - call ezfio_set_ao_two_e_ints_io_ao_two_e_integrals('Read') - deallocate(buffer_i, buffer_values, Vi, V) - print *, 'AO integrals read from TREXIO file' + offset = 0_8 + icount = BUFSIZE + rc = TREXIO_SUCCESS + do while (icount == size(V)) + rc = trexio_read_ao_2e_int_eri_cholesky(f, offset, icount, Vi, V) + do m=1,icount + i = Vi(1,m) + j = Vi(2,m) + k = Vi(3,m) + integral = V(m) + tmp(i,j,k) = integral + enddo + offset = offset + icount + if (rc /= TREXIO_SUCCESS) then + exit + endif + end do + + print *, 'Writing Cholesky AO vectors to disk...' + iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_ao', 'W') + write(iunit) rank + write(iunit) tmp(:,:,:) + close(iunit) + call ezfio_set_ao_two_e_ints_io_ao_cholesky('Read') + + deallocate(Vi, V, tmp) + print *, 'Cholesky AO integrals read from TREXIO file' + endif + + rc = trexio_has_ao_2e_int_eri(f) + if (rc /= TREXIO_HAS_NOT) then + PROVIDE ao_integrals_map + + BUFSIZE=ao_num**2 + allocate(buffer_i(BUFSIZE), buffer_values(BUFSIZE)) + allocate(Vi(4,BUFSIZE), V(BUFSIZE)) + + offset = 0_8 + icount = BUFSIZE + rc = TREXIO_SUCCESS + do while (icount == size(V)) + rc = trexio_read_ao_2e_int_eri(f, offset, icount, Vi, V) + do m=1,icount + i = Vi(1,m) + j = Vi(2,m) + k = Vi(3,m) + l = Vi(4,m) + integral = V(m) + call two_e_integrals_index(i, j, k, l, buffer_i(m) ) + buffer_values(m) = integral + enddo + call insert_into_ao_integrals_map(int(icount,4),buffer_i,buffer_values) + offset = offset + icount + if (rc /= TREXIO_SUCCESS) then + exit + endif + end do + n_integrals = offset + + call map_sort(ao_integrals_map) + call map_unique(ao_integrals_map) + + call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints',ao_integrals_map) + call ezfio_set_ao_two_e_ints_io_ao_two_e_integrals('Read') + + deallocate(buffer_i, buffer_values, Vi, V) + print *, 'AO integrals read from TREXIO file' + endif else print *, 'AO integrals not found in TREXIO file' endif @@ -186,40 +231,85 @@ subroutine run(f) rc = trexio_has_mo_2e_int(f) if (rc /= TREXIO_HAS_NOT) then - BUFSIZE=mo_num**2 - allocate(buffer_i(BUFSIZE), buffer_values(BUFSIZE)) - allocate(Vi(4,BUFSIZE), V(BUFSIZE)) + rc = trexio_has_mo_2e_int_eri_cholesky(f) + if (rc /= TREXIO_HAS_NOT) then + + rc = trexio_read_mo_2e_int_eri_cholesky_num(f, rank) + call trexio_assert(rc, TREXIO_SUCCESS) + + allocate(tmp(rank,mo_num,mo_num)) + tmp(:,:,:) = 0.d0 + + BUFSIZE=mo_num**2 + allocate(Vi(3,BUFSIZE), V(BUFSIZE)) + + offset = 0_8 + icount = BUFSIZE + rc = TREXIO_SUCCESS + do while (icount == size(V)) + rc = trexio_read_mo_2e_int_eri_cholesky(f, offset, icount, Vi, V) + do m=1,icount + i = Vi(1,m) + j = Vi(2,m) + k = Vi(3,m) + integral = V(m) + tmp(k,i,j) = integral + enddo + offset = offset + icount + if (rc /= TREXIO_SUCCESS) then + exit + endif + end do + + print *, 'Writing Cholesky MO vectors to disk...' + iunit = getUnitAndOpen(trim(ezfio_work_dir)//'cholesky_mo_transp', 'W') + write(iunit) rank + write(iunit) tmp(:,:,:) + close(iunit) + call ezfio_set_mo_two_e_ints_io_mo_cholesky('Read') + + deallocate(Vi, V, tmp) + print *, 'Cholesky MO integrals read from TREXIO file' + endif + + rc = trexio_has_mo_2e_int_eri(f) + if (rc /= TREXIO_HAS_NOT) then + BUFSIZE=mo_num**2 + allocate(buffer_i(BUFSIZE), buffer_values(BUFSIZE)) + allocate(Vi(4,BUFSIZE), V(BUFSIZE)) - offset = 0_8 - icount = BUFSIZE - rc = TREXIO_SUCCESS - do while (icount == size(V)) - rc = trexio_read_mo_2e_int_eri(f, offset, icount, Vi, V) - do m=1,icount - i = Vi(1,m) - j = Vi(2,m) - k = Vi(3,m) - l = Vi(4,m) - integral = V(m) - call two_e_integrals_index(i, j, k, l, buffer_i(m) ) - buffer_values(m) = integral - enddo - call map_append(mo_integrals_map, buffer_i, buffer_values, int(icount,4)) - offset = offset + icount - if (rc /= TREXIO_SUCCESS) then - exit - endif - end do - n_integrals = offset + offset = 0_8 + icount = BUFSIZE + rc = TREXIO_SUCCESS + do while (icount == size(V)) + rc = trexio_read_mo_2e_int_eri(f, offset, icount, Vi, V) + do m=1,icount + i = Vi(1,m) + j = Vi(2,m) + k = Vi(3,m) + l = Vi(4,m) + integral = V(m) + call two_e_integrals_index(i, j, k, l, buffer_i(m) ) + buffer_values(m) = integral + enddo + call map_append(mo_integrals_map, buffer_i, buffer_values, int(icount,4)) + offset = offset + icount + if (rc /= TREXIO_SUCCESS) then + exit + endif + end do + n_integrals = offset - call map_sort(mo_integrals_map) - call map_unique(mo_integrals_map) + call map_sort(mo_integrals_map) + call map_unique(mo_integrals_map) + + call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints',mo_integrals_map) + call ezfio_set_mo_two_e_ints_io_mo_two_e_integrals('Read') + deallocate(buffer_i, buffer_values, Vi, V) + print *, 'MO integrals read from TREXIO file' + endif - call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints',mo_integrals_map) - call ezfio_set_mo_two_e_ints_io_mo_two_e_integrals('Read') - deallocate(buffer_i, buffer_values, Vi, V) - print *, 'MO integrals read from TREXIO file' else print *, 'MO integrals not found in TREXIO file' endif From 7ceb8fdcca5cd7bff3984c816eef8e47aa681a0b Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 3 Jul 2024 18:24:13 +0200 Subject: [PATCH 113/159] Finished r1 --- plugins/local/gpu_nvidia/gpu.c | 41 +++--- plugins/local/gpu_x86/gpu.c | 112 ++++++++-------- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 177 ++++++++++--------------- src/gpu/gpu.h | 24 ++-- src/gpu/gpu_module.F90 | 12 +- 5 files changed, 162 insertions(+), 204 deletions(-) diff --git a/plugins/local/gpu_nvidia/gpu.c b/plugins/local/gpu_nvidia/gpu.c index e77847a6..a775ab95 100644 --- a/plugins/local/gpu_nvidia/gpu.c +++ b/plugins/local/gpu_nvidia/gpu.c @@ -116,11 +116,6 @@ void gpu_ddot(cublasHandle_t handle, const int64_t n, const double* x, const int assert ( (int64_t) incy_ == incy); cublasStatus_t rc = cublasDdot(handle, n_, x, incx_, y, incy_, result); -/* - double alpha = 1.0; - double beta = 0.0; - cublasStatus_t rc = cublasDgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, 1, 1, n_, &alpha, x, 1, y, n_, &beta, &result_, 1); -*/ assert (rc == CUBLAS_STATUS_SUCCESS); } @@ -149,8 +144,8 @@ void gpu_sdot(cublasHandle_t handle, const int64_t n, const float* x, const int6 -void gpu_dgemv(cublasHandle_t handle, const char* transa, const int64_t m, const int64_t n, const double alpha, - const double* a, const int64_t lda, const double* x, const int64_t incx, const double beta, double* y, const int64_t incy) { +void gpu_dgemv(cublasHandle_t handle, const char* transa, const int64_t m, const int64_t n, const double* alpha, + const double* a, const int64_t lda, const double* x, const int64_t incx, const double* beta, double* y, const int64_t incy) { assert (handle != NULL); @@ -173,13 +168,13 @@ void gpu_dgemv(cublasHandle_t handle, const char* transa, const int64_t m, const cublasOperation_t transa_ = CUBLAS_OP_N; if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; - cublasDgemv(handle, transa_, m_, n_, &alpha, a, lda_, x, incx_, &beta, y, incy_); + cublasDgemv(handle, transa_, m_, n_, alpha, a, lda_, x, incx_, beta, y, incy_); } -void gpu_sgemv(cublasHandle_t handle, const char* transa, const int64_t m, const int64_t n, const float alpha, - const float* a, const int64_t lda, const float* x, const int64_t incx, const float beta, float* y, const int64_t incy) { +void gpu_sgemv(cublasHandle_t handle, const char* transa, const int64_t m, const int64_t n, const float* alpha, + const float* a, const int64_t lda, const float* x, const int64_t incx, const float* beta, float* y, const int64_t incy) { assert (handle != NULL); @@ -202,12 +197,12 @@ void gpu_sgemv(cublasHandle_t handle, const char* transa, const int64_t m, const cublasOperation_t transa_ = CUBLAS_OP_N; if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; - cublasSgemv(handle, transa_, m_, n_, &alpha, a, lda_, x, incx_, &beta, y, incy_); + cublasSgemv(handle, transa_, m_, n_, alpha, a, lda_, x, incx_, beta, y, incy_); } -void gpu_dgemm(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, - const double* a, const int64_t lda, const double* b, const int64_t ldb, const double beta, double* c, const int64_t ldc) { +void gpu_dgemm(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const double* alpha, + const double* a, const int64_t lda, const double* b, const int64_t ldb, const double* beta, double* c, const int64_t ldc) { assert (handle != NULL); @@ -234,13 +229,13 @@ void gpu_dgemm(cublasHandle_t handle, const char* transa, const char* transb, co if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; if (*transb == 'T' || *transb == 't') transb_ = CUBLAS_OP_T; - cublasDgemm(handle, transa_, transb_, m_, n_, k_, &alpha, a, lda_, b, ldb_, &beta, c, ldc_); + cublasDgemm(handle, transa_, transb_, m_, n_, k_, alpha, a, lda_, b, ldb_, beta, c, ldc_); } -void gpu_sgemm(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, - const float* a, const int64_t lda, const float* b, const int64_t ldb, const float beta, float* c, const int64_t ldc) { +void gpu_sgemm(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const float* alpha, + const float* a, const int64_t lda, const float* b, const int64_t ldb, const float* beta, float* c, const int64_t ldc) { assert (handle != NULL); @@ -267,12 +262,12 @@ void gpu_sgemm(cublasHandle_t handle, const char* transa, const char* transb, co if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; if (*transb == 'T' || *transb == 't') transb_ = CUBLAS_OP_T; - cublasSgemm(handle, transa_, transb_, m_, n_, k_, &alpha, a, lda_, b, ldb_, &beta, c, ldc_); + cublasSgemm(handle, transa_, transb_, m_, n_, k_, alpha, a, lda_, b, ldb_, beta, c, ldc_); } -void gpu_dgeam(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const double alpha, - const double* a, const int64_t lda, const double beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { +void gpu_dgeam(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const double* alpha, + const double* a, const int64_t lda, const double* beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { assert (handle != NULL); /* Convert to int */ @@ -296,13 +291,13 @@ void gpu_dgeam(cublasHandle_t handle, const char* transa, const char* transb, co if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; if (*transb == 'T' || *transb == 't') transb_ = CUBLAS_OP_T; - cublasDgeam(handle, transa_, transb_, m_, n_, &alpha, a, lda_, &beta, b, ldb_, c, ldc_); + cublasDgeam(handle, transa_, transb_, m_, n_, alpha, a, lda_, beta, b, ldb_, c, ldc_); } -void gpu_sgeam(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const float alpha, - const float* a, const int64_t lda, const float beta, const float* b, const int64_t ldb, float* c, const int64_t ldc) { +void gpu_sgeam(cublasHandle_t handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const float* alpha, + const float* a, const int64_t lda, const float* beta, const float* b, const int64_t ldb, float* c, const int64_t ldc) { assert (handle != NULL); /* Convert to int */ @@ -326,6 +321,6 @@ void gpu_sgeam(cublasHandle_t handle, const char* transa, const char* transb, co if (*transa == 'T' || *transa == 't') transa_ = CUBLAS_OP_T; if (*transb == 'T' || *transb == 't') transb_ = CUBLAS_OP_T; - cublasSgeam(handle, transa_, transb_, m_, n_, &alpha, a, lda_, &beta, b, ldb_, c, ldc_); + cublasSgeam(handle, transa_, transb_, m_, n_, alpha, a, lda_, beta, b, ldb_, c, ldc_); } diff --git a/plugins/local/gpu_x86/gpu.c b/plugins/local/gpu_x86/gpu.c index fe3cadc5..49aec9d3 100644 --- a/plugins/local/gpu_x86/gpu.c +++ b/plugins/local/gpu_x86/gpu.c @@ -124,8 +124,8 @@ void gpu_sdot(void* handle, const int64_t n, const float* x, const int64_t incx, void dgemv_(const char* transa, const int32_t* m, const int32_t* n, const double* alpha, const double* a, const int32_t* lda, const double* x, const int32_t* incx, const double* beta, double* y, const int32_t* incy); -void gpu_dgemv(void* handle, const char* transa, const int64_t m, const int64_t n, const double alpha, - const double* a, const int64_t lda, const double* x, const int64_t incx, const double beta, double* y, const int64_t incy) { +void gpu_dgemv(void* handle, const char* transa, const int64_t m, const int64_t n, const double* alpha, + const double* a, const int64_t lda, const double* x, const int64_t incx, const double* beta, double* y, const int64_t incy) { assert (handle != NULL); @@ -145,15 +145,15 @@ void gpu_dgemv(void* handle, const char* transa, const int64_t m, const int64_t assert ( (int64_t) incx_ == incx); assert ( (int64_t) incy_ == incy); - dgemv_(transa, &m_, &n_, &alpha, a, &lda_, x, &incx_, &beta, y, &incy_); + dgemv_(transa, &m_, &n_, alpha, a, &lda_, x, &incx_, beta, y, &incy_); } void sgemv_(const char* transa, const int32_t* m, const int32_t* n, const float* alpha, const float* a, const int32_t* lda, const float* x, const int32_t* incx, const float* beta, float* y, const int32_t* incy); -void gpu_sgemv(void* handle, const char* transa, const int64_t m, const int64_t n, const float alpha, - const float* a, const int64_t lda, const float* x, const int64_t incx, const float beta, float* y, const int64_t incy) { +void gpu_sgemv(void* handle, const char* transa, const int64_t m, const int64_t n, const float* alpha, + const float* a, const int64_t lda, const float* x, const int64_t incx, const float* beta, float* y, const int64_t incy) { assert (handle != NULL); @@ -173,15 +173,15 @@ void gpu_sgemv(void* handle, const char* transa, const int64_t m, const int64_t assert ( (int64_t) incx_ == incx); assert ( (int64_t) incy_ == incy); - sgemv_(transa, &m_, &n_, &alpha, a, &lda_, x, &incx_, &beta, y, &incy_); + sgemv_(transa, &m_, &n_, alpha, a, &lda_, x, &incx_, beta, y, &incy_); } void dgemm_(const char* transa, const char* transb, const int32_t* m, const int32_t* n, const int32_t* k, const double* alpha, const double* a, const int32_t* lda, const double* b, const int32_t* ldb, const double* beta, double* c, const int32_t* ldc); -void gpu_dgemm(void* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const double alpha, - const double* a, const int64_t lda, const double* b, const int64_t ldb, const double beta, double* c, const int64_t ldc) { +void gpu_dgemm(void* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const double* alpha, + const double* a, const int64_t lda, const double* b, const int64_t ldb, const double* beta, double* c, const int64_t ldc) { assert (handle != NULL); @@ -203,7 +203,7 @@ void gpu_dgemm(void* handle, const char* transa, const char* transb, const int64 assert ( (int64_t) ldb_ == ldb); assert ( (int64_t) ldc_ == ldc); - dgemm_(transa, transb, &m_, &n_, &k_, &alpha, a, &lda_, b, &ldb_, &beta, c, &ldc_); + dgemm_(transa, transb, &m_, &n_, &k_, alpha, a, &lda_, b, &ldb_, beta, c, &ldc_); } @@ -211,8 +211,8 @@ void gpu_dgemm(void* handle, const char* transa, const char* transb, const int64 void sgemm_(const char* transa, const char* transb, const int32_t* m, const int32_t* n, const int32_t* k, const float* alpha, const float* a, const int32_t* lda, const float* b, const int32_t* ldb, const float* beta, float* c, const int32_t* ldc); -void gpu_sgemm(void* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const float alpha, - const float* a, const int64_t lda, const float* b, const int64_t ldb, const float beta, float* c, const int64_t ldc) { +void gpu_sgemm(void* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const float* alpha, + const float* a, const int64_t lda, const float* b, const int64_t ldb, const float* beta, float* c, const int64_t ldc) { assert (handle != NULL); @@ -234,12 +234,12 @@ void gpu_sgemm(void* handle, const char* transa, const char* transb, const int64 assert ( (int64_t) ldb_ == ldb); assert ( (int64_t) ldc_ == ldc); - sgemm_(transa, transb, &m_, &n_, &k_, &alpha, a, &lda_, b, &ldb_, &beta, c, &ldc_); + sgemm_(transa, transb, &m_, &n_, &k_, alpha, a, &lda_, b, &ldb_, beta, c, &ldc_); } -void gpu_dgeam(void* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const double alpha, - const double* a, const int64_t lda, const double beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { +void gpu_dgeam(void* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const double* alpha, + const double* a, const int64_t lda, const double* beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { assert (handle != NULL); if ( (*transa == 'N' && *transb == 'N') || @@ -247,19 +247,19 @@ void gpu_dgeam(void* handle, const char* transa, const char* transb, const int64 (*transa == 'N' && *transb == 'n') || (*transa == 'n' && *transb == 'n') ) { - if (alpha == 0.) { + if (*alpha == 0.) { for (int64_t j=0 ; j Date: Thu, 4 Jul 2024 12:01:16 +0200 Subject: [PATCH 114/159] Working on r2 --- src/ccsd/ccsd_space_orb_sub.irp.f | 27 +- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 353 +++++++++++++------------ 2 files changed, 200 insertions(+), 180 deletions(-) diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 256f743b..59b9ebd2 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -21,7 +21,8 @@ subroutine run_ccsd_space_orb type(gpu_double3) :: d_cc_space_v_ov_chol, d_cc_space_v_vv_chol type(gpu_double4) :: d_cc_space_v_oovv, d_cc_space_v_voov, d_cc_space_v_ovov - type(gpu_double4) :: d_cc_space_v_oovo + type(gpu_double4) :: d_cc_space_v_oovo, d_cc_space_v_vooo, d_cc_space_v_oooo + type(gpu_double4) :: d_cc_space_v_vvoo double precision, allocatable :: all_err(:,:), all_t(:,:) integer, allocatable :: list_occ(:), list_vir(:) @@ -93,17 +94,29 @@ subroutine run_ccsd_space_orb ! FREE cc_space_v_vv_chol endif + call gpu_allocate(d_cc_space_v_oovv, nO, nO, nV, nV) call gpu_allocate(d_cc_space_v_voov, nV, nO, nO, nV) call gpu_allocate(d_cc_space_v_ovov, nO, nV, nO, nV) call gpu_allocate(d_cc_space_v_oovo, nO, nO, nV, nO) + call gpu_allocate(d_cc_space_v_vooo, nV, nO, nO, nO) + call gpu_allocate(d_cc_space_v_oooo, nO, nO, nO, nO) + call gpu_allocate(d_cc_space_v_vvoo, nV, nV, nO, nO) + call gpu_upload(cc_space_v_oovv, d_cc_space_v_oovv) call gpu_upload(cc_space_v_voov, d_cc_space_v_voov) call gpu_upload(cc_space_v_ovov, d_cc_space_v_ovov) call gpu_upload(cc_space_v_oovo, d_cc_space_v_oovo) + call gpu_upload(cc_space_v_vooo, d_cc_space_v_vooo) + call gpu_upload(cc_space_v_oooo, d_cc_space_v_oooo) + call gpu_upload(cc_space_v_vvoo, d_cc_space_v_vvoo) ! FREE cc_space_v_voov ! FREE cc_space_v_ovov ! FREE cc_space_v_oovo +! FREE cc_space_v_oovv +! FREE cc_space_v_vooo +! FREE cc_space_v_oooo +! FREE cc_space_v_vvoo call gpu_allocate(t2, nO,nO,nV,nV) call gpu_allocate(r2, nO,nO,nV,nV) @@ -165,15 +178,8 @@ subroutine run_ccsd_space_orb call gpu_upload(h_t2, t2) - call gpu_allocate(d_cc_space_v_oovv, nO, nO, nV, nV) - call gpu_upload(cc_space_v_oovv, d_cc_space_v_oovv) - -! FREE cc_space_v_oovv - - call update_tau_space(nO,nV,h_t1,t1,t2,tau) call update_tau_x_space(nO,nV,tau,tau_x) - !print*,'hf_energy', hf_energy call det_energy(det,uncorr_energy) print*,'Det energy', uncorr_energy @@ -200,7 +206,10 @@ subroutine run_ccsd_space_orb call compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1,d_cc_space_f_ov,d_cc_space_f_vo, & d_cc_space_v_voov, d_cc_space_v_ovov, d_cc_space_v_oovo, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol) - call compute_r2_space_chol(nO,nV,t1%f,t2%f,tau%f,H_oo%F,H_vv%F,H_vo%F,r2%f,max_r2) + call compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & + d_cc_space_v_oovv, d_cc_space_v_vooo, d_cc_space_v_oooo, & + d_cc_space_v_vvoo, d_cc_space_v_ov_chol, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol, & + r2, max_r2) else call compute_H_oo(nO,nV,t1%f,t2%f,tau%f,H_oo%f) call compute_H_vv(nO,nV,t1%f,t2%f,tau%f,H_vv%f) diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index c34b390b..0474dcec 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -391,168 +391,162 @@ end ! R2 -subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) - +subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & + d_cc_space_v_oovv, d_cc_space_v_vooo, d_cc_space_v_oooo, & + d_cc_space_v_vvoo, d_cc_space_v_ov_chol, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol, & + r2,max_r2) + use gpu implicit none ! in - integer, intent(in) :: nO, nV - double precision, intent(in) :: t1(nO,nV), t2(nO,nO,nV,nV), tau(nO,nO,nV,nV) - double precision, intent(in) :: H_oo(nO,nO), H_vv(nV,nV), H_vo(nV,nO) + integer, intent(in) :: nO, nV + type(gpu_double2), intent(in) :: t1, H_oo, H_vv + type(gpu_double4), intent(in) :: t2, tau, d_cc_space_v_oovv + type(gpu_double4), intent(in) :: d_cc_space_v_vooo, d_cc_space_v_oooo + type(gpu_double4), intent(in) :: d_cc_space_v_vvoo + type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol, d_cc_space_v_vv_chol + type(gpu_double3), intent(in) :: d_cc_space_v_vo_chol ! out - double precision, intent(out) :: r2(nO,nO,nV,nV), max_r2 + double precision, intent(out) :: max_r2 + type(gpu_double4), intent(out) :: r2 ! internal integer :: u,v,i,j,beta,gam,a,b double precision :: max_r2_local + type(gpu_stream) :: stream(nV) + call set_multiple_levels_omp(.False.) - !$omp parallel & - !$omp shared(nO,nV,r2,cc_space_v_oovv) & - !$omp private(u,v,gam,beta) & - !$omp default(none) - !$omp do - do gam = 1, nV - do beta = 1, nV - do v = 1, nO - do u = 1, nO - r2(u,v,beta,gam) = cc_space_v_oovv(u,v,beta,gam) - enddo - enddo - enddo - enddo - !$omp end do - !$omp end parallel + call gpu_copy(d_cc_space_v_oovv, r2) - double precision, allocatable :: A1(:,:,:,:) - allocate(A1(nO,nO,nO,nO)) - call compute_A1_chol(nO,nV,t1,t2,tau,A1) - call dgemm('N','N',nO*nO,nV*nV,nO*nO, & - 1d0, A1, size(A1,1) * size(A1,2), & - tau, size(tau,1) * size(tau,2), & - 1d0, r2, size(r2,1) * size(r2,2)) + type(gpu_double4) :: A1 + call gpu_allocate(A1,nO,nO,nO,nO) + call compute_A1_chol(nO,nV,t1,t2,tau,d_cc_space_v_vooo, & + d_cc_space_v_oooo, d_cc_space_v_vvoo, A1) + + call gpu_dgemm(blas_handle, 'N','N',nO*nO,nV*nV,nO*nO, & + 1d0, A1%f(1,1,1,1), size(A1%f,1) * size(A1%f,2), & + tau%f(1,1,1,1), size(tau%f,1) * size(tau%f,2), & + 1d0, r2%f(1,1,1,1), size(r2%f,1) * size(r2%f,2)) + + call gpu_deallocate(A1) - deallocate(A1) integer :: block_size, iblock, k block_size = 16 - double precision, dimension(:,:,:), allocatable :: B1, tmp_cc, tmpB1 - double precision, dimension(:,:), allocatable :: tmp_cc2 + type(gpu_double3) :: tmp_cc, B1, tmpB1 + type(gpu_double2) :: tmp_cc2 - allocate(tmp_cc(cholesky_mo_num,nV,nV)) - call dgemm('N','N', cholesky_mo_num*nV, nV, nO, 1.d0, & - cc_space_v_vo_chol, cholesky_mo_num*nV, t1, nO, 0.d0, tmp_cc, cholesky_mo_num*nV) + call gpu_allocate(tmp_cc,cholesky_mo_num,nV,nV) + call gpu_dgemm(blas_handle, 'N','N', cholesky_mo_num*nV, nV, nO, 1.d0, & + d_cc_space_v_vo_chol%f(1,1,1), cholesky_mo_num*nV, t1%f(1,1), nO, 0.d0, tmp_cc%f(1,1,1), cholesky_mo_num*nV) call set_multiple_levels_omp(.False.) + call gpu_synchronize() + + type(gpu_blas) :: blas + + !$OMP PARALLEL PRIVATE(gam, iblock, B1, tmpB1, tmp_cc2, beta, b, a, blas) + call gpu_allocate(B1,nV,nV,block_size) + call gpu_allocate(tmpB1,nV,block_size,nV) + call gpu_allocate(tmp_cc2,cholesky_mo_num,nV) + + call gpu_blas_create(blas) - !$OMP PARALLEL PRIVATE(gam, iblock, B1, tmpB1, tmp_cc2, beta, b, a) - allocate(B1(nV,nV,block_size), tmpB1(nV,block_size,nV), tmp_cc2(cholesky_mo_num,nV)) !$OMP DO do gam = 1, nV - do a=1,nV - do k=1,cholesky_mo_num - tmp_cc2(k,a) = cc_space_v_vv_chol(k,a,gam) - tmp_cc(k,a,gam) - enddo - enddo + call gpu_dgeam(blas, 'N', 'N', cholesky_mo_num, nV, 1.d0, d_cc_space_v_vv_chol%f(1,1,gam), & + cholesky_mo_num, -1.d0, tmp_cc%f(1,1,gam), cholesky_mo_num, tmp_cc2%f(1,1), cholesky_mo_num) do iblock = 1, nV, block_size - call dgemm('T', 'N', nV*min(block_size, nV-iblock+1), nV, cholesky_mo_num, & - -1.d0, tmp_cc(1,1,iblock), cholesky_mo_num, & - cc_space_v_vv_chol(1,1,gam), cholesky_mo_num, & - 0.d0, tmpB1, nV*block_size) + call gpu_dgemm(blas, 'T', 'N', nV*min(block_size, nV-iblock+1), nV, cholesky_mo_num, & + -1.d0, tmp_cc%f(1,1,iblock), cholesky_mo_num, & + d_cc_space_v_vv_chol%f(1,1,gam), cholesky_mo_num, & + 0.d0, tmpB1%f(1,1,1), nV*block_size) - call dgemm('T','N', nV*min(block_size, nV-iblock+1), nV, cholesky_mo_num, & - 1.d0, cc_space_v_vv_chol(1,1,iblock), cholesky_mo_num, & - tmp_cc2, cholesky_mo_num, & - 1.d0, tmpB1, nV*block_size) + call gpu_dgemm(blas, 'T','N', nV*min(block_size, nV-iblock+1), nV, cholesky_mo_num, & + 1.d0, d_cc_space_v_vv_chol%f(1,1,iblock), cholesky_mo_num, & + tmp_cc2%f(1,1), cholesky_mo_num, & + 1.d0, tmpB1%f(1,1,1), nV*block_size) do beta = iblock, min(nV, iblock+block_size-1) - do b = 1, nV - do a = 1, nV - B1(a,b,beta-iblock+1) = tmpB1(a,beta-iblock+1,b) - enddo - enddo + call gpu_dgeam(blas, 'N', 'N', nV, nV, 1.d0, tmpB1%f(1,beta-iblock+1,1), & + nV*block_size, 0.d0, B1%f(1,1,beta-iblock+1), nV, B1%f(1,1,beta-iblock+1), nV) enddo - call dgemm('N','N',nO*nO,min(block_size, nV-iblock+1),nV*nV, & - 1d0, tau, size(tau,1) * size(tau,2), & - B1 , size(B1 ,1) * size(B1 ,2), & - 1d0, r2(1,1,iblock,gam), size(r2 ,1) * size(r2 ,2)) + call gpu_dgemm(blas, 'N','N',nO*nO,min(block_size, nV-iblock+1),nV*nV, & + 1d0, tau%f(1,1,1,1), size(tau%f,1) * size(tau%f,2), & + B1%f(1,1,1) , size(B1%f ,1) * size(B1%f ,2), & + 1d0, r2%f(1,1,iblock,gam), size(r2%f ,1) * size(r2%f ,2)) enddo enddo !$OMP ENDDO - deallocate(B1, tmpB1, tmp_cc2) + call gpu_blas_destroy(blas) + + call gpu_deallocate(B1) + call gpu_deallocate(tmpB1) + call gpu_deallocate(tmp_cc2) !$OMP END PARALLEL - deallocate(tmp_cc) + call gpu_deallocate(tmp_cc) + type(gpu_double4) :: X_oovv + call gpu_allocate(X_oovv,nO,nO,nV,nV) + call gpu_copy(t2,X_oovv) - double precision, allocatable :: X_oovv(:,:,:,:) - allocate(X_oovv(nO,nO,nV,nV)) - !$omp parallel & - !$omp shared(nO,nV,t2,X_oovv) & - !$omp private(u,v,gam,a) & - !$omp default(none) - !$omp do - do a = 1, nV - do gam = 1, nV - do v = 1, nO - do u = 1, nO - X_oovv(u,v,gam,a) = t2(u,v,gam,a) - enddo - enddo - enddo + type(gpu_double2) :: g_vir + call gpu_allocate(g_vir,nV,nV) + call compute_g_vir_chol(nO,nV,t1%f,t2%f,H_vv%f,g_vir%f) + + type(gpu_double4) :: Y_oovv + call gpu_allocate(Y_oovv,nO,nO,nV,nV) + + call gpu_dgemm(blas_handle, 'N','N',nO*nO*nV,nV,nV, & + 1d0, X_oovv%f(1,1,1,1), size(X_oovv%f,1) * size(X_oovv%f,2) * size(X_oovv%f,3), & + g_vir%f(1,1), size(g_vir%f,1), & + 0d0, Y_oovv%f(1,1,1,1), size(Y_oovv%f,1) * size(Y_oovv%f,2) * size(Y_oovv%f,3)) + + call gpu_synchronize() + + do a=1,nV + call gpu_stream_create(stream(a)) enddo - !$omp end do - !$omp end parallel - double precision, allocatable :: g_vir(:,:) - allocate(g_vir(nV,nV)) - call compute_g_vir_chol(nO,nV,t1,t2,H_vv,g_vir) - - double precision, allocatable :: Y_oovv(:,:,:,:) - allocate(Y_oovv(nO,nO,nV,nV)) - - call dgemm('N','N',nO*nO*nV,nV,nV, & - 1d0, X_oovv, size(X_oovv,1) * size(X_oovv,2) * size(X_oovv,3), & - g_vir, size(g_vir,1), & - 0d0, Y_oovv, size(Y_oovv,1) * size(Y_oovv,2) * size(Y_oovv,3)) - deallocate(g_vir) - deallocate(X_oovv) - - !$omp parallel & - !$omp shared(nO,nV,r2,Y_oovv) & - !$omp private(u,v,gam,beta) & - !$omp default(none) - !$omp do do gam = 1, nV do beta = 1, nV - do v = 1, nO - do u = 1, nO - r2(u,v,beta,gam) = r2(u,v,beta,gam) + Y_oovv(u,v,beta,gam) + Y_oovv(v,u,gam,beta) - enddo - enddo + call gpu_set_stream(blas_handle, stream(beta)) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nO, 1.d0, Y_oovv%f(1,1,beta,gam), & + nO, 1.d0, r2%f(1,1,beta,gam), nO, r2%f(1,1,beta,gam), nO) + call gpu_dgeam(blas_handle, 'N', 'T', nO, nO, 1.d0, r2%f(1,1,beta,gam), & + nO, 1.d0, Y_oovv%f(1,1,gam,beta), nO, r2%f(1,1,beta,gam), nO) enddo enddo - !$omp end do - !$omp end parallel - deallocate(Y_oovv) - double precision, allocatable :: g_occ(:,:) - allocate(g_occ(nO,nO)) - call compute_g_occ_chol(nO,nV,t1,t2,H_oo,g_occ) + call gpu_deallocate(g_vir) + call gpu_set_stream(blas_handle, gpu_default_stream) - allocate(X_oovv(nO,nO,nV,nV)) - call dgemm('N','N',nO,nO*nV*nV,nO, & - 1d0, g_occ , size(g_occ,1), & - t2 , size(t2,1), & - 0d0, X_oovv, size(X_oovv,1)) - deallocate(g_occ) + do a=1,nV + call gpu_stream_destroy(stream(a)) + enddo + + call gpu_deallocate(Y_oovv) + + type(gpu_double2) :: g_occ + call gpu_allocate(g_occ,nO,nO) + + call compute_g_occ_chol(nO,nV,t1%f,t2%f,H_oo%f,g_occ%f) + + call gpu_dgemm(blas_handle, 'N','N',nO,nO*nV*nV,nO, & + 1d0, g_occ%f(1,1), size(g_occ%f,1), & + t2%f(1,1,1,1) , size(t2%f,1), & + 0d0, X_oovv%f(1,1,1,1), size(X_oovv%f,1)) + + call gpu_synchronize() !$omp parallel & !$omp shared(nO,nV,r2,X_oovv) & @@ -563,7 +557,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do beta = 1, nV do v = 1, nO do u = 1, nO - r2(u,v,beta,gam) = r2(u,v,beta,gam) - X_oovv(u,v,beta,gam) - X_oovv(v,u,gam,beta) + r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - X_oovv%f(u,v,beta,gam) - X_oovv%f(v,u,gam,beta) enddo enddo enddo @@ -571,27 +565,39 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) !$omp end do !$omp end parallel - deallocate(X_oovv) + call gpu_deallocate(g_occ) + call gpu_deallocate(X_oovv) - double precision, allocatable :: X_vovv(:,:,:,:) + type(gpu_double4) :: X_vovv + + call gpu_allocate(X_vovv,nV,nO,nV,block_size) + call gpu_allocate(Y_oovv,nO,nO,nV,nV) - allocate(X_vovv(nV,nO,nV,block_size)) - allocate(Y_oovv(nO,nO,nV,nV)) do iblock = 1, nV, block_size do gam = iblock, min(nV, iblock+block_size-1) - call dgemm('T','N',nV, nO*nV, cholesky_mo_num, 1.d0, & - cc_space_v_vv_chol(1,1,gam), cholesky_mo_num, cc_space_v_ov_chol, & - cholesky_mo_num, 0.d0, X_vovv(1,1,1,gam-iblock+1), nV) + call gpu_stream_create(stream(gam)) + call gpu_set_stream(blas_handle, stream(gam)) + call gpu_dgemm(blas_handle, 'T','N',nV, nO*nV, cholesky_mo_num, 1.d0, & + d_cc_space_v_vv_chol%f(1,1,gam), cholesky_mo_num, d_cc_space_v_ov_chol%f(1,1,1), & + cholesky_mo_num, 0.d0, X_vovv%f(1,1,1,gam-iblock+1), nV) enddo + do gam = iblock, min(nV, iblock+block_size-1) + call gpu_stream_destroy(stream(gam)) + enddo + + call gpu_synchronize() + + call gpu_set_stream(blas_handle, gpu_default_stream) call dgemm('N','N',nO,nO*nV*min(block_size, nV-iblock+1),nV, & - 1d0, t1 , size(t1,1), & - X_vovv, size(X_vovv,1), & - 0d0, Y_oovv(1,1,1,iblock), size(Y_oovv,1)) + 1d0, t1%f , size(t1%f,1), & + X_vovv%f, size(X_vovv%f,1), & + 0d0, Y_oovv%f(1,1,1,iblock), size(Y_oovv%f,1)) enddo - deallocate(X_vovv) + call gpu_synchronize() + call gpu_deallocate(X_vovv) !$omp parallel & !$omp shared(nO,nV,r2,Y_oovv) & @@ -602,14 +608,14 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do beta = 1, nV do v = 1, nO do u = 1, nO - r2(u,v,beta,gam) = r2(u,v,beta,gam) + Y_oovv(v,u,beta,gam) + Y_oovv(u,v,gam,beta) + r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) + Y_oovv%f(v,u,beta,gam) + Y_oovv%f(u,v,gam,beta) enddo enddo enddo enddo !$omp end do !$omp end parallel - deallocate(Y_oovv) + call gpu_deallocate(Y_oovv) double precision, allocatable :: X_ovvo(:,:,:,:) double precision, allocatable :: tcc(:,:,:), tcc2(:,:,:) @@ -617,11 +623,11 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) allocate(tcc(cholesky_mo_num,nO,nV)) call dgemm('N','T', cholesky_mo_num*nV, nO, nV, 1.d0, & - cc_space_v_vv_chol, cholesky_mo_num*nV, t1, nO, & + d_cc_space_v_vv_chol%f, cholesky_mo_num*nV, t1%f, nO, & 0.d0, tcc2, cholesky_mo_num*nV) call dgemm('N','N', cholesky_mo_num*nO, nV, nO, 1.d0, & - cc_space_v_oo_chol, cholesky_mo_num*nO, t1, nO, & + cc_space_v_oo_chol, cholesky_mo_num*nO, t1%f, nO, & 0.d0, tcc, cholesky_mo_num*nO) call dgemm('T','N', nO*nV, nV*nO, cholesky_mo_num, 1.d0, & @@ -639,7 +645,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do beta = 1, nV do v = 1, nO do u = 1, nO - r2(u,v,beta,gam) = r2(u,v,beta,gam) - X_ovvo(u,beta,gam,v) + r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - X_ovvo(u,beta,gam,v) enddo enddo enddo @@ -650,7 +656,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do gam = 1, nV do v = 1, nO do u = 1, nO - r2(v,u,gam,beta) = r2(v,u,gam,beta) - X_ovvo(u,beta,gam,v) + r2%f(v,u,gam,beta) = r2%f(v,u,gam,beta) - X_ovvo(u,beta,gam,v) enddo enddo enddo @@ -661,12 +667,12 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) deallocate(X_ovvo) !----- - allocate(X_oovv(nO,nO,nV,nV)) + call gpu_allocate(X_oovv,nO,nO,nV,nV) call dgemm('N','N',nO*nO*nV,nV,nO, & 1d0, cc_space_v_oovo, size(cc_space_v_oovo,1) * size(cc_space_v_oovo,2) * size(cc_space_v_oovo,3), & - t1 , size(t1,1), & - 0d0, X_oovv, size(X_oovv,1) * size(X_oovv,2) * size(X_oovv,3)) + t1%f , size(t1%f,1), & + 0d0, X_oovv%f, size(X_oovv%f,1) * size(X_oovv%f,2) * size(X_oovv%f,3)) !$omp parallel & !$omp shared(nO,nV,r2,X_oovv) & @@ -677,14 +683,14 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do beta = 1, nV do v = 1, nO do u = 1, nO - r2(u,v,beta,gam) = r2(u,v,beta,gam) - X_oovv(u,v,beta,gam) - X_oovv(v,u,gam,beta) + r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - X_oovv%f(u,v,beta,gam) - X_oovv%f(v,u,gam,beta) enddo enddo enddo enddo !$omp end do !$omp end parallel - deallocate(X_oovv) + call gpu_deallocate(X_oovv) double precision, allocatable :: X_vovo(:,:,:,:), Y_oovo(:,:,:,:) allocate(X_vovo(nV,nO,nV,nO)) @@ -708,16 +714,16 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) allocate(Y_oovo(nO,nO,nV,nO)) call dgemm('N','N',nO,nO*nV*nO,nV, & - 1d0, t1, size(t1,1), & + 1d0, t1%f, size(t1%f,1), & X_vovo, size(X_vovo,1), & 0d0, Y_oovo, size(Y_oovo,1)) deallocate(X_vovo) - allocate(X_oovv(nO,nO,nV,nV)) + call gpu_allocate(X_oovv,nO,nO,nV,nV) call dgemm('N','N',nO*nO*nV, nV, nO, & 1d0, Y_oovo, size(Y_oovo,1) * size(Y_oovo,2) * size(Y_oovo,3), & - t1 , size(t1,1), & - 0d0, X_oovv, size(X_oovv,1) * size(X_oovv,2) * size(X_oovv,3)) + t1%f , size(t1%f,1), & + 0d0, X_oovv%f, size(X_oovv%f,1) * size(X_oovv%f,2) * size(X_oovv%f,3)) deallocate(Y_oovo) !$omp parallel & @@ -729,24 +735,24 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do beta = 1, nV do v = 1, nO do u = 1, nO - r2(u,v,beta,gam) = r2(u,v,beta,gam) - X_oovv(u,v,gam,beta) - X_oovv(v,u,beta,gam) + r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - X_oovv%f(u,v,gam,beta) - X_oovv%f(v,u,beta,gam) enddo enddo enddo enddo !$omp end do !$omp end parallel - deallocate(X_oovv) + call gpu_deallocate(X_oovv) double precision, allocatable :: J1(:,:,:,:) allocate(J1(nO,nV,nV,nO)) - call compute_J1_chol(nO,nV,t1,t2,cc_space_v_ovvo,cc_space_v_ovoo, & + call compute_J1_chol(nO,nV,t1%f,t2%f,cc_space_v_ovvo,cc_space_v_ovoo, & cc_space_v_vvoo,J1) double precision, allocatable :: K1(:,:,:,:) allocate(K1(nO,nV,nO,nV)) - call compute_K1_chol(nO,nV,t1,t2,cc_space_v_ovoo,cc_space_v_vvoo, & + call compute_K1_chol(nO,nV,t1%f,t2%f,cc_space_v_ovoo,cc_space_v_vvoo, & cc_space_v_ovov,K1) allocate(X_ovvo(nO,nV,nV,nO)) @@ -778,7 +784,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do v = 1, nO do i = 1, nO do a = 1, nV - Y_voov(a,i,v,gam) = 2d0 * t2(i,v,a,gam) - t2(i,v,gam,a) + Y_voov(a,i,v,gam) = 2d0 * t2%f(i,v,a,gam) - t2%f(i,v,gam,a) enddo enddo enddo @@ -805,7 +811,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do beta = 1, nV do v = 1, nO do u = 1, nO - r2(u,v,beta,gam) = r2(u,v,beta,gam) + Z_ovov(u,beta,v,gam) + Z_ovov(v,gam,u,beta) + r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) + Z_ovov(u,beta,v,gam) + Z_ovov(v,gam,u,beta) enddo enddo enddo @@ -820,7 +826,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) allocate(Y_ovov(nO,nV,nO,nV)) !$omp parallel & - !$omp shared(nO,nV,r2,K1,X_ovov,Y_ovov,t2) & + !$omp shared(nO,nV,K1,X_ovov,Y_ovov,t2) & !$omp private(u,a,i,beta,gam) & !$omp default(none) !$omp do @@ -840,7 +846,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do v = 1, nO do a = 1, nV do i = 1, nO - Y_ovov(i,a,v,gam) = t2(i,v,gam,a) + Y_ovov(i,a,v,gam) = t2%f(i,v,gam,a) enddo enddo enddo @@ -864,7 +870,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do beta = 1, nV do v = 1, nO do u = 1, nO - r2(u,v,beta,gam) = r2(u,v,beta,gam) - Z_ovov(u,beta,v,gam) - Z_ovov(v,gam,u,beta) + r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - Z_ovov(u,beta,v,gam) - Z_ovov(v,gam,u,beta) enddo enddo enddo @@ -895,7 +901,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do v = 1, nO do a = 1, nV do i = 1, nO - Y_ovov(i,a,v,beta) = t2(i,v,beta,a) + Y_ovov(i,a,v,beta) = t2%f(i,v,beta,a) enddo enddo enddo @@ -922,7 +928,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do beta = 1, nV do v = 1, nO do u = 1, nO - r2(u,v,beta,gam) = r2(u,v,beta,gam) - Z_ovov(u,gam,v,beta) - Z_ovov(v,beta,u,gam) + r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - Z_ovov(u,gam,v,beta) - Z_ovov(v,beta,u,gam) enddo enddo enddo @@ -945,8 +951,8 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r2,max_r2) do a = 1, nV do j = 1, nO do i = 1, nO - r2(i,j,a,b) = -r2(i,j,a,b) - max_r2_local = max(r2(i,j,a,b), max_r2_local) + r2%f(i,j,a,b) = -r2%f(i,j,a,b) + max_r2_local = max(r2%f(i,j,a,b), max_r2_local) enddo enddo enddo @@ -961,28 +967,29 @@ end ! A1 -subroutine compute_A1_chol(nO,nV,t1,t2,tau,A1) - +subroutine compute_A1_chol(nO,nV,t1,t2,tau,d_cc_space_v_vooo, & + d_cc_space_v_oooo, d_cc_space_v_vvoo, A1) + use gpu implicit none - integer, intent(in) :: nO,nV - double precision, intent(in) :: t1(nO, nV) - double precision, intent(in) :: t2(nO, nO, nV, nV) - double precision, intent(in) :: tau(nO, nO, nV, nV) - double precision, intent(out) :: A1(nO, nO, nO, nO) + integer, intent(in) :: nO,nV + type(gpu_double2), intent(in) :: t1 + type(gpu_double4), intent(in) :: t2, tau + type(gpu_double4), intent(in) :: d_cc_space_v_vooo, d_cc_space_v_oooo, d_cc_space_v_vvoo + type(gpu_double4), intent(out) :: A1 integer :: a,tmp_a,b,k,l,c,d,tmp_c,tmp_d,i,j,u,v, beta - double precision, allocatable :: Y_oooo(:,:,:,:) - allocate(Y_oooo(nO,nO,nO,nO)) + type(gpu_double4) :: Y_oooo + call gpu_allocate(Y_oooo,nO,nO,nO,nO) ! A1(u,v,i,j) = cc_space_v_oooo(u,v,i,j) ! A1(u,v,i,j) += cc_space_v_ovoo(u,a,i,j) * t1(v,a) & call dgemm('N','N', nO, nO*nO*nO, nV, & - 1d0, t1 , size(t1,1), & - cc_space_v_vooo, size(cc_space_v_vooo,1), & - 0d0, Y_oooo, size(Y_oooo,1)) + 1d0, t1%f , size(t1%f,1), & + d_cc_space_v_vooo%f, size(d_cc_space_v_vooo%f,1), & + 0d0, Y_oooo%f, size(Y_oooo%f,1)) !$omp parallel & !$omp private(u,v,i,j) & @@ -992,7 +999,7 @@ subroutine compute_A1_chol(nO,nV,t1,t2,tau,A1) do i = 1, nO do v = 1, nO do u = 1, nO - A1(u,v,i,j) = cc_space_v_oooo(u,v,i,j) + Y_oooo(v,u,j,i) + Y_oooo(u,v,i,j) + A1%f(u,v,i,j) = d_cc_space_v_oooo%f(u,v,i,j) + Y_oooo%f(v,u,j,i) + Y_oooo%f(u,v,i,j) enddo enddo enddo @@ -1000,19 +1007,20 @@ subroutine compute_A1_chol(nO,nV,t1,t2,tau,A1) !$omp end do !$omp end parallel - deallocate(Y_oooo) + call gpu_deallocate(Y_oooo) ! A1(u,v,i,j) += cc_space_v_vvoo(a,b,i,j) * tau(u,v,a,b) call dgemm('N','N', nO*nO, nO*nO, nV*nV, & - 1d0, tau , size(tau,1) * size(tau,2), & - cc_space_v_vvoo, size(cc_space_v_vvoo,1) * size(cc_space_v_vvoo,2), & - 1d0, A1 , size(A1,1) * size(A1,2)) + 1d0, tau%f , size(tau%f,1) * size(tau%f,2), & + d_cc_space_v_vvoo%f, size(d_cc_space_v_vvoo%f,1) * size(d_cc_space_v_vvoo%f,2), & + 1d0, A1%f , size(A1%f,1) * size(A1%f,2)) end ! g_occ subroutine compute_g_occ_chol(nO,nV,t1,t2,H_oo,g_occ) + use gpu implicit none @@ -1048,6 +1056,7 @@ end ! g_vir subroutine compute_g_vir_chol(nO,nV,t1,t2,H_vv,g_vir) + use gpu implicit none @@ -1102,6 +1111,7 @@ end ! J1 subroutine compute_J1_chol(nO,nV,t1,t2,v_ovvo,v_ovoo,v_vvoo,J1) + use gpu implicit none integer, intent(in) :: nO,nV @@ -1305,6 +1315,7 @@ end ! K1 subroutine compute_K1_chol(nO,nV,t1,t2,v_ovoo,v_vvoo,v_ovov,K1) + use gpu implicit none From 5b1e5f84e6defc8857b5d29c54449e3b8d35cb67 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 4 Jul 2024 14:52:09 +0200 Subject: [PATCH 115/159] Working on r2 --- src/ccsd/ccsd_space_orb_sub.irp.f | 17 +- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 469 +++++++++++-------------- 2 files changed, 220 insertions(+), 266 deletions(-) diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index 59b9ebd2..e97c2325 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -22,7 +22,7 @@ subroutine run_ccsd_space_orb type(gpu_double4) :: d_cc_space_v_oovv, d_cc_space_v_voov, d_cc_space_v_ovov type(gpu_double4) :: d_cc_space_v_oovo, d_cc_space_v_vooo, d_cc_space_v_oooo - type(gpu_double4) :: d_cc_space_v_vvoo + type(gpu_double4) :: d_cc_space_v_vvoo, d_cc_space_v_ovvo, d_cc_space_v_ovoo double precision, allocatable :: all_err(:,:), all_t(:,:) integer, allocatable :: list_occ(:), list_vir(:) @@ -98,17 +98,21 @@ subroutine run_ccsd_space_orb call gpu_allocate(d_cc_space_v_voov, nV, nO, nO, nV) call gpu_allocate(d_cc_space_v_ovov, nO, nV, nO, nV) call gpu_allocate(d_cc_space_v_oovo, nO, nO, nV, nO) + call gpu_allocate(d_cc_space_v_ovvo, nO, nV, nV, nO) call gpu_allocate(d_cc_space_v_vooo, nV, nO, nO, nO) call gpu_allocate(d_cc_space_v_oooo, nO, nO, nO, nO) call gpu_allocate(d_cc_space_v_vvoo, nV, nV, nO, nO) + call gpu_allocate(d_cc_space_v_ovoo, nO, nV, nO, nO) call gpu_upload(cc_space_v_oovv, d_cc_space_v_oovv) call gpu_upload(cc_space_v_voov, d_cc_space_v_voov) call gpu_upload(cc_space_v_ovov, d_cc_space_v_ovov) call gpu_upload(cc_space_v_oovo, d_cc_space_v_oovo) + call gpu_upload(cc_space_v_ovvo, d_cc_space_v_ovvo) call gpu_upload(cc_space_v_vooo, d_cc_space_v_vooo) call gpu_upload(cc_space_v_oooo, d_cc_space_v_oooo) call gpu_upload(cc_space_v_vvoo, d_cc_space_v_vvoo) + call gpu_upload(cc_space_v_ovoo, d_cc_space_v_ovoo) ! FREE cc_space_v_voov ! FREE cc_space_v_ovov @@ -117,6 +121,8 @@ subroutine run_ccsd_space_orb ! FREE cc_space_v_vooo ! FREE cc_space_v_oooo ! FREE cc_space_v_vvoo +! FREE cc_space_v_ovvo +! FREE cc_space_v_ovoo call gpu_allocate(t2, nO,nO,nV,nV) call gpu_allocate(r2, nO,nO,nV,nV) @@ -207,8 +213,8 @@ subroutine run_ccsd_space_orb call compute_r1_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv,H_vo,r1,max_r1,d_cc_space_f_ov,d_cc_space_f_vo, & d_cc_space_v_voov, d_cc_space_v_ovov, d_cc_space_v_oovo, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol) call compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & - d_cc_space_v_oovv, d_cc_space_v_vooo, d_cc_space_v_oooo, & - d_cc_space_v_vvoo, d_cc_space_v_ov_chol, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol, & + d_cc_space_v_oovv, d_cc_space_v_vooo, d_cc_space_v_oooo, d_cc_space_v_oovo, d_cc_space_v_ovvo, d_cc_space_v_ovoo, & + d_cc_space_v_ovov, d_cc_space_v_vvoo, d_cc_space_v_oo_chol, d_cc_space_v_ov_chol, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol, & r2, max_r2) else call compute_H_oo(nO,nV,t1%f,t2%f,tau%f,H_oo%f) @@ -320,6 +326,11 @@ subroutine run_ccsd_space_orb call gpu_deallocate(d_cc_space_v_voov) call gpu_deallocate(d_cc_space_v_ovov) call gpu_deallocate(d_cc_space_v_oovo) + call gpu_deallocate(d_cc_space_v_ovvo) + call gpu_deallocate(d_cc_space_v_vooo) + call gpu_deallocate(d_cc_space_v_oooo) + call gpu_deallocate(d_cc_space_v_vvoo) + call gpu_deallocate(d_cc_space_v_ovoo) call gpu_deallocate(d_cc_space_f_oo) call gpu_deallocate(d_cc_space_f_vo) diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index 0474dcec..abb9909b 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -392,8 +392,8 @@ end ! R2 subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & - d_cc_space_v_oovv, d_cc_space_v_vooo, d_cc_space_v_oooo, & - d_cc_space_v_vvoo, d_cc_space_v_ov_chol, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol, & + d_cc_space_v_oovv, d_cc_space_v_vooo, d_cc_space_v_oooo, d_cc_space_v_oovo, d_cc_space_v_ovvo, d_cc_space_v_ovoo, & + d_cc_space_v_ovov, d_cc_space_v_vvoo, d_cc_space_v_oo_chol, d_cc_space_v_ov_chol, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol, & r2,max_r2) use gpu implicit none @@ -403,9 +403,11 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & type(gpu_double2), intent(in) :: t1, H_oo, H_vv type(gpu_double4), intent(in) :: t2, tau, d_cc_space_v_oovv type(gpu_double4), intent(in) :: d_cc_space_v_vooo, d_cc_space_v_oooo - type(gpu_double4), intent(in) :: d_cc_space_v_vvoo - type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol, d_cc_space_v_vv_chol - type(gpu_double3), intent(in) :: d_cc_space_v_vo_chol + type(gpu_double4), intent(in) :: d_cc_space_v_vvoo, d_cc_space_v_oovo + type(gpu_double4), intent(in) :: d_cc_space_v_ovvo, d_cc_space_v_ovoo + type(gpu_double4), intent(in) :: d_cc_space_v_ovov + type(gpu_double3), intent(in) :: d_cc_space_v_oo_chol, d_cc_space_v_ov_chol + type(gpu_double3), intent(in) :: d_cc_space_v_vo_chol, d_cc_space_v_vv_chol ! out double precision, intent(out) :: max_r2 @@ -499,9 +501,11 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & call gpu_allocate(X_oovv,nO,nO,nV,nV) call gpu_copy(t2,X_oovv) - type(gpu_double2) :: g_vir + type(gpu_double2) :: g_occ, g_vir call gpu_allocate(g_vir,nV,nV) + call gpu_allocate(g_occ,nO,nO) call compute_g_vir_chol(nO,nV,t1%f,t2%f,H_vv%f,g_vir%f) + call compute_g_occ_chol(nO,nV,t1%f,t2%f,H_oo%f,g_occ%f) type(gpu_double4) :: Y_oovv call gpu_allocate(Y_oovv,nO,nO,nV,nV) @@ -511,7 +515,41 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & g_vir%f(1,1), size(g_vir%f,1), & 0d0, Y_oovv%f(1,1,1,1), size(Y_oovv%f,1) * size(Y_oovv%f,2) * size(Y_oovv%f,3)) + call gpu_dgemm(blas_handle, 'N','N',nO,nO*nV*nV,nO, & + -1d0, g_occ%f(1,1), size(g_occ%f,1), & + t2%f(1,1,1,1) , size(t2%f,1), & + 1d0, Y_oovv%f(1,1,1,1), size(Y_oovv%f,1)) + + call gpu_dgemm(blas_handle, 'N','N',nO*nO*nV,nV,nO, & + -1d0, d_cc_space_v_oovo%f(1,1,1,1), size(cc_space_v_oovo,1) * size(cc_space_v_oovo,2) * size(cc_space_v_oovo,3), & + t1%f(1,1) , size(t1%f,1), & + 1d0, Y_oovv%f(1,1,1,1), size(Y_oovv%f,1) * size(Y_oovv%f,2) * size(Y_oovv%f,3)) + call gpu_synchronize() + call gpu_deallocate(X_oovv) + + call gpu_deallocate(g_vir) + call gpu_deallocate(g_occ) + + type(gpu_double4) :: X_vovo, Y_oovo + call gpu_allocate(X_vovo,nV,nO,nV,nO) + +! !$omp parallel & +! !$omp shared(nO,nV,r2,Y_oovv) & +! !$omp private(u,v,gam,beta) & +! !$omp default(none) +! !$omp do +! do gam = 1, nV +! do beta = 1, nV +! do v = 1, nO +! do u = 1, nO +! r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) + Y_oovv%f(u,v,beta,gam) + Y_oovv%f(v,u,gam,beta) +! enddo +! enddo +! enddo +! enddo +! !$omp end do +! !$omp end parallel do a=1,nV call gpu_stream_create(stream(a)) @@ -527,52 +565,24 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & enddo enddo - call gpu_deallocate(g_vir) - call gpu_set_stream(blas_handle, gpu_default_stream) + do i = 1, nO + do gam = 1, nV + call gpu_set_stream(blas_handle, stream(gam)) + call gpu_dgeam(blas_handle, 'T', 'N', nV, nO, 1.d0, d_cc_space_v_ovvo%f(1,1,gam,i), & + nO, 0.d0, X_vovo%f(1,1,gam,i), nV, X_vovo%f(1,1,gam,i), nV) + enddo + enddo do a=1,nV call gpu_stream_destroy(stream(a)) enddo + call gpu_set_stream(blas_handle, gpu_default_stream) - call gpu_deallocate(Y_oovv) - - type(gpu_double2) :: g_occ - call gpu_allocate(g_occ,nO,nO) - - call compute_g_occ_chol(nO,nV,t1%f,t2%f,H_oo%f,g_occ%f) - - call gpu_dgemm(blas_handle, 'N','N',nO,nO*nV*nV,nO, & - 1d0, g_occ%f(1,1), size(g_occ%f,1), & - t2%f(1,1,1,1) , size(t2%f,1), & - 0d0, X_oovv%f(1,1,1,1), size(X_oovv%f,1)) - - call gpu_synchronize() - - !$omp parallel & - !$omp shared(nO,nV,r2,X_oovv) & - !$omp private(u,v,gam,beta) & - !$omp default(none) - !$omp do - do gam = 1, nV - do beta = 1, nV - do v = 1, nO - do u = 1, nO - r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - X_oovv%f(u,v,beta,gam) - X_oovv%f(v,u,gam,beta) - enddo - enddo - enddo - enddo - !$omp end do - !$omp end parallel - - call gpu_deallocate(g_occ) - call gpu_deallocate(X_oovv) type(gpu_double4) :: X_vovv call gpu_allocate(X_vovv,nV,nO,nV,block_size) - call gpu_allocate(Y_oovv,nO,nO,nV,nV) - + call gpu_allocate(Y_oovo,nO,nO,nV,nO) do iblock = 1, nV, block_size do gam = iblock, min(nV, iblock+block_size-1) @@ -590,241 +600,176 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & call gpu_synchronize() call gpu_set_stream(blas_handle, gpu_default_stream) - call dgemm('N','N',nO,nO*nV*min(block_size, nV-iblock+1),nV, & - 1d0, t1%f , size(t1%f,1), & - X_vovv%f, size(X_vovv%f,1), & + call gpu_dgemm(blas_handle, 'N','N', nO, & + nO*nV*min(block_size, nV-iblock+1),nV, & + 1.d0, t1%f(1,1) , size(t1%f,1), & + X_vovv%f(1,1,1,1), size(X_vovv%f,1), & 0d0, Y_oovv%f(1,1,1,iblock), size(Y_oovv%f,1)) enddo + + call gpu_dgemm(blas_handle, 'N','N',nO,nO*nV*nO,nV, & + 1d0, t1%f(1,1), size(t1%f,1), & + X_vovo%f(1,1,1,1), size(X_vovo%f,1), & + 0d0, Y_oovo%f(1,1,1,1), size(Y_oovo%f,1)) + + call gpu_dgemm(blas_handle, 'N','N',nO*nO*nV, nV, nO, & + -1d0, Y_oovo%f(1,1,1,1), size(Y_oovo%f,1) * size(Y_oovo%f,2) * size(Y_oovo%f,3), & + t1%f(1,1) , size(t1%f,1), & + 1d0, Y_oovv%f(1,1,1,1), size(Y_oovv%f,1) * size(Y_oovv%f,2) * size(Y_oovv%f,3)) + call gpu_synchronize() call gpu_deallocate(X_vovv) + call gpu_deallocate(X_vovo) + call gpu_deallocate(Y_oovo) + +! !$omp parallel & +! !$omp shared(nO,nV,r2,Y_oovv) & +! !$omp private(u,v,gam,beta) & +! !$omp default(none) +! !$omp do +! do gam = 1, nV +! do beta = 1, nV +! do v = 1, nO +! do u = 1, nO +! r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) + Y_oovv%f(u,v,gam,beta) + Y_oovv%f(v,u,beta,gam) +! enddo +! enddo +! enddo +! enddo +! !$omp end do +! !$omp end parallel + + do a=1,nV + call gpu_stream_create(stream(a)) + enddo - !$omp parallel & - !$omp shared(nO,nV,r2,Y_oovv) & - !$omp private(u,v,gam,beta) & - !$omp default(none) - !$omp do do gam = 1, nV do beta = 1, nV - do v = 1, nO - do u = 1, nO - r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) + Y_oovv%f(v,u,beta,gam) + Y_oovv%f(u,v,gam,beta) - enddo - enddo + call gpu_set_stream(blas_handle, stream(beta)) + call gpu_dgeam(blas_handle, 'T', 'N', nO, nO, 1.d0, Y_oovv%f(1,1,beta,gam), & + nO, 1.d0, r2%f(1,1,beta,gam), nO, r2%f(1,1,beta,gam), nO) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nO, 1.d0, r2%f(1,1,beta,gam), & + nO, 1.d0, Y_oovv%f(1,1,gam,beta), nO, r2%f(1,1,beta,gam), nO) enddo enddo - !$omp end do - !$omp end parallel + + call gpu_set_stream(blas_handle, gpu_default_stream) + + do a=1,nV + call gpu_stream_destroy(stream(a)) + enddo + + + call gpu_synchronize() call gpu_deallocate(Y_oovv) - double precision, allocatable :: X_ovvo(:,:,:,:) - double precision, allocatable :: tcc(:,:,:), tcc2(:,:,:) - allocate(tcc2(cholesky_mo_num,nV,nO), X_ovvo(nO,nV,nV,nO)) - allocate(tcc(cholesky_mo_num,nO,nV)) + type(gpu_double4) :: X_ovvo + type(gpu_double3) :: tcc, tcc2 + call gpu_allocate(tcc2,cholesky_mo_num,nV,nO) + call gpu_allocate(X_ovvo,nO,nV,nV,nO) + call gpu_allocate(tcc,cholesky_mo_num,nO,nV) - call dgemm('N','T', cholesky_mo_num*nV, nO, nV, 1.d0, & - d_cc_space_v_vv_chol%f, cholesky_mo_num*nV, t1%f, nO, & - 0.d0, tcc2, cholesky_mo_num*nV) + call gpu_dgemm(blas_handle, 'N','T', cholesky_mo_num*nV, nO, nV, 1.d0, & + d_cc_space_v_vv_chol%f(1,1,1), cholesky_mo_num*nV, t1%f(1,1), nO, & + 0.d0, tcc2%f(1,1,1), cholesky_mo_num*nV) - call dgemm('N','N', cholesky_mo_num*nO, nV, nO, 1.d0, & - cc_space_v_oo_chol, cholesky_mo_num*nO, t1%f, nO, & - 0.d0, tcc, cholesky_mo_num*nO) + call gpu_dgemm(blas_handle, 'N','N', cholesky_mo_num*nO, nV, nO, 1.d0, & + d_cc_space_v_oo_chol%f(1,1,1), cholesky_mo_num*nO, t1%f(1,1), nO, & + 0.d0, tcc%f(1,1,1), cholesky_mo_num*nO) - call dgemm('T','N', nO*nV, nV*nO, cholesky_mo_num, 1.d0, & - tcc, cholesky_mo_num, tcc2, cholesky_mo_num, 0.d0, & - X_ovvo, nO*nV) + call gpu_dgemm(blas_handle, 'T','N', nO*nV, nV*nO, cholesky_mo_num, 1.d0, & + tcc%f(1,1,1), cholesky_mo_num, tcc2%f(1,1,1), cholesky_mo_num, 0.d0, & + X_ovvo%f(1,1,1,1), nO*nV) - deallocate(tcc, tcc2) + call gpu_synchronize() + + do a=1,nV + call gpu_stream_create(stream(a)) + enddo - !$omp parallel & - !$omp shared(nO,nV,r2,X_ovvo) & - !$omp private(u,v,gam,beta) & - !$omp default(none) - !$omp do do gam = 1, nV do beta = 1, nV - do v = 1, nO - do u = 1, nO - r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - X_ovvo(u,beta,gam,v) - enddo - enddo + call gpu_set_stream(blas_handle, stream(beta)) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nO, -1.d0, X_ovvo%f(1,beta,gam,1), & + nO*nV*nV, 1.d0, r2%f(1,1,beta,gam), nO, r2%f(1,1,beta,gam), nO) + call gpu_dgeam(blas_handle, 'T', 'N', nO, nO, -1.d0, X_ovvo%f(1,gam,beta,1), & + nO*nV*nV, 1.d0, r2%f(1,1,beta,gam), nO, r2%f(1,1,beta,gam), nO) enddo enddo - !$omp end do - !$omp do - do beta = 1, nV - do gam = 1, nV - do v = 1, nO - do u = 1, nO - r2%f(v,u,gam,beta) = r2%f(v,u,gam,beta) - X_ovvo(u,beta,gam,v) - enddo - enddo - enddo - enddo - !$omp end do - !$omp end parallel - deallocate(X_ovvo) + call gpu_set_stream(blas_handle, gpu_default_stream) + + do a=1,nV + call gpu_stream_destroy(stream(a)) + enddo + + call gpu_synchronize() + call gpu_deallocate(tcc) + call gpu_deallocate(tcc2) + call gpu_deallocate(X_ovvo) + !----- - call gpu_allocate(X_oovv,nO,nO,nV,nV) + type(gpu_double4) :: J1, K1 + type(gpu_double4) :: Y_voov, Z_ovov - call dgemm('N','N',nO*nO*nV,nV,nO, & - 1d0, cc_space_v_oovo, size(cc_space_v_oovo,1) * size(cc_space_v_oovo,2) * size(cc_space_v_oovo,3), & - t1%f , size(t1%f,1), & - 0d0, X_oovv%f, size(X_oovv%f,1) * size(X_oovv%f,2) * size(X_oovv%f,3)) + call gpu_allocate(J1,nO,nV,nV,nO) + call compute_J1_chol(nO,nV,t1%f,t2%f,d_cc_space_v_ovvo%f,d_cc_space_v_ovoo%f, & + d_cc_space_v_vvoo%f,J1%f) - !$omp parallel & - !$omp shared(nO,nV,r2,X_oovv) & - !$omp private(u,v,gam,beta) & - !$omp default(none) - !$omp do - do gam = 1, nV - do beta = 1, nV - do v = 1, nO - do u = 1, nO - r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - X_oovv%f(u,v,beta,gam) - X_oovv%f(v,u,gam,beta) - enddo - enddo + call gpu_allocate(K1,nO,nV,nO,nV) + call compute_K1_chol(nO,nV,t1%f,t2%f,d_cc_space_v_ovoo%f,d_cc_space_v_vvoo%f, & + d_cc_space_v_ovov%f,K1%f) + + + call gpu_allocate(X_ovvo,nO,nV,nV,nO) + call gpu_allocate(Y_voov,nV,nO,nO,nV) + + do a=1,nV + call gpu_stream_create(stream(a)) + enddo + + do i=1, nO + do a=1, nV + call gpu_set_stream(blas_handle, stream(a)) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, J1%f(1,a,1,i), & + nO*nV, -0.5d0, K1%f(1,a,i,1), nO*nV*nO, X_ovvo%f(1,1,a,i), nO) enddo enddo - !$omp end do - !$omp end parallel - call gpu_deallocate(X_oovv) - double precision, allocatable :: X_vovo(:,:,:,:), Y_oovo(:,:,:,:) - allocate(X_vovo(nV,nO,nV,nO)) - - !$omp parallel & - !$omp shared(nO,nV,X_vovo,cc_space_v_ovvo) & - !$omp private(a,v,gam,i) & - !$omp default(none) - do i = 1, nO - !$omp do - do gam = 1, nV - do v = 1, nO - do a = 1, nV - X_vovo(a,v,gam,i) = cc_space_v_ovvo(v,a,gam,i) - enddo - enddo - enddo - !$omp end do nowait - enddo - !$omp end parallel - - allocate(Y_oovo(nO,nO,nV,nO)) - call dgemm('N','N',nO,nO*nV*nO,nV, & - 1d0, t1%f, size(t1%f,1), & - X_vovo, size(X_vovo,1), & - 0d0, Y_oovo, size(Y_oovo,1)) - - deallocate(X_vovo) - call gpu_allocate(X_oovv,nO,nO,nV,nV) - call dgemm('N','N',nO*nO*nV, nV, nO, & - 1d0, Y_oovo, size(Y_oovo,1) * size(Y_oovo,2) * size(Y_oovo,3), & - t1%f , size(t1%f,1), & - 0d0, X_oovv%f, size(X_oovv%f,1) * size(X_oovv%f,2) * size(X_oovv%f,3)) - deallocate(Y_oovo) - - !$omp parallel & - !$omp shared(nO,nV,r2,X_oovv) & - !$omp private(u,v,gam,beta) & - !$omp default(none) - !$omp do - do gam = 1, nV - do beta = 1, nV - do v = 1, nO - do u = 1, nO - r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - X_oovv%f(u,v,gam,beta) - X_oovv%f(v,u,beta,gam) - enddo - enddo + do gam=1, nV + call gpu_set_stream(blas_handle, stream(gam)) + do v=1, nO + call gpu_dgeam(blas_handle, 'T', 'T', nV, nO, 2.d0, t2%f(1,v,1,gam), & + nO*nO, -1.d0, t2%f(1,v,gam,1), nO*nO*nV, Y_voov%f(1,1,v,gam), nV) enddo enddo - !$omp end do - !$omp end parallel - call gpu_deallocate(X_oovv) + call gpu_allocate(Z_ovov,nO,nV,nO,nV) - double precision, allocatable :: J1(:,:,:,:) - allocate(J1(nO,nV,nV,nO)) - call compute_J1_chol(nO,nV,t1%f,t2%f,cc_space_v_ovvo,cc_space_v_ovoo, & - cc_space_v_vvoo,J1) - - double precision, allocatable :: K1(:,:,:,:) - allocate(K1(nO,nV,nO,nV)) - call compute_K1_chol(nO,nV,t1%f,t2%f,cc_space_v_ovoo,cc_space_v_vvoo, & - cc_space_v_ovov,K1) - - allocate(X_ovvo(nO,nV,nV,nO)) - !$omp parallel & - !$omp private(u,v,gam,beta,i,a) & - !$omp default(shared) - do i = 1, nO - !$omp do - do a = 1, nV - do beta = 1, nV - do u = 1, nO - X_ovvo(u,beta,a,i) = (J1(u,a,beta,i) - 0.5d0 * K1(u,a,i,beta)) - enddo - enddo - enddo - !$omp end do nowait + do a=1,nV + call gpu_stream_destroy(stream(a)) enddo - !$omp end parallel - deallocate(J1) - double precision, allocatable :: Y_voov(:,:,:,:) - allocate(Y_voov(nV,nO,nO,nV)) + call gpu_deallocate(J1) + call gpu_set_stream(blas_handle, gpu_default_stream) - !$omp parallel & - !$omp private(u,v,gam,beta,i,a) & - !$omp default(shared) - !$omp do - do gam = 1, nV - do v = 1, nO - do i = 1, nO - do a = 1, nV - Y_voov(a,i,v,gam) = 2d0 * t2%f(i,v,a,gam) - t2%f(i,v,gam,a) - enddo - enddo - enddo - enddo - !$omp end do - !$omp end parallel - double precision, allocatable :: Z_ovov(:,:,:,:) - allocate(Z_ovov(nO,nV,nO,nV)) + call gpu_dgemm(blas_handle, 'N','N', nO*nV,nO*nV,nV*nO, & + 1d0, X_ovvo%f(1,1,1,1), size(X_ovvo%f,1) * size(X_ovvo%f,2), & + Y_voov%f(1,1,1,1), size(Y_voov%f,1) * size(Y_voov%f,2), & + 0d0, Z_ovov%f(1,1,1,1), size(Z_ovov%f,1) * size(Z_ovov%f,2)) - call dgemm('N','N', nO*nV,nO*nV,nV*nO, & - 1d0, X_ovvo, size(X_ovvo,1) * size(X_ovvo,2), & - Y_voov, size(Y_voov,1) * size(Y_voov,2), & - 0d0, Z_ovov, size(Z_ovov,1) * size(Z_ovov,2)) + call gpu_synchronize() + call gpu_deallocate(Y_voov) + call gpu_deallocate(X_ovvo) - deallocate(X_ovvo,Y_voov) - - !$omp parallel & - !$omp shared(nO,nV,r2,Z_ovov) & - !$omp private(u,v,gam,beta) & - !$omp default(none) - !$omp do - do gam = 1, nV - do beta = 1, nV - do v = 1, nO - do u = 1, nO - r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) + Z_ovov(u,beta,v,gam) + Z_ovov(v,gam,u,beta) - enddo - enddo - enddo - enddo - !$omp end do - !$omp end parallel - - deallocate(Z_ovov) - - double precision, allocatable :: Y_ovov(:,:,:,:), X_ovov(:,:,:,:) - allocate(X_ovov(nO,nV,nO,nV)) - allocate(Y_ovov(nO,nV,nO,nV)) + type(gpu_double4) :: Y_ovov, X_ovov + call gpu_allocate(X_ovov,nO,nV,nO,nV) + call gpu_allocate(Y_ovov,nO,nV,nO,nV) +!TODO !$omp parallel & !$omp shared(nO,nV,K1,X_ovov,Y_ovov,t2) & !$omp private(u,a,i,beta,gam) & @@ -834,7 +779,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & do u = 1, nO do a = 1, nV do i = 1, nO - X_ovov(i,a,u,beta) = 0.5d0 * K1(u,a,i,beta) + X_ovov%f(i,a,u,beta) = 0.5d0 * K1%f(u,a,i,beta) enddo enddo enddo @@ -846,7 +791,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & do v = 1, nO do a = 1, nV do i = 1, nO - Y_ovov(i,a,v,gam) = t2%f(i,v,gam,a) + Y_ovov%f(i,a,v,gam) = t2%f(i,v,gam,a) enddo enddo enddo @@ -854,12 +799,12 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & !$omp end do !$omp end parallel - allocate(Z_ovov(nO,nV,nO,nV)) - call dgemm('T','N',nO*nV,nO*nV,nO*nV, & - 1d0, X_ovov, size(X_ovov,1) * size(X_ovov,2), & - Y_ovov, size(Y_ovov,1) * size(Y_ovov,2), & - 0d0, Z_ovov, size(Y_ovov,1) * size(Y_ovov,2)) - deallocate(X_ovov, Y_ovov) + call gpu_dgemm(blas_handle, 'T','N',nO*nV,nO*nV,nO*nV, & + -1d0, X_ovov%f(1,1,1,1), size(X_ovov%f,1) * size(X_ovov%f,2), & + Y_ovov%f(1,1,1,1), size(Y_ovov%f,1) * size(Y_ovov%f,2), & + 1d0, Z_ovov%f(1,1,1,1), size(Z_ovov%f,1) * size(Z_ovov%f,2)) + + call gpu_synchronize() !$omp parallel & !$omp shared(nO,nV,r2,Z_ovov) & @@ -870,16 +815,14 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & do beta = 1, nV do v = 1, nO do u = 1, nO - r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - Z_ovov(u,beta,v,gam) - Z_ovov(v,gam,u,beta) + r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) + Z_ovov%f(u,beta,v,gam) + Z_ovov%f(v,gam,u,beta) enddo enddo enddo enddo !$omp end do !$omp end parallel - deallocate(Z_ovov) - allocate(X_ovov(nO,nV,nO,nV),Y_ovov(nO,nV,nO,nV)) !$omp parallel & !$omp shared(nO,nV,K1,X_ovov,Y_ovov,t2) & !$omp private(u,v,gam,beta,i,a) & @@ -889,7 +832,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & do i = 1, nO do gam = 1, nV do u = 1, nO - X_ovov(u,gam,i,a) = K1(u,a,i,gam) + X_ovov%f(u,gam,i,a) = K1%f(u,a,i,gam) enddo enddo enddo @@ -901,7 +844,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & do v = 1, nO do a = 1, nV do i = 1, nO - Y_ovov(i,a,v,beta) = t2%f(i,v,beta,a) + Y_ovov%f(i,a,v,beta) = t2%f(i,v,beta,a) enddo enddo enddo @@ -909,16 +852,19 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & !$omp end do !$omp end parallel - deallocate(K1) + call gpu_deallocate(K1) - allocate(Z_ovov(nO,nV,nO,nV)) - call dgemm('N','N',nO*nV,nO*nV,nO*nV, & - 1d0, X_ovov, size(X_ovov,1) * size(X_ovov,2), & - Y_ovov, size(Y_ovov,1) * size(Y_ovov,2), & - 0d0, Z_ovov, size(Y_ovov,1) * size(Y_ovov,2)) + call gpu_dgemm(blas_handle, 'N','N',nO*nV,nO*nV,nO*nV, & + 1d0, X_ovov%f(1,1,1,1), size(X_ovov%f,1) * size(X_ovov%f,2), & + Y_ovov%f(1,1,1,1), size(Y_ovov%f,1) * size(Y_ovov%f,2), & + 0d0, Z_ovov%f(1,1,1,1), size(Z_ovov%f,1) * size(Z_ovov%f,2)) - deallocate(X_ovov,Y_ovov) + call gpu_synchronize() + call gpu_deallocate(X_ovov) + call gpu_deallocate(Y_ovov) + + ! Change the sign for consistency with the code in spin orbitals !$omp parallel & !$omp shared(nO,nV,r2,Z_ovov) & !$omp private(u,v,gam,beta) & @@ -928,7 +874,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & do beta = 1, nV do v = 1, nO do u = 1, nO - r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) - Z_ovov(u,gam,v,beta) - Z_ovov(v,beta,u,gam) + r2%f(u,v,beta,gam) = -r2%f(u,v,beta,gam) + Z_ovov%f(u,gam,v,beta) + Z_ovov%f(v,beta,u,gam) enddo enddo enddo @@ -936,9 +882,7 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & !$omp end do !$omp end parallel - deallocate(Z_ovov) - - ! Change the sign for consistency with the code in spin orbitals + call gpu_deallocate(Z_ovov) max_r2 = 0d0 !$omp parallel & @@ -951,7 +895,6 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & do a = 1, nV do j = 1, nO do i = 1, nO - r2%f(i,j,a,b) = -r2%f(i,j,a,b) max_r2_local = max(r2%f(i,j,a,b), max_r2_local) enddo enddo From f09e91cb2296b3c1fb5cf854dc06372c879c4104 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 8 Jul 2024 12:44:32 +0200 Subject: [PATCH 116/159] Working on CCSD GPU --- src/ccsd/ccsd_space_orb_sub.irp.f | 1 + src/ccsd/ccsd_space_orb_sub_chol.irp.f | 874 +++++++++++-------------- 2 files changed, 392 insertions(+), 483 deletions(-) diff --git a/src/ccsd/ccsd_space_orb_sub.irp.f b/src/ccsd/ccsd_space_orb_sub.irp.f index e97c2325..d8131a9c 100644 --- a/src/ccsd/ccsd_space_orb_sub.irp.f +++ b/src/ccsd/ccsd_space_orb_sub.irp.f @@ -215,6 +215,7 @@ subroutine run_ccsd_space_orb call compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & d_cc_space_v_oovv, d_cc_space_v_vooo, d_cc_space_v_oooo, d_cc_space_v_oovo, d_cc_space_v_ovvo, d_cc_space_v_ovoo, & d_cc_space_v_ovov, d_cc_space_v_vvoo, d_cc_space_v_oo_chol, d_cc_space_v_ov_chol, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol, & + d_cc_space_f_vo, & r2, max_r2) else call compute_H_oo(nO,nV,t1%f,t2%f,tau%f,H_oo%f) diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index abb9909b..a185df13 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -394,13 +394,14 @@ end subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & d_cc_space_v_oovv, d_cc_space_v_vooo, d_cc_space_v_oooo, d_cc_space_v_oovo, d_cc_space_v_ovvo, d_cc_space_v_ovoo, & d_cc_space_v_ovov, d_cc_space_v_vvoo, d_cc_space_v_oo_chol, d_cc_space_v_ov_chol, d_cc_space_v_vo_chol, d_cc_space_v_vv_chol, & + d_cc_space_f_vo, & r2,max_r2) use gpu implicit none ! in integer, intent(in) :: nO, nV - type(gpu_double2), intent(in) :: t1, H_oo, H_vv + type(gpu_double2), intent(in) :: t1, H_oo, H_vv, d_cc_space_f_vo type(gpu_double4), intent(in) :: t2, tau, d_cc_space_v_oovv type(gpu_double4), intent(in) :: d_cc_space_v_vooo, d_cc_space_v_oooo type(gpu_double4), intent(in) :: d_cc_space_v_vvoo, d_cc_space_v_oovo @@ -504,7 +505,8 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & type(gpu_double2) :: g_occ, g_vir call gpu_allocate(g_vir,nV,nV) call gpu_allocate(g_occ,nO,nO) - call compute_g_vir_chol(nO,nV,t1%f,t2%f,H_vv%f,g_vir%f) + call compute_g_vir_chol(nO,nV,t1,t2,H_vv,d_cc_space_f_vo, & + d_cc_space_v_ov_chol, d_cc_space_v_vv_chol, g_vir) call compute_g_occ_chol(nO,nV,t1%f,t2%f,H_oo%f,g_occ%f) type(gpu_double4) :: Y_oovv @@ -525,6 +527,10 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & t1%f(1,1) , size(t1%f,1), & 1d0, Y_oovv%f(1,1,1,1), size(Y_oovv%f,1) * size(Y_oovv%f,2) * size(Y_oovv%f,3)) + + call gpu_dgeam(blas_handle, 'N', 'N', nO*nO, nV*nV, 1.d0, Y_oovv%f(1,1,1,1), & + nO*nO, 1.d0, r2%f(1,1,1,1), nO*nO, r2%f(1,1,1,1), nO*nO) + call gpu_synchronize() call gpu_deallocate(X_oovv) @@ -534,32 +540,13 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & type(gpu_double4) :: X_vovo, Y_oovo call gpu_allocate(X_vovo,nV,nO,nV,nO) -! !$omp parallel & -! !$omp shared(nO,nV,r2,Y_oovv) & -! !$omp private(u,v,gam,beta) & -! !$omp default(none) -! !$omp do -! do gam = 1, nV -! do beta = 1, nV -! do v = 1, nO -! do u = 1, nO -! r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) + Y_oovv%f(u,v,beta,gam) + Y_oovv%f(v,u,gam,beta) -! enddo -! enddo -! enddo -! enddo -! !$omp end do -! !$omp end parallel - do a=1,nV call gpu_stream_create(stream(a)) enddo do gam = 1, nV + call gpu_set_stream(blas_handle, stream(gam)) do beta = 1, nV - call gpu_set_stream(blas_handle, stream(beta)) - call gpu_dgeam(blas_handle, 'N', 'N', nO, nO, 1.d0, Y_oovv%f(1,1,beta,gam), & - nO, 1.d0, r2%f(1,1,beta,gam), nO, r2%f(1,1,beta,gam), nO) call gpu_dgeam(blas_handle, 'N', 'T', nO, nO, 1.d0, r2%f(1,1,beta,gam), & nO, 1.d0, Y_oovv%f(1,1,gam,beta), nO, r2%f(1,1,beta,gam), nO) enddo @@ -579,34 +566,33 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & call gpu_set_stream(blas_handle, gpu_default_stream) - type(gpu_double4) :: X_vovv - call gpu_allocate(X_vovv,nV,nO,nV,block_size) call gpu_allocate(Y_oovo,nO,nO,nV,nO) + !$OMP PARALLEL PRIVATE(blas, iblock, gam, X_vovv) + call gpu_blas_create(blas) + type(gpu_double4) :: X_vovv + call gpu_allocate(X_vovv,nV,nO,nV,block_size) + !$OMP DO do iblock = 1, nV, block_size do gam = iblock, min(nV, iblock+block_size-1) - call gpu_stream_create(stream(gam)) - call gpu_set_stream(blas_handle, stream(gam)) - call gpu_dgemm(blas_handle, 'T','N',nV, nO*nV, cholesky_mo_num, 1.d0, & + call gpu_dgemm(blas, 'T','N',nV, nO*nV, cholesky_mo_num, 1.d0, & d_cc_space_v_vv_chol%f(1,1,gam), cholesky_mo_num, d_cc_space_v_ov_chol%f(1,1,1), & cholesky_mo_num, 0.d0, X_vovv%f(1,1,1,gam-iblock+1), nV) enddo - do gam = iblock, min(nV, iblock+block_size-1) - call gpu_stream_destroy(stream(gam)) - enddo - call gpu_synchronize() - - call gpu_set_stream(blas_handle, gpu_default_stream) - call gpu_dgemm(blas_handle, 'N','N', nO, & + call gpu_dgemm(blas, 'N','N', nO, & nO*nV*min(block_size, nV-iblock+1),nV, & 1.d0, t1%f(1,1) , size(t1%f,1), & X_vovv%f(1,1,1,1), size(X_vovv%f,1), & 0d0, Y_oovv%f(1,1,1,iblock), size(Y_oovv%f,1)) - enddo + !$OMP END DO + + call gpu_blas_destroy(blas) + call gpu_deallocate(X_vovv) + !$OMP END PARALLEL call gpu_dgemm(blas_handle, 'N','N',nO,nO*nV*nO,nV, & 1d0, t1%f(1,1), size(t1%f,1), & @@ -619,47 +605,27 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & 1d0, Y_oovv%f(1,1,1,1), size(Y_oovv%f,1) * size(Y_oovv%f,2) * size(Y_oovv%f,3)) call gpu_synchronize() - call gpu_deallocate(X_vovv) call gpu_deallocate(X_vovo) call gpu_deallocate(Y_oovo) -! !$omp parallel & -! !$omp shared(nO,nV,r2,Y_oovv) & -! !$omp private(u,v,gam,beta) & -! !$omp default(none) -! !$omp do -! do gam = 1, nV -! do beta = 1, nV -! do v = 1, nO -! do u = 1, nO -! r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) + Y_oovv%f(u,v,gam,beta) + Y_oovv%f(v,u,beta,gam) -! enddo -! enddo -! enddo -! enddo -! !$omp end do -! !$omp end parallel - do a=1,nV call gpu_stream_create(stream(a)) enddo do gam = 1, nV + call gpu_set_stream(blas_handle, stream(gam)) do beta = 1, nV - call gpu_set_stream(blas_handle, stream(beta)) call gpu_dgeam(blas_handle, 'T', 'N', nO, nO, 1.d0, Y_oovv%f(1,1,beta,gam), & nO, 1.d0, r2%f(1,1,beta,gam), nO, r2%f(1,1,beta,gam), nO) - call gpu_dgeam(blas_handle, 'N', 'N', nO, nO, 1.d0, r2%f(1,1,beta,gam), & - nO, 1.d0, Y_oovv%f(1,1,gam,beta), nO, r2%f(1,1,beta,gam), nO) + enddo + do j=1,nO + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, r2%f(1,j,1,gam), & + nO*nO, 1.d0, Y_oovv%f(1,j,gam,1), nO*nO*nV, r2%f(1,j,1,gam), nO*nO) enddo enddo call gpu_set_stream(blas_handle, gpu_default_stream) - do a=1,nV - call gpu_stream_destroy(stream(a)) - enddo - call gpu_synchronize() call gpu_deallocate(Y_oovv) @@ -684,15 +650,14 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & call gpu_synchronize() - do a=1,nV - call gpu_stream_create(stream(a)) - enddo do gam = 1, nV + call gpu_set_stream(blas_handle, stream(gam)) + do j=1,nO + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, -1.d0, X_ovvo%f(1,1,gam,j), & + nO, 1.d0, r2%f(1,j,1,gam), nO*nO, r2%f(1,j,1,gam), nO*nO) + enddo do beta = 1, nV - call gpu_set_stream(blas_handle, stream(beta)) - call gpu_dgeam(blas_handle, 'N', 'N', nO, nO, -1.d0, X_ovvo%f(1,beta,gam,1), & - nO*nV*nV, 1.d0, r2%f(1,1,beta,gam), nO, r2%f(1,1,beta,gam), nO) call gpu_dgeam(blas_handle, 'T', 'N', nO, nO, -1.d0, X_ovvo%f(1,gam,beta,1), & nO*nV*nV, 1.d0, r2%f(1,1,beta,gam), nO, r2%f(1,1,beta,gam), nO) enddo @@ -700,58 +665,41 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & call gpu_set_stream(blas_handle, gpu_default_stream) - do a=1,nV - call gpu_stream_destroy(stream(a)) - enddo - - call gpu_synchronize() + call gpu_synchronize call gpu_deallocate(tcc) call gpu_deallocate(tcc2) call gpu_deallocate(X_ovvo) - !----- type(gpu_double4) :: J1, K1 type(gpu_double4) :: Y_voov, Z_ovov + call gpu_allocate(J1,nO,nV,nV,nO) - call compute_J1_chol(nO,nV,t1%f,t2%f,d_cc_space_v_ovvo%f,d_cc_space_v_ovoo%f, & - d_cc_space_v_vvoo%f,J1%f) + call compute_J1_chol(nO,nV,t1,t2,d_cc_space_v_ovvo,d_cc_space_v_ovoo, & + d_cc_space_v_vvoo,d_cc_space_v_vo_chol,d_cc_space_v_vv_chol,J1) call gpu_allocate(K1,nO,nV,nO,nV) - call compute_K1_chol(nO,nV,t1%f,t2%f,d_cc_space_v_ovoo%f,d_cc_space_v_vvoo%f, & - d_cc_space_v_ovov%f,K1%f) + call compute_K1_chol(nO,nV,t1,t2,d_cc_space_v_ovoo,d_cc_space_v_vvoo, & + d_cc_space_v_ovov,d_cc_space_v_ov_chol,d_cc_space_v_vv_chol,K1) call gpu_allocate(X_ovvo,nO,nV,nV,nO) call gpu_allocate(Y_voov,nV,nO,nO,nV) - do a=1,nV - call gpu_stream_create(stream(a)) - enddo - - do i=1, nO - do a=1, nV - call gpu_set_stream(blas_handle, stream(a)) + do a=1, nV + call gpu_set_stream(blas_handle, stream(a)) + do i=1, nO call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, J1%f(1,a,1,i), & nO*nV, -0.5d0, K1%f(1,a,i,1), nO*nV*nO, X_ovvo%f(1,1,a,i), nO) - enddo - enddo - - do gam=1, nV - call gpu_set_stream(blas_handle, stream(gam)) - do v=1, nO - call gpu_dgeam(blas_handle, 'T', 'T', nV, nO, 2.d0, t2%f(1,v,1,gam), & - nO*nO, -1.d0, t2%f(1,v,gam,1), nO*nO*nV, Y_voov%f(1,1,v,gam), nV) + call gpu_dgeam(blas_handle, 'T', 'T', nV, nO, 2.d0, t2%f(1,i,1,a), & + nO*nO, -1.d0, t2%f(1,i,a,1), nO*nO*nV, Y_voov%f(1,1,i,a), nV) enddo enddo call gpu_allocate(Z_ovov,nO,nV,nO,nV) - do a=1,nV - call gpu_stream_destroy(stream(a)) - enddo - + call gpu_synchronize() call gpu_deallocate(J1) call gpu_set_stream(blas_handle, gpu_default_stream) @@ -769,35 +717,20 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & call gpu_allocate(X_ovov,nO,nV,nO,nV) call gpu_allocate(Y_ovov,nO,nV,nO,nV) -!TODO - !$omp parallel & - !$omp shared(nO,nV,K1,X_ovov,Y_ovov,t2) & - !$omp private(u,a,i,beta,gam) & - !$omp default(none) - !$omp do - do beta = 1, nV - do u = 1, nO - do a = 1, nV - do i = 1, nO - X_ovov%f(i,a,u,beta) = 0.5d0 * K1%f(u,a,i,beta) - enddo - enddo + do a=1, nV + call gpu_set_stream(blas_handle, stream(a)) + do j=1,nO + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, t2%f(1,j,1,a), & + nO*nO, 0.d0, t2%f(1,j,1,a), nO*nO, Y_ovov%f(1,a,j,1), nO*nV*nO) + enddo + do beta=1, nV + call gpu_dgeam(blas_handle, 'T', 'T', nO, nO, 0.5d0, K1%f(1,a,1,beta), & + nO*nV, 0.d0, K1%f(1,a,1,beta), nO*nV, X_ovov%f(1,a,1,beta), nO*nV) enddo enddo - !$omp end do nowait + call gpu_set_stream(blas_handle, gpu_default_stream) - !$omp do - do gam = 1, nV - do v = 1, nO - do a = 1, nV - do i = 1, nO - Y_ovov%f(i,a,v,gam) = t2%f(i,v,gam,a) - enddo - enddo - enddo - enddo - !$omp end do - !$omp end parallel + call gpu_synchronize() call gpu_dgemm(blas_handle, 'T','N',nO*nV,nO*nV,nO*nV, & -1d0, X_ovov%f(1,1,1,1), size(X_ovov%f,1) * size(X_ovov%f,2), & @@ -806,51 +739,23 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & call gpu_synchronize() - !$omp parallel & - !$omp shared(nO,nV,r2,Z_ovov) & - !$omp private(u,v,gam,beta) & - !$omp default(none) - !$omp do - do gam = 1, nV - do beta = 1, nV - do v = 1, nO - do u = 1, nO - r2%f(u,v,beta,gam) = r2%f(u,v,beta,gam) + Z_ovov%f(u,beta,v,gam) + Z_ovov%f(v,gam,u,beta) - enddo - enddo + do gam=1, nV + call gpu_set_stream(blas_handle, stream(gam)) + do j=1,nO + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, r2%f(1,j,1,gam), & + nO*nO, 1.d0, Z_ovov%f(1,1,j,gam), nO, r2%f(1,j,1,gam), nO*nO) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, K1%f(1,1,j,gam), & + nO, 0.d0, K1%f(1,1,j,gam), nO, X_ovov%f(1,gam,j,1), nO*nV*nO) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nO, 1.d0, t2%f(1,j,1,gam), & + nO*nO, 0.d0, t2%f(1,j,1,gam), nO*nO, Y_ovov%f(1,gam,j,1), nO*nV*nO) + enddo + do beta=1, nV + call gpu_dgeam(blas_handle, 'N', 'T', nO, nO, 1.d0, r2%f(1,1,beta,gam), & + nO, 1.d0, Z_ovov%f(1,gam,1,beta), nO*nV, r2%f(1,1,beta,gam), nO) enddo enddo - !$omp end do - !$omp end parallel - !$omp parallel & - !$omp shared(nO,nV,K1,X_ovov,Y_ovov,t2) & - !$omp private(u,v,gam,beta,i,a) & - !$omp default(none) - !$omp do - do a = 1, nV - do i = 1, nO - do gam = 1, nV - do u = 1, nO - X_ovov%f(u,gam,i,a) = K1%f(u,a,i,gam) - enddo - enddo - enddo - enddo - !$omp end do nowait - - !$omp do - do beta = 1, nV - do v = 1, nO - do a = 1, nV - do i = 1, nO - Y_ovov%f(i,a,v,beta) = t2%f(i,v,beta,a) - enddo - enddo - enddo - enddo - !$omp end do - !$omp end parallel + call gpu_set_stream(blas_handle, gpu_default_stream) call gpu_deallocate(K1) @@ -865,22 +770,17 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & call gpu_deallocate(Y_ovov) ! Change the sign for consistency with the code in spin orbitals - !$omp parallel & - !$omp shared(nO,nV,r2,Z_ovov) & - !$omp private(u,v,gam,beta) & - !$omp default(none) - !$omp do do gam = 1, nV + call gpu_set_stream(blas_handle, stream(gam)) + do j=1,nO + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, r2%f(1,j,1,gam), & + nO*nO, -1.d0, Z_ovov%f(1,gam,j,1), nO*nV*nO, r2%f(1,j,1,gam), nO*nO) + enddo do beta = 1, nV - do v = 1, nO - do u = 1, nO - r2%f(u,v,beta,gam) = -r2%f(u,v,beta,gam) + Z_ovov%f(u,gam,v,beta) + Z_ovov%f(v,beta,u,gam) - enddo - enddo + call gpu_dgeam(blas_handle, 'N', 'T', nO, nO, -1.d0, r2%f(1,1,beta,gam), & + nO, 1.d0, Z_ovov%f(1,beta,1,gam), nO*nV, r2%f(1,1,beta,gam), nO) enddo enddo - !$omp end do - !$omp end parallel call gpu_deallocate(Z_ovov) @@ -929,34 +829,42 @@ subroutine compute_A1_chol(nO,nV,t1,t2,tau,d_cc_space_v_vooo, & ! A1(u,v,i,j) = cc_space_v_oooo(u,v,i,j) ! A1(u,v,i,j) += cc_space_v_ovoo(u,a,i,j) * t1(v,a) & - call dgemm('N','N', nO, nO*nO*nO, nV, & - 1d0, t1%f , size(t1%f,1), & - d_cc_space_v_vooo%f, size(d_cc_space_v_vooo%f,1), & - 0d0, Y_oooo%f, size(Y_oooo%f,1)) + call gpu_dgemm(blas_handle, 'N','N', nO, nO*nO*nO, nV, & + 1d0, t1%f(1,1) , size(t1%f,1), & + d_cc_space_v_vooo%f(1,1,1,1), size(d_cc_space_v_vooo%f,1), & + 0d0, Y_oooo%f(1,1,1,1), size(Y_oooo%f,1)) - !$omp parallel & - !$omp private(u,v,i,j) & - !$omp default(shared) - !$omp do collapse(2) - do j = 1, nO - do i = 1, nO - do v = 1, nO - do u = 1, nO - A1%f(u,v,i,j) = d_cc_space_v_oooo%f(u,v,i,j) + Y_oooo%f(v,u,j,i) + Y_oooo%f(u,v,i,j) - enddo - enddo - enddo + type(gpu_stream) :: stream(nO) + + do i=1, nO + call gpu_stream_create(stream(i)) + enddo + + call gpu_synchronize() + + do j = 1, nO + call gpu_set_stream(blas_handle, stream(j)) + do i = 1, nO + call gpu_dgeam(blas_handle, 'N', 'T', nO, nO, 1.d0, d_cc_space_v_oooo%f(1,1,i,j), & + nO, 1.d0, Y_oooo%f(1,1,j,i), nO, A1%f(1,1,i,j), nO) + enddo + call gpu_dgeam(blas_handle, 'N', 'N', nO, nO*nO, 1.d0, A1%f(1,1,1,j), & + nO, 1.d0, Y_oooo%f(1,1,1,j), nO, A1%f(1,1,1,j), nO) + enddo + + call gpu_set_stream(blas_handle, gpu_default_stream) + do i=1, nO + call gpu_stream_destroy(stream(i)) enddo - !$omp end do - !$omp end parallel call gpu_deallocate(Y_oooo) ! A1(u,v,i,j) += cc_space_v_vvoo(a,b,i,j) * tau(u,v,a,b) - call dgemm('N','N', nO*nO, nO*nO, nV*nV, & - 1d0, tau%f , size(tau%f,1) * size(tau%f,2), & - d_cc_space_v_vvoo%f, size(d_cc_space_v_vvoo%f,1) * size(d_cc_space_v_vvoo%f,2), & - 1d0, A1%f , size(A1%f,1) * size(A1%f,2)) + call gpu_dgemm(blas_handle, 'N','N', nO*nO, nO*nO, nV*nV, & + 1d0, tau%f(1,1,1,1), size(tau%f,1) * size(tau%f,2), & + d_cc_space_v_vvoo%f(1,1,1,1), size(d_cc_space_v_vvoo%f,1) * size(d_cc_space_v_vvoo%f,2), & + 1d0, A1%f(1,1,1,1), size(A1%f,1) * size(A1%f,2)) + call gpu_synchronize() end @@ -998,364 +906,364 @@ end ! g_vir -subroutine compute_g_vir_chol(nO,nV,t1,t2,H_vv,g_vir) +subroutine compute_g_vir_chol(nO,nV,t1,t2,H_vv,d_cc_space_f_vo, & + d_cc_space_v_ov_chol, d_cc_space_v_vv_chol, g_vir) use gpu implicit none integer, intent(in) :: nO,nV - double precision, intent(in) :: t1(nO, nV), H_vv(nV, nV) - double precision, intent(in) :: t2(nO, nO, nV, nV) - double precision, intent(out) :: g_vir(nV, nV) + type(gpu_double2), intent(in) :: t1, H_vv, d_cc_space_f_vo + type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol, d_cc_space_v_vv_chol + type(gpu_double4), intent(in) :: t2 + type(gpu_double2), intent(out) :: g_vir integer :: a,tmp_a,b,k,l,c,d,tmp_c,tmp_d,i,j,u,v, beta, gam - call dgemm('N','N',nV,nV,nO, & - -1d0, cc_space_f_vo , size(cc_space_f_vo,1), & - t1 , size(t1,1), & - 0d0, g_vir, size(g_vir,1)) + type(gpu_stream) :: stream(max(nO,4)) - double precision, allocatable :: tmp_k(:), tmp_vo(:,:,:), tmp_vo2(:,:,:) - allocate(tmp_k(cholesky_mo_num)) - call dgemm('N','N', cholesky_mo_num, 1, nO*nV, 1.d0, & - cc_space_v_ov_chol, cholesky_mo_num, t1, nO*nV, 0.d0, tmp_k, cholesky_mo_num) - - call dgemm('T','N', nV*nV, 1, cholesky_mo_num, 2.d0, & - cc_space_v_vv_chol, cholesky_mo_num, tmp_k, cholesky_mo_num, 1.d0, & - g_vir, nV*nV) - deallocate(tmp_k) - - allocate(tmp_vo(cholesky_mo_num,nV,nO)) - call dgemm('N','T',cholesky_mo_num*nV, nO, nV, 1.d0, & - cc_space_v_vv_chol, cholesky_mo_num*nV, t1, nO, 0.d0, tmp_vo, cholesky_mo_num*nV) - - allocate(tmp_vo2(cholesky_mo_num,nO,nV)) - do beta=1,nV - do i=1,nO - do k=1,cholesky_mo_num - tmp_vo2(k,i,beta) = -tmp_vo(k,beta,i) - enddo - enddo - enddo - deallocate(tmp_vo) - - do beta = 1, nV - do a = 1, nV - g_vir(a,beta) = g_vir(a,beta) + H_vv(a,beta) - enddo + do i=1,max(nO,4) + call gpu_stream_create(stream(i)) enddo - call dgemm('T','N', nV, nV, nO*cholesky_mo_num, 1.d0, & - cc_space_v_ov_chol, cholesky_mo_num*nO, & - tmp_vo2, cholesky_mo_num*nO, 1.d0, g_vir, nV) + call gpu_set_stream(blas_handle, stream(1)) + call gpu_dgemm(blas_handle, 'N','N',nV,nV,nO, & + -1d0, d_cc_space_f_vo%f(1,1) , size(d_cc_space_f_vo%f,1), & + t1%f(1,1) , size(t1%f,1), & + 0d0, g_vir%f(1,1), size(g_vir%f,1)) + + type(gpu_double1) :: tmp_k + type(gpu_double3) :: tmp_vo, tmp_vo2 + + call gpu_allocate(tmp_k,cholesky_mo_num) + + call gpu_set_stream(blas_handle, stream(2)) + call gpu_dgemm(blas_handle, 'N','N', cholesky_mo_num, 1, nO*nV, 1.d0, & + d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num, t1%f(1,1), nO*nV, 0.d0, tmp_k%f(1), cholesky_mo_num) + + call gpu_dgemm(blas_handle, 'T','N', nV*nV, 1, cholesky_mo_num, 2.d0, & + d_cc_space_v_vv_chol%f(1,1,1), cholesky_mo_num, tmp_k%f(1), cholesky_mo_num, 1.d0, & + g_vir%f(1,1), nV*nV) + + call gpu_set_stream(blas_handle, stream(3)) + call gpu_allocate(tmp_vo,cholesky_mo_num,nV,nO) + + call gpu_dgemm(blas_handle, 'N','T',cholesky_mo_num*nV, nO, nV, 1.d0, & + d_cc_space_v_vv_chol%f(1,1,1), cholesky_mo_num*nV, t1%f(1,1), nO, 0.d0, tmp_vo%f(1,1,1), cholesky_mo_num*nV) + + call gpu_allocate(tmp_vo2,cholesky_mo_num,nO,nV) + + call gpu_synchronize() + call gpu_deallocate(tmp_k) + + do i=1,nO + call gpu_set_stream(blas_handle, stream(i)) + call gpu_dgeam(blas_handle, 'N', 'N', cholesky_mo_num, nV, -1.d0, tmp_vo%f(1,1,i), & + cholesky_mo_num, 0.d0, tmp_vo%f(1,1,i), cholesky_mo_num, tmp_vo2%f(1,i,1), cholesky_mo_num*nO) + enddo + + call gpu_set_stream(blas_handle, gpu_default_stream) + + do i=1,max(nO,4) + call gpu_stream_destroy(stream(i)) + enddo + call gpu_deallocate(tmp_vo) + + call gpu_dgeam(blas_handle, 'N', 'N', nV, nV, 1.d0, g_vir%f(1,1), & + nV, 1.d0, H_vv%f(1,1), nV, g_vir%f(1,1), nV) + + call gpu_dgemm(blas_handle, 'T','N', nV, nV, nO*cholesky_mo_num, 1.d0, & + d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num*nO, & + tmp_vo2%f(1,1,1), cholesky_mo_num*nO, 1.d0, g_vir%f(1,1), nV) + + call gpu_synchronize() + call gpu_deallocate(tmp_vo2) end ! J1 -subroutine compute_J1_chol(nO,nV,t1,t2,v_ovvo,v_ovoo,v_vvoo,J1) +subroutine compute_J1_chol(nO,nV,t1,t2,v_ovvo,v_ovoo,v_vvoo,d_cc_space_v_vo_chol,d_cc_space_v_vv_chol,J1) use gpu implicit none - integer, intent(in) :: nO,nV - double precision, intent(in) :: t1(nO, nV) - double precision, intent(in) :: t2(nO, nO, nV, nV) - double precision, intent(in) :: v_ovvo(nO,nV,nV,nO), v_ovoo(nO,nV,nO,nO) - double precision, intent(in) :: v_vvoo(nV,nV,nO,nO) - double precision, intent(out) :: J1(nO, nV, nV, nO) + integer, intent(in) :: nO,nV + type(gpu_double2), intent(in) :: t1 + type(gpu_double4), intent(in) :: t2, v_ovvo, v_ovoo, v_vvoo + type(gpu_double4), intent(out) :: J1 + type(gpu_double3), intent(out) :: d_cc_space_v_vo_chol,d_cc_space_v_vv_chol integer :: a,tmp_a,b,k,l,c,d,tmp_c,tmp_d,i,j,u,v, beta, gam - double precision, allocatable :: X_ovoo(:,:,:,:), Y_ovov(:,:,:,:) - allocate(X_ovoo(nO,nV,nO,nO),Y_ovov(nO,nV,nO,nV)) + type(gpu_double4) :: X_ovoo, Y_ovov - !$omp parallel & - !$omp shared(nO,nV,J1,v_ovvo,v_ovoo,X_ovoo) & - !$omp private(i,j,a,u,beta) & - !$omp default(none) - do i = 1, nO - !$omp do - do beta = 1, nV - do a = 1, nV - do u = 1, nO - J1(u,a,beta,i) = v_ovvo(u,a,beta,i) - enddo - enddo - enddo - !$omp end do nowait - enddo + call gpu_allocate(X_ovoo,nO,nV,nO,nO) - !$omp do collapse(2) - do j = 1, nO - do i = 1, nO - do a = 1, nV - do u = 1, nO - X_ovoo(u,a,i,j) = v_ovoo(u,a,j,i) - enddo - enddo - enddo - enddo - !$omp end do - !$omp end parallel + type(gpu_stream) :: stream(nV) - call dgemm('N','N',nO*nV*nO,nV,nO, & - -1d0, X_ovoo, size(X_ovoo,1) * size(X_ovoo,2) * size(X_ovoo,3), & - t1 , size(t1,1), & - 0d0, Y_ovov, size(Y_ovov,1) * size(Y_ovov,2) * size(Y_ovov,3)) - - !$omp parallel & - !$omp shared(nO,nV,J1,Y_ovov) & - !$omp private(i,beta,a,u) & - !$omp default(none) - do i = 1, nO - !$omp do - do beta = 1, nV - do a = 1, nV - do u = 1, nO - J1(u,a,beta,i) = J1(u,a,beta,i) + Y_ovov(u,a,i,beta) - enddo - enddo - enddo - !$omp end do nowait - enddo - !$omp end parallel - deallocate(X_ovoo) - - double precision, allocatable :: tmp_cc(:,:,:), J1_tmp(:,:,:,:) - allocate(tmp_cc(cholesky_mo_num,nV,nO), J1_tmp(nV,nO,nV,nO)) - - call dgemm('N','T', cholesky_mo_num*nV, nO, nV, 1.d0, & - cc_space_v_vv_chol, cholesky_mo_num*nV, & - t1, nO, & - 0.d0, tmp_cc, cholesky_mo_num*nV) - - call dgemm('T','N', nV*nO, nV*nO, cholesky_mo_num, 1.d0, & - tmp_cc, cholesky_mo_num, cc_space_v_vo_chol, cholesky_mo_num, & - 0.d0, J1_tmp, nV*nO) - - deallocate(tmp_cc) do i=1,nO - do b=1,nV - do a=1,nV - do u=1,nO - J1(u,a,b,i) = J1(u,a,b,i) + J1_tmp(b,u,a,i) - enddo - enddo - enddo - enddo - - deallocate(J1_tmp) - - !- cc_space_v_vvoo(a,b,i,j) * (0.5d0 * t2(u,j,b,beta) + t1(u,b) * t1(j,beta)) & - double precision, allocatable :: X_voov(:,:,:,:), Z_ovvo(:,:,:,:) - allocate(X_voov(nV,nO,nO,nV), Z_ovvo(nO,nV,nV,nO)) - !$omp parallel & - !$omp shared(nO,nV,t2,t1,Y_ovov,X_voov,v_vvoo) & - !$omp private(i,beta,a,u,b,j) & - !$omp default(none) - !$omp do - do b = 1, nV - do j = 1, nO - do beta = 1, nV - do u = 1, nO - Y_ovov(u,beta,j,b) = 0.5d0 * t2(u,j,b,beta) + t1(u,b) * t1(j,beta) - enddo - enddo - enddo - enddo - !$omp end do nowait - - !$omp do - do b = 1, nV - do j = 1, nO - do i = 1, nO - do a = 1, nV - X_voov(a,i,j,b) = v_vvoo(a,b,i,j) - enddo - enddo - enddo - enddo - !$omp end do - !$omp end parallel - - call dgemm('N','T',nO*nV,nV*nO,nO*nV, & - -1d0, Y_ovov, size(Y_ovov,1) * size(Y_ovov,2), & - X_voov, size(X_voov,1) * size(X_voov,2), & - 0d0, Z_ovvo, size(Z_ovvo,1) * size(Z_ovvo,2)) - deallocate(X_voov) - - double precision, allocatable :: X_ovvo(:,:,:,:), Y_vovo(:,:,:,:) - allocate(X_ovvo(nO,nV,nV,nO),Y_vovo(nV,nO,nV,nO)) - !$omp parallel & - !$omp shared(nO,nV,J1,Z_ovvo,t2,Y_vovo,v_vvoo,X_ovvo) & - !$omp private(i,beta,a,u,j,b) & - !$omp default(none) - do i = 1, nO - !$omp do - do beta = 1, nV - do a = 1, nV - do u = 1, nO - J1(u,a,beta,i) = J1(u,a,beta,i) + Z_ovvo(u,beta,a,i) - enddo - enddo - enddo - !$omp end do nowait - enddo - - !+ 0.5d0 * (2d0 * cc_space_v_vvoo(a,b,i,j) - cc_space_v_vvoo(b,a,i,j)) * t2(u,j,beta,b) - do j = 1, nO - !$omp do - do b = 1, nV - do i = 1, nO - do a = 1, nV - Y_vovo(a,i,b,j) = 0.5d0 * (2d0 * v_vvoo(a,b,i,j) - v_vvoo(b,a,i,j)) - enddo - enddo - enddo - !$omp end do nowait + call gpu_stream_create(stream(i)) enddo do j = 1, nO - !$omp do - do b = 1, nV - do beta = 1, nV - do u = 1, nO - X_ovvo(u,beta,b,j) = t2(u,j,beta,b) - enddo - enddo + call gpu_set_stream(blas_handle, stream(j)) + do i = 1, nO + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, v_ovoo%f(1,1,j,i), & + nO, 0.d0, X_ovoo%f(1,1,i,j), nO, X_ovoo%f(1,1,i,j), nO) enddo - !$omp end do nowait enddo - !$omp end parallel - call dgemm('N','T',nO*nV,nV*nO,nV*nO, & - 1d0, X_ovvo, size(X_ovvo,1) * size(X_ovvo,2), & - Y_vovo, size(Y_vovo,1) * size(Y_vovo,2), & - 0d0, Z_ovvo, size(Z_ovvo,1) * size(Z_ovvo,2)) + call gpu_set_stream(blas_handle, gpu_default_stream) + + do i=1,nO + call gpu_stream_destroy(stream(i)) + enddo + + call gpu_allocate(Y_ovov,nO,nV,nO,nV) + + call gpu_dgemm(blas_handle, 'N','N',nO*nV*nO,nV,nO, & + -1d0, X_ovoo%f(1,1,1,1), size(X_ovoo%f,1) * size(X_ovoo%f,2) * size(X_ovoo%f,3), & + t1%f(1,1) , size(t1%f,1), & + 0d0, Y_ovov%f(1,1,1,1), size(Y_ovov%f,1) * size(Y_ovov%f,2) * size(Y_ovov%f,3)) + + + call gpu_copy(v_ovvo, J1) + + call gpu_synchronize() + + do a=1,nV + call gpu_stream_create(stream(a)) + enddo - !$omp parallel & - !$omp shared(nO,nV,J1,Z_ovvo) & - !$omp private(i,beta,a,u) & - !$omp default(none) do i = 1, nO - !$omp do do beta = 1, nV - do a = 1, nV - do u = 1, nO - J1(u,a,beta,i) = J1(u,a,beta,i) + Z_ovvo(u,beta,a,i) - enddo - enddo + call gpu_set_stream(blas_handle, stream(beta)) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, J1%f(1,1,beta,i), & + nO, 1.d0, Y_ovov%f(1,1,i,beta), nO, J1%f(1,1,beta,i), nO) enddo - !$omp end do nowait enddo - !$omp end parallel - deallocate(X_ovvo,Z_ovvo,Y_ovov) + call gpu_allocate(tmp_cc,cholesky_mo_num,nV,nO) + call gpu_allocate(J1_tmp,nV,nO,nV,nO) + + call gpu_set_stream(blas_handle, gpu_default_stream) + + type(gpu_double4) :: J1_tmp + type(gpu_double3) :: tmp_cc + + call gpu_dgemm(blas_handle, 'N','T', cholesky_mo_num*nV, nO, nV, 1.d0, & + d_cc_space_v_vv_chol%f(1,1,1), cholesky_mo_num*nV, & + t1%f(1,1), nO, & + 0.d0, tmp_cc%f(1,1,1), cholesky_mo_num*nV) + + call gpu_dgemm(blas_handle, 'T','N', nV*nO, nV*nO, cholesky_mo_num, 1.d0, & + tmp_cc%f(1,1,1), cholesky_mo_num, d_cc_space_v_vo_chol%f(1,1,1), cholesky_mo_num, & + 0.d0, J1_tmp%f(1,1,1,1), nV*nO) + + + call gpu_deallocate(X_ovoo) + + call gpu_synchronize() + call gpu_deallocate(tmp_cc) + + do i = 1, nO + do a = 1, nV + call gpu_set_stream(blas_handle, stream(a)) + call gpu_dgeam(blas_handle, 'N', 'T', nO, nV, 1.d0, J1%f(1,a,1,i), & + nO*nV, 1.d0, J1_tmp%f(1,1,a,i), nV, J1%f(1,a,1,i), nO*nV) + enddo + enddo + + type(gpu_double4) :: X_voov, Z_ovvo + + call gpu_allocate(X_voov,nV,nO,nO,nV) + call gpu_allocate(Z_ovvo,nO,nV,nV,nO) + + do j = 1, nO + do beta = 1, nV + call gpu_set_stream(blas_handle, stream(beta)) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 0.5d0, t2%f(1,j,1,beta), & + nO*nO, t1%f(j,beta), t1%f(1,1), nO, Y_ovov%f(1,beta,j,1), nO*nV*nO) + enddo + enddo + + do b = 1, nV + call gpu_set_stream(blas_handle, stream(b)) + call gpu_dgeam(blas_handle, 'N', 'N', nV, nO*nO, 1.d0, v_vvoo%f(1,b,1,1), & + nV*nV, 0.d0, X_voov%f(1,1,1,b), nV, X_voov%f(1,1,1,b), nV) + enddo + + call gpu_set_stream(blas_handle, gpu_default_stream) + + call gpu_synchronize() + call gpu_deallocate(J1_tmp) + + call gpu_dgemm(blas_handle, 'N','T',nO*nV,nV*nO,nO*nV, & + -1d0, Y_ovov%f(1,1,1,1), size(Y_ovov%f,1) * size(Y_ovov%f,2), & + X_voov%f(1,1,1,1), size(X_voov%f,1) * size(X_voov%f,2), & + 0d0, Z_ovvo%f(1,1,1,1), size(Z_ovvo%f,1) * size(Z_ovvo%f,2)) + + call gpu_synchronize() + + do i = 1, nO + do a = 1, nV + call gpu_set_stream(blas_handle, stream(a)) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, J1%f(1,a,1,i), & + nO*nV, 1.d0, Z_ovvo%f(1,1,a,i), nO, J1%f(1,a,1,i), nO*nV) + enddo + enddo + + type(gpu_double4) :: X_ovvo, Y_vovo + call gpu_allocate(Y_vovo,nV,nO,nV,nO) + + do j = 1, nO + do i = 1, nO + call gpu_set_stream(blas_handle, stream(i)) + call gpu_dgeam(blas_handle, 'N', 'T', nV, nV, 1.d0, v_vvoo%f(1,1,i,j), & + nV, -0.5d0, v_vvoo%f(1,1,i,j), nV, Y_vovo%f(1,i,1,j), nO*nV) + enddo + enddo + + call gpu_allocate(X_ovvo,nO,nV,nV,nO) + + do j = 1, nO + do b = 1, nV + call gpu_set_stream(blas_handle, stream(b)) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, t2%f(1,j,1,b), & + nO*nO, 0.d0, t2%f(1,j,1,b), nO*nO, X_ovvo%f(1,1,b,j), nO) + enddo + enddo + + call gpu_set_stream(blas_handle, gpu_default_stream) + call gpu_synchronize() + call gpu_deallocate(X_voov) + + call gpu_dgemm(blas_handle, 'N','T',nO*nV,nV*nO,nV*nO, & + 1d0, X_ovvo%f(1,1,1,1), size(X_ovvo%f,1) * size(X_ovvo%f,2), & + Y_vovo%f(1,1,1,1), size(Y_vovo%f,1) * size(Y_vovo%f,2), & + 0d0, Z_ovvo%f(1,1,1,1), size(Z_ovvo%f,1) * size(Z_ovvo%f,2)) + + call gpu_synchronize() + + do i = 1, nO + do beta = 1, nV + call gpu_set_stream(blas_handle, stream(beta)) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, J1%f(1,1,beta,i), & + nO, 1.d0, Z_ovvo%f(1,beta,1,i), nO*nV, J1%f(1,1,beta,i), nO) + enddo + enddo + + call gpu_set_stream(blas_handle, gpu_default_stream) + call gpu_deallocate(Y_ovov) + call gpu_deallocate(X_ovvo) + + do a = 1, nV + call gpu_stream_destroy(stream(a)) + enddo + + call gpu_deallocate(Z_ovvo) end ! K1 -subroutine compute_K1_chol(nO,nV,t1,t2,v_ovoo,v_vvoo,v_ovov,K1) +subroutine compute_K1_chol(nO,nV,t1,t2,v_ovoo,v_vvoo,v_ovov, & + d_cc_space_v_ov_chol,d_cc_space_v_vv_chol,K1) use gpu implicit none - integer, intent(in) :: nO,nV - double precision, intent(in) :: t1(nO, nV) - double precision, intent(in) :: t2(nO, nO, nV, nV) - double precision, intent(in) :: v_vvoo(nV,nV,nO,nO), v_ovov(nO,nV,nO,nV) - double precision, intent(in) :: v_ovoo(nO,nV,nO,nO) - double precision, intent(out) :: K1(nO, nV, nO, nV) + integer, intent(in) :: nO,nV + type(gpu_double2), intent(in) :: t1 + type(gpu_double4), intent(in) :: t2, v_vvoo, v_ovov, v_ovoo + type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol, d_cc_space_v_vv_chol + type(gpu_double4), intent(out) :: K1 - double precision, allocatable :: X(:,:,:,:), Y(:,:,:,:), Z(:,:,:,:) + type(gpu_double4) :: X, Y, Z integer :: a,tmp_a,b,k,l,c,d,tmp_c,tmp_d,i,j,u,v, beta, gam - allocate(X(nV,nO,nV,nO),Y(nO,nV,nV,nO),Z(nO,nV,nV,nO)) - !$omp parallel & - !$omp shared(nO,nV,K1,X,Y,v_vvoo,v_ovov,t1,t2) & - !$omp private(i,beta,a,u,j,b) & - !$omp default(none) - !$omp do - do beta = 1, nV - do i = 1, nO - do a = 1, nV - do u = 1, nO - K1(u,a,i,beta) = v_ovov(u,a,i,beta) - enddo - enddo - enddo + call gpu_copy(v_ovov, K1) + + type(gpu_stream) :: stream(nV) + do a = 1, nV + call gpu_stream_create(stream(a)) enddo - !$omp end do nowait + + call gpu_allocate(X,nV,nO,nV,nO) do i = 1, nO - !$omp do do a = 1, nV - do j = 1, nO - do b = 1, nV - X(b,j,a,i) = - v_vvoo(b,a,i,j) - enddo - enddo + call gpu_set_stream(blas_handle, stream(a)) + call gpu_dgeam(blas_handle, 'N', 'N', nV, nO, -1.d0, v_vvoo%f(1,a,i,1), & + nV*nV*nO, 0.d0, v_vvoo%f(1,a,i,1), nV*nV*nO, X%f(1,1,a,i), nV) enddo - !$omp end do nowait enddo + call gpu_allocate(Y,nO,nV,nV,nO) + do j = 1, nO - !$omp do - do b = 1, nV - do beta = 1, nV - do u = 1, nO - Y(u,beta,b,j) = 0.5d0 * t2(u,j,b,beta) + t1(u,b) * t1(j,beta) - enddo - enddo + do beta = 1, nV + call gpu_set_stream(blas_handle, stream(beta)) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 0.5d0, t2%f(1,j,1,beta), & + nO*nO, t1%f(j,beta), t1%f(1,1), nO, Y%f(1,beta,1,j), nO*nV) enddo - !$omp end do enddo - !$omp end parallel - call dgemm('N','N',nO*nV*nO,nV,nO, & - -1d0, v_ovoo, size(v_ovoo,1) * size(v_ovoo,2) * size(v_ovoo,3), & - t1 , size(t1,1), & - 1d0, K1 , size(K1,1) * size(K1,2) * size(K1,3)) + call gpu_set_stream(blas_handle, gpu_default_stream) - double precision, allocatable :: K1tmp(:,:,:,:), t1v(:,:,:) - allocate(K1tmp(nO,nO,nV,nV), t1v(cholesky_mo_num,nO,nO)) + call gpu_dgemm(blas_handle, 'N','N',nO*nV*nO,nV,nO, & + -1d0, v_ovoo%f(1,1,1,1), size(v_ovoo%f,1) * size(v_ovoo%f,2) * size(v_ovoo%f,3), & + t1%f(1,1) , size(t1%f,1), & + 1d0, K1%f(1,1,1,1) , size(K1%f,1) * size(K1%f,2) * size(K1%f,3)) - call dgemm('N','T', cholesky_mo_num*nO, nO, nV, 1.d0, & - cc_space_v_ov_chol, cholesky_mo_num*nO, t1, nO, 0.d0, & - t1v, cholesky_mo_num*nO) + type(gpu_double4) :: K1tmp + type(gpu_double3) :: t1v - call dgemm('T','N', nO*nO, nV*nV, cholesky_mo_num, 1.d0, & - t1v, cholesky_mo_num, cc_space_v_vv_chol, cholesky_mo_num, 0.d0, & - K1tmp, nO*nO) + call gpu_allocate(t1v,cholesky_mo_num,nO,nO) + + call gpu_dgemm(blas_handle, 'N','T', cholesky_mo_num*nO, nO, nV, 1.d0, & + d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num*nO, t1%f(1,1), nO, 0.d0, & + t1v%f(1,1,1), cholesky_mo_num*nO) + + call gpu_allocate(K1tmp,nO,nO,nV,nV) + + call gpu_dgemm(blas_handle, 'T','N', nO*nO, nV*nV, cholesky_mo_num, 1.d0, & + t1v%f(1,1,1), cholesky_mo_num, d_cc_space_v_vv_chol%f(1,1,1), cholesky_mo_num, 0.d0, & + K1tmp%f(1,1,1,1), nO*nO) + + call gpu_allocate(Z,nO,nV,nV,nO) + call gpu_synchronize() - deallocate(t1v) ! Y(u,beta,b,j) * X(b,j,a,i) = Z(u,beta,a,i) - call dgemm('N','N',nV*nO,nO*nV,nV*nO, & - 1d0, Y, size(Y,1) * size(Y,2), & - X, size(X,1) * size(X,2), & - 0d0, Z, size(Z,1) * size(Z,2)) + call gpu_dgemm(blas_handle, 'N','N',nV*nO,nO*nV,nV*nO, & + 1d0, Y%f(1,1,1,1), size(Y%f,1) * size(Y%f,2), & + X%f(1,1,1,1), size(X%f,1) * size(X%f,2), & + 0d0, Z%f(1,1,1,1), size(Z%f,1) * size(Z%f,2)) - !$omp parallel & - !$omp shared(nO,nV,K1,Z,K1tmp) & - !$omp private(i,beta,a,u) & - !$omp default(none) - !$omp do - do beta = 1, nV - do i = 1, nO - do a = 1, nV - do u = 1, nO - K1(u,a,i,beta) = K1(u,a,i,beta) + K1tmp(u,i,a,beta) + Z(u,beta,a,i) - enddo - enddo + call gpu_synchronize() + call gpu_deallocate(t1v) + + do i = 1, nO + do beta = 1, nV + call gpu_set_stream(blas_handle, stream(beta)) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, K1%f(1,1,i,beta), & + nO, 1.d0, K1tmp%f(1,i,1,beta), nO*nO, K1%f(1,1,i,beta), nO) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, K1%f(1,1,i,beta), & + nO, 1.d0, Z%f(1,beta,1,i), nO*nV, K1%f(1,1,i,beta), nO) enddo enddo - !$omp end do - !$omp end parallel - deallocate(K1tmp,X,Y,Z) + call gpu_deallocate(X) + call gpu_deallocate(Y) + + do a = 1, nV + call gpu_stream_destroy(stream(a)) + enddo + + call gpu_deallocate(K1tmp) + call gpu_deallocate(Z) end From 9ad69bb27dc4195ae2ae2c9ea2f280156c20366e Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 9 Jul 2024 03:27:54 +0200 Subject: [PATCH 117/159] GPU accelerated CCSD --- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 75 +++++++++++++------------- 1 file changed, 37 insertions(+), 38 deletions(-) diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index a185df13..24fcc5af 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -507,7 +507,8 @@ subroutine compute_r2_space_chol(nO,nV,t1,t2,tau,H_oo,H_vv, & call gpu_allocate(g_occ,nO,nO) call compute_g_vir_chol(nO,nV,t1,t2,H_vv,d_cc_space_f_vo, & d_cc_space_v_ov_chol, d_cc_space_v_vv_chol, g_vir) - call compute_g_occ_chol(nO,nV,t1%f,t2%f,H_oo%f,g_occ%f) + call compute_g_occ_chol(nO,nV,t1,t2,H_oo, & + d_cc_space_f_vo, d_cc_space_v_ov_chol, d_cc_space_v_oo_chol, d_cc_space_v_ovoo, g_occ) type(gpu_double4) :: Y_oovv call gpu_allocate(Y_oovv,nO,nO,nV,nV) @@ -870,37 +871,42 @@ end ! g_occ -subroutine compute_g_occ_chol(nO,nV,t1,t2,H_oo,g_occ) +subroutine compute_g_occ_chol(nO,nV,t1,t2,H_oo, & + d_cc_space_f_vo, d_cc_space_v_ov_chol, d_cc_space_v_oo_chol, d_cc_space_v_ovoo, g_occ) use gpu implicit none integer, intent(in) :: nO,nV - double precision, intent(in) :: t1(nO, nV), H_oo(nO, nO) - double precision, intent(in) :: t2(nO, nO, nV, nV) - double precision, intent(out) :: g_occ(nO, nO) + type(gpu_double2), intent(in) :: t1, H_oo, d_cc_space_f_vo + type(gpu_double3), intent(in) :: d_cc_space_v_ov_chol, d_cc_space_v_oo_chol + type(gpu_double4), intent(in) :: t2, d_cc_space_v_ovoo + type(gpu_double2), intent(out) :: g_occ - g_occ = H_oo + call gpu_copy(H_oo, g_occ) - call dgemm('N','N',nO,nO,nV, & - 1d0, t1, size(t1,1), & - cc_space_f_vo, size(cc_space_f_vo,1), & - 1d0, g_occ, size(g_occ,1)) + call gpu_dgemm(blas_handle, 'N','N',nO,nO,nV, & + 1d0, t1%f(1,1), size(t1%f,1), & + d_cc_space_f_vo%f(1,1), size(d_cc_space_f_vo%f,1), & + 1d0, g_occ%f(1,1), size(g_occ%f,1)) - double precision, allocatable :: X(:) - allocate(X(cholesky_mo_num)) - call dgemv('N',cholesky_mo_num,nO*nV,2.d0, & - cc_space_v_ov_chol, cholesky_mo_num, & - t1, 1, 0.d0, X, 1) + type(gpu_double1) :: X + call gpu_allocate(X,cholesky_mo_num) - call dgemv('T',cholesky_mo_num,nO*nO,1.d0, & - cc_space_v_oo_chol, cholesky_mo_num, & - X, 1, 1.d0, g_occ, 1) - deallocate(X) + call gpu_dgemv(blas_handle, 'N',cholesky_mo_num,nO*nV,2.d0, & + d_cc_space_v_ov_chol%f(1,1,1), cholesky_mo_num, & + t1%f(1,1), 1, 0.d0, X%f(1), 1) - call dgemv('T',nO*nV,nO*nO,-1.d0, & - cc_space_v_ovoo, nO*nV, & - t1, 1, 1.d0, g_occ, 1) + call gpu_dgemv(blas_handle, 'T',cholesky_mo_num,nO*nO,1.d0, & + d_cc_space_v_oo_chol%f(1,1,1), cholesky_mo_num, & + X%f(1), 1, 1.d0, g_occ%f(1,1), 1) + + call gpu_dgemv(blas_handle, 'T',nO*nV,nO*nO,-1.d0, & + d_cc_space_v_ovoo%f(1,1,1,1), nO*nV, & + t1%f(1,1), 1, 1.d0, g_occ%f(1,1), 1) + + call gpu_synchronize() + call gpu_deallocate(X) end @@ -1193,22 +1199,15 @@ subroutine compute_K1_chol(nO,nV,t1,t2,v_ovoo,v_vvoo,v_ovov, & enddo call gpu_allocate(X,nV,nO,nV,nO) - - do i = 1, nO - do a = 1, nV - call gpu_set_stream(blas_handle, stream(a)) - call gpu_dgeam(blas_handle, 'N', 'N', nV, nO, -1.d0, v_vvoo%f(1,a,i,1), & - nV*nV*nO, 0.d0, v_vvoo%f(1,a,i,1), nV*nV*nO, X%f(1,1,a,i), nV) - enddo - enddo - call gpu_allocate(Y,nO,nV,nV,nO) - do j = 1, nO - do beta = 1, nV - call gpu_set_stream(blas_handle, stream(beta)) - call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 0.5d0, t2%f(1,j,1,beta), & - nO*nO, t1%f(j,beta), t1%f(1,1), nO, Y%f(1,beta,1,j), nO*nV) + do a = 1, nV + call gpu_set_stream(blas_handle, stream(a)) + do i = 1, nO + call gpu_dgeam(blas_handle, 'N', 'N', nV, nO, -1.d0, v_vvoo%f(1,a,i,1), & + nV*nV*nO, 0.d0, v_vvoo%f(1,a,i,1), nV*nV*nO, X%f(1,1,a,i), nV) + call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 0.5d0, t2%f(1,i,1,a), & + nO*nO, t1%f(i,a), t1%f(1,1), nO, Y%f(1,a,1,i), nO*nV) enddo enddo @@ -1246,9 +1245,9 @@ subroutine compute_K1_chol(nO,nV,t1,t2,v_ovoo,v_vvoo,v_ovov, & call gpu_synchronize() call gpu_deallocate(t1v) + do beta = 1, nV + call gpu_set_stream(blas_handle, stream(beta)) do i = 1, nO - do beta = 1, nV - call gpu_set_stream(blas_handle, stream(beta)) call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, K1%f(1,1,i,beta), & nO, 1.d0, K1tmp%f(1,i,1,beta), nO*nO, K1%f(1,1,i,beta), nO) call gpu_dgeam(blas_handle, 'N', 'N', nO, nV, 1.d0, K1%f(1,1,i,beta), & From dd9c6dcc03e6d24a78ed5651e5c825e81d68a9c6 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 9 Jul 2024 21:11:13 +0200 Subject: [PATCH 118/159] Introducing dpcpp --- configure | 8 +- plugins/local/gpu_intel/LIB | 1 + plugins/local/gpu_intel/NEED | 1 + plugins/local/gpu_intel/README.rst | 8 + plugins/local/gpu_intel/gpu.sycl | 266 +++++++++++++++++++++++++++++ 5 files changed, 282 insertions(+), 2 deletions(-) create mode 100644 plugins/local/gpu_intel/LIB create mode 100644 plugins/local/gpu_intel/NEED create mode 100644 plugins/local/gpu_intel/README.rst create mode 100644 plugins/local/gpu_intel/gpu.sycl diff --git a/configure b/configure index 08dac444..3e3390e1 100755 --- a/configure +++ b/configure @@ -40,7 +40,7 @@ Usage: $(basename $0) -c $(basename $0) -h $(basename $0) -i - $(basename $0) -g [nvidia|none] + $(basename $0) -g [nvidia|intel|none] Options: -c Define a COMPILATION configuration file, @@ -49,7 +49,7 @@ Options: -i INSTALL . Use at your OWN RISK: no support will be provided for the installation of dependencies. - -g [nvidia|none] Choose GPU acceleration (experimental) + -g [nvidia|intel|none] Choose GPU acceleration Example: ./$(basename $0) -c config/gfortran.cfg @@ -121,6 +121,10 @@ case "$GPU" in echo "Activating AMD GPU acceleration" ln -s ${QP_ROOT}/plugins/local/gpu_amd ${QP_ROOT}/src/gpu_arch ;; + intel) # Intel + echo "Activating Intel GPU acceleration" + ln -s ${QP_ROOT}/plugins/local/gpu_intel ${QP_ROOT}/src/gpu_arch + ;; nvidia) # Nvidia echo "Activating Nvidia GPU acceleration" ln -s ${QP_ROOT}/plugins/local/gpu_nvidia ${QP_ROOT}/src/gpu_arch diff --git a/plugins/local/gpu_intel/LIB b/plugins/local/gpu_intel/LIB new file mode 100644 index 00000000..027c35b0 --- /dev/null +++ b/plugins/local/gpu_intel/LIB @@ -0,0 +1 @@ +-lmkl_sycl -lsycl diff --git a/plugins/local/gpu_intel/NEED b/plugins/local/gpu_intel/NEED new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/plugins/local/gpu_intel/NEED @@ -0,0 +1 @@ + diff --git a/plugins/local/gpu_intel/README.rst b/plugins/local/gpu_intel/README.rst new file mode 100644 index 00000000..3a4653de --- /dev/null +++ b/plugins/local/gpu_intel/README.rst @@ -0,0 +1,8 @@ +========= +gpu_intel +========= + +Intel implementation of GPU routines. Uses MKL and SYCL. +```bash +dpcpp -O3 -c gpu.o gpu.sycl +``` diff --git a/plugins/local/gpu_intel/gpu.sycl b/plugins/local/gpu_intel/gpu.sycl new file mode 100644 index 00000000..7b589490 --- /dev/null +++ b/plugins/local/gpu_intel/gpu.sycl @@ -0,0 +1,266 @@ +#include +#include +#include +#include + +extern "C" { + +/* Generic functions */ + +int gpu_ndevices() { + return 1; +} + +void gpu_set_device(int32_t igpu) { +} + + +/* Allocation functions */ + +void gpu_allocate(void** ptr, int64_t size) { + auto queue = sycl::queue(sycl::default_selector{}); + + try { + *ptr = sycl::malloc_shared(size, queue); + assert(*ptr != nullptr); + } catch (const sycl::exception& e) { + std::cerr << "SYCL exception caught: " << e.what() << std::endl; + *ptr = nullptr; // If allocation fails, set pointer to nullptr + } +} + +void gpu_deallocate(void** ptr) { + assert(*ptr != nullptr); + sycl::free(*ptr, sycl::queue(sycl::default_selector{})); + *ptr = nullptr; +} + +/* Upload data from host to device */ +void gpu_upload(const void* cpu_ptr, void* gpu_ptr, const int64_t n) { + sycl::queue queue(sycl::default_selector{}); + queue.memcpy(gpu_ptr, cpu_ptr, n).wait(); +} + +/* Download data from device to host */ +void gpu_download(const void* gpu_ptr, void* cpu_ptr, const int64_t n) { + sycl::queue queue(sycl::default_selector{}); + queue.memcpy(cpu_ptr, gpu_ptr, n).wait(); +} + +/* Copy data from one GPU memory location to another */ +void gpu_copy(const void* gpu_ptr_src, void* gpu_ptr_dest, const int64_t n) { + sycl::queue queue(sycl::default_selector{}); + queue.memcpy(gpu_ptr_dest, gpu_ptr_src, n).wait(); +} + +/* Queues */ + +/* SYCL queue as a replacement for CUDA stream */ +void gpu_stream_create(sycl::queue** ptr) { + *ptr = new sycl::queue(sycl::default_selector{}); +} + +void gpu_stream_destroy(sycl::queue** ptr) { + assert(*ptr != nullptr); + delete *ptr; + *ptr = nullptr; +} + +To translate the CUDA functions related to stream management to SYCL, you will need to adapt to SYCL's approach to command groups and queues. SYCL uses queues to manage execution order and parallelism, similar to CUDA streams but integrated within the SYCL ecosystem. + +### Original CUDA Code + +```c +/* Create a CUDA stream */ +void gpu_stream_create(cudaStream_t* ptr) { + cudaError_t rc = cudaStreamCreate(ptr); + assert(rc == cudaSuccess); +} + +/* Destroy a CUDA stream */ +void gpu_stream_destroy(cudaStream_t* ptr) { + assert(ptr != NULL); + cudaError_t rc = cudaStreamDestroy(*ptr); + assert(rc == cudaSuccess); + *ptr = NULL; +} + +/* Set a specific stream for cuBLAS operations */ +void gpu_set_stream(cublasHandle_t handle, cudaStream_t stream) { + cublasSetStream(handle, stream); +} + +/* Synchronize all streams */ +void gpu_synchronize() { + cudaDeviceSynchronize(); +} +``` + +### Translated SYCL Code + +```cpp +#include +#include + +/* SYCL queue as a replacement for CUDA stream */ +void gpu_stream_create(sycl::queue** ptr) { + *ptr = new sycl::queue(sycl::default_selector{}); +} + +void gpu_stream_destroy(sycl::queue** ptr) { + *ptr->wait_and_throw(); + assert(*ptr != nullptr); + delete *ptr; + *ptr = nullptr; +} + +/* SYCL does not need an equivalent for setting a stream on a cuBLAS handle, + because each SYCL queue acts independently and can be used directly. */ + +void gpu_synchronize() { + sycl::queue queue(sycl::default_selector{}); + queue.wait_and_throw(); +} + +/* BLAS functions */ + +typedef struct { + sycl::queue* queue; +} blasHandle_t; + +void gpu_set_stream(blasHandle_t* handle, sycl::queue* ptr) { + handle->queue = ptr; +} + +void gpu_blas_create(blasHandle_t* ptr) { + *ptr = new blasHandle_t; + assert(*ptr != nullptr); + ptr->queue = new sycl::queue(sycl::default_selector{}); + assert(ptr->queue != nullptr); +} + +void gpu_blas_destroy(blasHandle_t* ptr) { + assert(*ptr != nullptr); + delete ptr->queue; + delete *ptr; + *ptr = nullptr; +} + + +void gpu_ddot(blasHandle_t* handle, const int64_t n, const double* x, const int64_t incx, + const double* y, const int64_t incy, double* result) { + // Ensure input parameters are valid + assert(handle != nullptr); + assert(handle->queue != nullptr); + assert(n > 0); + assert(incx > 0); + assert(incy > 0); + assert(x != nullptr); + assert(y != nullptr); + assert(result != nullptr); + + // SYCL buffer for the result + sycl::buffer result_buf(result, sycl::range<1>(1)); + + sycl::queue& queue = handle->queue; + + // Perform the dot product operation + queue.submit([&](sycl::handler& cgh) { + // Accessors for the buffers + auto result_acc = result_buf.get_access(cgh); + + // This is an asynchronous call to compute dot product + cgh.single_task([=]() { + result_acc[0] = oneapi::mkl::blas::dot(cgh, n, x, incx, y, incy); + }); + }); + +} + +void gpu_dgemv(blasHandle_t* handle, const char* transa, const int64_t m, const int64_t n, const double* alpha, + const double* a, const int64_t lda, const double* x, const int64_t incx, const double* beta, double* y, const int64_t incy) { + + assert(handle != nullptr); + assert(handle->queue != nullptr); + + // Validate matrix dimensions and increments to be positive + assert(m > 0 && n > 0 && lda > 0 && incx > 0 && incy > 0); + assert(a != nullptr && x != nullptr && y != nullptr && alpha != nullptr && beta != nullptr); + + // Determine the operation type + oneapi::mkl::transpose transa_ = oneapi::mkl::transpose::nontrans; + if (*transa == 'T' || *transa == 't') { + transa_ = oneapi::mkl::transpose::trans; + } + + // Perform DGEMV operation using oneMKL + handle->queue->submit([&](sycl::handler& cgh) { + // Use accessors to ensure data consistency and dependency resolution + auto a_acc = sycl::accessor(a, sycl::range(m * lda), sycl::read_only, cgh); + auto x_acc = sycl::accessor(x, sycl::range(n * incx), sycl::read_only, cgh); + auto y_acc = sycl::accessor(y, sycl::range(m * incy), sycl::read_write, cgh); + + cgh.parallel_for(sycl::range(1), [=](sycl::id<1>) { + oneapi::mkl::blas::gemv(*handle->queue, transa_, m, n, *alpha, a_acc.get_pointer(), lda, x_acc.get_pointer(), incx, *beta, y_acc.get_pointer(), incy); + }); + }); + +} + +void gpu_dgemm(blasHandle_t* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const int64_t k, const double* alpha, + const double* a, const int64_t lda, const double* b, const int64_t ldb, const double* beta, double* c, const int64_t ldc) { + + assert(handle != nullptr && handle->queue != nullptr); + assert(m > 0 && n > 0 && k > 0 && lda > 0 && ldb > 0 && ldc > 0); + assert(a != nullptr && b != nullptr && c != nullptr && alpha != nullptr && beta != nullptr); + + // Transpose operations + auto transa_ = (*transa == 'T' || *transa == 't') ? oneapi::mkl::transpose::trans : oneapi::mkl::transpose::nontrans; + auto transb_ = (*transb == 'T' || *transb == 't') ? oneapi::mkl::transpose::trans : oneapi::mkl::transpose::nontrans; + + // Ensure queue is ready + handle->queue->submit([&](sycl::handler& cgh) { + // Accessors for matrices + auto a_acc = sycl::accessor(a, sycl::range<1>(m * lda), sycl::read_only, cgh); + auto b_acc = sycl::accessor(b, sycl::range<1>(k * ldb), sycl::read_only, cgh); + auto c_acc = sycl::accessor(c, sycl::range<1>(m * ldc), sycl::read_write, cgh); + + cgh.parallel_for(sycl::range(1), [=](sycl::id<1>) { + oneapi::mkl::blas::gemm(*handle->queue, transa_, transb_, m, n, k, + *alpha, a_acc.get_pointer(), lda, + b_acc.get_pointer(), ldb, + *beta, c_acc.get_pointer(), ldc); + }); + }); + +} + +void gpu_dgeam(blasHandle_t* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const double* alpha, + const double* a, const int64_t lda, const double* beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { + assert(handle != nullptr && handle->queue != nullptr); + assert(m > 0 && n > 0 && lda > 0 && ldb > 0 && ldc > 0); + assert(a != nullptr && b != nullptr && c != nullptr && alpha != nullptr && beta != nullptr); + + // Determine transpose operations + bool transA = (*transa == 'T' || *transa == 't'); + bool transB = (*transb == 'T' || *transb == 't'); + + handle->queue->submit([&](sycl::handler& cgh) { + auto a_acc = sycl::accessor(a, sycl::range(m * lda), sycl::read_only, cgh); + auto b_acc = sycl::accessor(b, sycl::range(n * ldb), sycl::read_only, cgh); + auto c_acc = sycl::accessor(c, sycl::range(m * ldc), sycl::read_write, cgh); + + cgh.parallel_for(sycl::range<2>(m, n), [=](sycl::id<2> idx) { + int i = idx[0]; + int j = idx[1]; + int ai = transA ? j * lda + i : i * lda + j; + int bi = transB ? j * ldb + i : i * ldb + j; + int ci = i * ldc + j; + + c_acc[ci] = (*alpha) * a_acc[ai] + (*beta) * b_acc[bi]; + }); + }); + +} + +} // extern C From 44b8e22e7aebf4dd89874549eac8bb8aef2fb16d Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 9 Jul 2024 22:02:13 +0200 Subject: [PATCH 119/159] Fixed sycl --- plugins/local/gpu_intel/README.rst | 2 +- plugins/local/gpu_intel/gpu.sycl | 139 ++++++----------------------- 2 files changed, 26 insertions(+), 115 deletions(-) diff --git a/plugins/local/gpu_intel/README.rst b/plugins/local/gpu_intel/README.rst index 3a4653de..d42e2557 100644 --- a/plugins/local/gpu_intel/README.rst +++ b/plugins/local/gpu_intel/README.rst @@ -4,5 +4,5 @@ gpu_intel Intel implementation of GPU routines. Uses MKL and SYCL. ```bash -dpcpp -O3 -c gpu.o gpu.sycl +icpx -fsycl gpu.cxx -c -qmkl=sequential ``` diff --git a/plugins/local/gpu_intel/gpu.sycl b/plugins/local/gpu_intel/gpu.sycl index 7b589490..1f9f89ce 100644 --- a/plugins/local/gpu_intel/gpu.sycl +++ b/plugins/local/gpu_intel/gpu.sycl @@ -18,7 +18,7 @@ void gpu_set_device(int32_t igpu) { /* Allocation functions */ void gpu_allocate(void** ptr, int64_t size) { - auto queue = sycl::queue(sycl::default_selector{}); + auto queue = sycl::queue(sycl::default_selector_v); try { *ptr = sycl::malloc_shared(size, queue); @@ -31,25 +31,25 @@ void gpu_allocate(void** ptr, int64_t size) { void gpu_deallocate(void** ptr) { assert(*ptr != nullptr); - sycl::free(*ptr, sycl::queue(sycl::default_selector{})); + sycl::free(*ptr, sycl::queue(sycl::default_selector_v)); *ptr = nullptr; } /* Upload data from host to device */ void gpu_upload(const void* cpu_ptr, void* gpu_ptr, const int64_t n) { - sycl::queue queue(sycl::default_selector{}); + sycl::queue queue(sycl::default_selector_v); queue.memcpy(gpu_ptr, cpu_ptr, n).wait(); } /* Download data from device to host */ void gpu_download(const void* gpu_ptr, void* cpu_ptr, const int64_t n) { - sycl::queue queue(sycl::default_selector{}); + sycl::queue queue(sycl::default_selector_v); queue.memcpy(cpu_ptr, gpu_ptr, n).wait(); } /* Copy data from one GPU memory location to another */ void gpu_copy(const void* gpu_ptr_src, void* gpu_ptr_dest, const int64_t n) { - sycl::queue queue(sycl::default_selector{}); + sycl::queue queue(sycl::default_selector_v); queue.memcpy(gpu_ptr_dest, gpu_ptr_src, n).wait(); } @@ -57,7 +57,7 @@ void gpu_copy(const void* gpu_ptr_src, void* gpu_ptr_dest, const int64_t n) { /* SYCL queue as a replacement for CUDA stream */ void gpu_stream_create(sycl::queue** ptr) { - *ptr = new sycl::queue(sycl::default_selector{}); + *ptr = new sycl::queue(sycl::default_selector_v); } void gpu_stream_destroy(sycl::queue** ptr) { @@ -66,59 +66,8 @@ void gpu_stream_destroy(sycl::queue** ptr) { *ptr = nullptr; } -To translate the CUDA functions related to stream management to SYCL, you will need to adapt to SYCL's approach to command groups and queues. SYCL uses queues to manage execution order and parallelism, similar to CUDA streams but integrated within the SYCL ecosystem. - -### Original CUDA Code - -```c -/* Create a CUDA stream */ -void gpu_stream_create(cudaStream_t* ptr) { - cudaError_t rc = cudaStreamCreate(ptr); - assert(rc == cudaSuccess); -} - -/* Destroy a CUDA stream */ -void gpu_stream_destroy(cudaStream_t* ptr) { - assert(ptr != NULL); - cudaError_t rc = cudaStreamDestroy(*ptr); - assert(rc == cudaSuccess); - *ptr = NULL; -} - -/* Set a specific stream for cuBLAS operations */ -void gpu_set_stream(cublasHandle_t handle, cudaStream_t stream) { - cublasSetStream(handle, stream); -} - -/* Synchronize all streams */ void gpu_synchronize() { - cudaDeviceSynchronize(); -} -``` - -### Translated SYCL Code - -```cpp -#include -#include - -/* SYCL queue as a replacement for CUDA stream */ -void gpu_stream_create(sycl::queue** ptr) { - *ptr = new sycl::queue(sycl::default_selector{}); -} - -void gpu_stream_destroy(sycl::queue** ptr) { - *ptr->wait_and_throw(); - assert(*ptr != nullptr); - delete *ptr; - *ptr = nullptr; -} - -/* SYCL does not need an equivalent for setting a stream on a cuBLAS handle, - because each SYCL queue acts independently and can be used directly. */ - -void gpu_synchronize() { - sycl::queue queue(sycl::default_selector{}); + sycl::queue queue(sycl::default_selector_v); queue.wait_and_throw(); } @@ -132,17 +81,17 @@ void gpu_set_stream(blasHandle_t* handle, sycl::queue* ptr) { handle->queue = ptr; } -void gpu_blas_create(blasHandle_t* ptr) { - *ptr = new blasHandle_t; +void gpu_blas_create(blasHandle_t** ptr) { + *ptr = (blasHandle_t*) malloc(sizeof(blasHandle_t)); assert(*ptr != nullptr); - ptr->queue = new sycl::queue(sycl::default_selector{}); - assert(ptr->queue != nullptr); + (*ptr)->queue = new sycl::queue(sycl::default_selector_v); + assert((*ptr)->queue != nullptr); } -void gpu_blas_destroy(blasHandle_t* ptr) { +void gpu_blas_destroy(blasHandle_t** ptr) { assert(*ptr != nullptr); - delete ptr->queue; - delete *ptr; + delete (*ptr)->queue; + free(*ptr); *ptr = nullptr; } @@ -159,21 +108,7 @@ void gpu_ddot(blasHandle_t* handle, const int64_t n, const double* x, const int6 assert(y != nullptr); assert(result != nullptr); - // SYCL buffer for the result - sycl::buffer result_buf(result, sycl::range<1>(1)); - - sycl::queue& queue = handle->queue; - - // Perform the dot product operation - queue.submit([&](sycl::handler& cgh) { - // Accessors for the buffers - auto result_acc = result_buf.get_access(cgh); - - // This is an asynchronous call to compute dot product - cgh.single_task([=]() { - result_acc[0] = oneapi::mkl::blas::dot(cgh, n, x, incx, y, incy); - }); - }); + oneapi::mkl::blas::dot(*handle->queue, n, x, incx, y, incy, result); } @@ -194,16 +129,7 @@ void gpu_dgemv(blasHandle_t* handle, const char* transa, const int64_t m, const } // Perform DGEMV operation using oneMKL - handle->queue->submit([&](sycl::handler& cgh) { - // Use accessors to ensure data consistency and dependency resolution - auto a_acc = sycl::accessor(a, sycl::range(m * lda), sycl::read_only, cgh); - auto x_acc = sycl::accessor(x, sycl::range(n * incx), sycl::read_only, cgh); - auto y_acc = sycl::accessor(y, sycl::range(m * incy), sycl::read_write, cgh); - - cgh.parallel_for(sycl::range(1), [=](sycl::id<1>) { - oneapi::mkl::blas::gemv(*handle->queue, transa_, m, n, *alpha, a_acc.get_pointer(), lda, x_acc.get_pointer(), incx, *beta, y_acc.get_pointer(), incy); - }); - }); + oneapi::mkl::blas::column_major::gemv(*handle->queue, transa_, m, n, *alpha, a, lda, x, incx, *beta, y, incy); } @@ -218,23 +144,12 @@ void gpu_dgemm(blasHandle_t* handle, const char* transa, const char* transb, con auto transa_ = (*transa == 'T' || *transa == 't') ? oneapi::mkl::transpose::trans : oneapi::mkl::transpose::nontrans; auto transb_ = (*transb == 'T' || *transb == 't') ? oneapi::mkl::transpose::trans : oneapi::mkl::transpose::nontrans; - // Ensure queue is ready - handle->queue->submit([&](sycl::handler& cgh) { - // Accessors for matrices - auto a_acc = sycl::accessor(a, sycl::range<1>(m * lda), sycl::read_only, cgh); - auto b_acc = sycl::accessor(b, sycl::range<1>(k * ldb), sycl::read_only, cgh); - auto c_acc = sycl::accessor(c, sycl::range<1>(m * ldc), sycl::read_write, cgh); - - cgh.parallel_for(sycl::range(1), [=](sycl::id<1>) { - oneapi::mkl::blas::gemm(*handle->queue, transa_, transb_, m, n, k, - *alpha, a_acc.get_pointer(), lda, - b_acc.get_pointer(), ldb, - *beta, c_acc.get_pointer(), ldc); - }); - }); + oneapi::mkl::blas::column_major::gemm(*handle->queue, transa_, transb_, m, n, k, + *alpha, a, lda, b, ldb, *beta, c, ldc); } + void gpu_dgeam(blasHandle_t* handle, const char* transa, const char* transb, const int64_t m, const int64_t n, const double* alpha, const double* a, const int64_t lda, const double* beta, const double* b, const int64_t ldb, double* c, const int64_t ldc) { assert(handle != nullptr && handle->queue != nullptr); @@ -246,18 +161,14 @@ void gpu_dgeam(blasHandle_t* handle, const char* transa, const char* transb, con bool transB = (*transb == 'T' || *transb == 't'); handle->queue->submit([&](sycl::handler& cgh) { - auto a_acc = sycl::accessor(a, sycl::range(m * lda), sycl::read_only, cgh); - auto b_acc = sycl::accessor(b, sycl::range(n * ldb), sycl::read_only, cgh); - auto c_acc = sycl::accessor(c, sycl::range(m * ldc), sycl::read_write, cgh); - cgh.parallel_for(sycl::range<2>(m, n), [=](sycl::id<2> idx) { - int i = idx[0]; - int j = idx[1]; - int ai = transA ? j * lda + i : i * lda + j; - int bi = transB ? j * ldb + i : i * ldb + j; - int ci = i * ldc + j; + const int i = idx[0]; + const int j = idx[1]; + const int ai = transA ? j * lda + i : i * lda + j; + const int bi = transB ? j * ldb + i : i * ldb + j; + const int ci = i * ldc + j; - c_acc[ci] = (*alpha) * a_acc[ai] + (*beta) * b_acc[bi]; + c[ci] = (*alpha) * a[ai] + (*beta) * b[bi]; }); }); From 6c275d54ef050ec8d210a35aa4bbb2c93d176f34 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 9 Jul 2024 22:14:19 +0200 Subject: [PATCH 120/159] Fix intent --- src/ccsd/ccsd_space_orb_sub_chol.irp.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ccsd/ccsd_space_orb_sub_chol.irp.f b/src/ccsd/ccsd_space_orb_sub_chol.irp.f index 24fcc5af..6f65ea79 100644 --- a/src/ccsd/ccsd_space_orb_sub_chol.irp.f +++ b/src/ccsd/ccsd_space_orb_sub_chol.irp.f @@ -996,8 +996,8 @@ subroutine compute_J1_chol(nO,nV,t1,t2,v_ovvo,v_ovoo,v_vvoo,d_cc_space_v_vo_chol integer, intent(in) :: nO,nV type(gpu_double2), intent(in) :: t1 type(gpu_double4), intent(in) :: t2, v_ovvo, v_ovoo, v_vvoo + type(gpu_double3), intent(in) :: d_cc_space_v_vo_chol,d_cc_space_v_vv_chol type(gpu_double4), intent(out) :: J1 - type(gpu_double3), intent(out) :: d_cc_space_v_vo_chol,d_cc_space_v_vv_chol integer :: a,tmp_a,b,k,l,c,d,tmp_c,tmp_d,i,j,u,v, beta, gam From f5cf674d7b4eb98637bde7eb07d1119cfeccc557 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 9 Jul 2024 23:04:22 +0200 Subject: [PATCH 121/159] Fix link stage for intel gpus --- configure | 4 ++-- plugins/local/gpu_intel/LIB | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 3e3390e1..43ca9f6d 100755 --- a/configure +++ b/configure @@ -117,12 +117,12 @@ done # Handle GPU acceleration rm -f ${QP_ROOT}/src/gpu_arch case "$GPU" in - amd) # Nvidia + amd) # AMD echo "Activating AMD GPU acceleration" ln -s ${QP_ROOT}/plugins/local/gpu_amd ${QP_ROOT}/src/gpu_arch ;; intel) # Intel - echo "Activating Intel GPU acceleration" + echo "Activating Intel GPU acceleration (EXPERIMENTAL)" ln -s ${QP_ROOT}/plugins/local/gpu_intel ${QP_ROOT}/src/gpu_arch ;; nvidia) # Nvidia diff --git a/plugins/local/gpu_intel/LIB b/plugins/local/gpu_intel/LIB index 027c35b0..199b0f1c 100644 --- a/plugins/local/gpu_intel/LIB +++ b/plugins/local/gpu_intel/LIB @@ -1 +1,2 @@ --lmkl_sycl -lsycl +-ltbb -lsycl -lmkl_sycl -lgpu -limf -lintlc -lstdc++ + From d219dc10267c0fe86fbae4683c00f5051229c8c0 Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 11 Jul 2024 13:57:28 +0200 Subject: [PATCH 122/159] beginning to put cholesky in CASSCF --- plugins/local/spher_harm/spher_harm.irp.f | 4 +- .../local/spher_harm/spher_harm_func.irp.f | 13 +++ src/casscf_cipsi/chol_bielec.irp.f | 93 ++++++++++++++++ src/casscf_cipsi/test_chol.irp.f | 23 ++++ src/mo_two_e_ints/cholesky.irp.f | 31 ++++++ src/mu_of_r/f_hf_cholesky.irp.f | 100 ++++++++++++++++++ src/mu_of_r/test_proj_op.irp.f | 20 +++- 7 files changed, 280 insertions(+), 4 deletions(-) create mode 100644 src/casscf_cipsi/chol_bielec.irp.f create mode 100644 src/casscf_cipsi/test_chol.irp.f diff --git a/plugins/local/spher_harm/spher_harm.irp.f b/plugins/local/spher_harm/spher_harm.irp.f index 7a2eea06..e8deafb9 100644 --- a/plugins/local/spher_harm/spher_harm.irp.f +++ b/plugins/local/spher_harm/spher_harm.irp.f @@ -1,7 +1,7 @@ program spher_harm implicit none -! call test_spher_harm + call test_spher_harm ! call test_cart - call test_brutal_spheric +! call test_brutal_spheric end diff --git a/plugins/local/spher_harm/spher_harm_func.irp.f b/plugins/local/spher_harm/spher_harm_func.irp.f index 825bd8ac..f12c8fb9 100644 --- a/plugins/local/spher_harm/spher_harm_func.irp.f +++ b/plugins/local/spher_harm/spher_harm_func.irp.f @@ -7,6 +7,7 @@ subroutine spher_harm_func_r3(r,l,m,re_ylm, im_ylm) double precision :: theta, phi,r_abs call cartesian_to_spherical(r,theta,phi,r_abs) call spher_harm_func(l,m,theta,phi,re_ylm, im_ylm) +! call spher_harm_func_expl(l,m,theta,phi,re_ylm, im_ylm) end @@ -131,6 +132,10 @@ subroutine spher_harm_func_expl(l,m,theta,phi,re_ylm, im_ylm) tmp = - inv_sq_pi * dsqrt(3.d0/8.d0) * dsin(theta) re_ylm = tmp * dcos(phi) im_ylm = tmp * dsin(phi) + else if (l==1.and.m==-1)then + tmp = - inv_sq_pi * dsqrt(3.d0/8.d0) * dsin(theta) + re_ylm = tmp * dcos(phi) + im_ylm = -tmp * dsin(phi) else if(l==1.and.m==0)then tmp = inv_sq_pi * dsqrt(3.d0/4.d0) * dcos(theta) re_ylm = tmp @@ -139,10 +144,18 @@ subroutine spher_harm_func_expl(l,m,theta,phi,re_ylm, im_ylm) tmp = 0.25d0 * inv_sq_pi * dsqrt(0.5d0*15.d0) * dsin(theta)*dsin(theta) re_ylm = tmp * dcos(2.d0*phi) im_ylm = tmp * dsin(2.d0*phi) + else if(l==2.and.m==-2)then + tmp = 0.25d0 * inv_sq_pi * dsqrt(0.5d0*15.d0) * dsin(theta)*dsin(theta) + re_ylm = tmp * dcos(2.d0*phi) + im_ylm =-tmp * dsin(2.d0*phi) else if(l==2.and.m==1)then tmp = - inv_sq_pi * dsqrt(15.d0/8.d0) * dsin(theta) * dcos(theta) re_ylm = tmp * dcos(phi) im_ylm = tmp * dsin(phi) + else if(l==2.and.m==-1)then + tmp = - inv_sq_pi * dsqrt(15.d0/8.d0) * dsin(theta) * dcos(theta) + re_ylm = tmp * dcos(phi) + im_ylm =-tmp * dsin(phi) else if(l==2.and.m==0)then tmp = dsqrt(5.d0/4.d0) * inv_sq_pi* (1.5d0*dcos(theta)*dcos(theta)-0.5d0) re_ylm = tmp diff --git a/src/casscf_cipsi/chol_bielec.irp.f b/src/casscf_cipsi/chol_bielec.irp.f new file mode 100644 index 00000000..1fe985ad --- /dev/null +++ b/src/casscf_cipsi/chol_bielec.irp.f @@ -0,0 +1,93 @@ + +BEGIN_PROVIDER [double precision, cholesky_no_1_idx_transp, (cholesky_mo_num, n_act_orb, mo_num)] + BEGIN_DOC + ! Cholesky vectors with ONE orbital on the active natural orbital basis + END_DOC + implicit none + integer :: i_chol,i_act,i_mo,jj_act + double precision, allocatable :: chol_tmp(:,:) + allocate(chol_tmp(cholesky_mo_num,n_act_orb)) + cholesky_no_1_idx_transp = 0.D0 + do i_mo = 1, mo_num + ! Get all the integrals corresponding to the "i_mo" + do i_act = 1, n_act_orb + jj_act = list_act(i_act) + do i_chol = 1, cholesky_mo_num + chol_tmp(i_chol, i_act) = cholesky_mo_transp(i_chol, jj_act, i_mo) + enddo + enddo +! ! Do the matrix product +! do i_act = 1, n_act_orb +! do jj_act = 1, n_act_orb +! do i_chol = 1, cholesky_mo_num +! cholesky_no_1_idx_transp(i_chol, i_act, i_mo) += chol_tmp(i_chol, jj_act) * natorbsCI(jj_act,i_act) +! enddo +! enddo +! enddo + call dgemm('N','N',cholesky_mo_num,n_act_orb,n_act_orb,1.d0, & + chol_tmp, size(chol_tmp,1), & + natorbsCI, size(natorbsCI,1), & + 0.d0, & + cholesky_no_1_idx_transp(1,1,i_mo), size(cholesky_no_1_idx_transp,1)) + enddo + +END_PROVIDER + + +BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp, (cholesky_mo_num, n_act_orb, n_act_orb)] + BEGIN_DOC + ! Cholesky vectors with TWO orbital on the active natural orbital basis + END_DOC + implicit none + integer :: i_chol,i_act,j_act,jj_act + double precision, allocatable :: chol_tmp(:,:) + allocate(chol_tmp(cholesky_mo_num,n_act_orb)) + cholesky_no_2_idx_transp = 0.D0 + do j_act = 1, n_act_orb + do i_act = 1, n_act_orb + do jj_act = 1, n_act_orb + do i_chol = 1, cholesky_mo_num + cholesky_no_2_idx_transp(i_chol, i_act, j_act) += cholesky_no_1_idx_transp(i_chol, i_act,jj_act) * natorbsCI(jj_act,i_act) + enddo + enddo + enddo + enddo + +END_PROVIDER + + +BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp_dgemm, (cholesky_mo_num, n_act_orb, n_act_orb)] + BEGIN_DOC + ! Cholesky vectors with TWO orbital on the active natural orbital basis + END_DOC + implicit none + integer :: i_chol,i_act,j_act,jj_act + double precision, allocatable :: chol_tmp(:,:) + allocate(chol_tmp(cholesky_mo_num,n_act_orb)) + cholesky_no_2_idx_transp_dgemm = 0.D0 + do j_act = 1, n_act_orb + ! Get all the integrals corresponding to the "j_act" + do i_act = 1, n_act_orb + jj_act = list_act(i_act) + do i_chol = 1, cholesky_mo_num + chol_tmp(i_chol, i_act) = cholesky_no_1_idx_transp(i_chol, j_act, jj_act) + enddo + enddo +! ! Do the matrix product +! do i_act = 1, n_act_orb +! do jj_act = 1, n_act_orb +! do i_chol = 1, cholesky_mo_num +! cholesky_no_1_idx_transp(i_chol, i_act, j_act) += chol_tmp(i_chol, jj_act) * natorbsCI(jj_act,i_act) +! enddo +! enddo +! enddo + call dgemm('N','N',cholesky_mo_num,n_act_orb,n_act_orb,1.d0, & + chol_tmp, size(chol_tmp,1), & + natorbsCI, size(natorbsCI,1), & + 0.d0, & + cholesky_no_2_idx_transp_dgemm(1,1,j_act), size(cholesky_no_2_idx_transp_dgemm,1)) + enddo + +END_PROVIDER + + diff --git a/src/casscf_cipsi/test_chol.irp.f b/src/casscf_cipsi/test_chol.irp.f new file mode 100644 index 00000000..b94851f9 --- /dev/null +++ b/src/casscf_cipsi/test_chol.irp.f @@ -0,0 +1,23 @@ +program test_chol + implicit none + read_wf= .True. + touch read_wf + call routine + +end + +subroutine routine + implicit none + integer :: i_chol, i_act, i_mo + double precision :: accu + accu = 0.d0 + do i_mo = 1, n_act_orb + do i_act = 1, n_act_orb + do i_chol = 1, cholesky_mo_num + accu += dabs(cholesky_no_2_idx_transp_dgemm(i_chol,i_act,i_mo) - cholesky_no_2_idx_transp(i_chol,i_act,i_mo)) + print*,cholesky_no_2_idx_transp_dgemm(i_chol,i_act,i_mo) , cholesky_no_2_idx_transp(i_chol,i_act,i_mo) + enddo + enddo + enddo + print*,'accu =', accu +end diff --git a/src/mo_two_e_ints/cholesky.irp.f b/src/mo_two_e_ints/cholesky.irp.f index 7e2c8b37..1fed949d 100644 --- a/src/mo_two_e_ints/cholesky.irp.f +++ b/src/mo_two_e_ints/cholesky.irp.f @@ -101,3 +101,34 @@ BEGIN_PROVIDER [ double precision, cholesky_mo_transp, (cholesky_mo_num, mo_num, END_PROVIDER + +BEGIN_PROVIDER [ double precision, cholesky_semi_mo_transp_simple, (cholesky_mo_num, ao_num, mo_num) ] + implicit none + BEGIN_DOC + ! Cholesky vectors in MO basis + END_DOC + + double precision, allocatable :: X(:,:,:) + double precision :: wall0, wall1 + integer :: ierr + print *, 'Semi AO->MO Transformation of Cholesky vectors' + call wall_time(wall0) + + allocate(X(mo_num,cholesky_mo_num,ao_num), stat=ierr) + if (ierr /= 0) then + print *, irp_here, ': Allocation failed' + endif + integer :: i_chol, i_mo, j_mo, i_ao + cholesky_semi_mo_transp_simple = 0.d0 + do i_mo = 1, mo_num + do i_ao = 1, ao_num + do j_mo = 1, mo_num + do i_chol = 1, cholesky_mo_num + cholesky_semi_mo_transp_simple(i_chol, i_ao,i_mo) += cholesky_mo_transp(i_chol,j_mo,i_mo) * mo_coef_transp(j_mo,i_ao) + enddo + enddo + enddo + enddo + +END_PROVIDER + diff --git a/src/mu_of_r/f_hf_cholesky.irp.f b/src/mu_of_r/f_hf_cholesky.irp.f index 5dd69eb6..179b80dd 100644 --- a/src/mu_of_r/f_hf_cholesky.irp.f +++ b/src/mu_of_r/f_hf_cholesky.irp.f @@ -289,6 +289,106 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky_sparse, (n_points_final_grid)] endif END_PROVIDER +BEGIN_PROVIDER [ double precision, f_hf_cholesky_sparse_bis, (n_points_final_grid)] + implicit none + integer :: ipoint,m,mm,i,ii,p + !!f(R) = \sum_{I} \sum_{J} Phi_I(R) Phi_J(R) V_IJ + !! = \sum_{I}\sum_{J}\sum_A Phi_I(R) Phi_J(R) V_AI V_AJ + !! = \sum_A \sum_{I}Phi_I(R)V_AI \sum_{J}V_AJ Phi_J(R) + !! = \sum_A V_AR G_AR + !! V_AR = \sum_{I}Phi_IR V_AI = \sum_{I}Phi^t_RI V_AI + double precision :: u_dot_v,wall0,wall1,accu_1, accu_2,mo_i_r1,mo_b_r1 + double precision :: thresh_1,thresh_2 + double precision, allocatable :: accu_vec(:),delta_vec(:) + thresh_2 = ao_cholesky_threshold * 100.d0 + thresh_1 = dsqrt(thresh_2) + provide cholesky_mo_transp + if(elec_alpha_num == elec_beta_num)then + call wall_time(wall0) + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP PRIVATE (accu_vec,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) & + !$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,mos_in_r_array_omp,aos_in_r_array,thresh_1,thresh_2) & + !$OMP ShARED (cholesky_mo_num,f_hf_cholesky_sparse_bis,n_points_final_grid,cholesky_semi_mo_transp_simple,ao_num) + allocate(accu_vec(cholesky_mo_num)) + !$OMP DO + do ipoint = 1, n_points_final_grid + f_hf_cholesky_sparse_bis(ipoint) = 0.d0 + accu_vec = 0.d0 + do ii = 1, n_occ_val_orb_for_hf(1) + i = list_valence_orb_for_hf(ii,1) + mo_i_r1 = mos_in_r_array_omp(i,ipoint) + if(dabs(mo_i_r1).lt.thresh_1)cycle + do mm = 1, ao_num ! electron 1 + mo_b_r1 = aos_in_r_array(mm,ipoint)*mo_i_r1 + if(dabs(mo_b_r1).lt.thresh_2)cycle + do p = 1, cholesky_mo_num + accu_vec(p) = accu_vec(p) + mo_b_r1 * cholesky_semi_mo_transp_simple(p,mm,i) + enddo + enddo + enddo + do p = 1, cholesky_mo_num + f_hf_cholesky_sparse_bis(ipoint) = f_hf_cholesky_sparse_bis(ipoint) + accu_vec(p) * accu_vec(p) + enddo + f_hf_cholesky_sparse_bis(ipoint) *= 2.D0 + enddo + !$OMP END DO + deallocate(accu_vec) + !$OMP END PARALLEL + + call wall_time(wall1) + print*,'Time to provide f_hf_cholesky_sparse_bis = ',wall1-wall0 + else + call wall_time(wall0) + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP PRIVATE (accu_vec,delta_vec,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) & + !$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,list_basis,mos_in_r_array_omp,thresh_1,thresh_2) & + !$OMP ShARED (cholesky_mo_num,f_hf_cholesky_sparse_bis,n_points_final_grid,cholesky_mo_transp,n_basis_orb) + allocate(accu_vec(cholesky_mo_num),delta_vec(cholesky_mo_num)) + !$OMP DO + do ipoint = 1, n_points_final_grid + f_hf_cholesky_sparse_bis(ipoint) = 0.d0 + accu_vec = 0.d0 + do ii = 1, n_occ_val_orb_for_hf(2) + i = list_valence_orb_for_hf(ii,2) + mo_i_r1 = mos_in_r_array_omp(i,ipoint) + if(dabs(mo_i_r1).lt.thresh_1)cycle + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + mo_b_r1 = mos_in_r_array_omp(m,ipoint) + if(dabs(mo_i_r1*mo_b_r1).lt.thresh_2)cycle + do p = 1, cholesky_mo_num + accu_vec(p) = accu_vec(p) + mo_i_r1 * mo_b_r1 * cholesky_mo_transp(p,m,i) + enddo + enddo + enddo + delta_vec = 0.d0 + do ii = n_occ_val_orb_for_hf(2)+1,n_occ_val_orb_for_hf(1) + i = list_valence_orb_for_hf(ii,1) + mo_i_r1 = mos_in_r_array_omp(i,ipoint) + if(dabs(mo_i_r1).lt.thresh_1)cycle + do mm = 1, n_basis_orb ! electron 1 + m = list_basis(mm) + mo_b_r1 = mos_in_r_array_omp(m,ipoint) + if(dabs(mo_i_r1*mo_b_r1).lt.thresh_2)cycle + do p = 1, cholesky_mo_num + delta_vec(p) = delta_vec(p) + mo_i_r1 * mo_b_r1 * cholesky_mo_transp(p,m,i) + enddo + enddo + enddo + do p = 1, cholesky_mo_num + f_hf_cholesky_sparse_bis(ipoint) = f_hf_cholesky_sparse_bis(ipoint) + accu_vec(p) * accu_vec(p) + accu_vec(p) * delta_vec(p) + enddo + f_hf_cholesky_sparse_bis(ipoint) *= 2.D0 + enddo + !$OMP END DO + deallocate(accu_vec) + !$OMP END PARALLEL + call wall_time(wall1) + print*,'Time to provide f_hf_cholesky_sparse_bis = ',wall1-wall0 + endif +END_PROVIDER + + BEGIN_PROVIDER [ double precision, on_top_hf_grid, (n_points_final_grid)] implicit none integer :: ipoint,i,ii diff --git a/src/mu_of_r/test_proj_op.irp.f b/src/mu_of_r/test_proj_op.irp.f index f9aba094..fd5e976b 100644 --- a/src/mu_of_r/test_proj_op.irp.f +++ b/src/mu_of_r/test_proj_op.irp.f @@ -15,7 +15,23 @@ program projected_operators ! call test_f_HF_valence_ab ! call routine_full_mos ! call test_f_ii_valence_ab - call test_f_ia_valence_ab - call test_f_ii_ia_aa_valence_ab +! call test_f_ia_valence_ab +! call test_f_ii_ia_aa_valence_ab + call test end + +subroutine test + implicit none + integer :: i_point + double precision :: ref, new, accu, weight + accu = 0.d0 + do i_point = 1, n_points_final_grid + ref = f_hf_cholesky_sparse(i_point) + new = f_hf_cholesky_sparse_bis(i_point) + weight = final_weight_at_r_vector(i_point) + accu += dabs(ref - new) * weight + enddo + print*,'accu = ',accu + +end From 31ec3ace0540177c2476e478d763a068d73bd41b Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 11 Jul 2024 14:22:27 +0200 Subject: [PATCH 123/159] correct transformation of cholesky vectors on the NO basis --- src/casscf_cipsi/chol_bielec.irp.f | 41 +++++++++++++----------------- src/casscf_cipsi/test_chol.irp.f | 14 +++++++--- 2 files changed, 27 insertions(+), 28 deletions(-) diff --git a/src/casscf_cipsi/chol_bielec.irp.f b/src/casscf_cipsi/chol_bielec.irp.f index 1fe985ad..3104fe5f 100644 --- a/src/casscf_cipsi/chol_bielec.irp.f +++ b/src/casscf_cipsi/chol_bielec.irp.f @@ -34,20 +34,21 @@ BEGIN_PROVIDER [double precision, cholesky_no_1_idx_transp, (cholesky_mo_num, n_ END_PROVIDER -BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp, (cholesky_mo_num, n_act_orb, n_act_orb)] +BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp_old, (cholesky_mo_num, n_act_orb, n_act_orb)] BEGIN_DOC ! Cholesky vectors with TWO orbital on the active natural orbital basis END_DOC implicit none - integer :: i_chol,i_act,j_act,jj_act + integer :: i_chol,i_act,j_act,jj_act,jjj_act double precision, allocatable :: chol_tmp(:,:) allocate(chol_tmp(cholesky_mo_num,n_act_orb)) - cholesky_no_2_idx_transp = 0.D0 - do j_act = 1, n_act_orb - do i_act = 1, n_act_orb - do jj_act = 1, n_act_orb + cholesky_no_2_idx_transp_old = 0.D0 + do jj_act = 1, n_act_orb + jjj_act = list_act(jj_act) + do j_act = 1, n_act_orb + do i_act = 1, n_act_orb do i_chol = 1, cholesky_mo_num - cholesky_no_2_idx_transp(i_chol, i_act, j_act) += cholesky_no_1_idx_transp(i_chol, i_act,jj_act) * natorbsCI(jj_act,i_act) + cholesky_no_2_idx_transp_old(i_chol, i_act, j_act) += cholesky_no_1_idx_transp(i_chol, i_act,jjj_act) * natorbsCI(jj_act,j_act) enddo enddo enddo @@ -56,36 +57,28 @@ BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp, (cholesky_mo_num, n_ END_PROVIDER -BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp_dgemm, (cholesky_mo_num, n_act_orb, n_act_orb)] +BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp, (cholesky_mo_num, n_act_orb, n_act_orb)] BEGIN_DOC ! Cholesky vectors with TWO orbital on the active natural orbital basis END_DOC implicit none integer :: i_chol,i_act,j_act,jj_act - double precision, allocatable :: chol_tmp(:,:) - allocate(chol_tmp(cholesky_mo_num,n_act_orb)) - cholesky_no_2_idx_transp_dgemm = 0.D0 - do j_act = 1, n_act_orb + double precision, allocatable :: chol_tmp(:,:),chol_tmp_bis(:,:) + allocate(chol_tmp(cholesky_mo_num,n_act_orb),chol_tmp_bis(cholesky_mo_num,n_act_orb)) + cholesky_no_2_idx_transp = 0.D0 + do i_act = 1, n_act_orb ! Get all the integrals corresponding to the "j_act" - do i_act = 1, n_act_orb - jj_act = list_act(i_act) + do j_act = 1, n_act_orb + jj_act = list_act(j_act) do i_chol = 1, cholesky_mo_num - chol_tmp(i_chol, i_act) = cholesky_no_1_idx_transp(i_chol, j_act, jj_act) + chol_tmp(i_chol, j_act) = cholesky_no_1_idx_transp(i_chol, i_act, jj_act) enddo enddo -! ! Do the matrix product -! do i_act = 1, n_act_orb -! do jj_act = 1, n_act_orb -! do i_chol = 1, cholesky_mo_num -! cholesky_no_1_idx_transp(i_chol, i_act, j_act) += chol_tmp(i_chol, jj_act) * natorbsCI(jj_act,i_act) -! enddo -! enddo -! enddo call dgemm('N','N',cholesky_mo_num,n_act_orb,n_act_orb,1.d0, & chol_tmp, size(chol_tmp,1), & natorbsCI, size(natorbsCI,1), & 0.d0, & - cholesky_no_2_idx_transp_dgemm(1,1,j_act), size(cholesky_no_2_idx_transp_dgemm,1)) + cholesky_no_2_idx_transp(1,1,i_act), size(cholesky_no_2_idx_transp,1)) enddo END_PROVIDER diff --git a/src/casscf_cipsi/test_chol.irp.f b/src/casscf_cipsi/test_chol.irp.f index b94851f9..8d978817 100644 --- a/src/casscf_cipsi/test_chol.irp.f +++ b/src/casscf_cipsi/test_chol.irp.f @@ -9,15 +9,21 @@ end subroutine routine implicit none integer :: i_chol, i_act, i_mo - double precision :: accu + double precision :: accu,error,exact accu = 0.d0 do i_mo = 1, n_act_orb do i_act = 1, n_act_orb do i_chol = 1, cholesky_mo_num - accu += dabs(cholesky_no_2_idx_transp_dgemm(i_chol,i_act,i_mo) - cholesky_no_2_idx_transp(i_chol,i_act,i_mo)) - print*,cholesky_no_2_idx_transp_dgemm(i_chol,i_act,i_mo) , cholesky_no_2_idx_transp(i_chol,i_act,i_mo) + error = dabs(cholesky_no_2_idx_transp(i_chol,i_act,i_mo) - cholesky_no_2_idx_transp_old(i_chol,i_act,i_mo)) + exact = dabs(cholesky_no_2_idx_transp_old(i_chol,i_act,i_mo)) + accu += error + if(exact.gt.1.d-10)then + if(error/exact.gt.1.d-7)then + write(*,'(4(E16.10,X))')cholesky_no_2_idx_transp(i_chol,i_act,i_mo) , cholesky_no_2_idx_transp_old(i_chol,i_act,i_mo),error,error/exact + endif + endif enddo enddo enddo - print*,'accu =', accu + print*,'accu =', accu/(dble(n_act_orb*n_act_orb*cholesky_mo_num)) end From 56450ed0436c4c1be26f33757ea3a4ca35238b57 Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 11 Jul 2024 19:09:20 +0200 Subject: [PATCH 124/159] introduced functions mimicking the arrays --- src/casscf_cipsi/chol_bielec.irp.f | 158 ++++++++++++++++++++++++++++- src/casscf_cipsi/test_chol.irp.f | 92 ++++++++++++++--- 2 files changed, 234 insertions(+), 16 deletions(-) diff --git a/src/casscf_cipsi/chol_bielec.irp.f b/src/casscf_cipsi/chol_bielec.irp.f index 3104fe5f..94a76453 100644 --- a/src/casscf_cipsi/chol_bielec.irp.f +++ b/src/casscf_cipsi/chol_bielec.irp.f @@ -33,7 +33,6 @@ BEGIN_PROVIDER [double precision, cholesky_no_1_idx_transp, (cholesky_mo_num, n_ END_PROVIDER - BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp_old, (cholesky_mo_num, n_act_orb, n_act_orb)] BEGIN_DOC ! Cholesky vectors with TWO orbital on the active natural orbital basis @@ -83,4 +82,161 @@ BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp, (cholesky_mo_num, n_ END_PROVIDER +BEGIN_PROVIDER [ double precision, cholesky_no_total_transp, (cholesky_mo_num, mo_num, mo_num)] + implicit none + BEGIN_DOC + ! Cholesky vectors defined on all basis including the NO basis + END_DOC + integer :: i_chol, i_act, ii_act, j_act, jj_act, i_core_inact, j_core_inact, ii_core_inact, jj_core_inact + integer :: i_virt, ii_virt, j_virt, jj_virt + ! Block when two orbitals belong to the core/inact + do j_core_inact = 1, n_core_inact_orb + jj_core_inact = list_core_inact(j_core_inact) + do i_core_inact = 1, n_core_inact_orb + ii_core_inact = list_core_inact(i_core_inact) + do i_chol = 1, cholesky_mo_num + cholesky_no_total_transp(i_chol, ii_core_inact, jj_core_inact) = cholesky_mo_transp(i_chol,ii_core_inact,jj_core_inact) + enddo + enddo + enddo + ! Block when one orbitals belongs to the core/inact and one belongs to the active + do j_core_inact = 1, n_core_inact_orb + jj_core_inact = list_core_inact(j_core_inact) + do i_act = 1, n_act_orb + ii_act = list_act(i_act) + do i_chol = 1, cholesky_mo_num + cholesky_no_total_transp(i_chol,ii_act,j_core_inact) = cholesky_no_1_idx_transp(i_chol,i_act,jj_core_inact) + enddo + enddo + enddo + do j_core_inact = 1, n_core_inact_orb + jj_core_inact = list_core_inact(j_core_inact) + do i_act = 1, n_act_orb + ii_act = list_act(i_act) + do i_chol = 1, cholesky_mo_num + cholesky_no_total_transp(i_chol,j_core_inact,ii_act) = cholesky_no_1_idx_transp(i_chol,i_act,jj_core_inact) + enddo + enddo + enddo + + ! Block when two orbitals belong to the active + do j_act = 1, n_act_orb + jj_act = list_act(j_act) + do i_act = 1, n_act_orb + ii_act = list_act(i_act) + do i_chol = 1, cholesky_mo_num + cholesky_no_total_transp(i_chol,ii_act,jj_act) = cholesky_no_2_idx_transp(i_chol,i_act,j_act) + enddo + enddo + enddo + + ! Block when two orbitals belong to the virtuals + do i_virt = 1, n_virt_orb + ii_virt = list_virt(i_virt) + do j_virt = 1, n_virt_orb + jj_virt = list_virt(j_virt) + do i_chol = 1, cholesky_mo_num + cholesky_no_total_transp(i_chol,jj_virt,ii_virt) = cholesky_mo_transp(i_chol,jj_virt,ii_virt) + enddo + enddo + enddo + + ! Block when one orbital is in active and the other in the virtuals + do i_virt = 1, n_virt_orb + ii_virt = list_virt(i_virt) + do i_act = 1, n_act_orb + ii_act = list_act(i_act) + do i_chol = 1, cholesky_mo_num + cholesky_no_total_transp(i_chol,ii_act,ii_virt) = cholesky_no_1_idx_transp(i_chol, i_act,ii_virt) + enddo + enddo + enddo + do i_virt = 1, n_virt_orb + ii_virt = list_virt(i_virt) + do i_act = 1, n_act_orb + ii_act = list_act(i_act) + do i_chol = 1, cholesky_mo_num + cholesky_no_total_transp(i_chol,ii_virt,ii_act) = cholesky_no_1_idx_transp(i_chol, i_act,ii_virt) + enddo + enddo + enddo + ! Block when one orbital is in the virtual and one in the core-inact + do i_virt = 1, n_virt_orb + ii_virt = list_virt(i_virt) + do i_core_inact = 1, n_core_inact_orb + ii_core_inact = list_core_inact(i_core_inact) + do i_chol = 1, cholesky_mo_num + cholesky_no_total_transp(i_chol, ii_core_inact, ii_virt) = cholesky_mo_transp(i_chol, ii_core_inact, ii_virt) + enddo + enddo + enddo + do i_core_inact = 1, n_core_inact_orb + ii_core_inact = list_core_inact(i_core_inact) + do i_virt = 1, n_virt_orb + ii_virt = list_virt(i_virt) + do i_chol = 1, cholesky_mo_num + cholesky_no_total_transp(i_chol, ii_virt, ii_core_inact) = cholesky_mo_transp(i_chol, ii_virt, ii_core_inact) + enddo + enddo + enddo +END_PROVIDER + + +double precision function bielec_no_basis_chol(i_1,j_1,i_2,j_2) + implicit none + integer, intent(in) :: i_1,j_1,i_2,j_2 + BEGIN_DOC + ! integral (i_1 j_1|i_2 j_2) in the mixed basis of both MOs and natural MOs + ! + END_DOC + integer :: i_chol + bielec_no_basis_chol = 0.d0 + do i_chol = 1, cholesky_mo_num + bielec_no_basis_chol += cholesky_no_total_transp(i_chol,i_1, j_1) * cholesky_no_total_transp(i_chol,i_2,j_2) + enddo +end + +double precision function bielec_PQxx_no_chol(i_mo, j_mo, i_ca, j_ca) + implicit none + BEGIN_DOC + ! function that computes (i_mo j_mo| i_ca j_ca) with Cholesky decomposition + ! + ! indices are unshifted orbital numbers + END_DOC + integer, intent(in) :: i_ca, j_ca, i_mo, j_mo + integer :: ii_ca, jj_ca + double precision :: bielec_no_basis_chol + ii_ca = list_core_inact_act(i_ca) + jj_ca = list_core_inact_act(j_ca) + bielec_PQxx_no_chol = bielec_no_basis_chol(i_mo,j_mo,ii_ca,jj_ca) + +end + +double precision function bielec_PxxQ_no_chol(i_mo, j_ca, i_ca, j_mo) + implicit none + BEGIN_DOC + ! function that computes (i_mo j_ca |i_ca j_mo) with Cholesky decomposition + ! + ! indices are unshifted orbital numbers + END_DOC + integer, intent(in) :: i_ca, j_ca, i_mo, j_mo + integer :: ii_ca, jj_ca + double precision :: bielec_no_basis_chol + ii_ca = list_core_inact_act(i_ca) + jj_ca = list_core_inact_act(j_ca) + bielec_PxxQ_no_chol = bielec_no_basis_chol(i_mo, jj_ca, ii_ca, j_mo) + +end + +double precision function bielecCI_no_chol(i_ca, j_ca, k_ca, i_mo) + implicit none + integer, intent(in) :: i_ca, j_ca, k_ca, i_mo + integer :: ii_ca, jj_ca, kk_ca + double precision :: bielec_no_basis_chol + ii_ca = list_act(i_ca) + jj_ca = list_act(j_ca) + kk_ca = list_act(k_ca) + bielecCI_no_chol = bielec_no_basis_chol(ii_ca, jj_ca, kk_ca, i_mo) + +end diff --git a/src/casscf_cipsi/test_chol.irp.f b/src/casscf_cipsi/test_chol.irp.f index 8d978817..87c5c352 100644 --- a/src/casscf_cipsi/test_chol.irp.f +++ b/src/casscf_cipsi/test_chol.irp.f @@ -2,28 +2,90 @@ program test_chol implicit none read_wf= .True. touch read_wf - call routine +! call routine_bielec_PxxQ_no + call routine_bielecCI_no end -subroutine routine +subroutine routine_bielec_PQxx_no implicit none - integer :: i_chol, i_act, i_mo - double precision :: accu,error,exact + integer :: i_chol, i_act, ii_act, j_act, jj_act, i_core_inact, j_core_inact, ii_core_inact, jj_core_inact + integer :: i_virt, ii_virt, j_virt, jj_virt, i_mo, j_mo + double precision :: exact, new, error, accu, bielec_no_basis_chol + double precision :: bielec_PQxx_no_chol + accu = 0.d0 - do i_mo = 1, n_act_orb - do i_act = 1, n_act_orb - do i_chol = 1, cholesky_mo_num - error = dabs(cholesky_no_2_idx_transp(i_chol,i_act,i_mo) - cholesky_no_2_idx_transp_old(i_chol,i_act,i_mo)) - exact = dabs(cholesky_no_2_idx_transp_old(i_chol,i_act,i_mo)) - accu += error - if(exact.gt.1.d-10)then - if(error/exact.gt.1.d-7)then - write(*,'(4(E16.10,X))')cholesky_no_2_idx_transp(i_chol,i_act,i_mo) , cholesky_no_2_idx_transp_old(i_chol,i_act,i_mo),error,error/exact + do i_core_inact = 1, n_core_inact_act_orb + ii_core_inact = list_core_inact_act(i_core_inact) + do j_core_inact = 1, n_core_inact_act_orb + jj_core_inact = list_core_inact_act(j_core_inact) + do i_mo = 1, mo_num + do j_mo = 1, mo_num + exact = bielec_PQxx_no(j_mo,i_mo, j_core_inact, i_core_inact) +! new = bielec_no_basis_chol(j_mo,i_mo, jj_core_inact, ii_core_inact) + new = bielec_PQxx_no_chol(j_mo,i_mo, j_core_inact, i_core_inact) + error = dabs(exact-new) + if(dabs(exact).gt.1.d-10)then + print*,exact,new,error endif - endif + accu += error + enddo enddo enddo enddo - print*,'accu =', accu/(dble(n_act_orb*n_act_orb*cholesky_mo_num)) + print*,'accu = ',accu/(dble(mo_num*mo_num*n_core_inact_act_orb**2)) +end + +subroutine routine_bielec_PxxQ_no + implicit none + integer :: i_chol, i_act, ii_act, j_act, jj_act, i_core_inact, j_core_inact, ii_core_inact, jj_core_inact + integer :: i_virt, ii_virt, j_virt, jj_virt, i_mo, j_mo + double precision :: exact, new, error, accu, bielec_no_basis_chol + double precision :: bielec_PxxQ_no_chol + + accu = 0.d0 + do i_mo = 1, mo_num + do i_core_inact = 1, n_core_inact_act_orb + ii_core_inact = list_core_inact_act(i_core_inact) + do j_core_inact = 1, n_core_inact_act_orb + jj_core_inact = list_core_inact_act(j_core_inact) + do j_mo = 1, mo_num + exact = bielec_PxxQ_no(j_mo, j_core_inact, i_core_inact,i_mo) +! new = bielec_no_basis_chol(j_mo,i_mo, jj_core_inact, ii_core_inact) + new = bielec_PxxQ_no_chol(j_mo, j_core_inact, i_core_inact,i_mo) + error = dabs(exact-new) + accu += error + if(dabs(exact).gt.1.d-10)then + print*,exact,new,error + endif + enddo + enddo + enddo + enddo + print*,'accu = ',accu/(dble(mo_num*mo_num*n_core_inact_act_orb**2)) +end + +subroutine routine_bielecCI_no + implicit none + integer :: i_ca, j_ca, k_ca, i_mo + double precision :: exact, new, error, accu, bielec_no_basis_chol + double precision :: bielecCI_no_chol + + accu = 0.d0 + do i_mo = 1, mo_num + do i_ca = 1, n_act_orb + do j_ca = 1, n_act_orb + do k_ca = 1, n_act_orb + exact =bielecCI_no(k_ca, j_ca, i_ca, i_mo) + new = bielecCI_no_chol(k_ca, j_ca, i_ca, i_mo) + error = dabs(exact-new) + accu += error + if(dabs(exact).gt.1.d-10)then + print*,exact,new,error + endif + enddo + enddo + enddo + enddo + print*,'accu = ',accu/(dble(mo_num*mo_num*n_core_inact_act_orb**2)) end From 505d10084c8331c36ea6a2244bdc47ea8fb33a81 Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 12 Jul 2024 16:19:53 +0200 Subject: [PATCH 125/159] Choleskization of the CASSCF --- src/casscf_cipsi/bielec.irp.f | 61 +++++++++----- src/casscf_cipsi/bielec_natorb.irp.f | 68 ++++++++++----- src/casscf_cipsi/casscf.irp.f | 2 +- src/casscf_cipsi/chol_bielec.irp.f | 118 ++++++++++++++------------- src/casscf_cipsi/chol_garb.irp.f | 34 ++++++++ src/casscf_cipsi/gradient.irp.f | 1 + src/casscf_cipsi/hessian.irp.f | 6 ++ src/casscf_cipsi/mcscf_fock.irp.f | 2 + src/casscf_cipsi/test_chol.irp.f | 63 +++++++++----- src/casscf_cipsi/tot_en.irp.f | 1 + 10 files changed, 238 insertions(+), 118 deletions(-) create mode 100644 src/casscf_cipsi/chol_garb.irp.f diff --git a/src/casscf_cipsi/bielec.irp.f b/src/casscf_cipsi/bielec.irp.f index 0a44f994..a4901985 100644 --- a/src/casscf_cipsi/bielec.irp.f +++ b/src/casscf_cipsi/bielec.irp.f @@ -1,18 +1,25 @@ -BEGIN_PROVIDER [real*8, bielec_PQxx, (mo_num, mo_num,n_core_inact_act_orb,n_core_inact_act_orb)] +BEGIN_PROVIDER [real*8, bielec_PQxx_array, (mo_num, mo_num,n_core_inact_act_orb,n_core_inact_act_orb)] BEGIN_DOC - ! bielec_PQxx : integral (pq|xx) with p,q arbitrary, x core or active + ! WARNING !!! Old version !!! NOT USED ANYMORE IN THE PROGRAM !!! TOO BIG TO BE STORED ON LARGE SYSTEMS !!! + ! + ! Replaced by the Cholesky-based function bielec_PQxx + ! + ! bielec_PQxx_array : integral (pq|xx) with p,q arbitrary, x core or active ! indices are unshifted orbital numbers END_DOC implicit none integer :: i,j,ii,jj,p,q,i3,j3,t3,v3 real*8 :: mo_two_e_integral + print*,'' + print*,'Providing bielec_PQxx_array, WARNING IT CAN BE A VERY BIG ARRAY WHEN MO_NUM IS LARGE !!!' + print*,'' - bielec_PQxx(:,:,:,:) = 0.d0 + bielec_PQxx_array(:,:,:,:) = 0.d0 PROVIDE mo_two_e_integrals_in_map !$OMP PARALLEL DEFAULT(NONE) & !$OMP PRIVATE(i,ii,j,jj,i3,j3) & - !$OMP SHARED(n_core_inact_orb,list_core_inact,mo_num,bielec_PQxx, & + !$OMP SHARED(n_core_inact_orb,list_core_inact,mo_num,bielec_PQxx_array, & !$OMP n_act_orb,mo_integrals_map,list_act) !$OMP DO @@ -20,14 +27,14 @@ BEGIN_PROVIDER [real*8, bielec_PQxx, (mo_num, mo_num,n_core_inact_act_orb,n_core ii=list_core_inact(i) do j=i,n_core_inact_orb jj=list_core_inact(j) - call get_mo_two_e_integrals_i1j1(ii,jj,mo_num,bielec_PQxx(1,1,i,j),mo_integrals_map) - bielec_PQxx(:,:,j,i)=bielec_PQxx(:,:,i,j) + call get_mo_two_e_integrals_i1j1(ii,jj,mo_num,bielec_PQxx_array(1,1,i,j),mo_integrals_map) + bielec_PQxx_array(:,:,j,i)=bielec_PQxx_array(:,:,i,j) end do do j=1,n_act_orb jj=list_act(j) j3=j+n_core_inact_orb - call get_mo_two_e_integrals_i1j1(ii,jj,mo_num,bielec_PQxx(1,1,i,j3),mo_integrals_map) - bielec_PQxx(:,:,j3,i)=bielec_PQxx(:,:,i,j3) + call get_mo_two_e_integrals_i1j1(ii,jj,mo_num,bielec_PQxx_array(1,1,i,j3),mo_integrals_map) + bielec_PQxx_array(:,:,j3,i)=bielec_PQxx_array(:,:,i,j3) end do end do !$OMP END DO @@ -40,8 +47,8 @@ BEGIN_PROVIDER [real*8, bielec_PQxx, (mo_num, mo_num,n_core_inact_act_orb,n_core do j=i,n_act_orb jj=list_act(j) j3=j+n_core_inact_orb - call get_mo_two_e_integrals_i1j1(ii,jj,mo_num,bielec_PQxx(1,1,i3,j3),mo_integrals_map) - bielec_PQxx(:,:,j3,i3)=bielec_PQxx(:,:,i3,j3) + call get_mo_two_e_integrals_i1j1(ii,jj,mo_num,bielec_PQxx_array(1,1,i3,j3),mo_integrals_map) + bielec_PQxx_array(:,:,j3,i3)=bielec_PQxx_array(:,:,i3,j3) end do end do !$OMP END DO @@ -52,9 +59,13 @@ END_PROVIDER -BEGIN_PROVIDER [real*8, bielec_PxxQ, (mo_num,n_core_inact_act_orb,n_core_inact_act_orb, mo_num)] +BEGIN_PROVIDER [real*8, bielec_PxxQ_array, (mo_num,n_core_inact_act_orb,n_core_inact_act_orb, mo_num)] BEGIN_DOC - ! bielec_PxxQ : integral (px|xq) with p,q arbitrary, x core or active + ! WARNING !!! Old version !!! NOT USED ANYMORE IN THE PROGRAM !!! TOO BIG TO BE STORED ON LARGE SYSTEMS !!! + ! + ! Replaced by the Cholesky-based function bielec_PxxQ + ! + ! bielec_PxxQ_array : integral (px|xq) with p,q arbitrary, x core or active ! indices are unshifted orbital numbers END_DOC implicit none @@ -62,12 +73,15 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ, (mo_num,n_core_inact_act_orb,n_core_inact_a double precision, allocatable :: integrals_array(:,:) real*8 :: mo_two_e_integral + print*,'' + print*,'Providing bielec_PxxQ_array, WARNING IT CAN BE A VERY BIG ARRAY WHEN MO_NUM IS LARGE !!!' + print*,'' PROVIDE mo_two_e_integrals_in_map - bielec_PxxQ = 0.d0 + bielec_PxxQ_array = 0.d0 !$OMP PARALLEL DEFAULT(NONE) & !$OMP PRIVATE(i,ii,j,jj,i3,j3,integrals_array) & - !$OMP SHARED(n_core_inact_orb,list_core_inact,mo_num,bielec_PxxQ, & + !$OMP SHARED(n_core_inact_orb,list_core_inact,mo_num,bielec_PxxQ_array, & !$OMP n_act_orb,mo_integrals_map,list_act) allocate(integrals_array(mo_num,mo_num)) @@ -80,8 +94,8 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ, (mo_num,n_core_inact_act_orb,n_core_inact_a call get_mo_two_e_integrals_ij(ii,jj,mo_num,integrals_array,mo_integrals_map) do q=1,mo_num do p=1,mo_num - bielec_PxxQ(p,i,j,q)=integrals_array(p,q) - bielec_PxxQ(p,j,i,q)=integrals_array(q,p) + bielec_PxxQ_array(p,i,j,q)=integrals_array(p,q) + bielec_PxxQ_array(p,j,i,q)=integrals_array(q,p) end do end do end do @@ -91,8 +105,8 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ, (mo_num,n_core_inact_act_orb,n_core_inact_a call get_mo_two_e_integrals_ij(ii,jj,mo_num,integrals_array,mo_integrals_map) do q=1,mo_num do p=1,mo_num - bielec_PxxQ(p,i,j3,q)=integrals_array(p,q) - bielec_PxxQ(p,j3,i,q)=integrals_array(q,p) + bielec_PxxQ_array(p,i,j3,q)=integrals_array(p,q) + bielec_PxxQ_array(p,j3,i,q)=integrals_array(q,p) end do end do end do @@ -111,8 +125,8 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ, (mo_num,n_core_inact_act_orb,n_core_inact_a call get_mo_two_e_integrals_ij(ii,jj,mo_num,integrals_array,mo_integrals_map) do q=1,mo_num do p=1,mo_num - bielec_PxxQ(p,i3,j3,q)=integrals_array(p,q) - bielec_PxxQ(p,j3,i3,q)=integrals_array(q,p) + bielec_PxxQ_array(p,i3,j3,q)=integrals_array(p,q) + bielec_PxxQ_array(p,j3,i3,q)=integrals_array(q,p) end do end do end do @@ -129,10 +143,15 @@ BEGIN_PROVIDER [real*8, bielecCI, (n_act_orb,n_act_orb,n_act_orb, mo_num)] BEGIN_DOC ! bielecCI : integrals (tu|vp) with p arbitrary, tuv active ! index p runs over the whole basis, t,u,v only over the active orbitals + ! + ! This array can be stored anyway. Ex: 50 active orbitals, 1500 MOs ==> 8x50^3x1500 = 1.5 Gb END_DOC implicit none integer :: i,j,k,p,t,u,v double precision, external :: mo_two_e_integral + double precision :: wall0, wall1 + call wall_time(wall0) + print*,'Providing bielecCI' PROVIDE mo_two_e_integrals_in_map !$OMP PARALLEL DO DEFAULT(NONE) & @@ -151,5 +170,7 @@ BEGIN_PROVIDER [real*8, bielecCI, (n_act_orb,n_act_orb,n_act_orb, mo_num)] end do end do !$OMP END PARALLEL DO + call wall_time(wall1) + print*,'Time to provide bielecCI = ',wall1 - wall0 END_PROVIDER diff --git a/src/casscf_cipsi/bielec_natorb.irp.f b/src/casscf_cipsi/bielec_natorb.irp.f index 9968530c..99734a0b 100644 --- a/src/casscf_cipsi/bielec_natorb.irp.f +++ b/src/casscf_cipsi/bielec_natorb.irp.f @@ -1,30 +1,38 @@ - BEGIN_PROVIDER [real*8, bielec_PQxx_no, (mo_num, mo_num,n_core_inact_act_orb,n_core_inact_act_orb)] + BEGIN_PROVIDER [real*8, bielec_PQxx_no_array, (mo_num, mo_num,n_core_inact_act_orb,n_core_inact_act_orb)] BEGIN_DOC + ! WARNING !!! Old version !!! NOT USED ANYMORE IN THE PROGRAM !!! TOO BIG TO BE STORED ON LARGE SYSTEMS !!! + ! + ! Replaced by the Cholesky-based function bielec_PQxx_no + ! ! integral (pq|xx) in the basis of natural MOs ! indices are unshifted orbital numbers + ! END_DOC implicit none integer :: i,j,k,l,t,u,p,q double precision, allocatable :: f(:,:,:), d(:,:,:) + print*,'' + print*,'Providing bielec_PQxx_no_array, WARNING IT CAN BE A VERY BIG ARRAY WHEN MO_NUM IS LARGE !!!' + print*,'' !$OMP PARALLEL DEFAULT(NONE) & !$OMP PRIVATE(j,k,l,p,d,f) & !$OMP SHARED(n_core_inact_act_orb,mo_num,n_act_orb,n_core_inact_orb, & - !$OMP bielec_PQxx_no,bielec_PQxx,list_act,natorbsCI) + !$OMP bielec_PQxx_no_array,bielec_PQxx_array,list_act,natorbsCI) allocate (f(n_act_orb,mo_num,n_core_inact_act_orb), & d(n_act_orb,mo_num,n_core_inact_act_orb)) !$OMP DO do l=1,n_core_inact_act_orb - bielec_PQxx_no(:,:,:,l) = bielec_PQxx(:,:,:,l) + bielec_PQxx_no_array(:,:,:,l) = bielec_PQxx_array(:,:,:,l) do k=1,n_core_inact_act_orb do j=1,mo_num do p=1,n_act_orb - f(p,j,k)=bielec_PQxx_no(list_act(p),j,k,l) + f(p,j,k)=bielec_PQxx_no_array(list_act(p),j,k,l) end do end do end do @@ -36,13 +44,13 @@ do k=1,n_core_inact_act_orb do j=1,mo_num do p=1,n_act_orb - bielec_PQxx_no(list_act(p),j,k,l)=d(p,j,k) + bielec_PQxx_no_array(list_act(p),j,k,l)=d(p,j,k) end do end do do j=1,mo_num do p=1,n_act_orb - f(p,j,k)=bielec_PQxx_no(j,list_act(p),k,l) + f(p,j,k)=bielec_PQxx_no_array(j,list_act(p),k,l) end do end do end do @@ -54,7 +62,7 @@ do k=1,n_core_inact_act_orb do p=1,n_act_orb do j=1,mo_num - bielec_PQxx_no(j,list_act(p),k,l)=d(p,j,k) + bielec_PQxx_no_array(j,list_act(p),k,l)=d(p,j,k) end do end do end do @@ -71,7 +79,7 @@ do p=1,n_act_orb do k=1,mo_num do j=1,mo_num - f(j,k,p) = bielec_PQxx_no(j,k,n_core_inact_orb+p,l) + f(j,k,p) = bielec_PQxx_no_array(j,k,n_core_inact_orb+p,l) end do end do end do @@ -83,7 +91,7 @@ do p=1,n_act_orb do k=1,mo_num do j=1,mo_num - bielec_PQxx_no(j,k,n_core_inact_orb+p,l)=d(j,k,p) + bielec_PQxx_no_array(j,k,n_core_inact_orb+p,l)=d(j,k,p) end do end do end do @@ -97,7 +105,7 @@ do p=1,n_act_orb do k=1,mo_num do j=1,mo_num - f(j,k,p) = bielec_PQxx_no(j,k,l,n_core_inact_orb+p) + f(j,k,p) = bielec_PQxx_no_array(j,k,l,n_core_inact_orb+p) end do end do end do @@ -109,7 +117,7 @@ do p=1,n_act_orb do k=1,mo_num do j=1,mo_num - bielec_PQxx_no(j,k,l,n_core_inact_orb+p)=d(j,k,p) + bielec_PQxx_no_array(j,k,l,n_core_inact_orb+p)=d(j,k,p) end do end do end do @@ -123,8 +131,12 @@ END_PROVIDER -BEGIN_PROVIDER [real*8, bielec_PxxQ_no, (mo_num,n_core_inact_act_orb,n_core_inact_act_orb, mo_num)] +BEGIN_PROVIDER [real*8, bielec_PxxQ_no_array, (mo_num,n_core_inact_act_orb,n_core_inact_act_orb, mo_num)] BEGIN_DOC + ! WARNING !!! Old version !!! NOT USED ANYMORE IN THE PROGRAM !!! TOO BIG TO BE STORED ON LARGE SYSTEMS !!! + ! + ! Replaced by the Cholesky-based function bielec_PxxQ_no + ! ! integral (px|xq) in the basis of natural MOs ! indices are unshifted orbital numbers END_DOC @@ -132,10 +144,14 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ_no, (mo_num,n_core_inact_act_orb,n_core_inac integer :: i,j,k,l,t,u,p,q double precision, allocatable :: f(:,:,:), d(:,:,:) + print*,'' + print*,'Providing bielec_PxxQ_no_array, WARNING IT CAN BE A VERY BIG ARRAY WHEN MO_NUM IS LARGE !!!' + print*,'' + !$OMP PARALLEL DEFAULT(NONE) & !$OMP PRIVATE(j,k,l,p,d,f) & !$OMP SHARED(n_core_inact_act_orb,mo_num,n_act_orb,n_core_inact_orb, & - !$OMP bielec_PxxQ_no,bielec_PxxQ,list_act,natorbsCI) + !$OMP bielec_PxxQ_no_array,bielec_PxxQ_array,list_act,natorbsCI) allocate (f(n_act_orb,n_core_inact_act_orb,n_core_inact_act_orb), & @@ -143,11 +159,11 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ_no, (mo_num,n_core_inact_act_orb,n_core_inac !$OMP DO do j=1,mo_num - bielec_PxxQ_no(:,:,:,j) = bielec_PxxQ(:,:,:,j) + bielec_PxxQ_no_array(:,:,:,j) = bielec_PxxQ_array(:,:,:,j) do l=1,n_core_inact_act_orb do k=1,n_core_inact_act_orb do p=1,n_act_orb - f(p,k,l) = bielec_PxxQ_no(list_act(p),k,l,j) + f(p,k,l) = bielec_PxxQ_no_array(list_act(p),k,l,j) end do end do end do @@ -159,7 +175,7 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ_no, (mo_num,n_core_inact_act_orb,n_core_inac do l=1,n_core_inact_act_orb do k=1,n_core_inact_act_orb do p=1,n_act_orb - bielec_PxxQ_no(list_act(p),k,l,j)=d(p,k,l) + bielec_PxxQ_no_array(list_act(p),k,l,j)=d(p,k,l) end do end do end do @@ -176,7 +192,7 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ_no, (mo_num,n_core_inact_act_orb,n_core_inac do l=1,n_core_inact_act_orb do j=1,mo_num do p=1,n_act_orb - f(p,j,l) = bielec_PxxQ_no(j,n_core_inact_orb+p,l,k) + f(p,j,l) = bielec_PxxQ_no_array(j,n_core_inact_orb+p,l,k) end do end do end do @@ -188,7 +204,7 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ_no, (mo_num,n_core_inact_act_orb,n_core_inac do l=1,n_core_inact_act_orb do j=1,mo_num do p=1,n_act_orb - bielec_PxxQ_no(j,n_core_inact_orb+p,l,k)=d(p,j,l) + bielec_PxxQ_no_array(j,n_core_inact_orb+p,l,k)=d(p,j,l) end do end do end do @@ -205,7 +221,7 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ_no, (mo_num,n_core_inact_act_orb,n_core_inac do p=1,n_act_orb do l=1,n_core_inact_act_orb do j=1,mo_num - f(j,l,p) = bielec_PxxQ_no(j,l,n_core_inact_orb+p,k) + f(j,l,p) = bielec_PxxQ_no_array(j,l,n_core_inact_orb+p,k) end do end do end do @@ -217,7 +233,7 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ_no, (mo_num,n_core_inact_act_orb,n_core_inac do p=1,n_act_orb do l=1,n_core_inact_act_orb do j=1,mo_num - bielec_PxxQ_no(j,l,n_core_inact_orb+p,k)=d(j,l,p) + bielec_PxxQ_no_array(j,l,n_core_inact_orb+p,k)=d(j,l,p) end do end do end do @@ -231,7 +247,7 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ_no, (mo_num,n_core_inact_act_orb,n_core_inac do p=1,n_act_orb do k=1,n_core_inact_act_orb do j=1,mo_num - f(j,k,p) = bielec_PxxQ_no(j,k,l,n_core_inact_orb+p) + f(j,k,p) = bielec_PxxQ_no_array(j,k,l,n_core_inact_orb+p) end do end do end do @@ -243,7 +259,7 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ_no, (mo_num,n_core_inact_act_orb,n_core_inac do p=1,n_act_orb do k=1,n_core_inact_act_orb do j=1,mo_num - bielec_PxxQ_no(j,k,l,n_core_inact_orb+p)=d(j,k,p) + bielec_PxxQ_no_array(j,k,l,n_core_inact_orb+p)=d(j,k,p) end do end do end do @@ -259,10 +275,16 @@ BEGIN_PROVIDER [real*8, bielecCI_no, (n_act_orb,n_act_orb,n_act_orb, mo_num)] BEGIN_DOC ! integrals (tu|vp) in the basis of natural MOs ! index p runs over the whole basis, t,u,v only over the active orbitals + ! + ! This array can be stored anyway. Ex: 50 active orbitals, 1500 MOs ==> 8x50^3x1500 = 1.5 Gb END_DOC implicit none integer :: i,j,k,l,t,u,p,q double precision, allocatable :: f(:,:,:), d(:,:,:) + + double precision :: wall0, wall1 + call wall_time(wall0) + print*,'Providing bielecCI_no' !$OMP PARALLEL DEFAULT(NONE) & !$OMP PRIVATE(j,k,l,p,d,f) & @@ -363,6 +385,8 @@ BEGIN_PROVIDER [real*8, bielecCI_no, (n_act_orb,n_act_orb,n_act_orb, mo_num)] deallocate(d,f) !$OMP END PARALLEL + call wall_time(wall1) + print*,'Time to provide bielecCI_no = ',wall1-wall0 END_PROVIDER diff --git a/src/casscf_cipsi/casscf.irp.f b/src/casscf_cipsi/casscf.irp.f index d0a26d36..dc3e2245 100644 --- a/src/casscf_cipsi/casscf.irp.f +++ b/src/casscf_cipsi/casscf.irp.f @@ -11,7 +11,7 @@ program casscf if(small_active_space)then pt2_relative_error = 0.00001 else - thresh_scf = 1.d-4 + thresh_scf = max(1.d-4,thresh_scf) pt2_relative_error = 0.04 endif touch pt2_relative_error diff --git a/src/casscf_cipsi/chol_bielec.irp.f b/src/casscf_cipsi/chol_bielec.irp.f index 94a76453..f69832c1 100644 --- a/src/casscf_cipsi/chol_bielec.irp.f +++ b/src/casscf_cipsi/chol_bielec.irp.f @@ -6,6 +6,9 @@ BEGIN_PROVIDER [double precision, cholesky_no_1_idx_transp, (cholesky_mo_num, n_ implicit none integer :: i_chol,i_act,i_mo,jj_act double precision, allocatable :: chol_tmp(:,:) + double precision :: wall0,wall1 + call wall_time(wall0) + print*,'Providing cholesky_no_1_idx_transp' allocate(chol_tmp(cholesky_mo_num,n_act_orb)) cholesky_no_1_idx_transp = 0.D0 do i_mo = 1, mo_num @@ -16,46 +19,17 @@ BEGIN_PROVIDER [double precision, cholesky_no_1_idx_transp, (cholesky_mo_num, n_ chol_tmp(i_chol, i_act) = cholesky_mo_transp(i_chol, jj_act, i_mo) enddo enddo -! ! Do the matrix product -! do i_act = 1, n_act_orb -! do jj_act = 1, n_act_orb -! do i_chol = 1, cholesky_mo_num -! cholesky_no_1_idx_transp(i_chol, i_act, i_mo) += chol_tmp(i_chol, jj_act) * natorbsCI(jj_act,i_act) -! enddo -! enddo -! enddo call dgemm('N','N',cholesky_mo_num,n_act_orb,n_act_orb,1.d0, & chol_tmp, size(chol_tmp,1), & natorbsCI, size(natorbsCI,1), & 0.d0, & cholesky_no_1_idx_transp(1,1,i_mo), size(cholesky_no_1_idx_transp,1)) enddo + call wall_time(wall1) + print*,'Time to provide cholesky_no_1_idx_transp = ', wall1 - wall0 END_PROVIDER -BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp_old, (cholesky_mo_num, n_act_orb, n_act_orb)] - BEGIN_DOC - ! Cholesky vectors with TWO orbital on the active natural orbital basis - END_DOC - implicit none - integer :: i_chol,i_act,j_act,jj_act,jjj_act - double precision, allocatable :: chol_tmp(:,:) - allocate(chol_tmp(cholesky_mo_num,n_act_orb)) - cholesky_no_2_idx_transp_old = 0.D0 - do jj_act = 1, n_act_orb - jjj_act = list_act(jj_act) - do j_act = 1, n_act_orb - do i_act = 1, n_act_orb - do i_chol = 1, cholesky_mo_num - cholesky_no_2_idx_transp_old(i_chol, i_act, j_act) += cholesky_no_1_idx_transp(i_chol, i_act,jjj_act) * natorbsCI(jj_act,j_act) - enddo - enddo - enddo - enddo - -END_PROVIDER - - BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp, (cholesky_mo_num, n_act_orb, n_act_orb)] BEGIN_DOC ! Cholesky vectors with TWO orbital on the active natural orbital basis @@ -64,6 +38,9 @@ BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp, (cholesky_mo_num, n_ integer :: i_chol,i_act,j_act,jj_act double precision, allocatable :: chol_tmp(:,:),chol_tmp_bis(:,:) allocate(chol_tmp(cholesky_mo_num,n_act_orb),chol_tmp_bis(cholesky_mo_num,n_act_orb)) + double precision :: wall0,wall1 + call wall_time(wall0) + print*,'Providing cholesky_no_2_idx_transp' cholesky_no_2_idx_transp = 0.D0 do i_act = 1, n_act_orb ! Get all the integrals corresponding to the "j_act" @@ -79,6 +56,8 @@ BEGIN_PROVIDER [double precision, cholesky_no_2_idx_transp, (cholesky_mo_num, n_ 0.d0, & cholesky_no_2_idx_transp(1,1,i_act), size(cholesky_no_2_idx_transp,1)) enddo + call wall_time(wall1) + print*,'Time to provide cholesky_no_2_idx_transp = ', wall1 - wall0 END_PROVIDER @@ -89,6 +68,9 @@ BEGIN_PROVIDER [ double precision, cholesky_no_total_transp, (cholesky_mo_num, m END_DOC integer :: i_chol, i_act, ii_act, j_act, jj_act, i_core_inact, j_core_inact, ii_core_inact, jj_core_inact integer :: i_virt, ii_virt, j_virt, jj_virt + double precision :: wall0,wall1 + call wall_time(wall0) + print*,'Providing cholesky_no_total_transp ' ! Block when two orbitals belong to the core/inact do j_core_inact = 1, n_core_inact_orb jj_core_inact = list_core_inact(j_core_inact) @@ -180,63 +162,87 @@ BEGIN_PROVIDER [ double precision, cholesky_no_total_transp, (cholesky_mo_num, m enddo enddo enddo + + call wall_time(wall1) + print*,'Time to provide cholesky_no_total_transp = ', wall1 - wall0 END_PROVIDER -double precision function bielec_no_basis_chol(i_1,j_1,i_2,j_2) +double precision function bielec_no_basis(i_1,j_1,i_2,j_2) implicit none integer, intent(in) :: i_1,j_1,i_2,j_2 BEGIN_DOC ! integral (i_1 j_1|i_2 j_2) in the mixed basis of both MOs and natural MOs ! END_DOC - integer :: i_chol - bielec_no_basis_chol = 0.d0 - do i_chol = 1, cholesky_mo_num - bielec_no_basis_chol += cholesky_no_total_transp(i_chol,i_1, j_1) * cholesky_no_total_transp(i_chol,i_2,j_2) + integer :: i + bielec_no_basis = 0.d0 + do i = 1, cholesky_mo_num + bielec_no_basis += cholesky_no_total_transp(i,i_1, j_1) * cholesky_no_total_transp(i,i_2,j_2) enddo end -double precision function bielec_PQxx_no_chol(i_mo, j_mo, i_ca, j_ca) +double precision function bielec_PQxx_no(i_mo, j_mo, i_ca, j_ca) implicit none BEGIN_DOC - ! function that computes (i_mo j_mo| i_ca j_ca) with Cholesky decomposition + ! function that computes (i_mo j_mo| i_ca j_ca) with Cholesky decomposition on the NO basis for active orbitals ! - ! indices are unshifted orbital numbers + ! where i_ca, j_ca are in [1:n_core_inact_act_orb] END_DOC integer, intent(in) :: i_ca, j_ca, i_mo, j_mo integer :: ii_ca, jj_ca - double precision :: bielec_no_basis_chol + double precision :: bielec_no_basis ii_ca = list_core_inact_act(i_ca) jj_ca = list_core_inact_act(j_ca) - bielec_PQxx_no_chol = bielec_no_basis_chol(i_mo,j_mo,ii_ca,jj_ca) - + bielec_PQxx_no = bielec_no_basis(i_mo,j_mo,ii_ca,jj_ca) end -double precision function bielec_PxxQ_no_chol(i_mo, j_ca, i_ca, j_mo) +double precision function bielec_PxxQ_no(i_mo, j_ca, i_ca, j_mo) implicit none BEGIN_DOC - ! function that computes (i_mo j_ca |i_ca j_mo) with Cholesky decomposition + ! function that computes (i_mo j_ca |i_ca j_mo) with Cholesky decomposition on the NO basis for active orbitals ! - ! indices are unshifted orbital numbers + ! where i_ca, j_ca are in [1:n_core_inact_act_orb] END_DOC integer, intent(in) :: i_ca, j_ca, i_mo, j_mo integer :: ii_ca, jj_ca - double precision :: bielec_no_basis_chol + double precision :: bielec_no_basis ii_ca = list_core_inact_act(i_ca) jj_ca = list_core_inact_act(j_ca) - bielec_PxxQ_no_chol = bielec_no_basis_chol(i_mo, jj_ca, ii_ca, j_mo) + bielec_PxxQ_no = bielec_no_basis(i_mo, jj_ca, ii_ca, j_mo) end -double precision function bielecCI_no_chol(i_ca, j_ca, k_ca, i_mo) + +double precision function bielec_PQxx(i_mo, j_mo, i_ca, j_ca) + BEGIN_DOC + ! function that computes (i_mo j_mo |i_ca j_ca) with Cholesky decomposition + ! + ! indices are unshifted orbital numbers + ! + ! where i_ca, j_ca are in [1:n_core_inact_act_orb] + END_DOC implicit none - integer, intent(in) :: i_ca, j_ca, k_ca, i_mo - integer :: ii_ca, jj_ca, kk_ca - double precision :: bielec_no_basis_chol - ii_ca = list_act(i_ca) - jj_ca = list_act(j_ca) - kk_ca = list_act(k_ca) - bielecCI_no_chol = bielec_no_basis_chol(ii_ca, jj_ca, kk_ca, i_mo) - + integer, intent(in) :: i_ca, j_ca, j_mo, i_mo + double precision :: mo_two_e_integral + integer :: ii_ca, jj_ca + ii_ca = list_core_inact_act(i_ca) + jj_ca = list_core_inact_act(j_ca) + bielec_PQxx = mo_two_e_integral(i_mo,ii_ca,j_mo,jj_ca) end + +double precision function bielec_PxxQ(i_mo, i_ca, j_ca, j_mo) + BEGIN_DOC + ! function that computes (i_mo j_mo |i_ca j_ca) with Cholesky decomposition + ! + ! where i_ca, j_ca are in [1:n_core_inact_act_orb] + END_DOC + implicit none + integer, intent(in) :: i_ca, j_ca, j_mo, i_mo + double precision :: mo_two_e_integral + integer :: ii_ca, jj_ca + ii_ca = list_core_inact_act(i_ca) + jj_ca = list_core_inact_act(j_ca) + bielec_PxxQ = mo_two_e_integral(i_mo,jj_ca,ii_ca,j_mo) +end + diff --git a/src/casscf_cipsi/chol_garb.irp.f b/src/casscf_cipsi/chol_garb.irp.f new file mode 100644 index 00000000..c4a8fa59 --- /dev/null +++ b/src/casscf_cipsi/chol_garb.irp.f @@ -0,0 +1,34 @@ + +!!!!! FUNCTIONS THAT WORK BUT WHICH ARE USELESS AS THE ARRAYS CAN ALWAYS BE STORED +!double precision function bielecCI_chol(i_a, j_a, k_a, i_mo) +! BEGIN_DOC +! ! function that computes (i_a j_a |k_a j_mo) with Cholesky decomposition +! ! +! ! where i_a, j_a, k_a are in [1:n_act_orb] !!! ONLY ON ACTIVE +! END_DOC +! implicit none +! integer, intent(in) :: i_a, j_a, k_a, i_mo +! integer :: ii_a, jj_a, kk_a +! double precision :: mo_two_e_integral +! ii_a = list_act(i_a) +! jj_a = list_act(j_a) +! kk_a = list_act(k_a) +! bielecCI_chol = mo_two_e_integral(ii_a,kk_a,jj_a,i_mo) +!end + +!double precision function bielecCI_no_chol(i_ca, j_ca, k_ca, i_mo) +! BEGIN_DOC +! ! function that computes (i_ca j_ca |k_ca j_mo) with Cholesky decomposition on the NO basis for active orbitals +! ! +! ! where i_ca, j_ca, k_ca are in [1:n_core_inact_act_orb] +! END_DOC +! implicit none +! integer, intent(in) :: i_ca, j_ca, k_ca, i_mo +! integer :: ii_ca, jj_ca, kk_ca +! double precision :: bielec_no_basis_chol +! ii_ca = list_act(i_ca) +! jj_ca = list_act(j_ca) +! kk_ca = list_act(k_ca) +! bielecCI_no_chol = bielec_no_basis_chol(ii_ca, jj_ca, kk_ca, i_mo) +! +!end diff --git a/src/casscf_cipsi/gradient.irp.f b/src/casscf_cipsi/gradient.irp.f index a1c5e947..961d260d 100644 --- a/src/casscf_cipsi/gradient.irp.f +++ b/src/casscf_cipsi/gradient.irp.f @@ -157,6 +157,7 @@ real*8 function gradvec_it(i,t) integer :: ii,tt,v,vv,x,y integer :: x3,y3 + double precision :: bielec_PQxx_no ii=list_core_inact(i) tt=list_act(t) diff --git a/src/casscf_cipsi/hessian.irp.f b/src/casscf_cipsi/hessian.irp.f index 458c6aa6..9a7a9031 100644 --- a/src/casscf_cipsi/hessian.irp.f +++ b/src/casscf_cipsi/hessian.irp.f @@ -10,6 +10,7 @@ real*8 function hessmat_itju(i,t,j,u) implicit none integer :: i,t,j,u,ii,tt,uu,v,vv,x,xx,y,jj real*8 :: term,t2 + double precision :: bielec_pqxx_no,bielec_pxxq_no ii=list_core_inact(i) tt=list_act(t) @@ -95,6 +96,7 @@ real*8 function hessmat_itja(i,t,j,a) implicit none integer :: i,t,j,a,ii,tt,jj,aa,v,vv,x,y real*8 :: term + double precision :: bielec_pqxx_no,bielec_pxxq_no ! it/ja ii=list_core_inact(i) @@ -128,6 +130,7 @@ real*8 function hessmat_itua(i,t,u,a) implicit none integer :: i,t,u,a,ii,tt,uu,aa,v,vv,x,xx,u3,t3,v3 real*8 :: term + double precision :: bielec_pqxx_no,bielec_pxxq_no ii=list_core_inact(i) tt=list_act(t) @@ -169,6 +172,7 @@ real*8 function hessmat_iajb(i,a,j,b) implicit none integer :: i,a,j,b,ii,aa,jj,bb real*8 :: term + double precision :: bielec_pqxx_no,bielec_pxxq_no ii=list_core_inact(i) aa=list_virt(a) @@ -205,6 +209,7 @@ real*8 function hessmat_iatb(i,a,t,b) implicit none integer :: i,a,t,b,ii,aa,tt,bb,v,vv,x,y,v3,t3 real*8 :: term + double precision :: bielec_pqxx_no,bielec_pxxq_no ii=list_core_inact(i) aa=list_virt(a) @@ -237,6 +242,7 @@ real*8 function hessmat_taub(t,a,u,b) integer :: t,a,u,b,tt,aa,uu,bb,v,vv,x,xx,y integer :: v3,x3 real*8 :: term,t1,t2,t3 + double precision :: bielec_pqxx_no,bielec_pxxq_no tt=list_act(t) aa=list_virt(a) diff --git a/src/casscf_cipsi/mcscf_fock.irp.f b/src/casscf_cipsi/mcscf_fock.irp.f index 0f4b7a99..82b710a7 100644 --- a/src/casscf_cipsi/mcscf_fock.irp.f +++ b/src/casscf_cipsi/mcscf_fock.irp.f @@ -4,6 +4,7 @@ BEGIN_PROVIDER [real*8, Fipq, (mo_num,mo_num) ] END_DOC implicit none integer :: p,q,k,kk,t,tt,u,uu + double precision :: bielec_pxxq_no, bielec_pqxx_no do q=1,mo_num do p=1,mo_num @@ -44,6 +45,7 @@ BEGIN_PROVIDER [real*8, Fapq, (mo_num,mo_num) ] END_DOC implicit none integer :: p,q,k,kk,t,tt,u,uu + double precision :: bielec_pxxq_no, bielec_pqxx_no Fapq = 0.d0 diff --git a/src/casscf_cipsi/test_chol.irp.f b/src/casscf_cipsi/test_chol.irp.f index 87c5c352..bcce7cf7 100644 --- a/src/casscf_cipsi/test_chol.irp.f +++ b/src/casscf_cipsi/test_chol.irp.f @@ -3,7 +3,9 @@ program test_chol read_wf= .True. touch read_wf ! call routine_bielec_PxxQ_no - call routine_bielecCI_no +! call routine_bielecCI_no +! call test_bielec_PxxQ_chol +! call test_bielecCI end @@ -12,7 +14,7 @@ subroutine routine_bielec_PQxx_no integer :: i_chol, i_act, ii_act, j_act, jj_act, i_core_inact, j_core_inact, ii_core_inact, jj_core_inact integer :: i_virt, ii_virt, j_virt, jj_virt, i_mo, j_mo double precision :: exact, new, error, accu, bielec_no_basis_chol - double precision :: bielec_PQxx_no_chol + double precision :: bielec_PQxx_no accu = 0.d0 do i_core_inact = 1, n_core_inact_act_orb @@ -21,9 +23,8 @@ subroutine routine_bielec_PQxx_no jj_core_inact = list_core_inact_act(j_core_inact) do i_mo = 1, mo_num do j_mo = 1, mo_num - exact = bielec_PQxx_no(j_mo,i_mo, j_core_inact, i_core_inact) -! new = bielec_no_basis_chol(j_mo,i_mo, jj_core_inact, ii_core_inact) - new = bielec_PQxx_no_chol(j_mo,i_mo, j_core_inact, i_core_inact) + exact = bielec_PQxx_no_array(j_mo,i_mo, j_core_inact, i_core_inact) + new = bielec_PQxx_no(j_mo,i_mo, j_core_inact, i_core_inact) error = dabs(exact-new) if(dabs(exact).gt.1.d-10)then print*,exact,new,error @@ -36,12 +37,12 @@ subroutine routine_bielec_PQxx_no print*,'accu = ',accu/(dble(mo_num*mo_num*n_core_inact_act_orb**2)) end -subroutine routine_bielec_PxxQ_no +subroutine routine_bielec_PxxQ_no_array implicit none integer :: i_chol, i_act, ii_act, j_act, jj_act, i_core_inact, j_core_inact, ii_core_inact, jj_core_inact integer :: i_virt, ii_virt, j_virt, jj_virt, i_mo, j_mo double precision :: exact, new, error, accu, bielec_no_basis_chol - double precision :: bielec_PxxQ_no_chol + double precision :: bielec_PxxQ_no accu = 0.d0 do i_mo = 1, mo_num @@ -50,9 +51,9 @@ subroutine routine_bielec_PxxQ_no do j_core_inact = 1, n_core_inact_act_orb jj_core_inact = list_core_inact_act(j_core_inact) do j_mo = 1, mo_num - exact = bielec_PxxQ_no(j_mo, j_core_inact, i_core_inact,i_mo) + exact = bielec_PxxQ_no_array(j_mo, j_core_inact, i_core_inact,i_mo) ! new = bielec_no_basis_chol(j_mo,i_mo, jj_core_inact, ii_core_inact) - new = bielec_PxxQ_no_chol(j_mo, j_core_inact, i_core_inact,i_mo) + new = bielec_PxxQ_no(j_mo, j_core_inact, i_core_inact,i_mo) error = dabs(exact-new) accu += error if(dabs(exact).gt.1.d-10)then @@ -65,19 +66,43 @@ subroutine routine_bielec_PxxQ_no print*,'accu = ',accu/(dble(mo_num*mo_num*n_core_inact_act_orb**2)) end -subroutine routine_bielecCI_no +subroutine test_bielec_PQxx(i_mo, j_mo, i_ca, j_ca) implicit none - integer :: i_ca, j_ca, k_ca, i_mo - double precision :: exact, new, error, accu, bielec_no_basis_chol - double precision :: bielecCI_no_chol + integer :: i_mo, j_mo, i_ca, j_ca + double precision :: exact, new, error, accu + double precision :: bielec_PQxx accu = 0.d0 - do i_mo = 1, mo_num - do i_ca = 1, n_act_orb - do j_ca = 1, n_act_orb - do k_ca = 1, n_act_orb - exact =bielecCI_no(k_ca, j_ca, i_ca, i_mo) - new = bielecCI_no_chol(k_ca, j_ca, i_ca, i_mo) + do j_ca = 1, n_core_inact_act_orb + do i_ca = 1, n_core_inact_act_orb + do j_mo = 1, mo_num + do i_mo = 1, mo_num + exact = bielec_PQxx_array(i_mo, j_mo, i_ca, j_ca) + new = bielec_PQxx(i_mo, j_mo, i_ca, j_ca) + error = dabs(exact-new) + accu += error + if(dabs(exact).gt.1.d-10)then + print*,exact,new,error + endif + enddo + enddo + enddo + enddo + print*,'accu = ',accu/(dble(mo_num*mo_num*n_core_inact_act_orb**2)) +end + +subroutine test_bielec_PxxQ_chol(i_mo, i_ca, j_ca, j_mo) + implicit none + integer :: i_mo, i_ca, j_ca, j_mo + double precision :: exact, new, error, accu + double precision :: bielec_PxxQ + accu = 0.d0 + do j_mo = 1, mo_num + do j_ca = 1, n_core_inact_act_orb + do i_ca =1, n_core_inact_act_orb + do i_mo = 1, mo_num + exact = bielec_PxxQ_array(i_mo, i_ca, j_ca, j_mo) + new = bielec_PxxQ(i_mo, i_ca, j_ca, j_mo) error = dabs(exact-new) accu += error if(dabs(exact).gt.1.d-10)then diff --git a/src/casscf_cipsi/tot_en.irp.f b/src/casscf_cipsi/tot_en.irp.f index 1d70e087..37ceac05 100644 --- a/src/casscf_cipsi/tot_en.irp.f +++ b/src/casscf_cipsi/tot_en.irp.f @@ -8,6 +8,7 @@ implicit none integer :: t,u,v,x,i,ii,tt,uu,vv,xx,j,jj,t3,u3,v3,x3 real*8 :: e_one_all,e_two_all + double precision :: bielec_PQxx,bielec_PxxQ e_one_all=0.D0 e_two_all=0.D0 do i=1,n_core_inact_orb From 4a9a11c630c94528fb429255d5d9767d9b2edefc Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 12 Jul 2024 17:32:41 +0200 Subject: [PATCH 126/159] GPU acceleration compute_tc_int --- plugins/local/tc_int/NEED | 1 + plugins/local/tc_int/compute_tc_int.irp.f | 117 +++++++++++++--------- 2 files changed, 69 insertions(+), 49 deletions(-) diff --git a/plugins/local/tc_int/NEED b/plugins/local/tc_int/NEED index 8a4caf5b..34d2e183 100644 --- a/plugins/local/tc_int/NEED +++ b/plugins/local/tc_int/NEED @@ -1,3 +1,4 @@ +gpu tc_keywords jastrow qmckl diff --git a/plugins/local/tc_int/compute_tc_int.irp.f b/plugins/local/tc_int/compute_tc_int.irp.f index 02f21570..92c90d03 100644 --- a/plugins/local/tc_int/compute_tc_int.irp.f +++ b/plugins/local/tc_int/compute_tc_int.irp.f @@ -2,23 +2,23 @@ ! --- subroutine provide_int2_grad1_u12_ao() - + use gpu BEGIN_DOC ! - ! int2_grad1_u12_ao(i,j,ipoint,1) = \int dr2 [\grad1 u(r1,r2)]_x1 \chi_i(r2) \chi_j(r2) - ! int2_grad1_u12_ao(i,j,ipoint,2) = \int dr2 [\grad1 u(r1,r2)]_y1 \chi_i(r2) \chi_j(r2) - ! int2_grad1_u12_ao(i,j,ipoint,3) = \int dr2 [\grad1 u(r1,r2)]_z1 \chi_i(r2) \chi_j(r2) - ! int2_grad1_u12_ao(i,j,ipoint,4) = \int dr2 [-(1/2) [\grad1 u(r1,r2)]^2] \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,1) = \int dr2 [\grad1 u(r1,r2)]_x1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,2) = \int dr2 [\grad1 u(r1,r2)]_y1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,3) = \int dr2 [\grad1 u(r1,r2)]_z1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,4) = \int dr2 [-(1/2) [\grad1 u(r1,r2)]^2] \chi_i(r2) \chi_j(r2) ! ! - ! tc_int_2e_ao(k,i,l,j) = (ki|V^TC(r_12)|lj) - ! = where V^TC(r_12) is the total TC operator + ! tc_int_2e_ao(k,i,l,j) = (ki|V^TC(r_12)|lj) + ! = where V^TC(r_12) is the total TC operator ! = tc_grad_and_lapl_ao(k,i,l,j) + tc_grad_square_ao(k,i,l,j) + ao_two_e_coul(k,i,l,j) ! where: ! ! tc_grad_and_lapl_ao(k,i,l,j) = < k l | -1/2 \Delta_1 u(r1,r2) - \grad_1 u(r1,r2) . \grad_1 | ij > - ! = -1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) - ! = 1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 (-1) \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) + ! = -1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) + ! = 1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 (-1) \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) ! ! tc_grad_square_ao(k,i,l,j) = -1/2 ! @@ -35,8 +35,9 @@ subroutine provide_int2_grad1_u12_ao() double precision :: weight1, ao_k_r, ao_i_r double precision :: der_envsq_x, der_envsq_y, der_envsq_z, lap_envsq double precision :: time0, time1, time2, tc1, tc2, tc - double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:), tc_int_2e_ao(:,:,:,:) - double precision, allocatable :: tmp(:,:,:), c_mat(:,:,:), tmp_grad1_u12(:,:,:) + type(gpu_double4) :: int2_grad1_u12_ao + type(gpu_double3) :: tmp_grad1_u12, tmp_grad1_u12p, tmp + double precision, allocatable :: c_mat(:,:,:), tc_int_2e_ao(:,:,:,:) double precision, external :: get_ao_two_e_integral @@ -51,6 +52,7 @@ subroutine provide_int2_grad1_u12_ao() call total_memory(mem) mem = max(1.d0, qp_max_mem - mem) + mem = 6 n_double = mem * 1.d8 n_blocks = int(min(n_double / (n_points_extra_final_grid * 4.d0), 1.d0*n_points_final_grid)) n_rest = int(mod(n_points_final_grid, n_blocks)) @@ -64,9 +66,9 @@ subroutine provide_int2_grad1_u12_ao() ! --- ! --- - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + call gpu_allocate(int2_grad1_u12_ao, ao_num,ao_num,n_points_final_grid,4) - allocate(tmp(n_points_extra_final_grid,ao_num,ao_num)) + call gpu_allocate(tmp,n_points_extra_final_grid,ao_num,ao_num) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (j, i, jpoint) & @@ -75,49 +77,55 @@ subroutine provide_int2_grad1_u12_ao() do j = 1, ao_num do i = 1, ao_num do jpoint = 1, n_points_extra_final_grid - tmp(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + tmp%f(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) enddo enddo enddo !$OMP END DO !$OMP END PARALLEL - allocate(tmp_grad1_u12(n_points_extra_final_grid,n_blocks,4)) + call gpu_allocate(tmp_grad1_u12,n_points_extra_final_grid,n_blocks,4) + call gpu_allocate(tmp_grad1_u12p,n_points_extra_final_grid,n_blocks,4) tc = 0.d0 - + + type(gpu_stream) :: stream(4) + do i=1,4 + call gpu_stream_create(stream(i)) + enddo + do i_pass = 1, n_pass ii = (i_pass-1)*n_blocks + 1 - + call wall_time(tc1) + !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (i_blocks, ipoint) & !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) - !$OMP DO + !$OMP DO do i_blocks = 1, n_blocks ipoint = ii - 1 + i_blocks ! r1 - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_blocks,1), tmp_grad1_u12(1,i_blocks,2), tmp_grad1_u12(1,i_blocks,3), tmp_grad1_u12(1,i_blocks,4)) + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12%f(1,i_blocks,1), tmp_grad1_u12%f(1,i_blocks,2), & + tmp_grad1_u12%f(1,i_blocks,3), tmp_grad1_u12%f(1,i_blocks,4)) enddo !$OMP END DO !$OMP END PARALLEL call wall_time(tc2) - tc = tc + tc2 - tc1 + tc = tc + tc2 - tc1 + call gpu_synchronize() + call gpu_copy(tmp_grad1_u12,tmp_grad1_u12p) do m = 1, 4 - call dgemm( "T", "N", ao_num*ao_num, n_blocks, n_points_extra_final_grid, 1.d0 & - , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & - , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) + call gpu_set_stream(blas_handle, stream(m)) + call gpu_dgemm(blas_handle, "T", "N", ao_num*ao_num, n_blocks, n_points_extra_final_grid, 1.d0 & + , tmp%f(1,1,1), n_points_extra_final_grid, tmp_grad1_u12p%f(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao%f(1,1,ii,m), ao_num*ao_num) enddo enddo - - deallocate(tmp_grad1_u12) - if(n_rest .gt. 0) then - - allocate(tmp_grad1_u12(n_points_extra_final_grid,n_rest,4)) - + ii = n_pass*n_blocks + 1 call wall_time(tc1) @@ -125,26 +133,35 @@ subroutine provide_int2_grad1_u12_ao() !$OMP DEFAULT (NONE) & !$OMP PRIVATE (i_rest, ipoint) & !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) - !$OMP DO + !$OMP DO do i_rest = 1, n_rest ipoint = ii - 1 + i_rest ! r1 - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_rest,1), tmp_grad1_u12(1,i_rest,2), tmp_grad1_u12(1,i_rest,3), tmp_grad1_u12(1,i_rest,4)) + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12%f(1,i_rest,1), tmp_grad1_u12%f(1,i_rest,2), & + tmp_grad1_u12%f(1,i_rest,3), tmp_grad1_u12%f(1,i_rest,4)) enddo !$OMP END DO !$OMP END PARALLEL call wall_time(tc2) - tc = tc + tc2 - tc1 - + tc = tc + tc2 - tc1 + do m = 1, 4 - call dgemm( "T", "N", ao_num*ao_num, n_rest, n_points_extra_final_grid, 1.d0 & - , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & - , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) + call gpu_set_stream(blas_handle, stream(m)) + call gpu_dgemm(blas_handle, "T", "N", ao_num*ao_num, n_rest, n_points_extra_final_grid, 1.d0 & + , tmp%f(1,1,1), n_points_extra_final_grid, tmp_grad1_u12%f(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao%f(1,1,ii,m), ao_num*ao_num) enddo - deallocate(tmp_grad1_u12) endif + call gpu_synchronize() + call gpu_deallocate(tmp_grad1_u12) + call gpu_deallocate(tmp_grad1_u12p) - deallocate(tmp) + do i=1,4 + call gpu_stream_destroy(stream(i)) + enddo + + + call gpu_deallocate(tmp) call wall_time(time1) @@ -152,6 +169,8 @@ subroutine provide_int2_grad1_u12_ao() print*, ' wall time Jastrow derivatives (min) = ', tc / 60.d0 call print_memory_usage() +!TODO +stop ! --- ! --- ! --- @@ -177,7 +196,7 @@ subroutine provide_int2_grad1_u12_ao() !$OMP END DO !$OMP END PARALLEL call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & - , int2_grad1_u12_ao(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , int2_grad1_u12_ao%f(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 0.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) deallocate(c_mat) @@ -188,23 +207,23 @@ subroutine provide_int2_grad1_u12_ao() ! --- call wall_time(time1) - + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) do m = 1, 3 !$OMP PARALLEL & !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & - !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, c_mat, & + !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & + !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, c_mat, & !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector, m) !$OMP DO SCHEDULE (static) do i = 1, ao_num do k = 1, ao_num do ipoint = 1, n_points_final_grid - + weight1 = 0.5d0 * final_weight_at_r_vector(ipoint) ao_i_r = aos_in_r_array_transp(ipoint,i) ao_k_r = aos_in_r_array_transp(ipoint,k) - + c_mat(ipoint,k,i) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,m) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,m)) enddo enddo @@ -213,7 +232,7 @@ subroutine provide_int2_grad1_u12_ao() !$OMP END PARALLEL call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -1.d0 & - , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , int2_grad1_u12_ao%f(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 1.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) enddo deallocate(c_mat) @@ -234,7 +253,7 @@ subroutine provide_int2_grad1_u12_ao() ! --- - call wall_time(time1) + call wall_time(time1) PROVIDE ao_integrals_map !$OMP PARALLEL DEFAULT(NONE) & @@ -245,7 +264,7 @@ subroutine provide_int2_grad1_u12_ao() do l = 1, ao_num do i = 1, ao_num do k = 1, ao_num - ! < 1:i, 2:j | 1:k, 2:l > + ! < 1:i, 2:j | 1:k, 2:l > tc_int_2e_ao(k,i,l,j) = tc_int_2e_ao(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) enddo enddo @@ -263,7 +282,7 @@ subroutine provide_int2_grad1_u12_ao() print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") call ezfio_set_work_empty(.False.) - write(11) int2_grad1_u12_ao(:,:,:,1:3) + write(11) int2_grad1_u12_ao%f(:,:,:,1:3) close(11) print*, ' Saving tc_int_2e_ao in ', trim(ezfio_filename) // '/work/ao_two_e_tc_tot' @@ -276,7 +295,7 @@ subroutine provide_int2_grad1_u12_ao() ! ---- - deallocate(int2_grad1_u12_ao) + call gpu_deallocate(int2_grad1_u12_ao) deallocate(tc_int_2e_ao) call wall_time(time2) From 228796cff525bc6420b2b961c803fda2aa0094bc Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 12 Jul 2024 17:41:15 +0200 Subject: [PATCH 127/159] split the mo_optimization into mo_optimizatio_utils and mo_optimization --- src/casscf_cipsi/NEED | 1 + src/mo_optimization/NEED | 6 +- src/mo_optimization/cipsi_orb_opt.irp.f | 82 +------------------ .../EZFIO.cfg | 0 src/mo_optimization_utils/NEED | 5 ++ src/mo_optimization_utils/README.md | 74 +++++++++++++++++ .../class.irp.f | 0 .../constants.h | 0 .../diagonal_hessian_list_opt.irp.f | 0 .../diagonal_hessian_opt.irp.f | 0 .../diagonalization_hessian.irp.f | 0 .../first_diagonal_hessian_list_opt.irp.f | 0 .../first_diagonal_hessian_opt.irp.f | 0 .../first_gradient_list_opt.irp.f | 0 .../first_gradient_opt.irp.f | 0 .../first_hessian_list_opt.irp.f | 0 .../first_hessian_opt.irp.f | 0 .../gradient_list_opt.irp.f | 0 .../gradient_opt.irp.f | 0 .../hessian_list_opt.irp.f | 0 .../hessian_opt.irp.f | 0 .../org/TODO.org | 0 .../org/debug_gradient_list_opt.org | 0 .../org/debug_gradient_opt.org | 0 .../org/debug_hessian_list_opt.org | 0 .../org/debug_hessian_opt.org | 0 .../org/diagonal_hessian_list_opt.org | 0 .../org/diagonal_hessian_opt.org | 0 .../org/diagonalization_hessian.org | 0 .../org/first_diagonal_hessian_list_opt.org | 0 .../org/first_diagonal_hessian_opt.org | 0 .../org/first_gradient_list_opt.org | 0 .../org/first_gradient_opt.org | 0 .../org/first_hessian_list_opt.org | 0 .../org/first_hessian_opt.org | 0 .../org/gradient_list_opt.org | 0 .../org/gradient_opt.org | 0 .../org/hessian_list_opt.org | 0 .../org/hessian_opt.org | 0 .../org/my_providers.org | 0 .../org/optimization.org | 0 .../org/orb_opt_trust_v2.org | 0 .../org/state_average_energy.org | 0 .../org/state_weight_normalization.org | 0 .../org/update_parameters.org | 0 .../org/update_st_av_ci_energy.org | 0 .../routine_opt_mos.irp.f | 81 ++++++++++++++++++ .../run_orb_opt_trust_v2.irp.f | 0 .../save_energy.irp.f | 0 .../state_average_energy.irp.f | 0 .../state_weight_normalization.irp.f | 0 .../update_parameters.irp.f | 0 .../update_st_av_ci_energy.irp.f | 0 53 files changed, 163 insertions(+), 86 deletions(-) rename src/{mo_optimization => mo_optimization_utils}/EZFIO.cfg (100%) create mode 100644 src/mo_optimization_utils/NEED create mode 100644 src/mo_optimization_utils/README.md rename src/{mo_optimization => mo_optimization_utils}/class.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/constants.h (100%) rename src/{mo_optimization => mo_optimization_utils}/diagonal_hessian_list_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/diagonal_hessian_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/diagonalization_hessian.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/first_diagonal_hessian_list_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/first_diagonal_hessian_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/first_gradient_list_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/first_gradient_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/first_hessian_list_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/first_hessian_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/gradient_list_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/gradient_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/hessian_list_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/hessian_opt.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/org/TODO.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/debug_gradient_list_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/debug_gradient_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/debug_hessian_list_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/debug_hessian_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/diagonal_hessian_list_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/diagonal_hessian_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/diagonalization_hessian.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/first_diagonal_hessian_list_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/first_diagonal_hessian_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/first_gradient_list_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/first_gradient_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/first_hessian_list_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/first_hessian_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/gradient_list_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/gradient_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/hessian_list_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/hessian_opt.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/my_providers.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/optimization.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/orb_opt_trust_v2.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/state_average_energy.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/state_weight_normalization.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/update_parameters.org (100%) rename src/{mo_optimization => mo_optimization_utils}/org/update_st_av_ci_energy.org (100%) create mode 100644 src/mo_optimization_utils/routine_opt_mos.irp.f rename src/{mo_optimization => mo_optimization_utils}/run_orb_opt_trust_v2.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/save_energy.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/state_average_energy.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/state_weight_normalization.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/update_parameters.irp.f (100%) rename src/{mo_optimization => mo_optimization_utils}/update_st_av_ci_energy.irp.f (100%) diff --git a/src/casscf_cipsi/NEED b/src/casscf_cipsi/NEED index dd91c7bd..11d1a78c 100644 --- a/src/casscf_cipsi/NEED +++ b/src/casscf_cipsi/NEED @@ -3,3 +3,4 @@ selectors_full generators_cas two_body_rdm dav_general_mat +mo_optimization diff --git a/src/mo_optimization/NEED b/src/mo_optimization/NEED index 91f41ee3..33f770c3 100644 --- a/src/mo_optimization/NEED +++ b/src/mo_optimization/NEED @@ -1,7 +1,3 @@ -two_body_rdm -hartree_fock -cipsi -davidson_undressed +mo_optimization_utils selectors_full generators_full -utils_trust_region diff --git a/src/mo_optimization/cipsi_orb_opt.irp.f b/src/mo_optimization/cipsi_orb_opt.irp.f index 7e3a79eb..19b3e9db 100644 --- a/src/mo_optimization/cipsi_orb_opt.irp.f +++ b/src/mo_optimization/cipsi_orb_opt.irp.f @@ -2,87 +2,7 @@ program optimization read_wf = .true. ! must be True for the orbital optimization !!! TOUCH read_wf - call run_optimization + call run_optimization_mos_CIPSI end -subroutine run_optimization - - implicit none - - double precision :: e_cipsi, e_opt, delta_e - double precision, allocatable :: Ev(:),PT2(:) - integer :: nb_iter,i - logical :: not_converged - character (len=100) :: filename - - PROVIDE psi_det psi_coef mo_two_e_integrals_in_map ao_pseudo_integrals - allocate(Ev(N_states),PT2(N_states)) - - not_converged = .True. - nb_iter = 0 - - ! To start from the wf - N_det_max = max(n_det,5) - TOUCH N_det_max - - open(unit=10, file=trim(ezfio_filename)//'/mo_optimization/result_opt') - write(10,*) " Ndet E_cipsi E_opt Delta_e" - call state_average_energy(e_cipsi) - write(10,'(I10, 3F15.7)') n_det, e_cipsi, e_cipsi, 0d0 - close(10) - - do while (not_converged) - print*,'' - print*,'======================' - print*,' Cipsi step:', nb_iter - print*,'======================' - print*,'' - print*,'********** cipsi step **********' - ! cispi calculation - call run_stochastic_cipsi(Ev,PT2) - - ! State average energy after the cipsi step - call state_average_energy(e_cipsi) - - print*,'' - print*,'********** optimization step **********' - ! orbital optimization - call run_orb_opt_trust_v2 - - ! State average energy after the orbital optimization - call state_average_energy(e_opt) - - print*,'' - print*,'********** diff step **********' - ! Gain in energy - delta_e = e_opt - e_cipsi - print*, 'Gain in energy during the orbital optimization:', delta_e - - open(unit=10, file=trim(ezfio_filename)//'/mo_optimization/result_opt', position='append') - write(10,'(I10, 3F15.7)') n_det, e_cipsi, e_opt, delta_e - close(10) - - ! Exit - if (delta_e > 1d-12) then - print*, 'WARNING, something wrong happened' - print*, 'The gain (delta_e) in energy during the optimization process' - print*, 'is > 0, but it must be < 0' - print*, 'The program will exit' - exit - endif - - if (n_det > n_det_max_opt) then - print*, 'The number of determinants in the wf > n_det_max_opt' - print*, 'The program will exit' - exit - endif - - ! To double the number of determinants in the wf - N_det_max = int(dble(n_det * 2)*0.9) - TOUCH N_det_max - - nb_iter = nb_iter + 1 - enddo - -end diff --git a/src/mo_optimization/EZFIO.cfg b/src/mo_optimization_utils/EZFIO.cfg similarity index 100% rename from src/mo_optimization/EZFIO.cfg rename to src/mo_optimization_utils/EZFIO.cfg diff --git a/src/mo_optimization_utils/NEED b/src/mo_optimization_utils/NEED new file mode 100644 index 00000000..1a78a17f --- /dev/null +++ b/src/mo_optimization_utils/NEED @@ -0,0 +1,5 @@ +two_body_rdm +hartree_fock +cipsi +davidson_undressed +utils_trust_region diff --git a/src/mo_optimization_utils/README.md b/src/mo_optimization_utils/README.md new file mode 100644 index 00000000..94f29aee --- /dev/null +++ b/src/mo_optimization_utils/README.md @@ -0,0 +1,74 @@ +# Orbital optimization + +## Methods +Different methods are available: +- full hessian +``` +qp set orbital_optimization optimization_method full +``` +- diagonal hessian +``` +qp set orbital_optimization optimization_method diag +``` +- identity matrix +``` +qp set orbital_optimization optimization_method none +``` + +After the optimization the ezfio contains the optimized orbitals + +## For a fixed number of determinants +To optimize the MOs for the actual determinants: +``` +qp run orb_opt +``` + +## For a complete optimization, i.e, with a larger and larger wave function +To optimize the MOs with a larger and larger wave function: +``` +qp run optimization +``` + +The results are stored in the EZFIO in "mo_optimization/result_opt", +with the following format: +(1) (2) (3) (4) +1: Number of determinants in the wf, +2: Cispi energy before the optimization, +3: Cipsi energy after the optimization, +4: Energy difference between (2) and (3). + +The optimization process if the following: +- we do a first cipsi step to obtain a small number of determinants in the wf +- we run an orbital optimization for this wf +- we do a new cipsi step to double the number of determinants in the wf +- we run an orbital optimization for this wf +- ... +- we do that until the energy difference between (2) and (3) is + smaller than the targeted accuracy for the cispi (targeted_accuracy_cipsi in qp edit) + or the wf is larger than a given size (n_det_max_opt in qp_edit) +- after that you can reset your determinants (qp reset -d) and run a clean Cispi calculation + +### End of the optimization +You can choos the number of determinants after what the +optimization will stop: +``` +qp set orbital_optimization n_det_max_opt 1e5 # or any number +``` +## Weight of the states +You can change the weights of the differents states directly in qp edit. +It will affect ths weights used in the orbital optimization. + +# Tests +To run the tests: +``` +qp test +``` + +# Org files +The org files are stored in the directory org in order to avoid overwriting on user changes. +The org files can be modified, to export the change to the source code, run +``` +./TANGLE_org_mode.sh +mv *.irp.f ../. +``` + diff --git a/src/mo_optimization/class.irp.f b/src/mo_optimization_utils/class.irp.f similarity index 100% rename from src/mo_optimization/class.irp.f rename to src/mo_optimization_utils/class.irp.f diff --git a/src/mo_optimization/constants.h b/src/mo_optimization_utils/constants.h similarity index 100% rename from src/mo_optimization/constants.h rename to src/mo_optimization_utils/constants.h diff --git a/src/mo_optimization/diagonal_hessian_list_opt.irp.f b/src/mo_optimization_utils/diagonal_hessian_list_opt.irp.f similarity index 100% rename from src/mo_optimization/diagonal_hessian_list_opt.irp.f rename to src/mo_optimization_utils/diagonal_hessian_list_opt.irp.f diff --git a/src/mo_optimization/diagonal_hessian_opt.irp.f b/src/mo_optimization_utils/diagonal_hessian_opt.irp.f similarity index 100% rename from src/mo_optimization/diagonal_hessian_opt.irp.f rename to src/mo_optimization_utils/diagonal_hessian_opt.irp.f diff --git a/src/mo_optimization/diagonalization_hessian.irp.f b/src/mo_optimization_utils/diagonalization_hessian.irp.f similarity index 100% rename from src/mo_optimization/diagonalization_hessian.irp.f rename to src/mo_optimization_utils/diagonalization_hessian.irp.f diff --git a/src/mo_optimization/first_diagonal_hessian_list_opt.irp.f b/src/mo_optimization_utils/first_diagonal_hessian_list_opt.irp.f similarity index 100% rename from src/mo_optimization/first_diagonal_hessian_list_opt.irp.f rename to src/mo_optimization_utils/first_diagonal_hessian_list_opt.irp.f diff --git a/src/mo_optimization/first_diagonal_hessian_opt.irp.f b/src/mo_optimization_utils/first_diagonal_hessian_opt.irp.f similarity index 100% rename from src/mo_optimization/first_diagonal_hessian_opt.irp.f rename to src/mo_optimization_utils/first_diagonal_hessian_opt.irp.f diff --git a/src/mo_optimization/first_gradient_list_opt.irp.f b/src/mo_optimization_utils/first_gradient_list_opt.irp.f similarity index 100% rename from src/mo_optimization/first_gradient_list_opt.irp.f rename to src/mo_optimization_utils/first_gradient_list_opt.irp.f diff --git a/src/mo_optimization/first_gradient_opt.irp.f b/src/mo_optimization_utils/first_gradient_opt.irp.f similarity index 100% rename from src/mo_optimization/first_gradient_opt.irp.f rename to src/mo_optimization_utils/first_gradient_opt.irp.f diff --git a/src/mo_optimization/first_hessian_list_opt.irp.f b/src/mo_optimization_utils/first_hessian_list_opt.irp.f similarity index 100% rename from src/mo_optimization/first_hessian_list_opt.irp.f rename to src/mo_optimization_utils/first_hessian_list_opt.irp.f diff --git a/src/mo_optimization/first_hessian_opt.irp.f b/src/mo_optimization_utils/first_hessian_opt.irp.f similarity index 100% rename from src/mo_optimization/first_hessian_opt.irp.f rename to src/mo_optimization_utils/first_hessian_opt.irp.f diff --git a/src/mo_optimization/gradient_list_opt.irp.f b/src/mo_optimization_utils/gradient_list_opt.irp.f similarity index 100% rename from src/mo_optimization/gradient_list_opt.irp.f rename to src/mo_optimization_utils/gradient_list_opt.irp.f diff --git a/src/mo_optimization/gradient_opt.irp.f b/src/mo_optimization_utils/gradient_opt.irp.f similarity index 100% rename from src/mo_optimization/gradient_opt.irp.f rename to src/mo_optimization_utils/gradient_opt.irp.f diff --git a/src/mo_optimization/hessian_list_opt.irp.f b/src/mo_optimization_utils/hessian_list_opt.irp.f similarity index 100% rename from src/mo_optimization/hessian_list_opt.irp.f rename to src/mo_optimization_utils/hessian_list_opt.irp.f diff --git a/src/mo_optimization/hessian_opt.irp.f b/src/mo_optimization_utils/hessian_opt.irp.f similarity index 100% rename from src/mo_optimization/hessian_opt.irp.f rename to src/mo_optimization_utils/hessian_opt.irp.f diff --git a/src/mo_optimization/org/TODO.org b/src/mo_optimization_utils/org/TODO.org similarity index 100% rename from src/mo_optimization/org/TODO.org rename to src/mo_optimization_utils/org/TODO.org diff --git a/src/mo_optimization/org/debug_gradient_list_opt.org b/src/mo_optimization_utils/org/debug_gradient_list_opt.org similarity index 100% rename from src/mo_optimization/org/debug_gradient_list_opt.org rename to src/mo_optimization_utils/org/debug_gradient_list_opt.org diff --git a/src/mo_optimization/org/debug_gradient_opt.org b/src/mo_optimization_utils/org/debug_gradient_opt.org similarity index 100% rename from src/mo_optimization/org/debug_gradient_opt.org rename to src/mo_optimization_utils/org/debug_gradient_opt.org diff --git a/src/mo_optimization/org/debug_hessian_list_opt.org b/src/mo_optimization_utils/org/debug_hessian_list_opt.org similarity index 100% rename from src/mo_optimization/org/debug_hessian_list_opt.org rename to src/mo_optimization_utils/org/debug_hessian_list_opt.org diff --git a/src/mo_optimization/org/debug_hessian_opt.org b/src/mo_optimization_utils/org/debug_hessian_opt.org similarity index 100% rename from src/mo_optimization/org/debug_hessian_opt.org rename to src/mo_optimization_utils/org/debug_hessian_opt.org diff --git a/src/mo_optimization/org/diagonal_hessian_list_opt.org b/src/mo_optimization_utils/org/diagonal_hessian_list_opt.org similarity index 100% rename from src/mo_optimization/org/diagonal_hessian_list_opt.org rename to src/mo_optimization_utils/org/diagonal_hessian_list_opt.org diff --git a/src/mo_optimization/org/diagonal_hessian_opt.org b/src/mo_optimization_utils/org/diagonal_hessian_opt.org similarity index 100% rename from src/mo_optimization/org/diagonal_hessian_opt.org rename to src/mo_optimization_utils/org/diagonal_hessian_opt.org diff --git a/src/mo_optimization/org/diagonalization_hessian.org b/src/mo_optimization_utils/org/diagonalization_hessian.org similarity index 100% rename from src/mo_optimization/org/diagonalization_hessian.org rename to src/mo_optimization_utils/org/diagonalization_hessian.org diff --git a/src/mo_optimization/org/first_diagonal_hessian_list_opt.org b/src/mo_optimization_utils/org/first_diagonal_hessian_list_opt.org similarity index 100% rename from src/mo_optimization/org/first_diagonal_hessian_list_opt.org rename to src/mo_optimization_utils/org/first_diagonal_hessian_list_opt.org diff --git a/src/mo_optimization/org/first_diagonal_hessian_opt.org b/src/mo_optimization_utils/org/first_diagonal_hessian_opt.org similarity index 100% rename from src/mo_optimization/org/first_diagonal_hessian_opt.org rename to src/mo_optimization_utils/org/first_diagonal_hessian_opt.org diff --git a/src/mo_optimization/org/first_gradient_list_opt.org b/src/mo_optimization_utils/org/first_gradient_list_opt.org similarity index 100% rename from src/mo_optimization/org/first_gradient_list_opt.org rename to src/mo_optimization_utils/org/first_gradient_list_opt.org diff --git a/src/mo_optimization/org/first_gradient_opt.org b/src/mo_optimization_utils/org/first_gradient_opt.org similarity index 100% rename from src/mo_optimization/org/first_gradient_opt.org rename to src/mo_optimization_utils/org/first_gradient_opt.org diff --git a/src/mo_optimization/org/first_hessian_list_opt.org b/src/mo_optimization_utils/org/first_hessian_list_opt.org similarity index 100% rename from src/mo_optimization/org/first_hessian_list_opt.org rename to src/mo_optimization_utils/org/first_hessian_list_opt.org diff --git a/src/mo_optimization/org/first_hessian_opt.org b/src/mo_optimization_utils/org/first_hessian_opt.org similarity index 100% rename from src/mo_optimization/org/first_hessian_opt.org rename to src/mo_optimization_utils/org/first_hessian_opt.org diff --git a/src/mo_optimization/org/gradient_list_opt.org b/src/mo_optimization_utils/org/gradient_list_opt.org similarity index 100% rename from src/mo_optimization/org/gradient_list_opt.org rename to src/mo_optimization_utils/org/gradient_list_opt.org diff --git a/src/mo_optimization/org/gradient_opt.org b/src/mo_optimization_utils/org/gradient_opt.org similarity index 100% rename from src/mo_optimization/org/gradient_opt.org rename to src/mo_optimization_utils/org/gradient_opt.org diff --git a/src/mo_optimization/org/hessian_list_opt.org b/src/mo_optimization_utils/org/hessian_list_opt.org similarity index 100% rename from src/mo_optimization/org/hessian_list_opt.org rename to src/mo_optimization_utils/org/hessian_list_opt.org diff --git a/src/mo_optimization/org/hessian_opt.org b/src/mo_optimization_utils/org/hessian_opt.org similarity index 100% rename from src/mo_optimization/org/hessian_opt.org rename to src/mo_optimization_utils/org/hessian_opt.org diff --git a/src/mo_optimization/org/my_providers.org b/src/mo_optimization_utils/org/my_providers.org similarity index 100% rename from src/mo_optimization/org/my_providers.org rename to src/mo_optimization_utils/org/my_providers.org diff --git a/src/mo_optimization/org/optimization.org b/src/mo_optimization_utils/org/optimization.org similarity index 100% rename from src/mo_optimization/org/optimization.org rename to src/mo_optimization_utils/org/optimization.org diff --git a/src/mo_optimization/org/orb_opt_trust_v2.org b/src/mo_optimization_utils/org/orb_opt_trust_v2.org similarity index 100% rename from src/mo_optimization/org/orb_opt_trust_v2.org rename to src/mo_optimization_utils/org/orb_opt_trust_v2.org diff --git a/src/mo_optimization/org/state_average_energy.org b/src/mo_optimization_utils/org/state_average_energy.org similarity index 100% rename from src/mo_optimization/org/state_average_energy.org rename to src/mo_optimization_utils/org/state_average_energy.org diff --git a/src/mo_optimization/org/state_weight_normalization.org b/src/mo_optimization_utils/org/state_weight_normalization.org similarity index 100% rename from src/mo_optimization/org/state_weight_normalization.org rename to src/mo_optimization_utils/org/state_weight_normalization.org diff --git a/src/mo_optimization/org/update_parameters.org b/src/mo_optimization_utils/org/update_parameters.org similarity index 100% rename from src/mo_optimization/org/update_parameters.org rename to src/mo_optimization_utils/org/update_parameters.org diff --git a/src/mo_optimization/org/update_st_av_ci_energy.org b/src/mo_optimization_utils/org/update_st_av_ci_energy.org similarity index 100% rename from src/mo_optimization/org/update_st_av_ci_energy.org rename to src/mo_optimization_utils/org/update_st_av_ci_energy.org diff --git a/src/mo_optimization_utils/routine_opt_mos.irp.f b/src/mo_optimization_utils/routine_opt_mos.irp.f new file mode 100644 index 00000000..fceba2c5 --- /dev/null +++ b/src/mo_optimization_utils/routine_opt_mos.irp.f @@ -0,0 +1,81 @@ + +subroutine run_optimization_mos_CIPSI + + implicit none + + double precision :: e_cipsi, e_opt, delta_e + double precision, allocatable :: Ev(:),PT2(:) + integer :: nb_iter,i + logical :: not_converged + character (len=100) :: filename + + PROVIDE psi_det psi_coef mo_two_e_integrals_in_map ao_pseudo_integrals + allocate(Ev(N_states),PT2(N_states)) + + not_converged = .True. + nb_iter = 0 + + ! To start from the wf + N_det_max = max(n_det,5) + TOUCH N_det_max + + open(unit=10, file=trim(ezfio_filename)//'/mo_optimization/result_opt') + write(10,*) " Ndet E_cipsi E_opt Delta_e" + call state_average_energy(e_cipsi) + write(10,'(I10, 3F15.7)') n_det, e_cipsi, e_cipsi, 0d0 + close(10) + + do while (not_converged) + print*,'' + print*,'======================' + print*,' Cipsi step:', nb_iter + print*,'======================' + print*,'' + print*,'********** cipsi step **********' + ! cispi calculation + call run_stochastic_cipsi(Ev,PT2) + + ! State average energy after the cipsi step + call state_average_energy(e_cipsi) + + print*,'' + print*,'********** optimization step **********' + ! orbital optimization + call run_orb_opt_trust_v2 + + ! State average energy after the orbital optimization + call state_average_energy(e_opt) + + print*,'' + print*,'********** diff step **********' + ! Gain in energy + delta_e = e_opt - e_cipsi + print*, 'Gain in energy during the orbital optimization:', delta_e + + open(unit=10, file=trim(ezfio_filename)//'/mo_optimization/result_opt', position='append') + write(10,'(I10, 3F15.7)') n_det, e_cipsi, e_opt, delta_e + close(10) + + ! Exit + if (delta_e > 1d-12) then + print*, 'WARNING, something wrong happened' + print*, 'The gain (delta_e) in energy during the optimization process' + print*, 'is > 0, but it must be < 0' + print*, 'The program will exit' + exit + endif + + if (n_det > n_det_max_opt) then + print*, 'The number of determinants in the wf > n_det_max_opt' + print*, 'The program will exit' + exit + endif + + ! To double the number of determinants in the wf + N_det_max = int(dble(n_det * 2)*0.9) + TOUCH N_det_max + + nb_iter = nb_iter + 1 + enddo + +end diff --git a/src/mo_optimization/run_orb_opt_trust_v2.irp.f b/src/mo_optimization_utils/run_orb_opt_trust_v2.irp.f similarity index 100% rename from src/mo_optimization/run_orb_opt_trust_v2.irp.f rename to src/mo_optimization_utils/run_orb_opt_trust_v2.irp.f diff --git a/src/mo_optimization/save_energy.irp.f b/src/mo_optimization_utils/save_energy.irp.f similarity index 100% rename from src/mo_optimization/save_energy.irp.f rename to src/mo_optimization_utils/save_energy.irp.f diff --git a/src/mo_optimization/state_average_energy.irp.f b/src/mo_optimization_utils/state_average_energy.irp.f similarity index 100% rename from src/mo_optimization/state_average_energy.irp.f rename to src/mo_optimization_utils/state_average_energy.irp.f diff --git a/src/mo_optimization/state_weight_normalization.irp.f b/src/mo_optimization_utils/state_weight_normalization.irp.f similarity index 100% rename from src/mo_optimization/state_weight_normalization.irp.f rename to src/mo_optimization_utils/state_weight_normalization.irp.f diff --git a/src/mo_optimization/update_parameters.irp.f b/src/mo_optimization_utils/update_parameters.irp.f similarity index 100% rename from src/mo_optimization/update_parameters.irp.f rename to src/mo_optimization_utils/update_parameters.irp.f diff --git a/src/mo_optimization/update_st_av_ci_energy.irp.f b/src/mo_optimization_utils/update_st_av_ci_energy.irp.f similarity index 100% rename from src/mo_optimization/update_st_av_ci_energy.irp.f rename to src/mo_optimization_utils/update_st_av_ci_energy.irp.f From 6985d4d5493a6204f95a8d1d1cccbccc80c12071 Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 12 Jul 2024 18:25:17 +0200 Subject: [PATCH 128/159] the casscf does not work with mo optimization ... --- src/casscf_cipsi/EZFIO.cfg | 6 + src/casscf_cipsi/NEED | 2 +- src/casscf_cipsi/casscf.irp.f | 166 +++++++++--------- .../class.irp.f | 0 4 files changed, 94 insertions(+), 80 deletions(-) rename src/{mo_optimization_utils => mo_optimization}/class.irp.f (100%) diff --git a/src/casscf_cipsi/EZFIO.cfg b/src/casscf_cipsi/EZFIO.cfg index 18e0b6b1..5b72d906 100644 --- a/src/casscf_cipsi/EZFIO.cfg +++ b/src/casscf_cipsi/EZFIO.cfg @@ -79,3 +79,9 @@ type: logical doc: If |true|, the pt2_max value in the CIPSI is set to 10-10 and will not change interface: ezfio,provider,ocaml default: False + +[act_mos_opt] +type: logical +doc: If |true|, the active orbitals are also optimized variationally +interface: ezfio,provider,ocaml +default: False diff --git a/src/casscf_cipsi/NEED b/src/casscf_cipsi/NEED index 11d1a78c..32f5ae90 100644 --- a/src/casscf_cipsi/NEED +++ b/src/casscf_cipsi/NEED @@ -3,4 +3,4 @@ selectors_full generators_cas two_body_rdm dav_general_mat -mo_optimization +mo_optimization_utils diff --git a/src/casscf_cipsi/casscf.irp.f b/src/casscf_cipsi/casscf.irp.f index dc3e2245..b64a9d8f 100644 --- a/src/casscf_cipsi/casscf.irp.f +++ b/src/casscf_cipsi/casscf.irp.f @@ -46,94 +46,101 @@ subroutine run do while (.not.converged) print*,'pt2_max = ',pt2_max call run_stochastic_cipsi(Ev,PT2) - print*,'Ev,PT2',Ev(1),PT2(1) - E_PT2(1:N_states) = Ev(1:N_states) + PT2(1:N_states) - energy_old = energy - energy = eone+etwo+ecore - pt2_max_before = pt2_max - - call write_time(6) - call write_int(6,iteration,'CAS-SCF iteration = ') - call write_double(6,energy,'State-average CAS-SCF energy = ') -! if(n_states == 1)then -! call ezfio_get_casscf_cipsi_energy_pt2(E_PT2) -! call ezfio_get_casscf_cipsi_energy(PT2) - double precision :: delta_E_istate, e_av - e_av = 0.d0 - do istate=1,N_states - e_av += state_average_weight(istate) * Ev(istate) - if(istate.gt.1)then - delta_E_istate = E_PT2(istate) - E_PT2(1) - write(*,'(A6,I2,A18,F16.10)')'state ',istate,' Delta E+PT2 = ',delta_E_istate - endif - write(*,'(A6,I2,A18,F16.10)')'state ',istate,' E + PT2 energy = ',E_PT2(istate) - write(*,'(A6,I2,A18,F16.10)')'state ',istate,' PT2 energy = ',PT2(istate) -! call write_double(6,E_PT2(istate),'E + PT2 energy = ') -! call write_double(6,PT2(istate),' PT2 = ') - enddo - call write_double(6,e_av,'State-average CAS-SCF energy bis = ') - call write_double(6,pt2_max,' PT2_MAX = ') +! if(act_mos_opt)then DOES NOT WORK +! call run_orb_opt_trust_v2 +! call run_stochastic_cipsi(Ev,PT2) ! endif - - print*,'' - call write_double(6,norm_grad_vec2,'Norm of gradients = ') - call write_double(6,norm_grad_vec2_tab(1), ' Core-active gradients = ') - call write_double(6,norm_grad_vec2_tab(2), ' Core-virtual gradients = ') - call write_double(6,norm_grad_vec2_tab(3), ' Active-virtual gradients = ') - print*,'' - call write_double(6,energy_improvement, 'Predicted energy improvement = ') - - if(criterion_casscf == "energy")then - converged = dabs(energy_improvement) < thresh_scf - else if (criterion_casscf == "gradients")then - converged = norm_grad_vec2 < thresh_scf - else if (criterion_casscf == "e_pt2")then - delta_E = 0.d0 - do istate = 1, N_states - delta_E += dabs(E_PT2(istate) - ept2_before(istate)) - enddo - converged = dabs(delta_E) < thresh_casscf - endif - ept2_before = E_PT2 - if(.not.small_active_space)then - if(adaptive_pt2_max)then - pt2_max = dabs(energy_improvement / (pt2_relative_error)) - pt2_max = min(pt2_max, pt2_max_before) - if(n_act_orb.ge.n_big_act_orb)then - pt2_max = max(pt2_max,pt2_min_casscf) - endif + if(.True.)then + print*,'Ev,PT2',Ev(1),PT2(1) + E_PT2(1:N_states) = Ev(1:N_states) + PT2(1:N_states) + energy_old = energy + energy = eone+etwo+ecore + pt2_max_before = pt2_max + + call write_time(6) + call write_int(6,iteration,'CAS-SCF iteration = ') + call write_double(6,energy,'State-average CAS-SCF energy = ') +!! if(n_states == 1)then +!! call ezfio_get_casscf_cipsi_energy_pt2(E_PT2) +!! call ezfio_get_casscf_cipsi_energy(PT2) + double precision :: delta_E_istate, e_av + e_av = 0.d0 + do istate=1,N_states + e_av += state_average_weight(istate) * Ev(istate) + if(istate.gt.1)then + delta_E_istate = E_PT2(istate) - E_PT2(1) + write(*,'(A6,I2,A18,F16.10)')'state ',istate,' Delta E+PT2 = ',delta_E_istate + endif + write(*,'(A6,I2,A18,F16.10)')'state ',istate,' E + PT2 energy = ',E_PT2(istate) + write(*,'(A6,I2,A18,F16.10)')'state ',istate,' PT2 energy = ',PT2(istate) +!! call write_double(6,E_PT2(istate),'E + PT2 energy = ') +!! call write_double(6,PT2(istate),' PT2 = ') + enddo + call write_double(6,e_av,'State-average CAS-SCF energy bis = ') + call write_double(6,pt2_max,' PT2_MAX = ') +!! endif + + print*,'' + call write_double(6,norm_grad_vec2,'Norm of gradients = ') + call write_double(6,norm_grad_vec2_tab(1), ' Core-active gradients = ') + call write_double(6,norm_grad_vec2_tab(2), ' Core-virtual gradients = ') + call write_double(6,norm_grad_vec2_tab(3), ' Active-virtual gradients = ') + print*,'' + call write_double(6,energy_improvement, 'Predicted energy improvement = ') + + if(criterion_casscf == "energy")then + converged = dabs(energy_improvement) < thresh_scf + else if (criterion_casscf == "gradients")then + converged = norm_grad_vec2 < thresh_scf + else if (criterion_casscf == "e_pt2")then + delta_E = 0.d0 + do istate = 1, N_states + delta_E += dabs(E_PT2(istate) - ept2_before(istate)) + enddo + converged = dabs(delta_E) < thresh_casscf endif - endif - print*,'' - call write_double(6,pt2_max, 'PT2_MAX for next iteration = ') - - mo_coef = NewOrbs - mo_occ = occnum - if(.not.converged)then - call save_mos - iteration += 1 - if(norm_grad_vec2.gt.0.01d0)then - N_det = N_states - else - N_det = max(N_det/8 ,N_states) - endif - psi_det = psi_det_sorted - psi_coef = psi_coef_sorted - read_wf = .True. - call clear_mo_map - SOFT_TOUCH mo_coef N_det psi_det psi_coef + ept2_before = E_PT2 if(.not.small_active_space)then if(adaptive_pt2_max)then - SOFT_TOUCH pt2_max + pt2_max = dabs(energy_improvement / (pt2_relative_error)) + pt2_max = min(pt2_max, pt2_max_before) + if(n_act_orb.ge.n_big_act_orb)then + pt2_max = max(pt2_max,pt2_min_casscf) + endif endif endif - if(iteration .gt. 3)then - state_following_casscf = state_following_casscf_cipsi_save - soft_touch state_following_casscf + print*,'' + call write_double(6,pt2_max, 'PT2_MAX for next iteration = ') + + mo_coef = NewOrbs + mo_occ = occnum + if(.not.converged)then + call save_mos + iteration += 1 + if(norm_grad_vec2.gt.0.01d0)then + N_det = N_states + else + N_det = max(N_det/8 ,N_states) + endif + psi_det = psi_det_sorted + psi_coef = psi_coef_sorted + read_wf = .True. + call clear_mo_map + SOFT_TOUCH mo_coef N_det psi_det psi_coef + if(.not.small_active_space)then + if(adaptive_pt2_max)then + SOFT_TOUCH pt2_max + endif + endif + if(iteration .gt. 3)then + state_following_casscf = state_following_casscf_cipsi_save + soft_touch state_following_casscf + endif endif endif - + enddo + if(.True.)then integer :: i print*,'Converged CASSCF ' print*,'--------------------------' @@ -153,6 +160,7 @@ subroutine run ! write(*,*)mcscf_fock_alpha_mo(i,i) enddo + endif end diff --git a/src/mo_optimization_utils/class.irp.f b/src/mo_optimization/class.irp.f similarity index 100% rename from src/mo_optimization_utils/class.irp.f rename to src/mo_optimization/class.irp.f From 31028f8979189d1cc2822d4dc60eb527ed639932 Mon Sep 17 00:00:00 2001 From: eginer Date: Tue, 16 Jul 2024 17:44:48 +0200 Subject: [PATCH 129/159] fixed some weird dependencies in TC, introduced an AO cholesky 2e function --- .../cipsi_tc_bi_ortho/stochastic_cipsi.irp.f | 32 +++++++++++++++++++ plugins/local/fci_tc_bi/fci_tc_bi_ortho.irp.f | 20 ++++++++++-- .../local/non_h_ints_mu/total_tc_int.irp.f | 18 +++++++---- plugins/local/slater_tc/slater_tc_opt.irp.f | 2 -- plugins/local/slater_tc/tc_hmat.irp.f | 4 ++- src/ao_two_e_ints/cholesky.irp.f | 15 ++++++++- 6 files changed, 79 insertions(+), 12 deletions(-) diff --git a/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f b/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f index e363830d..6b8f3b42 100644 --- a/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f @@ -1,4 +1,36 @@ + +! --- + +subroutine run_pouet + + BEGIN_DOC + ! Selected Full Configuration Interaction with Stochastic selection and PT2. + END_DOC + + use selection_types + implicit none + integer :: i, j, k, ndet + integer :: to_select + logical :: has + type(pt2_type) :: pt2_data, pt2_data_err + double precision :: rss + double precision :: correlation_energy_ratio + double precision :: hf_energy_ref + double precision :: relative_error + double precision, allocatable :: zeros(:),E_tc(:), norm(:) + + logical, external :: qp_stop + double precision, external :: memory_of_double + + PROVIDE mo_l_coef mo_r_coef + PROVIDE H_apply_buffer_allocated distributed_davidson + + print*, ' Diagonal elements of the Fock matrix ' + do i = 1, mo_num + write(*,*) i, Fock_matrix_tc_mo_tot(i,i) + enddo +end ! --- subroutine run_stochastic_cipsi diff --git a/plugins/local/fci_tc_bi/fci_tc_bi_ortho.irp.f b/plugins/local/fci_tc_bi/fci_tc_bi_ortho.irp.f index 1c1c0411..f1de0fe3 100644 --- a/plugins/local/fci_tc_bi/fci_tc_bi_ortho.irp.f +++ b/plugins/local/fci_tc_bi/fci_tc_bi_ortho.irp.f @@ -65,7 +65,15 @@ subroutine run_cipsi_tc() if (.not. is_zmq_slave) then - PROVIDE psi_det psi_coef mo_bi_ortho_tc_two_e mo_bi_ortho_tc_one_e + if(.True.)then! DO NOT REMOVE THE IF(.TRUE.) !! + ! this has to be provided before mo_bi_ortho_tc_two_e to avoid twice the computation of ao_two_e_tc_tot + PROVIDE Fock_matrix_tc_mo_tot + ! because Fock_matrix_tc_mo_tot depends on ao_two_e_tc_tot + ! and that mo_bi_ortho_tc_two_e erase ao_two_e_tc_tot after being provided + endif + if(.True.)then ! DO NOT REMOVE THE IF(.TRUE.) !! + PROVIDE psi_det psi_coef mo_bi_ortho_tc_two_e mo_bi_ortho_tc_one_e + endif if((elec_alpha_num+elec_beta_num) .ge. 3) then if(three_body_h_tc) then @@ -90,8 +98,16 @@ subroutine run_cipsi_tc() call json_close else + if(.True.)then! DO NOT REMOVE THE IF(.TRUE.) !! + ! this has to be provided before mo_bi_ortho_tc_two_e to avoid twice the computation of ao_two_e_tc_tot + PROVIDE Fock_matrix_tc_mo_tot + ! because Fock_matrix_tc_mo_tot depends on ao_two_e_tc_tot + ! and that mo_bi_ortho_tc_two_e erase ao_two_e_tc_tot after being provided + endif - PROVIDE mo_bi_ortho_tc_one_e mo_bi_ortho_tc_two_e pt2_min_parallel_tasks + if(.True.)then! DO NOT REMOVE THE IF(.TRUE.) !! + PROVIDE mo_bi_ortho_tc_one_e mo_bi_ortho_tc_two_e pt2_min_parallel_tasks + endif if((elec_alpha_num+elec_beta_num) .ge. 3) then if(three_body_h_tc) then diff --git a/plugins/local/non_h_ints_mu/total_tc_int.irp.f b/plugins/local/non_h_ints_mu/total_tc_int.irp.f index 656f5f16..fb09168e 100644 --- a/plugins/local/non_h_ints_mu/total_tc_int.irp.f +++ b/plugins/local/non_h_ints_mu/total_tc_int.irp.f @@ -288,25 +288,31 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n !$OMP END DO !$OMP END PARALLEL else - print*, ' ao_integrals_map will be used' - PROVIDE ao_integrals_map +! print*, ' ao_integrals_map will be used' +! PROVIDE ao_integrals_map + print*,'Cholesky vectors will be used ' + double precision :: get_ao_integ_chol,eri + eri = get_ao_integ_chol(1,1,1,1) ! FOR OPENMP !$OMP PARALLEL DEFAULT(NONE) & - !$OMP SHARED(ao_num, ao_two_e_tc_tot, ao_integrals_map) & - !$OMP PRIVATE(i, j, k, l) +!!! !$OMP SHARED(ao_num, ao_two_e_tc_tot, ao_integrals_map) & + !$OMP SHARED(ao_num, ao_two_e_tc_tot) & + !$OMP PRIVATE(i, j, k, l,eri) !$OMP DO COLLAPSE(3) do j = 1, ao_num do l = 1, ao_num do i = 1, ao_num do k = 1, ao_num ! < 1:i, 2:j | 1:k, 2:l > - ao_two_e_tc_tot(k,i,l,j) = ao_two_e_tc_tot(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) +! eri = get_ao_two_e_integral(i, j, k, l, ao_integrals_map) + eri = get_ao_integ_chol(i,k,j,l) + ao_two_e_tc_tot(k,i,l,j) = ao_two_e_tc_tot(k,i,l,j) + eri enddo enddo enddo enddo !$OMP END DO !$OMP END PARALLEL - FREE ao_integrals_map +! FREE ao_integrals_map endif if((tc_integ_type .eq. "numeric") .and. (.not. tc_save_mem)) then diff --git a/plugins/local/slater_tc/slater_tc_opt.irp.f b/plugins/local/slater_tc/slater_tc_opt.irp.f index 5651a299..3c4421f8 100644 --- a/plugins/local/slater_tc/slater_tc_opt.irp.f +++ b/plugins/local/slater_tc/slater_tc_opt.irp.f @@ -10,8 +10,6 @@ subroutine provide_all_three_ints_bi_ortho() implicit none double precision :: t1, t2 - PROVIDE ao_two_e_integrals_in_map - print *, ' start provide_all_three_ints_bi_ortho' call wall_time(t1) diff --git a/plugins/local/slater_tc/tc_hmat.irp.f b/plugins/local/slater_tc/tc_hmat.irp.f index cc780364..6323d129 100644 --- a/plugins/local/slater_tc/tc_hmat.irp.f +++ b/plugins/local/slater_tc/tc_hmat.irp.f @@ -30,7 +30,9 @@ BEGIN_PROVIDER [double precision, htilde_matrix_elmt_bi_ortho, (N_det,N_det)] print *, ' PROVIDING htilde_matrix_elmt_bi_ortho ...' call wall_time(t1) - call provide_all_three_ints_bi_ortho() + if(three_body_h_tc)then + call provide_all_three_ints_bi_ortho() + endif i = 1 j = 1 diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index a2d9d043..bfa6bd0a 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -1,3 +1,15 @@ +double precision function get_ao_integ_chol(i,j,k,l) + implicit none + BEGIN_DOC + ! CHOLESKY representation of the integral of the AO basis or (ij|kl) + ! i(r1) j(r1) 1/r12 k(r2) l(r2) + END_DOC + integer, intent(in) :: i,j,k,l + double precision, external :: ddot + get_ao_integ_chol = ddot(cholesky_ao_num, cholesky_ao_transp(1,i,j), 1, cholesky_ao_transp(1,k,l), 1) + +end + BEGIN_PROVIDER [ double precision, cholesky_ao_transp, (cholesky_ao_num, ao_num, ao_num) ] implicit none BEGIN_DOC @@ -162,7 +174,8 @@ END_PROVIDER np = int(np8,4) if (np <= 0) stop 'np<=0' - rank_max = min(np,20*elec_num*elec_num) +! rank_max = min(np,20*elec_num*elec_num) + rank_max = np call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., .True., c_pointer(1)) call c_f_pointer(c_pointer(1), L, (/ ndim8, rank_max /)) From a0140b9b0af59712494de5b443846c70a432465b Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 24 Jul 2024 12:20:16 +0200 Subject: [PATCH 130/159] added mu_of_r_mean_field.irp.f --- src/mu_of_r/mu_of_r_mean_field.irp.f | 132 +++++++++++++++++++++++++++ src/mu_of_r/test_proj_op.irp.f | 96 ++++++++++++++++++- 2 files changed, 227 insertions(+), 1 deletion(-) create mode 100644 src/mu_of_r/mu_of_r_mean_field.irp.f diff --git a/src/mu_of_r/mu_of_r_mean_field.irp.f b/src/mu_of_r/mu_of_r_mean_field.irp.f new file mode 100644 index 00000000..9b9c2e20 --- /dev/null +++ b/src/mu_of_r/mu_of_r_mean_field.irp.f @@ -0,0 +1,132 @@ +BEGIN_PROVIDER [ double precision, two_e_int_mf, (elec_beta_num,elec_alpha_num,elec_beta_num,elec_alpha_num)] + implicit none + integer :: i,j,k,l + double precision :: get_two_e_integral + do i = 1, elec_alpha_num + do j = 1, elec_beta_num + do k = 1, elec_alpha_num + do l = 1, elec_beta_num + two_e_int_mf(l,k,j,i) = get_two_e_integral(l,k,j,i,mo_integrals_map) + enddo + enddo + enddo + enddo +END_PROVIDER + +subroutine get_f_mf_ab(r,f_mf_ab,two_bod_dens, dm_a, dm_b) + implicit none + double precision, intent(in) :: r(3) + double precision, intent(out):: f_mf_ab,two_bod_dens, dm_a, dm_b + double precision, allocatable :: mos_array_r(:),mos_array_a(:), mos_array_b(:) + integer :: i,j,k,l + allocate(mos_array_r(mo_num), mos_array_a(elec_alpha_num), mos_array_b(elec_alpha_num)) + call give_all_mos_at_r(r,mos_array_r) + do i = 1, elec_alpha_num + mos_array_a(i) = mos_array_r(i) + enddo + do i = 1, elec_beta_num + mos_array_b(i) = mos_array_r(i) + enddo + + dm_a = 0.d0 + do i = 1, elec_alpha_num + dm_a += mos_array_a(i) * mos_array_a(i) + enddo + + dm_b = 0.d0 + do i = 1, elec_beta_num + dm_b += mos_array_b(i) * mos_array_b(i) + enddo + two_bod_dens = dm_a * dm_b + + f_mf_ab = 0.d0 + do i = 1, elec_alpha_num + do j = 1, elec_beta_num + do k = 1, elec_alpha_num + do l = 1, elec_beta_num + f_mf_ab += two_e_int_mf(l,k,j,i) * mos_array_a(i) * mos_array_a(k) * mos_array_b(j) * mos_array_b(l) + enddo + enddo + enddo + enddo + ! multiply by two to adapt to the N(N-1) normalization condition of the active two-rdm + f_mf_ab *= 2.d0 + two_bod_dens *= 2.d0 + +end + +subroutine get_grad_f_mf_ab(r,grad_f_mf_ab, grad_two_bod_dens,f_mf_ab,two_bod_dens, dm_a, dm_b,grad_dm_a, grad_dm_b) + implicit none + double precision, intent(in) :: r(3) + double precision, intent(out) :: f_mf_ab, two_bod_dens + double precision, intent(out) :: grad_two_bod_dens(3), grad_f_mf_ab(3) + double precision, intent(out) :: dm_a, dm_b, grad_dm_a(3), grad_dm_b(3) + + double precision, allocatable :: mos_array_r(:), mos_grad_array_r(:,:) + double precision, allocatable :: mos_array_a(:), mos_array_b(:) + double precision, allocatable :: mos_grad_array_a(:,:), mos_grad_array_b(:,:) + double precision :: mo_i, mo_j, mo_k, mo_l + double precision :: grad_mo_i(3), grad_mo_j(3), grad_mo_k(3), grad_mo_l(3) + + integer :: i,j,k,l + allocate(mos_array_r(mo_num),mos_grad_array_r(3,mo_num)) + allocate(mos_array_a(elec_alpha_num), mos_array_b(elec_beta_num)) + allocate(mos_grad_array_a(3,elec_alpha_num), mos_grad_array_b(3,elec_beta_num)) + call give_all_mos_and_grad_at_r(r,mos_array_r,mos_grad_array_r) + do i = 1, elec_alpha_num + mos_array_a(i) = mos_array_r(i) + mos_grad_array_a(1:3,i) = mos_grad_array_r(1:3,i) + enddo + do i = 1, elec_beta_num + mos_array_b(i) = mos_array_r(i) + mos_grad_array_b(1:3,i) = mos_grad_array_r(1:3,i) + enddo + + ! ALPHA DENSITY AND GRADIENT + dm_a = 0.d0 + grad_dm_a = 0.d0 + do i = 1, elec_alpha_num + dm_a += mos_array_a(i) * mos_array_a(i) + grad_dm_a(1:3) += 2.d0 * mos_array_a(i) * mos_grad_array_a(1:3,i) + enddo + + ! BETA DENSITY AND GRADIENT + dm_b = 0.d0 + grad_dm_b = 0.d0 + do i = 1, elec_beta_num + dm_b += mos_array_b(i) * mos_array_b(i) + grad_dm_b(1:3) += 2.d0 * mos_array_b(i) * mos_grad_array_b(1:3,i) + enddo + ! TWO-BODY DENSITY AND GRADIENT + two_bod_dens = dm_a * dm_b + grad_two_bod_dens(1:3) = dm_a * grad_dm_b(1:3) + dm_b * grad_dm_a(1:3) + + ! F_MF and GRADIENT + grad_f_mf_ab = 0.d0 + f_mf_ab = 0.d0 + do i = 1, elec_alpha_num + mo_i = mos_array_a(i) + grad_mo_i(1:3) = mos_grad_array_a(1:3,i) + do j = 1, elec_beta_num + mo_j = mos_array_b(j) + grad_mo_j(1:3) = mos_grad_array_b(1:3,j) + do k = 1, elec_alpha_num + mo_k = mos_array_a(k) + grad_mo_k(1:3) = mos_grad_array_a(1:3,k) + do l = 1, elec_beta_num + mo_l = mos_array_b(l) + grad_mo_l(1:3) = mos_grad_array_b(1:3,l) + f_mf_ab += two_e_int_mf(l,k,j,i) * mo_i * mo_j * mo_k * mo_l + grad_f_mf_ab(1:3) += two_e_int_mf(l,k,j,i) * & + (mo_i * mo_j * mo_k * grad_mo_l(1:3) + mo_i * mo_j * grad_mo_k(1:3) * mo_l & + +mo_i * grad_mo_j(1:3) * mo_k * mo_l + grad_mo_i(1:3) * mo_j * mo_k * mo_l) + enddo + enddo + enddo + enddo + + f_mf_ab *= 2.d0 + two_bod_dens *= 2.d0 + grad_f_mf_ab *= 2.D0 + grad_two_bod_dens *= 2.d0 +end diff --git a/src/mu_of_r/test_proj_op.irp.f b/src/mu_of_r/test_proj_op.irp.f index fd5e976b..bd2f3b4f 100644 --- a/src/mu_of_r/test_proj_op.irp.f +++ b/src/mu_of_r/test_proj_op.irp.f @@ -17,7 +17,9 @@ program projected_operators ! call test_f_ii_valence_ab ! call test_f_ia_valence_ab ! call test_f_ii_ia_aa_valence_ab - call test +! call test +! call test_f_mean_field + call test_grad_f_mean_field end @@ -35,3 +37,95 @@ subroutine test print*,'accu = ',accu end + +subroutine test_f_mean_field + implicit none + integer :: i_point + double precision :: weight,r(3) + double precision :: ref_f, new_f, accu_f + double precision :: ref_two_dens, new_two_dens, accu_two_dens, dm_a, dm_b + accu_f = 0.d0 + accu_two_dens = 0.d0 + do i_point = 1, n_points_final_grid + r(1:3) = final_grid_points(1:3,i_point) + weight = final_weight_at_r_vector(i_point) + call get_f_mf_ab(r,new_f,new_two_dens, dm_a, dm_b) + call f_HF_valence_ab(r,r,ref_f,ref_two_dens) + accu_f += weight * dabs(new_f- ref_f) + accu_two_dens += weight * dabs(new_two_dens - ref_two_dens) + enddo + print*,'accu_f = ',accu_f + print*,'accu_two_dens = ',accu_two_dens + +end + +subroutine test_grad_f_mean_field + implicit none + integer :: i_point,k + double precision :: weight,r(3) + double precision :: grad_f_mf_ab(3), grad_two_bod_dens(3) + double precision :: grad_dm_a(3), grad_dm_b(3) + double precision :: f_mf_ab,two_bod_dens, dm_a, dm_b + + double precision :: num_grad_f_mf_ab(3), num_grad_two_bod_dens(3) + double precision :: num_grad_dm_a(3), num_grad_dm_b(3) + double precision :: f_mf_ab_p,f_mf_ab_m + double precision :: two_bod_dens_p, two_bod_dens_m + double precision :: dm_a_p, dm_a_m + double precision :: dm_b_p, dm_b_m + double precision :: rbis(3), dr + double precision :: accu_grad_f_mf_ab(3),accu_grad_two_bod_dens(3) + double precision :: accu_grad_dm_a(3),accu_grad_dm_b(3) + double precision :: accu_f_mf_ab, accu_two_bod_dens, accu_dm_a, accu_dm_b + dr = 0.00001d0 + accu_f_mf_ab = 0.d0 + accu_two_bod_dens = 0.d0 + accu_dm_a = 0.d0 + accu_dm_b = 0.d0 + + accu_grad_f_mf_ab = 0.d0 + accu_grad_two_bod_dens = 0.d0 + accu_grad_dm_a = 0.d0 + accu_grad_dm_b = 0.d0 + do i_point = 1, n_points_final_grid + r(1:3) = final_grid_points(1:3,i_point) + weight = final_weight_at_r_vector(i_point) + call get_grad_f_mf_ab(r,grad_f_mf_ab, grad_two_bod_dens,f_mf_ab,two_bod_dens, dm_a, dm_b,grad_dm_a, grad_dm_b) + call get_f_mf_ab(r,f_mf_ab_p,two_bod_dens_p, dm_a_p, dm_b_p) + accu_f_mf_ab += weight * dabs(f_mf_ab - f_mf_ab_p) + accu_two_bod_dens += weight * dabs(two_bod_dens - two_bod_dens_p) + accu_dm_a += weight*dabs(dm_a - dm_a_p) + accu_dm_b += weight*dabs(dm_b - dm_b_p) + do k = 1, 3 + rbis = r + rbis(k) += dr + call get_f_mf_ab(rbis,f_mf_ab_p,two_bod_dens_p, dm_a_p, dm_b_p) + rbis = r + rbis(k) -= dr + call get_f_mf_ab(rbis,f_mf_ab_m,two_bod_dens_m, dm_a_m, dm_b_m) + num_grad_f_mf_ab(k) = (f_mf_ab_p - f_mf_ab_m)/(2.d0*dr) + num_grad_two_bod_dens(k) = (two_bod_dens_p - two_bod_dens_m)/(2.d0*dr) + num_grad_dm_a(k) = (dm_a_p - dm_a_m)/(2.d0*dr) + num_grad_dm_b(k) = (dm_b_p - dm_b_m)/(2.d0*dr) + enddo + do k = 1, 3 + accu_grad_f_mf_ab(k) += weight * dabs(grad_f_mf_ab(k) - num_grad_f_mf_ab(k)) + accu_grad_two_bod_dens(k) += weight * dabs(grad_two_bod_dens(k) - num_grad_two_bod_dens(k)) + accu_grad_dm_a(k) += weight * dabs(grad_dm_a(k) - num_grad_dm_a(k)) + accu_grad_dm_b(k) += weight * dabs(grad_dm_b(k) - num_grad_dm_b(k)) + enddo + enddo + print*,'accu_f_mf_ab = ',accu_f_mf_ab + print*,'accu_two_bod_dens = ',accu_two_bod_dens + print*,'accu_dm_a = ',accu_dm_a + print*,'accu_dm_b = ',accu_dm_b + print*,'accu_grad_f_mf_ab = ' + print*,accu_grad_f_mf_ab + print*,'accu_grad_two_bod_dens = ' + print*,accu_grad_two_bod_dens + print*,'accu_dm_a = ' + print*,accu_grad_dm_a + print*,'accu_dm_b = ' + print*,accu_grad_dm_b + +end From cb8bef2ecda20f5e8b6076ece8cd922aa063db65 Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 24 Jul 2024 12:43:20 +0200 Subject: [PATCH 131/159] added gradients of mu_mf --- src/mu_of_r/mu_of_r_mean_field.irp.f | 39 +++++++++++++++++++++++ src/mu_of_r/test_proj_op.irp.f | 47 +++++++++++++++++++++++++++- 2 files changed, 85 insertions(+), 1 deletion(-) diff --git a/src/mu_of_r/mu_of_r_mean_field.irp.f b/src/mu_of_r/mu_of_r_mean_field.irp.f index 9b9c2e20..6abc7e4f 100644 --- a/src/mu_of_r/mu_of_r_mean_field.irp.f +++ b/src/mu_of_r/mu_of_r_mean_field.irp.f @@ -130,3 +130,42 @@ subroutine get_grad_f_mf_ab(r,grad_f_mf_ab, grad_two_bod_dens,f_mf_ab,two_bod_de grad_f_mf_ab *= 2.D0 grad_two_bod_dens *= 2.d0 end + +subroutine mu_of_r_mean_field(r,mu_mf, dm) + implicit none + include 'constants.include.F' + double precision, intent(in) :: r(3) + double precision, intent(out):: mu_mf, dm + double precision :: f_mf_ab,two_bod_dens, dm_a, dm_b + call get_f_mf_ab(r,f_mf_ab,two_bod_dens, dm_a, dm_b) + dm = dm_a + dm_b + if(dabs(two_bod_dens).lt.1.d-10)then + mu_mf = 1.d+10 + else + mu_mf = 0.5d0 * sqpi * f_mf_ab/two_bod_dens + endif +end + +subroutine grad_mu_of_r_mean_field(r,mu_mf, dm, grad_mu_mf, grad_dm) + implicit none + include 'constants.include.F' + double precision, intent(in) :: r(3) + double precision, intent(out):: grad_mu_mf(3), grad_dm(3) + double precision, intent(out):: mu_mf, dm + double precision :: grad_f_mf_ab(3), grad_two_bod_dens(3),grad_dm_a(3), grad_dm_b(3) + double precision :: f_mf_ab,two_bod_dens, dm_a, dm_b + call get_grad_f_mf_ab(r,grad_f_mf_ab, grad_two_bod_dens,f_mf_ab,two_bod_dens, dm_a, dm_b,grad_dm_a, grad_dm_b) + + dm = dm_a + dm_b + grad_dm(1:3) = grad_dm_a(1:3) + grad_dm_b(1:3) + + if(dabs(two_bod_dens).lt.1.d-10)then + mu_mf = 1.d+10 + grad_mu_mf = 0.d0 + else + mu_mf = 0.5d0 * sqpi * f_mf_ab/two_bod_dens + grad_mu_mf(1:3) = 0.5d0 * sqpi * (grad_f_mf_ab(1:3) * two_bod_dens - f_mf_ab * grad_two_bod_dens(1:3))& + /(two_bod_dens*two_bod_dens) + endif + +end diff --git a/src/mu_of_r/test_proj_op.irp.f b/src/mu_of_r/test_proj_op.irp.f index bd2f3b4f..cf53c772 100644 --- a/src/mu_of_r/test_proj_op.irp.f +++ b/src/mu_of_r/test_proj_op.irp.f @@ -19,7 +19,8 @@ program projected_operators ! call test_f_ii_ia_aa_valence_ab ! call test ! call test_f_mean_field - call test_grad_f_mean_field +! call test_grad_f_mean_field + call test_grad_mu_mf end @@ -129,3 +130,47 @@ subroutine test_grad_f_mean_field print*,accu_grad_dm_b end + +subroutine test_grad_mu_mf + implicit none + integer :: i_point,k + double precision :: weight,r(3),rbis(3) + double precision :: mu_mf, dm,grad_mu_mf(3), grad_dm(3) + double precision :: mu_mf_p, mu_mf_m, dm_m, dm_p, num_grad_mu_mf(3),dr, num_grad_dm(3) + double precision :: accu_mu, accu_dm, accu_grad_dm(3), accu_grad_mu_mf(3) + dr = 0.00001d0 + accu_grad_mu_mf = 0.d0 + accu_mu = 0.d0 + accu_grad_dm = 0.d0 + accu_dm = 0.d0 + do i_point = 1, n_points_final_grid + r(1:3) = final_grid_points(1:3,i_point) + weight = final_weight_at_r_vector(i_point) + call grad_mu_of_r_mean_field(r,mu_mf, dm, grad_mu_mf, grad_dm) + call mu_of_r_mean_field(r,mu_mf_p, dm_p) + accu_mu += weight*dabs(mu_mf_p - mu_mf) + accu_dm += weight*dabs(dm_p - dm) + do k = 1, 3 + rbis = r + rbis(k) += dr + call mu_of_r_mean_field(rbis,mu_mf_p, dm_p) + rbis = r + rbis(k) -= dr + call mu_of_r_mean_field(rbis,mu_mf_m, dm_m) + + num_grad_mu_mf(k) = (mu_mf_p - mu_mf_m)/(2.d0*dr) + num_grad_dm(k) = (dm_p - dm_m)/(2.d0*dr) + enddo + do k = 1, 3 + accu_grad_dm(k)+= weight *dabs(num_grad_dm(k) - grad_dm(k)) + accu_grad_mu_mf(k)+= weight *dabs(num_grad_mu_mf(k) - grad_mu_mf(k)) + enddo + enddo + print*,'accu_mu = ',accu_mu + print*,'accu_dm = ',accu_dm + print*,'accu_grad_dm = ' + print*, accu_grad_dm + print*,'accu_grad_mu_mf = ' + print*, accu_grad_mu_mf + +end From edf3a27534e531a1866eac30202bf26ca305123a Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 29 Jul 2024 16:15:48 +0200 Subject: [PATCH 132/159] rank_max --- src/ao_two_e_ints/cholesky.irp.f | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index bfa6bd0a..ccaa7239 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -174,8 +174,11 @@ END_PROVIDER np = int(np8,4) if (np <= 0) stop 'np<=0' -! rank_max = min(np,20*elec_num*elec_num) rank_max = np + ! Avoid too large arrays when there are many electrons + if (elec_num > 10) then + rank_max = min(np,20*elec_num*elec_num) + endif call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., .True., c_pointer(1)) call c_f_pointer(c_pointer(1), L, (/ ndim8, rank_max /)) From 4d5467218de414d76e81a5080f762519e49f54f4 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 31 Jul 2024 16:36:44 +0200 Subject: [PATCH 133/159] Fix state following when N_states_diag is too small --- .../diagonalization_hs2_dressed.irp.f | 50 +++---------------- src/davidson/diagonalize_ci.irp.f | 5 +- 2 files changed, 10 insertions(+), 45 deletions(-) diff --git a/src/davidson/diagonalization_hs2_dressed.irp.f b/src/davidson/diagonalization_hs2_dressed.irp.f index fb04b29b..191e0021 100644 --- a/src/davidson/diagonalization_hs2_dressed.irp.f +++ b/src/davidson/diagonalization_hs2_dressed.irp.f @@ -594,6 +594,13 @@ subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_ state(l) = idx enddo + ! Check if all states are attributed. If not, exit and N_st_diag will be increased. + do l=1,N_st + if (state(l) == 0) then + return + endif + enddo + ! tmp array before setting state_ok ok = .False. do l = 1, N_st @@ -627,47 +634,6 @@ subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_ ! Swapped eigenvectors prev_y = y -! if (state_following) then -! -! overlap = -1.d0 -! do k=1,shift2 -! do i=1,shift2 -! overlap(k,i) = dabs(y(k,i)) -! enddo -! enddo -! do k=1,N_st -! cmax = -1.d0 -! do i=1,N_st -! if (overlap(i,k) > cmax) then -! cmax = overlap(i,k) -! order(k) = i -! endif -! enddo -! do i=1,N_st_diag -! overlap(order(k),i) = -1.d0 -! enddo -! enddo -! overlap = y -! do k=1,N_st -! l = order(k) -! if (k /= l) then -! y(1:shift2,k) = overlap(1:shift2,l) -! endif -! enddo -! do k=1,N_st -! overlap(k,1) = lambda(k) -! overlap(k,2) = s2(k) -! enddo -! do k=1,N_st -! l = order(k) -! if (k /= l) then -! lambda(k) = overlap(l,1) -! s2(k) = overlap(l,2) -! endif -! enddo -! -! endif - ! Express eigenvectors of h in the determinant basis ! -------------------------------------------------- @@ -703,7 +669,7 @@ subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_ if ((itertot>1).and.(iter == 1)) then - !don't print + ! Don't print continue else write(*,'(1X,I3,1X,100(1X,F16.10,1X,F11.6,1X,ES11.3))') iter-1, to_print(1:3,1:N_st) diff --git a/src/davidson/diagonalize_ci.irp.f b/src/davidson/diagonalize_ci.irp.f index 59c8313a..6b852905 100644 --- a/src/davidson/diagonalize_ci.irp.f +++ b/src/davidson/diagonalize_ci.irp.f @@ -282,9 +282,8 @@ END_PROVIDER print*,' Within the ',N_det,'determinants selected' print*,' and the ',N_states_diag,'states requested' print*,' We did not find only states with S^2 values close to ',expected_s2 - print*,' We will then set the first N_states eigenvectors of the H matrix' - print*,' as the CI_eigenvectors' - print*,' You should consider more states and maybe ask for s2_eig to be .True. or just enlarge the CI space' + print*,' You should consider more states, or change s2_eig, or just enlarge the CI space' + print*,'!!!!!!!! WARNING !!!!!!!!!' print*,'' do j=1,min(N_states_diag,N_det) From b6b0ed5d22a9af6c6c2b27e47f6c8a154587bd7d Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Thu, 1 Aug 2024 10:05:47 +0200 Subject: [PATCH 134/159] WORKING ON DEBUG CUDA-INTEG --- .../local/non_h_ints_mu/total_tc_int.irp.f | 2 +- plugins/local/tc_int/LIB | 1 + plugins/local/tc_int/compute_tc_int.irp.f | 72 +-- plugins/local/tc_int/compute_tc_int_gpu.irp.f | 237 ++++++++-- plugins/local/tc_int/deb_tc_int_cuda.irp.f | 446 ++++++++++++++++++ plugins/local/tc_int/gpu.c | 2 - plugins/local/tc_int/gpu_module.F90 | 113 ++++- plugins/local/tc_int/write_tc_int_cuda.irp.f | 194 ++++++++ 8 files changed, 959 insertions(+), 108 deletions(-) create mode 100644 plugins/local/tc_int/LIB create mode 100644 plugins/local/tc_int/deb_tc_int_cuda.irp.f delete mode 100644 plugins/local/tc_int/gpu.c create mode 100644 plugins/local/tc_int/write_tc_int_cuda.irp.f diff --git a/plugins/local/non_h_ints_mu/total_tc_int.irp.f b/plugins/local/non_h_ints_mu/total_tc_int.irp.f index fb09168e..634d7e87 100644 --- a/plugins/local/non_h_ints_mu/total_tc_int.irp.f +++ b/plugins/local/non_h_ints_mu/total_tc_int.irp.f @@ -118,7 +118,7 @@ BEGIN_PROVIDER [double precision, ao_two_e_tc_tot, (ao_num, ao_num, ao_num, ao_n !$OMP END PARALLEL call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & , int2_grad1_u12_square_ao(1,1,1), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & - , 0.d0, ao_two_e_tc_tot, ao_num*ao_num) + , 0.d0, ao_two_e_tc_tot(1,1,1,1), ao_num*ao_num) deallocate(c_mat) endif diff --git a/plugins/local/tc_int/LIB b/plugins/local/tc_int/LIB new file mode 100644 index 00000000..c41ceb9d --- /dev/null +++ b/plugins/local/tc_int/LIB @@ -0,0 +1 @@ +-ltc_int_cu diff --git a/plugins/local/tc_int/compute_tc_int.irp.f b/plugins/local/tc_int/compute_tc_int.irp.f index 92c90d03..35034454 100644 --- a/plugins/local/tc_int/compute_tc_int.irp.f +++ b/plugins/local/tc_int/compute_tc_int.irp.f @@ -2,7 +2,7 @@ ! --- subroutine provide_int2_grad1_u12_ao() - use gpu + BEGIN_DOC ! ! int2_grad1_u12_ao(i,j,ipoint,1) = \int dr2 [\grad1 u(r1,r2)]_x1 \chi_i(r2) \chi_j(r2) @@ -35,8 +35,8 @@ subroutine provide_int2_grad1_u12_ao() double precision :: weight1, ao_k_r, ao_i_r double precision :: der_envsq_x, der_envsq_y, der_envsq_z, lap_envsq double precision :: time0, time1, time2, tc1, tc2, tc - type(gpu_double4) :: int2_grad1_u12_ao - type(gpu_double3) :: tmp_grad1_u12, tmp_grad1_u12p, tmp + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: tmp_grad1_u12(:,:,:), tmp(:,:,:) double precision, allocatable :: c_mat(:,:,:), tc_int_2e_ao(:,:,:,:) double precision, external :: get_ao_two_e_integral @@ -52,7 +52,6 @@ subroutine provide_int2_grad1_u12_ao() call total_memory(mem) mem = max(1.d0, qp_max_mem - mem) - mem = 6 n_double = mem * 1.d8 n_blocks = int(min(n_double / (n_points_extra_final_grid * 4.d0), 1.d0*n_points_final_grid)) n_rest = int(mod(n_points_final_grid, n_blocks)) @@ -66,9 +65,9 @@ subroutine provide_int2_grad1_u12_ao() ! --- ! --- - call gpu_allocate(int2_grad1_u12_ao, ao_num,ao_num,n_points_final_grid,4) + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) - call gpu_allocate(tmp,n_points_extra_final_grid,ao_num,ao_num) + allocate(tmp(n_points_extra_final_grid,ao_num,ao_num)) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (j, i, jpoint) & @@ -77,23 +76,17 @@ subroutine provide_int2_grad1_u12_ao() do j = 1, ao_num do i = 1, ao_num do jpoint = 1, n_points_extra_final_grid - tmp%f(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + tmp(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) enddo enddo enddo !$OMP END DO !$OMP END PARALLEL - call gpu_allocate(tmp_grad1_u12,n_points_extra_final_grid,n_blocks,4) - call gpu_allocate(tmp_grad1_u12p,n_points_extra_final_grid,n_blocks,4) + allocate(tmp_grad1_u12(n_points_extra_final_grid,n_blocks,4)) tc = 0.d0 - type(gpu_stream) :: stream(4) - do i=1,4 - call gpu_stream_create(stream(i)) - enddo - do i_pass = 1, n_pass ii = (i_pass-1)*n_blocks + 1 @@ -102,25 +95,22 @@ subroutine provide_int2_grad1_u12_ao() !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (i_blocks, ipoint) & - !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) + !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, tmp_grad1_u12) !$OMP DO do i_blocks = 1, n_blocks ipoint = ii - 1 + i_blocks ! r1 - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12%f(1,i_blocks,1), tmp_grad1_u12%f(1,i_blocks,2), & - tmp_grad1_u12%f(1,i_blocks,3), tmp_grad1_u12%f(1,i_blocks,4)) + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_blocks,1), tmp_grad1_u12(1,i_blocks,2), & + tmp_grad1_u12(1,i_blocks,3), tmp_grad1_u12(1,i_blocks,4)) enddo !$OMP END DO !$OMP END PARALLEL call wall_time(tc2) tc = tc + tc2 - tc1 - call gpu_synchronize() - call gpu_copy(tmp_grad1_u12,tmp_grad1_u12p) do m = 1, 4 - call gpu_set_stream(blas_handle, stream(m)) - call gpu_dgemm(blas_handle, "T", "N", ao_num*ao_num, n_blocks, n_points_extra_final_grid, 1.d0 & - , tmp%f(1,1,1), n_points_extra_final_grid, tmp_grad1_u12p%f(1,1,m), n_points_extra_final_grid & - , 0.d0, int2_grad1_u12_ao%f(1,1,ii,m), ao_num*ao_num) + call dgemm("T", "N", ao_num*ao_num, n_blocks, n_points_extra_final_grid, 1.d0 & + , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) enddo enddo @@ -132,12 +122,12 @@ subroutine provide_int2_grad1_u12_ao() !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (i_rest, ipoint) & - !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) + !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, tmp_grad1_u12) !$OMP DO do i_rest = 1, n_rest ipoint = ii - 1 + i_rest ! r1 - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12%f(1,i_rest,1), tmp_grad1_u12%f(1,i_rest,2), & - tmp_grad1_u12%f(1,i_rest,3), tmp_grad1_u12%f(1,i_rest,4)) + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12(1,i_rest,1), tmp_grad1_u12(1,i_rest,2), & + tmp_grad1_u12(1,i_rest,3), tmp_grad1_u12(1,i_rest,4)) enddo !$OMP END DO !$OMP END PARALLEL @@ -145,23 +135,15 @@ subroutine provide_int2_grad1_u12_ao() tc = tc + tc2 - tc1 do m = 1, 4 - call gpu_set_stream(blas_handle, stream(m)) - call gpu_dgemm(blas_handle, "T", "N", ao_num*ao_num, n_rest, n_points_extra_final_grid, 1.d0 & - , tmp%f(1,1,1), n_points_extra_final_grid, tmp_grad1_u12%f(1,1,m), n_points_extra_final_grid & - , 0.d0, int2_grad1_u12_ao%f(1,1,ii,m), ao_num*ao_num) + call dgemm("T", "N", ao_num*ao_num, n_rest, n_points_extra_final_grid, 1.d0 & + , tmp(1,1,1), n_points_extra_final_grid, tmp_grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,ii,m), ao_num*ao_num) enddo endif - call gpu_synchronize() - call gpu_deallocate(tmp_grad1_u12) - call gpu_deallocate(tmp_grad1_u12p) + deallocate(tmp_grad1_u12) - do i=1,4 - call gpu_stream_destroy(stream(i)) - enddo - - - call gpu_deallocate(tmp) + deallocate(tmp) call wall_time(time1) @@ -169,8 +151,6 @@ subroutine provide_int2_grad1_u12_ao() print*, ' wall time Jastrow derivatives (min) = ', tc / 60.d0 call print_memory_usage() -!TODO -stop ! --- ! --- ! --- @@ -196,7 +176,7 @@ stop !$OMP END DO !$OMP END PARALLEL call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & - , int2_grad1_u12_ao%f(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , int2_grad1_u12_ao(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 0.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) deallocate(c_mat) @@ -232,7 +212,7 @@ stop !$OMP END PARALLEL call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -1.d0 & - , int2_grad1_u12_ao%f(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 1.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) enddo deallocate(c_mat) @@ -281,9 +261,10 @@ stop print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") - call ezfio_set_work_empty(.False.) - write(11) int2_grad1_u12_ao%f(:,:,:,1:3) + call ezfio_set_work_empty(.False.) + write(11) int2_grad1_u12_ao(:,:,:,1:3) close(11) + deallocate(int2_grad1_u12_ao) print*, ' Saving tc_int_2e_ao in ', trim(ezfio_filename) // '/work/ao_two_e_tc_tot' open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/ao_two_e_tc_tot', action="write") @@ -295,7 +276,6 @@ stop ! ---- - call gpu_deallocate(int2_grad1_u12_ao) deallocate(tc_int_2e_ao) call wall_time(time2) diff --git a/plugins/local/tc_int/compute_tc_int_gpu.irp.f b/plugins/local/tc_int/compute_tc_int_gpu.irp.f index 146574a6..5db07dd6 100644 --- a/plugins/local/tc_int/compute_tc_int_gpu.irp.f +++ b/plugins/local/tc_int/compute_tc_int_gpu.irp.f @@ -3,24 +3,24 @@ subroutine provide_int2_grad1_u12_ao_gpu() - use gpu_module + use gpu BEGIN_DOC ! - ! int2_grad1_u12_ao(i,j,ipoint,1) = \int dr2 [\grad1 u(r1,r2)]_x1 \chi_i(r2) \chi_j(r2) - ! int2_grad1_u12_ao(i,j,ipoint,2) = \int dr2 [\grad1 u(r1,r2)]_y1 \chi_i(r2) \chi_j(r2) - ! int2_grad1_u12_ao(i,j,ipoint,3) = \int dr2 [\grad1 u(r1,r2)]_z1 \chi_i(r2) \chi_j(r2) - ! int2_grad1_u12_ao(i,j,ipoint,4) = \int dr2 [-(1/2) [\grad1 u(r1,r2)]^2] \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,1) = \int dr2 [\grad1 u(r1,r2)]_x1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,2) = \int dr2 [\grad1 u(r1,r2)]_y1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,3) = \int dr2 [\grad1 u(r1,r2)]_z1 \chi_i(r2) \chi_j(r2) + ! int2_grad1_u12_ao(i,j,ipoint,4) = \int dr2 [-(1/2) [\grad1 u(r1,r2)]^2] \chi_i(r2) \chi_j(r2) ! ! - ! tc_int_2e_ao(k,i,l,j) = (ki|V^TC(r_12)|lj) - ! = where V^TC(r_12) is the total TC operator + ! tc_int_2e_ao(k,i,l,j) = (ki|V^TC(r_12)|lj) + ! = where V^TC(r_12) is the total TC operator ! = tc_grad_and_lapl_ao(k,i,l,j) + tc_grad_square_ao(k,i,l,j) + ao_two_e_coul(k,i,l,j) ! where: ! ! tc_grad_and_lapl_ao(k,i,l,j) = < k l | -1/2 \Delta_1 u(r1,r2) - \grad_1 u(r1,r2) . \grad_1 | ij > - ! = -1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) - ! = 1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 (-1) \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) + ! = -1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) + ! = 1/2 \int dr1 (phi_k(r1) \grad_r1 phi_i(r1) - phi_i(r1) \grad_r1 phi_k(r1)) . \int dr2 (-1) \grad_r1 u(r1,r2) \phi_l(r2) \phi_j(r2) ! ! tc_grad_square_ao(k,i,l,j) = -1/2 ! @@ -37,8 +37,9 @@ subroutine provide_int2_grad1_u12_ao_gpu() double precision :: weight1, ao_k_r, ao_i_r double precision :: der_envsq_x, der_envsq_y, der_envsq_z, lap_envsq double precision :: time0, time1, time2, tc1, tc2, tc - double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:), tc_int_2e_ao(:,:,:,:) - double precision, allocatable :: tmp(:,:,:), c_mat(:,:,:), tmp_grad1_u12(:,:,:) + type(gpu_double4) :: int2_grad1_u12_ao + type(gpu_double3) :: tmp_grad1_u12, tmp_grad1_u12p, tmp + double precision, allocatable :: c_mat(:,:,:), tc_int_2e_ao(:,:,:,:) double precision, external :: get_ao_two_e_integral @@ -48,11 +49,12 @@ subroutine provide_int2_grad1_u12_ao_gpu() - print*, ' start provide_int2_grad1_u12_ao_gpu ...' + print*, ' start provide_int2_grad1_u12_ao ...' call wall_time(time0) call total_memory(mem) mem = max(1.d0, qp_max_mem - mem) + mem = 6 n_double = mem * 1.d8 n_blocks = int(min(n_double / (n_points_extra_final_grid * 4.d0), 1.d0*n_points_final_grid)) n_rest = int(mod(n_points_final_grid, n_blocks)) @@ -62,41 +64,198 @@ subroutine provide_int2_grad1_u12_ao_gpu() call write_int(6, n_blocks, 'Size of the blocks') call write_int(6, n_rest, 'Size of the last block') + ! --- + ! --- ! --- - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) - allocate(tc_int_2e_ao(ao_num,ao_num,ao_num,ao_num)) + call gpu_allocate(int2_grad1_u12_ao, ao_num,ao_num,n_points_final_grid,4) - double precision, allocatable :: aos_data1(:,:,:) - double precision, allocatable :: aos_data2(:,:,:) - allocate(aos_data1(n_points_final_grid,ao_num,4)) - allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) - - do k = 1, ao_num - do ipoint = 1, n_points_final_grid - aos_data1(ipoint,k,1) = aos_in_r_array(i,ipoint) - aos_data1(ipoint,k,2) = aos_grad_in_r_array(i,ipoint,1) - aos_data1(ipoint,k,3) = aos_grad_in_r_array(i,ipoint,2) - aos_data1(ipoint,k,4) = aos_grad_in_r_array(i,ipoint,3) + call gpu_allocate(tmp,n_points_extra_final_grid,ao_num,ao_num) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (tmp, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO SCHEDULE (static) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + tmp%f(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo enddo + enddo + !$OMP END DO + !$OMP END PARALLEL - do ipoint = 1, n_points_extra_final_grid - aos_data1(ipoint,k,1) = aos_in_r_array_extra(i,ipoint) - aos_data1(ipoint,k,2) = aos_grad_in_r_array_extra(i,ipoint,1) - aos_data1(ipoint,k,3) = aos_grad_in_r_array_extra(i,ipoint,2) - aos_data1(ipoint,k,4) = aos_grad_in_r_array_extra(i,ipoint,3) + call gpu_allocate(tmp_grad1_u12,n_points_extra_final_grid,n_blocks,4) + call gpu_allocate(tmp_grad1_u12p,n_points_extra_final_grid,n_blocks,4) + + tc = 0.d0 + + type(gpu_stream) :: stream(4) + do i=1,4 + call gpu_stream_create(stream(i)) + enddo + + do i_pass = 1, n_pass + ii = (i_pass-1)*n_blocks + 1 + + call wall_time(tc1) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_blocks, ipoint) & + !$OMP SHARED (n_blocks, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) + !$OMP DO + do i_blocks = 1, n_blocks + ipoint = ii - 1 + i_blocks ! r1 + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12%f(1,i_blocks,1), tmp_grad1_u12%f(1,i_blocks,2), & + tmp_grad1_u12%f(1,i_blocks,3), tmp_grad1_u12%f(1,i_blocks,4)) + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(tc2) + tc = tc + tc2 - tc1 + + call gpu_synchronize() + call gpu_copy(tmp_grad1_u12,tmp_grad1_u12p) + do m = 1, 4 + call gpu_set_stream(blas_handle, stream(m)) + call gpu_dgemm(blas_handle, "T", "N", ao_num*ao_num, n_blocks, n_points_extra_final_grid, 1.d0 & + , tmp%f(1,1,1), n_points_extra_final_grid, tmp_grad1_u12p%f(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao%f(1,1,ii,m), ao_num*ao_num) enddo enddo - call tc_int_bh(n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, & - jBH_size, jBH_m, jBH_n, jBH_o, jBH_c, & - final_grid_points, final_grid_points_extra, nucl_coord, & - final_weight_at_r_vector, final_weight_at_r_vector_extra, & - aos_data1, aos_data2, int2_grad1_u12_ao, tc_int_2e_ao) + if(n_rest .gt. 0) then + + ii = n_pass*n_blocks + 1 + + call wall_time(tc1) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i_rest, ipoint) & + !$OMP SHARED (n_rest, n_points_extra_final_grid, ii, final_grid_points, tmp_grad1_u12) + !$OMP DO + do i_rest = 1, n_rest + ipoint = ii - 1 + i_rest ! r1 + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, tmp_grad1_u12%f(1,i_rest,1), tmp_grad1_u12%f(1,i_rest,2), & + tmp_grad1_u12%f(1,i_rest,3), tmp_grad1_u12%f(1,i_rest,4)) + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(tc2) + tc = tc + tc2 - tc1 + + do m = 1, 4 + call gpu_set_stream(blas_handle, stream(m)) + call gpu_dgemm(blas_handle, "T", "N", ao_num*ao_num, n_rest, n_points_extra_final_grid, 1.d0 & + , tmp%f(1,1,1), n_points_extra_final_grid, tmp_grad1_u12%f(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao%f(1,1,ii,m), ao_num*ao_num) + enddo + + endif + call gpu_synchronize() + call gpu_deallocate(tmp_grad1_u12) + call gpu_deallocate(tmp_grad1_u12p) + + do i=1,4 + call gpu_stream_destroy(stream(i)) + enddo + + + call gpu_deallocate(tmp) + + + call wall_time(time1) + print*, ' wall time for int2_grad1_u12_ao (min) = ', (time1-time0) / 60.d0 + print*, ' wall time Jastrow derivatives (min) = ', tc / 60.d0 + call print_memory_usage() + +!TODO +stop + ! --- + ! --- + ! --- + + + allocate(tc_int_2e_ao(ao_num,ao_num,ao_num,ao_num)) + + call wall_time(time1) + + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint) & + !$OMP SHARED (aos_in_r_array_transp, c_mat, ao_num, n_points_final_grid, final_weight_at_r_vector) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + c_mat(ipoint,k,i) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,k) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & + , int2_grad1_u12_ao%f(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 0.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) + deallocate(c_mat) + + call wall_time(time2) + print*, ' wall time of Hermitian part of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + call print_memory_usage() ! --- - call wall_time(time1) + call wall_time(time1) + + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) + do m = 1, 3 + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & + !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, c_mat, & + !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector, m) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + + weight1 = 0.5d0 * final_weight_at_r_vector(ipoint) + ao_i_r = aos_in_r_array_transp(ipoint,i) + ao_k_r = aos_in_r_array_transp(ipoint,k) + + c_mat(ipoint,k,i) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,m) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,m)) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -1.d0 & + , int2_grad1_u12_ao%f(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 1.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) + enddo + deallocate(c_mat) + + call wall_time(time2) + print*, ' wall time of non-Hermitian part of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + call print_memory_usage() + + ! --- + + call wall_time(time1) + + call sum_A_At(tc_int_2e_ao(1,1,1,1), ao_num*ao_num) + + call wall_time(time2) + print*, ' lower- and upper-triangle of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + call print_memory_usage() + + ! --- + + call wall_time(time1) PROVIDE ao_integrals_map !$OMP PARALLEL DEFAULT(NONE) & @@ -107,7 +266,7 @@ subroutine provide_int2_grad1_u12_ao_gpu() do l = 1, ao_num do i = 1, ao_num do k = 1, ao_num - ! < 1:i, 2:j | 1:k, 2:l > + ! < 1:i, 2:j | 1:k, 2:l > tc_int_2e_ao(k,i,l,j) = tc_int_2e_ao(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) enddo enddo @@ -125,7 +284,7 @@ subroutine provide_int2_grad1_u12_ao_gpu() print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") call ezfio_set_work_empty(.False.) - write(11) int2_grad1_u12_ao(:,:,:,1:3) + write(11) int2_grad1_u12_ao%f(:,:,:,1:3) close(11) print*, ' Saving tc_int_2e_ao in ', trim(ezfio_filename) // '/work/ao_two_e_tc_tot' @@ -138,7 +297,7 @@ subroutine provide_int2_grad1_u12_ao_gpu() ! ---- - deallocate(int2_grad1_u12_ao) + call gpu_deallocate(int2_grad1_u12_ao) deallocate(tc_int_2e_ao) call wall_time(time2) diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f new file mode 100644 index 00000000..6eb3a8b5 --- /dev/null +++ b/plugins/local/tc_int/deb_tc_int_cuda.irp.f @@ -0,0 +1,446 @@ +! --- + +program write_tc_int_cuda + + implicit none + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + + call main() + +end + +! --- + +subroutine main() + + implicit none + + !call deb_int_long_range_gpu() + !call deb_int_bh_kernel_gpu() + call deb_int2_grad1_u12_ao_gpu() + + return +end + +! --- + +subroutine deb_int_long_range_gpu() + + use gpu_module + + implicit none + + integer :: i, j, k + integer :: ipoint, jpoint + + integer :: nBlocks, blockSize + + double precision :: acc_thr, err_tot, nrm_tot, err_loc + + double precision :: time0, time1 + double precision :: cuda_time0, cuda_time1 + double precision :: cpu_time0, cpu_time1 + + double precision, allocatable :: aos_data2(:,:,:) + double precision, allocatable :: int_fct_long_range(:,:,:) + double precision, allocatable :: int_fct_long_range_gpu(:,:,:) + + + + call wall_time(time0) + print*, ' start deb_int_long_range_gpu' + + + ! --- + + nBlocks = 256 + blockSize = 32 + + allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) + allocate(int_fct_long_range_gpu(n_points_extra_final_grid,ao_num,ao_num)) + + do k = 1, ao_num + do ipoint = 1, n_points_extra_final_grid + aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) + aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) + aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) + aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) + enddo + enddo + + ! --- + + call wall_time(cuda_time0) + + call deb_int_long_range(nBlocks, blockSize, & + n_points_extra_final_grid, ao_num, final_weight_at_r_vector_extra, aos_data2, & + int_fct_long_range_gpu) + + call wall_time(cuda_time1) + print*, ' wall time for CUDA kernel (min) = ', (cuda_time1-cuda_time0) / 60.d0 + + deallocate(aos_data2) + + ! --- + + allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) + + call wall_time(cpu_time0) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO SCHEDULE (static) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + call wall_time(cpu_time1) + print*, ' wall time on CPU (min) = ', (cpu_time1-cpu_time0) / 60.d0 + + ! --- + + acc_thr = 1d-12 + err_tot = 0.d0 + nrm_tot = 0.d0 + + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + err_loc = dabs(int_fct_long_range(jpoint,i,j) - int_fct_long_range_gpu(jpoint,i,j)) + if(err_loc > acc_thr) then + print*, " error on", jpoint, i, j + print*, " CPU res", int_fct_long_range (jpoint,i,j) + print*, " GPU res", int_fct_long_range_gpu(jpoint,i,j) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(int_fct_long_range(jpoint,i,j)) + enddo + enddo + enddo + + print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + deallocate(int_fct_long_range) + deallocate(int_fct_long_range_gpu) + + call wall_time(time1) + print*, ' wall time for deb_int_long_range_gpu (min) = ', (time1-time0) / 60.d0 + + return +end + +! --- + +subroutine deb_int_bh_kernel_gpu() + + use gpu_module + + implicit none + + integer :: m + integer :: ipoint, jpoint + + integer :: nBlocks, blockSize + + double precision :: acc_thr, err_tot, nrm_tot, err_loc + + double precision :: time0, time1 + double precision :: cuda_time0, cuda_time1 + double precision :: cpu_time0, cpu_time1 + + double precision, allocatable :: r1(:,:), r2(:,:) + double precision, allocatable :: grad1_u12(:,:,:) + double precision, allocatable :: grad1_u12_gpu(:,:,:) + + + + call wall_time(time0) + print*, ' start deb_int_bh_kernel_gpu' + + + ! --- + + allocate(r1(n_points_final_grid,3)) + allocate(r2(n_points_extra_final_grid,3)) + + do ipoint = 1, n_points_final_grid + r1(ipoint,1) = final_grid_points(1,ipoint) + r1(ipoint,2) = final_grid_points(2,ipoint) + r1(ipoint,3) = final_grid_points(3,ipoint) + enddo + + do ipoint = 1, n_points_extra_final_grid + r2(ipoint,1) = final_grid_points_extra(1,ipoint) + r2(ipoint,2) = final_grid_points_extra(2,ipoint) + r2(ipoint,3) = final_grid_points_extra(3,ipoint) + enddo + + ! --- + + nBlocks = 256 + blockSize = 32 + + allocate(grad1_u12_gpu(n_points_extra_final_grid,n_points_final_grid,4)) + + call wall_time(cuda_time0) + + call deb_int_bh_kernel(nBlocks, blockSize, & + n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & + r1, r2, nucl_coord, jBH_c, jBH_m, jBH_n, jBH_o, & + grad1_u12_gpu) + + call wall_time(cuda_time1) + print*, ' wall time for CUDA kernel (min) = ', (cuda_time1-cuda_time0) / 60.d0 + + ! --- + + allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) + + call wall_time(cpu_time0) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) + !$OMP DO + do ipoint = 1, n_points_final_grid + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & + , grad1_u12(1,ipoint,2) & + , grad1_u12(1,ipoint,3) & + , grad1_u12(1,ipoint,4) ) + enddo + !$OMP END DO + !$OMP END PARALLEL + + call wall_time(cpu_time1) + print*, ' wall time on CPU (min) = ', (cpu_time1-cpu_time0) / 60.d0 + + ! --- + + acc_thr = 1d-12 + err_tot = 0.d0 + nrm_tot = 0.d0 + + do m = 1, 4 + do ipoint = 1, n_points_final_grid + do jpoint = 1, n_points_extra_final_grid + err_loc = dabs(grad1_u12(jpoint,ipoint,m) - grad1_u12_gpu(jpoint,ipoint,m)) + if(err_loc > acc_thr) then + print*, " error on", jpoint, ipoint, m + print*, " CPU res", grad1_u12 (jpoint,ipoint,m) + print*, " GPU res", grad1_u12_gpu(jpoint,ipoint,m) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(grad1_u12(jpoint,ipoint,m)) + enddo + enddo + enddo + + print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + deallocate(r1, r2) + deallocate(grad1_u12) + deallocate(grad1_u12_gpu) + + call wall_time(time1) + print*, ' wall time for deb_int_bh_kernel_gpu (min) = ', (time1-time0) / 60.d0 + + return +end + +! --- + +subroutine deb_int2_grad1_u12_ao_gpu() + + use gpu_module + + implicit none + + integer :: m + integer :: i, j, k + integer :: ipoint, jpoint + + integer :: nBlocks, blockSize + + double precision :: acc_thr, err_tot, nrm_tot, err_loc + + double precision :: time0, time1 + double precision :: cuda_time0, cuda_time1 + double precision :: cpu_time0, cpu_time1 + + double precision, allocatable :: r1(:,:), r2(:,:), aos_data2(:,:,:) + double precision, allocatable :: grad1_u12(:,:,:), int_fct_long_range(:,:,:) + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: int2_grad1_u12_ao_gpu(:,:,:,:) + + + + call wall_time(time0) + print*, ' start deb_int2_grad1_u12_ao_gpu' + + + ! --- + + allocate(r1(n_points_final_grid,3)) + allocate(r2(n_points_extra_final_grid,3)) + allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) + + do ipoint = 1, n_points_final_grid + r1(ipoint,1) = final_grid_points(1,ipoint) + r1(ipoint,2) = final_grid_points(2,ipoint) + r1(ipoint,3) = final_grid_points(3,ipoint) + enddo + + do ipoint = 1, n_points_extra_final_grid + r2(ipoint,1) = final_grid_points_extra(1,ipoint) + r2(ipoint,2) = final_grid_points_extra(2,ipoint) + r2(ipoint,3) = final_grid_points_extra(3,ipoint) + enddo + + do k = 1, ao_num + do ipoint = 1, n_points_extra_final_grid + aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) + aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) + aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) + aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) + enddo + enddo + + ! --- + + nBlocks = 256 + blockSize = 32 + + allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,4)) + + call wall_time(cuda_time0) + + call deb_int2_grad1_u12_ao(nBlocks, blockSize, & + n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & + r1, r2, final_weight_at_r_vector_extra, nucl_coord, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & + int2_grad1_u12_ao_gpu) + + call wall_time(cuda_time1) + print*, ' wall time for CUDA kernel (min) = ', (cuda_time1-cuda_time0) / 60.d0 + + ! --- + + + allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) + allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + + call wall_time(cpu_time0) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO SCHEDULE (static) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) + !$OMP DO + do ipoint = 1, n_points_final_grid + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & + , grad1_u12(1,ipoint,2) & + , grad1_u12(1,ipoint,3) & + , grad1_u12(1,ipoint,4) ) + enddo + !$OMP END DO + !$OMP END PARALLEL + + do m = 1, 4 + call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & + , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) + enddo + + call wall_time(cpu_time1) + print*, ' wall time on CPU (min) = ', (cpu_time1-cpu_time0) / 60.d0 + + ! --- + + acc_thr = 1d-12 + err_tot = 0.d0 + nrm_tot = 0.d0 + + do m = 1, 4 + do ipoint = 1, n_points_final_grid + do j = 1, ao_num + do i = 1, ao_num + err_loc = dabs(int2_grad1_u12_ao(i,j,ipoint,m) - int2_grad1_u12_ao_gpu(i,j,ipoint,m)) + if(err_loc > acc_thr) then + print*, " error on", i, j, ipoint, m + print*, " CPU res", int2_grad1_u12_ao (i,j,ipoint,m) + print*, " GPU res", int2_grad1_u12_ao_gpu(i,j,ipoint,m) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(int2_grad1_u12_ao(i,j,ipoint,m)) + enddo + enddo + enddo + enddo + + print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + deallocate(r1, r2, aos_data2) + deallocate(int_fct_long_range, grad1_u12) + deallocate(int2_grad1_u12_ao) + deallocate(int2_grad1_u12_ao_gpu) + + call wall_time(time1) + print*, ' wall time for deb_int2_grad1_u12_ao_gpu (min) = ', (time1-time0) / 60.d0 + + return +end diff --git a/plugins/local/tc_int/gpu.c b/plugins/local/tc_int/gpu.c deleted file mode 100644 index 139597f9..00000000 --- a/plugins/local/tc_int/gpu.c +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/plugins/local/tc_int/gpu_module.F90 b/plugins/local/tc_int/gpu_module.F90 index cf7efad2..f625e57d 100644 --- a/plugins/local/tc_int/gpu_module.F90 +++ b/plugins/local/tc_int/gpu_module.F90 @@ -1,38 +1,111 @@ -! --- - module gpu_module - use iso_c_binding + use, intrinsic :: iso_c_binding implicit none interface - subroutine tc_int_bh(n_grid1, n_grid2, ao_num, n_nuc, & - size_bh, m_bh, n_bh, o_bh, c_bh, & - r1, r2, rn, wr1, wr2, aos_data1, & - aos_data2, int2_grad1_u12, tc_int_2e_ao) bind(C) + ! --- - import c_int, c_double + subroutine tc_int_c(nBlocks, blockSize, & + n_grid1, n_grid2, n_ao, n_nuc, size_bh, & + r1, wr1, r2, wr2, rn, & + aos_data1, aos_data2, & + c_bh, m_bh, n_bh, o_bh, & + int2_grad1_u12_ao, int_2e_ao) bind(C, name = "tc_int_c") - integer(c_int), intent(in), value :: n_grid1, n_grid2, ao_num, n_nuc, size_bh + import c_int, c_double, c_ptr + integer(c_int), intent(in), value :: nBlocks, blockSize + integer(c_int), intent(in), value :: n_grid1, n_grid2 + integer(c_int), intent(in), value :: n_ao + integer(c_int), intent(in), value :: n_nuc + integer(c_int), intent(in), value :: size_bh + real(c_double), intent(in) :: r1(n_grid1,3), wr1(n_grid1) + real(c_double), intent(in) :: r2(n_grid2,3), wr2(n_grid2) + real(c_double), intent(in) :: rn(n_nuc,3) + real(c_double), intent(in) :: aos_data1(n_grid1,n_ao,4) + real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4) + real(c_double), intent(in) :: c_bh(size_bh,n_nuc) integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) - real(c_double), intent(in) :: c_bh(size_bh,n_nuc) - real(c_double), intent(in) :: r1(n_grid1,3), r2(n_grid2,3) - real(c_double), intent(in) :: rn(n_nuc,3) - real(c_double), intent(in) :: wr1(n_grid1), wr2(n_grid2) - real(c_double), intent(in) :: aos_data1(n_grid1,ao_num,4), aos_data2(n_grid2,ao_num,4) - real(c_double), intent(out) :: int2_grad1_u12(n_grid1,ao_num,ao_num,4) - real(c_double), intent(out) :: tc_int_2e_ao(ao_num,ao_num,ao_num,ao_num) + real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,4) + real(c_double), intent(out) :: int_2e_ao(n_ao,n_ao,n_ao,n_ao) + + end subroutine tc_int_c + + ! --- + + subroutine deb_int_long_range(nBlocks, blockSize, & + n_grid2, n_ao, wr2, aos_data2, & + int_fct_long_range) bind(C, name = "deb_int_long_range") + + import c_int, c_double + integer(c_int), intent(in), value :: nBlocks, blockSize + integer(c_int), intent(in), value :: n_grid2 + integer(c_int), intent(in), value :: n_ao + real(c_double), intent(in) :: wr2(n_grid2) + real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4) + real(c_double), intent(out) :: int_fct_long_range(n_grid2,n_ao,n_ao) + + end subroutine deb_int_long_range + + ! --- + + subroutine deb_int_bh_kernel(nBlocks, blockSize, & + n_grid1, n_grid2, n_ao, n_nuc, size_bh, & + r1, r2, rn, c_bh, m_bh, n_bh, o_bh, & + grad1_u12) bind(C, name = "deb_int_bh_kernel") + + import c_int, c_double, c_ptr + integer(c_int), intent(in), value :: nBlocks, blockSize + integer(c_int), intent(in), value :: n_grid1, n_grid2 + integer(c_int), intent(in), value :: n_ao + integer(c_int), intent(in), value :: n_nuc + integer(c_int), intent(in), value :: size_bh + real(c_double), intent(in) :: r1(n_grid1,3) + real(c_double), intent(in) :: r2(n_grid2,3) + real(c_double), intent(in) :: rn(n_nuc,3) + real(c_double), intent(in) :: c_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) + real(c_double), intent(out) :: grad1_u12(n_grid2,n_grid1,4) + + end subroutine deb_int_bh_kernel + + ! --- + + subroutine deb_int2_grad1_u12_ao(nBlocks, blockSize, & + n_grid1, n_grid2, n_ao, n_nuc, size_bh, & + r1, r2, wr2, rn, aos_data2, c_bh, m_bh, n_bh, o_bh, & + int2_grad1_u12_ao) bind(C, name ="deb_int2_grad1_u12_ao") + + import c_int, c_double, c_ptr + integer(c_int), intent(in), value :: nBlocks, blockSize + integer(c_int), intent(in), value :: n_grid1, n_grid2 + integer(c_int), intent(in), value :: n_ao + integer(c_int), intent(in), value :: n_nuc + integer(c_int), intent(in), value :: size_bh + real(c_double), intent(in) :: r1(n_grid1,3) + real(c_double), intent(in) :: r2(n_grid2,3) + real(c_double), intent(in) :: wr2(n_grid2) + real(c_double), intent(in) :: rn(n_nuc,3) + real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4) + real(c_double), intent(in) :: c_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) + real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,4) + + end subroutine deb_int2_grad1_u12_ao + + ! --- - end subroutine - end interface -end module +end module gpu_module -! --- diff --git a/plugins/local/tc_int/write_tc_int_cuda.irp.f b/plugins/local/tc_int/write_tc_int_cuda.irp.f new file mode 100644 index 00000000..de3be412 --- /dev/null +++ b/plugins/local/tc_int/write_tc_int_cuda.irp.f @@ -0,0 +1,194 @@ +! --- + +program write_tc_int_cuda + + implicit none + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + + call main() + +end + +! --- + +subroutine main() + + implicit none + + PROVIDE io_tc_integ + + print*, 'io_tc_integ = ', io_tc_integ + + if(io_tc_integ .ne. "Write") then + print*, 'io_tc_integ != Write' + print*, io_tc_integ + stop + endif + + call do_work_on_gpu() + + call ezfio_set_tc_keywords_io_tc_integ('Read') + +end + +! --- + +subroutine do_work_on_gpu() + + use gpu_module + + implicit none + + integer :: k, ipoint + integer :: nBlocks, blockSize + integer :: n_grid1, n_grid2 + integer :: n_ao + integer :: n_nuc + integer :: size_bh + + double precision, allocatable :: r1(:,:), wr1(:), r2(:,:), wr2(:), rn(:,:) + double precision, allocatable :: aos_data1(:,:,:), aos_data2(:,:,:) + double precision, allocatable :: c_bh(:,:) + integer, allocatable :: m_bh(:,:), n_bh(:,:), o_bh(:,:) + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: int_2e_ao(:,:,:,:) + + double precision :: time0, time1 + double precision :: cuda_time0, cuda_time1 + + call wall_time(time0) + print*, ' start calculation of TC-integrals' + + nBlocks = 100 + blockSize = 32 + + n_grid1 = n_points_final_grid + n_grid2 = n_points_extra_final_grid + + n_ao = ao_num + n_nuc = nucl_num + + size_bh = jBH_size + + print*, " nBlocks =", nBlocks + print*, " blockSize =", blockSize + print*, " n_grid1 =", n_grid1 + print*, " n_grid2 =", n_grid2 + print*, " n_ao =", n_ao + print*, " n_nuc =", n_nuc + print *, " size_bh =", size_bh + + allocate(r1(n_grid1,3), wr1(n_grid1)) + allocate(r2(n_grid2,3), wr2(n_grid2)) + allocate(rn(n_nuc,3)) + allocate(aos_data1(n_grid1,n_ao,4)) + allocate(aos_data2(n_grid2,n_ao,4)) + allocate(c_bh(size_bh,n_nuc), m_bh(size_bh,n_nuc), n_bh(size_bh,n_nuc), o_bh(size_bh,n_nuc)) + allocate(int2_grad1_u12_ao(n_ao,n_ao,n_grid1,4)) + allocate(int_2e_ao(n_ao,n_ao,n_ao,n_ao)) + + do ipoint = 1, n_points_final_grid + r1(ipoint,1) = final_grid_points(1,ipoint) + r1(ipoint,2) = final_grid_points(2,ipoint) + r1(ipoint,3) = final_grid_points(3,ipoint) + wr1(ipoint) = final_weight_at_r_vector(ipoint) + enddo + + do ipoint = 1, n_points_extra_final_grid + r2(ipoint,1) = final_grid_points_extra(1,ipoint) + r2(ipoint,2) = final_grid_points_extra(2,ipoint) + r2(ipoint,3) = final_grid_points_extra(3,ipoint) + wr2(ipoint) = final_weight_at_r_vector_extra(ipoint) + enddo + + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + aos_data1(ipoint,k,1) = aos_in_r_array(k,ipoint) + aos_data1(ipoint,k,2) = aos_grad_in_r_array(k,ipoint,1) + aos_data1(ipoint,k,3) = aos_grad_in_r_array(k,ipoint,2) + aos_data1(ipoint,k,4) = aos_grad_in_r_array(k,ipoint,3) + enddo + + do ipoint = 1, n_points_extra_final_grid + aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) + aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) + aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) + aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) + enddo + enddo + + rn(:,:) = nucl_coord(:,:) + + c_bh(:,:) = jBH_c(:,:) + m_bh(:,:) = jBH_m(:,:) + n_bh(:,:) = jBH_n(:,:) + o_bh(:,:) = jBH_o(:,:) + + call wall_time(cuda_time0) + print*, ' start CUDA kernel' + + int2_grad1_u12_ao = 0.d0 + int_2e_ao = 0.d0 + + call tc_int_c(nBlocks, blockSize, & + n_grid1, n_grid2, n_ao, n_nuc, size_bh, & + r1, wr1, r2, wr2, rn, aos_data1, aos_data2, & + c_bh, m_bh, n_bh, o_bh, & + int2_grad1_u12_ao, int_2e_ao) + + call wall_time(cuda_time1) + print*, ' wall time for CUDA kernel (min) = ', (cuda_time1-cuda_time0) / 60.d0 + + deallocate(r1, wr1, r2, wr2, rn) + deallocate(aos_data1, aos_data2) + deallocate(c_bh, m_bh, n_bh, o_bh) + + ! --- + + print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") + call ezfio_set_work_empty(.False.) + write(11) int2_grad1_u12_ao(:,:,:,1:3) + close(11) + deallocate(int2_grad1_u12_ao) + + print*, ' Saving tc_int_2e_ao in ', trim(ezfio_filename) // '/work/ao_two_e_tc_tot' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/ao_two_e_tc_tot', action="write") + call ezfio_set_work_empty(.False.) + do k = 1, ao_num + write(11) int_2e_ao(:,:,:,k) + enddo + close(11) + deallocate(int_2e_ao) + + ! ---- + + + call wall_time(time1) + print*, ' wall time for TC-integrals (min) = ', (time1-time0) / 60.d0 + + return +end + +! --- From f43ee8cf61e6a59a1e6d8b013cd5fe75b1724b42 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Thu, 1 Aug 2024 18:29:50 +0200 Subject: [PATCH 135/159] int2_grad1_u12_ao is computed correctly on CUDA --- plugins/local/tc_int/EZFIO.cfg | 36 +++ plugins/local/tc_int/deb_tc_int_cuda.irp.f | 283 +++------------------ plugins/local/tc_int/gpu_module.F90 | 58 +---- 3 files changed, 75 insertions(+), 302 deletions(-) create mode 100644 plugins/local/tc_int/EZFIO.cfg diff --git a/plugins/local/tc_int/EZFIO.cfg b/plugins/local/tc_int/EZFIO.cfg new file mode 100644 index 00000000..12366f01 --- /dev/null +++ b/plugins/local/tc_int/EZFIO.cfg @@ -0,0 +1,36 @@ +[nxBlocks] +type: integer +doc: nb of x blocks in the Grid +interface: ezfio,provider,ocaml +default: 10 + +[nyBlocks] +type: integer +doc: nb of y blocks in the Grid +interface: ezfio,provider,ocaml +default: 10 + +[nzBlocks] +type: integer +doc: nb of z blocks in the Grid +interface: ezfio,provider,ocaml +default: 1 + +[blockxSize] +type: integer +doc: size of x blocks +interface: ezfio,provider,ocaml +default: 32 + +[blockySize] +type: integer +doc: size of y blocks +interface: ezfio,provider,ocaml +default: 32 + +[blockzSize] +type: integer +doc: size of z blocks +interface: ezfio,provider,ocaml +default: 1 + diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f index 6eb3a8b5..a7b5b125 100644 --- a/plugins/local/tc_int/deb_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/deb_tc_int_cuda.irp.f @@ -36,8 +36,6 @@ subroutine main() implicit none - !call deb_int_long_range_gpu() - !call deb_int_bh_kernel_gpu() call deb_int2_grad1_u12_ao_gpu() return @@ -45,246 +43,6 @@ end ! --- -subroutine deb_int_long_range_gpu() - - use gpu_module - - implicit none - - integer :: i, j, k - integer :: ipoint, jpoint - - integer :: nBlocks, blockSize - - double precision :: acc_thr, err_tot, nrm_tot, err_loc - - double precision :: time0, time1 - double precision :: cuda_time0, cuda_time1 - double precision :: cpu_time0, cpu_time1 - - double precision, allocatable :: aos_data2(:,:,:) - double precision, allocatable :: int_fct_long_range(:,:,:) - double precision, allocatable :: int_fct_long_range_gpu(:,:,:) - - - - call wall_time(time0) - print*, ' start deb_int_long_range_gpu' - - - ! --- - - nBlocks = 256 - blockSize = 32 - - allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) - allocate(int_fct_long_range_gpu(n_points_extra_final_grid,ao_num,ao_num)) - - do k = 1, ao_num - do ipoint = 1, n_points_extra_final_grid - aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) - aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) - aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) - aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) - enddo - enddo - - ! --- - - call wall_time(cuda_time0) - - call deb_int_long_range(nBlocks, blockSize, & - n_points_extra_final_grid, ao_num, final_weight_at_r_vector_extra, aos_data2, & - int_fct_long_range_gpu) - - call wall_time(cuda_time1) - print*, ' wall time for CUDA kernel (min) = ', (cuda_time1-cuda_time0) / 60.d0 - - deallocate(aos_data2) - - ! --- - - allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) - - call wall_time(cpu_time0) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (j, i, jpoint) & - !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) - !$OMP DO SCHEDULE (static) - do j = 1, ao_num - do i = 1, ao_num - do jpoint = 1, n_points_extra_final_grid - int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - call wall_time(cpu_time1) - print*, ' wall time on CPU (min) = ', (cpu_time1-cpu_time0) / 60.d0 - - ! --- - - acc_thr = 1d-12 - err_tot = 0.d0 - nrm_tot = 0.d0 - - do j = 1, ao_num - do i = 1, ao_num - do jpoint = 1, n_points_extra_final_grid - err_loc = dabs(int_fct_long_range(jpoint,i,j) - int_fct_long_range_gpu(jpoint,i,j)) - if(err_loc > acc_thr) then - print*, " error on", jpoint, i, j - print*, " CPU res", int_fct_long_range (jpoint,i,j) - print*, " GPU res", int_fct_long_range_gpu(jpoint,i,j) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(int_fct_long_range(jpoint,i,j)) - enddo - enddo - enddo - - print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - deallocate(int_fct_long_range) - deallocate(int_fct_long_range_gpu) - - call wall_time(time1) - print*, ' wall time for deb_int_long_range_gpu (min) = ', (time1-time0) / 60.d0 - - return -end - -! --- - -subroutine deb_int_bh_kernel_gpu() - - use gpu_module - - implicit none - - integer :: m - integer :: ipoint, jpoint - - integer :: nBlocks, blockSize - - double precision :: acc_thr, err_tot, nrm_tot, err_loc - - double precision :: time0, time1 - double precision :: cuda_time0, cuda_time1 - double precision :: cpu_time0, cpu_time1 - - double precision, allocatable :: r1(:,:), r2(:,:) - double precision, allocatable :: grad1_u12(:,:,:) - double precision, allocatable :: grad1_u12_gpu(:,:,:) - - - - call wall_time(time0) - print*, ' start deb_int_bh_kernel_gpu' - - - ! --- - - allocate(r1(n_points_final_grid,3)) - allocate(r2(n_points_extra_final_grid,3)) - - do ipoint = 1, n_points_final_grid - r1(ipoint,1) = final_grid_points(1,ipoint) - r1(ipoint,2) = final_grid_points(2,ipoint) - r1(ipoint,3) = final_grid_points(3,ipoint) - enddo - - do ipoint = 1, n_points_extra_final_grid - r2(ipoint,1) = final_grid_points_extra(1,ipoint) - r2(ipoint,2) = final_grid_points_extra(2,ipoint) - r2(ipoint,3) = final_grid_points_extra(3,ipoint) - enddo - - ! --- - - nBlocks = 256 - blockSize = 32 - - allocate(grad1_u12_gpu(n_points_extra_final_grid,n_points_final_grid,4)) - - call wall_time(cuda_time0) - - call deb_int_bh_kernel(nBlocks, blockSize, & - n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & - r1, r2, nucl_coord, jBH_c, jBH_m, jBH_n, jBH_o, & - grad1_u12_gpu) - - call wall_time(cuda_time1) - print*, ' wall time for CUDA kernel (min) = ', (cuda_time1-cuda_time0) / 60.d0 - - ! --- - - allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) - - call wall_time(cpu_time0) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) - !$OMP DO - do ipoint = 1, n_points_final_grid - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & - , grad1_u12(1,ipoint,2) & - , grad1_u12(1,ipoint,3) & - , grad1_u12(1,ipoint,4) ) - enddo - !$OMP END DO - !$OMP END PARALLEL - - call wall_time(cpu_time1) - print*, ' wall time on CPU (min) = ', (cpu_time1-cpu_time0) / 60.d0 - - ! --- - - acc_thr = 1d-12 - err_tot = 0.d0 - nrm_tot = 0.d0 - - do m = 1, 4 - do ipoint = 1, n_points_final_grid - do jpoint = 1, n_points_extra_final_grid - err_loc = dabs(grad1_u12(jpoint,ipoint,m) - grad1_u12_gpu(jpoint,ipoint,m)) - if(err_loc > acc_thr) then - print*, " error on", jpoint, ipoint, m - print*, " CPU res", grad1_u12 (jpoint,ipoint,m) - print*, " GPU res", grad1_u12_gpu(jpoint,ipoint,m) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(grad1_u12(jpoint,ipoint,m)) - enddo - enddo - enddo - - print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - deallocate(r1, r2) - deallocate(grad1_u12) - deallocate(grad1_u12_gpu) - - call wall_time(time1) - print*, ' wall time for deb_int_bh_kernel_gpu (min) = ', (time1-time0) / 60.d0 - - return -end - -! --- - subroutine deb_int2_grad1_u12_ao_gpu() use gpu_module @@ -295,15 +53,14 @@ subroutine deb_int2_grad1_u12_ao_gpu() integer :: i, j, k integer :: ipoint, jpoint - integer :: nBlocks, blockSize - double precision :: acc_thr, err_tot, nrm_tot, err_loc double precision :: time0, time1 double precision :: cuda_time0, cuda_time1 double precision :: cpu_time0, cpu_time1 + double precision :: cpu_ttime0, cpu_ttime1 - double precision, allocatable :: r1(:,:), r2(:,:), aos_data2(:,:,:) + double precision, allocatable :: r1(:,:), r2(:,:), rn(:,:), aos_data2(:,:,:) double precision, allocatable :: grad1_u12(:,:,:), int_fct_long_range(:,:,:) double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) double precision, allocatable :: int2_grad1_u12_ao_gpu(:,:,:,:) @@ -318,6 +75,7 @@ subroutine deb_int2_grad1_u12_ao_gpu() allocate(r1(n_points_final_grid,3)) allocate(r2(n_points_extra_final_grid,3)) + allocate(rn(3,nucl_num)) allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) do ipoint = 1, n_points_final_grid @@ -332,6 +90,12 @@ subroutine deb_int2_grad1_u12_ao_gpu() r2(ipoint,3) = final_grid_points_extra(3,ipoint) enddo + do k = 1, nucl_num + rn(1,k) = nucl_coord(k,1) + rn(2,k) = nucl_coord(k,2) + rn(3,k) = nucl_coord(k,3) + enddo + do k = 1, ao_num do ipoint = 1, n_points_extra_final_grid aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) @@ -343,20 +107,21 @@ subroutine deb_int2_grad1_u12_ao_gpu() ! --- - nBlocks = 256 - blockSize = 32 + PROVIDE nxBlocks nyBlocks nzBlocks + PROVIDE blockxSize blockySize blockzSize allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,4)) call wall_time(cuda_time0) - call deb_int2_grad1_u12_ao(nBlocks, blockSize, & - n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & - r1, r2, final_weight_at_r_vector_extra, nucl_coord, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & + call deb_int2_grad1_u12_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & + n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & + final_grid_points, final_grid_points_extra, final_weight_at_r_vector_extra, rn, & + aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & int2_grad1_u12_ao_gpu) call wall_time(cuda_time1) - print*, ' wall time for CUDA kernel (min) = ', (cuda_time1-cuda_time0) / 60.d0 + write(*,"(A,2X,F15.7)") ' wall time for CUDA kernel (sec) = ', (cuda_time1 - cuda_time0) ! --- @@ -367,6 +132,7 @@ subroutine deb_int2_grad1_u12_ao_gpu() call wall_time(cpu_time0) + call wall_time(cpu_ttime0) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (j, i, jpoint) & @@ -381,8 +147,11 @@ subroutine deb_int2_grad1_u12_ao_gpu() enddo !$OMP END DO !$OMP END PARALLEL + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (cpu_ttime1 - cpu_ttime0) + call wall_time(cpu_ttime0) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (ipoint) & @@ -396,15 +165,21 @@ subroutine deb_int2_grad1_u12_ao_gpu() enddo !$OMP END DO !$OMP END PARALLEL + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (cpu_ttime1 - cpu_ttime0) + + call wall_time(cpu_ttime0) do m = 1, 4 call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) enddo + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for DGEMM (sec) = ', (cpu_ttime1 - cpu_ttime0) call wall_time(cpu_time1) - print*, ' wall time on CPU (min) = ', (cpu_time1-cpu_time0) / 60.d0 + write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (cpu_time1 - cpu_time0) ! --- @@ -434,13 +209,13 @@ subroutine deb_int2_grad1_u12_ao_gpu() ! --- - deallocate(r1, r2, aos_data2) + deallocate(r1, r2, rn, aos_data2) deallocate(int_fct_long_range, grad1_u12) deallocate(int2_grad1_u12_ao) deallocate(int2_grad1_u12_ao_gpu) call wall_time(time1) - print*, ' wall time for deb_int2_grad1_u12_ao_gpu (min) = ', (time1-time0) / 60.d0 + write(*,"(A,2X,F15.7)") ' wall time for deb_int2_grad1_u12_ao_gpu (sec) = ', (time1 - time0) return end diff --git a/plugins/local/tc_int/gpu_module.F90 b/plugins/local/tc_int/gpu_module.F90 index f625e57d..1f07a2ea 100644 --- a/plugins/local/tc_int/gpu_module.F90 +++ b/plugins/local/tc_int/gpu_module.F90 @@ -38,61 +38,23 @@ module gpu_module ! --- - subroutine deb_int_long_range(nBlocks, blockSize, & - n_grid2, n_ao, wr2, aos_data2, & - int_fct_long_range) bind(C, name = "deb_int_long_range") - - import c_int, c_double - integer(c_int), intent(in), value :: nBlocks, blockSize - integer(c_int), intent(in), value :: n_grid2 - integer(c_int), intent(in), value :: n_ao - real(c_double), intent(in) :: wr2(n_grid2) - real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4) - real(c_double), intent(out) :: int_fct_long_range(n_grid2,n_ao,n_ao) - - end subroutine deb_int_long_range - - ! --- - - subroutine deb_int_bh_kernel(nBlocks, blockSize, & - n_grid1, n_grid2, n_ao, n_nuc, size_bh, & - r1, r2, rn, c_bh, m_bh, n_bh, o_bh, & - grad1_u12) bind(C, name = "deb_int_bh_kernel") + subroutine deb_int2_grad1_u12_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & + n_grid1, n_grid2, n_ao, n_nuc, size_bh, & + r1, r2, wr2, rn, aos_data2, c_bh, m_bh, n_bh, o_bh, & + int2_grad1_u12_ao) bind(C, name ="deb_int2_grad1_u12_ao") import c_int, c_double, c_ptr - integer(c_int), intent(in), value :: nBlocks, blockSize + integer(c_int), intent(in), value :: nxBlocks, blockxSize + integer(c_int), intent(in), value :: nyBlocks, blockySize + integer(c_int), intent(in), value :: nzBlocks, blockzSize integer(c_int), intent(in), value :: n_grid1, n_grid2 integer(c_int), intent(in), value :: n_ao integer(c_int), intent(in), value :: n_nuc integer(c_int), intent(in), value :: size_bh - real(c_double), intent(in) :: r1(n_grid1,3) - real(c_double), intent(in) :: r2(n_grid2,3) - real(c_double), intent(in) :: rn(n_nuc,3) - real(c_double), intent(in) :: c_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) - real(c_double), intent(out) :: grad1_u12(n_grid2,n_grid1,4) - - end subroutine deb_int_bh_kernel - - ! --- - - subroutine deb_int2_grad1_u12_ao(nBlocks, blockSize, & - n_grid1, n_grid2, n_ao, n_nuc, size_bh, & - r1, r2, wr2, rn, aos_data2, c_bh, m_bh, n_bh, o_bh, & - int2_grad1_u12_ao) bind(C, name ="deb_int2_grad1_u12_ao") - - import c_int, c_double, c_ptr - integer(c_int), intent(in), value :: nBlocks, blockSize - integer(c_int), intent(in), value :: n_grid1, n_grid2 - integer(c_int), intent(in), value :: n_ao - integer(c_int), intent(in), value :: n_nuc - integer(c_int), intent(in), value :: size_bh - real(c_double), intent(in) :: r1(n_grid1,3) - real(c_double), intent(in) :: r2(n_grid2,3) + real(c_double), intent(in) :: r1(3,n_grid1) + real(c_double), intent(in) :: r2(3,n_grid2) real(c_double), intent(in) :: wr2(n_grid2) - real(c_double), intent(in) :: rn(n_nuc,3) + real(c_double), intent(in) :: rn(3,n_nuc) real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4) real(c_double), intent(in) :: c_bh(size_bh,n_nuc) integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) From 76ec02812e983d3cd04a63511bfe439b707e0082 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Fri, 2 Aug 2024 12:19:05 +0200 Subject: [PATCH 136/159] fix nb of blocks autom --- plugins/local/tc_int/deb_tc_int_cuda.irp.f | 189 +++++++++++---------- 1 file changed, 99 insertions(+), 90 deletions(-) diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f index a7b5b125..f888d792 100644 --- a/plugins/local/tc_int/deb_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/deb_tc_int_cuda.irp.f @@ -107,9 +107,18 @@ subroutine deb_int2_grad1_u12_ao_gpu() ! --- + integer :: nB + integer :: sB + PROVIDE nxBlocks nyBlocks nzBlocks PROVIDE blockxSize blockySize blockzSize + sB = 32 + nB = (n_points_final_grid + sB - 1) / sB + + call ezfio_set_tc_int_blockxSize(sB) + call ezfio_set_tc_int_nxBlocks(nB) + allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,4)) call wall_time(cuda_time0) @@ -126,96 +135,96 @@ subroutine deb_int2_grad1_u12_ao_gpu() ! --- - allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) - allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) - - call wall_time(cpu_time0) - - call wall_time(cpu_ttime0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (j, i, jpoint) & - !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) - !$OMP DO SCHEDULE (static) - do j = 1, ao_num - do i = 1, ao_num - do jpoint = 1, n_points_extra_final_grid - int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - call wall_time(cpu_ttime0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) - !$OMP DO - do ipoint = 1, n_points_final_grid - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & - , grad1_u12(1,ipoint,2) & - , grad1_u12(1,ipoint,3) & - , grad1_u12(1,ipoint,4) ) - enddo - !$OMP END DO - !$OMP END PARALLEL - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - call wall_time(cpu_ttime0) - do m = 1, 4 - call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & - , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & - , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) - enddo - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for DGEMM (sec) = ', (cpu_ttime1 - cpu_ttime0) - - call wall_time(cpu_time1) - write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (cpu_time1 - cpu_time0) - - ! --- - - acc_thr = 1d-12 - err_tot = 0.d0 - nrm_tot = 0.d0 - - do m = 1, 4 - do ipoint = 1, n_points_final_grid - do j = 1, ao_num - do i = 1, ao_num - err_loc = dabs(int2_grad1_u12_ao(i,j,ipoint,m) - int2_grad1_u12_ao_gpu(i,j,ipoint,m)) - if(err_loc > acc_thr) then - print*, " error on", i, j, ipoint, m - print*, " CPU res", int2_grad1_u12_ao (i,j,ipoint,m) - print*, " GPU res", int2_grad1_u12_ao_gpu(i,j,ipoint,m) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(int2_grad1_u12_ao(i,j,ipoint,m)) - enddo - enddo - enddo - enddo - - print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - deallocate(r1, r2, rn, aos_data2) - deallocate(int_fct_long_range, grad1_u12) - deallocate(int2_grad1_u12_ao) - deallocate(int2_grad1_u12_ao_gpu) - - call wall_time(time1) - write(*,"(A,2X,F15.7)") ' wall time for deb_int2_grad1_u12_ao_gpu (sec) = ', (time1 - time0) +! allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) +! allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) +! allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) +! +! call wall_time(cpu_time0) +! +! call wall_time(cpu_ttime0) +! !$OMP PARALLEL & +! !$OMP DEFAULT (NONE) & +! !$OMP PRIVATE (j, i, jpoint) & +! !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) +! !$OMP DO SCHEDULE (static) +! do j = 1, ao_num +! do i = 1, ao_num +! do jpoint = 1, n_points_extra_final_grid +! int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) +! enddo +! enddo +! enddo +! !$OMP END DO +! !$OMP END PARALLEL +! call wall_time(cpu_ttime1) +! write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (cpu_ttime1 - cpu_ttime0) +! +! +! call wall_time(cpu_ttime0) +! !$OMP PARALLEL & +! !$OMP DEFAULT (NONE) & +! !$OMP PRIVATE (ipoint) & +! !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) +! !$OMP DO +! do ipoint = 1, n_points_final_grid +! call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & +! , grad1_u12(1,ipoint,2) & +! , grad1_u12(1,ipoint,3) & +! , grad1_u12(1,ipoint,4) ) +! enddo +! !$OMP END DO +! !$OMP END PARALLEL +! call wall_time(cpu_ttime1) +! write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (cpu_ttime1 - cpu_ttime0) +! +! +! call wall_time(cpu_ttime0) +! do m = 1, 4 +! call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & +! , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & +! , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) +! enddo +! call wall_time(cpu_ttime1) +! write(*,"(A,2X,F15.7)") ' wall time for DGEMM (sec) = ', (cpu_ttime1 - cpu_ttime0) +! +! call wall_time(cpu_time1) +! write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (cpu_time1 - cpu_time0) +! +! ! --- +! +! acc_thr = 1d-12 +! err_tot = 0.d0 +! nrm_tot = 0.d0 +! +! do m = 1, 4 +! do ipoint = 1, n_points_final_grid +! do j = 1, ao_num +! do i = 1, ao_num +! err_loc = dabs(int2_grad1_u12_ao(i,j,ipoint,m) - int2_grad1_u12_ao_gpu(i,j,ipoint,m)) +! if(err_loc > acc_thr) then +! print*, " error on", i, j, ipoint, m +! print*, " CPU res", int2_grad1_u12_ao (i,j,ipoint,m) +! print*, " GPU res", int2_grad1_u12_ao_gpu(i,j,ipoint,m) +! stop +! endif +! err_tot = err_tot + err_loc +! nrm_tot = nrm_tot + dabs(int2_grad1_u12_ao(i,j,ipoint,m)) +! enddo +! enddo +! enddo +! enddo +! +! print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot +! +! ! --- +! +! deallocate(r1, r2, rn, aos_data2) +! deallocate(int_fct_long_range, grad1_u12) +! deallocate(int2_grad1_u12_ao) +! deallocate(int2_grad1_u12_ao_gpu) +! +! call wall_time(time1) +! write(*,"(A,2X,F15.7)") ' wall time for deb_int2_grad1_u12_ao_gpu (sec) = ', (time1 - time0) return end From 4bd8b710a548db5efddaf79fcdb555dace58a1c6 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Fri, 2 Aug 2024 21:16:27 +0200 Subject: [PATCH 137/159] CuTC integrals: OK --- plugins/local/tc_int/compute_tc_int.irp.f | 11 +- plugins/local/tc_int/compute_tc_int_gpu.irp.f | 7 +- .../{gpu_module.F90 => cutc_module.F90} | 49 +- plugins/local/tc_int/deb_tc_int_cuda.irp.f | 487 ++++++++++++++---- plugins/local/tc_int/install | 17 + plugins/local/tc_int/uninstall | 13 + plugins/local/tc_int/write_tc_int_cuda.irp.f | 88 +--- 7 files changed, 482 insertions(+), 190 deletions(-) rename plugins/local/tc_int/{gpu_module.F90 => cutc_module.F90} (54%) create mode 100755 plugins/local/tc_int/install create mode 100755 plugins/local/tc_int/uninstall diff --git a/plugins/local/tc_int/compute_tc_int.irp.f b/plugins/local/tc_int/compute_tc_int.irp.f index 35034454..97815904 100644 --- a/plugins/local/tc_int/compute_tc_int.irp.f +++ b/plugins/local/tc_int/compute_tc_int.irp.f @@ -149,6 +149,7 @@ subroutine provide_int2_grad1_u12_ao() call wall_time(time1) print*, ' wall time for int2_grad1_u12_ao (min) = ', (time1-time0) / 60.d0 print*, ' wall time Jastrow derivatives (min) = ', tc / 60.d0 + call print_memory_usage() ! --- @@ -156,11 +157,11 @@ subroutine provide_int2_grad1_u12_ao() ! --- + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) allocate(tc_int_2e_ao(ao_num,ao_num,ao_num,ao_num)) call wall_time(time1) - allocate(c_mat(n_points_final_grid,ao_num,ao_num)) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (i, k, ipoint) & @@ -178,17 +179,16 @@ subroutine provide_int2_grad1_u12_ao() call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & , int2_grad1_u12_ao(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 0.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) - deallocate(c_mat) call wall_time(time2) print*, ' wall time of Hermitian part of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + call print_memory_usage() ! --- call wall_time(time1) - allocate(c_mat(n_points_final_grid,ao_num,ao_num)) do m = 1, 3 !$OMP PARALLEL & !$OMP DEFAULT (NONE) & @@ -215,10 +215,12 @@ subroutine provide_int2_grad1_u12_ao() , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 1.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) enddo - deallocate(c_mat) call wall_time(time2) print*, ' wall time of non-Hermitian part of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + + deallocate(c_mat) + call print_memory_usage() ! --- @@ -229,6 +231,7 @@ subroutine provide_int2_grad1_u12_ao() call wall_time(time2) print*, ' lower- and upper-triangle of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 + call print_memory_usage() ! --- diff --git a/plugins/local/tc_int/compute_tc_int_gpu.irp.f b/plugins/local/tc_int/compute_tc_int_gpu.irp.f index 5db07dd6..c2653ac6 100644 --- a/plugins/local/tc_int/compute_tc_int_gpu.irp.f +++ b/plugins/local/tc_int/compute_tc_int_gpu.irp.f @@ -178,11 +178,11 @@ stop ! --- + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) allocate(tc_int_2e_ao(ao_num,ao_num,ao_num,ao_num)) call wall_time(time1) - allocate(c_mat(n_points_final_grid,ao_num,ao_num)) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (i, k, ipoint) & @@ -200,7 +200,6 @@ stop call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & , int2_grad1_u12_ao%f(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 0.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) - deallocate(c_mat) call wall_time(time2) print*, ' wall time of Hermitian part of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 @@ -210,7 +209,6 @@ stop call wall_time(time1) - allocate(c_mat(n_points_final_grid,ao_num,ao_num)) do m = 1, 3 !$OMP PARALLEL & !$OMP DEFAULT (NONE) & @@ -237,12 +235,13 @@ stop , int2_grad1_u12_ao%f(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 1.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) enddo - deallocate(c_mat) call wall_time(time2) print*, ' wall time of non-Hermitian part of tc_int_2e_ao (min) ', (time2 - time1) / 60.d0 call print_memory_usage() + deallocate(c_mat) + ! --- call wall_time(time1) diff --git a/plugins/local/tc_int/gpu_module.F90 b/plugins/local/tc_int/cutc_module.F90 similarity index 54% rename from plugins/local/tc_int/gpu_module.F90 rename to plugins/local/tc_int/cutc_module.F90 index 1f07a2ea..69c2a131 100644 --- a/plugins/local/tc_int/gpu_module.F90 +++ b/plugins/local/tc_int/cutc_module.F90 @@ -1,5 +1,5 @@ -module gpu_module +module cutc_module use, intrinsic :: iso_c_binding @@ -9,7 +9,8 @@ module gpu_module ! --- - subroutine tc_int_c(nBlocks, blockSize, & + subroutine tc_int_c(nxBlocks, nyBlocks, nzBlocks, & + blockxSize, blockySize, blockzSize, & n_grid1, n_grid2, n_ao, n_nuc, size_bh, & r1, wr1, r2, wr2, rn, & aos_data1, aos_data2, & @@ -17,14 +18,16 @@ module gpu_module int2_grad1_u12_ao, int_2e_ao) bind(C, name = "tc_int_c") import c_int, c_double, c_ptr - integer(c_int), intent(in), value :: nBlocks, blockSize + integer(c_int), intent(in), value :: nxBlocks, blockxSize + integer(c_int), intent(in), value :: nyBlocks, blockySize + integer(c_int), intent(in), value :: nzBlocks, blockzSize integer(c_int), intent(in), value :: n_grid1, n_grid2 integer(c_int), intent(in), value :: n_ao integer(c_int), intent(in), value :: n_nuc integer(c_int), intent(in), value :: size_bh - real(c_double), intent(in) :: r1(n_grid1,3), wr1(n_grid1) - real(c_double), intent(in) :: r2(n_grid2,3), wr2(n_grid2) - real(c_double), intent(in) :: rn(n_nuc,3) + real(c_double), intent(in) :: r1(3,n_grid1), wr1(n_grid1) + real(c_double), intent(in) :: r2(3,n_grid2), wr2(n_grid2) + real(c_double), intent(in) :: rn(3,n_nuc) real(c_double), intent(in) :: aos_data1(n_grid1,n_ao,4) real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4) real(c_double), intent(in) :: c_bh(size_bh,n_nuc) @@ -66,8 +69,40 @@ module gpu_module ! --- + subroutine deb_int_2e_ao(nxBlocks, nyBlocks, nzBlocks, & + blockxSize, blockySize, blockzSize, & + n_grid1, n_grid2, n_ao, n_nuc, size_bh, & + r1, wr1, r2, wr2, rn, & + aos_data1, aos_data2, & + c_bh, m_bh, n_bh, o_bh, & + int2_grad1_u12_ao, int_2e_ao) bind(C, name = "deb_int_2e_ao") + + import c_int, c_double, c_ptr + integer(c_int), intent(in), value :: nxBlocks, blockxSize + integer(c_int), intent(in), value :: nyBlocks, blockySize + integer(c_int), intent(in), value :: nzBlocks, blockzSize + integer(c_int), intent(in), value :: n_grid1, n_grid2 + integer(c_int), intent(in), value :: n_ao + integer(c_int), intent(in), value :: n_nuc + integer(c_int), intent(in), value :: size_bh + real(c_double), intent(in) :: r1(3,n_grid1), wr1(n_grid1) + real(c_double), intent(in) :: r2(3,n_grid2), wr2(n_grid2) + real(c_double), intent(in) :: rn(3,n_nuc) + real(c_double), intent(in) :: aos_data1(n_grid1,n_ao,4) + real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4) + real(c_double), intent(in) :: c_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) + integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) + real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,4) + real(c_double), intent(out) :: int_2e_ao(n_ao,n_ao,n_ao,n_ao) + + end subroutine deb_int_2e_ao + + ! --- + end interface -end module gpu_module +end module cutc_module diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f index f888d792..2c4e975b 100644 --- a/plugins/local/tc_int/deb_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/deb_tc_int_cuda.irp.f @@ -36,7 +36,8 @@ subroutine main() implicit none - call deb_int2_grad1_u12_ao_gpu() + !call deb_int2_grad1_u12_ao_gpu() + call deb_int_2e_ao_gpu() return end @@ -45,7 +46,7 @@ end subroutine deb_int2_grad1_u12_ao_gpu() - use gpu_module + use cutc_module implicit none @@ -56,11 +57,10 @@ subroutine deb_int2_grad1_u12_ao_gpu() double precision :: acc_thr, err_tot, nrm_tot, err_loc double precision :: time0, time1 - double precision :: cuda_time0, cuda_time1 double precision :: cpu_time0, cpu_time1 double precision :: cpu_ttime0, cpu_ttime1 - double precision, allocatable :: r1(:,:), r2(:,:), rn(:,:), aos_data2(:,:,:) + double precision, allocatable :: rn(:,:), aos_data2(:,:,:) double precision, allocatable :: grad1_u12(:,:,:), int_fct_long_range(:,:,:) double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) double precision, allocatable :: int2_grad1_u12_ao_gpu(:,:,:,:) @@ -73,23 +73,9 @@ subroutine deb_int2_grad1_u12_ao_gpu() ! --- - allocate(r1(n_points_final_grid,3)) - allocate(r2(n_points_extra_final_grid,3)) allocate(rn(3,nucl_num)) allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) - do ipoint = 1, n_points_final_grid - r1(ipoint,1) = final_grid_points(1,ipoint) - r1(ipoint,2) = final_grid_points(2,ipoint) - r1(ipoint,3) = final_grid_points(3,ipoint) - enddo - - do ipoint = 1, n_points_extra_final_grid - r2(ipoint,1) = final_grid_points_extra(1,ipoint) - r2(ipoint,2) = final_grid_points_extra(2,ipoint) - r2(ipoint,3) = final_grid_points_extra(3,ipoint) - enddo - do k = 1, nucl_num rn(1,k) = nucl_coord(k,1) rn(2,k) = nucl_coord(k,2) @@ -121,110 +107,387 @@ subroutine deb_int2_grad1_u12_ao_gpu() allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,4)) - call wall_time(cuda_time0) - call deb_int2_grad1_u12_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & final_grid_points, final_grid_points_extra, final_weight_at_r_vector_extra, rn, & aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & int2_grad1_u12_ao_gpu) - call wall_time(cuda_time1) - write(*,"(A,2X,F15.7)") ' wall time for CUDA kernel (sec) = ', (cuda_time1 - cuda_time0) + ! --- + + allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) + allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + + call wall_time(cpu_time0) + + call wall_time(cpu_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO SCHEDULE (static) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (cpu_ttime1 - cpu_ttime0) + + + call wall_time(cpu_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) + !$OMP DO + do ipoint = 1, n_points_final_grid + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & + , grad1_u12(1,ipoint,2) & + , grad1_u12(1,ipoint,3) & + , grad1_u12(1,ipoint,4) ) + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (cpu_ttime1 - cpu_ttime0) + + + call wall_time(cpu_ttime0) + do m = 1, 4 + call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & + , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) + enddo + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for DGEMM (sec) = ', (cpu_ttime1 - cpu_ttime0) + + call wall_time(cpu_time1) + write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (cpu_time1 - cpu_time0) ! --- + acc_thr = 1d-12 + err_tot = 0.d0 + nrm_tot = 0.d0 -! allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) -! allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) -! allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) -! -! call wall_time(cpu_time0) -! -! call wall_time(cpu_ttime0) -! !$OMP PARALLEL & -! !$OMP DEFAULT (NONE) & -! !$OMP PRIVATE (j, i, jpoint) & -! !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) -! !$OMP DO SCHEDULE (static) -! do j = 1, ao_num -! do i = 1, ao_num -! do jpoint = 1, n_points_extra_final_grid -! int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) -! enddo -! enddo -! enddo -! !$OMP END DO -! !$OMP END PARALLEL -! call wall_time(cpu_ttime1) -! write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (cpu_ttime1 - cpu_ttime0) -! -! -! call wall_time(cpu_ttime0) -! !$OMP PARALLEL & -! !$OMP DEFAULT (NONE) & -! !$OMP PRIVATE (ipoint) & -! !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) -! !$OMP DO -! do ipoint = 1, n_points_final_grid -! call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & -! , grad1_u12(1,ipoint,2) & -! , grad1_u12(1,ipoint,3) & -! , grad1_u12(1,ipoint,4) ) -! enddo -! !$OMP END DO -! !$OMP END PARALLEL -! call wall_time(cpu_ttime1) -! write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (cpu_ttime1 - cpu_ttime0) -! -! -! call wall_time(cpu_ttime0) -! do m = 1, 4 -! call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & -! , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & -! , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) -! enddo -! call wall_time(cpu_ttime1) -! write(*,"(A,2X,F15.7)") ' wall time for DGEMM (sec) = ', (cpu_ttime1 - cpu_ttime0) -! -! call wall_time(cpu_time1) -! write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (cpu_time1 - cpu_time0) -! -! ! --- -! -! acc_thr = 1d-12 -! err_tot = 0.d0 -! nrm_tot = 0.d0 -! -! do m = 1, 4 -! do ipoint = 1, n_points_final_grid -! do j = 1, ao_num -! do i = 1, ao_num -! err_loc = dabs(int2_grad1_u12_ao(i,j,ipoint,m) - int2_grad1_u12_ao_gpu(i,j,ipoint,m)) -! if(err_loc > acc_thr) then -! print*, " error on", i, j, ipoint, m -! print*, " CPU res", int2_grad1_u12_ao (i,j,ipoint,m) -! print*, " GPU res", int2_grad1_u12_ao_gpu(i,j,ipoint,m) -! stop -! endif -! err_tot = err_tot + err_loc -! nrm_tot = nrm_tot + dabs(int2_grad1_u12_ao(i,j,ipoint,m)) -! enddo -! enddo -! enddo -! enddo -! -! print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot -! -! ! --- -! -! deallocate(r1, r2, rn, aos_data2) -! deallocate(int_fct_long_range, grad1_u12) -! deallocate(int2_grad1_u12_ao) -! deallocate(int2_grad1_u12_ao_gpu) -! -! call wall_time(time1) -! write(*,"(A,2X,F15.7)") ' wall time for deb_int2_grad1_u12_ao_gpu (sec) = ', (time1 - time0) + do m = 1, 4 + do ipoint = 1, n_points_final_grid + do j = 1, ao_num + do i = 1, ao_num + err_loc = dabs(int2_grad1_u12_ao(i,j,ipoint,m) - int2_grad1_u12_ao_gpu(i,j,ipoint,m)) + if(err_loc > acc_thr) then + print*, " error on", i, j, ipoint, m + print*, " CPU res", int2_grad1_u12_ao (i,j,ipoint,m) + print*, " GPU res", int2_grad1_u12_ao_gpu(i,j,ipoint,m) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(int2_grad1_u12_ao(i,j,ipoint,m)) + enddo + enddo + enddo + enddo + + print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + deallocate(int_fct_long_range, grad1_u12) + deallocate(int2_grad1_u12_ao) + deallocate(int2_grad1_u12_ao_gpu) + deallocate(rn, aos_data2) + + call wall_time(time1) + write(*,"(A,2X,F15.7)") ' wall time for deb_int2_grad1_u12_ao_gpu (sec) = ', (time1 - time0) + + return +end + +! --- + +subroutine deb_int_2e_ao_gpu() + + use cutc_module + + implicit none + + integer :: m + integer :: i, j, k, l + integer :: ipoint, jpoint + + double precision :: weight1, ao_i_r, ao_k_r + + double precision :: acc_thr, err_tot, nrm_tot, err_loc + + double precision :: time0, time1 + double precision :: cpu_time0, cpu_time1 + double precision :: cpu_ttime0, cpu_ttime1 + double precision :: tt1, tt2 + + double precision, allocatable :: rn(:,:), aos_data1(:,:,:), aos_data2(:,:,:) + double precision, allocatable :: grad1_u12(:,:,:), int_fct_long_range(:,:,:), c_mat(:,:,:) + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: int2_grad1_u12_ao_gpu(:,:,:,:) + double precision, allocatable :: int_2e_ao(:,:,:,:) + double precision, allocatable :: int_2e_ao_gpu(:,:,:,:) + + + + call wall_time(time0) + print*, ' start deb_int_2e_ao_gpu' + + + ! --- + + allocate(rn(3,nucl_num)) + allocate(aos_data1(n_points_final_grid,ao_num,4)) + allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) + + do k = 1, nucl_num + rn(1,k) = nucl_coord(k,1) + rn(2,k) = nucl_coord(k,2) + rn(3,k) = nucl_coord(k,3) + enddo + + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + aos_data1(ipoint,k,1) = aos_in_r_array(k,ipoint) + aos_data1(ipoint,k,2) = aos_grad_in_r_array(k,ipoint,1) + aos_data1(ipoint,k,3) = aos_grad_in_r_array(k,ipoint,2) + aos_data1(ipoint,k,4) = aos_grad_in_r_array(k,ipoint,3) + enddo + enddo + + do k = 1, ao_num + do ipoint = 1, n_points_extra_final_grid + aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) + aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) + aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) + aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) + enddo + enddo + + ! --- + + integer :: nB + integer :: sB + + PROVIDE nxBlocks nyBlocks nzBlocks + PROVIDE blockxSize blockySize blockzSize + + sB = 32 + nB = (n_points_final_grid + sB - 1) / sB + + call ezfio_set_tc_int_blockxSize(sB) + call ezfio_set_tc_int_nxBlocks(nB) + + allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,4)) + allocate(int_2e_ao_gpu(ao_num,ao_num,ao_num,ao_num)) + + call deb_int_2e_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & + n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & + final_grid_points, final_weight_at_r_vector, & + final_grid_points_extra, final_weight_at_r_vector_extra, & + rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & + int2_grad1_u12_ao_gpu, int_2e_ao_gpu) + + ! --- + + allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) + allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + allocate(int_2e_ao(ao_num,ao_num,ao_num,ao_num)) + + call wall_time(cpu_time0) + + call wall_time(cpu_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO SCHEDULE (static) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (cpu_ttime1 - cpu_ttime0) + + + call wall_time(cpu_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) + !$OMP DO + do ipoint = 1, n_points_final_grid + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & + , grad1_u12(1,ipoint,2) & + , grad1_u12(1,ipoint,3) & + , grad1_u12(1,ipoint,4) ) + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (cpu_ttime1 - cpu_ttime0) + + + call wall_time(cpu_ttime0) + do m = 1, 4 + call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & + , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) + enddo + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for DGEMM of integ over r2 (sec) = ', (cpu_ttime1 - cpu_ttime0) + + + call wall_time(cpu_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint) & + !$OMP SHARED (aos_in_r_array_transp, c_mat, ao_num, n_points_final_grid, final_weight_at_r_vector) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + c_mat(ipoint,k,i) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,k) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time of Hermitian part (sec) = ', (cpu_ttime1 - cpu_ttime0) + + + call wall_time(cpu_ttime0) + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & + , int2_grad1_u12_ao(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 0.d0, int_2e_ao(1,1,1,1), ao_num*ao_num) + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for DGEMM of Hermitian part (sec) = ', (cpu_ttime1 - cpu_ttime0) + + + tt1 = 0.d0 + tt2 = 0.d0 + do m = 1, 3 + + call wall_time(cpu_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & + !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, c_mat, & + !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector, m) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + + weight1 = final_weight_at_r_vector(ipoint) + ao_i_r = aos_in_r_array_transp(ipoint,i) + ao_k_r = aos_in_r_array_transp(ipoint,k) + + c_mat(ipoint,k,i) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,m) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,m)) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(cpu_ttime1) + tt1 += cpu_ttime1 - cpu_ttime0 + + call wall_time(cpu_ttime0) + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -0.5d0 & + , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 1.d0, int_2e_ao(1,1,1,1), ao_num*ao_num) + call wall_time(cpu_ttime1) + tt2 += cpu_ttime1 - cpu_ttime0 + enddo + write(*,"(A,2X,F15.7)") ' wall time of non-Hermitian part (sec) = ', tt1 + write(*,"(A,2X,F15.7)") ' wall time for DGEMM of non Hermitian part (sec) = ', tt2 + + + call wall_time(cpu_ttime0) + call sum_A_At(int_2e_ao(1,1,1,1), ao_num*ao_num) + call wall_time(cpu_ttime1) + write(*,"(A,2X,F15.7)") ' wall time of A + A.T (sec) = ', cpu_ttime1 - cpu_ttime0 + + + call wall_time(cpu_time1) + write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (cpu_time1 - cpu_time0) + + ! --- + + acc_thr = 1d-12 + + print *, ' precision on int2_grad1_u12_ao ' + err_tot = 0.d0 + nrm_tot = 0.d0 + do m = 1, 4 + do ipoint = 1, n_points_final_grid + do j = 1, ao_num + do i = 1, ao_num + err_loc = dabs(int2_grad1_u12_ao(i,j,ipoint,m) - int2_grad1_u12_ao_gpu(i,j,ipoint,m)) + if(err_loc > acc_thr) then + print*, " error on", i, j, ipoint, m + print*, " CPU res", int2_grad1_u12_ao (i,j,ipoint,m) + print*, " GPU res", int2_grad1_u12_ao_gpu(i,j,ipoint,m) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(int2_grad1_u12_ao(i,j,ipoint,m)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on int2_grad1_u12_ao (%) =', 100.d0 * err_tot / nrm_tot + + + print *, ' precision on int_2e_ao ' + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, ao_num + do j = 1, ao_num + do k = 1, ao_num + do l = 1, ao_num + err_loc = dabs(int_2e_ao(l,k,j,i) - int_2e_ao_gpu(l,k,j,i)) + if(err_loc > acc_thr) then + print*, " error on", l, k, j, i + print*, " CPU res", int_2e_ao (l,k,j,i) + print*, " GPU res", int_2e_ao_gpu(l,k,j,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(int_2e_ao(l,k,j,i)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on int_2e_ao (%) =', 100.d0 * err_tot / nrm_tot + + + ! --- + + deallocate(int_fct_long_range, grad1_u12, c_mat) + deallocate(int_2e_ao, int2_grad1_u12_ao) + deallocate(int_2e_ao_gpu, int2_grad1_u12_ao_gpu) + deallocate(rn, aos_data1, aos_data2) + + call wall_time(time1) + write(*,"(A,2X,F15.7)") ' wall time for deb_int_2e_ao_gpu (sec) = ', (time1 - time0) return end diff --git a/plugins/local/tc_int/install b/plugins/local/tc_int/install new file mode 100755 index 00000000..9d1886f0 --- /dev/null +++ b/plugins/local/tc_int/install @@ -0,0 +1,17 @@ +#!/bin/bash + +# Check if the QP_ROOT environment variable is set. +if [[ -z ${QP_ROOT} ]] +then + print "The QP_ROOT environment variable is not set." + print "Please reload the quantum_package.rc file." + exit -1 +fi + +git clone https://github.com/AbdAmmar/CuTC +cd CuTC +source config/env.rc +make + +ln -s ${PWD}/CuTC/build/libtc_int_cu.so ${QP_ROOT}/lib + diff --git a/plugins/local/tc_int/uninstall b/plugins/local/tc_int/uninstall new file mode 100755 index 00000000..3dd3612c --- /dev/null +++ b/plugins/local/tc_int/uninstall @@ -0,0 +1,13 @@ +#!/bin/bash + +# Check if the QP_ROOT environment variable is set. +if [[ -z ${QP_ROOT} ]] +then + print "The QP_ROOT environment variable is not set." + print "Please reload the quantum_package.rc file." + exit -1 +fi + +rm -rf ${PWD}/CuTC +rm ${QP_ROOT}/lib/libtc_int_cu.so + diff --git a/plugins/local/tc_int/write_tc_int_cuda.irp.f b/plugins/local/tc_int/write_tc_int_cuda.irp.f index de3be412..bc1a118d 100644 --- a/plugins/local/tc_int/write_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/write_tc_int_cuda.irp.f @@ -56,21 +56,13 @@ end subroutine do_work_on_gpu() - use gpu_module + use cutc_module implicit none integer :: k, ipoint - integer :: nBlocks, blockSize - integer :: n_grid1, n_grid2 - integer :: n_ao - integer :: n_nuc - integer :: size_bh - double precision, allocatable :: r1(:,:), wr1(:), r2(:,:), wr2(:), rn(:,:) double precision, allocatable :: aos_data1(:,:,:), aos_data2(:,:,:) - double precision, allocatable :: c_bh(:,:) - integer, allocatable :: m_bh(:,:), n_bh(:,:), o_bh(:,:) double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) double precision, allocatable :: int_2e_ao(:,:,:,:) @@ -80,47 +72,11 @@ subroutine do_work_on_gpu() call wall_time(time0) print*, ' start calculation of TC-integrals' - nBlocks = 100 - blockSize = 32 + allocate(aos_data1(n_points_final_grid,ao_num,4)) + allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + allocate(int_2e_ao(ao_num,ao_num,ao_num,ao_num)) - n_grid1 = n_points_final_grid - n_grid2 = n_points_extra_final_grid - - n_ao = ao_num - n_nuc = nucl_num - - size_bh = jBH_size - - print*, " nBlocks =", nBlocks - print*, " blockSize =", blockSize - print*, " n_grid1 =", n_grid1 - print*, " n_grid2 =", n_grid2 - print*, " n_ao =", n_ao - print*, " n_nuc =", n_nuc - print *, " size_bh =", size_bh - - allocate(r1(n_grid1,3), wr1(n_grid1)) - allocate(r2(n_grid2,3), wr2(n_grid2)) - allocate(rn(n_nuc,3)) - allocate(aos_data1(n_grid1,n_ao,4)) - allocate(aos_data2(n_grid2,n_ao,4)) - allocate(c_bh(size_bh,n_nuc), m_bh(size_bh,n_nuc), n_bh(size_bh,n_nuc), o_bh(size_bh,n_nuc)) - allocate(int2_grad1_u12_ao(n_ao,n_ao,n_grid1,4)) - allocate(int_2e_ao(n_ao,n_ao,n_ao,n_ao)) - - do ipoint = 1, n_points_final_grid - r1(ipoint,1) = final_grid_points(1,ipoint) - r1(ipoint,2) = final_grid_points(2,ipoint) - r1(ipoint,3) = final_grid_points(3,ipoint) - wr1(ipoint) = final_weight_at_r_vector(ipoint) - enddo - - do ipoint = 1, n_points_extra_final_grid - r2(ipoint,1) = final_grid_points_extra(1,ipoint) - r2(ipoint,2) = final_grid_points_extra(2,ipoint) - r2(ipoint,3) = final_grid_points_extra(3,ipoint) - wr2(ipoint) = final_weight_at_r_vector_extra(ipoint) - enddo do k = 1, ao_num do ipoint = 1, n_points_final_grid @@ -138,31 +94,37 @@ subroutine do_work_on_gpu() enddo enddo - rn(:,:) = nucl_coord(:,:) + ! --- + + integer :: nB + integer :: sB + + PROVIDE nxBlocks nyBlocks nzBlocks + PROVIDE blockxSize blockySize blockzSize + + sB = 32 + nB = (n_points_final_grid + sB - 1) / sB + + call ezfio_set_tc_int_blockxSize(sB) + call ezfio_set_tc_int_nxBlocks(nB) + - c_bh(:,:) = jBH_c(:,:) - m_bh(:,:) = jBH_m(:,:) - n_bh(:,:) = jBH_n(:,:) - o_bh(:,:) = jBH_o(:,:) call wall_time(cuda_time0) print*, ' start CUDA kernel' - int2_grad1_u12_ao = 0.d0 - int_2e_ao = 0.d0 - - call tc_int_c(nBlocks, blockSize, & - n_grid1, n_grid2, n_ao, n_nuc, size_bh, & - r1, wr1, r2, wr2, rn, aos_data1, aos_data2, & - c_bh, m_bh, n_bh, o_bh, & + call tc_int_c(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & + n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & + final_grid_points, final_weight_at_r_vector, & + final_grid_points_extra, final_weight_at_r_vector_extra, & + nucl_coord, aos_data1, aos_data2, & + jBH_c, jBH_m, jBH_n, jBH_o, & int2_grad1_u12_ao, int_2e_ao) call wall_time(cuda_time1) print*, ' wall time for CUDA kernel (min) = ', (cuda_time1-cuda_time0) / 60.d0 - deallocate(r1, wr1, r2, wr2, rn) deallocate(aos_data1, aos_data2) - deallocate(c_bh, m_bh, n_bh, o_bh) ! --- From 8e0fe19ab4061467533d93d2aba90768eaea23b4 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Sat, 3 Aug 2024 12:32:35 +0200 Subject: [PATCH 138/159] fixed path for install --- plugins/local/tc_int/install | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/local/tc_int/install b/plugins/local/tc_int/install index 9d1886f0..34e56b4a 100755 --- a/plugins/local/tc_int/install +++ b/plugins/local/tc_int/install @@ -12,6 +12,7 @@ git clone https://github.com/AbdAmmar/CuTC cd CuTC source config/env.rc make +cd .. ln -s ${PWD}/CuTC/build/libtc_int_cu.so ${QP_ROOT}/lib From c4b19af2ecfbb049a8b5db5e3cc5546dc109932f Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Sat, 3 Aug 2024 18:08:23 +0200 Subject: [PATCH 139/159] cuda tc-integrals tested --- plugins/local/tc_int/EZFIO.cfg | 4 +- plugins/local/tc_int/cutc_module.F90 | 28 --- plugins/local/tc_int/deb_tc_int_cuda.irp.f | 184 ++----------------- plugins/local/tc_int/write_tc_int_cuda.irp.f | 41 ++++- 4 files changed, 56 insertions(+), 201 deletions(-) diff --git a/plugins/local/tc_int/EZFIO.cfg b/plugins/local/tc_int/EZFIO.cfg index 12366f01..5615ce4b 100644 --- a/plugins/local/tc_int/EZFIO.cfg +++ b/plugins/local/tc_int/EZFIO.cfg @@ -8,7 +8,7 @@ default: 10 type: integer doc: nb of y blocks in the Grid interface: ezfio,provider,ocaml -default: 10 +default: 1 [nzBlocks] type: integer @@ -26,7 +26,7 @@ default: 32 type: integer doc: size of y blocks interface: ezfio,provider,ocaml -default: 32 +default: 1 [blockzSize] type: integer diff --git a/plugins/local/tc_int/cutc_module.F90 b/plugins/local/tc_int/cutc_module.F90 index 69c2a131..b96c1bef 100644 --- a/plugins/local/tc_int/cutc_module.F90 +++ b/plugins/local/tc_int/cutc_module.F90 @@ -41,34 +41,6 @@ module cutc_module ! --- - subroutine deb_int2_grad1_u12_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & - n_grid1, n_grid2, n_ao, n_nuc, size_bh, & - r1, r2, wr2, rn, aos_data2, c_bh, m_bh, n_bh, o_bh, & - int2_grad1_u12_ao) bind(C, name ="deb_int2_grad1_u12_ao") - - import c_int, c_double, c_ptr - integer(c_int), intent(in), value :: nxBlocks, blockxSize - integer(c_int), intent(in), value :: nyBlocks, blockySize - integer(c_int), intent(in), value :: nzBlocks, blockzSize - integer(c_int), intent(in), value :: n_grid1, n_grid2 - integer(c_int), intent(in), value :: n_ao - integer(c_int), intent(in), value :: n_nuc - integer(c_int), intent(in), value :: size_bh - real(c_double), intent(in) :: r1(3,n_grid1) - real(c_double), intent(in) :: r2(3,n_grid2) - real(c_double), intent(in) :: wr2(n_grid2) - real(c_double), intent(in) :: rn(3,n_nuc) - real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4) - real(c_double), intent(in) :: c_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) - real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,4) - - end subroutine deb_int2_grad1_u12_ao - - ! --- - subroutine deb_int_2e_ao(nxBlocks, nyBlocks, nzBlocks, & blockxSize, blockySize, blockzSize, & n_grid1, n_grid2, n_ao, n_nuc, size_bh, & diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f index 2c4e975b..75e3b4fe 100644 --- a/plugins/local/tc_int/deb_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/deb_tc_int_cuda.irp.f @@ -36,7 +36,6 @@ subroutine main() implicit none - !call deb_int2_grad1_u12_ao_gpu() call deb_int_2e_ao_gpu() return @@ -44,173 +43,6 @@ end ! --- -subroutine deb_int2_grad1_u12_ao_gpu() - - use cutc_module - - implicit none - - integer :: m - integer :: i, j, k - integer :: ipoint, jpoint - - double precision :: acc_thr, err_tot, nrm_tot, err_loc - - double precision :: time0, time1 - double precision :: cpu_time0, cpu_time1 - double precision :: cpu_ttime0, cpu_ttime1 - - double precision, allocatable :: rn(:,:), aos_data2(:,:,:) - double precision, allocatable :: grad1_u12(:,:,:), int_fct_long_range(:,:,:) - double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) - double precision, allocatable :: int2_grad1_u12_ao_gpu(:,:,:,:) - - - - call wall_time(time0) - print*, ' start deb_int2_grad1_u12_ao_gpu' - - - ! --- - - allocate(rn(3,nucl_num)) - allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) - - do k = 1, nucl_num - rn(1,k) = nucl_coord(k,1) - rn(2,k) = nucl_coord(k,2) - rn(3,k) = nucl_coord(k,3) - enddo - - do k = 1, ao_num - do ipoint = 1, n_points_extra_final_grid - aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) - aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) - aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) - aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) - enddo - enddo - - ! --- - - integer :: nB - integer :: sB - - PROVIDE nxBlocks nyBlocks nzBlocks - PROVIDE blockxSize blockySize blockzSize - - sB = 32 - nB = (n_points_final_grid + sB - 1) / sB - - call ezfio_set_tc_int_blockxSize(sB) - call ezfio_set_tc_int_nxBlocks(nB) - - allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,4)) - - call deb_int2_grad1_u12_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & - n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & - final_grid_points, final_grid_points_extra, final_weight_at_r_vector_extra, rn, & - aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & - int2_grad1_u12_ao_gpu) - - ! --- - - allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) - allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) - - call wall_time(cpu_time0) - - call wall_time(cpu_ttime0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (j, i, jpoint) & - !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) - !$OMP DO SCHEDULE (static) - do j = 1, ao_num - do i = 1, ao_num - do jpoint = 1, n_points_extra_final_grid - int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - call wall_time(cpu_ttime0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) - !$OMP DO - do ipoint = 1, n_points_final_grid - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & - , grad1_u12(1,ipoint,2) & - , grad1_u12(1,ipoint,3) & - , grad1_u12(1,ipoint,4) ) - enddo - !$OMP END DO - !$OMP END PARALLEL - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - call wall_time(cpu_ttime0) - do m = 1, 4 - call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & - , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & - , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) - enddo - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for DGEMM (sec) = ', (cpu_ttime1 - cpu_ttime0) - - call wall_time(cpu_time1) - write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (cpu_time1 - cpu_time0) - - ! --- - - acc_thr = 1d-12 - err_tot = 0.d0 - nrm_tot = 0.d0 - - do m = 1, 4 - do ipoint = 1, n_points_final_grid - do j = 1, ao_num - do i = 1, ao_num - err_loc = dabs(int2_grad1_u12_ao(i,j,ipoint,m) - int2_grad1_u12_ao_gpu(i,j,ipoint,m)) - if(err_loc > acc_thr) then - print*, " error on", i, j, ipoint, m - print*, " CPU res", int2_grad1_u12_ao (i,j,ipoint,m) - print*, " GPU res", int2_grad1_u12_ao_gpu(i,j,ipoint,m) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(int2_grad1_u12_ao(i,j,ipoint,m)) - enddo - enddo - enddo - enddo - - print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - deallocate(int_fct_long_range, grad1_u12) - deallocate(int2_grad1_u12_ao) - deallocate(int2_grad1_u12_ao_gpu) - deallocate(rn, aos_data2) - - call wall_time(time1) - write(*,"(A,2X,F15.7)") ' wall time for deb_int2_grad1_u12_ao_gpu (sec) = ', (time1 - time0) - - return -end - -! --- - subroutine deb_int_2e_ao_gpu() use cutc_module @@ -479,6 +311,22 @@ subroutine deb_int_2e_ao_gpu() print *, ' absolute accuracy on int_2e_ao (%) =', 100.d0 * err_tot / nrm_tot + ! --- + + print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") + call ezfio_set_work_empty(.False.) + write(11) int2_grad1_u12_ao_gpu(:,:,:,1:3) + close(11) + + print*, ' Saving tc_int_2e_ao in ', trim(ezfio_filename) // '/work/ao_two_e_tc_tot' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/ao_two_e_tc_tot', action="write") + call ezfio_set_work_empty(.False.) + do k = 1, ao_num + write(11) int_2e_ao_gpu(:,:,:,k) + enddo + close(11) + ! --- deallocate(int_fct_long_range, grad1_u12, c_mat) diff --git a/plugins/local/tc_int/write_tc_int_cuda.irp.f b/plugins/local/tc_int/write_tc_int_cuda.irp.f index bc1a118d..b74cd0cd 100644 --- a/plugins/local/tc_int/write_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/write_tc_int_cuda.irp.f @@ -62,7 +62,7 @@ subroutine do_work_on_gpu() integer :: k, ipoint - double precision, allocatable :: aos_data1(:,:,:), aos_data2(:,:,:) + double precision, allocatable :: rn(:,:), aos_data1(:,:,:), aos_data2(:,:,:) double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) double precision, allocatable :: int_2e_ao(:,:,:,:) @@ -72,12 +72,19 @@ subroutine do_work_on_gpu() call wall_time(time0) print*, ' start calculation of TC-integrals' + allocate(rn(3,nucl_num)) allocate(aos_data1(n_points_final_grid,ao_num,4)) allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) allocate(int_2e_ao(ao_num,ao_num,ao_num,ao_num)) + do k = 1, nucl_num + rn(1,k) = nucl_coord(k,1) + rn(2,k) = nucl_coord(k,2) + rn(3,k) = nucl_coord(k,3) + enddo + do k = 1, ao_num do ipoint = 1, n_points_final_grid aos_data1(ipoint,k,1) = aos_in_r_array(k,ipoint) @@ -117,8 +124,7 @@ subroutine do_work_on_gpu() n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & final_grid_points, final_weight_at_r_vector, & final_grid_points_extra, final_weight_at_r_vector_extra, & - nucl_coord, aos_data1, aos_data2, & - jBH_c, jBH_m, jBH_n, jBH_o, & + rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & int2_grad1_u12_ao, int_2e_ao) call wall_time(cuda_time1) @@ -128,6 +134,35 @@ subroutine do_work_on_gpu() ! --- + integer :: i, j, l + double precision :: t1, t2 + double precision, external :: get_ao_two_e_integral + + call wall_time(t1) + + PROVIDE ao_integrals_map + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP SHARED(ao_num, int_2e_ao, ao_integrals_map) & + !$OMP PRIVATE(i, j, k, l) + !$OMP DO COLLAPSE(3) + do j = 1, ao_num + do l = 1, ao_num + do i = 1, ao_num + do k = 1, ao_num + ! < 1:i, 2:j | 1:k, 2:l > + int_2e_ao(k,i,l,j) = int_2e_ao(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + call wall_time(t2) + print*, ' wall time of Coulomb part of tc_int_2e_ao (min) ', (t2 - t1) / 60.d0 + + ! --- + print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") call ezfio_set_work_empty(.False.) From 672fdfd7f2217831b7d4ec177deef526b7afc45b Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Sat, 3 Aug 2024 18:08:23 +0200 Subject: [PATCH 140/159] cuda tc-integrals tested --- plugins/local/tc_int/EZFIO.cfg | 4 +- plugins/local/tc_int/cutc_module.F90 | 28 ---- plugins/local/tc_int/deb_tc_int_cuda.irp.f | 168 ------------------- plugins/local/tc_int/write_tc_int_cuda.irp.f | 41 ++++- 4 files changed, 40 insertions(+), 201 deletions(-) diff --git a/plugins/local/tc_int/EZFIO.cfg b/plugins/local/tc_int/EZFIO.cfg index 12366f01..5615ce4b 100644 --- a/plugins/local/tc_int/EZFIO.cfg +++ b/plugins/local/tc_int/EZFIO.cfg @@ -8,7 +8,7 @@ default: 10 type: integer doc: nb of y blocks in the Grid interface: ezfio,provider,ocaml -default: 10 +default: 1 [nzBlocks] type: integer @@ -26,7 +26,7 @@ default: 32 type: integer doc: size of y blocks interface: ezfio,provider,ocaml -default: 32 +default: 1 [blockzSize] type: integer diff --git a/plugins/local/tc_int/cutc_module.F90 b/plugins/local/tc_int/cutc_module.F90 index 69c2a131..b96c1bef 100644 --- a/plugins/local/tc_int/cutc_module.F90 +++ b/plugins/local/tc_int/cutc_module.F90 @@ -41,34 +41,6 @@ module cutc_module ! --- - subroutine deb_int2_grad1_u12_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & - n_grid1, n_grid2, n_ao, n_nuc, size_bh, & - r1, r2, wr2, rn, aos_data2, c_bh, m_bh, n_bh, o_bh, & - int2_grad1_u12_ao) bind(C, name ="deb_int2_grad1_u12_ao") - - import c_int, c_double, c_ptr - integer(c_int), intent(in), value :: nxBlocks, blockxSize - integer(c_int), intent(in), value :: nyBlocks, blockySize - integer(c_int), intent(in), value :: nzBlocks, blockzSize - integer(c_int), intent(in), value :: n_grid1, n_grid2 - integer(c_int), intent(in), value :: n_ao - integer(c_int), intent(in), value :: n_nuc - integer(c_int), intent(in), value :: size_bh - real(c_double), intent(in) :: r1(3,n_grid1) - real(c_double), intent(in) :: r2(3,n_grid2) - real(c_double), intent(in) :: wr2(n_grid2) - real(c_double), intent(in) :: rn(3,n_nuc) - real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4) - real(c_double), intent(in) :: c_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) - real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,4) - - end subroutine deb_int2_grad1_u12_ao - - ! --- - subroutine deb_int_2e_ao(nxBlocks, nyBlocks, nzBlocks, & blockxSize, blockySize, blockzSize, & n_grid1, n_grid2, n_ao, n_nuc, size_bh, & diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f index 2c4e975b..a080666e 100644 --- a/plugins/local/tc_int/deb_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/deb_tc_int_cuda.irp.f @@ -36,7 +36,6 @@ subroutine main() implicit none - !call deb_int2_grad1_u12_ao_gpu() call deb_int_2e_ao_gpu() return @@ -44,173 +43,6 @@ end ! --- -subroutine deb_int2_grad1_u12_ao_gpu() - - use cutc_module - - implicit none - - integer :: m - integer :: i, j, k - integer :: ipoint, jpoint - - double precision :: acc_thr, err_tot, nrm_tot, err_loc - - double precision :: time0, time1 - double precision :: cpu_time0, cpu_time1 - double precision :: cpu_ttime0, cpu_ttime1 - - double precision, allocatable :: rn(:,:), aos_data2(:,:,:) - double precision, allocatable :: grad1_u12(:,:,:), int_fct_long_range(:,:,:) - double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) - double precision, allocatable :: int2_grad1_u12_ao_gpu(:,:,:,:) - - - - call wall_time(time0) - print*, ' start deb_int2_grad1_u12_ao_gpu' - - - ! --- - - allocate(rn(3,nucl_num)) - allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) - - do k = 1, nucl_num - rn(1,k) = nucl_coord(k,1) - rn(2,k) = nucl_coord(k,2) - rn(3,k) = nucl_coord(k,3) - enddo - - do k = 1, ao_num - do ipoint = 1, n_points_extra_final_grid - aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) - aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) - aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) - aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) - enddo - enddo - - ! --- - - integer :: nB - integer :: sB - - PROVIDE nxBlocks nyBlocks nzBlocks - PROVIDE blockxSize blockySize blockzSize - - sB = 32 - nB = (n_points_final_grid + sB - 1) / sB - - call ezfio_set_tc_int_blockxSize(sB) - call ezfio_set_tc_int_nxBlocks(nB) - - allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,4)) - - call deb_int2_grad1_u12_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & - n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & - final_grid_points, final_grid_points_extra, final_weight_at_r_vector_extra, rn, & - aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & - int2_grad1_u12_ao_gpu) - - ! --- - - allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) - allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) - - call wall_time(cpu_time0) - - call wall_time(cpu_ttime0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (j, i, jpoint) & - !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) - !$OMP DO SCHEDULE (static) - do j = 1, ao_num - do i = 1, ao_num - do jpoint = 1, n_points_extra_final_grid - int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - call wall_time(cpu_ttime0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) - !$OMP DO - do ipoint = 1, n_points_final_grid - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & - , grad1_u12(1,ipoint,2) & - , grad1_u12(1,ipoint,3) & - , grad1_u12(1,ipoint,4) ) - enddo - !$OMP END DO - !$OMP END PARALLEL - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - call wall_time(cpu_ttime0) - do m = 1, 4 - call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & - , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & - , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) - enddo - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for DGEMM (sec) = ', (cpu_ttime1 - cpu_ttime0) - - call wall_time(cpu_time1) - write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (cpu_time1 - cpu_time0) - - ! --- - - acc_thr = 1d-12 - err_tot = 0.d0 - nrm_tot = 0.d0 - - do m = 1, 4 - do ipoint = 1, n_points_final_grid - do j = 1, ao_num - do i = 1, ao_num - err_loc = dabs(int2_grad1_u12_ao(i,j,ipoint,m) - int2_grad1_u12_ao_gpu(i,j,ipoint,m)) - if(err_loc > acc_thr) then - print*, " error on", i, j, ipoint, m - print*, " CPU res", int2_grad1_u12_ao (i,j,ipoint,m) - print*, " GPU res", int2_grad1_u12_ao_gpu(i,j,ipoint,m) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(int2_grad1_u12_ao(i,j,ipoint,m)) - enddo - enddo - enddo - enddo - - print *, ' absolute accuracy (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - deallocate(int_fct_long_range, grad1_u12) - deallocate(int2_grad1_u12_ao) - deallocate(int2_grad1_u12_ao_gpu) - deallocate(rn, aos_data2) - - call wall_time(time1) - write(*,"(A,2X,F15.7)") ' wall time for deb_int2_grad1_u12_ao_gpu (sec) = ', (time1 - time0) - - return -end - -! --- - subroutine deb_int_2e_ao_gpu() use cutc_module diff --git a/plugins/local/tc_int/write_tc_int_cuda.irp.f b/plugins/local/tc_int/write_tc_int_cuda.irp.f index bc1a118d..b74cd0cd 100644 --- a/plugins/local/tc_int/write_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/write_tc_int_cuda.irp.f @@ -62,7 +62,7 @@ subroutine do_work_on_gpu() integer :: k, ipoint - double precision, allocatable :: aos_data1(:,:,:), aos_data2(:,:,:) + double precision, allocatable :: rn(:,:), aos_data1(:,:,:), aos_data2(:,:,:) double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) double precision, allocatable :: int_2e_ao(:,:,:,:) @@ -72,12 +72,19 @@ subroutine do_work_on_gpu() call wall_time(time0) print*, ' start calculation of TC-integrals' + allocate(rn(3,nucl_num)) allocate(aos_data1(n_points_final_grid,ao_num,4)) allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) allocate(int_2e_ao(ao_num,ao_num,ao_num,ao_num)) + do k = 1, nucl_num + rn(1,k) = nucl_coord(k,1) + rn(2,k) = nucl_coord(k,2) + rn(3,k) = nucl_coord(k,3) + enddo + do k = 1, ao_num do ipoint = 1, n_points_final_grid aos_data1(ipoint,k,1) = aos_in_r_array(k,ipoint) @@ -117,8 +124,7 @@ subroutine do_work_on_gpu() n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & final_grid_points, final_weight_at_r_vector, & final_grid_points_extra, final_weight_at_r_vector_extra, & - nucl_coord, aos_data1, aos_data2, & - jBH_c, jBH_m, jBH_n, jBH_o, & + rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & int2_grad1_u12_ao, int_2e_ao) call wall_time(cuda_time1) @@ -128,6 +134,35 @@ subroutine do_work_on_gpu() ! --- + integer :: i, j, l + double precision :: t1, t2 + double precision, external :: get_ao_two_e_integral + + call wall_time(t1) + + PROVIDE ao_integrals_map + !$OMP PARALLEL DEFAULT(NONE) & + !$OMP SHARED(ao_num, int_2e_ao, ao_integrals_map) & + !$OMP PRIVATE(i, j, k, l) + !$OMP DO COLLAPSE(3) + do j = 1, ao_num + do l = 1, ao_num + do i = 1, ao_num + do k = 1, ao_num + ! < 1:i, 2:j | 1:k, 2:l > + int_2e_ao(k,i,l,j) = int_2e_ao(k,i,l,j) + get_ao_two_e_integral(i, j, k, l, ao_integrals_map) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + call wall_time(t2) + print*, ' wall time of Coulomb part of tc_int_2e_ao (min) ', (t2 - t1) / 60.d0 + + ! --- + print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") call ezfio_set_work_empty(.False.) From dee440747fe438287b4f48f36fdeaa755f3eab95 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Sun, 4 Aug 2024 11:58:19 +0200 Subject: [PATCH 141/159] devide BH jast coeff by 2 direct --- plugins/local/jastrow/bh_param.irp.f | 8 +++++++ .../non_h_ints_mu/jast_deriv_utils_vect.irp.f | 3 --- plugins/local/non_h_ints_mu/tc_integ.irp.f | 2 +- plugins/local/tc_int/compute_tc_int.irp.f | 4 ++-- plugins/local/tc_int/cutc_module.F90 | 4 ++-- plugins/local/tc_int/deb_tc_int_cuda.irp.f | 21 ++----------------- plugins/local/tc_int/jast_grad_full.irp.f | 5 ----- plugins/local/tc_int/write_tc_int_cuda.irp.f | 4 ++-- plugins/local/tc_scf/tc_scf_energy.irp.f | 2 +- 9 files changed, 18 insertions(+), 35 deletions(-) diff --git a/plugins/local/jastrow/bh_param.irp.f b/plugins/local/jastrow/bh_param.irp.f index 1ed871bc..b9d51dd3 100644 --- a/plugins/local/jastrow/bh_param.irp.f +++ b/plugins/local/jastrow/bh_param.irp.f @@ -232,6 +232,14 @@ ! --- + do i_nucl = 1, nucl_num + do p = 1, jBH_size + if(jBH_m(p,i_nucl) .eq. jBH_n(p,i_nucl)) then + jBH_c(p,i_nucl) = 0.5d0 * jBH_c(p,i_nucl) + endif + enddo + enddo + print *, ' parameters for Boys-Handy Jastrow' print *, ' nb of terms per nucleus = ', jBH_size diff --git a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f index 2c41b535..4fc537c8 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f @@ -335,9 +335,6 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) npA = jBH_n(p,i_nucl) opA = jBH_o(p,i_nucl) tmp = jBH_c(p,i_nucl) - if(mpA .eq. npA) then - tmp = tmp * 0.5d0 - endif tmp1 = double_p(mpA) * f1A_power(mpA-1) * f2A_power(npA) + double_p(npA) * f1A_power(npA-1) * f2A_power(mpA) tmp1 = tmp1 * g12_power(opA) * tmp diff --git a/plugins/local/non_h_ints_mu/tc_integ.irp.f b/plugins/local/non_h_ints_mu/tc_integ.irp.f index 58e3db48..ce7ab101 100644 --- a/plugins/local/non_h_ints_mu/tc_integ.irp.f +++ b/plugins/local/non_h_ints_mu/tc_integ.irp.f @@ -204,7 +204,7 @@ BEGIN_PROVIDER [double precision, int2_grad1_u12_ao, (ao_num, ao_num, n_points_f print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") - call ezfio_set_work_empty(.False.) + call ezfio_set_work_empty(.False.) write(11) int2_grad1_u12_ao close(11) call ezfio_set_tc_keywords_io_tc_integ('Read') diff --git a/plugins/local/tc_int/compute_tc_int.irp.f b/plugins/local/tc_int/compute_tc_int.irp.f index 97815904..e6881f34 100644 --- a/plugins/local/tc_int/compute_tc_int.irp.f +++ b/plugins/local/tc_int/compute_tc_int.irp.f @@ -200,7 +200,7 @@ subroutine provide_int2_grad1_u12_ao() do k = 1, ao_num do ipoint = 1, n_points_final_grid - weight1 = 0.5d0 * final_weight_at_r_vector(ipoint) + weight1 = final_weight_at_r_vector(ipoint) ao_i_r = aos_in_r_array_transp(ipoint,i) ao_k_r = aos_in_r_array_transp(ipoint,k) @@ -211,7 +211,7 @@ subroutine provide_int2_grad1_u12_ao() !$OMP END DO !$OMP END PARALLEL - call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -1.d0 & + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -0.5d0 & , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & , 1.d0, tc_int_2e_ao(1,1,1,1), ao_num*ao_num) enddo diff --git a/plugins/local/tc_int/cutc_module.F90 b/plugins/local/tc_int/cutc_module.F90 index b96c1bef..1f55d763 100644 --- a/plugins/local/tc_int/cutc_module.F90 +++ b/plugins/local/tc_int/cutc_module.F90 @@ -34,7 +34,7 @@ module cutc_module integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) - real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,4) + real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,3) real(c_double), intent(out) :: int_2e_ao(n_ao,n_ao,n_ao,n_ao) end subroutine tc_int_c @@ -66,7 +66,7 @@ module cutc_module integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) - real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,4) + real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,3) real(c_double), intent(out) :: int_2e_ao(n_ao,n_ao,n_ao,n_ao) end subroutine deb_int_2e_ao diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f index 75e3b4fe..1a43141c 100644 --- a/plugins/local/tc_int/deb_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/deb_tc_int_cuda.irp.f @@ -119,7 +119,7 @@ subroutine deb_int_2e_ao_gpu() call ezfio_set_tc_int_blockxSize(sB) call ezfio_set_tc_int_nxBlocks(nB) - allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,4)) + allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,3)) allocate(int_2e_ao_gpu(ao_num,ao_num,ao_num,ao_num)) call deb_int_2e_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & @@ -268,7 +268,7 @@ subroutine deb_int_2e_ao_gpu() print *, ' precision on int2_grad1_u12_ao ' err_tot = 0.d0 nrm_tot = 0.d0 - do m = 1, 4 + do m = 1, 3 do ipoint = 1, n_points_final_grid do j = 1, ao_num do i = 1, ao_num @@ -310,23 +310,6 @@ subroutine deb_int_2e_ao_gpu() enddo print *, ' absolute accuracy on int_2e_ao (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' - open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") - call ezfio_set_work_empty(.False.) - write(11) int2_grad1_u12_ao_gpu(:,:,:,1:3) - close(11) - - print*, ' Saving tc_int_2e_ao in ', trim(ezfio_filename) // '/work/ao_two_e_tc_tot' - open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/ao_two_e_tc_tot', action="write") - call ezfio_set_work_empty(.False.) - do k = 1, ao_num - write(11) int_2e_ao_gpu(:,:,:,k) - enddo - close(11) - ! --- deallocate(int_fct_long_range, grad1_u12, c_mat) diff --git a/plugins/local/tc_int/jast_grad_full.irp.f b/plugins/local/tc_int/jast_grad_full.irp.f index 2f6abf39..943d8567 100644 --- a/plugins/local/tc_int/jast_grad_full.irp.f +++ b/plugins/local/tc_int/jast_grad_full.irp.f @@ -170,11 +170,6 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) npA = jBH_n(p,i_nucl) opA = jBH_o(p,i_nucl) - ! TODO to it when reading the parameters - if(mpA .eq. npA) then - tmp = tmp * 0.5d0 - endif - tmp1 = double_p(mpA) * f1A_power(mpA-1) * f2A_power(npA) + double_p(npA) * f1A_power(npA-1) * f2A_power(mpA) tmp1 = tmp1 * g12_power(opA) * tmp tmp2 = double_p(opA) * g12_power(opA-1) * (f1A_power(mpA) * f2A_power(npA) + f1A_power(npA) * f2A_power(mpA)) * tmp diff --git a/plugins/local/tc_int/write_tc_int_cuda.irp.f b/plugins/local/tc_int/write_tc_int_cuda.irp.f index b74cd0cd..7d0a0385 100644 --- a/plugins/local/tc_int/write_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/write_tc_int_cuda.irp.f @@ -75,7 +75,7 @@ subroutine do_work_on_gpu() allocate(rn(3,nucl_num)) allocate(aos_data1(n_points_final_grid,ao_num,4)) allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) allocate(int_2e_ao(ao_num,ao_num,ao_num,ao_num)) @@ -166,7 +166,7 @@ subroutine do_work_on_gpu() print*, ' Writing int2_grad1_u12_ao in ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="write") call ezfio_set_work_empty(.False.) - write(11) int2_grad1_u12_ao(:,:,:,1:3) + write(11) int2_grad1_u12_ao close(11) deallocate(int2_grad1_u12_ao) diff --git a/plugins/local/tc_scf/tc_scf_energy.irp.f b/plugins/local/tc_scf/tc_scf_energy.irp.f index 74ab9d05..80ef2afb 100644 --- a/plugins/local/tc_scf/tc_scf_energy.irp.f +++ b/plugins/local/tc_scf/tc_scf_energy.irp.f @@ -28,7 +28,7 @@ enddo enddo - if((three_body_h_tc .eq. .False.) .and. (.not. noL_standard)) then + if((three_body_h_tc .eqv. .False.) .and. (.not. noL_standard)) then TC_HF_three_e_energy = 0.d0 else TC_HF_three_e_energy = noL_0e From 67a2f0eb0cf7fe1290987795375ea529b355f575 Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Mon, 5 Aug 2024 14:49:35 +0200 Subject: [PATCH 142/159] openmp issue solved --- plugins/local/tc_int/compute_tc_int.irp.f | 4 ++++ plugins/local/tc_int/write_tc_int_cuda.irp.f | 3 +++ 2 files changed, 7 insertions(+) diff --git a/plugins/local/tc_int/compute_tc_int.irp.f b/plugins/local/tc_int/compute_tc_int.irp.f index e6881f34..60c0d53b 100644 --- a/plugins/local/tc_int/compute_tc_int.irp.f +++ b/plugins/local/tc_int/compute_tc_int.irp.f @@ -236,9 +236,13 @@ subroutine provide_int2_grad1_u12_ao() ! --- + double precision :: tmp_omp + call wall_time(time1) PROVIDE ao_integrals_map + tmp_omp = get_ao_two_e_integral(1, 1, 1, 1, ao_integrals_map) + !$OMP PARALLEL DEFAULT(NONE) & !$OMP SHARED(ao_num, tc_int_2e_ao, ao_integrals_map) & !$OMP PRIVATE(i, j, k, l) diff --git a/plugins/local/tc_int/write_tc_int_cuda.irp.f b/plugins/local/tc_int/write_tc_int_cuda.irp.f index 7d0a0385..212518ee 100644 --- a/plugins/local/tc_int/write_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/write_tc_int_cuda.irp.f @@ -136,11 +136,14 @@ subroutine do_work_on_gpu() integer :: i, j, l double precision :: t1, t2 + double precision :: tmp double precision, external :: get_ao_two_e_integral call wall_time(t1) PROVIDE ao_integrals_map + tmp = get_ao_two_e_integral(1, 1, 1, 1, ao_integrals_map) + !$OMP PARALLEL DEFAULT(NONE) & !$OMP SHARED(ao_num, int_2e_ao, ao_integrals_map) & !$OMP PRIVATE(i, j, k, l) From 4744fc7360fbb6b0aced8c2da89934a2ba0dd491 Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Mon, 5 Aug 2024 14:50:37 +0200 Subject: [PATCH 143/159] openmp issue solved --- plugins/local/tc_bi_ortho/tc_utils.irp.f | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/local/tc_bi_ortho/tc_utils.irp.f b/plugins/local/tc_bi_ortho/tc_utils.irp.f index 2aa148a3..55263be7 100644 --- a/plugins/local/tc_bi_ortho/tc_utils.irp.f +++ b/plugins/local/tc_bi_ortho/tc_utils.irp.f @@ -11,6 +11,8 @@ subroutine write_tc_energy() ! GS ! --- + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,1), psi_det(1,1,1), N_int, hmono, htwoe, hthree, htot) + allocate(E_TC_tmp(N_det), E_1e_tmp(N_det), E_2e_tmp(N_det), E_3e_tmp(N_det)) !$OMP PARALLEL & From 84445aa591668092ac3f0a8c80508fb72f099acc Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Thu, 8 Aug 2024 11:39:42 +0200 Subject: [PATCH 144/159] Combine calculation of Left & RIGHT MOs in r --- plugins/local/bi_ort_ints/bi_ort_ints.irp.f | 56 +++++- plugins/local/bi_ort_ints/no_dressing.irp.f | 2 + .../local/bi_ortho_mos/bi_ort_mos_in_r.irp.f | 165 ++++++------------ .../bi_ortho_mos/bi_ort_mos_in_r_old.irp.f | 137 +++++++++++++++ plugins/local/tc_bi_ortho/tc_utils.irp.f | 2 + 5 files changed, 246 insertions(+), 116 deletions(-) create mode 100644 plugins/local/bi_ortho_mos/bi_ort_mos_in_r_old.irp.f diff --git a/plugins/local/bi_ort_ints/bi_ort_ints.irp.f b/plugins/local/bi_ort_ints/bi_ort_ints.irp.f index 0349c731..b691e47e 100644 --- a/plugins/local/bi_ort_ints/bi_ort_ints.irp.f +++ b/plugins/local/bi_ort_ints/bi_ort_ints.irp.f @@ -17,12 +17,14 @@ program bi_ort_ints ! call test_3e ! call test_5idx ! call test_5idx2 - call test_4idx() +! call test_4idx() !call test_4idx_n4() !call test_4idx2() !call test_5idx2 !call test_5idx + call test_mos_in_r() + end subroutine test_5idx2 @@ -472,4 +474,56 @@ subroutine test_4idx() return end +! --- + +subroutine test_mos_in_r() + + implicit none + + integer :: i, j + double precision :: err_tot, nrm_tot, err_loc, acc_thr + + PROVIDE mos_l_in_r_array_transp_old mos_r_in_r_array_transp_old + PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp + + acc_thr = 1d-12 + + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do j = 1, n_points_final_grid + err_loc = dabs(mos_l_in_r_array_transp_old(j,i) - mos_l_in_r_array_transp(j,i)) + if(err_loc > acc_thr) then + print*, " error on", j, i + print*, " old res", mos_l_in_r_array_transp_old(j,i) + print*, " new res", mos_l_in_r_array_transp (j,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(mos_l_in_r_array_transp_old(j,i)) + enddo + enddo + print *, ' absolute accuracy on mos_l_in_r_array_transp (%) =', 100.d0 * err_tot / nrm_tot + + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do j = 1, n_points_final_grid + err_loc = dabs(mos_r_in_r_array_transp_old(j,i) - mos_r_in_r_array_transp(j,i)) + if(err_loc > acc_thr) then + print*, " error on", j, i + print*, " old res", mos_r_in_r_array_transp_old(j,i) + print*, " new res", mos_r_in_r_array_transp (j,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(mos_r_in_r_array_transp_old(j,i)) + enddo + enddo + print *, ' absolute accuracy on mos_r_in_r_array_transp (%) =', 100.d0 * err_tot / nrm_tot + + return +end + +! --- diff --git a/plugins/local/bi_ort_ints/no_dressing.irp.f b/plugins/local/bi_ort_ints/no_dressing.irp.f index fd2c6285..3bbf31f9 100644 --- a/plugins/local/bi_ort_ints/no_dressing.irp.f +++ b/plugins/local/bi_ort_ints/no_dressing.irp.f @@ -710,6 +710,8 @@ BEGIN_PROVIDER [double precision, noL_0e] endif + print*, " noL_0e =", noL_0e + END_PROVIDER ! --- diff --git a/plugins/local/bi_ortho_mos/bi_ort_mos_in_r.irp.f b/plugins/local/bi_ortho_mos/bi_ort_mos_in_r.irp.f index 25572854..15ed2ce4 100644 --- a/plugins/local/bi_ortho_mos/bi_ort_mos_in_r.irp.f +++ b/plugins/local/bi_ortho_mos/bi_ort_mos_in_r.irp.f @@ -1,135 +1,70 @@ -! TODO: left & right MO without duplicate AO calculation - -! --- - -BEGIN_PROVIDER[double precision, mos_r_in_r_array, (mo_num, n_points_final_grid)] + BEGIN_PROVIDER[double precision, mos_l_in_r_array_transp, (n_points_final_grid, mo_num)] +&BEGIN_PROVIDER[double precision, mos_r_in_r_array_transp, (n_points_final_grid, mo_num)] BEGIN_DOC - ! mos_in_r_array(i,j) = value of the ith RIGHT mo on the jth grid point + ! + ! mos_l_in_r_array_transp(i,j) = value of the jth left-mo on the ith grid point + ! mos_r_in_r_array_transp(i,j) = value of the jth right-mo on the ith grid point + ! END_DOC implicit none - integer :: i, j - double precision :: mos_array(mo_num), r(3) - !$OMP PARALLEL DO & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, j, r, mos_array) & - !$OMP SHARED (mos_r_in_r_array, n_points_final_grid, mo_num, final_grid_points) + integer :: i + double precision :: tt0, tt1, tt2, tt3 + double precision :: r(3) + double precision, allocatable :: aos_r(:,:) + + call cpu_time(tt0) + + allocate(aos_r(ao_num,n_points_final_grid)) + + ! provide everything required before OpenMP + r(1) = final_grid_points(1,1) + r(2) = final_grid_points(2,1) + r(3) = final_grid_points(3,1) + call give_all_aos_at_r(r, aos_r(1,1)) + + + call cpu_time(tt2) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, r) & + !$OMP SHARED(n_points_final_grid, final_grid_points, aos_r) + !$OMP DO do i = 1, n_points_final_grid r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,i) - call give_all_mos_r_at_r(r, mos_array) - do j = 1, mo_num - mos_r_in_r_array(j,i) = mos_array(j) - enddo + call give_all_aos_at_r(r, aos_r(1,i)) enddo - !$OMP END PARALLEL DO - -END_PROVIDER + !$OMP END DO + !$OMP END PARALLEL -! --- + call cpu_time(tt3) + write(*,"(A,2X,F15.7)") ' wall time for AOs on r (sec) = ', (tt3 - tt2) -BEGIN_PROVIDER[double precision, mos_r_in_r_array_transp, (n_points_final_grid, mo_num)] - BEGIN_DOC - ! mos_r_in_r_array_transp(i,j) = value of the jth mo on the ith grid point - END_DOC + call dgemm("T", "N", n_points_final_grid, mo_num, ao_num, & + 1.d0, & + aos_r(1,1), ao_num, & + mo_l_coef(1,1), ao_num, & + 0.d0, & + mos_l_in_r_array_transp(1,1), n_points_final_grid) - implicit none - integer :: i,j + call dgemm("T", "N", n_points_final_grid, mo_num, ao_num, & + 1.d0, & + aos_r(1,1), ao_num, & + mo_r_coef(1,1), ao_num, & + 0.d0, & + mos_r_in_r_array_transp(1,1), n_points_final_grid) - do i = 1, n_points_final_grid - do j = 1, mo_num - mos_r_in_r_array_transp(i,j) = mos_r_in_r_array(j,i) - enddo - enddo - -END_PROVIDER - -! --- - -subroutine give_all_mos_r_at_r(r, mos_r_array) - - BEGIN_DOC - ! mos_r_array(i) = ith RIGHT MO function evaluated at "r" - END_DOC - - implicit none - double precision, intent(in) :: r(3) - double precision, intent(out) :: mos_r_array(mo_num) - double precision :: aos_array(ao_num) - - call give_all_aos_at_r(r, aos_array) - call dgemv('N', mo_num, ao_num, 1.d0, mo_r_coef_transp, mo_num, aos_array, 1, 0.d0, mos_r_array, 1) - -end subroutine give_all_mos_r_at_r - -! --- - -BEGIN_PROVIDER[double precision, mos_l_in_r_array, (mo_num, n_points_final_grid)] - - BEGIN_DOC - ! mos_in_r_array(i,j) = value of the ith LEFT mo on the jth grid point - END_DOC - - implicit none - integer :: i, j - double precision :: mos_array(mo_num), r(3) - - !$OMP PARALLEL DO & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i,r,mos_array,j) & - !$OMP SHARED(mos_l_in_r_array,n_points_final_grid,mo_num,final_grid_points) - do i = 1, n_points_final_grid - r(1) = final_grid_points(1,i) - r(2) = final_grid_points(2,i) - r(3) = final_grid_points(3,i) - call give_all_mos_l_at_r(r, mos_array) - do j = 1, mo_num - mos_l_in_r_array(j,i) = mos_array(j) - enddo - enddo - !$OMP END PARALLEL DO - -END_PROVIDER - -! --- - -subroutine give_all_mos_l_at_r(r, mos_l_array) - - BEGIN_DOC - ! mos_l_array(i) = ith LEFT MO function evaluated at "r" - END_DOC - - implicit none - double precision, intent(in) :: r(3) - double precision, intent(out) :: mos_l_array(mo_num) - double precision :: aos_array(ao_num) - - call give_all_aos_at_r(r, aos_array) - call dgemv('N', mo_num, ao_num, 1.d0, mo_l_coef_transp, mo_num, aos_array, 1, 0.d0, mos_l_array, 1) - -end subroutine give_all_mos_l_at_r - -! --- - -BEGIN_PROVIDER[double precision, mos_l_in_r_array_transp, (n_points_final_grid,mo_num)] - - BEGIN_DOC - ! mos_l_in_r_array_transp(i,j) = value of the jth mo on the ith grid point - END_DOC - - implicit none - integer :: i, j - - do i = 1, n_points_final_grid - do j = 1, mo_num - mos_l_in_r_array_transp(i,j) = mos_l_in_r_array(j,i) - enddo - enddo + deallocate(aos_r) + + call cpu_time(tt1) + write(*,"(A,2X,F15.7)") ' wall time for mos_l_in_r_array_transp & mos_r_in_r_array_transp (sec) = ', (tt1 - tt0) END_PROVIDER diff --git a/plugins/local/bi_ortho_mos/bi_ort_mos_in_r_old.irp.f b/plugins/local/bi_ortho_mos/bi_ort_mos_in_r_old.irp.f new file mode 100644 index 00000000..9fd671f8 --- /dev/null +++ b/plugins/local/bi_ortho_mos/bi_ort_mos_in_r_old.irp.f @@ -0,0 +1,137 @@ + +! TODO: left & right MO without duplicate AO calculation + +! --- + +BEGIN_PROVIDER[double precision, mos_r_in_r_array, (mo_num, n_points_final_grid)] + + BEGIN_DOC + ! mos_in_r_array(i,j) = value of the ith RIGHT mo on the jth grid point + END_DOC + + implicit none + integer :: i, j + double precision :: mos_array(mo_num), r(3) + + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, r, mos_array) & + !$OMP SHARED (mos_r_in_r_array, n_points_final_grid, mo_num, final_grid_points) + do i = 1, n_points_final_grid + r(1) = final_grid_points(1,i) + r(2) = final_grid_points(2,i) + r(3) = final_grid_points(3,i) + call give_all_mos_r_at_r(r, mos_array) + do j = 1, mo_num + mos_r_in_r_array(j,i) = mos_array(j) + enddo + enddo + !$OMP END PARALLEL DO + +END_PROVIDER + +! --- + +BEGIN_PROVIDER[double precision, mos_r_in_r_array_transp_old, (n_points_final_grid, mo_num)] + + BEGIN_DOC + ! mos_r_in_r_array_transp_old(i,j) = value of the jth mo on the ith grid point + END_DOC + + implicit none + integer :: i,j + + do i = 1, n_points_final_grid + do j = 1, mo_num + mos_r_in_r_array_transp_old(i,j) = mos_r_in_r_array(j,i) + enddo + enddo + +END_PROVIDER + +! --- + +subroutine give_all_mos_r_at_r(r, mos_r_array) + + BEGIN_DOC + ! mos_r_array(i) = ith RIGHT MO function evaluated at "r" + END_DOC + + implicit none + double precision, intent(in) :: r(3) + double precision, intent(out) :: mos_r_array(mo_num) + double precision :: aos_array(ao_num) + + call give_all_aos_at_r(r, aos_array) + call dgemv('N', mo_num, ao_num, 1.d0, mo_r_coef_transp, mo_num, aos_array, 1, 0.d0, mos_r_array, 1) + +end subroutine give_all_mos_r_at_r + +! --- + +BEGIN_PROVIDER[double precision, mos_l_in_r_array, (mo_num, n_points_final_grid)] + + BEGIN_DOC + ! mos_in_r_array(i,j) = value of the ith LEFT mo on the jth grid point + END_DOC + + implicit none + integer :: i, j + double precision :: mos_array(mo_num), r(3) + + !$OMP PARALLEL DO & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i,r,mos_array,j) & + !$OMP SHARED(mos_l_in_r_array,n_points_final_grid,mo_num,final_grid_points) + do i = 1, n_points_final_grid + r(1) = final_grid_points(1,i) + r(2) = final_grid_points(2,i) + r(3) = final_grid_points(3,i) + call give_all_mos_l_at_r(r, mos_array) + do j = 1, mo_num + mos_l_in_r_array(j,i) = mos_array(j) + enddo + enddo + !$OMP END PARALLEL DO + +END_PROVIDER + +! --- + +subroutine give_all_mos_l_at_r(r, mos_l_array) + + BEGIN_DOC + ! mos_l_array(i) = ith LEFT MO function evaluated at "r" + END_DOC + + implicit none + double precision, intent(in) :: r(3) + double precision, intent(out) :: mos_l_array(mo_num) + double precision :: aos_array(ao_num) + + call give_all_aos_at_r(r, aos_array) + call dgemv('N', mo_num, ao_num, 1.d0, mo_l_coef_transp, mo_num, aos_array, 1, 0.d0, mos_l_array, 1) + +end subroutine give_all_mos_l_at_r + +! --- + +BEGIN_PROVIDER[double precision, mos_l_in_r_array_transp_old, (n_points_final_grid,mo_num)] + + BEGIN_DOC + ! mos_l_in_r_array_transp_old(i,j) = value of the jth mo on the ith grid point + END_DOC + + implicit none + integer :: i, j + + do i = 1, n_points_final_grid + do j = 1, mo_num + mos_l_in_r_array_transp_old(i,j) = mos_l_in_r_array(j,i) + enddo + enddo + +END_PROVIDER + +! --- + diff --git a/plugins/local/tc_bi_ortho/tc_utils.irp.f b/plugins/local/tc_bi_ortho/tc_utils.irp.f index 2aa148a3..4dfd4316 100644 --- a/plugins/local/tc_bi_ortho/tc_utils.irp.f +++ b/plugins/local/tc_bi_ortho/tc_utils.irp.f @@ -8,6 +8,8 @@ subroutine write_tc_energy() double precision :: E_1e, E_2e, E_3e double precision, allocatable :: E_TC_tmp(:), E_1e_tmp(:), E_2e_tmp(:), E_3e_tmp(:) + call htilde_mu_mat_opt_bi_ortho(psi_det(1,1,1), psi_det(1,1,1), N_int, hmono, htwoe, hthree, htot) + ! GS ! --- From df1c27c7672a9236ab8b417a766c4b569bcd1735 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Thu, 8 Aug 2024 12:47:47 +0200 Subject: [PATCH 145/159] Optim in int2_grad1_u12_bimo_t --- plugins/local/bi_ort_ints/bi_ort_ints.irp.f | 41 +- .../local/bi_ort_ints/semi_num_ints_mo.irp.f | 374 ++---------------- .../bi_ort_ints/semi_num_ints_mo_old.irp.f | 362 +++++++++++++++++ .../local/bi_ortho_mos/bi_ort_mos_in_r.irp.f | 8 +- 4 files changed, 440 insertions(+), 345 deletions(-) create mode 100644 plugins/local/bi_ort_ints/semi_num_ints_mo_old.irp.f diff --git a/plugins/local/bi_ort_ints/bi_ort_ints.irp.f b/plugins/local/bi_ort_ints/bi_ort_ints.irp.f index b691e47e..0398a18f 100644 --- a/plugins/local/bi_ort_ints/bi_ort_ints.irp.f +++ b/plugins/local/bi_ort_ints/bi_ort_ints.irp.f @@ -24,6 +24,7 @@ program bi_ort_ints !call test_5idx call test_mos_in_r() + call test_int2_grad1_u12_bimo_t() end @@ -486,7 +487,7 @@ subroutine test_mos_in_r() PROVIDE mos_l_in_r_array_transp_old mos_r_in_r_array_transp_old PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp - acc_thr = 1d-12 + acc_thr = 1d-13 err_tot = 0.d0 nrm_tot = 0.d0 @@ -527,3 +528,41 @@ end ! --- +subroutine test_int2_grad1_u12_bimo_t() + + implicit none + integer :: i, j, ipoint, m + double precision :: err_tot, nrm_tot, err_loc, acc_thr + + PROVIDE int2_grad1_u12_bimo_t_old + PROVIDE int2_grad1_u12_bimo_t + + acc_thr = 1d-13 + + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do j = 1, mo_num + do m = 1, 3 + do ipoint = 1, n_points_final_grid + err_loc = dabs(int2_grad1_u12_bimo_t_old(ipoint,m,j,i) - int2_grad1_u12_bimo_t(ipoint,m,j,i)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m, j, i + print*, " old res", int2_grad1_u12_bimo_t_old(ipoint,m,j,i) + print*, " new res", int2_grad1_u12_bimo_t (ipoint,m,j,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(int2_grad1_u12_bimo_t_old(ipoint,m,j,i)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on int2_grad1_u12_bimo_t (%) =', 100.d0 * err_tot / nrm_tot + + return +end + +! --- + + diff --git a/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f b/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f index 77e4cb9b..1fd5d666 100644 --- a/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f +++ b/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f @@ -1,360 +1,54 @@ ! --- -! TODO :: optimization : transform into a DGEMM - -BEGIN_PROVIDER [ double precision, mo_v_ki_bi_ortho_erf_rk_cst_mu, (mo_num, mo_num, n_points_final_grid)] - - BEGIN_DOC - ! - ! mo_v_ki_bi_ortho_erf_rk_cst_mu(k,i,ip) = int dr chi_k(r) phi_i(r) (erf(mu |r - R_ip|) - 1 )/(2|r - R_ip|) on the BI-ORTHO MO basis - ! - ! where phi_k(r) is a LEFT MOs and phi_i(r) is a RIGHT MO - ! - ! R_ip = the "ip"-th point of the DFT Grid - ! - END_DOC - - implicit none - integer :: ipoint - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (n_points_final_grid,v_ij_erf_rk_cst_mu,mo_v_ki_bi_ortho_erf_rk_cst_mu) - !$OMP DO SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - call ao_to_mo_bi_ortho( v_ij_erf_rk_cst_mu (1,1,ipoint), size(v_ij_erf_rk_cst_mu, 1) & - , mo_v_ki_bi_ortho_erf_rk_cst_mu(1,1,ipoint), size(mo_v_ki_bi_ortho_erf_rk_cst_mu, 1) ) - enddo - !$OMP END DO - !$OMP END PARALLEL - - mo_v_ki_bi_ortho_erf_rk_cst_mu = mo_v_ki_bi_ortho_erf_rk_cst_mu * 0.5d0 - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, mo_v_ki_bi_ortho_erf_rk_cst_mu_transp, (n_points_final_grid, mo_num, mo_num)] - - BEGIN_DOC - ! - ! int dr phi_i(r) phi_j(r) (erf(mu(R) |r - R|) - 1)/(2|r - R|) on the BI-ORTHO MO basis - ! - END_DOC - - implicit none - integer :: ipoint, i, j - - do i = 1, mo_num - do j = 1, mo_num - do ipoint = 1, n_points_final_grid - mo_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,j,i) = mo_v_ki_bi_ortho_erf_rk_cst_mu(j,i,ipoint) - enddo - enddo - enddo - - !FREE mo_v_ki_bi_ortho_erf_rk_cst_mu - -END_PROVIDER - -! --- - -! TODO :: optimization : transform into a DGEMM - -BEGIN_PROVIDER [ double precision, mo_x_v_ki_bi_ortho_erf_rk_cst_mu, (mo_num, mo_num, 3, n_points_final_grid)] - - BEGIN_DOC - ! - ! mo_x_v_ki_bi_ortho_erf_rk_cst_mu(k,i,m,ip) = int dr x(m) * chi_k(r) phi_i(r) (erf(mu |r - R_ip|) - 1)/2|r - R_ip| on the BI-ORTHO MO basis - ! - ! where chi_k(r)/phi_i(r) are left/right MOs, m=1 => x(m) = x, m=2 => x(m) = y, m=3 => x(m) = z, - ! - ! R_ip = the "ip"-th point of the DFT Grid - ! - END_DOC - - implicit none - integer :: ipoint - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (n_points_final_grid,x_v_ij_erf_rk_cst_mu_transp,mo_x_v_ki_bi_ortho_erf_rk_cst_mu) - !$OMP DO SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - - call ao_to_mo_bi_ortho( x_v_ij_erf_rk_cst_mu_transp (1,1,1,ipoint), size(x_v_ij_erf_rk_cst_mu_transp, 1) & - , mo_x_v_ki_bi_ortho_erf_rk_cst_mu(1,1,1,ipoint), size(mo_x_v_ki_bi_ortho_erf_rk_cst_mu, 1) ) - call ao_to_mo_bi_ortho( x_v_ij_erf_rk_cst_mu_transp (1,1,2,ipoint), size(x_v_ij_erf_rk_cst_mu_transp, 1) & - , mo_x_v_ki_bi_ortho_erf_rk_cst_mu(1,1,2,ipoint), size(mo_x_v_ki_bi_ortho_erf_rk_cst_mu, 1) ) - call ao_to_mo_bi_ortho( x_v_ij_erf_rk_cst_mu_transp (1,1,3,ipoint), size(x_v_ij_erf_rk_cst_mu_transp, 1) & - , mo_x_v_ki_bi_ortho_erf_rk_cst_mu(1,1,3,ipoint), size(mo_x_v_ki_bi_ortho_erf_rk_cst_mu, 1) ) - - enddo - !$OMP END DO - !$OMP END PARALLEL - - mo_x_v_ki_bi_ortho_erf_rk_cst_mu = 0.5d0 * mo_x_v_ki_bi_ortho_erf_rk_cst_mu - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, int2_grad1_u12_ao_transp, (ao_num, ao_num, 3, n_points_final_grid)] - - implicit none - integer :: i, j, ipoint - double precision :: wall0, wall1 - - !print *, ' providing int2_grad1_u12_ao_transp ...' - !call wall_time(wall0) - - if(test_cycle_tc) then - - PROVIDE int2_grad1_u12_ao_test - - do ipoint = 1, n_points_final_grid - do i = 1, ao_num - do j = 1, ao_num - int2_grad1_u12_ao_transp(j,i,1,ipoint) = int2_grad1_u12_ao_test(j,i,ipoint,1) - int2_grad1_u12_ao_transp(j,i,2,ipoint) = int2_grad1_u12_ao_test(j,i,ipoint,2) - int2_grad1_u12_ao_transp(j,i,3,ipoint) = int2_grad1_u12_ao_test(j,i,ipoint,3) - enddo - enddo - enddo - - FREE int2_grad1_u12_ao_test - - else - - PROVIDE int2_grad1_u12_ao - - do ipoint = 1, n_points_final_grid - do i = 1, ao_num - do j = 1, ao_num - int2_grad1_u12_ao_transp(j,i,1,ipoint) = int2_grad1_u12_ao(j,i,ipoint,1) - int2_grad1_u12_ao_transp(j,i,2,ipoint) = int2_grad1_u12_ao(j,i,ipoint,2) - int2_grad1_u12_ao_transp(j,i,3,ipoint) = int2_grad1_u12_ao(j,i,ipoint,3) - enddo - enddo - enddo - - endif - - !call wall_time(wall1) - !print *, ' wall time for int2_grad1_u12_ao_transp (min) = ', (wall1 - wall0) / 60.d0 - !call print_memory_usage() - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [double precision, int2_grad1_u12_bimo_transp, (mo_num, mo_num, 3, n_points_final_grid)] - - implicit none - integer :: ipoint - double precision :: wall0, wall1 - - PROVIDE mo_l_coef mo_r_coef - PROVIDE int2_grad1_u12_ao_transp - - !print *, ' providing int2_grad1_u12_bimo_transp ...' - !call wall_time(wall0) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (n_points_final_grid,int2_grad1_u12_ao_transp,int2_grad1_u12_bimo_transp) - !$OMP DO SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,1,ipoint), size(int2_grad1_u12_ao_transp , 1) & - , int2_grad1_u12_bimo_transp(1,1,1,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) - call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,2,ipoint), size(int2_grad1_u12_ao_transp , 1) & - , int2_grad1_u12_bimo_transp(1,1,2,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) - call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,3,ipoint), size(int2_grad1_u12_ao_transp , 1) & - , int2_grad1_u12_bimo_transp(1,1,3,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) - enddo - !$OMP END DO - !$OMP END PARALLEL - - !FREE int2_grad1_u12_ao_transp - - !call wall_time(wall1) - !print *, ' wall time for int2_grad1_u12_bimo_transp (min) =', (wall1 - wall0) / 60.d0 - !call print_memory_usage() - -END_PROVIDER - -! --- - BEGIN_PROVIDER [double precision, int2_grad1_u12_bimo_t, (n_points_final_grid, 3, mo_num, mo_num)] implicit none - integer :: i, j, ipoint - double precision :: wall0, wall1 - - !call wall_time(wall0) - !print *, ' providing int2_grad1_u12_bimo_t ...' + integer :: i, j, ipoint + double precision :: tt1, tt2 + double precision, allocatable :: tmp(:,:,:,:) PROVIDE mo_l_coef mo_r_coef - PROVIDE int2_grad1_u12_bimo_transp + PROVIDE int2_grad1_u12_ao + call wall_time(tt1) + + allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp (1,1,ipoint,1), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp (1,1,ipoint,2), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp (1,1,ipoint,3), mo_num) + enddo + !$OMP END DO + !$OMP END PARALLEL + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, ipoint) & + !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) + !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) do ipoint = 1, n_points_final_grid do i = 1, mo_num do j = 1, mo_num - int2_grad1_u12_bimo_t(ipoint,1,j,i) = int2_grad1_u12_bimo_transp(j,i,1,ipoint) - int2_grad1_u12_bimo_t(ipoint,2,j,i) = int2_grad1_u12_bimo_transp(j,i,2,ipoint) - int2_grad1_u12_bimo_t(ipoint,3,j,i) = int2_grad1_u12_bimo_transp(j,i,3,ipoint) + int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) + int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) + int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) enddo enddo enddo + !$OMP END DO + !$OMP END PARALLEL - FREE int2_grad1_u12_bimo_transp + deallocate(tmp) - !call wall_time(wall1) - !print *, ' wall time for int2_grad1_u12_bimo_t (min) =', (wall1 - wall0) / 60.d0 - !call print_memory_usage() - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [double precision, int2_grad1_u12_ao_t, (n_points_final_grid, 3, ao_num, ao_num)] - - implicit none - integer :: i, j, ipoint - double precision :: wall0, wall1 - - !call wall_time(wall0) - !print *, ' providing int2_grad1_u12_ao_t ...' - - PROVIDE int2_grad1_u12_ao - - do ipoint = 1, n_points_final_grid - do i = 1, ao_num - do j = 1, ao_num - int2_grad1_u12_ao_t(ipoint,1,j,i) = int2_grad1_u12_ao(j,i,ipoint,1) - int2_grad1_u12_ao_t(ipoint,2,j,i) = int2_grad1_u12_ao(j,i,ipoint,2) - int2_grad1_u12_ao_t(ipoint,3,j,i) = int2_grad1_u12_ao(j,i,ipoint,3) - enddo - enddo - enddo - - !call wall_time(wall1) - !print *, ' wall time for int2_grad1_u12_ao_t (min) =', (wall1 - wall0) / 60.d0 - !call print_memory_usage() - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp, (n_points_final_grid, 3, mo_num, mo_num)] - - implicit none - integer :: i, j, ipoint - - do i = 1, mo_num - do j = 1, mo_num - do ipoint = 1, n_points_final_grid - mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,1,j,i) = mo_x_v_ki_bi_ortho_erf_rk_cst_mu(j,i,1,ipoint) - mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,2,j,i) = mo_x_v_ki_bi_ortho_erf_rk_cst_mu(j,i,2,ipoint) - mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,3,j,i) = mo_x_v_ki_bi_ortho_erf_rk_cst_mu(j,i,3,ipoint) - enddo - enddo - enddo -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, x_W_ki_bi_ortho_erf_rk, (n_points_final_grid, 3, mo_num, mo_num)] - - BEGIN_DOC - ! - ! x_W_ki_bi_ortho_erf_rk(ip,m,k,i) = \int dr chi_k(r) \frac{(1 - erf(mu |r-R_ip|))}{2|r-R_ip|} (x(m)-R_ip(m)) phi_i(r) ON THE BI-ORTHO MO BASIS - ! - ! where chi_k(r)/phi_i(r) are left/right MOs, m=1 => X(m) = x, m=2 => X(m) = y, m=3 => X(m) = z, - ! - ! R_ip = the "ip"-th point of the DFT Grid - END_DOC - - implicit none - include 'constants.include.F' - - integer :: ipoint, m, i, k - double precision :: xyz - double precision :: wall0, wall1 - - !print*, ' providing x_W_ki_bi_ortho_erf_rk ...' - !call wall_time(wall0) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint,m,i,k,xyz) & - !$OMP SHARED (x_W_ki_bi_ortho_erf_rk,n_points_final_grid,mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp,mo_v_ki_bi_ortho_erf_rk_cst_mu_transp,mo_num,final_grid_points) - !$OMP DO SCHEDULE (dynamic) - do i = 1, mo_num - do k = 1, mo_num - do m = 1, 3 - do ipoint = 1, n_points_final_grid - xyz = final_grid_points(m,ipoint) - x_W_ki_bi_ortho_erf_rk(ipoint,m,k,i) = mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,m,k,i) - xyz * mo_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,k,i) - enddo - enddo - enddo - enddo - - !$OMP END DO - !$OMP END PARALLEL - - ! FREE mo_v_ki_bi_ortho_erf_rk_cst_mu_transp - ! FREE mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp - - !call wall_time(wall1) - !print *, ' time to provide x_W_ki_bi_ortho_erf_rk = ', wall1 - wall0 - -END_PROVIDER - -! --- - -BEGIN_PROVIDER [ double precision, x_W_ki_bi_ortho_erf_rk_diag, (n_points_final_grid, 3, mo_num)] - BEGIN_DOC - ! x_W_ki_bi_ortho_erf_rk_diag(ip,m,i) = \int dr chi_i(r) (1 - erf(mu |r-R_ip|)) (x(m)-X(m)_ip) phi_i(r) ON THE BI-ORTHO MO BASIS -! -! where chi_k(r)/phi_i(r) are left/right MOs, m=1 => X(m) = x, m=2 => X(m) = y, m=3 => X(m) = z, -! -! R_ip = the "ip"-th point of the DFT Grid - END_DOC - - implicit none - include 'constants.include.F' - - integer :: ipoint, m, i - double precision :: xyz - double precision :: wall0, wall1 - - !print*,'providing x_W_ki_bi_ortho_erf_rk_diag ...' - !call wall_time(wall0) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint,m,i,xyz) & - !$OMP SHARED (x_W_ki_bi_ortho_erf_rk_diag,n_points_final_grid,mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp,mo_v_ki_bi_ortho_erf_rk_cst_mu_transp,mo_num,final_grid_points) - !$OMP DO SCHEDULE (dynamic) - do i = 1, mo_num - do m = 1, 3 - do ipoint = 1, n_points_final_grid - xyz = final_grid_points(m,ipoint) - x_W_ki_bi_ortho_erf_rk_diag(ipoint,m,i) = mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,m,i,i) - xyz * mo_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,i,i) - enddo - enddo - enddo - - !$OMP END DO - !$OMP END PARALLEL - - !call wall_time(wall1) - !print*,'time to provide x_W_ki_bi_ortho_erf_rk_diag = ',wall1 - wall0 + call wall_time(tt2) + write(*,"(A,2X,F15.7)") ' wall time for int2_grad1_u12_bimo_t (sec) = ', (tt2 - tt1) END_PROVIDER diff --git a/plugins/local/bi_ort_ints/semi_num_ints_mo_old.irp.f b/plugins/local/bi_ort_ints/semi_num_ints_mo_old.irp.f new file mode 100644 index 00000000..c2b9ad6d --- /dev/null +++ b/plugins/local/bi_ort_ints/semi_num_ints_mo_old.irp.f @@ -0,0 +1,362 @@ + +! --- + +! TODO :: optimization : transform into a DGEMM + +BEGIN_PROVIDER [ double precision, mo_v_ki_bi_ortho_erf_rk_cst_mu, (mo_num, mo_num, n_points_final_grid)] + + BEGIN_DOC + ! + ! mo_v_ki_bi_ortho_erf_rk_cst_mu(k,i,ip) = int dr chi_k(r) phi_i(r) (erf(mu |r - R_ip|) - 1 )/(2|r - R_ip|) on the BI-ORTHO MO basis + ! + ! where phi_k(r) is a LEFT MOs and phi_i(r) is a RIGHT MO + ! + ! R_ip = the "ip"-th point of the DFT Grid + ! + END_DOC + + implicit none + integer :: ipoint + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (n_points_final_grid,v_ij_erf_rk_cst_mu,mo_v_ki_bi_ortho_erf_rk_cst_mu) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho( v_ij_erf_rk_cst_mu (1,1,ipoint), size(v_ij_erf_rk_cst_mu, 1) & + , mo_v_ki_bi_ortho_erf_rk_cst_mu(1,1,ipoint), size(mo_v_ki_bi_ortho_erf_rk_cst_mu, 1) ) + enddo + !$OMP END DO + !$OMP END PARALLEL + + mo_v_ki_bi_ortho_erf_rk_cst_mu = mo_v_ki_bi_ortho_erf_rk_cst_mu * 0.5d0 + +END_PROVIDER + +! --- + +BEGIN_PROVIDER [ double precision, mo_v_ki_bi_ortho_erf_rk_cst_mu_transp, (n_points_final_grid, mo_num, mo_num)] + + BEGIN_DOC + ! + ! int dr phi_i(r) phi_j(r) (erf(mu(R) |r - R|) - 1)/(2|r - R|) on the BI-ORTHO MO basis + ! + END_DOC + + implicit none + integer :: ipoint, i, j + + do i = 1, mo_num + do j = 1, mo_num + do ipoint = 1, n_points_final_grid + mo_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,j,i) = mo_v_ki_bi_ortho_erf_rk_cst_mu(j,i,ipoint) + enddo + enddo + enddo + + !FREE mo_v_ki_bi_ortho_erf_rk_cst_mu + +END_PROVIDER + +! --- + +! TODO :: optimization : transform into a DGEMM + +BEGIN_PROVIDER [ double precision, mo_x_v_ki_bi_ortho_erf_rk_cst_mu, (mo_num, mo_num, 3, n_points_final_grid)] + + BEGIN_DOC + ! + ! mo_x_v_ki_bi_ortho_erf_rk_cst_mu(k,i,m,ip) = int dr x(m) * chi_k(r) phi_i(r) (erf(mu |r - R_ip|) - 1)/2|r - R_ip| on the BI-ORTHO MO basis + ! + ! where chi_k(r)/phi_i(r) are left/right MOs, m=1 => x(m) = x, m=2 => x(m) = y, m=3 => x(m) = z, + ! + ! R_ip = the "ip"-th point of the DFT Grid + ! + END_DOC + + implicit none + integer :: ipoint + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (n_points_final_grid,x_v_ij_erf_rk_cst_mu_transp,mo_x_v_ki_bi_ortho_erf_rk_cst_mu) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + + call ao_to_mo_bi_ortho( x_v_ij_erf_rk_cst_mu_transp (1,1,1,ipoint), size(x_v_ij_erf_rk_cst_mu_transp, 1) & + , mo_x_v_ki_bi_ortho_erf_rk_cst_mu(1,1,1,ipoint), size(mo_x_v_ki_bi_ortho_erf_rk_cst_mu, 1) ) + call ao_to_mo_bi_ortho( x_v_ij_erf_rk_cst_mu_transp (1,1,2,ipoint), size(x_v_ij_erf_rk_cst_mu_transp, 1) & + , mo_x_v_ki_bi_ortho_erf_rk_cst_mu(1,1,2,ipoint), size(mo_x_v_ki_bi_ortho_erf_rk_cst_mu, 1) ) + call ao_to_mo_bi_ortho( x_v_ij_erf_rk_cst_mu_transp (1,1,3,ipoint), size(x_v_ij_erf_rk_cst_mu_transp, 1) & + , mo_x_v_ki_bi_ortho_erf_rk_cst_mu(1,1,3,ipoint), size(mo_x_v_ki_bi_ortho_erf_rk_cst_mu, 1) ) + + enddo + !$OMP END DO + !$OMP END PARALLEL + + mo_x_v_ki_bi_ortho_erf_rk_cst_mu = 0.5d0 * mo_x_v_ki_bi_ortho_erf_rk_cst_mu + +END_PROVIDER + +! --- + +BEGIN_PROVIDER [ double precision, int2_grad1_u12_ao_transp, (ao_num, ao_num, 3, n_points_final_grid)] + + implicit none + integer :: i, j, ipoint + double precision :: wall0, wall1 + + !print *, ' providing int2_grad1_u12_ao_transp ...' + !call wall_time(wall0) + + if(test_cycle_tc) then + + PROVIDE int2_grad1_u12_ao_test + + do ipoint = 1, n_points_final_grid + do i = 1, ao_num + do j = 1, ao_num + int2_grad1_u12_ao_transp(j,i,1,ipoint) = int2_grad1_u12_ao_test(j,i,ipoint,1) + int2_grad1_u12_ao_transp(j,i,2,ipoint) = int2_grad1_u12_ao_test(j,i,ipoint,2) + int2_grad1_u12_ao_transp(j,i,3,ipoint) = int2_grad1_u12_ao_test(j,i,ipoint,3) + enddo + enddo + enddo + + FREE int2_grad1_u12_ao_test + + else + + PROVIDE int2_grad1_u12_ao + + do ipoint = 1, n_points_final_grid + do i = 1, ao_num + do j = 1, ao_num + int2_grad1_u12_ao_transp(j,i,1,ipoint) = int2_grad1_u12_ao(j,i,ipoint,1) + int2_grad1_u12_ao_transp(j,i,2,ipoint) = int2_grad1_u12_ao(j,i,ipoint,2) + int2_grad1_u12_ao_transp(j,i,3,ipoint) = int2_grad1_u12_ao(j,i,ipoint,3) + enddo + enddo + enddo + + endif + + !call wall_time(wall1) + !print *, ' wall time for int2_grad1_u12_ao_transp (min) = ', (wall1 - wall0) / 60.d0 + !call print_memory_usage() + +END_PROVIDER + +! --- + +BEGIN_PROVIDER [double precision, int2_grad1_u12_bimo_transp, (mo_num, mo_num, 3, n_points_final_grid)] + + implicit none + integer :: ipoint + double precision :: wall0, wall1 + + PROVIDE mo_l_coef mo_r_coef + PROVIDE int2_grad1_u12_ao_transp + + !print *, ' providing int2_grad1_u12_bimo_transp ...' + !call wall_time(wall0) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (n_points_final_grid,int2_grad1_u12_ao_transp,int2_grad1_u12_bimo_transp) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,1,ipoint), size(int2_grad1_u12_ao_transp , 1) & + , int2_grad1_u12_bimo_transp(1,1,1,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) + call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,2,ipoint), size(int2_grad1_u12_ao_transp , 1) & + , int2_grad1_u12_bimo_transp(1,1,2,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) + call ao_to_mo_bi_ortho( int2_grad1_u12_ao_transp (1,1,3,ipoint), size(int2_grad1_u12_ao_transp , 1) & + , int2_grad1_u12_bimo_transp(1,1,3,ipoint), size(int2_grad1_u12_bimo_transp, 1) ) + enddo + !$OMP END DO + !$OMP END PARALLEL + + !FREE int2_grad1_u12_ao_transp + + !call wall_time(wall1) + !print *, ' wall time for int2_grad1_u12_bimo_transp (min) =', (wall1 - wall0) / 60.d0 + !call print_memory_usage() + +END_PROVIDER + +! --- + +BEGIN_PROVIDER [double precision, int2_grad1_u12_bimo_t_old, (n_points_final_grid, 3, mo_num, mo_num)] + + implicit none + integer :: i, j, ipoint + double precision :: wall0, wall1 + + !call wall_time(wall0) + !print *, ' providing int2_grad1_u12_bimo_t_old ...' + + PROVIDE mo_l_coef mo_r_coef + PROVIDE int2_grad1_u12_bimo_transp + + do ipoint = 1, n_points_final_grid + do i = 1, mo_num + do j = 1, mo_num + int2_grad1_u12_bimo_t_old(ipoint,1,j,i) = int2_grad1_u12_bimo_transp(j,i,1,ipoint) + int2_grad1_u12_bimo_t_old(ipoint,2,j,i) = int2_grad1_u12_bimo_transp(j,i,2,ipoint) + int2_grad1_u12_bimo_t_old(ipoint,3,j,i) = int2_grad1_u12_bimo_transp(j,i,3,ipoint) + enddo + enddo + enddo + + FREE int2_grad1_u12_bimo_transp + + !call wall_time(wall1) + !print *, ' wall time for int2_grad1_u12_bimo_t_old (min) =', (wall1 - wall0) / 60.d0 + !call print_memory_usage() + +END_PROVIDER + +! --- + +BEGIN_PROVIDER [double precision, int2_grad1_u12_ao_t, (n_points_final_grid, 3, ao_num, ao_num)] + + implicit none + integer :: i, j, ipoint + double precision :: wall0, wall1 + + !call wall_time(wall0) + !print *, ' providing int2_grad1_u12_ao_t ...' + + PROVIDE int2_grad1_u12_ao + + do ipoint = 1, n_points_final_grid + do i = 1, ao_num + do j = 1, ao_num + int2_grad1_u12_ao_t(ipoint,1,j,i) = int2_grad1_u12_ao(j,i,ipoint,1) + int2_grad1_u12_ao_t(ipoint,2,j,i) = int2_grad1_u12_ao(j,i,ipoint,2) + int2_grad1_u12_ao_t(ipoint,3,j,i) = int2_grad1_u12_ao(j,i,ipoint,3) + enddo + enddo + enddo + + !call wall_time(wall1) + !print *, ' wall time for int2_grad1_u12_ao_t (min) =', (wall1 - wall0) / 60.d0 + !call print_memory_usage() + +END_PROVIDER + +! --- + +BEGIN_PROVIDER [ double precision, mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp, (n_points_final_grid, 3, mo_num, mo_num)] + + implicit none + integer :: i, j, ipoint + + do i = 1, mo_num + do j = 1, mo_num + do ipoint = 1, n_points_final_grid + mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,1,j,i) = mo_x_v_ki_bi_ortho_erf_rk_cst_mu(j,i,1,ipoint) + mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,2,j,i) = mo_x_v_ki_bi_ortho_erf_rk_cst_mu(j,i,2,ipoint) + mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,3,j,i) = mo_x_v_ki_bi_ortho_erf_rk_cst_mu(j,i,3,ipoint) + enddo + enddo + enddo +END_PROVIDER + +! --- + +BEGIN_PROVIDER [ double precision, x_W_ki_bi_ortho_erf_rk, (n_points_final_grid, 3, mo_num, mo_num)] + + BEGIN_DOC + ! + ! x_W_ki_bi_ortho_erf_rk(ip,m,k,i) = \int dr chi_k(r) \frac{(1 - erf(mu |r-R_ip|))}{2|r-R_ip|} (x(m)-R_ip(m)) phi_i(r) ON THE BI-ORTHO MO BASIS + ! + ! where chi_k(r)/phi_i(r) are left/right MOs, m=1 => X(m) = x, m=2 => X(m) = y, m=3 => X(m) = z, + ! + ! R_ip = the "ip"-th point of the DFT Grid + END_DOC + + implicit none + include 'constants.include.F' + + integer :: ipoint, m, i, k + double precision :: xyz + double precision :: wall0, wall1 + + !print*, ' providing x_W_ki_bi_ortho_erf_rk ...' + !call wall_time(wall0) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint,m,i,k,xyz) & + !$OMP SHARED (x_W_ki_bi_ortho_erf_rk,n_points_final_grid,mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp,mo_v_ki_bi_ortho_erf_rk_cst_mu_transp,mo_num,final_grid_points) + !$OMP DO SCHEDULE (dynamic) + do i = 1, mo_num + do k = 1, mo_num + do m = 1, 3 + do ipoint = 1, n_points_final_grid + xyz = final_grid_points(m,ipoint) + x_W_ki_bi_ortho_erf_rk(ipoint,m,k,i) = mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,m,k,i) - xyz * mo_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,k,i) + enddo + enddo + enddo + enddo + + !$OMP END DO + !$OMP END PARALLEL + + ! FREE mo_v_ki_bi_ortho_erf_rk_cst_mu_transp + ! FREE mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp + + !call wall_time(wall1) + !print *, ' time to provide x_W_ki_bi_ortho_erf_rk = ', wall1 - wall0 + +END_PROVIDER + +! --- + +BEGIN_PROVIDER [ double precision, x_W_ki_bi_ortho_erf_rk_diag, (n_points_final_grid, 3, mo_num)] + BEGIN_DOC + ! x_W_ki_bi_ortho_erf_rk_diag(ip,m,i) = \int dr chi_i(r) (1 - erf(mu |r-R_ip|)) (x(m)-X(m)_ip) phi_i(r) ON THE BI-ORTHO MO BASIS +! +! where chi_k(r)/phi_i(r) are left/right MOs, m=1 => X(m) = x, m=2 => X(m) = y, m=3 => X(m) = z, +! +! R_ip = the "ip"-th point of the DFT Grid + END_DOC + + implicit none + include 'constants.include.F' + + integer :: ipoint, m, i + double precision :: xyz + double precision :: wall0, wall1 + + !print*,'providing x_W_ki_bi_ortho_erf_rk_diag ...' + !call wall_time(wall0) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint,m,i,xyz) & + !$OMP SHARED (x_W_ki_bi_ortho_erf_rk_diag,n_points_final_grid,mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp,mo_v_ki_bi_ortho_erf_rk_cst_mu_transp,mo_num,final_grid_points) + !$OMP DO SCHEDULE (dynamic) + do i = 1, mo_num + do m = 1, 3 + do ipoint = 1, n_points_final_grid + xyz = final_grid_points(m,ipoint) + x_W_ki_bi_ortho_erf_rk_diag(ipoint,m,i) = mo_x_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,m,i,i) - xyz * mo_v_ki_bi_ortho_erf_rk_cst_mu_transp(ipoint,i,i) + enddo + enddo + enddo + + !$OMP END DO + !$OMP END PARALLEL + + !call wall_time(wall1) + !print*,'time to provide x_W_ki_bi_ortho_erf_rk_diag = ',wall1 - wall0 + +END_PROVIDER + +! --- + diff --git a/plugins/local/bi_ortho_mos/bi_ort_mos_in_r.irp.f b/plugins/local/bi_ortho_mos/bi_ort_mos_in_r.irp.f index 15ed2ce4..b1c2dc87 100644 --- a/plugins/local/bi_ortho_mos/bi_ort_mos_in_r.irp.f +++ b/plugins/local/bi_ortho_mos/bi_ort_mos_in_r.irp.f @@ -16,7 +16,7 @@ double precision :: r(3) double precision, allocatable :: aos_r(:,:) - call cpu_time(tt0) + call wall_time(tt0) allocate(aos_r(ao_num,n_points_final_grid)) @@ -27,7 +27,7 @@ call give_all_aos_at_r(r, aos_r(1,1)) - call cpu_time(tt2) + call wall_time(tt2) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & @@ -43,7 +43,7 @@ !$OMP END DO !$OMP END PARALLEL - call cpu_time(tt3) + call wall_time(tt3) write(*,"(A,2X,F15.7)") ' wall time for AOs on r (sec) = ', (tt3 - tt2) @@ -63,7 +63,7 @@ deallocate(aos_r) - call cpu_time(tt1) + call wall_time(tt1) write(*,"(A,2X,F15.7)") ' wall time for mos_l_in_r_array_transp & mos_r_in_r_array_transp (sec) = ', (tt1 - tt0) END_PROVIDER From 2b244248911b6777596912075f738dd2fbfb952c Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Thu, 8 Aug 2024 23:41:03 +0200 Subject: [PATCH 146/159] 2e-noL with CUDA --- .../local/bi_ort_ints/semi_num_ints_mo.irp.f | 6 +- plugins/local/tc_int/LIB | 2 +- plugins/local/tc_int/NEED | 1 + plugins/local/tc_int/cutc_module.F90 | 62 +- plugins/local/tc_int/deb_int_2e_ao_gpu.irp.f | 282 ++++++++ plugins/local/tc_int/deb_no_2e_gpu.irp.f | 418 ++++++++++++ plugins/local/tc_int/deb_tc_int_cuda.irp.f | 283 +------- plugins/local/tc_int/install | 2 +- plugins/local/tc_int/no_0e.irp.f | 412 ++++++++++++ plugins/local/tc_int/no_1e.irp.f | 602 +++++++++++++++++ plugins/local/tc_int/no_2e.irp.f | 605 ++++++++++++++++++ plugins/local/tc_int/uninstall | 2 +- plugins/local/tc_int/write_tc_int_cuda.irp.f | 12 +- 13 files changed, 2389 insertions(+), 300 deletions(-) create mode 100644 plugins/local/tc_int/deb_int_2e_ao_gpu.irp.f create mode 100644 plugins/local/tc_int/deb_no_2e_gpu.irp.f create mode 100644 plugins/local/tc_int/no_0e.irp.f create mode 100644 plugins/local/tc_int/no_1e.irp.f create mode 100644 plugins/local/tc_int/no_2e.irp.f diff --git a/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f b/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f index 1fd5d666..dc7642b0 100644 --- a/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f +++ b/plugins/local/bi_ort_ints/semi_num_ints_mo.irp.f @@ -21,9 +21,9 @@ BEGIN_PROVIDER [double precision, int2_grad1_u12_bimo_t, (n_points_final_grid, 3 !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) !$OMP DO SCHEDULE (dynamic) do ipoint = 1, n_points_final_grid - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp (1,1,ipoint,1), mo_num) - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp (1,1,ipoint,2), mo_num) - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp (1,1,ipoint,3), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) enddo !$OMP END DO !$OMP END PARALLEL diff --git a/plugins/local/tc_int/LIB b/plugins/local/tc_int/LIB index c41ceb9d..9f7e2d9f 100644 --- a/plugins/local/tc_int/LIB +++ b/plugins/local/tc_int/LIB @@ -1 +1 @@ --ltc_int_cu +-lcutcint diff --git a/plugins/local/tc_int/NEED b/plugins/local/tc_int/NEED index 34d2e183..362314da 100644 --- a/plugins/local/tc_int/NEED +++ b/plugins/local/tc_int/NEED @@ -4,3 +4,4 @@ jastrow qmckl becke_numerical_grid dft_utils_in_r +bi_ortho_mos diff --git a/plugins/local/tc_int/cutc_module.F90 b/plugins/local/tc_int/cutc_module.F90 index 1f55d763..d7b922cd 100644 --- a/plugins/local/tc_int/cutc_module.F90 +++ b/plugins/local/tc_int/cutc_module.F90 @@ -9,13 +9,13 @@ module cutc_module ! --- - subroutine tc_int_c(nxBlocks, nyBlocks, nzBlocks, & - blockxSize, blockySize, blockzSize, & - n_grid1, n_grid2, n_ao, n_nuc, size_bh, & - r1, wr1, r2, wr2, rn, & - aos_data1, aos_data2, & - c_bh, m_bh, n_bh, o_bh, & - int2_grad1_u12_ao, int_2e_ao) bind(C, name = "tc_int_c") + subroutine cutc_int_c(nxBlocks, nyBlocks, nzBlocks, & + blockxSize, blockySize, blockzSize, & + n_grid1, n_grid2, n_ao, n_nuc, size_bh, & + r1, wr1, r2, wr2, rn, & + aos_data1, aos_data2, & + c_bh, m_bh, n_bh, o_bh, & + int2_grad1_u12_ao, int_2e_ao) bind(C, name = "cutc_int_c") import c_int, c_double, c_ptr integer(c_int), intent(in), value :: nxBlocks, blockxSize @@ -37,7 +37,7 @@ module cutc_module real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,3) real(c_double), intent(out) :: int_2e_ao(n_ao,n_ao,n_ao,n_ao) - end subroutine tc_int_c + end subroutine cutc_int_c ! --- @@ -50,6 +50,7 @@ module cutc_module int2_grad1_u12_ao, int_2e_ao) bind(C, name = "deb_int_2e_ao") import c_int, c_double, c_ptr + integer(c_int), intent(in), value :: nxBlocks, blockxSize integer(c_int), intent(in), value :: nyBlocks, blockySize integer(c_int), intent(in), value :: nzBlocks, blockzSize @@ -73,6 +74,51 @@ module cutc_module ! --- + subroutine cutc_no_2e(n_grid1, n_mo, ne_a, ne_b, & + wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & + no_2e) bind(C, name = "cutc_no_2e") + + import c_int, c_double, c_ptr + + integer(c_int), intent(in), value :: n_grid1 + integer(c_int), intent(in), value :: n_mo + integer(c_int), intent(in), value :: ne_a + integer(c_int), intent(in), value :: ne_b + real(c_double), intent(in) :: wr1(n_grid1) + real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) + real(c_double), intent(out) :: no_2e(n_mo,n_mo,n_mo,n_mo) + + end subroutine cutc_no_2e + + ! --- + + subroutine deb_no_2e(n_grid1, n_mo, ne_a, ne_b, & + wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & + tmpO, tmpJ, tmpA, tmpB, tmpC, tmpD, tmpE, & + no_2e) bind(C, name = "deb_no_2e") + + import c_int, c_double, c_ptr + + integer(c_int), intent(in), value :: n_grid1 + integer(c_int), intent(in), value :: n_mo + integer(c_int), intent(in), value :: ne_a + integer(c_int), intent(in), value :: ne_b + real(c_double), intent(in) :: wr1(n_grid1) + real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) + real(c_double), intent(out) :: tmpO(n_grid1), tmpJ(n_grid1,3) + real(c_double), intent(out) :: tmpA(n_grid1,3,n_mo), tmpB(n_grid1,3,n_mo) + real(c_double), intent(out) :: tmpC(n_grid1,4,n_mo,n_mo), tmpD(n_grid1,4,n_mo,n_mo) + real(c_double), intent(out) :: tmpE(n_mo,n_mo,n_mo,n_mo) + real(c_double), intent(out) :: no_2e(n_mo,n_mo,n_mo,n_mo) + + end subroutine deb_no_2e + + ! --- + end interface end module cutc_module diff --git a/plugins/local/tc_int/deb_int_2e_ao_gpu.irp.f b/plugins/local/tc_int/deb_int_2e_ao_gpu.irp.f new file mode 100644 index 00000000..3290c149 --- /dev/null +++ b/plugins/local/tc_int/deb_int_2e_ao_gpu.irp.f @@ -0,0 +1,282 @@ + +! --- + +subroutine deb_int_2e_ao_gpu() + + use cutc_module + + implicit none + + integer :: m + integer :: i, j, k, l + integer :: ipoint, jpoint + + double precision :: weight1, ao_i_r, ao_k_r + + double precision :: acc_thr, err_tot, nrm_tot, err_loc + + double precision :: time0, time1 + double precision :: wall_time0, wall_time1 + double precision :: wall_ttime0, wall_ttime1 + double precision :: tt1, tt2 + + double precision, allocatable :: rn(:,:), aos_data1(:,:,:), aos_data2(:,:,:) + double precision, allocatable :: grad1_u12(:,:,:), int_fct_long_range(:,:,:), c_mat(:,:,:) + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: int2_grad1_u12_ao_gpu(:,:,:,:) + double precision, allocatable :: int_2e_ao(:,:,:,:) + double precision, allocatable :: int_2e_ao_gpu(:,:,:,:) + + + + call wall_time(time0) + print*, ' start deb_int_2e_ao_gpu' + + + ! --- + + allocate(rn(3,nucl_num)) + allocate(aos_data1(n_points_final_grid,ao_num,4)) + allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) + + do k = 1, nucl_num + rn(1,k) = nucl_coord(k,1) + rn(2,k) = nucl_coord(k,2) + rn(3,k) = nucl_coord(k,3) + enddo + + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + aos_data1(ipoint,k,1) = aos_in_r_array(k,ipoint) + aos_data1(ipoint,k,2) = aos_grad_in_r_array(k,ipoint,1) + aos_data1(ipoint,k,3) = aos_grad_in_r_array(k,ipoint,2) + aos_data1(ipoint,k,4) = aos_grad_in_r_array(k,ipoint,3) + enddo + enddo + + do k = 1, ao_num + do ipoint = 1, n_points_extra_final_grid + aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) + aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) + aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) + aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) + enddo + enddo + + ! --- + + integer :: nB + integer :: sB + + PROVIDE nxBlocks nyBlocks nzBlocks + PROVIDE blockxSize blockySize blockzSize + + sB = 32 + nB = (n_points_final_grid + sB - 1) / sB + + call ezfio_set_tc_int_blockxSize(sB) + call ezfio_set_tc_int_nxBlocks(nB) + + allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,3)) + allocate(int_2e_ao_gpu(ao_num,ao_num,ao_num,ao_num)) + + call deb_int_2e_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & + n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & + final_grid_points, final_weight_at_r_vector, & + final_grid_points_extra, final_weight_at_r_vector_extra, & + rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & + int2_grad1_u12_ao_gpu, int_2e_ao_gpu) + + ! --- + + allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) + allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + allocate(int_2e_ao(ao_num,ao_num,ao_num,ao_num)) + + call wall_time(wall_time0) + + call wall_time(wall_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO SCHEDULE (static) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (wall_ttime1 - wall_ttime0) + + + call wall_time(wall_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) + !$OMP DO + do ipoint = 1, n_points_final_grid + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & + , grad1_u12(1,ipoint,2) & + , grad1_u12(1,ipoint,3) & + , grad1_u12(1,ipoint,4) ) + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (wall_ttime1 - wall_ttime0) + + + call wall_time(wall_ttime0) + do m = 1, 4 + call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & + , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) + enddo + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for DGEMM of integ over r2 (sec) = ', (wall_ttime1 - wall_ttime0) + + + call wall_time(wall_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint) & + !$OMP SHARED (aos_in_r_array_transp, c_mat, ao_num, n_points_final_grid, final_weight_at_r_vector) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + c_mat(ipoint,k,i) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,k) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time of Hermitian part (sec) = ', (wall_ttime1 - wall_ttime0) + + + call wall_time(wall_ttime0) + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & + , int2_grad1_u12_ao(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 0.d0, int_2e_ao(1,1,1,1), ao_num*ao_num) + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for DGEMM of Hermitian part (sec) = ', (wall_ttime1 - wall_ttime0) + + + tt1 = 0.d0 + tt2 = 0.d0 + do m = 1, 3 + + call wall_time(wall_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & + !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, c_mat, & + !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector, m) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + + weight1 = final_weight_at_r_vector(ipoint) + ao_i_r = aos_in_r_array_transp(ipoint,i) + ao_k_r = aos_in_r_array_transp(ipoint,k) + + c_mat(ipoint,k,i) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,m) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,m)) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(wall_ttime1) + tt1 += wall_ttime1 - wall_ttime0 + + call wall_time(wall_ttime0) + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -0.5d0 & + , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 1.d0, int_2e_ao(1,1,1,1), ao_num*ao_num) + call wall_time(wall_ttime1) + tt2 += wall_ttime1 - wall_ttime0 + enddo + write(*,"(A,2X,F15.7)") ' wall time of non-Hermitian part (sec) = ', tt1 + write(*,"(A,2X,F15.7)") ' wall time for DGEMM of non Hermitian part (sec) = ', tt2 + + + call wall_time(wall_ttime0) + call sum_A_At(int_2e_ao(1,1,1,1), ao_num*ao_num) + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time of A + A.T (sec) = ', wall_ttime1 - wall_ttime0 + + + call wall_time(wall_time1) + write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (wall_time1 - wall_time0) + + ! --- + + acc_thr = 1d-12 + + print *, ' precision on int2_grad1_u12_ao ' + err_tot = 0.d0 + nrm_tot = 0.d0 + do m = 1, 3 + do ipoint = 1, n_points_final_grid + do j = 1, ao_num + do i = 1, ao_num + err_loc = dabs(int2_grad1_u12_ao(i,j,ipoint,m) - int2_grad1_u12_ao_gpu(i,j,ipoint,m)) + if(err_loc > acc_thr) then + print*, " error on", i, j, ipoint, m + print*, " CPU res", int2_grad1_u12_ao (i,j,ipoint,m) + print*, " GPU res", int2_grad1_u12_ao_gpu(i,j,ipoint,m) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(int2_grad1_u12_ao(i,j,ipoint,m)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on int2_grad1_u12_ao (%) =', 100.d0 * err_tot / nrm_tot + + + print *, ' precision on int_2e_ao ' + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, ao_num + do j = 1, ao_num + do k = 1, ao_num + do l = 1, ao_num + err_loc = dabs(int_2e_ao(l,k,j,i) - int_2e_ao_gpu(l,k,j,i)) + if(err_loc > acc_thr) then + print*, " error on", l, k, j, i + print*, " CPU res", int_2e_ao (l,k,j,i) + print*, " GPU res", int_2e_ao_gpu(l,k,j,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(int_2e_ao(l,k,j,i)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on int_2e_ao (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + deallocate(int_fct_long_range, grad1_u12, c_mat) + deallocate(int_2e_ao, int2_grad1_u12_ao) + deallocate(int_2e_ao_gpu, int2_grad1_u12_ao_gpu) + deallocate(rn, aos_data1, aos_data2) + + call wall_time(time1) + write(*,"(A,2X,F15.7)") ' wall time for deb_int_2e_ao_gpu (sec) = ', (time1 - time0) + + return +end diff --git a/plugins/local/tc_int/deb_no_2e_gpu.irp.f b/plugins/local/tc_int/deb_no_2e_gpu.irp.f new file mode 100644 index 00000000..2be53ddd --- /dev/null +++ b/plugins/local/tc_int/deb_no_2e_gpu.irp.f @@ -0,0 +1,418 @@ + +! --- + +subroutine deb_no_2e_gpu() + + use cutc_module + + implicit none + + integer :: i, j, k, l, ipoint + double precision :: acc_thr, err_tot, nrm_tot, err_loc + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: tmp(:,:,:,:) + double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) + double precision, allocatable :: noL_2e(:,:,:,:) + double precision, allocatable :: noL_2e_gpu(:,:,:,:) + + + PROVIDE mo_l_coef mo_r_coef + PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp + + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) + print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") + read(11) int2_grad1_u12_ao + close(11) + + allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) + allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(int2_grad1_u12_ao) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, ipoint) & + !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) + !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + do i = 1, mo_num + do j = 1, mo_num + int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) + int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) + int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmp) + + ! --- + + allocate(noL_2e_gpu(mo_num,mo_num,mo_num,mo_num)) + + call cutc_no_2e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_2e_gpu(1,1,1,1)) + + ! --- + + allocate(noL_2e(mo_num,mo_num,mo_num,mo_num)) + + call provide_no_2e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_2e(1,1,1,1)) + + ! --- + + deallocate(int2_grad1_u12_bimo_t) + + acc_thr = 1d-12 + + print *, ' precision on noL_2e ' + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do j = 1, mo_num + do k = 1, mo_num + do l = 1, mo_num + err_loc = dabs(noL_2e(l,k,j,i) - noL_2e_gpu(l,k,j,i)) + if(err_loc > acc_thr) then + print*, " error on", l, k, j, i + print*, " CPU res", noL_2e (l,k,j,i) + print*, " GPU res", noL_2e_gpu(l,k,j,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(noL_2e(l,k,j,i)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on noL_2e (%) =', 100.d0 * err_tot / nrm_tot + + deallocate(noL_2e) + deallocate(noL_2e_gpu) + + + return + +end + +! --- + +subroutine deb_no_2e_gpu_tmp() + + use cutc_module + + implicit none + + integer :: i, j, k, l, m, ipoint + double precision :: acc_thr, err_tot, nrm_tot, err_loc + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: tmp(:,:,:,:) + double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) + double precision, allocatable :: tmpO(:), tmpO_gpu(:) + double precision, allocatable :: tmpJ(:,:), tmpJ_gpu(:,:) + double precision, allocatable :: tmpA(:,:,:), tmpA_gpu(:,:,:) + double precision, allocatable :: tmpB(:,:,:), tmpB_gpu(:,:,:) + double precision, allocatable :: tmpC(:,:,:,:), tmpC_gpu(:,:,:,:) + double precision, allocatable :: tmpD(:,:,:,:), tmpD_gpu(:,:,:,:) + double precision, allocatable :: tmpE(:,:,:,:), tmpE_gpu(:,:,:,:) + double precision, allocatable :: noL_2e(:,:,:,:), noL_2e_gpu(:,:,:,:) + + + PROVIDE mo_l_coef mo_r_coef + PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp + + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) + print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") + read(11) int2_grad1_u12_ao + close(11) + + allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) + allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(int2_grad1_u12_ao) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, ipoint) & + !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) + !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + do i = 1, mo_num + do j = 1, mo_num + int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) + int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) + int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmp) + + ! --- + + allocate(tmpO_gpu(n_points_final_grid)) + allocate(tmpJ_gpu(n_points_final_grid,3)) + allocate(tmpA_gpu(n_points_final_grid,3,mo_num)) + allocate(tmpB_gpu(n_points_final_grid,3,mo_num)) + allocate(tmpC_gpu(n_points_final_grid,4,mo_num,mo_num)) + allocate(tmpD_gpu(n_points_final_grid,4,mo_num,mo_num)) + allocate(tmpE_gpu(mo_num,mo_num,mo_num,mo_num)) + allocate(noL_2e_gpu(mo_num,mo_num,mo_num,mo_num)) + + call deb_no_2e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), & + tmpO_gpu(1), tmpJ_gpu(1,1), tmpA_gpu(1,1,1), tmpB_gpu(1,1,1), & + tmpC_gpu(1,1,1,1), tmpD_gpu(1,1,1,1), tmpE_gpu(1,1,1,1), & + noL_2e_gpu(1,1,1,1)) + + ! --- + + allocate(tmpO(n_points_final_grid)) + allocate(tmpJ(n_points_final_grid,3)) + allocate(tmpA(n_points_final_grid,3,mo_num)) + allocate(tmpB(n_points_final_grid,3,mo_num)) + allocate(tmpC(n_points_final_grid,4,mo_num,mo_num)) + allocate(tmpD(n_points_final_grid,4,mo_num,mo_num)) + allocate(tmpE(mo_num,mo_num,mo_num,mo_num)) + allocate(noL_2e(mo_num,mo_num,mo_num,mo_num)) + + call provide_no_2e_tmp(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), & + tmpO(1), tmpJ(1,1), tmpA(1,1,1), tmpB(1,1,1), & + tmpC(1,1,1,1), tmpD(1,1,1,1), tmpE(1,1,1,1), & + noL_2e(1,1,1,1)) + + ! --- + + deallocate(int2_grad1_u12_bimo_t) + + acc_thr = 1d-12 + + ! --- + + err_tot = 0.d0 + nrm_tot = 0.d0 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpO(ipoint) - tmpO_gpu(ipoint)) + if(err_loc > acc_thr) then + print*, " error on", ipoint + print*, " CPU res", tmpO (ipoint) + print*, " GPU res", tmpO_gpu(ipoint) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpO(ipoint)) + enddo + print *, ' absolute accuracy on tmpO (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + err_tot = 0.d0 + nrm_tot = 0.d0 + do m = 1, 3 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpJ(ipoint,m) - tmpJ_gpu(ipoint,m)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m + print*, " CPU res", tmpJ (ipoint,m) + print*, " GPU res", tmpJ_gpu(ipoint,m) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpJ(ipoint,m)) + enddo + enddo + print *, ' absolute accuracy on tmpJ (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do m = 1, 3 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpA(ipoint,m,i) - tmpA_gpu(ipoint,m,i)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m, i + print*, " CPU res", tmpA (ipoint,m,i) + print*, " GPU res", tmpA_gpu(ipoint,m,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpA(ipoint,m,i)) + enddo + enddo + enddo + print *, ' absolute accuracy on tmpA (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do m = 1, 3 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpB(ipoint,m,i) - tmpB_gpu(ipoint,m,i)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m, i + print*, " CPU res", tmpB (ipoint,m,i) + print*, " GPU res", tmpB_gpu(ipoint,m,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpB(ipoint,m,i)) + enddo + enddo + enddo + print *, ' absolute accuracy on tmpB (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do j = 1, mo_num + do m = 1, 3 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpC(ipoint,m,i,j) - tmpC_gpu(ipoint,m,i,j)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m, i, j + print*, " CPU res", tmpC (ipoint,m,i,j) + print*, " GPU res", tmpC_gpu(ipoint,m,i,j) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpC(ipoint,m,i,j)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on tmpC (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do j = 1, mo_num + do m = 1, 3 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpD(ipoint,m,i,j) - tmpD_gpu(ipoint,m,i,j)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m, i, j + print*, " CPU res", tmpD (ipoint,m,i,j) + print*, " GPU res", tmpD_gpu(ipoint,m,i,j) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpD(ipoint,m,i,j)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on tmpD (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do j = 1, mo_num + do k = 1, mo_num + do l = 1, mo_num + err_loc = dabs(tmpE(l,k,j,i) - tmpE_gpu(l,k,j,i)) + if(err_loc > acc_thr) then + print*, " error on", l, k, j, i + print*, " CPU res", tmpE (l,k,j,i) + print*, " GPU res", tmpE_gpu(l,k,j,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpE(l,k,j,i)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on tmpE (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do j = 1, mo_num + do k = 1, mo_num + do l = 1, mo_num + err_loc = dabs(noL_2e(l,k,j,i) - noL_2e_gpu(l,k,j,i)) + if(err_loc > acc_thr) then + print*, " error on", l, k, j, i + print*, " CPU res", noL_2e (l,k,j,i) + print*, " GPU res", noL_2e_gpu(l,k,j,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(noL_2e(l,k,j,i)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on noL_2e (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + deallocate(tmpO, tmpO_gpu) + deallocate(tmpJ, tmpJ_gpu) + deallocate(tmpA, tmpA_gpu) + deallocate(tmpB, tmpB_gpu) + deallocate(tmpC, tmpC_gpu) + deallocate(tmpD, tmpD_gpu) + deallocate(tmpE, tmpE_gpu) + deallocate(noL_2e, noL_2e_gpu) + + return +end + + diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f index 1a43141c..9da9ac95 100644 --- a/plugins/local/tc_int/deb_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/deb_tc_int_cuda.irp.f @@ -36,289 +36,12 @@ subroutine main() implicit none - call deb_int_2e_ao_gpu() + !call deb_int_2e_ao_gpu() + !call deb_no_2e_gpu_tmp() + call deb_no_2e_gpu() return end ! --- -subroutine deb_int_2e_ao_gpu() - - use cutc_module - - implicit none - - integer :: m - integer :: i, j, k, l - integer :: ipoint, jpoint - - double precision :: weight1, ao_i_r, ao_k_r - - double precision :: acc_thr, err_tot, nrm_tot, err_loc - - double precision :: time0, time1 - double precision :: cpu_time0, cpu_time1 - double precision :: cpu_ttime0, cpu_ttime1 - double precision :: tt1, tt2 - - double precision, allocatable :: rn(:,:), aos_data1(:,:,:), aos_data2(:,:,:) - double precision, allocatable :: grad1_u12(:,:,:), int_fct_long_range(:,:,:), c_mat(:,:,:) - double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) - double precision, allocatable :: int2_grad1_u12_ao_gpu(:,:,:,:) - double precision, allocatable :: int_2e_ao(:,:,:,:) - double precision, allocatable :: int_2e_ao_gpu(:,:,:,:) - - - - call wall_time(time0) - print*, ' start deb_int_2e_ao_gpu' - - - ! --- - - allocate(rn(3,nucl_num)) - allocate(aos_data1(n_points_final_grid,ao_num,4)) - allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) - - do k = 1, nucl_num - rn(1,k) = nucl_coord(k,1) - rn(2,k) = nucl_coord(k,2) - rn(3,k) = nucl_coord(k,3) - enddo - - do k = 1, ao_num - do ipoint = 1, n_points_final_grid - aos_data1(ipoint,k,1) = aos_in_r_array(k,ipoint) - aos_data1(ipoint,k,2) = aos_grad_in_r_array(k,ipoint,1) - aos_data1(ipoint,k,3) = aos_grad_in_r_array(k,ipoint,2) - aos_data1(ipoint,k,4) = aos_grad_in_r_array(k,ipoint,3) - enddo - enddo - - do k = 1, ao_num - do ipoint = 1, n_points_extra_final_grid - aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) - aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) - aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) - aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) - enddo - enddo - - ! --- - - integer :: nB - integer :: sB - - PROVIDE nxBlocks nyBlocks nzBlocks - PROVIDE blockxSize blockySize blockzSize - - sB = 32 - nB = (n_points_final_grid + sB - 1) / sB - - call ezfio_set_tc_int_blockxSize(sB) - call ezfio_set_tc_int_nxBlocks(nB) - - allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,3)) - allocate(int_2e_ao_gpu(ao_num,ao_num,ao_num,ao_num)) - - call deb_int_2e_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & - n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & - final_grid_points, final_weight_at_r_vector, & - final_grid_points_extra, final_weight_at_r_vector_extra, & - rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & - int2_grad1_u12_ao_gpu, int_2e_ao_gpu) - - ! --- - - allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) - allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) - allocate(c_mat(n_points_final_grid,ao_num,ao_num)) - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) - allocate(int_2e_ao(ao_num,ao_num,ao_num,ao_num)) - - call wall_time(cpu_time0) - - call wall_time(cpu_ttime0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (j, i, jpoint) & - !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) - !$OMP DO SCHEDULE (static) - do j = 1, ao_num - do i = 1, ao_num - do jpoint = 1, n_points_extra_final_grid - int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - call wall_time(cpu_ttime0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) - !$OMP DO - do ipoint = 1, n_points_final_grid - call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & - , grad1_u12(1,ipoint,2) & - , grad1_u12(1,ipoint,3) & - , grad1_u12(1,ipoint,4) ) - enddo - !$OMP END DO - !$OMP END PARALLEL - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - call wall_time(cpu_ttime0) - do m = 1, 4 - call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & - , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & - , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) - enddo - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for DGEMM of integ over r2 (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - call wall_time(cpu_ttime0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, k, ipoint) & - !$OMP SHARED (aos_in_r_array_transp, c_mat, ao_num, n_points_final_grid, final_weight_at_r_vector) - !$OMP DO SCHEDULE (static) - do i = 1, ao_num - do k = 1, ao_num - do ipoint = 1, n_points_final_grid - c_mat(ipoint,k,i) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,k) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time of Hermitian part (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - call wall_time(cpu_ttime0) - call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & - , int2_grad1_u12_ao(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & - , 0.d0, int_2e_ao(1,1,1,1), ao_num*ao_num) - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time for DGEMM of Hermitian part (sec) = ', (cpu_ttime1 - cpu_ttime0) - - - tt1 = 0.d0 - tt2 = 0.d0 - do m = 1, 3 - - call wall_time(cpu_ttime0) - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & - !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, c_mat, & - !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector, m) - !$OMP DO SCHEDULE (static) - do i = 1, ao_num - do k = 1, ao_num - do ipoint = 1, n_points_final_grid - - weight1 = final_weight_at_r_vector(ipoint) - ao_i_r = aos_in_r_array_transp(ipoint,i) - ao_k_r = aos_in_r_array_transp(ipoint,k) - - c_mat(ipoint,k,i) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,m) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,m)) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - call wall_time(cpu_ttime1) - tt1 += cpu_ttime1 - cpu_ttime0 - - call wall_time(cpu_ttime0) - call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -0.5d0 & - , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & - , 1.d0, int_2e_ao(1,1,1,1), ao_num*ao_num) - call wall_time(cpu_ttime1) - tt2 += cpu_ttime1 - cpu_ttime0 - enddo - write(*,"(A,2X,F15.7)") ' wall time of non-Hermitian part (sec) = ', tt1 - write(*,"(A,2X,F15.7)") ' wall time for DGEMM of non Hermitian part (sec) = ', tt2 - - - call wall_time(cpu_ttime0) - call sum_A_At(int_2e_ao(1,1,1,1), ao_num*ao_num) - call wall_time(cpu_ttime1) - write(*,"(A,2X,F15.7)") ' wall time of A + A.T (sec) = ', cpu_ttime1 - cpu_ttime0 - - - call wall_time(cpu_time1) - write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (cpu_time1 - cpu_time0) - - ! --- - - acc_thr = 1d-12 - - print *, ' precision on int2_grad1_u12_ao ' - err_tot = 0.d0 - nrm_tot = 0.d0 - do m = 1, 3 - do ipoint = 1, n_points_final_grid - do j = 1, ao_num - do i = 1, ao_num - err_loc = dabs(int2_grad1_u12_ao(i,j,ipoint,m) - int2_grad1_u12_ao_gpu(i,j,ipoint,m)) - if(err_loc > acc_thr) then - print*, " error on", i, j, ipoint, m - print*, " CPU res", int2_grad1_u12_ao (i,j,ipoint,m) - print*, " GPU res", int2_grad1_u12_ao_gpu(i,j,ipoint,m) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(int2_grad1_u12_ao(i,j,ipoint,m)) - enddo - enddo - enddo - enddo - print *, ' absolute accuracy on int2_grad1_u12_ao (%) =', 100.d0 * err_tot / nrm_tot - - - print *, ' precision on int_2e_ao ' - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, ao_num - do j = 1, ao_num - do k = 1, ao_num - do l = 1, ao_num - err_loc = dabs(int_2e_ao(l,k,j,i) - int_2e_ao_gpu(l,k,j,i)) - if(err_loc > acc_thr) then - print*, " error on", l, k, j, i - print*, " CPU res", int_2e_ao (l,k,j,i) - print*, " GPU res", int_2e_ao_gpu(l,k,j,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(int_2e_ao(l,k,j,i)) - enddo - enddo - enddo - enddo - print *, ' absolute accuracy on int_2e_ao (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - deallocate(int_fct_long_range, grad1_u12, c_mat) - deallocate(int_2e_ao, int2_grad1_u12_ao) - deallocate(int_2e_ao_gpu, int2_grad1_u12_ao_gpu) - deallocate(rn, aos_data1, aos_data2) - - call wall_time(time1) - write(*,"(A,2X,F15.7)") ' wall time for deb_int_2e_ao_gpu (sec) = ', (time1 - time0) - - return -end diff --git a/plugins/local/tc_int/install b/plugins/local/tc_int/install index 34e56b4a..be779c3a 100755 --- a/plugins/local/tc_int/install +++ b/plugins/local/tc_int/install @@ -14,5 +14,5 @@ source config/env.rc make cd .. -ln -s ${PWD}/CuTC/build/libtc_int_cu.so ${QP_ROOT}/lib +ln -s ${PWD}/CuTC/build/libcutcint.so ${QP_ROOT}/lib diff --git a/plugins/local/tc_int/no_0e.irp.f b/plugins/local/tc_int/no_0e.irp.f new file mode 100644 index 00000000..b945e0dd --- /dev/null +++ b/plugins/local/tc_int/no_0e.irp.f @@ -0,0 +1,412 @@ + +! --- + +subroutine provide_no_0e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, noL_0e) + + BEGIN_DOC + ! + ! < Phi_left | L | Phi_right > + ! + END_DOC + + implicit none + + integer, intent(in) :: n_grid, n_mo + integer, intent(in) :: ne_a, ne_b + double precision, intent(in) :: wr1(n_grid) + double precision, intent(in) :: mos_l_in_r(n_grid,n_mo) + double precision, intent(in) :: mos_r_in_r(n_grid,n_mo) + double precision, intent(in) :: int2_grad1_u12(n_grid,3,n_mo,n_mo) + double precision, intent(out) :: noL_0e + + integer :: i, j, k, ipoint + double precision :: t0, t1 + double precision, allocatable :: tmp(:) + double precision, allocatable :: tmp_L(:,:), tmp_R(:,:) + double precision, allocatable :: tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) + double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) + + + if(ne_a .eq. ne_b) then + + allocate(tmp(ne_b)) + allocate(tmp_L(n_grid,3), tmp_R(n_grid,3)) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, wr1, & + !$OMP int2_grad1_u12, tmp) + + !$OMP DO + do j = 1, ne_b + + tmp_L = 0.d0 + tmp_R = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + + tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) + + tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) + enddo + enddo + + tmp(j) = 0.d0 + do ipoint = 1, n_grid + tmp(j) = tmp(j) + wr1(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + enddo + enddo ! j + !$OMP END DO + !$OMP END PARALLEL + + noL_0e = -2.d0 * sum(tmp) + + deallocate(tmp) + deallocate(tmp_L, tmp_R) + + ! --- + + allocate(tmp_O(n_grid), tmp_J(n_grid,3)) + tmp_O = 0.d0 + tmp_J = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp_O, tmp_J) + + allocate(tmp_O_priv(n_grid), tmp_J_priv(n_grid,3)) + tmp_O_priv = 0.d0 + tmp_J_priv = 0.d0 + + !$OMP DO + do i = 1, ne_b + do ipoint = 1, n_grid + tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) + tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) + tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_O = tmp_O + tmp_O_priv + tmp_J = tmp_J + tmp_J_priv + !$OMP END CRITICAL + + deallocate(tmp_O_priv, tmp_J_priv) + !$OMP END PARALLEL + + allocate(tmp_M(n_grid,3), tmp_S(n_grid)) + tmp_M = 0.d0 + tmp_S = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp_M, tmp_S) + + allocate(tmp_M_priv(n_grid,3), tmp_S_priv(n_grid)) + tmp_M_priv = 0.d0 + tmp_S_priv = 0.d0 + + !$OMP DO COLLAPSE(2) + do i = 1, ne_b + do j = 1, ne_b + do ipoint = 1, n_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_M = tmp_M + tmp_M_priv + tmp_S = tmp_S + tmp_S_priv + !$OMP END CRITICAL + + deallocate(tmp_M_priv, tmp_S_priv) + !$OMP END PARALLEL + + allocate(tmp(n_grid)) + + do ipoint = 1, n_grid + + tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) + + tmp(ipoint) = wr1(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & + - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & + + tmp_J(ipoint,2) * tmp_M(ipoint,2) & + + tmp_J(ipoint,3) * tmp_M(ipoint,3))) + enddo + + noL_0e = noL_0e -2.d0 * (sum(tmp)) + + deallocate(tmp) + + else + + allocate(tmp(ne_a)) + allocate(tmp_L(n_grid,3), tmp_R(n_grid,3)) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp, wr1) + + !$OMP DO + do j = 1, ne_b + + tmp_L = 0.d0 + tmp_R = 0.d0 + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + + tmp_L(ipoint,1) = tmp_L(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,2) = tmp_L(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,3) = tmp_L(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) + + tmp_R(ipoint,1) = tmp_R(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,2) = tmp_R(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,3) = tmp_R(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) + enddo + enddo + + tmp(j) = 0.d0 + do ipoint = 1, n_grid + tmp(j) = tmp(j) + wr1(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + enddo + + do i = 1, ne_b + do ipoint = 1, n_grid + + tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) + + tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) + enddo + enddo + + do ipoint = 1, n_grid + tmp(j) = tmp(j) + wr1(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + enddo + enddo ! j + !$OMP END DO + !$OMP END PARALLEL + + ! --- + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp, wr1) + + !$OMP DO + do j = ne_b+1, ne_a + + tmp_L = 0.d0 + tmp_R = 0.d0 + do i = 1, ne_a + do ipoint = 1, n_grid + tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) + + tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) + enddo + enddo + + tmp(j) = 0.d0 + do ipoint = 1, n_grid + tmp(j) = tmp(j) + 0.5d0 * wr1(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + enddo + enddo ! j + !$OMP END DO + !$OMP END PARALLEL + + noL_0e = -2.d0 * sum(tmp) + + deallocate(tmp) + deallocate(tmp_L, tmp_R) + + ! --- + + allocate(tmp_O(n_grid), tmp_J(n_grid,3)) + tmp_O = 0.d0 + tmp_J = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp_O, tmp_J) + + allocate(tmp_O_priv(n_grid), tmp_J_priv(n_grid,3)) + tmp_O_priv = 0.d0 + tmp_J_priv = 0.d0 + + !$OMP DO + do i = 1, ne_b + do ipoint = 1, n_grid + tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) + tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) + tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + 0.5d0 * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,i) + tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,i) + tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_O = tmp_O + tmp_O_priv + tmp_J = tmp_J + tmp_J_priv + !$OMP END CRITICAL + + deallocate(tmp_O_priv, tmp_J_priv) + !$OMP END PARALLEL + + ! --- + + allocate(tmp_M(n_grid,3), tmp_S(n_grid)) + tmp_M = 0.d0 + tmp_S = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp_M, tmp_S) + + allocate(tmp_M_priv(n_grid,3), tmp_S_priv(n_grid)) + tmp_M_priv = 0.d0 + tmp_S_priv = 0.d0 + + !$OMP DO COLLAPSE(2) + do i = 1, ne_b + do j = 1, ne_b + do ipoint = 1, n_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO COLLAPSE(2) + do i = ne_b+1, ne_a + do j = 1, ne_b + do ipoint = 1, n_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO COLLAPSE(2) + do i = ne_b+1, ne_a + do j = ne_b+1, ne_a + do ipoint = 1, n_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_M = tmp_M + tmp_M_priv + tmp_S = tmp_S + tmp_S_priv + !$OMP END CRITICAL + + deallocate(tmp_M_priv, tmp_S_priv) + !$OMP END PARALLEL + + allocate(tmp(n_grid)) + + do ipoint = 1, n_grid + + tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) + + tmp(ipoint) = wr1(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & + - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & + + tmp_J(ipoint,2) * tmp_M(ipoint,2) & + + tmp_J(ipoint,3) * tmp_M(ipoint,3))) + enddo + + noL_0e = noL_0e -2.d0 * (sum(tmp)) + + deallocate(tmp) + + endif + + + call wall_time(t1) + write(*,"(A,2X,F15.7)") ' wall time for noL_0e (sec) = ', (t1 - t0) + + return +end + +! --- + diff --git a/plugins/local/tc_int/no_1e.irp.f b/plugins/local/tc_int/no_1e.irp.f new file mode 100644 index 00000000..3a990276 --- /dev/null +++ b/plugins/local/tc_int/no_1e.irp.f @@ -0,0 +1,602 @@ + +! --- + +subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, noL_1e) + + implicit none + + integer, intent(in) :: n_grid, n_mo + integer, intent(in) :: ne_a, ne_b + double precision, intent(in) :: wr1(n_grid) + double precision, intent(in) :: mos_l_in_r(n_grid,n_mo) + double precision, intent(in) :: mos_r_in_r(n_grid,n_mo) + double precision, intent(in) :: int2_grad1_u12(n_grid,3,n_mo,n_mo) + double precision, intent(out) :: noL_1e(n_mo,n_mo) + + integer :: p, s, i, j, ipoint + double precision :: t0, t1 + double precision, allocatable :: tmp1(:,:,:,:), tmp2(:,:), tmp3(:,:,:), tmp4(:,:,:) + double precision, allocatable :: tmp_L(:,:,:), tmp_R(:,:,:), tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) + double precision, allocatable :: tmp_L0(:,:,:), tmp_R0(:,:,:) + double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) + + + call wall_time(t0) + + + if(ne_a .eq. ne_b) then + + allocate(tmp_O(n_grid), tmp_J(n_grid,3)) + tmp_O = 0.d0 + tmp_J = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp_O, tmp_J) + + allocate(tmp_O_priv(n_grid), tmp_J_priv(n_grid,3)) + tmp_O_priv = 0.d0 + tmp_J_priv = 0.d0 + + !$OMP DO + do i = 1, ne_b + do ipoint = 1, n_grid + tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) + tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) + tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_O = tmp_O + tmp_O_priv + tmp_J = tmp_J + tmp_J_priv + !$OMP END CRITICAL + + deallocate(tmp_O_priv, tmp_J_priv) + !$OMP END PARALLEL + + ! --- + + allocate(tmp_M(n_grid,3), tmp_S(n_grid)) + tmp_M = 0.d0 + tmp_S = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp_M, tmp_S) + + allocate(tmp_M_priv(n_grid,3), tmp_S_priv(n_grid)) + tmp_M_priv = 0.d0 + tmp_S_priv = 0.d0 + + !$OMP DO COLLAPSE(2) + do i = 1, ne_b + do j = 1, ne_b + do ipoint = 1, n_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_M = tmp_M + tmp_M_priv + tmp_S = tmp_S + tmp_S_priv + !$OMP END CRITICAL + + deallocate(tmp_M_priv, tmp_S_priv) + !$OMP END PARALLEL + + ! --- + + allocate(tmp2(n_grid,4)) + allocate(tmp1(n_grid,4,mo_num,mo_num)) + + do ipoint = 1, n_grid + + tmp2(ipoint,1) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,1) - tmp_M(ipoint,1)) + tmp2(ipoint,2) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,2) - tmp_M(ipoint,2)) + tmp2(ipoint,3) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,3) - tmp_M(ipoint,3)) + tmp2(ipoint,4) = -wr1(ipoint) * tmp_O(ipoint) + + tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1) * tmp_J(ipoint,1) + tmp_J(ipoint,2) * tmp_J(ipoint,2) + tmp_J(ipoint,3) * tmp_J(ipoint,3)) - tmp_S(ipoint) + enddo + + deallocate(tmp_O, tmp_M) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, s, i, ipoint) & + !$OMP SHARED(mo_num, ne_b, n_grid, & + !$OMP int2_grad1_u12, tmp1) + + !$OMP DO COLLAPSE(2) + do s = 1, mo_num + do p = 1, mo_num + + do ipoint = 1, n_grid + tmp1(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) + tmp1(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) + tmp1(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) + enddo + + tmp1(:,4,p,s) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmp1(ipoint,4,p,s) = tmp1(ipoint,4,p,s) + int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo + enddo + + enddo ! p + enddo ! s + !$OMP END DO + !$OMP END PARALLEL + + call dgemv( 'T', 4*n_grid, mo_num*mo_num, 2.d0 & + , tmp1(1,1,1,1), size(tmp1, 1) * size(tmp1, 2) & + , tmp2(1,1), 1 & + , 0.d0, noL_1e(1,1), 1) + + deallocate(tmp1, tmp2) + + ! --- + + allocate(tmp_L(n_grid,3,mo_num)) + allocate(tmp_R(n_grid,3,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, ipoint) & + !$OMP SHARED(ne_b, n_grid, mo_num, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp_L, tmp_R) + + !$OMP DO + do p = 1, mo_num + + tmp_L(:,1:3,p) = 0.d0 + tmp_R(:,1:3,p) = 0.d0 + + do i = 1, ne_b + do ipoint = 1, n_grid + + tmp_L(ipoint,1,p) = tmp_L(ipoint,1,p) + int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,2,p) = tmp_L(ipoint,2,p) + int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,3,p) = tmp_L(ipoint,3,p) + int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) + + tmp_R(ipoint,1,p) = tmp_R(ipoint,1,p) + int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,2,p) = tmp_R(ipoint,2,p) + int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,3,p) = tmp_R(ipoint,3,p) + int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) + enddo + enddo + enddo ! p + !$OMP END DO + !$OMP END PARALLEL + + ! --- + + allocate(tmp3(n_grid,5,mo_num)) + allocate(tmp4(n_grid,5,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, j, ipoint) & + !$OMP SHARED(ne_b, n_grid, mo_num, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, wr1, & + !$OMP tmp_L, tmp_R, tmp_J, tmp_S, tmp3, tmp4) + + !$OMP DO + do p = 1, mo_num + + do ipoint = 1, n_grid + + tmp3(ipoint,1,p) = wr1(ipoint) * mos_l_in_r(ipoint,p) + tmp3(ipoint,2,p) = -2.d0 * (tmp_L(ipoint,1,p) * tmp_J(ipoint,1) + tmp_L(ipoint,2,p) * tmp_J(ipoint,2) + tmp_L(ipoint,3,p) * tmp_J(ipoint,3)) + tmp3(ipoint,3,p) = wr1(ipoint) * tmp_L(ipoint,1,p) + tmp3(ipoint,4,p) = wr1(ipoint) * tmp_L(ipoint,2,p) + tmp3(ipoint,5,p) = wr1(ipoint) * tmp_L(ipoint,3,p) + + tmp4(ipoint,1,p) = -2.d0 * (tmp_R(ipoint,1,p) * tmp_J(ipoint,1) + tmp_R(ipoint,2,p) * tmp_J(ipoint,2) + tmp_R(ipoint,3,p) * tmp_J(ipoint,3)) & + + mos_r_in_r(ipoint,p) * tmp_S(ipoint) + tmp4(ipoint,2,p) = wr1(ipoint) * mos_r_in_r(ipoint,p) + tmp4(ipoint,3,p) = tmp_R(ipoint,1,p) + tmp4(ipoint,4,p) = tmp_R(ipoint,2,p) + tmp4(ipoint,5,p) = tmp_R(ipoint,3,p) + enddo + + do i = 1, ne_b + do j = 1, ne_b + do ipoint = 1, n_grid + + tmp3(ipoint,2,p) = tmp3(ipoint,2,p) + mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) + + tmp4(ipoint,1,p) = tmp4(ipoint,1,p) + mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) + enddo ! ipoint + enddo ! j + enddo ! i + + enddo ! p + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmp_L, tmp_R, tmp_J, tmp_S) + + call dgemm( 'T', 'N', mo_num, mo_num, 5*n_grid, 1.d0 & + , tmp3(1,1,1), 5*n_grid, tmp4(1,1,1), 5*n_grid & + , 1.d0, noL_1e(1,1), mo_num) + + deallocate(tmp3, tmp4) + + ! --- + + else + + allocate(tmp_O(n_grid), tmp_J(n_grid,3)) + tmp_O = 0.d0 + tmp_J = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp_O, tmp_J) + + allocate(tmp_O_priv(n_grid), tmp_J_priv(n_grid,3)) + tmp_O_priv = 0.d0 + tmp_J_priv = 0.d0 + + !$OMP DO + do i = 1, ne_b + do ipoint = 1, n_grid + tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) + tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) + tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + 0.5d0 * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,i) + tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,i) + tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_O = tmp_O + tmp_O_priv + tmp_J = tmp_J + tmp_J_priv + !$OMP END CRITICAL + + deallocate(tmp_O_priv, tmp_J_priv) + !$OMP END PARALLEL + + ! --- + + allocate(tmp_M(n_grid,3), tmp_S(n_grid)) + tmp_M = 0.d0 + tmp_S = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp_M, tmp_S) + + allocate(tmp_M_priv(n_grid,3), tmp_S_priv(n_grid)) + tmp_M_priv = 0.d0 + tmp_S_priv = 0.d0 + + !$OMP DO COLLAPSE(2) + do i = 1, ne_b + do j = 1, ne_b + do ipoint = 1, n_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO COLLAPSE(2) + do i = ne_b+1, ne_a + do j = 1, ne_b + do ipoint = 1, n_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO COLLAPSE(2) + do i = ne_b+1, ne_a + do j = ne_b+1, ne_a + do ipoint = 1, n_grid + + tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmp_M = tmp_M + tmp_M_priv + tmp_S = tmp_S + tmp_S_priv + !$OMP END CRITICAL + + deallocate(tmp_M_priv, tmp_S_priv) + !$OMP END PARALLEL + + ! --- + + allocate(tmp2(n_grid,4)) + allocate(tmp1(n_grid,4,mo_num,mo_num)) + + do ipoint = 1, n_grid + + tmp2(ipoint,1) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,1) - tmp_M(ipoint,1)) + tmp2(ipoint,2) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,2) - tmp_M(ipoint,2)) + tmp2(ipoint,3) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,3) - tmp_M(ipoint,3)) + tmp2(ipoint,4) = -wr1(ipoint) * tmp_O(ipoint) + + tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1) * tmp_J(ipoint,1) + tmp_J(ipoint,2) * tmp_J(ipoint,2) + tmp_J(ipoint,3) * tmp_J(ipoint,3)) - tmp_S(ipoint) + enddo + + deallocate(tmp_O, tmp_M) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, s, i, ipoint) & + !$OMP SHARED(mo_num, ne_b, n_grid, & + !$OMP ne_a, int2_grad1_u12, tmp1) + + !$OMP DO COLLAPSE(2) + do s = 1, mo_num + do p = 1, mo_num + + do ipoint = 1, n_grid + tmp1(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) + tmp1(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) + tmp1(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) + enddo + + tmp1(:,4,p,s) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmp1(ipoint,4,p,s) = tmp1(ipoint,4,p,s) + int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo + enddo + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmp1(ipoint,4,p,s) = tmp1(ipoint,4,p,s) + 0.5d0 * int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + 0.5d0 * int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + 0.5d0 * int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo + enddo + + enddo ! p + enddo ! s + !$OMP END DO + !$OMP END PARALLEL + + call dgemv( 'T', 4*n_grid, mo_num*mo_num, 2.d0 & + , tmp1(1,1,1,1), size(tmp1, 1) * size(tmp1, 2) & + , tmp2(1,1), 1 & + , 0.d0, noL_1e(1,1), 1) + + deallocate(tmp1, tmp2) + + ! --- + + allocate(tmp_L(n_grid,3,mo_num), tmp_L0(n_grid,3,mo_num)) + allocate(tmp_R(n_grid,3,mo_num), tmp_R0(n_grid,3,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, ipoint) & + !$OMP SHARED(ne_b, ne_a, n_grid, mo_num, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmp_L0, tmp_R0, tmp_L, tmp_R) + + !$OMP DO + do p = 1, mo_num + + tmp_L0(:,1:3,p) = 0.d0 + tmp_R0(:,1:3,p) = 0.d0 + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + + tmp_L0(ipoint,1,p) = tmp_L0(ipoint,1,p) + 0.5d0 * int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) + tmp_L0(ipoint,2,p) = tmp_L0(ipoint,2,p) + 0.5d0 * int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) + tmp_L0(ipoint,3,p) = tmp_L0(ipoint,3,p) + 0.5d0 * int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) + + tmp_R0(ipoint,1,p) = tmp_R0(ipoint,1,p) + 0.5d0 * int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) + tmp_R0(ipoint,2,p) = tmp_R0(ipoint,2,p) + 0.5d0 * int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) + tmp_R0(ipoint,3,p) = tmp_R0(ipoint,3,p) + 0.5d0 * int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) + enddo + enddo + + tmp_L(:,1:3,p) = tmp_L0(:,1:3,p) + tmp_R(:,1:3,p) = tmp_R0(:,1:3,p) + do i = 1, ne_b + do ipoint = 1, n_grid + + tmp_L(ipoint,1,p) = tmp_L(ipoint,1,p) + int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,2,p) = tmp_L(ipoint,2,p) + int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) + tmp_L(ipoint,3,p) = tmp_L(ipoint,3,p) + int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) + + tmp_R(ipoint,1,p) = tmp_R(ipoint,1,p) + int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,2,p) = tmp_R(ipoint,2,p) + int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) + tmp_R(ipoint,3,p) = tmp_R(ipoint,3,p) + int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) + enddo + enddo + + enddo ! p + !$OMP END DO + !$OMP END PARALLEL + + ! --- + + allocate(tmp3(n_grid,8,mo_num)) + allocate(tmp4(n_grid,8,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, j, ipoint) & + !$OMP SHARED(ne_b, ne_a, n_grid, mo_num, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, wr1, & + !$OMP tmp_L, tmp_L0, tmp_R, tmp_R0, tmp_J, tmp_S, tmp3, tmp4) + + !$OMP DO + do p = 1, mo_num + + do ipoint = 1, n_grid + + tmp3(ipoint,1,p) = wr1(ipoint) * mos_l_in_r(ipoint,p) + tmp3(ipoint,2,p) = -2.d0 * (tmp_L(ipoint,1,p) * tmp_J(ipoint,1) + tmp_L(ipoint,2,p) * tmp_J(ipoint,2) + tmp_L(ipoint,3,p) * tmp_J(ipoint,3)) + tmp3(ipoint,3,p) = wr1(ipoint) * tmp_L(ipoint,1,p) + tmp3(ipoint,4,p) = wr1(ipoint) * tmp_L(ipoint,2,p) + tmp3(ipoint,5,p) = wr1(ipoint) * tmp_L(ipoint,3,p) + tmp3(ipoint,6,p) = wr1(ipoint) * tmp_L0(ipoint,1,p) + tmp3(ipoint,7,p) = wr1(ipoint) * tmp_L0(ipoint,2,p) + tmp3(ipoint,8,p) = wr1(ipoint) * tmp_L0(ipoint,3,p) + + tmp4(ipoint,1,p) = -2.d0 * (tmp_R(ipoint,1,p) * tmp_J(ipoint,1) + tmp_R(ipoint,2,p) * tmp_J(ipoint,2) + tmp_R(ipoint,3,p) * tmp_J(ipoint,3)) & + + mos_r_in_r(ipoint,p) * tmp_S(ipoint) + tmp4(ipoint,2,p) = wr1(ipoint) * mos_r_in_r(ipoint,p) + tmp4(ipoint,3,p) = tmp_R(ipoint,1,p) + tmp4(ipoint,4,p) = tmp_R(ipoint,2,p) + tmp4(ipoint,5,p) = tmp_R(ipoint,3,p) + tmp4(ipoint,6,p) = tmp_R0(ipoint,1,p) + tmp4(ipoint,7,p) = tmp_R0(ipoint,2,p) + tmp4(ipoint,8,p) = tmp_R0(ipoint,3,p) + enddo + + do i = 1, ne_b + do j = 1, ne_b + do ipoint = 1, n_grid + + tmp3(ipoint,2,p) = tmp3(ipoint,2,p) + mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) + + tmp4(ipoint,1,p) = tmp4(ipoint,1,p) + mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) + enddo ! ipoint + enddo ! j + enddo ! i + + do i = ne_b+1, ne_a + do j = 1, ne_b + do ipoint = 1, n_grid + + tmp3(ipoint,2,p) = tmp3(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) + tmp3(ipoint,2,p) = tmp3(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,p,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,p,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,p,j) * int2_grad1_u12(ipoint,3,j,i) ) + + tmp4(ipoint,1,p) = tmp4(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) + tmp4(ipoint,1,p) = tmp4(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,j,i) * int2_grad1_u12(ipoint,1,i,p) & + + int2_grad1_u12(ipoint,2,j,i) * int2_grad1_u12(ipoint,2,i,p) & + + int2_grad1_u12(ipoint,3,j,i) * int2_grad1_u12(ipoint,3,i,p) ) + enddo ! ipoint + enddo ! j + enddo ! i + + do i = ne_b+1, ne_a + do j = ne_b+1, ne_a + do ipoint = 1, n_grid + + tmp3(ipoint,2,p) = tmp3(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) + + tmp4(ipoint,1,p) = tmp4(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) + enddo ! ipoint + enddo ! j + enddo ! i + + enddo ! p + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmp_L0, tmp_L, tmp_R0, tmp_R, tmp_J, tmp_S) + + call dgemm( 'T', 'N', mo_num, mo_num, 8*n_grid, 1.d0 & + , tmp3(1,1,1), 8*n_grid, tmp4(1,1,1), 8*n_grid & + , 1.d0, noL_1e(1,1), mo_num) + + deallocate(tmp3, tmp4) + + endif + + + call wall_time(t1) + write(*,"(A,2X,F15.7)") ' wall time for noL_1e (sec) = ', (t1 - t0) + + return +end + +! --- + diff --git a/plugins/local/tc_int/no_2e.irp.f b/plugins/local/tc_int/no_2e.irp.f new file mode 100644 index 00000000..6d31d6a0 --- /dev/null +++ b/plugins/local/tc_int/no_2e.irp.f @@ -0,0 +1,605 @@ + +! --- + +subroutine provide_no_2e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, noL_2e) + + implicit none + + integer, intent(in) :: n_grid, n_mo + integer, intent(in) :: ne_a, ne_b + double precision, intent(in) :: wr1(n_grid) + double precision, intent(in) :: mos_l_in_r(n_grid,n_mo) + double precision, intent(in) :: mos_r_in_r(n_grid,n_mo) + double precision, intent(in) :: int2_grad1_u12(n_grid,3,n_mo,n_mo) + double precision, intent(out) :: noL_2e(n_mo,n_mo,n_mo,n_mo) + + integer :: p, q, s, t, i, ipoint + double precision :: t0, t1 + double precision, allocatable :: tmpO(:), tmpJ(:,:) + double precision, allocatable :: tmpA(:,:,:), tmpB(:,:,:) + double precision, allocatable :: tmpC(:,:,:,:), tmpD(:,:,:,:) + double precision, allocatable :: tmpE(:,:,:,:) + + + call wall_time(t0) + + if(ne_a .eq. ne_b) then + + allocate(tmpO(n_grid), tmpJ(n_grid,3)) + allocate(tmpA(n_grid,3,n_mo), tmpB(n_grid,3,n_mo)) + allocate(tmpC(n_grid,4,n_mo,n_mo), tmpD(n_grid,4,n_mo,n_mo)) + allocate(tmpE(n_mo,n_mo,n_mo,n_mo)) + + tmpO = 0.d0 + tmpJ = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpO(ipoint) = tmpO(ipoint) + wr1(ipoint) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ(ipoint,1) = tmpJ(ipoint,1) + wr1(ipoint) * int2_grad1_u12(ipoint,1,i,i) + tmpJ(ipoint,2) = tmpJ(ipoint,2) + wr1(ipoint) * int2_grad1_u12(ipoint,2,i,i) + tmpJ(ipoint,3) = tmpJ(ipoint,3) + wr1(ipoint) * int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, ipoint) & + !$OMP SHARED(n_mo, ne_b, n_grid, & + !$OMP wr1, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, & + !$OMP tmpA, tmpB) + + !$OMP DO + do p = 1, n_mo + + tmpA(:,:,p) = 0.d0 + tmpB(:,:,p) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpA(ipoint,1,p) = tmpA(ipoint,1,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,p,i) + tmpA(ipoint,2,p) = tmpA(ipoint,2,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,p,i) + tmpA(ipoint,3,p) = tmpA(ipoint,3,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,p,i) + tmpB(ipoint,1,p) = tmpB(ipoint,1,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,i,p) + tmpB(ipoint,2,p) = tmpB(ipoint,2,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,i,p) + tmpB(ipoint,3,p) = tmpB(ipoint,3,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,i,p) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, s, i, ipoint) & + !$OMP SHARED(n_mo, ne_b, n_grid, & + !$OMP wr1, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, & + !$OMP tmpA, tmpB, tmpO, tmpJ, tmpC, tmpD) + + !$OMP DO COLLAPSE(2) + do s = 1, n_mo + do p = 1, n_mo + + do ipoint = 1, n_grid + + tmpC(ipoint,1,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,1,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,1,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,1,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,1) + tmpC(ipoint,2,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,2,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,2,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,2,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,2) + tmpC(ipoint,3,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,3,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,3,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,3,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,3) + + tmpD(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) + tmpD(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) + tmpD(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) + tmpD(ipoint,4,p,s) = wr1(ipoint) * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) + + enddo ! ipoint + + tmpC(:,4,p,s) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpC(ipoint,4,p,s) += int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo ! ipoint + enddo ! i + + enddo ! p + enddo ! s + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmpO, tmpJ, tmpA, tmpB) + + + call dgemm( 'T', 'N', n_mo*n_mo, n_mo*n_mo, 4*n_grid, 0.5d0 & + , tmpC(1,1,1,1), 4*n_grid, tmpD(1,1,1,1), 4*n_grid & + , 0.d0, tmpE(1,1,1,1), n_mo*n_mo) + + deallocate(tmpC, tmpD) + + call sum_a_at(tmpE, n_mo*n_mo) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(t, s, q, p) & + !$OMP SHARED(n_mo, tmpE, noL_2e) + + !$OMP DO COLLAPSE(3) + do t = 1, n_mo + do s = 1, n_mo + do q = 1, n_mo + do p = 1, n_mo + noL_2e(p,q,s,t) = tmpE(p,s,q,t) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmpE) + + else + + allocate(tmpO(n_grid), tmpJ(n_grid,3)) + allocate(tmpA(n_grid,3,n_mo), tmpB(n_grid,3,n_mo)) + allocate(tmpC(n_grid,4,n_mo,n_mo), tmpD(n_grid,4,n_mo,n_mo)) + allocate(tmpE(n_mo,n_mo,n_mo,n_mo)) + + tmpO = 0.d0 + tmpJ = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpO(ipoint) = tmpO(ipoint) + wr1(ipoint) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ(ipoint,1) = tmpJ(ipoint,1) + wr1(ipoint) * int2_grad1_u12(ipoint,1,i,i) + tmpJ(ipoint,2) = tmpJ(ipoint,2) + wr1(ipoint) * int2_grad1_u12(ipoint,2,i,i) + tmpJ(ipoint,3) = tmpJ(ipoint,3) + wr1(ipoint) * int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmpO(ipoint) = tmpO(ipoint) + 0.5d0 * wr1(ipoint) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ(ipoint,1) = tmpJ(ipoint,1) + 0.5d0 * wr1(ipoint) * int2_grad1_u12(ipoint,1,i,i) + tmpJ(ipoint,2) = tmpJ(ipoint,2) + 0.5d0 * wr1(ipoint) * int2_grad1_u12(ipoint,2,i,i) + tmpJ(ipoint,3) = tmpJ(ipoint,3) + 0.5d0 * wr1(ipoint) * int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, ipoint) & + !$OMP SHARED(n_mo, ne_a, ne_b, n_grid, & + !$OMP wr1, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, & + !$OMP tmpA, tmpB) + + !$OMP DO + do p = 1, n_mo + + tmpA(:,:,p) = 0.d0 + tmpB(:,:,p) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpA(ipoint,1,p) = tmpA(ipoint,1,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,p,i) + tmpA(ipoint,2,p) = tmpA(ipoint,2,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,p,i) + tmpA(ipoint,3,p) = tmpA(ipoint,3,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,p,i) + tmpB(ipoint,1,p) = tmpB(ipoint,1,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,i,p) + tmpB(ipoint,2,p) = tmpB(ipoint,2,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,i,p) + tmpB(ipoint,3,p) = tmpB(ipoint,3,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,i,p) + enddo + enddo + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmpA(ipoint,1,p) = tmpA(ipoint,1,p) + 0.5d0 * wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,p,i) + tmpA(ipoint,2,p) = tmpA(ipoint,2,p) + 0.5d0 * wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,p,i) + tmpA(ipoint,3,p) = tmpA(ipoint,3,p) + 0.5d0 * wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,p,i) + tmpB(ipoint,1,p) = tmpB(ipoint,1,p) + 0.5d0 * wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,i,p) + tmpB(ipoint,2,p) = tmpB(ipoint,2,p) + 0.5d0 * wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,i,p) + tmpB(ipoint,3,p) = tmpB(ipoint,3,p) + 0.5d0 * wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,i,p) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, s, i, ipoint) & + !$OMP SHARED(n_mo, ne_a, ne_b, n_grid, & + !$OMP wr1, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, & + !$OMP tmpA, tmpB, tmpO, tmpJ, tmpC, tmpD) + + !$OMP DO COLLAPSE(2) + do s = 1, n_mo + do p = 1, n_mo + + do ipoint = 1, n_grid + + tmpC(ipoint,1,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,1,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,1,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,1,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,1) + tmpC(ipoint,2,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,2,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,2,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,2,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,2) + tmpC(ipoint,3,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,3,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,3,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,3,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,3) + + tmpD(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) + tmpD(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) + tmpD(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) + tmpD(ipoint,4,p,s) = wr1(ipoint) * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) + + enddo ! ipoint + + tmpC(:,4,p,s) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpC(ipoint,4,p,s) += int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo ! ipoint + enddo ! i + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmpC(ipoint,4,p,s) += 0.5d0 * int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + 0.5d0 * int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + 0.5d0 * int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo ! ipoint + enddo ! i + + enddo ! p + enddo ! s + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmpO, tmpJ, tmpA, tmpB) + + + call dgemm( 'T', 'N', n_mo*n_mo, n_mo*n_mo, 4*n_grid, 0.5d0 & + , tmpC(1,1,1,1), 4*n_grid, tmpD(1,1,1,1), 4*n_grid & + , 0.d0, tmpE(1,1,1,1), n_mo*n_mo) + + deallocate(tmpC, tmpD) + + call sum_a_at(tmpE, n_mo*n_mo) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(t, s, q, p) & + !$OMP SHARED(n_mo, tmpE, noL_2e) + + !$OMP DO COLLAPSE(3) + do t = 1, n_mo + do s = 1, n_mo + do q = 1, n_mo + do p = 1, n_mo + noL_2e(p,q,s,t) = tmpE(p,s,q,t) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmpE) + + endif + + call wall_time(t1) + write(*,"(A,2X,F15.7)") ' wall time for noL_2e (sec) = ', (t1 - t0) + + return +end + +! --- + +subroutine provide_no_2e_tmp(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & + tmpO, tmpJ, tmpA, tmpB, tmpC, tmpD, tmpE, noL_2e) + + implicit none + + integer, intent(in) :: n_grid, n_mo + integer, intent(in) :: ne_a, ne_b + double precision, intent(in) :: wr1(n_grid) + double precision, intent(in) :: mos_l_in_r(n_grid,n_mo) + double precision, intent(in) :: mos_r_in_r(n_grid,n_mo) + double precision, intent(in) :: int2_grad1_u12(n_grid,3,n_mo,n_mo) + double precision, intent(out) :: tmpO(n_grid), tmpJ(n_grid,3) + double precision, intent(out) :: tmpA(n_grid,3,n_mo), tmpB(n_grid,3,n_mo) + double precision, intent(out) :: tmpC(n_grid,4,n_mo,n_mo), tmpD(n_grid,4,n_mo,n_mo) + double precision, intent(out) :: tmpE(n_mo,n_mo,n_mo,n_mo) + double precision, intent(out) :: noL_2e(n_mo,n_mo,n_mo,n_mo) + + integer :: p, q, s, t, i, ipoint + double precision :: t0, t1 + + + call wall_time(t0) + + if(ne_a .eq. ne_b) then + + tmpO = 0.d0 + tmpJ = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpO(ipoint) = tmpO(ipoint) + wr1(ipoint) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ(ipoint,1) = tmpJ(ipoint,1) + wr1(ipoint) * int2_grad1_u12(ipoint,1,i,i) + tmpJ(ipoint,2) = tmpJ(ipoint,2) + wr1(ipoint) * int2_grad1_u12(ipoint,2,i,i) + tmpJ(ipoint,3) = tmpJ(ipoint,3) + wr1(ipoint) * int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, ipoint) & + !$OMP SHARED(n_mo, ne_b, n_grid, & + !$OMP wr1, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, & + !$OMP tmpA, tmpB) + + !$OMP DO + do p = 1, n_mo + + tmpA(:,:,p) = 0.d0 + tmpB(:,:,p) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpA(ipoint,1,p) = tmpA(ipoint,1,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,p,i) + tmpA(ipoint,2,p) = tmpA(ipoint,2,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,p,i) + tmpA(ipoint,3,p) = tmpA(ipoint,3,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,p,i) + tmpB(ipoint,1,p) = tmpB(ipoint,1,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,i,p) + tmpB(ipoint,2,p) = tmpB(ipoint,2,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,i,p) + tmpB(ipoint,3,p) = tmpB(ipoint,3,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,i,p) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, s, i, ipoint) & + !$OMP SHARED(n_mo, ne_b, n_grid, & + !$OMP wr1, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, & + !$OMP tmpA, tmpB, tmpO, tmpJ, tmpC, tmpD) + + !$OMP DO COLLAPSE(2) + do s = 1, n_mo + do p = 1, n_mo + + do ipoint = 1, n_grid + + tmpC(ipoint,1,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,1,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,1,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,1,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,1) + tmpC(ipoint,2,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,2,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,2,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,2,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,2) + tmpC(ipoint,3,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,3,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,3,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,3,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,3) + + tmpD(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) + tmpD(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) + tmpD(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) + tmpD(ipoint,4,p,s) = wr1(ipoint) * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) + + enddo ! ipoint + + tmpC(:,4,p,s) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpC(ipoint,4,p,s) += int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo ! ipoint + enddo ! i + + enddo ! p + enddo ! s + !$OMP END DO + !$OMP END PARALLEL + + + call dgemm( 'T', 'N', n_mo*n_mo, n_mo*n_mo, 4*n_grid, 0.5d0 & + , tmpC(1,1,1,1), 4*n_grid, tmpD(1,1,1,1), 4*n_grid & + , 0.d0, tmpE(1,1,1,1), n_mo*n_mo) + + call sum_a_at(tmpE, n_mo*n_mo) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(t, s, q, p) & + !$OMP SHARED(n_mo, tmpE, noL_2e) + + !$OMP DO COLLAPSE(3) + do t = 1, n_mo + do s = 1, n_mo + do q = 1, n_mo + do p = 1, n_mo + noL_2e(p,q,s,t) = tmpE(p,s,q,t) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + else + + tmpO = 0.d0 + tmpJ = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpO(ipoint) = tmpO(ipoint) + wr1(ipoint) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ(ipoint,1) = tmpJ(ipoint,1) + wr1(ipoint) * int2_grad1_u12(ipoint,1,i,i) + tmpJ(ipoint,2) = tmpJ(ipoint,2) + wr1(ipoint) * int2_grad1_u12(ipoint,2,i,i) + tmpJ(ipoint,3) = tmpJ(ipoint,3) + wr1(ipoint) * int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmpO(ipoint) = tmpO(ipoint) + 0.5d0 * wr1(ipoint) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ(ipoint,1) = tmpJ(ipoint,1) + 0.5d0 * wr1(ipoint) * int2_grad1_u12(ipoint,1,i,i) + tmpJ(ipoint,2) = tmpJ(ipoint,2) + 0.5d0 * wr1(ipoint) * int2_grad1_u12(ipoint,2,i,i) + tmpJ(ipoint,3) = tmpJ(ipoint,3) + 0.5d0 * wr1(ipoint) * int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, ipoint) & + !$OMP SHARED(n_mo, ne_a, ne_b, n_grid, & + !$OMP wr1, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, & + !$OMP tmpA, tmpB) + + !$OMP DO + do p = 1, n_mo + + tmpA(:,:,p) = 0.d0 + tmpB(:,:,p) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpA(ipoint,1,p) = tmpA(ipoint,1,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,p,i) + tmpA(ipoint,2,p) = tmpA(ipoint,2,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,p,i) + tmpA(ipoint,3,p) = tmpA(ipoint,3,p) + wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,p,i) + tmpB(ipoint,1,p) = tmpB(ipoint,1,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,i,p) + tmpB(ipoint,2,p) = tmpB(ipoint,2,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,i,p) + tmpB(ipoint,3,p) = tmpB(ipoint,3,p) + wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,i,p) + enddo + enddo + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmpA(ipoint,1,p) = tmpA(ipoint,1,p) + 0.5d0 * wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,p,i) + tmpA(ipoint,2,p) = tmpA(ipoint,2,p) + 0.5d0 * wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,p,i) + tmpA(ipoint,3,p) = tmpA(ipoint,3,p) + 0.5d0 * wr1(ipoint) * mos_l_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,p,i) + tmpB(ipoint,1,p) = tmpB(ipoint,1,p) + 0.5d0 * wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,1,i,p) + tmpB(ipoint,2,p) = tmpB(ipoint,2,p) + 0.5d0 * wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,2,i,p) + tmpB(ipoint,3,p) = tmpB(ipoint,3,p) + 0.5d0 * wr1(ipoint) * mos_r_in_r(ipoint,i) * int2_grad1_u12(ipoint,3,i,p) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, s, i, ipoint) & + !$OMP SHARED(n_mo, ne_a, ne_b, n_grid, & + !$OMP wr1, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, & + !$OMP tmpA, tmpB, tmpO, tmpJ, tmpC, tmpD) + + !$OMP DO COLLAPSE(2) + do s = 1, n_mo + do p = 1, n_mo + + do ipoint = 1, n_grid + + tmpC(ipoint,1,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,1,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,1,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,1,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,1) + tmpC(ipoint,2,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,2,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,2,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,2,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,2) + tmpC(ipoint,3,p,s) = mos_r_in_r(ipoint,s) * tmpA(ipoint,3,p) & + + mos_l_in_r(ipoint,p) * tmpB(ipoint,3,s) & + - tmpO(ipoint) * int2_grad1_u12(ipoint,3,p,s) & + - 2.d0 * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) * tmpJ(ipoint,3) + + tmpD(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) + tmpD(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) + tmpD(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) + tmpD(ipoint,4,p,s) = wr1(ipoint) * mos_l_in_r(ipoint,p) * mos_r_in_r(ipoint,s) + + enddo ! ipoint + + tmpC(:,4,p,s) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpC(ipoint,4,p,s) += int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo ! ipoint + enddo ! i + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmpC(ipoint,4,p,s) += 0.5d0 * int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + 0.5d0 * int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + 0.5d0 * int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo ! ipoint + enddo ! i + + enddo ! p + enddo ! s + !$OMP END DO + !$OMP END PARALLEL + + + call dgemm( 'T', 'N', n_mo*n_mo, n_mo*n_mo, 4*n_grid, 0.5d0 & + , tmpC(1,1,1,1), 4*n_grid, tmpD(1,1,1,1), 4*n_grid & + , 0.d0, tmpE(1,1,1,1), n_mo*n_mo) + + call sum_a_at(tmpE, n_mo*n_mo) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(t, s, q, p) & + !$OMP SHARED(n_mo, tmpE, noL_2e) + + !$OMP DO COLLAPSE(3) + do t = 1, n_mo + do s = 1, n_mo + do q = 1, n_mo + do p = 1, n_mo + noL_2e(p,q,s,t) = tmpE(p,s,q,t) + enddo + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + endif + + call wall_time(t1) + write(*,"(A,2X,F15.7)") ' wall time for noL_2e & tmp tensors (sec) = ', (t1 - t0) + + return +end + +! --- + + diff --git a/plugins/local/tc_int/uninstall b/plugins/local/tc_int/uninstall index 3dd3612c..e37a5491 100755 --- a/plugins/local/tc_int/uninstall +++ b/plugins/local/tc_int/uninstall @@ -9,5 +9,5 @@ then fi rm -rf ${PWD}/CuTC -rm ${QP_ROOT}/lib/libtc_int_cu.so +rm ${QP_ROOT}/lib/libcutcint.so diff --git a/plugins/local/tc_int/write_tc_int_cuda.irp.f b/plugins/local/tc_int/write_tc_int_cuda.irp.f index 212518ee..2a3dc4d1 100644 --- a/plugins/local/tc_int/write_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/write_tc_int_cuda.irp.f @@ -120,12 +120,12 @@ subroutine do_work_on_gpu() call wall_time(cuda_time0) print*, ' start CUDA kernel' - call tc_int_c(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & - n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & - final_grid_points, final_weight_at_r_vector, & - final_grid_points_extra, final_weight_at_r_vector_extra, & - rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & - int2_grad1_u12_ao, int_2e_ao) + call cutc_int_c(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & + n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & + final_grid_points, final_weight_at_r_vector, & + final_grid_points_extra, final_weight_at_r_vector_extra, & + rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & + int2_grad1_u12_ao, int_2e_ao) call wall_time(cuda_time1) print*, ' wall time for CUDA kernel (min) = ', (cuda_time1-cuda_time0) / 60.d0 From 4e9143133ac19cbfbc8dbda1f358331da6ef5277 Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Sat, 10 Aug 2024 18:13:23 +0200 Subject: [PATCH 147/159] added 1e-noL with CUDA --- plugins/local/tc_int/cutc_module.F90 | 51 + plugins/local/tc_int/deb_no_1e_gpu.irp.f | 499 +++++++++ plugins/local/tc_int/deb_no_2e_gpu.irp.f | 1 - plugins/local/tc_int/deb_tc_int_cuda.irp.f | 6 +- plugins/local/tc_int/no_1e.irp.f | 1101 +++++++++++++++----- 5 files changed, 1394 insertions(+), 264 deletions(-) create mode 100644 plugins/local/tc_int/deb_no_1e_gpu.irp.f diff --git a/plugins/local/tc_int/cutc_module.F90 b/plugins/local/tc_int/cutc_module.F90 index d7b922cd..d1466697 100644 --- a/plugins/local/tc_int/cutc_module.F90 +++ b/plugins/local/tc_int/cutc_module.F90 @@ -119,6 +119,57 @@ module cutc_module ! --- + subroutine cutc_no_1e(n_grid1, n_mo, ne_a, ne_b, & + wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & + no_1e) bind(C, name = "cutc_no_1e") + + import c_int, c_double, c_ptr + + integer(c_int), intent(in), value :: n_grid1 + integer(c_int), intent(in), value :: n_mo + integer(c_int), intent(in), value :: ne_a + integer(c_int), intent(in), value :: ne_b + real(c_double), intent(in) :: wr1(n_grid1) + real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) + real(c_double), intent(out) :: no_1e(n_mo,n_mo) + + end subroutine cutc_no_1e + + ! --- + + subroutine deb_no_1e(n_grid1, n_mo, ne_a, ne_b, & + wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & + tmpO, tmpJ, tmpM, tmpS, tmpC, tmpD, tmpL, tmpR, tmpE, tmpF, & + no_1e) bind(C, name = "deb_no_1e") + + import c_int, c_double, c_ptr + + integer(c_int), intent(in), value :: n_grid1 + integer(c_int), intent(in), value :: n_mo + integer(c_int), intent(in), value :: ne_a + integer(c_int), intent(in), value :: ne_b + real(c_double), intent(in) :: wr1(n_grid1) + real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) + real(c_double), intent(out) :: tmpO(n_grid1) + real(c_double), intent(out) :: tmpJ(n_grid1,3) + real(c_double), intent(out) :: tmpM(n_grid1,3) + real(c_double), intent(out) :: tmpS(n_grid1) + real(c_double), intent(out) :: tmpC(n_grid1,4,n_mo,n_mo) + real(c_double), intent(out) :: tmpD(n_grid1,4) + real(c_double), intent(out) :: tmpL(n_grid1,3,n_mo) + real(c_double), intent(out) :: tmpR(n_grid1,3,n_mo) + real(c_double), intent(out) :: tmpE(n_grid1,5,n_mo) + real(c_double), intent(out) :: tmpF(n_grid1,5,n_mo) + real(c_double), intent(out) :: no_1e(n_mo,n_mo) + + end subroutine deb_no_1e + + ! --- + end interface end module cutc_module diff --git a/plugins/local/tc_int/deb_no_1e_gpu.irp.f b/plugins/local/tc_int/deb_no_1e_gpu.irp.f new file mode 100644 index 00000000..1efbb913 --- /dev/null +++ b/plugins/local/tc_int/deb_no_1e_gpu.irp.f @@ -0,0 +1,499 @@ + +! --- + +subroutine deb_no_1e_gpu() + + use cutc_module + + implicit none + + integer :: i, j, k, l, ipoint + double precision :: acc_thr, err_tot, nrm_tot, err_loc + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: tmp(:,:,:,:) + double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) + double precision, allocatable :: noL_1e(:,:) + double precision, allocatable :: noL_1e_gpu(:,:) + + + PROVIDE mo_l_coef mo_r_coef + PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp + + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) + print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") + read(11) int2_grad1_u12_ao + close(11) + + allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) + allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(int2_grad1_u12_ao) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, ipoint) & + !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) + !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + do i = 1, mo_num + do j = 1, mo_num + int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) + int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) + int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmp) + + ! --- + + allocate(noL_1e_gpu(mo_num,mo_num)) + + call cutc_no_1e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_1e_gpu(1,1)) + + ! --- + + allocate(noL_1e(mo_num,mo_num)) + + call provide_no_1e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_1e(1,1)) + + ! --- + + deallocate(int2_grad1_u12_bimo_t) + + acc_thr = 1d-12 + + err_tot = 0.d0 + nrm_tot = 0.d0 + do k = 1, mo_num + do l = 1, mo_num + err_loc = dabs(noL_1e(l,k) - noL_1e_gpu(l,k)) + if(err_loc > acc_thr) then + print*, " error on", l, k + print*, " CPU res", noL_1e (l,k) + print*, " GPU res", noL_1e_gpu(l,k) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(noL_1e(l,k)) + enddo + enddo + print *, ' absolute accuracy on noL_1e (%) =', 100.d0 * err_tot / nrm_tot + + deallocate(noL_1e) + deallocate(noL_1e_gpu) + + + return + +end + +! --- + +subroutine deb_no_1e_gpu_tmp() + + use cutc_module + + implicit none + + integer :: i, j, k, l, m, ipoint + double precision :: acc_thr, err_tot, nrm_tot, err_loc + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: tmp(:,:,:,:) + double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) + double precision, allocatable :: tmpO(:), tmpO_gpu(:) + double precision, allocatable :: tmpJ(:,:), tmpJ_gpu(:,:) + double precision, allocatable :: tmpM(:,:), tmpM_gpu(:,:) + double precision, allocatable :: tmpS(:), tmpS_gpu(:) + double precision, allocatable :: tmpC(:,:,:,:), tmpC_gpu(:,:,:,:) + double precision, allocatable :: tmpD(:,:), tmpD_gpu(:,:) + double precision, allocatable :: tmpL(:,:,:), tmpL_gpu(:,:,:) + double precision, allocatable :: tmpR(:,:,:), tmpR_gpu(:,:,:) + double precision, allocatable :: tmpE(:,:,:), tmpE_gpu(:,:,:) + double precision, allocatable :: tmpF(:,:,:), tmpF_gpu(:,:,:) + double precision, allocatable :: noL_1e(:,:), noL_1e_gpu(:,:) + + + ! --- + + + PROVIDE mo_l_coef mo_r_coef + PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp + + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) + print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") + read(11) int2_grad1_u12_ao + close(11) + + allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) + allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(int2_grad1_u12_ao) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, ipoint) & + !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) + !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + do i = 1, mo_num + do j = 1, mo_num + int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) + int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) + int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmp) + + ! --- + + allocate(tmpO_gpu(n_points_final_grid)) + allocate(tmpJ_gpu(n_points_final_grid,3)) + allocate(tmpM_gpu(n_points_final_grid,3)) + allocate(tmpS_gpu(n_points_final_grid)) + allocate(tmpC_gpu(n_points_final_grid,4,mo_num,mo_num)) + allocate(tmpD_gpu(n_points_final_grid,4)) + allocate(tmpL_gpu(n_points_final_grid,3,mo_num)) + allocate(tmpR_gpu(n_points_final_grid,3,mo_num)) + allocate(tmpE_gpu(n_points_final_grid,5,mo_num)) + allocate(tmpF_gpu(n_points_final_grid,5,mo_num)) + allocate(noL_1e_gpu(mo_num,mo_num)) + + call deb_no_1e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), int2_grad1_u12_bimo_t(1,1,1,1), & + tmpO_gpu(1), tmpJ_gpu(1,1), tmpM_gpu(1,1), tmpS_gpu(1), tmpC_gpu(1,1,1,1), tmpD_gpu(1,1), & + tmpL_gpu(1,1,1), tmpR_gpu(1,1,1), tmpE_gpu(1,1,1), tmpF_gpu(1,1,1), noL_1e_gpu(1,1)) + + ! --- + + allocate(tmpO(n_points_final_grid)) + allocate(tmpJ(n_points_final_grid,3)) + allocate(tmpM(n_points_final_grid,3)) + allocate(tmpS(n_points_final_grid)) + allocate(tmpC(n_points_final_grid,4,mo_num,mo_num)) + allocate(tmpD(n_points_final_grid,4)) + allocate(tmpL(n_points_final_grid,3,mo_num)) + allocate(tmpR(n_points_final_grid,3,mo_num)) + allocate(tmpE(n_points_final_grid,5,mo_num)) + allocate(tmpF(n_points_final_grid,5,mo_num)) + allocate(noL_1e(mo_num,mo_num)) + + call provide_no_1e_tmp(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), int2_grad1_u12_bimo_t(1,1,1,1), & + tmpO(1), tmpJ(1,1), tmpM(1,1), tmpS(1), tmpC(1,1,1,1), tmpD(1,1), tmpL(1,1,1), tmpR(1,1,1), & + tmpE(1,1,1), tmpF(1,1,1), noL_1e(1,1)) + + ! --- + + deallocate(int2_grad1_u12_bimo_t) + + + acc_thr = 1d-12 + + ! --- + + ! tmpO(n_points_final_grid)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpO(ipoint) - tmpO_gpu(ipoint)) + if(err_loc > acc_thr) then + print*, " error on", ipoint + print*, " CPU res", tmpO (ipoint) + print*, " GPU res", tmpO_gpu(ipoint) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpO(ipoint)) + enddo + print *, ' absolute accuracy on tmpO (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + ! tmpJ(n_points_final_grid,3)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do m = 1, 3 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpJ(ipoint,m) - tmpJ_gpu(ipoint,m)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m + print*, " CPU res", tmpJ (ipoint,m) + print*, " GPU res", tmpJ_gpu(ipoint,m) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpJ(ipoint,m)) + enddo + enddo + print *, ' absolute accuracy on tmpJ (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + ! tmpM(n_points_final_grid,3)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do m = 1, 3 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpM(ipoint,m) - tmpM_gpu(ipoint,m)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m + print*, " CPU res", tmpM (ipoint,m) + print*, " GPU res", tmpM_gpu(ipoint,m) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpM(ipoint,m)) + enddo + enddo + print *, ' absolute accuracy on tmpM (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + ! tmpS(n_points_final_grid)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpS(ipoint) - tmpS_gpu(ipoint)) + if(err_loc > acc_thr) then + print*, " error on", ipoint + print*, " CPU res", tmpS (ipoint) + print*, " GPU res", tmpS_gpu(ipoint) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpS(ipoint)) + enddo + print *, ' absolute accuracy on tmpS (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + ! tmpC(n_points_final_grid,4,mo_num,mo_num)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do j = 1, mo_num + do m = 1, 4 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpC(ipoint,m,j,i) - tmpC_gpu(ipoint,m,j,i)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m, j, i + print*, " CPU res", tmpC (ipoint,m,j,i) + print*, " GPU res", tmpC_gpu(ipoint,m,j,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpC(ipoint,m,j,i)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on tmpC (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + ! tmpD(n_points_final_grid,4)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do m = 1, 4 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpD(ipoint,m) - tmpD_gpu(ipoint,m)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m + print*, " CPU res", tmpD (ipoint,m) + print*, " GPU res", tmpD_gpu(ipoint,m) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpD(ipoint,m)) + enddo + enddo + print *, ' absolute accuracy on tmpD (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + ! tmpL(n_points_final_grid,3,mo_num)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do m = 1, 3 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpL(ipoint,m,i) - tmpL_gpu(ipoint,m,i)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m, i + print*, " CPU res", tmpL (ipoint,m,i) + print*, " GPU res", tmpL_gpu(ipoint,m,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpL(ipoint,m,i)) + enddo + enddo + enddo + print *, ' absolute accuracy on tmpL (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + ! tmpR(n_points_final_grid,3,mo_num)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do m = 1, 3 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpR(ipoint,m,i) - tmpR_gpu(ipoint,m,i)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m, i + print*, " CPU res", tmpR (ipoint,m,i) + print*, " GPU res", tmpR_gpu(ipoint,m,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpR(ipoint,m,i)) + enddo + enddo + enddo + print *, ' absolute accuracy on tmpR (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + ! tmpE(n_points_final_grid,5,mo_num)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do m = 1, 5 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpE(ipoint,m,i) - tmpE_gpu(ipoint,m,i)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m, i + print*, " CPU res", tmpE (ipoint,m,i) + print*, " GPU res", tmpE_gpu(ipoint,m,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpE(ipoint,m,i)) + enddo + enddo + enddo + print *, ' absolute accuracy on tmpE (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + ! tmpF(n_points_final_grid,5,mo_num)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do m = 1, 5 + do ipoint = 1, n_points_final_grid + err_loc = dabs(tmpF(ipoint,m,i) - tmpF_gpu(ipoint,m,i)) + if(err_loc > acc_thr) then + print*, " error on", ipoint, m, i + print*, " CPU res", tmpF (ipoint,m,i) + print*, " GPU res", tmpF_gpu(ipoint,m,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(tmpF(ipoint,m,i)) + enddo + enddo + enddo + print *, ' absolute accuracy on tmpF (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + ! noL_1e(mo_num,mo_num)) + err_tot = 0.d0 + nrm_tot = 0.d0 + do k = 1, mo_num + do l = 1, mo_num + err_loc = dabs(noL_1e(l,k) - noL_1e_gpu(l,k)) + if(err_loc > acc_thr) then + print*, " error on", l, k + print*, " CPU res", noL_1e (l,k) + print*, " GPU res", noL_1e_gpu(l,k) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(noL_1e(l,k)) + enddo + enddo + print *, ' absolute accuracy on noL_1e (%) =', 100.d0 * err_tot / nrm_tot + + ! --- + + + deallocate(tmpO) + deallocate(tmpJ) + deallocate(tmpM) + deallocate(tmpS) + deallocate(tmpC) + deallocate(tmpD) + deallocate(tmpL) + deallocate(tmpR) + deallocate(tmpE) + deallocate(tmpF) + deallocate(noL_1e) + + deallocate(tmpO_gpu) + deallocate(tmpJ_gpu) + deallocate(tmpM_gpu) + deallocate(tmpS_gpu) + deallocate(tmpC_gpu) + deallocate(tmpD_gpu) + deallocate(tmpL_gpu) + deallocate(tmpR_gpu) + deallocate(tmpE_gpu) + deallocate(tmpF_gpu) + deallocate(noL_1e_gpu) + + + return + +end + + + diff --git a/plugins/local/tc_int/deb_no_2e_gpu.irp.f b/plugins/local/tc_int/deb_no_2e_gpu.irp.f index 2be53ddd..16f58cca 100644 --- a/plugins/local/tc_int/deb_no_2e_gpu.irp.f +++ b/plugins/local/tc_int/deb_no_2e_gpu.irp.f @@ -87,7 +87,6 @@ subroutine deb_no_2e_gpu() acc_thr = 1d-12 - print *, ' precision on noL_2e ' err_tot = 0.d0 nrm_tot = 0.d0 do i = 1, mo_num diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f index 9da9ac95..8d0cc4f3 100644 --- a/plugins/local/tc_int/deb_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/deb_tc_int_cuda.irp.f @@ -37,8 +37,12 @@ subroutine main() implicit none !call deb_int_2e_ao_gpu() + !call deb_no_2e_gpu_tmp() - call deb_no_2e_gpu() + !call deb_no_2e_gpu() + + call deb_no_1e_gpu_tmp() + !call deb_no_1e_gpu() return end diff --git a/plugins/local/tc_int/no_1e.irp.f b/plugins/local/tc_int/no_1e.irp.f index 3a990276..5a9798f0 100644 --- a/plugins/local/tc_int/no_1e.irp.f +++ b/plugins/local/tc_int/no_1e.irp.f @@ -15,10 +15,10 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, integer :: p, s, i, j, ipoint double precision :: t0, t1 - double precision, allocatable :: tmp1(:,:,:,:), tmp2(:,:), tmp3(:,:,:), tmp4(:,:,:) - double precision, allocatable :: tmp_L(:,:,:), tmp_R(:,:,:), tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) - double precision, allocatable :: tmp_L0(:,:,:), tmp_R0(:,:,:) - double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) + double precision, allocatable :: tmpC(:,:,:,:), tmpD(:,:), tmpE(:,:,:), tmpF(:,:,:) + double precision, allocatable :: tmpL(:,:,:), tmpR(:,:,:), tmpM(:,:), tmpS(:), tmpO(:), tmpJ(:,:) + double precision, allocatable :: tmpL0(:,:,:), tmpR0(:,:,:) + double precision, allocatable :: tmpM_priv(:,:), tmpS_priv(:), tmpO_priv(:), tmpJ_priv(:,:) call wall_time(t0) @@ -26,119 +26,119 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, if(ne_a .eq. ne_b) then - allocate(tmp_O(n_grid), tmp_J(n_grid,3)) - tmp_O = 0.d0 - tmp_J = 0.d0 + allocate(tmpO(n_grid), tmpJ(n_grid,3)) + tmpO = 0.d0 + tmpJ = 0.d0 - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & - !$OMP SHARED(ne_b, n_grid, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, tmp_O, tmp_J) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmpO_priv, tmpJ_priv) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpO, tmpJ) - allocate(tmp_O_priv(n_grid), tmp_J_priv(n_grid,3)) - tmp_O_priv = 0.d0 - tmp_J_priv = 0.d0 + allocate(tmpO_priv(n_grid), tmpJ_priv(n_grid,3)) + tmpO_priv = 0.d0 + tmpJ_priv = 0.d0 !$OMP DO do i = 1, ne_b do ipoint = 1, n_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) + tmpO_priv(ipoint) = tmpO_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ_priv(ipoint,1) = tmpJ_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) + tmpJ_priv(ipoint,2) = tmpJ_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) + tmpJ_priv(ipoint,3) = tmpJ_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) enddo enddo !$OMP END DO NOWAIT !$OMP CRITICAL - tmp_O = tmp_O + tmp_O_priv - tmp_J = tmp_J + tmp_J_priv + tmpO = tmpO + tmpO_priv + tmpJ = tmpJ + tmpJ_priv !$OMP END CRITICAL - deallocate(tmp_O_priv, tmp_J_priv) + deallocate(tmpO_priv, tmpJ_priv) !$OMP END PARALLEL ! --- - allocate(tmp_M(n_grid,3), tmp_S(n_grid)) - tmp_M = 0.d0 - tmp_S = 0.d0 + allocate(tmpM(n_grid,3), tmpS(n_grid)) + tmpM = 0.d0 + tmpS = 0.d0 - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & - !$OMP SHARED(ne_b, n_grid, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, tmp_M, tmp_S) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmpM_priv, tmpS_priv) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpM, tmpS) - allocate(tmp_M_priv(n_grid,3), tmp_S_priv(n_grid)) - tmp_M_priv = 0.d0 - tmp_S_priv = 0.d0 + allocate(tmpM_priv(n_grid,3), tmpS_priv(n_grid)) + tmpM_priv = 0.d0 + tmpS_priv = 0.d0 !$OMP DO COLLAPSE(2) do i = 1, ne_b do j = 1, ne_b do ipoint = 1, n_grid - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & - + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & - + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + tmpS_priv(ipoint) = tmpS_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) enddo enddo enddo !$OMP END DO NOWAIT !$OMP CRITICAL - tmp_M = tmp_M + tmp_M_priv - tmp_S = tmp_S + tmp_S_priv + tmpM = tmpM + tmpM_priv + tmpS = tmpS + tmpS_priv !$OMP END CRITICAL - deallocate(tmp_M_priv, tmp_S_priv) + deallocate(tmpM_priv, tmpS_priv) !$OMP END PARALLEL ! --- - allocate(tmp2(n_grid,4)) - allocate(tmp1(n_grid,4,mo_num,mo_num)) + allocate(tmpC(n_grid,4,n_mo,n_mo)) + allocate(tmpD(n_grid,4)) do ipoint = 1, n_grid - tmp2(ipoint,1) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,1) - tmp_M(ipoint,1)) - tmp2(ipoint,2) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,2) - tmp_M(ipoint,2)) - tmp2(ipoint,3) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,3) - tmp_M(ipoint,3)) - tmp2(ipoint,4) = -wr1(ipoint) * tmp_O(ipoint) + tmpD(ipoint,1) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,1) - tmpM(ipoint,1)) + tmpD(ipoint,2) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,2) - tmpM(ipoint,2)) + tmpD(ipoint,3) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,3) - tmpM(ipoint,3)) + tmpD(ipoint,4) = -wr1(ipoint) * tmpO(ipoint) - tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1) * tmp_J(ipoint,1) + tmp_J(ipoint,2) * tmp_J(ipoint,2) + tmp_J(ipoint,3) * tmp_J(ipoint,3)) - tmp_S(ipoint) + tmpS(ipoint) = 2.d0 * (tmpJ(ipoint,1) * tmpJ(ipoint,1) + tmpJ(ipoint,2) * tmpJ(ipoint,2) + tmpJ(ipoint,3) * tmpJ(ipoint,3)) - tmpS(ipoint) enddo - deallocate(tmp_O, tmp_M) + deallocate(tmpO, tmpM) - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(p, s, i, ipoint) & - !$OMP SHARED(mo_num, ne_b, n_grid, & - !$OMP int2_grad1_u12, tmp1) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, s, i, ipoint) & + !$OMP SHARED(n_mo, ne_b, n_grid, & + !$OMP int2_grad1_u12, tmpC) !$OMP DO COLLAPSE(2) - do s = 1, mo_num - do p = 1, mo_num + do s = 1, n_mo + do p = 1, n_mo do ipoint = 1, n_grid - tmp1(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) - tmp1(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) - tmp1(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) + tmpC(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) + tmpC(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) + tmpC(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) enddo - tmp1(:,4,p,s) = 0.d0 + tmpC(:,4,p,s) = 0.d0 do i = 1, ne_b do ipoint = 1, n_grid - tmp1(ipoint,4,p,s) = tmp1(ipoint,4,p,s) + int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + tmpC(ipoint,4,p,s) = tmpC(ipoint,4,p,s) + int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) enddo @@ -149,41 +149,41 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, !$OMP END DO !$OMP END PARALLEL - call dgemv( 'T', 4*n_grid, mo_num*mo_num, 2.d0 & - , tmp1(1,1,1,1), size(tmp1, 1) * size(tmp1, 2) & - , tmp2(1,1), 1 & + call dgemv( 'T', 4*n_grid, n_mo*n_mo, 2.d0 & + , tmpC(1,1,1,1), size(tmpC, 1) * size(tmpC, 2) & + , tmpD(1,1), 1 & , 0.d0, noL_1e(1,1), 1) - deallocate(tmp1, tmp2) + deallocate(tmpC, tmpD) ! --- - allocate(tmp_L(n_grid,3,mo_num)) - allocate(tmp_R(n_grid,3,mo_num)) + allocate(tmpL(n_grid,3,n_mo)) + allocate(tmpR(n_grid,3,n_mo)) - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(p, i, ipoint) & - !$OMP SHARED(ne_b, n_grid, mo_num, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, tmp_L, tmp_R) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, ipoint) & + !$OMP SHARED(ne_b, n_grid, n_mo, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpL, tmpR) !$OMP DO - do p = 1, mo_num + do p = 1, n_mo - tmp_L(:,1:3,p) = 0.d0 - tmp_R(:,1:3,p) = 0.d0 + tmpL(:,1:3,p) = 0.d0 + tmpR(:,1:3,p) = 0.d0 do i = 1, ne_b do ipoint = 1, n_grid - tmp_L(ipoint,1,p) = tmp_L(ipoint,1,p) + int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,2,p) = tmp_L(ipoint,2,p) + int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,3,p) = tmp_L(ipoint,3,p) + int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,1,p) = tmpL(ipoint,1,p) + int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,2,p) = tmpL(ipoint,2,p) + int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,3,p) = tmpL(ipoint,3,p) + int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) - tmp_R(ipoint,1,p) = tmp_R(ipoint,1,p) + int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,2,p) = tmp_R(ipoint,2,p) + int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,3,p) = tmp_R(ipoint,3,p) + int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) + tmpR(ipoint,1,p) = tmpR(ipoint,1,p) + int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) + tmpR(ipoint,2,p) = tmpR(ipoint,2,p) + int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) + tmpR(ipoint,3,p) = tmpR(ipoint,3,p) + int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) enddo enddo enddo ! p @@ -192,45 +192,45 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, ! --- - allocate(tmp3(n_grid,5,mo_num)) - allocate(tmp4(n_grid,5,mo_num)) + allocate(tmpE(n_grid,5,n_mo)) + allocate(tmpF(n_grid,5,n_mo)) - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(p, i, j, ipoint) & - !$OMP SHARED(ne_b, n_grid, mo_num, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, wr1, & - !$OMP tmp_L, tmp_R, tmp_J, tmp_S, tmp3, tmp4) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, j, ipoint) & + !$OMP SHARED(ne_b, n_grid, n_mo, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, wr1, & + !$OMP tmpL, tmpR, tmpJ, tmpS, tmpE, tmpF) !$OMP DO - do p = 1, mo_num + do p = 1, n_mo do ipoint = 1, n_grid - tmp3(ipoint,1,p) = wr1(ipoint) * mos_l_in_r(ipoint,p) - tmp3(ipoint,2,p) = -2.d0 * (tmp_L(ipoint,1,p) * tmp_J(ipoint,1) + tmp_L(ipoint,2,p) * tmp_J(ipoint,2) + tmp_L(ipoint,3,p) * tmp_J(ipoint,3)) - tmp3(ipoint,3,p) = wr1(ipoint) * tmp_L(ipoint,1,p) - tmp3(ipoint,4,p) = wr1(ipoint) * tmp_L(ipoint,2,p) - tmp3(ipoint,5,p) = wr1(ipoint) * tmp_L(ipoint,3,p) + tmpE(ipoint,1,p) = wr1(ipoint) * mos_l_in_r(ipoint,p) + tmpE(ipoint,2,p) = -2.d0 * (tmpL(ipoint,1,p) * tmpJ(ipoint,1) + tmpL(ipoint,2,p) * tmpJ(ipoint,2) + tmpL(ipoint,3,p) * tmpJ(ipoint,3)) + tmpE(ipoint,3,p) = wr1(ipoint) * tmpL(ipoint,1,p) + tmpE(ipoint,4,p) = wr1(ipoint) * tmpL(ipoint,2,p) + tmpE(ipoint,5,p) = wr1(ipoint) * tmpL(ipoint,3,p) - tmp4(ipoint,1,p) = -2.d0 * (tmp_R(ipoint,1,p) * tmp_J(ipoint,1) + tmp_R(ipoint,2,p) * tmp_J(ipoint,2) + tmp_R(ipoint,3,p) * tmp_J(ipoint,3)) & - + mos_r_in_r(ipoint,p) * tmp_S(ipoint) - tmp4(ipoint,2,p) = wr1(ipoint) * mos_r_in_r(ipoint,p) - tmp4(ipoint,3,p) = tmp_R(ipoint,1,p) - tmp4(ipoint,4,p) = tmp_R(ipoint,2,p) - tmp4(ipoint,5,p) = tmp_R(ipoint,3,p) + tmpF(ipoint,1,p) = -2.d0 * (tmpR(ipoint,1,p) * tmpJ(ipoint,1) + tmpR(ipoint,2,p) * tmpJ(ipoint,2) + tmpR(ipoint,3,p) * tmpJ(ipoint,3)) & + + mos_r_in_r(ipoint,p) * tmpS(ipoint) + tmpF(ipoint,2,p) = wr1(ipoint) * mos_r_in_r(ipoint,p) + tmpF(ipoint,3,p) = tmpR(ipoint,1,p) + tmpF(ipoint,4,p) = tmpR(ipoint,2,p) + tmpF(ipoint,5,p) = tmpR(ipoint,3,p) enddo do i = 1, ne_b do j = 1, ne_b do ipoint = 1, n_grid - tmp3(ipoint,2,p) = tmp3(ipoint,2,p) + mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + tmpE(ipoint,2,p) = tmpE(ipoint,2,p) + mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) - tmp4(ipoint,1,p) = tmp4(ipoint,1,p) + mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + tmpF(ipoint,1,p) = tmpF(ipoint,1,p) + mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) enddo ! ipoint @@ -241,40 +241,40 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, !$OMP END DO !$OMP END PARALLEL - deallocate(tmp_L, tmp_R, tmp_J, tmp_S) + deallocate(tmpL, tmpR, tmpJ, tmpS) - call dgemm( 'T', 'N', mo_num, mo_num, 5*n_grid, 1.d0 & - , tmp3(1,1,1), 5*n_grid, tmp4(1,1,1), 5*n_grid & - , 1.d0, noL_1e(1,1), mo_num) + call dgemm( 'T', 'N', n_mo, n_mo, 5*n_grid, 1.d0 & + , tmpE(1,1,1), 5*n_grid, tmpF(1,1,1), 5*n_grid & + , 1.d0, noL_1e(1,1), n_mo) - deallocate(tmp3, tmp4) + deallocate(tmpE, tmpF) ! --- else - allocate(tmp_O(n_grid), tmp_J(n_grid,3)) - tmp_O = 0.d0 - tmp_J = 0.d0 + allocate(tmpO(n_grid), tmpJ(n_grid,3)) + tmpO = 0.d0 + tmpJ = 0.d0 - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & - !$OMP SHARED(ne_b, ne_a, n_grid, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, tmp_O, tmp_J) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmpO_priv, tmpJ_priv) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpO, tmpJ) - allocate(tmp_O_priv(n_grid), tmp_J_priv(n_grid,3)) - tmp_O_priv = 0.d0 - tmp_J_priv = 0.d0 + allocate(tmpO_priv(n_grid), tmpJ_priv(n_grid,3)) + tmpO_priv = 0.d0 + tmpJ_priv = 0.d0 !$OMP DO do i = 1, ne_b do ipoint = 1, n_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) + tmpO_priv(ipoint) = tmpO_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ_priv(ipoint,1) = tmpJ_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) + tmpJ_priv(ipoint,2) = tmpJ_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) + tmpJ_priv(ipoint,3) = tmpJ_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) enddo enddo !$OMP END DO NOWAIT @@ -282,51 +282,51 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, !$OMP DO do i = ne_b+1, ne_a do ipoint = 1, n_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + 0.5d0 * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,i) + tmpO_priv(ipoint) = tmpO_priv(ipoint) + 0.5d0 * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ_priv(ipoint,1) = tmpJ_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,i) + tmpJ_priv(ipoint,2) = tmpJ_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,i) + tmpJ_priv(ipoint,3) = tmpJ_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,i) enddo enddo !$OMP END DO NOWAIT !$OMP CRITICAL - tmp_O = tmp_O + tmp_O_priv - tmp_J = tmp_J + tmp_J_priv + tmpO = tmpO + tmpO_priv + tmpJ = tmpJ + tmpJ_priv !$OMP END CRITICAL - deallocate(tmp_O_priv, tmp_J_priv) + deallocate(tmpO_priv, tmpJ_priv) !$OMP END PARALLEL ! --- - allocate(tmp_M(n_grid,3), tmp_S(n_grid)) - tmp_M = 0.d0 - tmp_S = 0.d0 + allocate(tmpM(n_grid,3), tmpS(n_grid)) + tmpM = 0.d0 + tmpS = 0.d0 - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & - !$OMP SHARED(ne_b, ne_a, n_grid, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, tmp_M, tmp_S) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmpM_priv, tmpS_priv) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpM, tmpS) - allocate(tmp_M_priv(n_grid,3), tmp_S_priv(n_grid)) - tmp_M_priv = 0.d0 - tmp_S_priv = 0.d0 + allocate(tmpM_priv(n_grid,3), tmpS_priv(n_grid)) + tmpM_priv = 0.d0 + tmpS_priv = 0.d0 !$OMP DO COLLAPSE(2) do i = 1, ne_b do j = 1, ne_b do ipoint = 1, n_grid - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & - + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & - + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + tmpS_priv(ipoint) = tmpS_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) enddo enddo enddo @@ -337,17 +337,17 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, do j = 1, ne_b do ipoint = 1, n_grid - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & - + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & - + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + tmpS_priv(ipoint) = tmpS_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) enddo enddo enddo @@ -358,70 +358,70 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, do j = ne_b+1, ne_a do ipoint = 1, n_grid - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & - + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & - + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + tmpS_priv(ipoint) = tmpS_priv(ipoint) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) enddo enddo enddo !$OMP END DO NOWAIT !$OMP CRITICAL - tmp_M = tmp_M + tmp_M_priv - tmp_S = tmp_S + tmp_S_priv + tmpM = tmpM + tmpM_priv + tmpS = tmpS + tmpS_priv !$OMP END CRITICAL - deallocate(tmp_M_priv, tmp_S_priv) + deallocate(tmpM_priv, tmpS_priv) !$OMP END PARALLEL ! --- - allocate(tmp2(n_grid,4)) - allocate(tmp1(n_grid,4,mo_num,mo_num)) + allocate(tmpC(n_grid,4,n_mo,n_mo)) + allocate(tmpD(n_grid,4)) do ipoint = 1, n_grid - tmp2(ipoint,1) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,1) - tmp_M(ipoint,1)) - tmp2(ipoint,2) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,2) - tmp_M(ipoint,2)) - tmp2(ipoint,3) = wr1(ipoint) * (2.d0 * tmp_O(ipoint) * tmp_J(ipoint,3) - tmp_M(ipoint,3)) - tmp2(ipoint,4) = -wr1(ipoint) * tmp_O(ipoint) + tmpD(ipoint,1) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,1) - tmpM(ipoint,1)) + tmpD(ipoint,2) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,2) - tmpM(ipoint,2)) + tmpD(ipoint,3) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,3) - tmpM(ipoint,3)) + tmpD(ipoint,4) = -wr1(ipoint) * tmpO(ipoint) - tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1) * tmp_J(ipoint,1) + tmp_J(ipoint,2) * tmp_J(ipoint,2) + tmp_J(ipoint,3) * tmp_J(ipoint,3)) - tmp_S(ipoint) + tmpS(ipoint) = 2.d0 * (tmpJ(ipoint,1) * tmpJ(ipoint,1) + tmpJ(ipoint,2) * tmpJ(ipoint,2) + tmpJ(ipoint,3) * tmpJ(ipoint,3)) - tmpS(ipoint) enddo - deallocate(tmp_O, tmp_M) + deallocate(tmpO, tmpM) - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(p, s, i, ipoint) & - !$OMP SHARED(mo_num, ne_b, n_grid, & - !$OMP ne_a, int2_grad1_u12, tmp1) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, s, i, ipoint) & + !$OMP SHARED(n_mo, ne_b, n_grid, & + !$OMP ne_a, int2_grad1_u12, tmpC) !$OMP DO COLLAPSE(2) - do s = 1, mo_num - do p = 1, mo_num + do s = 1, n_mo + do p = 1, n_mo do ipoint = 1, n_grid - tmp1(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) - tmp1(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) - tmp1(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) + tmpC(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) + tmpC(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) + tmpC(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) enddo - tmp1(:,4,p,s) = 0.d0 + tmpC(:,4,p,s) = 0.d0 do i = 1, ne_b do ipoint = 1, n_grid - tmp1(ipoint,4,p,s) = tmp1(ipoint,4,p,s) + int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + tmpC(ipoint,4,p,s) = tmpC(ipoint,4,p,s) + int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) enddo enddo do i = ne_b+1, ne_a do ipoint = 1, n_grid - tmp1(ipoint,4,p,s) = tmp1(ipoint,4,p,s) + 0.5d0 * int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + tmpC(ipoint,4,p,s) = tmpC(ipoint,4,p,s) + 0.5d0 * int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + 0.5d0 * int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + 0.5d0 * int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) enddo @@ -432,55 +432,55 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, !$OMP END DO !$OMP END PARALLEL - call dgemv( 'T', 4*n_grid, mo_num*mo_num, 2.d0 & - , tmp1(1,1,1,1), size(tmp1, 1) * size(tmp1, 2) & - , tmp2(1,1), 1 & + call dgemv( 'T', 4*n_grid, n_mo*n_mo, 2.d0 & + , tmpC(1,1,1,1), size(tmpC, 1) * size(tmpC, 2) & + , tmpD(1,1), 1 & , 0.d0, noL_1e(1,1), 1) - deallocate(tmp1, tmp2) + deallocate(tmpC, tmpD) ! --- - allocate(tmp_L(n_grid,3,mo_num), tmp_L0(n_grid,3,mo_num)) - allocate(tmp_R(n_grid,3,mo_num), tmp_R0(n_grid,3,mo_num)) + allocate(tmpL(n_grid,3,n_mo), tmpL0(n_grid,3,n_mo)) + allocate(tmpR(n_grid,3,n_mo), tmpR0(n_grid,3,n_mo)) - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(p, i, ipoint) & - !$OMP SHARED(ne_b, ne_a, n_grid, mo_num, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, tmp_L0, tmp_R0, tmp_L, tmp_R) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, ipoint) & + !$OMP SHARED(ne_b, ne_a, n_grid, n_mo, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpL0, tmpR0, tmpL, tmpR) !$OMP DO - do p = 1, mo_num + do p = 1, n_mo - tmp_L0(:,1:3,p) = 0.d0 - tmp_R0(:,1:3,p) = 0.d0 + tmpL0(:,1:3,p) = 0.d0 + tmpR0(:,1:3,p) = 0.d0 do i = ne_b+1, ne_a do ipoint = 1, n_grid - tmp_L0(ipoint,1,p) = tmp_L0(ipoint,1,p) + 0.5d0 * int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) - tmp_L0(ipoint,2,p) = tmp_L0(ipoint,2,p) + 0.5d0 * int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) - tmp_L0(ipoint,3,p) = tmp_L0(ipoint,3,p) + 0.5d0 * int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) + tmpL0(ipoint,1,p) = tmpL0(ipoint,1,p) + 0.5d0 * int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) + tmpL0(ipoint,2,p) = tmpL0(ipoint,2,p) + 0.5d0 * int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) + tmpL0(ipoint,3,p) = tmpL0(ipoint,3,p) + 0.5d0 * int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) - tmp_R0(ipoint,1,p) = tmp_R0(ipoint,1,p) + 0.5d0 * int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) - tmp_R0(ipoint,2,p) = tmp_R0(ipoint,2,p) + 0.5d0 * int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) - tmp_R0(ipoint,3,p) = tmp_R0(ipoint,3,p) + 0.5d0 * int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) + tmpR0(ipoint,1,p) = tmpR0(ipoint,1,p) + 0.5d0 * int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) + tmpR0(ipoint,2,p) = tmpR0(ipoint,2,p) + 0.5d0 * int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) + tmpR0(ipoint,3,p) = tmpR0(ipoint,3,p) + 0.5d0 * int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) enddo enddo - tmp_L(:,1:3,p) = tmp_L0(:,1:3,p) - tmp_R(:,1:3,p) = tmp_R0(:,1:3,p) + tmpL(:,1:3,p) = tmpL0(:,1:3,p) + tmpR(:,1:3,p) = tmpR0(:,1:3,p) do i = 1, ne_b do ipoint = 1, n_grid - tmp_L(ipoint,1,p) = tmp_L(ipoint,1,p) + int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,2,p) = tmp_L(ipoint,2,p) + int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,3,p) = tmp_L(ipoint,3,p) + int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,1,p) = tmpL(ipoint,1,p) + int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,2,p) = tmpL(ipoint,2,p) + int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,3,p) = tmpL(ipoint,3,p) + int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) - tmp_R(ipoint,1,p) = tmp_R(ipoint,1,p) + int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,2,p) = tmp_R(ipoint,2,p) + int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,3,p) = tmp_R(ipoint,3,p) + int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) + tmpR(ipoint,1,p) = tmpR(ipoint,1,p) + int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) + tmpR(ipoint,2,p) = tmpR(ipoint,2,p) + int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) + tmpR(ipoint,3,p) = tmpR(ipoint,3,p) + int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) enddo enddo @@ -490,51 +490,51 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, ! --- - allocate(tmp3(n_grid,8,mo_num)) - allocate(tmp4(n_grid,8,mo_num)) + allocate(tmpE(n_grid,8,n_mo)) + allocate(tmpF(n_grid,8,n_mo)) - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(p, i, j, ipoint) & - !$OMP SHARED(ne_b, ne_a, n_grid, mo_num, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, wr1, & - !$OMP tmp_L, tmp_L0, tmp_R, tmp_R0, tmp_J, tmp_S, tmp3, tmp4) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, j, ipoint) & + !$OMP SHARED(ne_b, ne_a, n_grid, n_mo, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, wr1, & + !$OMP tmpL, tmpL0, tmpR, tmpR0, tmpJ, tmpS, tmpE, tmpF) !$OMP DO - do p = 1, mo_num + do p = 1, n_mo do ipoint = 1, n_grid - tmp3(ipoint,1,p) = wr1(ipoint) * mos_l_in_r(ipoint,p) - tmp3(ipoint,2,p) = -2.d0 * (tmp_L(ipoint,1,p) * tmp_J(ipoint,1) + tmp_L(ipoint,2,p) * tmp_J(ipoint,2) + tmp_L(ipoint,3,p) * tmp_J(ipoint,3)) - tmp3(ipoint,3,p) = wr1(ipoint) * tmp_L(ipoint,1,p) - tmp3(ipoint,4,p) = wr1(ipoint) * tmp_L(ipoint,2,p) - tmp3(ipoint,5,p) = wr1(ipoint) * tmp_L(ipoint,3,p) - tmp3(ipoint,6,p) = wr1(ipoint) * tmp_L0(ipoint,1,p) - tmp3(ipoint,7,p) = wr1(ipoint) * tmp_L0(ipoint,2,p) - tmp3(ipoint,8,p) = wr1(ipoint) * tmp_L0(ipoint,3,p) + tmpE(ipoint,1,p) = wr1(ipoint) * mos_l_in_r(ipoint,p) + tmpE(ipoint,2,p) = -2.d0 * (tmpL(ipoint,1,p) * tmpJ(ipoint,1) + tmpL(ipoint,2,p) * tmpJ(ipoint,2) + tmpL(ipoint,3,p) * tmpJ(ipoint,3)) + tmpE(ipoint,3,p) = wr1(ipoint) * tmpL(ipoint,1,p) + tmpE(ipoint,4,p) = wr1(ipoint) * tmpL(ipoint,2,p) + tmpE(ipoint,5,p) = wr1(ipoint) * tmpL(ipoint,3,p) + tmpE(ipoint,6,p) = wr1(ipoint) * tmpL0(ipoint,1,p) + tmpE(ipoint,7,p) = wr1(ipoint) * tmpL0(ipoint,2,p) + tmpE(ipoint,8,p) = wr1(ipoint) * tmpL0(ipoint,3,p) - tmp4(ipoint,1,p) = -2.d0 * (tmp_R(ipoint,1,p) * tmp_J(ipoint,1) + tmp_R(ipoint,2,p) * tmp_J(ipoint,2) + tmp_R(ipoint,3,p) * tmp_J(ipoint,3)) & - + mos_r_in_r(ipoint,p) * tmp_S(ipoint) - tmp4(ipoint,2,p) = wr1(ipoint) * mos_r_in_r(ipoint,p) - tmp4(ipoint,3,p) = tmp_R(ipoint,1,p) - tmp4(ipoint,4,p) = tmp_R(ipoint,2,p) - tmp4(ipoint,5,p) = tmp_R(ipoint,3,p) - tmp4(ipoint,6,p) = tmp_R0(ipoint,1,p) - tmp4(ipoint,7,p) = tmp_R0(ipoint,2,p) - tmp4(ipoint,8,p) = tmp_R0(ipoint,3,p) + tmpF(ipoint,1,p) = -2.d0 * (tmpR(ipoint,1,p) * tmpJ(ipoint,1) + tmpR(ipoint,2,p) * tmpJ(ipoint,2) + tmpR(ipoint,3,p) * tmpJ(ipoint,3)) & + + mos_r_in_r(ipoint,p) * tmpS(ipoint) + tmpF(ipoint,2,p) = wr1(ipoint) * mos_r_in_r(ipoint,p) + tmpF(ipoint,3,p) = tmpR(ipoint,1,p) + tmpF(ipoint,4,p) = tmpR(ipoint,2,p) + tmpF(ipoint,5,p) = tmpR(ipoint,3,p) + tmpF(ipoint,6,p) = tmpR0(ipoint,1,p) + tmpF(ipoint,7,p) = tmpR0(ipoint,2,p) + tmpF(ipoint,8,p) = tmpR0(ipoint,3,p) enddo do i = 1, ne_b do j = 1, ne_b do ipoint = 1, n_grid - tmp3(ipoint,2,p) = tmp3(ipoint,2,p) + mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + tmpE(ipoint,2,p) = tmpE(ipoint,2,p) + mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) - tmp4(ipoint,1,p) = tmp4(ipoint,1,p) + mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + tmpF(ipoint,1,p) = tmpF(ipoint,1,p) + mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) enddo ! ipoint @@ -545,17 +545,17 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, do j = 1, ne_b do ipoint = 1, n_grid - tmp3(ipoint,2,p) = tmp3(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + tmpE(ipoint,2,p) = tmpE(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) - tmp3(ipoint,2,p) = tmp3(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,p,j) * int2_grad1_u12(ipoint,1,j,i) & + tmpE(ipoint,2,p) = tmpE(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,p,j) * int2_grad1_u12(ipoint,1,j,i) & + int2_grad1_u12(ipoint,2,p,j) * int2_grad1_u12(ipoint,2,j,i) & + int2_grad1_u12(ipoint,3,p,j) * int2_grad1_u12(ipoint,3,j,i) ) - tmp4(ipoint,1,p) = tmp4(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + tmpF(ipoint,1,p) = tmpF(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) - tmp4(ipoint,1,p) = tmp4(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,j,i) * int2_grad1_u12(ipoint,1,i,p) & + tmpF(ipoint,1,p) = tmpF(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,j,i) * int2_grad1_u12(ipoint,1,i,p) & + int2_grad1_u12(ipoint,2,j,i) * int2_grad1_u12(ipoint,2,i,p) & + int2_grad1_u12(ipoint,3,j,i) * int2_grad1_u12(ipoint,3,i,p) ) enddo ! ipoint @@ -566,11 +566,11 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, do j = ne_b+1, ne_a do ipoint = 1, n_grid - tmp3(ipoint,2,p) = tmp3(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + tmpE(ipoint,2,p) = tmpE(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) - tmp4(ipoint,1,p) = tmp4(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + tmpF(ipoint,1,p) = tmpF(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) enddo ! ipoint @@ -581,13 +581,590 @@ subroutine provide_no_1e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, !$OMP END DO !$OMP END PARALLEL - deallocate(tmp_L0, tmp_L, tmp_R0, tmp_R, tmp_J, tmp_S) + deallocate(tmpL0, tmpL, tmpR0, tmpR, tmpJ, tmpS) - call dgemm( 'T', 'N', mo_num, mo_num, 8*n_grid, 1.d0 & - , tmp3(1,1,1), 8*n_grid, tmp4(1,1,1), 8*n_grid & - , 1.d0, noL_1e(1,1), mo_num) + call dgemm( 'T', 'N', n_mo, n_mo, 8*n_grid, 1.d0 & + , tmpE(1,1,1), 8*n_grid, tmpF(1,1,1), 8*n_grid & + , 1.d0, noL_1e(1,1), n_mo) - deallocate(tmp3, tmp4) + deallocate(tmpE, tmpF) + + endif + + + call wall_time(t1) + write(*,"(A,2X,F15.7)") ' wall time for noL_1e (sec) = ', (t1 - t0) + + return +end + +! --- + +subroutine provide_no_1e_tmp(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & + tmpO, tmpJ, tmpM, tmpS, tmpC, tmpD, tmpL, tmpR, tmpE, tmpF, noL_1e) + + + implicit none + + integer, intent(in) :: n_grid, n_mo + integer, intent(in) :: ne_a, ne_b + double precision, intent(in) :: wr1(n_grid) + double precision, intent(in) :: mos_l_in_r(n_grid,n_mo) + double precision, intent(in) :: mos_r_in_r(n_grid,n_mo) + double precision, intent(in) :: int2_grad1_u12(n_grid,3,n_mo,n_mo) + double precision, intent(out) :: tmpO(n_grid), tmpJ(n_grid,3) + double precision, intent(out) :: tmpM(n_grid,3), tmpS(n_grid) + double precision, intent(out) :: tmpC(n_grid,4,n_mo,n_mo), tmpD(n_grid,4) + double precision, intent(out) :: tmpL(n_grid,3,n_mo), tmpR(n_grid,3,n_mo) + double precision, intent(out) :: tmpE(n_grid,5,n_mo), tmpF(n_grid,5,n_mo) + double precision, intent(out) :: noL_1e(n_mo,n_mo) + + integer :: p, s, i, j, ipoint + double precision :: t0, t1 + double precision, allocatable :: tmpM_priv(:,:), tmpS_priv(:), tmpO_priv(:), tmpJ_priv(:,:) + double precision, allocatable :: tmpL0(:,:,:), tmpR0(:,:,:) + double precision, allocatable :: tmpE_os(:,:,:), tmpF_os(:,:,:) + + + call wall_time(t0) + + + if(ne_a .eq. ne_b) then + + tmpO = 0.d0 + tmpJ = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmpO_priv, tmpJ_priv) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpO, tmpJ) + + allocate(tmpO_priv(n_grid), tmpJ_priv(n_grid,3)) + tmpO_priv = 0.d0 + tmpJ_priv = 0.d0 + + !$OMP DO + do i = 1, ne_b + do ipoint = 1, n_grid + tmpO_priv(ipoint) = tmpO_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ_priv(ipoint,1) = tmpJ_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) + tmpJ_priv(ipoint,2) = tmpJ_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) + tmpJ_priv(ipoint,3) = tmpJ_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmpO = tmpO + tmpO_priv + tmpJ = tmpJ + tmpJ_priv + !$OMP END CRITICAL + + deallocate(tmpO_priv, tmpJ_priv) + !$OMP END PARALLEL + + ! --- + + tmpM = 0.d0 + tmpS = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmpM_priv, tmpS_priv) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpM, tmpS) + + allocate(tmpM_priv(n_grid,3), tmpS_priv(n_grid)) + tmpM_priv = 0.d0 + tmpS_priv = 0.d0 + + !$OMP DO COLLAPSE(2) + do i = 1, ne_b + do j = 1, ne_b + do ipoint = 1, n_grid + + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmpS_priv(ipoint) = tmpS_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmpM = tmpM + tmpM_priv + tmpS = tmpS + tmpS_priv + !$OMP END CRITICAL + + deallocate(tmpM_priv, tmpS_priv) + !$OMP END PARALLEL + + ! --- + + do ipoint = 1, n_grid + + tmpD(ipoint,1) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,1) - tmpM(ipoint,1)) + tmpD(ipoint,2) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,2) - tmpM(ipoint,2)) + tmpD(ipoint,3) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,3) - tmpM(ipoint,3)) + tmpD(ipoint,4) = -wr1(ipoint) * tmpO(ipoint) + + tmpS(ipoint) = 2.d0 * (tmpJ(ipoint,1) * tmpJ(ipoint,1) + tmpJ(ipoint,2) * tmpJ(ipoint,2) + tmpJ(ipoint,3) * tmpJ(ipoint,3)) - tmpS(ipoint) + enddo + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, s, i, ipoint) & + !$OMP SHARED(n_mo, ne_b, n_grid, & + !$OMP int2_grad1_u12, tmpC) + + !$OMP DO COLLAPSE(2) + do s = 1, n_mo + do p = 1, n_mo + + do ipoint = 1, n_grid + tmpC(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) + tmpC(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) + tmpC(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) + enddo + + tmpC(:,4,p,s) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpC(ipoint,4,p,s) = tmpC(ipoint,4,p,s) + int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo + enddo + + enddo ! p + enddo ! s + !$OMP END DO + !$OMP END PARALLEL + + call dgemv( 'T', 4*n_grid, n_mo*n_mo, 2.d0 & + , tmpC(1,1,1,1), size(tmpC, 1) * size(tmpC, 2) & + , tmpD(1,1), 1 & + , 0.d0, noL_1e(1,1), 1) + + ! --- + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, ipoint) & + !$OMP SHARED(ne_b, n_grid, n_mo, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpL, tmpR) + + !$OMP DO + do p = 1, n_mo + + tmpL(:,1:3,p) = 0.d0 + tmpR(:,1:3,p) = 0.d0 + + do i = 1, ne_b + do ipoint = 1, n_grid + + tmpL(ipoint,1,p) = tmpL(ipoint,1,p) + int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,2,p) = tmpL(ipoint,2,p) + int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,3,p) = tmpL(ipoint,3,p) + int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) + + tmpR(ipoint,1,p) = tmpR(ipoint,1,p) + int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) + tmpR(ipoint,2,p) = tmpR(ipoint,2,p) + int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) + tmpR(ipoint,3,p) = tmpR(ipoint,3,p) + int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) + enddo + enddo + enddo ! p + !$OMP END DO + !$OMP END PARALLEL + + ! --- + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, j, ipoint) & + !$OMP SHARED(ne_b, n_grid, n_mo, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, wr1, & + !$OMP tmpL, tmpR, tmpJ, tmpS, tmpE, tmpF) + + !$OMP DO + do p = 1, n_mo + + do ipoint = 1, n_grid + + tmpE(ipoint,1,p) = wr1(ipoint) * mos_l_in_r(ipoint,p) + tmpE(ipoint,2,p) = -2.d0 * (tmpL(ipoint,1,p) * tmpJ(ipoint,1) + tmpL(ipoint,2,p) * tmpJ(ipoint,2) + tmpL(ipoint,3,p) * tmpJ(ipoint,3)) + tmpE(ipoint,3,p) = wr1(ipoint) * tmpL(ipoint,1,p) + tmpE(ipoint,4,p) = wr1(ipoint) * tmpL(ipoint,2,p) + tmpE(ipoint,5,p) = wr1(ipoint) * tmpL(ipoint,3,p) + + tmpF(ipoint,1,p) = -2.d0 * (tmpR(ipoint,1,p) * tmpJ(ipoint,1) + tmpR(ipoint,2,p) * tmpJ(ipoint,2) + tmpR(ipoint,3,p) * tmpJ(ipoint,3)) & + + mos_r_in_r(ipoint,p) * tmpS(ipoint) + tmpF(ipoint,2,p) = wr1(ipoint) * mos_r_in_r(ipoint,p) + tmpF(ipoint,3,p) = tmpR(ipoint,1,p) + tmpF(ipoint,4,p) = tmpR(ipoint,2,p) + tmpF(ipoint,5,p) = tmpR(ipoint,3,p) + enddo + + do i = 1, ne_b + do j = 1, ne_b + do ipoint = 1, n_grid + + tmpE(ipoint,2,p) = tmpE(ipoint,2,p) + mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) + + tmpF(ipoint,1,p) = tmpF(ipoint,1,p) + mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) + enddo ! ipoint + enddo ! j + enddo ! i + + enddo ! p + !$OMP END DO + !$OMP END PARALLEL + + call dgemm( 'T', 'N', n_mo, n_mo, 5*n_grid, 1.d0 & + , tmpE(1,1,1), 5*n_grid, tmpF(1,1,1), 5*n_grid & + , 1.d0, noL_1e(1,1), n_mo) + + ! --- + + else + + tmpO = 0.d0 + tmpJ = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmpO_priv, tmpJ_priv) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpO, tmpJ) + + allocate(tmpO_priv(n_grid), tmpJ_priv(n_grid,3)) + tmpO_priv = 0.d0 + tmpJ_priv = 0.d0 + + !$OMP DO + do i = 1, ne_b + do ipoint = 1, n_grid + tmpO_priv(ipoint) = tmpO_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ_priv(ipoint,1) = tmpJ_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) + tmpJ_priv(ipoint,2) = tmpJ_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) + tmpJ_priv(ipoint,3) = tmpJ_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmpO_priv(ipoint) = tmpO_priv(ipoint) + 0.5d0 * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ_priv(ipoint,1) = tmpJ_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,i) + tmpJ_priv(ipoint,2) = tmpJ_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,i) + tmpJ_priv(ipoint,3) = tmpJ_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,i) + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmpO = tmpO + tmpO_priv + tmpJ = tmpJ + tmpJ_priv + !$OMP END CRITICAL + + deallocate(tmpO_priv, tmpJ_priv) + !$OMP END PARALLEL + + ! --- + + tmpM = 0.d0 + tmpS = 0.d0 + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmpM_priv, tmpS_priv) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpM, tmpS) + + allocate(tmpM_priv(n_grid,3), tmpS_priv(n_grid)) + tmpM_priv = 0.d0 + tmpS_priv = 0.d0 + + !$OMP DO COLLAPSE(2) + do i = 1, ne_b + do j = 1, ne_b + do ipoint = 1, n_grid + + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmpS_priv(ipoint) = tmpS_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO COLLAPSE(2) + do i = ne_b+1, ne_a + do j = 1, ne_b + do ipoint = 1, n_grid + + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + + tmpS_priv(ipoint) = tmpS_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP DO COLLAPSE(2) + do i = ne_b+1, ne_a + do j = ne_b+1, ne_a + do ipoint = 1, n_grid + + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + + tmpS_priv(ipoint) = tmpS_priv(ipoint) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + enddo + enddo + enddo + !$OMP END DO NOWAIT + + !$OMP CRITICAL + tmpM = tmpM + tmpM_priv + tmpS = tmpS + tmpS_priv + !$OMP END CRITICAL + + deallocate(tmpM_priv, tmpS_priv) + !$OMP END PARALLEL + + ! --- + + do ipoint = 1, n_grid + + tmpD(ipoint,1) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,1) - tmpM(ipoint,1)) + tmpD(ipoint,2) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,2) - tmpM(ipoint,2)) + tmpD(ipoint,3) = wr1(ipoint) * (2.d0 * tmpO(ipoint) * tmpJ(ipoint,3) - tmpM(ipoint,3)) + tmpD(ipoint,4) = -wr1(ipoint) * tmpO(ipoint) + + tmpS(ipoint) = 2.d0 * (tmpJ(ipoint,1) * tmpJ(ipoint,1) + tmpJ(ipoint,2) * tmpJ(ipoint,2) + tmpJ(ipoint,3) * tmpJ(ipoint,3)) - tmpS(ipoint) + enddo + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, s, i, ipoint) & + !$OMP SHARED(n_mo, ne_b, n_grid, & + !$OMP ne_a, int2_grad1_u12, tmpC) + + !$OMP DO COLLAPSE(2) + do s = 1, n_mo + do p = 1, n_mo + + do ipoint = 1, n_grid + tmpC(ipoint,1,p,s) = int2_grad1_u12(ipoint,1,p,s) + tmpC(ipoint,2,p,s) = int2_grad1_u12(ipoint,2,p,s) + tmpC(ipoint,3,p,s) = int2_grad1_u12(ipoint,3,p,s) + enddo + + tmpC(:,4,p,s) = 0.d0 + do i = 1, ne_b + do ipoint = 1, n_grid + tmpC(ipoint,4,p,s) = tmpC(ipoint,4,p,s) + int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo + enddo + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + tmpC(ipoint,4,p,s) = tmpC(ipoint,4,p,s) + 0.5d0 * int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,s) & + + 0.5d0 * int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,s) & + + 0.5d0 * int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,s) + enddo + enddo + + enddo ! p + enddo ! s + !$OMP END DO + !$OMP END PARALLEL + + call dgemv( 'T', 4*n_grid, n_mo*n_mo, 2.d0 & + , tmpC(1,1,1,1), size(tmpC, 1) * size(tmpC, 2) & + , tmpD(1,1), 1 & + , 0.d0, noL_1e(1,1), 1) + + ! --- + + allocate(tmpL0(n_grid,3,n_mo)) + allocate(tmpR0(n_grid,3,n_mo)) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, ipoint) & + !$OMP SHARED(ne_b, ne_a, n_grid, n_mo, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpL0, tmpR0, tmpL, tmpR) + + !$OMP DO + do p = 1, n_mo + + tmpL0(:,1:3,p) = 0.d0 + tmpR0(:,1:3,p) = 0.d0 + do i = ne_b+1, ne_a + do ipoint = 1, n_grid + + tmpL0(ipoint,1,p) = tmpL0(ipoint,1,p) + 0.5d0 * int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) + tmpL0(ipoint,2,p) = tmpL0(ipoint,2,p) + 0.5d0 * int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) + tmpL0(ipoint,3,p) = tmpL0(ipoint,3,p) + 0.5d0 * int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) + + tmpR0(ipoint,1,p) = tmpR0(ipoint,1,p) + 0.5d0 * int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) + tmpR0(ipoint,2,p) = tmpR0(ipoint,2,p) + 0.5d0 * int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) + tmpR0(ipoint,3,p) = tmpR0(ipoint,3,p) + 0.5d0 * int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) + enddo + enddo + + tmpL(:,1:3,p) = tmpL0(:,1:3,p) + tmpR(:,1:3,p) = tmpR0(:,1:3,p) + do i = 1, ne_b + do ipoint = 1, n_grid + + tmpL(ipoint,1,p) = tmpL(ipoint,1,p) + int2_grad1_u12(ipoint,1,p,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,2,p) = tmpL(ipoint,2,p) + int2_grad1_u12(ipoint,2,p,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,3,p) = tmpL(ipoint,3,p) + int2_grad1_u12(ipoint,3,p,i) * mos_l_in_r(ipoint,i) + + tmpR(ipoint,1,p) = tmpR(ipoint,1,p) + int2_grad1_u12(ipoint,1,i,p) * mos_r_in_r(ipoint,i) + tmpR(ipoint,2,p) = tmpR(ipoint,2,p) + int2_grad1_u12(ipoint,2,i,p) * mos_r_in_r(ipoint,i) + tmpR(ipoint,3,p) = tmpR(ipoint,3,p) + int2_grad1_u12(ipoint,3,i,p) * mos_r_in_r(ipoint,i) + enddo + enddo + + enddo ! p + !$OMP END DO + !$OMP END PARALLEL + + ! --- + + allocate(tmpE_os(n_grid,8,n_mo)) + allocate(tmpF_os(n_grid,8,n_mo)) + + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(p, i, j, ipoint) & + !$OMP SHARED(ne_b, ne_a, n_grid, n_mo, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, wr1, & + !$OMP tmpL, tmpL0, tmpR, tmpR0, tmpJ, tmpS, tmpE_os, tmpF_os) + + !$OMP DO + do p = 1, n_mo + + do ipoint = 1, n_grid + + tmpE_os(ipoint,1,p) = wr1(ipoint) * mos_l_in_r(ipoint,p) + tmpE_os(ipoint,2,p) = -2.d0 * (tmpL(ipoint,1,p) * tmpJ(ipoint,1) + tmpL(ipoint,2,p) * tmpJ(ipoint,2) + tmpL(ipoint,3,p) * tmpJ(ipoint,3)) + tmpE_os(ipoint,3,p) = wr1(ipoint) * tmpL(ipoint,1,p) + tmpE_os(ipoint,4,p) = wr1(ipoint) * tmpL(ipoint,2,p) + tmpE_os(ipoint,5,p) = wr1(ipoint) * tmpL(ipoint,3,p) + tmpE_os(ipoint,6,p) = wr1(ipoint) * tmpL0(ipoint,1,p) + tmpE_os(ipoint,7,p) = wr1(ipoint) * tmpL0(ipoint,2,p) + tmpE_os(ipoint,8,p) = wr1(ipoint) * tmpL0(ipoint,3,p) + + tmpF_os(ipoint,1,p) = -2.d0 * (tmpR(ipoint,1,p) * tmpJ(ipoint,1) + tmpR(ipoint,2,p) * tmpJ(ipoint,2) + tmpR(ipoint,3,p) * tmpJ(ipoint,3)) & + + mos_r_in_r(ipoint,p) * tmpS(ipoint) + tmpF_os(ipoint,2,p) = wr1(ipoint) * mos_r_in_r(ipoint,p) + tmpF_os(ipoint,3,p) = tmpR(ipoint,1,p) + tmpF_os(ipoint,4,p) = tmpR(ipoint,2,p) + tmpF_os(ipoint,5,p) = tmpR(ipoint,3,p) + tmpF_os(ipoint,6,p) = tmpR0(ipoint,1,p) + tmpF_os(ipoint,7,p) = tmpR0(ipoint,2,p) + tmpF_os(ipoint,8,p) = tmpR0(ipoint,3,p) + enddo + + do i = 1, ne_b + do j = 1, ne_b + do ipoint = 1, n_grid + + tmpE_os(ipoint,2,p) = tmpE_os(ipoint,2,p) + mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) + + tmpF_os(ipoint,1,p) = tmpF_os(ipoint,1,p) + mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) + enddo ! ipoint + enddo ! j + enddo ! i + + do i = ne_b+1, ne_a + do j = 1, ne_b + do ipoint = 1, n_grid + + tmpE_os(ipoint,2,p) = tmpE_os(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) + tmpE_os(ipoint,2,p) = tmpE_os(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,p,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,p,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,p,j) * int2_grad1_u12(ipoint,3,j,i) ) + + tmpF_os(ipoint,1,p) = tmpF_os(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) + tmpF_os(ipoint,1,p) = tmpF_os(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,j,i) * int2_grad1_u12(ipoint,1,i,p) & + + int2_grad1_u12(ipoint,2,j,i) * int2_grad1_u12(ipoint,2,i,p) & + + int2_grad1_u12(ipoint,3,j,i) * int2_grad1_u12(ipoint,3,i,p) ) + enddo ! ipoint + enddo ! j + enddo ! i + + do i = ne_b+1, ne_a + do j = ne_b+1, ne_a + do ipoint = 1, n_grid + + tmpE_os(ipoint,2,p) = tmpE_os(ipoint,2,p) + 0.5d0 * mos_l_in_r(ipoint,j) * ( int2_grad1_u12(ipoint,1,p,i) * int2_grad1_u12(ipoint,1,i,j) & + + int2_grad1_u12(ipoint,2,p,i) * int2_grad1_u12(ipoint,2,i,j) & + + int2_grad1_u12(ipoint,3,p,i) * int2_grad1_u12(ipoint,3,i,j) ) + + tmpF_os(ipoint,1,p) = tmpF_os(ipoint,1,p) + 0.5d0 * mos_r_in_r(ipoint,i) * ( int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,p) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,p) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,p) ) + enddo ! ipoint + enddo ! j + enddo ! i + + enddo ! p + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmpL0, tmpR0) + + call dgemm( 'T', 'N', n_mo, n_mo, 8*n_grid, 1.d0 & + , tmpE_os(1,1,1), 8*n_grid, tmpF_os(1,1,1), 8*n_grid & + , 1.d0, noL_1e(1,1), n_mo) + + deallocate(tmpE_os, tmpF_os) endif From bf15b68b0b64a229812dc4eeb2ef498fe56b194c Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Tue, 13 Aug 2024 10:57:44 +0200 Subject: [PATCH 148/159] add normal-ordering with CuTC --- plugins/local/tc_int/cutc_module.F90 | 58 +++- plugins/local/tc_int/deb_no_0e_gpu.irp.f | 96 ++++++ plugins/local/tc_int/deb_no_gpu.irp.f | 170 ++++++++++ plugins/local/tc_int/deb_tc_int_cuda.irp.f | 6 +- plugins/local/tc_int/no_0e.irp.f | 331 +++++++++---------- plugins/local/tc_int/write_tc_int_cuda.irp.f | 12 +- 6 files changed, 490 insertions(+), 183 deletions(-) create mode 100644 plugins/local/tc_int/deb_no_0e_gpu.irp.f create mode 100644 plugins/local/tc_int/deb_no_gpu.irp.f diff --git a/plugins/local/tc_int/cutc_module.F90 b/plugins/local/tc_int/cutc_module.F90 index d1466697..eaf271e5 100644 --- a/plugins/local/tc_int/cutc_module.F90 +++ b/plugins/local/tc_int/cutc_module.F90 @@ -9,13 +9,13 @@ module cutc_module ! --- - subroutine cutc_int_c(nxBlocks, nyBlocks, nzBlocks, & - blockxSize, blockySize, blockzSize, & - n_grid1, n_grid2, n_ao, n_nuc, size_bh, & - r1, wr1, r2, wr2, rn, & - aos_data1, aos_data2, & - c_bh, m_bh, n_bh, o_bh, & - int2_grad1_u12_ao, int_2e_ao) bind(C, name = "cutc_int_c") + subroutine cutc_int(nxBlocks, nyBlocks, nzBlocks, & + blockxSize, blockySize, blockzSize, & + n_grid1, n_grid2, n_ao, n_nuc, size_bh, & + r1, wr1, r2, wr2, rn, & + aos_data1, aos_data2, & + c_bh, m_bh, n_bh, o_bh, & + int2_grad1_u12_ao, int_2e_ao) bind(C, name = "cutc_int") import c_int, c_double, c_ptr integer(c_int), intent(in), value :: nxBlocks, blockxSize @@ -37,7 +37,7 @@ module cutc_module real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,3) real(c_double), intent(out) :: int_2e_ao(n_ao,n_ao,n_ao,n_ao) - end subroutine cutc_int_c + end subroutine cutc_int ! --- @@ -170,6 +170,48 @@ module cutc_module ! --- + subroutine cutc_no_0e(n_grid1, n_mo, ne_a, ne_b, & + wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & + no_0e) bind(C, name = "cutc_no_0e") + + import c_int, c_double, c_ptr + + integer(c_int), intent(in), value :: n_grid1 + integer(c_int), intent(in), value :: n_mo + integer(c_int), intent(in), value :: ne_a + integer(c_int), intent(in), value :: ne_b + real(c_double), intent(in) :: wr1(n_grid1) + real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) + real(c_double), intent(out) :: no_0e(1) + + end subroutine cutc_no_0e + + ! --- + + subroutine cutc_no(n_grid1, n_mo, ne_a, ne_b, & + wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & + no_2e, no_1e, no_0e) bind(C, name = "cutc_no") + + import c_int, c_double, c_ptr + + integer(c_int), intent(in), value :: n_grid1 + integer(c_int), intent(in), value :: n_mo + integer(c_int), intent(in), value :: ne_a + integer(c_int), intent(in), value :: ne_b + real(c_double), intent(in) :: wr1(n_grid1) + real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) + real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) + real(c_double), intent(out) :: no_2e(n_mo,n_mo,n_mo,n_mo) + real(c_double), intent(out) :: no_1e(n_mo,n_mo) + real(c_double), intent(out) :: no_0e(1) + + end subroutine cutc_no + + ! --- + end interface end module cutc_module diff --git a/plugins/local/tc_int/deb_no_0e_gpu.irp.f b/plugins/local/tc_int/deb_no_0e_gpu.irp.f new file mode 100644 index 00000000..afff060a --- /dev/null +++ b/plugins/local/tc_int/deb_no_0e_gpu.irp.f @@ -0,0 +1,96 @@ + +! --- + +subroutine deb_no_0e_gpu() + + use cutc_module + + implicit none + + integer :: i, j, k, l, ipoint + double precision :: acc_thr, err_tot, nrm_tot, err_loc + double precision :: noL_0e + double precision :: noL_0e_gpu(1) + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: tmp(:,:,:,:) + double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) + + + PROVIDE mo_l_coef mo_r_coef + PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp + + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) + print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") + read(11) int2_grad1_u12_ao + close(11) + + allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) + allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(int2_grad1_u12_ao) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, ipoint) & + !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) + !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + do i = 1, mo_num + do j = 1, mo_num + int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) + int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) + int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmp) + + ! --- + + call cutc_no_0e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_0e_gpu(1)) + + ! --- + + call provide_no_0e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_0e) + + ! --- + + deallocate(int2_grad1_u12_bimo_t) + + print *, 'noL_0e CPU = ', noL_0e + print *, 'noL_0e GPU = ', noL_0e_gpu(1) + + err_tot = dabs(noL_0e - noL_0e_gpu(1)) + nrm_tot = dabs(noL_0e) + print *, ' absolute accuracy on noL_0e (%) =', 100.d0 * err_tot / nrm_tot + + return + +end + +! --- + diff --git a/plugins/local/tc_int/deb_no_gpu.irp.f b/plugins/local/tc_int/deb_no_gpu.irp.f new file mode 100644 index 00000000..e14404e6 --- /dev/null +++ b/plugins/local/tc_int/deb_no_gpu.irp.f @@ -0,0 +1,170 @@ + +! --- + +subroutine deb_no_gpu() + + use cutc_module + + implicit none + + integer :: i, j, k, l, ipoint + double precision :: acc_thr, err_tot, nrm_tot, err_loc + double precision :: noL_0e + double precision :: noL_0e_gpu(1) + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: tmp(:,:,:,:) + double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) + double precision, allocatable :: noL_1e (:,:) + double precision, allocatable :: noL_1e_gpu(:,:) + double precision, allocatable :: noL_2e (:,:,:,:) + double precision, allocatable :: noL_2e_gpu(:,:,:,:) + + + PROVIDE mo_l_coef mo_r_coef + PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp + + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) + print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") + read(11) int2_grad1_u12_ao + close(11) + + allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) + allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(int2_grad1_u12_ao) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, ipoint) & + !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) + !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + do i = 1, mo_num + do j = 1, mo_num + int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) + int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) + int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(tmp) + + ! --- + + allocate(noL_2e_gpu(mo_num,mo_num,mo_num,mo_num)) + allocate(noL_1e_gpu(mo_num,mo_num)) + + call cutc_no(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_2e_gpu(1,1,1,1), noL_1e_gpu(1,1), noL_0e_gpu(1)) + + ! --- + + allocate(noL_2e(mo_num,mo_num,mo_num,mo_num)) + allocate(noL_1e(mo_num,mo_num)) + + call provide_no_2e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_2e(1,1,1,1)) + + call provide_no_1e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_1e(1,1)) + + call provide_no_0e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_0e) + + ! --- + + deallocate(int2_grad1_u12_bimo_t) + + acc_thr = 1d-12 + + ! --- + + err_tot = 0.d0 + nrm_tot = 0.d0 + do i = 1, mo_num + do j = 1, mo_num + do k = 1, mo_num + do l = 1, mo_num + err_loc = dabs(noL_2e(l,k,j,i) - noL_2e_gpu(l,k,j,i)) + if(err_loc > acc_thr) then + print*, " error on", l, k, j, i + print*, " CPU res", noL_2e (l,k,j,i) + print*, " GPU res", noL_2e_gpu(l,k,j,i) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(noL_2e(l,k,j,i)) + enddo + enddo + enddo + enddo + print *, ' absolute accuracy on noL_2e (%) =', 100.d0 * err_tot / nrm_tot + + deallocate(noL_2e) + deallocate(noL_2e_gpu) + + ! --- + + err_tot = 0.d0 + nrm_tot = 0.d0 + do k = 1, mo_num + do l = 1, mo_num + err_loc = dabs(noL_1e(l,k) - noL_1e_gpu(l,k)) + if(err_loc > acc_thr) then + print*, " error on", l, k + print*, " CPU res", noL_1e (l,k) + print*, " GPU res", noL_1e_gpu(l,k) + stop + endif + err_tot = err_tot + err_loc + nrm_tot = nrm_tot + dabs(noL_1e(l,k)) + enddo + enddo + print *, ' absolute accuracy on noL_1e (%) =', 100.d0 * err_tot / nrm_tot + + deallocate(noL_1e) + deallocate(noL_1e_gpu) + + ! --- + + print *, 'noL_0e CPU = ', noL_0e + print *, 'noL_0e GPU = ', noL_0e_gpu(1) + + err_tot = dabs(noL_0e - noL_0e_gpu(1)) + nrm_tot = dabs(noL_0e) + print *, ' absolute accuracy on noL_0e (%) =', 100.d0 * err_tot / nrm_tot + + + return + +end + +! --- + + diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f index 8d0cc4f3..ad20d861 100644 --- a/plugins/local/tc_int/deb_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/deb_tc_int_cuda.irp.f @@ -41,9 +41,13 @@ subroutine main() !call deb_no_2e_gpu_tmp() !call deb_no_2e_gpu() - call deb_no_1e_gpu_tmp() + !call deb_no_1e_gpu_tmp() !call deb_no_1e_gpu() + !call deb_no_0e_gpu() + + call deb_no_gpu() + return end diff --git a/plugins/local/tc_int/no_0e.irp.f b/plugins/local/tc_int/no_0e.irp.f index b945e0dd..830b91a8 100644 --- a/plugins/local/tc_int/no_0e.irp.f +++ b/plugins/local/tc_int/no_0e.irp.f @@ -3,12 +3,6 @@ subroutine provide_no_0e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, noL_0e) - BEGIN_DOC - ! - ! < Phi_left | L | Phi_right > - ! - END_DOC - implicit none integer, intent(in) :: n_grid, n_mo @@ -22,44 +16,47 @@ subroutine provide_no_0e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, integer :: i, j, k, ipoint double precision :: t0, t1 double precision, allocatable :: tmp(:) - double precision, allocatable :: tmp_L(:,:), tmp_R(:,:) - double precision, allocatable :: tmp_M(:,:), tmp_S(:), tmp_O(:), tmp_J(:,:) - double precision, allocatable :: tmp_M_priv(:,:), tmp_S_priv(:), tmp_O_priv(:), tmp_J_priv(:,:) + double precision, allocatable :: tmpL(:,:), tmpR(:,:) + double precision, allocatable :: tmpM(:,:), tmpS(:), tmpO(:), tmpJ(:,:) + double precision, allocatable :: tmpM_priv(:,:), tmpS_priv(:), tmpO_priv(:), tmpJ_priv(:,:) + + + call wall_time(t0) if(ne_a .eq. ne_b) then allocate(tmp(ne_b)) - allocate(tmp_L(n_grid,3), tmp_R(n_grid,3)) + allocate(tmpL(n_grid,3), tmpR(n_grid,3)) !$OMP PARALLEL & !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(ne_b, n_grid, & + !$OMP PRIVATE(j, i, ipoint, tmpL, tmpR) & + !$OMP SHARED(ne_b, n_grid, & !$OMP mos_l_in_r, mos_r_in_r, wr1, & !$OMP int2_grad1_u12, tmp) !$OMP DO do j = 1, ne_b - tmp_L = 0.d0 - tmp_R = 0.d0 + tmpL = 0.d0 + tmpR = 0.d0 do i = 1, ne_b do ipoint = 1, n_grid - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,1) = tmpL(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,2) = tmpL(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,3) = tmpL(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,1) = tmpR(ipoint,1) + int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,2) = tmpR(ipoint,2) + int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,3) = tmpR(ipoint,3) + int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) enddo enddo tmp(j) = 0.d0 do ipoint = 1, n_grid - tmp(j) = tmp(j) + wr1(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + tmp(j) = tmp(j) + wr1(ipoint) * (tmpL(ipoint,1)*tmpR(ipoint,1) + tmpL(ipoint,2)*tmpR(ipoint,2) + tmpL(ipoint,3)*tmpR(ipoint,3)) enddo enddo ! j !$OMP END DO @@ -68,150 +65,149 @@ subroutine provide_no_0e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, noL_0e = -2.d0 * sum(tmp) deallocate(tmp) - deallocate(tmp_L, tmp_R) + deallocate(tmpL, tmpR) ! --- - allocate(tmp_O(n_grid), tmp_J(n_grid,3)) - tmp_O = 0.d0 - tmp_J = 0.d0 + allocate(tmpO(n_grid), tmpJ(n_grid,3)) + tmpO = 0.d0 + tmpJ = 0.d0 - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & - !$OMP SHARED(ne_b, n_grid, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, tmp_O, tmp_J) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmpO_priv, tmpJ_priv) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpO, tmpJ) - allocate(tmp_O_priv(n_grid), tmp_J_priv(n_grid,3)) - tmp_O_priv = 0.d0 - tmp_J_priv = 0.d0 + allocate(tmpO_priv(n_grid), tmpJ_priv(n_grid,3)) + tmpO_priv = 0.d0 + tmpJ_priv = 0.d0 !$OMP DO do i = 1, ne_b do ipoint = 1, n_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) + tmpO_priv(ipoint) = tmpO_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ_priv(ipoint,1) = tmpJ_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) + tmpJ_priv(ipoint,2) = tmpJ_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) + tmpJ_priv(ipoint,3) = tmpJ_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) enddo enddo !$OMP END DO NOWAIT !$OMP CRITICAL - tmp_O = tmp_O + tmp_O_priv - tmp_J = tmp_J + tmp_J_priv + tmpO = tmpO + tmpO_priv + tmpJ = tmpJ + tmpJ_priv !$OMP END CRITICAL - deallocate(tmp_O_priv, tmp_J_priv) + deallocate(tmpO_priv, tmpJ_priv) !$OMP END PARALLEL - allocate(tmp_M(n_grid,3), tmp_S(n_grid)) - tmp_M = 0.d0 - tmp_S = 0.d0 + allocate(tmpM(n_grid,3), tmpS(n_grid)) + tmpM = 0.d0 + tmpS = 0.d0 - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & - !$OMP SHARED(ne_b, n_grid, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, tmp_M, tmp_S) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmpM_priv, tmpS_priv) & + !$OMP SHARED(ne_b, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpM, tmpS) - allocate(tmp_M_priv(n_grid,3), tmp_S_priv(n_grid)) - tmp_M_priv = 0.d0 - tmp_S_priv = 0.d0 + allocate(tmpM_priv(n_grid,3), tmpS_priv(n_grid)) + tmpM_priv = 0.d0 + tmpS_priv = 0.d0 !$OMP DO COLLAPSE(2) do i = 1, ne_b do j = 1, ne_b do ipoint = 1, n_grid - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & - + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & - + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + tmpS_priv(ipoint) = tmpS_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) enddo enddo enddo !$OMP END DO NOWAIT !$OMP CRITICAL - tmp_M = tmp_M + tmp_M_priv - tmp_S = tmp_S + tmp_S_priv + tmpM = tmpM + tmpM_priv + tmpS = tmpS + tmpS_priv !$OMP END CRITICAL - deallocate(tmp_M_priv, tmp_S_priv) + deallocate(tmpM_priv, tmpS_priv) !$OMP END PARALLEL allocate(tmp(n_grid)) do ipoint = 1, n_grid - tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) + tmpS(ipoint) = 2.d0 * (tmpJ(ipoint,1)*tmpJ(ipoint,1) + tmpJ(ipoint,2)*tmpJ(ipoint,2) + tmpJ(ipoint,3)*tmpJ(ipoint,3)) - tmpS(ipoint) - tmp(ipoint) = wr1(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & - - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & - + tmp_J(ipoint,2) * tmp_M(ipoint,2) & - + tmp_J(ipoint,3) * tmp_M(ipoint,3))) + tmp(ipoint) = wr1(ipoint) * ( tmpO(ipoint) * tmpS(ipoint) - 2.d0 * ( tmpJ(ipoint,1) * tmpM(ipoint,1) & + + tmpJ(ipoint,2) * tmpM(ipoint,2) & + + tmpJ(ipoint,3) * tmpM(ipoint,3) ) ) enddo - noL_0e = noL_0e -2.d0 * (sum(tmp)) + noL_0e = noL_0e - 2.d0 * (sum(tmp)) deallocate(tmp) else allocate(tmp(ne_a)) - allocate(tmp_L(n_grid,3), tmp_R(n_grid,3)) + allocate(tmpL(n_grid,3), tmpR(n_grid,3)) - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(ne_b, ne_a, n_grid, & - !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(j, i, ipoint, tmpL, tmpR) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & !$OMP int2_grad1_u12, tmp, wr1) !$OMP DO do j = 1, ne_b - tmp_L = 0.d0 - tmp_R = 0.d0 + tmpL = 0.d0 + tmpR = 0.d0 do i = ne_b+1, ne_a do ipoint = 1, n_grid - tmp_L(ipoint,1) = tmp_L(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,1) = tmpL(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,2) = tmpL(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,3) = tmpL(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) - tmp_R(ipoint,1) = tmp_R(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,1) = tmpR(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,2) = tmpR(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,3) = tmpR(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) enddo enddo tmp(j) = 0.d0 do ipoint = 1, n_grid - tmp(j) = tmp(j) + wr1(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + tmp(j) = tmp(j) + wr1(ipoint) * (tmpL(ipoint,1)*tmpR(ipoint,1) + tmpL(ipoint,2)*tmpR(ipoint,2) + tmpL(ipoint,3)*tmpR(ipoint,3)) enddo do i = 1, ne_b do ipoint = 1, n_grid - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,1) = tmpL(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,2) = tmpL(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,3) = tmpL(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,1) = tmpR(ipoint,1) + int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,2) = tmpR(ipoint,2) + int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,3) = tmpR(ipoint,3) + int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) enddo enddo do ipoint = 1, n_grid - tmp(j) = tmp(j) + wr1(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + tmp(j) = tmp(j) + wr1(ipoint) * (tmpL(ipoint,1)*tmpR(ipoint,1) + tmpL(ipoint,2)*tmpR(ipoint,2) + tmpL(ipoint,3)*tmpR(ipoint,3)) enddo enddo ! j !$OMP END DO @@ -219,33 +215,33 @@ subroutine provide_no_0e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, ! --- - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(j, i, ipoint, tmp_L, tmp_R) & - !$OMP SHARED(ne_b, ne_a, n_grid, & - !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(j, i, ipoint, tmpL, tmpR) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & !$OMP int2_grad1_u12, tmp, wr1) !$OMP DO do j = ne_b+1, ne_a - tmp_L = 0.d0 - tmp_R = 0.d0 + tmpL = 0.d0 + tmpR = 0.d0 do i = 1, ne_a do ipoint = 1, n_grid - tmp_L(ipoint,1) = tmp_L(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,2) = tmp_L(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) - tmp_L(ipoint,3) = tmp_L(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,1) = tmpL(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,2) = tmpL(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) + tmpL(ipoint,3) = tmpL(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) - tmp_R(ipoint,1) = tmp_R(ipoint,1) + int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,2) = tmp_R(ipoint,2) + int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) - tmp_R(ipoint,3) = tmp_R(ipoint,3) + int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,1) = tmpR(ipoint,1) + int2_grad1_u12(ipoint,1,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,2) = tmpR(ipoint,2) + int2_grad1_u12(ipoint,2,i,j) * mos_r_in_r(ipoint,i) + tmpR(ipoint,3) = tmpR(ipoint,3) + int2_grad1_u12(ipoint,3,i,j) * mos_r_in_r(ipoint,i) enddo enddo tmp(j) = 0.d0 do ipoint = 1, n_grid - tmp(j) = tmp(j) + 0.5d0 * wr1(ipoint) * (tmp_L(ipoint,1)*tmp_R(ipoint,1) + tmp_L(ipoint,2)*tmp_R(ipoint,2) + tmp_L(ipoint,3)*tmp_R(ipoint,3)) + tmp(j) = tmp(j) + 0.5d0 * wr1(ipoint) * (tmpL(ipoint,1)*tmpR(ipoint,1) + tmpL(ipoint,2)*tmpR(ipoint,2) + tmpL(ipoint,3)*tmpR(ipoint,3)) enddo enddo ! j !$OMP END DO @@ -254,32 +250,32 @@ subroutine provide_no_0e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, noL_0e = -2.d0 * sum(tmp) deallocate(tmp) - deallocate(tmp_L, tmp_R) + deallocate(tmpL, tmpR) ! --- - allocate(tmp_O(n_grid), tmp_J(n_grid,3)) - tmp_O = 0.d0 - tmp_J = 0.d0 + allocate(tmpO(n_grid), tmpJ(n_grid,3)) + tmpO = 0.d0 + tmpJ = 0.d0 - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, ipoint, tmp_O_priv, tmp_J_priv) & - !$OMP SHARED(ne_b, ne_a, n_grid, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, tmp_O, tmp_J) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, ipoint, tmpO_priv, tmpJ_priv) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpO, tmpJ) - allocate(tmp_O_priv(n_grid), tmp_J_priv(n_grid,3)) - tmp_O_priv = 0.d0 - tmp_J_priv = 0.d0 + allocate(tmpO_priv(n_grid), tmpJ_priv(n_grid,3)) + tmpO_priv = 0.d0 + tmpJ_priv = 0.d0 !$OMP DO do i = 1, ne_b do ipoint = 1, n_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) + tmpO_priv(ipoint) = tmpO_priv(ipoint) + mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ_priv(ipoint,1) = tmpJ_priv(ipoint,1) + int2_grad1_u12(ipoint,1,i,i) + tmpJ_priv(ipoint,2) = tmpJ_priv(ipoint,2) + int2_grad1_u12(ipoint,2,i,i) + tmpJ_priv(ipoint,3) = tmpJ_priv(ipoint,3) + int2_grad1_u12(ipoint,3,i,i) enddo enddo !$OMP END DO NOWAIT @@ -287,49 +283,49 @@ subroutine provide_no_0e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, !$OMP DO do i = ne_b+1, ne_a do ipoint = 1, n_grid - tmp_O_priv(ipoint) = tmp_O_priv(ipoint) + 0.5d0 * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) - tmp_J_priv(ipoint,1) = tmp_J_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,i) - tmp_J_priv(ipoint,2) = tmp_J_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,i) - tmp_J_priv(ipoint,3) = tmp_J_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,i) + tmpO_priv(ipoint) = tmpO_priv(ipoint) + 0.5d0 * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,i) + tmpJ_priv(ipoint,1) = tmpJ_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,i) + tmpJ_priv(ipoint,2) = tmpJ_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,i) + tmpJ_priv(ipoint,3) = tmpJ_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,i) enddo enddo !$OMP END DO NOWAIT !$OMP CRITICAL - tmp_O = tmp_O + tmp_O_priv - tmp_J = tmp_J + tmp_J_priv + tmpO = tmpO + tmpO_priv + tmpJ = tmpJ + tmpJ_priv !$OMP END CRITICAL - deallocate(tmp_O_priv, tmp_J_priv) + deallocate(tmpO_priv, tmpJ_priv) !$OMP END PARALLEL ! --- - allocate(tmp_M(n_grid,3), tmp_S(n_grid)) - tmp_M = 0.d0 - tmp_S = 0.d0 + allocate(tmpM(n_grid,3), tmpS(n_grid)) + tmpM = 0.d0 + tmpS = 0.d0 - !$OMP PARALLEL & - !$OMP DEFAULT(NONE) & - !$OMP PRIVATE(i, j, ipoint, tmp_M_priv, tmp_S_priv) & - !$OMP SHARED(ne_b, ne_a, n_grid, & - !$OMP mos_l_in_r, mos_r_in_r, & - !$OMP int2_grad1_u12, tmp_M, tmp_S) + !$OMP PARALLEL & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(i, j, ipoint, tmpM_priv, tmpS_priv) & + !$OMP SHARED(ne_b, ne_a, n_grid, & + !$OMP mos_l_in_r, mos_r_in_r, & + !$OMP int2_grad1_u12, tmpM, tmpS) - allocate(tmp_M_priv(n_grid,3), tmp_S_priv(n_grid)) - tmp_M_priv = 0.d0 - tmp_S_priv = 0.d0 + allocate(tmpM_priv(n_grid,3), tmpS_priv(n_grid)) + tmpM_priv = 0.d0 + tmpS_priv = 0.d0 !$OMP DO COLLAPSE(2) do i = 1, ne_b do j = 1, ne_b do ipoint = 1, n_grid - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + tmpS_priv(ipoint) = tmpS_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) enddo @@ -342,17 +338,17 @@ subroutine provide_no_0e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, do j = 1, ne_b do ipoint = 1, n_grid - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * mos_l_in_r(ipoint,j) * mos_r_in_r(ipoint,i) - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & - + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & - + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + tmpS_priv(ipoint) = tmpS_priv(ipoint) + int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) enddo enddo enddo @@ -363,39 +359,38 @@ subroutine provide_no_0e(n_grid, n_mo, ne_a, ne_b, wr1, mos_l_in_r, mos_r_in_r, do j = ne_b+1, ne_a do ipoint = 1, n_grid - tmp_M_priv(ipoint,1) = tmp_M_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,2) = tmp_M_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_M_priv(ipoint,3) = tmp_M_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,1) = tmpM_priv(ipoint,1) + 0.5d0 * int2_grad1_u12(ipoint,1,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,2) = tmpM_priv(ipoint,2) + 0.5d0 * int2_grad1_u12(ipoint,2,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) + tmpM_priv(ipoint,3) = tmpM_priv(ipoint,3) + 0.5d0 * int2_grad1_u12(ipoint,3,j,i) * mos_l_in_r(ipoint,i) * mos_r_in_r(ipoint,j) - tmp_S_priv(ipoint) = tmp_S_priv(ipoint) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & - + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & - + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) + tmpS_priv(ipoint) = tmpS_priv(ipoint) + 0.5d0 * int2_grad1_u12(ipoint,1,i,j) * int2_grad1_u12(ipoint,1,j,i) & + + 0.5d0 * int2_grad1_u12(ipoint,2,i,j) * int2_grad1_u12(ipoint,2,j,i) & + + 0.5d0 * int2_grad1_u12(ipoint,3,i,j) * int2_grad1_u12(ipoint,3,j,i) enddo enddo enddo !$OMP END DO NOWAIT !$OMP CRITICAL - tmp_M = tmp_M + tmp_M_priv - tmp_S = tmp_S + tmp_S_priv + tmpM = tmpM + tmpM_priv + tmpS = tmpS + tmpS_priv !$OMP END CRITICAL - deallocate(tmp_M_priv, tmp_S_priv) + deallocate(tmpM_priv, tmpS_priv) !$OMP END PARALLEL allocate(tmp(n_grid)) do ipoint = 1, n_grid - tmp_S(ipoint) = 2.d0 * (tmp_J(ipoint,1)*tmp_J(ipoint,1) + tmp_J(ipoint,2)*tmp_J(ipoint,2) + tmp_J(ipoint,3)*tmp_J(ipoint,3)) - tmp_S(ipoint) + tmpS(ipoint) = 2.d0 * (tmpJ(ipoint,1)*tmpJ(ipoint,1) + tmpJ(ipoint,2)*tmpJ(ipoint,2) + tmpJ(ipoint,3)*tmpJ(ipoint,3)) - tmpS(ipoint) - tmp(ipoint) = wr1(ipoint) * ( tmp_O(ipoint) * tmp_S(ipoint) & - - 2.d0 * ( tmp_J(ipoint,1) * tmp_M(ipoint,1) & - + tmp_J(ipoint,2) * tmp_M(ipoint,2) & - + tmp_J(ipoint,3) * tmp_M(ipoint,3))) + tmp(ipoint) = wr1(ipoint) * ( tmpO(ipoint) * tmpS(ipoint) - 2.d0 * ( tmpJ(ipoint,1) * tmpM(ipoint,1) & + + tmpJ(ipoint,2) * tmpM(ipoint,2) & + + tmpJ(ipoint,3) * tmpM(ipoint,3) ) ) enddo - noL_0e = noL_0e -2.d0 * (sum(tmp)) + noL_0e = noL_0e - 2.d0 * (sum(tmp)) deallocate(tmp) diff --git a/plugins/local/tc_int/write_tc_int_cuda.irp.f b/plugins/local/tc_int/write_tc_int_cuda.irp.f index 2a3dc4d1..756630b8 100644 --- a/plugins/local/tc_int/write_tc_int_cuda.irp.f +++ b/plugins/local/tc_int/write_tc_int_cuda.irp.f @@ -120,12 +120,12 @@ subroutine do_work_on_gpu() call wall_time(cuda_time0) print*, ' start CUDA kernel' - call cutc_int_c(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & - n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & - final_grid_points, final_weight_at_r_vector, & - final_grid_points_extra, final_weight_at_r_vector_extra, & - rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & - int2_grad1_u12_ao, int_2e_ao) + call cutc_int(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & + n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & + final_grid_points, final_weight_at_r_vector, & + final_grid_points_extra, final_weight_at_r_vector_extra, & + rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & + int2_grad1_u12_ao, int_2e_ao) call wall_time(cuda_time1) print*, ' wall time for CUDA kernel (min) = ', (cuda_time1-cuda_time0) / 60.d0 From 2e6df70e03303cc59e7b6d5e423105c2183e9068 Mon Sep 17 00:00:00 2001 From: AbdAmmar Date: Tue, 13 Aug 2024 12:19:30 +0200 Subject: [PATCH 149/159] cleaning in cpu vs gpu comparison --- .../local/tc_int/compute_int_2e_ao_cpu.irp.f | 233 ++++++++ .../local/tc_int/compute_int_2e_ao_gpu.irp.f | 117 ++++ plugins/local/tc_int/compute_no_cpu.irp.f | 143 +++++ ...b_no_0e_gpu.irp.f => compute_no_gpu.irp.f} | 82 ++- plugins/local/tc_int/cutc_module.F90 | 149 ------ plugins/local/tc_int/deb_int_2e_ao_gpu.irp.f | 49 +- plugins/local/tc_int/deb_no_1e_gpu.irp.f | 499 ------------------ plugins/local/tc_int/deb_no_2e_gpu.irp.f | 417 --------------- plugins/local/tc_int/deb_no_gpu.irp.f | 50 +- plugins/local/tc_int/deb_tc_int_cuda.irp.f | 55 -- 10 files changed, 640 insertions(+), 1154 deletions(-) create mode 100644 plugins/local/tc_int/compute_int_2e_ao_cpu.irp.f create mode 100644 plugins/local/tc_int/compute_int_2e_ao_gpu.irp.f create mode 100644 plugins/local/tc_int/compute_no_cpu.irp.f rename plugins/local/tc_int/{deb_no_0e_gpu.irp.f => compute_no_gpu.irp.f} (52%) delete mode 100644 plugins/local/tc_int/deb_no_1e_gpu.irp.f delete mode 100644 plugins/local/tc_int/deb_no_2e_gpu.irp.f delete mode 100644 plugins/local/tc_int/deb_tc_int_cuda.irp.f diff --git a/plugins/local/tc_int/compute_int_2e_ao_cpu.irp.f b/plugins/local/tc_int/compute_int_2e_ao_cpu.irp.f new file mode 100644 index 00000000..9ff5431d --- /dev/null +++ b/plugins/local/tc_int/compute_int_2e_ao_cpu.irp.f @@ -0,0 +1,233 @@ + +! --- + +program compute_int_2e_ao_cpu + + implicit none + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + + call main() + +end + +! --- + +subroutine main() + + use cutc_module + + implicit none + + integer :: m + integer :: i, j, k, l + integer :: ipoint, jpoint + + double precision :: weight1, ao_i_r, ao_k_r + + double precision :: time0, time1 + double precision :: wall_time0, wall_time1 + double precision :: wall_ttime0, wall_ttime1 + double precision :: tt1, tt2 + + double precision, allocatable :: rn(:,:), aos_data1(:,:,:), aos_data2(:,:,:) + double precision, allocatable :: grad1_u12(:,:,:), int_fct_long_range(:,:,:), c_mat(:,:,:) + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: int_2e_ao(:,:,:,:) + + + call wall_time(time0) + print*, ' start compute_int_2e_ao_cpu' + + + ! --- + + allocate(rn(3,nucl_num)) + allocate(aos_data1(n_points_final_grid,ao_num,4)) + allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) + + do k = 1, nucl_num + rn(1,k) = nucl_coord(k,1) + rn(2,k) = nucl_coord(k,2) + rn(3,k) = nucl_coord(k,3) + enddo + + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + aos_data1(ipoint,k,1) = aos_in_r_array(k,ipoint) + aos_data1(ipoint,k,2) = aos_grad_in_r_array(k,ipoint,1) + aos_data1(ipoint,k,3) = aos_grad_in_r_array(k,ipoint,2) + aos_data1(ipoint,k,4) = aos_grad_in_r_array(k,ipoint,3) + enddo + enddo + + do k = 1, ao_num + do ipoint = 1, n_points_extra_final_grid + aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) + aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) + aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) + aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) + enddo + enddo + + + allocate(int_fct_long_range(n_points_extra_final_grid,ao_num,ao_num)) + allocate(grad1_u12(n_points_extra_final_grid,n_points_final_grid,4)) + allocate(c_mat(n_points_final_grid,ao_num,ao_num)) + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,4)) + allocate(int_2e_ao(ao_num,ao_num,ao_num,ao_num)) + + call wall_time(wall_time0) + + call wall_time(wall_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (j, i, jpoint) & + !$OMP SHARED (int_fct_long_range, ao_num, n_points_extra_final_grid, final_weight_at_r_vector_extra, aos_in_r_array_extra_transp) + !$OMP DO SCHEDULE (static) + do j = 1, ao_num + do i = 1, ao_num + do jpoint = 1, n_points_extra_final_grid + int_fct_long_range(jpoint,i,j) = final_weight_at_r_vector_extra(jpoint) * aos_in_r_array_extra_transp(jpoint,i) * aos_in_r_array_extra_transp(jpoint,j) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for int_long_range (sec) = ', (wall_ttime1 - wall_ttime0) + + + call wall_time(wall_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (n_points_final_grid, n_points_extra_final_grid, grad1_u12) + !$OMP DO + do ipoint = 1, n_points_final_grid + call get_grad1_u12_for_tc(ipoint, n_points_extra_final_grid, grad1_u12(1,ipoint,1) & + , grad1_u12(1,ipoint,2) & + , grad1_u12(1,ipoint,3) & + , grad1_u12(1,ipoint,4) ) + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for tc_int_bh (sec) = ', (wall_ttime1 - wall_ttime0) + + + call wall_time(wall_ttime0) + do m = 1, 4 + call dgemm("T", "N", ao_num*ao_num, n_points_final_grid, n_points_extra_final_grid, 1.d0 & + , int_fct_long_range(1,1,1), n_points_extra_final_grid, grad1_u12(1,1,m), n_points_extra_final_grid & + , 0.d0, int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num) + enddo + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for DGEMM of integ over r2 (sec) = ', (wall_ttime1 - wall_ttime0) + + + call wall_time(wall_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint) & + !$OMP SHARED (aos_in_r_array_transp, c_mat, ao_num, n_points_final_grid, final_weight_at_r_vector) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + c_mat(ipoint,k,i) = final_weight_at_r_vector(ipoint) * aos_in_r_array_transp(ipoint,i) * aos_in_r_array_transp(ipoint,k) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time of Hermitian part (sec) = ', (wall_ttime1 - wall_ttime0) + + + call wall_time(wall_ttime0) + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 & + , int2_grad1_u12_ao(1,1,1,4), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 0.d0, int_2e_ao(1,1,1,1), ao_num*ao_num) + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time for DGEMM of Hermitian part (sec) = ', (wall_ttime1 - wall_ttime0) + + + tt1 = 0.d0 + tt2 = 0.d0 + do m = 1, 3 + + call wall_time(wall_ttime0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, k, ipoint, weight1, ao_i_r, ao_k_r) & + !$OMP SHARED (aos_in_r_array_transp, aos_grad_in_r_array_transp_bis, c_mat, & + !$OMP ao_num, n_points_final_grid, final_weight_at_r_vector, m) + !$OMP DO SCHEDULE (static) + do i = 1, ao_num + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + + weight1 = final_weight_at_r_vector(ipoint) + ao_i_r = aos_in_r_array_transp(ipoint,i) + ao_k_r = aos_in_r_array_transp(ipoint,k) + + c_mat(ipoint,k,i) = weight1 * (ao_k_r * aos_grad_in_r_array_transp_bis(ipoint,i,m) - ao_i_r * aos_grad_in_r_array_transp_bis(ipoint,k,m)) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(wall_ttime1) + tt1 += wall_ttime1 - wall_ttime0 + + call wall_time(wall_ttime0) + call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, -0.5d0 & + , int2_grad1_u12_ao(1,1,1,m), ao_num*ao_num, c_mat(1,1,1), n_points_final_grid & + , 1.d0, int_2e_ao(1,1,1,1), ao_num*ao_num) + call wall_time(wall_ttime1) + tt2 += wall_ttime1 - wall_ttime0 + enddo + write(*,"(A,2X,F15.7)") ' wall time of non-Hermitian part (sec) = ', tt1 + write(*,"(A,2X,F15.7)") ' wall time for DGEMM of non Hermitian part (sec) = ', tt2 + + + call wall_time(wall_ttime0) + call sum_A_At(int_2e_ao(1,1,1,1), ao_num*ao_num) + call wall_time(wall_ttime1) + write(*,"(A,2X,F15.7)") ' wall time of A + A.T (sec) = ', wall_ttime1 - wall_ttime0 + + + call wall_time(wall_time1) + write(*,"(A,2X,F15.7)") ' wall time on cpu (sec) = ', (wall_time1 - wall_time0) + + + deallocate(int_fct_long_range, grad1_u12, c_mat) + deallocate(int_2e_ao, int2_grad1_u12_ao) + deallocate(rn, aos_data1, aos_data2) + + call wall_time(time1) + write(*,"(A,2X,F15.7)") ' wall time for compute_int_2e_ao_cpu (sec) = ', (time1 - time0) + + return +end diff --git a/plugins/local/tc_int/compute_int_2e_ao_gpu.irp.f b/plugins/local/tc_int/compute_int_2e_ao_gpu.irp.f new file mode 100644 index 00000000..4ffdc1cb --- /dev/null +++ b/plugins/local/tc_int/compute_int_2e_ao_gpu.irp.f @@ -0,0 +1,117 @@ + +! --- + +program compute_int_2e_ao_gpu + + implicit none + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + + call main() + +end + +! --- + +subroutine main() + + use cutc_module + + implicit none + + integer :: i, j, k, l + integer :: ipoint + + double precision :: time0, time1 + + double precision, allocatable :: rn(:,:), aos_data1(:,:,:), aos_data2(:,:,:) + double precision, allocatable :: int2_grad1_u12_ao_gpu(:,:,:,:) + double precision, allocatable :: int_2e_ao_gpu(:,:,:,:) + + + call wall_time(time0) + print*, ' start compute_int_2e_ao_gpu' + + + ! --- + + allocate(rn(3,nucl_num)) + allocate(aos_data1(n_points_final_grid,ao_num,4)) + allocate(aos_data2(n_points_extra_final_grid,ao_num,4)) + + do k = 1, nucl_num + rn(1,k) = nucl_coord(k,1) + rn(2,k) = nucl_coord(k,2) + rn(3,k) = nucl_coord(k,3) + enddo + + do k = 1, ao_num + do ipoint = 1, n_points_final_grid + aos_data1(ipoint,k,1) = aos_in_r_array(k,ipoint) + aos_data1(ipoint,k,2) = aos_grad_in_r_array(k,ipoint,1) + aos_data1(ipoint,k,3) = aos_grad_in_r_array(k,ipoint,2) + aos_data1(ipoint,k,4) = aos_grad_in_r_array(k,ipoint,3) + enddo + enddo + + do k = 1, ao_num + do ipoint = 1, n_points_extra_final_grid + aos_data2(ipoint,k,1) = aos_in_r_array_extra(k,ipoint) + aos_data2(ipoint,k,2) = aos_grad_in_r_array_extra(k,ipoint,1) + aos_data2(ipoint,k,3) = aos_grad_in_r_array_extra(k,ipoint,2) + aos_data2(ipoint,k,4) = aos_grad_in_r_array_extra(k,ipoint,3) + enddo + enddo + + ! --- + + integer :: nB + integer :: sB + + PROVIDE nxBlocks nyBlocks nzBlocks + PROVIDE blockxSize blockySize blockzSize + + sB = 32 + nB = (n_points_final_grid + sB - 1) / sB + + call ezfio_set_tc_int_blockxSize(sB) + call ezfio_set_tc_int_nxBlocks(nB) + + allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,3)) + allocate(int_2e_ao_gpu(ao_num,ao_num,ao_num,ao_num)) + + call cutc_int(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & + n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & + final_grid_points, final_weight_at_r_vector, & + final_grid_points_extra, final_weight_at_r_vector_extra, & + rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & + int2_grad1_u12_ao_gpu, int_2e_ao_gpu) + + deallocate(int_2e_ao_gpu, int2_grad1_u12_ao_gpu) + deallocate(rn, aos_data1, aos_data2) + + call wall_time(time1) + write(*,"(A,2X,F15.7)") ' wall time for compute_int_2e_ao_gpu (sec) = ', (time1 - time0) + + return +end diff --git a/plugins/local/tc_int/compute_no_cpu.irp.f b/plugins/local/tc_int/compute_no_cpu.irp.f new file mode 100644 index 00000000..54ba37ce --- /dev/null +++ b/plugins/local/tc_int/compute_no_cpu.irp.f @@ -0,0 +1,143 @@ + +! --- + +program compute_no_cpu + + implicit none + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + + call main() + +end + +! --- + +subroutine main() + + use cutc_module + + implicit none + + integer :: i, j, k, l, ipoint + double precision :: time0, time1 + double precision :: tt0, tt1 + double precision :: acc_thr, err_tot, nrm_tot, err_loc + double precision :: noL_0e + double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) + double precision, allocatable :: tmp(:,:,:,:) + double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) + double precision, allocatable :: noL_1e (:,:) + double precision, allocatable :: noL_2e (:,:,:,:) + + PROVIDE mo_l_coef mo_r_coef + PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp + + + call wall_time(time0) + print*, ' start compute_no_cpu' + + + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) + print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + call wall_time(tt0) + open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") + read(11) int2_grad1_u12_ao + close(11) + call wall_time(tt1) + write(*,"(A,2X,F15.7)") ' wall time for reading (sec) = ', (tt1 - tt0) + + allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) + allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) + + call wall_time(tt0) + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (ipoint) & + !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) + !$OMP DO SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) + call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) + enddo + !$OMP END DO + !$OMP END PARALLEL + + deallocate(int2_grad1_u12_ao) + + !$OMP PARALLEL & + !$OMP DEFAULT (NONE) & + !$OMP PRIVATE (i, j, ipoint) & + !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) + !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) + do ipoint = 1, n_points_final_grid + do i = 1, mo_num + do j = 1, mo_num + int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) + int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) + int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) + enddo + enddo + enddo + !$OMP END DO + !$OMP END PARALLEL + call wall_time(tt1) + write(*,"(A,2X,F15.7)") ' wall time for 3e-tensor (sec) = ', (tt1 - tt0) + + deallocate(tmp) + + allocate(noL_2e(mo_num,mo_num,mo_num,mo_num)) + allocate(noL_1e(mo_num,mo_num)) + + call provide_no_2e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_2e(1,1,1,1)) + + call provide_no_1e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_1e(1,1)) + + call provide_no_0e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_0e) + + deallocate(int2_grad1_u12_bimo_t) + deallocate(noL_2e) + deallocate(noL_1e) + + + call wall_time(time1) + write(*,"(A,2X,F15.7)") ' wall time for compute_no_cpu (sec) = ', (time1 - time0) + + return + +end + +! --- + + diff --git a/plugins/local/tc_int/deb_no_0e_gpu.irp.f b/plugins/local/tc_int/compute_no_gpu.irp.f similarity index 52% rename from plugins/local/tc_int/deb_no_0e_gpu.irp.f rename to plugins/local/tc_int/compute_no_gpu.irp.f index afff060a..9e4d90cc 100644 --- a/plugins/local/tc_int/deb_no_0e_gpu.irp.f +++ b/plugins/local/tc_int/compute_no_gpu.irp.f @@ -1,34 +1,77 @@ ! --- -subroutine deb_no_0e_gpu() +program compute_no_gpu + + implicit none + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + + call main() + +end + +! --- + +subroutine main() use cutc_module implicit none integer :: i, j, k, l, ipoint + double precision :: time0, time1 + double precision :: tt0, tt1 double precision :: acc_thr, err_tot, nrm_tot, err_loc - double precision :: noL_0e double precision :: noL_0e_gpu(1) double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) double precision, allocatable :: tmp(:,:,:,:) double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) - + double precision, allocatable :: noL_1e_gpu(:,:) + double precision, allocatable :: noL_2e_gpu(:,:,:,:) PROVIDE mo_l_coef mo_r_coef PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp + call wall_time(time0) + print*, ' start compute_no_gpu' + + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + call wall_time(tt0) open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") read(11) int2_grad1_u12_ao close(11) + call wall_time(tt1) + write(*,"(A,2X,F15.7)") ' wall time for reading (sec) = ', (tt1 - tt0) allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) + call wall_time(tt0) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (ipoint) & @@ -60,37 +103,30 @@ subroutine deb_no_0e_gpu() enddo !$OMP END DO !$OMP END PARALLEL + call wall_time(tt1) + write(*,"(A,2X,F15.7)") ' wall time for 3e-tensor (sec) = ', (tt1 - tt0) deallocate(tmp) - ! --- + allocate(noL_2e_gpu(mo_num,mo_num,mo_num,mo_num)) + allocate(noL_1e_gpu(mo_num,mo_num)) - call cutc_no_0e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & - final_weight_at_r_vector(1), & - mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & - int2_grad1_u12_bimo_t(1,1,1,1), noL_0e_gpu(1)) - - ! --- - - call provide_no_0e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & - final_weight_at_r_vector(1), & - mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & - int2_grad1_u12_bimo_t(1,1,1,1), noL_0e) - - ! --- + call cutc_no(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & + final_weight_at_r_vector(1), & + mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & + int2_grad1_u12_bimo_t(1,1,1,1), noL_2e_gpu(1,1,1,1), noL_1e_gpu(1,1), noL_0e_gpu(1)) deallocate(int2_grad1_u12_bimo_t) + deallocate(noL_2e_gpu) + deallocate(noL_1e_gpu) - print *, 'noL_0e CPU = ', noL_0e - print *, 'noL_0e GPU = ', noL_0e_gpu(1) + call wall_time(time1) + write(*,"(A,2X,F15.7)") ' wall time for compute_no_gpu (sec) = ', (time1 - time0) - err_tot = dabs(noL_0e - noL_0e_gpu(1)) - nrm_tot = dabs(noL_0e) - print *, ' absolute accuracy on noL_0e (%) =', 100.d0 * err_tot / nrm_tot - return end ! --- + diff --git a/plugins/local/tc_int/cutc_module.F90 b/plugins/local/tc_int/cutc_module.F90 index eaf271e5..0f5f6c78 100644 --- a/plugins/local/tc_int/cutc_module.F90 +++ b/plugins/local/tc_int/cutc_module.F90 @@ -41,155 +41,6 @@ module cutc_module ! --- - subroutine deb_int_2e_ao(nxBlocks, nyBlocks, nzBlocks, & - blockxSize, blockySize, blockzSize, & - n_grid1, n_grid2, n_ao, n_nuc, size_bh, & - r1, wr1, r2, wr2, rn, & - aos_data1, aos_data2, & - c_bh, m_bh, n_bh, o_bh, & - int2_grad1_u12_ao, int_2e_ao) bind(C, name = "deb_int_2e_ao") - - import c_int, c_double, c_ptr - - integer(c_int), intent(in), value :: nxBlocks, blockxSize - integer(c_int), intent(in), value :: nyBlocks, blockySize - integer(c_int), intent(in), value :: nzBlocks, blockzSize - integer(c_int), intent(in), value :: n_grid1, n_grid2 - integer(c_int), intent(in), value :: n_ao - integer(c_int), intent(in), value :: n_nuc - integer(c_int), intent(in), value :: size_bh - real(c_double), intent(in) :: r1(3,n_grid1), wr1(n_grid1) - real(c_double), intent(in) :: r2(3,n_grid2), wr2(n_grid2) - real(c_double), intent(in) :: rn(3,n_nuc) - real(c_double), intent(in) :: aos_data1(n_grid1,n_ao,4) - real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4) - real(c_double), intent(in) :: c_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: m_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: n_bh(size_bh,n_nuc) - integer(c_int), intent(in) :: o_bh(size_bh,n_nuc) - real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,3) - real(c_double), intent(out) :: int_2e_ao(n_ao,n_ao,n_ao,n_ao) - - end subroutine deb_int_2e_ao - - ! --- - - subroutine cutc_no_2e(n_grid1, n_mo, ne_a, ne_b, & - wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & - no_2e) bind(C, name = "cutc_no_2e") - - import c_int, c_double, c_ptr - - integer(c_int), intent(in), value :: n_grid1 - integer(c_int), intent(in), value :: n_mo - integer(c_int), intent(in), value :: ne_a - integer(c_int), intent(in), value :: ne_b - real(c_double), intent(in) :: wr1(n_grid1) - real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) - real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) - real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) - real(c_double), intent(out) :: no_2e(n_mo,n_mo,n_mo,n_mo) - - end subroutine cutc_no_2e - - ! --- - - subroutine deb_no_2e(n_grid1, n_mo, ne_a, ne_b, & - wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & - tmpO, tmpJ, tmpA, tmpB, tmpC, tmpD, tmpE, & - no_2e) bind(C, name = "deb_no_2e") - - import c_int, c_double, c_ptr - - integer(c_int), intent(in), value :: n_grid1 - integer(c_int), intent(in), value :: n_mo - integer(c_int), intent(in), value :: ne_a - integer(c_int), intent(in), value :: ne_b - real(c_double), intent(in) :: wr1(n_grid1) - real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) - real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) - real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) - real(c_double), intent(out) :: tmpO(n_grid1), tmpJ(n_grid1,3) - real(c_double), intent(out) :: tmpA(n_grid1,3,n_mo), tmpB(n_grid1,3,n_mo) - real(c_double), intent(out) :: tmpC(n_grid1,4,n_mo,n_mo), tmpD(n_grid1,4,n_mo,n_mo) - real(c_double), intent(out) :: tmpE(n_mo,n_mo,n_mo,n_mo) - real(c_double), intent(out) :: no_2e(n_mo,n_mo,n_mo,n_mo) - - end subroutine deb_no_2e - - ! --- - - subroutine cutc_no_1e(n_grid1, n_mo, ne_a, ne_b, & - wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & - no_1e) bind(C, name = "cutc_no_1e") - - import c_int, c_double, c_ptr - - integer(c_int), intent(in), value :: n_grid1 - integer(c_int), intent(in), value :: n_mo - integer(c_int), intent(in), value :: ne_a - integer(c_int), intent(in), value :: ne_b - real(c_double), intent(in) :: wr1(n_grid1) - real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) - real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) - real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) - real(c_double), intent(out) :: no_1e(n_mo,n_mo) - - end subroutine cutc_no_1e - - ! --- - - subroutine deb_no_1e(n_grid1, n_mo, ne_a, ne_b, & - wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & - tmpO, tmpJ, tmpM, tmpS, tmpC, tmpD, tmpL, tmpR, tmpE, tmpF, & - no_1e) bind(C, name = "deb_no_1e") - - import c_int, c_double, c_ptr - - integer(c_int), intent(in), value :: n_grid1 - integer(c_int), intent(in), value :: n_mo - integer(c_int), intent(in), value :: ne_a - integer(c_int), intent(in), value :: ne_b - real(c_double), intent(in) :: wr1(n_grid1) - real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) - real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) - real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) - real(c_double), intent(out) :: tmpO(n_grid1) - real(c_double), intent(out) :: tmpJ(n_grid1,3) - real(c_double), intent(out) :: tmpM(n_grid1,3) - real(c_double), intent(out) :: tmpS(n_grid1) - real(c_double), intent(out) :: tmpC(n_grid1,4,n_mo,n_mo) - real(c_double), intent(out) :: tmpD(n_grid1,4) - real(c_double), intent(out) :: tmpL(n_grid1,3,n_mo) - real(c_double), intent(out) :: tmpR(n_grid1,3,n_mo) - real(c_double), intent(out) :: tmpE(n_grid1,5,n_mo) - real(c_double), intent(out) :: tmpF(n_grid1,5,n_mo) - real(c_double), intent(out) :: no_1e(n_mo,n_mo) - - end subroutine deb_no_1e - - ! --- - - subroutine cutc_no_0e(n_grid1, n_mo, ne_a, ne_b, & - wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & - no_0e) bind(C, name = "cutc_no_0e") - - import c_int, c_double, c_ptr - - integer(c_int), intent(in), value :: n_grid1 - integer(c_int), intent(in), value :: n_mo - integer(c_int), intent(in), value :: ne_a - integer(c_int), intent(in), value :: ne_b - real(c_double), intent(in) :: wr1(n_grid1) - real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo) - real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo) - real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo) - real(c_double), intent(out) :: no_0e(1) - - end subroutine cutc_no_0e - - ! --- - subroutine cutc_no(n_grid1, n_mo, ne_a, ne_b, & wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, & no_2e, no_1e, no_0e) bind(C, name = "cutc_no") diff --git a/plugins/local/tc_int/deb_int_2e_ao_gpu.irp.f b/plugins/local/tc_int/deb_int_2e_ao_gpu.irp.f index 3290c149..4bb44af9 100644 --- a/plugins/local/tc_int/deb_int_2e_ao_gpu.irp.f +++ b/plugins/local/tc_int/deb_int_2e_ao_gpu.irp.f @@ -1,7 +1,39 @@ ! --- -subroutine deb_int_2e_ao_gpu() +program deb_int_2e_ao_gpu + + implicit none + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + + call main() + +end + +! --- + +subroutine main() use cutc_module @@ -28,7 +60,6 @@ subroutine deb_int_2e_ao_gpu() double precision, allocatable :: int_2e_ao_gpu(:,:,:,:) - call wall_time(time0) print*, ' start deb_int_2e_ao_gpu' @@ -80,12 +111,12 @@ subroutine deb_int_2e_ao_gpu() allocate(int2_grad1_u12_ao_gpu(ao_num,ao_num,n_points_final_grid,3)) allocate(int_2e_ao_gpu(ao_num,ao_num,ao_num,ao_num)) - call deb_int_2e_ao(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & - n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & - final_grid_points, final_weight_at_r_vector, & - final_grid_points_extra, final_weight_at_r_vector_extra, & - rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & - int2_grad1_u12_ao_gpu, int_2e_ao_gpu) + call cutc_int(nxBlocks, nyBlocks, nzBlocks, blockxSize, blockySize, blockzSize, & + n_points_final_grid, n_points_extra_final_grid, ao_num, nucl_num, jBH_size, & + final_grid_points, final_weight_at_r_vector, & + final_grid_points_extra, final_weight_at_r_vector_extra, & + rn, aos_data1, aos_data2, jBH_c, jBH_m, jBH_n, jBH_o, & + int2_grad1_u12_ao_gpu, int_2e_ao_gpu) ! --- @@ -223,7 +254,6 @@ subroutine deb_int_2e_ao_gpu() acc_thr = 1d-12 - print *, ' precision on int2_grad1_u12_ao ' err_tot = 0.d0 nrm_tot = 0.d0 do m = 1, 3 @@ -246,7 +276,6 @@ subroutine deb_int_2e_ao_gpu() print *, ' absolute accuracy on int2_grad1_u12_ao (%) =', 100.d0 * err_tot / nrm_tot - print *, ' precision on int_2e_ao ' err_tot = 0.d0 nrm_tot = 0.d0 do i = 1, ao_num diff --git a/plugins/local/tc_int/deb_no_1e_gpu.irp.f b/plugins/local/tc_int/deb_no_1e_gpu.irp.f deleted file mode 100644 index 1efbb913..00000000 --- a/plugins/local/tc_int/deb_no_1e_gpu.irp.f +++ /dev/null @@ -1,499 +0,0 @@ - -! --- - -subroutine deb_no_1e_gpu() - - use cutc_module - - implicit none - - integer :: i, j, k, l, ipoint - double precision :: acc_thr, err_tot, nrm_tot, err_loc - double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) - double precision, allocatable :: tmp(:,:,:,:) - double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) - double precision, allocatable :: noL_1e(:,:) - double precision, allocatable :: noL_1e_gpu(:,:) - - - PROVIDE mo_l_coef mo_r_coef - PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp - - - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) - print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' - open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") - read(11) int2_grad1_u12_ao - close(11) - - allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) - allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) - !$OMP DO SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) - enddo - !$OMP END DO - !$OMP END PARALLEL - - deallocate(int2_grad1_u12_ao) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, j, ipoint) & - !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) - !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - do i = 1, mo_num - do j = 1, mo_num - int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) - int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) - int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - deallocate(tmp) - - ! --- - - allocate(noL_1e_gpu(mo_num,mo_num)) - - call cutc_no_1e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & - final_weight_at_r_vector(1), & - mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & - int2_grad1_u12_bimo_t(1,1,1,1), noL_1e_gpu(1,1)) - - ! --- - - allocate(noL_1e(mo_num,mo_num)) - - call provide_no_1e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & - final_weight_at_r_vector(1), & - mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & - int2_grad1_u12_bimo_t(1,1,1,1), noL_1e(1,1)) - - ! --- - - deallocate(int2_grad1_u12_bimo_t) - - acc_thr = 1d-12 - - err_tot = 0.d0 - nrm_tot = 0.d0 - do k = 1, mo_num - do l = 1, mo_num - err_loc = dabs(noL_1e(l,k) - noL_1e_gpu(l,k)) - if(err_loc > acc_thr) then - print*, " error on", l, k - print*, " CPU res", noL_1e (l,k) - print*, " GPU res", noL_1e_gpu(l,k) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(noL_1e(l,k)) - enddo - enddo - print *, ' absolute accuracy on noL_1e (%) =', 100.d0 * err_tot / nrm_tot - - deallocate(noL_1e) - deallocate(noL_1e_gpu) - - - return - -end - -! --- - -subroutine deb_no_1e_gpu_tmp() - - use cutc_module - - implicit none - - integer :: i, j, k, l, m, ipoint - double precision :: acc_thr, err_tot, nrm_tot, err_loc - double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) - double precision, allocatable :: tmp(:,:,:,:) - double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) - double precision, allocatable :: tmpO(:), tmpO_gpu(:) - double precision, allocatable :: tmpJ(:,:), tmpJ_gpu(:,:) - double precision, allocatable :: tmpM(:,:), tmpM_gpu(:,:) - double precision, allocatable :: tmpS(:), tmpS_gpu(:) - double precision, allocatable :: tmpC(:,:,:,:), tmpC_gpu(:,:,:,:) - double precision, allocatable :: tmpD(:,:), tmpD_gpu(:,:) - double precision, allocatable :: tmpL(:,:,:), tmpL_gpu(:,:,:) - double precision, allocatable :: tmpR(:,:,:), tmpR_gpu(:,:,:) - double precision, allocatable :: tmpE(:,:,:), tmpE_gpu(:,:,:) - double precision, allocatable :: tmpF(:,:,:), tmpF_gpu(:,:,:) - double precision, allocatable :: noL_1e(:,:), noL_1e_gpu(:,:) - - - ! --- - - - PROVIDE mo_l_coef mo_r_coef - PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp - - - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) - print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' - open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") - read(11) int2_grad1_u12_ao - close(11) - - allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) - allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) - !$OMP DO SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) - enddo - !$OMP END DO - !$OMP END PARALLEL - - deallocate(int2_grad1_u12_ao) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, j, ipoint) & - !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) - !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - do i = 1, mo_num - do j = 1, mo_num - int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) - int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) - int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - deallocate(tmp) - - ! --- - - allocate(tmpO_gpu(n_points_final_grid)) - allocate(tmpJ_gpu(n_points_final_grid,3)) - allocate(tmpM_gpu(n_points_final_grid,3)) - allocate(tmpS_gpu(n_points_final_grid)) - allocate(tmpC_gpu(n_points_final_grid,4,mo_num,mo_num)) - allocate(tmpD_gpu(n_points_final_grid,4)) - allocate(tmpL_gpu(n_points_final_grid,3,mo_num)) - allocate(tmpR_gpu(n_points_final_grid,3,mo_num)) - allocate(tmpE_gpu(n_points_final_grid,5,mo_num)) - allocate(tmpF_gpu(n_points_final_grid,5,mo_num)) - allocate(noL_1e_gpu(mo_num,mo_num)) - - call deb_no_1e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & - final_weight_at_r_vector(1), & - mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), int2_grad1_u12_bimo_t(1,1,1,1), & - tmpO_gpu(1), tmpJ_gpu(1,1), tmpM_gpu(1,1), tmpS_gpu(1), tmpC_gpu(1,1,1,1), tmpD_gpu(1,1), & - tmpL_gpu(1,1,1), tmpR_gpu(1,1,1), tmpE_gpu(1,1,1), tmpF_gpu(1,1,1), noL_1e_gpu(1,1)) - - ! --- - - allocate(tmpO(n_points_final_grid)) - allocate(tmpJ(n_points_final_grid,3)) - allocate(tmpM(n_points_final_grid,3)) - allocate(tmpS(n_points_final_grid)) - allocate(tmpC(n_points_final_grid,4,mo_num,mo_num)) - allocate(tmpD(n_points_final_grid,4)) - allocate(tmpL(n_points_final_grid,3,mo_num)) - allocate(tmpR(n_points_final_grid,3,mo_num)) - allocate(tmpE(n_points_final_grid,5,mo_num)) - allocate(tmpF(n_points_final_grid,5,mo_num)) - allocate(noL_1e(mo_num,mo_num)) - - call provide_no_1e_tmp(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & - final_weight_at_r_vector(1), & - mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), int2_grad1_u12_bimo_t(1,1,1,1), & - tmpO(1), tmpJ(1,1), tmpM(1,1), tmpS(1), tmpC(1,1,1,1), tmpD(1,1), tmpL(1,1,1), tmpR(1,1,1), & - tmpE(1,1,1), tmpF(1,1,1), noL_1e(1,1)) - - ! --- - - deallocate(int2_grad1_u12_bimo_t) - - - acc_thr = 1d-12 - - ! --- - - ! tmpO(n_points_final_grid)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpO(ipoint) - tmpO_gpu(ipoint)) - if(err_loc > acc_thr) then - print*, " error on", ipoint - print*, " CPU res", tmpO (ipoint) - print*, " GPU res", tmpO_gpu(ipoint) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpO(ipoint)) - enddo - print *, ' absolute accuracy on tmpO (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - ! tmpJ(n_points_final_grid,3)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do m = 1, 3 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpJ(ipoint,m) - tmpJ_gpu(ipoint,m)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m - print*, " CPU res", tmpJ (ipoint,m) - print*, " GPU res", tmpJ_gpu(ipoint,m) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpJ(ipoint,m)) - enddo - enddo - print *, ' absolute accuracy on tmpJ (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - ! tmpM(n_points_final_grid,3)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do m = 1, 3 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpM(ipoint,m) - tmpM_gpu(ipoint,m)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m - print*, " CPU res", tmpM (ipoint,m) - print*, " GPU res", tmpM_gpu(ipoint,m) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpM(ipoint,m)) - enddo - enddo - print *, ' absolute accuracy on tmpM (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - ! tmpS(n_points_final_grid)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpS(ipoint) - tmpS_gpu(ipoint)) - if(err_loc > acc_thr) then - print*, " error on", ipoint - print*, " CPU res", tmpS (ipoint) - print*, " GPU res", tmpS_gpu(ipoint) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpS(ipoint)) - enddo - print *, ' absolute accuracy on tmpS (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - ! tmpC(n_points_final_grid,4,mo_num,mo_num)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do j = 1, mo_num - do m = 1, 4 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpC(ipoint,m,j,i) - tmpC_gpu(ipoint,m,j,i)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m, j, i - print*, " CPU res", tmpC (ipoint,m,j,i) - print*, " GPU res", tmpC_gpu(ipoint,m,j,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpC(ipoint,m,j,i)) - enddo - enddo - enddo - enddo - print *, ' absolute accuracy on tmpC (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - ! tmpD(n_points_final_grid,4)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do m = 1, 4 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpD(ipoint,m) - tmpD_gpu(ipoint,m)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m - print*, " CPU res", tmpD (ipoint,m) - print*, " GPU res", tmpD_gpu(ipoint,m) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpD(ipoint,m)) - enddo - enddo - print *, ' absolute accuracy on tmpD (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - ! tmpL(n_points_final_grid,3,mo_num)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do m = 1, 3 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpL(ipoint,m,i) - tmpL_gpu(ipoint,m,i)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m, i - print*, " CPU res", tmpL (ipoint,m,i) - print*, " GPU res", tmpL_gpu(ipoint,m,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpL(ipoint,m,i)) - enddo - enddo - enddo - print *, ' absolute accuracy on tmpL (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - ! tmpR(n_points_final_grid,3,mo_num)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do m = 1, 3 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpR(ipoint,m,i) - tmpR_gpu(ipoint,m,i)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m, i - print*, " CPU res", tmpR (ipoint,m,i) - print*, " GPU res", tmpR_gpu(ipoint,m,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpR(ipoint,m,i)) - enddo - enddo - enddo - print *, ' absolute accuracy on tmpR (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - ! tmpE(n_points_final_grid,5,mo_num)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do m = 1, 5 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpE(ipoint,m,i) - tmpE_gpu(ipoint,m,i)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m, i - print*, " CPU res", tmpE (ipoint,m,i) - print*, " GPU res", tmpE_gpu(ipoint,m,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpE(ipoint,m,i)) - enddo - enddo - enddo - print *, ' absolute accuracy on tmpE (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - ! tmpF(n_points_final_grid,5,mo_num)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do m = 1, 5 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpF(ipoint,m,i) - tmpF_gpu(ipoint,m,i)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m, i - print*, " CPU res", tmpF (ipoint,m,i) - print*, " GPU res", tmpF_gpu(ipoint,m,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpF(ipoint,m,i)) - enddo - enddo - enddo - print *, ' absolute accuracy on tmpF (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - ! noL_1e(mo_num,mo_num)) - err_tot = 0.d0 - nrm_tot = 0.d0 - do k = 1, mo_num - do l = 1, mo_num - err_loc = dabs(noL_1e(l,k) - noL_1e_gpu(l,k)) - if(err_loc > acc_thr) then - print*, " error on", l, k - print*, " CPU res", noL_1e (l,k) - print*, " GPU res", noL_1e_gpu(l,k) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(noL_1e(l,k)) - enddo - enddo - print *, ' absolute accuracy on noL_1e (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - - deallocate(tmpO) - deallocate(tmpJ) - deallocate(tmpM) - deallocate(tmpS) - deallocate(tmpC) - deallocate(tmpD) - deallocate(tmpL) - deallocate(tmpR) - deallocate(tmpE) - deallocate(tmpF) - deallocate(noL_1e) - - deallocate(tmpO_gpu) - deallocate(tmpJ_gpu) - deallocate(tmpM_gpu) - deallocate(tmpS_gpu) - deallocate(tmpC_gpu) - deallocate(tmpD_gpu) - deallocate(tmpL_gpu) - deallocate(tmpR_gpu) - deallocate(tmpE_gpu) - deallocate(tmpF_gpu) - deallocate(noL_1e_gpu) - - - return - -end - - - diff --git a/plugins/local/tc_int/deb_no_2e_gpu.irp.f b/plugins/local/tc_int/deb_no_2e_gpu.irp.f deleted file mode 100644 index 16f58cca..00000000 --- a/plugins/local/tc_int/deb_no_2e_gpu.irp.f +++ /dev/null @@ -1,417 +0,0 @@ - -! --- - -subroutine deb_no_2e_gpu() - - use cutc_module - - implicit none - - integer :: i, j, k, l, ipoint - double precision :: acc_thr, err_tot, nrm_tot, err_loc - double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) - double precision, allocatable :: tmp(:,:,:,:) - double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) - double precision, allocatable :: noL_2e(:,:,:,:) - double precision, allocatable :: noL_2e_gpu(:,:,:,:) - - - PROVIDE mo_l_coef mo_r_coef - PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp - - - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) - print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' - open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") - read(11) int2_grad1_u12_ao - close(11) - - allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) - allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) - !$OMP DO SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) - enddo - !$OMP END DO - !$OMP END PARALLEL - - deallocate(int2_grad1_u12_ao) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, j, ipoint) & - !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) - !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - do i = 1, mo_num - do j = 1, mo_num - int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) - int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) - int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - deallocate(tmp) - - ! --- - - allocate(noL_2e_gpu(mo_num,mo_num,mo_num,mo_num)) - - call cutc_no_2e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & - final_weight_at_r_vector(1), & - mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & - int2_grad1_u12_bimo_t(1,1,1,1), noL_2e_gpu(1,1,1,1)) - - ! --- - - allocate(noL_2e(mo_num,mo_num,mo_num,mo_num)) - - call provide_no_2e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & - final_weight_at_r_vector(1), & - mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & - int2_grad1_u12_bimo_t(1,1,1,1), noL_2e(1,1,1,1)) - - ! --- - - deallocate(int2_grad1_u12_bimo_t) - - acc_thr = 1d-12 - - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do j = 1, mo_num - do k = 1, mo_num - do l = 1, mo_num - err_loc = dabs(noL_2e(l,k,j,i) - noL_2e_gpu(l,k,j,i)) - if(err_loc > acc_thr) then - print*, " error on", l, k, j, i - print*, " CPU res", noL_2e (l,k,j,i) - print*, " GPU res", noL_2e_gpu(l,k,j,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(noL_2e(l,k,j,i)) - enddo - enddo - enddo - enddo - print *, ' absolute accuracy on noL_2e (%) =', 100.d0 * err_tot / nrm_tot - - deallocate(noL_2e) - deallocate(noL_2e_gpu) - - - return - -end - -! --- - -subroutine deb_no_2e_gpu_tmp() - - use cutc_module - - implicit none - - integer :: i, j, k, l, m, ipoint - double precision :: acc_thr, err_tot, nrm_tot, err_loc - double precision, allocatable :: int2_grad1_u12_ao(:,:,:,:) - double precision, allocatable :: tmp(:,:,:,:) - double precision, allocatable :: int2_grad1_u12_bimo_t(:,:,:,:) - double precision, allocatable :: tmpO(:), tmpO_gpu(:) - double precision, allocatable :: tmpJ(:,:), tmpJ_gpu(:,:) - double precision, allocatable :: tmpA(:,:,:), tmpA_gpu(:,:,:) - double precision, allocatable :: tmpB(:,:,:), tmpB_gpu(:,:,:) - double precision, allocatable :: tmpC(:,:,:,:), tmpC_gpu(:,:,:,:) - double precision, allocatable :: tmpD(:,:,:,:), tmpD_gpu(:,:,:,:) - double precision, allocatable :: tmpE(:,:,:,:), tmpE_gpu(:,:,:,:) - double precision, allocatable :: noL_2e(:,:,:,:), noL_2e_gpu(:,:,:,:) - - - PROVIDE mo_l_coef mo_r_coef - PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp - - - allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) - print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' - open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") - read(11) int2_grad1_u12_ao - close(11) - - allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) - allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (ipoint) & - !$OMP SHARED (ao_num, mo_num, n_points_final_grid, int2_grad1_u12_ao, tmp) - !$OMP DO SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,1), ao_num, tmp(1,1,ipoint,1), mo_num) - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,2), ao_num, tmp(1,1,ipoint,2), mo_num) - call ao_to_mo_bi_ortho(int2_grad1_u12_ao(1,1,ipoint,3), ao_num, tmp(1,1,ipoint,3), mo_num) - enddo - !$OMP END DO - !$OMP END PARALLEL - - deallocate(int2_grad1_u12_ao) - - !$OMP PARALLEL & - !$OMP DEFAULT (NONE) & - !$OMP PRIVATE (i, j, ipoint) & - !$OMP SHARED (mo_num, n_points_final_grid, tmp, int2_grad1_u12_bimo_t) - !$OMP DO COLLAPSE(2) SCHEDULE (dynamic) - do ipoint = 1, n_points_final_grid - do i = 1, mo_num - do j = 1, mo_num - int2_grad1_u12_bimo_t(ipoint,1,j,i) = tmp(j,i,ipoint,1) - int2_grad1_u12_bimo_t(ipoint,2,j,i) = tmp(j,i,ipoint,2) - int2_grad1_u12_bimo_t(ipoint,3,j,i) = tmp(j,i,ipoint,3) - enddo - enddo - enddo - !$OMP END DO - !$OMP END PARALLEL - - deallocate(tmp) - - ! --- - - allocate(tmpO_gpu(n_points_final_grid)) - allocate(tmpJ_gpu(n_points_final_grid,3)) - allocate(tmpA_gpu(n_points_final_grid,3,mo_num)) - allocate(tmpB_gpu(n_points_final_grid,3,mo_num)) - allocate(tmpC_gpu(n_points_final_grid,4,mo_num,mo_num)) - allocate(tmpD_gpu(n_points_final_grid,4,mo_num,mo_num)) - allocate(tmpE_gpu(mo_num,mo_num,mo_num,mo_num)) - allocate(noL_2e_gpu(mo_num,mo_num,mo_num,mo_num)) - - call deb_no_2e(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & - final_weight_at_r_vector(1), & - mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & - int2_grad1_u12_bimo_t(1,1,1,1), & - tmpO_gpu(1), tmpJ_gpu(1,1), tmpA_gpu(1,1,1), tmpB_gpu(1,1,1), & - tmpC_gpu(1,1,1,1), tmpD_gpu(1,1,1,1), tmpE_gpu(1,1,1,1), & - noL_2e_gpu(1,1,1,1)) - - ! --- - - allocate(tmpO(n_points_final_grid)) - allocate(tmpJ(n_points_final_grid,3)) - allocate(tmpA(n_points_final_grid,3,mo_num)) - allocate(tmpB(n_points_final_grid,3,mo_num)) - allocate(tmpC(n_points_final_grid,4,mo_num,mo_num)) - allocate(tmpD(n_points_final_grid,4,mo_num,mo_num)) - allocate(tmpE(mo_num,mo_num,mo_num,mo_num)) - allocate(noL_2e(mo_num,mo_num,mo_num,mo_num)) - - call provide_no_2e_tmp(n_points_final_grid, mo_num, elec_alpha_num, elec_beta_num, & - final_weight_at_r_vector(1), & - mos_l_in_r_array_transp(1,1), mos_r_in_r_array_transp(1,1), & - int2_grad1_u12_bimo_t(1,1,1,1), & - tmpO(1), tmpJ(1,1), tmpA(1,1,1), tmpB(1,1,1), & - tmpC(1,1,1,1), tmpD(1,1,1,1), tmpE(1,1,1,1), & - noL_2e(1,1,1,1)) - - ! --- - - deallocate(int2_grad1_u12_bimo_t) - - acc_thr = 1d-12 - - ! --- - - err_tot = 0.d0 - nrm_tot = 0.d0 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpO(ipoint) - tmpO_gpu(ipoint)) - if(err_loc > acc_thr) then - print*, " error on", ipoint - print*, " CPU res", tmpO (ipoint) - print*, " GPU res", tmpO_gpu(ipoint) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpO(ipoint)) - enddo - print *, ' absolute accuracy on tmpO (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - err_tot = 0.d0 - nrm_tot = 0.d0 - do m = 1, 3 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpJ(ipoint,m) - tmpJ_gpu(ipoint,m)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m - print*, " CPU res", tmpJ (ipoint,m) - print*, " GPU res", tmpJ_gpu(ipoint,m) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpJ(ipoint,m)) - enddo - enddo - print *, ' absolute accuracy on tmpJ (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do m = 1, 3 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpA(ipoint,m,i) - tmpA_gpu(ipoint,m,i)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m, i - print*, " CPU res", tmpA (ipoint,m,i) - print*, " GPU res", tmpA_gpu(ipoint,m,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpA(ipoint,m,i)) - enddo - enddo - enddo - print *, ' absolute accuracy on tmpA (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do m = 1, 3 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpB(ipoint,m,i) - tmpB_gpu(ipoint,m,i)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m, i - print*, " CPU res", tmpB (ipoint,m,i) - print*, " GPU res", tmpB_gpu(ipoint,m,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpB(ipoint,m,i)) - enddo - enddo - enddo - print *, ' absolute accuracy on tmpB (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do j = 1, mo_num - do m = 1, 3 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpC(ipoint,m,i,j) - tmpC_gpu(ipoint,m,i,j)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m, i, j - print*, " CPU res", tmpC (ipoint,m,i,j) - print*, " GPU res", tmpC_gpu(ipoint,m,i,j) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpC(ipoint,m,i,j)) - enddo - enddo - enddo - enddo - print *, ' absolute accuracy on tmpC (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do j = 1, mo_num - do m = 1, 3 - do ipoint = 1, n_points_final_grid - err_loc = dabs(tmpD(ipoint,m,i,j) - tmpD_gpu(ipoint,m,i,j)) - if(err_loc > acc_thr) then - print*, " error on", ipoint, m, i, j - print*, " CPU res", tmpD (ipoint,m,i,j) - print*, " GPU res", tmpD_gpu(ipoint,m,i,j) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpD(ipoint,m,i,j)) - enddo - enddo - enddo - enddo - print *, ' absolute accuracy on tmpD (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do j = 1, mo_num - do k = 1, mo_num - do l = 1, mo_num - err_loc = dabs(tmpE(l,k,j,i) - tmpE_gpu(l,k,j,i)) - if(err_loc > acc_thr) then - print*, " error on", l, k, j, i - print*, " CPU res", tmpE (l,k,j,i) - print*, " GPU res", tmpE_gpu(l,k,j,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(tmpE(l,k,j,i)) - enddo - enddo - enddo - enddo - print *, ' absolute accuracy on tmpE (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - err_tot = 0.d0 - nrm_tot = 0.d0 - do i = 1, mo_num - do j = 1, mo_num - do k = 1, mo_num - do l = 1, mo_num - err_loc = dabs(noL_2e(l,k,j,i) - noL_2e_gpu(l,k,j,i)) - if(err_loc > acc_thr) then - print*, " error on", l, k, j, i - print*, " CPU res", noL_2e (l,k,j,i) - print*, " GPU res", noL_2e_gpu(l,k,j,i) - stop - endif - err_tot = err_tot + err_loc - nrm_tot = nrm_tot + dabs(noL_2e(l,k,j,i)) - enddo - enddo - enddo - enddo - print *, ' absolute accuracy on noL_2e (%) =', 100.d0 * err_tot / nrm_tot - - ! --- - - deallocate(tmpO, tmpO_gpu) - deallocate(tmpJ, tmpJ_gpu) - deallocate(tmpA, tmpA_gpu) - deallocate(tmpB, tmpB_gpu) - deallocate(tmpC, tmpC_gpu) - deallocate(tmpD, tmpD_gpu) - deallocate(tmpE, tmpE_gpu) - deallocate(noL_2e, noL_2e_gpu) - - return -end - - diff --git a/plugins/local/tc_int/deb_no_gpu.irp.f b/plugins/local/tc_int/deb_no_gpu.irp.f index e14404e6..de8adb97 100644 --- a/plugins/local/tc_int/deb_no_gpu.irp.f +++ b/plugins/local/tc_int/deb_no_gpu.irp.f @@ -1,13 +1,47 @@ ! --- -subroutine deb_no_gpu() +program deb_no_gpu + + implicit none + + print *, ' j2e_type = ', j2e_type + print *, ' j1e_type = ', j1e_type + print *, ' env_type = ', env_type + + my_grid_becke = .True. + PROVIDE tc_grid1_a tc_grid1_r + my_n_pt_r_grid = tc_grid1_r + my_n_pt_a_grid = tc_grid1_a + touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid + + my_extra_grid_becke = .True. + PROVIDE tc_grid2_a tc_grid2_r + my_n_pt_r_extra_grid = tc_grid2_r + my_n_pt_a_extra_grid = tc_grid2_a + touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid + + call write_int(6, my_n_pt_r_grid, 'radial external grid over') + call write_int(6, my_n_pt_a_grid, 'angular external grid over') + + call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') + call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') + + call main() + +end + +! --- + +subroutine main() use cutc_module implicit none integer :: i, j, k, l, ipoint + double precision :: time0, time1 + double precision :: tt0, tt1 double precision :: acc_thr, err_tot, nrm_tot, err_loc double precision :: noL_0e double precision :: noL_0e_gpu(1) @@ -24,15 +58,24 @@ subroutine deb_no_gpu() PROVIDE mos_l_in_r_array_transp mos_r_in_r_array_transp + call wall_time(time0) + print*, ' start deb_no_gpu' + + + allocate(int2_grad1_u12_ao(ao_num,ao_num,n_points_final_grid,3)) print*, ' Reading int2_grad1_u12_ao from ', trim(ezfio_filename) // '/work/int2_grad1_u12_ao' + call wall_time(tt0) open(unit=11, form="unformatted", file=trim(ezfio_filename)//'/work/int2_grad1_u12_ao', action="read") read(11) int2_grad1_u12_ao close(11) + call wall_time(tt1) + write(*,"(A,2X,F15.7)") ' wall time for reading (sec) = ', (tt1 - tt0) allocate(tmp(mo_num,mo_num,n_points_final_grid,3)) allocate(int2_grad1_u12_bimo_t(n_points_final_grid,3,mo_num,mo_num)) + call wall_time(tt0) !$OMP PARALLEL & !$OMP DEFAULT (NONE) & !$OMP PRIVATE (ipoint) & @@ -64,6 +107,8 @@ subroutine deb_no_gpu() enddo !$OMP END DO !$OMP END PARALLEL + call wall_time(tt1) + write(*,"(A,2X,F15.7)") ' wall time for 3e-tensor (sec) = ', (tt1 - tt0) deallocate(tmp) @@ -161,6 +206,9 @@ subroutine deb_no_gpu() print *, ' absolute accuracy on noL_0e (%) =', 100.d0 * err_tot / nrm_tot + call wall_time(time1) + write(*,"(A,2X,F15.7)") ' wall time for deb_no_gpu (sec) = ', (time1 - time0) + return end diff --git a/plugins/local/tc_int/deb_tc_int_cuda.irp.f b/plugins/local/tc_int/deb_tc_int_cuda.irp.f deleted file mode 100644 index ad20d861..00000000 --- a/plugins/local/tc_int/deb_tc_int_cuda.irp.f +++ /dev/null @@ -1,55 +0,0 @@ -! --- - -program write_tc_int_cuda - - implicit none - - print *, ' j2e_type = ', j2e_type - print *, ' j1e_type = ', j1e_type - print *, ' env_type = ', env_type - - my_grid_becke = .True. - PROVIDE tc_grid1_a tc_grid1_r - my_n_pt_r_grid = tc_grid1_r - my_n_pt_a_grid = tc_grid1_a - touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid - - my_extra_grid_becke = .True. - PROVIDE tc_grid2_a tc_grid2_r - my_n_pt_r_extra_grid = tc_grid2_r - my_n_pt_a_extra_grid = tc_grid2_a - touch my_extra_grid_becke my_n_pt_r_extra_grid my_n_pt_a_extra_grid - - call write_int(6, my_n_pt_r_grid, 'radial external grid over') - call write_int(6, my_n_pt_a_grid, 'angular external grid over') - - call write_int(6, my_n_pt_r_extra_grid, 'radial internal grid over') - call write_int(6, my_n_pt_a_extra_grid, 'angular internal grid over') - - call main() - -end - -! --- - -subroutine main() - - implicit none - - !call deb_int_2e_ao_gpu() - - !call deb_no_2e_gpu_tmp() - !call deb_no_2e_gpu() - - !call deb_no_1e_gpu_tmp() - !call deb_no_1e_gpu() - - !call deb_no_0e_gpu() - - call deb_no_gpu() - - return -end - -! --- - From 674635c057464b60c339b22cc8ca3fdd5c4afa14 Mon Sep 17 00:00:00 2001 From: Abdallah Ammar Date: Tue, 27 Aug 2024 15:23:42 +0200 Subject: [PATCH 150/159] remove double counting of nuclear repulsion --- plugins/local/slater_tc/slater_tc_opt.irp.f | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/local/slater_tc/slater_tc_opt.irp.f b/plugins/local/slater_tc/slater_tc_opt.irp.f index 3c4421f8..bf954882 100644 --- a/plugins/local/slater_tc/slater_tc_opt.irp.f +++ b/plugins/local/slater_tc/slater_tc_opt.irp.f @@ -129,9 +129,9 @@ subroutine htilde_mu_mat_opt_bi_ortho(key_j, key_i, Nint, hmono, htwoe, hthree, endif - if(degree==0) then - htot += nuclear_repulsion - endif +! if(degree==0) then +! htot += nuclear_repulsion +! endif end From 65bef0b2666a12ad4192144e4b2bade5d611798d Mon Sep 17 00:00:00 2001 From: eginer Date: Tue, 27 Aug 2024 15:24:46 +0200 Subject: [PATCH 151/159] new attempt of mu(r) --- plugins/local/jastrow/EZFIO.cfg | 11 ++ plugins/local/non_h_ints_mu/NEED | 1 + plugins/local/non_h_ints_mu/deb_j_mu_of_r | Bin 0 -> 8155256 bytes .../local/non_h_ints_mu/deb_j_mu_of_r.irp.f | 97 +++++++++++ .../non_h_ints_mu/jast_deriv_mu_of_r.irp.f | 164 ++++++++++++++++++ .../non_h_ints_mu/jast_deriv_utils.irp.f | 106 +++++++++-- .../non_h_ints_mu/jast_deriv_utils_vect.irp.f | 54 +++--- plugins/local/non_h_ints_mu/tc_integ.irp.f | 4 +- plugins/local/tc_keywords/EZFIO.cfg | 2 +- src/mu_of_r/mu_of_r_mean_field.irp.f | 20 +-- src/mu_of_r/test_proj_op.irp.f | 33 +++- 11 files changed, 431 insertions(+), 61 deletions(-) create mode 100755 plugins/local/non_h_ints_mu/deb_j_mu_of_r create mode 100644 plugins/local/non_h_ints_mu/deb_j_mu_of_r.irp.f create mode 100644 plugins/local/non_h_ints_mu/jast_deriv_mu_of_r.irp.f diff --git a/plugins/local/jastrow/EZFIO.cfg b/plugins/local/jastrow/EZFIO.cfg index 8fd2d05a..4fd833cf 100644 --- a/plugins/local/jastrow/EZFIO.cfg +++ b/plugins/local/jastrow/EZFIO.cfg @@ -1,3 +1,14 @@ +[mu_of_r_tc] +type: logical +doc: If |true|, take the second formula for mu(r) +interface: ezfio,provider,ocaml +default: False + +[mu_of_r_av] +type: logical +doc: If |true|, take the second formula for mu(r) +interface: ezfio,provider,ocaml +default: False [j2e_type] type: character*(32) diff --git a/plugins/local/non_h_ints_mu/NEED b/plugins/local/non_h_ints_mu/NEED index 5ca1d543..bfc4f311 100644 --- a/plugins/local/non_h_ints_mu/NEED +++ b/plugins/local/non_h_ints_mu/NEED @@ -4,3 +4,4 @@ jastrow ao_tc_eff_map bi_ortho_mos trexio +mu_of_r diff --git a/plugins/local/non_h_ints_mu/deb_j_mu_of_r b/plugins/local/non_h_ints_mu/deb_j_mu_of_r new file mode 100755 index 0000000000000000000000000000000000000000..f972858392ecf56d0240ce5baaa7e6e0ad11a366 GIT binary patch literal 8155256 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 z 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 z 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

    BpgVq$FP%6s+mp7WywD0DB@YfM1b<-^5!c760J| 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≈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

    O|9b>Le=TPGuf!K={7**GCQc>%ujTQd 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%0D?+FI`SOCw5@4ye#ULJ!m zkimK>gDn$)+Uo$&nGX|xe6_{q!?u$M@$<8T7c|cpPhV|7pKU-dG@$1j(0d!uEe7;0 zJrdhDJJEW`ar1Bw{@uwv=bGHXyE-cy4=po`#q%(Wl$D?S+sv|mXG*K@Ne96&=wKRWJdP#-%j&%`${gaO@o;7ZE60W z&E-E^PuuSExhK9`D zl{|*5z=XYJLypxM8ghRmc?>y#346hGgm*^20GhLzeGM9z(9jTB79|5sVFaWk>QDG8(IlmJM+pHLQ_GwkMAv zv|ec0kjIZ08Y2IaJcc;2aA?_(PY)X!a^AM&F=PT(2rU~@d&tm`Lp8}`$iJ`@XxWfV zV?$PNO&&wmU=7f+AvYg1tdX~WN*+T@x`sUShoK?2Z%H0Q&cv#veYy7Y{~b$eU}D#}KQoA(4ooA(N_;#}KDYuSU){HstzmlgE$==js`9 z>u-iN(&L-tF{Ir&dWOuXH8iB|>*O&c=WIPgDpf;6)_#>dh8*dvXUK_P4GsD5%j7ZS z0$oGw#)dq(DtQdK=}f&E`Rh)@8o9M9c?|KLp=ZcjI}8o!Q<*%5yk^xiWaD;2L)ug% zk0D=m(lexku^~ULNFGBvcGNRO{>89H7A#L5LmVCS44Jac(2%E>C66KFGV~1j>}Nwm zMwTa!A#aF!hU~5}G~~)~@))wTy`CXi#)fn#OCCdZ3wnm!zSXcs)Y9ZJlsq8*04q{oRd6;d}Goxje^&AsGUTwHA^W~GG-Ti#$z#a)LwbhvG&aQgdh!^e z9Mm)9u2qILvg@_vF=Xx^dWO7MWoXFqSChw(tq1fBSzT#p$SbcTk0I@K4M{aN7>b|41G~_U_g*Wau)(8hQNrcF)S&g0{!#+2xk;19TW5~X(dWJmpnV}&gijv2WOkG2kE-*CYv?8WU-B4o z-Vb^;GUsDMLvHgXk0C?X=^3(pPGUpk(5St)JMJo2E}p0T!%Fer;~a%vB>qF6@$@{* zRuj>8U|ODt-W}_Y7U>7XF30$rqW)bOvQl_N4!Vvk4b#Ugl}dHbz%9{0*n5WB+Px(j zG$Ezn+AUF{xSU&}Ggd9H&+Q4lmSqa#+musxnKF>qpPps%&L3^Zjy z7;v8)OzqwiU$2xE*OBb791JiqWdC$VdoJ|LtEq@U4P^-iC=0&t{LdJ1_h2TfNR7yH za3*tw0(*%|S+m%bYcef`@+|0Q=%@rXgA|-ef8|h!`GNt;E-T-VA)9j{FsPM=$JGPa z;@M4-7Q+d6)bdoSuOhLB0SPk=)0w>@k!j2HCgzzR#tqoWaYTykjd<8(>JURdF>EYc(L_D)1o5O z>kFN>C@F@FhbA3yf zM)98^Lrf9K0)0{@%>UBQT-qbhj2?d6M0iXBx;#rP;TD8(N0EOo%a+-Sd@m8j# zq>3k0T3rWD1=42DfP7^i?3hfsl-Yeqh7!o2vMK|e0UeMheg?6vsb>TMpkOvN+pz}{Mg4tVahR&vQNFERjNtXfM6(Qz}+NG(>zb< zlc!8dQwKw9ge|EhD=R!o4GjJj{IU|FG`I3A)a;L6q-JwXDxAtrk8&6vxpgW(t4DT0 z)W{98QX-Qy|MCv9vH=$5@>9GGD_{f3kJ+#d-_TWGN=abDw@=4x7)R3TKWy7MPq{ly zo$@z0PdNhpbzSgMEW4{n4%z16p%w%Dc?H~v zyf3MLK1M32Ze@GCk7Q-JQ^6O4w>p(tIha37{XRlY3fIS(;+mxu*)-se2Q^z=vtnAJ zi1*Z&xd?;+d}p~E#W%`Wc(RPLdKq&yE!EqQ9T`7IdSk|_lQTY3pD`ToBK0f?Ak(Go zpQoGfZT&^{O$7fg2L7onw8_sWra<2cRC6jcQg)T^&^1eX0-5p$B5y>+{(9Z zWu03&2 zo}y!!-oDd24Z*_*kC~pjPaiSFEJw@boGRaD%HXd#;mJ`a2w+K1EjpU%Z8bf;6{Zn>+i|)_SgSTAe;*~FTM@3)NGJv)cdEP z_FnYlqZ^*dU)&#Jw1ThD12!EPYfzIlC(w%Mv(oB&Iou6j44YzF?pOc#qMb>7nEU_b z!9Lm1?C-Kyxw6CRk{e8>V5`W@F#+llDB;Q3JMk3m^rVN>HL;`%-AV;Ck(COyJq&iBpG4)pg>q3b z>Z?FkAnHrc4o7+u;qTY76gQ`swiwjyF-Kf^`TXiN?H zss4viNq5T10k?8O4jh_1PWB%+d%M$j$Jf-Nj|IP@=!w?ROy6+A6PZ34z0e6cy2|$} z$kYhroDCB?%e@+=mEh|F{vLAlE8l_aO%a=V9Y*X*(;3j!g)oUOrC$+;9IYa)Lyw=S z=FkKOuJ25dpj5*3==arb{a{Q*>UpL}SG5g`NN*59zv=^S$n{hYN18el5fJB3o?pV! z)&;d8gmP1NH?#-2GEDUnG&Q9*^B4Com{InZmG2$OA8w4pO0`_BW{Nk5#a^zta-}N_ z&G4^h{NyMwrO-yE3P;4ee}xXOpS+P0*AL{u;AW z*@q9s7nw|L%f&z@>K+}z)laoIWp8pSdw3|+a!p1qIhcp(*T1htUb+02Ou3AjVKll2 zA9i1KJtcCyps7aXu6yOS8=T7i^4~=IE`9m7esbGmvNDzPD$f!3X#b+i04DD(a?rO> zR{lMgN)P(N_<0LdMoD3i5nW>O5ReXC^OqDckWWl-oWG_GK3bpc-Mju3_J>wd}A)|8&zl(RPEQ{CCme-)W}U zE#KKs4i>`xMVkGE@X8|gN*PN#3{Q7mFSkXv6LX~I_TY1xn%{}V@55tJ zDJaV~7|y5WpQ#PhU$|PEB4;_3hwjGz?~6=!Di7e-1NTL|>a2sDpXxV&qT(ypd&Qw# z=y;7BlsqG>ro3$8@vFU3o3@qUAbiwy>gqTC3KfE5v{lbWQgk!9OB#4r&&I zkr?R6RSXfK>(XQ;Z!RzcxKIw|&GLjsVbS5M@`UDS;z~$dY`q`MUmF_#o}-M$7XOJ4 z#3!rpLk^Y_r~gQQUvK}hq28Vz<(HsuhFkgCfwL;~Vxtj{=)E39Zp?Mu%4RvlLjA|m zy*A|VO~F!t3kyOQ`e$VdY1Otcl8V3Y$w5(8(vT6&$D{m);fHPO+SE4hVAw_4i^aD> zl}JBW?FqW(y8Zo4z6-d)1yAx&FmIvy>Xl|wq_t*{6XV3x73ALd+Gt_CpxKdsS0?5~ zTIXJk&bC9HA=5B5{*_y^OOK3yOj_R3BfC5|B2S(Q%|#3ELBCAk&f&) zS2kA+jP7)lU4p!am(jm3A_l&14LRcCZ3D(z<*BPo80+F?Y24uWd4TxjJH#A3Q}!Qg zEf!BD;r?S51Ok3VFzH^S4O!7>9eUQP1~~!J$(4P`aX3tyLf+Fo${uye#jVg_DjY?# zhk?4sQB-<4(Co{12LrR%bz!f&Xi^`OuXWL+Y?D_)!&|?Y{71Q8&og7Rj{2;s7gJ4n zBrFf)LJP;zbHUL>MC;L&xoAS}AUo!8xyh7k@?Ox4;WAC=S?#IuI7Qdq7(3X=tH@OZ zwZ|-?(%(zKlEwpb?Y$3+yMW?+BJq22W7Bzv^uICt%b!F5ME%S?)W-aVS9E%Jrth3E79T zzf)&=%%&JWF-~MgZ~s`59JGvBbvCN3zj}v8>C#9!8^VclHB-buDRguDOE-}2VsQ=r zHuAQQNjW3NyNs!9SN0+IMGGhsSB|>9H=8CFzX29^Wq`%uXYI3;g}bxbyWqdLC@fx% z?UY)%d2--#q;OPbm}+N%B`#B-b3HZFRQn|F$7nv8iit(c>1sX{#+YGMJ($L}5GNFx z809lfzQKSDG>8nCf}iQ|!5aK@2TR8Q)Q@_RAWQ@4A=###^l__a(s8h$*}!>9vk<7ChD$}M8PL&re<13oN2FK95d}|&HKg2 z$@@yhXotU)Y%xu~sJ?D9!QoI=V9YoN8z`SW-k!P>s+rM_O0G|IUsz@YODQ(g{m>JG z9=O{hzA1_Rb78pE{FWD7K)nVWl?(UH04*;#`xdZa3qmX|!m}e-oJGSqSWGG2%m(-6X zabirM*wZz`A$DM$G<2z@dd^XjN(zTxDB*+D|K?P4d$R?@exu9I~KH@+Qq-u z$^onxYVccDzQVvS7UL5HCa1WxkHdfB8u2N-ZekLbPBOcLq9b$@7TT+PZHtbX#i!4vxs)D=Q=Vrn!U8Z0tg(_H_r-vt`B8H$(1KEl0y1@sn!VU(s2Pe(PH^B$S%# z4yBfpKA%8>7DTo9_uLw^CXKEWmwK+j1U$8h7+)i5%p6Zv=Sb_uhqOqaCJ%B@)+`Rn za0XamI&5eYDQINs+`!}ygQ-o#(Ts*XlwNdC=Q5I!NiK|>t67a`O<4#xBB=5z+~Oz8 zsH$PP3zNNYid%7EeZK*1t7nt8)pUR6rr~+C^>tkR08I>?WQH6(O zH0)=?ENp3G%gIe!PIb-pH!&fDKG-nxC`Z*#j^j+IoXbHozc@G~!+$izo8>=h_MYJg ziVZq-l>LvVnY_!JDigQuOq-3xs0&lG{X)00KDJwkHO|jnG16g@Gr_IEq^MSVZgFrW z_V(Q5iUA(1P}cmGjs3jJdU>?t=)|7+1jqFBiLyUx_FgW2=9yr2O!rL0273htX6z~M z_pPVA{%zP~Up7IIbC!8U@w3#^9n(|K@F?L(3MM5LsjX>2gUxc@LXE9oo9=Jcp9ic( zk4Zb6(788sb}K7s|85)4fUM?U0-edm7lM{jVTjand@57!@R_E(N=~rQ^Q_eX$ z{-PnFbZlv^^5FM*+2JPZMcV&wGd;ZxTBD4q^4`cL*h5X9D0ry6jp~-S+L zEnV<{4bUd`)%&wZx)m&1`L}3Nk1ppjp4Un|pgsNZ1($E95`&gAG|o%u$uG63FTV$s zrgr7>KSaI?%bzQe0+zS&WTK7Qr$NjP7c`vk!+x;D?AJfFrhOC7z#3rp+u7zzpmE5ZyMoAGncz;?O0T2t)zCdy;7Tvz zCnhUPz#looFZt=w`=DQ%tfjw=^h(P^c%Xvd61B{XF$?pv_E?;If<6`E=C5sUQipce zx(H|NgyLgpl!qM@3C+b(0rMp~sCe`eGy&|O(BaQVv(R9=R9ezw(*06fD%96E5~7T$ zoGVzU77a3a&xS|7UPKqYauk@?gY65POZCCHC^o z6?tvc5Rc_GaM`jGY*j*zju9G6-`dDTnP;Il>aho=i}WrKPs6YCmVg{1^6rbs6+ zzkpwhseY)aHs`=AAxja`FzArc>E7RVdBJC+7Ci`9h4@Qt$-~ZRkYdZe+gqk={aZr~zvl{C@SqW_b zpd#qV5EY>UP!au65wtEuMVPdT$Y3ZT--*5W4usfiPA)$!7{*X~HvkSPdj#R}F*d0& zHy{U9(evy4EEc~_jtWU%Q`+B=HrK4UR(yd(O8tgXy-3CRmE!sc)9{(D@13IaxI_H> zgi^Q`J48!R({t4@CcW?lmfu=J*&mRget=Zksl-Bi&rL)^>)3&Df{H zVXG%NYOZ7IiJx-O?k}T*^7UxdwQIH7=s6Cxu@hZWrE3LJOkdC++6Tyk{4HCUDE&N0idfyDPVH&7kUl;AbW8|jGtO*(te~TUm1A)7=nfX3C2jKN z!TK4b|C8_tZtkF$z8hqW5b%UM=cfr-I6p^ssy_KDt%dVVo?iPst@@$|<+FM9_SevX zV*RmEy$1~Sm2QVHDlsH1>Vl1pnBNl5UW_KzMvugEJ^`OIi9dVQG+UR2JIi= z$zS-9Nqk|s`VzRY%kL0pRys1bQoXf90J(~Bo?*rhoYoXc-Dtp+ z?dhR;tnepb25p8$d!L^C(p1n`#aVbZtFK}js93rqUxj5NrGTXeo=n~m>bsy}gNC+D zudDZDyJhNK*bu0_3u~B|X6SfEiw}iIi{rwk(c(nQAQUSOt8%uj6=#;yEhYc5 zIzKiNo?n*sWxM?EX&WLioisf%)Hk_EI!tco8SbG^x&HpSi0iM9_Vk?g^!&e>_Ptiq z^EKLPdh$!NLF2kzfoHQ?b{^HO8~G|MuTV;n^dW(-19)G?FO&C7^=ukDJ0i-wXZj1* z4)xk=d%%0yVe03@&a@*woYt_zF~;@B7>7>KSB2@@Wo=p`a@P(O1BYNjk(5L7So{8( zPCqVW?Z?OT)t=VQW$mqCMr0n+Xd*rNrC&i~?OWs7teRQ-Ao5jMHls?Q{cZv=5I}+8 zUymn~_i^{&(NzT_w{aq{ddhKbL_VgT>p+ii+AU*k|k@Y$}iD$D~ zh@Mxmv|$}?p%kzXn!J;7xnn#9Op!E*61dcXTB%zjFHh#jEp95x;`lm*- z(vx4>4H{dXj%TylhD&`8`6?{iP}!Yj+c6F3%X2X4pMSydb-`yQ(>yaWUy13( zOO#?o3Z5^-^NaLs(Voxt7cNQlcEqHO=15I;3bHq034#4k9I3f0E2vj+2M1ze;5)ad zaD~a+vy4uB)G`e9#hZLxf`x0@fYt)-wVQEcF zwcnz2aBd|#d!uL`q30lxugz7eN(ZDx!xcOui7gRurpUQUX_m5x77e`Xu}u9F%tf4P z^8QuE&NApr>7Y@)`b-w>y$NEm35F8KqC`2gfLOFcqi?CCkaUfvb63(?X^oAAtV@tO zs5$qW;CA~5Vl=u8^PeKAKjH(8@c;_*D0AjQs#3B9e{s9^Jpg)oM`%gbGSW5Fdj#Hn ziU^};IF?wzUv?UGnj!m73lM&xnWT~WBxMbnuM!8zsR9ZTad}*G5?0` zCwTYW38=>46I)O&4$P0K7l;_A{C`>=?Sa3k-dE|jPjD=uiZ1Jfq9XrrL|4>n6PbpR z?`tf%tP(1!tx&wI6%XTg;0>q6wEj@PY7aevY*A1%FUYoHR2eqvY!mi1=)Z>hRynuq z^6uR5oJ1r7nkmu$LHrC9v8@ZG~dCNn24jz=Y=U zP4`4kV6t6PzjPfwUOP_uh8!I%tbr2_uSA3fX%Iy3dTDG48-cJqY-07~B`o%Bv?c6W zbSqn1!qz^A8CYB5!Dkuy6d7)_z;n9yA?;(4Ktx(Ym~tk}KIdT)M_^ zzfz#dYg8>oX(WI$?PCpneW00-H2WDB4$x<0qBpDf0DUX=5JJ{T5Y=gKB#XcQ zsNH9qx@%zvYI|Qhl=Vt!@$d1kNK^->(gBPT@Pgn!F-2K$2Y%pYp%a%60@LwZ4!%4F z4#(V8EZzy{xx}*hS$t{-ol8-^Bd5Y4URyzP*-+^Wl|bcTa-o#8w7$vJ{xe3l&Ur;QjS`Xr&@t?B{bt_orBQ zV|oonOmz56G;#$hvn$f!@$&&?W(ZKj$EXEcI&iwMVtGdmcUK2}i*!Dr!Qd$JblQW^_B>Ygf;(7z3GE=GK&81;` zv7&l`TwYl|sdNgeEJSP(oPO{RbPM$C4qcmpH(?-Nxgk^R86c&^4vvfi;=`B)J|t)0 z50giWUM2$9j21U78!fJ{ntGJ96^nm@RlyJokuw^EV0+>}knzg@K*mk~0~vJr>c6#x zx}pD81}*IWI~m^VTFUPbAHFtYv_pL8`phO(iz=Y^9KTMir57oLvYgXgCg z(fQN*5Vt+4X~uZQ#qo@f@q8c0|Qsa19GmrPdMj6|K zP4(T00U8Z!NF#kk9KAxLU(`r{JC6Pi=xA-^8kimU87+*O{Q$Jh0o}ys%jL!GO{P|D zprI_jwG8X4%rEP^OX?W;yc}1lFjR1tJpm_GoxQziR+c4=Lf?T)dPmN|+_iY4?@IrX z6W;dHAxdo{;VPramrmEPu9}ePKQhR7j=NIpZcrB1@7#gl(7SdMm%aGsuCcW76DZU9 zqW^wKAdww4k*BdpF)$3tO-0GdmpCd?zB&8@F3@(D%Se1C$;4IJu7|ZF_^q@9)%8o< zLC%Zy`flX~9upSAA<@WfWKdg}CI;}mhtxxpP=k~Non5PX3p$~oUVg9~W%#mKV$!z`2N-vu&-{>ut&^u*YDZFIMK zjdNm3urw0|sek!7G3K?3r9~FQ*CrF?v*NIeAR&1IR68?dGTMU&n zzVWPrM|78hw@6hh8YnjM#b=&}^Kly=6I+*ZnBJcV-HZ*b&%9Ps?xBjUVt~}dK_cc_ z*n~7s!Nl%IR6y-(NLJ@Qg^I)hOnl^WDY;Ni?)nWjAN(gMax3NXU%SgoDKxj@{~*b2 zPc%mEd~Oxg5{e~sz1+sd;>+-p+j)8Mmtr7`2-Lp4r*YF11O2c;%Ppx^01X>U{!*Ik zO%aQ!@56gp^dDw2?ylHl=2#U2YssEas6O&hN2cJ+SlG|lNzp8|eIH>zzg5d&AF}`U z9_k?H`w1f{*5^!19P5Q}QDk7ObX*x|B~H5o8br`*Y5kWNu)qq<;J{-z53fClKjdZQ za3n{~gM1h^&#dLmWbLhk5WP+Ai7Y;ikI!zv^`hFJD8BJNOmHT}n|Ya2Ine8S|MJ$8 z@*Fu^9S|#ezC~zLfO(XQv$(QilSF4QP=sVe$KiA`{s?W{_BuAPyWEQTwbuI~G>UYL ziNGy+niSt`rdjjW$pg_BeDQ8$h)#uf)!Q&D!$OT?7V6VM-?bLV$7(W7)LsfeQa?%x zmS}qIiA}bz4`4?aVg2st6w^YA_gHMxE%jJeuGMSIKTpwo46hMkF6_Alv)P8bH4gM% z+#X97qdijJs+3UQMH5)=5wv04jqc|b5Gi>a5XI3{mbSSE9rAw#1yZ~nnPpLbASzO{g-F!ffo1S@J5U#b zN*Ys_5{OQ=sGq|*ZmiA2EC>q+Aas+V8}(^bkm~|Jtu}B=tvG8h=s0@nL%Q>M1K$km z_8JeY^*7446;tRIYikr72;hb^0*J1W!Yaq%O1ji0i_WUi;=?TIfJ2<3iH==gMw@eY ziw)LoH`Fg|>K8f~x=BAuCUx@^O-}?4^_TL%WdpXOQP2fK|M4l_9Ym0RO$Pm{9 zvmHNQ)6Z-AJPoMXdDsu)`BHad*t6JC$RRei&7` z-US#3**OX>?-grfeq}iy1}SD- zmE+#;PV{!QIq2flZEdh=iOqhg*I&*xsafc6o6fHyK~O}Zv;(Eqi9tgR*KLkAoX0kt zhvRKf1#e#d*GJ)WEg&_M##{C9-P+y?HZ|d~LL7zTW+MgB;uym_Q_(Rkq@aN7&=l#s zJ9Y}*|77QEv;wak!xR7n?GX+uOD5S;QK1@oHYds|rM~e3I#4nR*<5 zvL>8ge*A2CBpr%P9^T#*959vhAZ%{t9EB>qT(Dk!>>l(@O^(gu_Pd(+k6)uyuYzby zZWMPyO8uGq2t^Ae_{$1LIcj&(|O_RzMpZ&Sjh4lSu%vtF7A)Vr8}Wa1T${eal6{r7WcRJai}<+TINOBHl1BZJwH5w9 zgjWB|WoQ_n%!_l`Wq70XC$%(%H`NyfOXfolw3Un?tCqcq zmV0zD9>doyh+qsMkGScLb?H{r-C}|4#9Nkvi5FToA^mzvr`ao=ARk0Wfdv=_ROwnu zr==35Z_(0wApHtTrvZr4S8D0)-6PlW8gysvUNp#H3AqWq!AA@;RRHvOEev-H65s9!dqvH&V%M^msvDV7Xy5x9}F-HG@C4oWea&rjv8JG zIOQll_AqlV@}ha(QlK@@8gHm}nZyuhV%A7y(j6LldO4ejLW8xf9yo2=~4Z4o0 z(eu%zU^kp(&^zA0t6ky4+Hr7OGZ`Vv00IFGDDWujr{b2 zUC&SHF2-&;E!AAA-UNp^%}4yyJB<-{K>Va>H{=s~EF^gp~AGuo|c4a{>D z@5Zg7U@6(8ev5?2^-yveYr*lUDcL6=5FoAf(Z(HKcv zCFl*QUurT!(w@#5QVY@c7>4*1zFpxE2Y-ue&DfLm;4W2OPI;akalOH<{OG`q3W|}`xd_Sy=Gu*zRjKP?MoafYM-0aaS0?wc_*z60OX>O*KG;H$ zz^!#O_OZSwM!S_4nsNGv7&XP@iJv`fBR;I=G9SGcyDwD}?x3{m>(d5tS`MWRtxxO2 zX%|vjUVYm6oOUic)jxe7;97p*(3G>Yzl)5*i}VpJVV9r4yORFpbB=f zIECPSlZBc_PS{-ZM4PC|+sjcjppA)6VZykg@}*Bzs_?QtUggFIEGBedA|8BgFv3Nv zlx3l-Q)u<-TxQ;Yd#v1qdO|TYp#gZw4p$)573;Ag#ET?>Z>j!+r9|doybRB%1H9>2 zjQ0?%P=wdPG~IJ5hZd!R-1K~C`Uvq)IpnBAmJwndW!XjobM}h4{+U+SFwwUwrKwYu^qBs@(MK^>!kp#U9HA^l=20Ib2QS8FLr9! z={F%$EzK!qr3y~*o`+RIa3*_hE_Vm^w*sjuPmD^wHv;@Bz#R`mw0k1yS?l>mVc(N$L_iPcp8H9TD{2 zK-zFLs5fBF+BiwM%C$iZpg*F{f|?k07JN|~t7C0C!jl1-j_?oIL4X`x5jP(u5SezHHH8}v6RKm|&BYI(QiC&D$PILupb0VmM>2Z+4`gh^ z^7+5j)hkmD(p=N1ImTL7Ys0eOo74~-Z_s5M8`p8{gn6ym6 z?cDe`X!sUMf4pelaJTF#nkA*H#U!SZR{!Wfq@S;WXCA?wQ=B*V!}E4}zDIk;)JfV# z&o^k#ooJJ?unM>MNe#T{y9%SPdLJeSP462Q)ZU27Y&?&av1h6rD_e&0cnbknk!!2J zr=>{j`+y*p6OsC4BF+P`$@@P=()%;%vcQd48EKaV`m5viqtgybKi-N}@BHE97HJ** zeoyNfvvRjAIyuYvf~bjogQ8c`CQMGzEYXx;C z(0$a{D=-_!wWQ5_=!h3%h-;hrIanfiv4^tI^SgK^fl-**c88j?k0yy$Dk(EnoD?W>xOk%Y3@}bADr=j*PJG^|JU5!$NtYb2epv1aRg52>;TOJ8e0;UgnZ?Snp~6RpgO9S zx_hig>ih5iMf=RXsCoPRc=i8J+UJfv3EF3RtbLBIZ=jSwEffh_6K#itNtB>9QfkoD zNQesEjH98J9q+p()v4ny=~d_oDJ# zH7yMe#oR&f<-vh6#*Ym8`8@x}e4YM}`8IQB{-5jl_WvoLcU&<4KP}5Upn0Aqy*@dT z7F|>cC#|>!qu0mMp%2b08bU>k2$?@{b+?kY%y4;rNfBN2Z-?VN z>@H5iEH>`;I@TTOa>EUE_dw_?H%_H+iBhmoJGs-o$~6NoT+V{~@G{tZ zTB{%`=c|u(HRH88yuio1V)RAJ(<@zcrc2~1^)@2ARwyp)uAA{H-}*{dHTu%1>Zr3Y z2VUQ+rYivWzUh3r)nAR39i5C~clX>^Xme=n49wK9rRl4VoXw{Lhcx!w26o(1p*@u@ z{v$oTTN-Z`;D*B@x^9IHr9UcYisr*big&a_+i7&#{Jtp@?#Y*f&+wHk9IoTPA{5=W zT2{0)g&AqT)iIxs9WLNC=+rkUe{?HJRcJ>Z*NIUQoJL=ZoQBe9SM<(z_ixy@rxC*)^ub!ZjqyjY zO&~mJ0(?eNuQC^op~GVQl!Mru7*I}|#3SoBi7#ooN&MLzZK96pcckLn-#cFX?A$hv z>F1{6_h0I_inqkJiVx6Maaa1h0Y24`ihD1`t8kC&>V*i7Xf`%6qQ0vmZL}Z#oH+*y z2Phld<`sv(cjBGLC_Zug>(Wew2134m=dU(A5{pf2H{;{WQSaC4n_D+y4bldApIA}P z)9}83b9=?l+lsac(4o;<$MY9(B6_XG8IU*6R2^NNuZn@3IUf24{1V_LL7 zGv59V5yxmape6GqL-Wh;jWhpWKVjsJ*}wcG`y1jxJ0U(P9vbL6@$%o&gCgF5TQ%tc zxw4WYOf0-B@ZIFwAy$hryd#lb+Q2>RyPWDL zHnT%c@<%}}^>&T>Ne%0bVR_0*?XxA+WW?!3V8i@`jY=u>VP6o3>Ge&=6U-_{%k_=?~O7{P_|7mZ>UJaLm$ z4cv{*n?J#Wk3BuJ5QxJ2X@!r!4h8qs3LZa@K2FlKe~Bx<0^cW@jE|nDPrRDXXz|^c z?@9U!~8?W!Mk1##q3H8Dry#U2;kO*;*|*rSPDPUhvFWFL1Aj-_=l zBr+g7j4x_6u^;8bjT6qz>vfRcjE>nCQ{rEm68N$Ujh^VpP%+w`CAq7WLphUfqQ!qA zrLn&Eiy4;8Cu3hP(d$3y`|vpNlko}`-u`J^#nOI|vS0&l(Tv8tVzhXPW!=;)6Fy>H z8K^-btAh`s(=D4jEGee_Vh787FyQE(@_5=FqUe?uK1y?&GZ0*JFCU57f=0wukV%+h zV~>gQi@^w*T6?r zTz&6`1QG;pP|&C-L4pQFO%OB@&@3i;7dHwj7A+`>Qm7xLxU1BHCfr@f?PV3KSo##( zwAz-owvDYqkgr`pHlWo2K8j*Bpu(e=6iUsfV{3Ieh&ja=2gRfJ-^S zBRiL^?$QWI-g*h`-qm$0RgU z8Nldy;F=zMhLK{$VW}PmlEe6NJ(7VK(Z2viC6;38dOfXK(EbI3jI|7MK6DBsR47Q~ z_UL>>re>wc^9Z4$cPGhnKaE0fOd$`EWN7rt6#7`kP>sn3va?DQhv}myBe7k>PSN1L zBl^|Oj)7uRjYua!*R!9f+&c@~B`Sy7HnKl)F?wO_K|Fs5n(DGL= zmLH>Deyj%hc`_tFKWoO1ZW%4aR_2<)W!OTgt<Tb$qZd(4-TuU!7 zgU=(_(g&Eq1{Ggu247UrIcBg?K}BY8je^d_ZaM`Oo54*ADlvmi3L0((UsKQsGuW)4 zOU>Y$3M#`DI0~vTgYPM5tQl-kP^B6CNI_TQavTNeX7E!5jW>h)6?B6c{8~XbnZY&% z-E0PrC}@%ybYKw`b)RYmvlVow8O&ACU1qSCf~K3ndbIf3|Kw@~A!C?xS59Z?`Acgn^8KIB`f|MzQZe=q#S|MyxGgzUJ9}7~c z5U#u8wkCye4~QA`D1;lV%;0z+R^9Ug-z4yIfhP(4oWN5Bt{3<&f!7E;LtvU*X7FBt zG0O)$OJGWt8T1PLn!s}eZW4H|z?%fF5jZ5UU*Puyt`m5tz>5TaQ{cq{Q&!F3Qv!b~ z@KS-J0xuKzBZ2D$ZV~u7f!X;XzXG=j{Jg+l3)~>^et};Um|J!r#RBIFyhh+`fkOgQ z(L$C5#%Kz-N#Fv3UlW-AGf1?++@cSe7MN3dNVUM6LPM?vE)uv!;6i~v5_q)0QGv?@ z{#4)*0`C{NMBuLlroRtTF0d}}5rHcOc3?cP>M-IWO}4;1I09)Gc#^=q1ine&e1XRc z+)v^zDwXjfu{;wB=B5;iv^w|@GybB0+$HP9r|W)gusggE)%#;V2)u{ zonPPzfolY=6nL4yy1+{X_6Yoxz~c$mEG8Vd39y#`hXx?L%ft*Uh62#7t8kk}piY7L z0BZnRR~49n$>5u|(pWAZPvXZbjo%A0Ss~90GF2ge667u*mJt$ohQONyzE>q`5@eP_ zwhH1^$ZLYkQON6p%vDIUATxq>%RoS*(y2L7q}bRFI_#`9zRq z3i(u!dWC!@$a4zWFUWF*vtoxqa?eokO6#9Kza zz;_9}OyC&;FBO;@5iR3IfoBQaAh1{9=LMc4@N$9Y3cQJMRSi0x0Dj9@BS4*HGzzfD zGTszmv1K$1@RVh|Ccsk5XcAzVWqc$+J**-Dp0kYi1XykvI|X>&GQJj|!7}y>@SKZ$C#jC=v!thD~n3s9x?Y_9yQ zE|QqN3&ed8(+MKQ9(7<iMuF-8H3;Mf zv|OMXK=p)VwHe4#K`4em77If81X3pm1s6z-Ae3kza|EHN1DPcV`v8y`g0OP{nJNf- z4UkEKusZ=6F9`b?5M2;3*uEsoglLmQX|N{3YjCw z428@RS)-6#K^hg}5adOLa5TozI)!jRw*t>Agkw4Sk3wh;Sb^shLQB93 z)GLI>gcVq(5ZVz|V5vfAidccC6w)ZjVudsavPdDz1*ua=y&!&tEES|iA&Ui>tB^WD z<|w2_5U)b!2r^3{vjn+UAu|M-p^&M9+@+97f=pG&ctIv9L>J^Hg;WSKULj?Icob41 zh^~-gK`IqeC`g4u3IrLgkbFVP6p|~*2!%KVDNzU~8&+VLLO2aUmr)4kF_zrkfY#;= z2L~rq45vs|V1Pn6d9nfp3gPU_3iMM5=V(?SUm=Zx^ioKJAh`-zE=aaQ>IHEqWT_x@ zBB2C}1)*;VNSz>bIRU8=gq|oMa|EG-3dk%$=(hqgLlC;NfJ_yHUM?V$1flZ_$aq2M z69b|PLRT4(3PI>W15zdk9cw^J1fjnTNURMj>?Npvx$P{u^`|h0rOa^?kl*Dio#G_qn1LiCm^4LlTLrUE~)Q zs{Af0S}ecdru@z=nx*yi7Qx-w_ue9SKKtHP1Se?U$wlyo_Pwd75Pv;I`S_cSZTTZZ zcv46_vp8d;ru;!p_iRg@HEMI6Sx)YV zPu!=M@E<4FTd}^@21SEg)jM4nS!rF4b-ez#EXZi-6K=_`%){ybFo|;2WGx4t==*DN zRG@sFEFj^D6}1Z!MBxB3Q^e@3!`kQKx~Fm& zj4z+cc{TB=_gVxy6Tz<~gU2B_D-ry+WUw2-avdUxyq*l^+qc>ApW|tWVt4H(64#wk zUFgOu>`>B{P?C+GZ-6KYcIV>>)Ny%VuJg>i-*?GN6d2>nE47tt zJ%kR-$vc48DciE<7UPUGMMVp6){JA4IojjD0#s=p!xOEzJ4OWP)c6^$)(B8ZYlnKf zYb&=KTl4X^GH=6lbIF%1K2|cacJ0CGM{oCc{>TvRPtP2|k0pQ2cWQT6v`8|o^3~cc zH3ON|A!AQ&cu%$~ygS#Gw+;C8@P=ITt=he`lFYZm`?72I@h+Y4zO3MgmEk=(wR;>D zxbCmt?C>Yqm3doBxAMvms2pEe?Vk2Wp{JHGOM9XAWsVhC(7V5)r$hUbEatWbj$l2k z!h2=SubFUt{LAOq2e%GTW$nPprYJ05|p#m#veW3aTao|nb{z(M4pAJYM zg-C{dVJcY-?haG*oZ6qH0F`EJTMSKDX+{mcSNw^w2YZS>3xAen?9IX>#o^DhjeX9% zxAP7Jvm<#;#{Pj=7S7Tt(_Z|>@#Bxt3CwrGv6GD5PV?RHCwa!6th}uZ>0#{7&fCVY zZ17%%dkeyQ`{%vIknHfDQ}VvV)4$;l zPs`hp_p0&Lz`TueB?y&TigHx7D@-uOABPO8uzVGUn{hu%hUH2aSmghEGAvudYQVPb z2#dXmKeiOc=Aj{?=e&&lLAakmoqxi;H6G|-*&*jJyYu0k(ZFRZoWs02+i34L`vL^W zrZ)uS;!c)GNcOe?>t(d(%x^ z`QHE`Z||c_vb|5eC{pQ=_e4NfR==&>Mi-Ow5wgbt-~mzy1YFKot;OGpe5{;n{(%V7 zR^WN9g)NAzIruX^)ui+O7tP;I;_|c=TWZ6cVH*d})D~jx6-DTO=l6L7QLi8A&TY8E z9G~Pju0Tv}`5*uO@}pXSgKK<1GFX2Z!T9gMqk4H?E%1B9PT5%7SdU*u_|BLV znTAky_)boc&9ljRFG`Y>WF#rc6g?ypdfpzw#wi=6ezM)EV?SWxeh|J+ThOs8%y&Z~ zGD2H?-VbU6@4t$)v^yHdA)DA0&^vsw-1(e`7b~=ye+b07I=GNw?jT-Z3ikf) ztUiu-|HSyNPaE)4-TCSj?H}TCCT+zd?ZMmMH4eKT+!y=>ofgL7ZV%;PAFXe9ZA2QZ zz57E8v=x_v&iT?_qgUz9H?C;k7yhi9vA2hDtcSL68opcg6*APG{X(068VV2-f6f=i z7WCIL;~?(uqd&5uW-ngF8JExNiBUQ$zoO=2V<>Lxv2bVRjL^sD3 zBD`$6Ij-1kA8n1%pAPCR; zOqhkBsS@-AG^qojbMU-$4M0T95{ggIKErd@4AfRWu@pbkO-U`$6PvY_zMa#}7Z`zL zOpTgoD`#h!UqFl1?Cvpr{jv7xJ0jBuJ)9kUjCV!V?sk;n@7{Lk|Gd|yo3pcGKCpnS zz}-SfpeH!ON`epEUq7KxUf{DPfDgEZb>#%`VZt}(L!$opQ1~H*SM^7b@IzI%M(QzP z7V4T{$-kQqZwMda50hctjNLtqgAk&#ImRg=dP6g0GV{fOZLQ&u+WrAqi~R^iHNP-+ zx0!DkZ{*gt?*y(cowEY_MoKl{|w~WNVR+4z-}bAf$UP& z{I4QitOkFCa&4GiMHY)?;$*9%Og(`iBh7yj8n6BJOc};62tFpg=wKghp$8`Ux(lYU zTfD9rpCF6rk+D*|v4ucTy4>l;9a(Rv?b27<-P_6yPH>ud=gs-(CCM|q@?1fWNQJ21 z_3Zv~s0V7Eisy%o=Hlr;0mTX|rWIGX0D<6txy^rBw3zUTD53MQ;ZPUxX zEUUW3hyAjf3UGsw>-H%djlE@H2YN5Nt{-LyWi=_K`3Ae~pE$@>qK-9p+I7Hd^k81> z2UH^mVOLy>4^d^vz8)D{!qUa){fwUeR}6#+eUumvQ|B86m+?Nd2;RRmUt07A??~&s zx33uoK^G&257@(mo<%ScSc)HJ6A9dFLzqqIuiZVVqDIQSW617n8Y}^i$GtMD5QEt=bT($w|PGBVJBr0#9&lQc-T_ACtEiE(h?J+Ncn3V(K* zu{SsGEj@3uC+~Hs&Hxk~$$GlOEhoA2Lhiga^WAMQbrHCy_t;?e5;8X2HgHG?zvc%Z zAKsUn7cqAlExp1mJuoBA+s{(wsd5a~NgY>0K2rfUc=F!&Om*^Btvne z`fPMVTyz**%d~c6{OqKD12d)XT8%bI(uh92g2zX3R}QjK<%(^DKJ6%CU<%3++sRVk zDRrt0Y(&OW7x>s(OZ^i4@HXM^%^vf^SY8Fvna{AnPpGlRO3iwI?SS=-J3{e^Xf3b` zD(j*jBUijqMwKI#wO(Q;r}WCL%I)o+x9fwSki$&jy@l$cOB5V|wLGr`aSz8eOt-Lm z6diU1a!_)-ioRK3BHZSx1{PvHzQfi3polx6^KcWEB4Mr)^41d}$bdYC{4?mh*0D1& zr2L%P4?5py=@IO=Q#apOM-r9h?kck->T1ftp86})g+=~l_?mL~>fIQ3xVy}HhI|X` zn$yQ)LUojGM}6;)@rc+9E5u+17_!H^efvPZ* zAY?hQK_He8D2h)AEZ0`lk@GdX^HDY&?5a8)Plvn#KS%@R+Aaom+T)0ZJ&qV{hkSFm z6~Acpt;k@yu}WRein|j7WYOwxBUCS!cOtwwk|t%u@wXwiwSukjA=6nR4OZ>7Cq8tyzrpmuQ#J@rj9{+HP|5*K9uNnxDOhmTtG(*>If(w?+3uU>A*p7 zY5OOHmmT9@9rD!H)n3Zn+PY~A7xyR4kq7zW#n zhuzW#yEkIU>i&Rg1OF!wQ z3Z_r=#uqyG#%aA1z45L z^EaJ4$a`Xssxgj?8pgfkRt;5>(L$BPy8-P2TB2TD=4Lz;bRxsLkaUB+s}J?2+T|tu z=zh40oC*qxJ7A#-w)xCEFoz;PkM+2WLDu6+WM$}bnP0kKueo8MmhQ4IX67I^s7Z}z z>?xi>Tf@f&4t{ACXyb0ygfZ$4e>}pIx80K$)yWpkmTtZX!Mp>!U2$i-A!$d2U_ zkB{p>*ii`H2mCmhQE4^};a$<1|3P3x;4;<%GbKs}V7<}N*51yNxCe!?n4|3KP{Nwt z5dNeuy`mec%!n)eIgU+j4CAEBhp<_Z<}BE0JgEb76Lum6fHPSq{M340*oBkZ#)rLJ z;SYPb^IkRgZ=inqkR>{OPTUyl@jK*&^bj#!Q5`DG*OE)X*lQYtTe;n*Z`HZXLWG&Ppb3y z96C(ulk_~i2C)Inw4?pe1CMGPu|%ZNT6r7X;g7mk=e>!%bKK7Ns`K#Q5l`MHe3znV z_8H;NdMYEkNVW3kV5dH4gP!*#uVn^XJmzmzBmRVqC@N2s=PD#@k5r-Ar2SAaGvpQNb%@!#jN!u2A_7PeLm0j%v`m2P> z+XOOLG^tdkfXcs?ulOTEjIK4CSXLtyt!*Bq5-T9F#hv6cjzGDZ9U5x2 z#$oL42Hm6ig*hDI2Fd4Z%Z^*P4<-nUj@$oE$ZwKPwAw%B{$KJtmDq9;J08C?G<@o} zck$ay^3#RiM+OVO$0ztbK3$w)1j$%Van9EQzaYO?ISS?35XfPZ=I1FHk)cx+tM%iu z+B?3FqjP;?C*&{bCHNb}{)hi7c}^v!lUV2SB;+{*e^bBB=C|L7zst_)iD{@Bfbg^f zDudI{n*Sk4EL7T3>R-C`xbkI-Hpa7-B5giTiC}UyhvQIS`wxoD%~)%O8Bu$T%gj)A zwHqMtxK8iTqmM#OEc~ZXctN}jTnPFYIBvC@gdDY%wcL4Dx{Eh1Jhl%MS%$~n2jC7~ z5ANd3dsupWa1vIGdUf}dVn2ZxXO3_^MG+ad_}MBxI3adnnN$&h_mlM1%=c} z(0d(u@=Aq|w8tJ!WcGc@%u~eI<=WG;E7ohnbT&w?IO;3829^Jzyh)p%ZD+nHhpAEu z@M)|dtpMH|hd2tc0_TzH^^+V?y-rg;a>N#>{-b|j3sh?V@0&6Kj8nDoix}A z6XS5N2d}gTx%jy-t*s>-6V10`PDWeG<1p_l)DKCu1yME!uNZ$fI%FX38{irQTQLJ8 z-#`@P@&6y6&nhe!D0^THpsw}+rZ{-1DO$Y(wm|NMnWPifWx9uc@JK#5AR{-|K>C0U z7_4hJ>kou%!%*{oAhj2t3;LROjBfo!^}E(N6LsTd_9=%Kk0bw>Lyx%)n-KWq*g>bf zpmh2cV~g{^2C?d^UXNFUjkKq*Mu0J@bbDGd_KC`^@u92OlL!BZSxS!)`=rCqby&gJ8Tlg^>IoSVfuedtq>&|AlI#8QAsEwH$#}!`v=RBD9 z@X->??=V@K^a!eJEty5Z$DrtEZ|+b&-dXUcj6_MqpHh*{OnU$00m-CRcQ!E-4y6zB zs|gx#Qc%nZ}R2#ymEt^6;bi@?*VP{C z(FiLt6R{yA_CFXuQVa4W+VGo=ACm`&#Da3f(V7mOQ)oPI7sJ-7$Sk&Qcltsl*Texw)h`+R0@IBro7PUwb5e!GL7 zuDQ4B;e%Q6$)OLshYt6^?z>mx<3Tmy1#W*7v^inL^~GD`m)b(8PurrKxv?k2lOtkT zmm4!Wu<3~O3i=~%;!Tz9ykWqD{TIj{gX|93ZtRflWe~}ZJFZrp#D%X=bnXvDwrdiy z9YXz5Wcv=tHjfw?ZMoXQyF}!APgI$t%65wVo7UcQQe^u9PKoc&GP``$Ce z9$TEK&qy+=V|sB@(jF^BlLq#%w(LzjW0V7dK99wyv9Q02`R|LHADAKrO=zz zkbkM;Wm^9hk6Fk1q<rI=l!7r3|Fj%2?XNffiGDwrIsLFU=iMO9tu)5WMiuRw&TJ|RTkCZ9Tl z==O9WdWHq32=E|wCLvmyB1Ap0n+Otc-1gsV8d9jZ)D%EIaOHQkYM%0P&O(0hfZWFW_yxqzK-3I zW&~SB9Tg6&d1-#B51H?hRBM+Xw_+o&LYcbs-+!{>^Lr=1&%kdIOw6CEu{Gob{rA_P zCsPfXO~YOHg?GHr|7C}UNn=|o{eRwfLi$x8vm7fkJSib`-5qq(ydkM{mw;~PKFl-P zLf~~cQZrS2PD;gZ%0PgRO9+8r2Z8KHm_LcZK9ztw1A&SJ0Z#{kG&g!Gfh#f)Xy;lN z+wP%YJ!9m&$ihdc#kVo)}8>#QJolcWb)RTgoDm_dn=RdTFd{Oc9@x z?m_mM*XxEP#IW=m(AoIi6ZQ|Tsr}AT!C5RF0VUdeYCtKe%+WG5a%xF;BZtmCWqyLd zV+0g|G?#QLfrr%)e_Z`p#>PrGQq#IiDwW&17Nbjh&F?Gi)tqQAfZzp?@`y518%noTx)7CpvxO5Fl(q%jum5}Faz5#_C zsS7!Dy!yoAED;2`RNbj4h5M9Y*b9QPWVUg}jsBPIr>%RT9HX6a>^#js2)f2Nc8=!1 z1pxeBfgj^na@maeNhWDeZ46p7ox95q_#K4YZGU`R{`L4ySN?Trzh!--{q`r@PwJkO z@(JluenW!$CX;38>(P|<^G)xXf4Y5>)cBiND<;>c=hd9^}%QcpqET>EvXIGWW(c zWyddH7kPjFB$1c=guIMnX^$%}NqxnWMmC?)@~5+r)7{Aj+Y{FXvh;%s0M`- z$V-4^R&fC4sSB)d;Eho>qzt0gT9zj>m!7_iI;%5_<7wk%nkq@H+L}ANG)@=J-q2Gx zTbSVN&FP#yo_)jTP%?40AceCdnSEyaW*7NE2J9oCdPQ0brPBGw9Vg_kn$K0hzDb$S zDY9wYNhSMpkUh@&VM5!0@ z_K~ett@CB)sJFj0pFZPwZ%8}+zu07fjlpoJ!GC*D{I^4JsVRJ1hi;>5wd34Va4CIU zPVwJ1PEGT1U5wob@Nq4jflgp8X^}F)e|smU2q}GPR=Q=o4khj=r53oK0>Bo$fS+Y( z!JVXQ_pu95fPXojZ^HyBmHI2>52^nR5htSlx7$xBAKwQVneS_X92DGE-MpQPAe=u{ z82JfeHF6EW`J7KovAE3hW0zYz4JnX)LH_H z+s7sKSCW!{$F-mCNYJ~lgI=1BPc7Q-PE4;a$zb6TZC>Y${YE@cg5fEe*iSl8eW{Ls z1x{EnP$>>!Xf_edphHHzQ4Y3@l7xQ~X1DnXimKehe~ zGn7CK7M5Ve*U2iR5ok&=NuJL@U?#sK0bd7!w24nDfd?}XDCT#`?abbD)w0$Yc1yK+ zHnE2?v2`}~*(df+z;$#Yigz(~_Q^<(ZL*FUEg*vti*#pevQBA2k;>J7PVUOp{``&v zxZG-UHH|~|S9C2+m$7zlmW;Lg6B?J7`=w~y`;!{iQGvNB_xz>m zL^qkry6x!TZrYd`P0_fkZlw-5ZvX!wNTkxPPcZ(WZ$NvB(EgYD{7jIcIxWPp#LnNbwN&`*o|E@?zaz2;v_u6~D{sL~Kw%(oOEG6R-ex?eQCK<&k%IFu9 zGT6HxgF-6BP=epPI~wh{6stk;1mjHrWFQX|Yg`Nhp_lnmYZ$}qaNy~#Va;!8c7>#7 zszPc0ztjpXM)sZMg_jQqM`Wj#B9PX^sRWE~ov{2#dt@6Ka{_vooRD4|2PM#4{%=6+ zMH1^Ge`)rAnu<-W*!S>lC(d-yNjDtJLvt*tN!b6@(maWs*YuakL6F4OnIX^@F<>ZZ;PrHwVD;zyakkn)wG11%>Bd%E!DjnX=4CFezb)zwaABXp<&Yd$&j8Y5wZBWjn-#g@osWS`qn)6O9KQA33djrkFUL1qC zkosNi-RV7>J9FN@A$?|-Co{Wsw}O``+W`NIwM+4Pd#B?pBJ0XWoNsLngg_scwETe~ z#-o#vHpnb-w1ACe&o#A$tLXy`_8&H((@e7oX>lr}bUP1aoQ{ieoMzwHe5FUE==N?S zZQ&1uLhl=dLUv-Sgk8a8svA|Rshv|Xp9so`1@IzLkAxbIEkgMsh3&W-B+!WHM6DCm z3(dJfA9YRcJdbW^=tLDbe~^v0ot(w^xH0wPL^)eGf)RCKBezFs3!4Z9d*@(}Db9f< z3Y`9}8l_VSxITQ9lkiMnwJODWS8MF*N^gkWYFw;mJoB zs>+3NxH}(E{-S0UNU4#u=|Y=SOdaIA1N=CizvvO4^5@lk13CjqC*2>LZcnBeDyb!S z_qq=Lr0K6Nqx#%d8F=!+7-@Skn>*V6yXj2v-3o?Wr5K{k=Nh`^zZC;3w(j}Za@u1* zLA~tO>#@2AE2$bjmz=j7{sy#OmxjNZ4L>4}gWX13=W&HVO?f*|{|H4H3ixaz} znp3c+yuvY93>a*PEJVEmeD^{0`-_y73?oN@R7o}Y%xX4yB?Tsp-?5~{Ep9MHCCxrg zrE(#toWMRl8HGU`&aqegk8$F0kyIZe$Yg)KV^EUDK-> ze?%Jpzu?bDCuf7XgV%BAbADq!DRL_$_jVg?Cus}*2(iI&*P$R|+Z8>&%5%iV+KT~+ z#ogo9qz7w~o_`my{xvA#cuomQ0uha}49U}a-n`a@Vr=*Z@-_48J5E5>Be^;OS@j@Z zt2$3^#5nXgKNdUJYABPkFX>3=`M#W_UxLHDfo6Oj&w2s3Q!Qb}y0HPi*FzW_{y=RR z9GQD9HFLkGb?28?wC_QxVx;nKS;b9~T4j^j6Az|!1ft9ctm_%SFeR{E0;ePCX~|G~ zo28B`Rdh4UE-DTi;xy0$we>s~eWd+BdrkdBK%ZNU^b$u$p2s6f-W!v{;1eP82wOQX zp?k=8M`AE~LC#h4ej9bJ`pe|`S{&}f`$A@pBYqP0if=YIMEBngNAgBYL9^{^U8-=w z+Bm2Ox$um)s-#?a2A_#J7HOZ59ec?572MK7b&ugXdA>E?AaXSphfr|T5+}6x$E-va&mg5e!j*>H z#xa~j3atjO9r{o;-kp_+z6W1P32y^%q7rU&XQ*S(1cd<|6!KQX7D#X@wT{2bM4<_L zV5AK10Qe`57?1Pe$sb(^C^pSqFV4cpW!VOLaNoo0jCW=@Kg zyO0&Ip5VSX+`OWUZrMeTO^{#1GpV*tj!5{Pdvw$zZNN>f$INTG*5hTIqCo$mk(FZf z)@*gw^^FDT0PPY7gLpbD;#nCY_0wTAZ^gY9ePa_4Ee6y+$+VNmA7(5L{T{>p268-{ zClF)Uh@G(aQW)_g^0E^n^wY8Fe+x3ojYa7r?aV&!cRGJ@`j(n4PV6pSl`*-iYjTk1 z_EQt-S5fx?p2u(1c5&u>KhPJrWA$zT(~*ejZvh;gJQJ5UB}e~``wTnoZ!$hDbDPb$ zvq?{!$5yANUq)r|4~wdUHkfa43#6lF^-%oP^WOI6<6X(8Wux}iEaOl&UthVEuq;Ji zxy$#v%>&ii^=&#R)$q^+C~ebWE&#)Bso>4HCaV=&*Wc2OJxB1`s6O;<^UwiY0*P>L zRDWA{zU2;ns~b-7xHb3NOvV1wIhEV_w%dAI?T+8>eGmm(cQqtccOI&?em)fn#T^`d ziLCR_9;KJR{oqa2)?>wx=;{j|uFsjDqTGmW%QK4tu4F=T&{K=^bCEsx_p~Q zyXH{*Y>CA8+QPnw)Xld&LqDi?9(I@SKzw_(^&1jHK}gzd{&)4zkFO1mzSwR3oYeL5 z53~ipLd>|}=!*o|s8Y+0XmescJ}g8C?vPs!P*-3xzzPL60py7$BnSa4Q(z;&5(PF? zJJ+eou3$ls&nT(0+g!&2%s$6swk3G4;Y^p!)rcN$%W^vx%wQpnNIou{&8O#L;;T-F zG&b)vD5RxfO|16}-Q%_vsCqs|s(ADBQ*7VGZO6HGgzntnHlJp#+|F0sU<{)s&247@}Bh6%|TGF$_^;gNkZQMllRgWQ&Sw zNJcRXQDiiX9MzetmrHb$+g!l#_(Rps1>~d0xxwb2lz#T@3Fcj$!o2t}w{rzk!$L_* zU7AQeNDp3Zi}~ghR>$+vT;zGY2PhCI-Q{Xs;D+2*XntOC?Y5+L=n1|afD2GIedr-^ z4@KKz7(Of{N_}t8x+b^Mx+c3S5PD>?CwP5f=@zlCb*ta&?h7WgxwSv{#R()_l;SqR z1#VoH@-f=Gpmclu^tAbb-oAn1?($}Df800smOkqGwz<81QBL#CUT?)en6i| zk?RSm_rb}Xm~QheTyxoB)bM6Z>q@++&f&vleJdY~+I^vBaJ4u%_OLhupc1fdE;hhp z+_zk9?stcyS5`asySKHujkauUK8#8Phuz^=mL7bloBO~!?%)9U-Cix-l2(3g#mz@6 zVb@rdbvGX!j-Qh4b^R=a9z*C&Ry%@^4d*Yy@q-9llZ=RCh-gQ|F%@x4TXCv{AFZrA z6~RYU@KN2^oUONSahGrLE%BIP-PnD^Qy$igIBMe_`no&V4`te#Hs2bcX)A_T)Q!-F zpHWfrRoxk6U;9?Jz=ttTl}ba#q0_ZRzXRye)-5RGD0`@IcE8~4*NtP{X7>ut-f0}e zX_z`Buz5#msPc!rXBvk_c=L=y!`0%u3s3Ojk`ZlT8T;xbvkwJ*=@6L(5G#MW9>WGj%@Y%5iYgR@7Yp@nZ=4- zr=!olE&`4tRV8|GVl%I3Y~N;v8*c}50$Y4%f`hrFB3E|&jC9T2th)=YOttJA#}>SE)+qA}#k&3{y+_t<1q1LrH_ngw znl=Ab$cmR%?jZ*`V%&+(V;55~THPp!zQNiGhpR5TC?*r}gTuA?lu_g0NNxUu7*1ms z;REb=!QTvhe<6~3&~}hk+>wj7R8#l`(QL$%=Ox{6&Unr6$tB%NUUk(?9?=b9jZO$+ zNfyvG&f%Vttde(Jb)FGfjKQDDB~Hd(8#F`iT{GX(54`1Z;yOJ)N{LFW=#{TX4Ct3aVS@;Hv#%v~4Y*<)EY{|a z5};HI_%OW2=zylcY5q;1LZQPm!ie7!AydBc(E|FFZuw3db-RJMe%Gm{z4((DFecil8;eFj+W+RygckHRMT-mMfnEQ7`U4xn{^Fl7Dr~}*M*|=Me@q1l^`{upn zGD}n5mmocz`9MaDeLcLx@F*=x;t-lU_IReDTkh*-9&CL_hsxgZiDz&{t_N2Fnd5Wg zS*7jCtPgD0r)}4F?9~V7^HNQ-gyut~BWXYA)4r9DNt$t}%-aJ?B?VdYvS4W_t3gJ+ z*^`0~A2!;1&yEJi?$cI;*4s)xGW$wBm=n01TJEOB%W(8nhEV;U5EcEDx2df*^8`5E zYtBZN{q&I0gt__Xx8N{};PzZZBIkon3GZ~@cTykU%$MtFBBq))QM!$=oO2jdqr0c^ zhRKlT{|7KP-eNE#(J_}eV|VxK5@k7;c}pP0N|XO9SOY0EbtFkaKSvd zOawBtO69 zy7|WOSS(7s65j_`A%E+}^BmD1;SQeoDaIH#5Qnd4Bxei&*41N;xdLE(z;t7^+<@r4 z2Uh||Z-wuJV-D$0UyRA3cNV6JZfjt*^=Pj4t&rBYNAyxjrlY@2}j}Be~HW^}!|X$kpOwi(9ysAo@98=f-W2xY^&}hx{kkC*wW& z`WsMM{3{Jbau(UJ>YQ>zbH@71_ztPsiSNwnW<63xUl9CxRrUOhRBV_mtn?+q`9Zu#q^f}*g5#m1 ziyTIo!!B}xL-5TCeBAsMF!n{c*ndEqZ348USo6_K9M&hj`3Q` zOI^m%Lt5a}Y@wr?(y585FR9mIJ3Q~g)B=CwVw+Xf7$fgJ=DejI)3@9etm;k*F3t0b zS@ouS+TU=Q{9<=xbA7q#@C5H}az`R08Xv4rt9nzP*+x!zoCl)6fsBBql^A94nMxn2 zlKcFPwwVt-jLU*&?v%usNjTqk8CPa$i?~O?m|HNy;XT7+-BnN=EkTEMmv6E&(fprE z(GEm+E@OYv0uP~D?#Lz#GFaVMg^q(8@lf-5OKbMy8?@l4q`c@Xr60F|FrV1uJMBI46 zYV5cQV3pnZ*VCObH+5&~$=&e~6P{g?SC{0`CBC^7y$~z%u{Yp}yf&EKN6!g?hP_~` zxa%?ZrZV@DJILHh%l9ImUGYiz(Z_{LwgjO&PyqDc=z@s9Ksu-p^%szx{731U+c#1P z$-+O}W?#UU7}}#w)hzy7=oq!BICttfq!E!uiCuvxX;7Xe=k?)kWNyuSGg@^L>hV+b zTs+PZiOgC1DA*mD5xwZA%pfGVS=GoVnlOFIMz3jtH&FUtxzl%>mS01L3!ecqL&8%5 zH`?%cz{_p8Ld&n1q2=pywEV?&49j1-RHC}__iu=R3`3YP&TU4b=|-c{#r>&yVVPW$ z>oFT=p&GGC)Cxf#?h^bw`Z1&fLsTylu6?)JJ%%gcq*GYF=IE9l2_>U+4JXK`UV29_%7lqNoRsP|=8S$R{0f z8xV(z;XeB4KhT5_Ftde?`+I~Nhl_o1tW-567>775uoyAaIPbC;Pk`iVHb87CO3JR} zd*DCZjrL+OS7j+GSFeq*4@579_{F-hQ06Al{L4c2AZ1lI)O_I-Hu{@pJ;1^|9Dl-%v_bbz~K1#i6PdOQtr~Am~8;_aXWdS)tAf8$QxzQWXo+$5_2M1 zdcS-cyP{M2Wo#V?*s?*fp_G5f-Vh1x-@VB0{EELaO2I>Yc0yU>OAICRfErhWoK_m%FV7MUZp zgf_C~)#>KK{VXZVo>INwVhIg|+(CaI))33Sn4OeKZ%%Cv^uuHi_Fn-mP!KpG{Xgk| zcRz`ecGx_L4)`a?89YkZB(#p!o>sM=jV!W>Dp^%ap_e%v%*h2isDy)8e}Qcev(GS& zo$T#z9P8!Ft9hIZ%!>D@`7ME?6?H4gXN7^U#=K1q?>W)CptwNmblm>SjyzJdZL$kg znqP^LPYFtyex~@NxxPf-)d81zY&~D1;IInA?@;u+e{qU9dV9;75vH$VA-keTaUQlR#Wo_qWo(84dhEN}{8<>WOLu|P;YrN3N2H<*@s3DE z34d@Iv~;>ig>=H$SfmEKTi_GK#oL?<;Abj+WWG@o!Y5kang;b#uYM>?2&|Ex3Ro`{ zQ}O?J{9l3pVaQYz;{SZDFLJACMk@Y8Nw8ef!m~YmuFx2B3Cb_CqVoVCLkRqsVt}+R zZ`I2OdWVPuH|bC0+#T~EMq~ABpzm|+a?FkQz?AvRDtu*K4@pVPlJXT7@wDT}9}L6x zN0NsDJ9GSd?U9_7NX~y~k?6h`oX}Cwiku6472}h`iTPdPeJtg>l);l5gIwkTw|NBZ z(Tur<$12vXU$h`N`p0k4oJPxjpqrar?f;ENJP-S2UB;RsF)MIUJHIyCHJ|3T78TJv zr8{8g?AaZSJNF8gF}DbIeXmB2=+))kqGB(6Kl`G6;OK@&cPT>Q(Y>qML=04E5pT}H z@ZH!83Nc>Ilpmpakdogc<>l3QoW2FHt7cKrO~^9~{!~7I#5&bG|7GF26*pe9 zXP_I8+e_)vJuUTKt2uEE$6%wfk^AR0obiO4j`LvB3t*A zl=iHY_Jo%uqzCza8-8-mVq$J=No&~48l-!$Ve8NDXxPQqv0>l8N;Ry^R+aZ7#lM>c09ay#IeKU{K_cHntLPWQADpY=3a)jIPH4tuFHy}uT7)_L^0M~ z{+jnrPT3zqbvv5n`fGy&F2lm(i0Chn_*%2_vf>CIqI1Lxn0TB@Y`4rg(T7Pf5@uFo zBmUARBxK@oroWWErZhx_Br1jTF)2TMH`5}vJ#U+V|7yrhX`xI5?@)*eV-9u8iGcLWb_-x}d6{nR zhiAg~LHt76NyV)->?YY>Y@h!NQ($Wp4qXYPReqtH-EDo*$zdt}O4*BW(~YeQW&IP= z&U$du*N2zUqhy0NR}6Q=&$O{qYUT`gczdHCO*hu7nMW`9L6dFnGQV~Oac!w_aG17m z80cX6r|n!i2NNfFJ=UxOczZl3ZiTnRRkMz7Q#gI++AG-F3O&a-SO{P5Als0z7v>b=KeL)M#i43m8r-xm}5ji~tX`KpRwStRDhJDRcLj$NVBm z=C|b_?3!x2?n03`?6XLCfRK;Xp|K(h7{-5i9Yw|w@_=ryOR)V{3w%c6EAa=sS`A)- z)hQSE@frh+0vqwrLhQ$qXv`uqG&u5c`RV;MeqNr6RM9K1R;yVl@{{WCOZdB}j*a%i zzKh{p;hfcFj4p!L=vEdyIIlTcXR@T5S??LjZPXlNWbhihznEcod9;PoY0l0JD^(;4 zLARDUL!d4ez&ZTZSWVo4>mq=8tY?KgmL+ODVkG#YTZTQdw3K6?F6M#1!$)vo++%~- zr}d-_VqxY*8^rPE|F%IKZ|(&a@UueiAZ^8ym1xYmC%N}mAA)wn_@**7RZfYKunbPf z7JL+a7NabLM25k)10j!jH!f>#0Lg^6Qw!iI8%At{Wye=6Fs_2!Tdo;DK{8#o1|g@T z?m@5Xrb=Z>s#pYdPoJ=ST!$}`j)Z32Du8cSxb`WS+L2|n2eY)IC?V_w_&o{nA0*6o z5)73DZu?SEJmIhjqr8K?6t(L-!PPXBT-Jgnd{0JYdCw7ww;lt?o0&g;_{2;)7iCTFuH63qL9&AgAnyoV@7Da?Zp(q^8d zihYdumu&^T4Qr4?XKqbV(4BOz<+tSzlZRiiRm_c@>@mxtLM=b283BlnZv9MY%U#%y z!5PPW_D2bO3d~QWpO`8AnB%7(k|}*}l|F^+F-}Z77h^BKrKcsC``ek4;i;oe$r>^x zTiPX=nJL-#yCl0aQ?hYgl8wrgY;c!k{W>L!wL&J8@(Hvf?%(G&dpdv#$1=&@?!HO_ z*F*f#0q7qzTF@i-&tt|sgAUq42(2Ll3N&QaTrF~yOh5F{8tO*=6#{3-V#ccgC01h>nlspMgj9{qU5ple zl3q-v&DQ+9^bct-m$bZ&O41(gnifm&7a(n-;z#i+$yR+^EMfHH_95ukyf5W*sB61e zPs)g5Zewown*ZyAl3Ru3CWn7mvd_EbR;UHuK-yRwe_+2)DeF8b`{8p*+x?@nJ8bti z$I^B`2g&)5l5m40)co%vPibD?otUCF|NDeGJRkPZA;_6LZu;zC)Z#YsHKAnH2(=#d z?keJ6bP@5SQJY!LU-VPXHUAOh*G14V;@PrZop->Nbz9J5ukr({PASm`umGcsQY_=e zVw6>CIZO_)i7W60IC&xyf$a;s;A8wKAq?~e5hY`Ri);{f0nckHSqLn!!T+6IVCiYY znz9S-0?EYas0E_Hl3ah*9@;*_&~_~&QiitIY^~xkB~|Rth(|Am*W;B5Ihe}t*K0S? zIHO@XMa`l9hduHu7>M7rNAlVAZ`vbYpy6q&qW@iwd|2i7je6unq>X)_StevzadmA* zS>Ej#6tfwN{w-Q6>37Pgv!k`5vqxmo+3rEFc?QeiP@VU2Qj{ei#%sf9rX|*2u4M`B zN6unb0O{m^OW50uXj0qWenr{a^B}{I-AL&OVkxEI5!%}k+S`8?6SJx*#z>cW#1))e zq>Szl@JQ-m7~Q9$KY3ug!w2cx?;REMlFf(Ae&ZvhG2tO`|Ie`+FupisqwZJ@~Rj8(t|G@i7fRrN0~ zMF8aZ@9>LOn-c9d-_we#>R~KODm>c7e@NyY6rl#$hfTJFrA+K1IF*87*gg0$X+I0Q ztj(uekiOcK%stM7m>pvvap=AIMmV+$OKnU^Puuj#Q!vE;0wqs3wCB!4C6b0VT($6N zOu@P^w|Hp&D%7i^9}mw%+W&#EozPYPD?@wm&;Ny?-5rq$LmNZO%9BMvTvnAjWPcrs zjT6aQpa!g{8#|9$3%b-XH_5=L)4S3BzL=y*D zI*vpS5l{n*6dP|+OR+oK`yJ)~8Q7Mg{I}ynIO*qJ1j}n;2`sNV+|tFI@Fr~qWPiu&jEdU4<2JJgE=o<+}Tdqf!e`aLm%VlQ#2Sr4b$DD7uZf#U2I9yop_2Q`N)7{Z5ET?tHD^_K)vT6HZgWZ2dz zV%RTpGjg#OJ)H`c?oj%67hZ(ceEA2;xBCMi(pvWcP_0$f=rOVHviEloqMPvHnmLmJ zMsmh6E&frlT&@Y{sh#_xaNyt!T%Ba=Yff8`sXZ0OX_FRw75!EPovv^>RD}}$1o&!M zGOq^T`a0XSJ{6@fMqzCvfR9|pBkq!EX`|6scvL6)BTD- zO7Z!MWvAl1GB-cpR#I$P(1Jp_Y95ny13S}k!R(=F+fh)Np{UHzl*$b4T$!PX$_!PN zX#i)?#m+{FZI*bP(X?gX{U`)^*d2S0$Px-+)-VX+$cK~=etm&0gi!#f2#P!=29OI3 z9#8pY-qTXl#V7=%EEt8EE^S@mgP$b(ynb>=pD(+VeSQJ6!atU0g(TDh-^aRY>|ri3 zliBL6j1I*=ft*e4YbZ@;IoT5{VJd#!N+6}J$@bkYUK38kc z9fg0Y%jf;N7C!!wR3|4isY+*AQ47=T9+kG12PdXCKXoNT276PRUoc1hkrdevLh{rsVC=PO}Fcgsh>RnX3adz z>=J7@Q4}mzg}FqRRYoX~rp&t+EPoN3+8tcfJ48}i)mAJDV=+q^^jG}nE4E>Fmx^hq zm`KPUP((HXpJ#O$S13jFgY%$>p2t^Q>AVMsjE1)Zpol>cO$BHxqVqZ{qVrM|Q5n;v zDWaR7Oe&)Fy*m`qpG&ETj-H!PMEjx_s)T(y{1)+(#U_Zo1oQtm^Cya&%Y0KezrxA3 z=%KRr+O6K+pPq?@Vq70@PHC>RE~y+faymk=u@#TS>!WghjXZrWY%RdDyW2XgeGAsZ z)?sMGj`P>`QT-o5v{v=H+519#RB4VpA3wU;|2qhdpX-vRlVjh)U?0iJMGU_~q8xy- z;h^`GNT-`Q75Ks8+nnyM;3J3P-S9ehRqzof`vdj{V$J*>ZT?vtm4d$K(W955M=$1v z)R`Z)w_8=ud#1JFndYbkgD$9d$8KKD(=-M``KXI!w5Gt@SKVlyfg&(12%yI+eJC+1)C8lsosn@a2M*Q(8bx`Nj@$EYukLLfk)3Y+a` ze!xn*jWuV5@ayot1IdB_!d<}a8_|_$Gw9#|ms(&6@y0a-d#n<18PGutBY};(?(gmG zu#7IiX1KH1>-Z0w;m&GSU`ucEm-aq0n_|V zC;<(UkI^J3d+bUGJSS{P`HlXNjb&EVyQf7wX5994uuK?38=`CPPixBF5@BGm{i*v< zQuF=mtmiHWAzy02!0*{(lI^Yq8sMV23X*kEQUC?3M|#)FzhGshtZ{4pGeHL3tusest57hAQFFur4$>TVo_dd9Av>SojFGT)C~4yN0E=H>Sj z)hxy8Kb<4N3Egp=2_I~e5BkP5r2dZ;|M%aui|<77VFZw=rzXodh!+V2$8|Rjp?o++ zI_wPik{)l_z&~p7L2sq5hS&v@Wk1<0CL7f34N}STcie*``!#tHNJ3{RyKVPb zu-m?#q3pIDK*Vl~0Dyi&<<4pXDDKQ(0d=0s2wiiSKm{_*!xHQ1IMIRa#3Jyzse+ln3Xb=1L;~wf@|I<+5^^SaT zaP7kFHejPClJn02%1(?eV71yexXk9#ka^4u@7Nn?{lWD?-Dw^ZaI6u^GTI7#A4YP* z_BS{U)c$CDd*iv_f7}h8yod-r_`~d%kHCF{nM&pIJVyjWi{nV_T}XR-D7+`fx#7Te zmw751t_Hb$l6PpV+0TgN+-no%sYD*{wA-o%>5}brMAQFiF%=&-?XO&M+dwT15>#APijDg(=OE9Zgr zIH_rsMgMT_d+p^Ly_cs%&9I{utEhn~QTK(^S3ZeKoZ85_*$%!9!LCt$$-{^JTFZ)9 zD0(5EJ4edV{biWHkjt?+a5b{kiET}Y)6e4_WnP?On9}g_sf;&2@R*-PD+b|`vvWF! zo{vzsw%%XFH@i1i794{e@OM_#g)EG=zH`frwt`g!AOi#22=A{pqZpTm4sC)1TQ~Ni z(;vdI>K@+Vx^-Kw9^TW<+=j!nJ3fpLL7q&2Yg8n`c{)xeb|lyrKLh7>cj?xp<~DuD zXL{cIX1LmXMM5#|B|?ws)0&L7yxC(=BwW;~p`#&7o?_>r-X1)X_AscnbTh-ub{|dy zhxk?4?KGE|I>7`%d^2=b(9tXHHcm#?K*LySXz%OlvzMa|h%)yVY;Mw%>Cs*PT z+Vh;-)DFg>P4FtX4t!9l>21|B4{)@F6S8HTMMvHx*r5n_=e(uSd+uhq?KXA#Xi+gz zkB+^I66346&KhwE>_jYl)_KRctp{-$`txYcP&UycqZU`2Usqd~a)Z(ML|m+xagTnC zCd92b_brZ8(Fk?KNAW=9^9;e8-SPAB2d>QbUDkEOa3hB`u?};drMj9>$GCEulDrl3 zr~36}pn|UaJ3}-^wz)Ar9J3=F!TUTqu@K@Eoa5x^1`UPxrla#EnQ}bHnWg&ZpZ&N^ zsiUs<046^$O4q=y$ZZ7u#JnVTxs71D;m=)aBb=Ay*4YTAB$c^3EW+GLFbH#Tf@^Z_ zoJ=l=f@xr}1zvv-ypH`7pTiWY*R45V@ojR571>^H_W)g z>HAMreBhm^DmwH-5T(*x9r|fhRkN>OrUMMo3(r2$eH=Ki%LdS`U$90p?D2jycn0)o zR~36^wouS9ks_b24~`gyQ={PIfvCZdvS}7yI7nUW)FDZEqSZPiDNuqX zB}%ZQNCB%HqT{b;$Rzx|X$UDz9+FY4!c*Bn4@6HF@%mwYw7C}I4R$x-H}3n7m80A) z#}nW%kJoQvZBh*Tj>%mo{|-;|7ohDr1cR3q1;+%k`Z%Jeuv^e^c($~zoaX=D0ED40 z^E7`mMof704)YYSW*kJ8p5R&r+GqJ;QOa@tUHB%F^U5EJk%A7L^+{-z4Q6V_V{-qIeUMfs9sAFde??F=e!Nb*}>#dRV`Ye1fQd+$bQ?v ziR9EX9kPq>h~zv4Sg1!zcg6dzX0Umdfk1cr=4$f*YjQclqVG}hqK90nYO(uRZ^&eO zbO?&+E{}L|v(L!wc358(rUmW;HBKekN3IRD`e zj~+q2x#nP=_J4SL6F8}gYk|9a7MNie?fzN&43czJJP1M%Vty3r?>h_scRMoU{TKFjSj z4qc@^{F$AzS3SKnh+O_#U-ug=*bv#yyj5m&7lcQTx*&XV>KZc<+0`BCx*%NcHAnq; z)CHjt#-R&ClZ)C$QQt~Ri5IPpj~Ywi0*F7|Qr{F_m6{;NGoxGwbScRp=t*7dtseDb z?O}s3U;GBPjH4D;wFAsIeCF%(`dCk7(n>K{is+}>)JIz&7n@QO{OMQI%|us+XXn(F4CF01466k!r?X@skO@i zT8dA0Xr!gMEbGe9O>=SkQ<*U?r#OsUDMyB_%*RMG6KiE;FG&z;Z1^9>_y$}^`9%PM z&>A-ItQz_%L1Hxp*a_6ohvB*!$4(548?K5a_a<`7uopw~Fll?(|K)UN*xya4v^Rd) z@4sTe*o_ii{^?0FZkn}vbru)DEH2T6znKZIAt%{pI^k=b@Mxp3gA$rz4JJiPabKD% ze=Wt`*$)5GaWxlPxZJEMKjv$UeqX}1df9fx%6H(Q&5LH^!zN4kLUW54J*wU^^G*y> zy+Ukl^^hOWzZp*(b%tV3V>7#*qj>Hkdt9sNfVF*fH&bf0O9^>njd z{dwpQm^+ZRRiKjhOVmp1mld7|o-5Y}2RD|W)hI$>83w*Qcw?qWMki=IaxG)mQ}(_4z?QjY-HC_kxz z_NTZ}05ywm%K~9Dx(WE@kI~;N!|48o-)3~>VZI*O(;YcN5_del?%gTmCvygbL$`dcdi(_w(!sdD9#R^+p{03DI4 z@Ta#b_BKwjw{TTU@ppc2x4NZxLe@3japl-k6Sr`zaj>VO@x#F+wpsNFt=~@%^gMalhrpLD4Mey z3yt0wx6hDT9A@81sF<0_f1(;VOk}5PML7{W-OMMklkhaUeM|zv|o=sS0UxaxwU`Rr${t5vc(I; zxa}T`stBXAINWEANNJ3&$ec^$WsS8XV3mdIIJ)F;?sNP*shiWe&#_b+!ML#`)`IUL zwCJt*-jlPXCCFvgwvwv=30Fx%TbYO#)fi2^Q>Xol*j}8;ae}_WXMX5Se065+;Jccz zn}#hntm&NX0{GHa?PtE%^~5gF5Ep*Jjr2sax3QBHyAsy%#;$_W1cxMveWx0GVV*_L z0WoW`XpKs{JMr;J#_p2REh^h7SWqtI1n)D-E2cbMrJE@EDDh0RL%=k?zg++8?SBb!pd@TuR2oAW57Zt))R)P8^cJ?l9HGNOu zOC(F}6oW}I-A-XQh+Jn9CN!_o9cQPzm~)qi3eY3~0fZSHN*a=1O4M={Rbi*SjDQ9e zaJ(IGIRT4RzzKH16$C8xnfttnef_*(%%9jh!khTCkJtDR_lHBUtcMVTU6rrNoA{){ zi&;B=;)4sLJHn@7^npXuRz0>vsFNduq;I87Orf)4li!HUeVy_4%|iI+`-;uz@$yNx zmdh=rAJi zCN3JZ21+~ivZ(YvAL&>=(sz2<_R96wGx~42D-9nt;pN}A!kKk1=3rG0Boc|5{ zU(Eldfl_uP8~wII`1^2>K`)6gNBQ?lo`lBK83I+e)LP9|VF&ju6DBa^X zm)d%-i={;!K6tL%6+Qv^K@)s-7B3*H-TtqAfU^bjI8l;FwcznQa|y=6iK}#WvB| zO2S;%E>o^v+8n+R{LZEv1YSHV(CMCanqId@w0`xvmqhm46R3`jE)U~8s-AhwjPB@8 z8tHdlFXF*He06)IE-l)OTWo_ov`rY5^!7&B29g}8=EqF}ue{nMR!{8bBfrgQJ~4u| z*uQ=w!1`_xmBu1=Ar$-q4Ygmr*^5h0q&&u+?8VY|17^!Q>7rGl{^V_xU+c`nN{D4k z7(>i4OBevy-bVSg{w@vAgF&ue3JjP^dO?exeDqSRN64ke*9!9vn9a$iM~gWTL~-|9 z&XF>VwL%syjA2Sm@#hB8K=bY7V{7em0y&lFGe`HVVgX`1)E5%C2b3$3V`Ls|LJ}DlbqPlgGKHae&Dt}82 z8S`m-xZ1h%y0d_K?e6R?5Fi3Yf(n-qCKc}wyM0xaWxnGzwNnN%a}Jvkz7g&Ro2k-P`fNTUL7}r8Rc6I&w)o8z(n6<@ zufb>X2=>)U#c~#OIdsU_jxTgYT&~ew^Ifi4#Ytl?jZnk8u8B?)=}GiK9P5GDWvQcn z=?H~`zwv&EK1jWelhNW9>Qas2&a6ZL7If$;%`x@pTX>s;p7S8N#r32~kJlQ0Nkt07TXEW8FcjNvZmp$sE zr#5TP2jAc|hg1`*SU#(idLWJ!>}~seBr?0px>E8f|BBD*r)fy?`Cfm^oTq2@4?Wi3 zYJ9xO@k=ZAo6+>-8<+3o#dYY=lu$QOzcwl+Pv{`Sfre!Eu2B= zAY<8HA(bNMVL4;&vJqOnN1|d=xP!|1A1Jcx`WrohtB)2<;_{nQYN$t-CRqCkP}Sx3 zW0Ep-JHO>x{cX@_EWDfz3e<#lU7J@)50l%=?deYLDoXoRS^psf9rHy3rbpVs0B#Vg zJ`a&5X#Q@fU`{nLIt-^3R>8N|IL+3r+w6c6_~bI+tFUe$fY>%XE^A!QGtjEed4^dR zKnqJrpR@$b(0V`?CDeiN9Us(gL?Exr+@0DydqYa>VD1p`<<9l;AirRvGm zlVKRP61H67$YXBiM%E?~Kc;0v#a{FM)Vmx)GN1M2G>n7ftm9--dq1`6DDTruP-?e4 zPIL7@NF?N8DPI7K6;`BPz>YkA4Yj_X>K%!R!{d*QL+G!IwdcZ_V;T&x?xL-XUB*Yr z)(b+HJL)`o?5DC);Jul;T|^G#mU;M;QH5x%Jl$((q9JxEk*QLl%jg1dgL2hQ=_4Lc zm^l`c=#8#(U1z>*A{O+trnP&#GahYZOkS z)$&RM-yRX8od}Ua^oaP}i74kwOVotHIPtc4&{Ew<4V~y}icjy9dyRV=obarHoAj`$hd5xMl zrzK_L43#$+65gyjp)e4CT&NUN2lA0Wf2^0N@5lom3xACtzCCJpKHrwH-^)AL=NgTp zAatMg8@@fz@R@^#UK9y1g(cz1sX2ZwD(W3=YF$`RA_YfV!_#7GMv%CwT@2K^lEVv? zsCE8zRG$uel7su;zm=KHs3E>_HfgM<`H?~^LX~u|FcT6NhR)`#FoX#(qs`45_Y{R41{st^pDk*Egd+SLiV!PA5VR=^O7*Aoef`pDke> z#S7JpQUO1bwOGe92=s8k7Dyb$i6H3OSa0_~wI4VNxQoY6D2|Y)BcL19hk`g4J zrQkeAB5T5DQo;|V1X&ysR8kQ76qEQJK39Z)pV5&ee`GIHcH$#B`#jP7I*3rJ7;0I+25gVD6?y3RrM?-13?2H zS11D~dHz5i)yLl_!a9k90L$Sq*uxrW+(C=6MoCvZj^sa?qz(>svsv^Z?A@gl-H68sF*q5;|s#0T&x4A=1M4);}~)Glxs#`mg0 z!3ubT)t}@HCE+XDx~6K3Bn_i>VwXy6J9AOhwoKj0@l;E3h#*cQ0;NP;C&>D?x>KwF zIXJXaa*S8CEjcKgc>f_);)PP;6Os``2pSX)zy)Y1Nu76;(27+5ql9|&(nR=lI(0d1 zbcN0oYIcVQ0`tmU)NqbX6d#EDa#h;{D{N#G%#cw~6gpWD6ISF{6z)sD^^&#^X*u9{ zU@91HFvQ4+_+*LDV2Cjk@yQyY!4SEN_=N8^7(RSeP1YMU@+k8yIuXlB<~3jTns0m6 zGc)XvYk+aJtS1n~-#Z^sd`wLQO5R$=grU_xLnK2Z+@F08%VQ{6CJgEkaRoOD-l#R_ zqJC}2{D4TVh$i*X7OG=L+m@AgJ#50|6=|1{;>^DZDfVXpzok)vcmdQr(9u?FiVWJ8 z^)X4^jD=A)Let-8K%H@v_)&JekNBjwz&>0XD#yG}9JDDTbc(<3LuCt~?iG;=X3U2C zM4)I|WZIDI^NXKVD zy09lmtnk>Usf9zpw9y^|ow2!X)?y(Y8%jFWwnLq|m`&y0zn8o6c9de{njK~O?;@S< zQ3Sn(5wQ=4%&cZ?3JcNAxEyWZ6BdeZh3%8M3ZD=HZ)~Wk46iQUrMelFLlmw|;7Tgj zCS1!TvLz}~CBdOuvc+*|E7h6__H?|_c~+>O(Rpt86ou7P-$p8RrHbW3F4aW`k~d%` z5w)FW>?|N)f|RKeiLP^CP!c+FE5B}RmmD5)P=T_!!vO$JWf;ixEyJkCc{WOnC zCGYzW?A<106{)tSVt!sk!?#m^@YWZ7T&-F(h8h`4nA9%O7Rc1%KD@;@{jE={ki|RBi05qBP&o_Yz(!8t#r?|5*Iqosom5)MzW;*2XG@|At9bZiy^7 zMkIPCf#HS6h?Iwuh8GbKdUabE9oWfjsX`9!n~N~d#ML!# zWX`~}M~glrxHP`viu(dw0XM2!FUfg8Za*K0-%*4tUou7J6c&2IH~WpR-1BZEys){p zFdI|g36CMBV9qFF3W%{QB9Ge>9;#x_BF0S&)1;I(io!G%QL0lh`t7Noc#Tcn7DW?uyWDlnt$ml-56}nVXD_|)WS8PExIdYNTQtORduHJNAKVP^;&(-A z^g-SjFXMQhF@7rQ}hah#9iX+TTS=(9)6#&I%^_r+0xf@FG00H`&nXjh!$6(XW(9SAuiFKY0`YHCL4@R0}mU}N1U(c z&VHPgpngBYhrKQig4_WWD)9k#{CuU(5--cOCWw%Q$R({ zeWNG8;C+&~z8tyNj4O@K@gWb&!nR^yz}yuyJCiSR|1_fGm+M70zo4~J^l5{ zF0e#R@qd$}I5nLyvWq6>4Ul1d)c`s87Gl-wy*(RTn7Zn)kRsj@|6jn^%Nu)4mNt>m zR^3px9>vL@yeV?j@>lU1qhFRlt)8OxHl}Ybu=)X zS-yzylrK+5V+jGUj^B_59gVvsx?J6tarB#>`d9iHP};e&#%AYv*$i+b=D;rt;SkNq zLo~vEE#Q7!Tx?h`_ZrYtF4yBrW;6RTr9C;xHsP*CzeySnYE_zlXb=5SsK!1rcI3Yt z(@Cc0S~vSuZT-Wlu=w?Tc_SRwJ!hx({5#XIgtX{KirzqvOUQy76dciectbXIVbAfz zX`7VS5IChwk6)W6g>D=|SKuXWk?cz(DE12(08AWxv~{l;2QLo2WgNVSU6!`~7gD>q zO|O1EgeBvsUC=9DJ~MKlnpqI>^Qs_^Gm!Ma7N2;fzp@cwoi zTx<*}aIZTI++u2%DK3W*2i#^7IvC-Z*&MhSB2&Z{E;zcnzI1FJBTUZQw?kdu&CTbT z^%?j5%tNvD(vakKMj}Y)DUEV2S2+gH{{=r~KCnfQJ@iQfu_uN51!C((hUjoOKj+i@ z!7zh^K12o}f3l}2P4aYs5}eTq=K(XExc{pD#BvnMTRNLV_v$iD?W_p*X27 zc6agC*UEY4>hAKl?C*g0h=yMGZJ|mi=Y6rAx zjQ{FeeB*2V`fz5VM&M8NF(QE;sIFow4dh?@hI&&{j@FSigk7B%CgpKt zw*r06kH_)kjq-+{Hh4%j`gi4-{MY!5>^ISH@@XHQb92wOST$y8vSNO_LOtxf?t-i>YxU9GPU z_$N&Y_-^s(!_i9{?pvvswuQbO>GFr~;^g^hBRNKkifEA5{55|4Gac^|`b@`mqbtbU zA}j|cTGD=}(`1nW@Z1v_>9Nm_vNk8Kd)&B6|aCjrnVnOuV);b%pKnz>#ZIm%e!92P`es0 z*loRASdm!XK+_uiPd4VWK1ux^EnNU9c)IL7NkHNnY4SCv13Lm|O>tyqD&MJtbj*36t{6 zlM_@4%P;R?CoI3b1x{G5ywJS>I(~A%6`F;^JNYJ8D2&55aiS|UvoYWw@5@ykZISGp zdJ!}WIRvw* zevRmPx)2JmaucBdClMSye~Nweb!A3kjnOr1)`>Q`=&S1xPs)FJ9COBKSwlA$l`(r2 z)i9AYzf{g>om5vQhaoM^q8{WQyizzfM;+q9Oa_e339g8a{-?0 zm1N#g>#fXuqv&~(ynsF|m)-Pj=V{2v(V;Fxbt0pDi}e~Izc!qZmW@gwEmmIi01<=U z(d#z5N`$1!zaUfQsS5Lf=?nsYOG{1qAr|&m^A=O_a+Z7yJt?$uzAAJd9~BZS|Bh6X zUs{j=ObF^UnEV6D-@3@YUqgQXLn{AqaVI2JKJVef^4~=O`8$!&k$))phsB1vSUO1k zPdBLi_n1ydtb8w#J?ejx0P=h6{2qE_@+&Mi>S}tjH(O+B{IBOhj<-u~Fa3gM%b&Hngziu@xV)1mKss+57G)rj?IKsq_`ezj^lH8}El ziPjcALCd_6^&n9ZlHwqV8l{u`mb*y=u!D3hRdN-saWLwYm^_^M}3g-mQhCHhNwi!pLLmp#|IR_ z74!DT^8pdEdbfpJ4zg$h>Zt|PS^2s4fSg?VW9y|O+5gS@K2~;P&r7Uzx{5&wM=Ja= z@!r_OlB|*|P2CM8z$7?qxWnyjZ$^7)A9+M)$67?FQr^iUh%wDY!}=g0vRa)~`P3qj zn<^6#9q)S0ZCfVI zv!w=Ur-{6?OB=h@tBq~*HWYdr?st0|uH{kt8w#Pz3cz3)v4mf52S%4RCoGKHY@va* z=2qILo~0GlD1Yo>X-|VYvcCx|h3;Tsl%3HD1-Fslpn83}YKjKCVQ>s%sm*$<=i}R~P89 z(%J@pVXi%jdc#9%8#wz`?gnobgb5iCY8s{&rp~I#rMX@(tD4}=q^TthCZUeOl3rKv zD-oJ)NoKvwri0L5{e=uZcvXnEz2yM(e9fpQu{XAU1hgpkOIL#`SMo=@qzxa9&d+3 zxHZ(f<{auYw`bT7I{hj*oBsWytcT>yD^^4!)Pq;tJvbybct(n`hHHYje1Ym`r2l4> z*qBMD4isOA4WX=T8K4F(J1u7{GXj^J4)p1CJegF5$Ci_Huysx0dyDfg(2mD4u?Q7(V>qu2n4BlUg65qn%P7O32% z)gKgxye^8lVYit12z)KX{)%q1Y&ASq) zXI~bZ+r;b07#m4$hct8~IvCODckf%t(vP5&5k*Rz5qdTCqQCNezx!`kzF3j^t8A;CN2P;21T6=7pi_h4j0o7EjD9>F%+m`3rmc6f*Yaiwjo%VII8p^hBTe4C{Lau#@ zZ2Oj{{>RVBULt*!7nAX}FjzDL2z4eAEeg;Ti>5b@x5Kpqo3X zDy37XP%76bGEKFscK=jbL_*0IaIX=toPjA9_A_<$V+ab-QmDW3Ep9ye&9_WUA9ZYS zxoV2Sr#hCaWVJ3=)*NiADr#eoOD`Xru!a8V`KG*{?0 z^;@F6kr#%jNBeB!I^OpBA<`o?TC|Q>c_wt3s%UfQ^vJ!u7I;$53URm$Bb7svwACH@ zrrL9+CT5EZ`LacYugoh(s~4?$DN3t<5?8J`HUjvwMQYIoyjAVj#QR?EANkM_8DaO_ zKgu1N(I0z3 z<&(}+T!wkKK0<3C+&vd+3&hxY!%3W2SoOG+R?NCFfWBIOSVJEMQ}4}3ZdK}sOb3|U zUS%3Gp4?u=j-@b{6(mAXGL@Rxi`+9nw&xyVk_Wym+mL5fjNnrsH4`1LbtH;hHN3$y zmmJy7)#`tU*Ezwg!8NE=i~a{elGCP_rqCeuy5y<34we&qhhDV$3sq`VOQp|FfnUjD zvzwKtPr1^4tTL%0KH!gQdu*)e5!qPPt!86o(dayw-W6|-e(mk!*M;X%GE3z>hE#SB zHNR&~g6+JTzN_+n-I|6Ut0uJ}8_=^RTNO7uCOhb=uaD!+Dz$^-w-IJIn>#K!yob*p ze?c)0MTbJ2!bN7B+0c)rz1Q6AH9t?C!CD{6bSwZ^(-FPZGz|Bem?KND2hd|@);5e~ z_0Q*8R{vMA7bs-^^@JiH*@Us}YL{)-K{jLB%6H6nw6U$)*p1rQxBL*B@UohQZ)BVe z<5~DWq(U2Hq>IcR z<_hx=fNPD9H5DT9S(mu#f^RTVezd_;6HN%)g z6V?`~$mq6hKln9Yvw}?E7svwf>0buo_ZDmGt}iwYR%r`00y!BTuv)l9|DWsb&k>3U z4aq=53HFeThwSi(exioQ&z!-8iqj}rPv3Wmt9i^YIOlsrH;<`uS@IfS4-l92&aAsl z0L%?O0Zdr6R=6z`EAv_b^d-DIfREL|XwWca1o(eZXiiyHd%FA)wGd_+wvk&PXZ zLx(V+L!iE%D(FF6gF3Y6;}RsRY+<;H!$+^jWy$64T+`|&O08W&e@>k>?ad(IWWdU$ zipm0AfU&s=2naCn1p!+9pJ_9BIM1k6NV$}-D{+Z3l651FJhXla+Ve_%PrUi1o|r9l zmMRN6=@YrHiW2)0<8AKUM@r3Pu?h(63HFAb6^Q0$Cbd#c`$%x1z#c{g0yYZ9EzK-_ z(~8}H9^`rUobTem%`M|z$2hax3_Pg2fo>}T-iiQ#dZ&11zeRoPs&|G8SNX2 zuy@$fqFTapCtCDfsbikP;5@74{N7r7C`%H8%vuS^Nj z4{j#l?|JA8VLiwPEU$t!581WQX=J{tV!kx`Qv3?#>H)jvf zYV|kafN8i}yzV}I%RSBB;&Q1|HtV^8oX@*1J?4xhjgVoO;SCuIl0BvfN78A28MX4_ zx=Lrhpa?;Y-MEKx3Et+P45E>?Y7eJ7iojy_Rb0+=VO)dVHe}ZN#IOx zxp+r-l^{*7CE@Q|k8!q>3()FC7M%yA)faz$yxhggi>Fhh5xw$8Y9-+3=eRDfL^YIO z=uu^;BCj}g`%h>lTq?vFFb}56nhVO6J3jp@q0LM;PHU-AG&$8H)*%rESu1*gDwny0 zowPXY#2QC5w53Y!YbC%Y1Xj@EEr7nt!EoC8Ghz8-1fv`2!^eoUwnRpy%sHw#2UrQ@ zll_HIluh<>P7B#f5dvSADqa|mpDgrnFHCzLlB5Bx_8|W|QWps$G27NsO)p=H#9FI?5h4=mE=bX9#BMVw*u#} z!-gQ(l<|_chmoH5!lQL}CnWE-_P_(llt;VplCPkWOt-P9lsv2)SUy||(X)F-DDZjm zluzt}g$ExdxwILxT8Av4Sy}O=>~X!Ue`GJ8lV3jliX*>tA{+tcuT*eLCcQ1ej1m~E z?w&h16D%Uk#jj;VnA6_Ki7>0YktfuCup>1f8MGt(X8n*FDtCmKJ+~)_GVR!0#La#S*N$^+FuShS828-3ttAss%vi{)~UtGsmIo+R>XcP zD_7lpP&bv!+p)=2gS4sC5kaK}ISzzZwlFNASAM3CjLAk>i=HN#P3%fkeog{Moa*K6 z4;1}1-+|iLABBJd)t}!JM(Wpu><2yBDJw*F=r`X8AlWy=2ur>|K#|ptqKj%Vd@MQ| zTasxAhO0lE*;IZRto}#9?DA`4UKSg-B?0##L`C!4o8gtvg>Q38? zKp8)Ytvnh2NBSGNTD_f1ZFS|mgwD?-_Vv>!! zdsXdMR`{8YboW-h@&K~vvS2IN-YF@W7j_=jjp}H!66;u44K1r`k`s*j-&2c*ZO7_8)Az&Un0*kUt+(A=XE@L_e@BY}kk@)o#)@EK@Wh>Q0{wc`zi z&K5(uME+>4AU{LqErw8={2f8o$r)SohlmZQeUa}bAZ%1a=B33wbj>DkOUG}%$(=CF zgQ`=JwqW%?IS%304oZ?|*2)Rfry?)j?8uANjMvKKqub{po_pU+cHu={EVSa{JY-W3 zd8ohg?|%3D@Qk+96Qa|Z=)8)C_Yl!-%#FsL_wR0);1%}5LllSFuO8?|GH%@Oam@?) zjrklj-z7#u?x#*m&TRGA*b@K9t4qSw{@B$XnXHHE)nh&3^Ki~PU0o_y?a^cX%lsqz zYvJRWv<5;m;ZFmx;g+0_Q+kCfe4-v3i9M9$;3{;dTId%hm|F)P)LVQz#qC$`Y+-ad zc7w;RY1_Oi>Ih$;$H$Jqri`>ckKgL%2&RqMXiPOx+m`TtC9xHtrs(k-P_?>FatxOS^kY3&P#MNFnpLE3tUnmt{UB(Gh8YebqSeN zlip2TMW)o1N>8~bJpS06lMr~%>34v0SROaLlxyvQew}3RLJxMJZgvSy-ch&+^%E3t zq}9qA?Q6g1qQFUrS$2xC7~?`VRIAvR8FKJu_^ax`-s|t9uvA(5 zIC@iC|5M>7?Nv=vta~V0H|BX=J>jSQy#ukLUho_C-Q0Hq zum0-S!XHi9nBK5HMTzUA&!o^n6uLN5KbG3%Ww@9-c9L`&7{;YlDC>PZP2Gf3ZYbkifm2;itn@9zSz(7R#wn#~ z74eUWdmSxP0H`h%67TBxXC~vi93UKoO{uudX^3CR_{`{=;+7bEnma#(x z#+I>{N-`T9Rh-d%=ZwuoMg&WkA_SLSESucXbH2^$_hkS$qJ9})^4?B2fIM`k z0^~=Olbpj2FE)AsA<5samubhhlZgs`JC3E&&h-aKLw}qzNIgMOVkUT@=B3nmkn>Ii zaS3W*$Fn$0lm|}%Ch)Q3M zUkH5|pH$cY@3=z&+(dhmFR_t~jed=g@Kb?_m}8e4mYvhbuCJsexGfOwFH}_#8jvzAs0d zis|{9lwo@Bdd2Y8+6*t;lus{;-+31n4dD%RW9}QSP%SM|tPXXtEURHvz|8|k4k^GJzl##3>cX& zP$khGdQ}P$rvCNYS36|b|5*e5kkOG1{J8{q*Qo|Ze+-23d@PoQyxw%}kP$ovI7IO! zISg3=SwTc+Wdl>U*%>7ZV$T~@gs@7vm8y$x1RmB@#gCrDL!8)dMg#jN;xsz@%__EQ zkZPp#iK_H$*>=gbylf@6RD0t6u=gf<;#>! zt>`H{SektUgThRx0FJYId((j-BdVIRXgI9pM~uH@Kk~CmffvhPwmq5gC7NNqrdaXQ z-L8CgnO)E1#vkhuI8;!s-2cOGc47~51j`T6u-7W%73#CZqdt!gQ=i|}sL!7#sLyj# z)o1N=J^?e{3Hw51AU08vBSg?aYGB3JwqA}10=9|bfVn|-x~^o+cjW9Ikwa5x2Iq}> zJldvmM;B8TyIYp0QL&zQQ4Sv7PBNxyhjRQ*vRF zn`X*b^Z+sAoY-|1hDWF_W2t!%W}SF4HSuw8pSc&a$R~(dWMxtML}PCuwo@-tnFrdL zuh2_Blj{@GZUO`M{YBR z^8v@aa!lDCZud2LxN2A@N1!zU)3&^9ni!HHfVHl1*aH? z25E*I%VOHZ*jQnzJl2~8s3vdb&I_!B%YfXj!W~;;mwB*q=J{M&Rpps)iOB@>ITaJ@ zTVWg=G;oHcDnn1yJ>Is?PNc9M; zAya?k-h%O3bT}@|T<9^()`XX;;gPJECgVY?|4cwPJ1vbg+|RWOx`u*m2x3!^pIymm z>||Hu;0Rtt##InGNTJ_=64Z;v4MG$4Ru+4KR6_T&WZ@gF(IfyR) zKS<_{%q_T1i>_m(;O%Gv3J&fH2uCds)jVZvS&unZe4m#1r(7NwZItV-ocbdDm<1zr;W3&d~hrR@K0n9Ws6T#_|F434$>dZ4gv5ZB>yKpqqC z&nDNlK5Wf^7^h`yXV)*6R06ehF~zaDn-{gWzhL0d7Teka>_5q`$9&&wCG6zAD}OxZM~` zD<`E#uiI*8_&nQrDysq;s@J0ZsXar*+#(Pvo*15*5B5Y#aKQdKCj2sB|0fvGR@R9X zn})hE{6@@){9?t$x3ob8=PLON5raOJ1uA~T# zx>O!X=yb1R%Pp@W;4W-DOSzjHREAvja=rer>PKl&^#(b@Nwf8A7Z;(zWpXUwDng?r zb&?7zaD|Rr|0QEWiCwa$JL5;DBxkgX0wI6sVWX$J zMrNjT`VbS=Mr5rwNMwm#=5%e(9_9r=%n4}qmka$FhhPjB;Nt0kDluR^s54M{z+#Ky zsJzLDSgnS|+5e4hS6}#$uKW@vrjdbXI!=4+$k2<5)l_S5ai#>}DXSG@+4EaU*piKq z;jvncjx7@LG!eSuK$2KD$K{Gv0aElVDLSSSN^Z&ABcTK;7(_+e`ko{_j4#|un9UdN zR86-@tFBcTt~A4VnDV|FL6%dc1ELQL=*9$v7! zJbXI@DrTJ;>T0qCT49d@3C@w>Q)E1>f*Z7`>>Tndxgl4{x!FoWL0Q;kO>S%Ta<5FG zr2ZfTS8LY5?P|CTmot>DjNu+*zPx(J6PEzk|!BEOE`sfUX=(8+Jfz{-mDDKc24X+#rUYA zly&lUe`05`N{$sR7KS_f=!rdLJj|e%zV0&*dRgXq6T7)N)R|e(mHT+B#@O4}o7mgC z);yT_xKx&ciQR+MaoN|@!XO{aNo#sj$JhN_h6OP)_ZMCJJ z^F}H9d%K3rIL({b&+{H1@s0;CSis%VY5Q4=R(Vzeo&Ro2z~ z<}>QlD_;EDC1PyRxI-v4_UoJY$nNZTqm|5j8tsovt@zZI^mwB|`Nr~8;@CU*e-r<8 z{*U1QQ2r0(KT>oSs3tbH8WbVNUL=pVeN#!8*H-SYU>T+k6~t(SKG?Pv&*`TaUIgaB zD+D;0ap_h$V8dtz>&ax_Ux>;2@K_dbYB6Yzt%$^4B0Z{&zBYRa3_{aQr3!d%tw&hE zvB#ObRFA7AX|k)nTeizn73IsqDYH-rjj)+PFFC$(-mW<2BB9nyB=2s935fcq(g?0K zn`;sB^m!EiB}+sAS_c2Qw-09v%kayYj@UPfZdO4nRM2K)?($+5;h<>?&qXs6kG}Y4 zB5^%keYD#5b@S&_h4-7kk?!GkD`ke5sF~wQ@&-|8ASmwm3|jy#4|u4D9In)fTxl<=+Sb7dvkKJBMR%zA z=Ya-3@(0KfE`~Jdm{fu8l9LDnp<2Z)dlLg(`sIBZ1>GF!r z&1)zph@Y=9x3!=~d!$)}Cfd(7M!K**wxP!Jh38#aKR$*EaboxBr5hq>3;wLhvmG_! z#LhEHxfH3Y5!q~ew~SgXdWemL|JIlN=J+fS&cztlFsDOMv7;TJ!{x~oV0V%AW5O0Q zf&j`rO2Oz=ZPixt6&STg5;lk%MgieQ&lbHO zfF8)y1E4_#s6!N5^jhFO0$W)?e=4!sxdq>PMI~InXU3+(I3uSN5D(&e9;Z70t zJPFC>;;{_ULcq`!{jW;?GtO94=-X)O5)xG}N+{$+_X_=S%CW=Xz<_b`NlP2De*&<m+4z^k@2G^(p8`*Ac(Raw1ttECB!sU;Xw=jq( zEzJGduShad6;8AN%EHzfEg1}7V?j2TJ@Qu1vthefU{g4b>xYc4f*HeYT+h0ZE?+F0 zx%y=Q2{t1+ZmZQlFJZsbJGzv$?QBx>C`r$go>EDN;8J)vZH{LZ?VP~1&fr=#k{x;u-J7N6o{#@rPUj)(*-d9VwvBl9e}#g924q)yF+#hfs8 z{n(xmY%a(gG{b@DlpG*8QWDRPQ?|ep>f<~`9-Hz;Ec#ziBgf(%-JXV-bz)Vz`RtoQ zeCnW=<9du+TAW7;;bzFP>>If4ZcPn?F-zG@q;O)pAp)WGV~9*a2a~CvFI<&)YE`;3 z*JE;@msO0ez8C|f#Tib0zGBhLrfT=3YvVVlBpVf>40tuxa}>vg%6P!S0|3r!VNT)M zG&PGTP@-ay(wO_KD>MYl+(VUEJ=)Z$x=X7?Wo!IUXMVA+X9fd%JcGKqz~~yIMR(E) zZ)BZtl8_eN#Yc%?;ho&!kjox^_2m{&zNvQdLvm<8b9pz;$tz|@yI4rJ)FsfgI+b5;&JJM8v4l8Bvpeug))V5PBYypl!cTV`;AB7$C?UZWZD-VW!)^8>Z}R%5tuHtZlYH* zAUGUgl2i5OET(qBU~59#y^-I)1bRCBvE$n7M4S`BOs0)E4+n5HZ_fo0eY<3pQ=#A5 zrmgFHJkDa|+-7V1x=)R+Gqi=z(T6Z<&x8409M@kmx<1erG%@&%rjOWbH!YZfuF(3v zyxeFrv*!cNtcq$P>5G^ED_@)DH5aL+@$a8>aWz>opA8xR%0#7c*l$}v!JxjlMBa2=m+--E8tUdGu zE*bj^H;Y5y-jIQtMTderR=c4H=%gxTS~afkGrGRe7Q7|h+H@#2!)V%PbQ16)0sa;R znow;Xc-8{^stvk+yWCVVfI#?vOB-)OR zj1;>(UbjJtB!--&K&LV>0Rehlp|Qc(U+e{zf)-Uo|46m|x@Qc-TkUEvF;O)G?R#a4 zWI0pDH$+^)efSYG&#(fx^Al>ue^QfEsJH!rHYzC!YwIrHiwzbLMiqpM)vLm2OofI+ z1E+^dYqXUuoS0z`H})IpPtFUl$nvl(^vo@_l^^pIsdn|d>6aAtco27KCqB1(m z=G^Y2^_wpTD?eeGRyJqiHSzxF1#Jmv<97PvlZL?h)Kt#}FY}A!-A`~P^`0J6LEiMs z=EmB}6b#I()&4CtD6`fDU#;51!GAKHzf3pkx4s0gt!|w+CUEPXYvV;1IGCDw4vpv+ z8bBjnHM&j@^@VpRRk-Tr&`Ify4ydW7s%=aMGSCXbr+_lq0Pr-3G#7!lC~8Hbx8nCXd@lLk zv+^j|i%z|ACRdz12-ISwIvSwOweCHV*R7@shw*}EwF^Q&=~h*-Q?$d}ohiXtLt4`~ zu;x5W-LRr6FxW)XfGRXxcAH^d!T5K^aa@$#0GuYQ3r4*s&ci(N;6w+(a*hlfk@_uYT0oK;GR;zH+ac z5$gL%GPO0yEnodDXy^gt6&Jb*!@@AC3O4trYtCxDT(#YPk<^KnCdv(y|^T zkqxILUoAhWAL^^*EB|`{DFN0WDNv|j?(cadvXeOs*4HE{nVZjP_sWTseQ#Ecg~Ja~ ztV_vm*C)NRT7FPwPd*ltSDIeLlsrNQkqYDq9lUFYkt($(hYBvU6Jm>aWH<9QP%@Wf z-bVSgHZh3<^fKvuS=(biH)t8e^UnNfY-vhxa{+etaDSNg2Snq%}UDYC9-Skcc8Nw#K zYgPP-5gv8SHjD)hZ=?KL%jr-XVDYY2VK=MF#VP-LRIcKG zNuHzXi`e=OC_A7Q{QphaA$owVg`@MpEe3z$Qx77e2KG)YupFHSPO*`ry{k4=$?HZ7 z6ADci3pU4AcJR<1p)E(*p=t*!aNb?6)%;%^Mb|+%O;Bc>@MWCMUq3SS&Wp1jJ zcyta>I1n{WMAaVqo{_Cypv-9Lt2*f&`R^aBY$*9LlTnHVES|?6U`v-#en7gs>os{V z1YHPD@;_72$g@#rIDyiA<{mGK4PKn^Gqshc893#9R{o@*(yd61zcW7G|Cbo@lJnT0 zZJ-ItkR3Hv&^u`nj7A;ab4!Qm;+T3N9tzDv6*GqDD+JAdYV`%=%&IJ?CrrKVFDjLV ztz^onEU2h_l?7V09|eV}RGj#TR&w8EA1@*+g@wH+ETF>fXgg#|MX}&#C2Y8q_!oH_ z$_hWF4rYB(E(pZ^oCG-93YTg|7upKnr-=dgt45;2j9BPVl{)m9K3O=wemYP6g~y6&4mC`mq%jW{bc`X)7$VwH3bSQ!{Gx z78Ma(_W$$YJ(4Ck_UTu{Es(L~7Co0!C#&DJj3_pdb*rZd3o8EHPQe|zYVubJ@qpQ&L!HLy0? z$Ud>wypN^eeYaVc$eu}{{-G4EG!uR=g?|mrgx^S+=TqiUG!tT!!6~C?CS*{{2CW~J zNeG?9nGVX^QFU#~+>twaT$Zn(@TXtW*N%e1ZQzodw0cabfBe7IQCKEA3Vw6P|58n1 zJfs2qHvofkb~+w41tFM;;X4C8;m^}l_+)7g{wKi5F*FsHWi=I4J%Fc0lO(6Pht)Px ziyDyGVKwHdE!>w^qnyqjLv3Lhn>?gF|59xs2a8-EXEkydEGREr0gvak7S1t~LG!({ zdnz#WO=0LUNnlS6hNYo=4Tfc_^E4RN{vwAidE-^O`~O~v0TK`;2K$oFp@N|Kg%%wt zJSR3K!gT8BGH|YHolmH}QW2E}TbJQmbsX4TE`#Q%x(w@;a)Sup#FmX!K|;HPyXZDs zm*FHS;U7?v9q~hn5OsuPH}4WyJA`E%RhMDC6e0Vx=prflIh9ayOXhrChV>Gt65cKe zACiQJ=`zF#vpLBxRqX#lmtpx+jCy4wRp~N-zEm$;twHXB9--Ets7Q;R3?zrq&-LNk z52NGjf!opX`RkGlDTIG`49x~cjicG1>QJLbl%0+oHRw0|Mn&}CGkGcwwb|N4#Q{CO zx+c=AJ@JpBLxrjO8*$Z|vtgUFd#E^E!05>A{PG^Pw))${?`SFxfbOU`z#PpT9P?m> zAwFQ-y*;!X#JGD^6F5rV#v9wDlLcQerYvA$bXAsHwW8>-D`A~v>?+|o`K+Qtv%hY) zt>}P4>nXd{JAz3qa|WR;cJe;mpMtg=vaV3kFrW=Epv(52!l?06I%h)*Vx$J@FL zC^~ei_!I2-D^%uwc4ibEx=@T@dCCGdP`V{hx@}DS(%;cLu0;2lb$gp|)Rw+iTiPy~ z3P|ykqQj>sI(&$t!-qp`!-Te?Ln2Vhc|r01S)#tMP!?&nVw#6#svy&EJ}L(~Okoh{Ng>|=BEFGhhqJQ2$2 zQa4Jn(RN7?{(xhD?8Vf1sEmSKsS`L<;eMhD(9NgiEIV@T#0ucz;D7Ssiwe zzdiN;T(&yLIQ3tjJ@t>W7EJx+NPYSI^M74+5`L_%?XgN)mM(wHSflQp_N5Us>vH@x5$+Hpzz>HS$+?5G!3n)pdYe`&1A3 z%@>hXu9uWZm$hgurOMSL27IWY` zxHWl7AZ{MB!ViY^G51 zoKx*f`9>G#q+(mhIVd-}E)A7A=Ttl``7)y1N5Bpf#60+RdkC4xVW%NnqvL@~2<4e&IAA%mc4E;6V*GQGHAO=~sj1 zSE;ar-w;Ls?pj6*=3bm)yO>Sm5SApp#_1+W)F*WYdva;;iH)=p8n|%Ayu7w@6sssP z=6ktn8z{?BTm4UHTh%s*)3#V{;Ejcs8{Joh&sK+!C=0+BQHxEkM`>S?v4}_igLGCU zf{Tq-c%wi{RvCE6P-!Vwvm~_LT@gCjDX5S1 zPhTOz-rUDVtm?6=bPy=_YygV;(qqj;-7c347Z=~h>tNVm7_J;&!*@iA zn~LKr9N#eTTBdBV+ra3z2AAt`#RQ#p3wB~OU)|K@3d3y1uC}uF!NP`U0B3Vl=a=_} zYaet^Gwqwb>n1%|FwI;th6q@HTl<(o6j`RVs7N&$<%E5>ws4fJKH~!(x-0)|)owoK zvz`Dc*2fU2YHmq;0&R;w<`AXTzl#S!5W%wf27l71VIW9{I}f9BtC4WKypqsOHlMCh zN$=5NlZwT|ACrZ2EK`%WecS}(KeE1-uGOOTQaL0s7*K?aL-?)l(erkh2%^1&XzSY$ zR}0ze@wk+k99~X3Va#T$v2%ZWqJnFOszhG`RPR@tTGRthgmC~d9djdQz{dmi5`nr$ zCodlus^WFm@C7l|C#%-aPp1d98m%=v_exrStY=HAe^ty2G1~eiDCmd~Js+w^QFT)b z5r$xixfMAWs{^wYSc_bB-RM=K!k#cUh`PVq74IvTZn%ME$ApT+K$di-*+=Xti+$q0 zuFy1jmg~F5=HsP{%o5^P$l^eEzs=(3u3n|CRIN>`%RS+fm(x*SWrj6VuIyW_PYAF( z1|Np;dN$_=zf>I~WkjYH?DvVr-cBT&yrwJ13#m#hYBZ5ir0mgCK)6~OS@+{o%tMV; zW%tA%n^%&&cCYHk=m%tB(r1k(U70PRUS3?bCGw*3g8d;`7sd=Zhcb5dW*Jmv>@F$Y z;EjzR3R$cJ#T+TLCV%z_3$tsp@slQ6)4z@)G?YD+2x6ve32@MGa+iO4BtsJwC zO!>}f)L7CcFOYin;8Km5_n|Z0&PmJ`*o2kHQU~$s*@Cf0Yf_qB5}*X0@#~Q1J#)Xoe;h(HLfacHnVI* z@9=^dtl}>B#%>&{N-^I`SzgW?Ia@Hj?4eXn;qCqO7O&kGErygPf26Uj$gYwpN z5T4mDgJJzQ1w$AiKM!3X|iLwvHLg*?|%8D<0{}Zd@ zQ>8ppRfoDI@@UVjll{EnG_#+qFihKCI&kdfTK8gYUBYN;H#&cyE&Mh4{I?bv0r&QA zq<1>&SU?bhUS1GB%g?*B6TGoWLnd@2XjM(<9Nr}_p5ZaJl$a-3V&)U{uwbJYZ+q>K z8%jd2SXbjQwiFOwMZ7A(&!u4xT91Jt6R@UAyNu0lQ?tZUptp`dPff&?n(jEEp4*)T zix&MBi5(zFXWfZ6vsjGP4w(=-TXoOR5@sS{oyumgwq&!YLmnqnT!l>C^|Ey7XnRU| zqR&7pe(owy5P6f|*ffDfm-Qe3*N%WQh;p2A2t!x3`eOe@`#WBgHGvjAmteG4(~_os zkR(=;D>qScqH1*Y!Fa54oEPqEw^@s-b!&P{reEX5QHTe1jG6ysO{C(?(rkc2WEr__ zL~7AA2-jAQaT`smjn0d-g(r|&U*)cW+W5~KT?vhMdPyGvGX>HZJ*|uYNt;#@f$bRT z(H4Aw8;wY#(-ZoH=W9bB>1Lbt7J;hDrBtJOM)fczpBECK8sCwq5N02p2f@|t+Q0wH zblv6(o|T~I#Ac`idH6DwJ5|HGTOgH4Iq&z@eb~(m<~3g7cI?F&z~UD++)?hbM9f3o zAx~bt;eJkc7@JGHX5S&!KL8_WT8GnQsDG|cT$ssf^2&jpLn1jkJqlzNUKDRT3VCo1r=rmi?OAP-VxLwvIk%GddYpuhDZ|GmCN0uoT7} zTT6w8Jz5iJ<5r&+J`KEwPO_FaJJBj(OD6`LAJ?~jBC9Gp=-63m(+~tX3t`DduElG2jEH@W=xh^Ch(wR zW#}5C`{IyKAF19!m^sQ{H?M|a>zdz|V_c~=AH#YmE3? z#?^pEsQI1=k~Z`PHwvL$uX)b|r$xC!nVct7H7S~BeYTBk;*Ow<4y!MUc#WpB#BSLo zY-f)*y8CbvkmcqxCQ_Q>?6GG&GAJGX8e1d63>GyGCnkIt@aXY*Y#-IG853vd1P_tG zG-564dwe`R@KEaKHQKtZUM!iNnS&5w)QnR}q^-NeTYW%_iqLqpAV*uc3wT))mY5sl z4R>sv*&UY4YQvLvpLxliM6%SEExdt5PBACuiYc?&0auEd@!ipBLm#X?(@nOc0tfvHC!%RybNmFU zPA!?2vJR|q2!r8~km16L{pnu>TJ%HQthV(){CjK=y^%RX(&vRv zW7S!syWbLC<5ueE*iQIz#xCo5NgWTNSXcelJ?BzgjkkH+1Y1nxTgHB)2I)b>+ul+W zJ_{QmN_r?Csv*43Oh&Gh}G*|!ui za&$Yx8?^I!+dL0O4OVa+s1Zsh%GWC27GD!bv|wAUlO;6*o)yV4i{#Ek=p6K9!zY3p zJyLyPxLiQlN8ecc;3v9ZYN)bp>Nl>!a5}aZg*kB`S2RRs515}Pd0^@lYVkHqbl(icnVxoks-r~yWXkC;dLetSC2Hq7JlmW`X>HOEb` zc9U5;L`oC?HvC7}lM#zLH~G03F6Kac>oIk~i@}d5&Yuy*;rM@Odl&eqs%!CoCJB)6 zI>8sHC_zz)S_NMvg<=LX_Dr29R#DnYwWX!j)>|*kRBfeBn2h8&j$+j-ZMD+d`j_6m zuvQGHApuMRDh+B8A5}n$a~vy(m8T^C?^^qu$xHz4ef;?7W9_xq-h1t}*F!Lx z{?SxiBJAo2GD%}YO-zpIc*O}_J!4hv&W@7!sd|!a=oFaJ7cgiIi+SWzdHhVR^6UQS zU7c{AsQ;Y1*O?R&*!D^X$(k$n0FvDZ*$+Mh>6Wpzak)16Nck2fwVA8j~ycCHD@#@eMo??Y>$d_MPfS(*1W> zr`K<4DtD`d?7Y`mPPtpjdv6W7|DZPGao>}>-p-^J(E!q& zYp4X0sN`|FJQn(CnM#7FF44++s4nH0W9)KV)F5t37&k3+J76JQu~BVbi(IwrTb~1D>Oha@*+@sj z5?YjhJo-9G5#y5};{4RyF2 zNNWLswe*lqQ;@(RQMrazjmH$Dk#s1RDb$Jts*`Os{h(moxJwbkTqJL1h{Rore2S*e zG44`CP~*Exkq_<$611~Vvi`uVs=Jgw@*E}X`+cTb&tr;K>3dAkFMU0xNTPa7QK~Q= zQ}ogEm|~JIEf40DqkWSz!?5vKaC&(=t1e@JdWyBWm z3GB`$SHw|t+0?H7QuHx>3`^2czN?fgjH{HhggZ+QvK@7mVyE%Q>8Ps|9O4(dO2L1h zxJtRgsQZYklq{s-sr#G@>y&quf?_vyezMBXg_1{6Y_H zu{cKRQxzoPoezn{e*+ZvckF|C_bML@k>&^4ecYo+2m^K4*gN1T@qCdH5)v@(QAD>_ zyv?M~wlnn$3YCw}j5GTn0NGqm)dv1onnw%%2i{Sxzz+%#FEss7!Zm6~ct^Rq0O~I( zU6Cu0y*btkbqsm$AykeQeRJ zFO>=GO--+ds2A;kUd&P3I7aCZL3Qj9dPTKU@fzDZkOgW*v*z@okB9Pu!nMB~_Zrmz3*XjO>M(^A=M9G$1&Q$mURO|)!7s{w>NBEL znFXplr&S{x4+N0nz{WpPoF-wAi^BcLIbQrsxfvSW z6|HFX85pNQKn|GD7J~p8ma0{v#;_)G59vU?{9c305hfDLeQ`&spu3Z zCT;Jc$&Hf|N4@2$(-Ndu5bQC@t%O6y4M|=n$mlgVdyu)dZ7z4}pK|u(^?_ho6L<&5 zrx(so-X5TrAr(8sF-ZkI!I1C7kh7n?YJluj=--SA;VGr<{h{LI3qL_;UYr^ElSsvD z&c3!>rP=My6(D?ktgS2k)>HKrFV$DPj=^^V_kTDjVlPFZC0el;UoGO)VvwqY zM0v56KP=Y^V`d+NqZFfxRHQyccC=4X`$-#X9t>gIa^)hP_B^(cj2rLfmS6Eq1!K^x1|za?D4mM!O))&H)9Q9-2Tgjl-y>cE;@B+V2YI zC)-ji3R52`&{f+=jb_dsFKn-2uR{lJ$VB7TnJHdLUTI*m-VNi!slY_d#mHls28<^j zIZG7{7+zXQmrm3|i9LJ}K|EAm-XL=D^0-w{?s}S+3&Oy$v9CnZPAgAxLDwiQ?aVcl znqBwNG4{b)HkN$c_t*<8pP)*#h|62FYnoBiWofD)a%H`1&>uYkIi*MjLKxBcz|pba-B z3j@Ru>BGTnrY5r*PSJUz1bpCP=%07Id-f4PlwExbRC){b8~DwVlGeRgF#Y-2Q~cE; zKEYX;+)^9EIR()Nwyf~iA8$2EKPsqBOuooU&7^;J58eSZDOXAXFry>kG>juxq^DsM ze|)B?XCLmj@+1DJjIy_cmBx>;o*0*0SCZ^5wNkH38D#EAIixZlU!nE}ab%eU(OePf zKa6LlL(AC>po7gztjBt--#3J{dTkHAp3uo#=T?9a`3JH)I7SPW%{~EUce2V^PfSk! zr6k$IYfcc7Y{!d`j-ZNAvje{axzE(z!{FA+7#D2Fvc($`JV%G-(@5|XL0+@`WtoWGk(&B+sN3ACWP$buD@^VOOw3lw>$H}uYhzP&jWq9P&!SIMUV%>=!v)~L zd4|lrX8FyoVb^l8P+$pq)Kr9cLzJA%!CaJF`Yx^c8FV5IhnnR#J5Q?l9MzbGRJycW ze%#UdG|9JIeq<3Jm`|32ggX0jcgjMjrKDt$-!HAIBwt1*t=jpzE2Ydbsa5_rmapEz zE(z|%Xj~bPq_@lEN19J-Q_{5jU(}Q&xcBRKX-57p`Ys9Xjq+U)C^g#7lxvvVLY)Sy z?#n)Xw+Iy4YqQQPwhX8RUMm&U6RA_Lt9vEN#riGyrq|1n`zvV({gx{JM5@k6ls7Ti+&L5LYCNEe#LEE?UCjX+Pzmn~Nt10gf9pE5E z*smk9zo0UiYff+2uRe~|59a?(ZqLyFp1>sM^fN;K_IJ!8?)i#ji6@BTT1 z^zM=DX?cBw2+G#CT$fH&v8(xt%r}70;nzl z28`a*k{y#}TB|~oUoVjeSJgW&XZI8O5rLtMO+BV$&c=FYmjK{SpiUFNB;JfjxZe3I zg(B%u)TMaJJg#`k+$Yf6nT#}$-FCK7Ab;mD0BXyf&iO5^2QpO2;e5F=n$cx7%3%PN za%skDylyx&mlj=POfw`j`Zm5Idwa$S-;sV?YRz1TqZb^`eFlg!7aH$l#$|$@%O2yz z3WdU2r(Te5SdA}`F^Y6q(b{Scf(7OnLB|MBtAx`kn&NXQfU4aMnu4n7$XgCmo$gI+u2-o~*~O5v^U1?UdC6=~y!Uy@#&Th$u15j}ms&vIgaL+Z%SE)8 z`C?CUCGmOAL1pHFkF>0_)}HvlM^aoMiaH;%1_{<kV5CV7B`&E*$TF+F8`TJ!Kuel~$Cc&EgQFrx3g>~R#u#Zu>V4ir&fi35pqWV^ z|6o`-HC>6Oh{Ynz@*0ev0Op6=9agh!KmUJDg;U&KhKhXG^)p)F2O{8`z*;%ROFd9iU|2f}kjPnw8 zrV*&qY(r@y>vA5y3Am)M;CE3Z^FzYq{_bTIcX|d`^S9CU<}?kW@Ut6N#k__xUqPI> zee^~r{D4B19w%=yo>Av58H~x+ylX*2yHL>pSiAPlXMzt3R}BW}qtjOVTl9ff{;pN2xu{&%N)Fn!j0hPT}}$r(XNbp5;QodIHKn=EiH6A<`~G z&2rAy+^axep8r7=SD+t+4=7A8c7_I4#m^z)=h4xLzqLu9eJ0^Zg-)W*Zv`>AQDT5~ z=h0LVt$A_;&D}V}B}7ReTCH#F6)3=PK>G8|hK6pHu}VKCBxE~}31{KgJSckFZ{X0Kq0ZF*7yn|ikAgBQB66Pw3H&$FiD`#sphNb@G+*X#6*R4A*;7#Hd z3w&$}Hy`D!_l!ga@7gFzLFQ8={lFN1Fz|bJvXxvd@G%;o+)9bCLGUUG09{38Rz`3k z%2u(5MN7XmuhHp6vRrTU(h>qC2An3MNm$q(!o*Qa<7a7Jgb!6|6?&r|tXB0o(;NzLAAQAu)jm0sYn=rM&9 zL4sdal`bZrd*%RH!igth6%seE?r34@HP`EI1-aze4e(G;I6fTqe=#$1d~)s`2zb9kwaQy7Z{Kd4rEekYR=F#yggh!EHE+yrbC0Gf zwo)CYY0UuYzC$l$$a0r6PAnke$aEWyN&jW=YWt~>ve z8vS`F1g=fS1_{yH&OFIO4~cEeB>eHUEbpw?UJqZwYD7kTk}7S?T}*7waz>w}YSYOD zqi?25@-$@0;=)4j0~69{1+-xa593;VQ|hCA+PQThHrR{(D%=lb80Cw?q1DNXaM$-C z&D>wjg8DWcUgj;Rd#vPNc@<(o&b(Gop(HZOBN1uI0M&R_o>t_(8d|Y#o9?w{r~5~U z9|uQPux!*{K(53bLhtQ$<8pS70u4>k3#4{nI^ALoRcZYx#F{x<6aCk@rSgQptba>{w2J&1kbv>f62I4LrwgV zFZ^89KPX>H_!2Z<$bNYX1xEtGRV}4w9noLXkLZujK%`wCM{4%R?~c?wYbC#?{bMJ3 zQ`$dbvMDlha#0BkGHUk3H@V|Av+jTXYM@KFc=&-_Wp;FSl^ZED8DyYkOzMNb(|y0b zn!iGK!S_7^_UA`#x==fZh-?$(p$93dLn-Tq)ZsoTo3()r2w2 z`~hfOu|g=$KCRhJNF6mF{@@l_IYtH2{jJWBqZj5Z0%fuYyywbtBzaJtT-%3VNcT@) zTxP8aIYXt~g`xygPQh|1_?G*cv`E2G`Tfv(qW`S6)^fa+dPE=@-!-e^TDOb*_x5|2z6-bR^IdZd|izQ_9G{WiPi zec}9L!)0mq=4o^6Qt!l=J5moCjEA!J{&#kovBI@_7In^>iHj-{nsb5SR7GD;-u0mG ze&IuGUX}OG5l~*v)&dl^z^AYUW-`JHi#2eatX}H0SWe~ABZ)EWIW3m6FUXQF*()%p z@Y|9)c;JED!Yf&Zc=Z#r-$V3v+DRuI)C`kqaV8Y(8Gsr^Pw9b@|wQC zuBnFP{U&)o16qbDPNZf-{Ju!d4l8*T%gYxtgR#=(Liz<+kIIHyOOI|EIsB~PxQ$Kd zmapU!Hzx7FyW_|U+YaQg5T)-6IT!>wTV)*)nbFfo1P+uLHE#HasB^ZjxSFCG6e#?e zf_!0TyZdKyXw4uA4n)wy6CB7d%@Z8R3VD*zXdkKE`C1vC*mwYbyUhwm+;UT|X&1xG^ZfIooKgslazL~=ihhVv@E<7!+=RJQO!($lu zsCPCzDJKKg0~wv%^>9hTIk)mn55a6&n&zmXLiYwvur(fZY@IWKyLU9-aM@QztW(@umVuN+fgAqMiw zIbT>|q)QSd%HNOb5l zhKK=}R8*QQmp_gMU@Yv-P|65i;@5p@Pejq;hHJ{CarevAraftq?k$%eS4DT)U3oQT zwQ2}!dQY$7$GLKP_WKJQ`R*!s`4CHa`&oB8@I}&hjA@lBMX2=*4@Uc9zjXHi?F%z% z%T6Slxy5n6z$jwg=+zJ#WlC>7NNIN%Sqlb8tbflqPcQLY@s9`}&(WyC)P!XAkE9u* zdR)IA`esa}ov7X5AS6BQ&u;IfkHEQHe%$vte7s*M@$JD# zx$hVwqb+nSgYPc^{o+T7sJXfmWZybS4h+8uB+wfV$-IT#X}`x_68ajGy1n>|dUWYS&65m=c%9_Gq;K8%;G-E7gS3PmQ^W8nS=ir##HD zeU_h81Ka|v;vV50xFnFl@y4C5Rou$#HW#LH%V zGfB*-%N$BQMW)=Nby#Zi|2N$`z;MCnsvSlzE#~iG6Fxiz_pq+81Kxgo!2J~$PDuB` z1O`|8i9WxAyvezhLGCu{0pq^5h`6VDaAo=0@|8`~Ubc;2@Z2!3J{xh5^SJUV6CW4h z#q1Ei&vk_jU2BejALv+{JkI0esQ?f%wshxi7P# z-YfY#%Et7tg+@9C@W$Y$p&dA73dty&A-p_Wnz!#@7LMQUhUYmO;l7_nJq*65t~qwl49pb-361D(#@bmgy%|{|i8P;}J;@CYr^A z(leFmy<%HaUa@Od+13RcMM%&%O{7=V8+|Y^L&J$6Y2rFAlAbI=J$n`6g6ffDBEjQ5 zf{0W@vUOi7C*N6d!(}3jD?A+f~y_T(I036 zPKkqnvncL2=cj|+7usY;$uhwuCMOMNuV<6fN~_r9bm^b_HtC-Sx9gvW}-F;jL=Vm!?8jGNN-qsan z#{ar0wY$PN$C=T@Kwv(zCN>0keLc4L$-TO6u|e?F*Phj0dsaZg zjO6p+mjOrJh~-45w91pE6F)g>v^OH7_Zl@BiSSI2QkA(^pc}Z|57CE-(DpiKXQ97i zK7ZJjJ1Y4W!JOa12_62Ix3^_Sm^MBudZE20MLbRiiSjSnC(P-ivIC$4vRmn7CqdGQ zF19$e^QOw*1ge;4so!$f;VzWBlTRB&m9=TF5(UO3?%hQ&){|4T)s=9)zCiGS{2i@$0R`X{H zdVZ0q=1=m5tkuql<&oTRROC)K2@=zp`I4@1_bO15sWvpKtyV?D ze5;~MjaAWpT}cjVRfPX0^%w1<*XWmDia@2!1Yi~}I)tecPJ}N#J$aYI?PS zL}PmOoPHj`64YsYKhMhP+LL-rKh$@MvUUO2;wgZ(ZLKm}ChHP&PT@wMx{qN}aR_Jk zHbWJ~pj?y(CBzeJWHdcapy49nwRa6DWAmWAeK1hoJ{TxOlkQ_9#eSmEq{Um#f73>) z&_Jp|I&lyKsSCLW{bU2F>)5somwPi$-k5)a3SxnQROoU>^7z9=n(Owbp}fQ9tgI|z zb9S{A{&(%iI?W$K75JlJZq*eoZs7r&x5B!SWI;qiz%R^-Ydi~ zOJJ~4;*{I7FY#ORyfhcLII*|IzfSIL@mW>}TCAa#zOkh{Kh1vX09f9ZmBU+$yq;r5 zCAY1_8aN4scj0UnNsQ@s#2lU}m3+V{NkNe5kB%uYrRps7(0ptG^2c1D*mKk(V8!Pq8>>ef5ujW*vsHf1zO5HKLJ9P$% zIce`9_)3~E%fn28(rgKzusnQUNl1RPCro8|=ov~W!fuaV>7htHF$+=-F*8;RXvOq# zY5eQObXs6;^_fY%bb2B?&>_sNm>EUpR#fLcWS>*<3xIG3;#B{gpsW$z^iP-e(*!$t?a&AW$2K zA3@Z*eX*fFpK3LVRL*H{*a}ePc)=5ck%F&=J^1N#=uO>A{2#17c zAO2P1JgOakL+tAbn=r;I%Yv5V#AHM zt%}7_#_&VvN*U)a~NT z=?_IJI85wn+vYopsrVf@e2>LuU_r-ILhoqvYf-oxVTZOql)o?zIvs?hRQkgM0j z*qWi-w-KAYLD5pZM2fV%g{|3(b*1%p)K|PxkBjM2<7~L}alHsB)!W8sMK^A)Ib=jD zHgPn;#LpgNEO+u|X9VbeAHUUVC^yFNU&e2B7i?D4*flY+b;MEKmhsj*H*=!9^jv=y z2|?H44c2PRkw?cmzvQI8OOl#WxsUQxsN;Py#9-KoI-x1UPDJo{h}~d$2>ZCa(bx;i zf|SioDl9!NU;4IBEnO;L8FQeoUc@psLG;PQXDxJ{56_*SzU)qcDzg(NUkFy*)5*J? zR!x0x#q=j^Y^;sy>*%eqs<88(=Mt%k%oX^$Hu=p_E?3I;$kVcGi7(FR=xzAIHfYss zGMlT__ev{m!Mn3rj^L8!E?#gFg2t^l`sA$S?8vTFrbii|#-B;%Lhtdhi&Q>5{!>?W z&%bv)SN-m()Y!+(yepP}x)*sqzhA-+iYxpU7F*cu#V5P6OnA(fx8CWRW;KpQX6SyF zpJJS`VJuOLza$0mbjUwexc~?2SS+HtMeOcuV{9(IcPW&)h@KMV9<*Y6?2^KLYzYHu z_Avp{ZrfIse5VxBsS05+X?$i9jNT`pWtC7!s9AoqUyaE4vo$J`%LB0q{$R$>kd9Ro zMkh7~LX!nsuDH4HtFY$3NHfi)lBCXeL{Z6OLx^+~8NEO1{6<%PZ?R$ZYW9KOE1fo(A3vC)Vv`G}H2@JQ>{P9d;7D z-Pmv}ldUh*EWgmfo`u!f6+xrJ{{btF4DHqVuumG^+U)1cE(X>)WeZ}8BI;m@NCTf2lO@JGJ zARB+pi%*W`>NNCd5RHSspE~EPu!D8)U$Woro&KpHB6F{5uc5HBxtBhq;EC2eT||tT z9^Dlo603u`U)aFY2*F@*rLF$?MF>nL(F+v%9byOD?P~VqM>p~z+{l%V&=QMREq~mP z=pnOmkt7MqWr1gXP(#vGn5E9>3<@ro)K=q}B)OlF^kQ&4bH7nOT-f&=&f=k$VR*np z2k4Hel*(KD4fu?2@wY|*HH?=+k-l5|=iF^XW~Q4(hJT*jpNB7RO%|246TJzne~`vW zkL4ea(ph~(&7-Wn_H5`JaC#`kQr_wfslQRC?>6{&A$Dxyhgj4;aknT7$Bv(cAK28Z zRO5E=lON@jyyYtNt1hX|U-UNN!%KvFip6w!4=)72ghohC2*ikKjM}!K`zv%Fonk9> zsbT>QX4yByPid7Tn4r%`>bGWD&Cqd037$AKz?1!OGxO+do}iLVgcQ4n-Y|CVo%~gd z`o?Rz{rh`Y&%Qo*f_`N5ox4S3Z}i#J0%-KRMqDaxm!hKyFL%y=_y}^8WAyOifgC^H zqa*MT`>ysb0mR@s=-$YKB+r68eAJe;PdPit$oTUNc_Irg_8)hEO{*o`sxi+A=Q~Ki z%AC9A2w7PN--$8mVhmsx2TF-rr^%gz$HgzwI$5{=kQO7C*n>6oP*s5O#luXT}gricgS)Jrj4)a_7I1%T^y-# zPIDGE4f0rt4}PrgVGlEl*bcH!cJJp}Cw?Xri_Yo=<<`>h;-(8KxxN}%kc|t3R<O zy+gCd4#W4gG+WRgn0i!CuU|so1>9rQJ@m*6XO&EVc; zsdxdq^LjGYJK0Fv?y4w$ciY?(t;VBCi(;nG=9Y@ORHM`;vKsD?F_ZQxtohG6D~hcY+uvHO@>Yw0fQg6;IItF|fD71Zw~hx}fm-%Ahqy;Q%K z9rAmbe(!h4@BQ?9|3iN7uipn8@;f?Ps2r}hQoE6F3u2O+cSmd5=8P-UKckMap_!=< zWp3D%*ee*=U|oPjC*0L^M7jD6?To)JsP~XPMFLQB`tCALKA_p2Xb}AGsY*<;s;rdw z)Cx)1mODiM)DHe-JZfWw_BQPUw0Po{;oVj7*>+|&rU2a~w_Mv^H@w^bvcD=moiE+` z^yT<@CONF%OOozo`n^=YpOk&$HgOV? zYSoKNA`7@Dv5-OfmCL?NYt?P=_pdeUjB-k|kCItUnOa3j3cClUkNf}eQ;7cq^auW* z+P|Lqe_;Qrb^Kr1zfze!lf~%2W&gU6a~%szGnZsd(e(GrMc=vc21^pn9W`D77=%bh zbq=^W!|GLa6L?(c4NrJUUi(!akopt4=p`YVj_|$a&tmh3MNlZ|`p(eKlt!73T@}qd zuJ&P>2d7i6a6DxrPfQ5KsySA3M-*>D0RXe)Y$Fal+22!@fazIF#$R-w6mh3`7v^>^ zlz3Qbf3rUQ{jrhc{*u|TNYC^2&iBWL((^?^;I!>pzpIUhaacnvu~J{7i^7)RLqD-6 z6d%m(AN63WvGj`sqr`)k?2O5|FL8gniYFC7-?faVA^cwza){7fnma-7IlOkn&wW<&Z_)g(Oa5B#BPtu& zm*PfQL~POy=y3dIH-r{rp9-xMqI+~}q=)D5WO{fiPlc7s+{^yJt9>}NL}or8aW2VY zb)^aX5g2DRPULH0Kcts9g}qA%AlcTP+;hy0SKFB*!`MT?>)mb#*Td_vID)VW{PZQT zBuw5Zqk@D#WIfO>ogO4C9?PLi-8w1}Wj^$dIcVK=K5y>t`R2t4lA_ifB~*f`5KDzI znU<~6ntw5=rngHd6(0X~a_+tCZ}+XXv2iA^oq4<#sYv#fCt!=tQtFVg3{2{UVkRw3 z!WNH_#X&qb5_gU#rGQkk(Y^b7(0}(oAI9h8ZjJx}7CLtfZ$!1%d12l8585PX-x9Ec z#iN8sL6Vz0zK?!rPg|tsE-7K%DH>RIy7I9qd*bjp16jv0g&t=uJtovNvYff4>``nT z%0a?1<(~1uVzS9B6UW7w2eqSU;+=yl1({E+g9KF~mQ3yr#V!$88|RWHefYY&2Y}%) zt2nZJEFw9u%Y2lvai0MsRL-PkjG=Gf4;V#fT@!lhm$>yZP|0v}NgfUWpylNsnU*iq zmIWR?3zW?Myl>zBqE?-eI#o+?l#YexVhf*JYbE%c7p@b_+dZza4eKo+TBX1yl4Nnh zVhSh`G(IGsw9rpA6NKa~G}*g%o1v=+H}14j)9J5b#KoTC7Rx^W60TU_?a&Ab?I-tluk`z7%_Jk3zs{U$6o%?vv-h*)yLkUaLUd4v)Vfd z?c_!XScM>+OOw)ygglE)O{-;gQldq1ynAVYV7@==c)~udgdV8e(zY%p#ulGX*V%dG z`2&hqoQyPt_ve$T*^6sd=STyKSqg>v3W;8Za1+}PWgt;)Nr^yG_BPfN9J1ePW$ZTe7-tWI#9~L}hREdO zXG**@)bk8wa)0{P_n#atUGHrLz7mNGzD`=FZ6L10nspd)n^=K7huUf zmjXUA;$invX?J&RY@mRDo*MuIhk&&80|RLk*bIgvq9Fe zM7`DWh@$&Mf-Ba(JU8&g^x(~+H+Hx^v&(83Jd8)29?QbzbcQm~F~qJr-kPtf!riOTi+poaO*sxHCihM<9o@htxrVT%Lt*E`1lNN$g0<43Uil; zysand+QlwrzL1rM7nD8CJ)6U{Hx*o2*s(tBXxr2vb+(kDdO2SRAk;BmrRF@U_bUx} z%M{dEoGGg%v3wbr2)KWe+=;t{i@@6JXzPwgc#>sc{&Vsm5U=zhUg<%cu3K3KT+)Ku z%1_3AKe^{aYu>6dDX}jXPqx0F+)cutNQiVOL^A9JP`ORKE9m14I?6%^2R;4`AMCbG zrGS0dvSCuvinb9UwiRz3%rtIo0vr}P+PV&n25tj4btiYDPjVc&y*j-nW$%loS;yvg zQFmF~YB^n?O*|cvWi8&XMU^EIA0HRP;l!@cfI!=3$kR-pj$2@PrdVgeRX>z**)l%S}8{Es5NC*By$BD#oWbFr^ERW zwai7?@UgG;IB#$Zx`>T=aj0jVv#PFo6>}$K)sY-un6q@{oVm)b>G<*4RBg|EmKw1} z$<8?sIyyY|Bj9{4x#zgpY^xUd?rc7tt>Sir&L`tO=ng5k<)ZyNImgk@S6f z`-E_6{Op>=FryzqDYn{do+n{&F~^>u`-62sCr&U8_pLR%BIxT`<$j%+K~$%cq|mPQ zUTfYJSfG|=-~%fq`=q;@nrU_s&-5==F4E!nklZo(JuhZ?rA1x$1%PMMT7+wt#T>On zM_YssO6k-P_+n<#Sdl)U18IE4WdG|%vovA^$(XA_lMJ?vhF6W)M=rXt0`I!R?V9a3 z4kcyw;k+FMR_6>vz>CopOJ9z}e``U_@ptuHMKp;MEolzSB}g)7i>} zV*GFXm9*`z;;cOur0Tne+a{)fM-|cPO?GfMYR4wc?>~lDbVG1}&$C2EP822MU-0Z{ zghs^a-B2zcr3;e z(V5%pgO3ZdMkw{DgOg!h*t1Qi8n)tyeh6twRmHj9(`g3~!E$UcBc^J})!TC=EbyR& zu59Gn!9YmPT@;8N;h`)0Wp6;9A-8uVEAjR$t8w}c_|#kYk{^C6h0mZKcNaghhX|J^ zjKT%vv3pP-|H4@1ze3JxSotE0jwFy8f#`qmgmhSF`k=}zu3SQkxI{Ljtz@Qqtx`r> zx*G(UYTnV|)2R_kr!JzlVgsvfE#S3h+2<)4YL;L3c5;xrYD0iB$Op`NjIzVWSTK7lrZw{ENam z(*Y;oo7#PT&;_CPJ|DSh z*o+!-q%>72sI6v4yiabE7$7|XnHdb22{WEnavxJrE24`PLUgWO4~~Coy|pIZ7RGvQBi1HqQ`!FI|)LGfO)Wi-*OJev`* zJz8sC^0r4NyW@fSv|LGLzt^E=0n>|U4FB^Yx9f4&^M?jo1x&FgTPVF2&##mEDxbnH zw?Gv=%hW)oS$;J(3hVW_0xEJ{SXx^@OBUmX)$6;KX{1G9VJ(x@)E{${4sm+}yoJL) zi1*@Qzi|}ehb{XKKIE^{Ug#;ke)%>)m;sjYSgwQeo&ct!B(Ft-qTh3Tm$`Bpe}TfF zg!%tExeXzhb?s9LVJ-zi&GPGBqjhD>)(m=AlPFg~R^u9;dJ!Kx(U{>a5tQ}S`bB=D z-WyGa1c}QPlgFCMTd7IM?tZ?QY92mBHD&Ll%{1>K!J#$^8G&6!)o!uyKuwBYC z+hu-7<#YtZ)otvk_?pdZA}T*Ehi7tn7V z3P1G(+~fGxYpnl?_EqXhA%Z6oR)1#?;g6bG=KeRPR%%Ar_I{PIv6>2@Iq?PYA0brk zQZp;tS*tRb?7}~)i9zEAAeIr$8|fe$lHf<-#f6cN!i(gdK0U27^#aCL-A)%;gJ^3t zYz`z$*rShyiZVlHUnRCy@3b%wsK(HGZZ_6qG)_2lzvbh#<=8d<2d#FQRzLn~Z>#BP z3($T2+&}iiT>gGK5MXYR0jhEwaPq0p|11E#D!@{h;q(q;bDJ6a`tu-S+1l5HApc{f?bryo0p^YscrmT%g2 z2!umb#wzM~a_6n0)Z7LgShb2;M|-ut?TxX-@wU42t!{ht2WWdXyc4*F#@gP&5)7xN zI}5F%@Q+z+71fSa)Djq&H0O=vKCGFR(g3p=2*oODQ8YbiRB|7B8Da;;Jsm3498KK6 z@`jp&^G2np>=6-*YF^-(V~#P3N@z8r+2|QXEy^23eNRTvGm2W|UdNl%bZaZ8iAgo5>pqvoRCesMJhQ5|K8eS}#O zG6^Ma6@#dgID_U5qGa&{W{!7TD+8bno-Xbhr8@nlSpTGb#*f{ORa{4rNgCi4!Syv*sj3$mv!H3mzs z$=wuQ!Q|)}BKE~W?5E`5EYpvLuGfAl>#HnBoo*A@>Hmq*(r#Z-(A~|QO|NRngN7Ku zenYD~%AO_*gW1!*%+n_wPo47(&RgI3ruzm1rz7|| zsa%bgzA2UWWncUe{5ODc2Qnj--ui@fl86Zqm{=|O1csDpElqf|+TTh&K?RZY-11O5 z&WcmtT4=O%#UKU%lB2UJ$b&AbG28#tXsK0 zJM)XsK|tV77px^@x_l}Ats>Y9jFo;iuorg0AjSeBGiz#?!f(P6jegu|gijMoM@;MMxNIIR%7UVWMU3E^R(RpWB!d5U?uUsi7}`lR=h<@osG=7=VJb!X zD^t!hAnqX$ks0e=-8gZ|@TBCyu%1)WD&$d@$r-%d9^~nSdwzrrXa-Jc=k)GF(a~E7VC1uBCNj})0#!hi+N*=GLPP-jtj70vt8>=0xdTM@ zyxfm4CFOC|;hO@%AriHzq+(szdA8RSXl>iOm;zDunB-BA}Z0lz* ztUMAF>xEvEAgb<-Fco$-U|KWGGp)hkr>iY{m|=-A`1vbl!x;Q%xT*<+gjTH)FT51i zK4@gU;zgDc_>HyCvvsB62kJ5A85C~9+~+1f*roA=U9rKgctfmpDzX?!;E)yns#lA;SYIQ$^aq>vU%lI3rsf>SzKiI$>iKqE}8r*1wr+s=G z`{DM42njosReRp-~3>fNJrj`evEiAZ+8ce~zOI>}~fqX$( zLp_V3YCK%J*U^dk^b^;RjC8?38b8GZlDV*!XfhX$lbxg=5;rG&EhztyMSCNdVKC0zK~Fd0wG7u;BlqRu=^xQL5o z566co?@X|9{0X(!k<~qy4`$JpF1T_QvYX{`lysNVIHiOG4n3vcYouS&+N=52tkhdP zyP|7Vh&ZuLFo;_!bsh?FYHP9*j?(}k1K`f#$BU+=Qu1r1f&x>K0-!YiujxY`%LJjL z>$&6nWzU1(C9IP{g{)$Xn`+HJUDX>GMm)Gcwytn1`PzuTwM4GBHjSQBiuWS%adxVe zd{qE4)_Y9s1*nfSwjX9IbF?DE-g`NvdJl2tQ!m zCL1|X8JeOFlhYU*s=$Gj)A_yJCad~QugD_eJSSdq-{;7l-CiQm(hPK;Ax zbHtjmt{y{-^7`Q48Kzsi_>QL{?gkThX=}pw8UC@=_%E8)>T_2Zyvs0nVXpRMhv)Y9 zxQhkM0{fr>r0bZS37R}mUd(3M1qt<~f4qizcpJ-`cLElPTzbX= zoNn7`4ff{|HAiu!`HuP9$t?dOrBA3F-tqr{#Q-vx8QF7a(4Hx@TuTy&ZY8@eHP`ZP zmYUf-5eA|v`4++1)d15o^{POH&ztZkQ!LahzuA93oO!EGJ2X@kVd3VR;e0|S1*9#Y z*b=Jht`YL&g{rzs=T!RssglNJ05&iZriwmoq*%C-^U4enZ8~?=^6p-$V$PzPYvzlf zPcHII6DE4q{gv8?Mz3;0=@mjY_~o0p_f<6Gc4L+?ibA?tn6&_K6;5ZqAPK}M<~rsJ zT=LJXJ@chj)ElCV9`3B>3ykuQM*&a%>GYn>i?>2NB;#eQI}*PX^`Rey5*L4|QapFA zD1l#)up&FMmwiPpfMQ=&RzyuBTd9i?iA^x05l2bkQ+YM-4ruGJGC#tZcTsk&s5SVv zwW{aBkjk}X_HzQMv)Wu-2_g$FuChY{pJX8+msJM1hXmG7xDYhE!ztwQEF|g#!X`6! zgnE|CkGq1wwU^1G{BMNK-s-6da(KNApncX0tjpRe|J;eBa{=d$Lmq1CmF7%HqU)sI zgT@(pN;0`)clu?7*EO+;&eJmTF8>!=$~`3s?ms_baanLMdjgv^99-{}ja1AUC$p z`Y5_|xN3a{<(U;yKy-;y=O~G6h=?M4<~367j0PY;V@j4-EE5*8c4n76Z}fpG2OuD; zUrf*#tMPcA#lc%+N)l57QD*8Ml+x#1#&sb&YCB{2^a(Fgy}li)2&j7jN@F|Gk#dPc zT%=Dt{sn`e5(A#q_)Rh(l3C<_kq6aYLF;snz-X$s8qWawK1~?^`CeBEdSYedp28JB zZXS#_`e+2Ld7g?2)fkg=pM#s;PU`qp(O+YwcEZo$ju2ExXprppGNSnwUg-W_N)nak z*pL#V#->?G{hnegaaBa+ZZ)}3hMW6bI`sgkLFMiwJCj+$qo~}~3E=8qSn4j+w<~CI z?;WPaI%n>4DzD6h-cIfwX8ilcXPdT1Q*&l-~r!wlF2y zWPsb`SzG~ec0O>qKhqZC$FVQTXKNTM#GBdg@hOu0@mLD}fn`FPjoZ@OG?b?+!Qx=- zvpPFR-g2f;T!QnzaZIJX&|Mj?1F>{qNlAf5KCOs zU}fxRucCo6)`NwnF|y$*j%?bbhqt@g0RgHC(cKO#JMZK_UcguISp&9<$UPO6Z{?2Demiq?qC!HDxf^4*g#?iP=N>g8XYS)`}wo1H5YK`GGP>nW$qFSTc0Wkw}#RP@~sP7Y~ ziw1e|h}d|d$iz=Ks#(ic+}hJKx-;2X>p5Fb7x(0c{rUxR$5<=wlX2(+)i01o(Mv-- z4yFkBW?3g9!(A%_m1RgDw>uv|Kb8Fgju=Li1&B<{9f}ohHyL6Qs+fd08pJ{>zKzJ> zKxq;@mL6>1tfE=-I;xH0NnXrDv`Ax z%4vLG>#grfjNayM(dT=FgJsQBK0TdQCO!26&i&K(=;@<0E&RM4>=GZkj(SU0h&OWZ z#suSkBovu?0=S4$5MDxNpNrV|Ni5f1V+a$x>!3Hw$mh7g2TNZsA)`$!H@RAIFQGdJx__FQMpKN);SW=?tv)yc^{@1S%mJY-4yu=Hh9anl5g zxG}l5#65vr+F0XGit~+0!{my+?rs%8GZ&EgM^%CJMN{!4P2S|1AgWXE^R3~csa3U! zK$c*S)Ergq0HO9bESZlda2>yU(!ZtKffGuoeYt{>Mc~o0S|7#2~mt zYKZixq=tUGXHpd8#VTqiY`0ST>2Mxc*=?=V5&;E71bOb(c5d#eoj_Q<4|u^w_EfQ1 z0xg#DDcrLL8y}qqnd2T}ps*md=CzR(gI&%jJcvj5GyL%*HUM`BRn~lCoc^mft>oR3 zneYLao^G}?$9;uL+yrSdG_kAm!xFz-0Nu4xQQG)>Xw4nTW~2jn?@DphbS$2PYRflZ zs>@>a2QoM-8@32aV@JCW@v0RL-Fd-fgav5fUE@JgXMQ9un;IKxXu!I6RpX4VSSY!+ z+^I~Li(IUPHA4E?uvt7Wpnhg>8Zl&z06-}FdKPS9m!=83bR0jXx_BL0xw>Z5?3pvc zcGl(n_ggK;Cs%bP_hD|e0Vz)RoPIpdb`z6NjaS+=>tcf%*0SQ2yFXyrYS{ATik^=e z)>hR9N}S3_k5aw+HNHrEE7_%-a%ThA{()ebI`1lrAK$R0r{^D#oxrcLU>aCQOGE|m zWXdT;dmV9)BmsgccbkCQcAl-BaCUrHa&1tWQu1+S1CR%Z2RA(*Y#7s%k$ytuAI$#3&Q-zql*HcZ*yodb&x}ooOq?%h zo^xiT;g&JA41M6%F4f{y&~i^wXZ&|N+p6NDceX(VvQC(w;xt+-ttdQXh`p(@Q1}J* zTlNTfOW=y3H8V1iTy+9i6xwqD-s^U6E8^5QPwxot%(!>WKFb#pE*xz1pT9(dpmq~~ zkf5j`RVWc1gDAvcGPlxdDX)1J-xQ*UY-VsxmzA7M0sUg7&X%$b`=z7Sd=aQd(sg6X zVIi9aS7K>%0Br8}gpLYX(j*Tgw(saZbV4%1Oul_kVdX*fml?;$d%5&e4 z8fITbpL#eTTl3{=#;fY`GlB=!m3*eehj-q$>0540o_=zpSVRr8azAQXiHj~Raqr{- zya<{vO(?FEP9rm)k-xRx=$FST8LR9ybXF$wmnjrU-ZDlG5%p35IG(z=%1YJpQlI|b z7(0@_d`xXL_--UKBWTyWiq`y#wzEE3?Gh`hWcD#kczgZ(i68Zx8k>}ucxvo(tjQ&I z&${?~@+G;oo0&eFU_tL%seiyE5!2-iyZQskS!wqW8E8%XL-!><5a@+HpK5>bnFyp; zD+0BtMr6Wy6{u=Gp~y}=6kzY}NlZ@2qhv8*P}0JN^+d;1xeZdK5vEv6?bDj-@3mU& z>RH?@SuM4v&T_)Hw}%(76Q#rjI75oXblsRLk+1OoV#01LVGi&;+$w)N!p)co>R<_{ zE@j}<7iWLAw+t-CK8p=i{K!yZZs0TVp$d>}r0#x^;w=>9k99xbIS(qM|{+Kb{ZDQ$vqXAWbLVn^{bokLHrb!6f@5{=bRwejW`;9Ef>-Xw@Fh!k?MQ1 zog!aqf!GM|vs3ttM4&1V8U$8DKs42T4ghqtlbu16B7tZN_cNd0xy(+!H(lazI{WN2 z9AdLdt#)=GxQh6KD;`8}m7X&d4ZB_K5-cS)RD5|PS5N?XAq)3A(vsbJKIa* zHplotZEScreQ{+d+4i9_S)t^fe%3s>3*pFzFQHEI*y#%x_=d%jU0f#GwbJg*{_x*u z>NyO)urk^DVQ57y8I!xqZfs0A&+=Gir{{2x`HL9P<{@$4+Kt-0lt6Sc|7o(d1Ym%z zU$tAwKk|m=-~y;%Ny}NhG|SHl7I3_U$v2;-rk>Jt_i7TXmZ>Mra_$y+3zT*8ET>^P zkL?Yu{7Ox)OHI&Gvqw*zhMrn08LO-4c$* z4Fa*ga5gT4nNvW;tPcHL4B_v0DY0AjOilzBjfF#Yk5wAFqEd%%SuHgtSBmeR8{fch zPxX3%*Z13lrRNUo^!iOrYHc z`$$1)3X3*-Bz?R!HoO2ge~U2c5FJlWdELLkqR1)LVD8eIEv-}F+lMMJJ)+9-2@%rV({RNJN@4rA=ax0#q!Heg~jGk23n zbo2YM)iO?&_QzSeL~?VCU!YeKW{S?<0G2jo|M6#&FYGlgfx3kPC90lRG%=wX|Ni;% zp@vygw{gi$KnfS)2v&r+%p#9sG{p%n9mHuta4l(`nJUyoGkybI*pQs1iIU}r=lH~3)Z=8W$ z9as;}V>nm==A1|P)#@!o8LmxF+vsdaZmq@F=sSl!iCC*UbmG-hEB5U|GofE{OBpJR zb!#hL2|1Tc&DC(tbZUHR13%zh7P)GI$}Q;DG$08OwgM3v(G3x&h)l#Egg@unW`IyftX!$22qIIb6ni%SS=M^ z&z4Isl=-#lcGRqkS0Jhh(y-iBm}t4Tl?X?OHl3Lv?iM)#_Mor<$iMO!L%AZ8^+^8h zi-@BR`Bz~)S&|fpJn1FL(M$gAV>cF;Zsg)g)^JG*MD#039I9DfbtohdP;%35j24qy z24n_{ns2~<@qLjlNfFs>kK|lc6|-usrR$P=26AKtpR*RA^-GxJ3jx%2Ubd6F2B<)a zG64nysx1Ywe1|X#ds)&s+HB?FsgZ&zQ zOARz#X3du!%#;Z1lM;anzr={55;g28lwh~`DVeAK6=gokWG=b!25Efs zo@mWxKjYY5WRLES)@=1NjqQ_3JTd@x6vwMIZ}^$U^~v;0KT~_OW}VfzLALm|cPD@l zY=?MB?j2|~w(?-)iZbM&v`%W)`;Po_@H;9x=yG7CR4&nXNnp=jwnmqP-UY#$C*m7Z zzqcM(^A8sYSre>eg*=&cVYB-yATg{*HL;y^tnF$zKt|cWiMdD5#x$drYBYp*LG?+yTkf&zcV`q2js1O(++ET=Z98h z>4(-=T6b7ib#hqPVSS~|8cXWRAt#eBXie+1syR?)=KeE#8#TincI8UtA}P6g>{n;3 zGW6{8cL#%KY7snBJa|IA@I2IB2oG=!nq`e`+hMKjcL!gBv#e>v^{(bPDKL~A42EL< zNcMQ}a&5%f6>++=i|`%jgkPfc0`Rf&RmDeq09^=K)!cZX5`+bAH1n-RTn}ewV_$EL z?KhE@X_HW`*C#kvv|_j^L3DrJNTdjpQ{;GIGKZ|O10<)NQ9Vw{tX$yM>;TO?mujJB z0(-xkO(muB@FMarp^>f6m`1o^qJf_5$q)1S%GSj}yv2mFa3Xynl?)RUorF$m-p}CO=TY8taVC*qQu=g4SARbj>Lz^N=@I4+f$ll9Gb| z%nhWP+~GV=6Y_j7doG|+5yYA&rbg*bQGXDGLf`Ls{dq4N(Ee!#oW25%RYHXmG zq-DG4;X(TJp-?<@{gpM$fgz^>VxNBfQz0S4#vSx+7M+?Uy&KQlkijPVvk>Ns5M~!d zdHGrh^Tk=#73-ncE(mm5SFS?(H_WP@A+)+Zd&S3QzRR1XIUEs}t1f3U>~Jwuv_(+J9zG z0~qeO1ULvKzn&GsyAj`iMeq*)-@(g75AWuu{$qjjtRgsv$xcxj&I*h>d>H2gKrf6% z`?F8avi`t{@1sxKv!4YoQp)D{ej|8*)e0m(f21T? zsq47WNry*t^egecAQ2}NHK(=8bQtMad8{9@v^W74_T#zVN?k$z5Lz^75k=5hCl;c! zs%_t>y3ud#TvZ#pLHUR5toQrNd2i?n@v(v8aBDX9r~QUk&3@7UHq`$%UA_q)mOaD& zX8GSH$+t@Rc9{Q7G%~f$D!y^^9-AP*IBjk2vD~;U{0*7QjsAs1@)O6>P8gHf-TY}) zRk>z_Lv9<{#0k!>u#hfyC36RoKt*j?stGS#QQ;>t$r1v20;~XKKm-m zizp)R%9d)`aBFU~K!riF4>`5P|3t@nVHa;Pp%!6MS*=)O?;8ufVj#QhRFbl{&sL8Q zI4G`Pg1JYi;q5?zA**pKve;87X!uZJRMMsYlaWJ`uC8exb96^tR3A zPW`cq`<5Ol+8;UTl~%o$j{xEnpO@O=nM=TWO#;*V(PzBYo3(A*ToX&cnQrG@lJQ zyF+bRj7>HH$EFE-8(Ouzm2n6?$q&xo>xd&W?cPYm3(-N-5|N5m>nonGulR^a1(Ax6 zFeiyt?AFLJ;e}#hG6=<{LAu$YIRCJykdB#sOxw1B#`LGy!bF14q}5+s)VbeWH>&M} zu`-e4$}*Yg*@1tN*hw?6jU{67CPgOEz{USEpK0nJ4%n93@^8;#XQN$#Wp3p3da%0oMFF2npKT{-g+m{SX|S zBC4cOv`M&AFxq_nF)@9Oln8dBd*uEX^_c2ox027m&Yg=WBgex&%*l($R_IX(AX~s; zk7^hjt#!4Q(L-~~$zZ^!A^$;eQKW_pf^GmXRdg3Dr6h}%^?Jp^Xw8>;=+o}yD&!`t z$lA$0TPSM!v_|@5RA@W_Z>i~%qsQX3o|44-YFVHbHDQA`D|Hu@PU3=pzEqCeRiwir zF>!C?M^9qDYRoT}V|8#1Cse18G7MfgM84)ZH7`(zanF+Ue+}mx=CoO1CO)A^X;OyC zmBsR4xiWT{FWpY(2Q=CGvAa=vcMwPpRlox$_dPB_o?BLALH7$roki@h-?4~6c!J3= zGVHrjg0&wM0p=+OXLN+zaRNi;$hpPUEi~1w`mGq`nL$bGaU1;=8L2p8Poe8z>{4{I zMM@|>AWsm7t4N@fDxH0{oly+pQ%`6xS5^2CwMioz$*8zy8RG)2mxB?JP}5n3 zts^;sH~GhA(3NPG#)5I;*f(je%%wrwSs;(?!7APRq=S#i;NyUFa55R39FPuPCWDs)(!tGSaC1O9_?ZlT+QAPuS%fO<(SBj5 zHK)1=KY6SY>qh!_MAOK#SM!dVYv%VXJ!MDDWVs9?)4(2TPE-F zzu2+(8;HKk1|nH@hXMWV(lb-wQI*yaayeaJBwrmMs zd(TsPUO?5{92v}cp*;J>hqS9FjK1fEu!A_R(^;=4jQW|K<1wge4Sk6-#(x!*spXh_ z{9d_Z!XZq(gL^c;$oQVA*Og~~T#&c;JgV{<%?|d;P8zG-4sVanv^W;O)gFEeOOiFQ zFNrDfuGjFh^9ro$meBI&pL_1PqVrds^Jc{QBQeFcotP;*KU0>db6%@nm3Ves6Iwy* zLMV%coPBd%!Pm_H&)VC7$5mDP|4Ea!32iwkv`}7@AVpgNX%()mr8ENx%)pG6cl3%@ zk*fGdDr5ka(v->291laQQsrJidqEVhFMvu(TiYh3Bq>N=K%js^TZGPG6v}H~pw0jD zUHi;r63WZHznkaDoPGA$uWPTp_S$Q&z1CG;ytk_`LgjQdZJAK0>Kby)_*WeUR06}AhyT(jOZDaj)(wY1zoxrl6{L%JPXR8-zXVdBOUTjPTUNU#i6J1SDs25(V zPHj>+4B7s4%Jt;Y_%iiGe~A_MzcKEM^H;qwF0pdm_OqV5}$txC{8@7g;Jcsoef`Qo6=mOZ)ZAC2#BXjwO* zq3xPMB>9^2F{Pq9^MexGadV^MFy+1XJe7&LZ{?Xrm(6rpsuJ6`x-1auy=FO)9ChI3 zWmCzK*#3`%|7fDKfF5Mm+u>)J+5r9WuBOK)6j;za|~+%+)GzXqr_cq2C621^egWisEs(m%&eZE`DG`d`Jb+QiqrQN zz*53b!{gYJ>xhbW**5Nf-{y*&*m1%A?;Kx~r_TN7Bv!G6|3t!noeh5ZK+C_%%|q?* z{>XC7S?^`9A{vo_vX;$zbcN(hL=9tw)yzd9NlJoU+_mV+Rsbr~TN$5SBn5);SvFRB zbhyWQ_t@kf+uWmq>?Emkk9zl*;2sU`G2K08@Sp{=c&G(rYH=SHxW^**xZ6ECc$Dcj z#WTy!hsIUNS?aPG3VE$MXtOI)Wv($W){XwXQWM~Y z12rXsjMbF8cazG=EflOnT{?`Cl@$>0mnfdg3HGt}9umiT&!+6aMvCFdQwTDRmgP1& z_zRGI?y!Y~@th44?1~`6o50DNpc7kM8UDjsQQnw-_4Kktmsiri!zVT26XDBzERy0=OA*qKvcm+*_<_0(#nw# zrrzeGlfiQ9p2E>CNT!89;awZhzb4(~v%AOK)MY>n6yg4$9ms1tMyHdnbgga=L@sUS zF!!;63k`%Bx(+==25)9O-A?fiA;f?i>ZQ$=kTce<-~4BvK#BG?U95B!!UXM}^Ud-y zzgH?#KC0fe%sLH8yMFV#9;eLDs>~$}xwL}K6sGTb~)9u#O!~xold6S$0$R zYzi@x?t4^WV5lA;tGD=GA<4v!20RF~{zl(1;dR4p1eP#76?jGRcEoeBo!;Um8u40lI#U$rNNp_LsEhTxYm}F`($#GE?X+`CD~I<^4DULhoU5VNYbk$vSVdEx~G^#vH_K1 zp9LEGtR1Sj;@ou#WIAiY=g67NIZ)OV7I^bj_dlAtN8HX|k0g z!*jscA($vraa;dBH%4CkEBJ7t4l!v>#R}owQvHOp)H=gMy~f!kQ{ZHUvrIVQTBJk_K{?Xwd*%OLoN9eItJR>Ul$cO+-sak%0+#A0 zTtbR|JNi&6AaScg3CfGK48PT9zXwaY*Kn7v;=2Ecp#FQ4rPYYOg2$UstEIU-yO~&LzBNFfBBqVx{Ef9f#TZGZ#;>Y3yO@N7{_edSiEtLhgBhI+Ec9nm|#eBTU zK^fO>wwrH@&G7Ea91p-|df)Dt>8;MlYE~t)=Hi*&HL1b|N&~q+8FfEJUqB=gtH`Wlop#!&!dCPDPvdUs};pQ8BEp zFmh&QnHK4a^uLz&0<P<{vDp)D{LLeuKo@t~oG z89S~pPOsOz=3UxQ^O`p&Ru{C0SLw`;I8qlFX)Ehk5dnLwOR@72ohevU5d0GQ)48dG zZ$#RdJ3jwQJx2VK$I{P{DF25)LU40a_x+W9UgJJLtj`Pe`N!^amHYhP?(^^U`9Jl! zna{c}r1_T6;loO6gzhz7O!wn~m+*Z@O+FVVD2ft%?&6Y={HR1b809RH9^qV?*0Q5? zzRiQr)sRKg3h#0=Vr{ zXQ@12-3`vWcP%{I5NRFYHF0yHB~7!_mna! z6X6bK%xhOg^+sjJgH!8ikmy99O!by&VzKz%mG4@7gQYySSUf|y_u{$SJlAMQa4P$M za}(<=KJ}Y1=L?leOD8_ZM72H(hhv?J+6Y1$xd~2fP+9aV5%`XXtZ5!*C3s^i+hU(0 z+EEJ}-q100Vq@b(EXIgdG!Qe66f@{5A8HE6GRF~|OomXLS|>tLqoOuJB_L@6+U_HM zD8d1$uqXMsmN8e8^@4EPXiDMa_jV%zUAGy9_yliD#RTUU-1XF6{h?l^ftEki#}ob= z3IFYWTjY3q;>@O#&u(fYNz()I_GIF$vm1#*iyEtm@q^arST&9(AJEQrCfQkp*m$<^ zpj8OcvTae&8<}08WFxbSc-R4C{ty;?DC3!0va^Q|5g4x@+o62ga-?auW5T{`5WaD& zfF2`>N&CvK5u-7(LTGBzzR*XYo(NjUx&evywMpOha$QaBT;lulSi#&hKeE~?YqRbi zi`*mHRNJ1g?}|{gOHBB!mS1&TMaxkAehWeWE*c=KRdh!FnE;Dzjk|5ee&lw|Om$%qT@b7Qs z_^hwA>#elL;9hMFQ@-mcyL8zBV3*!pmp^cSH!P~2KY@-uROEZ%U1OQqY(YmPf~NY? z4m6%wzDa3uThiS+c9KSwKlNQCC=s|(VN(_J|K5C%?LaU4PE#wpPrI@X>m05jp<-HB zlQYs9Y#^k4<~>$e*{GjU8ukAcYzMI3#gSg3#=DJX_#eWG%%0ue{I-FGjVTp2`@IUQ zqgQT+873*Lk4Ha~H^+|)GiQ-3{0dPKS#Y~gp@V_Kcc5VZc`j+J!_vSNx@pB^55&IR zYdwy*1aVqWy~Vd`bSHMS!n00P6Se0YN5J-+ZC@;IId2&el1{0HDV27dg9wly+Hl@7 z0%5r&c#(1~!Da#^h_;)zj3`72))W(TxCGH=^Oh0+j1q|US_waQ38Jm$EhGLFC9va3 zwc#3T@!IC|}TjPQ3Azj5@Q*-}%xsx(2h+iUW- z4!i-`~l(M8ETp ze)oN7^hWAT`D>GYBx%fv5aUkER4#Xy_hr5Oq|L^{!NU7d@Li2yoMrWM7&k;`3t=|S zcskTNh)b)u0Ue%s*#iZWqNkyI2cDoIt6U*KxHa{D7H27126tE+f^5IVm4nba6@Fu< zs$AGn(<7NUu0f3X@pD>?KGK5%{K{*w~nyu`S zq!te+YGO;9A$oB9_%58&i?bJL@cFA}97RlOP!?%S0aDFP3~aKr)VHj_IVW^#z` z*tGGep?Ex8?k>wNNtFwufs5k?3?MKAj|nd7`QIoj6)bYRz!sB7%fvw$w0tzrd!Pv9M_fTYh_Cx56^T149jl(PboJuAViVuG)`1SM8Ll4m9OTrt5ZEgj+#DZShdXFKTJ6V%T6F1*{BeV9iq;Re7<1utT;}Qx&S5vJjZ61)U7X&!K%#c^{DM$MUi3x zJFM+Yfge(uGu?U(leEYK7J0jJrO6`qhR%|p6)Z!}Z@hevRdrnzjjT@=YN$M$rANVd zrW@zYPd8&p=YiGt!6(++g$jY$ zzc{-2)$E$|D_DE(X!2jjG3oPkM(ov{ba@mV)YO(0?Y?f$rEeSrbi~V?pIl3v>$yl| zai-5TUT0HDTZlW`>%wXyzL?=(pTL-D{GbkwkJWa^2;QWQc4zP80Wie~-W>(u0Na&p zWVXlBRBQUs(ws5_&v=k-=Y9(6gm>o;!St-mCafii;b5b`$1rene*J>o_GuZP*i0w= zOM1LkkC*&UZq*?=puFVH)P-G=y#%v63P<1)?Q}o+aK*%@TRw9%mV@Gzk0yFMQ(UKQ z70Ho2*IWE4Osu@wIIFTg{aR+vQQX1qeJHc%m~=Hxs!vBh-hZlaU>SbqhA++?cY3A^ zt3s=AO`kh`eap_;D?*!`c*UdXM#DV9#+I_?J|%yu>Al%%eZ|rtg0aq^aRMlD1o6oM!o$T|%5AREX}S^T#s$#xVh2OtNdx|y;(8R%D-rME1C3Biqy?r$% zf)jOZ@q+)<(k{o%=|(0}e)cbT=Ver^yGc!`$e&IdT(6ENVQTW$l$YF^3Qmms-8f)^ z1<$YfFjpVB(p3rlEM*%-wuJxTA_Pj8R7>#V%n?Smwq@!or=S?sJal3QHa!r|4un!y zUz){l)jb^&s=lNh}5(G5;~vg7w@3Er%0b z?5i&`^^&37K4~7D*M0tE?snB0d-DN|Ac<#VALeWkr@SUeOlW5{hqVixAKiqRon`fe zypuPQgX=G!Cw}FJiOK&OI4xuIUlE_m?xVt+FMC|e4vZq0;`1fTSav`ZQBQ<~G|Lb^ zTNbvU^M@&7R20GWsrkDIFGK8TDX{E0U%g*ue#of>!#ne(8oP|6FiU}PzWLpX@LWU- zEuAlus>=}XC`E%J?oh-C7g4VWX%TV3z*10@H$S5Y_C(6U)Sh$2vVGhO0Gsp8Wwq`F zV9ojBGMoBSD`@$g&n;ueOr92g=bW@mlLZNH!<3Dy?5Wj^e#&Z#IG^v(}24q7>zB)0O8q@ju2LpYa@ z_G*`zetR{15(tK6+Nh&L(O@z?2NXEHH1F7z) z*mFHg?d(Opc&7o!M`t#B!RQOfn%U`j+5aXHo2abnL_j}=#6}pP)oz@IJ&k+%ba}!y5BJ z0%N+4cQc04k^d%z7pk~J=S*WwDqAHmpm9vR`+jTXgVxU8{R?vw-5qu6KFCshQ6E_Hq|DT&D(HmQYBJltTY?92Ry5-zZV3*3YEN%w>iGmK z(qF{k)zpN7%_nB2Hd-78s-_<553k6-Bt8UAa}3lqf5uOE(G7jB6>c6x1^jgn_Q=5) zR$$e8aBs|oGgIFtRMFfX4+g*W$uSxT>yWfEMts~NR;kZ%e;*xTMWr-kxY@lRu2P22^kw)_Uxs<* z8U8zpcNsP}6npq0AvtN!Ol?yNHF0(Hv3u~U$|89Fsbu`IaQ9o!gTcQfP408O%$+NT z_)~AMo9=GzRlxJw`eOInRSumf`y*`Li(GXR* zkdvKurR$5^i@xmHXC?f#F_eo{$J@m^x+~Kk>#O58SE-JzRtNj0SA@OdAHq)-t0=}8 zKUiGfCO)#4_3mux_0*%98}na(?}e_l0sykm9V0<&?q;{pt*%aA&8=!9qpRr~WONY^ zJX@5L(Vq|%3~rv*pNyV7!66FcweeUBIx>3b&jymw&yW)`>PU!gY9^Qjq3C0`sCz|z z4LnKv?+EFJx0n4Tp_O{IA-VcWczW9CwVuzc3@_&=Gxhf;f&}T2#Mh@!%S`RoYx5Ti zS3Ba?0a;m3ekMVYxOMc_aZzzJ7Ztr&=53GpquG)28nM)5snaZQwAvlJyr$UX18B0bKJ}%+Qi@O0v%=pL+IwAAR;I8W}}=_+c?97$bGs! zavC|D=zLTXX@cH(yZDOTgcb}YU~%rEMc(*JFnW>h@W#(x&*k3+PKhUwl68YCNLk=*^-aq2sPRC|=dH4I_w{Hcf3R9N0aSuiQ6O>VV7axj0Hhsl41D z4Dzmjis;_8?1#4L^;)0TnEz^Q!;6d;_7lflc`y#!l9ipM@($?RM6h^J+!+*iPClrO zdv{@dj{CJ?y_daOiuTQ0>ENGhEZ9(BF4I#poY{6laheXmgWnbj-Xz-ljEV4AOW8 zNyEkdyMYn0Pc$ zqCO1N#%Q3pKvHKTC0an2H}$S9uE)jk=}A_0l*;KhK7FOcgPJC;Ep)zE??0p=O8DGA zx$D`a|CIcuaBb$PnEy*QEr^lCnh>yu1`-Q;e!ZLCa8$? z#~bDRZc{yqNeO=y?aE#Z018z}45USnk4MG}-FUoY8@j#Bm#Jfp(mFTff^f%8PxZcY zJsb2HQQYQ17u;WDUDtiQM03C9f{y0iN&fzSLIlz}3@0S~XPUgk z8>~%S6>l_yZY^l>bmC+LlAZMNOOPAU`|L1QFLyKFT#j?Cb;@_(7KbT8lmEP~vnRRB zo#=eNKH*Lr(78-Geby8@U+rkq^zP_AY5|wgBq7s2~E8w%jvR2?z z{2!h_oNd_$hcENaITv5f2Cn2>+)iHJZ0a%R;u3~6lstsnr%2dr&c!z%K#&D~Nl zgNi%1;9vYfe-BEeEgr8g9ElUiQf3o4V}BN>94YDxZq*Q@35ADo$@}Ah$z|? zWN`Gs=4V`jN-l`Y&$#6=S-ExhMfRt-$~9l(&kzn4x-xf-zx=33)G9l7T($J?wJ*W& zy3DS_FFzr2Hg3ra4e=mn_-9VQ9V!O3g%6jaMe`RbMKTy)m`=eiwftvWw7Jm!67@T; z*k==Jl537J%!frbAM)N5=i%XB^aa^)IDs_u*cEgd1-TXk2XoK!9IWt9O2-r$)UxZd zUiL&bu<-yp4krJP2d9(XT#YAXE5hJfgfc)HY7u+RDT zol2#RX_@?cD#beachXg0CtZ7!f3Ki3y-Or;j+}qbzg_)jHexSj0u?oKP{jY&!si7* zxo@AM!VRXEtMCEGw8d5~`8Mr}ynRklnXglraAANOa61Ue+%Gra#lgp&_We{Ap%HGt zr7R|J23$oW%ONoiz=gzT zroUX)>N5=9RToyE>#` z-8NUc)y~CuHDq+r2XOoy)qdxGBBb!L>j;Fy zN$5%tVKK+w`K@eJ!fk_#A2d76muP;iK0LvPy}JN!R}ofpvx>gQ5-Rs$iuX^M0Zeq7 z5NlVYB|KdT+mvtsS&)XTBMS@dt2+RHcd~FPB}PuculhMtc%pIvBtQlGR3u_nicMde z2sP9`07=hC|9jb(pJAnfOcnVb1;sH>f9+j7finrFk+!dVqj&u$0bamO&e4ZgXZ6+b ziBcW%0p3wgCUqWY@MztiP@~@frEB0cqS2gK`a1+*&FmnXo@@Vgz?Q^_6 zSlPwbXXi@?XI`kQ?MnHtSeip&FX8X^0gZO)w2jxNb?ScCB~g zD)i9ABIcj}mdwYdKLML(ETeyNT}$u~=?5VyZ-b*_mvhddc+Pm#{MOIQk!SM^n-b;R zL(v!QzbG@}e}Z=<5sfHOTyQg_;Q$&Iop*LMVrpXtTbNLKCV=ivsM2@$LBb`#gZRkd z+u?RBN<%_VGPCahXOFq- z-6L+vmWHHK~3 zQ#T(fSE)O(d!X^}ZmFkq%E7fAUc{<#i%IJ+1>;|<4{`qo-_RpSw-LL5R<`87N@4(v zArDT6wS_H{`@01~B-VV<=DTLG>3bw@FN!VqM%!)?T3;?@16sIi@B8z<^F-_gQkk9W zjh-&&8 zHNBZR3*@eE{u09SR+R%t%{*Gmq*(K(UID-FrlQTzsMkyvLCEiy`d=M>D)f9%Njewj! zNadyXx3cC8w{oN{y0UPn9?!PytW3XbNkW%oi;^_Z6P2Sw>{B0g#;0q5R#bdn&(gEP ztzJb%si;v_6jmi@`JACvRAI2yS61R1kGK*S*8$NBAC{YpV!?QQ+`fv6CwM4GM%|8b zMjgUK$qlPXfibkq&V#R<4iUZM+Yp8ehyNg6x#7g#&FpaimgD=J9hS?}M`%Tw_ zfJzGj)-x6JGe#Q+(-OYbSIN;5K0BQC7TY;OYd|k`8rph<>h6!j!8tAYHDIm|99q8` zCCqN6lJE_>fVl#rVHi%MU2%We7}XR6Mrd4>E_YAEFe?Z}h;07T%7gw#o+^Cw!MTR%;JIaJc?hPkdy6f(?bWXU6eAZh`+Tf2a z+cnrDvnI72fEBF7|~6ifo1b_=!RNV!5W?n0HGzZny_vWq-=L zNhKnFc^7MA%(o>c<*mFy43f-h9WeKWmv`XjZfymfAVHKN60`8~@3<8TU3 zz^synTSN{5n>F#u;&h4TPxt^IBWK`V>&t3IV546c3#}8oD<{Uf(tTpQbLX`95jmko zD9U7f7&E1H2`_V_+-1i=0 zG&8;bxcr>hpV215$Ww<6(-90wcrrggS_OpvPHm-ucm7Z_Yc%+VbMXrwVemK2y{sbX ztvIwU8uG%oGOM;mNRjkb9?CUyLxo1~zU2DqiM_Zo`9yQ5xB31yF?| zz-$p6J%veD1CQ9tnb1T`A<&L%#wNU# zowyfot_5p{;4Wy+u*Bs1XOA!kV%Qf=- zhW;D8<;Oqf7QgRF`Tq9b* zcE5V$3H6b)_uL8i{_2i;l*%1iVV5pK`|A$Cx!TH zdV5(3R%W7UYaM3jZ0i$#n$-SU7DiXNEsR$9V?_9`gsj>Tttp$N7ckPIGN0n(-ezc# z%7puoAd%^=O8K+t;#>3yu2HNnLvwI^ikbWM<~b4NeYP*Wb5QyssC^r0U{HjS?0m1R zi&te#NP!cid8Z4l`>^%q@At>nReQr$Zs&8DXv{jd%if^Vbh7zmrjby?)(b2$5M7ICAB52x_v96);W=F|3p^z?#?@F81to;ITTL&D)b{0Jo?8fYky*)`a^zKfbO zyKvB{+tG8^?8k43Mncjy@>!!D<+IT?+IhR>gLdvvVAaieS|zO5Rg zqi=34D=uGAWWQCch;e(k9p>*0xAVZ%Q%1)>H$ku?JQ4{ApXOUMAw?^*RqFF9aH$BV zualvF69+=g7T98yfvQA2%5Hd4`n0H~=%Xs6Io~L2PHkUv$`id3o^0)M6KBsGYNHEZ z3Ae*)U{_Sce-MWKz^AydSgx8+85jP+Fgnu#eC^wVyu0IszuK4gGct|kE{+rQ8@{13 z*e=4=sMhlbl&sr@uH*v=G2!g|^4$%Ton$5JH@umjmcT?vDtV7yZ=Vj~n1k)7jg&@J zMF9t!$%;YEAC=%@cO-sD1lQE$3+wD6^`ZG9&n1S#vGfQBhiWB;d zAS{lWD+(W*d%Mmr{)PpvmfO!E^m4FF8=U+lN9<8axSF(f_elY#G@<-`Fey1TKprU( z;XCA!8l9y!MDjcxU!tJ?oqc1gJ@#k&ej(pW4Eq9-fG&QUlD@|t3dN|F{MDywAJzP2 zXwg*^(lUwpaj_UeC!_f?L4ZDvzKHD#r;x@8OEtht^%Fj*F@WBJa|gx^rQ z5(;^(&yd>TdtUk8x0&MaW9|A4Fd{a5U&OinP#CxDiq(I=?3VOLe9zZ?eed>?c2FahlDG;KDWBDm8s)Qk zdo0vu(HnnjgFWt;Zjay1u*bc#?6JIs2l}NI_Q=)nkTM&-bl#zZhQirR+|hG7Xm<@a z*Djan!ecJGiDiTx;39IzP02KSlY;H_^k{8vK8+bv^t&3p#B1EJfV1nTex|jP zla|&cQay7vnTo1s9j9>$F{IHi=%|lV50tCy@Tv2;`uLI^%tZdTb0TFrH?>bT`Y(3A zI6AY1^T#bHnmyR)hZ{n7T8Bo}2K$Vn*-L$jW-oQVbddA6GDX>xrO;V8gz8Sq4Zkdz z8}&0RlO_EHRzY`5#~^yeUs2x$>27yRPZa6S17(7c$h$?@`6GCK^gVI-wx}eujI0|$ zoAy5_A?+YFFuLl?qAq|;_ce^MH69vwI5zI{4v?o@CoW76AeI&FY* z^W4o9GiXNVW(WSQbGJH;wykKi;XTT16vX{@0fSP}XgiVG0=u+|IDGu&r?Slvb|rHO z^pf3W)?gG)=@0iZhtRTI2L?n9_6V6eD`f=&g^f~cS!UWzsqG({(ak>MtdPvCGi zXIg0bVp?d`Y+0Qa+AdSRDpNtbew3-8Wj7Dh%6c9LJkReomew%(em8@^6 z$9qx9a>`8$9VARE&UN`S?Bw>7QrzhT&U8v~zf>7+PniffqFf+!O$6tmEw(^NoIt1Z zaCF3MkfI@D2O{;jGf|IQ<<#TOBxS7Sds2`45-fM59+zgd*I};dWT41kv#6hHoG#Rv z8ka7RJ2kFj3B9Wt*CnKnRO6awbI|*F=1OrgBB{3lEk8c?TK_+A%PkwBTQU?j?Ccwl2Les2c^2qt0hG^HTuqs`Q&=M4FzyV<=K@WB zJKvZ`8Gu&GXGPG$%ZquAh70Ah<#aLWpVN~F=G4Rj4j}t$psiyq7tEQt*%<)RE^8Uw z|DTl5lH5A}A1b1q=@ijUrx8VTK@m;pa%TEl1AB0$4J+NR$d4%Nf&A*cw>Fv@X5cbq z9~^AZ<2?iFo8o1&dx6@NzB>Qo>wQrBxU2JjrJdHlHDdF*3pJoMD5>dcEKKi_6&1P` zd`^$F)E+P`wc&*^?n8eywIwI-hWYCo@G?EMXJ+;_{Zh(hz!M)xPi=)!YBQACg>u5V zl8e^Fhqd_!(g;*9z26FFQ%pp`WgrwAUP)T5UiZ9r{hDs0~>)g~1-^t0!7kY4a>9Zz!%Os&%m$DNghauv4UkfLw@SaNU^ z{+RgpRbf-poeEp#%zi3tVxv%D`(cBWGQ}nu!xnLicF&c2xd&!8*I<^lq`bB&QU=52 zO{BxNHs$Y>Y8ZTDp9jE1=T`LC)+K76X!4(n!5PLnpMx3MT;wcA=;lJ^1-$;fFw|}? z)H((f{Wh^cTy1b1=wWtaVPB`ThKAci_ECxg@JFb)!M$>$q0W6j-oA6)VWd-*L&=TH zx_sZyedqcECGYPtqv7^symluXZnAbKYHg;@HtKf_N=4_c!{%<$@HEyw)mZy#y!KV6 z$o3&q+}p>ozGIz6xYJ~#m{(YoY^nAgQO^#a9CHWAaWvExMn&vt_zLMIom7w^G=79T~C=&CY2zE8vQb!o9~d#TuKV3EB2q-rM-);*h(cc z+ByU_4(n~dVicq#mi(2o;^aTM&(Fnbdp zF@4kK9#^>se1sy;caOMxOmdHL?lHzaYTRQ7C`N|7du$ZK`M0j;(QOq_TMgH|WFAkq zy+CWMwCKQ7?T7_U(>wDAU@&{8pIt-}CyQ#p)M9tX^z3C7g`osyUB@A|Q!hgjZbpAe z5M+ddg?$MKwccP3*QaZWkI``kE|uU@^xnZx_ZTInzR;VGqVvWG6N&DQmF}F*}muJ_{|u zm%||RI@I3W@;hk(iXt{txrJsxFqhlNnLyr~;FJ{J()QI%5@OZ}lR~_jiH4&`P(V@P zuJxn5af-Zy;^bWB2q0o}GH_*1USD=@vEG|^63K(C>d8%iE3<3RWsODsjc3%Z;NBWK z2cO>jb@i%toA`4?jzogiApV;mcz6J>QeZ6IFJ!Oi@}cEm`FfPEnR6$D%+A6mX_m;N zyzvb}(-{?j9n+GB?=|T7aKdvGaGfing>4%wC35SzfFK;6WkPZ{HH`3H` z{&M<;EwkK)630E=uCK*D{+^)(_Ub;cUoT4fm6xF+zaV~~#(~VGIGiBB*W;Q;_Mu2) za7SE#x-k1Um4(6q7h7`M6b|gbyT5*Cq<)|Z2dE#EH|6n{Sc-j{EsegFU-&wEZNrVK ztNSvV9ThVw=CB&hPED8@I`~!s- zH{Mg#mc5Z+S9SrvT(2y5jl?NyXMPAWvtYUCN@nYx+U}XYh4Btz%H2IDINk1!VEIj! z5r^1Iu+tp{MCU2MxB{JQ<0uC_kz%E(I zy+o((H+kn36N<`yRmuz#G1ec`x>l`oLZUiF$q^6@5O4oeMkgTWTNS# zk6|ayze59>L?50q!n0VED6e0uI+J)Ex_&&Z%3bqTruS3cyiUT&+~@;NMc4nr;Y$TG z-z=!36`Jy&F~!mr(>Mwiir9Kh8+;3d*U|r2keZIJf|q@j7tYb+nKgKsNliy8MN8yS zdBh^Ild)_`0)2 zq96X=<(r9te5$JyJsD8I4N(C*rlm)*4wPvvG>w}^3!;*nKZ?1m;9h|*e{&AFAu`VD z%~d9<6aJGuP+8r7=hbx+bkmxC4Vs1(tO$|A#NyLHAezNNO39RTMku zL4Y>Ve)cNXPtZuOL2UZ3Rh^gpFS;~BK|eNKQrmsW+>+C%HR$v^;ScMos80m@_pg&d z%1@zMs_cUddU{Y=L5np@i+DWu*~*p^Ce-7uVKPoc*Uov#&{ZigzCla>i@8&5DGDTR zD3XEUT@ih6B+W_+gDjbn8~4Z)y&V`h`}64O#MY-@O5_?uqt{bxqIVXE z>LY(xpUQo0EN+Gpz3G1@a>@|zff z1vG(~TTV<~>s^n;3vtH=!n3~vsd*f+$L zF^a z)Cn5bTz2L5jqwZN%3cD*P7gCU&|92*U_smPRk-`{7N7mV58KY}0mlXjPG?-4;mlu9m*^05CA}QVAKo*fq8Gb*Uf28|SGQ`?X;x|8hrl|;o$55LS&FP~Zd`nZ{))P!qAl#SF&V#*j^*hg0dTRGt zUsQif_ZLgb1K}gC;fWxHkE%7zocfen{C&6m|AC5lzk}$Q-;@8+MXt5`fruIN1BgMS z!Mwbie!|0pOg{mbx0kgpe1ws*-ui2O@cYU9y;EF2wUpys*^jedEviI#t!4(`ojr^B ze+jjNf!z1?$q^jauQxwPzmWBys}Twhw9|#g(oe#{coiP) z15ERk4!#1<`@>f!-?4W6hL?y9E5Wz9QN^S$OR%4WT`gMvZLEdhKD&a^?KK?|H}ArU z@1IQJnx~LVk=2s8z)#BG2HX6ZFICjzhRF3 zl53-0ms*_kD;y!vYrpo`_ZbXb{?n(t!#_s(eL-8>{iZef_kg!NEDI4mUZqhK&Ui zL4H-&Pjlvl3C(wcW;m<8+@Ma=-O^^jckb(GGd#!k-n1EX(B0yU=}6a$?bqU)`V8ry zcYtvE_3=)Z;VmS%$>5^(aVas_s7qxag)&u8X2iVZr zQM^>m*?JGQI%1vqgQPW^=-f0VQQIL4#vRZ-{V7~jNKm+_k&yCTrKzIxAj~0GkSD?W z4(3La%;EHUZ4VQtBi(v2zLVH4V-b6iwa8@K?R_$JHiM=BnwYz(f*t@Lb7MBB7Tce> zS&TrFzcbbuV$NqXN+54_7FcBI*uk0280y;9`Qo8YcD@gSzpF@%&u$_*x77IO{Fd;B z7u{!!k)PAjgzl6wSWMj%n?ogUoluWG%}WQSd;%ar|>X* zF94tyj&1TEjdd0%)TXI$227?rf~OB-uS$=Xgy-X+N=uoF4aHz*QMR(A+&Ts@Cze{2)ScJ-oG+NWmM|+DO zox4l&%;v-6IuAsA4>AnQ(Dw65WHbBeOWE{P*e#pw*m~-n?lTG zl#dL&qiCooeRoL}W`jOCRhV<`4%g}J{U$jjIg?HwMHp04e=)mFh?hQ)Nhb_o_Os{I z=x;Aqe|ch{`b!t;FYPQ?DSvlx0iBXTrytUiv}->Y3ysYzJ9t?k<@q2X-@`|3r&nrd)%~k&S^K5ospz+Dmz07VK^!oOn}g1 zUhL)k#%(5sZq3sUnT>iLpl~go0;C<2qQsA&MR1^0V@@V;o>PrE-Vk;8Sk8Q$QcQ9z zsm)^4UQ}XMOC{z!RARb0rNm-X$f(3x=13)`bBLp#obfyHE?|34wV1OszPkN>i9`~n zU=k2|R|S(x=vSl`bHNuFu0htnR8OSt;t16{Rg+j(ppj6)e^g@XTn3|%;zS0cqjyNi`j<&~1yT6T!QheJI!2`O@dy>DYnuKMuqz^aESm67@(IupMV;sL0P3lot{C#70U+c(GyT>6 z4KGvA`F3Mp!;?V4TWr2?+vc9ci!8tx!Q>KwKw5*!v znTAv&dGSDdQ9U2PUR2Zotyu&5i7Jk`98@filq${uH5^6uSHt;az0`2ZN3={4=bV%K z0P`tY%yli+?cT`PTJQgbwJ1he)}ls>IGDAlVb*#SRwJ!|iSffYKUX<>Rk^Xq&{qTZs%c}9;Wzbtz?296 z(UjlEXxICk^e?%T7DmRPzQuKeuug5F>i}S&C8!7iv~3=M0B5AX)PFq7bZWA(;&`UN z4))pc$y|ve9g^evR7mb_T0!itA{(*3BD&cxgM_r*-pp;^~~|ZQI<&Qs?Sj=M-%euBdgh zd_q61n`zX>#^#U@VRzYoS;wdXZ)$c`(?Ud)z9FBJ_H>F;sGbtF`% zW-5THN!M|S@XzKz7VhN?8W`K&$%lXQTK{5zWLv{i+(BzKU)?(K{}Fm0mgX{Y#oG0o zpUfsL)Gdd1GDeN>QwqE?r5vVGUc)bIcoQKvKlH`)(h75sOz@&a{h1!c8e4M=-7Q>b z0DvWET|;~#_>=9q5>x(UdoVA%(i(XEShF%9k94;wS+3P05|!7FtpWbwbws)bsB260 zBhQvY*lmJO&eo5%(`EV_Wxe)VZy@*j~pyUTKj|M^9JkavQdrE?oZbP`_T7?yhnCkdwYM5y)>10Cu#K;c^9jwsAmIT+={Ci z;^XCrG*8v2!4LJa|4DM#^30Y7xYo9KfblF8gxuhj)t9}Ibn4(3s_3dX-TI4fXT25+ zEL^~7;J)gjOPnRud!j5IJZ)0xGMqyQX+yrxM$O$SC~K2yFW-l#{pkY}To%w)GU{BZ zvp_>KJpopb5fRs4V(w7yws^blvxDF48gauha1dcflm(aB%^YItb5^8^VduT zfi85*l|Q#ZIZ7njYyCTk9jvwzdM{FKJF6usJl3w?{Jo!rdVJv>vNE-E7L9SKY(OR{ zQAE52C4JUkco-kvyOUM;2&c*BG;gmdIjXEq0N#Nh$#lFOK0zG=Ve$*z_%ZOP6a9>W zDI&bVv{6Ri$Uv-Q9j}nP%Zeqp@ykN->H(;y_(YU7rTN4}?s^-hLZhopE4%5Hg`c*{ z^sfJYl_?@ToXV8j#x)w>u7*LJ7gct#QuE-ZJKc*$JOT!BZ!1nj(YEK)digy-NdrB4=``R5pJdBuaDs*}m!S3>B-_`k-3dD~Q5wnIu; zgOD~gZEFnfQo~b|U%%qZT-xeDNQcyoBT*TJd$eS~Ea9&++2=EH|H1s1KSS>(??@k< z8viyKljy&CC;f$sr8pL=dGcxYy)4IGK31u>!gL}xPw0(Ax1FF-1VqaO1yW)c5Y&ba z(WMkoVv8$hdM`iH-LzV5l?4=2uA9Io3)Cr%DRjt1-!-!WyF^#i%DP4cIh#btN^jQL zuu%wTV!K4}a|!V%$$CvmR<0>*#qs`2@%bO(6Rq4&USBMhaI$ga&^R6?0 zH0CWw#cEMY#8QKf#nG>7(8FJk_*DCNul1wuJ^mkw?Qa?FJeG)XBAC>t-xq6HslA{z z#LIq%1dNZW!TOqR5$9rW#r{;8*)hVqR)_VOod;b#I|OxK@6)uKkRKH{xI` z=KW}OcoeTi`+%8_w=z2_uROnhtD`z#X>T#Kw5FRXnHiq}K1X{$?rf)BI7I8JdD3B6 z^Z9-!U^WbRQlAcMFx|fW%#P4^=ofl#Uh6jqM9^^gRB%?lmNGl1MNXGGUycCS8y>6{ z7*$BOFxr!7y!dzjrTnIKb`CO;!UPeDQPs_#LbfbW$9)qv$TA%`puKt{W{-aeuJcconSj~D{Ad2VrUK7W} zX6}hC6Lj|}-s%LiN4IeQkTSwYsaXL|RYI|fq(NuSrP5qle81ncn#`SzL9UwVi;)ol z)z4l{G2RW&(ckzK=U5_Z_Qf)0@QL$nt<)kiWWqq^8s2d7fi1}fvc%BdL5l&405?87 zh6M2`H$JR{UiR14h6fR!gZX!xygupfOp=ZW}*1ub74!@_g{#_ZGA9o7s^dM#; z{|HH96aGe{S4YjXPS6{?Qx~Bf{!lHK0Xo;i3F>5&KGYFx`M0vN%vo^Ke>!|c9m*vt z(N=$2M^ZR^^w$;cnTU~?orA9aQu4x1Hxjv9jaABgAD44O3HMJB*x@R;;mBmdH5KvdI3o~%6 z5{)_)G4R(+XhcKB84{iN$N>H1iE;l=k7?l;pnqGoq~y=Ne|N9yVg0~S=_1x0P4luj z(5_a}xE{lKoi!QpA?BvoGId1TPv&k{Wu*4qIs$g9Nb090{nVoL@dkJK`^uT#8Vgx| zH$|z&XyIy__%sWuHtTD5K#ET|NT9hxZOJUZn%|1%<71#5ngWME_~xprWX{xGny*Y~ z5y;-ACU}d7k8Lvz$e7g^eu<`IoB_2+$t;IrhmzM@_iD?UvDc ziObvYgYn6)q@OT_P~esFU)RW`IPnIK%%#E=uf@DetH;jtF727=edEDby;*Axc}+hv zy&0=`>(E;VZ(r}6=>l^MjIpI`x+)42)$Uku_Sk9LQ3=8_m6FDtzhG@@ovPRnO_mv#i3(UqTsvcmgZ zr_YcN+xd{@S!8o5--=53KedISWu@2}vX0&#UDi%A)Oguh`-wnrNKBbO19I(Uck)h4 z#KHkvqQz8t^R^J3@_(hxbjttfCXym`aeoamnCx#TjAHI?o_hHqT>5fpe@CZ6(HUMB$h_ z5!cfQd5ip7gS#ibkiNxQekBmDB%ZDJix;>r|AB4`JK1?<8`(4I4%!2MI<)^r_QRM) z7EWk^6;eRnf+l1DV-kMU;&}oVbiNABW)r}c_&M6AJ+`QQOY<4AF5`9Qc2&(S_0}MY zr{t(GaMjWvTc0|YTr%oC9y3K&Onm&4Y;oe=$yoiGUqiV#A@*9QNoFffGDiC$GQ~}O zv8cAHsItCV!qspgiQxTvW@r$ve9{aNOI0@8u{TiA`SaQ9Mc{}sVZ*HR?ZWK7ttf_j zcN{XjV#!-*ZL=et0Xy3t4CO@^PNzEUpx#*{KAN=2EZb{hZSM1>`m3yd$FBn?haXQy zBhepzOn4g_FZ&e$68?^#RB)dl%i!_uGd zcZ}V0LUsD1Nk5-B%Jx{yUYBPLN(Gh&g4g3^HXssA`Rk2+>*LRoUABuB3LN; z?W$-Ag6j$!M#GKc;!P0|5i0H$;Dt} zC?Ft}czQ_qRzt#HZuN~{3jym%jz?i3Kam1xP1+ zM1H>KNgl*dOFazT?~86~-dE&+$mmrCl?WQ%3>Wj+0U-R1f_<~-7GANS z#4M^|tJjYoRe7XJcxY&YUK>QKc;-Fv9wrKqLF#;x^sXzgQsa$B$Y-T zvY&!Ocf`=ke$2!???Vu;tt3@AnDW|30dH^|12`;T;-WfVL>pr*y7F~sD8zAtr=yi) zE{nGfqwSmsRJKi*+_RyLTN-*?RaKf9w?Wu5d#chWW7|{7QL79pxXWEiFqZ@kZCttI zZgwz~A}DES+jI&V+7|CC=L;n3x03#T6f5a3(a>QfJ)jcV?xpNyAm~_5>w(KpGigkT zt@%9I>gwhb_^nAF#~1JJ}_b7Z~lplZH?`fZYq3)l~IK#Z+f-M zRJ(EFnmcW;=BI9A8<<&X)QwHFHZVB4hIJ_txb!e9s3-g{V2L5s>hyjz>?T}6#e(Xw zepR>@riJ*L^hj;=h9`){t4esEi-rzkf?Y#eJ+`eX{4d4&MtdW=R?P&gMLH94w8mBT zO=8ZTE<7QkGWRf7V_11~++`7WSgy7B8CS=4Y5d<){#{!30fg+o-te=6<1-nS9^IW3 zBF^rK2VAOS^?#AoKjnAjzx^}Or`enzZ4-hI;054VsZOOP#y?PG!7A@hRIZLHD>6*u zsqkBLmsxtvQ4pp`xC}>as~1;EIxgSeEy(AJ#!LqBb=sW@{td=Ni&b+|zs}FZQD1WW zYt7%KFk2CQ6T%{V)A$Tdf6oZrn~>f76p})X)%*gICh@fsAmMs<&fF7@Nh#&MguKc) z$Ym^_oFc;MtHZz48pKt^z^{cXKtSzTycIQlZTK`pgm6nu_$X(liOCPZbLGR=X=}ga zs&<&Ab;6k~Db}{T2HJ>tkC9f1aQZD(?lTcHSY#CIs2^$(-%oL^8|ZKaiZ9 zPkJZiv5Q~h&D+h~gUgvzH@xDs3#)(a4!8_Anf}teYpV<~_}%M<=ul`;6Yf4I{;Tn* z-x=rBZRWfgFtIlk6%9k!;x`O|2idrQwazRZ&j2R*Y3#{4F5@n`X|&45>a#eR-B94J zyAr5`#={Hg2g7T{^3!Xv{Wsi5g%MKMkulPclHj(!>?szH>iu$~S1~i+H~KMh%PD zJ$LP^$nL!mc9O_ai&G&rtK`fD!6+?aqm;I9d3-U{?$*+3e@9xagSNjXeQ@=#YHyu? z!oFJl_U*s=ZPL>B<~5%u3oD-av%a)?*#Bs`Q&akuyOjg@<>IvPT7Lur^utyb+WZCR z$x8g<^D*Xkg{soQs)rhUf-juSbIpZBX>v@kb%+i)RW$pMUDoYNP4`-nv<*%KJB-_Tw|dk))g zd{G&c^DLJW1YA(YpNTgU5{f?yClu3u%%ueZoqTDp{Fity@nGV=%sjJI^G_YmW;(=r zmD=~eRr&P@Q~7U zkp_I)J1bv~N`+gL{HG)bhyD*R=QNT0%*qZH0C9|M%@fN+)U1V095-J(N-=3eksGA< zEga(b^;+JVy*`m+tIiC`q#Y)Ly-kxYgQ>Ht4&k4reZP4SBayrw+0(HJUGy z8b^8};tksf2lGy+kaERfa<8DV(9oXz&ZDcy9j;L!b`_9HXIT@O%6}xbPhG>}sRL8c z#2ekwjY7_~@)uU^=7xWmAwFVc(e$~KYH73tXeJPCNn<2kob-_J4Et0BiIXWI;6h?B z|5@Ot?rl5DZF~+_L;J}buSmErQnVW&b3B2}VDZ&M%dyz)l!|gjZBnD5n4#2_9G0vJ zze+HF!NGQ5Pl5(s!v|<&KG83(NQ;l)>auCTgsrSa2o4&3GJ+hp zo31C3Kkmn7n3e8CkaY!P@7ihjJjLgtoFp*)w*KhxvY|)$4Zgo>!vtDXtWeQQ^^^3& zu!8J1W zG&~1;!a=XS%~CGeNkyT7COc888dThEYs=bCRc9cU(Y#20S`u7WAh<5}!X|<2!CM4m zeZCYqSpMhkoJ;fY0n-&9{|Y5&KE=ncicfwJ(KTlPKNXX$iS>t;aSuY=YnU)?BiriY z!2$8y7ckC**K%z{(2hm0dt43sk@)s!;+2obd)G?$`sy#V4WAIPQB~;=6~_Y-wt%p= zI9}BfA2f&{8|a84fp(54jn?BtT%gdx{E6fC^x6Suel;x$w-P6^YLcOu-khdIku=Fp zzVh2VrU84U=C8!u{VQRY3U;=R^4pFv2Cn&}C|6?qGsu5j-ai%d9trc=w1`>|1~Ysj zyTzWMCJ7)yqsqa&4hk1-j3&TKyq0FwyVA!p9k=jNI2AVmK1yDvRW}F*E#C%S`<-Iv zzDtrs@4QWPB%;+NMX9$EM>tZR*}SrNgd?Bj4?2xXnVOHIQR%y#w;vJil~>WH{Pxv$ zKzmR*jrX!+s0>@K-xmWFWThWe#OaA^IBuQ0T6#ofsz&{lTSCHQ?xMdIJ_QS3;=dRprkg`hM3ojwRNlIXZX_z7 zwJnE8uSWfBtM(ya8EeUDIjA>zFJILhDa2BeX~JtxScr3Ym83s{s)YgWEsQLy-(`ul z+#x~gZVmVsyPLGRhjm|GF3G%X#Q)FTo4`p?U5o$IGXu=9)qtSHpbQGi#3hWPGKxw; zk5-!=#RaznHS#3#vJvbSH6RV$4O3|v(TLF`M)R_nyd;k-BB0>(49>7b0gbXn1x=*O zHp-GPY|_8)xwop9VL-CH|Nr;-`H|_WTX#M8+;h)8_bejGjEf{wU4GIyvWWCI*>t3L zw+EuCt#Y>^RJ>;{kw2M%MdQ`o01aj?kv{}^soN7U#=fP(fA*wzs@}tL)UMW5qv60@ zrFWm;ZUXVqbV2EcWlCXqFvKaCwEV^r8lg57Ge@-2bG|FW2P^u)FvOokn_VRUwX_JxN<61H8ha-eN#SmR z#GEST&Z=o?NUU(@9a=U=BqivQp!d6`G1)n(p(J-L=H5B#?gp-x9+*beoD!NaYU&r6 zi4}!}XMcqdo|SGYcrGLe3F~&!)pmG2h^p_g<_r5SoO5-F4vM8m#J~=~Q+fka&a-M? zZT0tG*>S>cX65ZbW}FXiBRx4qiN23QT8wuIW9f9lP}02@<_T#M(3^t zf|SK&@jJIlrRNqEEhzGnf+CqmEKdVo56f1=GTYx)*7A6t#Z(@H`NPbSFcasn-rBtB z*k>$WZ7kkmZ-LP<#;!%1P)*19)r}2n8taRvqiLu+9R{?^1utj`XyoOgeOEq>&em;R@NxFvA{CuL1N`w7L z3)a0m<1{y~g>ZXtk1evM!oAb&Y(2~clYL_N%!a|gR!2PT=Q=QWj?6i(2G|IO6>bE2 z;yTUkz$l>~CHk~EdVRz7P;0JN4i>9qtft3!9@|FGIVIhCP^gz@Vi2^$>mw@g&5PjB zdWGg3)zfzmap8JUN+o_L_^pocyVDKcC#i5!^m&)8-KeT}t8gyiEzs5`U=6$=e_!NZ zaXnqUdfuk);NTw#M1q5#7f?i=mz@K8_#U5H>$ke}aEo*T`g@>9p>F>wiv772(fBo>xMP@L<}gX8cSdBL{ z9ck#^sJmQeku~wWkXBN?HTu0WS&eNvokYHtr01x_l{%5_fE9WVNey*7W(?MevOps& zTD?GTbbBZZ^jxj--=688zPza8<_e*q*xRyFt7N6#X5K!b#ntuq3T=T|Y_yp@@BO@7!@u@f@ z#gra~6WqnASsgN@8`^(PVhSa+F@zWb_7G~|3I__j8##OAM04~$ltrZvj$$4=$%QFU z&a+#>>n-{LnMqKM=DkH!qc2KrP>t$$VUMrQHz_eU69NLf87I|(biq)hDy7VFn047@ zi9@KG5Tu3EQU~b1cYu~};phRKN_@bG z;fZh;2Q^yUd!hdR7rqzH(eo|z16C((TVVtwiP8n!F9i}XYRDRWi6vVR1`#m%{)*$crrTR`{xNg6a_?^X=D zhzeEr5sD>G@XfVP^44Ra{mn?gEgHcA`;RP4*F%#ymcm2RHua-CIOCy7j-N)&PpZ_< zud3CLcDY!yd^B%p>td-=jY{|eZj~R89zJM?e;K}CcGnj7l4KaQcY7 z%8Pi8Pb#gT~9+LD5Z zQd%&wFFS}ZSPv_%sFFK^ZK-sB?FWf4Sk&;2=Q(MxC7+2aaAI^v8NP{#Gq6zwEf}DE z1>xC*wPEi-%=3v8 zgP={j+W9fLJG$C=={Q~Oyx+mq&PT^|weu1>-WSqZ&d-kA|8kWH>bQP(Mrc1fqV$b_ z%VKNb1x|>>LOt(<=syKYQq_3{Rh^Nq z>K=${r`0G0;hZm{aZ;%$03xKDI8VxyCVII3Z>+@UsIznTH|R=oan9#ngb-EfNp1%IQalm4XTE_vK#ghx1G0A>AJ-9eq(0@C&ryX&s zqB$drCrd}_IzCT3e?w~IOhFe0iRxk+%0`&F;b`Y(kio@L9PRu@MxXd*MFO|=#a?z&sLcoo6)6?|_{jAy zg~Ix0yzJblJ%jvIk3+2yyzIytxh{NrL9ef45NMAs%?Vb?CNn z2|H&VGMD7r_}QU6WFFLQ{ImXb+}2kLt#GM;+dBSrWK%#1Z7AnOzE zb(3&Bxrr=ruCwo8zPsxxX~=#na9mNYo@f2>-$8B)T8MIWJqqY06;|g_t|qwtbxs!Q zqx|a#178?*r#3ja+4Zk;kcu=5FQin5x_aalAdI>~!tTYM%|Jc#*62cssw26{Z%ba)N_qSw}>;HvIX5dA(NE3bK}@ zs}JPowVeTfqN5#!Y}8haXxE3?E^~NueZKyt{rUR8qw7DmuN$dfN0_?hgCeF}wnBKb z&%Pljs)7_Lfs5wD2r25?q|&r7N$bfi|NXqAnnA_Ip1_JOy^o)RMr@D5s&`WFcN3m# zMc#R4D<fc;+dItEM<<)n9Y_JGslaWf zs5atykgAp2%x8G^m_OWRx?VN;+%xq~x9E~ zLHH4fG>H4*zniJQ_Qu~P?kE3(_sn*h$8X#YUU!VRIyvO2K;=pt9Hu_1(($VBow-wa z{uE!F7sAOm*4sPrt=ZRvwZuc|MdBGK_5KO2L(7q<`r64m=(=|HQ*AD70(|(;#E<({ zI)V?)CuL+f>%@oV+OqM_1S_`$E8nrop1n^XRu+x~D?bcY9)@2HRyGBNaovd@EUQOc zLDX1wSL2YWM7^Sm-E|j-Xv;M1M3cPxU|tm~;xV@C^c5?6jW!-lkNKO2O_(rBXG5pR zDIk$sVDT{=O_T>j=f^y`+l|Yt|GZ>$NlAE;@!Z2A^80xSuSWc7Dv!?iC0OwoPm{!K z`|mukG@Il{bm%?;YxFkXT?oA9fzXq{ZR55Ivl3o&-3t1`BsMPX7hgD7*v@sij?Uug*zL$& zrK#O0{j!pFhS83dc;aS~mD}^^DjGBTM1?Wu=NbL;xc+HWKV$DR`i#Ase>d~b;@?RA z4ddSc{$Vfj)%8L9EQN+;(QVaBZwExDC)QIGF06++>%E9PR<@dzuT1jWzf&JDj}h{4 zI2TZb^I3hmM@iz_(w*o#@Al|7%T~{jySQ=*7JW&o*}IYkpOq6^_zHN*r!9MImGf=B zXo40 zt4xV)UQ$jOGoDW0v#E@G;80J6lMU;gpUW&H>K938B8jz>Bq+gGae$;uen3ERJtYT` zK;l_BwFNGDR<`Rfw}r_nDJ!C;tK>s6F7E+fvVtFHI7xEr@EIeDbrT1{kJ4$TPwJLU z=EtPb1)6E%N$op#vWE1&^HrX5*Rh=`(Kv%?LPJfEIn!M~3%=-}kLSDv1osO-mPm#{ z(ncW!)e?|#SWBeP5#J@z5%G{aYVVHw)%3SN+^lYs@KaB57gSG^lQD$KTSuQq5#=zD zJ8%Jn+||nuQNZ|-|9BkdK60HdGS`oR-6pA`O=n2Ny$Vl{+;<*K>~l$>2BA|Xp{X+% zzz>j~;YWa<%#Ge>J{mFc#w5801rp0uuEatSmsvFjR#a1Y`i8F)!A8xmu0%IQU6!tL zq+}Ltj>vuImxM0l>S?*UdkCN9f*^h8UpI^LH`;YG)}yZA^^~EXFL$8lBepl&S1ML+ zIEW>u_E7KK`67M;Lnk_*Tg-_0c^9au+YBo?gZM1r$F1b}Md{6oI4Zt8_BwqpqN1TM z395vT>G;kic>D3?n*K@`=tr8t`RyaaO}-|B?!@uk^Q0@xa^vr9+zM9xh(xfNp<0OL z8Qj+jkyxzqG!l>E>DWlTn?Z@bBG6gtUhrHN zo`=$|F}IsQGui9L?IN1&hfAw9mu24pL8?_T)VgGq^2`J)Y$!|KK?&XjDa^z|ArbAb zwl|lTjOHdt{6&nyq~#SUjUAAi&yg)I{oUOlK9_64*Bt5N>Rra7$2~|2e`zrdlvdRvdy~YXE9mXkv|jTyALp2SNk3 z$YtNGm4eX)_k9KPiJD!yd<(Ma*F2 zyTQLRgNwd)3uF~0kx9@?$y_ZTdJB5+xG^FX0LmQ5e?oZ*$yGdzWW~9bKNM*qgFyZP zjYlzFkGX!-@?Ls2*~}&KH{IxCjh7=#(X;e*(sby_K^z$!ocH6DOcLc^p`S1nebU)Y zFLXhvOa;Diwn!P(grsRFhAtke1X-A(zv(>8pQ8Jy+9>-}C0r$>+m{~_>3w{yEFr|Oc)P-c z?T`|j2~$xbXchGBuu|D-%58!s|M*HBu1|D7#2fs4Wr${P3#9f{0(F+1 zY;BuHH-^^xvq)7L^?v% zbpzrTI8p%zQKEu%se8^8`*+NCdL+j^m7KCIazKXshB21izJ60F9)l`L$HeH8tp*o^pjE2P0|ApbCXrG)AF@h(YAw(ClfIicOz1#b9K0vvG^Ka z)VU@M?5`Dsqd$yzlPT@(NtCOT#WiuW+1_KtCrqE zQ#C2LvA328rkZxww4a=8N`maUt8IaIXZK~RV1xf77mLP*mC8Ahg7whmqKhl2 zQtGnuby=l!Q~E)b$OIHD6AG5$fl_(+L~Pxp55Ac_^A%?XN&Ro*>mmG+%H`y8y)C&$ zGe)UY7@o^6lo*9Z{HjkYkQ9$O{7vWO{sc~RYco{TUp=UcNz;QG&Qr%)(--Jk|8_F) zp7@7=ea$d;Aa=7bjWj--t5xb&z4rQ3G(x!5hd2zBz)eQ?pFHhGxRjUQ5N0)J5|?lx zUWrgYf|Idm9MUbL#-LF_1+wuY+EDWm;+qEsb*n7nO56ykw?NyRCb}X2nUVRT*b{LVlyevJ*I_P- z3C}OkT#(M4F+eax2v2mMX~ZPXjGC#-QK*nvjf)Rx=QidT;YT$`u>WE-?nM0VSQD`o z4Q184&{YNfq@*IniTNU*feJ+so}5G0^)e76eiBHT!8Alov`n))(FE-&1Dr=tWl(mn zh*8cpqMwpeO>Sm;@J1;)YvgA318-*2dS>6^2i#TUw@kSdb*a4TpvuZ71zQVx>p?ZT zToM1!nSsQW!ysld?j_P;T=_5=*9>cmO9mQ8V;Kufqzt^;>j`2Q-8aUFi@*qT5n1^m zBmQOHl-3_e!cvp|)UHlHQKwn88v(Vhj@%{Y3sPzAR{VFy&j2=sYj5;Sf{CYa=Qp(v zQ-(HsFQzcmlNQ5eW_D%mR$S<9C1_-+ne-3I8sBe`h<&8XUcG1|2I;3Cf;e zO8Xgi|S4tf(N{8sHWxP0VmF#^D_S%4NZG-*PGt$%j(ZlB$ zbMB>1=L!DkkkArB{L>osHKU}MCW$8APojw%>Xr2*3n@__>trpl%{ae=nEz%-qt!(? zn=UU3vAp%LCYFyucLLct+tiBrsZvJcGe;S5)gT0GD7WVfTp4;Oq0cKaie&%(>(xFw z+wyH7igX|`zgmz@Z25TBGKl#DND7qAzXSL}LbcH6v0|amlhh_cpM_E@+cel_DfFz+ zs;P-Nx?UyQQ1r$%5TO;R*OP51#xipqG^t~LExXWt$(K>G3ti}xywHMibzwG_mVnmC zF8;zkDt6xmf{PVeaB&km$Q(~_F;oN>^`tx|A0y2NKm*3W#;vxn$bqtZhGd5FeZKmh zIj%mdg$d zG2iyL+@8(4Fk(MzzJ@xYcn;7-GSHP$(8l%3AWTA76 z`uq_X6*wkF4a?Mg5=J5Y6D&LmR^`y?#hVm52}b~yLC$|Ftj)~W)^Jrv#(;OVrtLWj zA&W`7%X|)Bq?yn7wY%XtZ{Rw<_SJUrPiVwMKi(r&E)O(t`Y9skhWEku_8Ok_5l|P*Ct6jqn&;YA<@{)4@Gr;2lZ{L;wqW4Vv&nuQ(Tu2NpXw+h7iO2#k zw4HIvrDnab1pxWw_BR}VCLdVKmJ-eW`JVqYmtV?fe1fPgV=NQr$YCV6<7g|h=xW(@ z)V60$d=;9sZPrw-t5*!Haj>U&)^NyhL;y}DW zsZGjnJQrMFUYkV{buNa>ZD!5>N%gkcQH|$rSl^ZQz9Z)e=Vz47&!jUJv1o@r&{+%C zJZKMMm()E`ewI7wNe~x6fbB9{}hD_>Uxv3g2H+r!`bHrG~7S}l8}H&4+6pEBnC4VEK%V1(Q0&L%*^+6BA^^UT+iQ$LIz-eb&;^^}P_ z=q#0rnm>#lAZ-e1(gCZj6ig{GpO?RxQF@egY1%M*x3z*aj_Twze)PsYCpIKBuT-~o z1{;-hzB?>SJ;q|OJE7rwQ*0LlAQkX951tt?UQF#xRf+1i)iqeRd1jA5UCWFrIaeXv zljE4p$#N|a89fdAb#B`1&|r?*k4rl z^q~q|5jl5*ZCv#7x5UEcNzZ|)NU#$mHQ-AHYML_L_!Tvn1}vZLb&=HTwOjY5KE{Qp zkcX)kHP~-9wphNmm1|}zdBJy@dz7Tld{wSyjhI8-xz4DLG}syEBT_+>+=pB*xx?U- zBL_Nr-K=%eHBeeH%j8Gi0j4Ie+7aFVX=CnBc^ue087Kcqluz$J_~pgf`CV7 zc{1DPsv(y+(|EOCfyLLgDi&YW+D?MK%NZ&16-69#>)BnVnj{V2`_b03BS&@S4Oc;e z-S|1qk4_CcSjIKAVrPSA4Y+qiVAjE$6a%NN_}bHkydao%*b3tvwBJg9{Z7qDozL>+ z9HT^u&yrJmAn5ZS`x z7&?=uNa1YcQkKPG8-~8T%IkxvZ zf8r0_Yal+EthUj)A zoHX<*JW;Np21xd&=*e{jJ^4~$PjrS|PAwVO3i9IqOC<#AmIPyMTgQY!S4d2gp*uzH(Rwbe_}1U=*WQ0oe6Dst8^{bdf%pi8-I+r%*c{jMw+5XHZgK$UCNp zjk5U6xJKG=?gpnoL-~nVJ*y>YJkK7N3cIw4Wk@TYluUZnRfLscal7Q2$KNC|SY$EIQl10EsRzvy(Xr$s z41w>X`Se-%CuKF#(GuyetIgs3ckVh^2B@8j+%MH9RIjD0J=_sUYn}+thzTcLz%Fvw z)nYsaNMzp;p?WtNP{+sgFMlj@pU}C$YYP32jO2iMsql#I zO@#4~xIAJKhA}o_#hfqFNa4st(@2j@j5Uq}!zQbd$zLU6KT@(-56UUDcK$ABj9Kqw zXVRqIb4b9x0WmpF_>qF%M1S&9&;W0AN{C5L3M&2`lzjUP9*}Pjly_I2**hnNssE@n%| z(Q`TIm`miZBN7qaAsLQVkvLm*NZ#dNQHNB5bZEGAXmE#)TtlMn$QOA!j*iTreshWZ zb)MpncrtrqJ*q>W*IkkxE>qonf+uUKJj%bKE~y0R(vy5~=0kKl$WT_kueSb}NW%bM z9&({eq_g31pWIQu?bO@p^Z~qK$pqBUi0Yx={?Ko~FHuGw;wnNu_2!e`zWWaT;nGV@ zqs)G6FA{Z+fQoDySyY~Wsd+ONoPOL(8K)j7(qRcsd?lE?i9M=Gea8`KfPE+192s>|b+`*5ai)J@ ziKAlIf4JNkL`HS1CPExHIQFXPAJ**-_2LX(r9!rd48z{(oWinN!aB^#W&A3l_FyJX z*raANS$>|}#mr07U;M8T%tt9GIHf^j?COT(Eu2?zvN?MupBu39NPSo~CfW1EXsX?7 zKY2?xzp;4KAWYu;jiXNTC-3h%##r3%^2UCH{K?5(t}qr4`7EIru4o)`Imv^@H1_)} zdCI&z$!k&E7U)WAM9zIGw6lk5h{ZW40i^TpSQ%pmy)10{eG4sO)YGw)@Q1^4-;P@Y(I-wbX3& z@Am2UQr^qty;Q%K@m?Uhg z)=ehcRKW5u+Jf;OfuCp)33&?IiczsR=i0AZ1jn(Hn?Nwv*jQT`CwG!!)Tju67#j=E zjIptZi;S9I4Oc(vw#TSZ5#Ji@55(9QBV!J0vRR6)@if#_wXLx>G=AYOO*b~EIcv3& z@kO$~6d4*1(yk)I&J)U(vkWF;G_FehJPEzQqT!y-;>=r5yIy$zW~ zFlU6ScR2vgMq}nIz_IM#$S2p*^Kye&p~PPiE8{yzP3>R+*inBt>%EeQ!TWnd z89;GSbFWw(Po=e-)p2)$YGMXGyuQL7j}F|ZLD7SQji?gk`Zl^&$0BXR4#W;2>q74} zx{Ye?<~e6{ET<|?l}()(9m@$JZ*(l=C;lo{tcHDNL1mvVtn7P7uk0#8q@3xo#al3O z-++d?jYbSJF4$BRi)A!HyWzr-AGnGNV|hchr-+d|jWor`oyr4@Tt9v|yJ4{VKm~qr zmjn|RA8E(DOLeW-wpk4@F@u6PQE)s3FM{3-iX7B-%(s_D4qmPAR|0r;v>z5U3M6hM z@56#z)?jR|)Xch*g=wbPXx@$;b6a`jU=Jg{g%W0Drr0qrBrG-}-n zPm1iA>m`rqagFK{|FB)MHs(UG2kwrr5|>!^QUR4%)$yo6^`fliY`b`1 z+{kjxng1Z zlEPxaoO&M97f3uo5)5L23L zRy6B#-sII~;C~jRaW2-gY2Vu-324=uR&G-gwHh>n_l8D5W}2iLcB%%&)8Bebf2B@; zq+vAf`X5CtLfz39?}yH*aL+E6Pu$zx_>*%!0~Pn%Q^0{KaQAbk2qlrp=6XA4ZG!Yp z(&ayAsiZ4SIty_r5)});c^iwu2sI&4EhB!Go+3qsu%i|#bX|B-;e=dA4eo?&TallT z8-da%nu^~}bt47d@fNa6ARd?CxlLVS#3NK+*xV)g=DtzT+z!YC&Hb}hk6bmhJds-#x@(IFGdj#^cW~&jU$90q3#S)z5>45O!sSB5=x99Gj zCP>)1!T1WvF%DiEzO!&9uT^z|Bqixx z&wDc&{_-c9isvzG6J?J?_3MrJNFiZ*YC~dn!AU?^oof0K@5$#tblH9UV5lqtEWf=emF^}N zWlKHtbwX=O9N)mKZQ6JpUSAonx7OR6&6I=j`gTr2EQym;;gjKG{r2XRGmvyEwY|G| ze6lz5lGU-jdJl7Tr6XOvtO;16IQd%8UaPItCoBl0ws#3sZt#~)_%W914V4Em zPJdh(r@v=azJhVOGEs*d@IUtH^%10#Vw^rW(eRADHsy5Jog1Rh8rnR4y;Zp?QHZ<(DmR%nKUm)h!u*_%SbM99Dzf%A;(z56#*Bhbm_%0rV#RHq z%mZP@tXa*H6!1M;!H*+O%k;QpxJsGBS}Kq7uV_f>yPRE>KLk8Xz&kk~lFOrmfLaEx z;@uU3U9Rmk*hQ!F7+_bH-m$};BwZPHH%d1YA{@~n_5E@Au5H(!9I;w?s%*xXSYeN?jE>n_v|%}IOJ72L3(Q0rW4JnVni{I8 z5r{m=i2a(Uf=t5CbM{sC<=s8|@^Du(5*%_})!vBUb7=@a3ypfHt3ww@?#HBkL@w)R z5=%zX&Gf^+KBhtYoqrZ~LTiC*Qz3CZdp3J@Ln1U}7#3K5!@m<365P@X6)X^0YBTY{ zQ~;qJl{axUVltB&UwZR&Ofy%fiE$SheT!=tWOaZ2iD+y7%SPYL)F%4BN=Q;*^!*Fc z(?9wBv5dZDdi5yUdHQ6=?+h7VE6g+>7R+5IX6jC>tf=1K8%FgY*SL7};e+AKVdP&y{ z?<0!t%J2|A;D6KJd)=ac-QGK)>i9R=dp}5J)^>Bhs9Ia2{a+>%ZwuZO9M4H-bE1BrPScZ?5Z#wX?GDrhUS zDz3Z4cq3>p9L-EcBUI(Yuk%vdVc)yI*BbFD(#bMp+XKA z1I9w!`7M`hV!y?bP2Y8y9DEdT&^HxOIZc$remA*Xp&r(0v}q+5-mHF-QaJtf8QMsy z8+{;HF<*$M=2m0GhLeiXms=kSxspqDE;$Z;x>95I2MpTl=nVqO#IsYRdJ+0RrrzUs z$h%mCN&NU~BUZvV#3JmlY-4e;0&@&lj{N;PdVx};EUs!oEtNMj5~z$|)F)sAdQI}v z#_%AEd)tsc{Y(-j#$^D2^78Plz_zpswcSmm7%`D+(ltQ|WfVOBToROgm_Q?T@79v) z+NQ|GJ}hUg8u3CW8O>RzahAwBeaTu#51FI|(hPu5KS_B*_5EyAW7QXQx;Vz@hMNR} z`$pPN`lTOn;r{~(U(o*5dMSjKb;&BP+%K1gP8OVbR&Xe? zLL`nv_FC9xFJDCIhKV1ju^O?H1+aRMfx5pN4}C0y7Q62Gebg6ite(K|PjoZ8t3jKQ z%hjk8Pb%2dw78?DlQ<37UMfzu@T0JUs+_Q@C8_!u}!k%`jWvt+) zzW-mI#IISuZ=qnkL!Nrhw-=UpMU-c=g(~K7V&MYmzNn9$Z_FKcF=I&{`4`+ zw;QKKW_v3$5?LziKe15OyivcwRu9bZ046P1_bUZn9cRr*ipZC~4MO{(R-a7cKS!i) zMy?W^RoJb(z+tUNa?<>BbYCCiktVG2j7L)yDPu8i*qdBp;pX>NgRB!Ltr!lyetdd0 z>7|2`_8<6W?)9Nw|3tz3!4=-;G?Ku?i$&H59+mdIEI8+J${4Y&Osq6Bf{6p-5JAiISfhu~if|Tg$4|PKYRdfok}fituG<=1W#tu#%TK z3!Mg?9vK=)IIjm!0yeTttU}skWwBn}<9wBo^XpdN+{UZiWG6IhKzugJIS*9PBfZ9q z~hyUbEOJ6&drNEZ4ZO9OD{BuGweQ_$Yr5sj4XY4?;oeU{k@tBj8yW+W3DqL|B{TXG z;TAQELQL^{Mw)xg-VA7{Ocr9Snr2z7_8aJwrT_E1kCBQ4(?V`RHsgIPO=dMMcp4q) zn|5)a?#%};aBKR)Ia1S(p#35BNj0Y*t(x;B=Ov2dxdhOdzZBdEB*Z*GI4|pxkw)yN zB=NpaT9fz3^t;Sx;F6fa>JUd&-!r2_W7QTH>VqO#Ad4X6&eD&-59-6F0e?FU_Mg&s zohlK5-wpUq4b;3D@Bu+>>?`IsdYrcEQN6MFA}nKFycmqNiHjO_@a&yX;2M(QNJUXQ zwv4#}B*y&n`@yNZ`haGllp3mljjBI%lTg=CrMr&8qj9C|dvIt6X2aWe*>Dr3ONGxE zyeiXQWIUJqLaz~aJg+~-o$yBx*3y9eCk9M^^_bJ4Q!uUcoeDM#%8!R@88z&^qsz*} zLwONqnNXa?+e)TyLH%ZHx3X4W7g!cqqH@jr-6pwaZZaF660W?y@i}3VS+W-dCN|NO zFy+LF9p-Irn%i`tj5$s)p#Y)exzOXFnE4P8E4^ofNQ*p-h)?{CntquGV+BkSKL6x) zlCAlzg|fZ&6!UNR8DXTb0;gexDTzuk1Q+9Gg-D4?_&3(M!r3yCm9Zi0jYr25eLOFK zZVv&&p`Oj4q@R}IB-t+yRJ;()EE*9xrVaL!6P?aQ9`07C7Des8b%kr%y*kh)z z(zoTwgKrtuu8MJ%gB^R5oatKXnSnbSeD5~Y{DrmW(m>;(IQzTvdkBA#h5eb2Vh_ES zy$|70^qb>k|$GxQ%7Ci4ijf-cc2jvz%tz0tbqSz`Sp^; z&U&QNvZ1?-+JCE$X~gyL%x+zof!cmpQTv{n+BXO4)*G?yY%?s}o{yOqYf>IQ!KL^; zU5elHF}ZZDUtqU4_8ghK!bk4lW4>JWekyxYW6y5UR@oraW!Nn~`#4~A$plVMKm-)0v432+g!J|?;{ZQYVmt?1 z<mAavrG;ry%SUzJfK9!_qi2rQ}yJ<=^d6#u}*D=svM)1vlR#4KaC zY0wjC2hr-V%RzYe)t|U|oY~$YO^2tMv)0Ok-@bVqXyp8rwc$d9@d^=@s6ykpK!=F> z8-FK6)Zh3cA)?T50nQ%*&Ob&=_oIlw2D6@?`5SS!7#A2>HJi-kG>60_o8K?QjbOIT z%)T@x^1{$@e60?nzpe@dl2_8V_;AWTFXd__UaJM4lx@qlM5gyzP#xZd)!s;{Tl)xc z)tmeYC4{Q?HJLU0>TC9y>i7{M-!r4tNq~!jW-IXc~cmXG9kVkY}t9&N^l5?t`| zaZ)4xQ}{8G)5(M~^E0XyrBMN*)U_J(ma~QuNtL(m6=UA7c@=khT9Y-gPz|}RnF*Al zMsh5!ZRqAEd0Fgh)F9Cm(pX&D7;oo8dt5rnJhFbjiX#}AI_A!sRc4UKf@OS-#`|PoTR5$Yf8ukKf`w&AE#tsMnE*`pYFpN7Q$Olbvwal={yTY82ox_=y)_=kzHb(8_-fxY;^ojB z0m~uON;-hWAt~4GYgZR_`}8Bby+?O@!2f2qjrePBf7kNcp}$K=YW0=1mUaQ<(mNLy zQr{PH)c5;BxuCuUyqelqonhdrnd~{z@7teESrb=_uxa5UmI(ZTUSDe(?39t*A>%ym zwS{a}Ey?(g*c?A;iN(pIm&-eC0&ea{&XC3m7KkT4o4Y_f;3fNCnm8(!xQn0=F&K(E zO=1Aw313*aTtdAyUVMe$4sgCjl8(mLb;1QYf76@AHU&#z1dZ6kj8v|8Ty`Kw7hK_= zI=dS2yOsS$ z3OV0T=4IWfAbhixxVl0+QdB;fyU3wNyc(U9=U7Eay%Sc|g^_TqI>*siRV@I3V-@j; z=2agZqM6m$kUX~<8?uevxsXZ458*r|EezONdYG$#)3d(JnCD7V@cCu=QkXhrdWpT0 z$D&jeaHrUHuA9`RWS2fLwTR!i{t2<7$K}}N#gjor3z+P1Uv<$TOh<*>{s^}reG&ml zbh)}ZFk+9A$X+Qcw87rjkhsvFST5qzz{HJ#_cr&iMR@u@ckYxu-Pwmki>{<)eSEv8B3hc^I<7Dvi_R=08WhF_A8^eE0Y5+HYK9ayj|o&{|#P1 zj`T{a*7oET-N2omU6VIfn2kM8OkUlU zSA->v{kkTv=pxTuled-g+FP=nN*>b7R1uy}OXb_THYIzHY8ZBlS5-3k*L(I17KcVOEYmWRsEuVaMat5e*hHj7O0m zc6O5Z6?>JOB!0qg2afR(Njmz1VUUIFR3|KCX3X&y|2L96FL8)i(Rwbl^F4|e*?*T!PPK%v;$N2sxW06teXA8lySqONm*G1 zB7e5_s@lB-u)}>ExA-i~J!Yc2xJR!l2~CuhCLdhEJi^7%6+1`y!k4f-XI!Wj9@^TA z;bD}kGO7u4uXrUFbX~c2ko7!LD+nO6@4iHd>{G;HoV8uc=TYF_qc0@59!YQP!fk{P zA0+r9iwo-(s!E@};9CXPGx0a9xeV0)B)hN!M~8_`kZ z3}`kg@1wkl1cf&x{zrbJZU(Wvgn&_qWB%Y}`T+M`4y7zSS(&JF%F^_t{Byt08Hg2X z%*d_Kj!Uy(Tlxf%e*WkNq||{k_9RjV=M2tjMN;6w4NGK^(qZ4 zS2=>!=ACICZK?JS8sUBsb*VkN=ypu*cZ*L_mGjC#DvnVKr9-EyQ`M#Ja&Z?C_lL*> z-TBL$%R+O%=jFQU;>wllx*0pHz}QxdiL|UUcLOQ_LD?485h%OnPC>*YFNT~8{@$U~ zNGVkdYEtS^RjTvt)%lPM2d#ZPMuuZscfjzKDDv*pddo^;@r39hHm_I&#G7}RQb=E|}OD31dqAR*^)UsoB9d9LO%kkezd`k}R zR^k!wmdR5@?1-XNC>%nh&ea(NQHAOSCUQ1jC!aO}b{3VlG(-B=uZ zStRw1Wa*XdVo_|@z6`nAk`y+Oa0yRYKHjIv$a*BkX~SNHWM z{Yr?OlvVdicvfKIS_?NU9PtQ9aL=&7#J>wR7u*l4{>|&6`q#5m6p!j!!|zkuRmc%> z@8VKW5v#~Vh(@LfA6Tk_ODz-YS;N0(Ok;2)fYn*##OUT$!euRatZC+?iL*kFLv*EN zPs;2Y$?s4PdK@E}J=tb>9IUS8!u`z1=dSB;z1_97L|T#zrKL@OKM7juRq)vT(4(3`1&I}>uCQ#{nuvp*h;APo`a-V-jRQII zg9B^Ae`Q42py9p-W=BiYTFZSkfvl$gCQ8Cfv+J^`DD*0+W^DG@ajveV$GHTe-yC*% zj$2V;A|oEe4T^V{lAeUJNbw?Kq6OIg#OPtpV6tkS|CQeq@cf<}IJSq53tbjqCbV$% zLuO2bt8S~AVC`OK3PeY9CUaFaMy!nUL{UMHF^S#fmOqwoHe4r+tlVXr2nUa}6D*R> z3QLiG``cpw)|5G~*wmvFVjD6#5ZYoqb9&3gXz`uN8ae_m)gyFNUaGi`fAox_ms)%n zFq1P*wZN`OF~aFZQqf-U9DP|jS#w$^d?Ckaxjdb70`sbk5fsBEe+n3`J12`>SW^yf z3U@ptHtU&fcguH5WaneXO7d1M2Ff3M;C(9~nWRkobt z0BD{^HRAKBR{%Lj>MsVQ1TbWF_vH}!$eHtGG@YFkrxleg;GmCD$ngWeqH;%X^LUPz znpFN%61D$Nj+ZOgCgeX9Q+9Tg`8yYgIZPq^JAvUR1Ht)8Cm{6@(_9&U}R@Mf7hJOHt^b5r3Aa4|9I$QLAx)`r(NYYzYzE!Vn?WbGVn9!6+!SE>H9AF4g~F+ z1cK^3>dvd%!jT6rH10b0x1IcO9t44m%Lhu&kYm9sGz9lHUTmPOlgZS zS=B<5+^NZoR#3NJvDe79Y=2P!I`bLMnYM+Cpx6*)Nd+49^NIx8bfR>Vq2;aRlzZq6 zEM#FxXRQ=dx&mvvyvdoq=2brI{#*Jlahm0(W@#VT{&@ z--Hm8@U_C^CFXWy@th6nYf%lqc5A?I6i>%9b4!Pl(Oe>bojQRUU5zbPh36@IG)L}0 zJ9P9;CR8Jx815H))rDH=mDydpQ(gpuYP8R>SzxD(&zVAd`ja%jO!eUw>4WN&ymk}@ zs5I%}*Aj$Lnxc4EHj146O&96ob>@d(T0Zf5h=>B3f%oovC)Pg-5r8{jVvP3$gEu)+kZx6RySpp+O`p7^_ zRtR91Dd;{SrHY}u8(`|``XZV0@HnnhyYu6HRH)`p>emF(8=s!gtCaAsQB{Yf)2t75qJ>Q9l%&5pcJft%x<(DaRPLtUy zT08Ltq-VZd%#3@qKhKKC-)AK{W zIrY(Fb;ol~sIQa=SG%;*c^y!9Ec9tqZA%PIVuMWR&w?yAPjAw1DuH~M|@{Q+kW#%>_ z#g<_j$D6gMuI@`QjCavKc%R9_~K1zbQ(P$!}Ju3B_Avy8Jz6GTHx>+hNR- z;-p(eR9*p5FG=71pVEANlVz6$6X7al9QjK=5TUq|W)|g}d52~W)azyrbq~?Z%DsW) zjP7nT@1&muI5e~THfd%;t{Gto&}>Z~p1hghvrUNxA|BUsP;4l(mTVodc;oE1K0VfI z|LT%}y&jvZ%dOObz5yQq>NTB;mLW)!(rT!5VDguV{qS6U6VaOLyBUk?o6W}hN)#J| zl{<~tCiY+#W+Me=)4}{iJji3BVP4&;2P+cwkK!>QQ^oJ}ibPUw+cIScI8xiol05@u z$5rQ zUX;rsubZ#>ffH7JT|#|uI1otA?4s`>ANX_E5(%dmlU)G?lC8!MngWwwwi_E8t&~&k z+ib5%y+0_mzl(2!X|FchH~S51wLe+TbTpmy<jz zlh?YRIR(sHNws$fLtEakdhjxZ9Z0^v)#X<1UYU zp$CpSjR(6jcQNMfigIFNeNEmX@>XFy7Z-5Lb9bHv>EessRvS(a9_kJLTL)bDd}HN*sR<=9Z8?A7hg~I zL6$}ug3~%tR(v>(S^rM%u|o~fgXN(cM5jCcBdWBLR}8}Gi)92_xk}z97JZZVDvGph zUHkR#{^WZrt1WJs+uxVjus49VOvpYoidW%LKQqai+&X%Uf$xG+K`Q8*Mur&32tuB{~PmURU4B5+MlqgqGSSRpean{??=4#rbb6&Y#OY zsc6493+O%iRChCt!lj7(jeRjVarITnQQc8R$LS6pUl*_?$V?maghew^T308z+STR~ z)|QStuU4;io{>3O+0&Z#>-9B%SLybKWWQQ}-GLcXtchFHo?3n(TA5IS#pT^bmJgc# zT6nO(?n7l>>TgnN?WW;>-M0pB18m(f8o~X@wLV?HX}^+rhHxkoTb;YQ(jT>gb(hSg zbTexzQ$Xio3h4y&fmBbGYZU!e^(#|dpkH9xYwBy(=>D!EaHYR)|BS0Gv@zPZj7bjc zZB5)t&n247$bl!#d^KF{uX`hTBWnEq^~!R9hc&*G{YIwQz2AmbYoKuARUOJaLuifq zx?S}~!~6BdHMywjwfr)>#YBpj4iTd8emnsuk@ezLwnmaFH;`7#j0b)1ktQ1pzC+Y#aB4-Buc6Xt*%KPA z_P2t`e&-RSD2SJl4R~aD&4M4~6I=3Yzzg45H%saEx5fIBr-o#C&p>unpyrQPCkGA= zWLpBhKfs#`2Dl(MqPLRYk5sKH zuwC5qJSk|zrGsk0=T;=1@{PtD=t_WFo~fVpYEF!Q8gq`?t@Jl|tMu^m+3*cieXDtK z&(DXi5)+%cx5CJx8c={~Xf$T`p$e-EN9a0IGa;|h_H3F&`JNY3W>ok@kSb7jApD{8 zo^--nPl<*<+G{hX2v^!eEexw>Gs>#9P2OnFny|$5y@>&Decj8({Ddh#RG9ZB>0n&}hP^0o6Y8K)Hf`5G4PaMs&_{y`V5YWJyC`-|av%t?wj&OF zp${2Vgi$Lw5PWFiP0eNv7T7Z)YH>WPP%By9hh<~|bFMrjiq(Wgna|YwK2FrX;IBzL zm(jI)`+a|+{%KLgo3My+`+XZOX?VtXNW#|<+rwYiEt z8&Cmeb_A!`vl0t6q?_UF6^IiJ5p)dgbyg}{jmA@ODuiK&h3g&v#lcIs;e_~Tt7p4S zvOpxKlEJ+A3)mFJXM#8qy-Hz(8Yk<=w=Yn)C;Uqp08u@I*n{N|M&@X0*We}ftHKWe zf+njB`s6xMslk2vtDLi})H~IrM+)IB2ga0`77eU`Y|(gaHrz`zi+l$HC>L$ZoSj1h zM?8QrcLBROQ>lq_pr*OLX18Dv-j4XHuw*|tRI>_Av&WC*Sk!)s;&Z5r^I!Y2S@BMp z-u!bog2yMYW%&!@yWJ=p%y3ScI550>#mtiE$kOS(t>mTc2(HqPJ^pbvb3*h|N2FNc z?rmM(;qSSQX@|ob@xC(2c)zg~1dwiP>E7Fb@7d*@1vweprAO6C*T)u6boV^-D z+sS(y))PU!-$k>U|2vzV>1#Iv8?DK^UaoxLntZ8qrPP*MO0Ao`?r%SkQndthPmZdc z)z(c)?J@%Ut%+-D4kUm33*HHMbPfLUc2rxH1X8}QLLH4b4n1^Iw-THk47*O89ms)j z#x^TC9+v8@w7*+ zHC_~C+IaZC7c#qz&$R9~Zs{`g+8!mljXw4J+Pa)5J?FpOMpZq=Yb&dSfy>c{V~qbV zhh_Ya>G5ymMU8(g5C0dAe-8t9v11S8KWAJIL@j;l54CkUS$fWYdl>(rqmF;cXtGRb z$?>Pxj}vFMcPF|ft|=G3=UaSEF1V31(xrme#+dcV-^$yp1NwEh-E53~Lw_6l29lw> zlCuuT_x*y<#+X!ck-T22-*(!ojIpimx3R66OKY>~(pxxF*e&T_jNhE~ZL(9T?NzCL zRh6soTgo=g}GTAz-&APWj8Bp(WWC`;<5NMRf2Xn%WSX9%gjZ z5N@s(Hf74pMfgU{^|dwip4-=5X7q9{pGFJ`RmJy)$1IhOE|G3$#`HgZ71Q@F#ECryh;C za7@wE&TLC~o5{Xo)-_K%)l6+K=MYq1v({Ro>yTPDUsdO)@JR%*fJbjdie>MD!0cR;X#pJ^D(<7P`5h#LG9{H zAF`7pQwdWM^kJok`-K$v$_SjB;4qG$&w`)VkBjaH$lnua?Dv42Qb6_zkn8PM!g7?= zb08{!@@3YFJbZvMU?`w}_4eCW)rBtJ7rw4O`Ay)>qY?iU1kQ}M2*BSKfY&1yb^*Sw zzGhv%LJY-q>3$mEDWZi^KLYH#sTdho4%+L)V7&m^Bjk{>A!8=*Ib6HCpg){GBcn>I z!xQYC>i1TzW=rLulwBJJ-ilEPpqk#R9t~ePk~U1-lbIPn3Y`Ofy>AO2-SeMH$~KhqVaE#O<%FtMF8z=NYulb%+2RkHjdt8V?Y-n>mcmACV(x_$Td zhp7=6=z`B71wVl?JNSZyR;k2;>$)PW-Kpq}68^U2k*7f3oiGr~y;Etgf*40;a`_UO z8Tu5ytZIhk1xHhea&X5*_z8&9;2ZhRwIexdYlA5swfbxLY$bZ;3wjJ;~qw~A~;lmMP+ zitg+p4Mv!qoV;JPS5ABTE+F=8sJyl*(|-w2MB;%bv($F}?LV7sV}}y2963HKaSd#b zs-V_hWA!)*<2}wGuV6V*-QFrredzV*>H|`_!1df*7mdZu8m>F()QhdT^rLsZke|)N zE8o61fC2UzH3WJiV{oe5Q__*ppF82Na{CL%@;z3~+6PDCE26&k&kgY={8_E!jzC?t ztVy30*qm+f9X3;c#-~fW-{$DQ#iP5RnhFFINPkv z2pHY?#_+#&uLSH>oIYBizU9-W)Y~m)>R_oN#h)QAQDB23$IcOLiGj@~r`xgqM5wJi z@rCAcdAk5x53?>6e#=ab#qD>$xq)bNc`(^?b|9K6$B6@U(2t*hYMfjpM$AnNoK2xn zU%wqr+Y>%;c0f@A_JIJzKf0}qo;-M(aP5=W7t|hLp5F&v{HZH@l$_pg?yTKHurgQA zs1cLK*k3`Te7?Tqn^u_5d6n-fqXZl`6U0?&#w+jjM9nLvZ>JjhSJ19W z?bibz3G#11r0J~>Gcjs6F+Ag^tGcG|E}xZ^&KU7tByfOIRn_ebZ%mpv0Ut3NAx^oy zF1q8e+Jx%X-P6zBPaWT?+ZgKZyhYpWD)xFAv=JLa6=GW<-TOc6eG7b4#r1!dEFsar zT_8e4#9*;ae%P8-D#Rd7LPGAsT|ott)WoQisO_&6k%(4MAf)DcS;W>TeNbupv!y?4 zp|%2TMH4_0z(+uV06q|`W({fp#qbdR-*e`^_LT=9g#T~-$Yy5lJkB|D&diyaGiUxW z=KL7-4R>AT$S0+F^e~L-#qxZgf1L^L{%l7*gG)rJZ57~tmrn!nrmzj({RHo9l*`s; z?$_Zh|A`6f{_hA50Lq=`n9KhP6IY)uL9`_D>0i!Z4P5^p7 z0b1vNg8`*h03~2;9>kPTXEmvl_BEfcNA{_cnzC0p2^Q=wVegGP`6?L#yZK|HaTa!b za?AIP$SrT0Hk>yDXIzQvC*_}vC@%L;yKKf~v_#D~fb}@9M{8&FLH?e|-?M3250M`` zx4eQ08ecFwo=yIK4?WmEf4`jDG5&tap3mZMa)n{?_r1t-3jBQ$*Jb1H?np3sri1*w z4IORc@1dx|;P1Ca+xWW=KIr`YB8o7xq?!DEyN$oy;rY9Krk%HcXu`R_{JoCwHXOs6 zy!|r(VDR=81f<~Y>GyP+udg=vni*5)N8;vv;O3@jm(CbuvGxTxGZw7RL3)xrosZ5$9 zRSv)her8LskU66Nz&4^^38i53r`SS*JHxD)?2M$tQe`u0&Ym;#uv3iXZzGEBSgs`F zIL1dB%bjze+KaKA6=sa(eK3}1B&it5e}@uypI+U@BYEW(3x~ZwQQwjB zQowSAVJV+zgJZ9N19M6c91_FvX!)RK=mZS{i0QD|sKrtFkFw5>xhlPK*rTjdb!T40 zLc*9IjQKx^f28@e>1gMnk%EW7K{`7NebM5dBcQ#Ve?CUMWBfBfU8{|Jnybwm`71Ed zGAbI%MAI$ipjrO$@7bBCSZAU}z-{FtCc4X>&%c`RBDFzABOsCB9?ZBo$i^^KCM}RE zFUME^W%vo=q#3pz93eRAgieszs9EQyPbp;a(|d^8`cd%HFz^#}gL)`NFY|m`FICWy zy;{rl5o1a79zlYC34Sm_H9r`{O?TR08D@vYHa;*v-EQ$yfejA9Pr8m`g9AE>3B#k9 z`oBSA_;%v#>HW~;RinUGNuvyEjeNA6=3HW_TuYxn-Scgvu_uB)Nv{J2a?oH>HD*F* zVMQ$aD)@W7cKo&AAm>xxCGs~4&P*O?Fw4RM8~I|8 zFI&4%-Ra&~nY2=xM=+@Db=Rg$@)ZBCOa zX^zAcA=JnN&@Znio$YZ`zZ8R&pD2x?5DVaAQs0|VTj~|KoZHIev zWg?)>zz2eMl29@QwB{siAGy+P`WoxQfVYww&`f=y{9YTZy9BI14}rC}t_#QC*7v z=`7b^tMM5&w#w{c{Qs<-|3}yWCD&1%=Klg?EzmN85be)2ajm-UY-p?TWl?e(=5wVv68%5qcKaOP>d0Uc{cX>Nv zXVZn(lIg_s|B@HsT$om zk$v4OkO9Y`4LD77@I^Pu^V_w&riXhos%%!V=gYUej$`*fAUoD#lb^Pf?D`h)iFL>o zhf~UDU;{(R*gf-;=IhXQE~<9#vhIxj^AT`5cKC}ghSl9Qu$#U5?~djxJzsA3IzGDp zV#RS#uEXXInHS`qkNR3u%H25CR5A|F`~-mRyc&`L>UPKacCFY7EY2|;mk*j$3y*A>4$j-I5K2l%=-Y)Q-0Urqyh?n5Bm zU|d+zzcj;$cro4BhrPfm{Ao@wYKKe9SK`qK-SG9QUpA)&jn}Z#q^;Ix{)Jst$3bt} zm&ot(oOpHmUD!>22$u)TTRmDH-rcCf`HWXm@co#hd;{VS4bjW`zq{iEET^u*^QB7K zftQHrO?m&0!x8)O=4U-HsxI#-t%$3N&1O@Y=0#lWNYnEuMp>#3RT3fKC~GkR3Cn`z z_%r>x@D)L*kV`XlXOj~E%5#n~kp_S|O*b-aruVYw(fgufC#-HXOzx<2X@^edj;743 zVRC04M_TfA6V9TJ%NmRd)%;|>BS_xn4oY{Ai6^tbG4c48BDt$?uQb|>Wv2$1-w%4{1lA7+1Q?Mb|c5Xh++$=K3N;sPgV!^SG3%IEvT-43##kiicd9w zf@^D(>v|wNHjDF9p}LX6bKZcf7qvL>!eG5&S_u-tSxzL>kT<4jiWsn1a^RU4 zR|6nFUTGN~fJhu9tBIE=TJa#@S9}S6W?n-4fFns*;I2*fVo!Bz^L4_=24$N^+v*}` z&T6B+f7OZl#`zL&@YLmQplffikl6we-hi&#(1M01ZfJraZvZ8j4Hd8^Fvf)y<7&v- zrW-Oa@R{SCtbMP<{~3nhp!vW~f5Tq3l}KLka7qja7(e}H7?fq+Gy;cRibezBE$JQ@ z%+6FiJ`dh#6K<8^YFNil(crrP>{{G^gq%^_4>Fjy7C3`SYmyb5%-}Z7+vwNw3;YiQ zD`BwOJOkyCIQ?!fT~bk*#qZ0KeLfc^1TXCOE;sk%~URP{RqWv+CZ?wakvDO32yLo&1V@O`ndvsOO0FW_-9%I`LPnbQV%0Cjt zWBKhy*ricv83*H-+&P%ZZzazB2R^Y$m$o>WCQemk9LiKe>2ykj@g6?#_sqqqNRj40 zK*Oq5%^n1_#aW^#=NKv;ABpu9T1EML=Hdxlbd)G6(`Rk*o%9DU!qT6izFX-}EIZTI zTjlSWi|@w=X@0CII+b#1ix<)#wVHDb^;L9em$jY!cUp5390-r zBwAfAiZ)n9S5Yu?F%^>L`zWHn{iiM7O)>G34T?5WELL1@7OnF4%*8ES^afG1NtEGF zL-{(Ne*}Hk&vzAdW5DjlbN!ssTEGX zRV1e)8P=x6F`Qf_lF4KghK0;HP<8ne6H%=c=EyI^7!@&rUVd& zPSt7bXAhcM3dh9bwrX_>w^2QTTdYnMF-lQBrk_2*SWwJYJ?&H!)r;O0c2M z!gqK~yOXkMg4tk}j^HX$um-{1BDe~svP+vUz>q}q>4|k1hCCUK@P3vA@m|>*mtH28 zV5mrZz?1R$%=b{vMKJmjuZIgi_?kBb)RVDx7Mz2;sc2Ign*T))FN?;xe~}#}nXm|Y za4kTWJSEdd1fJC$XT8ms;(SD4TwNdpP=dIC+Ja5#68h`$-9RM?FC~+`t#>2F18md3FVxFBiV z1t+&c8efL36^nz5;1W++b9{t|b8o@pEn=K}t4OAPh)SbA5`X>D*xwkRZSr_8mL)ja zQYS7ZY5XTiBi=PMr15b`<3A%wCEJw79A=vE(ntX4(um;6 zNF&vtOCtf)F=<>z>`a$M0;G}3lQcelveNiCBtL>Qz6j9^l14m8q)X$^6Qj~dW2<-p z8AD)~oEtB+)^|2}+>5@$eM|>!o8-PjGI^L}@*N=K67$7o$mHQjGPx>5CO4y`K0|Kq zv`nHf%Opy+DU+kxkVyhSmq`RqMkc8ST_y>jj>+V+VP%ralT2Laz&zJ^m*B3NGW0o`5TP2T;}5JFhpwiX5V}Pn#ka^qtE)J^dN##($wL<} z=lC;ADZWA1&uRHIba4!^L+z9$P7jQbJuvx3*At6)YX5`abJXV^Sam~VVO_KKBd4sc z&f?UMkcwMk_zK~mzQJSBNP6a01m)VjNL@_I3E*r%yHq!fBa!Nb>L`{5BD&mz%ur3B zJ5E}HC8$ErVEcp??QMX+)EE?peIXK45yGXtWNHC#z=;^m|AQxD>%fBF|Kjr(VREVKiTj$cACm*CK*d2sVk}B6lp-w#X1~zc91}Vpa6j!gXaubWu z2cd4Qrl6A1Jo8yPGXTaE_d0fxrE%L2XoCR6ji@yPDuVCHI~i!^_Rz<|l3e~RT- z#Zi%p(RE8ze2*bCIps9$|6?0O-3fE-^0j^kvapJK2eyd}0Y0P* zeZhqfSUbeyk0rc-HXR8NhK4o-c=2rHX+wZdC_`7rfGCh%Skv$$6A-iRkY~8juKf?v z3;{;a5a8}~`4u9EB+<3CdyvGM5Cj;h&lFN`A_H#SLNKZu2vCuU!DZhxEUn*K}fO^D`wcR(!3aNmk3Edz>-|j(1sZ6 z1JTKd@pq}4=wh)U!zD`~`z*)dWSGQVnoo=b@-cZ$F`ht)x-^Fq;~HZNDNu~TH$s$A zAq#I9IbKNp)Nwh!O=J&{V=vMy{U@?KcMq25Boqvk=k9iS-UNBx&m*v3noGuFxIQrn zTctS1Yoc@8xgR1e#6D4434Ke=odnw#dJMb#Gk-BW*C-jNBNHdGsH56m$G7N|7B-IN z{=DWu>1w0&e*Yk&^n;@GR(t6?^wPHSroy+?sN)m=PRfR3F@DIg`QpI+G+(|$$=EJq z^L^g)$S19I1ODl=Fk`_X*CtHI@b!CBGW4A5#ePITIdhC_CIpjC>~2bt@nk&atu$O@ zS`ISwR^hR8hEYwS@$6W85dl00RC;V zx*l#K(IF=OU!V<~1K@5@Aii1;St}rXHjDQ9%bEGEnV8gZ%%K$kANX_J6U*(@F+#63 z|5{p^;Gqj%mnpDy$E$^9(obs1j|;B7<3~|H#Xt}T0^k68WBEZCV^!?IO9dO{iX(B- zBgKHqLl02+y5EtE^Z&_7*vwu7$B$*BRV6Qxf6wFJc>ay!Unl=|)I>p)#3%lIX`pKZ*1cPd`rjiShpmg^8|A zgG>cxnzjB|9LkR4W&;!m>p;}U;BEy{^g>!5RlwM})Gz#~%N zeI2_!!dX6VnGbR*zLP$0nb4W@76|WfI&Xn|hdpxX`77Iz%Uw7x0hhjWLCBHIwfGY5 z$ffr}`*}-$FEP6IdCS9iL(wLU@0n*UYoli^=YTX`1O?VyAK3PHm!kKw zHJrAvG)B)`9=G;(5$xdJ?wLPt*^f6vZPNIddDimB=vm7-AdS3y4l9qz=)VKl9Ku-( zT=n20PV~G5i|ljayrtwkYr8gj-g1tgw=9HrW&ONGaygS>Pu|TqZP_eNTV~LfOr+D6 z=T73ZMVS2gPG*~Sl-P0Y^l1y6C(+Jn=T2KT(~7k7r!BwYVjVth`H{#TuuEHjG_uc( zygz$N=Pkd9vjjML-g2@hrCsB^rNL>)Z+DVk$%T^^2=Q3@fh3F5mO63TG7FO2=4s2* zojGlpCS>ts#CW(6$IhL$bQA4$`m|+Z7%}e1Y0J+$C&!b+$nkij+1DeH<@sdKTW~~@ zheqHGR2;KNI5pt&6S}(@a^8Xs2^_YRsSfkJ<#A*~9hJvyb@VXmI1YXZIB&_;aN1&) z-tWIrlol6>bO^c`r4Q?+ZR;^s__hj#Pn`IC;wOmt28iNglkw&OmcA&?E8v3}=M{9{ z8t~672mBd|x?P;Nz_1+`q7ri_zAgpz{t? zqTtO7CvYS(L*!ZueGlpH&tvB-iti$(NeFXiu}KHof{73SP?vVL{6$Kxh=cH`n7> zV`KT3@WdHsYgICe3fxLF!_@kNKMcG#-j>RpYc({uWcfJL$;Z}bIoOA^qbX`xC@kpFBZ;Cp{@U z4&b0mZ+*DYdaBv_U%J^^cSmg9CU0%DzZrU;-u@9LoY8)ns^llq&w2C{Pd{<=(pfZ-y&?K0zmOfke980x}~2NWJww zM(eR=>suXG>sN+tJ&-*IXP}S{ z-!v*uEHs${Or5&`AFgcSxDzZiTn7+T8A1AQL+>b&sHUhXM@6I6D;CHYkF|!;^yNK59l#?TP?+a8a=i9HC%n z#1BSGr7oF%T=Wx7~!|-avF{B+jTj+jqnF`IZZ}*UtLa%5&pa`r_~4_tAo-2 z2rAa_QTd`kx*P()dcWo$w$p`rt}eYUw{DnTQEpu-Vwan-6vT#@v1G&snlTq*xI@E; z%7-z`weG+osv@}*X1mv z$|$l3ktIfCDI&{_$SOo?j7U8qOjs&|+pL0`6lp?)Nl1}a{ar=5;^WyQ4+{h7_7aGy z)9v7wcDgZ;?>kXNZpN*0U2evm)UZ8u0;LuPr)E*A9Gsd?sUw0@Qz$hxI2B&Wb2E}T zwRSfF;KU8-+#d0i;_n4`!Isl|!GZ5|yp@FKJRL})i@|AmyJerZrCE|(-N$3(MnVe` zcJrlS2X{*Y^eq~MrMdq?WoAD-Mbt9xYruy(#*eu!D97YZ9l;b4q*Pk?=&4y&>I5s5 zRw{Z8Q_a+z*&-=tp(vZPM2|1m<28D`L67g&<1HfIO`fxcT#%#xq{?DcOORK*k2}J( zQpGXCBn<|}us4K<|B6~MAe!ePqN;4YDtNM}#kg2s-sE3PNV~cZ!EoK|Lf|OI!{#0c zbVCXgk2rZTRZsI)sY$MasTgvD>SxqIp#anaKX}-SvU~_j)<-5qg!0UZHeu?sM%aM*r2+z}KUQAZ2o3LDhRSp!;^&~UC zYd`yftA@@t|*K=Nre01iAnlefUyI7WO-#UJ|Ed{JncXYvto$sa75OxdMncqr(F6bkwT z)B2dBa`DcR+R$_@H9Kb=v3AMYrk4*lM!J8WSGi#oHJU5s)|50SnD*cF;zqEoShk8g z9y8+Uu0-aH5m+w6M@jWsSu2I4wRX$J!!9#Nd0=1#vsqkp=W1mY)^L0uK%3Z~@8|cU z`}zGRc%{5X_!GcjK=NGk>*B>@j_;7a~Vx{`mW`2`mFc)S7)9WDjFgMB@3Kfr=N2XD4O@U!8Dyy9@8 z^vKIT2i)~+S2Vnc3|HITANl+|a&`o(z4dT*1OsSX$Z5cXdT=z%lhI?yuT1vVn6{e! zM= zfaLj85F;%ZZr1*Rv|vSW?f!f0HJ=|;^BenvAeZKK z`=(j*I~viXyvAFJntLulcUK&PLHn(*Acyt>U0qN#HX*jIx7YK%1maNGu*cw!?WS(t zQur*Tdq}s^XZ_{@E=+T5lK505B2}Dkxri*`NTY}>!nOPuRtfl8KCU;V;sfqCU?X^O z3gy9LLY$SKt4C~th_P7?-uDqPQf%;Twup@ovHLle2NUPYsp11EJ%}w8F+P&fDwl{D zX+ik5NW{cJb!CHyky?ar^&-aiBecpIj^)k9hgR`{R3^k)L@Zv!nnWxaG2E3%M$Eh& z|ID5AO}`zliQC!q1giePF&z-TekQMRfP> zwOz5h@epgYyO;ZKw|Doqs{*@w^(P_S{SuAFqPtH#V(aeTLexcf-?k>&-MDMrHKn_! z+1=R9n7oT-DSZx7o6Wwac~{JFc+JrR^@r9qy?;i%Jqcqu=Aak)Qg72W!zH+#6mcxi z!@Z56t6esO!_Csr!CW7{ClD~IF|^Afc1{oGy2p;NgZTy6ei14Mx_kN# zTX+A=AGW*yF6-TW={#F^{|>HqMRyPRX_xHo(82uwWOu&?%RjTb$$dSfn+yZtC-fug zZoUyi(haqneP8X8=IzMWdpvzE_4t$;_b$3{?f($#UPb#3uAD+!k0lEhY2LqKXoy%h zY2IWQ03(Fmq(Nu~+ORZlnrn4y9m}_yHa;6>M|&`HmQCFyOo5BUtpvK0tV0 zq5I>va+)uNH5cIriIS^C)+*SU=-0RLekRhFi|j&k5>AkeTj;o=NZJtmAW@3Y_k844 z26d#P7;cZ#NMY&#x*w!TOEH9qAwpd0*Q&)3VYoyR`kwI713NSZpn3%BUDZ=XOsIT@ zA0(mjRST6*yjQ9F#WFoVG>CFS$*ZpC7&|`_`X0MP68fHg2UK^3RGlo^Z4%{$mnU`{ z2CX^^iBS9Qq;IA-Bq*kaH>4#9?iK}EiB!F-{3Y0g6&xeFoK|0JaJ@ow`4#<)E+4v8 z@A5lF>Ads#!+Mvm#0jnF@+0Vcv=NUsu*|hOAFxpeSUg~;+j&CuzZD+=_-x8^NFMq^ z6~~#JycAf@@n?u=e8stu;)cV4J@7T~5&rGQ#eY0ZDjWeU#l_`%I0<0a0mNJ6lK}Uc zQ;B@!K0qz6(wz}--_b6bnuoj0>~?^;i~SSKT4X5RBFAhGI~d@5^SYxT%!J~Ka%Bv_ zLiSYtBU}n-?2--c3-0HBTP@Q!b+zCg_PK^{Vk%lZmA@?(+`~@Q@J*-`s~3rKw~AWo zMNDwd>KYN_F4b1Ih*-SH*(74bHQ@VX#IX3u;y*f{tX{}jW`R#uuM$D54OZ_K!R7vM z1u%#-?`OE4Ma-cODbl=)Xa&u~LXS6f9=Qb@C}J-emNn#BkL9`7lc-DJG z&MX11{S`ULGq2Y-#-*sA;TEK#?r-|dOSn*m4FWuwwnNtM zi2>ZUO>@m$CTr7hOj-` ztIej~l7*!O_CL+`U{4m%-rob;!`=PB_I@Eu>*WkWZu3lsWy|Y|mkR5pzVYx-j0a{v zpSca@CAiM%#EU@e%7i)x9x2JW*cLbgscDAm6yY+E9>MlG8(@vTl>T~zM=$QhOn&Bm zR=h`T@ZXA^C`cNyxT5l409hp77lm~vV^p5qlHG~+;FgS7k;-rOr*L^6$pa*XKBL7d zy)bhn1L4JOT&{o_N4Ra6l?4A>3%%-20-SDQvzsp5;a>!HBc_GV0M2fBULkCBe`6H% zF45~`4$Sl}pEVE_E>WyXv9khEM8!`tT<{s7`)t5)W1;BMgAh#;hd_^G&j=|H^~_4Z zW&-7DPC;fKM@`>jJZAt`_%9Gbh2c058vliW0zD0G#s)i0lOIA!f{Pqi9Q}B4rMIvi zq269th;D@okC|J%j<1y1AJ=$%H-mS%U&)gk2)_%CtD9E<9hT16A1_5V@B}-O6n)Io z5@p@#KaR~tkd!(NB<0Vs?3h7`eU3Wb<13=-^}bC<3YFX8U(e;({ej-MXr&5;sJHPZ zH~O@c3W`4E*U*VVaBwl7OS1P3-BTP&Es%O#y%#jpvoS=)T4fhP0_9*FNH!G_jLKRZFn|os+q!AVePY6hJAiJ&sV;TXexsWX>)nLGp+ntNYjqQfbiSLYyxvVH->Gh*qIx&g zce-;#tHfi3W=?++3t{4<^p+~!fd;-5m z!wvF?@g{bBGRZ8@)MBi`Ne{*v7-9|`pJEt6Ha0&ORPED|stvL~3a$TNVe9`NUZy!= z*TKuQEL6|SwDC9*7drc^m{KfF-BQuj=rT?BR|F5MG-zmNahcYP#~#RItxzj}It`8k7+6&|k zDi4pz2>;;F5@}f~MEh2rf5mpJwY$PMjqpf`ZC{0FToIK%Z!s&&IrH1L9 z3p2Lior`A{&DS7GOc3SkIfmOshKoI4q4>}$vhj>!_}udeiMHJCxx6YgCA_j)4qbl0 z-LybF2v!?<#5j&qR6dDPuiHYe8<2drSmb zlM=vlFq1n_nm>liTORo|?{X^a{|?ewj{fo;k|P{tjQO!HN4*aja`YJ_%90~%4vg+r zowK`D&AkH_<=6j6EXwnEY2K?0GbJs`@laB9QT}x;%316tz;u|!?v1;2vHS3VA$I3O z08O#`fcJA<5Lf-N0@L&Z`@w}s=KWwXeThdaRGv(DKC0qkVw>1aJyZL=;=ZaL_9@l4;@*8_j&wtM3KV z=!KU;0yc`-(Z1MCoqB0lh#YfO+l z3F`CV66C27dGtB2MHF6+4^1LCyZHjFvtTqvn^~K%M8zD~?@n}_`W9V2%40>-8&BbW z2QUdz;FkC@OoE8Le*lvpQhHBD_CK!D8UlV(W-H z6@PeIG@Mm(Lp&E|GBu_7Pl|@BP>#}3U<8-@F)1HBr3vUbn8~x-%qf5j#<=_$1&A;3 zN7qDFSpae{)4OEmFx18L7qc8P6W8F+t@wj)yR9-Dq%F{Rue#BH2Yt|ZyOTc9CK@GA zKp2uHtmXbYO_#RY%CMQPZf|?XeI#WH*>V4PskseKJMKaEMXdes;QjaC1@4E3?7z?9 z@gT;4@Z~A(9SAH&j!^J^^rryuBEti=Zu2}~A;Xg}RHxV#Xw9^6sQBC%qyBbtmpt;0 zS~&0)8y3UX&gPFNn>(9D(VfjMwX?~h_F}3oYU^&ZiQ2*ahN!JCjEWkj_Ooa^)`l?= z?K@eb)(t0&SP(m~)GfwALi7-!v%AxCFw;+^3IDVoBCx34{Y_oeif*xq+T_m+QQI{s zDr)D5s6B>k{fCJ)I3~`HE5_K_AyW(P9)SkoiW$r-s|BoSR zSB#B{+BqU>&DWWtRvHzxt~aZ_JwO+=986!PsLk19h+1xbRMgH9QJX!^6t$A5sC7M2 zQ*jrF&;7T1NYsprh0XAk8GH-p1BXWqiG`7^T4`-1P|{5kNvFXTRs z%8Ko!23+537p{u~;2IqY7yBcOct7ZG?ZERm!?Tv&$Re|(WpaCT@=*?=)1js(wYV6# zzB%8xXF`T7;*u1s!`Q^Yx-VedmkOp=(0OeLy~KI#WCK14t;>^3YUs^e*g$YcdK~YP zl@0C&WKMylz&;G0I)MLqw0!_)j%m!pAwKNixo7wS!~5u&9eU5$FE9l3%*%m2L#tiAXM!#; zbgXBnJlS&KxFx~`hKM~wMaimzit20#_tZAQ>EB_eGoRU5t>l^kfPWu(5wNe^>T+XYgN~9d46#O6s z(H@AAyTKI2vDtItb*b_;2+vqw;wuEVlCeRmcqJPKWzw>>u%GMhb-V)Gxo%`koktea z&MFjlR>>!7Vdmw@*iil-|C7iL>fp8tsH0MZsY7lIY6Nv!L7nGOJE-#xwc_#38X>5I ztAzV8IPvxeASFk#`SrkO#{r_w4p^tD>(4>^z_B`Z%HXlD$ zsTNAXkCj4>Y4hgjbc9&(!O zHi9B2!*0ZCuJPclVzRX{d9FASJlC7jUHSV2&lNktbHr{)Y5^k^JAZ4k8>M|Nc&^w9 zZUVbeQmf8$#ZK^?U^n8hVx8v%yMfb?fbVUy+fCmy$!fA2`lO0%7l`MA*zH@$&Nrk6 zQ2^JtFz`3P4d^j`GvJa}N%#`C!doRC6!4Qv(Yfa%&AkC&JL~bI)QejJuc2!FmcVO4 zw*-=qProKWx%ip@ilJxa3~xjE3;sWhva$S=6ge4|Cw6y@2WuD84!gZptcj)(D+;0&zUE!N%zu0&0MLc+0ENQ|U(eY=!dFi@N#B1Nfl%v4 z-$RsteF_8?&Jn;2Z~LD#O85{U4~XRP4{jadmiI*rc0AC196Q!G(nn(-E_PsMz_bDX z2r8a%ri&|uqiI?gjcFli1P|m@l-5LPm==z35?HcuG))Wmp|SB%iep+Bb`7OrS~$+h z8!4Hlh0&N6k`{2<0!pK4fqq=h{!}GWXj-5jq#zoLSS(yhVp^#2(C|mof&w3v@Pe*n zG)fiAGO0fyZg>wHcemlrc29SYV;iiqd3L~gY@u@wD#6`dGDLb^&d6)P>~KF7BYNJA zfS}GKQ0EA!vjXH$aG9s}Q=-mmI(0BJ5Opv!5a*(o3r9mvdXL7mkW|mp0-}YZAs)Ty zN8m##5RcyUgA|HlS~x-}BqNM7B|K*I;SD={X8FMbL>!|Dz50<+nF z{8tzSzKOs|u~|_VHY*Bcv!Wn2D+gUjdFl{lT;m{d#WdlVl31JwN$gGOuF;q*NfL``5+NZ(l9((XHHDDUFjyjvh5QISjzPBla|1}~qb-?Cx412#IAv`!-r_RR+oC0-9 z1E^CPN}bXm>XhQ017nD?QKvKvbxH%NQyNSiB(z7JL_#yd5T#RxO|*ijv-N77IDJ?eb=-FB(NRy9G?SxLo6vi^#IpiU?it^sNorZ{VMD^5guZ%TI&J;WG684z*NTxO-v#73mBQiv`@3M+-^ zLZq-#h%O)r5>RWK6WdEyMWzd+sTLX=pH~M>Y>!YeqRT@FoB~}+1L#s3NEb0W*y&=W z7<92x47yk;23@Qaoi0ddk1l__vR%6H;bIV7?xtcymofxSfi5KhbSVj>ix?N|bg@zl zx>zX&U91#?E>?<87bLVtmj&*2>B1*LL3AmgVnmngC=j9u6;BUVguZDMxHxQq%#Z?K zr0Xs0qk!H5?w?xf75snUlfE^+^IqN>-)-BwZ+?>@{7dBWk6Yy*4Obp#3E~FWr?fyN zbW5oO`Aa{c_}I&Kb6?ZLNS%_gU7B|-a=>v(+@Zl$4%(uvta<1ic%-3R)_WCl>^S%@ z=_~uDVNd!hIrB!>O!ykQ5gXEd<)P!?zho_(4Aqx6HviEC;d-dr48q%2=pY!r%55O5 zS2Ex`+K|1A_AIGzjR&*hgUJXgN1)8p0ev`3HsMGhN0IbRDruNv@- zY!{vZ$U*&+ayt8`?;AQjUi@}@^!OEWQ2X(xv;FTI?T>7?{Q-LWrxpL-8STG#dAs-{ z$7#pE$!LFMyX_Cq+fP58^uMCP=>MVZ;*T7J|7mUiKBN7S?Y2JvIY=I_=_fsbF_PUo zy=@E(HvdkY8lOHg+JEuC+QlC^^!BSyTl+J7;vUHp-Q`v0`f58byI__y2s0OYWZ$K$`2@%U*2p1-8FM~_F5!v>G? zwZN0{rcR%M?ZR{9TcUqX>-ad^X#Y2;omH5K`omB4_D}2lP-nD1u-*2L;I$Lt&(n&3 zueWsi{|2?UgTLPXX~ln%(f+`8+dp!d!2h(4&%ZI+{|#zy2mi05{k=x}1KVx?2%bMV z?eoLLtw#T&_IB{M+CP2s!z)Jn1NHX#QKJWFFbI0osM#f4qYB5XpU~qVcE_vIvJ8HR zS~y>wM;q|iKMU(0btUW2;r*}v+SH`ou+rd}Yc851$}nWlvAtVMQdC7x8ad8x&UEPs2M+FSUlwbnmce}IyVGskTE z8VJT^5#g&g;fvp{)9VI1d|JEkeIq=4Ij0-G#Rh!O54O=Sw_W%ukUfBSgHKO?zGuL5 zsU4ns+J)y}N)S8=rw5+Fje7t691WQK{#(F9hc*FEfEl7FycFLa43I&fNc_I04Sup# z_LB{Gy4m5`)GmGAyyWYl&oc%*)6jrPpVoHa866Cd`}FkJM+Q852HD`b3`%4>{q;QZ z2Qah&(5dxT+73hh?eN?{YOg+$*BF~a7|AC%lngxS2Sd(pAiK0O1OBLS61(5Mt1LTn z##Q0PYFKaVWD8X?^PTOyIx_!Ob8lP$m z_@2MmMz81Eg|7nHL*c7F?eG=s)alp9gbxp!#A8v^PJiwh7}TG(sqiT6DB0*2cK&(3 z4S9Uh9N$+P@J&N|g8u>EciM+9Cm23`LOgnE{C2{CXU|18cy4YVp68K2%!D}JoN(Y? z-OwMx&W9bN*Au(+{>-t%m()IdeZs@1oM!ma;O(6Co8J$x(eJhP$B${qA25FCnh=lL^!2dwA;zbO^Px4KEAJZe-_J&`tFZ~m z^G#&rC_g(sJ znbEk#g4;6EGKXqjn0c=w7iLxmUdxz+D+NZlRZ) zG5rgHpX7}!@OZ2lPc6HE9GrjP{z~uzp!`}@;DgTTuzZ9&;B+n%@St;b7CzbDbgm|s zsrF}`XIsxYCzJi8@e=4>JWf`fLKPbC%o%TglG{{VvP$JPjc1+tijby1>&y>1-!BlT zLiwqp1m6WR-*nc6eTm2hm-B|)^Q|Avc+mMy(TwoKo3|XuWPbywWR-XT=r>%LT`-#u0PzJny)gHSaCEdpuRz?I zD_PE0=9V;nAI~XJC&7C^f6?-0>t(sKxNP2{z*}?FaeQlz`^((6Bq6t#Q_ zY%M(MR=obR)c<`@l!cC0oMI68Z7 z-Za)vbL{(x0qdvW@qiZW(!8y-xD%koGHAL2@MnM~#sj*@8&v?#qW@0)Wxa5Z0S77o zIf<+Q3^r%~=yh2^w9K<`U6!S56m1;}>3Zfo5`0~{j$tcaNLSsMsC1oG@3mHrEbP4I)we_z}x?E&1Bc#h8Ym=_uXPy`|01 zo5zUJLj-fT3@=UEMT|@AAow-ySe!d}HSHl@VB7uy*&>2bbyVoOpwNBvpdsL-8l z8_N)(`{YGa=&r#lTjrL3|2RYFE{EfTNJ3Zd-X#xR?4tdE5Tj<=J7KfrTY0;nI+bi$ z!df&>sxY0La!d;5_0b8ChzbGnGl7TXxQWwUP1j9Y$&IWt?* zn&!;1D6~Wrnjm6}M66K6^nDTCzFF*x7`r4joHK7WZ6=9AY|VomCJ~DlRWykh*~3P# zXzsA7)dPE3kBk~J!Y}DrfA>RJF#pSxuD9Q}N!Jfy86u{%QQwG4*ST?^cF}H@uBahn zmyxd8m8Nt(gbR7*+_f5(Aws$)z@#xccbyA+Aggh~3Y(14xvR@a*U%SC=}LjC08_eL zFxwH*bvsNNqtbOQNLMK?jzPMjb61y$rvAjCl>n;a8pG8fry1?m}dBx?#GE=&K00)Mqbgh8Bj*zaOkyDMRbe#jc8h?OC z*r;@MCF#2BIa9jg;J(;A9ZP_Hm5{DQ@Tn0=x}qEPU2vm*6x^Uk4H>(VHw0s+-ZW$! z@T@6y3t^{kO5L1;hSdGMcU0=crn=a(&+D=-NOVKSdRT;8QWrI3)ViJ_t1Uhg%G(n-BjVk>Zo?xE>?&L$VpZw7j zv6V0zHbt!DQ$xgl3A3xHh@A@?jfY^CN+QO#j4WR7cSO8ij*1rzDQqC%ON58Gyybyj zv^p!f|weHc2A=`+^^VK<@QK9fZ(U8sMv zMQntKh1z-OmK{q)HhmA|?COk_3mKR^a;~>Z1eYMVTLcZ)b-K&Sg=C(p;TftPaz=wJ zjc<@uxIq-t+4ewrn}n&3ebjlyoilQ=R^R+WsJt;*!FwLx^;9Ga4J(;E$&u^1&3>Hq z!1bJuC~SGHOXcC6r$Z(-m!CLJB^WnU10#(2S$;?|d zD*=vds{D)F@LoqX+{vJ@?7({+*T8hl%wz9$lh}LRb5j}o=lF~8UPom~x5(rj6#j zCi@M+`y0HsL!PM9>?~GrYLizk}O!4aRPn&pM z^?@N?8&1$L8U99fbW4O3iLP>VJq9LpBwlP85*4qmAYPaK$`r4qFu^isub;z!Sj=8K zk444n+^`w`=&Scyc%>s%18G}!r&a>yPUqsn1dP!1pZxhY;6>_N=g zYZ(l@g?ROZbEK$voeSc%@y}85>SD9k{>M!5x*Ucdrj1oEnCJ`f8U$xZk;JQuST?q| zjmU>K<~Aaq+x-9d%#&_o^#iglU?VG!@X@HSk4B!(w(C9`vDn~;o^be;NBe8ZIFShO z{P8#Qyv*>?Nb3{co#i91Y$~N6nGt#0f9Q#tq=%l+WM?0GqNdIBvd%vAM1`%RvXV|c z^h9OtM`eLW)Z(ZNci6)|^h6dQ#zRkrX=9;rQue&h6uTGx$0l}9!ggPX-M3&15*0hL z<~qBlW$nMNrih)2v>vCduuV#wfD4bQB%H$y2xDaBO4jYk3Vi(=W?@Al_ zvvB4~Yqh9tqcG$+ySt61ZDT*x6tP{fU@=8(F78_h5xW+yuA(A#F09uE;M|i$ENa`> z*;~}4IFjX+Zew-&Y#VR;nJHc~acrhc)}Q5l|5Zc0u7gvnNaA%?*K4LLtG%(&XL(Q5 zcpdt)y#H849p>uGi=> zWz%BcFm1H0*NlgG&Gp(h=b2*H9mi>=*uApB5W9jsQL&=|uj{YZbg{dZ&TTBQ%ZZBJ zS>GlJ5xeF&rr0g`g-x0KGj7cYW%AbdB8y#gz1Ef1Yp*>nl*y=FW0z4TZ+X}huPYYX z#4DceG*ukyAywXkL+nV(WK_Jml6d`Ofe^2#U1OIKugx<}@oJcF6R$gJ4e^?bL+q${ zoeNtb5_XPhD{i!Kl_h8e}+-Y2oD@$Vb`UTvSMaAn}5U=HrL}xE(6MQ4{ z>~7?nx2RXnFvY76HXTjzy6iWdVyYkkBZkhAYKP%N5!j)&0dSAnc_7OyBwxnCQKjUGBD(+#ZV&!P^ax2L0ajk-s!E@xo%{i&wdz4M?=?0)nQ zL+svwPr0broeSq=y4YPn%WO;RqIQj4%bZx&${V2AesK(kuZqKeKyt;)8MV^fFKGhw z$xbE1FU|cJ5%-1z*^(>wwHT?eUg{e!pQx2Hyba|a`-j~RLDgn8C~B)*yW6QaTI7nF z)-q(yi%~L~q`5DlH0;FVm5df??%xohZ@tQ-!de7+=RsXv?~+fTu8;gpv}hEq5@6EY ze)m#>2_A#i4QYT=he!cL#kEr37z?7`>$Mz2Cj6T~NXURtnp-WZ`%1@_tDA!~_lARj z2~{1Gis~s?{F+lr-HX_sgHrLU2c_Qe2sh$O(L~Br_$HDjIMJk(D(LXC|8lgdqe%b#yuuhtgs9eWETRd0q_tdWn3Z-fq*w*4vDFDQCX}Qc(j1Ziz1g z4v4*fKq`Ig#=Z#{Uq5_`yZ#r@rum0|8We$bFwx@2O$n1 zI6Z0a5C|wmP}DX13@CIO2q=gKfC4la1t^FKi4GAR{}pZF|4VLpOAz(PqUDXU zx)J!J`*qHioy4mXw-VbnFxzg`+4g;~?OWhcm%+9QWh&f+B*?Ui%LON-OR~^EaMg7W z^-qiJyBGcAmNSc7GeNg|K%64{j4OknQWs%d zU}m8%3gMRs{k5c>{+ex2P3M|&<{CJE$v7aZYovJ#bm=gpNmd((gQ)wG;tYu?j%!0? z5|Pc28AaWovsf_v7b@Caf&Atml1lUMX6u%0ovaR%=V}d}TkBVl1;Z?On#Uj-j;MPv z6s_M9Bdy;MgTYB!U-Q0Hv_?wZEEPA97ESC$ zm`>~k{F1id--a^ORfftO2&{qlZ${@dkPM;ujnqj><I)Rt(H5{Nqs}4FsNw!|~Ew z?B}5iA%ab@;6%q*-!K@%#Kd^j22bto?uvR4tcEYW9S3uyLgz1JU(!`(>`mEmz>NG{ z_Km#KjBSw}Uz(Ap#`=<;;uxyvXB46^B`S`!@`?KLry%Qc#fPm*#_LkWv-hxIIE=|C zt;JLOS*%xDcEnTrQFpK7xTkhcH&C=Nj%x5awowhA`KO~8Y~X-eD^Q!wsMQc^pah|| zl~7aE?Q-o$aX<}BfG@or2MDz{0pyz;(}6tcFcp*?M+v0GkPd;=dZ}U?G-3iIEK+d- zsaW)FA-L0q)YB-|ss1W5`l~3Qzlxl;{wi|X`>V)l>#riGt-p$F{e^I({yKVh$NH-% zu)o%!Sf@}cHc%@LK&{x0T5$ks#dg$+?Wh&oP(wHpYAGE=tvC=h|4%xJTB(6rX#i@a zcGOA(P%E{gR%%DB)P@?ukxMUv{25Kb%sFm1JD+xfY#Ex2t z9kmi0Y6wR{?T0_^7-}Vfs9l9(of<%ji~$7FWep%gYQz9?65&V#NcDerYyc?=96)YC zu}&dXY#;@>vXBz;B9J%y>}Nh$jTaN!8QbF_f^qKFhd`W zpZ0*FzAM*$8hf43$uqNim!f_tt>_<qC;ttH(N&WMr6^VTm$Clg}Wk)xA zBsN=G;p`KWy8}zrEgZ&QM7!IyaiS?*Y&M0pv|J0vspdoclH15B%Lug!2*{C;U1eD2Mt2btP)t#Q& zk7LLAh9$_p2YPwcdZ>U{VH}iJ#+Etq4`69=RgSbWXqY%oY%`I)_5JS%Ndgz%J=ynrtE~#eF$_-jNUHm6h_Zc_KH~zG17wH zBN%|wRK1s=&En!X^7$SZD0&LY`cW;`k^cerla{183Yw^ww4_arf_?Z?nl47>c^rB@V5c-uu0L9NDLH5L8BGiEi?TYQ4u^K14}E| zDuN_3S==$3%KxCK*qtMUTBM2xe-MIDoIohnqxF{^NwqeNKJhD*T`*WSf}&?Sh*2yc z14d3@ln;!Ygi#ziLB~iB0wYRg4irHQ2nE21^CCzXAwv*G2gD$7K&trjWWvZCm1z(F zM#O5ssE6!uZnp8-C;p#Ob{Yikp#UDL;qI+Cf@L6#&12xi-Bat2Rea7bsF&Qkyebx2 zE4m#TvZKnm!-JJ8%@S80`oRuIRqhT4!lMxGhD9u*-6)D6QeqK}wW3Z$omR9vqTThf zz>Uhr>Cqkt(*)#otnp;*D6f#Q2(9?2RnFKhRlIb&g(~hauh%D_LqjsEoEh?oIQiZI@Kl;=pGpxCQ)z18REnrMl_D&rQUoGRrJvtsVPcy~ zQ-h|`*C-pIv5o?h^UOI&noC0DRd?u}^@`b9PzQFPi>}NXu}#X~R+Y3vS^NGSD8;EEl;YG7N^xo+r2tpk zlzO(bO-kj2QtAOJL6n+`K!-#lMHh{fV9`jiiv}V>G*SXZ15r~n5Ei0=KqS%FaSLH& zj%S9JnGz%#&r>!+?5H*duE)FU@i;vWorUxF(Bpc4L1B?9AKH}N;M`J1-2}2eGPbRZ_AszKUeG~tJhRH^9RSO~qzz>>i?We84yQn;Rjl!$ zD%SXjD%SY0Di)`Ps92mDqGEAsh>FFjfhrc@YFovUZzA#p3$Uq-jt^C_`cVm@R8I$ArId)2Qo>S-Q$r}lsUei&)DTK>Y9OTmSKE{tG^tHWDWR0wH&Lh5UIaQcQ=M7$ zMof?}9z(U}kr3j? z5f|q|(y|_9s_kq@s+`7459@qrftQdsw^D-7hooiB>&w)DL!yuT-={J}h3gTpQ(;=$ z$6jf6BBMV?-wZ-;jl8ZbqfW}N zD^o{*j^sm%V<)99FjG-_G@bH|9E(q8YAaHY=y_i^Q;#6^*jV4lvBU;r%QDtT`D;)y zdVTb99ONZsDvtNeRP;Tz5|C)5#L5+GaXPpjr-M?Z%pA}vjyqbViuvP+R6^eM^BbHH zZo>&7s>nt?SC?hbK5?0vl+6bpI4i_a&L01bRFH@^7J-u^T8>FH!V3gjBjv0i`h_D} z4v{j1Xq*~CG)@gAT25G^acTh3D5XuJ6^!i&(Q-nGHi!xm(Jnxs6S6bdE<1y5vNPC_ zoxz6e3=Wl@!Ita{)@5gKMA>=JL%2m85(Wp!jzZZ9qtOU-0;2>wMhP~I5)6zI42%*& zF-ov7O3*P%h=|djbrN!f|((sYdIm>g5;7EGxMW*jl64hb=kDL9ZTtt|cAT~n6XS9+p` zlqQ77WDXpMso@(U1ygE1rqn&|LuEOcPAyA%Vttu9;}8{Wh5f*#qQF>@8Ph{P=F|_} zTPX7;=?M()1xF|^=G3I?MBeK}UQDU^$5Cr`rZWjA@|Ws0V|wV%sYywWjZ;F%Rvn&foH>|m z)#1s;c|*y@H3yK5QrackS2-Oa8&wrVwslmHxb5Ev*hhqORyRM8O{9o85r@^yU!pQZ zg%=R8Q=#kV<`=b%RjkPxi*EvM{+(Vr0L1V(32 z@9Wt%M!|aDyCZdswj$68jLu*mWfF)T@1sNmqu9=2bO!tAuFN(u3htw8C_8bT8-Y&r z(HYdupSq?^jDmIZJ1IM1REj{?#ORfbPGR&UWhab$2oOdmqhy}5y7{6JM65{jY8$$F zDHSBL-Gso&lI@(;&2Jmt5weBR%~PqMu#vtPK_NlHMp~NtbKYS+K&!#)d;@)m1sme` z#kThcYQYCstX)J_?AYUOQuCW=mlU?si0xB_H9La1C^2k+nhz7|cge6FDW9wP*pqcG zfVutx+Ed4VdbXAnt2i1FJEj&K%hsH+*eU0Ya>G<#vs;AUb#(~dHWPPgS<)Oez|8$) z|8OcH5WXD2fFYy3TL)>@t%Ef4)8djd25&fLjN@ z{Vt&rpg`De9i#=_I+#ki1sYQj^s2`MCWZpOlDm#K$HR1;SN$+s>!;;^z}wYY0s8EN zaX#mu(b}*DyrrxbG-(C<&=E*^T~FDk6;Kx@=V$|~GTxN(-&6})w1Uq?ch>VpJC01W ze5~@5(50wpJ>K?Efqyw$jm%Z-b^_3B&TWkFlu>acMA`xaec(30k$ z)*%8oy^~+%4e!r#&m@?K~h`X-}M;X4{!IT*;U<=^>5B(WbN)YBd z2zHA52V2}f*yR4fg8K&x?ibtNHtrv6a6k6B!Tr3o9hUo-TuJCe;{L%w+&_(S3pDOP zuv2IxSZE}eXe0bOcmT47h7ob=`0#cfuQ@I6Gxdl^+Eo~c9 zxecbm-Zhwtx2wZ4)x0a(Lc<-zR5wv>!BpcA>{M@jt!S+NPG`_~jB*P!<{=m|!M$Xk z;KE!I+^ZFQkgJt8xodc<8WWtm1{>8HCa0^gpA02M%f|$Fzp9 zwje4|QZSV$EtpDFosCL}wn?Q2FYgGIP)iV%MpHRKr4a}UkvMmh+<8O8p>5pb45#GY zKqUmi`3MG#0qxyMO|$N#rkQtA(}WhEChnxBh1^MPOUn(ole+4^+QKC*KwbIN|0v}a zcsz_?V8?Y>j~gGV$Bhrs<0!?Z$Bo|>PLCTOs>h8F(c>t^(&NUrqsRRzEh0foJr1x1 z5avVwJyc2%rVPQ8B#aVD7$t--lwu={5|%JZC}ETk!cdAu7^NM;EJ$siFn}$HFoje~ z5XOsOr#OGG#rcCx&L1o|f3V>E!6BUAmWCU^`7eDdB0kw#|G@!xeCl6Fxdk4T2zCmO z1PhM@6OROeM}oj3Aq0=MRNMeO4t=vNJQ9NNsHfZlkJSiv3XiY1Kfco@9>M()W8v|| zWu3(1>+O#+fD@`Z7_&oge~h5qqCdXfSv=epU%5@batpq43%+uP@Ksw{ZUA5Xc1T-z zxP$m=D&-bvF#h3!DA`q7I-X1FhqfSIh>kXWck9_t=$MU_vR+|p-dMm zi1&Wr-U2rz!^mi&PR)c#BlO%FHfg*i zNYDM}rQwLvzMeaW$_X;vhu|ra2^wMmnW{s{R2_y)lr4x%loU)RN(&|vRc9j;qHU7t z=Yu;!rcg!q`&3SlX*_~q)1(CF0H5To7PAU_`1c&(RJIP-uL4|acnZQ2G| z#Xl@j$wdR=jfgjL9Fg6WsN#?Hy$SIqTf7Bv)5`~nv?4BCePC}_=54Ml;fF=yw|wnB zOsY}_8b`2A?|Poy$}3LXktcetF>ZXic5wI6qredI)R``m6so344u7S@*cmsk{lT117A)qmGE&jHQ)kgNk-&XvE^Vd=Eyb2!QB*UrCHsLzv z7(4aZaS4H24woyRb_1zebt{xSTeO{CU8^2m6ls#Q(pPT|oLYf}+2S zg~?Wc1_vIr`yQshyy{U8{H|#E^|DslAZM(RrSWS(*!pqgv?QYu(Z+G;L|MgGjrwaK z_g}_Zd|8W(NXbX91*IZ|`YtFHDb#~OsYs!I3`#{x4>&;SXM#kVWm#VKfMnP>TicjR z2NA&n7QRORqLNx7TE;d&ye+7g_xOK8B?av!BY29mQvzwHM5LV(mUf&PLOV_kp&h4& z(2i3BXh$HmNxT2PxI?s4LTPs;l@zr57J_!#b->rpVBOcx;6PtLgDqb_g9|_lj2A+U zHiiP|&{hzrQU*paoUfn921Z1VeEkd#koiyiw^DY2(If;riBW=%Q9>X_2^K~PIz~dF zHqd}JZ3P8Jyf-X{vmoz9t1oI3ql6%g7EpG9Q3ZmX#ORFlQS*Q{F$(UZ7b&~I=x+#i z5~DNHM;Eq@QE(r9e4&ZadkA(CBe%|V?m(_{TU_VXxlX9t2CG5Wwt|A|c=I?c*X0w4 z;RjffBXY7U8ASM``OLA;lSb=cMW~P zRY>;cv}-NX|^^AsV>~ z3OD9gaffJpkisqZ4@WFgxMOL4C7hCYXIWN<3GZoQYk7~q7nKxri$(C1=~hit3ZNUO zgwTysgXvZsj&7V7OgByprdxF|-Kdc^>E`O!A-YjLL3G=8fl0Sb2#PU5xB@*#b#NzP z6nO{%n57faq6+?ujg9EI#^~fQ8BlfRd2hR`HBR}qA_VRlO zo+Ryz^-B%_wXI)rBI@8dVQI&yA++Pv5ZZBS2<u(??+(!}CzN)7rIKQN z{R4t_+O?~L$3n9f-YEwMdZ!dRI2``8D6E6S52dixKu1z4V!+x6lJ0;EK{~kQo$`D} zF2E=Qi!;+Z<=`OilyAFCj5Z_KNsJP7j1mGd5;{0z#5y=&7iJp<8nD^0f&!yp9o)hw zgFpTqo>03|50thZPiD7p#L@T(`Don;5x+xb6wcE-+FN z?1~uePwW&%Ybd+GXeELny5vT?4j!^K$vSuebnwy!cMWuKR+wp$b-wQ2LMk}x#RbqL zOB>x=pl8QHS*FczY-B=_EQJD|ln$@!_#i!jsiPDMcqtU{fw1#HqFx^q$xFm7-JjBuM0J;l{Vkz?-x#ES*Pl;>3f|x9i2l8RN(!1)Ab6@Y zBfU6)W~38`(2NsOL+Om!S8FRb-e96T-FM(HJtdk?7Io?OZAsC zXSimrMq<3I%}Aky+7G+QY5URZcwcH0-v3(CPLt~r%qHQE+2uTr7kM1?{D8tu(t}L4 z_qUApH{07^9@sv%pl$8{qMi10t@aI+i)<)IXg>h|p!NgtZ?FAz@#2*di|oZj_IB_; zeeLIlv|oBg+h5ls82^$p+I}wD*J*F?U(uQ5zjblqnGg$xVv>P&`u{ZYe@OeKXSDrw z-GlKjInC|EN553@Mr=$B9(VNjcES@pJmgHfSy2zm@CWbl-88jKa*bWcFAhqsoF$0e zupBXZKMn7wxpHdgJH_zCn(O$Pq$e6Zc$V-}q~P^De=T5=3Tk9}Ou#Fv`vq8&(xrk80HuN2lw7yB zpe3nrqts^$-m8@Q>;e>0;agIl52V7q09NW#BNeWb3fIULYqF$NydJlqyjI;`@je`y zZjdVu$IZBz9Jk883(D?Fz?MVeqq1Z3s1xrK(<@)30|gOEHA5+8DA^3T%n;s*)JxzA z(OSG|7B3akOQQaRptM|Z!YNg3>P9r*=%0?1G9buwFAbo30n>INs7JIt9kkC?TPt=0 z=X$xKHBNfuF(^+S^0M#idBdHAw{wo{s2_D=xBir8Sq{)ozm>W$AZ0>GN>)fpdPqu2 zNQ#S6@L-*@Y_#M`97QqW1A5@HSbyNsUkf^cHcn~oCP1sGN9YXJ2K`d0i5Mg=?RDO3F2 zhrf8Xw)h?V-Hm^n0p45ma^e4D?_0p5s;;(Ya)F6K&!C{uq6UeYl(rHlawJ0-^wjvW}268+O#@4a4^}<(s!S-v7wLk!Y3BgQ6tAG|zsst}E<9LZ^ zlW>vw-*@kG<`RfTf6@NW^Yf51d+oC?YpuQZ+H0?UIe16P@u`@Xye;wDQCenC`M>KX zEXltU_g{Q8`&iKn_*q;yeDN*V7rh_gW3=&8M14lXcn9H&X_vf>$8|BK6yN5&x=krf z;OAX@rt=-~iB9F}4f6Y(_6y%bx+~j3Azr+SzgGOMN5W?O;&Zf<@i|)im7lP%F8PgG z7Kq&V1gQAv=ha9!8JX-C9>C+2bQ%`44rx%>)%bwzz4}RcJW>&I77r z@9c^4)05&0l+*b!Tw=2g?8Z+VWxS5xHvDZuIj@NC;BEk~RR?&T7zDOM4?+l_t|r;| zoMK5R{AOk8HdrbX^6)59Yu9&yNk4F2>zv}e&UyWmW^q>v?zFyRmYZMajO8lJ%P$U% zDM)`*Xh!bv8Cv;_ak(Qd#@u4G5!O{JE{hY<7o~&v)<`NA`!6nHirf+Su8D|62oYE+ z%e2EH}PycTg?EXCpu4S0wkcQ{sb*xG-#nGq=wS4WE#FQBA(+ z{U}~e(Z#fc7jl2I$p7i!7e?NLEUB++O*cNVqnBg#CIsbznG(O~#P0;<4%f=Td7YdW zA#zv*?!|2G`y#YKwRVXBc1-2fY2~>i@Yxl_;8$>)-)&m%)^SPvXtuqr?Wcfv~vxTp+wuB8=~TW+MD_3gM4Ug#VsG z7~jm12sZ%XhQlHJ91%{7M^%pqLr`{0gm)PT?~w=}D-f0+Prc(dux(VZ5nb z5H{5dgK7P;I8%V~fYImb7v;$e1=AkixG#f>p0(ppNyN|$8iuAx7@DSFXqo`Tn)nY* zp^s1+`z-BvAu#z|?1yF`|55xnfxK~)*1ymtEf(?Nwtb5KKYLkVdFpebxGk%@y2br3 z$Io!=Q7*()CjFswHSy)%czh+Ynwm@Te;^7@-}w1(?+d=5TfsMofH+nQY@lb>1$r#~2;X zc37t(Mczepw5L+E^JYND7SHoLxYAPiDL|W@#$JlG2a@yPQ7BLmXvly zQt_V+0y0&2*P$vLg*r!{D+^6&@OR@~AAd2@c{5)&>EUjq^UjfM(v1`;(lg31NEazG zNY6+C(&gJ8NFNCTdPlk_G=ua{_hg9de}!T4BVhEo8n2sSGBT5jo(G$+!7%yjN4>y4 z+c5bVvZOkm|E6)-hRL;}z+M?9mvplq28)7?T}u9EMZsyqB)9hkS9dG8wLL>_6 zFg%_IOg>jwvWLgQ-XZ@r43D)R_5%6r;qek=>BR{1HE@3Y2faW(oAVDKOD~ZB8aUs# zH^^sm{+0K8h5XlGm|O%*K3C?m4U-f8Ymg7U_l1$a23b=2@t*$&4U=CdNOM|+_ueqM z9yz}V=@}-2VUvBshRLJv_LlVShRJl~Oeu?7Kf}ESp9x%j@N}3CHUte18$zaw4MD@l zhLGW8LrA&>88G~U&v~EB^pd<0@5wKi>1I=&6plgRsroqnXXG*c0e5_sCvzwfr)NZZ zGNm^}M46t&tm-5Ok@TMWZ`zbr86YI-Y2KS5sn1&7@Zx*I=?Kb}?UW8F#(_E@TcCQ8M1 zU@R4vW}(!VWU1An)LwX9hmg5LQbIArl!+lJkr-l1#1K;;h8WDnZ%Q1pysj_p?u|GM zNlU{g@rRKmCC8uTCN3nxg(-v!O@s?m2p5_N7n%qc8VKX}@CcvMD})O(5l-ytCBjF9 z!#_stJ^O}DzjhXfzu#Mgj|hjKd8aoBXK`3VmR^a(aEiq6lt>IWMPhhLB!-(JG29f1 z;f6@y_wXW7*eisGXNttOx4%h*uR-mfFA`Y@pNTBoTbFWYJSf~5P%ZIX-GRFk!*am` zUS2NIyj8wgI5aq^hdbk!a1(ut&IZka>kZ2za8|$m4};eK65JVxOP(A9a*fx?3mhYan}p?JLHIfE0;tuL|Kg6fKyL^Q)}~aD+Lhd^1kumx$7&+hDvP-Ytj4kM!P_y43Y8Z4|F+8qU7)!&zSTSsCBf{n}r~5=7dR6oxuFGckq5b-C zSR1)?4>XoO;FlsO?HVk0;%3;F9qr1c?R=T{3lWq{pIG)p^3Ca-^&-eVq?PLfXr3AG z^t`@C5k}v+KXd)|Twr>59U;08mK0SDx2L=*Eec%U1dC#;v?%uP_@YF*(?q)WbSKiC zCen?a$6Sz36KUimk?uX+h~zs-B#Ss4k(U9}-V=$dn9@WZFNpl6%%(+e^n`e(6`eJx z--Il^>MKWNP~ZJ}ZxGHJ)c=7jy+Zhim`&&Q3gIjc=k^xiBf{a}zrQetCn8I)IDACR zrdPK22H`9#n`b(KjIbVj_Z`y3CezmvMb~Bp> zAY*F(%$=XP`v)EsZvTN-B(?tsVeTp62B0q-6oVP}xBW457f@hZ@AlEagi3D%`Y2wF zY$-B6dlS=8K?RH_nDb&2liXNB8oo#By@N={`8gJ$?=dZ zIgTP%FR?Ea*u$G;VlTJs5c@9@Iz0C0_Y(WUEbI$Y6k z`)uBakgJ#24;PXHro@LiRHh#66LJ=}WyPUtp0*{&C2g>UsYK2B81N-pOz`1JI3Z zDKfr6191I6dxw6u0k{ykQnrtO=wL3jZC1r5mkk^Ai7 z{;jFp>^_e+rf-(;-(uBF%HA7ZS`U|!z& z(P7;Ak?606F0`tnaSOB7q69AFd#w`}ejIe_W7b+7;?|9~lv91QV8umg=6xR%O1WH9?yK% z{T`2H-S5$@z8@Z``g&kz=lU#mDo;9K;PW06aI~^VeuBQ9`6=n^p}qyEPwy`qa6cOm zCtk;I#iT*hSx*B;AJ6+*YSqveC(2Y|t=!%C|d5k6DgM zv36prKbZO@>;9Z>`X&4Rp3l@TeGgM#_z2ebs|fii^e21!q59>^($|B2IaAb^8Xn5N zGI{Bt{g$uIXg_?wbh+c8a_K=+heDryS^9dYZ~S5Eb05L_wyw!)zeDxQS4`gzv+Fxl ze}2XFb*}z;>06Lp-w~(pgzWkb)n{KZKmYVh7C*nb`g-W^BT*mqXFK%gI-x%oWb02{ zoO`G}_~pm<=&D2O%hI1;w!R+v`&Fnf)Bc14r3==u&|trq?U!}GR=4pX`+m9493OVC z%&xC2RhLiNOJ8w)b66h@!nBF)*ot+-t#l-7>)hJzZui-pr0RFjKKw`x&4zt=wmSM6 z`(6KwNZ9w+z`j3QrJtK6<(+c*;@Vjrf z`qB#M$kg|%#;=#YGrQGyr0H9}Je$6>!aFkj9Dk(h>p{P6UB>>AR?xd_BHe`K0yT+2lelGssHE)=+?d`;M!C}|K0)pJ5tQg(Y~4Ysb-HipQ(T69KQZ> zUswH|PiMF9k=DNpy4822_0tL6>O0c({ps)7{5;b1jqFz6k=DP_r?Tn$%IfP$|FOPr zQ2%aiI86OtvHq>rjN3*|yfic@ecMQTLYVI}zLL~X?lByQ^)h#6Ej!?7PR`;i;qfJ+da&L-20X-(%6X=XU~Am_g#nb8&Tc(jhJry&Q3#qXQlzancxt98)-~_-$PA^&YMNIDOD#j+YUB8Hhfno#@mDob9%5k(~$ftq(dI zul?G~@wm!QptFM$p(Rdm`w5Jy%7UB0RTbQoTB4W8UzkGvj%?%!9*R6;vym6+vXK8`X(aOZWFjBC zci`4!`ab)Ql~eXjQnh!Sjkr10G9~`+Zyn5dJEK1J{wn8{&PmQIE>~;ctHEW;dj8!j zhFJVvR_}oF2rgb_T*k$#PHl@z`;SXYM)M~k9m`fjV;3A(V2QofurC>mc)tbsA;KFZ zTo|o-fyv4vi2?*E5)IbsU{VPT#8;nOx`GR&oyt8n0Dgx>d9Z1O)z+#6yYOu!7v~}x z*7t%DC9oS2)uEe`#`>YtcUOrO5z|Yo-jCsYh;8q;HL2M1zmKYMi)>yV!sp3wWu6_t zXcIWeHICEcZc$Cz|R^%CKpta$?}LZIlEX5 zoqRQ3T<)BRP!&V5-yXje=S0^R9~M7Zekl?U9LQn^b`HRW(V?SHmX-V#PXn1 zAB5`|*2fhgSTBQv5L{%WC`EX&5k3RqB}TXe;RYjo8p4f67_O{f#0ZZ2guWx8HVKtVC?+9{7p$ROLd6p5lF%3l zS)kz|1*0Tnlh6nW*(EegLPZjCOQ={vs)R}lfgy=AC|!gf{R2jIFo8izvn>-%>q=V|E3-g2UdLk{p9aKw`1rV zaEusVcO2V&=yP74T*_?8r7SAxjohLny^Tq4L(;n>>0NxwF-h;Dq_;lltxI}+w;Y{Z zN)nMpJjsgWQnKfke#xa|T5>5FnOsWdCYO@ow-hFqjuOx?@hlb3V!k;lxwJ??cJZ`{ zr-g3{l1nKn$)yyZxJd61z2lNQY zE}k~=wD64;^gwli9`U4#13h@&VgWq@qJ{)L;z?Z!YVagg4FXyso{PnEk$BeQN!scJ z^V6cRl5kc51VU~y>%#|>!LJ-zUn7AQWj3ALl5VlH~ z1S1GjB}@(=2umeQmLLd2CEO^3uv5Yj8HAYPLJ z!a@nR%ODJtaF-0iJ_)k{Q5(#YFk2KsSSMjNF@i8o!fbT}VVi_01_;752~#c*gk=(@ zpddIEK}rsSuuH^2r0+2RGxK04l}+OMs)3Uav}k1D0N2DFKdQdVPfiIIQXQ*Giy50Fx!43g8L}Oc1~X z2}~BitrD0jfSD4QDS+t`m?eOz5~vZtT>_Zo)9Y(ws7|l<$WXmrKTC!d>Gk)?&|y?zmbmHMIw@uM%QC!j3Xmf%-eUi)YKz>=zf%meyg z2~CjD-y}4Z{h>A@0iOWYOQ0TrImKUklrTZA#ZUI^`*J5{_W$4Vz!*6dg8To19WEelv4 z93*?REMR#o67M+}!%7lQpLo{bc?*3!b{mHNjNfAn_`SX|e!KBIaH}vtD9%W|g0ab^ zlypG9C&VLc&g9=4DfXe0?_(6e1_{>Wi1brs`deh~2@<+WLKPCKBotedn=(au_HPx! zul0j|!ni*MKX9I1z#naQcISfs%;uaJ`w@%uueYbl8&hJqb3SovAIAFa-2%UCvl@*w z9K6q>Mxzt(leEKe=*=rnCKTZt4AqpvH>fI=T`ueED=ifuwd^&w_JLmgLY3C;T#<*- zB)0j5JmilwW)>68fAIH1@X}(5AJ3a#Pqmo-(90*ZzFdyv_#Zs zMbVz?5L+tnXcCOTsuW^X#OBCYL6?j@8?l3Aq2DzMJrz+`%j!=vqWXau?bqIHi4V-7 zXq@v$n5Ez^Br+LW_8)Rxl6svGm2)1OE!I)BmQ2HB%!5?@9Vk4!SxOj0D1+?tW( zGMVH?Gs%C*j?g)iGm?ByCK+!g*({Tc%ScklB$=#I0>WkropV-3s&_sSsnV=d0>Z2d zoiivS)moVR3Z z3I2{0MI&u*-7I7aO(H`1V^~BqVtH6WSTL^T?z0n$l)b#cAz2UD64U0=W=fuj>QFXCO6f7a|z zSPfY5KP0Ioa`nwvhxq;Q{pfBLss4t1;{1x4-kGr;K@--kJzuRot7_GaPVE(!*6Gv^ zI-`iUSbSr1QLx2(9ICi7T}5mhYH<1w;LgaoOO*SisW~MAo(hhH#-5F|Njv(*Wz58- z1z`~Dz6c6c^~ps@$}W#I4t!`1g#`Jf$7=0ESF}YiQO`e~S@lMd!yhenCXYvX*6c`V z4%V1F&aHoU*Ww|dr}NjV%9!*tyQ&BQA{+k3?@CNx~9FTI_hYagJ~LgqE|IW zE$E<@_%GN^_3FkbAq&{o$6M3kQ*$krBF`xq`HoF|N9IZ;y9{(Ss3C7FYLE5#y;uV} z9cl2{aKy8g{0I`SorOnvhpMfM-G1c(EEIW$JGE$tWce~vLY-?%QE|K<+7z-3LBfX%A(8srh#_ol?WTsxx~VfeDsHwaflDb7 zq48FH>on(%Go8`Clnm4{bIm-9e^kz0N_6}P#2{)s=OfA3Nh9}TMVIZfC?evkeE6{_ z%PyE%SG72W9VD|()i0P#=^Uf#wyN@^3TBU8340@Bh0<43Tv(}8?!%c{ru>%grzUJe za&KFrpBlPgGBPKyxZ0|Qs(q?vqfC?qIfuayCpq}xEC@fGCgG~ zy@~%0;r)P;co^)%1>OzL(1ri;cjYMy#AHyg%TPQj2~!r9kncJa?p}Oan6oKuga1u@ zbQYiB+=q|O=JPc_C>lCvFN`>K+JJ}fIiK^AZ{m_m7fwv(Da#(t;XJXUIme@@)^(6D zg1)y7)}54@h68g(8iI$UiGi4mGz1SxLnWP&hTtJ->ax=i?3U)*oXISt9})Jin{2%8 z2a0xrqAP5r9qYtfe0n!h>U;BGU0U3swjgsWA}CbV#v^|GR0JV+Ra@KZC+i%DL*u17pcMRo@3G-+|leU zt`2s1rm>{N^$2>eF_bnW9M*bM;v%y#LStY4HBoW#D0GY~dZExU z=x(v6&xV=_&HZS14{Jp+p2wFDYP${17jsX>9T|_=;LpjSFMj}sVaXvVXLp!*OD!mpLj}~ z9Sb;e7JJ@x>C0zAfHziz@3cl_6N17Q#DrskAF;v=m zcc==3`fgSCw(65!aYb3hn5tJ8Y$n4?mue3eof3MW3bvSXGb&9^LP#q>& zNxL&N9)n_%gJKk9xuVaK*lKU z3r<-~Q$^*1fu$J?gp3Nwc03>m`zbu^5*7t|rgnROb+`8w-QGL8y)W+e{>1F}USHZY z(5SUV-5A$pvqGEYcr#R=mcJf7*%gfn%@!Iv{~=liC%E)L3Egk5sQe`x*rjc1 zw8BOJoONlhD}kpFX5t8bRb8!sosDn8R}?FDb(m6CjnT9Uww*c|X7OayZS_tz9NO51uc=R`>ycEArAkL};Uql@Y=3q0C5zJG9r=ssM z)}{n6G=g>|IL`@)|z}f57u3J z^Ac3?H@Zvo>q(yy_#uiDd>IeUWisZ`2PI?TE~fC;*erM7QNF#ZyaQjt&gO?J*`oTJ zhq)cIY_0V zuKkhlx+L*&3)hfNJP*+ z(Kc*)xAsjWDHd&VP_5m`rcnzvu`D*d*-EnA12zo5qCLmq9oy51Uy=7yGo_i6Ir5ai zPBf#)@qHtQ!_2Y&a5-#BfOe~jvvK_QX;K}$LERKr*Pt}~%dx0~UsMbBh$=hHs$ANG zf^hU~)@sLwQnS_yqt^4yT0cBot;I_4O5}*s*-1@_#*Ke(Kdk4B^F4D{a2CajZCj!ol?E8B zLNrgod`blyJ+^z<-lVoexDR7P_hQtm$7r9aveVwW{?_?VsADe`p_L&m!m+ z)r2mvYE`fJyFQ&W0A$hBcj;>*s9p>^_TY9*TU%>NT>1hLsav#HF_;Kjv{G5-v6VV~ zyYifo4{{Q@=(@&$u7)NxuC+oTLHO?<&l#=~oJ&IVxs5FgEYwu^GP+?9tYpGi>AJn} zRD62gyb@=qD#zb-a;5fWrGC>tT-uH~Be6wdM5hfST3)ScZ9Om9=B)j6I{KKAX5QJz zc|KAqff?u;c-ap>o^zZX>kE`{q|(+t20D<&hdy_GFd6?;Cb|hFh)jUVI!?6MwzkGewb&8Z({8o z>yI+AV(%hWzd{PtOwjgactR8)KukaoNtL8TkgB9E)KuqyZHZWRq(`R8+4}9Zi zBWYEjLkTVsD4fq{$AU}H!Wc>(6c9KcbRn7SX7v!a#fS%~3&;t$BxZIjfW2i!gz&>h zo2JSLr|*6@3i3f3IgnRtA7lt5q{gXj6~4(E%AsMPkM zQBFmp#1p7mw7qjRk*!p!K1}oMcZfkX%xbpeE$dS}yMJeoJexg@Ex2&{XYp$)xS6Pk z-Hb%CtrF+Pt`z`gcKnA%)?IZotoU+y{Mn zDOe9D$VP4HttizucI}Y{(<$=OVZRuS^DYUvCEL=GfLIyR{ zH4Uv0jT(NL1k!~F{yjY>3@4(hTevrRszE9Fbx{+5iX1+icEXX(B~oz$6A*| zXmRgumo5}LSc`K7cwr1UE`5Fkgmia2DS_L8u1kN2FMU6oS?E0%?iQ{~AuEUzyFU?v zeqYU4P;nzVs6jf`7lGF~WwGm$@Ye4~E|b9&f3XzD$28!?j=<@Z$4UP^W7 zyEp3e+k6Q3Ec+ULuaZD9<-iN@Fq>(rE_kH`xxSAH&Sm$D365tdlBFj%CmRBa*|h~V zu)hillLKq-WwT1>Lul+V`!{{-?o zGy-GduDp)QVWn1=QuTsM`)B+hYC)-DI7Q>Kp9CWY3c=%9suUc~MBvbc;S|8m<^IRt|c&*eGJr%9i^ojjxENH3lGE^p~OVX zX|Jtdq_dIF_&!@Imt#F<1ZYum4IV6fW5%V1#<rI4jN7uG)TUKlH2Ms zC^2c!UaQphR%u-N{)25K~o~BwihOV^BcZnZr+frhk_~0;N zU0F9u9EMZ%kf=W7v>BMVbxiU_nF*}F2x+O*M#ay?AOlb)o`A$+x0zcn^$G2n>Sp=B zoQdj`N~~PS(G(-+O{;0n;P&8X?B3Tn2tx1^?y|S;90IQ4wpX(FfhicAth>m@V!?&i zVz*s~5$_l?$-A-JkVG=y|CZIM?MN$rTvw+ACqhR_zaxj7i~$OM7LX}NA8Y)_Lf;6w zW{|KcfL;2+2rKnFZFv`m@}{dzZFy?0)zp(*6!A460e%+CpL+S@6F(KRl>QY{@rOl| ziVFN;(FD`|{uNj>Np(%##-S5V2)L8sGM*@wS}OY^S!I8u%j<6kpQaUKDUzfnSxPvT&O_Q-pT^N(GHK5N19N3>ZiqDP|>azhv^lgD8# zwk8#9W~}h%pWxO{uR|V8f85&XceBT1<|4Iq(yr%!r|Ni|hDv&lhdp2SD0o=uXjASF zBM?vGfxdMHsExh91M9<3y0;m^Q@xGr#m#E6xkZeA7PWSNAM~o(gN$Ke1s(akK3ID# z7GYwjE}VinXZiidpwNL!E04#I93msJ>$hx4@<`SRdj7+B0aP?EggnvLC_I{9i)iX4 z;4?A6zHY8PYUkVnI6cM{q3||zaxS}sLgX%(GqA-!grx@lB0Bz9g<0gn2bVWu3Y3bD zoMX?x3&zmN!R<3{?XNT=@TOmOmUM-foen60c#`?}lpb7*v{$6B=;RsDONf+3-hH(@ zw7MM_p=ze)4D@@ZeS*QAuYe!NdG>9Dm=}XgF?%WxOws>z^0A`K-KjPVZlAXftfW*W z!!+bb=nqhkA;p?=YNhU+j?SyR z4FpTI-*m%GVW>}Z8w#FO3~Dkz8cY!`;y@@C`9ObiBl@}vv!@1C z*COB}gh**?9q@YT@VtVW{d?4PbwRBd!Vna^vF$p)k2nOV-z?>&N z9`4TO4^{)}h9$VRi)Ddfi2<%@Ex;i{6>4K7^ye_$`-*>;J)=%I4*_9`bU=k%AFS+O zT3OKH!I+dnUw2JilIOi%oz|2Qsp#T_hnVDg@XO^v3+KV*enc~}L7OuPd7t`sSO75F_^QRdg=LK9AG`u!Gx2-g% z=hq#Tw$i+e*WS@^%}$0L^a0u@Bc5JxRWDREI>hPL#TZ6+ckA8gxrm5!y`g*6(`}^( zv&zWE46pb1{2K0F8{ED8_gRU?*aR*qZgj%|ZebhT!h;2xJtrDt!wGG{(#8lY6rRNa zC5M&F8{YZilG&|y9epzuo?KHGYca!U2#IC9jQx1&^{d+VMp0>NFS&3^9Y=nH5%hUX z%DGe9n3Qis5R-DT>RJ|V7tkXX=zXQ^4`S7|?5|wz$E19i_*uzy_<4||7$A(NGH};-}a#*4!2hV1L)G! zgi{G{Kr*x|Fw%jMm~>76P04}%0LD)v!}Qe=lqcrz$1;Zog<&*pI(N0m?TQBJnBqSK zh0_l~r|%C}z)bDLHW5w_T$lzR5uC?dpVNMg6lzGE@PlPG6?Lm}uE2feYGW~88*>FB z=F&rQsU}EwJvS|NG#7gYU`4=Usc>oXr6ylWr~3KIL3QvtZQJRVsmRdOHdrm#sJ(_| z0G|Tz&C}I_b*X$|77A+=U&BJcsr@^(jS34M8NBn3j8?tEIZFHjawIi3AOCZ~Ln!iC zKeRpe1yJNN?DJ}jz;*OBm|JEXH8y2oCrUz>yErsx9`3Zme7LAI7fT5uc5Z`9U&?u% zbork1znEX>!H9Tg!_I~ixwAnDCV?;J(BVG^I>401@7X94S*l=+VnqC8-yMaG1?%wB|_Z2uWD{PrbaY%DY#gH zH{=AOfzgnz5$crCYMJluC94K7w*0nQ~<+oVhTS zNv7mj;6)>~T$KuEE=qMzjU}nSAa!q-qzu%;V$CJBAmuUYlj~7o;hvGQq0z*GPv6Y|0(ji^%8mkW}l94?fP5nnn;@{qtQ)y3|+`+J%euj zj07&H6Ja>15G_);bzJPQEU#qDDDT9EQR4oFOT4Puh#bjeC&e8X&QrsTa%ro@(t}=O zLr}Qd2Y&=5;?jhIFlq2d>?p9ZBoCJhIve?nJ@qy)vH&CQM+;no z9Fn5@*cE%C=r%#osif$3=8wSAcTw@E@TY`0U|@QzES!ZhT>gkHgYl!3;9g`inzWA+ z*j4joe}iy1-u-uIG`>5$Xpu&I>vYx`v2ms@;ji z6+&~YRSRGV-V4|YROB+TXhT}-5Y`-z8&6o1*sCfuO=5yjaBIkom3+iY*qAFA()IcSy@$1eAk4Z>@+D%EaHCA>CjU$r}S+*P>9Py3yV_nbnQX zs_t7xb+6MqiR!3xP`1!OvO1c~t>w>Q+m?0ZnaHbD!Pf7}Z9Gkc*CDacQ#~Q_HrQt% zGDZn*0R;CWHU@YLot6_HG?3u|V_J0kI!eM(UU)o%ShQMUY&0NS$ z5^nN6NP`gO7E>US?SQZl*Yx4B{@qr!X?M9gc#}G~T`lN}Z^tVsRP6LC`G~&+l4Tq_ z&r0^4_$tJyLNPFjifN@OXac67F-iOeD!fMKW46q6j1vO+OQv%mU8Y`WN2JsX`w;4d zUib-$b2joB`*j=ob&Ly+pb3MjRtD3S9-T}ohqNFp>jc;*>NMdux#VoOM< z%bh6&zQI)BT9Z?Y#Oii{AzS~GOo~?2T6ha`Ja!s3EySA;i^kKO(~b5My7VuIRijQ$ z`)OcPf$(4amxw3XGgGAKiwfA{Ho?idJmxD^}%C zS%S4(v`@V269c<7Y{Hd%#IJ&st1B4fU#2n>FlCHM;-4aKYJQUCPciO`+J@{d?O#sq z6BVDA)j~zcg?U-A_z7{xCgx>l!5STgAm(Ki;wMaFKq-5K)&b^av&7GjVZwUrm9n{u z;cr))60~wRV(a4yJL-tNG?Sv?xfNa$_?fG;HcU7y$OmsuM9wy<8r8-kB$ZQ*ss;?E zRl)b2+6z^RYd5^v{x)l+wiAPb&tfTPQUvR9YiV@@W!Sm}^D>T-9%-b(G=P4D{OL|1aY+dbI23Qc46lv<9w2YPaqa zhMe9YXF|oEfokoGK%l~{$v2vKBdJM>xz$J7j@sRpsi>-HH^_KNd!u%joLud~cz{(XaI4^yq}{&jY3QbVE~9-T&2 ztp1?2^@2o^jQA-G#JP=beQ^9=7JlNx;vjCTqu@%=RC5+#_AkXs)G$-;_H zG3_%SYI>(w8kR6>(crbR!DE1u$$KqWhY)G*u92e^Hx?SW=(XLA z*i;QP&I}{=y;o7gZU}0ncE?owO&5Sb*Ofx|E|%I8x*SNIjl!aRjD`IMg^|gj%b<7a zrA3SL8k_}#tF&m{aw>t=QG$N~C(IUtO}iY0x%9hX)1I5MX^pYy@6U4cN;N#nO7KkN za%+1Gc87Qvl#`l+>X4@>J!11?%BbC_hPY7=Hl`3_2fvL6m!VTfMNmo~M~Xyoj+o&rO3 zKdgbXAo&QP3!ctC(DeSXh8}|rx0WkkEILrMqZc=EX6EbYs(g zH5&Ww;7*o^R6@!W9=N zf~*S6MwOS@9yBh1P=5pCjQ^_&cI^3oTx%t>re z=O)jW9@(3$(hdky!#GjN?O^|A<-DU42rN86VsxCS>Ts?_5YmWKZvLx*40jUv-#mct z;m%gEB7?=Goq29+6W4{*vW*Gc08k0+;QDMDrY2iGCCak?Jni+N_A*X1!N=@<3x(1( zvb|Ejy}eTZX;;GB4M>+9&&yyC(gZT%UZeSag> zuN8s)8LO05LZA+13YKTq;QhYn67e6hbi<1*Fk;T5L{87dLvksBb5eL+4g;fic(un) zBwhoM73_$QVwK#Y@otVQ)X)g*5DTj}Q3R8n{5%CG)*^_;$w4LXQ&giYTS!~GqbbKz zsy%P8wur24vU=>5`Z5~imHL{Q_?b~(Cyt^i%Pv{W3?-=yCm0!&O8w6IO8xFd#{MyJ zH0_d&Onhc4@kvJFW04rQy4>BGUeB+)4rkYnL2@O)6KiG`C3pcKnN10d6d2u!HovqDw8P9dp|4H($dNAP0&Jo^SE+?>d#Umzug zp|L*~#l!C-Pwt!eWv-{S_J@koa1!VMIF{a+8V!!X3N;F|M1vNDSZ*|!XM{S$_WV50 zw_W~cN-TWmJ=NvEt7Njpdjg{xn9nIiSPjZ5i4Fd_v?}K@b~V1{;G^ z1wKaSOgDhoAa>Ls8Xyo-Hc^Is#cIL&8@L2cRT;b^ zw;TB&IzUW zV3|MXPGI=gXePs4`Xrlh{Uv^uf!SySvnymJl0{e@s34Ed7m<@}YVC8NA~#Wm_1>Su zfO8G0w#c|V%9UAiPNF!Y;%9rVxTDvS^cRF8v=;4*du7l?5LOu8!?5a2~N7 zpAa}NxvO?3tRSo4SS@|&FbMyG;{2@@nviZ6K0X!-+aZoZ%f%jR6lYOq`a+a_U*dZ0 z#oArzBDjYaMa;}BLMnx2Y+X``?T#miOcj`w93&gO{l$wMbR*ylaudg;>Q858FPZ?; z04Ld770Soa*SBQuB*+jy)S(35#xh63(a~fG$oCCq{S(pMldcePkW@@{iYsYc^fdL81n?(6+~)ZA5R6I`B+p!5k;27sP0wZ;tDBZcyG5PicA^J!J_8( z@h));bCyz*$ihMGOkoHu2!W@dHuP*ZwO)au>VGcB*vDLD(bm0@df{KS?@+?f&F zT%kPJ0*}K9P*^s#pd~R4k|J_;u0zT}9+$T9beSirHhn1aM9e&D!CtjsOJW##fj(Jb zaTR(kiNP5nc%H%4Ib8E0YbsDV?s*4t;E>jiiI7iRLtw>XyQfT5R_+|7+(YY++O-Y8 zXenOsM=&Nq-u=(xf{XC$tXnezsu(j-o3daNIONo@{W?Fqp1c^;s9KxPOTI(f>lU4(rv-tn9aJQyk7Hpc4xK|`O)(g@3fFm!fqRhC8MJz=

    Z;#a5fsIPA6HZ}DLXkwzI|f|O@l3(f>X|_r#1*}Z6{Mhe2*67T65Gcw(?-An3sVztLoT?C1R-e z#3RxrRBU#3ws$>}z=%;HO)O;is#%B-+=nP#4jfS}LW`NqznaM`%Kdb3t)gQlUXB!I zY96j&xWeN79xUHMdly)AY^OfxJ$u!3WQga>(hTiB*62tda*Zh(DKb;zKsCz2E^H;R zi7*rvkqKr!%T(O9U{<3JZd8zeqB&stPq>KC0XkU{$)H)uqj! z$>>IkhMo0bnQJToZz&ZUbpm&m<30c3cymFM$u_m=4=f$)fM!v%P!vS@LU2TAqGYST ztFN+PBS4rOA7IG_Cp+)KNeHMg)h}|{jP$nn0+7qGhw|mQNNW;{**0$lRXBvw+fQ59 zxtXfpmxmR#==`au3#T!`(R4cT56Cw{&5$a5YLC=+uEVsd%m~p{vuqXt#0j8boJ#k^3N<#At zLZSI`>tv&lBJv#+wYao}^o6>#Wwh@bNw*=biHRV^ zbCH@9>}<%vXhQxQaAL$0C;+tl0R!2uat-Nj@`pDz|6aM4vUx3-WQw-7J?J`9=#zyl%p5b0#lUflG7e;3xWc9m!E zB`Vk>Y$i^YfLlB92;GjO7YB1^kCqC19pZ|VVClzDFyDpDiBa+c)I*s&7O{vMhBT`_ zG~y2KK`+FuPF~gD)=awx2m9xNOEj8AJ^v^v7RVjMaL)5y+_j+uc;Jd2{oq_^Y%+Zb zB0y3Do&*;QFmNKW!gF51S7Nk>0qbKKt@b$Y9_(0Wp!1%A&QFNWN@@*xq#t*4ZHV^; z&|%u49~mjDkaE>AC_kh2a>S)-_uQ^+!Ezev_WTeP=EW&nsT_*|0I4MQ_QR-pbJ!iX z(}wm5-0~9FnjH?k$&k#0s46~~R;cXs*1Xg!_JepI+PAU@sD}!?H0HD`?Wk!DlJLOO z9<`u7&D#e{rlM3{es&ZsdP;?Nva{|X`Y=6=%O4gtr$MZ)=RV zc1jxtflI)_cnfqcG(Z*7hz(YVAFFNP+6IQ?7Rp?~7LSKHEZ9a_i=QPJV!6}-s$)48 zOCf^sRyOOZ)ExT{ONX1Q^8a1n3w4idjuZ{(>RBMn$;i5p#>MdH6DQL`k+tk+X% zB!pyH64x6gohD22Txz^5;LC9a(3ikD2GEBqX{_NOgLN3&;;p^R`8N6-I(@y;*adClU$a13FT-2L3>GDNsL z5GNKFIACD{5gNN}CC)6BjTZ}`fuA4`-8D3tnH^_Bs4RfZD2!=9vlx&lcLmE`E6No* zSdN7i$ippGtMCf{cnL-`Fcq1_L}-c)(*4$Hv*)7bYgzN!Kg-inw^Cu^l$7>TY|!I~ z3WYwQ%S79uwX9@|#5zWzx6DC^#?Lmq(}PR_XyFF@Qbz)}Y=qTSNN=gYpR4duIa0_U z{~Gceci13(4cYCF;CySBZO-@=xgbwf9&egGhL{ey<5Xb!{0d;2f1%iUa5^=w$q*g% z)IQG|x>4z0O&^cNb4|+Og&?j*akF$ej%Y>kMZ^qd7THasE-;+|Sb9ppFGG;_zlcN` zbynHpzr~1@l7Pe&ymVzFl8N2nY%r%J3t#O47N&P?{r`}!OF7Sn3xJM2a5*CZ_OT>i z#^yRrNMLY#&3Po1h6XltunC_)uf#0qM_^coXj2TEkD*!#!0gV&n^nUQ6Ce3L+<9-Y zZLtXiS!wE>GH2+DoMKA_nLC)XR<+Sufy59fDtg@cPn3e|l)%e~1bNJ;PJ`l_Ux9-C zk%RuO)072E(4kfhWs1or=T)_SH9w(|1NM?1d+ODsm-Dfs*QUQ!DbQdBO3=;)jv!& z#T{tPCoI6!b2scMsX>~cLH63_{CK6IK{m|3u_;yn9|PuWI7Ny2IdKkfO-1w(cJrWu zTH?$A8MGOjDgHpFg~px*L}K+$shF<@Z!^S{spEA>x5Vgz7~?9?HR-K1!~|o-@Wu4) zDS^ik`?Qt41Bh_&jQSLC zpc>G+LhP`M2=c;lhFv0~7d#(7fJy$-Ru5dVbk8veMQs+To!W+ILuifPr(K$|^h&N|)+=86pIDH6x67uOiHg@0- zLaLy*uUCS9MBN?1GKjL>b1Ouh`V}0c)K5n6Yz9M**eTHBhEj&0poJR7jV@Ec3zk|I z`y)#Ak3#b{0`1I#^k5P5V1qn<5-T_y@kDc}hkBuoVhkm`C zo65VrFi_}Wu4&-gD|m8W6K*XM_HY9d!{fmp^eM5&F1Ga7lGNj3tA4*Fx#|qO^N%`O z2^@g`0{3hPOh=b@tVHdW*dnMWb0}dX@W%dc8A?Ki`i~$hex0_eKlvJ2mg}#)9GI$ zw?YNwY1ax|S1AVE4xbycUV%*>z!%L)KKmN!7KNekt#llg1??zXS*GUu_ZBOG_W}6# z4poA21j?U_@4$~StggBh#Kjlj=z$ajK=6m-bzzkyzK3cD(-Ya1Mwjn3}`OHaC za=$tli$KOaT&UsrUMNN*DN~E2AnR~Rw;(C(thOPFznMW(Ld_;#{97~<+Di%aMNwiu zj3_As6DVL|+Ud(Uq~pFBX|Zlq2k&rcYs6evn{Od+xM~u(7S%YFHNxK-nw9h)ge&G| zz7382<=@z<=1R&K2<%xBr&6+cR4%Rz1dLsshF89JkB{W}Kf*L+6L!3b#N7mU$8WGG zsYM~5a>I`l=jRYB$qI13S{8MQJ>(Gp@jDnJO&+K3k8JNw(K+I8y#<@R#pEMIjt|a7|+b3BWuvON$pjqwk%~xTKFl<6F!veEZ{n zhutKWp71^5*9@a2wiga)>DsondKJxaPDAHWPH(p15e9eFHXZgB2 zV{U+s;jF@pM=s>0HNBDs zW^5!hC`uN2e<$1#$IVfl7b`~7B-5F#VqHS|%AaJZ>P(s38wMuo9VYetII3a|xYRXutQ zlPW)p=YtI*jS-;K{-0*L>4=(*)>{> znAov_Tyj0iYxD2Ql@ocK3n|zG-!!C%1v?i}^V+YA@au{ny zlV8S{qRBC^a_~Ep@Y_g|S*Y3Mv}0qHu>C}nBkz+)HN!84ZD?K_O7g9q2;xB3{;UF` zEv!ABlNo6$x8{dXAeCG25xka7Si_qBOctl?R5`H4-`>GCI3FipHbYqY{sPxbXi?sq zFGU(C;JlStV&FJdm?5yZ*e2$uGS!+HR3S4dDouQbBexLfO(-k=ZRmc;tq|qqLX>AT zMQqA)Y}N^02~sK82p2T%EGlU7W2r4@MV-FYS4cK|f-+Jym`EalCH6wtB%8e~aci2W zvmZzkm2R|$jr5*zCP8ctQt@}{JxS18*+XGy%-$0;-aYPJ&IL0Jw z6fv+nwtCOu$}+fUtKG+^=XAmrOGRGoKA@V1qXN>Tp|z7XX)r{-vILWo{Ui3#Sb!%6 zHl>&p+K~$egIMgRpHXs6%p%aV*DU<&K zI!Mi2=f-}+c1|}M`$+s>|E3c*&wDi3z``dWQh3q`TuOX&cS$K+$@9*{0#b=sKw9-9 z#AD4#3H%DVF#)5Rv?$e>%_6OAxw}e=m*ja)RBMyggUNY!!IM~7Qj80A=B?!;QNYvl z3m-=|+~CDYtcnv8kOr5Aj4rLqrBAU`!xH9cHOw}?<-%q@=DCz7TUAG^s*G@#o0BnM(uL6EBA06#jQo)!sX6& zIkf{^zFF<;h}YvKF7n{Dip3;;6hCm6Ty+ccJEHJ_Zik7URPMh3v6MDU8Pu^>OO6E+ zi_OPMb(bK?*=Q*Sx4C~@asu)q48{1xF3NX(ziE{f?Te%u;1Q9R1NRV~fW+P6r86SrQu3SRXLgt?ECA+g(kV_N)Y z0H4$x_;?IEITg~|XqPO^?_?Ey!oCiTP`nH?)&coZ#68e0`139Kt?D;j1+aMNs=y~P~ z(Q8@9{352*7M6;i`P{we7nZaIm*Go4Vqd{TX(gI=$S%SEh&LbG?ras@dsmFE*uL{V zi}9VE0lobx%j#*~TCT;qU%Zh$Mr1?nfDh@oLP` zcZ4_u!^HU)mXYJ9p#i`pPgMZ#*LT4*H1oQK3au&a+lNtvG?Nx1P5ce4 z8D-rEcDVhlYB_qQhStMX+XvG-DtYCTaJ%?k0x8kp{rG`sp%znidORHUzAlS3FBsbLU2k1ynOw3p)jLl~oE zG`6Wu$Y!;6pmx92&SF1Q?&E9}{XD`n%=u$jIr0R_DF|Vj!$~g4y_jroOP%<|iQdjN z=xxar{rSF;&shEAkXkJop8z+hQ+pOf+!1N#kFCt#k`ff}Fp zHf}972y{(*eFaejQM?FnIWTVtoJ`r0s#kuO3ypp&T1i7k6SzNx0$tkrG}ZA=#AJ)u zQKWjoSkShD3p8BZQttT)3vMl0b|lai%1XVK9qbH&)7-g47mT z3vc55)A53Ju^sb8i#vT|N{YQ#1h?NkL3}UUT3j8PUILN(5k+o4L@qIBH(SfW`z@2a zmKMdz^AgTbHIHBq=-07s2NZj<75B!Yr&{OjieC&SIE7$smy zVob^1-r+n&X+6t36y0jrqiC>g)L|IM2VfXxx|L)v{gFGS578!s59WSNsv3RYXVNwj;T@=)VWVj?Mb|aFxt?ka1yuOyi$w&>SEK9>OE>aVvskrHP zTua_?_&fA4Sq=|SF@CiE1vp?Dq5{^e7$M?Gh*$Y`gRV714^_sT5Er-;&}$!rw~MY7yR^XN`k!Z`|HD&+}TDL(|~%#`@xRvW-n%J(twrOSLaJLR&>l+9TwxmzitOzuTV zmHF$8lwNNt)tp;WDduFRxICQ#--|G4os^lPJe}feE`l9PwG_gd$@gVQ@kzZi43cb?NX&*&3_ zev3Y_9!+%EKJokw>=RLE@;Q0zR<0=Np~bF@nt2lA+pJ4H45E=F-Q+RE!?z?Bx+*vBpY{Q5=_i4 zNpu)6z%+x*3>w~5kSN28+SiVXZ_ErR{d`Z|+ix?2FPmrg_xoe<<8{jI4d7E8kv{@hO|(i+O2DT&ex+-*gDGno4G@&`>*jaB^TGFBpL&Mf5~K%+BQ zq5g=O(HGWcCSB;k7#MILHQamsv!0h_*O7juE^oi5WcYmUw-|RNk(4&cjUE#Vv@_|V zX5f-JJMYR3qbuksdj2wnE)!?L%*xd=oMnjUmH%yL8TX0(*=~gDbG7hrjMS*IjSB@kc}J*N7)nQZ{UFZL|M)l zGe=S-H?9)uj8JxF90qB|C)$(Z51AlDN!qkf@qB(7wf>4G-3JlD^lr(03ozVPERESgzetf%&NH~3pYaLCeb zJSKzX#lu4nei3!1h*^43MS{j<`DU1&f$Npl1lzpgGe5}cP+87-K)Qm7m?dg!>ICMi z^dJWZR55fgqiObc=7etGpJCbs&2DWty$wFR;ReduM1WSR3uiJh-m!q<@c#tzX1y5g zqb-AtSvzFIgeaLpZ|7iM?RMG3by*q| zj}H~2r@T-oi<^R*U|cb}Va-D9@H}<8erBENnpk4b@>=3Sib+g!o5SVB5mNA#fd}@a zVBRR0bK1wzB}6(cOax{fgZkKoLUF;stt3i(EC%dR_lol!K4^kAH zVbQfx!~m{NB%U%T6T8x`&2UJ6kWe%`TCYEsJB%Nrne zu2+>^{^6O$0O#ZZHVA+n8p>YC{~7;U`72@nItk#;57;$Qsd~5z zgUPQm{UDb$QcX7ML5WJNY1&KF5(pZoh=O`bG8(PwD4nzv&$#0I#yLC~?Kmc90&P>Y zO5&tU$45QlSPXX@Er=7txtP=_?AkJ846nZ~74Z|meINdGoWksVXCr=MbblH7J26%p zPF%J+lB!7B+egy1Wf;97M>%86oX|(P3IgR`AjJ65XU!gpU)M+RCpz22XDy_E`$~`Q zuORE&eI%)RX?nHBv?sM zVwJ5oR>l{ED!OlKSc@DI4c#WQtC){jzBxSSNV4>xe3Y|(&#wsOee$C9;K-u&;H8jF zejOO=dWRM6*+NS3r-X4FmJliO|AHlis~j>fVkd{b^Km)C=9y5z=1j#py(xh%hXeix z>03_HFO&fmr*T;h%@Vu9&&E{X6r{i@XO856we9`3yl6P{9_~PP7bMxtA2@SvS(cE* z`BHbF{GF^^Sf`41h`nc-!W2%Kju>&k*D31l1@1Wx_`<%yBRTMVNm-1)ox@m>exTgy z)hr{SC|l9E2x3Lw7qI!rGFv3DDE$vXYmhp#9@2UJmE!wNiS^W#FX2VTmglKURru#> zYKT6qraoSPESku!zW@gXb{dCf?o^iFm_a4h2`Djn%`O=KwV07b%lt;znM|*6X$|+V zpX6`FG=bXl9l{%}8S!W{a7uxG1{SpqO#2BL@dwq3lW0#{ zoXqMnkgLunquwNcQ>Dwm?q}o*%u=d<`g3BOiQPzrP6yf54pG&HO>J#d?LBmH6?K!; zpExNP7aQylE@RoxmBg!Pn_Nf132j_<3=A_a+W|(uxY{2u<74@XKPa=ST*FeAPh&r& zFnOWwhf-)X$-^EB%vvPh@u*#9vy>UN%Z#cr<93McW&-W+3hl;{+C)`-y!SKrZf3q!PIC z6_OXrJcC4$rKj_DmywXv&Y8xISa(@(-z#`SPz&b6aLT%~q zQLJopVd0d(@k>#-@@B&QR)Pq7btQzkTK?dyFm)ofK1YeG;^voi5`PRu!8U|3lP;4b zqrOf>2tRjnM=E#fsa2&?n#j16c49;27avB2UHWn}_rsn^mp8Rw*I-O6%;_$)&R{Y%RI)jyc~6B)&U#RkJVN@Ynryj6WAWGRmCl;`A!Wo$-{47Okg z@v%|%O?ZcSQ6N)?@8VFgbRKk26O6A_d}W`fT!>*=kW2mh72TPjsge+Tr|cnp`~SY}K3Wux`VO3^iP{Po$&U-$Qw@A(A$XMIBP zuN0u)SO0uc`51LRwtM<2-@K%VK8?@%t;Vl#Jg=^Ta_&8wBb(!zWQg+g#X%ny{Oc>_ z@yPf1xT>s0LD<3Bihu0!DlD&9cIGD}pL+|jdQH36+?>d4XZ&=8ds+uF&%B8=x;Xuh+}!jH)= zBk^6gL;qUiEt$yCs_>UoomJtf(PsLywS?|GXuiWsoQZq6Bv!XYTXZRl5pW|d>#S7F9}V=D?U#2Bt~AhsBJHhA6nzhnp@=^Mqc?U;VXPGs&7eVQ@F!xwu7X%u3d|w zu~7h5)!W@#<0wrsHN=Rcn`$;&2V{n&!)RO0=IF*_)^>?7UzCoH{aC`%g4#W+*=(nn zWY9d6`UOFx{}g}xWbPi%uc&Qq*hAHwFR`U(ZcU%c%}p5$BDL&O>|9=`dp9)PZw@fq z(u0~%ab0O%2yR2hi_p%=>uY)StR;}}9ZFrQDpB-SE%XMdabb~XdmuM;K*>eNyYRkd zXp=V;5?@Z<3H|2gd)?f|X}F|Kg6os}^CY<5ujYHME33rVU6d;%D2I~u#8=){J}ja~ z-q98bjghkSN`8a0wlT)(GYt0;BePzwIqEfEDHtC`vD(s6K+@rPnyV&4Xzo1o(6*Fr zzNdHYF%s9imuZbRW$EoyMR$6%MHsjw(-uBpz8l?tEb%oVxEcv3db?E7+XX^5>=}mldd$-_IMYf_ZTYPUBt`*-5&U(|AxD`*j;@Raz zo_W){fCpDaHV***phziaIzxY zmi~F9r9C|;((-t^|DVQ1TDEFycX;bIEx4~?&-_IJbF07eK$Fm}7P*sF2F#b3^S1Nm z{2srXj-NrCJTP1Ln)blI5Vo%3kE+_5Ovr2QvM%Mfi2mYVoMBO5j=piRk$HPv=CaH} zO#dU0r{`Vfs^Xs5xtF;-{8Xn;y37?JaN1>JQ4EdXr^*!?sxEcTXc7Ox6)talq}O~g z`L>3CbaTP`UUO?QHSjDECZT)vtyjC(AvCp@f;VPe+I|BE6U6gYp0t9d+7?Zq>23$)Hgdv_*8y9 z95@^R=z#P!{Qa`8Jn2J1le6jVR2{dt?d>cDnH@iD`k7;vvnZASJs@mqP ze9w4e9R?omLx(xB7arK^I|z6rzM!K%vxv@^=c~_rn_q45kBOI;oKMCjJE2Q=Lhg!W$LMnDI=j^H>1IiKq97fvD;hdbs!V(JWJhH(Rp~8n&R6z!8Aq?Bwk=?H zsc76iGgk4OtW5xvGLCK(hH}*Fynd3^r-eV{aoNIe;QycU3wpC|w(Cg?=kfbEg%o_> zY|C-XcUU^$v#lzbtVp(2^cT+29_ub+ErlNs2HOlCG`nfP8BD=He-qs3yeb)aG5m8Z zyHv#x6%Kn2w{kc>$0a`pfT(_<@zUS0$ffD)bKO<3WDYL*+rxu+Wbjah^*QL9r63A- zmPsg@uCsH7Pvr|`n=cOxGf*-POnc;KqBoWdeGyvd%4F)3k_A-5XZ6qrkHa6qj{5GB z58;n5)pu_`D*PdKv@CxJWvCY*)>RS9m3rL9m2&wdDY%0y$LWf>L?%eMq?_&6$eg*^ zerhJOjd+$rCIHu)L;fAOJco!e2|}`~@*bLI$!+fX?za?{O92&9U-8!1HXZ}nk>d1{ z?7PMn93(oWYfp3yPQE?Z?BWc)hHst`?j(KV>bQbhg$LSlJP?{=9!tI^bY6Za`MOZI z@RTLYC1l=Rozh`|qm7uGf5ZLLc+h_k6Lo0#20qN@se|;gu{ij!)m*gBiDHnQ=@nW^~waRGtC1!+=-& zV%x)05s^W+Ci$5V}pKDv(f2E?UELFb@3rD0553#jcmONM=1Wd<11g*!e&C z>`%%<$-(15+GEKIDF)?%Utf-U4=0Cdu^#}OofSfe^ZvMmibT6A*Hx0B1-fe6xgB-& z7Wi3liIG)5ZTF^LSbCV*DI!{QP+6vU6Vo!jF`ImvcdN~zT1-xl+FYu|juG~WXBN50 zuAGhW>g1i#c4qVU1)+xT&}vyAoFli|E<2pWtwJ5VpOXtp8!S*{8UsO&jUv+IG2qH!Qr=>SF0bYK66lR8f~U)3wqD?#rp6|z~t4&vFa_MkI{$2bInUFQHej3z8m`5C#$sSNlG8Sv}iaPqRO=I z6V>k?6STdQSn+WRai8-uv*B^|VX#0=CJSJXIoU< z#GqN%^T%0N%%)9M&_;~O!;$o|t~ki5+Fn=4>Ndj4d!Sl*hwib*K~~-4DWyPHo@U8y z27660@7wViJMHDfjx_IhgyIW!#(lf83kk&u_DW*6qq)pDm^?7L{8^YoI^W|8-^fij z>sKIUBl9~#MI<0&H_rMs(Ugtg+T|=3%%fiIS1tBh;h?iZ&z5Q)N9dlkMsM z&h>j-V+m%q(Zbf`+oQ2~p>6B+9U_^~Fb;2``4&b~=sTC_EfnuXu%BYIvJ9HjraQ0A=;|1}f5(2I6sf%mcr06m>dZ8WN=(J1)@I8iffd=bje0Ec z>;Sr;3Z^)^CoDF6z7Y?c;ci#vz7C8&EEbFHd^LkhdWhU^D5KEhF7*%dUIOZe45lna}FU^k}a+1M7L4_*r22aZ#YY69B|J?9ko@PXK$R;zZgQgZFN!Z$_Y>|EK&Ihy zD4mkw&Kd8g4Q}B;X&2<8@dW;y2WrJc?qA?>pL1c5mS(3;OnzlA1>XMW_qrh^iYropnx8-ykL;s19ik2${4d&AIl#~h)4VdYub|VE zG8CZ+x%~=}Z{t2jzV%wV{TKHC)VU2`hu>W9Prgwlgza&ON~E=62U)Lcn|M3}rk$R$ zS4)VwAY!gLnHr%?uyo;NVu}r2fjQtS&MuMYOb0{Xz;k_PGd^^nD6HS?;b-^P5|hd^ z%_7Z8U1oRa9qRz8l&Q??^t88pYv`Lg3#Rn!{<5Dy9i+1I+d5cw{30U%lKTfMPdb=6 zw1zK3Y_ccWG=k*$+A^Ped#0I`yLn!2`oUFFMvYkBd+0LO=g3DrrP3x{tsozwfGih? zn_+lWEkvbXMAZ_qrlI*=nX8D9L=jB;?93ivp%h^s2MW!z0kA}CG`HjtNxnYh4#LTo^ArZR=B&_|Y zhkECF*=`QAYfRU;+^%%F)HPYxR<38Ad#PT(pG}X9UcX)vr8VKRmHq9w@-C-e2`TMm z`)DkZMmAJilXmO8$uhyL9L(rywSy|^>WmgKR7B>Cvj;3ZpI;A@I6&E47Vs6xeuciC z@2d3e@o;uu=TJp|vP4)4yj~FxzMtGTy1ZL^;+;wim^32!R++fa&$!AtkA&Z}=JG?3 zV((29Ro~ED4W3H1X=&r`sS?zkEtD+%7p`x{eT;qP@6%u8FhN#-;Vjl?QKi{7m`zdu}%=lqkL^H#$hdW)6!5O{P5+L zn1IbKMTI!*>os@exR*J)H}8fPPzLs3{+5Qn$Y1oRsuIPwj~4T-H8>wF?DRRsy6@OL zF0c}b$7Ro0>#q_iT)V>#j8k^s0*2+Ni$XnW^M!rBLXRHcgw(F+p}~yaDq6>j%5BAV z@vsN8On6Y%CLaDyVt!A{&q<(h_x0%$bzI?%bd1Xm|FeVNrE|PO)SChukbSx$6+T1N z<&00UzLVpBQEx;qo_B6e0NCBshX9Zx50)HWs_*`YDPc|^+t_D_a|D5Nf&%GWpu1#G zQ2dfu(OjP57uK~aqI+ea5Q3R2W~%^v-s&5!Muo=2dH zc}3T}qC}uQB)u#%bY*K*+JhKaMj&A!LNeBOE1@zO)8lpa853K3_*SjhP(*haL2uWJ z!>F7*@g_!;XIgCqg7rk`ZRR)353W)w#Hix)+dg-5CMl$kKH)pKPU#a{WIz@!@`{6`zoBN~M)%0!`%<&P!iBHi3%YZTqeT(cjQ zf+Ig7w|AsHk=7wBPC4;Z&T+k-D?Qn)n$3jH47-dIN=itbu7p&TEu;ihBd$(lI9f$C zSz(EtiTme` zN%KM)pG7~2hgNVq4tYQ#$?u-gYc;KSSJSy=+&OsSONQ* z3sQEk$-+!9uZ&yv%;KlzR~Lo};Yi`vcgX(f z_*KlqIez^EAOHX5*Un~~0Jy^3pA(j4CP@#4Wv{SRJj677`vu`!4uuKd0-*TzbIzRZ zI?jBKJ}+l+J`KOp#eXlqo@DduV258h?W6dWZI+G^{~z(|->1JZ_&T^n8Fgpz-WrmU>FT<{2fVt{k*V z-;CwTe$uVBU0*Gy?8KCHVs`!GbGPf6O=2|rK#Zq{n}>xjQco%IvD#MFk2sUrvrJ~m z14H!kJ=rO3AJ-2gOX#2ZtCZ{J((rh~DA#X;fg{j0=Fj2wqS$iI1BmR^Dm)d$TcRd9 z)1Ox1CdQu9ELoc9(Kg;)-Ba7HRtF&WBOR~GY(dXEJy*CYrC>=KnwOp@P#);`JVvPs ze)<-_9%dTZk+_|3#17v*Jy(h={f}lF$LY1lHV;pxG?_+NbZJ;OD%1kn<>8FMXkYnO zpZ3JA3U|A<5@o8yoKtE}E^D1E+9yjbbVVwV^{3Oo{7ge@$4M_Jpde^#~)Y@iefx6Je6%SuxNWC6SmMSG>YQ1>M;B@K|Y7xev=Q>zoO^th- zdl?$8q%4l5v`Y1qC})@3$rh24LXG?_36JG3rt}jd-7?8Ewe}K+75r z{l(f(m;+H&au~eO03`<-91;>6i?-xtJ0b!dsR(l&5&4?bGkVV9ekWFCyHB8stUj_@ zgfo@NYl2vIEG#>YI)z1)W|rHDr%9qXqvH$)q-}O_5DN|;t(PNwo@lSsZA*!q^5Wn) zrV?*?8@tNd%FgnQT6@x}Fp~SK4DsDCNOU5qC@?aCoFZH4d{T~UHYwWgnfYny^}l!@ z!X{DZQ`tZfugy6!bqt>)xx*nA(GERwBoq3g$XAY5iS<%#{Di(v&x+ks2vrWV)V3!k zVN9~=vkUqp4eD;K=gFOgE>7i#z9>tTyb(PK5FaLOAm&)~Z>{006Zr~hPgNQ8lpyReVtOqUWP zWKk9Ol)@SDJexZd`Pvvc+e)go^_xEIU~T0;vRCr83o|B;)wAF}o~&=C{Wq^~ zga|w?PI+L1!1mziM(C^Wi`{`~Mh-Vbx-%gUYWz&wW?)+!{za)q!nGUdSu73(_J$#j zf>Z_LwqtMj6%b<5K>WeOuhIkM)JJ2b`A0Q?M%FyAZcQ zZA-v~;8F!HU$Jp=wg{&470Fowc;CrsZTiZ15F_6ET--3X$N^z{&EKWg{A$6kJ+Zl> z2Rqo^Ql(hH4(G2c73xo^1 zojLF_+-AD8hnlV7{Kf|^XN$f+A$dBmgKSEfwWHtaXGgb7^v@X|JNiW@`j12}k7%)0 z`R2J#(X*D1<@p=>-ufevfDh1O%Ox4GpE+QU$nRL*+~D`DTbSpD(rqs5em>(GDiHb} zL8S$`32+EP78lVjYM8-yw7tsI(qnB@E*BI){2YFT`xIn1kQWJLTa`I*h1;qjY=eKn z0so8qrf?xc%2^*B0tIm+U=B=gb1;yT)(Qh@<6)HPn7ALR-**()`u0)**3ysJg|{Us(>wr?MU#pA-KtfQl<~$IzZPf#W zW{xhCOmVNBOVV{O*e@H+*0tN4XKQyfyJl;9`mgbp@%wiBZ0)W#ZQ3?-TeHQpm@+Gy z+ami)n=M|y{U_(EWUGajMLrI%=i1^|2q5`9UUQ&zQm!p>xPXUFDwi)&Gt=rSnyq=a zm9IBPT5r?3v!wGbb4fconLP@+lWx&sM*w%4O4F^U$swY?EV@sNcJ~jJ%d6_K=K)GA z5gB8Th04Iqt%1tbkJ4YG9U6XHf#x(7FYu~%E0=|4k!57A zPU(p^vFk4%6B^8}dLx?ka(DQHXq($wLs@x!S(r0?swiF;98N~US8#6`F>*LLmgRgE zyL;JQ>PIY3pK1>!%VeX1BMWx-B|oZVpPm+F0GMGreK?$~3cq4*>fFwCEMbHSjtOuh zGdEcl%=fwb^3%-eJN@SSyyOswuWe%}f}D`~dXVedCltG&ZMM_yy)qboqFO%uiL3Bp z)-~X1IEPDvlXvlO3QsMR^~cYs`L_7O+48%7_=(zk*NJ{N&Y|93TLqvvKmE-U#K*nz zf>1MW&_Bd%Y9|h18=6o=O zcOcFKj^5~?DjY9>ZTFCQRodb!6t*Y5KUq08`@ZeiOpx%HZiVVseMP8VXQP@LEU4aJ zEsI?72=h;cn3jf1!E_L{2|40DKUX2$vzeyQ11oz}cz<<-qMSPSBLeb1%2wTD*BMfE z2CBa)6^5n4bDY;4S%q{|)E*Wm{7sbNI;9z6*^$*$Ae=rDVK+sJkZ3@QT4BgrXfz1Gvw0r%*_@ApQ0Q4t(eG%AiN`%1hUGY-t z_QxTlx|i=d*^hhb8fYxz(AXQPDZlNj4i__=h)hIhlxf-Rrk5l8t`5HfD0zOWS z+dxKY9Q!dfvdYNUSatjwTX@#YY2){gU*j#(dXiLQzNRMtWdm5QpzzDwvB}<-6g*3%)pr|@8+8wAZEme&4 z=W6N1+Gc9kG)a0TUNL!b1v{9AVC8W-5J_%*&ZUFO$O1GG@zf6@@D91gSAj zp#}ZalRF1Nht>|eTya2}BUPB?-vs@{N$*}!%$@gF3mZGs`jlS8EN3e8Q&*JqV~P>(rXw`3R|}e zoQ(3{n1OnXa=)i3tzeXYI*<(iDsYnFeC8L)P{11{_NeB>{TM9H*4}J}+no#rLpJbf z=HY@G{wOt60hbl)OLz?)46~oJ%`)qv?6)y1xYHm4zs>+4SeLl1WHvn8bX!kmKMX#8 zqdshD2;dOrVPTI5^$YBW1<3;bHz)5*U~f^dh%o`YCi}so<$O+Y$`QH&bicygCL@8~ zUhpm8>(#eS4J`Z8pUaZQY@v;`mi;trQo#+HI8)MZ)@Rs$&{WUs)Y)UGN}q-?3Oe$X zWAyxcv_WNf-^ozW^F5hGA3)FlTHs`CTRu6%NXZZe4oZ$giUo9hhOkC+>h%85aV?uq ziXg{IpjbQTNngv*4y>2)c&ajVO5o!&+$0&E$Yzk|ID2I1NstpH!#&vy5BJW{6QvT# zFg2S&-r@R$8eS?T!ztMe7kzSu-%ExRPiv`;pDIHJQ+>=x{Yo;(+wQ8Dwn@(7UMhdO zyoeS~lMMF(mtD`Q`-Auo6p4akF2mfxG5O_&8D7!qX6TSjd?mswjKuV29wJ=<1LKY9 z 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 z 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 z

    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 #Uvi5U&A=`UZ)xPrC0Xyq{XF12IGkFwVh;U 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

    v>1|TH5hs+N#dS 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%0DRHLq%G_Jp0iRs->YE0LYkPe?| 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±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%0A;LRX%z! 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¬ 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

    PseibbO0RI%BH0N>qd5U71pBw= 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ཛ}&BkNh0$dAsKF7P-$I$!pM+vkA~hcCoO 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�?d{% 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]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 bEAn6e{vX7tx%>b4@L$PIzueu>{apNiJ6Fw; literal 0 HcmV?d00001 diff --git a/plugins/local/non_h_ints_mu/deb_j_mu_of_r.irp.f b/plugins/local/non_h_ints_mu/deb_j_mu_of_r.irp.f new file mode 100644 index 00000000..480855e9 --- /dev/null +++ b/plugins/local/non_h_ints_mu/deb_j_mu_of_r.irp.f @@ -0,0 +1,97 @@ +program test_j_mu_of_r + implicit none +! call routine_test_mu_of_r + call routine_test_mu_of_r_tot +end + +subroutine routine_test_mu_of_r_tot + implicit none + integer :: ipoint,k + double precision :: r2(3), weight, dr, r1(3), r1bis(3) + double precision :: accu_grad(3) + double precision :: jast,grad_jast_mu_r1(3) + double precision :: jast_p,jast_m,num_grad_jast_mu_r1(3) + + dr = 0.00001d0 + r2 = 0.d0 + r2(1) = 0.5d0 + r2(2) = -0.1d0 + r2(3) = 1.0d0 + accu_grad = 0.d0 + do ipoint = 1, n_points_final_grid + r1(1:3) = final_grid_points(1:3,ipoint) + weight = final_weight_at_r_vector(ipoint) + call grad_j_sum_mu_of_r(r1,r2,jast,grad_jast_mu_r1) + double precision :: norm + norm = 0.D0 + do k = 1, 3 + r1bis= r1 + r1bis(k) += dr + call get_j_sum_mu_of_r(r1bis,r2,jast_p) + + r1bis= r1 + r1bis(k) -= dr + call get_j_sum_mu_of_r(r1bis,r2,jast_m) + + num_grad_jast_mu_r1(k) = (jast_p - jast_m)/(2.d0* dr) + norm += num_grad_jast_mu_r1(k)*num_grad_jast_mu_r1(k) + enddo + norm = dsqrt(norm) + if(norm.gt.1.d-10)then + print*,'/////' + print*,grad_jast_mu_r1 + print*,num_grad_jast_mu_r1 + endif + do k = 1,3 + accu_grad(k) += weight * dabs(grad_jast_mu_r1(k) - num_grad_jast_mu_r1(k)) + enddo + enddo + print*,'accu_grad = ' + print*, accu_grad + +end + +subroutine routine_test_mu_of_r + implicit none + integer :: ipoint,k + double precision :: r2(3), weight, dr, r1(3), r1bis(3) + double precision :: accu_grad(3) + double precision :: jast_mu_r1,grad_jast_mu_r1(3) + double precision :: jast_mu_r1_p,jast_mu_r1_m,num_grad_jast_mu_r1(3) + double precision :: j12_mu_input + double precision :: mu_val_p, mu_val_m, dm_r1, mu_der(3), grad_dm_r1(3) + + dr = 0.0001d0 + r2 = 0.d0 + r2(1) = 2.5d0 + r2(2) = 2.25d0 + r2(3) = -2.5d0 + accu_grad = 0.d0 + do ipoint = 1, n_points_final_grid + r1(1:3) = final_grid_points(1:3,ipoint) + weight = final_weight_at_r_vector(ipoint) + call grad_j_mu_of_r_1(r1,r2,jast_mu_r1,grad_jast_mu_r1, dm_r1, grad_dm_r1) + do k = 1, 3 + r1bis= r1 + r1bis(k) += dr + call grad_mu_of_r_mean_field(r1bis,mu_val_p, dm_r1, mu_der, grad_dm_r1) + jast_mu_r1_p = j12_mu_input(r1bis, r2, mu_val_p) + + r1bis= r1 + r1bis(k) -= dr + call grad_mu_of_r_mean_field(r1bis,mu_val_m, dm_r1, mu_der, grad_dm_r1) + jast_mu_r1_m = j12_mu_input(r1bis, r2, mu_val_m) + num_grad_jast_mu_r1(k) = -(jast_mu_r1_p - jast_mu_r1_m)/(2.d0* dr) +! print*,jast_mu_r1_p,jast_mu_r1_m + enddo + print*,'/////' + print*,grad_jast_mu_r1 + print*,num_grad_jast_mu_r1 + do k = 1,3 + accu_grad(k) += weight * dabs(grad_jast_mu_r1(k) - num_grad_jast_mu_r1(k)) + enddo + enddo + print*,'accu_grad = ' + print*, accu_grad + +end diff --git a/plugins/local/non_h_ints_mu/jast_deriv_mu_of_r.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_mu_of_r.irp.f new file mode 100644 index 00000000..d45c899a --- /dev/null +++ b/plugins/local/non_h_ints_mu/jast_deriv_mu_of_r.irp.f @@ -0,0 +1,164 @@ +subroutine get_j_sum_mu_of_r(r1,r2,jast) + implicit none + double precision, intent(in) :: r1(3),r2(3) + double precision, intent(out):: jast + double precision :: mu_r1, dm_r1, grad_mu_r1(3), grad_dm_r1(3), j_mu_r1 + double precision :: mu_r2, dm_r2, grad_mu_r2(3), grad_dm_r2(3), j_mu_r2 + double precision :: j12_mu_input + jast = 0.d0 + call grad_mu_of_r_mean_field(r1,mu_r1, dm_r1, grad_mu_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_r2, dm_r2, grad_mu_r2, grad_dm_r2) + j_mu_r1 = j12_mu_input(r1, r2, mu_r1) + j_mu_r2 = j12_mu_input(r1, r2, mu_r2) + if(dm_r1 + dm_r2.lt.1.d-7)return + jast = (dm_r1 * j_mu_r1 + dm_r2 * j_mu_r2) / (dm_r1 + dm_r2) + +end + +subroutine grad_j_sum_mu_of_r(r1,r2,jast,grad_jast) + implicit none + BEGIN_DOC + END_DOC + double precision, intent(in) :: r1(3),r2(3) + double precision, intent(out):: jast, grad_jast(3) + jast = 0.d0 + grad_jast = 0.d0 + double precision :: num, denom, grad_num(3), grad_denom(3) + double precision :: j_r1, grad_j_r1(3),j_r2, grad_j_r2(3) + double precision :: dm_r1, grad_dm_r1(3), grad_jmu_r2(3) + double precision :: dm_r2, grad_dm_r2(3),mu_r2, grad_mu_r2(3) + double precision :: j12_mu_input + + if(murho_type==0)then +! J(r1,r2) = [rho(r1) * j(mu(r1),r12) + rho(r2) * j(mu(r2),r12)] / [rho(r1) + rho(r2)] +! +! = num(r1,r2) / denom(r1,r2) +! +! d/dx1 J(r1,r2) = [denom(r1,r2) X d/dx1 num(r1,r2) - num(r1,r2) X d/dx1 denom(r1,r2) ] / denom(r1,r2)^2 +! +! d/dx1 num(r1,r2) = j(mu(r1),r12)*d/dx1 rho(r1) + rho(r1) * d/dx1 j(mu(r1),r12) +! + rho(r2) d/dx1 j(mu(r2),r12) +! d/dx1 denom(r1,r2) = d/dx1 rho(r1) + call grad_j_mu_of_r_1(r1,r2,j_r1, grad_j_r1,dm_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_r2, dm_r2, grad_mu_r2, grad_dm_r2) + j_r2 = j12_mu_input(r1, r2, mu_r2) ! j(mu(r2),r1,r2) + num = dm_r1 * j_r1 + dm_r2 * j_r2 + denom = dm_r1 + dm_r2 + if(denom.lt.1.d-7)return + jast = num / denom + + grad_denom = grad_dm_r1 + + call grad_j12_mu_input(r1, r2, mu_r2, grad_jmu_r2) + grad_num = j_r1 * grad_dm_r1 + dm_r1 * grad_j_r1 + dm_r2 * grad_jmu_r2 + + grad_jast = (grad_num * denom - num * grad_denom)/(denom*denom) + else if(murho_type==-1)then +! J(r1,r2) = 0.5 * [j(mu(r1),r12) + j(mu(r2),r12)] +! +! d/dx1 J(r1,r2) = 0.5 * (d/dx1 j(mu(r1),r12) + d/dx1 j(mu(r2),r12)) + call grad_j_mu_of_r_1(r1,r2,j_r1, grad_j_r1,dm_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_r2, dm_r2, grad_mu_r2, grad_dm_r2) + j_r2 = j12_mu_input(r1, r2, mu_r2) ! j(mu(r2),r1,r2) + call grad_j12_mu_input(r1, r2, mu_r2, grad_jmu_r2) + jast = 0.5d0 * (j_r1 + j_r2) + grad_jast = 0.5d0 * (grad_j_r1 + grad_jmu_r2) + + endif + +end + +subroutine grad_j_mu_of_r_1(r1,r2,jast, grad_jast, dm_r1, grad_dm_r1) + implicit none + include 'constants.include.F' + BEGIN_DOC +! grad_r1 of j(mu(r1),r12) + ! + ! d/dx1 j(mu(r1),r12) = exp(-(mu(r1)*r12)**2) /(2 *sqrt(pi) * mu(r1)**2 ) d/dx1 mu(r1) + ! + d/dx1 j(mu(r1),r12) + ! + ! with + ! + ! j(mu,r12) = 1/2 r12 (1 - erf(mu r12)) - 1/2 (sqrt(pi) * mu) e^{-(mu*r12)^2} + ! + ! and d/dx1 j(mu,r12) = 0.5 * (1 - erf(mu *r12))/r12 * (x1 - x2) + ! + ! here mu(r1) is obtained by MU MEAN FIELD + END_DOC + double precision, intent(in) :: r1(3),r2(3) + double precision, intent(out):: jast, grad_jast(3),dm_r1, grad_dm_r1(3) + double precision :: dx, dy, dz, r12, mu_der(3) + double precision :: mu_tmp, tmp, grad(3), mu_val + jast = 0.d0 + grad = 0.d0 + + dx = r1(1) - r2(1) + dy = r1(2) - r2(2) + dz = r1(3) - r2(3) + r12 = dsqrt(dx * dx + dy * dy + dz * dz) + ! get mu(r1) == mu_val and its gradient d/dx1 mu(r1) == mu_der + call grad_mu_of_r_mean_field(r1,mu_val, dm_r1, mu_der, grad_dm_r1) + mu_tmp = mu_val * r12 + ! evalulation of the jastrow j(mu(r1),r12) + jast = 0.5d0 * r12 * (1.d0 - derf(mu_tmp)) - inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / mu_val + + ! tmp = exp(-(mu(r1)*r12)**2) /(2 *sqrt(pi) * mu(r1)**2 ) + tmp = inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / (mu_val * mu_val) + ! grad = + grad(1) = tmp * mu_der(1) + grad(2) = tmp * mu_der(2) + grad(3) = tmp * mu_der(3) + + if(r12 .lt. 1d-10) return + tmp = 0.5d0 * (1.d0 - derf(mu_tmp)) / r12 ! d/dx1 j(mu(r1),r12) + grad(1) = grad(1) + tmp * dx + grad(2) = grad(2) + tmp * dy + grad(3) = grad(3) + tmp * dz + + grad_jast = grad +end + +! --- + +double precision function j12_mu_input(r1, r2, mu) + + BEGIN_DOC + ! j(mu,r12) = 1/2 r12 (1 - erf(mu r12)) - 1/2 (sqrt(pi) * mu) e^{-(mu*r12)^2} + END_DOC + include 'constants.include.F' + + implicit none + double precision, intent(in) :: r1(3), r2(3), mu + double precision :: mu_tmp, r12 + + r12 = dsqrt( (r1(1) - r2(1)) * (r1(1) - r2(1)) & + + (r1(2) - r2(2)) * (r1(2) - r2(2)) & + + (r1(3) - r2(3)) * (r1(3) - r2(3)) ) + mu_tmp = mu * r12 + + j12_mu_input = 0.5d0 * r12 * (1.d0 - derf(mu_tmp)) - inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / mu + +end + +subroutine grad_j12_mu_input(r1, r2, mu, grad_jmu) + implicit none + BEGIN_DOC + ! grad_jmu = + END_DOC + double precision, intent(in) :: r1(3), r2(3), mu + double precision, intent(out):: grad_jmu(3) + double precision :: mu_tmp, r12, dx, dy, dz, grad(3), tmp + grad_jmu = 0.d0 + dx = r1(1) - r2(1) + dy = r1(2) - r2(2) + dz = r1(3) - r2(3) + r12 = dsqrt(dx * dx + dy * dy + dz * dz) + if(r12 .lt. 1d-10) return + mu_tmp = mu * r12 + tmp = 0.5d0 * (1.d0 - derf(mu_tmp)) / r12 ! d/dx1 j(mu(r1),r12) + grad(1) = tmp * dx + grad(2) = tmp * dy + grad(3) = tmp * dz + + grad_jmu = grad +end diff --git a/plugins/local/non_h_ints_mu/jast_deriv_utils.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_utils.irp.f index 79822508..c3fc91a6 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv_utils.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv_utils.irp.f @@ -3,6 +3,9 @@ double precision function j12_mu(r1, r2) + BEGIN_DOC + ! j(mu,r12) = 1/2 r12 (1 - erf(mu r12)) - 1/2 (sqrt(pi) * mu) e^{-(mu*r12)^2} + END_DOC include 'constants.include.F' implicit none @@ -73,24 +76,41 @@ subroutine grad1_j12_mu(r1, r2, grad) grad(3) = tmp * dz elseif(j2e_type .eq. "Mur") then + double precision :: jast + call grad_j_sum_mu_of_r(r1,r2,jast,grad) - dx = r1(1) - r2(1) - dy = r1(2) - r2(2) - dz = r1(3) - r2(3) - r12 = dsqrt(dx * dx + dy * dy + dz * dz) +! dx = r1(1) - r2(1) +! dy = r1(2) - r2(2) +! dz = r1(3) - r2(3) +! +! r12 = dsqrt(dx * dx + dy * dy + dz * dz) +! if(r12 .lt. 1d-10) return +! +! tmp = 0.5d0 * (1.d0 - derf(mu_erf * r12)) / r12 +! +! grad(1) = tmp * dx +! grad(2) = tmp * dy +! grad(3) = tmp * dz - call mu_r_val_and_grad(r1, r2, mu_val, mu_der) - mu_tmp = mu_val * r12 - tmp = inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / (mu_val * mu_val) - grad(1) = tmp * mu_der(1) - grad(2) = tmp * mu_der(2) - grad(3) = tmp * mu_der(3) - - if(r12 .lt. 1d-10) return - tmp = 0.5d0 * (1.d0 - derf(mu_tmp)) / r12 - grad(1) = grad(1) + tmp * dx - grad(2) = grad(2) + tmp * dy - grad(3) = grad(3) + tmp * dz +! elseif(j2e_type .eq. "Mur") then +! +! dx = r1(1) - r2(1) +! dy = r1(2) - r2(2) +! dz = r1(3) - r2(3) +! r12 = dsqrt(dx * dx + dy * dy + dz * dz) +! +! call mu_r_val_and_grad(r1, r2, mu_val, mu_der) +! mu_tmp = mu_val * r12 +! tmp = inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / (mu_val * mu_val) +! grad(1) = tmp * mu_der(1) +! grad(2) = tmp * mu_der(2) +! grad(3) = tmp * mu_der(3) +! +! if(r12 .lt. 1d-10) return +! tmp = 0.5d0 * (1.d0 - derf(mu_tmp)) / r12 +! grad(1) = grad(1) + tmp * dx +! grad(2) = grad(2) + tmp * dy +! grad(3) = grad(3) + tmp * dz else @@ -369,7 +389,18 @@ end ! --- subroutine mu_r_val_and_grad(r1, r2, mu_val, mu_der) - + BEGIN_DOC +! various flavours of mu(r1,r2) +! depends on essentially the density and other related quantities +! +! change the variable "murho_type" to change type +! +! murho_type == -1 :: mu(r1,r2) = (rho(r1) mu_mf(r1) + rho(r2) mu_mf(r2))/[rho(r1)+rho(r2)] +! +! == 0 :: mu(r1,r2) = (sqrt(rho(r1)) mu_mf(r1) + sqrt(rho(r2)) mu_mf(r2))/[sqrt(rho(r1))+sqrt(rho(r2))] +! +! == -2 :: mu(r1,r2) = 0.5(mu_mf(r1) + mu_mf(r2)) + END_DOC implicit none double precision, intent(in) :: r1(3), r2(3) double precision, intent(out) :: mu_val, mu_der(3) @@ -379,11 +410,50 @@ subroutine mu_r_val_and_grad(r1, r2, mu_val, mu_der) double precision :: rho1, grad_rho1(3),rho2,rho_tot,inv_rho_tot double precision :: f_rho1, f_rho2, d_drho_f_rho1 double precision :: d_dx1_f_rho1(3),d_dx_rho_f_rho(3),nume + double precision :: mu_mf_r1, dm_r1, grad_mu_mf_r1(3), grad_dm_r1(3) + double precision :: mu_mf_r2, dm_r2, grad_mu_mf_r2(3), grad_dm_r2(3) + + double precision :: num, denom, grad_denom(3), grad_num(3) + double precision :: dsqrt_dm_r1 PROVIDE murho_type PROVIDE mu_r_ct mu_erf - if(murho_type .eq. 1) then + if(murho_type .eq. 0) then + call grad_mu_of_r_mean_field(r1,mu_mf_r1, dm_r1, grad_mu_mf_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_mf_r2, dm_r2, grad_mu_mf_r2, grad_dm_r2) + dsqrt_dm_r1 = dsqrt(dm_r1) + denom = (dsqrt_dm_r1 + dsqrt(dm_r2) ) + if(denom.lt.1.d-7)then + mu_val = 1.d+10 + mu_der = 0.d0 + return + endif + num = (dsqrt(dm_r1) * mu_mf_r1 + dsqrt(dm_r2) * mu_mf_r2) + mu_val = num / denom + grad_denom = grad_dm_r1/dsqrt_dm_r1 + grad_num = dsqrt(dm_r1) * grad_mu_mf_r1 + mu_mf_r1 * grad_dm_r1 + mu_der = (grad_num * denom - num * grad_denom)/(denom*denom) + else if(murho_type .eq. -1) then + call grad_mu_of_r_mean_field(r1,mu_mf_r1, dm_r1, grad_mu_mf_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_mf_r2, dm_r2, grad_mu_mf_r2, grad_dm_r2) + denom = (dm_r1 + dm_r2 ) + if(denom.lt.1.d-7)then + mu_val = 1.d+10 + mu_der = 0.d0 + return + endif + num = (dm_r1 * mu_mf_r1 + dm_r2 * mu_mf_r2) + mu_val = num / denom + grad_denom = grad_dm_r1 + grad_num = dm_r1 * grad_mu_mf_r1 + mu_mf_r1 * grad_dm_r1 + mu_der = (grad_num * denom - num * grad_denom)/(denom*denom) + else if(murho_type .eq. -2) then + call grad_mu_of_r_mean_field(r1,mu_mf_r1, dm_r1, grad_mu_mf_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_mf_r2, dm_r2, grad_mu_mf_r2, grad_dm_r2) + mu_val = 0.5d0 * (mu_mf_r1 + mu_mf_r2) + mu_der = 0.5d0 * grad_mu_mf_r1 + else if(murho_type .eq. 1) then ! ! r = 0.5 (r1 + r2) diff --git a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f index 2c41b535..a1f5c504 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f @@ -216,31 +216,35 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) r2(1) = final_grid_points_extra(1,jpoint) r2(2) = final_grid_points_extra(2,jpoint) r2(3) = final_grid_points_extra(3,jpoint) - - dx = r1(1) - r2(1) - dy = r1(2) - r2(2) - dz = r1(3) - r2(3) - r12 = dsqrt(dx * dx + dy * dy + dz * dz) - - call mu_r_val_and_grad(r1, r2, mu_val, mu_der) - mu_tmp = mu_val * r12 - tmp = inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / (mu_val * mu_val) - gradx(jpoint) = tmp * mu_der(1) - grady(jpoint) = tmp * mu_der(2) - gradz(jpoint) = tmp * mu_der(3) - - if(r12 .lt. 1d-10) then - gradx(jpoint) = 0.d0 - grady(jpoint) = 0.d0 - gradz(jpoint) = 0.d0 - cycle - endif - - tmp = 0.5d0 * (1.d0 - derf(mu_tmp)) / r12 - - gradx(jpoint) = gradx(jpoint) + tmp * dx - grady(jpoint) = grady(jpoint) + tmp * dy - gradz(jpoint) = gradz(jpoint) + tmp * dz + double precision :: jast, grad_jast(3) + call grad_j_sum_mu_of_r(r1,r2,jast,grad_jast) + gradx(jpoint) = grad_jast(1) + grady(jpoint) = grad_jast(2) + gradz(jpoint) = grad_jast(3) +! dx = r1(1) - r2(1) +! dy = r1(2) - r2(2) +! dz = r1(3) - r2(3) +! r12 = dsqrt(dx * dx + dy * dy + dz * dz) +! +! call mu_r_val_and_grad(r1, r2, mu_val, mu_der) +! mu_tmp = mu_val * r12 +! tmp = inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / (mu_val * mu_val) +! gradx(jpoint) = tmp * mu_der(1) +! grady(jpoint) = tmp * mu_der(2) +! gradz(jpoint) = tmp * mu_der(3) +! +! if(r12 .lt. 1d-10) then +! gradx(jpoint) = 0.d0 +! grady(jpoint) = 0.d0 +! gradz(jpoint) = 0.d0 +! cycle +! endif +! +! tmp = 0.5d0 * (1.d0 - derf(mu_tmp)) / r12 +! +! gradx(jpoint) = gradx(jpoint) + tmp * dx +! grady(jpoint) = grady(jpoint) + tmp * dy +! gradz(jpoint) = gradz(jpoint) + tmp * dz enddo elseif(j2e_type .eq. "Boys") then diff --git a/plugins/local/non_h_ints_mu/tc_integ.irp.f b/plugins/local/non_h_ints_mu/tc_integ.irp.f index 58e3db48..23aae519 100644 --- a/plugins/local/non_h_ints_mu/tc_integ.irp.f +++ b/plugins/local/non_h_ints_mu/tc_integ.irp.f @@ -127,8 +127,8 @@ BEGIN_PROVIDER [double precision, int2_grad1_u12_ao, (ao_num, ao_num, n_points_f ! TODO combine 1shot & int2_grad1_u12_ao_num PROVIDE int2_grad1_u12_ao_num int2_grad1_u12_ao = int2_grad1_u12_ao_num - !PROVIDE int2_grad1_u12_ao_num_1shot - !int2_grad1_u12_ao = int2_grad1_u12_ao_num_1shot +! PROVIDE int2_grad1_u12_ao_num_1shot +! int2_grad1_u12_ao = int2_grad1_u12_ao_num_1shot endif elseif(tc_integ_type .eq. "semi-analytic") then diff --git a/plugins/local/tc_keywords/EZFIO.cfg b/plugins/local/tc_keywords/EZFIO.cfg index f3bd75c8..b858fa5b 100644 --- a/plugins/local/tc_keywords/EZFIO.cfg +++ b/plugins/local/tc_keywords/EZFIO.cfg @@ -230,7 +230,7 @@ default: 70 type: character*(32) doc: approach used to evaluate TC integrals [ analytic | numeric | semi-analytic ] interface: ezfio,ocaml,provider -default: semi-analytic +default: numeric [minimize_lr_angles] type: logical diff --git a/src/mu_of_r/mu_of_r_mean_field.irp.f b/src/mu_of_r/mu_of_r_mean_field.irp.f index 6abc7e4f..b55e4f6f 100644 --- a/src/mu_of_r/mu_of_r_mean_field.irp.f +++ b/src/mu_of_r/mu_of_r_mean_field.irp.f @@ -146,26 +146,18 @@ subroutine mu_of_r_mean_field(r,mu_mf, dm) endif end -subroutine grad_mu_of_r_mean_field(r,mu_mf, dm, grad_mu_mf, grad_dm) +subroutine mu_of_r_mean_field_tc(r,mu_mf, dm) implicit none - include 'constants.include.F' + include 'constants.include.F' double precision, intent(in) :: r(3) - double precision, intent(out):: grad_mu_mf(3), grad_dm(3) double precision, intent(out):: mu_mf, dm - double precision :: grad_f_mf_ab(3), grad_two_bod_dens(3),grad_dm_a(3), grad_dm_b(3) double precision :: f_mf_ab,two_bod_dens, dm_a, dm_b - call get_grad_f_mf_ab(r,grad_f_mf_ab, grad_two_bod_dens,f_mf_ab,two_bod_dens, dm_a, dm_b,grad_dm_a, grad_dm_b) - + call get_f_mf_ab(r,f_mf_ab,two_bod_dens, dm_a, dm_b) dm = dm_a + dm_b - grad_dm(1:3) = grad_dm_a(1:3) + grad_dm_b(1:3) - if(dabs(two_bod_dens).lt.1.d-10)then mu_mf = 1.d+10 - grad_mu_mf = 0.d0 else - mu_mf = 0.5d0 * sqpi * f_mf_ab/two_bod_dens - grad_mu_mf(1:3) = 0.5d0 * sqpi * (grad_f_mf_ab(1:3) * two_bod_dens - f_mf_ab * grad_two_bod_dens(1:3))& - /(two_bod_dens*two_bod_dens) - endif - + mu_mf = 0.3333333333d0 * sqpi * (f_mf_ab/two_bod_dens + 0.25d0) + endif end + diff --git a/src/mu_of_r/test_proj_op.irp.f b/src/mu_of_r/test_proj_op.irp.f index cf53c772..b03d958c 100644 --- a/src/mu_of_r/test_proj_op.irp.f +++ b/src/mu_of_r/test_proj_op.irp.f @@ -20,7 +20,8 @@ program projected_operators ! call test ! call test_f_mean_field ! call test_grad_f_mean_field - call test_grad_mu_mf +! call test_grad_mu_mf + call plot_mu_of_r_mf end @@ -174,3 +175,33 @@ subroutine test_grad_mu_mf print*, accu_grad_mu_mf end + +subroutine plot_mu_of_r_mf + implicit none + include 'constants.include.F' + integer :: ipoint,npoint + double precision :: dx,r(3),xmax,xmin + double precision :: accu_mu,accu_nelec,mu_mf, dm,mu_mf_tc + character*(128) :: output + integer :: i_unit_output,getUnitAndOpen + output=trim(ezfio_filename)//'.mu_mf' + i_unit_output = getUnitAndOpen(output,'w') + xmax = 5.D0 + xmin = 0.d0 + npoint = 10000 + dx = (xmax - xmin)/dble(npoint) + r = 0.d0 + r(1) = xmin + accu_mu = 0.d0 + accu_nelec = 0.d0 + do ipoint = 1, npoint + call mu_of_r_mean_field(r,mu_mf, dm) + call mu_of_r_mean_field_tc(r,mu_mf_tc, dm) + write(i_unit_output,'(100(F16.10,X))')r(1),mu_mf,mu_mf_tc,dm + accu_mu += mu_mf * dm * r(1)**2*dx*4.D0*pi + accu_nelec += dm * r(1)**2*dx*4.D0*pi + r(1) += dx + enddo + print*,'nelec = ',accu_nelec + print*,'mu average = ',accu_mu/accu_nelec +end From aa213eacf9edd1f69adc042ea1d9343fa37a0233 Mon Sep 17 00:00:00 2001 From: ydamour Date: Thu, 5 Sep 2024 11:00:01 +0200 Subject: [PATCH 152/159] fix transition numbering --- src/mol_properties/print_properties.irp.f | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/mol_properties/print_properties.irp.f b/src/mol_properties/print_properties.irp.f index af413a88..c392c148 100644 --- a/src/mol_properties/print_properties.irp.f +++ b/src/mol_properties/print_properties.irp.f @@ -100,7 +100,7 @@ subroutine print_transition_dipole_moment dip_str = d_x**2 + d_y**2 + d_z**2 d = multi_s_dipole_moment(istate,jstate) f = 2d0/3d0 * d * d * dabs(ci_energy_no_diag(istate) - ci_energy_no_diag(jstate)) - write(*,'(I4,I4,A4,I3,6(F12.6))') (istate-1), (jstate-1), ' ->', (istate-1), d_x, d_y, d_z, d, dip_str, f + write(*,'(I4,I4,A4,I3,6(F12.6))') (jstate -1) * (2*N_states-jstate)/2 + istate - jstate, (jstate-1), ' ->', (istate-1), d_x, d_y, d_z, d, dip_str, f enddo enddo @@ -117,7 +117,7 @@ subroutine print_transition_dipole_moment dip_str = d_x**2 + d_y**2 + d_z**2 f = 2d0/3d0 * d * d * dabs(ci_energy_no_diag(istate) - ci_energy_no_diag(jstate)) d = multi_s_dipole_moment(istate,jstate) * au_to_D - write(*,'(I4,I4,A4,I3,6(F12.6))') (istate-1), (jstate-1), ' ->', (istate-1), d_x, d_y, d_z, d, dip_str, f + write(*,'(I4,I4,A4,I3,6(F12.6))') (jstate -1) * (2*N_states-jstate)/2 + istate - jstate, (jstate-1), ' ->', (istate-1), d_x, d_y, d_z, d, dip_str, f enddo enddo print*,'==============================================' @@ -181,10 +181,9 @@ subroutine print_oscillator_strength ! Mixed gauge f_m = 2d0/3d0 * d * v - write(*,'(A19,I3,A9,F10.6,A5,F7.1,A10,F9.6,A6,F9.6,A6,F9.6,A8,F7.3)') ' # Transition n.', (istate-1), ': Excit.=', dabs((ci_energy_no_diag(istate) - ci_energy_no_diag(jstate)))*ha_to_ev, & + write(*,'(A19,I3,A9,F10.6,A5,F7.1,A10,F9.6,A6,F9.6,A6,F9.6,A8,F7.3)') ' # Transition n.', (jstate -1) * (2*N_states-jstate)/2 + istate - jstate, ': Excit.=', dabs((ci_energy_no_diag(istate) - ci_energy_no_diag(jstate)))*ha_to_ev, & ' eV ( ',dabs((ci_energy_no_diag(istate) - ci_energy_no_diag(jstate)))*Ha_to_nm,' nm), f_l=',f_l, ', f_v=', f_v, ', f_m=', f_m, ', =', s2_values(istate) !write(*,'(I4,I4,A4,I3,A6,F6.1,A6,F6.1)') (istate-1), (jstate-1), ' ->', (istate-1), ', %T1=', percent_exc(2,istate), ', %T2=',percent_exc(3,istate) - enddo enddo From 1221d48395b44af7f9523c7afe9a65af0e60fb5d Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 5 Sep 2024 22:01:22 +0200 Subject: [PATCH 153/159] failure attempts in mu(r) --- plugins/local/jastrow/EZFIO.cfg | 8 +- .../local/non_h_ints_mu/deb_deriv_mu.irp.f | 28 +++ plugins/local/non_h_ints_mu/deb_j_bump.irp.f | 98 ++++++++++ plugins/local/non_h_ints_mu/deb_j_gauss.irp.f | 62 ++++++ plugins/local/non_h_ints_mu/deb_j_mu_of_r | Bin 8155256 -> 0 bytes .../local/non_h_ints_mu/deb_j_mu_of_r.irp.f | 50 ++--- plugins/local/non_h_ints_mu/j_bump.irp.f | 90 +++++++++ plugins/local/non_h_ints_mu/jast_deriv.irp.f | 2 +- .../non_h_ints_mu/jast_deriv_mu_of_r.irp.f | 176 ++++++++++++++++-- .../non_h_ints_mu/jast_deriv_utils.irp.f | 136 ++++++++++---- .../non_h_ints_mu/jast_deriv_utils_vect.irp.f | 118 +++++++++--- .../local/non_h_ints_mu/plot_j_gauss.irp.f | 59 ++++++ .../local/non_h_ints_mu/plot_mu_of_r.irp.f | 12 +- plugins/local/non_h_ints_mu/pot_j_gauss.irp.f | 146 +++++++++++++++ src/mu_of_r/mu_of_r_mean_field.irp.f | 3 + src/mu_of_r/test_proj_op.irp.f | 6 +- src/utils/constants.include.F | 3 + 17 files changed, 877 insertions(+), 120 deletions(-) create mode 100644 plugins/local/non_h_ints_mu/deb_deriv_mu.irp.f create mode 100644 plugins/local/non_h_ints_mu/deb_j_bump.irp.f create mode 100644 plugins/local/non_h_ints_mu/deb_j_gauss.irp.f delete mode 100755 plugins/local/non_h_ints_mu/deb_j_mu_of_r create mode 100644 plugins/local/non_h_ints_mu/j_bump.irp.f create mode 100644 plugins/local/non_h_ints_mu/plot_j_gauss.irp.f create mode 100644 plugins/local/non_h_ints_mu/pot_j_gauss.irp.f diff --git a/plugins/local/jastrow/EZFIO.cfg b/plugins/local/jastrow/EZFIO.cfg index 4fd833cf..1b616f02 100644 --- a/plugins/local/jastrow/EZFIO.cfg +++ b/plugins/local/jastrow/EZFIO.cfg @@ -1,8 +1,8 @@ [mu_of_r_tc] -type: logical -doc: If |true|, take the second formula for mu(r) +type: character*(32) +doc: type of the mu(r): [ Standard | Erfmu | Erfmugauss ] interface: ezfio,provider,ocaml -default: False +default: Standard [mu_of_r_av] type: logical @@ -12,7 +12,7 @@ default: False [j2e_type] type: character*(32) -doc: type of the 2e-Jastrow: [ None | Mu | Mu_Nu | Mur | Boys | Boys_Handy | Qmckl ] +doc: type of the 2e-Jastrow: [ None | Mu | Mugauss | Mu_Nu | Mur | Murgauss | Bump | Boys | Boys_Handy | Qmckl ] interface: ezfio,provider,ocaml default: Mu diff --git a/plugins/local/non_h_ints_mu/deb_deriv_mu.irp.f b/plugins/local/non_h_ints_mu/deb_deriv_mu.irp.f new file mode 100644 index 00000000..1c8d7198 --- /dev/null +++ b/plugins/local/non_h_ints_mu/deb_deriv_mu.irp.f @@ -0,0 +1,28 @@ +program test_j_mu_of_r + implicit none + double precision :: x,mu_min,dmu,mu_max, mu, mu_p, mu_m + double precision :: j_simple,j_p, j_m,numeric_d_mu,d_dx_mu + double precision :: accu + integer :: npt,i + npt = 1000 + mu_min = 0.3d0 + mu_max = 10.d0 + dmu = (mu_max - mu_min)/dble(npt) + x = 0.7d0 + mu = mu_min + do i = 1, npt + call get_deriv_mu_j12(x,mu,d_dx_mu) + mu_p = mu + dmu + mu_m = mu - dmu + j_p = j_simple(x,mu_p) + j_m = j_simple(x,mu_m) + numeric_d_mu = 0.5d0 * (j_p - j_m)/dmu + print*,mu + print*,numeric_d_mu,d_dx_mu,dabs(d_dx_mu-numeric_d_mu) + accu += dabs(d_dx_mu-numeric_d_mu) + mu += dmu + enddo + accu *= dmu + print*,'accu = ',accu +end + diff --git a/plugins/local/non_h_ints_mu/deb_j_bump.irp.f b/plugins/local/non_h_ints_mu/deb_j_bump.irp.f new file mode 100644 index 00000000..82872357 --- /dev/null +++ b/plugins/local/non_h_ints_mu/deb_j_bump.irp.f @@ -0,0 +1,98 @@ +program test_j_mu_of_r + implicit none +! call routine_test_mu_of_r + call routine_test_mu_of_r_tot +end + +subroutine routine_test_mu_of_r_tot + implicit none + integer :: ipoint,k + double precision :: r2(3), weight, dr, r1(3), r1bis(3) + double precision :: accu_grad(3) + double precision :: jast,grad_jast_mu_r1(3),j_bump + double precision :: jast_p,jast_m,num_grad_jast_mu_r1(3) + + dr = 0.00001d0 + r2 = 0.d0 + r2(1) = 0.5d0 + r2(2) = -0.1d0 + r2(3) = 1.0d0 + accu_grad = 0.d0 + do ipoint = 1, n_points_final_grid + r1(1:3) = final_grid_points(1:3,ipoint) + weight = final_weight_at_r_vector(ipoint) +! call grad_j_sum_mu_of_r(r1,r2,jast,grad_jast_mu_r1) + call get_grad_j_bump_mu_of_r(r1,r2,grad_jast_mu_r1) + double precision :: norm,error + norm = 0.D0 + do k = 1, 3 + r1bis= r1 + r1bis(k) += dr + jast_p = j_bump(r1bis,r2,a_boys) + + r1bis= r1 + r1bis(k) -= dr + jast_m = j_bump(r1bis,r2,a_boys) + + num_grad_jast_mu_r1(k) = (jast_p - jast_m)/(2.d0* dr) + norm += num_grad_jast_mu_r1(k)*num_grad_jast_mu_r1(k) + enddo + error = 0.d0 + do k = 1, 3 + error += dabs(grad_jast_mu_r1(k) - num_grad_jast_mu_r1(k)) + enddo + error *= 0.33333333d0 + norm = dsqrt(norm) + if(norm.gt.1.d-05)then + if(dabs(error/norm).gt.dr)then + print*,'/////' + print*,error,norm + print*,grad_jast_mu_r1 + print*,num_grad_jast_mu_r1 + endif + endif + do k = 1,3 + accu_grad(k) += weight * dabs(grad_jast_mu_r1(k) - num_grad_jast_mu_r1(k)) + enddo + enddo + print*,'accu_grad = ' + print*, accu_grad + +end + +subroutine routine_test_mu_of_r + implicit none + integer :: ipoint,k + double precision :: weight, dr, r1(3), r1bis(3),accu_grad(3),num_grad_mu_r1(3) + double precision :: mu_r1,dm_r1, mu_der_r1(3), grad_dm_r1(3) + double precision :: mu_der_rp(3), grad_dm_rp(3),mu_rp + double precision :: mu_der_rm(3), grad_dm_rm(3),mu_rm + + dr = 0.0001d0 + accu_grad = 0.d0 + do ipoint = 1, n_points_final_grid + r1(1:3) = final_grid_points(1:3,ipoint) + weight = final_weight_at_r_vector(ipoint) + call grad_mu_of_r_mean_field(r1,mu_r1,dm_r1, mu_der_r1, grad_dm_r1) + do k = 1, 3 + r1bis= r1 + r1bis(k) += dr + call grad_mu_of_r_mean_field(r1bis,mu_rp, dm_r1, mu_der_rp, grad_dm_r1) + + r1bis= r1 + r1bis(k) -= dr + call grad_mu_of_r_mean_field(r1bis,mu_rm, dm_r1, mu_der_rm, grad_dm_r1) + num_grad_mu_r1(k) = (mu_rp - mu_rm)/(2.d0* dr) +! print*,jast_mu_r1_p,jast_mu_r1_m + enddo + print*,'/////' + print*,mu_der_r1 + print*,num_grad_mu_r1 + do k = 1,3 + accu_grad(k) += weight * dabs(mu_der_r1(k) - num_grad_mu_r1(k)) + enddo + enddo + print*,'accu_grad = ' + print*, accu_grad + +end diff --git a/plugins/local/non_h_ints_mu/deb_j_gauss.irp.f b/plugins/local/non_h_ints_mu/deb_j_gauss.irp.f new file mode 100644 index 00000000..264a6f04 --- /dev/null +++ b/plugins/local/non_h_ints_mu/deb_j_gauss.irp.f @@ -0,0 +1,62 @@ +program test_j_mu_of_r + implicit none +! call routine_test_mu_of_r + call routine_test_mu_of_r_tot +end + +subroutine routine_test_mu_of_r_tot + implicit none + integer :: ipoint,k + double precision :: r2(3), weight, dr, r1(3), r1bis(3) + double precision :: accu_grad(3) + double precision :: jast,grad_jast(3),j_bump,j12_mu + double precision :: jast_p,jast_m,num_grad_jast(3) + + dr = 0.00001d0 + r2 = 0.d0 + r2(1) = 0.5d0 + r2(2) = -0.1d0 + r2(3) = 1.0d0 + accu_grad = 0.d0 + do ipoint = 1, n_points_final_grid + r1(1:3) = final_grid_points(1:3,ipoint) + weight = final_weight_at_r_vector(ipoint) + call grad1_j12_mu(r1, r2, grad_jast) + grad_jast = - grad_jast + double precision :: norm,error + norm = 0.D0 + do k = 1, 3 + r1bis= r1 + r1bis(k) += dr + jast_p = j12_mu(r1bis, r2) + + r1bis= r1 + r1bis(k) -= dr + jast_m = j12_mu(r1bis, r2) + + num_grad_jast(k) = (jast_p - jast_m)/(2.d0* dr) + norm += num_grad_jast(k)*num_grad_jast(k) + enddo + error = 0.d0 + do k = 1, 3 + error += dabs(grad_jast(k) - num_grad_jast(k)) + enddo + error *= 0.33333333d0 + norm = dsqrt(norm) + if(norm.gt.1.d-05)then + if(dabs(error/norm).gt.dr)then + print*,'/////' + print*,error,norm + print*,grad_jast + print*,num_grad_jast + endif + endif + do k = 1,3 + accu_grad(k) += weight * dabs(grad_jast(k) - num_grad_jast(k)) + enddo + enddo + print*,'accu_grad = ' + print*, accu_grad + +end + diff --git a/plugins/local/non_h_ints_mu/deb_j_mu_of_r b/plugins/local/non_h_ints_mu/deb_j_mu_of_r deleted file mode 100755 index f972858392ecf56d0240ce5baaa7e6e0ad11a366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8155256 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 z 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 z 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

      BpgVq$FP%6s+mp7WywD0DB@YfM1b<-^5!c760J| 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≈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

      O|9b>Le=TPGuf!K={7**GCQc>%ujTQd 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%0D?+FI`SOCw5@4ye#ULJ!m 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 z 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 z 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 z

      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 #Uvi5U&A=`UZ)xPrC0Xyq{XF12IGkFwVh;U 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

      v>1|TH5hs+N#dS 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%0DRHLq%G_Jp0iRs->YE0LYkPe?| zwUyYeVsRpQnGTnuQ=(e2@jX5rf#`BO6|fsc3GU3vU$jM$W%KSl)8?}W~?^%M$(kZa2Ll5Dm}>H0EM zEJ(r!13^YydE~YaqeN#y`r799>V`V)?)Yr#HY=!KSeHo1H=`ZDXoY<6;itI)lS`AE zs+Tn+>|J=b1OVPw06b~Pa%Hxt-@Qj1IM zUA+wvmC5Lv=SmG|a_DQcSdf^$zKPeO>v%N;!&od=Me-ReIurA?S75kjS8#6kx)Rbi zHRFd1ao2Edl`$pD)sv83uF$A!)M~togK~a-K_a`fw6mXK#jj4?&Nhq9r0qFegcI_~ zZ6B=-yq803n!gv6C8U=-%i6FZPcFmSJBwHkm5KS}B!~B)MdX5g64T4=8#9`*OnNG} zt%i&J8TBVI-@HcbNo>WEl3Wmvuz`>7OG%_Z5YB9^uid($D&hzDj@UQ7ThlmwabX|n zPxYoB?wj69KP<|U(W^=snJCHDiS;#1R3_t-CT+ym232!dzYF?B-_YFL;#M2vgZs!6 z^U3>0=hdKXvuwg5%KDR-Zx*`cI&6(`+4%cePcr)0Dj+q%^-f%r&_1&2)KzR#QD1u+ zF1kW{r5h6F3-`%4EiPYKpM2Bf@NFe3lk#DEQ8l(@Voxk?ovSwspS+&4px=B=%}o(j ztsmUW-4}nYG@qxzWV?6u#pi9xb$+m8Uwo!@HpbBYB07@U5&GfjyskOy&*A>j%Wf*t ze_$Muj1Sq=#BpeO4_jhB9Hnn-!KG7?S-M;A28#s=`FKcM-{KA;q#p2lYzgUkrNCR! zW{e0fm%#&@iS;(jX^%M7ldHB@0xoU2Gt@<`-4d%66;frnipc7Z5HEmd3sp10+ zZt7hB(XPd(mz`nEhFs}Aimx(0->LX%mgaVh9#A=&n>?#p%!hlSJbbb|nDpE8>Q&~` zSF%qXQWBoWl`XT&>n4Rksy&Y^6qWJmz);hGA6vB50y*(}fQjj?c{09lC8w)uk9?Ly zx;HI3fxQ_w54cMx?nZUF>zvD%FDfs!%ZKmp%vxPlGrLZ1 zIF}0@+)pitN5@MN*iZ=Pa2MBY%QIhRaz1yF&C7@H0sZE4Khe51k@rpZB;hx;L#^Vl z9!3apSsXp+^1;{%%NI`0m#}<^i zjBYaoM2_h4&`UowYPMEa>{)c=@D=-U<>j{i6{|@gVyCcJkdUqk>rr*>ZJ5#3)>(~& zEDwHHF%F;MXq#1sDQDzk1=rWEIP|=TqZY_beJv0@iRjpO+d@?<=9HjOV zd3J_#{R}7MlV5Qx-7Y?d{k}2|y(%AuI#>?3EiL^bA$>eO;&%)Z(kCv6)MsM8*n)85 zi+|i6iYsIFrplwVCz-W_@cMQ*4m~Ckw!6x7%RF?Z-)v~cZR}=WmuWzwcM2?(hg_t5 z*th6O2Q7ss2|2v1Xu*WGwK+1==5btiaz1=%l;18qeJRf`HYMe&t*dUIS%D8z(m}ah z3teUFFIv9Y_1J2KubYjY1!dkBS(=p3Q%GLm@a#C_@q76e@JH`7@#F1m3Ke9{QRfy0?(u${ze7vB|?P?Nw7B=X+TA8rv?CB+mD+0#O!A z*MI?@hnDlL^w7zC@c}$~-(!yG@X$$;IQtVrVx@;prYBcJ><|6iPxpA}BuSj~3Wd1V zF0V|F$1?8kCB%GOknQ0ZQRdIbkV2TyZ}xuDA7RvZ{hY=edJ5o+pLl($(QCv;3m3 z+x0=BEFoQF;KAutCZvljugUpYT)LCD=Fd;&Xdt(5oyqC!>WOk=KGPTdRJS>h^gVsi zZ)4LB65@t*_0|%fZYowq+%q`b4|l|;gUeN% z(pWRQ0jsHVv3b)v6{zMVEBoZ*FDq*7YPR%nem#BhRmaaybjH;!dKaL*_6s7U`tFiKDl`mhEC!~ugg4?r}#B^@Kd3~xQAzfr9 z!gMPW(z(f@eZV~=3F+){1@=`Xq_gU~=hQmaw<1w`Q#?JJrNroUNbKiJK+hj$BP{@& zRr>2-(Gr)QKe=OJnY#to8miyuh)?g?E6Da(>7kST*$mvR0)ep!On27i04JAolZQS+ z>fZQZoL-^%9}C2R7W^mnNt49AuRHAwBd`ZVb^p%PmRv?@tt69)2$?1{{cp zY^93cqRsnWd$xc-cHip+A#Sntl05%-`&Pq!^1Hf-vkz^YC`-bhwD8idqeW$Z`K`js z{lfj_i!QXx7wZVg`QsLve|MzI!zcX(gK>Dcr(ehsn>=((VtXotkaFOh-WO~(g zSpDQyxDFp*vEyMxI+(ZkH=={t+%WXQP)XBHTBBBj(PLBB(6%_!NHGFMcV4#cA>{6_x$s z=iej4$jK7JYPMhpd`H}pbhM=- zgN^IFvPkS#;nzYANrW$&t#vK!4Q<|=jJQ7(x5wj? zzoJ*)TpNA92(Q~zE!`U^y_(Qi`dMGIkAp708d_4Sg*-SM+d2nxgV)|x#Zx?64 z^c@N5<9}ycnULP|oo$P36WM=xhlKp9vPm9YXr}Mz54|oV)359gy)KlrV?uh= zMr@jFY;TxT--5%d9y^W@n-cQL{c~mmZewJ2#(pzOgzidYKglPHFZXN8tFx5nvfWD) z^6BQC1x1gA(^c9Cw%_5rN?-iuFqw2;#mnoQEgn8SPUO8biH~ceocLXH51*P1CA)J^ zwRd5$DLJ29ySC3%D?Z$FbGNP6nEX5}a(86Vp2@I^!Y1S z9^4C=lwO~^a_Mp3fQMen!_c=UV&k#)?L z(_Ijc4keGDF7{K#qv!tDj5k{A8c~(4){5mR5?%55bSAa)EBJ$nYe@Fno<8X98=&O= z@O$Iv$1Vg87?{3{>BD`|Tgyvk%*FaDPr^4F-xF0X(z0fmMwY)L8DBgmSx;~;LK40P ziw|DpUf?6^!F`GK(d1RPl&>r~y{&H0W8X>=`nhq^Uyz(WCjCw?J>MTSyLlF_zrj&k zKGI?@6tKT^d+0r+F$)GBkqWxaGa1xB4NiQRaocMkCUyz+iq&#_6kF>Uxd5phA? z4o(yc`r_vs(y)OBI~3idOjY6Yhn;=%WAAx&JMWHq~NBr@Yx^Z_29r4g9WoAN*=G!uL5wmzLY1X`*b)`De6Zw~f8v z$-mcL+3$3)ubHp#j1>p+V1KPA9qEUSIG}-D0erWc+Gn8q3Aci?9=kn!Q7l;P!adh& z*odt{xH8XfUXkxav8hjfU2XW75mxck6)a{vi2W!J*mjJUe{&n|)tTcS7Le`P1X0>2 zA6OEI&ie$)lksCK5s&=&+!1eT#y$;ox?cAzay;qbm-;sMKDjF+++THi=oAS)CE>#! z4)J0Kr>#)l2hioAm+7|E$jeJ(cZqQQ2|sA-Pm~oh>s{H^lT=kTrax#dt-EBIZ)Kl+ zbDOce+*Vav>(149-qhU}pWJaJdxnOp#_C$LmqN97lf|a~^Yiw!wmKf7Yv<(s^`VFR zD6gKrxto_|J;nZ|e)84UHDE83YNdI8S>8`R`=(yjZ%aS<@C$M7&DPuwc5D%!wMjvi z6Z`)9$X^1K(s(+7};AX3FKu zs(Ai8MU?lKUwg0Zfc%}O#ltV_FMo9OObNMN?)1&n#J+$^*u+wsrqISU@O_3lXmmp{wBhwf#6Y~Ri#^tDyEZV+>$=!;sJuPZTM z4X(S#CoC-K>FgtZSR#57^U0AHZ>VHG*LkJi4;JFFgyo7+yqqufNgpu)kFU!T)6d|q z<5R88>YRRMVtQ2sY@9L&Z@K<0NK9|vvggqluM2f1=4-+y_L=c6eCBn!uEc!Ooanzi zd8zgrq{A-5T197 z$8CK?(zT6kio*UEPC(BC6!%I+&A|RwmWaN&LjSOfyA2HO5XM&t=;hUmES@#j<8jl1 zMD*AsQHA1G;8?lakg)UMAIsI5fRD4NYM9ACg)z$vM&&-e1oYbI%x2Vt^kIjj^l~1> zzk?%rxLp;0we6t%12YWkke+gpc$@9njx8SkHk*}yhy|<1k*12}>qtzG+c)_fI~w73 zBOmUuO-#?1Vqg|*_5itRkb3S;!pE!HGppL&({L=;ro{9n1N`)ekqhInCv3fW%5CVe z$47qlbp_*gr!*-aF0#Ru!n2xreb!}@{#l-w4?3S&Wh+{azY^2y9dxzwqY`e7FzQA= zxWB~1=l)8s{VUC`VB9{e)b#vYyz;v=@7kQY?GDrNue7vcz3&wVzogv0zW2g)y`8W4 ze#5`%;Wr=n%?JMf^nt(mbU!~?l;ze)tbQ-pbG{<_yoI`prL_uezBB9lv=kmP>U744 zN>4g5zYn2)$O7Zdy4F?J9yJ2kr|Eb@3!wOhSg|pXYiw*q%<~<%h z_jdv%z$#4xjzzk;u34@`&Oq@OLh^9FDmwx9q;OG2cz(Ct?Ny}Ek)Li4AZNo{H-857 zq)LS!s!x0RhjnR-;WY>2ckcJZ-xK<;>@k2@595DjH(t(J;orV{?zv-l>`~S2O>^4A zJ4~K7xpdOj?eb~sGp3eKE}b@c>NpiI_Qw)k!`Q>eg|Q^Md-?w1y~_8TFkuS*!h2$! z6z6GM!&6JAZZjEN;jsoy2AI0_)Y7fT37;c`UuK%lr4>8ik8in4!&8vTW|aX$2?Jyx zB#CbTZH7{O=H&wQP7tL8DFcahX|9lY;SW&};!ojcX9Q3%HIGUW`cB2~KbA?d1$g9t zl$J+-f6piO$1}Z$3QDjSh{MW}Q{>WB~xK_nhUR=R%~^ti>0oM^dB^cYTb zKQ~c4iY&hqhE}rtzS9r{rBK-^TLz@>6sGP?NRNG|ys-?05uzK?@;^%3JK{UrA##A_ zJA0GsJN5FF>pP*n$>TeC_BaflJzkQ2C~XG;9zrT97kB#bxCb7)k6pe22e4CpuJZ6@9N;{W|}N<&qvX5X(2*3U0#xRV&yIy>l!0EW#kQas3%UPje$UpDUUOp%N*|HxS8` zr5Q~5FGV>i3!bq9?S|ldP^L_yV+`Dy+6|mcb8qvBiCt8 zi7la31`eZl4J@KSQ0F#~N)61RgA5GPOan9N+8a`pWEr&Ay?!Obc68nYesLv>Go8MG zWVbV%N`A!tnc)=r;?I7uhT#Ny2k=FPW2p@AErw&r54JBDj-VqD+skk`?R1}CaMzkL zgf2mDVTOY#gtARxIEdyTc2|b^bk?mtaWKPNItH=FFwCZcd;DT1!vK}t?H8?p!mnBq zziL+;x*3_lTlJ=F!$&esLbthUo84_{Gf(vuG*c;|w!s4q!K+(Yiy|;=vT&tAGb%-WU_b@Hk`> zZ!!Vx?1U!miF8$#kzo=!HO#-lu zVSvs&&@avabTxl8iXYZqpGv#oRT|#%pU^%S6&v%&0=Yb?WFCbD#ciPRi&S{H^0aE? z%9eNrAzDQA0r0ffv8_C1E9ym%3i^~$Gzbg%5|+>u1BcPR1{PC=frWIcf%$Zifw^>> zf!XwgfdTrPfum{Z#g540+(u9}pfuHR+8%H!#}1(&;O-2I=z|VNlrt=#M*%As=1~V= z6T=YA06d*x7VQkUlwk(t0$u~?>YUj0#@mgW9dGP^>rv|4FAjH2^)Kj(O?50TISCSB zm;h7F#*L-$yk!Wk#5;K2{RZaJs|IG%zYPpf@o-IBKquVo6E`qh9t{S3gkgw2!T6FJ z1t{-I!1ozu&_RIT0!EZ~A0CYIyiG;)8~N6u=xDT#{fW|=xZc&oo+trp;%MAje(f?G;S-mqd3ICY-%zvKrII5(Ge?srlS}HcrzC? zi=IRAA5>-D2>2Xe#QHIfzS~pAyov2qv_r&DYEy5UV%n$6AR`yhKb8ylAoyVFVjQD{ zsrN;oO7Xqxae1{TuC z2IkW|19RzG1GDK<0|WGX14q*#_xnss?FXE|jq7kK2i$|<5K09+mSGXK+~*T53=3#H z;5iK8ZXmdxVTc9*KEN=GCW2rC!wfnKvF`vz+-($|SXcI+a9u9$TZjJNjfQhX3n#?M zsMmh+yle76sWSN-gh6^+nf$D6prNsJI|4ay8BOa998B*RIEa2UFhF_JH0=~x@t{w2 zt&?aD;4ZB02~-9s`_pk00IcEIG4$F4J~5Z!NLm4S9z%E);I#~g(_Vo0FdRy`fU6l6 zQ_r7$;uVI4bT=Rmz0n#i0Q`wz9+d+IQPh+i3Imof%%)8+`80-E)CIUN!wl*GJPt78 z2-_l&_)ZY>#-ZP$q^{s?F`5u{tW_}>Lq0VWoCGi724)$;AT^}R2IhwCq(#1mR~(3U z7`U!N%;5|(=x4+p3kc)LMIb$ObBIZejfA)Z7W0c4Zbok*1Oq>1^`wu%%P3Q;xvXqx(sj$!wmWzAU9veDc!m1Plz++ z<}lJgMZb}69g2>Iq2ffnYb6_>BAV&fCoi?+7ns^>xA=J{Wv$sev$f8_x(IsUMY}-} z1#~xp3m_ac^^$=B`r5!jwEj__xReP7(gMJ{8RpVHfU>X6rgXq}I5vxVU?T2oq2NaW z2UrSr=r+9YYSv6X*G0YY>OF?fp|}ija)_lA;!$Mg7n@z>3@B5|X+#*LAy_Pea^~$R z3w$+#Q$Y{qjBQL+FhI9{>Q^wAIv?|iGngQossW{*vS<|G%^aISpZvowRc8FmAy&3g zL&Ui}u@NG;isy}-ruxMJ7%!_D|5r%J6>+P*So-Bk`tA2c-b3jm1Z!E0!F0gmKJhHW zB3fi(3+QG8^XMr9L-e76Sv2G?nk_)7`{~4r>B+%|{iC=Knfk@$uFgiGD6F%y5e8{` zrnLBlXz(x$yAuJ|L`<0fVqgh%8#s(UHn5n!HL#F^2Whr^8gF2L_B3!bUHUh_YR5)U z3Sc2bLht+gSN&ouhC}GfSNy6gFQSLBXnqjKVornD;~C~rCE&>nb7*@OBmAM1-$DK;)|f}TQ|gmAD!*ip;zUU7 z7w@@NtA;RawY3O?^p{L&wdW5-dGS#Pf%Noz8c?obE=@2noAx&_K#c|tr^8lh_Z~_` zfbX*1i|O4ipImRo;HU9ztdw$W0iBB2AVh*CZhA{OGKRjt2i%5Zv*-yxIe5;X{lRt^ zVk7G3{xDYko>+&HKMqBLktB?9wty!p1MwOQC?+FK)s$Qg#jt|EM;N5N0#d=gBW3AJ z5G=wwlzuM*15|C`Kss!_o_*#}5#S9>n@wM>(;WsTqJVnE@;1N?Ac&}kr+|^NndMqf ztV3JyD30UQ#eBDHr$SOL+dmKnX@e@8a}0zG&~yZ4c!zp(2}DQhXGwN69-<`^_cMi9 z@237cq`;{^jW9@cSyFTFA1~FFdx8)Rc!!L(H!z3VpY(|~j?Jds0ObO277YNrl4CRI zB}j4`U_?i({%A=Y^28>86e~D6k(*`=eiY5p+0c~S z1t_b0Ac`FE)NfF!*Uv_hgXsbUa)g;jHyaqBhYcJ`4?T;u2F|{i zE&_a(VIj=~kd=fU^Baho#`epmjerFVv*>of(F`-_Ou%V?k+Q7C zgE3mfX+5zH{f8dK%McCSOS-AL&p{)s!yQmZgETQDEp%`*ijqrn5y;V3HqG3imwAG8 zm5I%wp(Zv!T_!e@-hsA|DzfpF(Z`5)gwHopG*-2Ufyh0TpZ3dX5#mqkDP?2_jl$!D z=J7R}j>lEzvD5caUWyb1tSKXJ@$G}RESG#-;oI?1N8Dl_SNeWJj_%{bz8A5oz>mDX zbT8!PMJ17@zAL7wI+9Mq5sAr+5E%n##k*XT0R)kUA)^I&Ymc+Iyc7WYyw|ex|52WEmDgnowzhI0gFJ_ zy!EbKk3a%!*T)eC>5Y)I>qhhxsCnNaD8oB=>sQc7KWd)p1#^+B>fu9kRO+W84ASfz znfkey;2`z85a`rLKDPy_pX8>#9x1TwQ%~d6e^9CK^Lv?kGXkCZVf{<}Dx~BWcetsa zj}$odPZ0)bNv@QA(-}xTNP#~JQH6J?(nGFt#4LsZ8f{{;Y25QZ0SmF}j=aW^-L0wU z?kr>x-kbW)p>R8@m^T9YgK*!v!tIW%Sh(c~gA~e>!rc!(ZZHuXh<6a~>=%4y-Q`_u zY+^Z$7!Gj(O#YF)J+b0v_z;=_%<_~$KSA1@??GpBzSpRHk6Db&upEp)t}f=%^#*2B z&Wn2SFi4M@*erSt(_#6wEnMqZ~6r@17I``Wf1afj*e~|rXvytiq|+?j#rV! zVFjM7#z6`cX&hKBR^#A4s>VSIlukFAyxhj&em5qnad1h~$)!mrPDcuxPM;f?rpEYI z>be_P@7n)s7>n(H!Z~dJJqAj@Yd9Z@$)$@C=x$)om)vgPUK5*z6&n4u7CvfXGwEBz z{=eA`q(QR(PrCuM_NZkCWSV;Y73{%wJ#Gox^>by{`U_##AYFif$5|=bK23^E~t-&T~GlFUJV`QM-W|G&J2U(f5G;C{ZzL4kok# zqs1$c80XoG5ChEunP>272_)EQ{_OqX_%~!o8}3yExRb zX9_f12KD4SYUVeJ>IXYwJ0>WhFNz$oKf@tZ4|pWQB6=P|Rxm7}7m$TqxXYtG0oyq? zMBf!Sa*!%;hKaY`I%-gx`dud~Nt(D3+M#sf1tr-pIA+x8#-tPXMY_}IKNPBFZjIT# z8bf3vE4Ib&5e8{|p>%^wZh?@P9w0an@8H6Jdd(fXoCsKp*of`fDZI8fF)~)?dAghD zr%0Fc{N1gbXP3&eafQtDN(4I3>3?_gJorfLz}libk7fbI({7%RAzjXM%7kIq2IkXF2IkVb*Yzwmhbl~LkQN%4MZ19DMV2i)0GhyH3Z3C=ZI4wAu8~WjZ!Uf4yA8EIQ*>4Y7-4xy~(<(oAj{G*RbfY~UOKrG%Xt z{=fDvtzvP2tUh13I-Ls|*6G^_F^N$+{o*mHy}Z8&wH7~wiVQ5G`Ys(?K>PIg)K{l` znrsMi=>P+B=<$E0D1s0jXJWJIb;NE)p76g$6Prc9`%K3MsQewDBFLl*3_%9%Y6ynX z20(|+Hke)nlpk~kQPHLpwV5W5GX9++zXuqNL|3)%kiDs9+By3X6-6n;$4JI6cFZ=7 z(VrkKYjeostj%#lq=!!Lf}kO)L4X+}H|Lq}>Q(0eonvD2sTikwI+!4jUID?)40GsA zzy}!yX*a+P3^5Rd=HCHy%V%ocd5DWDSez(sA`Dfe_SvzzsD>Ad_netn>=yNgE>+av zDlTf5D(dL9kZuqihCr@K2ju|~2{Yx{5eYNov64%XAZE%B;o#CW4D;yV_k99w6qmXP z5Q%VG!-t+;Vi=GIRo(`SDfJzQi!Bf5U}AN7>?nAU;j^G5l*2E4XLU>424UE+?;{M- zQA4F+e|l0%HTEgD|GM|QM2&b0(%;Q6 zgYE)E^|7Sqvbb`((tBc)f1r}Bf?qu77G@IU;lf;jFi1bE!rTroLqE`sK#GDE-@tqd zzpP_(X*UD2souZjfu5Y42gtLih}qy0 zZo#Erx`mH<6Patcn)=mI+V(yyBC1j9-6$KYE8`Vb*V5tA_QBUsmVDX@fwukb24>S% zucoQk08M;N!#uk2W7qbl0BYMG3aD*A3Gn~4?FU1pesPFfnByTO7v^DvK?;UtVIF@2 zg&9KhsTQS}{)QNgGk7%jZv%5E<4qkKps;~OC7f^8iz%AU4O3h1%6(ddWxbT1H5!KwJD3cMF_*gqvyV}_i zrDE+|f)HE7!%{n!qN_>SiC(~Fh|5^s?dcB0NVpAcFtC(9F>n(3do;m#nquHqbfkf! zXug3Zbfba8=xvilF+FZ#3+V*|^XXFqbJ2_HEV5~=fdQKQQks%1lV%Nb)K1GCXysT( z+{~hHOXqLph({Psqu@W$%P`!U@&I3AIGJu6?Wpz533OkHBmT{?W2t$R16=@)rq2Mg z8IGU{AQ;AQI0e8qiQy1>9J!S-ETZ2dw?i2g&`Tp6aS}u9kOORF7@~6_UO$f2ZUn1S| z_79-8p|lPG&puV!I?6FjenfD2Vs-~+Eh!p%+K@S^v5}mz=BhonbczVgi9!;Ma zco?OBs@V>r5(D?8Z4BIl_BL=AI>x~5slmYM^hX1y(yl!^u_-jzz=?Fef#c{>Lpz4< zFmN>8znd0v6g_2PM`E#1$Bv-)Ol%3w+Cj&L=@%0_oQ~X1#}1=GJa*+052e7aI(7(c zZ(@sS|LHn*Fdb=Pi)hR?I<}CSP3$1rW_KN1KAd)Q&nfmmV;& zIrKLpS%@4yAJ39y({o0KAU$npv*>OkLxA2kv6*zr);irvx(3$7S!I!O0$unOw&*fE zmiC2^qZs~<5(`_Yg8 z_K8y%?oI!O0sg>nPg;T4a~PJ<88E;yhP%??h`o;CPE?5ktzftV{k+L1?q|3y?TiBb zmEktD4BB~`VJQ`C?}&F8PNIx$9q|Rj@$@gy{=#r8dKo1S!1ZJ57kjd-TMqqCgRg1P zy-kBB)}bwUl&d#56zR4NU&3R~h0YHDjN69cBV?m_+!s)2h)zXtG*^o(y4=7Z{rPLX z#+*rK05*fbXxyP$cu=yM$)+2lzh^w-W_>@>PqbUom%3~{dp;K2;@X(He;40C7$ zgsfqhMbAK-CP3pC?jYq_GUwe+{3!G{mq<(;A`=xIA{{%~ znAf5e8TduoK+~X{fnu`4KSLO#o0P(NY==?acm!-UjPmv|FoP!fQqViQ&L^2paGX=GbjQx`Mfs zpOT_>u7>Di-0= z_%;-z-N#53g)q{FXN^U`X+ngb4$?52cK54%AI}S zLh*Z$`9)d2@stCQDGPKf!XT|y0<8#1n{^?Oo)VxQ1GDH}NO7W)Vj&ng#Zou>ACWF+e_Re{zvos`AJwQd@Xq#c(oDN^W2(2^F&@YU@r$)?a(@ITC-*i& zj5}3w9}beGA*`y)(qMNol9NTqq7oAupl14+IP`#PWyA})13=@8hDefvR#L24Z* zeS7^Vcv24CbziDl3JuZ00p-PL-;3_mu^5<}Se%@{Q^yAAGZ_CoB#DY$cbAUMpw|IA z5Npg~8n4fgS6J}%bAIuPD;DpsX0d7!Vs&x66srZp#FWG6Vg#eu#s|^e2JT5O7`Q8a zY~W6mI!@DWPeTpdhNc=gnT|4W0<{=8mag~#vrx`rG+kt3N6<|MVl#<>gXvWR2hqO` z97u)Zb;dcgy@3Hb+`z*rKNp|;IEzE+otzZ0H^YPJ8bCR6J%Ek{oXN5K(Kx`l4ELd* zLMdV?!@cMQz-t)pPPYRtXSf@k0(dXOooPG3E`~c$7T`+^x22D9M;li0c@^7FGpK1VaVwg)?0Y1VIBL}!sH^VG?2=IM|8PpE=C7^K}hj_przaGcD z@e-pN*%Wv@+e!)<$o4-fHu7lE$EIW_tZQE%QBi69DyFD3tjG8;P9_$iQELC9;-uC8 z1fsIQMr>HZFG>cPF0LI_g*_ss(s=5?X-miAU&v9b^{CP_AeZjLO%B9>BMsB3PX@X_n~?&<}5;Vmx;}$#U?gL&7bHLvgia88=&om zrK)r@>0lGPE$yG5A}-*>rcn{#4GgE!rvr7zS4u+>`vAvI!mdqJT80zo9KdH8j-?|2 zUuQUmiUGf7IEtRbNr_&DBj^Ue46e$5iG(xG*{;sIFR0grDW%pN6SrYh*lezP0fa&fCd$$ zsBIBBbUR}2Kw>d^z8P^wEwZ?-YGU3JsF{QhbasNRuW?9e##w zOlZ;ls9RDB3=|E-L83wKyy6utP`{)QEwDO{$huh{hBP_r2N4G89+mYP41UpXSA2_a zR-i{Usl(cG9mA0{8TYu#*b%flVkIo089(dTFby@d!|CPkbnGztyilhwlzM;Eu|sH$ zi7lolaC@vwY%nb`u|?Da?aA0eIv%kNEW;qG>D9CaG|9wb&FUK+JCJe^E7|hsyU%oN zE`0^9$x`Id4`1on5WRv}NsBMnBXn*-dH}I9w=DYQBTXBi^Gs|e-S?r6&7he&)|en_ zGE^XSex9rI520Sx`5wEn&Uc(7&AspL(0M*pA-E0i@ZITR=utv!WCgsNV{tVv2-X7n z^QerL;lat{lULkSzK&?zA?zFJ$Ilo>p3-aU=ExJ)piCLLfR^I|j;|GI%E%t7n<_FO zpnHrXogT--0R3mqR%L8NgmXn|NK8)08j;@q>YfL)S(p`j2U3uzm5N;Kii#D7g3>Pr z6q$;!9OYrn`1fGVJgzj8vA3*_qY;$h9V%YhVDAjqA$}pNnaD*`jN1dsPu!dQ*7Z#CZ7l4}(0l5n>)jesuFE?ZP#piC;R?1F1D@fh1dimK%r$3Tf()=KnU zLxMX*pW%vmJd$TIpF$XfRg}?tLh=F zJC|U6N~d**rzjf6kNuq{u-r>G=@$K#Ks!N9I=6(?qK!($JR(60n!-huwI7di^RQo3 zyOpN{UdGkohmC&Y8^Z_o5mxk!aI!e_cJg=_rdLEacmaN2VBfBgAM__4$zp! zp+DlmDA$ChWliulLA2=Pbj97S(3Oyeg?jksm&~(hFraLfaSs;c=WZY({~|oZ%57p{5CfS=h$ql(`^As0jFXTf%eWLF?x@&C zD)thLl~HT%L68c1Oc`D_u!O!ea2ORfYJy@aGq8|OG%%kQ8kkGB8kkM14Ghq`29CzP zq$zUa6(;X3fFn8M;WQR-DntBO1y`ea0nwoIfTXDoRvX~0C}7h(H_1R#L=E7)_d!*)Z%|M3MTZ(BL+cc+^#*ubSytWhit;iCN|+! z%7o4M#(+WQB?#nP12<3_m{02r%%wLC%%-mm3{Xz1W<$d_5lb;h9jaadxRGHVodNhZ z!w?+~_&Gz|8UQHR02%ZJ?3V3O^;4iRjw-e2uB6y+P}(GqTKfqoa3ic#%`#Ut<57-t zk?(m3gEVHE^zM#!sHTYSL~t|99iZn896|%9sD%kWk1{#M>;+y1_$1Tj(+PktGR&hw zzz-Sb(5q15Wa=Fs^5<(iGx37- zj=65i$AX(vei&hp9#$zou>dKLqc;%bu<6DSE!1!%jWTc;?QUQ(on&AkEjBQphF*n{ z6Q_Vf&?YvUo-!~%HyVPi=%cOm(Wg;#3*b~{E1@Pp+29SQ9RX#7H-!9vHB5jT?n+Yx zDm~ZDxqwKT-SSw#OBsgfA`Dq>W0*y$h<%V@1|5sob$}83Ou$oo`^3C)C`lB2)4a8y zN%>brMKMJ`%AVgZR=Y<109s(9mMvnV?y{|Pm%Yx0Q8Q`G!c?`tA%iAQ)%zO)bO_+F z;4tcN$7!wuiIx0T1cw=)JQ3+}Cifu>(i19^d(K5BxzvR~_v{}U7@!{w4ACLe+@5_b zpq%SvkRPxUNg64GlGAgi{F7K)?+Qv#1+|!bt*lx=R7S1&oyM zK0FxL@Rl#;4K~6@6URo$G!jJ1h8&kUy4ol~DcFMT2yust(#9zr(t-;SXbWCvAa46L zFhmDz>sl}s@M5Hc60SzMR{%yzcs?HN5_(G+_pL*5qs5n;uK3cG|3gT_^6!5!%Rg;< zY0aZh?YS*Lpcfu4H84Pr8aRkv-%f8c!X9TpUWkX|o&YFKm`wu#pW;~DX@dg(jUjIP z2mA;yQb6uMO#vf=W=|}Bw#FvfqDQ^bv+HnE@7_QexYRpd#-;wND)sJHqSV=R=k{3R z#XGE#wHTO1C*mbf;n7(fVq!C?#l+%-w2n36o7I#D!GwEz+^jDK3upZaLhRSsK`Q*? zYox>ch=4mhNRfA~hPXJ%z&tu~2aHUaAVgyTI~bx#2E2hG#`Tbb$7vDO@_^s#FD6FD zI&yKv)qUhqos&n4=t{mVC#i~2cgVa)H0#s<`7~=M?RI%|2p}sQW7TPZa^Rayg8{i^g&j9TxThH6 zCw%~40*uJXtw}^qvn{|A8+F67L#sSI<`bHUML+IBS#8m{g-!8xL`k@Kmm&<(9jbVj z-zAGT=CCxQ+M6J~R_!7{dk33CY{h&M)h3&TstAQl0tt zBERkFyT&xN5qmrO(@_0`U)$1sr|Q`0G!3z-ND!-22OXkgx1m)-bnH}GI# zmq1%e_3b)#3O!M*V<*!$N9fo|RAyo)(w#Lrb{ws*)Nl-aeu9Q0Y2R86N6?eF#$IMo zLQ7`o*f8B&pks&A2~|3F7@dsYtdz7vX)Nvt{hlQoLPKyeNyZk_WA!?=ki;wv2hp_y zb=eB&huJzdkN$F^hPf0rx#iIC!*y(k%JTdoixrhk6OYreL0XsV7kM0;MRSkWu>m>& zvGSXJCha>%$7axXIesPNc=`av9L{W8(IS*$Ji}2m4WdtHSVX%(hBAf&X&B@^5YYIu z9^e_rm?rzT_Y^UlB`cvn1CD1noX!B8&Tt6r2Ux~%FcknE$Z!ySfQ*l3 zIFPyks{mbno5~L_QgzbdEvf%oQ0#>S{NkMwQ-`lZVOZHeA;dLIyU03Bk3iYOX$S&2 zQ6Ee@8aRlKHgF)FW?&wDzlYvlkJ*!n#kD;K2Iy!*fJ==`YzB=rv0?Jx8MGtHJBwp6h5&447@!$|3jt%w zFduQ=GPp5%v-+v7FjpfN7Up||*jK-+H0tIq2os?7$G9EAm&i+Z1TSh~Otw+m(oLNw zE{5Bqi6fzG{P3fjZ_z51?25-9(xI-*tOaRSKDu zvROk6=PLZ-1>^}w*r~=Z?}0}<`0D@S?mocVsJ6b*&$4V;u9Dolfsk_rJkE( zt)`w!@Q70tr=ItJk9y)q*YIG!-Be1ya}n=q{@_OIY5sKg-6Z@@DvHm*!86;kDB4em z6+|e0YNBQI){X(b@BCdT=HeKG5jh`4^BFv}^gtAsHpP6}6vZ`AoM`FenDDoBQuP15 z`_6x8YG(Z|eYh-o#Ps1Acr2#+E$p#A7q7qY#B?Jb%%I_->Wf^A(3e~+qO70Y8Sn*F z{DRR!Gj9Raax|aLpO)hYWwdCU9Opt!l;T_GSZOnFF+GCf%P4Yh$=QLq{KuVU9w)Ac z_%b=<3t5+#C9G-7@}9Li>SUUE86NRvOsAPQ{Dx*m>1jN;m+Ri)Vgdck#e8~UCwG&^ zeaClpzy4Q9KOkzhZmBxIwlG^iR~@G$lP298XI>%|EB@W7ST`PvY2_{L{y)pY_pI@} zg$MhYs(@bPB0e6BD%iVxAsvI_zW=HUCNEX6jyILG-j{WL2F!HEj%02S^pLa8eX_Am z+&c~r?)9Q`JLFt;OB78Paa(g}KTPl%%;UuP_%iPLS8C?LSb}w!^_S+D^>5Q=w|Pp) zUjG(&aMvH$P1gVF|7!i_zB<{~F|z)>u@1BT$M9H8Z#e6Jp#bZzq&YL(lh_IxL&QFx zEv14&w-}-KQLA;F1Hd9K7SpmkLlGS{JKLF|khbI~zUF%{zH({0$@1NL-MoUu{nOna zW55%-nc^Q~z_XY$>D+o9M`UNxx%IlKo;~w*_Kz{hq;uD+qVOqzq+ z;b<{-X|pG^&A}I#(OJG*ubWrad5Hgu-(^^W)WogVAHtNn^}1c5iCeFmep9zzmr3W= z>vn}gbPumfZoU4LL_D`%msvw3^MuGac4b3k)^CdLq|EQ$cl~$SBxYiy%qH;^9*ZeC z&E6#6z=ngTyg%>|1cXEW)ZN`rh7?l+zSn3+@gsTY!6Gw5A#K9Z0_sQfV37Y}#LF=A z#E36;rg+57Tch@v{vZ4KjZU-zr``TxHWyp$uKNG%&u?63clgQ6@u4Px@i621Bpz{j zdMkTeU%^#A9A1CIgMHjDpo%iLh+kTp>;58Aln&WLj{7kb&xC^^KJWPK|NW`V?{+<( zlX|X$3YdCci$}a_bn1CmCF)sDZ{xv!8pdyMaIt_I@JU8Hnok3$oL#J<{r7U;$f=+P z6z?)sE~U{u1J0|)DD|Oeo^Y`-$5H&i6!D%ggl|xsIKG>6CqBMU9NQ;FJ-2=POOw|5 zW@T3O@;p$RqdBGn7T~d%w!~9FRvs;^MF)iOsde{xu#jHkViAq+FQ>i_pm-b>o~XX} zO_Rw_QU5Y)e^e&h+E1$VBi3cAv}2vA(vwb=cEP1yTnsrB5BBLLzLU+xa(a@BCG-^+ z@kU(Cowtxy<6<>kxm-4Xn(4)5-BYlJdt~m$SGn=-TRP#q=D;Am zjEMctV=?t{6oZr}KeBlwq9>Y06wvx%H=0kIAbOf^&!=!=IX|0!-LtrFr7DrBPE`)T zV=+DNRAv8V?TzGEJj^tFAuZ%$gl;)VK6}}T;<09id|Dqxvo}w4BA=v9Z0a1bw;bnJ&nIe7xaiwhQI8!X5?NL0-6!U3q6fZ-OyG%B; zECk&?QblvE-j3#8gvw{<5a&Fz{vV!nzS3k}Bm=bwwJ`&gwW1lQe>ek`y9x%XoSN`p zA4bdQn>DkYS2LxwIY&$An6=z!l+w55@-aF04!2l9@7(AX^XXU!*PBrf)7dEAY>K#r z2a5WAX}1^URgZZEWxB-e7M{ei=uf=IAnn)(wKDB^1dqkE)pqsmGn9`IQ!F+__5#v-49Zh(??j^j+Rk2&rnMBH@J)8dlo(Jy+@<8 z+G00aOc&qm77OTEyzgcU`LxlzEbDF4<}iJMqIuPc=69m_1B$#6euYe~ zopxSI;q(g4wj((WW=^Zn?uIp1ac>C>=ka)OpEfV&VgU_u zF`qs@)P1h3qHPazKSfYM1t^*!!cOsWm)ki}x&Xy@O*Bl~qxhvM7E&dOri$Di`G%-@ z-j#8bT}4OT5!N9bkpIKvzgob(=$MrLcp0rT{jt{Crav~_-rg)WUKjm=@6q5PjvRL8 z^U+4U>XUl^n_EZ?n>nm!MLz?A(ci%%esj~&-`)Uv8I9rLT;%X7q72`zw~NKJ3Kt7# zD=y~Kt607L34n6C_i*=<93^xViZ>Y{Oq-%;x&pP1qG+D6Cc4=D(t!b_i~r?EINTna zG^72kZTwpAO1uRfgld^KJ%z_&`&VUg-Z8u}+O#}<`C+d8)&)LxR@eKIkQC_T&^51i3m_qBJX7&LezmW;nOn#0=;2?e-4PzBz`on!evEXkCjOF7s`9l)J4} z(r?&s?PwVtjQQ+hlzO;WNOQ2Y+tG4b1&i6AFe;&+kHpOY3>KzGP_z$wMRYcb_F)2F zP($%k%;4#%iTlI5-D5U+?h7>S-%NTl?)T*fq~X`2!lvQHTbPFLxP#sBhH3V`xhWn_ zK@R)oK3puOGq_kli@BIj2cwDhytx0zT=z9km_9_*zPeXPSD|Rme7RkoyQIs(&K!DG zyCzM#AE^3GYX2lEU}|5vm8pHkseJ_Z3`FBApI^qjxZA0FlzoDWI8){#e%#_vcLv;B0oAcDJ>e(DPM5BJ z1H~tu`reP?|Lv|e&vdx|hcx~kw9|BT!vUu8-#U$73EL00vmJOdDxu@JhA%nD}>tltceA``5zu(>mUam&U%2`kKaW zcd%*fNjP}m>0%ZJ6OBEW$FzhV;3A$+xro!ViILuIqOk|glg2ip=r;D%{|k+Ej#HmX zV^>9eO=B;_BW}#ItKHZu4!3urd+`uQ4m;5usP$hsPMNcPd|+}_-g%yfWY*GhgjvgF z&RW);i?u{(H$2!oPZ6EQMSRA+$K6tJhXRh~(;KLUz4PFe?3r@UpBFIiHKv~Uu`(2I zMv=E4Ig`BtF|!%*{+&Y-QAKNAJOO1}CricO#JWwzS325Mys5+Pp5|jw@dj$egLy53 zk8U+z;{Hfn9c{_cYUW1kuL?fsu4$%t{wXYB1RUo1(BkF7VJBUqgxVMLxJhN=cM;;K>JMZg^x46*VVci%9b^ZBe?my-1O$s=)o-WV`5q6az~c=skW@f z6Vbo9M9bol7izJu8{p-6HWKE?quP)pbH0!lXg^|}4N?wryA%hlx3e*06ge~VDwy$d zGjo+ab7q$lCuY98FleoigP9FvmOd2|3pfzOrzJkbl12*Rw^+VF*~}Qkca{EdoB=C$zjq8IhRukreL+P!Z-y_%Cb@$ZDy}HR`0BzisF;ok{9UU zUMh~;*K=Z6%0o;nxOr~ZSt=#@gKKhd-JU>%%f{C0O>uP&9~Rt zda+%uhEjBG^UwO`pN-8wTi~CfJo`uDWT(vwBzQoPnlzvoB$b-9S>y%A4tI|kSZdN1 zg~Lg5A~k8_$_unI7%rXISa8Q)_rMUwjXT`qLO5b?ER{HxSawru3zwsZ(A4%l-KJts zGJjOGoc)uHubJ)83`t&~s?5CLbW-ML3?ru?g?C<%O6|yd-g5R&Aj(df7wA??P1>LH z0-Y*lF6GLupBD(#Oss3tPKkB#QY9_;$fVi!N?Yh)yFk+sJIF4gaG+fXuVT0O2=mPF zmp88ew5j~Zox<+h(!!T$Yjjd(Z>Mk5_OlZ@u=u6Pn*^pO9S(|KnmDxK*4XIai9_2< z6Nk3FLnbwGXnV>2#X`Xtp9&?0Q^ra&Bw7nNmGL1`H>zx%#UA!dP`g^ti)GU0-z-))*0q2Mq#m$)L4s3O){hi%5g{1kTY$W82;C5_eYF{xq zIi<63!kHJCIHf~w(m||Z19CTAQ*w?|!S$Upw(YR&-`n=TS+fsqRn}WLjAY}-kodLK zFnX*9Rc}7koK(j^*EIjw=hLmU4az+G7#|_CTkW^} z_C}5h(EoXXHh%icX`MKflpuv!cfxEJnOUptS<_k0Nf2RHc@i}WrmuYvzv9FyroTZs z2hTnBT7nzfPoG8&#_gw1vs7>+`{~m}b2qdPFgu`_7pUWNE$>Kwu8BsoVwYEnz{0zLEH(+8v` zH99ZQ%c)?=MEj!??T<+NgSh>BHueN_l3>?2g3lYQhx(@6`lgXEf0R9C@+hgNbfjwW zBB70Y9Vfp_xzF}FQzlotsF^xv9$}frWzFphE^DtH=j86%LxDN8FPKD^(_6##y3N|> zOl%Y1+OG{Jwuw2D*Pb)Sv&thUt?~$amCNJwAG^_1Jp7jfn;)1*N0@;<%&F?cmOjsZ zpL^a!Z^UIwpEtP=v**!qnC$^G>ksw|l7wvO^E_MnyveP~nKyaRgS`_Yeg4EqpC==o zd#>GZd|(4x`pUee=Mg>_^q0CozbY&ZJV>Lce5~6$Tn|n(>}q?B6AgRNGh7c&ZdlP{ zlZNY2yVftmz;ON5y4qWGL2(YzIBGfO)-u5xRTv5L@r6o!Lcu*KweV0ykTV}**p+ip zycjnx(#=sLiWlSNT-n z^V;Md!Stm4JNTYdB>1k>BlwOCb?|Mw(_WKW)CIn#+fj?OTZ^<^7qeS^O;;iQjA`UF z`^0~=n)lqVJ>&HC zM<6EMfZU|@L=c$V4g08Wn5nuUp}Jvjr#9wgjq~hMUVJ#w9#~=G1aCJWQHjKyiP}V@ z8<3ma4G2uCUP<@lZaCUm@rbOr$ij^aaC#G7gHLa+#EQ)6&1ZNlrr3#2eG+B~{JosO zQ89BapVT;4!m?+Od8+;vVV*yRY4b-pGw2jN&atwNvVt?n%wy&a?qTm2=3259a4vP` zn(JxN?3uQeeICx0+;zvyO!%XmnaY|;W**y`Wn0gid2FOOyVFKWF+;+KbW$mHHm5=; zGjfoP)R_G+;9NDdtw{Evwlx*=C4JVR$~u(HJa&Z+v#q_2Wg|tQxwIORDeg_)+wVY3hZOfVC?mkglg!0tgqc&U(8eue-y5n+_1br zj8BpZW3=C#xz^o4Q2!HxjkfuKZH~c8+H!vOMRt$;j7ZnX?&ivR;YD=#en;3<%9@)9 z_EGTR9H)Yp*ck4(Y(*}mvh%a7rBF04(S!48DNLGHI90F7t;TdRv?48!$Kg{vtH@i? z9>WG4Krn`dtI@&x9b@5B9l*v;47N zSD`Z#W$$Uf3v(B8_OAfq%={ESY2VX+r{!&v`VO<>`eKv&A_q$?HetNaLgoWuxFW=< zoIUOLavDwQ3oI4f*WNzOXRm^@?CsNz?qhGCCYn3bZthh!b3C8*xvy{XXk*0x!uhXx z(fuFZF0kLp`I}Ma5M`fCMDbE;6SREnLT4-z+|3g&rSMY7yw@fDlNacd4#)Qb@FrHf z={kHq2fZ3|-$WrSwH3mLnbb9QD#@v!a{#bA*f{{$9qb$c><)Gg0Au!I=W++<(G>{% zeLZV`c=7K=?Jg|}wA0yWcKbr7OXc(|yM3a!IcpeJ8|q9oH%yfV|UJ* z_F|X+*Si*9*LatHLM?i4a4MfNHOC)izdKRG70@D8!=evxDbLxQyMpiAmD$s@`7e)@ zQ-x6YLb8twH(+~c>38a3-d{I=6hYFg%RXU?V#3U2wwjVYb4AglO6L=0<4t>0&I>GY zd!+PIqC!O9wkw}%xa|--VQ{gguwdEhVXW`j_QHo-T_>JCy9JN17umW=KKqh4% zN2wa&876fYUR~gAo0$8275sW)AitUz$S)@b@(a7~uC*5%_+JiWbww#r64glD>eN1N zUhCkGDv^*n5>Dh*9ZRZ+j-1`)bZ8}aXcS-9H)jH?o3sA^a#W)g4H!7oCv~@{H!G1a zpVGMA^qI3?baQu_+yca(F}Ww~y2iObqf0w4t;{e-r#dgK%;M3doR?PirZB~+`A_zu zPyH|ZG+cp~k)NO{=?C0C#j4F8RU#qvoMyj8B=s!WR{C)pr#8o7hX1x7b1QZv`VMul z9&+j+XX=$mn9slvb_lm0ySN{tcwK6)%GiC?q55jqiN1>N;?(XFQ#g?(VVV16k zod)5=+5V%5o1A@=Ig{q8Zu4TO6e+We+3{(g=wZ$puQu<0Imck!MB3h&kHkzF7f$kM zMUXU=KG1gEiGz$A#e`YJxYZ|H8^Y(^wfT^*<_|K_me)vYGqUOmj@rcs{X{jiZhO-ZLrI_HSNIJ0OR^F;g zZ_$Ul1x~c&6&|GM%TA>pGL_<9|H$1qio>~C_QtUgYfe4xG;~-RisVH7FtNm~ zUuj{M)C&DykmYU=(Y!4C=-61q9Z(ql(&>P^uxQs4&I;t5F@og83NRrZ@EvzR>9@Mk zr}2<}<1~5!R)lxP-L8m!?KHLDtlsksR)lX}(_^T_z>`iTA{a39haXdPT4`SYV&{rh zIBob)+E7%{ltnLM(e#kBXu@6)i$;(z1AnAhuymO$dJA)zS4enm=3WpeSvrem*|F$S z4!nLb7I$~em7L`>SSMR%dRqyEeBx&ywGvPcb z9pJ2OHWaHNf?2cX#zW2qQ*mS#t%yj*U2Q^Ei-c(cwhuf%xD)pC15cQXJ=j=Ej>(eK zno^Y4f@ZgU|L9z2y`N#d)yT}9d5GI9ZVy+SkwqI~_V{y7o73hs2>vL7#3513a(WjN z(&FlKCe}usQB1wv!?jga4h|nldDE-j$Qr0;g(H1;KWLruFawoTuGLaD$vemPG=db=_c&=Z#ZzD zyMhTw&4~KAdv&(C28eFKzfQM=8t=%WI{Z-txywtrTQH%!Wl*{WCAVAd za=PVaEEBsI-Etb>+IO59zG_a9@YjR{$HxBYb_-&vTLdhTl{7t=MR8Y>r6h}Pk!7r= z$Fpbych(o&6-+>CMpWkCc1!rVEc<-$dbEJo7c&ZmSH)2&nyhT?kxNmW{G^_v_EE8{80o+)5*?RmOJ5`WntnuEMnFheZx`r z6g6D&K^DD?bc-t{WS2w288)-OW8z&bg#8as4w(1`6ZTU>>1Y;xhULwyS#x(XlV8hZ zd-Nk`g@0i7(ob=uMk*Vh)-ac6C;D)}-sAA^q>$6>iogC6sPV@v`T;A#4%_>M(@$|} z6>?vq0?vU16K)fav}!S7`e^+f@g#kiJ^73IT*-Vuhuf28)&euxZAJgcqAC>4P?h{H zCnqSy5H&NJsB^rjM#`{ z0PbXCD)<+!;92%9Wbvu=wfG&TW>l{Sl|BWJxVyz1aCu}tD1*<_pLV%?TP*OW`xUVQ z`#r5)umrvcam^o-@6nZWC6>S)5eDoB`-=>?wLIRwaBhzHIKpOKWvF#ARUK-t%X~5i zUwkm{+u?X>zA|UtMYD^zF$q3LZ9XxG$`meeXDFmMo3ijkGcB>roeoruHzmmBa#k|0v zdr}w7p$wKc-_yto47fqhy{vMb_wMlhh#xR(!ndjty{cfPTFVfxrGj!7@mkWn7TkrS z9MQB7Txt^7tiTZlm!%c~hXq`NwnQ}cozqzfG|K$p*I6ck>nL!P!B(0jU`D{r={Q7_ zK5+9%;8qG8XK)%_E#R1dyU=5ZW_;i-lfc~-80vFg2jPv?PXx5wpcOcPa<9k6^}V;r z2TTGFQD7B=2U84-Izt~3u$$IIH01-kCxIs@u$jT*DIs7?z%ywcqSg=I8lE``JWqkG z44z9j2-qUv<@6Y$2_Ja*Bygbu+ZbFxFA5kJa524wXxaxZo&*jku!F%{=}Q6I1$=;h zMKt!Kx5*Do0v}OeCxdA!zJUiNA>ecPzznuSANbrP@FfLyGx#E{DPWg?@6t3xGd}R$ zN#KVH>|yW&+Ec)!fM3&WMB_hsoBZ`8@OuUJG58%N1?*)oWD%W@aLOy@A)yX!`S`4o zxj^F_*81JW^KtyUTF{iBQM@om*c$g#GY<)k;@ap0I>=}_(X)aM2s(x6V}uhv6bX$k ztI;7w@e^g#&m*1|bah++KsfC~kzN%?P?P(Fq7AeJBzdouScjMsW@EdO^no-Jj?ggfl)A35_1C(a>eip)&sa8gf8eO2#Rz|NPdPL9`L2n{@1L1@ZMM9&v2szRGHb!wl@@qlkg5HnK z_ad|L zZ}XARXm*xD`xp&m(HVmF3L43xix5uvP$V>3uF-x*ab@v3K~sX_s^M)2TYq?KiiAd& z(dZzfOJ~s|f({6}8eT{uobaJYXmo9j4l%k`7JVpaTF_1LS`Fc}4@E+wZ5kb6bjvI% zT+Ex)u%J6-Q6s{!KfTRILZiEBbd=E!T!a!dBPcGd?S^pDha#cTgETtM=z+LQCFq!- zbF=7dgfl)A35_17(a`1Y@$}d%x>iujjas33S#%G=acgt?JUe0ki}UR~Bs7W(WD^^I z6{EO3_JW`hLHjU%2&a4~5*ocqqs@$7nMJ<}8WZ%!EDA5dc4}_Sj=zNcuc;{#8ofoM zt&HBBMayDo=YY~8=zUqV9>NJ9iiAcV)@U1}4`tDGLF0lxlSKz0oc5teXmnVk9gN~? z&Pjr{3;H(peS~9K-sU5r(f2jl$!I2v77LmX^vf)I7~!N3MM9(BYP6ftZ?fohLAwOS z^^VUG&iGIyG#Ut~O{#~{tN;aW=7CBI8V*n;!tsE&`ABHAOrw2_mIi1QL3;&_1!z-* zQ$7?4jV`UxenzJT=wLxpg032%^AWbPy){Kbqibn&kkK^*bg!TTf^HI^_Yh9_P$V?E zrACJs-6BB02$~jjdVr$0U_14pNNBV}qa%#&8lW|>w6jMI3%YNBrXw87@ird`jUK4c zQARrhbflmeL5~X11qdg7C=wbyR-@yL9uuHj1sxOgi~v1_aK?usq0zH78oI(go}Lw; zF9fyRs1=$Ypn_Ymod&(lM?#}lYP5>cD+1JnrJX*F2-+W@)e%nlP$V>Zvqqa4T@s)j z1dR!LFE(FS&S9MAJM9|?_4 z)o351OJ&nbg7ym9l1*a>r+g?98eLPP{fw@WP2tTUxaKeWoq0wD6I>hKM+0-LwTF_b9bPd93ABu!VJ2g7O=m8l0JGlA7 zf*zSo4*`u8c$<%eMvu|xD5Krk)OI_g89`6aruTs+eJBzdJxinGjGmcI%Suhh1idty z0$5kZha#cTD>NFq(mkGDo=vj_wcMx`x*?mIfW`~G%|}9`OEg-==;CbJLYf~DbTFF^ zKse0#sqyTo9;r`D)QD835`Cl(N;#E%ciN){1!pq%%(SiCVVIo z8huZrZH&H)tz6K!pr2>cuRzm26bX%vX|#jUud`{2pzVVGmQ9-@94q!V9|?_8jym*p zGKw30b_$vhv?zz>A)NG~NNBV~quq=~bLeV8y98~>p?eU{_)sJ?x|BwH7@d+sFAACz zbd?eDU zON6b6x28yFbQg^dGP-jP%@lM%(0y{~XoM3!6bX$UpwS^l_s^kTLDPaBkwc3RPWwvL#5gfl)A35_n+Xy_{UczP3VA1tWlMy=32IW!yLc!{_9NNDr{ zjaD&we-8Bs8WD6ThZZ87@}Wp*^f`?-Gx{uk$x6_epl{^R3kX}K-kKtz(RVf4%IG^e z^tqrdf_|1mfxEGt`cNb^`n5*e82u`T8nLu9P;o(j&7rjsPWwRY2nYf11!RVhk zG+oekK?{R)Fv77iZ}XARXjG$}j7EYqPtb&*^+8&QaMFh&q0uQC?PjzoNcRicCFsgQ zdKux24@E+wt827}(ba-fdJp$$QqYZp^fl0UxwrX9Xmm4;_A$C?kivrY3fdl|6%bDO zP$V?Evqt+F-6=?i37QggW{|c**sAc>6bX&)uhBt9_Y2Z&K?ejqJV@stobaJYX!K}} z4lz16NQ(tc3wmmhoI=rchY5Hup_NRVDYIORi;(C9lFZD#cCAbllh zOwdn*ly@(-(`s)`kp-5=-PmQ)Q`bUuV5i~An zK`xzuaN36=q0vaLKAtif&ZWx)Z5OmImu^EiR^x3x5*lsNXeXnwTzXQ_grFWa;f%yY^OdH361t?bcE6QxwJl( zcJ`=YL9ffD-4Kq|dz+7hMsL*UD5L$kbgZBmLGQ|?`3NU{C=wdIPov|E-kVGJ3pys~ zlezR3!WkcmghrpyXlS8(JbgNseiqbnqgLqkT-=Ee+i8Qh`ABH=ZH-nj`c^KrU}>jM zBZ7|R(lmrqJ`@R!eyP!BM!(3Vg9MEU`g1PLL)dEc))Wbi{-M!UMt{$x>jZ5PG(SWS zBAoD{NN6-1Qir}aMvFuAfuM0gYeN)x5ZkE_MM9%7jdn2F7^10I+Ue7FL01gX#t6q^ z-sU5r(N#6t$!JT6W(t}Rbb}C`fN;`>BB9YuG}_JR#v!^|&@Mr@3(+G8XM89U8lA4u z9!7Tz(W`HMDA0r%Z@-`m{jqa<_K1OGS=vP5|1?>t^(L>lyeJBzdJxZhfj2;=H zrLeR!P$@xA4$+zjTT{F>MM9%zXmpU#(?hhipaX(l7@|E9PWVtHG&*0SLyTS;qPc>m z1-&*zXCs{Up-5=7U!x<8-VmZ21RWOi&JaC}aBL}W^O4Z#y&4^5bTCA(3z`x1i4c8` zaMFh&q0y%`I?m`*A^JVQpO_gF^tBNE0yN`8k^b>v&3*q?k-sU5r(cd&$#ptj2kv%~pf`;;G4B?ayMM9%R`RdTu%xGag zMIPfmjR{(vPb(s9t>CRG5*lsLXe*=j`Lvy&ErKqePlq6!@S#X(bQO)ZF}gB-eM8W= zpzGz+EeNN5C=wctYqW#Wjq>RQLE8o0CZE1QIJTm<`ABGV2aR?z+MZ8gdBv9ybkBTR z8R4W4MM9(dXtbNrnfbJ%pk0E_$*02+&iGIyG?PsaW-Q9TW6N z9A}=ycIrcs(CDuk4PE0NPk+I#gQcBkQ_GE7A^a{(8^ZAxZ}XARXkmdm^i?rhP(TL@ z8WFUrfX+fV)7y0S)F8C|J>J`uD<&~YK+^?n7j%yTIt1a^ zYTo7}q0yNd?PN4jKo<&{5Oj6{-HCA0ha#cT!!_E?=wStvk~5SpK~F58=YeK?C=wby zRiizOo>D+xN==i3o?k$rA#A6sdz+7hMlaTAAEOr)&~KrUbpMfRYGXYj|slghuby=pdta;aj|d4hZ^a0X>Rv!iOTE(SK-kh|wnt z=u<({g1%fpg->BS^`S^;bVQ>gjJ{q#%VKG#PlpBlsDL&^IJTy@`ABH=Q;m)?I$A)x z37Qe~hXU$CIO#)?(C9B39cT3C0y;;~F+uVBR@Wh%@u5g)w4hKO`a;*b$J6{mN(*Ya zQ7cqgNFxZx*YY+W360iiw2IN%Li%3Nh@j1dRQNQuQy+?iMpx2kGovdO(sEeZ8K{_` z>lD%^2wQ7=Yl?(MH`Hh=qZ<@bLeLgLw<@G#5l;9}Bs99cM%x(Ou8__bG%o1wg_J@# z?L(2!XhNeMjP6}XcL~}q=plvlB*L*)Z}XAR=wTY|WVEZ0-V!t+=m~}N1;R-miiAc_ z(P%fLCl}%ydpuBGf}U4MB?xDHC=wdINTWTBUWnhZ6*MX6!a{0AIKGaz`ABH=I*s-* zdTk+XD`>Bv1BJ8~!YLn$ghubuXg{NO7SfS|rUZSYkj_BZTGv}sBsBV@Mh6*vqL8i> zbU@IT3h5Sv6Fw9PjlQnYAx2*-q{jtK3;JOpy@qhwha#cTQH_o;`bi=EB1FQU~2jR`ufh}sagHt^OI35{;2(N;#cEuvY1wg@_-h>k@#;X{$o z=-wJ_V|1?~S|Dg#(1VNUA%xRD6bX%XX|#jULyPE5LE8mAzKFg>IJTj;`ABH=WQ}$* znk=G%=XszKf}UGMF@%#o6bX%9sL^glFDRll1?>`aK@n|%aK?usq0wtK+QaBIMYNxw zNkMNdq9nrcjl9iALZf$Tw2#p{is))Vdj(Bnpb$>^P$V?^ghu-reY}V=f~Ew0v55Xa z*ou2=iiAdA)94_huNG0o3p`K*f__j$%Ojldp-5=-6O9fr`p+WTOwhET-xbjegwsA0 z35||xbcE5Lis&dohXu_prgIREZR~A65*p3JPby!+_e2Cw(Xq z8m-ajIHT3Y^ogKjf-X}`S;N>)eJBzdT|uLvMegx*`C@9s($10Ja-&vg?P6+0IKGLu z`ABGVeT`Nzx?VB03mOr$t(f*jIORi;(CD@rZDw?vVwxvtOwiqm>3W2%O}#ZmLZf?W zw3X34i|H9bTLe9*n7%+b;X{$o=%E^IV{{IFdHO}})3~6=71J6Br+p|A8ck}ngVB?U zX_}zzf}T@MGZ2n#=50O_8ofZHos9Mt(`-Q#f?icj$0MBdp-5=-8jW@{dNuCJBxskQ zw-nQr2xojK5*ocjqdkn?UQBljniTZmVtN+g_~zc`Bcaj9HQLAMV;E*Zdj%aXrqD~+ zPJJj68hurx{fxd+OwCx@*`rc|zF$n6A#82ottk>3{ij9;8U47J5`qp0`fV|FBb@M| zNNDsYjSeyTV=-MNXj)L*!0RD|(>@dljfTSN&^N+pZkXN{bXd@`F#U*dY)fzRk3u;Xf_8){`xR`bJ`@R!?y1pcM)wHQ zidfoxy)Wp2VQNR%n&z!35*nSO(N;!hhp9`@7D0~<(>Vwyd?*qcJxQZ&jGh>#TLp~^ zdUlweM>y?6kjM6N26x zrZ~b$ABu!VZ`Wuyqql`=hM--7K7_7DIO9W+(CA|t?P2uMF!c(W6!e8KEkQWGwYT|5 zX!I40_A&Z$n4S@|SI|tD{)uqPha#cTk2TuQ=tp4+zQ%o;67-ueO+nb&##>V)H2R}P z2O0e#OdAV2AZS*E_CPq{Ly^#EZbTjWh8V@KxFiKl3tAeX6vAmAiiAe1G&;g)WrQ9R zbXd@-5&8h(*tXv0BcajdG&;&?bA;a7nm^i<5p+%5#Sv)Iha#cTbu~K9=sNhlPpRpc zpj$*J_w_6*<3o|q=++ty-QXTiw~EjPSlT^5b)!~j*9g@h9N*5{d?YlwheoRy-918U z3K|i#GeX-SobsVaXmqwln;AVMLbC*o33^O~<|1ru@2x2k8a+{?t&E-!q4NZ75%jDG zU4wAKha#cT^EKMW=y?&kN6@&SS43zC;j|A$LZc~-b}+gyLLUp-F6a_$6bQ%Kz0F5L zqqk|alhJ_)Eq4=-enQX(BNQ3IcIrcs(CDKY?Pm0m2rY%BolUAs(B~tx8p0VLiiAdA z)@To-FGXl`L6d^M7onXHj_=@YJ`x)JNTYp>ei)$>1nm`c45N>5%7-GM(H}J0&*=9U zWS@p5l;J1BsAKr(Gf57B59qX$Q6fuIpVyQA~~!YLn$gho%$Xfvb7N9kQbV}hO;rQZ;?cJ|g335}ko z(N;#!jZ*9_?$Z`QFOO0j;e-!GLZb^c+Q#UDD4il`T+qc)+8yDv4@E+w0~+mM^j3_B zpzVS_5T(lyj_u-YJ`x&zM5CRIrZFOdCIo#hN^c>Y^r1*-^d*gUGx{P%M9?ll-;GlB z+t^NhC=wd|P@_GJeh{UNv9xoLP73;Ul=ee7zN@$SNNDtXjrKA6U6ket+AAo2Y=JrG(3GH2+`}1RtHWDUBs5x~(LqMbOX&4?xcLKuPAQ>6gcCj# z35_nR(IG~cDWN7o(}J#ELaQO1_Mu2ZdppZ z2|6t3PNj4h!m+)*%|}9`yJ>Wk(T-9|yw5ew2)bV>oewnWLy^$vK^h%r^uSVjLTWlD z=-g7e4&jUsMM9&;X*6_`dpte1lpYq;a-+EaX(_#ia6I8{J`x%|N267Yo?S{`2^tZ! zuavUTD=8m}ghsE@XfvZ%mQsWCX-v=?OKB~Ht(o4MBB9Y+G}_AO&80L$&=x`OE2U!* zPWVtHH2Sbc+ZcVQlokmZ7xbA@dKTfd4@E+w!y4^i^o3ITM$mRa-!7$+53rr?<83|? z8hu}*os4EmX(KG{>`@6pzbvIrgp)oL35|ZM(QZb+DW%f|?Gp5lQd)p;#)l%I(Lk9x z^z|^BRYvy;niMo#M#BilXL*~CghtCW+Q(>V8GS2gub{CqihPLe)Q2LW(WN!o&*;=L zS`kY-eVP(<)iT-)VQXJ+O_9*(S{fZ>bj>pA6m&q)P0FYT;e-!GLZe%1bcoR{%IGFR z(}GSfqalRTJ`@R!c4%~j(Ot{vJwb;B-4|VraBM$s^O4Z#ff^lUw6l!LKH@&j2zpc* zt%h*Yha#cTV>LR?=rLt9UC=Q>&nTlVgfl)A35}ku(a>V|czRYDog=8_MsfesGP(}o z`2ODJBcahNHCn~!6=n30pbe?X!IM6b}~9vMj1g9g8p7cS^va#>O+yxXjZv8^mQ{z z<+LJ}cKWnS(Bg915#fvvMM9&c8tq}Uq?`^DG%09fIh})W{6KH>kZ9WnjU82z{Mi-Y;o1hUv2g_*&!YLn$ghn6K zXfvY^lv9_WF+rcg_#te~_SO^$jXtl@Rz{yIrz-?)5%kS+8bCPVLy^$vdm3$H^xblL zO3=8VpO@3S2&a805*i)TXa}QTms8EBJW%a|{)W*98k^&7J`x(G3U%n~WYnsl3PBTs z7FAFS!bu;Bghop=+RZ3_9)2T1y98~hpsf(j_)sJ?x|BwH7@bl<`w5y9bd?G^9^v?* z-sU5r(KR&M$LQ)6beW*Ng2pT8c7#(t6bX%PuF-x*H>;pm1WgILLj`?{u+`9Iw5Vnr+))WbizN^tzM&GHR7X@t* z^s@^36ybyqMM9%rYqX8guPSJTFSz+}L4U2F9E8(86bX%5`gbKe82z(?mJzgF(85aE z6yeyB-sU5r(Wpi{8I4rZeu5?ht*@k05l;G0Bs4ljquq=)RnqCQM|BChawRPSn(?7X zXmoXr_At6yCEYJIO$xeEB|V35{3vhpk)?9B*k^p)zDgPpG$ZJu zN_q_8qz^?xqc>@EoY5OA>2*QJ1iibGK0!F+Ly^$v{TdD3;vP@$tEArqwcIG~e_BaJ zUtv4#_BJ00jXtZMGU9ffehha#cTKQ-FM=pU7IzMyeI3#w=l!f79hghnG( z>Qu6W(Qp+#Bxt*!byf5-!m(q$%|}9`O&aZFG*(4l37Qaer7Ft#8r!K4MM9&iX|$Ws zRja58OS`Z41>LZU)chYDdqtmPC z0zrEPO;phh2&a4~5*po4qy3ETTSbowniBM|DtZH9>v(TXk{}(2J^QV}#Q_6bX&?X>^3q`Bk*5pu>V*S49UR z96Q0=d?Yk_qee#=?MI)=SzkubyQ(M&H0eW;(CB>{9cT33DtcVdF+rcKqDz2gd?*qc zeMY09TixU7(^a&CoS<256!$-^qQyYtCwiNYght=iXcePxRZ$vCyT?;ON2};Xgi}5g z35|ZK(Pl=!sG^SqjS2cQwlsvTle{%WLZg3Zw3X4{tEl)Ju4#*)`PH;E!U-RWghs>F z>d@E5XmK^IBWPUE+G?7HaN36=q0yK|I~Z-Oru_tM7j(sHIsxHW(%XC_G`gxrI~i@M zrd~l4f^JYv3lUEGP$V?EiAK8_-ME_W6SPav?W*ZTgfl)A35`zIXb+=1R?~-qCI#KQ zn!Z6eezLduNN99ljrK7*tC|YF<D9EmpaX(lSWSl^obaJYXmq|thZw!In$8k5E$FoveT36K6bX&? zYjlLs8>%TS=&+!7R?|BO$4>P&9|?`#tI<(L2dn89K{J9rQB9@aVLSDqNNDtFjgB+= zR5i6?Y3C?4Cg^L`v>U=1ABu!V-_mGkz&)P6i4hUha-+EaX*HdWaQrlH^O4Z#7aFZ% z^z&+3Bxpp?@oIVm;gkN)S<7H(V`lP ze$Rc{B4|wwt$=XCha#cTMvb;H+E7Cq2pSi3g&Nu#;j|A$LZdAj?O=438rnzDc0t## zp`#Fvo#Aah5*poDqn(V#Yv@8j6M}AALyHkk`cNb^x}!$B8Qr0Vo))xA(7kHtV}vt4 z6bX&a(r6E(`_#~{f+ht$w1$d)z;-&%+k7N6dZb4C7(JqfR>soK9@Q&o5(9;B%7-GM z(bF~B&**72)G266&zFI?j15Nr+BsBV_M#mX_qlTtRO~(ZNXAPZ#aK?usq0!GZ8oJFro_qj8OPFuGAKm5y`s+XdaGmRb;wo#Smj5*pn>qn(Vl*U}DxCIsEHmgXRw^r1*- zbRUg&Gdi=D&J(mt&^fhq6T%rEiiAdw&}a{%hu6|0f+ht$sg_!H# zdTK4LR><$2^a|QrOP>Kv`A{S@dWlB+8NIlcB0uv$r3Aei>q6K%&s$R@G`f)9N4K(RPk=$N2C)>1yg z86S#-Mt{|4=yvyb`b#aXAgJX=asSggYC|~Q>uo*~8ZE3-hrTLC3+kv-(1@T_b#xlS zDIbc2M(Z`&%xGO5y(DN%(Bz=s7`K1YNg|#t=^UP$V?E zkw)7X-LQ@te&x}R3%WJ>6ydZFMM9(P8tq_o`#PE>XuF_$)X}jB$1e0X9|?`l)MzK8 zi8}i7Pp)Y~(Ajl#3DBeuMM9&8YqXou!|Lc3scDy>C)Uwp2xojK5*j^KqdknCQb!p< zlY*XKM?WJRzsTEsBs6-lM*A4OsE#7Par1ixP1Vs-2&a4~5*l5k(SAm+tD}ttO$mBi z9qo>=b+NamNNDtKjSez;7lv8T0YM+dKp~v)p-5=-9~vEE^vOE9L(sIKFJqrTIPF7` z(CCOpM;Lv*j=mFgSkRB^sQhk=|hpw z=r0-_XY}VfIz`YiL4)TNy} z8m-f46{EHFwCo?;{D`2<^)wyfln+Hhqbq5&nb8&N=|Dkag053f$02OZ_tq2%jc%yX zRz^3drz-_*5p=71x)w42eB>*-8Ey97P2 zo(2%k_)sJ?dXYwZ7`?Eb-WD_|=)!u+wgOiCGH>&d(CBp zgi}5g360*R(SAnntfvhHO$qu)J#B-qb-A~uNNDs)jSe#UL_O^(=zyRv)zd);CwwRp z8hu@(LyW#wPe%)y7WBh1{p|8eLJNRgA9CK+9oiXFH7u+S)*CA)NA|NN98ejW#p7egkbO zXiU&)4YU)&)>Yn`BB9akG}_AOwheTMpe=&VXrLs*2_K4tM)%fe8>4$Q(Dj1G1wFWd zh7eBsP$V?krO^&X4{f0L1#K7f_y+nB;n)Ii^O4Z#$r|lsG}%DmEFP$YpyxKwRD_d0 z6bX%9sL^glFKD3k1?>`aK?AiTobjPZX!Kf*_Aq)421?MRptm;AX$Z#`dYg}gM(@;U zAES3P(0oCA1x;i85Kj3}BsBVjM*A6kyn!AUG$rVZ4fHO;xC@zc}QsV zHH{83`f3CHBi>002G%e_N4YUlxX&;J&M#nWe z!st&8w2q*|f@U{T8^W=xz0F5Lqj`<$&^O9xsFC&&G$UwvBXuL3^r1*-v__-jj8-?& zg@TR=x=bVWBb@P}NN98gjfU=WkEhEwQd&^UjpF{Njr0n_@oT)zM?$0PYqW~d^%`kR z(1@UIjTFibSScThghsd3XfvbRG}3PMJo+&~cWb0Npw_kCnj)dmy)@d&=$?(VB9?YG zsTM&GYNS?#6Fw9PjUKAeHb&<((hNc4f*yy_M>y?6kQ#yf+huh7+sBUe37^LNNDtNjrKA6SR)-NXs@8djdT{mDIbc2MqkxvKclZS z(zSx71bx4e1`)Qd_tq2%js8=kgN%OMNUsVyAn3P^^cBJhABu!Vf70j>qdzuMFvtUy z7Bmo}8idn66bX%nV(QR0!f0-cHWGAL(6SgM5RTp8Z9Wnjt=8x$qg63FQP7N_OUI}W z;iL~mLZi!Tbez%UVsxvZV}h;~qel_W_)sJ?x}HWuce}^abz}67pq3lO{ZC``J;L#R zZ}XAR=r$UyVsz^mmF4n4MFj1LQ47K;ABu!V_ta=JqkF_?Ye8dz9vGv25Vmgg))Wbi z&e3QqqqAdlf}kye9vh>J5l;9}Bs6-GM%x%YF-A)SjSG5qjM50FeJBzd?bT=pqvyxy zLqXdGy)s5wA#A5Nd7F=fMz7XrC!?ttO~umA(@8?mn`5*I!bu;Bghp@IXg8y`#b|Fq zy99kGM%@T!d?*qceN3Z0j6NEps{~C7`a+BzLO8zI+k7N6`ie&T7=1ZLp9fP%2K#9LD&H2R}P2O0e#MyCooAZS(-U4wAK zha#cT+$MGC8)7urM2`!a7PPd9K0r9_Ly^#El}1Mxt!$!DJ~w|@(5X$dJi@V?z0F5L zqswV@l+orU+FsC%pldc!7s5#&iiAej)#x~*>on07f{qEgMH4-WaK?usq0y~18oI|l zo^I7dUkGZsQQZHuiAoBvo!;VYJ`x(;L!(uU?%qTjU})7 z8l0jIeS?hVOretn9T2o+3SEbA!iOTE(MpXDFW$F@=J~*iP^8HXjL%uA|XWMq8&)EtYl;C>cRFpF%4lob;hcXml%$jx#!K z3T-Xun4r5%q5Tog_)sJ?y1Pb0gYNNk#uPe6P|JtsZnWC+VdYNcs9Cc6@79Emlw!U^j2WR4J zMWc$2%S4p1*XbWA3yW@M(M~}(&BXnRb|^Y26J3nM4$8u!Q!Lsg=;Ta%sAx>lqD=h2 zIOd=%ELv*O9zjboF>;(dsBT3UWFp8o_@ICKEG)XnqP>FFWn!+PaYc8{L_On(gR-#b z9v1Bvba^I@QM6Cd12b_caPQq)VO{QFNc@fPFIL;mTru;@t^ z%@Fj&O#G;5x}q(a7&V^nse`hx=!F)|5%hvgOykwbPgGFRt1_{GvG=flq%16Yy+um} zy)F|w>wj&WujuWJiH04Ng+L@Ne$tUf6#Y9BgC_7jebhgF78V_xWwyRHLDRC3#jBIARI8%tS*T(h zbx;---PEG(f^L$921TQaZkL5a7<-TTN6NyYlP%gQXm%D(SF}UX!Yo|DIP9P-ELvjG zE9erta*Or~+K`2O zUY+{=siFsDVKL)~gR-#bAr|cy^x!NUsA!*}$7bOa#&HK_VbK#U8h9wRpPrC~YZUcT zDgXY{EZoO96!TA?g+(v0XojHYXW=hJ(-m#Y!V8R}4$8u!*I6`2&}*}hyQ!>cP|@46 z5GU$A;U6gri{5R~QbF&^!tXlLd_^D1LOSmic2E`;ecYmTf(FQ?Z$-=IR)+_oxUkb*-C;iiBVbPB)+9+r|3uh@BR`i=JL>WgMl!ZlquxPWO z-)G?wMVl1;D+_Nhjyos|i>76pt*=GULD~3G(TJjBvoU5fzNb(5r_aKon^?3>&XE?HBa;Y#gO%pQ2}HBf>cDpe!tUzC{BM zr}oqHveBlfmrD8fpJwAu#-V5Z(`RAPYb}}~=r!4ROwn{j+xegvM;(-fMenj`j-YpD zW1XTwMIX$@myEsV{3B&y(Z?)WD(IuxSg&ZlqAz44kiqxVL0MSz6^qsh`f@fhcy;pW zhZKD;8(EBF4$8u!af>zx`e8QaDO#`S*V)*Kaj?rjeHIq|-lC0y_GRNRMZ=2znT^vK zM;w%eMF&kbTVJ!Fn2e~RO^S}0jE5M<9h8MdCs?#a(D9S;s-h7^Cr-wH8Hb+tPoITF zvn<*sXy#=6rD&_7`IE897JN?~l!Zl$E!r;VtjWmX)ybzHRkU(4N*Q}E_(#gZqO}(7 z6treCmMYqz=uVTd7vr#lvasmx7VQ#rx5-$gXiU-lC!>XN%t2XLw9%qHf*v#(w=3GM z=&H%+VjO(YKYbP!J>H_df;Laar;5fEJ&Vteal}DcSoA!L_6vIMWQ^HT9#o&AS4_s1 zjN=ZJJpuOQrn#PbXtK(a>7|^jTQ+PK#y;ddFl`>PXWS?VOCA z8AlzIg+(8=XpW$dOvXw@gNi;s8AmbpUhYDZZdimtylDq$r!Q~-_w`<(`R8(Ofg$u zqoCdtY{{#WpZ&0+qo-gxQgquX*pqSGL0MQd)1obcPMU%y zMI(ylO~Gl5L$CO!&%&a!EZQb$(G;{P+Nx-13hrPWbx;--t+8mkpbMtpMMa~E?l=XX zGxoauBV}RH-7MNE=&n;RYHN8=9g41)f|-oN4$8u!2U)aB&;zHSTG5!I$4tSljAIVU z!lKO)O#gR-#b)fVj+ z^r|WNSz4X{*kh<=m!=p6?EMc zJg#WIqF?esF%CN@3yXed(K4pQ88YU|5jvse`hx=))EbJeJx|AIia0UY&fU zyj04+|1<{+8HalO(`RAPwHD0~^hLf>il!^tlY^TWM;(-fMb}w0N6`0k@Q|WGMZe&h zGWOo_kCcT)zqM$opx@-+6GihC{XGXiGY&f_3yc13(KA>78b3xXp5j#Q}L0a5k+^Hik}&W-t$kNg++I!?Gf}!u4$&MX}6;Pnu_U+gX{d$ zXJOIXEZQq*`&8_vXk5|%OvTBJBM!>Kq7PZLU(g4q;ub~w6n%CoUSu41P!<+_(V~IJ zQ~T))Q}K(UUMl6^e>xT0Wbr-yz(0K!7Jc8M8G^ny6}7xNxk;xh+B+48GLAYZ3yXeZ z(Hud)=7(I-prXG`#p8^<5B(!$VbQ-VS}N$De0LPhS9HWQjLlB-!Vb#9qGP9-t*=hd zG1E}atCQ0YDZ14(9Kbl{pe!sJv}l8%6Q|)yMe7xvF%8c!4#xe{XJOF-i#7_HKMfx% z8dh}PG^}SFaZnZ(t+Hsdpq10GF4ifugO7Hci7#jH3?9!lJ7!+Aip-X?Q}>sG_G$!+VUqkNqQM zVbQZK+9~K+)9|~Z9g1E$4VzBkd+MMpEPACyy9B*r8uEB`@;!|ydeb!2FpfDW3yZc} zv`5fer(thJyA{2U4~lW{6aVyCSoA@Q_6piL4HqjKSM-@_xQ%hdL0MSz1&j6z`usFJ zt7xC1Z%xC8jN=Z3{vxXJOH=Et(i{=RW$21(QXi(AN({UPO?^FLsSy*(;bhGu93Oaf^u2(c) z(JiOr0mfkmWns~Y7OfL>+v#{)(U79kr{hP)F$ZN~(R_j!P76RWvdkH#3epC<}|8Wzlv)&zz2@ z6^$x-$#i_k*z5I=l!ZmFuxO{CmrutZigqY^<8*8~jqj<0vasl_7VQ%Bmg$(ot5f@_ zqW_+b<&0wv%EF?Z7VQ!Af$2C|(QZYbo{sAn2fy%7pM^!Aw`i}RUDNT9qH#svoQ~HS zM;w%eMc=h(zo73-$9hHk6#Z;ECQj#j>Yywv`jtfkPo(zKFQ=o1S0~rhOQrn#Px<;X z4t?pLJ`0QfVbKgh*H6b;il!?Xn1LG@M;(-fMMuvtTVIZ#qh{b~MT3fNF$146_P+9u zl!ZmNwP>lJ+swdUismaiZ3ZUH;Ct$zEG(L5(Km28Q5;7Jg8Ph zTW6q}anwOsSoCs>whMaM3^XblRrH@Ta4uu-TmMK|So9W)b_#m)4BVw?hobk+z)Ot7 z4$8u!4_LHI(EDegPtlm7PtCyCT)w9c%EF>u7VQ!Axfv+p)ybE?ThTXWU}wg`@BGte zVbOOi+AC(LP0g;d{zB?w~9zy56FJCsX_B z?=$eVqFyTH-+ww2BlGy4_W7sJ!lI*QnyoKG(2+Bd!>f~PnyzTZOjI(CIw%W^Ze!6L zLARcX-4zWgI&~%vX6$|MA1Moq=32B=(3vxFwxaop&Yg)H7>6B{g+=FEv`)~9nRr^! zkfKXw;#0;k2W4T=dW$v)y2DHyu75>&y`p=~#GgciKlrE5!lL_Gv{BITOl*-a4=Swa z;WJUdIO3ozEPAv>n*}{;CT`b}HYs|_Ow<#NJ17f_o?+1zK~JBFcl7V*jwpIDSA}Tk zNB{I$SoAWBwh8)=nP}DNw<;Q)i8YL)4$8u!H(Rt_(0|Ru+lodNy=NxYGxmP+kCcT) z@3&~Dp#PbPi~@O39g0552gNw-pe!uDs^_e(;am+zkShUBYJ%YYH z6Q?WMt>}Me;u^-mpZ(KkVbL!v+AC=9OgyG&T+yFrVjbg%gR-#b?-uPB^tYKvE0i_u zQ*>x9vKhx6l!Zk{=9;Z9@KkC)9g&L?MZHwYzyCBBHH<^Q_@~dpqFY-uL(r{qv8STx zist0vaK=#wWns~o7R?cKMlQ}$G^psDTwKN2`_(^E78b3rXsMv{a?zn^zM_kB@f72* zgR-#b4i>Ewbo*Sqqi9IcJ#+CD< z#@_G#k+QI8uSGir{X7?AXUWs=Q1quD{nTI}KMfc#EGLAYZ3ybb+(Hued$-}=C4JvwQ9v)=u{plYm3yU^cv{cX|^RQ0Q zd__;n!=H@94$8u!r&+X4&`2J(n=NY^QuM++R5Fe^C<}{TYS9KkFUiB+iqYywv`ng5h z1^p}!&5A}9{V@+$G4{OLfxr25!{2|(!lL~a?G*IaJUpOihoXb?@hao6gR-#b@O-oN zbqN~C$G3{c6x}o*!%F#{Iw%W^ZfVgTLAS_94zEuAyszlweAF-w!asc$7M*UMSh`xLFq$4!jm4$8u!%PbmrCbgd~&Bs%Uda2Y4 zEYHV>j6;L`(`RAPeJq+G=-&D0Q#4)CL-O$_u|V;px-78ZTeqAh~H!Oy;;5k)`ZE5$f8#6Nu&7X8ekZGwKvS8A@jQmu;q zz*mZK)InKT^jC|v3;Ihw3KfkinpS{n#@NLg4kP++#cPC`+06y2l%s~LwK zl!ZmNuxOW{83njN(U_vy1-OB6%t2XLbectb1f5!d#}w^WbanyWVH_OhpFRtVmRYn{ z(76TpLeaRQ3k&cwGvtxP=Ila;||KgqI+93@N8;7-KzjW zMZHw&1r9F2bjG28fBGyedW1zY1UcAx>uOjq;C_g+((g+9~Mfg}71C4n?yH z@f72*gR-#bREu^Anp2366^$ucT!=pz#~hS}MdwIIH3#5;^bWBk)+VbN18njz@Pg;=j>x}xV5Vv7pCrw+=(q8D2e~<_&dQBmAVC;?ckCcT)qZTa{^oBwlrf9yRcNXF-#$g9#VbOamS|?}+Uw%bH ziauJ1hZ)Bll!Zl~v}l8%PZZ)MMe7xPxe)I$4yOC3&%&awTeMNo*9!5SqG3fpEX3c8 zBM!>KqW`sMv!I_8Vw3supqdozD?~QqxP!8==+72y5%i}*6e}806h)|H92)1JJ`0Nu zEizkQo1jCAu%n`_ijFVB-i)IT%EF?XTeMx!&5CfOqESUNi*PbyZ@hn`EG(L1(N009 z6roMg4n=1bVGZN3gR-#b9E)}dT3Un`6pblbQ-qHg#~hS}MHgGNN69ertMHbBv^ui*%sA#&PR~O+u#!&}l zVbL2bnj`4-MfgS0prUsaVRR+m(@p&&Wns|{iNOfE>*N%(GQAn2jk#o{^_%@=qDC!6!c?$ zq7)4)`dtw|WgKx(78d=(kz_AIO?D*EIP%a?Sf98g_{(ODq1uP4>R^M z{3B&y(Nc?c3R*G?Z!6lN=z>}Jj&ayQSy*(DMY{y8n}wm(@}Odh?m7!wFpfDW3ybby z(H=pU&qA4^-HIMK3(FY?xA0G&g+&jwXs@7$%))9#Yywvy2he8g5Es~ixdqi`tU65&Dh(@KT;MJjajr* z(8p)t1V!@|T{{c^U>tT(78ZTgqIH6H&q9ZyAw}2C!t;z{4$8u!A6v9R(2r)}Jw@vk z{dN|w}qKYbP!{n4V0g8ncI>lF2SjDwT>(`RAPwAp6sYZP?QY<#Y0SkbYwv7T|nL0MRI6N@$r zI$<`()ydOuQZzUlnT+EO%EF@A7HttUYc}R88d0=hHkL6CW%{Sj!lJV++9qi6Y^+qY zRne;1IF51DL0MRIp+(yTt(}dF6^$yo^K9J2*vs;dl!ZkbEZQmP?z8c*q8*B^oQ+o) zhaHrKMGv-Um!OTa(W_`o(bco@C*zodvask07VQ!A_}SQUkv#owMbDm%BF4dN|MXc{ z^n8o<3VPmb?5Jp5(JN=;P{t7lWns~4E!r>WHM4Q9qJ4_C^Fc9=J17f_-eu9ii>dwe z&e?cQQ7@Hxfd~0PV;q|7pFRtVK4#GjK_8usp^Ifr(-nPTHnw9Nbx;--eZ`_Vg1$T( z^Ars#`rd5p%GjIYA1Moq#w}VZ=!dg$w4(WnemxuKGY&f_3yXel(K|kGX-oK?=J==2!lDx_+9>Gw5^Tq-lmFlgD>|_R zWsD;Z%EF>q7Ht+Zvjoc&ZBjJ91bZ@$J17f_7F)DM&{-weWEUA}MA6C;97;4a)jxd} z7Ok~to1ir%xM!K5t%~kcf|H0w9h8MdceiM}pu3geQk{NO(fv#CFUH<9|43O_w9%rS zf*w?Y=M?QwbX5sHV;pu+78X6;qFsVEm!MzKn4)KuVCYi5rw+=(qUTw(N6>Riur04n zzEa(aUQvQV#=+_S>9ertH5Tm^^y(5+DH>Pw))H*bIO3ozEPAI!`vtwD1p6!6r)Xyh zRxyq{C<}`|YSF;j)PDL1pT44AD)j=-m*7sup&9<^v#{vP7R?a!r4qcPXu6{Ba!X(w zbx;--{m`O0f__kfE%oIOD*9CkY8iVo{Uc>z(LRfo3i@3Mj!`sU(LYLXE#t6*val#h z&DK{Zs8@>!9CuI_7Ok;pi=YcialWDvMRzPk zJL6EEfBGyex|>DY1l_e1FDlxq=!#N&$vEnuEG&AEMcV~EuoPoTeMTq7QNb{J%V0U zikB4aR`ixqe9bsm;GaGVi{4?;UO{g!#mIVD)3~A!lwvaDh=a1Q=pz>G7xdv$EL5~l z(XLXgWE^);78ZTUqJfuE`{~+JoUN#rO1;24rT7=)P@#YNEG+tgMKc6lSBfVUO;_~G zQoPSN>Yywv`kh5{1pSupsiHwe*O#K7u~+0DDGQ5wbIjIPD(K&(7`3B3sC-37&B4}; z!w$;AqT?)DCusT{e4txjNYQQPU^da1gR-#bB#Sl(y4@Ts*OAsMnmY&0jDxfM(`RAP zB8xT(S~v%nD;idG{v6!RIO3ozEV{s=&4O0X!K;ckDOx`VeT?G{%EF?%TC_#bUFKl( zo#a796y0wQ<}wZy`=`&sq6b>EP0$18U|Bi0 zA0zV>-Fhy9jKdDf!lK(*v`*0ATofxBQgr5A)H04aC<}`gTC_pXg1K0sXuYBpb8!OW z;9URoSy;5%qK$%9&Bcw1h85jmE}mr^aZnZ(-NmBKg6=#Q?lUO``&i%edf{6mDeqHoW| zT*eUxWnt0xE!r>Wdvmc|(LP0c=VBG(xP!8==r|YKKQN9uC<}{@Ei+qRj-X@8u*vSSra?uwDnlV-Z@zz| zEG!zdXsMtR%dnH8`HIdc!x4m09UKu(V#~hS}MXM~@AZTS7 z-c+<+(e2Cd3*%tOKYbP!-Pxjzg6>p?ts7)b!;0=(h6=_J2W4T=l@@IlbpJB!uV|B^ zO=UQfaoj;!Sah{TTLfKIhT9d5D0*5M)-n!N`lrvrqGwyQP0+K-@TsD$ie6fV-x)_8 zl!ZmFv}n7aSCnD%<+7$xMQg0n8DY~p2`!bF> zC<}}3WYGpecVwz)y`uY+;~K`nTL1J}Sag4jHVV3;9FHj)R`kentYaK;P!<+lWzl9q zk159=iZ&@4DaYn}@jZ1=78X6rqAh}+$u;HG$u*5AdPzC|b_v?W54oZ-Mc*vP#f)PP%EF@WTC_*dcgpdgqTPyqR*nxD2N(IL z&%&Z#S+rNsFZoI-8dvn!a%{Q}-%|%=VbMP<+Arw(a+LAv)PAaHU>^2n9CuI_79Bm$ zY<+=OQ~T*Criyy0)C)|ThwB)J7W=2q!lHQ=%@8zq9@Z$Du4vgjJjyugpe!sJvS^N= z^XK6eMT3eioriUdy(RvUvaslm7A+ODejdJ8G+)uZ=K=fjJ#|nP7F}V{IzjiFhl#v8 zwVx__#5~Ml9CJ_>7CpwI4T2s$4|^(Fujr}sa6IGSQvdW>SoBPbHVS&iJY214Skcyb zcz|)lL0MSza*H+#df7azRkTUbfAT>wjyos|i{4_<7C~?3gHkl2=)HVUVZNu!{L^P) z(FZKrCg}ZqP`o<%pjs7uiVuo$)InKTw9BIHf<8A7yC@n}^o@Bql(DzHf21rd`i@0A z1?^#~XosSo&cnrw!w$;AqF-9HOVBUo;bui+ivGf<&p76wEG)X-qCJBCJ`XP|+O6oY z3Vg&kxPyQCEG#;z!t7GLf{v_!x1T(yxS|;q*otw)L0MRI8;kY}x^)HSD%z*$)C%m% zIPRb_fMaNMdw>IL(qx}T&rlhqDv}p596qV zvao2qMRNq*p#t5C1{K|_0$(xqcJz;wg+=$XXsMv#3XE7G4=P{L!z+-@IP9P-EPAv> z>jXWj0_BQ^6g{N^J1~wpC<}|8VbKObPp`n?iqKZT7l;nM;w%eMQ^rfv!MT~z=w)9DSA%@eqA1QS`|Q zOk^C|**|?27Jbg5ZGt{qff7Yq6@9$|OBhETl!ZlmEZQ#U+ZEVf(Ws*Tt-x`Ny0u4vAD?8!Ldpe!sp)1v)? z&X|wW6zx-V&V1a&IPRbDqy};u6SjRZDn}7N&EV_e5GX&j! zK7Ld*UC}+~W5@w~PaTwnMZ*@&5p>`A*p^o(*EFc;Ve?VM*xTJdQWh3H%A%!$HqA$! zqWOxRJRi#$haHrKMNhYAouH@9$5D!g6uoFZ&SD&MP!<;bheaC%y>vdVQM6vs8|LFK z#=!>v^jTQ+Ulwf?^rrcELea3I9rN)jj5C2G6SoAlGb_&`*AOBReL(w52{F`yuL0MRIM96G?U4jk| z;dMo0if$IdcZ_2W%EF>sS+qycEkhW0kUXevMW=+2$2hpBfBGyeI>Vy9f=&-%iK1~u zOGDV7al}DcSahC6`volz;dDj&6kQa;b&TT<%EF@CTQu-SYCl~T!jp=6sniSX5yB^o zLwotB&%&bnS~Nq@eL@)7C~KOo=%HLw#!&}lVbLaw<_LOZ2+I`>DtZ#XnX$LGf21rd zdYVN`1&xGor=t0aUKqlgjKdDf!lIX2v`)}VLO8NqrXN!D`Vc-R8goz<7QM-$4T9bn z!g?KPy`pQl)CcoD-N!$D78bqFqK$(7JA@#wPVQ1+MPnfpFpfAV3yVHu(PlxP4q*pH zn-qODgo7E!9h8Md-?C_npl^n7uA&h|KMvt$#-V-v(`RAP&n?;}=w~53t7xmDKl0^g z9Cc6@7VWoayP&^@(64Az(ZQ7%ehA;wuz#d1EIPc>Y<-=A1}YKc)yW6dq3EWSC}JFT zP!<;5(xP30Zc&LPipCV3T#0=d#~hS}MW9ertkrvGm^oUCArf9mNCsyKM#!&}lVbO?1a|AuL5~nB{ zRP=&MT+GITC`5ke^%lxMMH|-U5T$4 z#~hS}MgMKl20`zw#Nfl^LDehzcqO)A99-$2J`0OJZP7+SpQ^+RMZ=1ASE7t@#6ekD z^i7L43;ISScG3-{Nzsq^QV@+hC<}{zX3-WwKdr=JI?{-uKk%hs96G>1eHIq|)uL^J z{!)p{6m3;BtqQj=jyfm{iw3I9*4HlRuqr&JXjIWns_+_P??C@ZSy*%ni*^c{QH5Sb zI~2{X!tad34$8u!(=6I0=+r8tA1<#{Owrj@n8Y~dpe!s}X3-u&=T@Oy(QZW-R$(W` z!GrwMXJOH$7VQ;uNfnM%G_Ghv6nY)G^pscRj6m|9qb<|3yc2KqNRdHtFThhd`0i7!YamL2W4T=do5Zg=si_9 zSJ9B7k5%Dn#xVzFVbP~7+92qYRam2Fy`ryFA;vg(h=2MlEc%8;8wGv63U4YJRy1CP z&lpD>l!Zk@T|Ef|dGQFKr>3K@qE z^-rILMTb?Jt*=ecq1C8Uv{lgw)!2h^)InKTG{d6pf^J@o!xfDxnpKUH7<-5LN6NyY zQ!UylXihb*P_#qQ;%eNcEZQUJ;%fY= zXt$!fS7S^Q-_yhW(`RAPy)4=*=$_S>!K;%`KdxwFHEJ109F&Dc54UK)podlCU`6{B zJ-!+(jN=ZJAF78bqOq8Wl-RE=Im(-pm@ z8iS7Fd+MMpEE=_Fj-WSGBb!$z*EFc;oz+;t*gMicQWh4y$D*Zzc2wgaMe`MXv>InK z4m&6di#}=5IzgY{nkpJn^yO--WgK%*78ZToq78z+R*kO}tylEJY6Onvd)nlmJ`0Qf z*P@Mreo~E0UY%Uiu%dm{n9Dfgpe!u*4HBF zkOgQ}G@|JE1?XTLI?6wN78c#yqHTh1wg7J`+Nx;g0{p@_>Yywvnq$#+L8mOhsAFVJ zql(U2fNdFjNBc+0!lH95+9_!10?bylL(!TASj;%=pe!u9*rHv6E?R(n6pbmm+X5WH zIOd=%EV`#fdj#EM0nSvkThW6S;0ngUWBk)+VbQ}Z+AHXx3vh>`aYdUK;1R|V2W4T= zlP%gW=t&Fkx}trGp1S~_F^)SZ3yWT4(LhgXKfQ1P{#4XUrC#9b1xR1T_jHwi`YbGZ zgGDn0y?z05cy;n)ny%;_3sBBD>Yywv+F{WgLDww6u8IZ~ePjU+VeGB;kCcT)pRj1D zps@w$)LklH(U%tBbfRGgWnt0RELtb%s|#?0jx?m`2fP>Kn1iyg=qDC!5cJ~(cuUcG zMZa5sKE}ag{nKY*(Vr~ZDCmz1FnYB-sIa154JI>=I4BE?4yiF)U$dZtYjCaZQca4E zt3d_PxP!8==w=pe5p>fU?4%=&C_1SID;S54^G~0JMWX(LF5M zCFt@R%;VL`k7-QN18dO0IOd=%EPAL#djvhC2FEDct>|$zIFE7gc>nZSSo9=|_6mAp z4enGlu4qdQUSJ$?P!<-w(4zfE1F)5a~MY) zl!Zk%wP>@To7CbaMVl1et`-k7jyos|i%zy^i=f%Hcw5nkqJ_2ij&bN@|MXc{w8Wxq zg3hkRXkF7*MXPHug>lqDSy;5rqV0k%tVNZgQAKyD#d5~pDgKeNu;_A&b_&|S2c>9- zq6gICG{#{EWns}nEZQaL!L_(t(U_vg*5YQyF$ZN~(GxA&Bj^dWcwEtLMbD|ln~Z~} z`lrvrq8C`SSJ3lo@wK9HMcZoeH{*zdvaslN7VQ`G+FERWf_$R-6uqq$(;3Gdl!Zm_ zwrJqp)P8zbE#@ogrBW~OP%U;~9E$j-&%&aQTQoz^$7*qaqUnmhSc~HrM;(-fMY}DU zBj_u&xKz=gqVLz@Hpbp*{*kh<=tmYU6*OLpXB5p>^qX3&V;pu+78d=%qIH6PUyFW4 zLyG=Yi?Jv2J#|nP7EN1dw!Q{I2Q5T4uTE~#^@@&Nh!V!Z)BV$DVbM)2+9>FRg{V_B ztY~l{c4ZuKP!<-=wrI1USqpKvqD_hxEW~My;||KgqO&d9B53hKT%%}2(W-^GhjHi( z|MXc{bfHDt1g%|&=M-&KbmxV5hjG+FSy;5eqV0n2z7St48dY@VLab-(o#`Jb3yU6X z(M~}d7h?QL^7K0tUCoz*ao9mwSo8#ob_sg?LR2dnQ}pbG*qd?8L0MSze2ex7dfq}D zt7x~PS1!c)jDu(Sr_aKo*IKk!&}$arPDSI2wlBo^(nL0MSzF^dM?OYNtRF2wJOda2Y4ys!`>Pv(1iwtxC8Ec%K?GX#BkAtv$a|g1{M8!A@*bJo#P)V3yXel(NaPC7UFnC^A-J**D?+} zXreIxj}!*gnXRu*P}Jd8MMH{?sl%g;V-Cu~q7y9IAn5oy^e9@d=)^jF$2i#HpFRtV zW?8gR(9AlFJVhQ)8r_aKoyIZtP(B0~Aj-suK?q7#18AlzIg+&`J+Aiopb+|*(sG_Ut z@GxWVJpV{pSoC;{b_&{DhgTHsQ1q-ie8@QLpe!tUo<+L^J+}@&DjHMtiaMm7%Ju%t2XLG}EFDf=*h5Hbv_d&0Bi?D`q*g;uX^lFQC33}BcyrgJM z(OVYbbH*_TWns}fEZQUJ?Tawvbb0#Siax-n&p3FAfBGye`iMn)1$}rCY88zu+O-G= zGmbbY3yZ#F(SAYKF2XsA_9^<#BK(ta+(B7b^aG0q)}{8-b&K%0qFyTX0$(n|JB&k@ z`lrvrqTg9GL(p#*!8=3NG+oj4i;&4U>Yywv>Mb@~Uyh)EFG7i;K}AO`#zMy4Kl~$Q zVbO6GEfq9aJUW^A64J&%|V#J6>9F&DckF#jApvNx8`@A~& zJCr6x&sdC~7{?uyg+*H|+9K#Vi!uI8K_iM@wiq)Qhc5R|pM^!QvS^#2ZHuu)(N;xo zUW@}7M;(-fMQ^ugyP&r%#_5Vi6}^8ku4e3A;U6gri#}}8PC*}9j7~*66n$9ertE*8xYbmt|gJxA6wUD5Cod`mRype!tUfJJiz zUAY9UiUt)ueF;W!0^U{rk+QJpITkGy^z0?b)#>Le`i~`8$~f$xEG*h)(K~`cPm=2=(9_(mT~ZE|MXc{^hJv{3i`ql{HSPH(YKdi zGcI++L0MSzeTy~=`rZ=E(+Ab0Xzvn)8OI%zg+;%yXp5jf6t^=DUE`lV z3yY3jYF_>}LB}k`9zimvao1@ zMLPw}Uy8-NI=M@AC^~N`Rxu7cC<}{LS+q;g%B8qL(U_v!FU7NrV-Cu~qB~o(N6?*? z;yXpV72S6!HaVB?>2?0;v#{t&i}nh-|58-)>g4p}iZ(69A&esq%EF?nE!r>Ws-=i1 z+NbDgOK~aVxP!8==-Czxe3;r#&svIG6!lW67r1mO?q?jj-ama77QND<8G>H16kUp@ zD|*vXyu~=`pe!ufZqXb;Z(WMd6%8tS-%|X<*t@|$QWh3{(4wV+b}mKWJb6(0iaxUx z8H~dY%EF>AShP;i=a*upq9H}!T8awBF$ZN~(f2IcAn3bGv4f)ZihjNndod11{nKY* z(XTDqDCk#9afG5_Mf;cHB*qa3Wns}jE!r&TA4_q*qD_hpUxq6f#~qY~MaL{NTVIQy zqnF`MMI(xCxeSjn4*kU{?`ZB~BM;(-fMe{A%E@<8|{H|zJ z(ehy7y^!zeE&l1Vu;?EaZ4`7p7mrsb*EFnXV0-MvIO3ozEIN97v-LF#I%<2Isc4g; zTWpVZ#&HK_VbN_Z+9K#S+heVw5k;qMkFObrZuL)}g+=o$+9qi3_V`=TRz=IU$C!)w zo;oNCi-s)PF6jL2k;SW%YZ?`FzSd492W%}ug)-OhgasC$m>9ertt`^M^beF|grw=Nq=oa&^AJJ9^Wns~6?O)?q zD(E)zaDt9BU(wfcaWUgQ2W4T=w{y)-Qzz(KxwuWykfI&Ac${(lmj3Cpu;_m*+92qC zxp+s>dO^Kq{Ok_)CYE|$0Ev(2cl@3fel5Ht%^QP`)V;hR$&c^#-+SI5VCrRQ9{(lv zVt$eDNKbx)hr#?eTzFi`E|$7FDjomrrR#XSpEqc=$A7=+79L|6zY)6(TY$tBi7T-q z$1-?GkhdIO%WTlG^?^WO$j~Ow<4@;%GYM~%T!B7y`EvqCf6S_*6Y`Lyn3Omx@CL0) zoXkj^6ncY>@`m!Kti&B6iF@uOXO||<8szMz#MyFh_(A-dc5KI~f#FSh)GS9McE^1@ zuHQO2kZv8w?zq$pWOrPl+l9I3PJ#971tc;^u-@DbbKHp%-1 zsV075$O@DV+A#4Is7ah9C%ytZBu)k<&hJYsEpL9b$K&ORqR1Q6> zVV5VCJzY*S22L~Nbn3uqPzD;+B}yD6mnd=c4au})c{Jik%;hDaZIgrV7#MnD@JHfa zGx#HuLre}nb&`B)M<&O(fCzR<-geNjp}>e{?8d0iahtI@-)eaqnys5UNiIt2gbQ)B zH?%oAmu@7Oy={Sa2bYgP!={ow;2i(=iBwo3Z=V0}~%gaAdvN7hWH1AV(X+g}D!>zEN9BzghIUI*mx8f!cHrSq-aKtv4B_FXiNmem%qti<6KIG=|_iNnpY2fu-TRe+ba3DSAEW8!c; zhVmQ2iNmpY`R762k%`06IFE;?Bo0Sl7am^7LvQflLCySp4#D3%8EXE|8ypyX>0p23 z`^Nv@PQA|(WA`?jBfH&$T*<`430|FeI4ge~csP02@!@1(>wAWJZS2xE#m-Cy4#(pV zIUI}g6I0Ear_V4m=!+PG% zlf-&%SVv8UKn@4K;eS8%&Pf>F3Z3a%jxaIPqU#eg{XRL9|_KMgGU)SEe! zaahJLr?cZw4wl2su;cH8ymJ%jCYZp(n-YiPu^SKXPaKX#1`nS}9F9hm!+s-iI085G z@N*t+81}V1`JadFG(%t`zOw(zY3hM&^c~(Fi5q*r>$K10d=k_ChF`~Erc@b`KgS`)QvOOG5VzRUENlfLS{twP{lehjwZ26d5U)VpeN(HfjRjT8c5Ie5Y zogCA~tMotaFdy-|2YX}6tl)3K6=1AE123}*c{u!L)$<0Qx7bAB0k1xDcyIUJ7_2c(|+Sd{bdEMCl4UcZqeb6?@A7LHNTEQXL7ia7dhOm z5apM<6GO3Em3OuQzX@cld-_>JfYT*O0ucFcrhJlS}{lB8xSr`(tS_rrnjPi+rB=rZJS%!#LV zDZh?EKB0yox`c4jGGL9wid2K5I<|plC8@KtV>?eB zItDwZPKS&^2`5)Fa9QM3p6I}aFd@DAbal55wY3$!yH=WS98v@^OACj$$Vmb~il z)dN2_?~KIdiSdqVz|jST1BXK!@W(yLA9#lDIxyr{HyW}IabO&yMsI}!i3~c2tU*fDi^{rSjCWs?eAD%S# zAG*!JLLSQR+wkmlA^$%=7fhE0!7yrLp(t%Y< zAG9xC;lS&&Q!j7g&E+qo?Tdxni&9IpFX|H~$j@F)MYZ zXdJR~U=dcZ<{!GTk~ytN9H-{Af8sbbr*W?c2#re1g zdw~ksalhms6FY9%8;Kn^I5|1v@SwzeJ@5HHIL=vba~_-CgT%JFYvTAg&;NbkCfiE+ z=z%{R9FD}F&>Wrk)`9IeakldCf!%jFqC7b~QSnnf9JleTIdR56CoAL)hnDa^h7HH5 zV+MN><^$63wEE1%pT6=5u=;h}VDHXEbuX_So|cobp<1|VnAfwR3Y>h7UiI>cL%q>G zdR5=YsVXo53mGSdn086O$I~74v?p=8XX5~JevBc?aJbjU;+;w>NJFk3W;LIC7df?HmIw660gj+%JsaL_QCwkhBvs9|G^hy*hRy<75skm@qBn%|Iw-E#pX zO;s&dZm7OzJmeg$TBRB~9-nXwiQh5}9fz-Zm|%yd<1b0a4m=W$ov&YV!G|S(&J85i zbknp+xRs;vrY0vFOMD-HCH~>E3-bpPBTeXhA2&(8kF2)hwRIbYlP+)Z@JSm_Vnhxa z_d8}_OoNVX8aicQEGH#ikAb_7PAkRFyhAK?cU`+7r8wp0Vcr`NopGP6)9})bZ^848 z7H4SXh7}2ISdsY~R-|HJ6oV2w!N4dcr0s~|asGEh)BJ0&BmU&*-a3t=Sj}%Ao|YkN zFnmYf8tl07sQ8EccH+AwC!VF z58C)n!w>S!ziGq#kK8c-BR0(c@Z|gx|9DQl0}-s^ox;=o^N(OV=4WphMXAm|;+ubD z<57(`d!zZEHE_$-ddtyiSKvvq!5PV0ZkYHL7%>8&+UP=9+UPAjwD+@(?9WNu;*37yt5OxOniigr}gN>pV{~p!=Ld@ z{N)W3e`&+S*KU~jivy$hNk_3++6P$6JH=9?i1CJrUl{TMj${5|Vid_weL$c12fm4a zu<@uy{CA^?e==~(gA)G`Pfh$MZ2d9+2Nb#fiT?y}ODtuVns~QP{HKj?G5jar#Q)qd z@jo_9eEo)r|2{B^Z*&w}jT{Y}!CUpEh7n6lo4+uMMHY)|65~itJzb_gn%zb_ULx3N zvmP@6cJ^b(W8lUI@;7{`J!WJku#R>|o^Sr6SloTnFz?sIjgwElOBP@>yN&LX2sYa7 z#?FAQ!Px20MHo8`x(Z{bCP(v=j%JIIj!@ni#Pu<%)2*n>!@yz#1lEW?D6rvbauPA^Q}c*8QV*!r4b-l`2Z?$l*qx6yq@GuU_;&NIt! zu33f_vkd1XM>A-+jArYRR|7HLFp?Tgj7{PfMzPqJ#XE`7BtI1Sx(w_#UIqpm4R1_z z<7K!ZdE*oH#+!`n;A}tTpD7gimw`pomBaoY_PzwZs^a?p&bu$~Prnl|DAeyRkB*Fni4K&l@jL&6_p*#Ml&21GdIB|mf7@TpXM zE?0aU-0EtszO*uumYusY1Bj2$jeEbO>V+9CmKne~wUr{mWk#<^U??jhfuYPr z0z+9IVYA&2^8#T;pW>}h4k}E2SEy+tPT;3XfcPm8iC00*YGlBGZG41M;9O=P!XYoY zUBnqLz9SW1!WAE2nUVEs%4v%7=ep30h$BURV@9?}Qfm5{4obZRvUB*a-Cp1?8wSt^)Lg91^%`rfg z7dwy{$FT=6-#B)EX4_qqeIs*>{+J>4dlUZkF2cilN{63H&Y&*3lQI9Cimi&6*yxlYc7OUroCxF5VBdE8$!3 z2dM02aq$QRWj#Wmtjj92S(g(mL#I(0zRy%6!1Ed`UMzy(H^fZ7t|?H`~{457XQ z72sK!fcMQ$BgjUZ8 zK?!hsVbWP`7()>brzpZ9ii-O^wdM>I_eVJX3BP6B5~+$3J917Dj~pHMjxvHz5!UH8EP!_o`9_ zYf`(`#FA@LwKcIdsi8Honw08`NPvW^W86f-jj=d@ggcRO4TP(=IDpOsv$6=b{y{LH zZIpCpt6t1dB|xnGhwnX4{Y9iv!~x)Z@+~bT6tQ0i4ir!Xr6@+k9Z3E|idYP1GT~Q` z*UTi`&d_dkZ~Oo zLj}3ri-L;Y^}QP?@nTL~dsry3D;!8Xh!4UM7hdgoyQ6)!&=Xe0Wstl9BvCDn5K-%`Ox`T5w=xNwBjV}z6fd$8|J782 z7I+l)8(&*e3g{fvOK_%BsX5*jP@~L0l$y!LnnEYr&IxN}VpHfm(r|Dh9%_6Yv}iu_eGcDoqitVM2s! z)(~M0?NZDWLWY)dyQ3B&rng~r+>Dr%!WqU&j|h!g6GEfb;h|CMFtGuzb8V^GZ+z5Z ziOOPiYy(Nuk4tv4+Dzi|1zsu-?`&~XGtJmp!Q^`5_fafzU zW;_GR;URWvnwCjtqZFqDkkqm73E$4qVzM$vmMSJIb2RS6WMz(GD`aJE3C|w}e&bwE z!Fgy>HLyhwl%|MT&j?e>koCIXGKEj|f$43Clx(E{(WnBcItV6JzQPv?q1&-Pw z=`Pzvy;F&{+a#$Hv8QG^GKHk$u8Vs=qomY>3BPlxk%rHd;}9UJ<76cK6OE*zRL9*w zQpej!_!G^17AVK7fcS+_*1srB5iMhk#X<#+B%%~6-$_ntEVMyT=%9_b@_SZpyPd@KsPuGK)0g$M>tPma4>Q`>f(f9%LcIyrxBfu7zn%6MsQaTU zT$_k}Q)>fPxc!Nw)?SawlAr|kdWAdA#?BACzViaF@2A%5t60Sj+dMAj#LXT|Wz?(k zZ&xu)Et{50pAfoI`goHjgLnozI3sS}E^O8D_Qh_pVwumqEypT>NP;6Wdi)0YQI*IA7LOG+5 zP*KEpncfw3vs~g8>V0)N+)yls8+KCHgS@t8VE~=bp`R+)DImL^>$hZ=?23+IqUFdH zUCHzEr-th#pE-fNc1{sIxkdcgFf1AK&oxZ~b% zLQxumG13<%)hmElJd)6QX0DuD#$`r~{!(_1^S_6bZMy8CK+;b|1;=F<<`kvj{_Mp) zvYs0_qq<&kj%<%*n@CHfUWYXk9vJU5Z;rMfg8wR`0KvswLqG9S;WIF)4pxK83d;{QE0Vfyjpt2_v zdc+zWpDo@F;>i8*9j0_5Qh6n0((m6X z@PQSY)p&rqAQtsZqQIsMP(Mceq4-}lAy;%jAcCY81%tSARwC%dgtnMI*I5J7;$ZPy zO2(EsS62svW;6vbek?b*^Wy( zKPbs-B_;7z*{-=1<&ucLi+_`<`sdO$4cg$YPorxB3p+r)orvP0D@kOpc%UnAOUffL z!eD~C67!0p-Ug&p_|L-?iz|2Zy{!<(Fx+I*QlRX4fH;z3`7(sE=M)5G&-S7MYZwU? z-%1@f4=g1UQ4io$1Dps4f^OSj)IizNEBdZYLPUe*wFshdIH>FVg|y3xMlp#-F^L9r z%c&9u!r0b%oXo6OeKhLou8g$*?44I`)lEqFedO>P+m{r|Y2g`U3zO#q;WsufDNN`$Mb;u>I5)P$KUh5s zsQs7H*nrN19XbUvbRMie3DJ45(D@e>13C}xLg&F<=scY1j6u$s&N>!>5`ZB(ivj`@ z*l2kJB@ey2D}hrS0;eeIS3}?wbty_TjGQ6_ejo%+=|bR?E(A_v0)J%)JeCQ(evvqg?@x3h z85VY}DGYfmg0db9Cd5``1Z8#htDeVC;ynK8px(Pi8rvqsV<@jt^AOKhN9X{3=<3K< zJ&*rGVrckSdd!=T1^%e_rtOKdP&HZ47w~UVwQ1tK-G#a>aD|-j(R}e{LLTrp!qi_5ApjG6?2gsX9vw)wavO7v5>1A9%}ykYAyfIKX0Wk`Q-x4)@#))x-MvPOyxr{@ELtgrLmvP5Q z#rvWhXDrPn=i$^es%W@HxM79442avO$Gv#Ya--dH1Gwr6+*%|Y^#Ub+7p44wBKi~( zv29OjAx;5z2hJ_tVhW-NhggbmdAT^m%S9nxo*wWrdzv)qV6JUVAi%_{yrrTaj&^(u z0_*P*HZ)Kl;HPk$!XZB4zh=0Ai%w26HuvJwpV0!5hH6}V>I=TMYbx4^1pMgYlf&F}1 zrHV^fp7ZXbTyj7}jR&dqcX#QeG9Z3(LfktANUgcIm|jW&=TJrwuC#3voW0L%9h|+- z3<=KOXK+NG=CE|!N&2c!a`%Y3o;piY(*_LvR2dLQ0dYT3L)wA)wAEbTT*e{7AunC) zoW0NNB^7V56=#!6BkJEMyZIhrLv@_%Ma4k8Jvr`G^s;QY+Oh$-zP+Q~VT2>1QiyP5 zigHJQ{W0g}^G5Ynhk+Y%Ox(NEluWrDy`TuE9TefRd3lJ<%R+2ED`0c>OlfTmpE$bd zD=KxLA$<0_BW|`>rzv3HhD`#4MoKry5c~^ zfv{bEB{E>C!*)4vZpDajE56f})V0!gPg2F3sp8q>;}JCmq_#dRJo2n;1Mxt8+&dmf zt>P`V$ACKt%)XLvJRBjS4!~0saSb2r@@%_+n>;n{l^_EbltP5lE{bsb`+q```%Fl3 zpAJdxQ_}jsa&3=&Wy!_i=>tGv>l0li7YK)ZSY^ux;M|rV!fnaNA<6xBNOC_4NiMEN zk>s9)LuW>EizDg;#8v;ftKmzF44hjrBHW5geP?hg@wvq-QO@Q|ZndvgQ;$6ixHpAxogg)Z2&Y{X;r92|zMTeS zhWK_KklD(&6M^htY5i)h?TxQ2xpfhBB`9opwyWd<;gFy3TP+`eb6bK4w;vw>mjJqV5GXslRrWTp%3IC;VHCOO*o76(B@7C3luoe5tLt zcXEQSI#6-Dt~iifAZ!m;@Clt3+rz-Q6(ho}c(NY)NcK(*$zEe1dztw{|9YZd7B!N~eKi6Vrk?NGV?cO7 z>`&B)Th(TJ3^nnm_8pD)Tm<8 zJ6ssBYyi%wCxr-?4ZjMp;g=ycToq!&FNB)sEH#D;t0~9f*gB8ezi* z%Ld?FHXyVS}co4Rq2^l>zY?$gCr3gbmepwJcvC7qx&lSBG!!R4@zr9KJ@ju~*#N{rhs3>e0yZqLYyi%wCxr-?4F%D_AV;Ht zLH488AZH>`9**9$)FhL+s9K8(TQoIo!~^_P84zaz@gPw{Ghb{GSZM&xWdkA{^3r{x z&Nx^l6(8RVMKc>>$!(*m6J^)`y(=4l`0c52?{lhHl%m110XV0g6e3(U>=a_djv+P- z53ymGQ1hOpCYjtPs)qK1ifU@whzIzoG9Wg9l0AUbY-qM@0M2CtA{_G42e@q5Un-u_ z8%1k292r%|q3q@tyRrd@f8ha%c~r5m;Y7;@;GB9=h;Z3(T!;ZHc+vDU({ed}*Y?523-5mMiGssb?*Uk@)rnG)20NvPtJ4sk zN}JXQ(>ndh#{Smsy56CtVte~j)&3~9;|s-3RXbo`N{XH86nh*Oiw$2Qnpz`7Gntjx zI5-aFb?WjOsB-*N(KK}hax`wod-uiDIHOvKr0TGeX+g(bi$s8}6cJo-64yx2vU#O5 zk%d1^U{0!1GjLU1oeM<$%OWuKR40Ba8G4CeR}u+a%U*1_h))H3 zvfbj?@3Gn9*bz*|5bAtxY{suv_al3ouCIEj&>hfDm`6c)$WVn35PNDderqws$tvyvya41(Yp7vFkRYf?9Fc_6|=t`3&>V4SP@HT8@0?wPt zIYBI--@hdWaFZ&IjQG*h59$)6dIw1LF=BA((VR-f+YiA$N(2H+iT{LzI}b+U1WRy} zIe$xu?e+;3L=o?xTviwXv!m_`JD<5junaG!ca`t;*NkScnsvABK?xbjAg~&>i$frrirmRzZm!Lq!n}z^o5O1~Kc+A+wGZQ23dySe|0ZY(PDw=~AS=3RPcU>}d+P1C?W-WfEenNhYe<@acvF1wqFya(uSLZPK+ayZ1Q z=A$)jmC_nJ5a6V0FcKWik1yDffN-{R&Sji!58p0VO|yOIDP}n`*O=S(3^%OEZocklVrW14Ln;8^2)ZM2}08V zEpAPS!tb~mOc083S1oi<^TFX}zHq*Z;a;4{Q)|bS^MjjjbjBJ7G>r8qI6vSwof?jw zuaf3!9UVqb`1WcYl3D{wr2w{1Di9pIgslse61$kK3&&o>)`eo@KV!u`4nY)atV`Ef z!epSoj#)w_rhe6ETH6reXoKNS3HiY#nu(KLvKa^WyO@57MeZ) zH3Zf0qZGfE>4VaaAy5tnL(>PK>|i8aWTy{6oqs*HwCGuJL5(pp3!v=sl%VVhXQ1o~ zh@kAUg}zSI6t+l-|I#_%V4h4%3 zqut&>sZJLFcKDv8^*Q2>nvUQ?2_A>w0tp_AFO!TyJ1I%oSa_+#<>Xk{B?_oI+$5%h zKtu&T3lfbV!iw?_rgzLf(zN)Y>H|Di^Z_Cxt5UFDdG-c!Tugc0_v^?)ZR-6xuekq? z5wAM$n!eoX74>YH{yKFaxLdooh)|22cB~6J|8ALen9eT<&Ht$nqU!>?SH{k?wR>fc z;JFFzut!XXjf=^vKS#@?BF~=amOnkq8P>A2|D>7<{&ego{2_l{R1ERv+OueYz4l!2 zWEVYpQcXt@d{MiQJ?kcO% zMU^@gWP685%WKio-10OKH7DasWI(D!A=$Z>&-A(m;cQ!vV4Q6$;SK`JuAzLwvZu{Z zngPxk6tZ|(=VX=~3Qhn1@KAUdhsz7aAGr#(^e_Xy201EC^}=g0XnF0S!p^3Fnw=RS z9JZtpVfp)*IP#Xiz`Z}i_ue2L_G8D_``qvzxCeksZx7rI#?^;$7Xr5{;cjJIo52wQ z4)2M8=TX5FN*ouz(FiOhb_RBea74I#3z_+m)|dB}nIH9bc|V!?QGBki^xffH__VJ_ zjC-~h|M!%}>Yq*Ff!8x20Bv(bUhB#2$4{k!u;Muxv0?QG&PvWTjH@=1L;0-eZeUy> zy1-e{-A@h*8u6rj)(ttIan=nXoE7W8GcFKo;2g2eVmhQv3PRSTa9Ep^+e9pf;*j09 z+NAvN5yqZvDT{V-3g>8l3em1!Dx%#&a*dx#1Mxa0gx8VblM$-jj!?ikb}oYmXWBs# zu4zPsGmoJ1`~52J9kJX_M|L&Sk@7!>%;pmzv-x;nHp|;ZK0hJ(V=!Vy6fJPlt^q;SOt#;B-C zS%k>$1I~OcROp6kGW}rQ`NNLH}vPf=?d^*krBfG0)P>-9$C;uNwd9@S zr_w<5hu3yPAS-QFR)A|k{PTpX!r?^hHhikRkqmGy_YvVT8xh|{$2S#M1H>Ih4t+#N~1}@*uAMw9R%Ugbx*|T_S222&z6u_|ORtMfd=OLoJT< zTRs4{3?A`*)RJOM!m&hS_>cx}H^iSrxbHEp)_8Ln;2d!)-z(JMJwpxtUZ}w%q`~vK ztme&ca6+AeBJ!Hko=4rqhNrx;DWX=QO;~RoXbpEQ&6u~r+znbBuR1Wt%{)$&8eghaEpRB<34p|oPSG8ty zfatLbk`gt!{71sJn~@YMcoOBvXFAVK&wDiTiZ2I`>WZ(Szg54-U(LUg)DsbPAK;FQ zg?aT>;efD)vB8C%8C&e%~F{@TcYS$f!G{DyOYS>|N$F46tkGC=`eOUsTvW{#k7=lvr(O3`oJXSd^U_Co@cI>k{wipG&x#83Jk_&hCiYO5fQNNA2?OoPf}%ZK z`-5&W(p9{N%RnUk1&X*4|Et@09oaMc4M^(n60jqEfE^hw*(cD*y#tLL6=>v07J|39 znv?gHwg3Ftti?AoTm4l8sP=Yge+M+1eyVtOmqyMG8o7v9z=KB4?jk_5-9~2@7`Zt$ zBsWc}q>SoSo4K?MnBJ(`sEH{a8$KX@q9bxf# znoE{9G|iyk4r%D({G)1w?5faUg9Uuc( z4f5sRC*9il{Cha>96elrj>owQd?eBY*Z@@}-cggl+m^O5q$yq#|AopFz2iz8j!RpU z@s6wK#qYS*1+X*zmwXV|f%gMD@K0+8O5S7LxrO?Psp{invtT~Rs=iyu!cisusVERu z5P!xCfgmpGU4?(-aK>F|>2k#N#*TDSt=I`3azfFA zkbVijXIKjyzFbbvKaNJwv!5$3h>@!^fug+UY;l#lOL6n?Z&H=)%*D|ohA56+BBbh3 z96jhaj)Fz}>K?^<`U~i~0`EpF97ny}L59#%zb7UC8UH3#{rw^`?K@Idd>D{wy7VzT zNBdYY{QIYB;bX9Czfyfj;Zr@6!=sxm_^Iehbvy)a4!@hYQq4n{J{wP0P*y7PAL*0w zc&ZQ3OhEK8`p6su(TD2s`o6}|SL`DT4Md-~_Zw3&AhDnC(TD2&#@+;;3y?lz?>AP* zVk_0^z2PK}gk)Zbc&MKKE*n0_u5Lam>g`IX0q~swp96S$2wpNJ>RlXy->t)U&IleN z>HW`Q-WwtKdOVGv8WrGgTpIHZ48d!`x-$)2co~-DsbU0Xn7~OUFr5R5OVwRSzXMVs z_(ueHmEfNd94W!)5Ig|EqD$0$2oe|7NdO)-z$^ey8{h;0e>cEM2|2h&wr!-nn4WFu1UeoM`Vv9=EfDLd)sUv!* z0Z_&NXleP^pMQ=o8Kd)Tzn4y^Jt2hk&x-|XEo5`#sSHgRGc;k$(1bBF5`XaasiT=V z=l1tyh=(EpT(PQe8v!JbVZfR2 z>Q(73d*(MbO6@lz>iwJ=eml3I<6XVVp7kQN>eW-=KH%%O1HGA38@#)*Y?32rOd7-H z1L$)={=jB62;c?-KCN~JxD7lc#}S4Vco)a@>lw>9!HYP8@j zktc47FzA6&+vk%}c6g*2#$&neqLF-dWVvQHt1R8AIUtia0?M z#n=lKal(Qv%5tK2zQ)Syt!_c3`81+5QqYO&OXZ&GH&J76MZKO6jXi3#zp{#zq+e7= zKIMB&uZ>~T*2I5d;-W9AS#a>hLwk|?ZVuAXW6A;@k8hLA_KIFtvgj>oc>A z0iU28j}QiYiAKdIxMm-)W9tDsLr`J8aSrQ^b6Bs90Z`gGl#eT)h4UmuQ`kK_2SIYc zrm%N*Cm>pE14#Z@Cxb02=!I{WfEMRXPX12DX5_$^cV7ngS~iG;He0oMPhEw{lc>#m zj@k&M)n}(qey^I+waMB18t#y-eNs%b0gL za9X-kR=StD+>0(#Ymn>-O8PozN%-|vx|g{^P_WEx4`5fin*-@SH<0d?wvXd0n9F@2 zjR}99k?zfGe3`#ieFCbh6J2{~ZP22XTvgDbwOx8>t=po~dz~J-hskY28JpWfaeuuk zJP2c-CerS!M%SzFTpjZ&fzv%yXnSaVmmXTLQb=|%CH;v^=4=nG@6to--S!j!kHx71 zy6nyR_CnA@&j&s9T+l;*&(tm;C3bklxx?a-87e0Uh@{L8a*}{Z&ulLz2`E0hop97IBuZWhMC22YmdBvf zEpNlGWRxYRV$~k)X{+oiDL`1xEMj^B&H(2O1t~;0txuomO3E~8*Fz`=+TN3`VS$e) zPgiO@n$cX!;nmzA-qfRKFtSTk4!KZ%aS-*-iD^u)^rsHAS@q#%!CAd z0L~Q#L^#b(uXTmt4r$O+G->==gaN0CA3-xx1Em?(87l)K`-_ z5aD*#Goj9UI@DQD1)Y^yFKzoiW~AEFO1`dC=^?m)tEp)NhJLCHh$lfwZy?q4JcaGB zh6*^BsfcjMOaH@V>N`^LOI+~;`0CZ%r?KScN{vJfwS&4c1Bg2>jd>HOdSS+EmKne~ zwWSc@GNVuqbh0&z%Yja|W-&R?$?*kpqHYf6roxQ!WN#da7;{z3dnu^6!?FQ5 zr=AodTsG_yV#9YsY}h%(hMk0(g*@A%*+MQkI->d=8udCfHEqlUVgnHCLCFq4>P~65 zYyi$>10o#q(g(Y2I7ljf&sJQTJUXJLpzM~xUD*J{TfdHZi-U@vwrl{-sV9X9mklR` z*zo-j8;%dL;W(kD$)54=mu!rvJ5gb3E1@P}0}#`IcsiiwLCXf6m##Q)EP(jSl`(G{APxU58-R0%3q-iX1tNMQ=QPUwE>^p6T>3NP zO#tT(7l?3&3q&~WNKqEYg;*V8^93O`pC7O}d!Dp*uM|}u-A|tt`WozPWpZ6aU5utS z?I7J}r*UOKSU%jsgamv5&h0)#IL%H!>UQ6sq(L#cV$kEhL)sgRnHjzpa)?=Rxe;wz z4vp+RmKHm5vG~)zDEihjjN3I=E z@AmjuyPC%yIWdb^Fv!V&?!@k7MmW8Sn{K(X;8yY;to ziPc7e%)5wc3gYwdMeVDTvhR?ZeleC8(*?Q9AtS3y=#D&nJ_poX{ZzpzKho z8(|J1;0U_Yh$2~WrBuO+>mqcsoD)pqA=`^lOKP0d-T(ys6c*L(R+Us?k0tc{cL#I$ z?%<7}qDfQH#xxKWW7W?Q&!@G72lli@VspMbNZ&4$hL?JW<3d!_yROd2-o2=ZY*uhu7)QpDg{rh43=^}fVs5s7x)#~KdVT@j)u2gZaFK}vGR=Ex4yNv~x1lx?m zfdXv3MS_vF4B5s|*4;R3+lyxOz9iUdq*9U9`i>g5y>IZwQ6xC_OCI8>me^G+tQ`9b z9^xrB{&O}5D-ndeZOU*h13C|F?{=gKuR4`uw`2yI-FajeY23taiQRXlR)qFl!@DJd zvYH&;EfG{#O=jkZCNpznw}fLwllLScVp~kRC8vSj`lE#2R*@CnEjeIq#5v{h@HCf2EPv8_h<>8)gYjG;W zoUg#U>8^b4>GCkVNx7%m7Nzfq|J6@;f1~;(V^sI-!oEFS9)-4HQK2K%fURFZq8%F( zuoEwm!5QG#{Q`FG%j|rHDY*V?WM^4&p&EbMRQI@SmaPPq@%hrWmEW$#Uckv&(7U2iRBK*KugeKB=_gNjz2ngf$am64U|KOc2g?&T7Wl z&LP}A4@bSVBm*xou6Br)0ossq)QTb;4<);^EGiF|mHM8vq&>^Go-K`gwlcMcQvR{n z0-v`(_kwkq(?Hx6iF@Thn(^CM`wVc7<)8@1bY%CDT?85wvwO=f0vV6&DA`5e_>sc* zHsU)|lS&;!@;p$Lb(@*}Y$azY`S zFL)8zNmB7%yo)dhLs~6YUznPK-3HXqI$xO4Vn)6+5V#5IEv4$I3K$v74B#Aj${@m# zILh6CoYzzC!C0+_(Kn+XC3eOzig3n1if{(V?A#D<=Y)7WJK$}3gEVm-*LKI(Xqqch zS19!aT2{AMnAUFl3<#^SNvsxz%xM}p%aX~A3s?f2!@mq791iDxNtdcfhA1Q+SN1At z@inw8*|VC`v!$`9B~#Zc^)k3ty;QhnA0|u#(HxC??~|~Is6A~(4LFB0l=y8VtU3;f zZ^6nx7K8q73?FcgAW>qwS|BCcbNhs|Gi1Tp8FB_VN1Z6b)%HJxBoh0g##PAP9FoYJ zq<`LEDxcVFiPUqIiZ^hp6|IIxPG6SXAB&>~=~o zLqpG&nc6O*CV{&hE2W=m%|O!!2{JqJ0tm++4}(wxv@YZCkqBpA ztjh?T!>kM)NE6!ye=z4*kCBairaB}D`Ak4rXY4XYS!WC=YitA+Twe&C zM;4U5^nhHpzpvr~?QvkBtg#Z5UEnH|Z~R5 z5lwoapSlfU-2-@>XdR%fkPBK9@23vOq>2|B)+0J(`qTYfRs*&wLHtElYl4K|cBKPJ z9ex9Ln4H-X7eYK$fTz)eu$oplSbY~%ZX-eB|IP>o%-4Ltejlzdn=UC8 zuxERL`CetKFf>3X{1Iwj5Z2iu{BJULJ~~3}1;rBnk5FR}HvAu<4hN+9Uob))4`@2| z#vCsWoav3Zhz|G0h%UV`!tIUp2)8!?yInA%OBd{8x?msE1^ZwypiU{Q_24 z1IWz1gn#K{5b|rnKevyCiQ~5ecmst`M&QKo>nGvZ)zwBw+gxh0<=2Pl;9js6@Z#=VGK7A>@wMHeG^!d@0F zCj|{Ii{hI{0_w}629(R9r3RGCq860PqWqx>DoQSkT2L;F63Fz~3%!)RsJA$=J0px& zD*4WNiK4V(`HJPDV+l9XL`8oJDJfCQk%|s3d1YudU+qjGpzn5e0!fFm_2o{w-$7V& zyOZh`Sgv;x!v&W6odGNtJehi-f~zc1F_gf;V!4u8tgR|j+BJmqkbsSdG~M6`M0#u5D+sLRP6iZ_-phbJB+^7*F`hq|4SE%+Fhx|r zV*fTA;TVXbYME0UKu$x6x)#*4)hRx1z6x;hqHZU`pm=3dqRhhS5vp!U1w^8FjMZ=BSHxv$mMccR( z<0yb>98gZpDEkZvP)8!igF&v^P_C`V6?oBE zw!o_gt&qBr%aNCaKh)%^IG7voKehoC*%fLZlu`FPVYa>Im|GE;jVv}Ix*rt#!c`0` zNEY%QvLO2!P%Ox)2J9gV(r<<9KY;R0H6JLeIlm?{LYlKe)gD;j9Yy?nmQihQ8>L#I zesVy8w=!UL%J35fZn76vY`Vu+Y`R-lsK;?U?@p>qq_xFpA?k`iLH`|~T0^LF_b>2v zJjLcJ3{hD7dDJ_WQ2WZ6^u2?2U3Qk|T@>V+ID45E-xaPMskl&`s0Wn(Yt;1P7qDy5 zf3=!ET|yV&Ndpqz{uf|+qys0Jz;q5&$a_?$f`~1CqtvsgmVV1_7RjsrjWWU9Z4wnO zOp5PiYgBb8<{qUA8*nTO#eDV$UCceo1Z#CMy)M86jcAHAE<#wyiZm`jSZKv_EC@>t z*aqtrv@p_GA2hOezy!EhsIyWX0=dt}MW|Y#eJS*%yw7q2N+=|V$EUxM9<6YOCkBJj ziNRoSVlXr|{qOaq@*i#T&OyH1rk*q=+@{_kgP`Q=eey_{@yAB+o)H9GOL8r(QUFZQOc=m_yuXQDL&Cu4I1{V*3{AIm-PT}dot=|?XBRjMm! zODB&xL>cNAuNMJrR1)ZzG=pqa_5he7GWD}hG_VL9*cE{T!y@p1ElUj^63AD3H``9I z)>r0TpXcuyQBxsVO>1QkY=u~fodAL)k+;nXG{D``ObXw1Q@ED?1nwrQ4- z(OBRO02sJUh!43*s?8Lb61&ob2xn4EDLV1S?UR(7 zY#~Ls;{qaF0sJXWC=6#;cMyVeZD@`S&9ZLs124}+ zR_!|ITwugOtyzg64;^Ys(b=+U`~tnUYe$L>Y!Xze`ynuSjS*;%j1dUvF=9IiQkp>? zBc=dM0d&R)hC^cn!=W*P;s1^i-{=@o$s(Ia?{_yE$tp%g_9;~kbsGAho0&zT+9Qb z^&RG~q2ZN&T&eBR^18>Q5C;gVTV#Us#Ejh zU~Vy{=uB~iZbkEg5u$Zz408$mg&4h!9>_zCyfV}$;{*bFoH!gEm1dB~iDdv&L{@k% z!Ek7tU^p~RF#O+f;u{?&*t_lH|1P4ggxWX!S=4?g3=92K0T6-OYe3Xq14iuuUOqs3 zvsgg@xJ7k$YJV*f2WtQ88b|G)HK3?{>A)UVdr)W9elIFKr1rqMYL5t4?GfRsJtADS zM}({Ph;Y>&5w6-J!c}`jxN46GSM3qus{NgG;E=j2(pXn?o2dP-(LAH}eq$Z!`*UD@ zUiyxTMBfq6`o1rED9s@2`>6m^L{C`X84l??!y$cV_`mx8&FlMszBO`I=050r%U?w2 zJ0K_Yqr2v;^V50NPy@1;tN}OySPjqstO53t0Z?JIQZ)c!yAW`}Akr?o^B4opo%bWc zm3u_EVvY!RApjB1)NRn#JT;;%)S|7#L0X4uA?cg7p4z+bZo-}C(4eOE!kzXAGY8xO zl2lB%qXFTL2825rVD3w816~C{1pb)@#6Q!3@y`J6wQb;^0lW*cy6GLB1CcoJ&-VY0W06ibpjf2q z4cJ2#X#l9RR_FyPJg`DB;2bMN5w7V$gll>b;hG*qxV8cju78FI*FQsqW1Og3*P0;0 zF&>n{_0Qf9`)8fvpY6XLEQVgV^BZf)KU)me=Vd)mkysA|wDouyWuzHo>(L8LOc6a{ z|BT^~^8NQM~>$?&Gm-;wjfgoKVWcRi|H*7snat?d@z zev9rF%&7RMqCoDCPNFZeW4nDYK^EL&A|Bl0+K{*2GfY_FJ2S$F!)vsf$V8ki9|~^h~AO z4F1->It(1{{F_*WS~(hp>qtO6IXn8saiLl?;w76!Nh~ixgcUnQXiG8_^`hI>pDe+Clr62*r?8UAlX(Tl=)jCykpHy3`ELe!SS5I&E8Ll=Ia z{c$=732sli? z7X^(tbU=T;M}J1qpV9Q^Ao?>FfABP)^~su0cj#abWAQtIZrij#covV!D1B z%kjBl${Q=^bHyB+<)M?_W82u{fdl;E>UEUcskzr+My7({fqrR9jeY@j`vl*MpK7_% zWX=ZzwY-0UH=0mCfTc&VB|K@q~L%A$3hpU%YM!Zw-KVPK9ls#0Jy)#G6 z2|dV!y3Y9k@9zZ#c7}3|8XNQe9-!(C!;q^P_56bBl6GBf**rYBzb7brTNSzNbU{$| z>?}}ro**cDKo%(b6++xh1@ZRw4=klzEGx1X%hrQm#r9&^v$#(I$e7bo^b3PxPWLjP zm{Y2kv2wA@f^xC!F)7$wEVH0oEF;hZrB~v$v>WlinvJq?MPQ2+w%_cF3erCN6drQD zH5T9YTVMrY*N`BjAXfDOYNA>8DH-l+PU(Is3j;uOsH02wRaYR-#b`b3>r#MMTd;Ep zz#A;MoUk`raKn<=C>Hevpg*>cx*ZstXz*fttNRfAF@i8MR7;m>(q>--j?3k`q$&ip zc@*lUhRbkJJlu>1(@{bZK|B~-Nqs-ujs@JE1jU7RJ{`M8?E-?0{)y%5+NIL91Pgk3!$aixf2+$eZsq&5u{ zvCTq!aT@=#-K7X;D6GUr6y4dSx~dRfg_IPg2OavXji{LnQRrkFnqfmH+0b+jRo)>h zC2P^*s=IOK5T)IVu;19SxT-Cp=sNHR40kTBx+|it0e-6z#xLsobVR8e5YYlTII2_R zq8}nnIQ6N-g~`O`Mz|hqZ-lGCQO9sC_#8PkL`bDjKz`69X(rWS*n$aDxDFij?a~&s z&1p;fl77!c)NkJxat+!2Ee|7&lL?SI=|X}fCDM320Yaf%Nr3fy7ebzoRoMca%#Lq0 z0^0GN1YH=wAltg103@t&d`Wr)4y>KPfw>d-E7`lvu|E0Q)Xk|Q&+!R;k|$N&J#9g_ zOfYx&*y|b2UJV83+Rz*h^+()n@p%rTaD#;FDzPnDi9&|rwvN0r-MeBJyyyiY zo3+*H7{D}QgaX2jP&1IBd;hW~9Uh^oad1C0LX9(^j8H!^U{8%uAa#=?6ma&5jo+i< z&=VWf#7&Jtgxl2IfN=9y;{wEK)-}D_TtFk7eI2!jm7QgW=hNO1C@im5oDh%a#){7=6 zhe1p88e$=HGQ=XFhuAw%#sCI+hnidKo4PGyRc3{1aZzXj%^}7{0F_h}5-yd*rIW(}oZa^7W`{39tV|!{~ z1*w}HSb?(x>%nwlI(S=~nrPp8yO?qIF<8QFa$p5+lLInvn;ckya|Yzzh;Y_cDZ&|P zDZ&|xi7xvHoebRe5jslj49gVZjK!4uM66BTLN0+!Xj{$auKM7^k<)jQ0hNL~2EpMR zth`;Rr;(BJQMi4UFG&!d4u_B8`yhOB5S$SNPYQxMZPg#bjzQDxO1$7|#+Cl9IHfej zj3A%P7ubv;8#HW2k+ooP6ps0I9C4}tMHcX8)(URhMQ+s;XT_A0k37aeO}e?Fyx&c^@?#y9m@o#R{d6~ zB;fBc+&QP}My09%|3vVORX0FL0IwBzZeM(AQtgBY+F-qP8|`}_(u5n1mAG(sk?+Ah zB<;aOUqERnc|VL54q&1$pzhAOa81J9FtD z#FpsXc0`2u7M=SvB0`Lf&h0=%i1X38uX(Y2gqO8N^n!ySZP7Ypd%M4t0QBc#f;3+m zClX+Vd{Ic~LMl}iQZ+T%;Y{PzbHbc~GdVxZ7#4>RU*L$&4YLLCyf9ZFevM(Kz&)E^ z6;evSal<0&IipN)*yfOW80kkaq!S@c(fZ>kC0b>SNxyy(RkpK8nUS{sfgwRPiwM-l z#BY3`L2Xd{#vd)Fj?+ek5*lNqCKG?Ph&E0pQoE%u)D{{O^#W8z>PSX)gixFES5e?}6m~G>x|(yrOCqap!d|-U^JdWXggJg zyXKT|LKVChbnIXFVwLUKlJ|m%*r*!xxfkiWZ9Z^Nc=mObKxW&#)qpbly4`?1H2VU1 z&Kv_Rv2yqT>cWDomBaS}VJqK~P*&KG%kIz}%P9La4JvS?7fCm@VF#461&4J>v#NOH+nj)uvDR_6j$L=gKA7g1-v=eQ3H2HpdMf%Cv%$al!{-U-*0<$Z4*Bs=@X zSX$cW*q&|hx45+KmRe+p&-Ezp+4u{3lM>;7Alx|5!$L(= z3P_?ZzcCflxn=_BZGc$-s$&KFsw@)Sjhz0f*WxieNY4P`x8FI&K{YeJulnVV0>nqD zU+xh1h`LxUMj8s>LHm<9fTPB>7-uN1pjQ23b%cZX!e<=d8y37N9^Z{epa{59xR09V z6(ZoT>LlO2RTU|Nw;AeGOMF%7=jc<;bkR0hqD(%wGNjfq?LFq zg++_iVU&WNry?>azTpJX^ofLMkW>^;w+tx_^syjwZj{ygE)Z9a+UR}<)vTtLpO0Ej z^6m$MzWYlcp0xTGgG~_v>2Ao@aYDC8a_2?WZlL-ohFg4s_XfOz;ZDEeqNq}15Yd9d zbDskP=(s$T&k1G2%$fPAgG4Hy}auT|?1)&sI6vjeh#dO#LH2IRuuX<74EJ)&a2 z(;|p~=vw@GR;~X*!G$-eMy~?_e^mzo$9mh-kv>f0Y(KXxrhdlXFN@k3o<$?}Z5|2A zQc-o4^j>W*>AiM521Y-X2JRemAFpj`k zWI1zvqUsUEi*0+dAPZP*0fkN$OM#HK6bMN_QNFQYJzn{k`ZJWF zc9e8pH4Z|tqWh1jb8s_HI`1*3^Bz-|10$VhFw%LCsow%4o%fi!3t`=PlFW9VfV%Sp zkj_J`B;=ToH4ces0Q0fNp|PxwBXYyVy`tbS4&vKXy0_KQ`1X>q7YJ#){y6vP6QHCV z8`<+0dQT&WozK$=T<8tPlo2m8#TngZ^67#)^X0!W0|W5a+Ariq@%#!u1b>MzGh;om3T#|aoI$D!!?UW-6J82(%20;`+YB;v1Eobr!2h;-o# z7`A-9N*R&I)TUcm%v-b2u|!zU)!&n)RrSLuEOcS@Vl6)yq*#7ZK$KP(%>odX9)Q)r z@jy%o1;-;Xfja`nLoorh0Awu2S4}yk8H`O%8I27j!*OOSr3Qm8Dmja=cF_^imJ=Zn zvK&H2d;P{+mJ)14&TqV9X=V!%yYZkSHw3MP!c0OKgYV+pU_1|oT7JcF^OD?_cs~rQ zi_b93>aAs}lcf!R12GFnkp@5}H-Tp{EbeJB$k*S>yMC`~241-Xds==X!eM99DIjjf zTjXMP0fdD^gJO0yAZE8A=$T04VL5=NxV1PTXGTJR zVXkVB)?hmeVmK79+L2hsLYq{^LJiXD?S_IFmCGX^>ZQ>zd%jXLW!aB{+F~K3EfzxB z*F(rysN8wM5bCeGP-XP%|1W}ua(p^quJ<}Zmf?8m+h%(~!9!D}~*aXD<m3V5IwUU3e0@})w>v6>n;o#gd;-KNwNS4hGg zzmTxpRzlwe3;6)yH4<&YgDAGg<$2q~|4nYe{Wwhv0WyLz6swZ-Qz;;RgA?Impa6tb zNrPgb0Njm)qDVF&D^l*^u;s5M(C7pC-|NJJJ&D}8KZ)J?A3lT*!~X~d9?(_7hs-x_ z_%}5cWb^Lu&9Llc&na~q2&DDrJ4I?+s+o1*9dNU8x?Ok&Aj~@r3hy+)#+`Eg2)V=r z*<1kOkOK^xpz_yXBV>I-9iM&G8X<&40m~5*#Zt%QUI}^uQ_BK^O*i~MqW%K$u6sdbyB_`m z{Ztx=J~hGWJis9U_3AufN!WQo9urOtidWb>Vi)A$24(^3p%Wp!9*>Y7KoAo7%^_r@ zm7Ga{fipRVKr?-y8Gc$GoY(^-CH!*^S;|D`df|OfG-f1X=>|luBErk_a~W=5oXg>j zRtWi347Y@xqVPPRg{KDiD;`qK=6FcNoO~R}y!F5<8y!&_v|-wy4U^fHP6L-16m%ZI z3V>#71>n{IWore1?MZB{Xb?S#t(EaXPx`Bt$FqQSS0bdl5+QAh5Ynb-Eafzv>90B` zPO#}scsmT6?(|pvD4yG2`f~)xO8CDq{W(tha};9X2KnXq^xaf%9z)oCsgvHlhv7~? zcc}F4`wX{5bB9ED^JOrOPSU0~j1XxDtu)}#B5R}oY&wdKRORLfK%R!^OANu+FHZTl zv1|n%b~%Gb#=2@O*WlNQ(Sv>}4cys-0|5lM2A~l@fY$&N0R#{hKn;oj{wyqjt+6a% zEr1AV0Ypd(AVO9E5e@|KrdSSeAb?jh90=fbvD~@(1sjl+@Yfjuyif%2Uc}P=Uilgl zzz-OL0In7R+#70#@z&2>AObj_;pS-Wd=Wr;CL9ibX!oxzEPwzYfSZUio^8H%J#TyR z|DpiigWeGVtgRIR42Cb@UL6t$Ai(zl8UX|t$FWTjKmcI@)F2CB=1;+}lSNnyA3|FA z5YobjkQF|J1L3=`AO|=QJ~(FgiLh0HgoOXB5w=G}*s2kWvp13Qha(WSaSXMo+(RN< zEetpLxj%|+iNTRg=*JkerrTA~v14enCH#0^(=enaM1Gu+V5wCbJrV z1kLesQ-hACss1t2*Vmz-+_AFN_FIH$jkg>yEm6M2Fi-V~u^9VWc&iP6#o^B6&A-jC z2xTYw>MYTq=6S-34tp{QxPC(e4FVWuh6ZVYu>%W?0EZ&6=#Wh+I;25bV0;Y=i~z%0 zl$#f5kvgt?u5Xqb)%Yv`J=h?m=Sm1^^+L$1*GayHe!`sJsPdi5GcNt>e;KfytW^T3YUi055$s_>&1B2BpAT!|}3TzG*IV0eKM zAejhiWE2aGv49|1VYHRX3S&T$tT5UJQuBjG3nO|p`>JYzka3JA$4w{9@p@eZ8c&ym zBf3invA3gU6Pp$M-B=Wxl^#EX_5YJuDZ9#7w~9I$QAyb)M&Po;jb#B4RwfOKWdSf4 z2}PA`LRO{RwZWb~TyaIPQ2~F|29^1hsKIW?pSxZx&t3>a5xm@WJ})xPW*BFYZLha= zcl?rj9lLz__Y*ZRpV@!azkPK-xYxAi|FHKa;8hma|M+|Ed+$wdmV0kjLINRxTXDm! zqIHQoE@)h+s0aaEKu`ig1Vu?*sal)36x<^!QfqBoYi+fuQngkqT3eOcn!4{&75D1@ zbIzHW_k9yXf0tgZ|L5y{9>RR)%yQ<;IcJu4-g#APF`bhiWkJ|$D=RvHu;>5}2W_&9 zsqL zHxT1mqeP6QIg4?vqgdu1Ok7mmnl4wF^aJt_Hg#Q~_*UH$q0n2&s&#R)qEV{3PQ* zkK2>wztukI1}9Yy!sFrT_5%ou&I9xQRpoaXx5q1iu}Qn9K=^yWqr8g+^$2mU_kf@- zzxoY0_>aM53mp7Czfh44K%@z>$5Hoi+n`wC3h|y2w^UojA#Le^cYJ!z zlyA!ns6h_ys=y3oqqsYK02Y8(#fTF9$$d_+R{hCY8*`swe532HEr`Gd}5 z4*Vz!!j0QnhXW8c9>8CNHd`EyqXEL@06qd5oDt3#IU3-62l-e?Hff1`ETkq`p3+m+ ze@9-c4}Pnc#A3&D4rVP8q8#bWE^*oh&EbbMrbS)V(jbq@Kzk0KB(TTK0pA3)I{|=S z0P0Qv0Jqm3GdECo0`?7#nO7ieEF2-T6M&Ghb%czqBNW*7`|&E^U>{(0ylOXXeED{0 zyWe=A?qXN&!$-_(5Xa{OtM=9-<;MudvzO6&q?G0dCyE z3{qu=GLv(HO~89VYh}Z-v{t6g6Sxwzdw0htVlXb5oTq}y##QxNoX$j;+khSOqN-QJ z8rW9MIMBfNg?=v5Ghcqkn}UDr@am#Uq-SX<{Z+x!rm8&rj?Wa&m}%%A6;-@qX%%Rn zA{^@&$*>1-?;W}5F2Cwc$QAb`oFW)!4}n`}dp{T0P6B6mp9)+p@T6(p-aB#Tm6G_R z+1@DvI}=>i8z}qdN{&^%0aN6v1+Pvp{t$T6ojH4VlJV!j69u;yNO}y{9fErbs$SQ( zMeY~eRmiyLOx%nvxGiOs3f6m~41Om%57=LnS8^FDq>`KD@4fQ(G5I?Two#VzF!w(< z@&7T$|JU1}`!wfk%E1mOmlaj+NBA;3C8!M6h&e=CdW^X2#v=I-t{b$E8_le!41n4B z$51532m{FOcFs)POO99740RY6g?SNR$u8JYmglMaBxpm#b8Z?}0c7S52|o z^cwG%avQ#42_KoDO;y6(H7emwoQ2~bWkK70SI?U#gChXTNJj87fI~qU#W`nr6;l#+ zJf5hsI1a?BqZ70f60{(US1cIr19&eWp1cVj2VAn7cxtLTDnUE}JX~;Rj4{s-mkaKS zGd>FGR|yVJvU>jGt9nH_i!#4X=l@P=xx1dV%BJ=;SRp#Sd26Gas+!PE5L$P)Ya#%r zn@l-}DO<8?mcOA2xdbtGEazu7`ryVac7q7r7s))Bp!uj3ZpYh3D{d;+nkfrf;~v&1 z09?go00)C&jDq1Yfah^R*pz=P;qCyT@fAQi6RY?WlF8h#{13|N@yJxQGC`Lh3nXARI@BY?$7hNUgsyP?4KW7!LEBNrg6-tzZU#P=X3BtzLeYYT6l0l*da6D9I2 z_EskO4jb<5XT?9`9C!Ye81|+VmVOy<>Xw8&(;y;S$T=v@3M?ZZC(_fb88%t1Q&JmvDK7 zQuXeoi!4(CQClr z+cIaizAN1ay0wg5 z>0I=G|CaFx(gv1sKco?|j5QXjWo!sT7HYmMV^_6|@nRX-F=7wg+R`z`8cO%WER%Hv z0b>;VS)(|xWM4Ll!@!gn#Xe#blLfY&n%>74#XeD^DA^lVP_eqvr0kwzAJdVe_yC#% zCir`X{6b3c{Y^-PXJXp`?5Lhn#m)_M_&#u;bCPJ#X=*n162g`WZsP!-m zSr5aI^)URetY=-+HdhN>mpZtka}jOGH0GjLtZ9@F#LB?a@6*;=*Roc3GVtf2492Cb zH3Me%Jf<}rj=qCYdfw?!7ar68iT~5IaWOEhy?>0c(~!D_ z0L4d*=O8Sr6^x^oAv_W3up9)15tc5qyhH|u#)z7d%G5OgUIAT%zlFT3?WN-JLymf3+DN5}w9z7uKrNB+ii9CB!F8%JtWq_u5fYa5%~RBGdI6Qee6HfqChCR5E0bOx#!d9?Ah zTnB#S??8{cYIcZJqe!dS)mGD#+)1i=QLFho{?lqwIs!>;nb;V*2(|T?+B&5!u5AqM z3=7dljfvEzNNYRT);2bIfYf#nGNDoX;y+WH4uV=+@dWw=weiluG1|P<=tusMKY{Lb z6;7ZB5aumEC`x=nQ2i{glL%s7Zqz1iWSdsGrZS>Ty-Ys4 zwz)|0OiJP^8gSb(-Dteyb|%fhP^aRVNpldk+|DExwJ15bZ3VZCle2`|1xQ#rN4Py5 z!6>(!&Tw104&1iUa+U4snaXVwyuHe{jcUQUa@$61JC@tFh-}ZXvOQh69f5?UX9>6X zlD*-Ut)rK0i!x#}ImxzzZc}a>=PI{7s6n~ypob7vZaZit!j{{Ph-{Zw* zKM`*KfuPFPavPFudL6i3O7|(Z4JRwNo|ElTYDHMNT}r1RY`I+;k?l{dY_Ah;&ql)1 z8-&~Q5mav37xa}a$L1v4+vril?ZV#N-bU+T_)%_eqfHRD+};+E?cG+kcL=vzBVp-X z!tM45M!Aj3HfL^E(6ffyGnLym^dA4nUqMeeZdcH%5VtELvi+l#?E}K?^UUoZgxgmg zx5}mZTVrL#8EJD)vi%Fas@!%iQf|9o$I9(rsI9=t_Aj&uVJq9eL}dG{mF-i)Z95W{ zt`cs4f}qOQavPFuW*xYFnLbi(o6a|~g*=qomuWMcJ5o(}nZAp#<@V)>Y~Ql7eO0*K z2?xzP`PDy-%D>HTaL|1wjWYl{q4#NmD_GuhI0EMJ?psrkX{UN`(Z@3pIg~} zEZn}y+m|qgnou}5?fEJJ}|+-^vt0q+aNjxvAc7&I^u80OWIob z(!2x*(mS?<8XC67lrVrMjxlMgY5MzdZyzq9ib^gv2`cI4_e^XBO?k|)Q%;-M1Z8yJ zyC!Xx;)j^RGBh8t2XbL)dJsdf@K8#J+iWGY*}qJ-VtRC}$yP*9t&V$#BAXZ2`DS7z zxNeB+G%K+uvNt47;lJJxq>6jLb<+I_Vp+PM;r}$9uhM-9Q*nO~eQ~JoeF_?6Q?vw+ z9XVJ_zdksj!GZLfi<26xq49`~G2;W|!(5WKTE11ry$IPn^AnS{lD>nFSM!|Eub^Ll z-&9dfZTNt^WGj=;%u6s!T^E{c8M*`?pReX@X)3eXN@<$qtb{(p$Sm24X;{0-Rz$ZU zb`Y{T*=&v+RyJ{+_a^q|xWpO!*Q>|L4Y8^JWprJUja_yEj2H^FnmrP`hz9qx7560*{aOqv9T#iJI z$|VSC^nh{+FaSWg1ZV(IE&;v+pj-k3Ts|7+5+L9bpbwX|mdh^-#0q@+1YC~1T)Av? zT!L^rs#h)n?g3CP0eCX5TmryJ7%l+3gkq2TlwnRg zdvglHjfhuH0d5CSP66%(P)-4OMy{L!1e`t<<`f{{6rc~Ma2%wX z45rEyghMbHP)-3R04S#bQvsAyfY|`bDL}w!J&v~+FVq+Z2sj1k!|B_O(|$s+$#ELY zI(nUQijmxK3c}}(Q-DIuxRg_XascHNU=V^0F^1gF#sx4fEECiDL}w!0uLr#?*jy!0`%eZKF4W4q1ZtQ z+LHD3X5}=Cpvn}4&m5-!Nz6KxQvg2bubcwZ0w|{d0jJ}_oB{-#0`%eZWyfhhq1aCo zv>iCj-m09oI8H%W1{SpU0lFNg0DSYaatg4*aS9M{`in5900E}}eKRfpbw|F`nLD`3B@)m zpt0a|lWK)~tN1)<&t2sj1k!|9*mmeYPh zvE>Cco_qf><aS9MCv77>w04S#b)d0#VK)~tEVNL-8P67IGdV11w+D|C9 zRUu6Qr=8Czr!A;edmn_Q0NVQiHvyvF#g@~4Lb3geXdXCiPwp=qy8BUm5IVtvatd%GfXWo$b^zrR;9dab6d>UAkfIQ$ z00E}}eK@_Z)N+g~_sA0Yo>h62JqxDi@81vmsiIR%&ipqv6s1yD`_ z0#3Ir4si+)a0<|e)3-C0(|$s+%}eNPaN4=0a_ZGtPCez;7I< z00E~>r6EoM0!{(?aC$+N<+Ptr?94P>3{D$nD5p)sET8$TG+ws~K|Hud7 zGO(bW0$c~6oC4hJI0d-NaS9M{dVh6@Q-FX|fIghw{2j|_KcU#)YUo~Y+J3Tf+Ktyu zlv5CPud<^%v0*nJtnF34(P?-V*oc^;W#3?|)DL@}iarJ`Pndm1}Nc4N|{JWIV zo{V8MMN;P@py5PCk)jjk;sE3vMuaU|NP8BCQwXC8vpHObFj_E=!vhgU1Lkv>H%BMQ z3rYq|2B=9I&eZHbBZ?R z55r^F8ppSev8k>*^6^o`FJ+}Vv3+0?x7f|N#3-DbGN--f;(!L(bC7)Wh|hp!k+RU^ zqeo>eo`jL%E!5Lq=UAwxy?Db^66-lg2lX7}AWPMAkPhlONQPc&6fx7xJWVRv z5f6nVx|ntaQ@x%^m8|UyKdIrPSXD+_(tNVHkxlZkmtR$%A6h=wkW^Ey_iFxV}-y_dQ?*E)=v{8EDGY|{JDe~t5H^Y96(M{()*hdCkAk?4-R8{E-JgX7!G4NGr8@mil3r$0qGt59?a!5%8Ssy?AY2S>?AIsM z!g&NfVLu?F*6ZdI%C_V?uh}pw5i;)Kz}hWv1vl8^xdV;=TD(JMI?*+#vfmdqkJ%q|ngsq>9)^7Xv zUbYT`jq85S*gE34@hk+f^-w`<>#jcNPceM}QRHOnEM6XVsu3`@J^>ONAW&?*9gwLJ zTNfO%b-^K97yPZQv#nPVU5>uC{kc*sooyY2HfUqNwjNK1ZT-7I|DCPZT3ateNNv4# zV93%Zem$1nM)YUMqrFGs-?Go>8So#CT!`CW}QfQRR6+4we&5pv6fFu z&w@XmCe4{T8_S6$3zM~HhfTk8VcA*E^g|Sweh8KS5T^e#H2=5%)aG~CVIBk<*Yu*& zDiO!hV5zX_Gv?Zv3m>0!4l}^_mbm)G6%fRclPf^`)D<9LT){MyF+iZWg3AG`0VA$J zaL5%14!Hus-?{>J1-lVFioUn~+vA3P5YB_T_Uj7DvB4S)`?~}ESFRw7`m8Er^QmmK z^$e8=*;&BX;|+d7^bd$+y6ZQq= z*y$6fzJT`!1?FkgXYN{2CNIn&z(Ig#0P@-y8+c6RIhDQC7|=<3o>#Yw=ruH%SJAcC z6TOdcCAjC0E7V>`^f@pu*yzaGYl+g=n0Z)J-BO|&AepUQgMPvX&^he4zQ3TZlV~t# zoUaz)jZK)2EW6tFC}sy-O-?QWoU2Pfz_^43C}V&?aS6N=Tn!j;34%i|L2$?=2>#Y3 zz$FZp?XG%!6mJ0oRucmHkVb0&_u*@xEA4~OqiM&O}A(q z*ypVE@(SLNQ)m__cpqx@YGc`$M)Hpmr_f2@w_jg35RY^NU$-xivFmkP;-ESw5$v;{ zNk`AdWe#Ap=nOQF1(`aX&IYfiq9%MsBbNFBwFBO)5c{;!E4i3W?wcbGi%^@s89LNf zx7NMphF^s;m_6RLX2`rov;@t{{#&~vSaO0;fIANQceL+=iY_pY_T7Q5L)g)-S8Jd; z+V5MKFGmaR7NJb*XaO$)w2l_gb?$7h_Wh8*JgDxyzz^2FOY#yoCocO}$Rlom*5uN) zRj5%tA_B%EUVt(N2o#Ul4Ok5r@rZ&$9#L?}BMSc3BZfU<*TRrTWROY6=vt_7&*!Sb zP3llER{-H*Xhr`jd=U;`1S;GyD5ApmTc|3$#=?B5Ft~I68gm7}?ZCNF;Y#ek+mSrh z+ERyao7=$~1NQI1cTVbw!c{#HFzUG}+A~0)sOLn$YQTtk3J$5K;E;L>{#HGC4nH_X zKZ6pE{6dwm8_!1gM_CXK80?g=?{+2Ab6%#(yZ{Tw4eVH7wm!c=GKUWUeJ#V@Le!+gp3Z$_j*!_hM)!fy)xKJ|J2jaF z0cS(jV&}IG3EO#BgOf22RnJ?fc3wHuQ1fNy;BHTpX@@Gng8}VO1sEQxz86fYVy)xq z0PVc0Zu`ImRBmT`h7PLSK|Mt?3dK{KQ{f(7M00a;4`4#w0|Lf9><6g~5Gd~9G{9=W zh-Oz&m$Gba+ zh3(+>;SoD{*+R90n)UK*2jFfWlxggMnRSXk%d0&sP<(t`d|@51)BJIGmkkYOw^oO+ z9SF+~wN_AhxZ1#>C?B7^UI3}Sil*jd1K>w(00CnIO_0a{fno!v16Bh@Y(Q|x1_Xy} zK=8LV5VnDpSktb9+Mg7ox1j|M16A!CMCn=WL2x4;7QTRghaO;Qi-j*hNXslV3*X4n zH1lSR{*Ce*ZTZkP{!tc$Q2B!Z-H3`B0DrZj)TI-vR6o5Gb~O0$?>@#MT9eY+Z23)&+lS>pUIC$B{;{k_}QNbGI;LL6`v5 z=wHbizY|unokm2Iti?iAvZWU0X|6U1+_6sWsY=H1NmQ{v!&x4~e*!KZ;>+Y2kTsHT zMa1N}?i8PPz}xfIP{UcgAyZXvhhk%-m_43th_pmPGh zRXM0!&CPT$6su>rDpoVQ2K*>-GaV0gFz&GL?!YP#gWZ9W&75AX+pc%fZGnD#9V_{o zv2+od-ME1^dnAr7YO}}E(P#@doA0grlE-+9H$gR&hl}GzXoiDKMn~fsis=s!P)^1@))@C#YuqCswgN_C+~a`? z$3~5tVaT`{hK!rxx5mxJy%+rmoo{=%MO1)|doS8&i?tZ{-5>_W{U*?Vwe^SUSTp7E z@|>?{r_Or?72@XE31D4R{tC!p5!(MW{!denQC+@Lfq#$TBB2||>{(3zeqDhg} z1RllLr{@vB+QfUl5-71g9frE>J;CeK6rfj-5*7+tJJ4HXIf^G~AT0*zufM^S zP4g^zj}y-4gnvZo>V&dM^n~0?&3%Ar7vD=Qhiy~q6aP}_wY_Ci zuJ59h>zgU%`ku=FTh{-#RNf4ns*Zb0CR$bB7NTQSKL!7%sd+0EVx#f=gSQY>Kk=tn z&R;`q_|K*YRQ(z{8TlviYhQ_L=tl^f`}2S<1u{2)dPzDPs6d{e7wU^RNl9R$%-c9O z(mAN6#V`_7b0huPRdZudFkD2qVE=Zy7}?wUWWSvn&?e>bcG?7C%jNAf3h2wYObW%Y zr#<7}Lsz5x_CDp`L$h7^_XH*OX754jLiWx+*&n3ey6g|qA4BXt7_@a3x0OYzEQQ1V zO1cvTcl9ZFB^5z$wcRU&qJ*!YD1Q~*hwR;bvag~;UG`Ptt*qEq1&!>(7YkH*^k1My zQ1Hq=1;0Q`UBNE|MfK+EEqWH&d-`O5i{5eB-=a?uwtT%6G*b8qc!|jC19|}kukKUu z2edt$waV**peW%hC@SRSPWoTV;EJnpun)I;oAlDDGJZ_ zDIA1nT;Tw&wBGDh5S8FUtA;)$fG`4VOZ$oeb_B5O0Y>fhyC7QakMny{VF{)N5tXBk zk$vg_VWF!7z!fT728E_JAgV_RjeSZ0VWlep;8_66C7^4zbZ}5$M2MRcZG^&``V;crrY=kez_((|o2+q5r8+X?CEG9H&S*O|z12j}8J z4!J%%)sgyQ6M9Cz4 zFM@*z947$~rzx>1q1TkpN5Pn7bE;e#m3s~mL!m#Nt_IWD9aRiHPJ5=)e$bv@af4KQ zmRRj6olcRq#;4N_NcK7>-5TB(-(9sTgQO9?0FEd_;>17$W(OKDE6{)z(ST#5*h;Gb z>)6ZaKsf?C%u|6rYepofs*~v)?Icp-q|*`U-oly z3Q=|w4n~{!@}J=%1PJd6scq9hB`!fk4i>{MqG?z%y*N8=SaNZ8^swZxEDb^=puKZe zOyoOh3|WaTj6wUU>{ez}Zzuyog#VPk$jXjs*<~?rBV?rC!KzYzx04KL5iw>F5fL=! zE=A7$Id=wqmGT=twQ>b5Dn>*^1&xSXu1R`RoS+dg5`tdH#j!PWg#$a2-c$RSh_YQm zl5Y%2e&>+ncT&k8Dg1o@tC4&m<+C591BdxH(k*Ct<9O{qcV}4q#;8y0@0;Md&VfO$!ceZ!*C)Lf_jkE^Y_7zu&h!$uILk|PIm1i- zLhNqm6iZ{?I`=-DUfz4S7N3aO2!3hgbnW40>)0!Bt%+B$E&tg8f8wdA<)r-Ow)r4M zM4$3&tk4o=fn>6QWHL@NiL^-OF-S%~Au_tY5VRa5p8GM zP$=2vfugOnd@*fb_?Wj@(^@58=NHCHF>M8CKVcuVLTHU)niE4g1|RrFD+bON@m(qZ zBilzzyAOOk9q{r{n3o0MV+`}MyOinKGPB4RF;Ona+31Cm*x6`RDfakfN>+`K&eG@* zj@5};bqUc4CrbjqKL zN)wL!pONJGfIw#EJ?~%hbH##geLZHhbH!Kso-Cg+Adt@soh$=stBz8m z#chZ<#zvGK;=5^f*}=Y>XO|u1yNP!BfxdLx{lZUIpr~K@ZrOiU?Yi`c7@dpObX}sI z#J78BCxH-YYRYeModjAO9kH0j(2Xr!>@R(6I|;OiCT9?FArk(Q6MrO$JHv^it^tW7 zUBJ072TxCMZq=2kmW?vJ!{Ihww!mj}u-U>%%0|Wl;cu=sGXn3Pru;t!!he@{q8BHN z7iVjRB}qNPyZww&i|I&UgTpA{nypC1`{t%^Bo=S^7< zBJIl{q7W$u;2+&0T=#rrWXmr&y9S>ZYVf(C2ICVzJjH%ZvOX0w_yt7d)Zh!a!Qud` z(_Jyz0Sq<%)MyFI3qQ($;JDoaFWsj6fZN-YlWB;?$T$W6tz-S^^nARihWfj2)cSi| z{UE%E4Xbf1Ew-nWf0tWaf#!JI0W*dWZyC^>2G0?i(_p5#McGY4bBi*jIc5GtXn`_= z7Sa5w)12o%RYkE0-uQ$lPC&-oMNvr0a?Q7HI=fc4v5ppii-CMP3BA;LlXhX3+sg$Z z;$&0)IBVfq(4rn65mAqih=nM25i7uYc=Z(P4r?x)JL=#O5gh^$5%oWaxMf+=yPEep z#FwN(4!$tt;PG`Rx4D~C2R~b?e=9J#93A{xJuX647Uh`3UIQ`kt68&a(HY4BD})!#~P^=GwUv-cAj-6SQbM5#cPXMG^-V23kb3sv7y_0&Zj3&T16* zB1icyK79yYRv^q@)chKx@Skm|Fn2D}OCh&A;KS}yfj06}PZ1~xZr-^DZ@6L|VCS6~ z(AvSpeZhVB3Au|u=N$R1Kfk5rE=~1p73tf2s(}*rtWYI%55F@Y z?2M`MND$3bd9)n@vYN7}^ zP8gXx{!_FI5^Ve{%mqxQZZv^^lt>XD|D7g>TvK!e!n66zb}~hrp7Ry(v$%q7`42yf zD@@Tv*yfUx14kh_22Q)p1=9Dh?I1f~w+hK^_kiT~s`=1(=*baC+in{7PFn55W`)#9 zYAFPg)7my6IsXrm8^8Y~BsWh1$xXu`K-A@?VIVnGSCV_g3erJ06?m628%kQe(9HBe za?co*BHW@XI_hKz(NP?puiKgJrZAg50O6GCE!YNqx*Yko(+x8lYG-qQv(~ zCD6+-(`(rUU|PS&FY;X)HzNn$^4^*p>;Dh3$+0x_Rcs#StFEu`bu7pOot7Dft}Kji zCw;d+y4!n7-BA{F{!wDPkXdW^IC&LgJK`xYOdM}2Y)71z)v9p2z;G`GJ+yTVlC#cN zgcMlkc7b(5DLI!NQ;^G9=NUqB)`=r55$gnwm?Ut-4uPWGOc(2AaL2CpD1k8RS~SxlR#MTd2S}AZ>LwNG~ZVRN!-1 zxXJFoR>jPQTW6p^XB$TgDX@*n!778THniV>TyAQqGUBr66gyO$yQokT(9ctDwu0 zlCuIMYoP^5aT^3vG!vGp10GFJ0nAsx!FeWlf-~zAoLNsTLf8$72-_hsb-b}p1ZL=H zcRW^cBI)C?h%0Wl4{komt8KGwO_lBR7T!*8 zcH8NIUu#V)j~qMvxLJ0rE-PC`XF~;B{;A$?C43hD zD6ve=`eQtX_gh9SSmwo!#g5e+MyCROm(eV*a9Q9B&qs9F7cL8Y;Ri}`u4`E^>2B6T zCvJdV7Wl#og%tS0W#oL}XG#hc=zQTm*{CmE7Wl#iLUO(k$A#UF3rht!;sAjoUJp1r z16USyb)ZN58*s#_0Y|3mz!6Ud9C2TjzobFR1P~o zh_Lg6w^~1VtM!AoT0eNJ^@F!!CyV8tyhWxue+JLVpNk)S7QwL2hWwzNb$;s>&GB-6 z0{X36?Dy&L+6I8IiiO=`Z50vy0tVLjMiaY3uf;xkuLfZgobeFHH~?T90OJ`M?h0sJ zBf|p$=dq`p?bQIfX=5|uL#~o(Zr=E?(yVJ^nwvOot>-4Jvt*i^IUXZ4=PjA$+~rE8 zh0ApQvR+5VVNLg25@)nE?K*YF??&(knX8eGn)w$fA_o*xR&GvP8$qjS)~95&ut z!p3x`jr1Mw~=|q-8I+Nv) zy6`$2XXdS*8z8B=LOuP}g>cxytP?+lukmA0;CrE;%8la`fzVC zCZTcfz$tdydKEkZZ(DEv8{W3=`bb@U*QSWVZ`Qupwl2eJQeTXH$h{{kugH$2O|UGt zdAjYUL40iBm(C~l@osIJ7#q0Gi$DT)&$<~St2=hcIP|&(NL$-oh0BEGSx*j+tx)c_gqjr#=V-J*ge{3>3uPpi4gXY=B_|V1^dbIh=&p6;}Q97a?YixknkDb z90l+Bi)j(Wy1GPVnsqW=9Bi=vExN%TUmSRy?_ir5^Hryti-RfYMMCPfQ&Qw|8vT1A z1)a2*+@!Mtwub(*$C(m~d-cRsn00U)(^p~AVFJh5fa#f~jOI=S(0c`$QVALF)h6U(Dr3>@)_@#SQaQFjUrN1RI5_Sr@pNm| z2=Rg&`7hF6AdGB{$`{Atd$e#qr)@;lLo2p~C|JV{B; zCSQzpSo#fXlW!QC%)Ehh01J)AfoQDqb+O8yqO9DtE5EwBw$j$x2j2)AYw*|5C(wcR zTGfGIj=3gS>Z*3Tha8DD(Jljy*cfnRju~G=v2ODu>oIvwP< zQ5!`1$ZQf-xkCrawL5f>{34ird>+g`{vFIdJ`*K zrs2KD&@vF*$&(S-DZ*6Eo;+ci6Y)HuIT16>?d&`+G&hVg&Dm_F?4G-ElxfarCo9bw zZ8>O>d1wXhSkR%ALpqjnNDY@mYPXd;>Z1K(l$YNDFu$ec*Kq&WE=q^f5#B}EDv5ii z9A%fL!pwTadN=}aUyq7JFOLnUhPK=Wt?xmUJsNh|~B(&I`;4k>DD&{3p@d|7Gg}oM# z7l53vl}LDzSXYvw&3=!m&Su&NBMY<-sFW9prMyTizaK>99f*cbokELkQuf5(Uyq=>-q28BJi4^rgZXZRhkawpYHnS1prlXWu9X2hZX zSt@(ZiZn&}6rwoIK_xrVxoFqOZB%+KLm?&nD7_<{-;waH&M7-OOR_^DAzH_^)8bhm0aDSTsI)s zh(EZxnnSsEK(6Ubs*|~KLp%j5x(Wqwb98N&o1=qtFb=lJ zONqafT<(-_*^W^wLehwlT-$%PfPEhGIV#MShB|wNYiX);TLBs@PJ(5K-P1deG8=5hb6Gx`a z91)R291-_kne@IN+^qJhJIi=SNJh7ZWOQ3dMz^Yrekm2#A7)d>=EN65>{kb( z@3ya@a^i?f;fQFrBf@q28ezkAd*z$f}uoB9|YHQz0b)t z9oH5Hw#wHtVYlDeDrnAS5FWr|JI#tL0b0b`I3nUFlEc-o4nW4L_1Lh+B7~27o|fmi zM}9RezomT@w%}if0SW!Q@>K0-JuShrED+q#UoMv^xuHJ+TBN@?vGb12lGu62b&Y@t4-g@wa)HePrbPmJ(rWjp}mNlQH zGV*u@jUUB9aD(+SJ)P(r0BBA}-WQtFkpyT_g+hdr->%q3g(q?H11%!#%0pwgL6gVV z%J0XpEzUCm4(S#Ehjb5sL%Q-$j#XK;^I5k18tFH=G|}){Z`3f}mcIRHyDfbix^fW& zQTixvOLIrc4~GdxjmMVs1^Z$OlUa$GVDK%06S2BLO!Eb*0B-v<4#EdWzc+|fg0fQn zNIUxB68E5!D?sDK+auu_oVZpJH*RdF(x5pb;et5v-OCHStA2>f#I)p%?A0jA1v+!) zLX)TH%$buUPu7_;#}{A)G7y8nGenMH4(9wN?mftA zafR--TD4%BQ<;A$cVU`yBHZPn&3I-sjn%+sT&At$DX7v5fjZUL8+uA_!*SYq9;-qD zg4;hHmoTRBIA=h6;X5fiW4*}XCWJ?G_!d21%vm_RY^$VX!3hMpy;tH9=9_zMm~ZWs z@Gpo)qlyE$9E6(?J{(~jS)g$Ub4y|!BTE5i2;k5OE_9p=O_NaaX4Ug4C?fp?4p1M7 zGG<(=8n+=L`IiB~#$D8@v`BrkqAkal#X_z1JGzOnm4x5XL!8@k?sv4s7~59yea8i8 zy=}4I(J9zUgYP|NI^T2567f6kiWP*U=yyC#jQIq&(mx^=f;KpdkP3kg&jvl`cPx)Z zC8g3s>r=#~)dqBlT*1vdfaM)+f81pjw~oa_j(ovg^st=*XZu@@skjS4tDbE3deKUPE6ruTaJ7 ztcQZ(M^zWlwku-ZM?pU|Y+#-)faETmxjP0=n8lAEG|Z{ihDgW%Bkn!Vq)ORW@-`20y>)=+)jSE3GT&sqEI8bFQNlYkAT_Ta z^m5D3@X3^bG}0O>a`o#JE}&yxi+eW(xe7yS<9yR(-T873=z_pEbqOi(O&5^!O`i)X z@J$y44ro8wZE+5$`f{0;U4~c$d475=f;E?6fz0MzeVLm@A!w(m)t9=t7lL+LhM=9X zRWFgr+)Z5S5}D`Sf#858Zi4E!KD3}_iJ71xpz~7%bY_NtPS)@l0A7UM%LQFZufU5k zR|6l!z99sM9`;^csrFd=AlcxuRT>ql5AUcC2%6`&wx0^f^HFZN-`aI5((-ha*#z}8 zK%R|q1N_#`(*^`h^IN+a+D4-x4Bb=|JB)yqQNQ)+(*^``Lq!bTytMVM(_BmIY}={H zNk1%@Z)c-;pv*7CT4$sGSH{HrPLaPYt>3c}Yt`P+ih>m{yrL+RWhP=|_EJ>w z36*1y#Ct(qV}n`PQ`INY=|AQMcE}s_Np$c+(pnTT0{>`+zMXD|B_xeZW0SGa1{?Mi z_}+IOP?Pu)FQ4d?IqDbU+V7T4{bcGG=sI~`)0TlaMct<$ah zK#R;oN@v(z5DuBGpy}G==X96*o9xQ+zOF3yKf;9s=#K1a?T%pW4ZX#(1Lu<0Z{eWW8M z^+jM(1)pmNrsbOd$G<|GD)sTzhPTnkrVmwI&Ab-EkK!P>qYUb9N^j#w!)y*5GS5#CGJ_^Uum41+G}&A5 zIQgh4lGg9|ET(vp!5`tF1&s13eMCbOlfO_ojlfP)_SP6aW;YTcepte&b&fX~5D$?U z&Gov3*29XLPdVndH0hP1oXh-1x5j|0Nb0M?)hpJO?0~ek+!tKH5Q(dHk(?*k9l1HhGU=;)ZA5 z$J(c) zZF1YSOmo}D4+^cvt&>1=`^JOh78YiZ|nXTmCN@BN_ z%!!=|Gjp8SZM7@6ZmXSXZm(Tw?ot*m$ZfVWjU(I%2^(>I6CQbi6|xa~BcjYoBIQ?F_hHVvq^JsM^7fcjuiwdUq4_P%T}hPB zc8m9{Eg3^Mpl2HPRDJHWTQQ|$DAH>wf2ti$(qp2U2khS9=gvdcU!cf`xx-(T4s08F z8mtWd7)c{~2<)zkVjTcZL01Z&HOiCuzEhRVSf?qOLu7i#b!88heVZMzU6JxPvwDJ; zR}qmn1<~j5BCla3AJZ6c*F8q%)q|&H+Om(MoR@w~C*g^}3EYw+^l+1Xu#^5cDlg!O zB_r!tWV@cT{#4ICg|bHF^>HtGejI#PT;%yNZ47z-lZ!I=FH4i&h^7EXtk-UpiEWy# zGOA8lI4jT4%ypeUJ={cwA9Z?zK(YDj{j$S?0(W|FA zXatJf8UJWAl!rOI)AWvBn%xoYsnU+9BMm*Z1S!%fcrV00&;)77)k*J?{Y?Mi`Y|%RTU(A$7S2-s#7CDb3@7 z(%dacozi4i(SxX$otI1=S5Z5JrLZ#w>S71mV&%`!l!=qP!eX6TJ|mC)H0^52J|hnW z74|UXr=bd0Qs!xTcBt=h_m)3JC!8!}vET8VSoSHJeoNddLz#T84aDPwMh8|rg}E-9 zf99{^achwTlf8Uu$Tzz*ZhHC1Tn!_|_xqlU!vs}*SyytqQ5%0+~XV$ZY=FFOD z&aS(K=IlBFT4XHch{)um`fz^Kz+J;3Rq5nmI@^2~g;kHo@mcR9gpx-P6`dLPd|piE zSN{2(pX8gjZ?aA2Xj7`!HI?G026#^6@hqg|O!_rcy?MTw4q(XSAC;aNX!80e8)zCeyhVCI6 z`d5^bcmJ19A0rw%WMB-N;1Cz4mR)D6#2U)MIexgw7vJ8sOVY>XA-1zzra74nkq6aI zW=wMjBaatav%M@v^0oS2dS7TID@I6{ndXM5t0kWsqL}8UijND;O%<8u4o41=2e$5T zB-7j`(((E**KHz!<~EUjt@-Q;L(bY^O-cM7x8?|Pr|8~%y3zA zk_hveHyh@;Er+WSKSg5;V{&Hhms}#ke4MTu;R1yDy%g>+zvES}8hD0I2M{{Jh0GKI zab}88p!?Z>;POz*op?QxYpgAY1fN8c8nDq(f1c`H9U^V`@}Fp2xMH0DD+smN?^sEU z`2-+KL*76^&6a1sV|ARf^BF*H59kR_ZzY4Jg3s7W4dwaVF6Dd>LUt0*u|XS6y91da zWF^^K!hEFAO53)*06lJd7H`q`jBT%jXTeq@z;m4Gw)gQ?O}qeFWi<(_4Z&8+&?doF z1JNeIR@+b?^fK=QCpR%)182?)0JMhHGKcze&#~5_{{PZMGQT~Y&(cDRGxmFK&KeHL zkXP;9o@vOdup6C?&^G*M2sYpSQFQF{ zc!}O5Z7d14gpJ3HyUZb`|VWryh=q)P52J4~D*xufhb zN$d_Xmsr7N7w9#K1@S}!_7Dq)p^<}e?fqsi;7Xgt>MdJ19e$MB5`RJf$Z=fX|BYu zDBDFF(bP#Nddvkr6P?^pWcQKOekDq75FRT0{pe1h<|Qh#MyBIO@%`vyyos=qdC-1q zv4{CVnu$J3zvxI=OG@k)aE^yxUUGk_^#laH!l2eF|9sjP**h=QTAR5_{3w1t9gq0- zpy)Q+D~a=ItCpm<%94^71@gWy(3XxsTiT`W7o~32kD>mNH0&h=F6*Tq@gt)}r~E~( z)+3`rO&l3jfaEa&7e@zN92IaeMYuQ)BfIwc5Wkgn1s5%bi*9Z>eiUz|5s06FfAn{G z;&GSl^+ap5*MTD%TC^b2)u%|6FG!VFqB!m90e&al4K(ud-d){Ecib2Ap5}_RtGjH) z@lHAz0EX0N~>Uj#xO;bJWOk#=>x|1gaK7mZhH+q*&FAH^T0?;?IG{?SA72&BhKJn?X^ zu6{VmRnf{wS3f3I^2_b`Vj+stuCDgqr~81st9p0!`!x6dnD-o4tX*AW`!oJNO@Y80 zUUj4;j;Hqnc6Y+NsmTwd*4+^d*IHA&HBmG2H(uSVuS-C1Z~ke$?#;ha&~}@X^iH=G zr@yCWd^c?k%S3h)%t_IW92 z5liBTh=)(7L)_q7Q2d}-xG4#7Q>@$^z#AIkR)-Yh`kvRpO}4XF*O!3s1PDpIDMb$< z1Fna#T~G>I#Jh7uguTpq6z=}CxfAG5Qt=)r(wKVjXrjr0D^2yzt(Sn{-tE(#aPRgp zZ7Nuk7r2z>Uf?PP&9S{3-ib}`qix;WjF#Z(?B0SJ)_uv_CQ2Q4Dy zQba_RU~-6?Ng-~UL)=VMZVtioBUOUI#k29XF>upkxakIke^dg(p&*>Y&3#lJI5jyX z04=Hnh={P4nHN<89EIRF%Kj`BuRxKi1XaaX;5v1{&TD&lff5kjTM_d<9!6pN z#R{Snv}ivdBEnwgk!U~sQ7azL548&PJcu}hbn&x9*P)v1vfk1F;SV6ZgMX$Y8l6^x z7OAcj5m9Np6q3e^A!*>EKIbT(SEgQPri7dIiq{bB@Mhd=Gu(88!aphj;U;i$B#5Na zSni|&T2vZ{h_ILWG%AfxwBjjPU1-IFyqRDEH)&2ogiJH9K}CzW>bH2M(RhPOr z;CE6hmKKXH!e(5bl}5p83^F#krpBN;iVnXx?rjK~k!AY}X4;OG#-n4C-b_pSZ&w;a zu+q2#g>@PpoO<`O(uh=!m4@Z(>so0H#!BPQ;5WOxmjPfoaS!6(V!`N2<0HGA$j?gS z6!eI3M_6f$_!ovG!-E@=u$*}CPcd&#&`iILT+b|NK+1r%vjfsymOZRA9Or#j8bPfC zu+sQFvS)8J%H_1>eA)!O{Ua#4&Grgb8u3Gt-jH_&At^IvW&#!BN+^hL>gj?`&MiOzuCJ}Zr&)-2}yyCZwgOXY5AnZeE)J48f0t|Ey3F|x<2iqLn5p)A$bTQI zesk~k_t3;KNpC14)#B$ zV^LF^;UZAFkEs~(KVUAj{oStpA4kWQ#K%#tioOU>dXt|^l?S=0e^qgY=w6iD_={dG zF9G45i{joYu2dCns%?5HXpsSoBckJLO=x@_5E@^rL*r|e4s$(@o4VqSi0aqi)hNS_ zlRyaw4}g>Jf@rvT)rz1LwCMPXhzNU`&7$M$rdsh~Zp~3qyc5wZl-<(RTMQuVdSKFf z{v=m%vl9bok$OrI5f#H;Au;S362l%LG3>6~yyCd2EAp~Yw8R1LUkG28@w0K$}9a< z3T-W>&(n%umx@2!6pQg?`R60!?sfoNWA5-peXJf-SxaV>JzOwx( ztjQ#G2MFRIJcDf0yx3fi!D|4=d9gVH-UXQM;Ta`UJ_VS;pNeM?$JBq?7G7+g$5$L5 zcbxY;s7VB;O_LxUk{k@MmB$I`zyyOW1r*e3`-*w-P)M9FRp=GP^$CE*j^F}Cg^464 z1M;|Iu#W>-?PyQSFSY3-Q40Sk4gwdc?J+>xV<|whyad+#vxHL)wMeJ{PKno?Co*SJ zPl?|_bS2Bp)YA+K|0oVZP>%r+735|qBDjJJwM>51L(9ziONeepnciK>d%Kj#WrA>Q z%<>M<0-(GDpi@m>0Gtk>eE|^a3%D}V0m-XH{LiECSZkA@Ev1#Q)H3O16^hW0*f0Dny03s{x8MwbSD1c)MeyBAa z&oxO4D~j}_f9Wf@qZ_fGB4wMYs)1#NAK`{{A=Z9|HGl$cx2>OYCWwl$9|WT?X~qXM)mzrgb?rg0NEV%6E6w}d0OE{=Hm^SJjEN3dWx;%=mn{{_u;5dxzzvcnNX$1h|u2|I`ws!gX@>c>Wq!2{(4!RaqN)mWLVl$ zs@Y+@d4F~t8#}!2NqQ5F?f#t^ePCGpqd`vwExH$zo=}TGa+ZFXaM8G{@d97suvQ~; z;ILl7G$!P*24W*opgOF5EzFa{0;gq9;7T8O9q~B0Skrz-1*C{G!i7SXH2BGAkJbO3 z{<112KBxX!=VcJI9;W_p&bc6H{Yw2R=Ti{0?xf)vJ0v4CL+luV={BG0+ z4!7({>u=9M30X$sZtq|Gy{bY4#|=1_}-3Z`m3_q%#BbtC8wRMTjxajXv-5gij!ezP5E29F4i zwadV;WiVW95eye2-EdLAxww$+_yLR=-*%=aSzx^zH)!X6z2)GYgCpVGekASBd)DjM zCx7bdt6qQ07`=lEasIl;)Y%Ei@Q>o4ae>9USgpRL)TiEr(uZsi_8HyA~Fdm_+E^Xm_4(` zB)8`Sx-67fN48*FJzab=Si+)*9l{2FYhx1O45F$L>kU9@I=w`|OfOFYaiBo)cc%l^ z0EQi&;=to64qTq%kk8ZVrOHB?Fq$AU)i;)#BC(=$)x68Y35(InwujWL+ME`E7?_m- zYE}lQ(=b4t20$fVK#--h_|cP%!UdwX0yovR71fusvU0b(+ zc0juuR%*NXo@M^gpantWzN;_9Sc3z}4Hbt97i(L*Ohx8k@iGywScF_ihlT1w?zb>c zE(DzRyLed;bsFKt%Yta<)t}{Nw>VmU(=I@}lar@KW!!|Be4H2lCV zUVdN~FF&x0mmipg1}DP5KJKq&?$rgI)yMm zrw{-G3cFVV%@dQ$b1x)yw#fPveeL)COg5 z{~4b;M_8?&1R%`fs4&J z7h9hevm1dMCzYR?x_Y`4{B#?BIziwc4XO`(;S{-`a&5kF8(cpb_`*$ay;aB;POwmY zVY`L-@`d%$^+)K9%Hit~uL^XEGj+&tI&`|-25zn&CZf0x+`#;gMFVm&=6Yky_12gl zLJ3($V$7egK=GCu?KTeHb>;G1!NOU`id)CboK*i#b~pgH|H8Mk46$;QH^C_2!eVM8Ns zaZ?Lbe@0oDFZ}_3QT;(gM1Qz-?wp*CB<`GC@^suejE8C5Xlyl9{vc4bSVv(JSLoVp zh=zg%s%^WW0d^ZAj^}8+55dCRz=G=_4b?qVth$GQ(Y+Gn9w<hjdSH zNcRNiP4{k$Q3@ZX$==6GoUmRUs`6l#`0PB~jy#jO1@N#hcWh$16IVDRWi7FW?S0zKh zDA_C!2MQD=TL4%C7*R68Ate(WQZm7LQnF#|%Qeu`qO$GeDILAgpA7 zlh^mWL%1MpfSRObi*dFGN@jDi3PQ;MXCX0ltRb#dE*dE?bWD#u;n^pATiL|X#Us5*izRYwGjI(jH>puqo+z3%{ztGL>}vv-SD zb$3$<=1jTg&Si7V16TpjF-L|&=E!i! z92xE>bKJ53w-D1}c`7Wa`bBMzV2FMy0VE-)KrzzRDozC58*oJ!)5?006J=5IHU%KLuz2SpVW}=Z-raA zp@w#?hFVqv)KCZnjr%xumv~e~;Iz$gwof3I1OVp%97Ny(uNa`!*>Awq26T2JiU&IL zws3ToXF$cG+N_>-Vhp~SBA-vs=ZlT@GOzzs)Zo_ZcFC;j$)mLVVIfwJ3`&A?!2y8_hO zF8$qk+C$-3*nC(CDEs|->NfQKdY}#julrD6f@(L%P(azugP`o@0Vw;OaY5Pdj03eb z-umGeyaZ)m@B+$y>|RjzWA{MWH~j=<-}Fn$B^!82o3z1^!MTcf?{%7!w~-(`!qtw5 z7haG$d_??$)P5u4BT{NGG68zNgu(T1qxt-rsyC{djIeQ@F~T;;nT)Upe}kLlJAKc) z8ezO*cKm`QhivmLEJ^ig0yD$QGFi8vGW}GPZrF=%OaG0h|8~QFurj++O0ePBXE#9E zR~7|zp^1?P%DMwV*^@}1tXc$R)uJy)AtvH-ISLhs%jGDXD|#zM?uM>*8SYo90kHCJ z%~&;_+|y6Rs)87K=`*+wr7C!@P*C>0Lev^_Uc}oP{}lC}^glCSz6Z+QXeTIpxgb#X zq*WTUUp5A6{8BVV4GOC9Co3$4_7ws_*(+mE>nmt$M=+*q%`$;yK-pPgl#EXkIG6My z66u?3BYkhi1HC*O>HCKmLuPIDz5!)|7#7!9nIMQHRP`$*($|6#>3f^0E0Mkylt^C! zJy3epm%euk{wWGg#ck5V&akZ8_Z5V7dyx)m*?})8JMiS%an>RcUM zFhMm#d<4*EOaZQ2WWY7c3-?gR%v;vmLXv)ivQ*vJ*NPI>oRF7G`rdKhdn{GNV_%pn>$n)c zBbu`k>aO9p{|A(}AsxLSl`{ejW%?|xOrL4+FHq~yW$FVlsceFM13dQy!CFE*fL%-E zU*P&+6n&Pcre()c)DJCjP}K3scwL3wlOx-RU(S!bsO|V={K$)P3ohjWBsZ^2)B^~n z+()}1Gyldl0!w;?|DgIisILBpFy2Z_68u!`L6^JG11g{_qrc8^7>)nQx)vmjTS3ye z6eNv1DOzXz$2vV?<6X@4Cupol*Lb(&YrIxVZ_ZbeOzQt?W&{bGF< z@syaK{&|YlM0fC6`uU8qpQT4Fdxz?sjIwvA0%fmW%>{vI&|K#Vl>H!%*tGp14p8NoSG@5HSQ0phizMN3f;CORC2vGI|JAw*6u+trU7D7<=WA>=^ z3fMUaD+b-5{VY9D_X73wEf!@zW)GCTiS`#vd}oOGb>;;|>C3*rh+6go^MbM;m}{EYJf*X9IzxPxl;GGz5XPBURi~!D=S*Wme$tQ7P>yim)&wYsA(76xc>^yWM*R%5wb>d7!l;KQ2 zl;KP|)SNx`5tnR_eWIF z7H42$sX899U1nbBLIJ?R#IRm6XlD43YjobnC1`5+Co!YUFGRq@!U;DVYu^CG!ELWJ0JsR)XkeqGEP|Qg@+|IowEhr~3a>#09DG zd~{huN0-(1=n~-fV2b#**MQe)&4@Bm<# z2Jx1Ev&E5{!_#{z+KQUwq3G%TD17MrBEaNs{H6+quK`T{$ZyIrOih!+@|(uQhoL;d zxHzGy+G5G6`c2~*z8SS?{TOZP^x~CZgIJ_0BM-y_aXA{}VGJq6nO+!M6l#&|v$iirSdLAf=|;RK27oQ=kEHU4_(fOSJ$x zPE`yeVgsmXTc?H*(82K20?#((Z_uzQf2W2``7Y2g3BAviUaKbJn+~S#Z755ysr!J2 zP2Ken9q`oZy${eI2>M<@ zFY*2f7~g%!68-?-V+cOR%-rp9^=2={a7(9GxnD$$o-6toiS)u*$Fo2w{}5DUogqEd zq$fxa#~=!Rmes5EG*s4IdQ#5+03B+mf0OLB297=jkCH(@d`$H?@iCqc^6^unfMdEb zM##r#kcK{d%rJnYtomuqh>M*~e%+4Mg@a8m6JkK8AX~1<}$C03Y(WKG99C0B74?eB{q5_<^!0MGlqH zS)_l0CMfN#LQZyn1`lX9^t9PYnZt*r_LN8ej&`7r@+z zIQ8>Ujphr0zXNy)feRVD7hpSqm@$BT6yUE2#Eb#(&j7CjNcyCPUk2O&sDdHtb3TEX zE`TIZls_h3dA;!d4l4YQ*)&5d5XV=($GjJe{-dvMCb~}aYIe|5W-)UQ_JIr7*MP7O zAP2F?hJAn;fQEg5g8>@$0geJ_*auh*(6SGBXTX|$KwS>Pq3 z?~kenMBqL9i@;m$8U;9F9x{ga05AtZ%q(N9Pyn6)kYx;u1GpR@%NQ01@aF(o#;`bm z=Kv%b!{UYkybK_T81@FpiWmzN4T^}f@sUqNt%#AdB5s9<38h6$NiAY3Wkh@~MErOZ zB3^_3Xsh*D6cWA_0Li=Zk5N8Kx*M<+O<-_ z7BMBYh^dqj@r4laY!Y!E`eQ4eMKUe}L{?lcA|4L#TNLr6n0iA*TzjmDIE902`l(^S z1tJDeJt7b>z?}ga5d+){pb;^^9|ANY26#9?BVvHl0ctA-6cVxNlx8FHnYwA31bv~xaI^_*Qst6BzRG^wc!h#u9ERnKCLKTS3ak*1pL`iS}* z@}VYGeI=kZPw9OH(z4s|n>vG|_ zY7lRbE`kM)(#1)?(M7Pp;mA0BUBsJ#4AnK7j(1xoEaSnc2=~h6G4E``4IM+cZi5>E zoMWw2_|HGVC%ve!e$-~d`KYjS7Ch4T@$w{F8z=QNLAiRGKvHj4BTbX52$C|9ro9-F zVt&(|%L&vwRa`>BkSSWjkSPi)k05ANkByN?n_XQNX|vr|#}H)p`f3(IW}~l;CCKdZ z)og0dZ1G1b&?p=srH90SiwVw!?5g6}QH}E!A{kjG&{%IdLCd|7G1@?k^;QGqGin@5{Emc{jS;sR!pL4>X@>v>~#@zuXzGhHn*CfgBML_akQ z2p)tyA~hgub^!Ac+-%nD08avF*6aXR0@Q1EYUVtE3ui9kEek+ul?DKf#}R-XJEjcR zR`;^%++CK{SE0G=5AZfaLCjl&G&E@V0q=M>EfB;;0hU^hQ+Ui#zDlCm#uXxs8pK42 zG=LzwWkC&qg22s!8XyIMo23Xq3i8%VkzoLT3XlbW1vNk;0L+pj0J{7m!{xuh@;^=Z zKMSoH9{Eln&B8|0!t561;#o7`v166+h&ML)r-o^yJW11lJW11lJW104KS`?uK#dVg z!;wDtHhhuvRy-@)5fSAG?fG0sXAtgItm}>;oVcgPc`Kyf%7HRWXQRp{Jgj8SVxxyg zR0RmZ_A|R$7;6Dd^i#utBLcw-CKnBW7fdZ0056zWG@xH69R)CdOV6X|JM6tj0Ca*$ zDZ>d@s@mMl#k6{^5~eE9f}<=Zciv8S`42Q}kmo;8 ztwD48W9wr6!*pot%5-S!(xM8}p{-0XrbAmB(;F7Q2BtL?FUo9vf-xQ1`UH=UR{}Qc zn93z$u7z7c0%Cq+UW=)1p`;$oafj6q5P^m?0Ht6FssVog0!vVU4O_!Z=!FaHRsk*m zXmkY7d009E8O|e3%5aoM8ID@3K8~4aQZ;QP03A?DNjaaQlnyDa`Y2`}K4P`^Vax`T zW|20Lq-sWGPs~PqQQCxjQQE|OQQ8E3Rs9WJ@Sws9kN}y`aA|YpTe4?Z2CiXOw_&LP zCr@wWT1UpO=TZ=Q`Ixe}ngn^bpQVR-1eNep!+;pKjpt405dnaNKOYdx3(y`w!PCLG z3}=N-^gw5l1{ z5{6V`xY-cErc^v;tGJqpR#ImRYlyYypBe_lSC%yZA=UupBP?H715gG48-KTKB)D;PbY7#`hw5Tj0a3yC{`Tvlq1W%$af& zxE+iaGyr=+1F#n~fcAnh)Y=WT^azUsw8Mp33k5t9Zof4+{R9E(K*n|Nt=F=Iv*Ydx z#@Tp#!kuv@z7a+B1h>*GT@!obau$y|inNW%sgb9}*8udA=7o@nfbwJrB;|dMd_{S^ zLSzay63a}uZwvrU%6mYCq^zMuNpAbL-?5CVFB08!6pC(CD#;?|8C0iv0@Z1rKXsa? z&va5zQ$%iN9NNgx>p+=Z>Awl|-#+-SI2lBzT!i5sicSH_2B*BqC>xvtl#NZnW*)U{ zYzj~|G==Ve4#hkIWg}BW6E@}%C>v|Cj%(Ri6QJypMQp;xJOX7STl@s|Wg}aFdg7$G zSFj%M8tA@W)hhy^?4n3eHc}EO8?+)Q8z~8t4N(!4jg$n+2CE3l1{(rp!&U@kgD8Qr z0W5;DL6jwfIb4Ml$03S<=`pUr2vIB<#Gx((tLXqJ(uIL~02Ia|nDiiyV(8v#akIq544W~jKxg4l;<)kT~fjkDvP)v;#mMwfXc}X zcQH)yDW@}x5JTW8JmpM=5n@R75n@PY!Xbv~5)Muw7)gpv(MbwT(MgI-p=3!h2c}%W zZS|n7Vvb8`m%bUMu#{`1?@q!~RLXA{M)+h|20)f zN{de8N#Q}6c)NcslY)&afx`?`=1tg|Kk|tnegucr@7uAeOu?fmWu|?`?O%8O@xM`5>d-e z6z^~?J5itmXQBY?_<6vNb4OEl^{ySTd36y*9cK^N@$i5hw+`6xVfm`oFcjtuMIsy;@lUv`KizEIJFuC;|Y5mvcm7X0qbwnSQoE>uNJq(jm--|1g zuRdFmQ$K*=mToWI8o2ed*sUMID4Gw>Vz)j+iZV=YeJ;ZYI|QEG`Uwmp>JV_?))91= zJ}YqRX9aHkERHy&k%j`+t)IzmeHpifc*Bx2*{!dTz8NOB-YR{;t)Izm{URw3w|<6k z>t`6Zeg;n3sTZKMTVKU){VLQcIgi5(*Kl8GN=lL_lE!&rk-FXHjO4l^Y19e_H_kU(lohZ#mS z$RR)mr^5^h{1`Q9aY;u&FV3bOc0jGUM4WLxQPk6J{9Iu!I>JtO+wDID^_Y z%rFOR5R24A9O>nSxCi_hEcqz|Us5qwt_=dt*$(6&T0Ac!6>|_PPLYU%&@!bd5|Qc; zMw%iKMZc-eHNP>*EoqKA8GAR5=GFG-I%AiO@$ykjH#F^7W z3Ti*v*3}ZB40<{t8QqdW4=5z#A<3X;6q2!CGUzddWOPafJ*kk4wa7pO`{p*Ir9}-v z27(c(Kn{`=j7aGO(#Pm(Yg!@%&eULsfDIaat0h8h%wUjG(`~9=QV5intu%d20Z(^? z<eX0##$Vf}j`V^^_)c9lQ|f)V!xj7gHv z6pVO~pgRS<#5)==J-sJ91tZQ9e7E46y+sVSbb2{>D}aI#iJc)x(_<^v6VeonXwnpn z$Z7q-hh=C0%Tvm-%T5B^W#|789crk5lX9*x^eq|XB^YtpC&U%CgI4;fm`3U#0R!qF z0RvtmK>`NUK>|_KCDrL50R!qF0Rx&K0Rx*L0Rz|bL;q~tz$Qq*z%v+MZSf{Zz~F6= zfXT2y0w!Yy#{}RJt;w)K0y*G-#6pT1gtX(qD8q4El;NytbN&(dvBcl)U{D7!AR|Fd zWk803Ixz7uMk*eKQ;!HK7>v)IQAh!Ssy+u0g%l8!Kw5kTg%l7ZTYL&B$oUZOvY-|T ze{hfDkOE5MKzRtjxs0IH9Gg1Mro>O=e4sd_fT~fNLJCZpLJCZpLJCZpLJCZpLJCZp zLJCZpLJCZpLJCZpLJCZpLJCZpLJBzjo}B;ffHy=uw%f$8iijEv<#awNHk-meh<+*x z1c^w86c9*Fuo>dBd>Ygt1qRe11qRe11qLJ|#8I~a*#_|l)4*(l2q`cy+aN*;3~WLQ z49w3|5K>@ZvOo$cFfbb+g%nT*v7$o?45&j2Vwx2jQV>Um4JjCf*W^MW1%$I91&bMH zLkb1~=h`+h98;zej59QicI1We_A# zKu=K!IbcZ2P{;v;QqFI>jX^y2J%X_@LU0ChqF5qjrZG`?szGorSJ zMRYwUgSXB+o{9oNw!sf<4S=(e#a>Kf^y5GR7vu4XejG^PN`U5J1wi{i;ymOdfW|zK z7zCVsR7j(XGMvK(%5WZ8P=@oIf-;HEjq0JUe6?M{=G`;n^W)E&}a% zagjRDSs39bhm;?1XOe?{@}4mE1n!C<=PXgHp=@J3}lcuCxtb&_v-~<7zBFWL@1x0bX|$R zg{t~RF#~TG!g<~ix8ODEa0UL-swNqHfLTz%g+{oBAHBs^L`*Gv&6B?T>Ql6!FTbL? z`tmEzmCLWbq&^bz=qMqNs`znVfj>gM0BYJb^_^4>KNTCH)*$~4qV!})2f-8e{-_bb zy;wr2y%#Gv!et_N41dg@a9UjBjkuEI-JSqDGKx>&%UW0jHGEkM3uX_#tc7!TXJYshAWTJ`f1vsSdg{_t zbTSQ~BL6_OcuAu-iKsXkJ^>S$5k>OAUZObAr7HI@hyN+u`J z(Rl02!hR1PXVFi^&R1IwOn55;_Qx3Zf!YJ+kX;UwAa0U=j=g2+_ff4Gc-o3* zT$A-RZYId}pZVlMf3FI_zDa+LeDql>4Q+@0w; z{U#Eb_TN;=ay-;}v$x*fR6iP?@ZvWixQMI{pUp6OOTMX=fv+Y)k=|l&sx+F|pWv80 zGBwIV(e0r9r*AZ^yy@}-ysM#}Ktmq{8v0wHq4$~P9l4t!|DlFT{bLcKg{zu#OyR5Xd!Wz84|>^V8VIY*Yvq}=QDz3XL3m`p zpYh?8VK1;FBPp&_;eJa-$mZgC>Ua|kv>>&EQU{WfdU{!C8i>oQ65cEzwTV_3EoFdn zY?KO5MZqhm@GS|lXV3BloMWX_+u@5c96K%9Ls>PK?2h9&+^IzZDA`R}MVIa>+`q=X zjr$L6wJbGPsmDQm^{2g6283nps2rCy;9Qjp{p_+4Gn-lITP({s>%verz_PB zQoYZ5s|<*y5ee__qy_ORDWkG9aMO@KrUE#b4%&^m6YeeGY6-VANi4Qc((?h~u7(+$ zL^x^FGi_#obGW4pSCMCi6nRESk*h-A!{LicxJrI8WTP*HZ1nk%jXo#b*K%)1{)aX?D3y!1ctCx3 zqPNO`u&h1Yi#6a}l_A4ntvKb{N|D&gztGO6s;oG5P(+;qQaf^l)IeoGTs=79okdy@ z$MBgsNyz}`*m)Wmr=#G#RCpa87-3&KQF|CF?2b!hIDAnFS7k?r#^n*AaXB>@m!*db z_i{&GQ=l>*p>KUzZR#sJd1$9oDi zzn!A=3RPbz){BrU@#$fZ+L-FCIUx2Ln(%T5TFv!X%>n0X4jCQ_?n;GM6%k)8R&&6) znnQ-eR|Xlb=B^8A?%I&%)`T?oYvKMb?rp`UYfh`|84Na1Usv8+Wk6Wgc1XFb0q3d= z84hd3FS;swL5QA(b~agM-j$>2xZ#zBm`P{{>@5P_blmVq{KauYg>cY#1>ta+=YgE3#psgNSRBz$MUPi`uXx@GCt|1Y4`e`#i&qFLcD$N36nCcJ zPGR-m$U@Nv(Zs$~l&;rL`gOC+=J0s6^-~FN^CsO2s*XXc&!afEicg@^bV;qmPvF^- z`id{+$&zyM+>Vw%Q@Pm-jb?M?&>=?-9T3n7bgvPbyOI4M;l42zHb+j1_;ZJY{4G=p ztkw+^Id+>}baV@skEFlSN@t5+(%C{)poz`#PnGaaztc)*i(b;%Liu0Dy>}*PX~nk< zq%$s%&e%XY)hwNTxY=8cbowk0`Ih1UKdGjG%9>HaY#qc;Kb231PWe01e|+eabg54I zt%i4eNWftLCkV^5(cmP>YFfVS$eNaKJF@=e+m3&sgA5jafj?9=fSz_uPdgCwQ_-Pn z*|ey435khnV(TzK@56v{OcOC%B^nj4WLfP%vEtl*%s*PqCw@okK|+n=r(#FD?MIIe zGLz2~1?BA#^1><#N zL|uWWx>3E|?Rj?rr#)4(vB%hrE_cxz)zv8WITgL0k1RYRBNTN!6^cgD>XyT7tK&_p z@!JAZzBL$@zX^urEiAjwxrfI#d075?nPiLZ#S7OUv2_~}N{w;fDIgsBDZ?2WX=E%x z)k}!O2l!;6yFt5cD(pyuG6q5%&lqt~#!_UYvsylxhh?57i_bhH^E8d{%!4vdQ-1M( z$&{A?l}Z1-Z&5It6@7^dC_!7-4!s1E2Erj60XjypDd1cgA># z(RR3(YB=6H+Fc|^_iocqrGYpO^zRR(dXow1UZ{mZxTnV=MxJon^S-=hQ3z*+_*2FO zLPR}B;w3xL;~X}k@xt;t)abhh+UVHnU$OOXYwYWW6n%?d>S#OPzbt>BTVr($ z_g}`dD=d=t7HxDw1oTtUmjj_b>k1VpJJpQleR(j|yzGj*@HI2%zRL5)3AFwG-V3F| ze^-rwPNNq5O8-qy!=eQ;+JQxLMQeoNe*V!2vIA?cBh3yuc79-fEU7%-VYS}R`DtrjY zI6EL?KSKuLwgK)>0j|d2GB?X|mxt;Wn`&NV|f~hR}Eh0+5S=Uj$ zr&}QGbo)9J5=^(i*&)4chKLM?G;mg2r!p=O7jTYjOa5S|Tcq^hzC)OQ5_P}VgS&qn z4^Ov)ig3;EDyXBbuD6{6;f&D~G8|c^k#P>Hc95O^s+g40ZtWB}$4;rRW0pyOjG0uZ zWoI>?**9de`-Dt(?~uvvC0hHKJ3ixEG})0wCq&enV6y$#-X;r#HQ5VGNCJV$0%w=- zZ!oUg&O*Rh$!&-5)3D@#bHrS-)S4_(+GLjq^FN``)&4b$?{jNxvV)8MitytqED`63 zI_$UB(?D2Ha9A0M)p`QLS&{#Wan@J~XD7Ok85c}+z&YwjA;X#ZD8rfgO5U-{2Be08 zQl78gM#S?mIUdhfi0Y=J)}zb+UsB({pEWZ@xPq$+0&AJ4RcjY6K)i*+^co=b!ll}* z3R1v1DoP_`D->*^!h0d|6~odVw*cojCaUdDpvZ7M6_s$^Q?4J(s7c>0gEKk4T?ZE@ z*YJb>g7%$mSi_jD!W0`~-*b!&9# zcG#@}XJxw^2f+ri1u7g^pGpJq7)HyVX#kMJ!DMSj3*idii+FjXfIAa6RU-s%hFM(#=O~a0--kwaqrxw6 z;jA4=z_}v{8SY3zhBI(d$Z(G4GCvHBqys`DX>w>JO%j9I95+iR{YSr@k<`D+X7vm# zx)|0E!L_Uu^<=Fx1Hzu*C58}N!3iF4Ry~I@&Z;L3oE^`E4o^b02l%zGPKAlJpCu+{ADX6t zxDFoRDjK-r0kXyeq=0i&PKAGtf-h0wgNBiP)LEARoIA>qaaT8KQii#51#ZknwP0lz`2q`hLzm1 z;jZL>TaAWh2MslwhDwgX3yZQIKuT5yrAUdFQ3qvaiXa|ClcmQhb^MGO-k*@h6|3Kd zG;+)MnRa=!sRvh_7OnTy&mfw*b`ed=iUtVFE#3PKcWvw>1)M7yWZ1EE4Hvd!spJLg zP@flvx*i4knX^7yjf|;^qF1qs1pAFw^&V3|tUFS95700XS5jfe6mTy4$haN_y)h_! zQzgmDv#taP7FAK>JAR8IDK5HFsY}5~cZU{z8@1R3={*eHtb`y& zZbm_R?Y|Q(rRcFAeqTL+AiZ}=ea|mZqqoF5O5?MPrKgT1svYTFfx~6Lu@d!bKyzl| z&27B(Ex3INx4?@Jg#4*2633au98M(4c{JVuq-W#kZUvC*H+i_XGZY0^;tx}k(O{=0 zq=o9>r=r97-pr=0m=HkwBMxsWbqzv>F_Hhmm7gF)Lrm5}FMkZ)&8NQ95e1{wk5QqW zfCKR^pOBjv!NeVk=3p(Fsz$uU$!&r{q*=CUe|t3(^=sB@8Bz`WRCIgw3etwO?bZ7s z(zbU<6G)Sm*j=5d=|S>jos93M#h1UErcfP{7|%3*?$C%EPc4l|YZ_bCsc5M7_d;Wh zrLk502=lq2v6ZP}Iu?5c=c`qyGYxpG1nyp*IEQ;X9k)1htxW(2T%qO(*UI{3usv2rIxYiRR@ZygYsA4mX={C z>o=`jp7@#iBXUVIiPP1iNVX#xKi!DwbR(u|iBp;IDssVTqR(&YIVDFc6|7-Bn|Dhj z>SeX8u2o$qRC{M{eO{|hGIWCKYXdqVtD9L?tALL-wcN8jaRYaG33aJEic!AE>Re=h zO;-D;=g@22UD9h1Q@4*A9Svl)kE#Y_WVKH~17x+2$m(4*gL^N27>MV9Ks*N+@f={p zb8upRrgc}eE8>YX)fwsV1-dMjlz*x6Fv?PQ3xW39lIW%CY(o;na%n&k#BvpjGc zh-Da>fmmh-Vwn|)WtQ%Q7L=!-ir%i)7?L2C z+XIpymOrpqeh0kY)IKe-miu~;`m$EpK23zuiCo;R93EE%ey7?Keb(M9eYQ}C_^D{8 z8jL79GnzY{KL3mR+yZ#qVlpjpKlix{z@X0#-RE}5{aT-os9N;d^|d}9QLUjqA94EZ z;yy1keLl{8-q^cO5OB@cdo0%x)_C{jR$yll!}kfpf%|%zyE_{=awJcygE7q+D-fKX zh7x#77Nw}A#0yN-G!!j(UY&y6b`su!0DfkGgW}H{LwJUXKAuWHr&giB2}njxwqo;} zYRTiyLT)dam1t#h2}CwufXc1+3kz9vNk4^n<#zlvGig$NfQHOWDmcwTF~vZ~i!@zG z=;^db>FG3|Dg77f8lK=}z~1#lgxp%p-4Ygz$xXu3M?M;3m=AHoV? z$y?y`rw<`aKZw=|YZ!!+sJ@WL2yc72u)92G7xv3kW^*q-!J zVY}3)hA88ucR&&BF`yi;2WPd4&V~_u;J{1Sb#=ujfp%{3erlUqX)e_Wt69b>x3(%cy}Gau}k*)_~V=L)L)fc%zMWng2jG1|sp=7tWHZKaG;Lo9_?x)qdcs z<_VDyUGhmk6$8Rynlc=%Mv?JFPsBTd#PSu`f|`xUsPHI=vyE`XCl$8xg^a`UrNW0` z7(Zm>OBs%FQ-)*Gl;Mv2(Q@uVeZ@z~xd)H@DmnL{{KQB(_n0Bwn~}dMis-BASlDSF zufXR(DqYWuuN|(OMXAE~_I$P7VQgbe_SiBIJ%<<7E*H7bn*ZR%ILy z@Ns@R0-aaCAe~p6&SOBhCX5V6c~ETW8C+b&x08l7(Qut^xW*1LAl!zL zVSUC2Xd&b?V!*lPg$!$6qcL@b%qt3)fQt&d zQzHJPEwbni91NnBttw|G-E4ukeL7v0T%eD`|23*RsFU|D3}0&aF~uE!}UZabYW8Dm)&8?`AvuOn^YRCX5V6d5HKhtJL@prQw}v zp`^LO6Re}qaIJ1Qm;ixr8%Bnm0DI6v$Wg?AbIl7G*1X1W;#CEo&aAI&99bl{1N!m7kz)n6JV~78xiI}qOG56RoMv;h}GSm#A?d~XoF&7z_~6B z8MSa{{5sNs^0L1PD5b*g1c;1SH0~`&w=x0F2u*;~Lla(n$C{ACIvcp6r}T;)x#jLMhSuTJg%@gxOzZ(v6troWk*kwj6S(1+HuoZ&u-;>yamIji7>Xjp8f!N<)MAV^ezus|))H^u zcW>SA=9uT-5mhIVgrXv$VA=%2VLFBk*RLUC;ztp0HHl@%Vp6+jL`H=VfjI9Y9LpCO zR=%^ju$3qiJC?31P(h~6t3%V~FGJJjRiSC~O7UlZ;l}?E45)thQziMUR3}L58YB{F zG$W^Ql}k462{8jFv&wZMfE^!FbgmsnMdw(DQFONT7e#G6hK{0l6<9Hu{HxVdprU55 zP|;(lxH_=wKcjef0=(Ka>%yzmL!=avGkFng!R!Qhy_o>7^7gV6f#$G$P&e-EMBB%xstn1;UX4F3hkN2As<(u4%Lr;HuCB z_>0g4_;Z=31|W1_2JZm>B7DsRooBa_&VvaM2-k#>;V2Ie3d|slUn&hRv<;{IJ)&wU z8m`q12NNI=Zo|m16W|yQ>$eYEV!*lPg$!$6bzIn*SCk5)OCGIfGtOF5dhe*20FlxY z;9j!yc>qN*@Q%QrzPpsZYrXF^*li_!++wy8?6q#ARb}^$KrF{dxfDq4i7Kp}(A8(o znjRUgDEJpD{BwDuz&_Xj&Yb{}aTO-O#Ll|q`0Jqw@UNi>@U_qc_^SA`XXLemU_kZz z1X!GZo7w}Ub?zV%2`0eXT(a@@xe-X_HrI&&c6>HNplfuN##N1-B^03Q$R`Y$LRo&XW0 zVXZm%(|2ptmXz|#JtOiunu&I<&yE{QQ)?P**!)$nE*et zJ3!zZhN!SLyH~lPPGffQ67j&*S>~+oez)HZE6+a|n=SC2-B~0QOn^W*OvjMndMIT4 z6BA$ws;ixblgK*l4iLB(kUx=dJOLuZ%6ASIw(_NxAA)>as4&TwGTaFe8IJK%33t36 z71{wF8QK9J5!wMx6*qVpcmHuPUi+?yzSdxKO!-$}uLUMM_7!2*!3^l9qChwjNc#Jk zaU28AW%ZiS1o*4a1c(S?dvN+onWqMhK=a&rg@3D3>(O~?Kj}P}0D*8#7#WW8lKxv} zkj8&24KK0{r~GT8>U}g^qZqhWrc1;(kJPny-A%(7m zD|+1u1F!j;hTu3j}ymd%H&<90N@H zbw=JX;9SExJmek^3%SQBA@_Kwc(I*E8*vWvXCkTtBce`s9=Jy!9MRCHJDstU^m~k~ z;+9*pAsK zaMlcNXPh;I#3?Z~9u$$D{kG4%G+^x~PnH4aZ^kO_>!9hozxx)d-?`r$g^1K_rufHz19$KC)LZ=uy+QO0yGoVDHnIM*8><9Mv1o~4%A8+;h@20bBf@IlBM{7uw&E>p7ockT_!@R@2=4gs|< z5f#{F6e62lc9MRx^#;JX-T)bnH;5-fgFhY`{ISsBkID!fv5gu0<$gIX+5Q71tc6ViQDF-M z&K>K>uoiX-7q%8g4ZUlwC%c((?dE#2#Dusz^8?mny(Z3!yZ{tix^gUzVZwbf47a2bW@IGZcHI_6{XU95lYthhX zRN#hU$Z*CpWjIF_@l)biczHhL=;rfJ@H0m=&QC`Q?@F#r`e@2|{YRA54(cWb0U`)&6m3kaqoAM&I5WAHI&M) zQAJ=EGfM55dTgUL`l(n=Ac-N+V|Xyt1i@RvlMUV~sBtAxxG#U%i%R)z_>TKN%+aB= zVNLR@#G6QYj&~ZO6{Fr4*0u(N53;Sr_*D4Lx-dPXZI^#3Enzr(ssQqB= z;{D-9bjdm{M{dNmC@63c-k2UZ537quQ6}lHH6I88YR?1X-mCN#89~*V3vBeaL;i#c z_zErQmI~k{Jkl-a%C|$FrCvAiLE18WNn{nM%eD$1St^Gg-oR0-KZ$xb1bz0HYhi#o z8CAAD-jb7JJ~9#?!E)b;l*?ZXD#YQ)Y#Bl!cKE(7J;51Kb47>Qs>#B({ z@67pVpIAWAa{=>5O$f%xkm(PoYtX`*)XMf^Jb%;6TeK2^JpW0pkW5fC4={g0MuZp) zs{_?K&~mpaiZet*OMEJi9hT(bfqW0M^39cx%wEHtpJv8Rp1J}Vy=*RjBj4R2+&6u9 zhj8C`eR24UTE%!+TntH7Unt7#Ho{I`)QiE3dP(%6UJ}1Z4MICdl0f8jw9fa9STE`& z#*17rqpR5$M!l_3oy8u%DiGk6fdJbB0m{4A-99Pyg702{Y^DSKDs?R>SR zQ?aUE?D-wWG=OqAh2yuQa;t#pEd!>vuuR7{=W$YxU^f{j<^IlU1qf)=1k_shxU(93 z5saVYDaJqEd<{9av&zTO@}ox7IFB)(9s|l5LI?%0LuO~?f8~1_{8M-^NTX@c8JgLh z)oB+;yz~DXC>bIx=1y=l_(g5Zi%zn`wPU2NmAj{k-xFhJqmGW(Fk@JP;w92c(U=!y z0T=n})UK%9d8G)rBagd;fY+(?6yG~IXt>ri4Ah~J(6;!eUcr(Wk2e2m_O9#HW_UGo zHPzY%R*plingCS=ffY_dEfLuIw5BwAfF9|HA_v*^lR zW*T^lqBF46C;LNUwn@wpi(D;3Js0mLpM?+pg4F7pwEKiJr(gOkWwKgt5fs{y>R)de z6}~&+es?{w|I5pymHHSWGID6g@S~q92I5+*J_b&}BYPBDeK8#K@5@zBuB5oJi*38L*YRd$GIpd1^Uq+hQ!P=QB_&E62?McVp# z9RA-ss)v4eX6qdRhY|ID+-%M`o`c#~!d!PcfcBv+4~h|Y!5hpuri( zFbqw9ysE)E&J?fX!m#=1_+T;nTV#e7v$64N1g_GVifW2b@jZBu-$lvYd2!3RyYb?d zb9dzt{s6VTfh}hRuAI3Ljdg318>t+ADmf1SCut*{+?D>Dfd6m}jnjG3UvC!KK-t3( zA=w^=0A&wD1Qi^H$Q>k1r`$op)XNe z_mN;eLUHWa&C(Sp`^8%!z@A*hM!00>j^UFFDiy)yZKGLsm=B=mpJF4G)!XRF>NE6{ zdRS-(ZW@{#ET5$#yL^sLR{Nm}FWCiUm+Z000p)Z-8eS_UpFAJQaIYzUwJJCeoIfJH z)&WgF6uO|jyBCG5V=V~JI-y_XV z;yv);mhsPfG5)zrRqj^~<6jEn^k^x3W>l7k_t{TI7cEcr8szyv&~s&t_OK^ z?`72c!4hQC)Z_ga&C%-O7W^$#wSN+dvRDk$ud*Afi$R6;0bW90sxJQo$1^ z!6`!G9y}alQ_pnVBiV4!QZjeC)W2HJXiK+Od038HG(q2v++?FYzjO2y-X zY?wU{U`0H!v+6`|)K8@8@SL4hBd7hQmgPW|<_gMhY9(;61$&kOtOB?{I^tVJlRK%0 z(a<4)ah>UpfFc?qO|>~#De3ef$vhrZxB?p}`Qmym^O)!1crB6>r5h;o$+Hy~Oj1vi z7*6!EPm3^X^-@j6CMkS;UgQEPO;VkJST2y#ByNx80x1c^a)Fd4sfVc^$puoHr2Yhm z7Lxy^67rRQn#u%C%Uc4nKwQu>=GW&lm!LP6I>|!4SYQ zm7qo%02(ugnpsHDDqwO?W7TRL8^ID&l8k^7WK zQ%|%!J|5dcEuPot5j|MoF9aEsL~i|bP9^qGuOuZ?HRSBB8mCS7&PIu7TT7?MaJ_dK zU?>$=0-uQbYpDLNI6flskeJPh#I9;Nkd%k2Eh;WU=w`rpQb&E}(%8up?~*5jDuf6n z^FrgRGBQP-PO>}E>v%;JR7d_5KjlwRPr|B<3Z|$R02vib38_HRMg>#U>nLYbAULA} zfvgIqsK248R>2hYDFCg4DawN-SQSiBI7{HM%_^9}sxvCc`8i9KE*&PRDu(O%Vquc% z%0Q|sj8s<`sjdh~wY9~MAI^?xOR~a1VgEo>BHb4g18c*qPd+(W5f zL;9(=MfBChEP34c2t*CsU*oiTGJgW8rDg&bhd>?zgcVc92q55xTyr{kx1c7#B_R+a zXHhC{szU0ED&i^Bz2X!w7dB<1YNk3MLodVN&Y% z+BhkFk4|Th7VAyxCCn|TnBG^ZKcd9%bow!*??qb6xES+D7p`y?@f)Z_(XiG4YOPw)cDOf~36=F%!nk4~*C5;f41Q3=aEiCCmnx*F~ zOL!cly?p#x%Tj!Oz|fzWp&{f@nb_jOJiK*q6gFxJp_W!G^ixGZ+=Fr;1j8Kw4QMef zf*u2kZOfwAxCnX{D7G$(V)H65Q6c+E7vp<4kP;1|Oa`M;>?&O#OX@d>LSsFC6JI$` z_D~EZ_6C@dWFfAz%z%;FTww$YTmGpcAWp_ISr`EjVgwMiI%CmdGAAnebCd+Ra9gG% zvr>+wzL{0k^z@b?;n@17@;m zWDnFxS{{Sy^nB^{BkGmg&a1dy+8&GA*+OZ%#*C~18mS0NZ3DJ#6F?GKIO}+B`z72M zgJP652V?DXG@v~+CjFvP`yfra9Q1-xlXW`MR72nt4f;)Mmk)YgsUK-r)e|(; zK+_4TGtkWRbJ%MEBGSr{7PqZx)A-~xoqN23hhoBRZ19&t^gI;DvY{@mIo5j|H9+GP z7dXKi2$-7fk;Pk)Mr)o4%)!F3VJw-!ps^7v0Vp1jkpZPoM2{q!Om##ZQ_aaVl14Ct zwux9__-&nvU@MI_Jp9`_5=dh@K~@^|1cjur6<#ja(#Rk!(kMr2K1(RlHYV-K%iv|8 zy?h+#ndc2gGSXIUZ4qA%!1tD9yp*t>`!Iib6|*B;XF2F-A0jeNS*y}WMOd;bz=2h1 zq?YiYg}8l9OHLh^0W@Q=$PUSKH6pzrqAo_79YiDUabrHybA-v4!I?0U@9hX0aJX@j zS><1iS}TG67=Ll^cvdL&$fMvl3!h+gcf9XR!x5z})dFSGk8Vw;&4wZ**ul>A0f5ak z{&X6jBEiQ;3e`s_!9}Mh3e`U~fTUk1`AFvLWV}F?B1tV_Y$RmC{3sx^!{pP8gg>17 z9*CmVBQ*7vF2N~65?#Xsx{{Kn9za>5l84C%s>sd8{3E$+mYS`UX1l0w{8UVE;O_)4 zDQRwJu@^s5Q4OM5HRP@$RZ%)`m1-U*xijLcRKgUQkyxct8p!|QRPaU$NsY#DM+K({Nt|9D;#AUx(L_CJ5Qjb460$-n?aD_Pt_OT zF|XFbUzzyrXvhlj-c7@4=qx|k44ug!f`-l&_=}-4S{Q1*1X=h+u-C^1`C?prO}jIV zwL`{Fs_77-*_|cTJV0i5CXm@66UOY$l8TVeCtzDfRgjp?iNplnmQh}`t+mt3so@>o zNr3&fmMnwy-p>GHgBO#5-3AD*mztEFu96d_k{CMxJO`!N4* z^>2K1^~k%ZzgCIAQm}JA*39MoEFF$ z6q#4V(aJU`OES+AFdhKO9H$U>s|f%^=G6p}bY248e$#jYYk?&dM4LK2gMJO@XwySp zJpPGlUb2*BoAZg9+c2Gze%pHy2J1EWRwVX`8ie&XYvU86mQS==fTS}BLdH7Tx~HPk zoPV%#rXdM!FjVh73<#=HS|bIZ>ZEuf5qDC&h_=(D4$18W0!JNi?$;9=sD_fF#}qf( zYmQBCWRFO=Z`vag?i+(gzq_6?>v0ziwAiz&b`G=-!%r0h@vo>}XA?lOk_`hvMP@T< zQM_RwsM2glEs8e`CAtl=8M4gMmm}5`%8;JJdZ*Ovh9Eg3NQzCBKPO9u9nlM-3r(Dg zRe1X{HUs<#jNsqov383xZAyIs+FJGzN$@t2B>@DP1#e!90nkTqWUE&Kh;68WCuu@b zN$gD)dIU_Ql7N~SIv5Z(e@hska>5T!1+yvvZhLHPw8tw3NVLpt;L`vCCjranPzyXN zY{d(S0;Fh*=4tSP5Glaf08w)Z7hMQoEA&g&6*Nrlt%Bi|Tvw(T!nZMugDSW`f+_Ti zu+?$XvFKoYd?2v);Obfw3mse$&K_KS$~b#)Rfg|R93xt(pk%$M?(niI-}=i^q>W0- zk*0&LFVT$O)}sif!>$BICA?jP>dloAfs`IGNXhg@Sef5SvvM&|3iZnI-3vMnD?>Wc zmLiZUCsY*B-evs6aT(!c=VK-)JAvRXoZ7RAW>hD(R7$K>m3{p#P$Y1`NRIuGnj z|8~~Dtqo}K)pjyeI_Jtz$)?Ou0q!|Gi!wt6V0fqi>;cvc6^$*T#xPU>e#KZBDgX^#(H<*CJ0I6E?4J0KXM$vu4KDRouV!kjW~wA5_?V zvi6&1`&0tN7=$irV<2#QfO!ewJCJpQV+PILj{5qiq-BY1o;(Jbx8!;OSVm$8f#( z0btrZP33j`7l8Ut?2fcGz!D#pImcH|K;+)(BJXZpCpuEGQ4W2&SqKH6C~k1Y}+7UT7rjT7h$1Yw4xp zPpLYkY2v4J8PeK+BBlK&QZjHVkkX@OYU%mnLC;1{r5DSze<9N4NYk8u71Htzc;cPr z>khk2Hc15&8W1Ma+Q#(O6~+TuVxtIbX=P2gAic zykp4+@OMi-fDrkB6izvWe1j75x3%OWWyq(b)&(WCE^zQo4<=a`I31@a1%-5WA{LeF znf?DpIGK#iDxP!nT%>IbP0&vj192PL5*q_>HvmxtfDk8u9<`hplyGv0IY9OC4M!pZtDC-hC^kQy97>*PdO4me3&-rJ;rScV()g%bcwJRsNJ1Qgd=nh?6sgleuWsCHWgnP3z>wh}x5M z@=M_a$FKZT#Xw}r3?~3WoB$dIlyCxIGXTPgDJPuVZaG29a6(DV2_-crw}m*lSvc7N zt!|i;UZ$owIRT-Wm?KiZp28e7T89M$873w}_+kKWpkX=wAc#;fHB6cSJ|Gkzcr1X77BOXm!A?kwwPUdqWIxlU^Gt~S&RXtd0MN~ zC*Y}NjqudPoYB|^BH&2_nkNkjPX;ACX-Ig|fbe9>X`b#4ctVnRqTb3oLp&W>4jWk*;MuXxVVujZBkFdURV8yp{%uXngvC*0hLR<(xc@PLCxi1L36umnmnpWwkL zBv5ywNTAN_e~N)P0{8rbO;{m-(0BrLEKo9@3At`1A=WB{kuc)P(2CDsU^*-w5F>@N}lrS3f0MZxLEMP=|i11cfHvl>k9fHB4yGFaeNyFiZfv6!-8OCIDUsP%}}c zqN<@;#xat&qC09C$FN@1?qL@bAiN= z-r9?kVj$UC*#31%jOE2%DFCWM)RYyY6rx2bU5fOBI-k;i3Z>uZ@uhsm&|Zd=R!WiF zZF~@2?$4Cv4n9CA8;3{m)wc;{_9BF0AOp&DNe&HI?3DwgN+PM!lcVZcO-02?QN18n zwWUj=>UBdM((jrwNH+VYd^cWJ6Hf)qVVZ=r$*$=&p{847QD5>FjUGvRSbNf z5M5ZaTMCfsv4IrDRQ#AAU7*ut$X`5;i*RzRP0nmw#OZRBFeaqtRsa&pBW*clg)zNZ ztw2fy;`&1;m6+Mk$VI~HT5@8NOi*VPct=6l0+WGms`Jr@@M;h&nsxSDJTw=bezuOXZ~JZLsiuT*al zaJNyLf?H{DWm_BJmTrX$AQ8UE8bz97m^h6)uxYz=3Oe-qys6)W8Z6J);2(%QDG2=E3H4B_xH58ejS zFRvgvV;pkMo{b=4UCOeqgPruGry)J(X^77Z5mX?p(3v5oZ9tWvLch17A@kmf;3VjR z-|nHVi3C-j*abSGnvtft@tyf?5rJkUcG9n)&>OTn+1Gp`ICa=5^p?;1X#nYDZgVu^ zH+4_Tk&uh+NhUhNNGPQ>fLsHZ$)Bix1rp!^QxAxk%sp}{I#D%2V@3cI)p9^a025ho zMgRgC0ZddYsh+&JgI3xAX#oHtZq1838ZyAfpR`j4lK+y7;AIi~<>5NJ*;;0e6Pl_$4XOw zt~D0aRn*w)uD|#5JTr67T$SB?KDgiCAD{a&GVgh2o;J_SnKNhR98Mtb5#0@td|D?_ z{{@{?GxKl6^^kmu#B7t8WfIbFve$9jRA9J9-OJWRq+`tz*XHFus$KyNJ(8ycLLo*IPQxJ*~uB3f{M1XDadPg4dV7o+laO;HvgpCKseVl{jgU99Rql-O+2bGRP3af?(Phq&eUTQsQ=NSi{zw$LWk z=`7zn7&P?=ctxAkX*dD1nDEnrXU&Ouw-SCq@Y6_d4&fx|eelQh*dGxm#0Vdj`LZ_K zdlgB)u6bG3A2?**0`#)=;kC=bq+Y*GGjUT@)T>X>kVAD|7<3z_@!*q6=33H?|0TE%yTXC4D`?SuT&?1bBpHenHz)XmFjf(`b_fG;dGU_ zQXO@+@4ZQQs^C)Kp~nN$+b2MO4&~1#Os}8-_AuJKMtFf>+g6yT68$#RA6N@I-F^W( zZ3BEFXpKZ?_gusJpN67d;$CP`pC|(F`ov8B|2_QwT$HX)a8o4?<1`=J_4iXR0kwQ8 z-m9_R+s~DOPm-86!h1Iyb+RS|Z8kn=vx9;*t7iS^pCN=g8NY?cqFsa!D0T|j=pnE>Z>Z5B#Yl6=6 z6-X#*8{`KrT4}gsO=sI8w8Gd<-*?H*j>XZ*bK*Ezf%@f$iPV?k5zlxe7es2~DiE=J zlm|%Vs61wWNkAKlbWV>l9s+%5{4rC?c=Sx)n;6ch1vr&5h%=RN!YMyjsd>}552iZE zYUI5k^CWB%>i1xf`dZYrUAutC`k`RkA)y>G3BTC{5MIY?J9&N(Fv%cb^4O^ZaqW?S zDe}wIeUMk9ekH5YGDFf9X;V>mv+XQCpj8}mQg^3Tb^;UV(rGZ4~XgxEF! zk;b0QAW|CuQaRHGfHubHKwc6VHdM#!47X8G!qJVYINqWRw^8N=je;*q(;ev~u=Wzt zyQRN#(-c05_d!6t=5M8Kno){=3SS9i8@+jK2EO>0p#(AxSk!Amn$poHvuR7=cmgW36**YQk$gIOsoU|QTc4= zLU9^$>x-Yl|8c5;+BsF+%D_KPeS}1_I+&ep`+SGvT#L{LZBJhi^z`{bPoEd`^tl|$ zCD=qMZCl_kQ$IpVDk4&Xp1w?3-ye?RSQs*w2HXcyf0)WlSbf$zQSufCLmrwet=ZZ6 zQv5AN`O=5eIFe$oz~6xlu+y%;?ZEA>gS~@XktPamZWM;ynNMbj#v*bD6Sh){5BU_wdhm+Fh z)al@(h=^VdNN!OR0M*2@=Xh*6Vtek>(dROz!C;FCk)76Ny(l9;tHpvjRI>dZYBt!l zBr;>Whg%=7K(n#kKZxyqL2UO8V!IE^`kZBvsm1;fwGvV)J7_890@GoLt2L$~=28Wc zZTE%PgoUs-B)qa%PtkYf>FkLhW6@_>d>G4J!KE)aN_xL(gkXA`%-J2^2uJf=2$gDc zMWre`go79wN%H`y9F=JI00!Lbwu7I8J`D27~V*HeCoI2qMd+=Mx*j>Olw|bM&-8S zvlG8K5*N1l>PeW}RwSNlL#xnF<$@6MTt2=&t~E-1F3-?bK#nv+=fXFz2LW7KI|`R( zVu7E^1%bG*!xwr-$P6yBDu|DlyslyjOy+IQ62owUxFM~gHNLptZ` zvZ)1f&DL-;&AsM&d4R-)zWo1T{D126opiA0 zJSZ+04N60)xWJx0&jm5;0$tX)0PxNf?t-BzOe)ZLIDDYXV2Z&rlVClL90z>}RB{QLmFx$Z(As>^l=qz`&>-WiWY%j2eP1 z3(%J~Gh#A{ND11c#01AUvEe&NZ|fsA&@_~ODi_4C4Z5tc0g!eLY8$99>0d+*HxJ)T z_7yQ@laRJ1(U!m@GF+1m!kLTX7I?3N=+`~6H2*-_2F&b`GP7&Ea-Jz>;M`B!ib{Fa z+E%3HaI*c&Rg4G}jq+kOgS z*bTa@aRcCIopdnNdbxl<0%|u9WIMnZyJb285-T;0ymCkikVLXqkhWeaDu!2(;dlLH|ucV6rO+T2Jx=s923KprG#3!^PF|SE{(i>^Kif^H3!=zzi93U6@h#3OEVM-QN#FUt;3D`jsc!YKzQikJ^ zyc}#nL1TU?HZ3bkM6Dx^NJV8s!1o~Lb%^qSpi0>IIi_0#kzgi(IX%U;v!O=Y9%5UK znG@%N7`9E9Wn*wF4@h^<>&X~Q3jm1=8#6fxWSe&*)SwK;6WLV|MRAcfwMrwpm}seF zsNS-dxTnUt2gI;@0FT4|Iun4pD*I!umkVf{6P*i?n6f`6CxNU#mVgIkIQ~ej7Jt-( zScEkB;xwfFx|f#bud=>C%K9Sj6!FDbD3Ok>IGn#^aDi_4CS9Dnu)qvIw=$3%Qh21bA??y4Q0^9iLC|Uk`YfkDqF{U@~ z@C)L&OW~iQs$(672d#(QO`QwEnJCSZVr;7fB(+pO6jl?9nk{Rbv-@*Y{RY`Y$Nq`b zJtAuj%cA+ZT%U?^E|J@w{ZY2&AZ@ql&3PaaK{H7L+D8Ia*g;1b?tLdR+`A@ZICo7{ z#aTErA`afZP&Sf~*d*a1+7t zMSlx7%=6)fsYyK}4O7MY^;V*Mn(sQKd6I?iMAcKsZ2GNO-e|8BAp9ew58w}hKHUH* z{^sz#696msI&0I>z;6jo%KwNqA@Zn$l<`e<-iLvjbf2GkPxOr7F>c-`QI&rJZYim6 zOep#oF2f>iHYky$c%q}ef+D!m^Lr9AEy}k87LjveGJ7cnx9Uk^Vym6!gGhQmL$`o< z0s%GCYk=sFRl9z9mQ1Zistn(EJW+yH#i}B)zD-v(ft71!{>Zd zAwJ*Y-=yl)h53A(0-s#<){PNwU(mpEWg_N{r(_3p&zUjK12rke~%|-4B#H_0tYO0m1rO)cJUDVNrLm6(*b+uCU@%vHl zB&ya~Eqp*rD^W||)zymCU*FToPU?s{U9F=!2)QRywIcP0`*pQKb=*6;Y=QdoW}Qr_ zA$Z{iE19qMMDA*;mQ>%~r>o_uQ{U2MbJbmM>tv4Fcb=}+K^=hHb5YGWJSuPKi9HCL zD`R6}SY_;bXjB=y5(4mll&|#qq6UmxVcPpdyl0cz`$_zpR0GSoy=fnVUoMaTsgb+z zGy2VxEaOWeCrkNqxrK5&^Dz4vB}@3J+BcLe<|j4(qGTst29H9x-;tk%cA#VtkF3nB zkXOM|lv}{dti_Z}@wzS-$mbQ-u9TbPF_ZSC_<1~9a)DeP*(uj}B*r&4vBT&&dW@gF z#dt+K#%tU$eg+@oC+<3QW4!Pml?T4wa-yKTieliB9@1C+Es%MyQQ`?jtEhSaI(Q?W^aBv9(kVKNSmoSwv)p zzbw)PRSph}sOhbr*e60C9idwKqa&20EtB%mk)_mv{EDv}?{02_16G=2)D=xYV^w4r?r>xyPC{LY@yV2|L0$S~dLJ&N5$!7c=}+zr3psxK^>MFs zKeWl?sG9Jz%_sN%w_iOi!&gr?LA%QN;@vi~96$Q%DUG#HgQh>}DP zZqwrCEA$@1;&Rk`!8Tt<=s?Z45dS7sYN43jI-iyFj_HQxdl@$hrsbBMi#0-BsM@SO z1pNk$_975?2Gi(Fwq57lBY$EL!p;)Z64KSLY$Z-RV3L0P} zk4fABX%0);7o6}{ng;k43@i3$sA15u>0~i11&LzVj6nN0GPIw~$_=DB->;xj(x0pL zg-Xq*ib|LzXqD!w8{q2!fv;<sPfq(@bxC>mGGN=6YPruU!M^8x-RhbLN+Ik zS!=?-FW*ZT=@Dn za;OaXldP{dsFP4-F_C)3NZT6g>)Qig-xm0~De(2JYz|i8QSFvr)z>eov!G?$1!7o> zjq4W!?f;me{mZOejN6r(Dwc&~k8)k`qA0YeJ z@%rWXx+=7)xjED8AnXON?-_VKZM_cK_o$R4+R_AhJ#D?dHstkdLSAnSdHrg!>M^d` z_N#jRVSI~g4OU@q*RhV?Nk5ebg0-O#yO_c@JSO_pAp6(xI=13kb%z7QP-l%jT(LQ61Ta}6RvPcl?rFdf~;-0PpNxWT#Zk#yQOXP`hI){vn*Xn8F zuh5r^b4OqwB~)$xv$oHyedmE-ZCJ&M1U8Hk{r-mRU&rekB5E&aRrS|QuY*tmuTKoT zUS+)w+JUH4PP7@k^{L)^{q~U8Zwq<7DdhEA#j1^5wftB0`il{D1XOK&LhNfm_oAQ5 z1HszxuM8XX>st52R;pje>$C8(1@ijeGQAGMkGOYwQ0oi)n^bM@i?XziLBEUemhuR#Y(^d#9PuLO z?2CmeS#HHC(~&6fjqO|?iO zR-kH6$G?yb(u=Dj-rM-oq|Rk}T?ZsuGL2)+QN6^ns>~q`knUQaQ^5yq&3%- zsHqvwFlr={GJOLtxQ>^VeYscez;uP( zlraZ|DWf+sZlv0j5$_>`=|ZwidpW_{XSnx&x(r11e(`*r?h(AgP>`EYo1s?I2ijxy z3bzAP%Ns)f8;1WS6Rrga+_^fKhy?SKxP@f%@rC9B9i1RKo=Nz_3ImdL=!txzZykzS z_9OM=EsU9FJO#<|EEpO!@(Xx0r3T1P@nA}I^YeKurQDQ6_GT6~E*MIweg7M7XMdOF z?yEd_tNt@Ra2bCW?CV+v?07Y~uj>C)#5-$WgwSMM5wHb1Z6;0os)lnS-gWrn=)zER zv1yxq)hFjiy_dg0+lVV?n2)G};gtR3UiW}h8zK$EIXiWsWms$82Z34#U4+?mR7W!I zQ%nPZH2&r+?^2u<)3Vx@2Wp&xMWu`WX-V}V4Y$7_>b?G{)v(^E0T(!Nkbg+f!jpm) zJ~(LM-|^Um**x4c_5V=|m*ifiI-`YazmpcOT!i?-PbDu?)9@L>=RUKRuJ36&!)0nS zTJLyjK?+qwe28@Ak5O;x52&>ZFC3&t>2@#lB5C#B@z@dJMIt@DyDR1$XbLw)zCYdz z;HJp4cSaa`u%tN1XETS69>dUUl42 z$1zIXqXvOM#r?V;mH`gakX~f6Ngb`lG%ZVQQlm8sH8p>e8m9r0`|D(Qc9>#eg~3=8erlCjc%79L})qgw$>7`Yhi&o?*j$z*9lJ zmtpfFz;gjVk-AF(F9Gac$RS6CuLeAxVatL}x2fsgy$l)_ce)jCnfQdk`gx^EyaeHT z6fGV)3BlrdG~1R09s>yn`kZLk1@o)o*6Qf|W<0|U+!dYQ;>B&0 zAR%FdgzzfEQPlZ^MD&oIvPUTtMPDUmld$A&t=#<0?S%<(3T<7 zq!)!O(;W?4*@NcCD+sMRNJtoi?{(l?4ZgMDyW2p`7nvqq8{(_`EcgaP19lLjSLp8a z6Q5O*muv*i9~KX~SheSs-VEVOAUxS$1Q+Oa@-h%iUd49WUqLgW&20C?Td!e`bWfOr zS6-^?z_AhLn3`qCH0k$tZ4b96!0jn;!_Ami+*>;bnI=7W?$2=hW#{0Fw4pvVzhBrn z98$1Ed<;wQ>Pz(vWPAAUh^|^TGEI8Ge<0fo(rEn95JPVYr=T}+&U%=x9-WWRD}@66 zrHnv-p94KJzVXh^Q?!ofR*0^FEoE;ib-vEETHENJLeY)Gy{b2Etg2w_Ev4F6WSVpj zZEVO2+^1PJahqm?00|S^SO7X1Gog0O>b>I2)cQ9uv*~!5!gaM?W14n>5<%{~gR z@x=8AG@47<*%HAE6itulTFKN)6itsTY*co7RNmhEJM4}d2chjT!jHt-Al{d4H2)2W z<%%xU?a{I874&!+%P~Ch!1T3nW)HRcN~)5>gPWUYa2_kXU@$yb%-S7GZ=uDkg5mCs6|i%k(s`7=gez!1=Tw{Sf|5 zDsQ1&!z#%O_}zswtdTobqDS-YIDSJ_LOp&JE_b@5hw+nsKeI88wr|~^i7#$P- zICEo+HR@BJiFnh9G>}R4W-$^Z+7-;3)K)Sn*rb+F&q3~aRBJVpT0^z$COna4H{t1> zcEk&t7wLH%6~O*2dK^c&_)aZ7p?Hxw4%7EFI0nEUrcbC7k>8HdY-@4gWjmX;wk>bH z8ah$E1|Q)Kc-|?}kgcXa#U=($pNUNLC+oh6foJJ0hzZ|%HgBTa9?3&+|3q#>ViqT` zsx^}n{u)fcCb2VPw3A`m+P7`Fv9}WbH1#38)q0w^${xE*P2*-?gjXFe^b8nGtL*?E z!8W{K7xxm=)OSdqz~@w_DRK(VAT08dv(@xD9>on(wY8keM`{SC@S;Pc2TS@WDly2E zSRyIBVsW-wA_b-*x#(D35rr2WCxvHe=c|K~v$Xq>IF8#PeiXMs7J}LXj$VuH6Pi@X1ayBN zpTR|%pHM{QwWKqN7L$iCaXNF-GqSrn1C`UdavP-6PvOm|RGD7_u+Y=!CX|HFvv*f- z)%mhMPlZBDO(1=W?O>ZmVr^^{93EO}$4kuUzzS`1PwcDcMMW1PiL<}U6MHKov+wD} zbBVnaom*YYQX7^e#;QVaxKZG;#29tu;;8ou!`5Z+5|1}=KCTp#`7gVyB3F*v<|$U# zoo^<$^7P8fQ+bh}j9pu;5tH#L(n&SJ^;Hde1fkB1pUUdQI_Q@^0g(&HEoda5wU9<8 zqH6%%1Vk3%4o8>dgLR9%M5X!*xKmxYKc~XDSXC!V*?G64X2RdkjKujYH09;9IVn7Q zLLen0`RcFWlDa^2tOPguDL+3Hg$2y-eejc7eIm8$BeG1_s=-ne{Zv*h3(@bx$gWj( z$$Cc^k7q?@$r>M<1L|f^i*|^C=?| zkyy?zFsG!N08ntP^c;0~;w0OR{JQnaJ1jO0nOGF+E7ctq>Ar%5^piv#H_PtuMZ!N+ zH*?}d?j9qNi6cuVC6;jan9s0b8DjbGaC63Wc&oA8saEcXi)!h9_&P-5ZfJ`_LVQ1b zEVWFny&q=Z6O{X5atl-Ce%L~}A7V+@a{2VafOFZ>Vl(m#Of4XCLOqJH5wn4SdE-w($5 zzOQf*64E5|1P~1h7t3D)a1MK<>JyMcd)kaplBR^f7 z1m)sIJkg~B@j{;Ha;^-AQ^;Rga=FQpYcrp@=Vju8V zfqk8O>1R_Q^}|Ef9q2(TiAeb0n2jBYfv$ZhYOmr_)IMbgX*Fz}0^!=I8uOGLq_6%I z^VSimV}t~x$LObr9Xvf0=h&h6N{kV?_UYk`2nQfD6u)Ai48?gET9_(BG5Lz248<18 zP>gGaP-Q5#P=;cH9yDG1FW(r5Ukvha5W)soT7^t0SuqZ0BMRNaQ*V+o_yeZPaaKM7RSf(S7xXc^2e%~ zgFKy@WmCtQtl6_AHHHRvDi$BZgF7YjMyR*()N?A!T)!+nLcQ>Egkj!q)HRC?<&l#B z*IU@M4DeP9zgYtK2MaeX!)^buEJ;nsAC7x<)@?X09Xc_S6M1{^HH6;Anee;T$-}6; zy?Mq(Z{*|?xp|}cA~J=|Zd#Hzk}ol97}lSds>23Z#MP@!67RwTQ|3BlvJSgVNFncH zasv%T2|TEz8E&C^`lr{Xt-jd0<3PDK zn=F)T6ScXAsTuysxLj^kr7W5Hb>cUgx2vLDqOxSl+J3?9mx!5WJB=%D;w9T`eoX`q zc3n$oR&8FvRM>8J6}DRk|9sVTJ#L%sl#r^#N-q6W?0j`LE-WV$*uig=8SE41yF(_5 z_6Cb8Dmnx8ahpC?4~8h}TxjB#2N#3Of{VeW_F{n79h4$!H!_>ubO%Bxw=-_G`o?wk zbRYi#H3nLz?-s)wFp7)e54hHaZtG$X1cqLSOMl4F_>*>MLDCE>NSYx9Ni&?}KVim? zCv=aE%lq)(2G7n9MyNgYo)8-2piPIL6~8}ZW1Z&W}pzfrDU ze$%H;Ptc>VUVbw#pjXpSGGkPtm9}9$;>n9s=^pWmQ&m0UJyNP1nSlSvDjY9>bn|yr zufU?V2Q#B{*I#zTu7M-E%ACYFB6lPrgsehhCMV*uATS%{^2R9j6=by_;$D78hu0Wo zlJyTu7M7ufl(nFtjVmV0hd0aqntkD5R9x-U*UD@hv2K;v1ynuyddzc|%CGW_vV9dxKOHkYzB#0PX=B`baUaXDvr!{{j7p;s=nPZ*XtlpiW*w~#)=7Md=xB9h7|ag9 zQEFirEDwX#VQ_u`rmHJ8h^}c|mB^p2=3?^_DS%I%uS#T1SJzp31LK>4KZQl0pF;GF z!2D+BHTBI|S<}?LwtVa9iTr8cH%RkqK0N{YgO=XH_zB=F9LB--e^wCvZ@?*Fe9I(j zs(Q_qZUVQdSeD&Mb8A5Dsp=g|Z)Cg$xGQsOIhp8R0rz2CUmwppQvK7GuLr*)!EcD> z*Lqq4^yn?({^*)E#<{>lxPBw}9jS_e_Yi)~(X1NP)s}BLEsoj@7BZjkcziTL5_y@ZS@NPeV~S%<67by7`5{%w1K-KGmGPCp_cCr_d;{=b88-tTswP3Zrx`aft^t0DaU9)KYZ)A6)}M4A_nke zqy%+{AH}Ph+!@GDNPdH@qj&;pW*tPcGm^8IW@jWsvs03nnP#UXM6+{}e%KWenv;}* z=1fYcu)UhsabbHkC)zF8;{6b9^Co@qJsz{on`m|lv!3hODGUj5<}j3DpM}#zgEE}? z3bD(@k%eg_N~R)<%pxKcc4jb?;Y>3q!VmWD zW@6H%3*NVKJdhDgUoMdh zn!k)=9!+415;TE12pO3El@zJa{NZ~2Q#pgCF^i?jsfjKH%Fbg-kTw$;HH|1{E<}j=U1!RY)%Biv9;J-V!a&Ol;%%&bFSKY};v5J0}`j zT@q>kw59zu{%@kg6P@yH8&#bSi|_>UDfDPeo2myM!txjV2T|2 z#4fgNbOT&d;(7GtPdwTncoiUh7!(^f2-577z8i{-O;nd)t%q&-hV~|IyZpLTobU~( zdLYWu$7Q=69#Kue`HU+W-wTYjInettCT2f!{i=8|$`hUo>M%>~h4;-x>zX~z_$#XK ziR#fhY&0vG9Z|E6!hIMrae1zflp_Nlr+=AoeX}Z=6;UHleX|s3j+7%~`Vy}Vn63&y zdxHGEuJ1E>F%Ah3zxrk_us;eEa7JUZ6j;x&9#L&*Gm1GZhSWzX<6E2Yg=BO%#oQ2|vXViZtshh{>9re z;$`oTetLiQ6LN^rHc0YN(xc*3Uv-4j(eYb;BOSjA4|V9Lx`9Sf#9euzXCQSy^!s8^ zNyQ_l@K#0xrxTpVRH}=Pj$W@B&E;ON>n(xzx!0d2QYehL*K161=HsK%-88093Td5f>A&~)DDL%6-@^|kcF6kE3p?L9SM8jsbWT!XjcTm-dftOncw zcsW6g)qsBhY$UjdA-!R79YKuNpgszC6Ckx4F@6qsI#6duWau1%XfzNBN+b7+cfr># z=wadOsPG?~X_hkrcbE^-cdB^QS9?m>rpAc*RpxPMF=!_au?1O5PL z%m<9)-R8!8z!ab{AFvG2nh)FySep+NHeW+ye))5Fe~h;yit}}${8=9#HQx;oSCR5( zd^N`mG&k3)GT@nlIVocfmomdoQ@!f)xHxnynEdY?YP?Km$GN-HNF?Wj$}4t^s%hfp z^uFTeW-~ezgGMI9vltry_U)=Yi#Y+{Zvok}h%>+`fb3bs8Q@Gn_AKHIa6TY;7I8*= zPXZ*zBFccQV=*PrP#jwsFW)r^$F4$gaqKXBu*5qbkQ_TS8aVb6I2PDAmXg}BRLVHE z0gfFcZ*IQ|OsqqK2>ee|t~WCs+qoh;s+Njly=rl6i`gSv3|in=fa|&ijs?60&^Q)w z6QFS{;QfHcv4Bqi8pi_u4NyB4DC}4btz!$xv2UWdIJSTsy9JOOo62x3uyHIUwPUH2 zaqIz06$a&js=WY295wljs@HSP&*bV zAWa8}FD+g42Tu+Jk6+ENow~m!bL$Q8ZS^GWShEkKt0pR<(rBRZ^+V!()zNT=odGc# z7%C3u(^W^qFXXCI3`p+dX$3|D4X0vS!Q+9((-`BrqcKf8$h`(1Ib|_$KZ~a_#yx_q zPxN6HPX}FQ3%bCOQ^xmQLfhOH5bMdY{(Ls3Xlv9aMUHlQT z+H$Bwa;tgKTQLaKDAZUqc>=V-h$*jz6pRRD11T11%B!h71IDD+)?Lh(HCq>fhu13@ z@-zxe97;Es0@0t3K(^JF03(oXeZmN2jVTI!yj;Lw4nlfG17*kzoR75|IM?GBHgwa~ zsez;O5yYL5VNcY()SDk|n8RH}dlMVa`P^KeK18#pyGlWGVx0=xQ+x7kz@FNp!p@_H zE=9gFHsiqP#H?QhQLgvmD-3Q3rgO(N0*G(iyDXHgCl+;%xBxgwh zylteMkd%qk?Z-%p;T#X4nWkhlBU5r5BU3U>LUkvgIx;Hb11fa2TL5pBckiIme zSqC`psQG+514vw{15ke~1$N??GMrc~8*dwTe`(y?!LDS2ucCP|ZxhmJ-N5W79G9~W z**akFrJTZ*v+(&wy4KDSZv@kB5J+#Cb^{#WFPOvto(O1Whk&O8>Pbv7;Q4^;08G09 zjRP?4E(LV$M}}+vJZt}PV*l0PW^DB9($?Osro~wAU$}9_3nI@nyA(fxv8%xD5FEk4 z*BR#Pff-9{^t*T}<_ZZl`wr~L(WFWy;QINWoEq$l18L`@a+R)}&XU@6AZ;p==G34d zb84_tuz`;Xg?2J#cM7&E%Bd*3T`}4xI5pTibZT(@@0zzG3tJCH5^4NO*hasfJCQer=AL|fXh38i^%iP1=vu*vynUP#dHV#%K+Z(v&@qsF zFCr)MQuY{#kD(g}^{|m!I!Cv*N)B=1+!j#1RSN^H!Rq8irc|KOW&;uF^#K(#k5TesAU1nqJFkW_hm8u5^ zJ{xvED&ziCMuIFm63j;FY&#NsFUX7paSS9N`aNYNpjUV?l#$>IQ&>g<3uPprBRO1H zMgj|EBp^uY*;9N}JF%8KSvie;9pv0y4j*^R_3LWlUI#fqlcT1itjUU=hw#i%b;!y? zH7|LUbfN64%)udgZABI#?m}+?fo2X4vC;&k3z1)$DqYAz=|Zfuh-XLVkzLxf+; z)Ikmn{(Kp+g=^;13GK?%7Ih(-2hS$bXG%0Qfgk-;!4_^~?A}`F=`=QPEih^9-I{CC zH0oh$9o?dq&~9(M>&xSvLrsYpV>7eDap%6EhyhyajKxz4I25zgC-x8b^ zr6z#7cE6RzZe)C|im=W_4WIZ*#qqXOYKy`zaW_J36j_r>e8#cUABrLzbcA5amZR3d zP6>@IIyAPJ(D)3bEJ7R_cy+Cpy~Pa;f}zkL7zz!7|28!KvtTGI+Q3>jQI9`Mq9H{c z0Y6o+fuli=7)V-<7)V-<7)Y9T^`ZP~ID%dmi&*%XwlBxcN6_{~m@S6deyoAg_9qy) zjoLo3L6zYJveZN!H>j*XVbct3RyRTnwi}w`TCol4E|5BG0*RU!MeXK44ufFxA4ucO zp|4k%i#_xOF1MZGc?S>|j;jr74e;e5Y|ktc9jxq8Gr|eq9yJ5W3DJaaw*(e$R11!) zWs5NJ#rq5Kep1r8@D4R|`XUb1NL@N{n?z_fTC`XlfELJ@8su%|xQ>_Hpo4dV3Eo@5 zA&U?P@0--38{FU}7z$p3q2MJL3f>Y9zxJq9!oy$tYEaX)uLcdV?W;jULwjlzx7+e| z*Py2T#rNd%#h}#ROTB}z^v=~c2WU_Fsg8TOA&V0@<|rCSw)=d7unKh_ket8{AI9Iy zz3RsHa{EZ)Kt32r0h~C14@PoN*q;wZQf}w{IFP&ZVVf3n9C{ ztD_48^&)kX0u4I{7DVc55Z3LFmSVL64cVT4om{Gi%%x_?dOU z-^we)`r8YTSFh#Our$c)G8m~YL+O8e;C~%MuOyMFgI%@&$*yn+$*!g)cqWR6R)BtHRGf@=5(cB<#FR5C zo@Stoikl4FR-+=mz-v~3*v8;sD|(TYqWB z#k?zM)Y5!EYXINS8o+n72IyPbZm9JTPJQTmT7u64evI2c+OVa0{s2gi&MScJYR3xf z?){mle*@KnsGosd@u9iEd;=xwml?Q?qP`OP+542$V2-DZ=5B{{cW!Se!OH&)>8t?&}$v4)$AerB+-5UwKN{n8uJs!3DFy!7f8IY*qi>=_Ge+dpcnBY(k z`=vW+ni#Pnp#_=HVoST{8vlN_-m~w%idUv~M8K!7kZ7->VHiKv14JUwxK)9)jmi?d zGWKVp@5=LL~1y%5iD7%0u~fq~nq8K9rr42MWFdNGcevp&5-K5LWcW^Xo@D&6y}Du8;D0>-}tLTu;RVY>kmjBMa@EC zHL)ikRilwc9Z>;fo9(xFSo$-~HUqqZX8Tl-X|^8>lxE8+)qQJQH5>GEnr#5?t!8n@ zr_>xy^<1sgKJ%jbK57!d11&s!z-cu0k_UR6B28WhCA*)FGoAP*L1(1#Y-wrtRZ7(z zd91g$;FG-VHew$;QL=N?d>ARg0d*uekkG;L3W$9ea&Wv0*c;FZ4#uJ2U>ph##@i@3 zI&I$*Hpr{d2bvY6tJbT z18Rl@)HEp4eU=2&Or)_z@1*XtC7>>2+++i){v-s{gRoKp3L+(-kkA3OJ!e$X#W)mDjJH`pEr1H`3aE9V3jaw!dH9khf~e|TG`DI(usn}H+RgD5{>8Jr z>m|-=vAjUP%`-5v9ey`9-gH%S@Q+z%#il>NYE? z%r8-oLR95?@kOOEAX<{4v|n$1AsbD;vP=s7#i|ud(wd3YH+yl&3yU)tE_ThpiXKg= z_oJ0I_CjIK$%|w1ky!jx_Q~oc6lNFao~&L+T6MUWE|9U46;-0jd8@Dr zM+tvTg94bP!C3@mYOqQrPgiBAx*0rh{>O`*%DQ~Wy7(Ye#^u3kRs{i8FW)~;^#`iG zQ9NgxKL0#*5FV551sWPZ_dL;Te?T=cah@8056>M*;7}9-ZbbTS!W_gGvfvt!ywo1Z z#X@3s)@mf`#V7vFY70=a7K#Uc{8RZis~=D)_s=5qW)a#M5JGPbgvL<;*b$n%1Lwx^ zZ9tIxy2ho++toXbQLhjX--k;!u|}P#o?pL6UZRz}Q|$@X^vDyhuUzJ(zK2ezyV&SD z7}UM9_Q3zMS?^@lzDQRVT)|cr9i8o^Z_#ceALFO;uTa;5-xQQ1w_PC?Ob1jGlUFFJ zLmq-ki7V7Uk$nP@sA++(K>AL?R3z^jRpVqZ>k)C;dSx7h%?#2_}U1y9Ke*S;W895Agl%8 zkuL^tJxV=+KXoH=DdXDv@K_jss!3;z1~`;5s6_nD5$wf{NaG#O{B>*nD(CDf6snh3 zZYC0HHBgIIGEJrNQ+yHXFcit0gmM^TcjTA)8V!;iV@PHw@^Vugd1OIuK1UuE$W3zO zac&-~H;tQXtu@q>$`Y5+pka%LiL*yn0%c0Rk{E52sHt`Yc%gxV^I*u7^TGCHft}&IPAap?q>39GSqtu7^la7ZBt1dB$A;VQSUu5+I(bMlr4mqZm-zBa3 zK7b(7f`cFeArK63GlcGklAIeuhNDTmo5(qte=_lU84jV^AFMr3hdKV(nf6NRb z5L|~378YMH3u^n`{;p}2`ylkwm1~TCQ4mN!2_k?#C^Z6q5=6*IJcL1?GHP&{i&1fa zW>X?QTx177=p}(iFAh9<5gWGyZF%CZT9UX<&4tv;KV^2B>s$-){p3le z(_9xg?__YwUC&HcGtcj z(w4}u>Rt$TF=V*v&K6mhv#h`)mHr87HRP{|9xXA59uNYF01raiM3j{4HZmL);!8xp zSJs$HY~ni^X zYazAr?#$@9$F%@+wGk$I?g_kiA2{VUGt-BeY2d43e??l|3*Ob5cdM}|3Brv4=DH1N zo1+&Nd}2g*qURLx)&N=!3XNfv{+Vg@Iz&|6lNmiAxDG!@SRBJFsJnLeFH9@%Vd$qT z*BJexAke-R9&+;mJ_Jw|D2lZLz(GhINQjJ}46FTTC`cKu_Lqw2Z%A~C?j-pxT~-J} z)^zjNp}T=^lU68g6#`)@w$_M30Ibk;q7YyQq&5ZV_EmLUD11=lP+-%%E;98jbXb^Xg1abFp5O;s&5P63+Am^7So>yg$pyBS7 zhO?&TJRexIYaWg3tI{U!o(~*70;JrRnCVy~J#A1BeI5N<(NiIzR!e9_Df+1-2;t}h zwC%SRykbOmqVIO`-+C4li0J13DXqpsMD?FDqYnhP3GNXVo0$bUpu&G3t>%$_x^fL` zM`ITVHP~z-jSaw!y#_@QeSp^@bsr&)K4e(!XQCFBaJ7F}L?2JvU2OC@VfS2GeGP^! zT9dTZ1cbj^O#oPv;zwB%z@@0vkI)+=7#WUg@xN)CNw5yP-=ee$yI0ilK&iiE2EZ#W z8+<3ghTSW!X}NC(Vb>aj-5WvJz0MJG7Yqs65?IrO;*e^GyDfo- zH-ePg#!T;FreaVK6CM56(rO(fG-wH}#+gYF!eIw!8?H13{}J5@yH@dE1&HB6ubclK zt}YN!+ngD8Ah=ENfv`B7SxDG@npW?Se!6mv(Ju-@aL)h`e=O$p#h=6(GOW6fkh;il z)%{XrJ(ZzucVCTEHQ>{xC01F9AOsQtK89W^Nh0OOkm0BhkB(%=_ouha@zB*h@wvJk zGA}A>y zI}*fj1an``tC$5vP!GRiq#A8Fw)gaZlCa=Z>)VnlZWX%BJSO&KEk`lCmxb0MPk!OTDc!Es-FPhs&MvmoF1 z^YK-Jr4goRjk#7Fvk!rgq z5lC91b$AqnKqA2XkhTv>%IqB(jtcP_5pX99AY;1uJ(W5E6)GRf3?vYo$`}-EAc5v; z-aiyb{X&7%Hxx*H6bI5E>`BpAHGe0iE`abFE!^5w0D@x*u4{Xk5eYQw$1}hzK1>)l zFymlE>gXRcQvDw68#Mb?(@;qe!hr;6Ier8#F`_$xG)o-!d4`B?{@ju335cluYi1yU z;J7coKv-0j81pOq6Gy5oq@S)_WAuxHK>Eqr2|)H!F|Q~7B#@9{)x84jVpQBwce%(~ z%d!HGbn(v|seT7OZCavrcoc*{BEVPBYo3*e3`d3dIU?Yn)|f8-?n+&O3Y8CM1`-HP zWgM5XfdrbX`N&Wpr9*)&NH7EM6^)|IUm9w-xvoqLsnEL9=f)4V45T97uqc<1VFW8KOHabBQ=^4-ms$yo-PJ zNcBEM)IO3KNFX@wi?0YTP z)J2A??kghe!whvx{rB+UCGcs}60O6dAOsQt@=@w!l1RBRWH>6sKM(4cKyWH2{24ZoKyx*p8w#Y_P#_&23ZyxT1L*-PyaY#()B_M+qlH_$ z3P5m7N%+l&nGp#z>&J3zD2dk#;~q$dTRGqV6r%#zH)!^)#`&{`Vu*rw~#5n7FUfh=_sUxG(-MVR1jRpg=0~@gOr7pWJHDm1|7pCf zd5(k(M}>H25pXUGAY;1wCoAFl@orA4J6Q9%~yv4X;mnYur2RjX6}TI zdo)MNr8g;Z6j%5cDD@qL*J$C^t^yDoQ?Nc^R)AxmSw9{HX7Nje@oZ)sj7TMZ1sw7W z8cMToH4T*nAsk46mg6Jf5+k}3NIk@HPi2Vc?)M+1hCxK_6PbYog5$pU_QE2kn=!wK zKV+0TjP%o$Ym9zT5KcomStS7Ad-LTeid6!@HAvk_h>V~NtNppCMH#O4Lq+t3B>Lx8 z33~dYN2yQ1uuW@{wwi$Oqtyg}H7Rv0e!(&5F|KL&TWr%2aDl-B>aGV%FR9KwNEXWDH{3Fr4q@S)_1LpKoQ4q4b zn+OEpcCUPn+Z}K)QsW761R}#~Uw~RMWVqTNC8A3}{MiVs^yiLJXMkbq>5N#2g0RAB z0>GMV5KRCRNZm{5bP|jVN459@Z8Hhh>r`7%S|YI0zXQ{*=domzDYXCuhY^CnMj&Xe zb$<#);HFRn{xKAR8zoRW^dLpZ`Q7{nmFf%O4L=bMf;DRzDqz23wTVEY;pqcE6PyWJ z{1IV%JTn&Cf(R`3PaLI2K}d@h(hBkPQ%MlQ5eR7cJ^@}aqB{||OkDXa3kpP3`lpUk z(;%X$B{Kp+aGV%lB`orLLIZX}cmLc`>QvHCSFR!D@KaF`)*>O(dw`87^)CJ-Y0p4D*(Y^0k_*W2hG{T z5`Q+-=Ff!Myd~7;PfOGM%bMHGe@&@22(Q(`o5)uDR15^WF_b$MGMtB`RKh+bUEIs_ z3XoxaupAkfZ4K375^ojJry|=tCk=d1>|Z@f<@^oZ;92p3z3@gs2)qt(E z8BR0A*NT%{Sqw#WmA^%)6H%dBvrdzF_|Yp`+{)NbW8Djy`WlIzTYS;4rdnR z`$7J_n2n%vv#wl2%HgM?AOy_{FaxD7#-DU1WLR|{A$5`As(YWvdMZQR9sMUqsn@}$ z^7+g_0wItHFbbuTFPT6>hND8fMFjNk3w60Icl4tXwI3=}Yu0J91V2>(f>RlrF>N4$ z=4##{60F`OBEjlib|jdYW<|KYueZVn`kf+b34}Lf+EoC8V@ksBe6R^5(5xSS1haUl zFpl+u-l10R?Y}rmT?h8fntdx7hM!7;5Dp|j%W*2W#E{|I_p&%{MuvzT{WnLc=OLo; zh0H(#!Es;w9bvJKSx6`TaFmMu9s23YHLM*45(q)F0#u>Yq4<+PLWWhhpg+__hO6!; zBC7<%utx^?-;YvPfKTP$G6M;OKq5dsNEZA@8=JUsQwV%kZD%|2#zTUKV_au z#Xz%u95(=gG)Nd9fOObxm40lrIsojOHTza$TM~pD0nB4~K+AChxWtg*+LtXS`ESb* zF~HA9Nr-5CF*A@raNHL!6c!&d3-bMTe(7knj`Y)&Ym9zT5Q1g}XhEs(@F#(U46E*; z+d*AqxaxKlSv4SrJu<-WKU(ea3Ige+%s>JmkO*)qq#c8j5=h8!RETdc0`6u35=c8m zR3j=>Yu0IFOaTZ^Wo*Z>fdrbX`EH>=+BFnN!$N^HRN8yk_GBFi@8^$=s7E2ZA=9n` z5FAsmTgvPOih*YRxCYGPdkf=>nQ?I4sq}}8Rv&|Xvu59FY)gU=4kSR!@e6Q?A;YzA z7jfKo86pPw!$H6n^2Wbs1`-I4`{HR~F?66Ye>;D#(P}IzH|xqZM!zTsq@T$EYZ00gHpR$^@+5zWzjd?=6(3I$SiD3A`6_FiFy z5Ar8R)YTB)kZD%|2#zV(yKe&tH0#Hg!7P5HFm7eWf!q4~M~+rcf_<}Q-)d}2f)EZQ zK+AFXj%XQVxb{sK$BhOt+{K6ZvqvlSIs)mH%s>LcabJ9nu&8Gi)Q@)Z7milDpmMXW zTx0Z$f)I=k05vGJ8h;W<$gt{eA$5`As=HWZeU_nafB)3c>M`)Cd^IzWKnNrPq*3Y% zl1RBRWH>6sSBZfAX|~RTLVtgHL~Z{D0!gz@8)FJUa4KV(Vgm^@S95&0%s%0q849Es zp+GuD+WRppysy77q9#IkL#AB?AULMrMrs!`M*_|IvF9KJ(qduUAL(!_SNP|SR*S&C zS+j37wk1Ib2NIy=cpA9Gkm1^Qo;dET3=#ePOVI!j(fC?sAc5exFMfrvc$8Vl)!TD1ds(AiLr>h^*Z~^s)~i z61R4Rzcixm0IYmn)J+?S1t2&qFqg2c4VruBdUB|>SB6@9MX0swrBODq3S@4ne@;X_ z3E?$bcyQ-RgnRUnM$$iq4EN3z8TQU~$PnDQBE$M%S7czAvv;m*MDz$`n>*LQ2L=8e zqt)9`BlSjRX96McI>3wYxc{cM-&3oHC9BWe&Tq&4fny&yQ16MnXJ zFKCYIQ%MlQoe9u#d=6Y<$Z+jz7RUWPLqvuD@MyIfA{tsV zI}-?w`{IuYi{hQ30h?dxKQmh0MEdEk!fKR%Rf9;J7dTjj)))ET|v#^nVjAYw@G_sxZ3+;_*U;9BszGe5_qb@&mW`C0K?SVVn(0|2or`G zO#oPvn?w`9T%_(HbO;K?km0BnFBHL3K$I2jboK`*oz~ZgC-GsQcd)>yrKVAeeyRWj zhf%`+=8MyX76Z+-?zvFxJsXO>XF{>pA|diBDk-ux!kc~~90Y6D&b!ip-)dL1 zL9@Qz9klpc!gwUop0+LUYbU>Sj2aFhZCXex+dxAZ2;m3>w0y4uuNX31E6c@|*Rh~L zM1|jTjG7D)E$tkcGr0uY?a*u`eU2{c#p4@2SfK`5O55eg@K&x#%oZ?`*H zN5aeeuOezNgg0l}RRDrx3TC&%%{37;>&H{TEdHG^K7$zttz78uHAd|X_HCMdtFbK! zLO75BEywr3C58;wzJ0`TA7zLr_YWGQj)sVqcQXSC1jl{xiNaz4y&I9u@9G~mMx8?X z>B==mzbFVnvjVI`sfX|CYac{s}(S?_~xO2!TX^ zb5N?=yC#s3;iwRwBLcp*##H+MjHvxlp|2d(Nf5$;1ZX){{RSu-fdrcMV=?rN4-m%Xqz><9Zc&At_M`l%!c;Xnek92ckIIApl?T`!JX4q{kDZ~ymWRPp-=qz^I!2?WP| z@g`w$53?ZO_woOTOD`(7>B===PCpd|A!t^BsVH?C{$xZ#hE=!UNT`bpSKYfs)(#+s z)$Qd!JVxCQKGh#)1`-H?M1Z|e>OGRkfrJc4h4^D4U^NRMV|w`m@de+1AdoccG+Bb5 zDgeQ$jN@@OkU(=a9})_r!J$AJ6bhs&Y47+bu;(c5;s3^0!y&vm)2;##98<7=Z=wk# z(5xS)fLVN$Fg}VI2P0CM|I8S5IM}yo_N`$NRx0h78xf=f!c4WQgeH zzcNOxfQXhYnSlg?r8t6{Ed5pS&^wX7VNICpe6oj=%$Z9S?ZAILB5G5s$ zkYUxG3wAMNxa$5xWSzjW0*{pYUyf1VfKT;DnSlgCAQ9j;l2_$4VD#X7L0nb`v z%Kfo;!vHGOYu0J91V2>(f>RlHTsDwEb2Z;L6iEAo0%`A1AdQpuK5z`!vnR{^-}&k= z2yf1`s{jPY6zpIbZ2}22>&NwA7C%%N-@=Row-x$7j#2Z#zD=`lCByJjNf5$;1ZX+t zj77^J!?iCWuazhOG2F$={lr*xE=06^oEbOLI!%_~rwTxDD&zGYHjqGbHJ=s=q^Y4mIx-YU zHPYUfSm9m$IS5t=Z_c!<00hSr9F`el0tqzh$4|j5j*kM;EdFa|90XD)f8bbk2H3Z0 z_N{Cg1riA1KmxQJC+>xoL56Ezl{oHD5W|5~;SU|FZi0xGw#+~R!Es-FH(_xxv!Fn# z^hb_WkCT47a*fe13PP|P1n>b$Wp6Qogbb^$KMv|5!&P^z$Vz}1R=1mf&{*{w@TvYZ zGmt`EqR){ndGjX*j>7^jgAyRD;t z*jUvJ_HCMdtFbK!LO75BEypXtC58;wz9YnO*Jg<5<{vdyy#Wy|pJfIT2#)*WGyXr~ z-UH6As%rnAojqq~(k63n3ZzduAtWRODFQN-^fsw<7!WWNVcs z%~9BC{-9h)5QRquU6^%A@Ccwna3_d^8&U^8nW6S9YaZc%w#;->o=gQo9n2SrghGPT zk)IzG(s@xKof{R>GFk6+XZq|!$sbws4$fDW^Qu6oRCxP8BkxFXLB|s@<}Me*r>BOC zjces&K`8m$ z_r%1QS$X=y>?M=U93NkHaI293O)bRNW@m*|VX!^34&Z6F0OeiJjmM=kO#*i@_?@2f z8F?V2awd~KpnAIp)SVR%sNU%Tb?3qZN{;H4lg<0MJQoN29j9JbOySKuX z^<|Rq513R1e{pDSit|TN+*Om!GY2O%%b{v|r%kU9f55;uzfKprZWlJJJlIIRMJQo$b`H2mRQts$Hi1V9Or0I0fi*F|mSCsCWZwrDfeA4@lQBlUK1{>_PB za&>v_2HB^1i-%}6Ux;X}q8Xw=6lpi>wBf=IeFH85&?*8b6|2wNbi2LBY`ze)*K_{Q zGW#u7LKEG%P=UgXdVgx z=yiTfcEV1O@riJVeP*&b3>VEcJEq2iiwZb`=X zp*I+Sdf)D6DB-JbOJm;`2fnet6&gFQ@=9}WhZrDrp5S$3 zADwrxWQy4t#g=yx-5Wz=hnTQ1*PTJoeG|}FcQ~yofL0YiuMB{e89>SG>ZYV`nNGo% z>pCSp^)2OfM=9iMFi7%>H76m-N-L5SjU7Ve!5347#tx@d08lDa0D^{xEYcdnX+Z## zAPIn~JNIVP*x!g6`|D9-|Fd+rdsA<}=)lH4()O)2KS8vnZrT22t^C7OAd0jX>$Ks* z4!svH0njP}C>5&%YSYI40JD8#?_ZlYc3$P%%{TUbwP^u8#=I(2vE#mq#y-gQonn5A z94j(8+EX$7J9~(@u`>(`jNi^HFr~E4{bVO>2pKo_(YA4l`4AV&x{Kn$MFk=#einzt zn-xx#up2JspY!HBpt18=?+WE>V+bciN?oew!Me@eA{rcC`EKC3Ol0yWI*4{;H1Q&YC32+I3UIPHV z1^{Xes=LZL>NF1b=crx6If_?#U-0Lsokgc}nOB7>T7y4FePv>;;p(ur-D`@ezR&q9 z)2=<&t{x&je=!Vlz3b%y&;_$ZHsptp@%d}8J#dPdh>KA%N1b0uYwu{yp@Pz-c)Fw44A+&ICZ!y!&=^ZreXPx9u05+xC^7 zJ@K2~{b&EBbK3}eNv+uh$s0$O&utJvqYu*{i)I5CddseR(pv!Z8UW}u08ndCy=`47Tr0F)!hwd5p-{ zn7c?Ilzi@eG4XtALN1a%onp*ii7z|2B|o?pqF7c2LzuNW&lF7nLb%hG5H5fY_wV9s z4rHvzAlqfCIS4zeGLJ#-*ZNWYQw9<`6p&O0AqpP*iF-jq2Hc~u}(DtzvI+*zs4 zCV>k&9)~gaj2J#SHC+7cx0mfT)x3xK*35i+YQXnJ2rpayvtNe6;-9dR0OMDf`W2J@M97*8oA zfDrDvm`eb3xMRiFg{iMXk&$-espeMftjatF!D}H3j|?_q*0bJY`e_sZ6@vS^ICwuK zGtxd+YwACykk%^~5`;RK>&{R}a60mrqC#qq3h9qgA-yQ;ec*n%lEdxWwPpjHH)YO4 zUKI$H3csWpKGp;mbbJ6~ZnYSGG&NkvHo$I0{+Msg%(v$YRSyvt62o9|?Eb6_fX;7Q z5pE)6yv0Y_nN!W-xM&_%E+hygpPM5l4oFS-eKg80nrbff@nr|MKRkh`_eCQxPR|{ z`qccsG_Ue&ba$$x^Cpw3;Kc>{5_jg*^apOMp?GiU>+|3EtVy<#`u_6R{5|-kQ_Uyj zymErb-Vl_7IJq@fjzLiFEYMgvIIRnSmJ&b--yeT_q{*&o(5*{n?&Laeua6 z_S@a5@xe#Py(r#c_?7+_e)1q4XpG%7F>^?J*(Q>9i)78kHAKi{*MoH?aG}nZ!6g7n zhw3+yw2Hq6>ECH?k>o$=<5gb8{+;ILlFg;et3nlp{BQiEZ;eGe)ZQ@F972Yxvkcqw z4C^7{KEyC2^*5gsfL@*zQi7fS2NThopRxA#sb;yaolQl=;GzN%MBItP;ynPT>dM_A z=Fjrx|IPJW&;Dwvd4y0_e7&@uwGhS0ioyHL>ics1V%K;$X)^yt;mCj`6Es`OIin&4_l@^kP@JX;Ozz2j|1=;>0|H^R{wc6$q6IzXTD!Fbyu~IN>|A zsvX7fM!b$|roVlWKUInO6`A?=Jhys?xGWh4i|1n{0nquqB*I-(axucbKGjtI#@^ms zR;Dp`kw7T<+*@Mesnmqmex!YWs@a%>S7ZmbgZ9G{{(yp|;aBa|?DFwkQ`8MB$OaR?K?RdrS)nK!xBE`SZkAqz-&CL+vh!N&ZeD zWu}|*WGWEqU@mn+A;Ia$zZn(M9#J9f9u-oHtasyKK0EJxh&>=NBXQnV&Z`2UQsEa` z#^>++;DU}vV9XsXhL1}P7Z>bnS^oU#R+wLrnQzZ?tA~gSiD9t#JXR6_onKE8?oTBb zLv7z_=9{=!_Kk8OK`8lLKQS@n@I3utwsD#{#mAQ&+>*yv3sEd9gPWQ40#7LzYcrV7>8DjW>)Nmo&Q2X_1<|)jt$jrCrxz$6&g~Tve9C;)w1EBNULWCO& z8E^5icH3#D(-#y{Q@M~JlzeWgm{^jU@cU>zJ7=0%pMzIq2e;($)k64>hssS&28)?> zG*2lcfDrBzK3o7D?tJm}Y$@DPcGqd<4(v2+CE*sQHi*I_gH4(BlK1G*1VDx0b{7X< zI|?>k%Te~M#PqFkHBFi6CK&%P6$o`OO(7H#oR0kbsF2Q!3hCUake11M-yEEeus=%7 zW;kyv=T(7Fsqow5;TKxqf{xverjRZd!xdh~t31#ynPzsz{EEzcyHAXVsfUOQiD9sK z09FzJo!@>U+#w|wqwK-c%!#;IwzaHGW9k4G351f*eMd~(l$!8`G}<0L&0Oc>%MNbI z53YqMmX*Qd%=(O{6cRuPchE6}3!uYo6JNt2V?{>WrId(qH4WR83kjm|$lx}-?aoXo zBmfnHJ4YNGn>vtWu1d^>9MF`RZpxFXK&XSc9TW-)PDg%SR7gLG3hCOYkbW%d{dsUc z(*7(lcjLURoL2=xrNVC1*;T?G$%Qnbu+} z7%bk7l>|WNcaaEpcge+QyL_7I+=)Wkwp>UMNM?~7LZ-e|RdDU0$(8iG%^xBXpWM&rCWbG{;X z&L5#EePJ4a{=zhX@P%o6w$;>B0D=bl0&u4^|N3h8dvVsMGxO~}F&?HKBHm04gT>kts7?T#-~A$7S4dr*k4`hc#zouI@@9fi^0~*v z#MIP;*M5L~W}11)$Cn-4;)CO1Y9Wdq$>8tITDvx1R)7%hEk0ZT9q#ku>ldYP2iVt% z3OhB^%7p|`cx3Pv9>3*1dNcu0A-K21LGKe`)3qF6KT6EG955j>-2~$wrUIc3<{O$r zA;Ia${}vU}=TRYj78TN`vfk$g=lyJFXRgC}YdNn9gi3|ed-#?ixS->k7<1iRdSiEW zYPcw*ihX~Y`6cF;XXe|}%zPn1#D&B#Se$(l!U5>~{wl&PfQ$=ifc@Jv^8zl~rk4u| zLdoa85EIK%6TXlJS~uN%=Htr_E^h2X9C>nndy+wILLu=qCxG&c!`I8rG?Tz>3%xx^KzjVc|%atzNx^(wQMQwfxHq(7F$UfrCCU~4Mv$O>h2rV!`Sb{UK z;2sle%TjAaefF`#rknZLY{_hf(^M_Qh*R_RXAstZJYZsNsfJl1)Jocxf0zn{iiAC#Hx$pQJotEW{(~IPh5VaN zQ~7&NrOUUk<~9>Jz4E=ImG2d;e6?8lYDL!S;MC95;->Y#T)lFt*xZ?=h_PzEh|!Wt z;l+RmN%cBiC6&O10-6lx0i{lLE0^xjnUMabb(70)TJtL3q5h`zmXggv=2fAJP3mu2 z|H~<@VMF$^6Q-Lh{k~Wr8Mfyc)m_Z->&H~>E>Qv zQ432hDiA@$hBLH?aNDZ7-$Kl9&AfjndB2{6?bPY!B|=%9g;I2Ei1p6QcPxXqnDqru zvms~~+Y&l9+}O^pW*SfF*dE}lE!WsgP5{(udq5Sr2b6TxInuHB=WyS#XNQi>tGpiE zOcCHaOsawx#jwQ9l|FD3)PK?k)=(g!EqrsjIfk5@7Rw?Qy$+&bX|5cDpxoM^v2t)) z7XYmbfYR3OEh*2yl3OAa|BRp@8(2ZZFbbvW<_0Xru2bnsqsDj zoi^Qcuj4GWn`B#bHHc2j^1aERFSEw-G+jaYHLTFp;I;=p)N@{+1Rw~rIg>r0R@(!* zvH_HI)pMk)ZO!4ntDPOX8n5zta7#sinM|sJ7sar|Et4HT59&YJ@oVU6;rFesoNlfs z=f>U3T@B(j{K_w|F$l`N3mPj2r*#3)x&SC`-8GVOKxmQ>NzAXFrL`Ag_(a4L@qKuG#+!i$rJ(>VgDwRfjQUG3DUtDO>cwUea}3_i~r zKjuH|Y6I;GXI>}mWlPFk4I*T6PwK2Fe7I2Oe}PK?ln&L~q^o@l>ATvkp{wyKuVUZT zZjo$i&Zm%}ibDRfx>|30^K|}#AuT7%u$`Lm4^s~jcQu9~sa=RC0np2Ho0Q-;A>*z# z*xohWG~!~_KBdN4fe0er#bI$dz^S@&_lWs-z4?E$s|~RaPB%@2vSQ!Tde%btYhStN z$v~GPKuCVa?~*)#PW};zt_3nqeu(|Ubkl;zhW*6j1bF{2wGf3z2C70502P9JUL4$+ zI`CU_h<$mwX~T3=X1YB!?3WHAUOI*$`n4}0dH@~$Yhrvbq>lcb>1H`D8uypz8*>*4 zgpO~unAj;b;p1zxA5S;G^zmf}x8w)cLOjL1RP3G%{4X4u7n#a;zcXCTtL|O%vj)Hu z44ORfM;|@FVGPd7XSmPB^{d`>@!jux!OM;3f%XY!?qs+;i=-)!qynLA@uwt0_kz6I z{DY~i2E&J0jfQTFc3_eR)bhBlGtzrLyFuoE(RDLsH>Sz+J)h1jV7RL6wF03GvG;@W zaB5ZD=aKTCMaq8~DgTM2|9l#VFTnoRbv6g!yy1XS$`y!^*4Mu8Wn3~TlQDq{5^o0Q zx^_-8+=|yVb&^}5Yt>d}n3HkRoH=RFb*+bpcOk=I_ea=D0CbkUManBvM}>=lcEAjC zIW8s~Sl)#YN<=qUOuUqu@FEPdBWIYEKECYW*6?{ph<7f^FGmH^G=Bx{VwYc+ z-%y0>-rd!#%Tq4o075F;{D4#d)FmwIDo&BZwJzUMo)*aJ|XiEQOza&KZ#ao&_UFS;Cr?s5RS%K?NgcONDz0Jmc6Z7;}!0Cc&n^Dg&O zas9j0wRE|`R9agaMn8Mkc(Vn=)ma$fbellviUbHw23^cPUnztEw_ zN7cITCZV`{bT+3WNz?y`B*hmML8!3#vnC(pr3R-|r~oJx_${>jM}wXVa!&e@lGAfa zEb8OU$cd6EVX|s8u2<)xz^k2$0fdv0EvYYKUKOh7sQ<=?n*VwJYv`W6?cy2c9^{yCl*rMZih&&U5b^1hVNl>5uK<8v z=N)8!d;nP!T?q}gEu1HC(QtIhMFk=#K5MyF98MLs`=*%x0rPl2@}(EX5c};J<{yN) zIt#M}KmK8AA^KdFU$8MqFW83lq**RZ7;ea`?fl5g<$<8nV2<*D*6AQgWCY|IFQ13o zV`iB1FxY&I2-d_z|1h->XNO1_q>=ngB4Jp^s|Wn(yWTN?3eB};3VO$Nd^m)Q#?P27 zmyW~jEDEuK3)ZsN3WPGm?;M661E;f_AMN&e(Qa=pcDtJ^CBK%xQprwdyL2|2;e6Hq zaSjpEYUKdFX*c|xV7Q?5p>S?@F?@7tSaK__>-yPKXP6yu(r|345bGi0T4xyS{sCJF zfX?y^k@AnJqr$~-d+rQ#3@%n@E*i&GkMB5%uf-q9 z!_-0)A4O&G6tlWi@{$8ERadjn1E*mw0l0v{ihPEJN_<2xWplOB2={PG7?87p?ie(VFiQt@#pJnr>I(BD;1tw6poU4>NOKT*5%;OBeus z2?G!=VNSth1t4g!6o5}Og-e(t#PxZpYq^9eG^p6?W|&^c*U~1chfA1Rh(dJ+*Q5GW zW~OKYpq9biC?dZTGMr>j=CsWL%QDl2yb$VOK7$+Ng;UbIGb4G=h~zyzlJ_*pao?+Q zc_-TMbvAe6d{sHG3WQ39Ul*L5zZ-)KI^Ksd_X9EfU~0IKZH&EbhIs??HOH4X6GXh3 z7zT@@uBJKxbbdb<;nst!sViJeviHm|gL?5!K6B9s?;j?CQ1ZEZ#l$|T34fm7&^|cB z%;(^m6Uv(j!pE20dYWNcnROOV>EEy++$Vjw06N@9#Mg7Ba0l5x%rN(2rzP`P6cR+? zk-^T)Y7ZU(R0!^Qaj?-fM44`tLG}_Z^LkTAndv4N|1cE@bub^D421-zBflalq|2j1 zx-2TB<+9$l1m^?njh)RpIA2xHs{)}?p-D{03kfdh*!{;8(#>MH%IkQQd)b#~m?q5E zoLDX-h`5j#28#z`B>~X+y(Yqar{rRgeP@Q*6&LN9i$<><50gMB`P^zTadT=Sy#%)( z)6#u>CzT5cVjKZxx7D(<@x@H_x7B8t8+r9xKk`X&*1s<;~u4 zc3sfI?8dbA2HV>@nZ;So!y;L?cEX8-Y=rs`?-|J`aki3$kqC9 zI-3h|-u{1_Lxi+W;{ZOeym?-Ga6#*{;oL)F_`9iL$*s_}x2?=HD}2Hymn#s$i<1AO zkzug=7i=W}I?LW7<;SU`!o^@aV5a#UE^1B@7mZl;50gMB5#3-hvEg;lsR%>t$eHFn zA76HGi$9Wwsf8%cPz>t(x|;QPO349)aF=5)0np)&5norQzT$AdHq-2Zowm$l(aInS zj|@H~uH(H&k0t;r1hc1MQ34h{XBoa$Xe(l}Z=e67EpK1s$KpnER6$ejznn$ky9#In%s? z`NmVrg#-~762oBe>o*`AfX;7g5v~a`?v{h?^qI!4MIoJ5E+h!8{VXwYOlrdKrXhC0 zOf#H=8?%F3yzo3sErh?6m2)D4dCWSNrxX%E2=@&iE`SbqJMr~iDco`Pn={RQ*lEi= z7KH>+cw{h+S%2{!J(>Wh5ZvD4V8)HGX(5fXuXZ-$)~1j$(@ik`VJZ;nU~X50LW0wg zzZDhIn^7UX5f#$wvflRx=VR?hoy`t7UtP|t0-;jj$}arACtT36@uw8hXJU91uj5r7 zZofU#9FO_N)60bf5f>7}VDUt(Bmg?URuS&>l8bTnu$ktkxTra!Tu2Z~K6j*;_)TiU z7t(n9)0yT)A76HGix-}Usf8%|1A|WeT+K+HQb+(H+znO`E`SdA7V)(Sq*mmfnWhCh zZJEcSkRS?=3|=R$lf1{YBLS!o+`Z!9{M3O@X1MKBXMV;3D>BnfJ`*0M0-+A(&pU)d zg42-?s4H%B^{*>#bM>nWx4GQfb?KS5;U>(dRXo&=sx!~ve04dm3WQ39AC+x?mIRi- z1s(Unm|Is2AD9|0I#NIT;7s!o<{Qr}7ZOBVNDPC;-(n>J(E0sVg!_HT#c=!hOw+$V zg|xI>NDxXs_mr6Ed2^or2>ZfJvn2;NW(T*V3Hm~UDEb3~y_vO?rxX&vnFCzSLmoH^ za|u8%fDL%2Gu%t!>-f~yC(LV01s`R{)tP;m)s}f|$~{&flnK7`J*+mIe#^UIwAz!R z)!ral?TNA|{|M<0vRl@fQ*pjBbMA}KKTHCl-|_CXp zPM!HX2Q1G_H~I8$pRVl)yIY+ZHjt~u za$Xe(l?p$AoRx1TxS-?DFy_7~hVM!Z7qShsAI~(~V7}q(@@9gFHxt8PvEOY}CxFiH zGZAhGWKCV+Vw5$r%)Yo-ow;a)_YadmDEVCNthATxoSN|3kG9=rne%*n=SX}l>7jlz zK@`i%;OESGfv0RHfDrBjK3o7DZcp*`Xer#0cEBvte-MR~c`OPEqVUMzV!SmmQwj+{ zh2RE@gE2oN>dg0X-d@hD0-;jjM=0TK2VBtc3yis=#Bg%E&#GAE0d^$$W4>WoxsV{@LSh&! z?tzsAKQ><#CZ3kjlF zRtBS(HHD`X5^2~Hou0#bw9n4yWLW0wgpA;3+iBTb)5Eat#vfl3n=Y#Dz zb>uVRxGIjik*oO1Ug#-~762oBe zI;iB#6QzgGJ1G)q6|}2|$J5 zjuZ!XrVgZ#zE@{@H&RHM>84zX3WPeCU%3p01g9gvI4YzcMuqf)sE{s__1@%8pPhF; z*j`g-CgHrjoL2=xr9vTvACSNW9nZy>yG{&Wm>MoRQeS)gEHel54d0c8YR_}4hlmS_ zVX*iiRuTZ6-$^3eXC)Vn_RLx4KwPZOTr}n`5(p)qJ6lX_d>2#F^oQCDW|?z+d>2T3 zE&0K<5XG`GxQ$uQ@RULV2;p9VxdcFmdy)9MHuY5~GTdIp%%K!g=CLRwh{7X-AL4Ce zW=bIes1V$b#X;@ec{0Q8ja-6q!1By=Q=Uu(LLJQSIfp`m(~;jA71AwHA>AAm(oM47 z#|P&_?LE{4&fCj*RUlLf#IDiT+ng&N($*YF+7IX@hbPTFU&GshqF-M zFBcL-Tu2Oq#Z$170OFcYC;O>FSE=7 zAKyh1U-1_qAU^(Ob}y~MU>9Z`&C`4V%FiXk=ltMq0e{YOKBEL6q%!+n0o23#r;(z*_laI@ZxhT zOWdck(oX{J0mY}I{0}3(5Rf_&3;5zy5PV}B_28`f-&JSc|R?DjLHV9&~`|_1x z5LRXz(0FCwwC(^}cL1$BfL=@hy$}F;Apq1uxV2`dZ|Tk@8rN@js^Nva?kEj?9S6}~ ztTWpp+VUS}qIDM4_%e$+ofzL}8CnUP)(JrC1fX>C=7Q{({YuLYrzHc>k^v~m5&%`Z z?v<#Sy&N^OKNZca`jYgV_fq$_6`wZqmHMTA+H92V)y3?Gtjn$tS(oLtSb+#S-27{; z16=3>HNT+`0BD^7w9WuZ=jz&B(mm`r+<*LRtuFb;&v=#ZVgK>7zFpFq>&d(-RI!cy z$Irf0LDH)Py=4d6b!MBh(WmiB(WgDvrye5i@(hC{`+G?M^umvo&2unhd?H!LZZO;2 zj*FVBN-io8VF@1Qu($)jsqO5(Cg%IykNGcI7{3q4*ez$9mk6^x3$r+%Kumog?^+Dr zVpf-toHOQv^5cb{9G8m5J;d2&OYprtm!3}mf@qg8+0RgSFFc^@2td`5pP~08fZme; z>V|?pL@iBq%IvfjuOI|}KAAi_KcDa_uSK_w2z))0s^CQ-E^$+(7v2ojQN3^t#Toue z=pM7pRcP9FP1YJyx&3W5h%+C|SB61Yne##8m4VZ`18Cg=wC(_UF#+^K0O*APPz&Mq z5=mbo8uu;H@Xx&NC=Gob2hke4m`4z;^~afL;d}z26602EIG@02odC2>07|C{K#=_} z4{6!qv}6EUG5{r60-$Qwjp|bTSZ8FH;>S88x`ZF=REJ9s-ST1Y{<#i3pNzDNx|k1; zwPl6KTAWWHf)1U2t95`2eV`dG0nj=FXq^F+&ea{|e6pCs{rO~va6aKxzK8w!WP8zK zH|ABLif#N=oKFVXLuZ>lqqwBc^l8ucYCXiY4Dz?141*+hc}W2D!XF`<=U&M8d@|a$ z%{E)$V%1IM^9e*)f&q`{C4f^^?@ko+`!KH~&L`{Gv$(n>%oR6Fn8h!YLo9eS?^+C6 zne{!MW+zbYIE3>F+!Nq-bbdYo2%??E z8~-j>jzLgvOVC(3IIRnSmJ&b-<*t{M55khWQF1(t*Z)b5z8{CA_UK}cB&iiyQY*>N zKTHKeh1SKkgnkUC^6-;G(p#+3NyDj>5&*UKZb{TjzZLb;y`x^bm-LSVQ{y#9%C!wU z#IN+faBVJkNXFS^UCfV3yY)_4%NCzA4^x2%nKV46Gl2_rzBOC|pmeBSAl+~pr0<5` z4c(Aec@_I^c)nyak9k$7qLBZsUnpNg(T=pY&o;j&!&O;^?P-2wSPv0*Jcc2u8+}p$ zdU@`U61){M?s)6lU(Pn2)}eOpDtA1HAYzZ-YZ2j8UAbS0`7N3E@2=+r`{-;liBOi^ zUG8cSV;;}Q5tOff30)2D8t^}O&g+u^1Yy3(WDls-_JFQz03}`ZN$G0) zaJcVkPlT?)k0DicQK1eYS}%KRMFKS zRA_v|cIawwDvt_4NV?aPI%znSQUajX-d!GbwacQewmj-;mr5U)oEjhZA9l3~_MtB3 zRMKw#jilXzqW)nj5FwM-N}0fgI$!%K>Ks7nQ2m{BwZV|St34XJ8n5yy_Fe4}$!0Y3 zs!&BCe_35^9s9{_b1NCH$TDnC^YdK|BJOGoLsBRCqyY5td@dz;24vjTHn5%Mm_Pg4 zxnD#KE-DZ~#FsfN-UD!|u3R!Fy?@f@Y0UqdXQ@fH=NvO&UCvSuNGQecj6)24Cf}P3 zMlx$QPcsIT5Byx4zxRhb3;cgQmv%LPAk1M*P5{(hc@L=N_kgM6iqSX}oc~~SVe$yC2<-u3YhmH!TRRB;bQ~-j8r#`DSgwuimC_xecRd??B zsOLTx_1tHpp8E&sQctGdb}4$Uud;vPO7froPHlRPZR@(4eGskf_aa&=YvmuN0#T&> zoK71q?9eCS5&*3tfKsvAqied|o@2Ie(A{xc<1dV>yvnzmZ_wSkrcLP;=6R~valS!+ zsrj#Aca649bIb+Eu{x8Z-D|IXu318h+8v9}# z_{P3VXzaYoE6wdB^6kc?DtJ+5OWbbKw)TSRsJ69+(%UF+?1v#QiZwnZx)+TdV&ETh z-5CVkM}Wqu%%sV2&V-BP=X`?s_xu?uEp)v{#}dPt^K+dw_Dei z?sjA9ZD|KK_6_aSu4ZpUTlr$Pe_1R4FcpX*?U!`gaAAku2$uk86#@!1S=T*Mld}E&>so%}KDpaxKzKX`ao;_`jxez%f{88j+PsQ+!9l|%K{O&5lpg{jW zp#Xqh=QCv|G(yIWeIt9`9P=nH8rn-PDiA^OBRDMHtZ=G?-34O)es8`58vDlf(mBSB z=M1Big(863Hk#7na3p2|8bdEU}JIybN zFcZ8x9{kEp?2$nOvwrS9`Zy8*6@t529DFx*;5)=9yRfTyhXdL&(@owk4^x3q2lErs z&>G-$$Anmc~u}(D*Qlgdj5GdxS->{ z7<2oG;nvh}dS*z?5469SVldMc*>HrrBgp$wwMocuk%9J#|(e{x!<^&&Kc5q96a4kepNDQuJ*6(;qApwMN zkH%aApu>Gke4UW`Dij%IUzlThOrVfnE*BC+;gP{oylu!#DI@?Df@>ECFN9=9+5PET z9MG1TZpxFXK&XTHizuOx;B@2%M}>4yR7kB+Asr~|z2j@R$O`G0uI6l_Tncxj?Kan(f}Q49%Y_6{cw|t=tn0l;k0t;r1Xn*deYY~|b+3m{ zW~4o-t7+$ew#;->o=gQo9n4=u355iwBR?Z5q|>89IxQ-sQ)Ruc2+oJw3plrLKp~a$ zsz9hzXou_Ng#;IL{2RvHMPj(q8$PR|kOtU383gVPfL))P$T3#>_Pb`S`Mfml+Ar)IzL!Grx9ba1^tC zz|%YfN_YP8ap_Exz&!^3spot~9tf#y{gwdwiijDi+51EEN1gywGxam{)g^%ba2S9R ztU6(C`u=$uA^3MS>(9+^SMe&p%yQ#Il6g$3f*03VOWee{>FuiRpgQK7-QR3jGR)Oq z*w8x6UD(hv%nfTW0|6OkRir;b6+XW=d#>4Z5?-y+{ChkpR>px#p|_iN?(reSggB|AxN4{)3Fxc)s z*IbWwD>CicbM5LOd=JjwnlTJ=-R9*2&;_%nY{)wy;}h39cE7piNn9-ZK$a)Cs6d3} z>AhN)Fr3;g?f@}=Ec3qHw`TubG+$w3?BR3G7o^bop`=ip+aRw0OWq|JblK3=jOJ-> z1?^&6!nqA@7x0rjm!8`If}n%nM^FG=e*n7v0QASN0Q5cw(EA)fe^3oTEnD?CIk$}< z1b=QjHk{jdmDjL4TErj6q$+q(z)M`4^xjEO|Bc?ehN2FiCA@g9xevW-K9W@{&TSCg zKgd^&L0Glkpz*4~=`{h+YXYFx1VAq|fLdbZ&bkI=8(nJ^Pc?{cHcFbK6MUx0|VajsEzMT051s6d3} zS zg}R4D+J~7`1ux2TiTj;&*2kbarnCO@cV2&3$z&G_N` z0;g2~P%2aaf`-5SOlt_I1p!ckBmk=J+`8S0pEZr?R{X4Koo>a?nnp`k?Eks<*6k>{ z!|~|2K9hfL0MesaV}fP6&<6_9uiL z!wG>``F8UsgdHUHG0dw%6+7-rJ|V1ecMZ0m%r*BQM{6cWJEiL%d;&~2eTG4SQ@jEI zdYwO)ov;)#Zu;xkPR-_ZTr~F(#oN7o9;N~j6n~Y&;>`-DO4udM>4|gF-#PS4ZTeCe zV{Ff6Q{9-;U%iCc;$!4tY9WgItPGl%^=+Q=#spyLCa&gY4_r!c2|xlchG#m%^^(Z1 z@{!lQ%DlGp_AB4o*Ujw3tYw+UChv}isX!U@~}PB(KJ&R1p5SER0So^tVHr%{7G4)>BlUkcUwVQK-&fAi_QAHBIks1E^(i!$joTFY*k>*^{^y z+>~p<%yd(3x&omN<~!elyl_f-cSa=d>5;srMe?31IUXOJkF^(cGh5(%bvdsJgi3{P z^PL**Zbv#ki!pbR7;aAu7qShvW17ugm~U(-?WuZ*_*#u&SeY$q4EKo3)w!Msw+*DO z&PmPYd|cF2#6@E+Ujm`za~p|?w$y|_LyfmvG@E;UeA&S*`N6di#j-N^oLQ5;o^K|A z5boPPTmZcsTZymtOW|%}XE&P@vD21$ED8yt@W|k|c)ZJdObZD>h2WaS!EEF8@X2gq zFYadSW)xCpx+zbl0-+A3frUbX(~(~u71Cu83gJ;lU>sR^(Brgpz()9&NT4lW7_Vq0snuZ3oiei?J`%~{ul z3Bysm+QE-}5*`TA&*mr(=;#j=*9#z{uZ1qQ+$4Kcv$+z3ZCNCt3Th$l4v{cOBY8$5 zVfZHDzv)N!dB*@MG}n6Hz@xT!9RO-MR!R0d$t9iInw_agk55=QNx5 zyrzB16$qh3bmxhQnW+h1fg9S3n$3uB5MOq1OCDb>g#VDId@3eb7Of1T@W^01vj%U8M~@}|Dg<}EI9S`|E4qpOEteb| zuqrd%lqXYxPzUqZM?yKl>BxT{mD6KUIjxGy>36c~7X;@U*%!F<#(6_uS%#2T1wy6L z#V*hP{$BzYbbJ?M?jG+EWR9MP2KZQa)CL>zS7NX#jNF-$EMt41wxtNA|$Lf zoW8((D_ZS0qt$*RTJ6_mQTWO}Lh$MKvmep9aNeFdUy(acAoK+$fWE*42p5?Dz+?p= zXi(e5_nVbt^9#&R#dTNU{7YC14J!8OW^)i>EL*!&bhQwL>I`Nf+&Ny;bTa{{WpK}m z$o%4Dmf;|qbT@Z$z{<>YAuohFn4kX!dEu1wu3Puw{c+ds#rxwf-NXB1SJyp#^Yf?R ze1PrS-8_x+ntr9cDiA6au5LHZFEHVPj+=F5GxZn4Tk$$BonH1OS|;WvWaiuR)vJey zHxt8P@kdxm0Caw@h;UbyTnw^rHJct=(+>KVHxq=C&%G-qUP?{)>KbhS+HBV2;0f8m zEqQ#k5I#QX$_%z*)*_y=nE>22e3!llW_Kf8fSVcoI-lV_6<-S=YwE55md(`L4(e`J zGhCK=Y|1@WAe0III7nD+IK7!hM5{eKTJ2%cY7dn~p_^u*`ErY9@m)7&msT;qbz3n%;n`s=dA~Rjc3!x6??_UIY;gs}l+eqGRB6+utT+Hc2$f0~+cZAkOmIQR(=g^1h~cwS!-Z^JZO?gTU(7cS6xrJI z(y51tHxt8P@hz+*06M>_2=|wgi{7^1JaZf_Y6g`z6NHk_4HOgO>+|&c*x~cc1wOv) z;FdhTT8Ls<8T^b{Pw|vx1-N8ePDDJ-4=|SiY{OuC5BTHUXz{f?^|b-8Y^FxLxVt&o z4>ONVxyK5GGQppx2&)aJH`6ZBYVRDa_D<1i?xd`VgGv~!-g3y}@ zKyN01u$jJ($qGQw;70(w1)QI6rv1eAm8omF^-*Zh%}zpG!e|{_-b|iA5NTlyE=BQ& zm?^3QsAX^)iO64s4EcK2?&ebtSe}_KNTfcG1sXG|#+-`G(=; zLV}13iD9t#5LOZZo!`YG+^Uj`;r5Dort35cDRWU25`>b^T`eYh^v%;BVQ-jc*5}}c z5#>UHD3+DMTxK1>Q#ukr2=@rgB>+0yo5a^~sjotjA@=Th<|^#8W*&<|f+##P*pykn z_8!wh0#G5imEz#pkjxN!5AUBiV0mV`C?p7VFn?Gi6cU_{{MS(-{VFP?`=Ua+SJr#G zwQ?l~*;U<5Wjcja&Z`2UQt4t_!qs?VsUE1Z{kM#+&r_tk8f1D zkRW_~a>c@68MAKTDTM?O!oAmr3!uaOqxgED6z*{Q);#krc3Lx!MIk{H9vK|Utm=&1 zBY+CQy(b^b(){P*}F6~;R|Vm?K0my;^SMV zTu2bb6$^v6m{m73Usiw+Znpu13!ua8A-*b*akztQzxieh?6hVci$a1ZJTiD1k2`sf z=`|973c(E&2m7ZEd@_UVd)>{c9I!kyT@(_8I+(lUp^)HoBFdyK8OnGeOd1} zg7X2kriZx#=k4XZDiA6a3TdnS)CL!H+2eX!;kl=LWJ$e-P6T9~)?k9HZQQS}LD(k($ zV4t0LKESTs!#s-f_Hteo2$c%oOdUEBT+s1MjJbhg_}tWR(UE%DdGpO{m~R+cE+mM! zkQfGw?_wnZ(D^MC;XW+67-V;vZ)#^#NSTYGkRX(NZdWleaY&y2V7u3RGn|7P)+-kh zM6s+4<}vG7o>E8v-JEJ|Zzo^F3Tv4=Sb=PNSjD{ACn5(s?@1VG;c z0SLE1eu&8mK+xba0PZQ|KMZsmitB4q*K!M_(4cC+GvAy>7%k&O^lxKrMqiTtx0PG|zCHZR%m(=YVCI=|WxzbuhoD8svpj(z_{|3JF5V=k5>__opU&A&s=ZoNs!}Bfg2{LW1z| z$r}y^8!~H0o>E8vA>2tL2^Tf1xW`K_M%h>Ao858Ip1CLr2|~%|UKbM$qx1Af+xO<1(|vrC%7p|`EGvT_GwU}z zrH}wZxJP3y0np)oAihpWeHDrfwqMLQf5T2o=CLRwh{7X-^O-eZLGBSih2T0ZNH5J_ z2+44Ry@#2`0n0MeMIk|`gZW5UC?q%?IX|X)`PfeB7n`}WqC#3471Eiq-aD?7D>=|! z)WhtB^Ht@%DiA6a&a2^%f5HVFZ^4+mL=68THC)Kn+jd!Cj>UYn_3#gp9ZNVB2efxda#OnTw*3Ae4Nrub9{&HQ_h$5Ibmrx!cG0wQ?arJi)xQ zBlTpEehTarrt*0-h9B{2;KF>B0YdaI_~-$2^h3q<%ieW^y*uGU++4aAE-!rs)w^jyTs{U7HLA+7bt zra#gSe=ig+X#F)fcbgdAjMp`Fl3P)M1MS8O%mkb?Zd9&7h`0h72D{(KRsx{2{JKc_ zqtsF1VwBx#f!PihH5-eIq5>h5h;Cak@my-ci!j>GTwsp#@nr|M)X2lsLM&b{Uv~!S zy5GQ5)}7%!yn5S@d=efA(eK7l9?;Rx71w(~uCW5g*_{@ciHmtdlSR@LB7yi_h=f5J z$!<&~5{9P}#X)}bq<0LULUX%jIeW+1Cn9fPwp8Fa`|}>=DTXV{UMmpF5MM?dDiBU* z_rFmE-W^roT~P(zDTT8AI3I`?f2@6wH^bYpa+}D?g_J80A+4J@fS+w{ke^23g4Vag zxktqC-Kk;8ttgM-cCQ6yU7R#!PTF%_>mlL_WEkxBACHs(I?E*@Wg}$V1IO6|7ntpF z(YR^30wI)$?qD&oOKQT4Fy0=qz?|yi%MNbIuhI!Hh8Kmp}3#PK}3?Jsz-~1@8 zK!6baOFnu49sM!l`p@3=ntI?wd-?)1d3(B17D-cx1Y+L$c_a+dNDgBvkuW@$C{FjI z?U>{N6`EU`q20zb8^&o;oUAOthCQFel-nX|r+#LMRd4axwA8)Pxsd z1AEN^bGwf(JGdo}uNK0`C+`awJjbkm@RX7R2;t70NVotx-0Q^GJji&%47ay0Fq`g3 z*U3BM+U#d+b+x$j{qtJcZWE*K6T)e8E#+iVb0-z)tTw0JedlFI+&XUp`74! z^;|UmZ ze;322rG|@D?q`3=nE>-GnfdlSw|a=UkQfGwuVN(u(E0sJgnO&xVz_;Hf%yOzOLW=-a4`h)Uj`Mjq(B3(M(&B~13fn*ft`21tL*39u7`Lp+clautJL=0NrN1?g{-AHd=McXgjz zkbi>`ukv3WbbpX^4r5Xky!g$*CGG_p@xe*WF;E@#o2UZ_woQLM%6j?t!q(KAze2D0 zM!82ps6@Nirclvv`qpOW`r-|Wt1oV3C-udR?ArRYqCfYErWM`aR_jfJ*FST<ob}w2v807|XXT zX^=qZ)d$#;nTvU*<=~F)QzU*=pCa)i`xJ>E(I-v(!_>Rq%4^ww^fD)7qrL300-+r6 zY46qfuZqBF)sxHu1GfS~%@ zn5+Ptg{>RBAnyZECHd#XTrY9`N$Of|C_m1;wp8^V_S8P+HHNFQFhV;^AoL~#2u`MK zOb_T}EGpNSp#yX5QI=6W+9p(ach zp;|>Jet{PvB;5JyD&Yh!^pr(#9#G0v7uBcTeE${g5?v zsjqZ9uV=e1G*{!IZH5ROTvQ-}z>S+}f#Fn@x*lTw0OobXua1wiYb`WS5N69v3A4D0 zfY^TXyhAW}ky&mx+FA=JZ7p0yz)b-^%ya1_0YDJ#MkXf!s!BYdHjW3BtkuB_(>l79 z!~IpnpoRHW1h4Wsasx!1yO~r4FN$c18?rFHintG|qx#Mo3M>4Lj13o>mFTfzmZ<7~ zgyV`r2U6oZbzp~G z-!7$*ws1|eP$VfjEJVn1pDlHkaAEJ<4wnEZjjHELhrJupci3g2!}2QM8NS1wBbok& zc~z)lb9@yYcC_7kp_xPW&5I=a_O$-l0re1Zhh-QN9^OR40D4&`OIeSBj63W^JBwzC ziwTQME-DZ~;1f73-dAv{9^G6qzsj5MfG_9R!0xcn+(MWQ+ew&3hlRLftGpL5xSLte z^ECH@@_Tnz=kL?tdhPCNHsdKB79fb$ur;Cqs4DS*-Yo!1)@qA%*uEU@JM3Ey+YXX&(P1G}lziK4 z=&*1q#|l6Y{TW|b~4(za_>;v`YVI*1B zB9asx79wQ%a2iOlnc%|S={K3Z1E4gjJ|Z1<2&C_@zYQIhSNYEH9rj_#bRFhZp^DA% zRdm?F_N0a8U9zv)U9xXa>)&@+h`7Tt3<;m?69&-Bda9K5nUHaZUB{li(5$rwr?9e% z3Pce26%LEb2u{_bJ6FtaFa`4+&|$~eA1*Xo5$4K0M2VuqLJXXm_W}kpnROsfGXj(! z@`erzcOCdMo=dM`0fJ};GdTfJRpJ4?TL6@-)yt*B9?s#u!(J9TEU)r9a+iuY$1|x4 zUKG(1cZGDAQ=vMl!>pmhj?3?a{d}Pr^i9rNdy1+>hlLn8EmxI6p(<#sDxB5~Kx+n| zba!`(90y~`-7Wba&g+iK-*?!M@RRjsCJ9g2OA;{v6de{KWI1kz&Jr%{ zoul9q0Hsm2OV9M(-SLpV!`Ai8?-KAT-x=Opi%le>{^*fMphaG2EEi{kdV%fJv;NYSH5d@wxQwt2I>d`$e z=D*9lj_9!C?F$Rd-w3ny0130`un@=2%6kC=ww^9EE$b(l4D z*l@G*Gw!{h$I1gm)uO{f96LK#l|i8@Xsjxn)(k*v2B36ze-}CU^U^i$3(5akUUyXf z>h5f%r!jkRJ<%!&7abNtMafU>LWhM@IaUCIAj{`yLEv=$0IFu(T0M&&67=m^{E(ne z&+tQnYH#T~@219|>%b1Xu5IdR)8WC_Z%yhxY;}=o!$s2(B^MQlAn=blEZ$desvcb*G5?V_-vQUK{7S_lb0c9k z9w}jZKmK8AA=>BVy@0{bnbpqIybj9mD_oV|C4g((+ttkDDIFFdh_=yuL<3M&;sL!| z0FbXZ>H zJHvO_<0R8L%&S5bo8znKu%qpaMP{9E@h&42?OY5oh@a3 z6J*?BC)$OJ%#OHNU3O7{2m*Iqtjh>a)uY=^%x}-Uj;MnT?Cy)qS%kUjWKp8%un=2s zm-hk&7c%P?Jk1QyF196fShx?s2QSGxEI<(L`%F#%RF!x@?-l?hYjufq*dKAY@37wr z9hO&l9l5F$mfIlhl2ccSF~BVKn@{=UP8gir5j&LZKa(ab@;9d@bootsnR8+Kra9b>tTnV%2un<@7oc96-P0achPjfveUpp2$EZo)L zPkGL3mjDFOK4Y>6RF!x@?-l?hYxO76VQY4g4ts6ru)NCa$Xz4ibYW5zyeOh2j?{a7-sGOr3%Y>uy@!;Z3#(n!g^HOoG-lS4m-g_d{g_k*FN$c1dq+CVK~P^|hg~=Cu$>m0 z=h36>N1|#YQTT_cg>c`@Rb^193L2{lr!@o6ngJ-?U9vd6VYM@sT<68<8D^gQrgPDLNE3OtviVh1AvRrE~oh4k@JA1(;07|3k*Ba9M zXZu0=4!dDP{*x|Vka34y*Y;m*+Hg_xVIGI-s17sW|Nd6Z`gw=l zcClH89us~di(hnDh$TyMRT&hjg2t-CY0Ut%W&lceH&x{LUo5%llK-!G-BJ1b4jU5Q zqQR^r;pXck;iAJrs3`ek6`{kzsT?Z+L69@{(SpF~`~g(WxNV{iyLHrIw~9J!lk}Zu zQscLDV22%N_ir%oB1y~5B1zF?4rA!?uPF%d326 z_zruZWcn2Is!+w|_$oT=NIQSAS^EIq#bwzS9Tp<)una@OllCKF0KKe>q^viEj63Z5 zcIU-r8ZK7cQtq%2LE!T^EZ$desvg~LV!qv*?|=?F!S3__czX*dxvH$~zYnMCk|3R~ zj&*me((z!y9SRwoK_@O1$7y76X>4#vu;2uDXxt&V55b1Pi^08dhyU-~eUDvO-+#UD zH+;QTtyOzJ=j>YR@$V0RMYO80RzU0Uol8;&6@GViy{N zBW}#DlKHlPVPgjC{YR@`iPM=ej&h6uo)O~+Mh)5>M&m8wh*C%n5`t?}0&}<%x8a{BVo>Kp=g zW|>r6CIJ0*x0zt1nLH_(V17#auN!L+gNit!)RL>RngQ*1`TOjF*wXb`PS0&n8)1&R zEw4R*C=j2{blL-ptD6^S?~Fiurw7_QO(b$znuyWfGWwzhwKwE#zas~5W&Os4uDbeH zt35E+>tY+)yG#Nv&T|ggv^L+@A^HYXfU_ebsoB2P1B431ba8heRuM;B<;~K{-Gs_cN+YKU<}sU`o;YBt2#@0kqR%PMdwePx5%40G!|YY89<#Q&9X3IvO*yFO6hb%6q} z4HS5d2xa)5CK1#85&BLP2>G1fkpsB04r2nprtN+i9nAImXt3m734CH2SZebM9H`$M zt>MN69HrXo>;0ngc9*B{y`=Gs31!Atuvl+%p6^O%Se*?3MIO6QT6YARx^&jtn zdW^c7fTQlpD-dAd-Zm4AG?P~)6U<*o|5IZPV^9%Clv?el<@EiW ze=*zgtR;Xb5dV6|DG)5K?$JPjj|2*QI8fk2B9yDrL}U+qu0b6MdB^X_0bE)7??!>g zxIGZe^|~uq@-GS8jpub;q&6>)A$rL%>N-d|GZL>rfKY*$F77VGD&mN%Y>-y&nG$)5 z<#g{c>J2Cs-knz3;MVu#6$o&#%LF6M3A@HG+2 z()*f3O!Jr4A2q16AYb@9asXG>QB2@v=BD;64CZ=$JXrFX1fH7)mfE~L2J1D)s0Scv zxL5k>6$lV25Yxr|j95h+ah2;xE5A;OJjJs5FJsgfP;_P#$pUPJv)?b>9UF{5DYFH-Q4b7NK01CSnx0lwPEyE`hxBcjN%B ztVItn3T#-%DiF-|dP%S(DW$u7cb?aEk=ndG2I(EgsHY$qwIHuRfKY*$E^ZsKia6pb zcac`^lM;D~W%OQS)Q?a!+%FVmyL3f>sENrw65^&bglWRE`rt8Y!~x`&O|II>1pxm7 z6Ju*e?ZZPPhr^{i;6T#F5vO~Ya18+rU(ycMCyr4!6K77w=wA9206Zhcii~>IFs3hQ zaYQL3bA+HhB{0Pd)m^!GeGqc$FM%iWJZxKEJ#UN}P54n+ z_?oS)9v~DFri*w7QHnU?`p%Zd-It>nsxKU)4u+!P!Mu1g@60-cU*5stdaw%)-kw`A+i#LpgnCch_Vw8QZw*+9U&S%D`X;9QXl0TRLqV^@v zNr+9;5T^Wo`sFdI-Q<@|uG;(x0RBHYVO-3phk3}sgyXzJlDglF;}(-Hjx}&>%R>&P z*M;k@lxrw%Ihb1Y_>wx@m>FZmGL`_M5Qx*QHduTxO$}DN8m#t|V6`X9qO5k9UF}|a zmy$XQ@&y^WKbQdGg9%4`FyU|q(@lgd;cz{;0|(!Y*vKACy9@PwDYg8JmG42l{*a3< z(r9}$e=q^~u45cWgP&of{IDF3Xc>}Eq{%IZ+X`FtfhARUC~sS5p?!M+qRITX8rNR1 zsP)NVL3`VS_8uCv_YkRZo+B^o6H00zB)lMz|_+`booKcVQkb?<_OLvhYNf$?)?&8AL1u#r^ zpzb|Zsdj{vF}h2E0)S`4I2pD220~E%25o|ON~`GK+%~|lx_Qp08#sr zWhKO$X$aH%R=x6A^@7Ro$^8BR;FlHS4Mu&zLzWds-@}r+)p*Dzyqbhw;~#c^=&P?T zsa?P;S?H~8UL}BNGWTQLvVui97jeW#!wtbYcLeKveX!2g$#OjAvT4!xmDJH>GbdkY z5g=M;U5{{^P_A~pB4U+qXX@#S0-Hm$PvFd!77Gz9*JpiJ*6F!k|-bC8nP41^R z9joqUaxI%&wM{Dke8f0;^^B3eX8nkvyn4p`nP(#o&sM`Y`W(T3U^I@em}MN-V?1F; zBwGsg4~E*mdOj0e&YsKYhf3-f%*s=ujEc>q1Q5mI?JT!^VDZ`W$zZjf2v+OyV6`5T z9`19D?P0V2S4s7zfcA{spFIKMvnP)D?1{sjJ-;Ai35RROcQ`nEZf?(>FAMcADYcwE zeGf`{+*q{?X^eV0*MkDU>|^a}V5F-tfuXDh<|C}euEyGxLB@Mm>j1~os)W4L}W0-UDtR;Xb z5dUDtDG)5KPB;3S4vRGUn+~ec-*l*JOt-*2PcVs?<`38Pjp_@?7ygbMz?JnR6L=G$ zVigGHdi^X|(kOvnN&`!6ULIvVcdY9556*iFrLQ%+!u0^50x@0Ol}@CUIN~Z#lUA+) zSl7icq#+bvX z8+nN249d})Zv1bXbaBM#UMXB3=F)A|w~SSv5T`9;^cQ#lo)KeTMs+(HM&m8wh*C&y z7lI8>vMbuEdp4>H6Xs{3E4G*tKs1?uGvnk07H8fkkW)(_r{+LTO|t6uJMyv~+Nh>N zUdz{20*FfCeR+FYFM_!~ww#QdMoQo^&%;%2()W#3hY-HuxxA17LLp(ghzAp;h$F7= z0cqS3If_>O_*iuz6rCAG*|x6;5VbFPN!f z4;ab@g83uQ`W|C-g~MgPA+yYgIQy4`dNaU3+{#+@+hf&e0=8wDI29BCZg!bqq?zn* zxVJB2K0_wQ8|zL(j3Y`dc`vKk5NBK2-Hev4tW_`5s9wSB$g`FJqCj1B)oBkbu5QIZ zdn*LmTRza8>6K)se77f&M~roQg@D- zVn#G}8JB*__bLd?r+gPBL-{9HJhPu=Op4>uz56BxHRAUlWZWU?IxhVl!5u(<)~8&z zr=0fq=afg-Px=0(QQZnW|6j6b6-qLHsss?Vf?Fg``C#z{{1$=oHxHD*S)lw)MWCym zW|iNh#~^UXYZ#;Bmwk@HpHB{EdVx;c%;cJC3fpva!8@A1~DRrqpr)pY|lZ zmT1re$EkNnW6n#NaGmx5_CDQe55sBiAiSaWz+z?Lh?RvSRws^FSvVqPC4)sYPr#K7 z6_qUH`Jbf{a~wKZ%xYBi$Fm{+TUyfYev=&_s)PSI<75FAcL7J#g%S?e!`sh@dk7Xc z1V_}6B92Is$u5EHb`E5>lb2oNjZoP~unu@MTLP zZrcKLx=qexm%<3ua#UHsN^jhQ8kx;b1 zB^`GZB>>m)XPFirtYDFZlXWHhfU^kSE4^S{WL~oPyoRRMWC^nuwDc~{Ygnx{sh`(S zX-(!ejA~6<8&qGMmb++ALFz#T~ z%RJPIc)4ZbR038yA*ow~hn$CSxTYP(;3AG#HaH^Lm=RH1jUztda70I3u(4kiZ0uJC8~YWq zySEr}~_j)Ghc_I_@Y+0IuU#F)ch;!6FGKM@#tcP53`$W1l-tZA6;$ zKa(`8wi5*ae>((YM@AjbLpE<5t}!z%pfNb&#+)vh?*te&rd3}!PCZPVy3d8t-+%$| zj2K%p>I1`=-hjaorI1`A1P`YKW`}6i@1UxaxO~Y%S8OpQfM_z8)^2M6i!=WyICMV@ z4&4v@p_{xf`dxp%sm_p>^*4=b4anQ_b(H|3QuqXu`(6x~>*F~DOMZ~R7p8&zg+i0Q zdYl?V`1x7*nysxKAe1boi})*1ia6r>u9L zkiN(Z3BWUATmjokj1(c^h*C(N6N37S>{<@cKR2prOc<4guGnHq0MTUrp_3C5Se*GH z-TjSW)!pA1uIuh^4F4wUeY_*@r=svbewwC9a!JWs^w92VDCCul+}~LMi0>@mi0>@maCa7#xRg5!#$lV$ zh=c8Kg1xgaLa3W?+fS+a9yID-#;LWL+L`Y`0pM`v$Q!j7>1xbiD64__E=#zNv5sMo zaYW0L)QwNoc~Z)1{#$ps%hil7XPsY}8Zk$Go$owA6o`L2;W`f%txB?H(D^lj&aWPH zel;n7@yl%I2kVWxt1lsM`yDxeD{BT5_;|Z*V-d`?cqg!AGYQ<52A0}%PO*8prldCqr0>JT%lXb^P*L@B{S$E8fc=n93(xVWE%lLYyO729##)R)#u25KESuE~Xz!=bVYDc4 z8NFq9bqD6wdDap@6o|LkodUt)>b46MxNV@oZ2|>uEkZdlO~h=0OX4PlzFtlo6I+R5aXP4)@|Sn?{n?ilI1 zpUY6z9rHS#y=kmefjC_Dy_jW2#My5t)O`W}P=U+qapTqS)7g!_&npn%A1)J&G?VcR zB@@iO$zm5{onVM@M5!ecvziTY_Kwaqj1~nhuV;2wFJrdlSxW#>Abz&oDG)5KZs$OO zI|T~dF;L(RB9v}dn?y|Wm(%-nS6$Cw<$gyF;L6&834Fucy`ux>dc7N1a)1QhI}I$g zd3g-e)5oioA?eIWyaEA21!B6m&l0PMBd&6mwDP5t$Wtt@cO9>0L$UCOyaEBDCMInX zqQ^D12`lJ*$E&kVe%WNNKmh-tF^ne}^%D<~91fRmJK>5r;&cxbu79LlKHX9J=<#ZU zdF(nrO1l2F5rAjJxCFMn87Xi2;D}O4juV2nTrs2c!QItOOlZ$SSL)nm2d}YST z2`tY1h(Jz<2XZLn3RSvN7M59(($Uz5RIAhX@IWOZRb;E{-_eD~0QsT)Knx zE#uWU#M%1iypRAqBgO%YYB>u=<1ONdQb=wWf|1wTwH&NZ@2<9FLVFgvVv8vOM3Z@W z;)DbiXMRo~q_YDdofQb_Oj+;C9eJz1th;K1d_lgh5SYl!TRy>>Sibw{*o6GK-9kE zDG6~|8o~%^h<<*&dd1|IO|IJf3IKjtF*+GlJlhHh$88uZ7)Rp`q>E!Z#y)mL@{({h z0rFA~cYAsw=&7&mt}evf`d3M}Vi`*SQ3!sb(5*ID{2J)yV6|@wR{O?awQrC`IXz9m zlv~pGv1dU(CnNW-fdJyyKse&pKselMpoSZH4TQt>pcf8qyZyz!26{lK`{K5*fqW0T z>bJ+M`$?nnTmE1I@Lk7vhpxZGNI95rM9Yx8Cr#crr7;!u)c@?Requsf7TUKLAezi? z;<^9w3>LLMc_C=;^Fe!`3)=gv)cCa{@2=nMuDYGWNj_g!2_Pz^tFA6@Kehqp`ncsy z987OZ;O%%GN@sEX>3B7O@U<*_%}S>pAUv2bUBnKe6mi7$bxPxI%~AB!-*E*2#e%wt zY4Eb8C;~+7OMa9PU!@^T?|W%AL2Y63%O+RtfzOE8LR0`J?6RnWI zTp!OMSn`tuJ~s{QkG~~#p9!krTox(|U$eE<1B61tbP<0bN)bm~Uw>)bZ#jzIddLJd z9Et^tIWaZ*xuEf2MTS;nz0#%SX(Ba#(``Vm9zUn@TkF1vLfz3v2c4*@G$%4l<$0F1iL zW`dDs^0H)txjD~1HrA>PD&mMzOV$_SbpY#{&E1+h)!g$u?u@Ba0Dbg;9%^aqj*Pcr zc}oCMDBi_(>H~}G8`8tyFCE;&-!C21!{0A$?U5c^cbQaD@@74%huR48&fk#(xWane zZnpgL>Q;SVuG@XUl9eRzK%Upx;(TjMdeaGNA}pf{(%PCWu^u24A*Ks_2*HXt;xf08 zZXRivx_F8{db9*ZUFHtb#Sy1FRk&6J4AUK;cb%XXKcBO6#^`r50MCeV0c=Y#QW$YWDI{$| za8gQOiW#6+?V-joVL=wUVv8vOM3ec6AEzg|w z<2V)cmN3SIiM;6L;etl(Xgp;?`k|sdAuu2Hm^;CKj*(~fz31d)DfmDJHRAVgJnxX4 zIwAcW<6%I5)(06<9mJnwY_XqXEc8;JQ|j~-|Qkj#bQg*uuK>Y%{n_#%zq!-?BHvxO)uPmzEuzP8!hQ5$?EtIFabna^2Hx}*phvZe+%r*l0vo^Co zke=JyzM7!Ereh2HO5e+_?*PA$Q~D~TgyH&Ld?fBWSlm?{aaVD~UBwZ16-Tso$+yz5 z?chqjmky2N`JdIHXuChDhw63_FHiePOZ;{Z5M{|v^|_rGEbao1s0$?=u7~SA8ut(^ z?huZ+LpUPcC8q@&`>DakeoC;h&z0TnTo^5l7U;#)oBNKb_HLV}HnP>^!rFo4IIvP)a|aag9L!i2JX9UiA--t_EG0 zsMe+(wX7X(*R2N#H+D?dfuBqVaK!7p=*09|T0M^XgPRX6x_+V>3&nz=(s4&o0&pE4 z&$Mup1dAk`lqCEWCj6hWvG5jDQCbz*u6(Ex$j*auF`E+G=0S*0Zd zqyWiLW{zXo* zv17QtzkxUGJ6POR9C251#9hS^cNIspcF8)@u%(}3W3NbuR^a)c)giO7yOuoNLv2G# zMvat~_>CPP%910-ZR}ui7jQ&fDB*BDYtDaf{p#zU}Ik> zyW0*a+W~*##@?!b>!J3hX&uXF$FJMi0esp2jLQadN9YbUJpVR?Jb909?mcd?xNVSR~=rI5t||L{$eX1&)$ zwLJkVD@nsDE)#&iGfgtVNHf{ZaBpA4{D7R=jdh?Q#u25K?2~oS5N99vx`NT=>|Kl{ zda8Rc+w-g?fG7|jk#V~TSX^CWa67FO+)iuox6_htBKcp_L`?I0>wZ1ei;yq)9XWt2 zYs|AoBct4H2Qb&`Nnpu92|S(WbzP*k^puiT*i9ciQGEzW-O4#3)&qoE$8>QQ5UYqI zuCiTP`AACSDVp`s6P3Oc5oHu*yL3f>sENsO5<)*`a!s$-_1uZ7Ka=ZLk^HK5asj~P zm#%veV_il~;USX4;nLlmaOnu{_xtzlP8Y7fr(8bWvc7Plnn#>!#^~N@C;)gyjNy#B z-7(^bQb;Zlf`zV_vL4)1z0ZU>S?G!_rUVd8<`-6-oD3FaJ~EKgh(J!m133+oRp0V? z+sXcV<(?|Jj8}pAx=H|1DST+e{n#9s>*HkvOIDY_*Q9}c+j{A%C#r#juUj=QB!Eyz zm@Z=17g!k_aedcG0dak0?o^vA(Er9AYj^wL z)rsnBYTkNv>0F0t8-J<*(DE7z~a8(i2H&g>TU9dl)OEWlA6>wp6CBJ zHKrSiy>woyr|Nb&a#%x(TENq^s1iVw3BShc4n?r24l~#lU4AJp8Z536N3{0I`oV#` zUT`2+{DIuKt{iXMroqqkSAqZI6*kp3>76*%DSJUh%C1V)yv+jOD)}l`37FIQkbk3d z98n({cb5yhr2x%^-EQu}j%QZI=E81Qsb(d{H3E4d|F_;|Y0w|?s+q&(*TVXvw zxDR2vqUM^SaKy{=iAZoBV7L#p=&yKHZnU$0j-mwMn%K#-@E8D#bd`K7;aguO{Qu&J zHS5_&^PkN3CY4&2id)YDfRTut9x-Am;&8>EL;^(|aq)#o=`D%VOm@L7iDum}Nu2~^ zWdkYRpB@1`BSxf-1Wd2kUAkJ@?gg7}3k!~G&*-7eklV3KuO7L`Y0bu`E?M8_4 zKBIo%p$@~_RnK>Cy@Cz8BB@)4hnzxixKf^Ba1lq`I2=)8W<*qMnQC$XJU zaQjA?2HlU~07Pl?Td(fa0~Xa-!r>Zn&g*eQz@l=CI3mp?rv;~;Q-f2_DZ!~{u58vH zronIiU!QvZ&&rS^|DK-ea#}KfOKC})99W!|09=*Fy%ARl=8m0zgB5W^J!*VFPD^h9 zn$yz#?zF@+dt{i?(gLaUea1Bc`Gezsaa#I6m-`0?0>AV+N!>&B4S$vDYqt7&fNh0*myR%#!e5nDGDOQ`Y~v zF-8Y{b=xHMEom;?N;=^$(g9wr*}VY6ePH5kyy1siz@ksd6mhtw^?Zw_;fPdX9P!bD zBWi2ozOuviVY=C2_i;Nc&#aD;y`?#W8Ptg1i)e>rKiOeM0{!oIm~27gU9`X5R8E+r zdS1z8&ox&`et43)lgYJga@9^Q0GL&fYfOx{8MXLT z_RpVV6D$cO5sda36i z@5t9x0*FfCvwdsY53z!|K8|>oBW*beyd2MCEx$QQeM9(K7QSX{s|N@V7fcuN1fmpi z#P$708h1*LVz~ZrlInjoLi(GmOxaQt0iyOLpGb&j(hx?4BlK63)Fw=>Ws|FRasj|E zE5>X_9mON{7IC$sF_Bi!xj2D-G~te3hOvocoFtysnq zKoo*6|GU)&i@$NVO|aTq2dlkRu-bo>MOpMiTW()Hv6p(*B}S_#1aP z+&AtHCu9kS>%lQNcpG%POd!b=p*|_4mfth=J?NpApR7J2jZx$B2NQtrI>tZfc<<}z zsqq$ZM9Yw@Bu)O%Rk*a?8QC(SnuYf51&Ai|Bi*jOU{ULnJ%aYO1?}BEXzy-PZ6H;nY1wGr2|uKdr;$!blW%`lcJ!Z=*^ADZlO#My5r)Snw_|3xWZ z#t1!SvbvOjqbB4IvI4-kPi!U_X(rD|CYW7$_Li}xFsO(lN-dd|)eLCg<7@8VQaL@e zN9ZGZsdX^h@~kC*C{R~jb=m`qt2;K(-Z6ppjt;c<50S`!(nL)2hw0OLsacSB{Ei&J zm9^%l>2Yd*cen`Vdc7W4a;5~{nCEp}q&DBz0eZ*D>NrR`Gm@HJ;d+2jftW7tCB!P? zh^yR1T6tAUg zz0@y|FUZ$b0*FfKsw?iF0E4+c9!IdGLjuo91N&7Tpyy3i18-!ZvhX!qTRlK1Bup3a zQ=$}c#Pyvmjr%G`F+yKBS#1u*!pV6d0YvRfE|CzUI&JwQ_0^NrJ|@3xa@FQn0PxF- zaUP={qa77$(y4MTWMJbo>$WVRPWTkFGNK^7c0`QC&?XV4Jq%h)$Qb_I< zf?r%QL-kF))FdXfXQ3;$m=ZuVncvEGLIR63zatRR?SYVP3xss5toH$5*iH`C5A{-q zL%twiR|z00g-?{bH;chsAD<^!@|XmEISuUF)>l6~SzS!{&MbV*)>aP?3JKFiT;)qv z21i`qW74>_0K-FksD5U$dIE}t)x3}ZqV^@vNr?T^5ON&7JXw8d^2;VyZGHs+zpNO& zZ%*pgVi`*S zQ3!rO*R3{Ke1Z8~u-eZCtGzH-?Pp|BcKFJ!c9VXcPlZB0CnNV4m;mtwCXV<56NkIN ze4CIZ9Igi+;@~~7_3Q;^O{hOlspSIG_kg$VCaY1TQJI!Mm;ij&F@9!k{>Dh@I*w== zl24?`n|*C79IQX-rH)}jTNc{47a*F<#^~A$7PUV4GHCA?L3=xc_I@rkKI+K%Z;RY> zfV?ALR|z00g)d^eAKC$PeJp>&!K8YpuR(|MysnFH8*fLVbi&uN@HH!)dVug?!gLXj zAW9KOT;I3SxMOn^gY_?y)#p$wn4UkF0HXHs8JslBN74}HU>c$qouYc)N`Beos?Dze z;9oajtiht!2~07Ab)mQVk_l~D=!z|-1Q1Q;M@XHJz~amo>+Qc_*|oR-f@PQ9?hBU5 zqO#r%-&qy&zl?gTp0^>Sd|f4gs1$zE!TkuS!C1R=Q`(VWNwWmrJq;WRY2XyK65(rE z_?oS)9v~DFri=I#QHnU?`UXqmp36}T)=N!M$MGw>lK^j(lAufT$FTJlbWv}0aK08#sr<0Qm|X$T{vfqL!~wH%Xc+2pFtuK?he z6=Mve4&fm}!r{_g@)y#@5vO~)aCHX^bw5mBI7QtwbcWJLc(+rFDFV7 zM_k`^(zt7L6vOl_Q`GTLEZ8|OB!H-W$?X#2qcnu+{cwHX6m_%7FPmJo`4s^CvSPf- zD0R0L5)PN{=-)^eN1X11!Zi^v>h2%LQxGg0x z#SGOmdaHAo(3XX+*kVcm(PX|a?}P*vXTDP)q#Xkx?GOlQwygI`b&F7)As?*&-dinz zydz&%2_Pzk3$%6YsSV8a@kD|p`%BpqgMZHD%S{A-$YpVwcg@oxMb`qtC zBd+f?Y23FtilO@LDXPmo2x-^6kN~3gCGSay6_qW2nErH%8pY&VHo0o^D**UQUySV- z^>-d=)T;#Ws#81@8W* zuN>+YvBk9NgL*4{FG9*fS8OpQfM_z;yG}@8aps2yLOLuEQhOkzLuI`WcI0J!VsAAV z@{W96C4i_Du8}shLIQJr{1?HJxf1xbG_Y@5lU}r{)+2l^3tzLf)dPe=!gLW=*Q^YV zxW2`taq9wxhj^9DP*ykvGy^`~mvX-s(2U7yOPKz?HRaaS`sWtmbaNfw^9f z1xv1!z>|4i*F|dceeJDRuBzuDsoO*PTC;tv2M862>Ehl+tRjxM%GIQm_oqajVxV5P zs=k4umQj=~MG+usVzR!3_%#h-n$W5@t*R#Tx%@pPzp9;F0N6jV>yDAG``Qd;-7&Y~ z*k(uh&cN#h58u4KUCmgJ+7**Ctx+pq~bCG_|j#9k!JFOWP;hsv-gbk zy&=XCrIt+0YBt1~0-Nu*3LLDj;mQYdex9`i5C!5En^PcIT-}X<0&fTu*byl3dJ)Qj zi<(5F`SQ6|m%f30zA9OKn~rEqZ!Y9cT*PE3ZI+ zP=S~(?%G{wC62htS<=c40K+|Su->(*=0m|xl%C@L zV)Dx-SMB5iz(pAH#uUc;j9T;oD>)o4-A_!qIO22<6s|9G>GEo%s@5e=d&cNL0|ww3 zF&4sDHH^kv#1W;C947=@b~XJl#gz3!z17J~=*U7>Y%wK(XfiL=K0i7|RS_)C{E0wL zj|XykERfTqvg%Jb^8Wh8-s(EYJM(pw0HRX({KOXaWD4f`IA}5C^s)pV!SisHd+E7V z^*G_nf6ogEAQTd&i}(+s6mi7$ohFStAxBZx=Ty~4P}J>{7ZO0!zT|uf@pu}-^nRee zw5pbPko>aARonXlfXPpUgt0WEHs_Igi#S}mD=$vEIO24#6s|P^!;TElw^Y^P#A(kM zy^sJrBStSqUE~;XL@6Y<3&9yFfhlHyevKt#LPr+5Vv8vOM3dPXoRGlc%>NSz>8(IW zwLnO3%6fNS!m7BR{_`^>G)1C0|J3J=4H`N9w8XtEw&! zu~7Twg#-`^3DZS{4_R9+iAZlOol!Rzp(w1M=&sWu^ zCckWQ)%Lys;FlF+Pez^1LxhCGrF#hBia6qQUlOh(Q!d|;;ri{WdWAUc8KV~xfM>+m zj#2ty%ZMXNA$d;--gLzb*I#oX&4i9Dv=UPu5@`;s3e#Dp}2IfzGSHC4T2^2;WB zAp!VTZ5ZD$s__xKtTS4l{56lY*AQTd& zi#U}iMI3Q`{iSiUa}@pbkg4izDC!Q%3ke`D;EUPu6b zf4~^RsEv7~-Xac{ZbKvK;)v5-QMh^mhPrRn>rPdN5vM(4^g;sgj2KHW>JrC@BT6Az zUkLU{2~07qdT^6^kqI4HXfGsyXfi)>?1TgsXFf6z(uhDv!vi4=llA`0k(c$#P3l|7 zJM(pw0HRX3KwH`h3C#6z^kA z`mm|$UMT9?^FjiM+Ls(DAy(;S%O9bSpQ=7E`DK&6kO2I$Vsw8ZsauNlT)rbC^*K}3p~Pv=7`>1HJR`=J1#|J_h7YJ!=Afz#}-tCTjxSq+z^CUvb*Hr?DO5r_f_rFNMTpwR1 zShAx8elrd1+g8?>PF2ejzI<3-NC2UbFkQs8nphbeaeY@vx*2v zt@`n)YSE_6le*=2$g<*a>8{j=baBM#ek@#T0EQhIroWr2b|X%E z#^{9v;2AMKBCj(XBaSGA1bK+#=cg?L-grvJdk(h>nZ_6rSPVVd-)IM`nWT}lCvc69%*2|BlXj2n(FaS z7V4>*R!XofzKkOSf}zXN+D*0G<)!Z-(tT%ZMXNAvsbA+EM~J zwLR6OR%Jp*7TOC5Ae!7&&v!xsi!*;N5Yn@OkQN3)dPdg!Q%62Tzuu%KLEf3Ks{|00 z!h60eTOonDK5jG!A-yGmx8Ql$wto8fY3fkImygd22_O^_ri*wbQHnU?`c9I@U7w>E zrca-yE{CG-guIXdqV^?cN{CO=5T^IT^##+^LX%%M*$WBaqB?tO!}x+xrRVLk;&ADX z9Zb47;&d+-uE~I5N6Py8X=+pAv}cT7NC2J@;}sZpGK|Js#1W;C+$aQhqy(mzvVNyY zoyCNXEVLIAKs1@3_;Er4i!=Wy5YmT%kUj{6^uDb3Dnm?lhP=Q2rb*ond1t<^5Cz4RT^)boTdpO_aCKqw?k7x7D?6mi7$-7Ss#K1Wg3 z4^C5GLs559UPu5@`;tc_#L7c$`2+RS(^Rh)$S<4hg#_T26=PLKjo~3X5)PN{g@h~O zh|_&mxGqn*d`HUq^=ay4;m`99@66X#0*FfCtBmf{ z2Il(sZ-OPI=JZPVjWn=tTQB`S<-W*5otzgEKqw?k7jezutPGC0zK^7F>jB1x_!raE z8c@{D$qNY}YG3lTgg7J(VUDAL`lo4XqRB6t?1cni7Es=_#Wd~x*{0kvv zp}mj*qRDIuPDo&J<}HDcngby<1w!gA>;0G`@2`h6s|_LV%-2-{h)UtS>fUPubA22* z5+RL{z{7YRu5vHkbGn*B`10JmkN`p&o&bXQ!8baBM#E+bs41BM+b>(!^L zJ})7pjL{1Tz%yc81KV1R6d~b=Qb^Vkg40q05z^AlYG)>NWTCx~0HVqKfQ}OqSe*F^ zfsmFDgfuD;(sHuirKL@EhP=OCyICCvd1t<^50?)e-=S#LRAJpx7DX?Y<5MD0tqmJkig*zyPJ zG1JutCckX57ZSknjFV47Vx*r#TjJlW>-I&={ybaHSf&W$aM_>6EaQl?pCHs{8*2Yk z4Zc%@^z7;CAOf~$nK%^`01C_6Ofb?+=1V4+Uy}Zf##)R)MI2FT$xd0#fc6t{?=ZTY zF8?6CVYAXNCv^+*tR;Xb5U;hI_Q2xmHVd@3X`sDL0_|-q5;-wVM2_OWv4cWhce<>c zE4c*V%6g9pe9vYxdwmY(di@DlGEM@2nFf~Hd|#XO9@EtZkW?~~8tY~LR6RhbKui~R ztL11Vj=0LbrImjJ4EKgX`oQUGHWcME@(KiqnwT6SAx=p{m?jL?M@?5JnEbNI)igWu zD*%}Miz80=Sm7#+iqjpaPoJ*3yuzm-Ge*Ca0eD7?GhiFZ zNMXbgrI4H{1XEH1S<#8jYCIDbW}z##m=ZuVnGdBoIf2EQPYdKUHIP#^kkb@d_17FZ z|ERZF9RPX5JXr=;R|z00h4)sLwQ>S;eO!5YQ$3pHo0o^ zD**Uq#n7*^tUP2{akz9hUV(IR#OdB9Tw4N$9T}z{oUV2x&istgHM{`e88O}^uepv9 zN0dVHh!9+n5}0C!>AjoPqfA(sg|66QN&wMhe!j>F2`tY1fIvw52SVB}5YoP~-a}S2 z)fw_3`lx30DdY`j<%I+gmC{w0-EV<`xjr63u;f??d}JEf?@0ah)6-SA*I1}5e9hKY z4-g6o(?xuXC`BA`eG8>=@8>9n>6fOfRiP-Kofi^7)V|~u2{CvjTmEqU)^t@h`DK%< zHopRZUsjAG8Fe`i5fToU?i|7uam4AqD_m!!T)rcN^cU0Be~2?bWAs7-@QfHcF)Df8 zGUA9*NWK<=FI+K$^a;&sH6|>~LRV}tC4gvhS6y{N0*f<0B@oiwKuB`}A)PGiz1zyR zlLPg6Y=@9HoRb$4KvW7>>F!@_gSkFFO0eWY3H)>#*te}&|1@3gNBBw>zGiEy2MC3P z=^~C?g_Xe(*Y~S5ZWLg6h!4`m8R}dp%ID^V1Q4|^=`tgIg|urL!W>6~b+;Mnev@A| zxoYz(0Qk?RVZ6hr2?>cH*@K>>H#xUg*fvwMlU1)&xr9PjMEKc z`iVFkQ3^?`5UjDPUCUN|NwYeQ2@A8(654!|m&tn-e27VoDmUp7Gt_g0uVmqCwzhhJ zP)L|A;$B24;)v^8S{k>1j-pksI758{Mfv=^kN~3gC96n?ThkCmNQ3m+xZWhcY;x7+ zR{-$)1ID_Hn!zLW7ICkCmNV3a#F?KldLaRLMvOs>dekxE zh*C(l7J?&E0y(?f-K>6M!onAJcX+a>Q`((ZA*03rb zq@P9;HH36QUPu5@DSVL0eQdx?x+VL)i*W=?o|V8;(!hR4>Z8X{KjAA`_?oS)9v~DF zri*wtQHnU?`o>G+9>`G)(NkxrnNXDH=Y<3iwJ(_=A%06knBEW7JI_!jnEbNIRhwS{ zz%MJtEsT1dhX@IWOLylrNf$?)?(V|12Vf|q;rhTCs^41(DP#0P0`QC&XTY`*BZU!1 zltOZd5ImIj+~Id;>=$Og!FPCq<;rOdP&xM)3vOS zhU#~l)g_QOT$mRUKvW9b;Rbd`0&{)5h+xTw68MTVuoqH)ebfx~DB&wv_?oS)9v~DF zri)lyo0Y*4*LRFGZgIePWlo-R+1G z3XnHkoEH*6R0uTP?EzyU-7`ZS0!8_fypRB*_9Y7>#N0H52I#!zHo0o^D**Uq#dwxc zKkyJC;c)5xV$#JCr~9OE=}JD`mu9Hd-$6(jqZbl@XT-P>wrPwMMjTNJ$tyxIIVF%C zsnDX%V#2~Kbj21^0*EH_hN}}2Se*G{E&jcgt}Xt(l`bv*y_H2}y29<>>Eejf{Xw|401P`aQWs~cr-?H^WAs7-@QfH0MtyG>(~E5!Q3^?yndz~6 zc}if48L9iWsO8^7NLlELEv5tzP3BgP6B1aQd21k~fq{_9fsh8sdJo>fR3|E4rbUg1 zyy5b^kN~1my6UPswSl=l9!#)gc?o<(8rbhhW!-J2I+XC0EPTz@Ru2#g3DZTa5v7PD zuCGxV_g;=-q;8(6u7aX`MP5h%QTvj<5@OJXw)~~^pqc7lCckWQ)#g_K@XLx(ct5FI zo`(nthfDWl!WD7E=?)XF(^D?rk!AFXGu1xCnV&IwApv+sj2d}eVi;2);fPX5RuO_u zSIjbcr506V!on69lFD+_`4-nFo zc_9HrrSNgQjqHvD=KA;u!IDiS@Kb4E-!@(q%~UH9zLJHn+1ly>LLp(gh$A*)WpKpx zRitst0fvY8GJ4~gY8n*ftMWnuh}xHICLwl7Lzv@eS-s6nHP_^qO|IJf3IKjtG45j2 zJ3K^4I9$5_HtFJs)BT%py^%|Igq}K64fzluWsF`(0G<)!9N4yEqzDN|ltMB?2v*d1%bNiFJn$Q!QC z3ke`9h2Jf3zrX|L`q*s~gfvwG_vCrF$^-PyGu88iuVmqCwzhhJP)L|A;+{k);)v_p zO&Ygfj$(xV`%Lu<6yd%c`%B=-JP+H}tk2?HPxwj}zGiEy2MC3P=_1}mlp>C}zH_B< z_va`E>5FHo8Bmn3%L@r0YF~1hg!nZLVR}DUUprGBYx2t`S8aX;0Kcpl*E8w`9wH`!fd^rO^I_(~SOW^1bl2!({{A{Mq}WpKpxJt2)- z3@~1qXJ@Jxp(uCcg#-|_FL^;iY@CKLAopkcjVG-)gRAP2NGv~#^{9v;2ALzMxAdMjkky+N+J172zvb0u4St} ztwlYu=d9vPf9Xa1vYf+t$H{6gH55-)5>&P?T@X3ke`1%j>#Ds-e=!z|-1Q1Q;GQ|lAEYAGKKu9+PLh1;FbiJ(iD~_C+_^c5 zVS1TassoDh&3PdKMD0sPNr;!z5T^IT^{TVf%O<~Ua@FQn0Py<*#;=TO?X=5^!=?L| zZAlkLobH;!wK-tek->UnBto3|8KV~xfM>*b8^$9HW4a^Zh*C&46N1Z90#gkCD*;U~ zVPO`!Vv8vOM3ed6{%7uomGVM*A`sH!fsh^xg!HJa_n_@eb%wlEzu2N)hP>gHypRB* zQn>fvzBK^m`gjn*l9wg$;b~yMBem#lW~uK9U&+GPY;E-bp^z|L#5ajj#1XH|_R_d_ za}i z(mjcA#u2Bxqi~&;a`}$%+F+J?i8%8!MlU1)&xo<5Vf)fD;)qg6_7j57T`?o{Yb|PZ zCM?WCS8OpQfM_z8DNaaWapwOCg!EP*q*@@PH)Xwd`J3$|KOD-vD##md%L@r0Duu5s zxOe}-Tpu4MSn`DgeliX0+crQSI!hfz_(~SOW^1bl2!({{A`TzT%HW9WJ6syKEMRzu zkI=`?QrAOKzCAA_fT(@R2@+!GG=w>hM(R^%saH&X+2pFtuK?he72|tG_58{%D-M_L zOD0_$ak}$_>-Ai^{q)7N)Mmt)pD}tN0eD7?cVOJXG2)0)NG=nC)yCMh?5DqOQKvCs zVHUb#izxv_llfsKCnT^q^B)5t{SXN0`#?zF$$H=7$ouGGAJqYQ!yS1c0Ys(n?!UW_ z1m^l!KNcZ%?UP=8^x%28%H8#~v(#gRuVmqCwzhhJP)L|A;vPgP;)v_(kjCwsqv)q^ zo2A}^qI_pwNB~j$k~<~D&1ncDr2hK;S*rLo`DK%8YCvoOyj9y3po)M!PqfT~=IHDAi7lh!jl)x0zS1-{=-N}T7 zS?G!_rUVd8<}$?z2`tXMv5$X?q}0d1Mbgm6zeUnb*85jS-lF^UQ7=N?a93VP08uGi zpt(;-g1J798IO<#O5jO658KwLU!A2sA$%nZU$eE<1B61tbP?|)N)bm~-y71n1v!eo z`rTQo>o*AL?!1ryqV^>pNQht35T^J2^yjnGFeX>B$yJ+Q0l;6eVEmO)d-D(>;c)5h zIDvF=#OZz|T)P8?9T}>Bo270f&istg3kkq8Vl2<7mkncjjf5jgAz5U0dh9-t5}0C! z>cM?f{kI4y3th3rlmMd1{IHS}5?Gx1$UsOV0wE0#gfvXnd*g|wIzv8KuiQti2zkRj zc_9HrrF7M0_cJD7u8;ExmaHy;FG~Z@znKrer{VkRuCvwlgs)`bYqqv}fKW)7E~1{q z%HW9WTS6Mw6);|z?z7c_P?Yb@3ke`MYJ*_4*AG^EyNe7tb6-w$1pwc5jBDxm3yhSmKi&~#d5868|Xz$dZy;Z64G)LZ|ck82C zzUONY3vzXp0HRX({?CT?Z6Yw&$4?2C>?wi2N(1}0HR@GotK|tlDhpq;t5**Y9!$oh z2dO%@uA)vHaeZq@<33Ugh|}FlxQbKbbO-4Pv(;zBnUgX4T^YbLV(i1H#vd#r zjwpp>vJg~L0#nQ&{r5gd$CY8K>m59Eae5S79y!QBD@bA4Q88bUfw0yyC6p~Nbf#dT>(YIgLxqVMD0uVln}3_A>^dA|7`WN$uFB+wfPkQ z{IX(v!KfZT+GRDUO?Q*&q>Cd?_h8}rD`41>LHgL)YAfQ*$r!zm06ZhcOEB)`7;!`? zBqs>Ll_`M;=|uKiCM?K8S8OpQfM_zm3FL$X7H58HAf!_QAvY$hduC>Ea}a4Go`p}r}lmeaoP!IJv6*=lprXn#bO z()FMK&~LU~4UBX(W-^r3z+8mJROTmo=q{l)~o z{p5ac0?f6zxC6)Es}gu|p4WAe+I(NT>HBA^8YGpBq-M2M4-g)Om@e)P#46&5t9(dW zxm!x)DVp_@v(=BLr;p{2LV&1=$v-8;)oBRRgckkcY}NA@^2;Vy`FBg^PZaX;E1G0Ql9 z#ORLGO^Ir6d~LS+^0Q*yS4>}IpGx;vXR96S%+!Qu-vOl0UzX~AW>6#kHwG3`|04VB zki0%y{d>=1-6A`&NIldwjOc0if=ZWO>U|S;Ub6VShNjkJ3Dbg>-o<$htFWdSzuFI~ZTkeuBLXWhDrp07e@6%j^r>>ws?W;DVp81dG#8m`{i^UNY zn|#&R-*))2ufOf^MPGm0p|fxLQuXhqp!8Vkt$*#SCc;?D7~N^I2oU!hhg*>ciI6PP zFOBwi8qG_qoBm?9Y9nUD6H-MxoiTr^0IRvj3rI!-VPxP1xJsp9|!h3feKh&vDH zI*RN6zhSj&8;q>?+`C+4*``=F9Ri4+P)!XTg(`Qs8$yvW!E{Uum}(q)i|HLqi3v3( z^e#G~#gq^_|Ih5*nc4gBFXte^AD{D%ckXxQmharTv+X^BXw9CNH+N-_Ig#rmi+?L2;jtjIz)vjjma zndupI>|<_&lF?5}3N#5L1ycm@p-q^eLW{wChFuC~1&X6mu}`|9uLfLU#^}yfeXfM&6=ocsbdp5BiGCIei+UD;U1Uf9EbF!y{cwnRf;bmvakjWPD*^I_nx+q}IFZm0 z=&4$vFd8L|+Ttw5~}TCFCJ>8k2sF>3+~3h&p2L26lx@`~Oei(ryu>(=B3myG8ugZxJ-JiPxJ$FSj|Y z-Du8+v1LyS@711nfM@Y3J@qZp@Vvi@G|xMjW)*>E6@g|Ifu1S^iq&L2A#ByjRN4)M zp-~+FQVgXhAdZqAeasC|QuVA*(%eqgpD6+;w|R``t0b6a0fAz{j`ke(nxZ)b(+nX{ zgv1C`A}0NETXWys*4!s-&86N_u^Llr?}RG+vu2m&u1Bz~aO!}38!iuxS`e%)QIj3G# z(N>M71v(0^3LPzuj!J-h38(29c-k_6K+p5mvJzed%$IQ9D`+&|V4|hmL=nI*s@Rc@=2jT1dtG=Bg&p9pGaT~n;nl{o&T7_vF&DfxXL^DLB%enTi}_Jtilxy>&D`oa#T zSwNszC?fD2enu>L4#6}-2oxbP0+oo#KDolacdoGSl`HIfN_E?0mbLc%FId?7M923r zpF!Hve`V{}Rk9*L2s?EoELkwWLN_^-6^cN!h(NJeIzmBPvSqJB^M{St+}e{>mJ32qiX%o4*Fc7TKb=n4#tUFkKB zkC}*+#~>HE`!itkk>6&qw6G)aq}@g57=cb31S)N8552$;D4uN(wc<+GN@2er1GcbV z;|n`SF4K~$guX}VR6-uotTDMx%GQ%Wzf{>;PGRrw3j2~q^KTey`bc=M_Phfecevx7 zhUa}A(md~AnpFgvRRo$<1bV6vC{~k)g|Jt#l{_j8y~Xh_#gHxRo{~TJF`ZUuSD5#) zP!b9|fO4DPH1vfXOtXMMu~0Zrni>1e< zuvgRD7WT({Vduy#H(S^rmC%RLuLKlU-2acl-Zgrz(QE}B%^4k`umj`^J5A5Pv6cY@ zdY)gDm2eVZzOeU?UT-vqV4~r_!nik41n`W%&9MAp1yd=Uyd~<_X#Qmidv)|Nbp$u- zzZ5qcTw+uJT!&S88b%|%(|QSAdHzE47LJ~@t+bXS@I2khDBDBx^r-}Lw+&=@Ps4gg z-#40ys9j;fk30dWo$WlKk$O^1S3IG4I$n&jt<~sc10?f| zzWm5IfDfy~(Kbg4{;#uud9FKwCGU&kt{fM#*uuT^V$^<&`3pvxGb1f7!b*UAuG92- zr=TlFprc$#sGOA=3MP6-r7`ASOf-BgBvv~UF@Pd5=_)F2PE}YE`b2%kn3t`8+295@ zxB_4y4f&D`4PAl}cy|ZP!CeH}-D2}m@lx{l3DamEGhtkMH;%;Ay6(P zBgDYbsR5bMwa1vM3hL}PWvjjtAWt?;@BM4mdj#71^+fsGKk~kQj2VuJWtoX;$5#xX z{o71b3_QjXVEyYAZ9T?pVg377{2T4hCjdJB$(>Ko*nwXA@iASHc8D7Mc^ueW$IiD%jGFW77Mo+cMmqrHvlr?yGX-wvA+a31?S2m5_%$qcPcO zOnP5+FQC?+gJemf@16E^XJQABF;5b6!*{}5m1hoM8FuB~DGkrumq_!>foWb4XetpX zqLMKZ^6+C>=Hn#BI*!{CW16QfsJO5BfS{Vbm!QIPCjjLdzv$|#ADD`xh`mNIo+RKB&p>wVBby|I<z*xfNU{`IgZz~EbOfSSVeNczsj}_?YnJFna0Z>=bBgdGL zm}p9bL~o)9;7MGX9=$Czz#Wpq1nB~&$lH;#8}lg4iJ z8pp@HkCaW-S2eJ6kl$i4%TJ8J6VvAeh(Vxc+X{4MBT&?pPM4}Skm0tfo#v|=M=l?d zQ-y$4=u|=;lA$pme2n>!m>0Ac=KNbg6#z@H zD^-n#XYL84dFH@0F9imvobTRpZEIv8`%N z5={&JNoNSEm5F=i7YY|0{RN#i5JN`QP-qv?a%@MMBQpr_|HNx{tk z^Hr^1bT8>_bEhaIdJ{zePvZFu%cldF%B$plQU8Qh--_VveD;qX8)KSrrLI&qpA`U> zPdPEBF`r)7^O4Ghps8KE!s}MB{wV~Hpc{f!_@q6OrQ%&ZV4;1CxH&yL>=7N>*X&Mn zUS_f0@mmB?Dk$lG;ehEE5}R|We^f5@j|{1w93jbacj|%-w{vu2Uo#%#OEcrX6vY7g zg+v7Ug+v7Yg~WAF<%L89o`a1L@M6RI?uEot#PsHf3+?5F#K6Hy(aU4Z;g*ul!g{zk z00^wpI01ssqGu|N5vXZMUK5fpO3l~^dqn5- zIeIV5(R+c!*k_)N(Hid-UES9_h4E$OaTNhnC~)P!_zdQGoQ|^OucG*msp3FeW%SM% z^A75(yOgb)N`U;*r0F$2kCqsLj_+SW+^c0KdPK{{m>)1v=qe_vU3SI*ioWDCQPKM} z7kUtMU5kL**M}~bOfoacg z%O%pSxkS1pmq<6ud>?eWV{%aRKws0p1Bp}~R}nyk!nbMsA14CyJl=z{n_CA0_MwHP1J9!IS3Pl?&XODpy*2mh>8PK z6?PpBiH43fCt3fp!3~c43V<-JG;W~Rb9^L`5O{Z&T6Ym>cUKi#&;H2Wb;p`6E0Rc= z#gIqf%jy2C?qR_KEkpL8Z$qu68+Ej%k(r#nT z57xhIa7ZM8Fs(FJU#VSTZ$2`u2)w&J|BSl`w7YwXt^R;{Mplmw9%~k&r#Z725(yw! zq|t$1PkM_8lncoiF>qLFzy`B=^hRG(*^xxbREI1HA(%UlM|MkXKjXvvZHo*9@^0cB>d|3i%^8>|^e#^%07YMNgsAu;Rbjaw5gjwu zJYfCH28Tof2-8aAb$WfzM-mBvcX$7Da2J7g_c*cD2$*N2Z*=BZv&PCKQf4tE5 z<8iF*NKdhdK)H~dEe0M)4cK7%Mql?eM=)SfraB}NfEvt?4Esa^)1DXlg?mar`f_Wb2qb%vvFWs;&N)?B#t#fqY zSaUt%wk9+ zfMAivm-uzQw}?Qwko-*ybUe?^WldD-XO=QxQKmX15`Y@a5B>N=0@I%N$R$$ue&Ob1 zw|@TSWYSgU`*?4BP&BBY`5fcR%Ht{ms8INRQN2qfFwf%~C`)QZ@q4M_kVw6w$B4fZ z6Vwqmr~I5P|N)q~3u2_TM`f7#%WNC074X*^D^ z_xQ-PBJl41!@7$=yE{>AJ@X@X4;yECcOj87iy@H!f<+p4Vr?CIibVv0Vw*C(?rEJsR~J?bHfC_c?9cEJT|OVJJE%tu&h%B-{qvplc@$R{C9ulQq>#RznmHw&AeTT8iTHhrSI z#+enn@xW?Wc@hFB7L$8L#mFlh3w@&{OkV*vf=34wm} zgup*~x)GH{1fGoB5#X=8!b@%y)Ay#P<G7v#}vv znGKqw;Bg1rs-u$?sOd>w5c1an^b2t+-Lr+*HF}_*Ifi!KD&=bdK&j#fVLqChl4D{p zH807-Iqv_S_e+F;o2)Bo73ds2-OrqZ@unXc2k?Qde6=OAVLP`F!92-bz>?=h zaW9SwJ+t5fwJSv}lrKg$STnOg<77ccd!pZqP0Ie4Kg4`j-t3Z?FJda*cZrgT`z0`ihUa1}U}aLiha& zuvL1rD{Rk4RwV)-%Bysa5p?g_u5i5Vu@C~R;CdR5KLLMIcHzwbXOW(`;45%${cce7y_wok0SJ)n?Hs26HVfC`)jRACY z2vl^*!`0y~;oqyn&7Fs;!_A!~)#*j)!Pna9wsX}zdb-+lhR6EMqCX*v0W`q~{1n`T zhU9tCc1Nl$Bu}TPYP_jMXH%xrSD*@j?XPq5Ps7juZb3^ znv$;L)0sMjOa06?1XVpkrY5|H1E4(N0gtOIMKBcy%YNHz*;~xVKlZOG zev7GaxwGbU#$bBpU(eO5mRzlRE!3*gt5QvMpIf)Q_iMYv0b{M^eX|r*WmQuDB8^Ho$H-xD`v|ReF8F$Lx!gCs4j( zgAM7`uCNs!sn`fSG4tpgBe=3R=Sa54Lg=)DD`?!8AEKx${bqcc4}WI3t=JokcNLo> zmk-H$Lcm3IDj^Ta(3or}b>LE;B**|)u?N?gPYGc3dcs`2%aa&DM~7fV;_uHV zWhfb57b^C!x=^u))`f~)TbE{fj~i|BNX1@hgxMAy^U5t20h9p>>ig~l2TY$_mPQ2Q z#Sy`H)rerc(}>jgS>AZ(sP72Vfbpf7abMbF0DW?4d)^fn4(B5Yfxw?!R^7zOC4ybh z)np0jhJbr4n`Ff?sTR|H5WDx9&ZM85V6POdRc9`>&Gm)#uxkO7C0SiCG8S#gdctT^ zsyXQF6zw?P+>XvgnNA;C1wh5kZVk}zYoH_2{2Bn$#u4ZoK%iDhvWq0|MrcZQlWg6b zikZrofF%*YxR#d>uivT{T&vZ~R zn6G0sw^GLtD0WJ}m0fEUK)Y*g<##QPT$QrB)|L{@n)E9Hg+ldn?ONTV{Wx#x!@9^K zY;h4*0_1lsnm(x0Y)}aF^z1K*c{X5v*BTIw8E@9ZM8jr6qBl_l@FXr{Sbk-IsccKe zi~51Lp}v*xln#t$j5mAZO8w^IO4zjkI^OP9ERBQdHG_}of|SSI7r5&TunUpjYB9@C zjKCAKC7rEcN?&e%+8ztD9-R=>^6^6yb)_R@*V>lhcGo)G?^+zWd`J!x0(PZS33*6{ z#^gw;1A75c2kiG}Tk*R}*`(>~4FCO~@A{kH6TrMJgt>YGv;RyCprb>eqD!LOb;b(0 z>kN~-&M3&0!4o!ubl2(@RaTpcSX`P}3>6zd6O6!5L7zLQizU%EkmGzRRz|0fH?z@M z*ixdX^50?txP{*GzCR5=|Mwux&p((pjzGtcKxIgBmQ36->)F{dQ(sum+AveLV*9Dt zp}#qgpsKc#phCq4P@WKnuh?KJ4!$k!o_iI+eEk2sQ^jvF6)tZ%I-N0?p7~vK6?>Ol z#ojqrv3HUhS8~O;VfmE-rm`)$R@6Uj z)wlY)O}CCW-{Q)$%#~2F0q(iStymgKzjlRge9RK0oPYR=4Ym>T-&-uL*a$o^U(z{7 zpk~_&RFYePqONq0RP65=ZY%cPzG8Fa@*%lX2xxaN$$&g0Lt}EU)Pa?O+ENFWlOVn< zJT=}NN6hs*$|Qzb2e1&kQtN1V=B`4TXAVsBf1%T@`PW3_jL(O#Zg4ygT7+14jN3yh(OJKa%!%sosz3+C+Di#Nm2)1 zOqJi)=BjpUe{%<6SM4ETH@G!l1n`mk@je|1n9uWT!D0l8htgeA)oui|Rqak+)i`ol zY^&NG63t!oD*=T>{`sof>*LK6MA(!?*y19r1jtu4nm(wW_Y)KXJw0zp3ib!oRqccE z<~^G`dzM!<08ip9hUM1)n98f{$ zG3O)g5LNrC26hngQ!JKNH3XiRC+Hj_P_u0XIPkOIRePG@wyJ&as~SfxAChl{ zfLG{LLLQQ#F)2()@1nj5^fOnrVealpmkH({#N52MFc+#Cz^n%yb2L12%}DdifoWb4 zXkHK~Zj#Zg4y zgFfdni}cmPj2~lq!F|ja98S`lP=ZP|booP{M9-YrY8J zBiV6@js(o-`5dqqf#RX`g;cfU0c}YQv&cCzwf?n0Jtn=uH#>Jc-*sq)7x* zd6kS1_09BaZB-i{tvA7(iz`hBm(6Ddz(PWoFPYKMsffS_{~-><2z2lpig%w{?{W_v zdqlsRU~a_X(#)d2Myvn`7HOyqi4iCll5NGnc7L}9?9%KJ?L5IehU&s0WxQ4buz#|X6dyNU8esq*xUEiM4^Is9;MI zC!{yvyEEKwArmIJ8}J;t#g~keaH{E4LLOFLV=_s~>kuHytDVDEed&KWC&qo<7BXjo zIggk}j}hj=ZCijlu`4IWG(2+;Ak8xerg=f2c|oAKO^%h2|AVIFIEnF_HpXc4)CbkI z+T2c1g|QM;*g^o5C&b~m5HJ--5rGf-zDIS?U^+$wYVMQXxf?ybayNQNkgr2DeNdww zCnyAZdd`#-To*83Mf*nQO)x7BBzLBinJ5By5>I1Tehq-Byh<(<^$%F}t-L|oFS=ra z8ICJ0nJb~H0bKipTbnf2q}P^w%*{wUL=C>Gfi)pN(PC*;L*R*dm(DQ)y&WJ><<|C4 z)Rq1!RqZ2&+p2b*uWB6ms&opV)fC#eGur^wk=XsK!o0n?k9zN*dERjpZ~ zxte|@ppeKvS5+%U|D0e}97M@EysYF@0_3Y2O&?VIe-ab|Jw4Az3RVKNi8fR!jq9%co4zeb>_D=m|%_5j0eRr|NEY8?5h_K^_q z7@bPULozfbpU8^;Cs121g_m=#Hry3}c%tb%m>XY533K6cAK;Lu9dk51bCZzfnFG_j zAke%ZP~0Z%C#IMC7o#azabkK)<8qGM5~HnZKB(iX%|--O-7GaRkZ5MpuLKkl`RBUauZ}uT zG$#>Z{alH##YI>NkgsYqeNeC3pb+Tk=_V=o7GS=r4UhUxG`HH^Ij+n^5x|qU;d7cq zFqKzHwWyy&zt&#vuM!QPXx_w?!trJESpl$+(B*QUhE7EUKKPe#AV#2rUtPR=-Flb1 z-0vB!Khb=L#fHpcxZDQ_7HOyqi4iClk`2YcZ=SaX?9%KRZO)(?Zlh$X!_)!fr;eug zem>)41ls$pMEOOj@^HD|GunQl8HtIe6NIm7mmM*H_HRc~@v`@?SG4;?v#s?n8yvO} zfF&=uLP%pbdX3{_o(hi z0F-OQ;kOVl6-N<)4|>r{I%qHzQj9>&ee!y43u(!1A+P1OkXNPXzL6^5D{LWlwf^K2 z<33S`0cI#+k3OTUpm-=%4oI{3PC&bbtUSP7?sMd_*k0~; z9FU$EJV?J1P)OvT>%_QAbo4~C2@x*JA`Ep1AYX@Q`k)59LQn|w^!!Ouuof_1Mf*i3 zO*9QQcg_?Ny@?`#C$X7f`85Eh@+vu1)Zbv$xAMfee>8uhX~vbNv&!bP0${aQv$ffY zM*5YXGwI4#erR6C(e1XC7BU2$i?tbLduT2$5NCe_xZE#bb&jr_Xx>8M(#(^3^3(n^ z6#$ocPiUl`d?}vLJb|MXYw_e7YuI*1;9X0u$yl<6+uLseR<~c3-qq=@(>dxoz-&OX z>dz8?eQFb{MF6F!Lv)T`#$YwmdL5!0Cz`!5GA}dI;v%dB$mcUnulEyl z#Rzniw+NO0O$`MTouj)ann{>wI$KDrb|zu~MPjm8RIJ(JNazwhG|?Pm{mTY7xWN?w z_B>ZkVrX1Luc!D(${~1SXuCp*k6D1a7{MMiW?F%bD|u9GU6$I~7;$q-du_DZ0CO$P zWtqi#XR!#NRPdLX{G5a7x3SmE&G{O+IUkjq^N}(&gI;&x_K7wgU>?DE-8sUQ-wa~_ z{WdlN{WdlN|2Fo8s4ODz99)8ca^b$Jl58rbuS!kJSN#G9U83hWb;OO9%#Cm&2M}1N zaSDvDGz?CyG)ADNA$d_qj^A(*)<)Y8Fq<%-YJT~W0#Ji_X9 zIaA-_Ql}CiznExxjT^m5b|TR6y(PqL4p?X(Ow>jna3+I^hI7jo6M&*G`B+rUPF2{7 zGBofsZvBL0ng<*VTF(L5oeq`N6pxymSY<>14cjHN>5j`!L zMNfDIK(I*TE&Q72Eh11ZB<&}qJNx!;g+w}dfLX$Ts`JVd2|x|*5H)`^Hx1RqVA}KX zxkMV5OQf;6L>eRW{iruy6V0S6#z$wyeOyHV6$-aH{I5)cc^(J9O(OkK6c6V(Kg)fi zPLoXKDoj+SzQs*cB|turXnKuv(Gnxj@s)(QlgmuhMm;B)wK36fet9ARDEg8;S#q@~zAIH6XzLw~BYxC3 zXX-;D0pt^jrq|f>eP#xMj&Gt6*B>yy#A~AIlT5TaiL{_RkpL8Z$t+Q^cdEiJ;vvyd zlgw}iH)n%GA^|KcxUG%GKJ+@3PwI7yz`Of*>n;NA?i{i8M47vzqEjcC7tqs^S@eWg z00fIP)}&X*5m>a+7=dyjIb944`@r&HgBcZF$C*C^sxB^1Bmgy-?_>Ey0@I$~luM)= zbBT0AE|IR6`M%5>uZ!*-V2;H2=*+l}s|cV%A&W=4b0jd&;}0lH9uURxhc>E^NJFFf zlg!nqZ_d<*L;}bs5>2mhf3(C1bbRLvagAjrMn!*NufRmZ!tz7{Q1m62iHb{86_)!o zqH8CaQXT$fgF_+#RDa|yd1<53}i7oItD0*m;xf>%3G9xW1tMFP0kk3GxUhiAz ziV^529}z0wPYneVt3^*TDVS)!q&x!w6p6{xqN4WSj)c{tmnNBBqwp^q+~EAH0I>ea zSvrmF=yenyNjU`G-7`=ZBhc=?Cbs6Mwt~B(q7NpShtX5GRNVDTz5*avq%oLY-+GG( zlncqnV&HQh%&6$q0cOKBxS-8c*Slbf0BSIQRKTYbnD+dwTspm(OQ$z->GZnH`s8Jf z$-3y@1I$E>Hk!6PV}m5tJpLiQ=WH;y@dhQ6=_4eVt3BuVlXO@WyMR zb^}e9wMeA$xQYNO6gK3IT_S;b9y@kB|tur zXnKt^&=Moi@eL8;4lgsoU9BdwFD9C=C{H8+MPE`UDsE3z*hCr{t>=z z0_8%owHP=yH6SNfl>^OH45-Ug*Slbf0BSIQRKO<^nD)HOz;I8u^T2RVw=^)^(=Ez; zNB?nITo?5pXkNm2Q+ZrP02K;9`@FkLBrwn8-Y823iQ@fJ#rcY~W0PsW4ilBBZ*j3z z0^}2krq_5cT4Dq`zFma4zm=I7746kzHo!#lRpp5Upy*5X6%{Ld;lf`dI;hD^vi@a* z!&6d#59ue*`e+k>vkJVdOgxRT6duN7~^%1#MFc+R z7jZAYWWZENF#?q`$#%K4*fy6I+k~_zZ7p-t@oTGmW_VI;tMN~MQd}ENA82+b>_s<8 z*bOeFiU2;6Yg1!k`oMhdyapB{P&||lqX#SbZ9w~^_|SpwNij!mCEF*(vm~02=~n^@ zi@8-V8!czy_K!|&GKUjk)y)!Ni;J)lAYY4V`k=P?hM*AW={a3ea7VyG`>-H}Mf01? zWj1%pO%wq$F+A1TuaJTZmuAO?Y&Z7WbrS%FIR(zR0A6NcN$evPl}9Jzc* zt`Y(|(W!(yBtv6zoviq-Ky6v^%Sn)-?iI@Wo6LM-uD(r}3snu^D(p&Cqv4sm0coB& zFwF}BO(g=wOY%1f`7Jah4@r#gw=u@_RM7=Bd!V_Wpz3ayph8sxP_A*F!37F6Go55lPiigroQq}GRv{mg!U)4BrS!}D?4HC_R^eX{{ME<#|TEA#1*KQkd zcW|*p7^)gTzN*pmK@BKGg&2XJo~I-QYXS3BZD{mjlUWNBb@!E-C<1sAn;Dj017Iqz zl2=6i4OV?CtJ<*W-6pdiu2kJGt~B}IqXD?bMA_P;F@|2J@-a)0a!TW?8rb8=zqOd< zCr03jsapYJ5UAOO#Ur3VGE$v*S+rX*;S(lCY5Jb?LII$yXvz2YfP~w zi#2$RW|j{6On8JVE$t_p&3?m)@&hs_b$(6&zQtdumo)sGR784Cz%=6sG~)>LtRc{h zBT$SdD@{%>?k8d^S$T4LJur>qUxPhci9KC+4m4AtYte&3*HSL3?LSilP%-j5_P!E> zX@(FehU{q1@7@)fUocG;0!3DgKxK4tU#?a!&eiIBbG7;&scuVBYY(=%R<}MYEw8IZ z9}hGa+x&Y>2yIU3w1fh9N@m5H5-`8&-vEmdXoe9ehD)DG(SMKLw&;KAi#|tg3EQIo ziO}*1{YpS#6}O`3x1O8joZ-|&Jtvz-p{nq>P}Sn7sszYy7BoFO+b6JtK<7svSzWsT z<~NHG(V)rZ8%(s6n3Y>btjV&1TVh(riN2MRk+SsvGj{qbG!= zu*m=nYVQgfjkW2uHy^VKQZ~Q&?$jCVT;va1EZq+fctX#jbBsWz8v^xrv~3SXxfSR? zB91_<;?g=;;bQAN4A@O(Z5S^sWR4S#T!toV3bmKesf0YFXJfLil*y}revLA@oRsxd zbH~Z1Y9r1;mdc!jO$Oi(ywf9_3=KagW02FI0D6ZvWt-U6t4*deO+n+%v{2!Ud#h`{rE--?=FFijQ$MOKVJ zWpuK_pm5LD3<~#b3xoVU+tLqGO;=gTTKnWz+hj%zG81k7y&!}(yUJMv@RYogIvL6U zm|yi zn{%LQQASmZqpA`hzsb<_?A&PCL7?;FAX#0v1L{p?{ABZYOw4;xX2Y8(0{Gb|t*jFi zOr?G@Nz@-szn^|Z($-Dp(8=a2LTGwPLI|4-z;TtXpwWmnZdVw}$IL^@rs+2su!E4F zVX<_RLEs7fn$9r-oo)!!IgRb1D7ONAs)#_X;!?A0GKEgE$sFZ38ID|rCPxUh9q3d- z9@4WhnJs0q6VR_wCYQ6xtnRL4&Yf&tfX$YdWlq8-1F!^tWs{-d=i~{b`8fg8j3dyD zBha&kKr@a&F`ir?WUgDqCUcRnw-Lv`277js@pNrC$h5ELV*FL1D{L|VDn?$F^qUNr zW(a{|sEEMxJEW-j1=D09P-MjjR7NM8TGEt&`Bi@nSd2h3j6gA5nl78n4fM8~%rw8raO9S- z-DIW;EqBtd1Qb^Buf53(j;@|;_Jyj3cZ4dx15^U!HyN6qogSTG2Z7Fy>tuEH1I%wS zt4B9aHYa1E{@pSYMF2k=GZ~gI0AMQhliNi7>sI|wzU|evgc=duKiS+(2-WXN2w{@} z_^693Xfz(8*N1$}e~@z4e2%-40UNdnKL*Q3HW>t-(EYkXC<2{s2-G=^?V%{Q0)488 zK&|4^!?MX7gaLac^LM|=aO5&HSt8UDib{QFc04Vw&rr{wY;ni4R->We*D^$0Y>2o%GmTV#{z zPH(%(-0U|Qj@%Nqo6Jo@OEvvUKw%aC`kTz>lg+?QIl=i%s0y15Kz@^<>Df8LvV%b9 z$A4vY%>mS#%=eScj+j_hZlVa_XX9mtx=h4%gNuvtGj z>FTaG?j2;t16O|`%+(XR{bz~*Dmwn6sjqEd`W>Prx!Uu$T!tg(3n!Uq>R~D=m9uFUuuQi|Jz!yLX6E zPEt2IM72}QNw`tB0@&uI0QBq`N7svK-?A?%j#CG3VYn{7S=_((n}iv-N)&Y=FRbp(os zQs=?xN*)GicaqXzcTbEXx03BnQXHIC!BO-p0foifik)P+3zxr&HN`9;!ulU1!WI`{ zB|v^hpy`7;)dqz?PtUrNf@c9{w$cUBHQIQJdD-SpVc%4_H&F!eB!0}W{2BmLd6jG` z>Z_|!|C28}WInq^+fFf`;R=6>E_EeTc7PQJxV1^+J9@3WIi?TtC|n0*I+ZBpc*0xDpWN9=%@)J=sIhBPo+)c|}X52eOJ z;)D4-{|YQdpm->4CspkSKwH(e^;L}{m&LZKZ6ndNA50RL#uW26B5ckg zY;h4*0_3Y2O&`=j_!A@0({re#;5fj1RqGiwPcg6A+*wIT^d^b`p2P6e zQU8Ti-^!}iD>`|K`5IU1JC@C71%QnQn;cmnKcGkuL}pVgx$AtAw}&P-o}$ zQ_OalsOlsUR67$ffTAzCNmOi>s<7dAjqaRc4zT`ZgB#r73V<-JG-lE3Bt9~&2sYe` zZ=6}dU#+_c{zc-W7lpPKmpYXI`Nc%jYus)XvJ-)h?|C6^XTU=H zV4_R(+7xpOCivaPRC%>C5d$dtk~c)fyi|oOrhiQ_k6Hh+!3}P31;9$HW@n9^Xrx~- z|AMZ3)tzSh-?l4^ z(9xWEQtvz|0w`Vlft?TCsUDbKWRK^v;IUj5JetdbM`W_jw!Wk#wP*DFVAC7pi!4yh5R#9tMUtXm(sgB4W2ig2b)J|E-JTL z1W=0jLz13(Ff}X5M>*y{%rXB#j`{Z`{Nn14`P%49&Pg%8>_^4{d{|={z}IRwbL$Vx zQ``iWd@G7)q>3fBz-#{~nrgaj&6d%nd=&!ZS0PQW_bGJ62y~Rm)bxV?h15_mF)Uhn zs;S3BRoC)W2%tzzszgP%5srl6QTM54ob@jo+~9J*0^l_I$-L7@=lv|YGVe4m=V+;I z*&wXIdw(vYtU!C;TTCyormJistT3agefxYEwNp)T8@9U4laPS`E7mzrXr!KOKvz7W zIUO&yv#lyRS%Gpb8J@)q=zehGPxN*f_`_gx70spPR*L{i5r5snXCRo4F0Kg|Y85r% zLM^KC7i!50HR=4Fkvd{aU~N=YWB!Tps%~YAt_a}6`j7$q0fP}P1HnAkpMoV_MDdrY zVu>yA+CLgO)qH`G(V3AJH^Y?x`3$7#_3kyf zio|3iQE^VH!jdpN+G48NhQXt=!41y83V_a|+`Q9B=Y2X|nRl9VIa*{}X$B(j-uGdY z?V-K@otPd7_)|eYG zUe}{M0|9(k6B)qy-x(@nNZAi7lUj`%N{^Vx%cE(&Bin1juI~O|SPk zbj1jCl=};nucU^8iDA*0siv?!Nz}7E0|69?$#_xGYfVSO@aW>HW)%iEWrG`>e-!}X z>;5!0r`O(mB;^oP@4$J!6&#DY7{LQHUT{5b4sh_iA^8IzVUMV>#!O(qvP^ZL7eEc>(T%4UOi`aq%+Wg`NALI?z2hXt#n-&9xQYNO6z10diV&FR@jjF#M~LEwQpJI`%IMCi=4{kAWa?X7>Qn;c z7ZXjdaqv21CjuScJwn`Yz(V_AqDS<%sb&!->id*0CICfW@^?{jNUFkCl%CN)rkY2r zf7#%08y#TBb+d9_r13Pp-sWTWKuX@6?cTxxs~pX1pnPPZA@HG`Naq;AmAzR_z35?I z`L}{AXxwK7>2`oX1zUP{YWi5^G=|&T=+8`b4@fz3Hz1RzB%E{UR6-u^J~k%LO-&z= zE&yuFE#{PF{eZNWdqDcZRI?{BFX}6_hui1?Ypv&)qv4s`5NVz{FwF}B%?kp>ZSt{% zJPA$7GKq0I$8Cwx=7A5YnKK!JTHH^93b)Y#lqcLV@=Fm+#Zg4ygWh0$9WmH4=7%Tct$+A4%l~IubCS=k;JQ z0>wk=#+o#Xw*<7e(Ql}64+lANS!{2kUoX+@K)(`DNaR-CMqf_SRz+V;HGd((mMp>+ z7hxqpz7Em!L0w~mLZGMTTS>ti0P}UIR}@V%_t@MSA|!efMF3CYO25%0f~mYpl4YBPY^ zvf`JMAie;sI?aqF=4C^Lxlq*rR@%rhN5eDM8EKw5FwF}B%?kp>Z8Aba-U3a@NQrS9 zj@uHWs%m%Cm_HFzVYmbpsv3augr9cvRSitVQAFT_E^e%Y2GcPjP;;Lw&Q-O0b5-r0 zTvfYU>cD2H^4r>6)!wTy7ZUd3ItjbMt@$E=kL0bgNWgracdIAQ5hxx?A4yf~18A$- zhrX(DwM@LOFYcja7miX7?Ux)*^cyqTq(AbDx zJMb}ABIV(c-&etAAwNCEupJ}tq5PN5R-o#Q73{W4yTXHZNP78zKo?sCAAz=`m*hAC zMMvpa*?GUifZcij zxq(14gg|9rvQVb|HEbo9$UMKz@h>&c>dd6$5OXw?6xNlAZRXJaGerR9WrwKQmozZN zg6*tW;MIqNs+x#Gd|aBB9sQuLKmTNh?l&{&)P#IiIhJ7ELpYpkrA^M~kDQ5+J{o z(DV#kU>QK5=lMoiAAbSVTge^M%%hlCS}%-y6GZ^e__qw}klO&jRAMK0i~6m%M*UBI zZ|Z*&Bb(Mk)6BcLxo8t{Gh7S;thtRVJ2XC_SG+5G$ZwExukp|B78lq^;J%>Wz zNt;OL7=ij4qZKF?tw4P{wDg2*Nz)i^x1`7Ymc)_EqvTN`=LkBLkcT8{O#UIIY7S8A zOVx6>oxbiC*PGMK9AYkPCd`G4L4Y3HI_7A2=BknAnFG_jAkb7IP`o7XNXR>(DS1y~ z+@0e>m-L2m*PosvvZeW;wi#kBCa9{-C8%&Q2%uc!FSz*P2d3gEBJe@?+fD}!rb3Dl zsANcX%$3g3xzf2qu5@lM^<#9Z{JmC}PKmyEbm$OsH(@W`TEcE{^`HpgBl)B(5-^|V zgSIEn5hxx?M@lsu2576{5xyF7VTg+y*eHC%4ec8)%oW}YF!x@{yv zUydpP@)eJ!59(AK6aqaxpGyj!1(>gReWP!tna^zQY+Gic2;fQlm|^)f0H*RP`Ciml z@6eixC-d1aYCqkScB8&$u7s)vu;OU9Hfi*s*GN95gp}X*^i>UPU*v~dEUjt?JTVP) zjuEKYwgSbJ6{u7%b()^;jt4W`R<+9M?iLqEE+3MP)6?_KNpvb956RG&R83EBaZLwm z{fhtJyTWp|OaG@>Yo?nU;G=$fnc#4W3b5jij#V0gRit@V!8B(GG|dPUXUR~ZqXA9H zaEbq5j(@56?XKtp{?iciBmp<zQ#Zl>Ysg#odZKb@;S4xiD%CMF4R*7^L{YpS#akQdR{^W(wC0b*;Y4>|B(z577 z6$QvwQJOyBXKcU-^t7%mY5fvlzKZsXHk@vTU}Ev_%d04WCwR?WG{ImhACr1fe>DAm z`Z>Y>CdRIi{?XRc&6c>iV0Uq|!C$TdjNjGO0ve;~br2sj4JmJ4oaN3N!A?iM$YN=Q zMc_%hpUyD?l_gf7ShNDQd`de?h5b9jZG|1}D=bGYkCN?$oG0m2LLQQ+G1*Bf%yU4$ zRE7Cp750$n<{kJb?3ooD&nm$9-5jel0;@>#tb%FI5NMhaD9)0xLdX4RO2$k4f9Lp@ zieFXO`-Yf!cg`91l7Opyg#}P<^WLJbuwW|2A_7myDZkf*fT?g}1S*M=hjJBmNv^{F zEmvV5l)CeBs=WU%T49$BF$1BbZhxU9R9FBX72V44L4iiIKq&*5(SXb!_^Q9lq*T0^|!jP0v8p zelUPQ&+}qg3Ecqmg}qnw&~!5q6N@Jabgv|=e!aiKdm&q_wQQo5oqr}5#=BK$ons+ zo0l+AHATFyc6`ME+P`l^#qd8^0<3?%qZMYD|62dD!3}P31;C~Blh*=hqz~gud$LvT z64M;a(MGnFZk!0b_t!DX_R!uZGt#>@H(Arme=VRi!!)6AUgk-?_XMEd{>~E`sV66j zCo~O57ueQdI>iW-Ye`ozJRH!y7O;fg)oJ{_qFrju%QTmkTP*@8Mf|ZpU%J6`bbIDX z>mIq%x_ck4cD46IK4VhtT zFi|(HJOcp~iODcgaZRd1GO%uj*~I#n4Q_D$RRGi;=;ob9I`4bal?aHO2JWfd5AZ*3U3^pm0&^mV(k^p-f`HK6vbVT4onMUUr!BzXVD{N(Zr0=01_zb}x z^MadbysC82V+%f#;|x)Bln$Dap4uFS0edBJ;0$-aoFjK?lk6`6&!JNZc{s0WOb(ur z-Y-8MsP*T`*;cAwKB;j}0q?6dM-xEH%(4WF0jgDW2vl^*L%Eb*l1u5oR)t7-XEH7j`yc_?ZO-yeL2+p8;kRP6a|3J8w5Uzsxd_I zt!V4UaXyOb=!hAn%YK~yIi3E>4d5|)r+a;ohR^e-k>>LpOjC$JdxJm|f zW=YUwEWRHt8QGEJwq&H`(5K)rwPt<7UUsM?#Ii){k0}BuPpEOOz*Gm zkK#(z9C4+=MOy(7u7PN%G>xr*FLtG0jJya3tUw2UrFeI#^)C0-vzqAU8Rio#Hf0ul zp{@W37HO2FOqmPGZDOD>(Hclsesu2))4hR9$V_#ZI)MDt(e&Q$!}u71_WpiRen6@` zoN?4d56>_gVxsvN;j7y56$2=WlE*~F0`K3D=&2dzKjXaL zbfkR!>rD4_2<#r@Z(1xp0Y>0Md63RAf>-~*KFCMTI1ubY<4`MbLsYP(7v+575r*6I zi5L9&1V?W1CC^DXPtmD_JgmINc{b zp5D>FXPB?i*^ucB??wTvIoZuW4L|?CL7Ja`Fl`)xjvs-_kmOUDxQS>=K9`xA#&KI_ zO6{{RQ0@0;JDX9KBz%cRZuaQPoQ1FtU$3- z>Nqq#OLD30zEy2nd#~8Lx6gRXgAZGfQjZ)g+yoTUOr34XilTle`n7(0>@w3_ zk1GxH%I32IAZ%7NR940aeDL?+fEDQAdx&=rTJO~MIC!Rc4vUL3i@xqu00fIPREER| zlnY6%80bIU8j$UA^_k{7R4>a^dtNI6@>56Cdw)3NV+7j!k)r(QRC%ayHPN~=&7cFg zuXdX7Rqe7P2GIU(AS&+l{tbyXooTja@Um=h*d76{oZ-qNja}%~#K&BZv_sV3w@0u` zkUwm(bgx6;LwS?VF@on0Y*$G5$o7a}V;W?ak z$1%C>u~Ev(xS1}OhDI}nny0bYoLTf~8Utv85%?*%9SzB0qV3*PTS%VjXy2LUD|9Z( zbcXE_VCPwG{%QF6-wSDe{=u|y1Uh~MDnpV#$i$tDrsM#bsWUik%S@^5ah0K_|3R$h zGi7SRtHS`w6D~E~R#pU4aqzn^?sp_C=Hs7qsEXfWDqQ|hk<%H2>6ssyoB6uj%#R2& zUs_$}>f+SS{5Efodki(3K}Pd=W#zO8;Dg%qFcnk`<`ZZdm=!2?O8d(8co?AF9{2Iv zBS&t9+U;>~iDnM{NDT)0an4M$2v-(dP&S_x z0AaJDp|UbY;Ddh!2dqE`KUcha(|VWN9*0L~%rq}yv2dYS^mV5KAXucKG9*TzTuA;b z1~xj}8n6p?cyz%`lN`($f2P{=S_zP!I-1`5^B5l^(B3Z)K%KpY=B^q#v$}t=@7T2B2X?Q4~l`SQv-4?as-u%0gE%$ z^)8qqfEvu7!SN*wOnW{jSHh0Ym9W{NgeA?g=!YKZW_nO`%20Cv#tRF|lBfuvLgCWu z_wMlrnCEde%97JX@!V8#nC0Hlqr{K;x=ekGi>(qMpGY*l#<$QCBhc|ZA;i63W}+r~ z22Gf#y0|=%02F=6^P-~mC>Q>a=(U+1{EguuId2I^u2 z+TAzB*8J2~V5Bzs_e`@ddgf&oLm~kLi!@%u;<47EmBt8^3(2Qq;By~LZFJU9a~A^^ zXR7O6Fhu}0nA^1<&P`DhgK5vt%O%pexkQ?uOQdsTz9%<3CTpV0hMG4pURYS3NB}An zUajz7@CNfdK7z93Dp9;NRUByR8+|p?RE%MwGW9Jkwn~6}BGL33SDVeuAkguBE5xk< zm|xsS3M@hej*UGP_#;vcchm9bnI+-3c3w{pfWB zAG1Hw4pG6Mu!G%*{6&k|h++gjlr!mU1?pC@6{y?kR-l3{b(xi(u%F9td&1s%mOEkR z$ej)(MG5CGbSfba=K_sM*IDTa`;|a#ISou_Qs2+2b;5L)4U+iydY5ACaX%wv(S{RE-@a-aa&@vdEkS(cBt8epypjFL4{LY0ObjB z_@xM@;wU2UL2rJH4jN3yh(OJKa${~G-;i6#*N25%S|sajMymX-HlEbhL@%*v5ccS6 zBVgx$)oy5D_ ztas|9cHdbh9>-mi%wpIc0fI#uDnnuf%7x?)VxaR}Yd}tF8)un1R2TkQ#%m=&e(Gp? z@0%DOBhcQD6Xi2fl4rO_B4D2&?>F9UAqadZ&(S$XpkEe6px>fJpn@&UkuBsE zhTARVXupMUtmd|mb7q+XhDJg)Ia?dBR^7 zaSzdBFcnA9YH{f@_XHg@n2r&Fn)@Uk7GB+`7#3dLh=%!BH%coEOHYPwPnEwOwveAZ z!#4U=qSc0(y9s;oZ4!2ao691Ak7UmibtGUu&rbr25hxx?qlTp?LZ<`TEo9^{_t=0V zm&JAqsgr2VqhARqB(mK?esW05Iqw-1T{g?SO@!6AON1>h!b*UA9ir)j`qBo4Ku^z= zl7im@=Bwyx(V|(V^8|9|jxrNP08irYPtqiUsk};V6!pi`uQkEj`CL7^dzRT0S6VVx zn*1v_0B4=-)+UW@>9r>xa{*FbMDbM(tQq;)7PI`s2s|+#(Af&qY+J$Z6WbM**dcb( ztU#waf`5Z{pqE#w$Spl6b?*}l*t++CuX`N1j7jbjioT{(33*7D#^i5O6AGuKHNjrQ zwc^JY{`VIxmy=%IT}`}lxY>Zk?ifJN1_D2U_n{%VN3=bZY6}}`RrCt1qjPblGkl>O z;D}RQ_R#Rz^CzVF>;cocfk1nMK<5Sm%@6{Wfk}%@`%~CT-jI2If#cR+KK$=_wkyd` z?0Un@Y$$2DTPC)dWp4kOB7pLeKZ)e`1u(^e?W|bf-qI-db{CkZ^SODNPB2B5Riwz` z{(Ro5&a91d`^iSR{ba-cN8Nis$x&SI+gq-kmPA-~h9neM5(1&sN~=T;3nqxXU}1v+ zGl*b;u~{<8s~kuo*dkllBojq483dS|1SXm^Y8Y;-=^SUPaulU?8yrYyU!s;_E)vyPbumF2sI$~IvVDgkl^(nRuh1Qx{G z_Y}Gh2F0y2C~iw_a`I_pwmbP88cseu^R2|4e10dT4`W^lDDNgq@%rWa6}5!Uv7-GK zhYEBo%IK(gI_ez2z~8WE7#KL&F@Qnu^9OQ#%ma*1Osm_^k2QA?V!=JtCnkWv_+pmD zhcK8DcJh_D-}F@6FM}`O@N0!*%s)tT?!A&`ekl&n?=;_b7`(=;k9e47tb7~v6n`lW z*5%L+HA8sF`2|BDZ4{FW7_@9Ks6)%mP_&j-7?WPajApqzB`rV3-_7Bf*HO}GOxl?b zV^RrwE~3%Nieu8dImZAkeXCmHrFdt5+UYgMjH2eseZpLRHwR#a-+Sg51m;%38Z!r` zdBLE0!JxQJ)|8UB##6GE)VKrBe@u<8<%Xh;UB`^0sKxh7QTe4ffXakA-kq5qHl_fk z>L_9eMVJ1diw4s*Vo-aZOpIFRgs63nk6PzA=^tCB&U-C&>y#7vYWBi)_|P2(>mn(; z?E66xAXM^tRV83S=c~^{=NJ?ZrAwt7b_aCb@RHCCdFEB@y5V1>nzfi$0?LKF6y0!% zqOG%o#+VDJu>LWru;MGM1Bg2w!%);zR}==lJwrr-vjO9d*V%3`#@yz#QyroR5J-H5 zW$`fprgW8TEbdo1eQ7$L?B^PGYYq)kS@gJ6n|C#UZ}BXjerNCsvp(Qqk~3Uh?V+oI zb#CJ>HxKD*7y>ctGr534?Y1*$Wn)m(m3EY_wkgY9SKA?UHJ*7rB-;rA+c2qwJr~31 zWG6Y|cLe$|NBj~_iJ<|E8e_`T-0*}jmv=RQSBNXjxq)Zy9jq~PV44>UnimX;+vET# zx!aj^wO>n(y?Op)YE)hA>UGQ*x0z2$QF&JbP?_-O0N?dp4NTQh#1M*pi}d26!E}un z)ZQmIL|yIrsH^=o>T1_XALw$HbH3h>?rN2F%v{P|{G61XcQt@e$<1l7T=-x?=l=vN zU{E}iUYD-+5uod8uZ6D0Gp}OT)n1iqzGhwtC>Qd7uB)|;F@L7Q*5{?dysH7kU5#NV zYLBxi3WMIBBSeDx0P3zbc8s~jY3GHi5JiAM;tec|P5A_&UyawV7kg zQ>0S=qNLImZZH6RdX7If8C00{FCOMwtbD{MbTzP54(m|U$V0jshCs{?=RynywcF01 zF7cf~OC5uHUF2pca!V&l-`kY{uJ4@?`X0}`Vv^&8qCJ^Z!k)`zbaImPgnfbN3GOz> zQruYm!7mfS>(GnFm|wzJ`%A+6B7g3z1?c=o&pU&_djr;(cQDN=2F)r4%_;`XDh9Q8 z$t6PA?}(LLCJY_P^JT@5dTIXNI_7XFX{`t)`Ac&El_fvs8#*eOW&wj@p@<=HxYvBm zA(&XJ0tj(N}hfp41IuM&<7X>MSSTg zY3z*zaE<-R(AatAm6rTn=o`kQ682nX{PitqTN?r`tG2ZS>4nDr{ur|}jJ3ThyyuM_ z-~)1!i(LkR_b;%=9Pf*BksS`*lWg`lc1ydW1%B&>;Q3NXBZfG-!Xte@3S47-r@TM zP&fAF#+r)=QU6I*h$28>e5Z>w<6ug{$%^9sZ00SS#=iPkvye0wXKChF>;M=4#WxrR z4>0Q)9%cd7PPQBxJJ`3_S3SZvb_{{EZ<$=cpk;$W$;Qpl2N(u@fMHO?mwJp%FCl6# zk;dMAtiS)tGq1FytI)S1lS;Mmt zlQecW@Vq~cHRc^mvx-5pib1oAL9>cM?On2=5Y})hjeTQbXf2*ED~42KKe)fy3rd?6jSY0%M7vrl@4%NsjD+}Ifg2JUkVV9@)#y&MUT0P4oR z>sWI(A!eC;bV<6ug{$!_BQDCRAj#=g&3a~)|`vNX#nAMR@z0PdAz+F%L{ zwB9iUVqPXWH$xM%pJe`~%RKtHU>AGnShI+TEk6-rnnOf@JR$?7tO5p=LUOnS*y2hT zz;%c&cFb7wF0R`$*A?%&4j|rEh9Ubuvc7;pXFpz?UywRa8*~<8>R6K;$^8N=**EwQ z1puAj3~}*F$gitCVXW!R;oL8p7N#2N`0 zlikgp!xapE7G)80vH|jl3337SLHkXIDLlTEm`nTR}ny!!kg0JN9e!;kJE9M zJSC2gOC9ICT(TE&fprucmAS9@+UfveAu$Xd-@;1)gRbuqA?{yQA-dVC#+tPV(ORe$ z5`dyFxmH{>UhT{8Zg1wYz~z@MF8lmy0rF#r!M@Czz(a(DA*4GGcLfYO-PcC{ z4iv0&&z%vb&Y4Ti+!iRS>$RZbSo}h3_9I^N~|}k z(&bx0W6e|eS(HT#gx3P(5gD{G>th!&6%q!OLh`i)*!()bm)-3LY|AkSsbjT}0MueW zMjV6$rZfL664IxUkUoio^s(&sZ6P?nN!n;OCU{F0Jk(VLP^A#O$$u*kEbzGcUlCH$ zn7&Tz&hvPeSGIPX8HxM0%zZ8-fLKTjgU7LWDPYj`CF9Z%?NuSV+ZD%|!wJ#asai+? zioT>?T-=(va6;-~S086icKKzCb0Gob-;rZ*3A66xAwt3s(p~3z(#4?D?JBVb0mh7U zwrh_wAL3_G7BLWB3y?=-a2B(cKbDB;xAHKk6q5cDU``sq71P;vYBWPwP_taMkO0(T z{w9175}3|>rN;a-nRSi%XEIl8%s-R4g6wyP8@!5Fvt1g^wghjF=3d##DY;mEmnX`-dC3 zBAnr}F&%2^c$hh?a)xag?CT6}MzXDhp6f#AzwJ95ygj|t>t=g3nv)qW$}(wTmHTIk z0LmACLp!JdZ2qle?0lsC8>;{8$H=bcCyTR}bcH$j3s=XQVF{tfHb{F!O1N6TxyXsh8 zk7dkn(P)|&)~r~4`~fIO{MqBcJeb;*WJJXLHWBk%N6c>}<eS>#C1J07YVQh`2aDbs^UUM~pLPy8N=m`R9%Rj=t63 zcVcipv##S|CSs){h5LPAFJk}PVd)`>A(XO!$psA8zf-7L^IdeBp5rm7+T4sTe39s3 zW~Dw#W9j+-D%AXy!QI_Nd*i_3`sdU zocDP|_WAD`b*b36TmzPcvY0kay-uPA%|>QZ*uAEiZrP|47Rx)QLU z^8>&N7!(hs6B<(${|3^Q0BNamG*av?9(=Z@0$qeWY9&lzWq zpu(EYQeobQ0OCHxFckHeD++_&p7|odrvc+W)Wu#j&YbA9QyroR5J+skLz4)mbd_8p z?ng0iX+L+=)n3c>2dOMvL#oZY8o&;B`eT#9wamJohZ%{L3--B_(yccIuurkCGTwJJ z41t&#Om;KWZaafw${Cc@OE*hbJD%mPtKAg38qd5Qk{g78-!rL%Jr~3110F@el7dLb@FjYqpLnwOPzv-gER7nL4N({-FQCB-7 z>T0J)U2UH9fzhe+^M7Pl>t^q4G&3l>(p$>TyBa{Kq|@EH60o52jlc>R6c43)rK@cY z=(^fHp{w!CtJrn5yQP}#m{$VIh5VoDYOB~6$C*D;VM`yWFz;#raaUs)in_=Zg+Xu6 z%Ob(c0pqUL!@k8ul+(_dRUwK1fyCqn6CiR$$n`vz^^2y*$G(Vq%AyKRClJta3A+W$=lgk$fS^-szIfUoqVQ zF0Ysd*+&}9I`}AOnY5%$)4gH>P`>!nAmM-l)32DGj1Gw>qC?{E`5}=!E+X3OUbipl zrHZXInk@-FKMS6}Vgk^wm@w#9Oc=r|rkikC#1P0>h@q1$`yY5sUX{@Iq@m>%Q_exj z7RH-BNuzZw*^R(KEkN^qem5ATyKx*-*$swov4!Wj(Yj1>2DLp&$MNZ1n~eeeE2ig| zEw7jc+4mbwGKp_LRYxrXC`bIs#lSq6+Lh#!i208r=0A#<|4_=mF-^oV-(+hBm|+B8 z^qt@Up{&yVj>h_d{uL8gptv(wQad26um{g;I!bLhuYK)Gk^sQ)?(-!ofbKz`3``2qPov*ko68$IX}apbRKJEK5?FaAz&fKb+HEa2^+ z^}PbY0@r7PCEdjF{M513mdm4;-DJG^B|)0ksa7CBtU!jr?>G1=V9-^z2$l9BS3w@4 z(QY%|%pgR4e+iK*5I~WbY$q;SQWuVd0d|-1<{Fn@wz%x&TMKYA^W;3hAl>&@n99C0 z{FrCGr+5Wo2-*LQRc?mPem4pIfD65(^T0s6?|3sBhjX(`as>hmd)Q~fKosa=k1Q~} zl}!HPMjJB88B}V?{#ng{UV(2gTNF6Z_8eg9r_zS1qZR>_qfU1Bpg=HPUEfH7Yeov} z6DhE_2<6r^5h1^MfZ2rL^^LM~q2wY!C~LJxoB~ILHzdIV*WJL9VdA(q&ucnLZMi(w zw7(f|4kSox7Np{LxDFszAj9By621x;bd|poDyOG`@(=^DT7dwH#N=3U zacAnnkubZ_O$F3yeXfmYkB+>;h*! z@FQl60-Nl515CH+w4v&#MF8c9zsnXB2&SvsBvRnUkpef06u6-XWwS*t5l4Qb9f6n# z-rQ8JK!8xz=`5fDhaTt_aT$?b^_>fr>>!TMPaR8bxjg#VGsc@Xg0y8pDxTLmfLMVH zgJ1I)RASIoo-I^%0E~NJll}8}b1orT2UaT(K#`bSC@!{4T{sd3+RMkAhh2Wz;`|jp zz`(~d1r`}R&8#nZn02voRtT@~!G_P^jRGDbM+~8qX-qC)D1V#OJpN6R-M7S`YI8Hb z1YMa~sgKgNz<6^3d@LN4ZAti8Kfu7hdsZ3btYVE>1=E~i&@^LEoFxwn9ndO5yMF5pH-8>w~V5&wpIS|tNgeC+`m0Q4| zM3n3nwSkdQ8~9n?21>ii(Ryy`eBn~x8Tfu>IA;3WiCo4($>Q~dk~U!kN&rHYn?0$k z1PjN`319^bilfrh0qK!(DxkY-FlB(h7s@k#WVpKqlcmzLnO6eJ500g{Yw-Q$F5y7v zZJ!x$)|}a)ro6sXU-8w~0mOZeVJP?uS1<;>t@n#o7v}{lnq6iQO z-u)>}FqqO~^18Ucka<7+j>7j7<8;tu-yd%#k!Hh&l4jmv0p>pKdjW&l%(|F|IUOtC zls{=wN}4Hvy@b8PEZ<=<1k&DMvYVk);tYyKXHbVv=~L;j@3Gu<*iS--<(bz}@{y49 z36o0La}kYBK9dgf70|NkFiQ|tKi_axm|(VnkG743)%-`30Omg9S!Iy3iZx~xOml`o z(~LoJmaH@(eZ~C-o|58(^bGSJ&zDvGPCudG;|7>E3ZA>M6r6Wh0F^dpk0>&M-pIvi;d6f{0t3wn40>L-2EIzKl zlpd3{#eK);mraLV#}1xgR-Dc2*sX+#yu$)~NYwOoe38NG%-Vp5`4TJdyoL@7b_Diw z9p<M%>_u#LXM?li%?3?B{K2&;LA1^AGhgjEJPt5{=J!8B(WG|d_9s)mX$32wCMNO$eAO zw}3&3D0w*Qun$EY_Q9ybJ|KN(RO-Bb>Lj_e`oX^~@qb^ttYbeNVAg|@)}4ityu$*7 zDs4qq2^Nl>UBC($6i216q{IFK&~?}^Lx<&=KQdg0{X!}&Gp_`c9~}RU4%^G_HNosn z^$WA=^9~CTcUXp@;9Fh681%O8BeK2=Fz&F8_COjbA?CLV!68HuAQ0T`Wlb=c(qnRv zxIdVA%igD9Ts5ZE4~*nSjeoGd6>Ph@_Db&VZpi_*P&)h9@1ek z1kx^Hash)p?=31$X-EZS9A%{wf>$X7k9402Yn#;k&A&M;`2F(}TGQ-zL8@Ra;s>R-U~ zWmSLrTG$tCo6J=dy!dBQaNc17RNDOQ$k1WIRE}iC`5Pu3 zoANhIIy8khOiD>pdY%8b)cFR>u*3GVLz>J#prmF`p(O9H0HMkQUe{HEg=6O$umT3f zQE9!V^xES_K-Xc{ZSr>sc;=4`*I|cCrFSx~1e6~f|BVjYV9%Xk{!R65S@og))d9pE zmSHHk=NlA^L2v7MBI~|@afj`1FP>ofAI~XlFCjRDC;|k6C$cO)uE3NYlS{?@L(cs& zIMX)T>n50=lVz)r;eCx@liuo!ka zf$tVM!(t}88R`=#&hQQBO3VsN)W>g1w@8Qml;y6&-W)nC&%BP38-<*IGpU3<7t!eC zR_QQ>w|-2Asphq70V`loJd{qAGs2aC?u>9sI3w`PAIa{FaI#c$1M^Bi`N6yt zXM`mlxXam>kQNor&nm3=3hMykuFo(Owd#8mg+Xu6D|By;{HPC{s(t`+0Rw&rxVPLq*6YpYCmfM^6&34c#l~u2jHnhkMZ&fHggZFK;#EExumm*J&=LD#pk5O;M|h#|JiMDtrhwERXYXz(El0E)h( zySR8ib>X-lYS)}-&U5)?i_3m-Ex^I=XH9-32I*V$PcW6Y=o!Ajv(9t9t}uk`k6@LX zp|kHNp~nD59~OuOHf*99g~NqeCM_WofLB8%4AM+~?_!TEFuasZE^?!{U0@60bU?6n6LxPA~Uc}pBWmO7T&a$ft{O(&Wo z3DTYgsd!%N0Ad9)41NcG0F@YYm75Ed!vJHE53wUAnu`cg{%y4a0ThYJ_Tu8O)P*Q; z*NNsimtVHH?DMMy$QuiTj;C~}8O9^cx_}|1`+`dsgHHG766@8fbO+c`6V0*ssbmqu zAzurSM`Z9id0pTlrmYNvN+CHw0&M!B-_Zf~-6m6ELH+Nl(@lb$z;xyxL~>dj z$?5$_PXCf!zc~c&Z@+Fb%b&`tk}PB^r<#FjgYLrfc$a(I zLnfLbxNpzg=RyLAg~Tv;JO(cX47$EUg}4b-AqLo^Cz^c-Q9iUC8I~ zjP6SejP6Se4EH6HME1M(6R+ZCyUIZGGQnH3;GwP}fGUM=UT^7z1QvMQ8)r#palBvZ zIPOSiPBeADXQMLrxsU*2Au$Xd7viOWLDzSV5O+^ih#~g;iDq*`ln<*G5`dyFxky~t zPks4A?G+QvQ7*r1aV{i)d|Mg(iCK^EkZr{f(mfP+1q?dft0mS^X{?-)0rs|urt}Ad zltm1L*8=1b8B8MDX3Ug`7*q<$9TH$sC}x1|I?#+|LH*&?LIO~W`DK4)hz==vTM;#LBT5Agx^@rmXOLX?lF77~D>FL_d2?2x*U zj`aLQv-Ujl%NFNC0?1D^4EAK!i9BRmF@$t)aOq;u=~g7xZB^+GweL+d&*G<&MGS=3 z0^|`H3})7frxP(fwP8>xB=1XrHNNnBIn)jvXm(~n{gKr|0#J)P*|&m_z;xytL_%6W z64H8+kk*y`{zC{p*lsz{OeT117Ch8d1W={$JEE<=BY_1T-^W=pLL7gRI?jc}TT&Cv zmAG%u+~-09h=s&3c--|%b_Rp4?+YPrcfeRkLv76@^C}_AM^y_6K+%`jN$Cmr_o)jf zq+xcsNv87|bp#I)5{8hj`HFNg=ydBORtLa1-6q>*lDPptl`LW) zycQsj$e=f~-f$69Az@G{B;6&zs5F2a726Lqz0X8QM^_68KrQA206|D#I`ds3A+<(A z+Bp)^PO{%Gh2V{LFZ>X^H47ftolPWRAvt zd*(hD53qm}(&bDEgAY;^M{Bh2wspU4N4K zyUQ zGI)W!Zgde-Az@G{B-=}XOVa?Zn4xyRf#xd~)E`?dBmlLTy$nJE)0rO>32AgBq+dru zI#Bkz-?y$h7kscia-eBC8zE)ELtRAxRSF#`2nj6kI2mWjvEq1U>NxI5yV4bK-=4Y8 zg#-`_iDB^g8eR$*bbY%Caqm=x7;5*LWKJSPc}%sC02F=6KH_5SfBW)>*#jq;zq$Of z#kr6G@@-}CA+vg({2TQCo(pWhoP4?(XW`F!tvWS83T7WzvgGY#X zii?;E34=-@86yEc4#hOtaRbdGET|t_EhGT7m_I)dgaoEDpBxFPJrdHSNJtZ9zYnWH zL#dD&?ePQ6mjrLkf`___0IC$euDOx#NMM1-2XL0m6~~KG$2o0%Y&$LbTsA6mp9={f z781kYvB}i(GN^iIrV4RG0pmlw$%tJa7hLG;_E?o?IJ5HBauT-VGzCC}EY55~U$|45BYXS0z3}zE;3^PSY z7*q<$MG|0>pZL98-<~?qEM!6b_-Y{msKqpeAS5uI`5BRrPLG5%FA~xpWWR3;!Pm9t z4>X?M8=LQn)}1UjPLQJg#gJ(#7I<4W7rlJkVY-$@HJkMrH1EApyifVi-Ig zjh6xjUEftg-1w>x>)RV9nf(Y+o=`0$07YMNv$(i1b>W1xfxUB*ImhLfEzX4mkZ&u4 z^HxY|{?0>$gdwEcx0ZA<=ydOqSdD-&BSY-tlguI_RA>|b@+W6;^ZB+lRdPWEq1GV2mzaTcP1 z)Z9N)0MPlpEiTq7I09ULL+#>8=3tlKB+0LwE@g2oz|F!R%?uY*M=b&h6yY z^!uU%{od$6zekS8Kc|T}^84E-2AVerzW6)A0YX_{vw+jpPX3Gm7P$UN2M+XS#BoQS z*L0NHa$bAe<=V}Pf98FW_G$$J#0q2>{2qX>0tQ{>ibCaY(m;8L0d|#kvmqhsCs!Zt z0E)z9b#ZZV>cWxGWP7xm(JsGiaXIWeK>ovn49;NI{X9f+7(%+MbR=C2I^Et9s|#R! zxHsE@?WTA>AC}J|=7&2#9+AP}MB9Ry@>7QxR0_#p32;;zz!lSMpX22%3l?UsTYND^ z0JWI=BtcGKI`fw!IaMM#y%fpmMcMTaL-2w2J#IA;yk?4QL#V3=ph_Y5#$HZffyeDT zA*aRSco&|>w5?^=Z#U23zBzMW@wL?f#6n^iJYIp90tQ{*Mnc@RRUw+~7VTz*3lP%O zY9RqA`jV~0#RsVi$NgZtL%Z3O#m(8`vd^y;Am3I72QlkZ9wHF-~BV7zS-ByXU zA7IQ#f4f(^c@jT!vxtH4T7WzvgAvTCxzGy0qFtRJ>GalwPR=F9=G3eTm^ zL3?1jx*>z|w=4z^%HOhR9+bajF-RnGeVT~VULU*3AhQm^>u1Q$g_4T^p{)8kcTQXw zeyvbi|!#`BtvQd`bzS9@B!*_I%!S&)k7wGJRwAj9By4895&bd~dj%1LRU zJVal6Zo4^@5Y02I6$qe6OwJP*x1=r{32WJl+sz+be%a!(±B=TZwcr=yWfWSOWoTI_Bwivp2LG`xiu$Ma)|nKpv67e4;flQzBweDI_;bfZ1sP zS4=m%?3o4oG7GF#eKrQCY@gOHKo%wc=oVJbRG$NAIHnQtUy{paz?_zfwWDX>F z!>sC72B1pmWZO6Qtqd&ixDU>fJ;d<=spFislD)ItOu&6>=Dy-aakiW8F@D#H? z;vw6LA*6d4?g|)my8n<^$E2}xM!MTK+D*Sp5KJuAKCAnOPS1dqn^#?a+2Z^Y$N=lFlAVc) z4F1WinoHT%7Ob6YIeY>ctP%S*4s#V1FoaSLXRCr2YhQH~$IbhRJ3e zHP1g@XwN@=3(##<&m4om+?rTp=D;*B7&I>!6t_tqDf#DkO8QETd-43o)R;DNU(}I< z%;^-h-~=fu|MV?@%A}KR4~HU{s-uV@6y19@T{M`k5rf+MWNdUGkBJWCWAg*Kbc`Ht zBU9%`{K!w=cCmlrj78aPr%Bmmf0PyhLM5M6RRR`tzV_YX86@@`> z&tQ?@8Gvyg>SouUY~FO*`Mr=BLKFc4i662oJ_f*)u9A(!{hFO|zm%W8?QXZ4Yzmig zef@`QKf@>E0qVGIlwM~Q8LY&tUOdcdSoz3T=xSiwV?WSgX;;G#h}oaX1q^Dpok1%b zgQBjqgLJinS?;>p_Mxls%M$`L;XXz7pm@Baqq62#NhH-}M^ z%^C2qc%HDDcRYZ)E}m5eIjdM>R>3r97&K=X6z|CaLdX7iN`5W%AI$S*RlnOH<_sygfv4`DDFUc0`Q_Wt4Z&26ZgL=`ncD|3Az-?G3`#S}wNW>`ChCS)N8Ru$ z=^qnQ=O-+6H~fBOIA+$cFAOq|LP^7Xp`=Y1ff9gFWzTN9O0aP3{1&W$L2*=iMLOjX zfUZ-%96BY>{E^{0Wko6-&%6>)esC;Br~LkMmvA5yZQEq?I@Qn3s;~I!>j2^|$}klC ztScCU-qs^T)-M6ZU9_tmJK31aITf8J1cwksfI#s2-8I2rN{`6|aX*83KfH^6KQZa` zf}J_p^dQaFKS`S9&|v{4^~id`N(|CF7#lLxj4U$j$Fm*WXfBiZnCl6XQVvZ4>;&u= zJ1lLu7y^g)G1<*fqHzX&@L*6Zmrj(1`v}Wj!#yE1T%LJZCC3R@Pcx~6J=fIe!JmcK_LLp>z74?So}O0*DX*V7wni2i23}8MQp_uu zW(|X84TEAnxljnX7f;E>!ob5khk@DrZ`JJ9(rV@oMoUq?YO(JOGM%pA#mo6pZ+^iE zpt9o4_0VF$R82(;fq+vRGy!0`UJObl$>ONRz8|&Ne?=|!pVD|9Or2ktx7fQeEF}kP z*v`$S55+IOM2gRwDL|;_kY2hTuy9xPA@wz0d&o@TeH9Hx;p>MUO>bymEn>j2`m$uN{wk4y>}^j2Lf(p=4H zD7w$p)!sbW>_&)|%c?>Y0RokWvMfF}z?8<4+r<4v&i!iUJpQ*76u8CR?0u8X;Uv^> zxg=EfHP-^<_e&UPabgG*tlS3*FlY)Mk{s6nj44>dJ~P=IPsH{tVt$7PAdkpEsilBH zrI0))0gg-qxMJ3@uS_-<;(9^mI^RHmcmo-R>>qR4W6;^ZF3z9+PWJCjHVX+c_X^>w z!ShuB(D}VDE>>C75#aLcVn3y8y8N=mWxu!J0MnUo(VX9=-@G}$P2Yl(i9e}vf=D)#2JoxCp2-HgW3zdb z;O*6Q6#-N!+yEHiZ-;>e9x#r3DCSLA8(o6n#l|aj|#m!U>6whfXm=S-c=yT=x0Z0=WF- z20epanbpQ4wH7dhbnkcRV$kXKlUR>drQ5>}n_@1+PyJQZLITJmGT4M!cZY}=R0_#@ z5}^OuelL62k(>uu(2}`s@x>GY)M9?=IS2_%Xa37bNP9#=+C37|FJ!+j3c z?o<4IRi61vgXHH@&L>PNVb8A%Mkl|VlHOPS3TRoq0zb`lS$%cf%in=Gbc$K|Y7Ulb zWlQoq5CC)gdsZ3btYVE>1=E~i&@^LEBqoOo9dF<%Ia2C>kLSy(ey5*M@FC4+I0ZLc zmuWEEfdEix^HbU35C&5<7BK`uu5Q$XfT?l|7?fs`!=napSkwU8@&-^kRF2b{0nYjD z`Q@=Y>HUC9sQ>$wXHR=pv)K(wT5b_a@{4AGP~~}PBKg4t7LJ|w!3r1@N2U34(fkRZ zyJ-GnxM=2?KQi1!^SMlU6<|T!AS)CUeAn$AP&2!S`|hZyofur%f?` zCC#?mB+dMtD}WD)D))F9EM(RbJj|C^JK4(dlhTugDS*{n)1jt259zQN0%-#VK^g|7 z5@*my3kF4N=`886Ls;%Q?3tm%^33ZfIbF!vh)E^vxrjz5XG@3K9BAn~OtzuAi+1;2 zbOGltYF>D|Fqd~xfTxHn%rOYey@)kt4ovfcK~w2m@kVfX>p8hbO0I9Fi(V%+uEz5p zQ={vYp{R?SO&dimS|~;3Hxd9;YWx;?=#*fpjv|Io^z)<_7Y(LLDqv81pIi}j%FClp zd0EscFO~jLH`qCUaj83{yz=R4pK3P8Q}*0@rR;JlZFh?rAXIW?8Y~w+SkU>)U4c`QG-S8iw8}iJn*mc8arJBXeD*@#~UW#tGMA5EnZ<}Jyr^3Zqg`pkQ0mL1T zVJK?HAryr{Z_gbf!Jh%f9k08+4>>#S+$SW45JiAM;$|vjrVqPYd1@~9&XDxuMR$hQG=x}X^ngKkdb73f6*P-ShXV`8i#bdab!JU3a@~mXn z3Ru(e6wK|}XVG41HXk#re?TI(5XAj6MF8c3b{`HLF#StfZ%5L9E0X@3x%87aL@W=d zDY%2Tv;DZ)tVrIiS?~oCo6ood=wH&ppnpjVL--}F5yNV0iWmY1J7M4lqBhK4p(dY6 z=#iNHFKOi*)Z5pmnBJsO^Pq5$znTZgS!eJrdozNW!a4@E4ar+V@|9^AS7Bdk2b=LM zXwF=>_zH^vYB8TL3G{*~>XS}`^H=j72j{QmI}FZW%_oD?TL}Y(yBb~aK6aJCWAU-r129IyyrGP=# z_n{E?uc{Dz?H5zb8-!?oNOq>dhbRCj`jW53MdP}@{I#r|YF7L!`DKgCesL{8ev^j5 zM$8(`L$(z|NOvCY3K(>{9j2yKpOePQ8ELXBPc@h0r{>{mApztO8LZB%=Ul|}wh#uD zLb93!_&gNTWV;SFt6z_hGS@A>m?D5$%+F{BA%W@4dqqNOh=kNL5>gM@@1xf9Og7p9 zgUwF~-d0^#5kQrKio+*|!2*wu;4Ent$4{h=bK3gY?o-Wga6dnDU-7lo0mMRL7(5PM zpPj*=>uV6=)&q>&T$5dUsyTxY?T=Io2|&@8^cNRLrY_uZG|YVLFSWsA!`zgmEN zTN!-HtUfn*Az=vVR$RImbh^VO)*IhRck`)cG=6FxtrikM9+AQ0MErw`mwmbt4;HuOPF$^BZ;-!E= z*SC`p*IpH($?i7Qj3h++qG}-lDEgA!#l@|u3lY*jQ_WPDU$(gH^Q#5Ox0S(F%zBZB zbR-NR-E}r1T?{(i{Up{Pz?hLHd+1ct=O%>oShbJ<@`wyhAlfd>6d_?yDI|wWfH`RZ zS4@-Ley}-#19E1d>Gv6f=Qfnlnog*RbB>UZAW3OUG9B zbrk_rDSX^wYkz733p|!_mXyWufvMxTBaNAAUdH|W%zeezRtFFZiDB?~7hVb&bbaH6 zxcjR@G})Cu>u(ezgukvl^ArDmk5>H1IE2!u)T^?A0g&H zQLR7#MPhQTxR{l?a3t`fkW*EshUYOm91Gu-Tjit(of< zUrZ4|E#}>dASW=L`Q%7W?U9@&MRJ-byZ(3x-e8X(Y(^1$ZgpKn096WKN+04|8Cc-4 zadYG}R~!%KdA!S=?UPf@B-}5|+*f>UbpWxD7zU3g;-!E=*Y}JNcUo15-u5LnfDrSa zsumJ}qAz(xTs)S#aNPH?Z%;M%xcsukWuIRyK)$UE-e%VFw|gOB2Hbq< z{S+`}q__QIs@V!Z4Nq4K2_TQiU=a~VyNIcfFsKxguO+~_X#iJDZ+q%sa|R1qGuJJ? zm?D5$%+FN@A%W@4&xnL{dL*QIk&yl%``z`Yt~wXI!Ja?Z+(huX)pZpCR4IJ9u+a+% zEbw?F&XSA8@z~UH-jO<6JIy?e`-PeNim$B>AQlqC;PGj^6fo%el4-aQQ&PZ>&_B3-2ej1*w77{=nkwHI~my4JR34=-@=`R7^48`=emku@`u%I<_ z-QtTW0;t7Y-vl9n>CCT+gtQKqlCCat3vd(2Te0~ z5@P=I)j|SL^d*Ogi_20MPDpFnBj{Q#zie^Y=T{5h@{_x{3|6{}pU&kWLc$Qz?Yu4N zV$kUxBe8k_#*Fl}Q>U53@YC=@wU7Yvhzvd=uX!ON29-iGLjsIR1Gr-P+UEwF2U*aX zxo+{r6amy?eyB1C2~21HawMcmB&3%jA-yR3{b>l^$G$h%yif4C)pZpCR4H_%{5KFH zA?>^!LRu`2cjI|XTUUDm_5Y2H%G_6cZFK;#kQj!Yxf(A847$F#Lfj2iA^O^R)68%} z%zv?3NC1kydV7y2Te$ z1W=3F%OE5$o%t7$kUo!u^jRdNPi4P1+rd>QDy|)3en;@R)pZpCR4IJGE&Tm&u)yQ# zI7>PXNiSf|O&#Z_w(j=kX=X0&7iR7&zP37mSV#JBYzb_jIV)n1=`nLrC`$+!ZkB zbpI}~7F4C%WM7(QCgZ2!L#^nr41Wi21Kn3kg8cmwYNNW~MHjkOtasIQ_Z&vc+YeUoAkstqksA*84m}NEkx8 zAGvff=yc8W^w9dED&2MLiqlQ=eF*8*Y9RsS5gA-av|ln)goHt*kkm_nk*!`x>)1X+ z%qc8r&0M$mVu}E2F+WrpgaoEDUnde$zeq@HM?zXl_WQ9Ad~G{yh`EX2bF1qr0;p2B zKnuUY3>J9ozY9WIUmQ2{Jl^G=cJ=AzMcgmU+*f>UbpWxD7zU3g;H7{;*VjdeJGCmr zI=0tz)A4?U^jfu$02F=6n&M(n>cR=BzipguhO&5Jwz%x`s|Cm}eHrY|tnoZVNEo(w zphL|K&am;Wq>JHQ2LJXml0gz{3&5I=&tYy)PXTM%jfR*;mNvXD>9+WYMF8c3pXUm@ z4W{4m-XhxV&7<9JiFSK4*_7MU6kNF_yW>_*egj-*llM)ko2kh9KU6No#UnW?paL2W~_ zsgQhL8pc()rrm3Zxqt;Nnd_Wh0JWHF{y;C7qCOcF(YtR%Z#klOAE~j&NLQl^-rN3m zh`Ep8?bUS^0aPj6e+jo{!2*xR;4C>z98X9c=d^XPTTM4_;(kHqzT%}*2M`}j41>pi z;H7{;*Ed3lt5k(p)9yUotneW1;LYlT2|&@8>?$t0@8-+zYxkILhOl@+wz%x`s|Con zmBG)MHHL>AOc+ACvvF6zpwr!3Vx5%6${Fcn51MYS#ZUcP)j|TuBQn^SSMK~_aUsr<+2Z(~)NxMR8up0kW;@(3$lO>TpXCXkb`*UbaSf9FI!yp`PBmC z+sfc-W-a0&Lc$QzecYvsL8p71#CoPG-5z${bdx-cklv{l5AQlqC;PDW= z6fo%e&KKeiuL{w_UOL@eM2NZXRtpJ0(U)8yF0M>nI3e}4*G)I~y8N=mWuIRyK)$UE z-e6YkBVI@tLb_dlNxB$xx;IL!UVt$pJ?!1n&4&1?f3I3d0C_|Pj}dVX7tvV@7*q<$ zeG*`N8o(9P!=69H%wR!F=DNifQv^_p`6b4;{k=3Wo%tn^kp2=0>EcL87s-Bq5rTKK z*9|d$CU|>wT}1#@3ct4%PHkX;$6fbCNH>b(-FY6!oe>Nr2Ob+_M4H-m7$Aah^wwbcQ{ zLSh&^ev6j^23=pxjP#{o?XRkLro#;L3qs6&zgkEDioRqyaj|*o!j<387H61tmtVHH z?DMMy$om6>bD4EB4-pcEknZKUD`3#+t}3yvsYR~sVVJ>y~WsA!` zzgmENTNymctPgpJkT8UFKXvJ1(CPkEVtrkeZXdhz4Ab;DLi(^;NC0_62GB&rtM-V&*NQQ!|pM|+=crEnfr>btqvd- z62steE?x>4bbWgXaet@^(Z}vL!@Nm|xgS*v2|&@894IdSp1SBws%zTc&M+(do&2)J zWuIRyK)$UE`Z8-19wHEWg&cTXy!VI$t zY1DjDeJ}y!tTR{*rka>32NMRh4N1F@e100nRoL0~9co6hpgD7$(+i*$^NW^&UNA*{ z(iqX(KcaV?h~9ouW3K~TjV}0VcHN=oHw161uB!;3N}(%n?++%hz~fk)B^!$4_SA7s zTb-Rb!%W2e{LFpDOQ#MXKA0E=k1yb*fI-(cM~Hj1Dnw^{@(eSN5bd8zT`A< z(Qu$Ie+_%q40DysFI!yp`PBmC+sfc!X1&Ej4kipC-Q#grz@XFpqr^HTjg>Rf)m}Qo zbbS&beO4_bfIK3Dn~Am_Get-kR0_!z65yYqn67q{p=MteG-s|`d@)4;wYZaQ4?+Ud zng28r(iV}BHjjkVBKv*tuX84M8fwN7ysf&fB7iD|TOi?Yx`72A@4{KKt2n+tb)3^y zwAalrC*yv8=Dy-$=>vn)8>lj%pgC62e! zq8aIz{2wEL`wHr#GyIqQdFH>ompm*5|AR>-?D;qMMkkNWNWbJ?0b2U6XMX=zc+aMs zcK!9#2LJWc-G&+iN%ddKrnPuo6af?!{OVrNJeWQ=?G>3|gHSw6ZWLWhL*4Xg(lT@-I=z zXFOk4DsjhQkj2qM&8|?=@U>9V4m<9jDFUcE_|SEb1(;?5gJQw04jjI8h~^MX6M{hz zQox`jnT(HQH!hOh*j#p{F|zkfzje{RSn96;fBzBYxa(mr9%>GQwE4CSRW&tj>3j`7U59QS?UOQrOUnO6eJ zyUtR4U->V2oMdUCs%$ps8rHW-v_+zdslGw34@ zgF50$ooA*>yMh4jnV#Hk1zJ{ZYYEZ|U2O17 za}12NbP(PfLSqLw@-WXkgTVWEtTFFknpF&%RSbG(FlbgWC{~kULf8YuO4b#I7V&&p zF{B#%bwkbRP*UzFl;n*aK-IxzW@zkSngtAsg(8N);SGmt4#6}b7!)A|3`&{F%~4~& zDQfIDMveUj>2AppF52qTsDiThMJBqupjOE zMO9D#qUz(JW;jGHT3KY#!mhc0rU;-|MhT(Gg6S7kUqwyu%cu!{kvGBQbLj-vI1bZS zGb`Icq}ifFa$9U!@y@h{MUPvPQ%ixrVTOs z8-6J#X&TGh(}$ZqNMm7^MoXFu925Yw^e`w=l5>aWcRJ4*p5N&_dw71Q^Q_@%^vlxd z?hMz{{$;osL&Ta@rSRqu5kMb77(!WJ;vuT&_@&o zUBw$w6|YBCycSjQs>D4!jq9rDVm}ye77(%RJ5>PaqZ~u1Vj&)qPsH0jRaKPil$qvU ze9q5&=GUJ93&;94#UQk)`>@7s3QSXoK{p``Iz0@!31QHbVbDszpqn8E-GnfxCX`H< z{&Ltj>YphMpuk#J+>9I?TMuj@7R&TCQJC#B7QHiXwhX#&-~hsZHW%3d3ii z!PI`a$!fnik?!d4PlKtgbCZKK9v!cw;V`wWeAX|{NbN8|JXTn{hUDn!cOck zQSC$lEHs2qz??w|!WonboI$C;8PwL7b{m$y1pEqr?wWMuFn_awXZ|eju1S9;yw^_R zL=Tjo=>Nmlq|222C7je(wP(;5*^7nQUR3;E)B(7QsV-kb%~3T4hJpTlp}`rne$SR> z^=rWRG}F`md8XNn5c7MNQ|FcRzwUwoAZ+(Smc>08OtpgKLUDgkJMRCZm%Gc9b0_!) zyMPzkFwowooYpS?g@IZCN3wk2h`~5!{ho(hrD6!2KS|vM44U(6g_P$UDbcCDi(SY` z5kHka5-VIT)B@xY863>4S3*P#Duv`O39#;D7eLP8 zM~UMS&tux^?E^E-2Dop}+*f>UbpY|vz%Y0`6fXq~y1s{nxTC5}47<6C7p!+HY)mNPlb=q_Wb*^*E2t%O@9>hW!z{DPi`)uayPT>i zzXS%jYr2;OgCL6svBt6h)0>V#Z#o9O=@|5;W6+z9L2o(+Ej|o-(=n(`PnMgNz7#rg z28Znmv(g)`V|o5RxPk5n4m)=2Ff)uDThLE-EWZQ>P!#c%ztBX%^d@1@n}k7c5(c$N zMGQd%7tYio0Mi?YL2n=iy>HPFqbk{imf%87IHRoWV{XPU%z@Rr7gWhBedXq7zO)lLam$i@M&t2AD zA1-To<~yakto^I-{v7j4KzXzLpTDf_G0PmnUX+K*UR3;E)B(gNa)yEa_2)o82Cd&- z(ttJvjIR}X+J3Xl@vi9(s|ryB2-`i6WpSScQ-^obDDGR1!~Or-W$o};=5iQl7%mL7 zh8x5H{g3yj9R}Ak>oFc?2v&alH(ZT?*_S%hti?mFMlgi^*q_M-3|jpd)CRd3swb5; zo|V3+JDBC}I$@(({(U{3dG#k72=7NQsf0b3{^(>AIn9g#TKdyWrWJh;wU568vdb*9 zFEzKVE6mjg<^bwW@XRp?%&mqsW)4jAfLGhA|l#)l_Dfzk7xD(HROpWfG7K*xS zn3+yd?dwTV`R}F!sMM$KDm}a>pzGnE zgdWZ_uVUB3KbC6xF|P!a3wbGe_!33ChTUhDxtj{-XBAdzcJGP!_ZhnG9lTdkP zrSA#uZc1zVw$$$Kji(XeZ7GIJlvnsG=nICM{&2ErbK$+EM*f)sfTjY2q9XZg^lrp; z(Yq1XM(;*klf4Uaij$t}Tixv)!_5dH)^8yZ!_9;OfZiSqVFP!R}MnQ^Fdn2TTXYptXTP6M{ht4ujH0a)xYsnOMnLvd;(d zd|B#j^8H7SW3-DMG~ApCm6h$v zDTQt6e;t(oIRn2}3>3hEc&`R?2F0y2C_+oahNqWMH!$0se1;D9_r-bUTZudQ43X0B zU|tC*?_Q!H1ALqq6iQepTM&C5C&7iPOcUA4?6ch_{8-6#7HZO&JC)XbehO$?GDTlgTD|Q&cjK=l?HM zk{-qW)#1j&&CejTwN(f$cg$o_1W+aM_c_A33`}w8CMyp4%;R8x1_e`ey2)X8u0Kof z4w$0aO;%L%OV)83isS;5wQ{$Jl)HJP+?HIqrOiZZz0P)-T(V3~so#Ipy8Y;C4e4_3~FbbLG6q)sO=~nBj?|dEO+PMqr>@^ zXTImT^Y2l@)85Q00p)G)KYafEezKNuZeH1bI?K$2yXHNFyNc(o4j?`^GYoXy|QGb{o^@nMBe@Lc^?jH`pd)kwSo2v=Fu)3}yfGUOG!3cj21}yNn)_hI_ zzZb^?cplTXx?LMWaKAWnU-7lo0mO1<7(C9#O96wfufGs?QdNjvcJOSom=KHhDyPmH ze24;oqAwXHE*?rQ zfH5Pz?Dn(Ga3Z$uEwOST0pt-G=(jU4s1%Z&B)}PI01?t|v&}DX-JZFwkiYw9>HuQ0 z8HVgXb=hOk+3zmSzy414`^+|D2vPo3Id$ET{+AF10G;0`ak0Ul905Z1L9@--F28KC zxNu|x&i;hi=4(PM&O$W! z5Cs68-&}EVVaTt+&YNwzzd?TGa=J|Z>&OPkOJ|_2NeUQ3x~20;7lTgsEQ!?_FjjUq zd(mvOArafMh&kB+c|->KERI2?kX#}Gjz|MIzsO~e zL1%xhIDhIp+21_d97%}weTAt8AEE%D^Se!4tbBnNLw9@kY;%gsFIy}w9N7SQ=?v5r zVF5!(cM|TLL8p7a#G0PQ%C*tWJ~`W5NyM5_5-TSgAdkpEUqfL~DJ0KGfJ!K)n|*1v zc?j3dnd^#Yq7EP?n_YYJd)0e)So!%aLivaE=`4_YOJ8V4jm#4{RQt$^%Dq+vB zO-CnR%}zha@fi>=w%jhS%B7e4|9|W+d@tdew5xx8welQu7L3i`zf8oMnnmeLRy>GQ4t_7J53}%WWmA_+HxsJ zC#4Jj_X0`5N~u{}v+H zXzbG*mNs?_fwV7}T)?2uh#2(s2nMAiw?v(joIza?ID^^=XHdsvX^T0j7XM8OuJvy| z$G3i-c`YWJ3Bet&K#16LA&yRdDvhlUXxTKj?|;?31mTAFsrH#;Zh-FvZL({Ny?$!} z-X!1jB~+0?*tPeu#=8cl_XLC96AXG!FzAiOpf?GF-XsiaPm)oYp0DJ@vA^)U56}N! z@SE!2pJ&%w*E|WK^A8h3^ZS?ps%U6&|I03D}CB!?yp!w?4)W=KP0MhpmwilVI;Fr%2`C-6wN~^4a@}qJQuI%4O$2D_d5+oj7(dHKF9GGq~jSs;GEs zlL26BwB(MkM!@XZlDZRT3k=~Jz!0th48aI8d@Ld%>B@)|Xj>$C;N zl>>4|!~ggi^`DFNZ;pX-F>NLle^H#O*R?B{+LZ$EuV3ieavdYf1w$y9Q+Pw32++TN zbr5IIr0$@|pP5(AEky=^U7qJK%|BIu1-m7#XZM5dg8TpJh5bJlO)9LTm^qWSMGCpI zI0g5j1;D7g%_)h_t{8P79yA(Od^XNr+knl0eTBr-wG9Sa(4`n0$=UcjrF(k}41wI_ zi15iH48a=65y7@DpU+pWD?uQyTn+Zhg_cohJeNy*0|u4D?&LWoUce{oDnK|{*PhW9p8Mt^3ii`gNCBP*oVhs=^Si3=CnJVF;=k z-^vBMA6)V6T%kwM{=ZcrsX_aq^{Kz5olW07FoPj2r>C zO1n4S8`cn5SP&S3fTwRAia#l~U)f2uB7ySC!i!L-?z zxNUop-oGjSM;QPv?bTu0!0ZnF30Nct2U>z5sABn@d_njPqvZwR4tqgB%WOA!L1^UE zi|)gY1LStx|M*W>`XCP9ked+?;u#vsu~wI(V9HSnz(4fSwG}uRu|_b2>-;e9gd+g@ zhkkqUmq#qx{u%DJV;0I(Hbi)sF51r|s+ewy8v-VgWx<6}n(ql0*PChdt}G7 z?nMiL;SZPt2A#t&>NGrPdsy-2_KVGn7GNu2e?(&HV28mL?KTXKUXyqNB^7l=ts+FF@Bv3{166}!|sGQC4P$!w#Nbe z-#OU+^M&`{JX^6ZS~eni)VpjZuUgK&`2xTd51Lg&$FACSu==Y8EL;;9!Zm>*ToV|= zg@z$qBpAX)f+1Lwc$3!i8eBMji-7*`I+9S#5EYt(-(*1tIh%0=^8v@L2^ zy@+d9FtsZM;9tMcwdLya2+9RRD45M>sk?`j0R8J%2hnmC9R!N9#R-ZG0J}W(nC71< zz=GWpw`TWWO85WM>(_rSnp7BmHenW>jTD-63Y>_%;}1YS$2vuQ#{oK*W7K_k@bwFZ z%f2p7eIpGM)}m-I^n+nE9%@8f!C4&uFjdkT=6e0!@;?XDS?G>k!d$r&|Dz0mzy;nn z`nkFH0WAEMq^QQ-c_^xJcOFEIz4H*KYt*`JP$9^4+lsOpS_1M0P2On8BLLyIB*74V zOA-wBTaxyA6yK5rgRQ|t81OAg6ZPB3;w_mv53~7}Bv*rs7%+=gA&lJ8yb7S&gi!>* zRUMs+QQ&7WQduJyf@O%e;UYh%Xm~+8*U&~xn5tdpjOz@5U^0GY@pDsNU_t5Q3a`A~ zz4CVR%G;H5tbI)8D9PK4>KZEl2Io~WuMB`76};}~XWnuL%+_%}oW$B( z;|Z7U=o)%T#-hpHW&#jyCK$ra1cTj7*T7{423vz0VQ41m2b;~bD^uU9sQG)GT@6}^ zgJ#hO2&4M4yvp5eCIGJL=$wFxmwtzuN^1l|unh4bT;!4`O@@8MzBM!&6Y|=1P7%oR z0thDKXBKUFfd!?H5A@1A$t&*xUU~QD951xwy~L3 z;4D6t9e=DGyRvl^M?%nWzh1j9nA}PM_?rn`>v7amP$vvwe#da(b^@3xaTI;Tv|02t zC>k%%E9Y555djFw7oWl|E>JGI!cSju_AJ^cUqluLl8pTzyy2#!w9Lrm|8>4 zzlV^t>m1^j|0n|>n2d{v6%w#8@>4t^o$LweBu_}wc)ee+M~hTKX4_(DS0dYlO_5e#8|mvP}5 z5)}Q#HM3{|C>pQKE9Y555djFw7hlIN)+rZKNY&z&S@gJ!PfunSQb+*YvZC`NMs@$E z5fThG+#$~(To}S|Z)dKN0R4(oiw9@XG4NA;6>~Wu0dS1ytOMhfmJx;^g!o}5xJ(gn zGBaxE9Zbk;*Ev&(41i!VerC}M30N5UTu(@IJR!~YgfxrSyY;h1#r?#kHPqq<2q~FY z20)MszToHpb9o15>o^t8;w#zlDax@sE_#S3XVGA|U$5O4Om3wBd?BH0J-z}j5e#8| zPjlfmBq*xIi?~9AqVejya-KC55rCk4@yqO@)pI8O0b;`}x>UxeC$kGFBmnM0gU%Be z^(`JM>IeoK?)h*h4Pm(NGS>{nB76>3UB{*Lgx(!RwuW-c+)uxTA(1 z0{QY}UKs#EDmV^@8X*C*b-W+W;(OTfBg(NWTUPuqi#~+=_1b;Gs67ZSSGV~2HE z85qL+Hge&*0`#|dFY(7L+WaR7>6*N9o;4H^fS`PFYPNb6a*%Q%H*s%KJe!7K@_Id) zT}UATaLbC$WQ>}P2MY-X8}4&5To}S|TQJv4iEyh#>)EspeyXo!E+-@ajuD;hFzRQ? zD6J6;K?rd>Cg}5mS<5PMUk&x&2q9_LIn0y)C<7pvjJKCtApr{`f7lb!L!OYvEvf7{Z;NPy3D3C;eNe#Ur?DL zw^9JUkkGXr4}+HohA_YGT)3kX6jh@4Y`Pv4jVtoXc~<=w6cK=+d~rW^u~NB^Lh2<3 z&8GD-z7=^jjsGi!1i)Qr(D@ysDt|UYg29H{ay`O@Aq;m2bF~BLSERStVKyBFKh@VU zmlF~I$B52bU|eDuVF*HqcV>c<6#?&x^)<8}6Y|=1PNgJ;1R$7<=et%&z{1F1_k{GC zC!|+BA-%%u{ZC6?B|fO3UqQY+nO6otkP5zb%KZ3Q1kBcP%u5i`C+v7nwEePm5qr$0 z>@Qd-?Y>}gD+S;S30>>)Hh76(2=g1qg}XaJ(Oc{{n|1|7IeoK?xdFyE(~F~M=;l9fPO{#iD|Q` z!zKvn2Ig`?0^k_YnGUuw7|FLlU${@iU87 zNWj9#zx9OljVGk9Jt2L?>pkohnH^VhQw`k%^5x0AG5~^9aC^(XY6E8LxCqYTKiKhQ z%CWn&br)yPruX1}y>?$Pxs?L&g@ms4_%pmjFogNlbK(9-Q1lZQ&!)|Pg^+H{E9Y55 z5djFw7tdrDLti!N_ZRbL(+EsnuP3t$DI@^yd_d=9j9P^U3ke1r?hSAk!4QVKn7LLd zE?1Enam{S{4SuRuGM5t)0LO^VP8hZIZ-xnm=VO&`GhdhNboaw`Sk3khB8G50!F28J-d+qiH$0`#|djkpKE z?-0^WdF4E7C?Wts`QrQ7#dPID?xR}q$ZQ&i$?NrGb|HlXz?~21%)qFJ@L(aqV8i`R zh6_U&?&Hk$QzG0!;>Fq2{0|7}X6AB20^k_YIRI=qjN}suh9HFaWhNN=h7r;r(WaIz zz=XVZoimll00<`Iw<@iWfQ6BF@`TjU6H*6HNbPyO*IDwdMO7``2lC~~yfOfSRB(^b z{=^_KTgM)6LP&ktaUZn(Rqib|%%;!be!X^IFu9cixCtHeJ;~@=kC(tp1VfnLJ6yPV z35r4DquJEyPYCIjymFpZ|AiJJ073cUPua!u%7qltVDZgt+8dMC>&fgw3JHLWkMAR) za~?*m!h?kb!wr8Gr@oVh+6@R7hHYTj6Av{a{+_w&0H#XX!^}5jdyDE?x(MCsRm_zG ziTp2gWtkUSr}{$hQoj-UbW_?><&!5EzIUG9Iggiia%!40|+B~YhDH5HWL6> zb#x9wfj`Aat~w0CGQ_Dl>R`N5(Z~#Yi#=;8n<`0-)vj}jK$aIkFd4sHXv+&MD1E$- zSKbL;dH43pyBFu!?roW)B(D;O)Y2{>Z%F2q0T85u4|Mc3FF1hNI!=SL_;7Z7x^nEw z)Tfl{A6!uE+-@ajuD+#z<9M~gdqqa?#Be5+GP5RBWvkhOc<+O=S(Fs0D{T*%4{nn zU}5CPdqO(S6VkDskdEQ?p8T$9mB9Dvz6u7R`o9CrMe za_q`hAqLH%L2$oTyDymBN&)ynLf3li{2o>YhA_WcE?fmb|CsA9M$VzbK(V|rubgKM zMFb!yU%V~5I7GRS`>0xsoKtlTg!uGib|HlXz%45}wHS3c9=xnD*l=5afN)_5!#$I^ zIs)`7g4aiLXchcq?_w?|Bmj;Poh>oyZOaHl5JEhY2~JZ4G8x=pucbB-grr^POeHb^ zg2~N9-Us67ZSSG;~nr4!4T%RhzqwmLD5fKK8LOZ#qzuJ z%6ZmML;!;F#aFS5AC-%)2(`bseh#gZ@#)FzLJA3hTUK;_$EaSh5fThG-26uf7ltt0 zo0#ixfPO{#iF15ql!Q#(@)${OYdO9SnWDz zDv<#YOvVohSs?)nBVX+a>0VDr_jp3Oo7cPUW0{>K?;{?orDnwtQZla$fFKn-|Lt#1 zBw)6VOW`bjiXC669J@?0|D)w=1qLF!Kuz{EB)loq%q3HFM=mxETO}3)}^_s|_rC!Li<3 z?H9e(e!*Mqb-XBjJ~gXdF5bp#Taf29d7~kZ0E90%UedV7XQVLzf_K0*~-N?b7=EsD2R4nFsoMzz~4;hT8}$@4t2ti$d3!R z8^BbFqv#-ho3-c~+ z*}(@aVShzpGNTBFOPiOZTH-;oF<2UQKxbcRkR!@V=BkhKE&wRs z6<<8pe3Tb0^X}I;nyX%!UXDTKu)DXuPKle%Ro_u?4WR%2UE8UW!3d~6{8&bnc{6r; z2u%lEcp$F|l2iZ1A(H_RB!f~|O#%zIe6u0$)?~>LcWbhEh`Tiz4^eq`{?crSjA%K8 z7K1$dAd|Z-4)Hf(<-twv@>N?X*w3|yS z5XO2P##mE>A^>f^GTK1LY9kA)uMJ>I_`{0KZA)Nw-J5`wj~}8o-A1(KTh7M~G2i8Ymf3XjE$4f3 z@PElUfZV?OFWz$gZ}(VdQ2`aSC`nD#2^Dye@Mm8D{-KDj&EbG=aFW0fu0~JR(;)yg zm%fkGe=cnYim{J#wJb#jfUVhsnC8nBSRj&kAiMuYy8nOu)^T3GUSjxMIu4;!Kf$5! zf93NP0Pej3=*+;VYw+M>6b768e%~T_7{cUp9Nj?x{p8z}gD+S=o5?$-@2Y88K2=m*I3%4mj(N^T=(nL^{J;fPh4MhYXC|^98 zT?}qA>9-R{&83rNe0nmwkU|2`9>e%fJ331+>RvopNHExNuZ6n^hA`aYm}{ltauvyn zGv?B_@YA3fZNZBGI7W2N#i%Vd2cxt`Fa#mQXETBL-XxP1Ck~-HOjxU3=S(Fs0D{T* z%0??BU}5B^c|tnX6VfT3kWS|HuD9f!#PlIF3FN7Na1Cu<82~{lP_cc-CNNva4R97; z%#Pnzj$PSWi3_l^;J#YBFPPj)0r)~f*LocOPpk|KVSX2L;kE_nZ}F^{i>aU}dzv%I z8j1)&P`-FRyEs?5ko%~MST>g)l=11w>_Q3&fIA=1c^#vg@L(aqV8i`Nh6_U&?iI}S zeInd;V&z=wS_&a)MqBVA0FDuzC&4xXBl$#vAqXM9g$Z{3LDoYi(@xABLWg6*TJ1V# zDv<#YOvZ;?t&o6)kvDikn&$~=t|z29yxz}P@;2gf=mq4dXSjwouMB`76}*9cck}82 zn5|>iA0ecx*>O*_{Z%d#ch03na9^$67ff!Y0DK{#Ydu~FFA)r3e)n+UW+f=vi8XWS zc2JZ(%Nb-1MFb!yU;GHWcv`uTwQnz;noG~g`1E9UA%z6Moe$`Ihf(EQ7$L!6!`W_1XhvJ`A^?sNo!7v4f@D-D5)45I@dhSXtO#T>-Ndy+ zXay#$)vj}<5*Yx&WV{lzLIM^>zS0xYjh>Kh@Pu?duXp)InH_J*yPy}4r=H^)+PpFV zf>iJ~!WttaV787&!&$tV9iN~ayA!FcD9ojg;J#YBFPPj)0o;U+`6DvA*5eEC62TDW z_YoKF)dWR1@#S19E`yMs=M1ujA_5SUFaCyIWPUd3cNag-r9PNkttYb!DI@@HSho-m}Sc6Auibq6~zjUFS?CG5~_f`1*1yBw%6WYds-7;tA2(dhh>>sbm-N z+z{#k^3*!6q0K7;AV>vwCe0^+B4D( zp=&+1-h`EbA+$K zX>=PjV-ADmKgs|IT;Lbn?P>!H?-XqCR{KqFwcqeo`*mKF(Z8D2?kqkYLZ5?ty(VvD zZoC@-KzOGBhVV`S4E9dJ6L6V^v%NiTLznb|E(t0Jp5@48W*~c<{2qV8h+=4}=Rt817!o)fS*% zkt&g&N0-A-y=HVm0^k_Y$zarzmJx;^gm^L&oTLb3GF76*Q2GNC8nx@3sYC`qFd5$o z_u0h?r3hFUd1k1)qgRH7J|~@$am8B6 zN0S4yb=>7o2r0{s$D-|*t+P049*u_k?8|vIwV?isg(?Lg!!wt6bgjo*;U$70%}He<55L!f?-Lu0sI&73nMH&ZD|k5RzteLIU6z(OC($V=$6maKI3R5YK0V zhZKQKrmyHWlvZLwqjsG$mB;`HCgVfcR!G3Y$g4ad_4I^P=?SR^ulLYYgzO}FZ?Vl# zdKKhN$-FWEf>dyM-`WTXn62YNIE!o9@ukYKJCVAHW%KBFxX-@IOH?qql>+dEgs%0t z5ndt~!u&4h!u_70=qs+BN4;7@NUt$P)=)$Mg7U@Jvx^~Q((fl$&7=J=IjbkL3n?T3 zZduWpg;8tpU?IU^!@VBvA{fGO8=31C#pNn8K&+WZQ5y(JGddvwaE$0o23rkAvXEd1 zLWmz>f;erG86buYrBgAXQM=BWN@M^8lktTwR!G3Y$VYiX%6UQ>=?STh*L%7p?=N;8 zN;iVMDVbLWK#&UFoMqqE0?gL&9XN}}vf~exV^_9H@zgwe1@5!2^AZ(IZlwTxA)#wM zjucoK7{dIX;lk|z(BI+%#CohuTL|e5rpOwK2tZK2_!V|>zH%Y=(LnLmJgUXyte(s+ zq>uo(r~l|2gi#mb!9s$;hWo7y7ltt0_n7O)M7TY~m-Fax_^H>7PDlV8BRbn+)R&S` zS|b>O5aMr`V2>grq#k1YQ0m+cLej2trV<$d!Q^J5V1)!MjC?;&Nc(z1+Q$>p1YYmw zEqQlw=up}o(?C1JPrYVzLIU6z(Rmn* zCrU;oBp8Aa;`U6iOcBUrs>IPl>1Ir5)UI=;5*Yx&WPG`a6%w#8@)JBEP4$FyyeFjN zc)hnOHY%TbP^!U%M(sLhDv<#YOvYy-tdM|(kze8oX@)1Hi#;J- z#Or-vGgHY5v1lkw0(nz1uMB`775r(zKG_Cl>$n=u;$`gkA?4VWt)m#*KSB&b`$p{Gs8}2hQTo}S|r!d!xiE#1Spn(pBpL)&cgap7b zqVpCQ=SoItjbI2uh)-pLUMkws9onwB{Bel$+*F8g#;{&{2EV4%RM1o z?Fs2BUhf+%d8Jr2l)eRdQ!=j%fFKootjPYd7cg7L)MgM;BRh`K_E)*HIH!TiJ7b~V z<0UGX+)4rXLPFPioD44!3}Jrfap8_kP*jN-4Ky4SsrQ*8YbYWBLHXiY?BWLHLJFyu zSkOR6$oTYRb|HlXz%45}3o+_pJorR{!G>GDIl_e@40j20wE^f?q_?=XfhY?hX+|d` z0FDuz6TsFNBUwl=1R=!NGr=@PAd~4W?ixx*U_zsIoimll00<`ID-o=afQ6CY?+NKX zPe`jhA>GUC-DJtD#1lhlKFFJrd1U|usWcOLds7yet>frY2YjKxJJJpPtMvq>uo(WkshJqYlD@g#?2QcmFLAE(~F~PcYZP0R4(oiuDb275vm| zMkgcyjuD-981=ZzA!RZYVASV$u#jM|;a&%K5e#9t|75P46_=|>mH4xP zs=7f)n$ZaffMZ1GYOsyRNEQ+dK?pI;SFaqRa+6Gz_z17^F`-er&ZYPtWdH<|@eMIn zNWj9#zwm_gxhJI0JRyC`>wUf@uM|HHrMp1hq{(ew82~{lc-3b93J?Lab$lDn;$PVD z2g2=bFrWHha#l}f7g9(7+_Ivx7e<|l2MY-X8}2tUTo}S| zv&{8FBHT*RXFfduKlPf?7Q6_6V?<{#Mtvw5r8R;f2qEsz1iQC1LaG$M4W%{}5R!JC zGnL2y2qxo&lNA!MFmf8^?rf)qxjWl`c|!V=*ZVn3ULiIcMs*->O6HXT5Tt@PZ*ON_ z{sXgh?7kI*R5na)k6vi|tK3lxo=R1%}G#H zirjpf0gBXTOp!Gd5rCk4@pkOuS>-|ssi)XwKHVYX)05eS6cPZptmwRjQRyB=NHExN z2e(4FFofam&RoL*`W5LZCeEjA;iq0RIw1jYjOaWF#-k;p5)uqS2=OE)SgHs(nJtIW zwV2STUFS?CG5~_fcoTvZ60k7xww{pMctUDD%>9X^6|Z;8)<(rWME7Cz49J_3d1U|u zso*%Ye`^C~>v$}j#XZ^aH09WxNS(x?s5snbKj$SXnA}PM_(GE7@E29}m*DmA62TDW zcLW#i^#nyvaol{`suDu_f+@0wA_5SUFFt`?Y}v-7UnNePPa`oot0%JyDI@^b!V~}D z8l4j`>RLSbM1sMFdoJ8XFofZr#atIEE?1EOV#a*>3V!M}qZ1MU$B52ojOy4EjM5sx z5QGrVVuFHAW`O8Dj3!}1qjsIcJo%3@0D{T*h8Qa(U}59~JRwzkLhA1csUNTRq_(D# z{l)NMGza8O$-FWEf>aB>M5iZ4 zrFt15!4QNH-_Hb9?af*a6x$7>QJB!EUFS?CG5~_f_=XrOBw%6Wqdg(*>j=)%~kTpDr-m3iJ_wO1rLcY8^%?ALVb)SD#~e5!2;|hu)fRK0Jh$`5Z(1Ca3cz z29?9^KEyC3erLY=@X&jJ{?5lvu11834-d68A0FC&7<~bF>bH4Sh@ASbJpKR#+2K{1 zRV}daEkTEPsy*0KZQfJuK`gEVI+-m~CXO9Ozk<9`lQ$aj2tfFjAQ-~81i@h667&XK zW?-=E^)3wfu*3*0^mr;$f264SEkUX#>XmAVXqr#Oeekix@A4{uGOHc{r*<~#LC31+ zTv&be01LGNLntR00&T=U@Uq_lPw`K@&a2V>JL@d>f?e3NhEWG3HMNP8S{rk5DFYw~ z4WGQV3kxjBLk_k{pPdbp1{S0g!4OC$KHrnYd7doloh-`F<+Zt8IUn~oKY&y&ZXQPc zk#_aZoHqYg>KTB|WNeo(6JS<5=L3si2Hz$+7+ssxw=yXh!sVd_>Xpoo08=Gy zL$nkn3uwI5&M#a(OOXL!i@00Yu!z6{UBxZf{ka(T-+m%#E3wrAIufCb-Nd1|lU)Mc z%-%$28b+Ou2b};bG;L3IU^l`3sKnIC4udVs3Ji{52v%Dff=Wq4AocPN3zQyi!gP7E zw?{B3`TQY9%jh9)%LTX-gUVrdVwe(lT%b<&`vCo&9sh3x(#D+Z0~XNt$a(p%Tse2D z0obj(sT?}Ca(lz-R}NTM7Z}1)!VuIY-iA}Y7@p$6oZ}p{|4xqbRI^FlJB*t5#TDZ> zPRgBX0D{o)g-`ZW0~X|wfx#v{z9LK-SddZ#Lm-BDjd!X&=$&d0c&FO^d=6ZwoFDo( zPqkL!<6+bVX-`cb42`8yoV+~M0N6}=^awKnW_7+Vun2~r4&`6)sdgYhd8&PGPc^iR zish;H8E10@#+3tdLjGT!YNcZ20@?-{uGbkBWSaO#r2za>4PBem6EZ0n!sXePCHO2r z|5R%uMnm^fJA#W?Pz17w0BjMvRfa_b7U(M8mEG@+asTb9)>cedKt~{yhN8rJ76Fji z@+)X`W@6MTJow~-VPU_L)Th$$C<2IJsDxo#Jk*GIB1iWR8C^*k%>35xuA*reos4di zX3W{-0R%4a9xA(WfQ8TVe)gol(Ubm9PWthWESBwi$`It{Z7b5lX&%U{BTm;n&jS!X z&x0X+o(F?{p7#h`W?-;2coK$YBHzb6&x?lhdtMYZKhJYD$cV!i(DewTpu=!4{s6eD zqjLfZ{4_>#)nN#hAwH6e+@s25*i~eP(;qG=+OU`kHCC`ek!>L_=Tq8BP%_{>SNCh{@O|2qewvNBUS=@sir+bCcX(OgC zpc=TZ*X|2OI;8;ot%jSU?j&kuT=*Wer6HAShpaHoLf1 zxsdAWCN5Y&=g9c<ci{(wI#0*Lx)oX$j54On^y)vkP1ExG(c~<2$-$o4t*e`I(9q;ZNF?C z#Z?RFPPnhv?h9t2N&)ynLf3j+2`>>0VSd+e;ciP%REm`g=q*s>n} zFH@fkFjXcVk{92pCEjUWDIQxuE8wu8BgvUc6#;nPMuLutdYK(D@Og+H7qk2ZIfFgA5mjFx-!s>-|Ky-9^&^+6#VCn{l{y%NGG~ zjOc6t!>E1mpp~%VV|4aqGqCB>gT!P;5ezn!w=h^5f|nE05acEe z!E34Vtrn`6%>_)CFPmE~G%uUcGA}sda!%(93@V4+z1o-(w_2!PHh%}`@4Tc`M?&~* zN*&G1=3WcwHRRk>%4K&in*m&~wW%CBwsNy!^(zM~tP2cbDPaie68GhlABLy6Kj-)a z+J7fUsRNtT3B&0JB$X=Tq}3&eA(PyTs@q&7=%wZx8k((W|w9F*i0r33Nry_bv_SR1Vd1V z^6Q2x6)y%TUpB88Zf*vmWmGI*HebuxT!nGvfSi#3tC!9HMzmXsT5LIFm~G7&7EFev z0Q_?ZU7OTzGATI`FIe0w$6+i%8XO*V9mTc_X$MfG+9W740BjK_Vw%4PfCajWcVPFk zrThQ#>xuBAnhWVrgi_FE?+?Wu;A(L+3*3-AaAmBa4DFeToHcl?up{?3m7 zHv;KmPPL;KQrTc!i`(%cx>F6n#9C81bZq4gfz_`Zu&^#Lgr$Tbs7rhtr@RQB;;EeD zWoZAM9ObEIle%R%4MbA8_MDVE)c^#c;cr3qR09^|k%7S`ogWe=4J=40f*}w?e1~_c zHF~Go?cS+&8=nIUl=H=Z^Hl3BHVmh6NITV)({`sC0Gr9yL&HpfS)CsSEP^4ZL-~7r zsvQkbo@(#fQw=SnVtJ~)!`YmKapi!VkpEYwT5EASbchV|IzxA=0q{>XbZt^E$)sQi zm**^&;2Qw_CvaWF^o7(QwbLzmssXS?tR5B?5m=zB_#$?H2*&-lr&?Fhu#oOTDB13b z^(+D)v*joK=)8(iKjOhB7YsJ}7Z5-MLzw&`j_y?%o%ixGE0!;$J~eo1sTtjqegKXU zorl1-8%8oC3_%F-3MS}3ToTBwnH8T5r?W7jQM=9|e)*3w0D{SQ8E5w-urTtkyj}IB zx2wKzyDI*ib-2oscM=R1#HFQiQ}K0P^aCKmy4%Zg6>+LF|8Ja}1Qu;I3@L%1-6;XcM(9Rd0k=^|cONGHQj zy=HVm0^k_Y5g4`9GQtpq5WmC(rzrwX=8xg@4@_v(u5%`t41i!VzW2-u30N4p7~$@y zrboCtsx-pgQB93dFQ0z0J}O5aPd>;88^&lc^G0ji5SAXwd-1-@6XX)^RDE#l6_^mCCWZpVe8! zi)bd?XRDGz0^kb?UF-2zc!^*L^J}(9ZGzOc$(1QvM0bNC)hj6^073cUE!o8gupkLPFPi+-`fU3=Cm@HC(vS0R1iAUDPe2Zo?s@K1m?~2+9|aViy-F7g9(SV&_FP z8k4hnvJ(;jcRrwVJVq_TgM|cx4fmfiTo}S|cV(_$65&>eeHYP7@KdiDosa-HMs&tw z)X$Ppok%bQA;kML!T24FkSfFuBdGTX2uZtkLIMy>#+x;*kbs4ekMV@GizlSfo{)Ct z^c7%{7vg7_}`>Whu9D@AeKHE1bBmlmU z(6t_C!%GB1nBQSsxCIG{3USOLS`3O*zod`=1m%m5XBRIj7g9()#3_qtjf_uEc0vLm z24fG;F;t;g5k zC4wQ$Zy^`%?F2=YxNH&i90?&+CxrwcC|`UfyJ$1oq~A+ihn#?urlBw%6WXL>?9!xPf!o{&!C^*&@5Q_0@qq7ifn$eWUR zWdH=J;Oz_c_m+X#Iz9+z@l1C7sB-Me)=fOTi0**e*Lv(U1}g(YnBSvZ zxb6V`E#6l=ji))FNDWL12|!T3_&IiQuyP?caX<0$A}Sq)`1E8aBmnM0gU;3%wGSRF zBp7VC>twhvgyFu^RqMhgtV0#<~nj&k;7Xb*$7gw^2pOp()`}U&WVj6_WWi=dM-b^k6 z;4Zf4?2A!n;K7>-1{?0=JrOPpVYmaC>qvlpMequ5G2IP6Q#GR#5&*}D&Pa@U!!p7U zgbU>03m7DIg?BVKrk6sSSuu8VdNisLi)%P(ubaqKH&8pHBM$H z$+P0S5mW{8LNc!mfFKpze;H_=Cjzr|ybR9bAK3A7<=E}NHe%<+v?JV?)h2}mz!ws_ z*5e=W62TDWH--x*#wS;1++sQs6iu2UYswb^2+9}l%`S4vg-pMjIAAf&k?{>l3JHKa zAJDlKqn^iug#?2QcNN@4Fofaend{C(xSho@i%IMVA!$Y@Bmj;Pouy#whLLStl+_}v4TO!=7xNI?P2R~CaqZ1MU$B53WU_4YZs(WcL1R=y%GQori zMo3vvT1N{pVYznggaja%jHhZ=NWj9#Th_U|`&-tzyZhyJ?(Tku*ZUPq-br+>qdP%f zNamFR5Tt^?QQ2QN1!n8mXCDZu8#^9|w!g})#C3~l9o&}b6`L@$_Q43J$00NUREq06b+Q zK}SWhmLoy89a=BT-t&?eh9I=~Ii0g4)^Br7kH!;YbwTPPdel*8bQ_bb832JJeBqzf z9NucL=CVXbzZ zGs$EC1e2SIwN^;L!pINsgtWgWq=}x8_T%;b%#wEzN7PXPJoZG#-}IeO?*WF+^aTpHeyuE-Hqg6u;IQc!-XLX_ax?eD-mudQNM(CfuBar z=#DY~juD*?z<8u&l-3A_AcS~26AU`UtY{~3Q5`M8go1XRGs$EC1e5W-MpjP1!pLWP za+>AIX{INqOL*1qwB#Mc(mJ{eFqXi?F*vQN2@ANC1NJ#Y@@69m)mo zrmL1vi#-sZo}4%F6#;O|icUW{3J*TJV6fqKJQU%=5Qcj#b9DpgSEQ@BZ3)eUpGM8- zgap7bqO%o7-6|QCkYETxi0@#6a})vZimU4AJxnNQ*Ey3+20$}yZBYPkhSk7 zo?k+fWqf*a-o#e~z%45}(=qB=JXlCDT(oCNYJ)T!emKH~p&bl^@K7V-^~`k)KwOJp zuGbfWd+TTlx{aDKXBaa80vGsFKfBt%!oMdxXicUHxs(nW6_aNCk$bJUvS}?0}R#Kw1nzFk=-@9nE(Xk zi+^AjJ1G}3{jB(P2^}Qk)06Wiz9IlJK7OTw&iNR19Ui=yV6frdCBuaw4EImwx<3(a zSJ8Yay$3(bHKRL~0XRlOe2=V4i)hoA_N13(kD!!|uftavfyUv+pG5~_f z_;95a60k7xpFAP`=n3fuPe}jd^`39Zvm!N;#)G_Ux1^8&1gYRu9&Rr0z-%4AgtNG4 zq{^yEId(#7BU&z{sc@gu?h7WjQUJb?(6t_SI~pqkLzrJ{F5Gy4zL2_#PD^PaD6+dJ zg#;idU)+UVG$3a3?a? z7=V67@cL*e-2gw!HKP*}0LO^VHW>A^WR%tjh9HFaNG7;J5y)h^h|VMF7fe{MUFS?P z834g#e7}_y60k7x3QtJgJt1}Tgw&PSyW88}Dgv982VL6^JZ;caa}S-S$H)d-KZKlrsQqTBA;quVvQSt06F3>z#nbhqB|{ z&`#;xTwObe=a?g>uv>G7#SW zr;VidK%V;-asW21$1wp4H1E!ffZ19<11vs^9lxj?b8b!^?ZvN4=}(Z)C!uIROYJHxqd)CtzXZ7kYBKz?0K-Pfq9a zs^4$PJBfyov^B`bYI2)b20)MsKCWfo4GhfIvHWz%X%RbagSNlQtwhgdv^(6_Yxhn_ z0DK{#YdxL}FA)r3e!aPHXC^4JV&F159u)bBNg)9U$`=n}7xyU_Qb=9I@MSb##-}Gc zApwx_@eK!b9>l1R@n9jrV8iWx2Ev6Q3^&JIy#V?ZsS>*`ql!rol4i68F9P5g(YYLK zdtf9p!VrWI@4*BYDgv2Il~_8GF2;ni{gXlh5KP85lUX4F3nRbM6Ver)kS_OxbQ!OA z`b?u@e5c$>$Q6) zBmlmU(6t^PhL;G2Fu(n{a8D#CsziPn{Q-*n0ZAbN2+9{vW*2mpNxzp^I*ocBi1_|x zGJyR7%*I0n8ecX|9cOiR@<1_X8odU5xt{Ej1K=lzZs*a(sS|fDPSNF^Qlh&x;u<4+84Qw! zFqw;(uQfn(rJRM)e5D*9rcI;!&|Rxp^9WJ?qapwcEGs&S^-E?&Hz0{%aB0ghULo58L-T>>^yGp{0%?>2 z@Ye@jDvwipW#SYKI|qTnuo#_2X;ABP6+0gVFjaC6%)CBTV*VI<5ER*iI6k|5iU7Fl z3p&LZ^@$8tU0+}bqhG`XS11BL7S0<(9S=r^+I8MUUj)FpMknwT!C;dqITy*m5GHdW zbCm)NlUX;4b^>FgX3QGK2*8m5F2RHAv3`^)_88@YkL1Tk(WAiE>&XQ(xfFn3Y;>DF z8KtH^f!~o>DdUqkI%}mt75gc6ew%W>1ZFOFR@^^|K9uq0lf?$$DuT{9j1q^KV#5$d zzlI5#)yo3N=(FOcQ8W+}3fgtvL|+8Jxke}O6v1GVIT`MxAx!30<~mbx`N_P3JH24c z9h_7)fU^LsknyW}yv~Q~eKy>l;+c{3A@IDO?1~M*FE+X>9*t7X@u02FLwqo7ht5Q4 zP|lxc=j{QeN~&SzVpobs@Um<&;yWZ+Yyhqz=p2YZ24bYLMlgiYKgI;7C<0mRN^$#0 znt};awQE;w0M0c!fu{%to6LuBCkw^4WK_ z{Uu^x_WarjSiF6OQvGgdr%L#|bZ1qi=wCr=KvFiDE9OW51Sccj7x1oVKZ>dBP+W)pB{u-U`GcD`KbYKrg(r_Fak-@t@Hy#}5+Rki+)^CE4JriI z%b`TIAYc10xd8~aI{tDx-aJPEX1C^FGPfzDa*HmIxw)O#N{lBO5BE*~k{f_vyW`Hp zPbN2D;YQz&TyFc4%WWTWxlP~@&Q~GG+&VSGPaA=|`q0EKYcVX`SGc)qe%WaAVQw3| z0Z*H;=-*XN-45>9tQReU>%4Yt<=CQExUcX=V3XD6y}}K(S+&h+v;H=v&HCAlHtVZu zI{rdgQ<+djYS`dZswnm3d>E+lfhhF=Vwi#b_6h!9N*A42lu9?Fqt`|$@s&`|&z|p_ zN{KH8-GwJ{s{MsfF91~gb3rwDLj8&y^O;buFqQpNK_B9k?pxCSiBR`Gl>K8tmAFYz zkoJ#+x+|yb9|}4Fx383+4}`kytLz0q9dH{}+20rH?+VKPo}fqZ_YKv4SExT+srEa9 z_Q4;5RQqkA{xYiCZwV^FUmBI44MIJ2RrWW9dS3gfjOPuZ-j<;3uL~0R6So@wno#e1 zQTA5_t;U;Ul>HT<-dLsVFAF*YZ&dnP`gsZY;_ZgYzFyGBru`yf#v6Q<{RKg@@gB{8 z%JJ)jdegG9KQCxIjM*gZ&k6N*dS!oB(7kxiy&C_F;LmHwF;5GchR;8!c>W>O2ZGf2 zrv&wtAL)@}o)qd6XR7^#pl`O*;~z&I&{p=xgnFCDUvm7TLVes*+1Cmx-&T)*M5xab zEBnKO=H&F;hlKjTy0Whk^j@8|KPc2UA}IRsz=K0zN1(|N5H>N{PO z{a!&w4b|iC5$a2Wl>Khhq*nXCOQ>(9QuaFqU0tK?cc4~-bo+K_U>n`ORj9A7RpVC) zdSz>EzeT9;MppKl1?2~p;GLhS!%aecYqzqm6tt*XkH1lL= zI@BEP7ShiOp?<|djlV{y->FgUtFex~_4uoV`eliX9Dk)yzd5GHTp{R`Ub;S)V~!LC@W^eW6f4EUfGc z1oh~u?emdKXU*FnXmM8C=Lz-G=xY32LI3Qe?Q@{X4to4-K?ir#_F2$IJ8hpS==Jv6 zeupy#*J_6r2P*-G1|3mVW;+s_wNWyYL` z95dQpFKEG*x_z!tKM$wkKS!wFj%zLJf3~2pWqQn6f_h=Diswv0-<4|n8G@eKLfcPA zE}LunY0w+SsC{~>pe37W`zfdc#wb503!2eF+fNcyjWKHcG(k5v)Akbt?a*AerwY0h z?T#|G;|1MTtnJ64{w2D7EOIyPW8fd{ZgTw5f_{(mn4<)3Zss0|wJy^3DS}3uF-Hhm zlh*db1uYl4eVCw4DcwF)&=zLQWSj|q7V{Z$h@jogn1cmv^Ov^gv5(NMlJOjb*nZdc z1Htu2G1p|0pp$>q_5*OO`AxU?7qs#h-JU4u{!M!Pe#mR1w(pC*^RsU6BWUtZx;;VA z{urZbySJbxe$e*4a1Q^d?c;GKe6Q`}ke3;=C-mQ>?PCQEH)Hm|Iq;3P?=I-H@3f!Y z1nu#yw(lzFS+x7he8&j7{3~tWMNliuRT>zLYt7f%zO$gq&>kem?<8o&m)gDqYW0O~ zZzpKV=ej*g&~BgU_DHPVTe@8*=+A>GJ_H&w zerjM<3#X1%W4-H@Yccg2`Dic_QH_%1jDU)5u> zg3f(S=h#_L#Vgw03D+i!QQGJTeHwcQK{4z*Nk8ocz4($I-wtQ^%X)lUL07HU_BMhh zVvO?BT2QwawY`;~j2W{PYPe3@TMD}I1wDRCL3ci{?d3Q#F-G~xpq|fZdl}9Lj8XP2 zaD9J9+e>i?eK#3@3qeo)LyvEcwRl>uT{GzXDQz#owH0HOCW{4K z@PxLXeBhwam{`RQ0rv=qNrsE+&qtq`$^vK(v-SO zkNGA|_urx0U!`eWqi%nhrY(*Ai!}Xto3?+RrdMv)yr02;J8l0oO*ggI`F@h7Ik#&2 zM`;?fO1D2qQ}0`J`~5V%ev@v$m!<_b>$&fy>8_R9{!W^XGGpFOQ>z=b{jD_h#h8O+ zE*sL+9K32@znP{((LPMt-$>Ju*K7OhSc@BU%&(>C(iPhNYMSo8PTOBW{MTsv%W3-Z z+TzsF($7n2x@NPO{jX2csM46%^u;vYcauGIGDutt|_ z`?F~pfH6uN&!lO`OSS!J)c-PV|3{kkU#jg-rRlX)-KfT z$I|r4BHey8O(hF-du^Jwz!=5*NSZ#Kr|l18jpi4pPLTONl%}ueX!{yy24mFt2h+6s z=DH3Kr0Hd}PnF~EPt)Aldi?4%{bAboVm$nuEyvuGrgpRRn7h(6?GoL-BTesLtlPJz zY0yQweQTPc3v_!`ns&XgI5l1Rxg||Mo~P|MV=bl^r!JB9o4|Xnwy#W6Eym1~_8Zfb zJzLvvfE{BNOZ)X{+Ftx8+pkE|DztBu_RG_B^Qqc?S(vTKO;?VqOI(wYRt)4i@df^!}=l~wf9d% z%}s14K>r75`|)WyZhzfAE=}9Peyd!gW7E`qqP8ECrcG$yCGAJ2>6`J|epH$!?4@~+ z1n<7uegw{|eRTVrD^-!b$j15&DcZNbDuOlZtN3~JM520KYQb>z@K4M9rjAoqRAzxC#8LSnl9c| z`x%#}dv_~NJtysZrs>9Aw0$hj;W5Rjm!y3UoE1B3`|i-&=;G8H(!Lwk+SqqZt9zC2 zO8Xe(xT7AwOPZGKq}!u$eKhu+(=-D1kL38BaQ^I|$LxqR+>F@)+B5d;)ATCZU&!&> z;Y`?Gj~|t$2e;Mjk!k9;oo?6R+KTpfa{P!iRgKd2VQD&Sq;3yM(`6%cyCzNRhUxYo ztk+Q8-a1V$)#&yB#8a!=)i}@5{z>}ppQZ-}X?s7MU4!+y^i5N*ZM3})_Lmvc8+(7C zw)aZYiCgP-70&r;-R_C&(SYLAZ_EF=M*mIYTdP&!(x#v^(RBs?_#QX*#+}$KNqc`}NfJ4rzJ;ZR(GB+NbG;9@^e6 zO?zT)v9z~M)3OR}Z;j_LZFIX8blz6SycIOoP20Cj)6}lIoxz#eMYp$r9y;oFDe8l^ z+T)vJ?K*3Fi!{}B((Ptxx~hY27pJL5JKc`(yu!pF(loY}wx`o{MeE|!<}zkV)04)Y zN>c~eTT1(1M4MXb@qZG%wN-JdowWZ!v~Ejn|DEVuGv+seoWIn}|l5G2ap0 z*-YENC0f#4x4*%d65alqsGAw{715=!wtq?VMzOB>7euYlR%giPL{ri3BJ1!O(XvR} zKS3@{H6VD zAiBW#e1mA>Z`%Gk(fZ%xRA1@mHKKQo{Z*n7ux~BxuMmB|NsoV-=(%5Y`z4}=Uv&Hb zQ1|BXbyem5|9+bE?2|T40~82QXj)1sqhYiNLO{SG3Sm&Hz$MH@5yDi8Okt8TM+PZ_ z66PXP1ko}{K-7v1K?Ew3Ri-i;CMkpZeLwrGea`xv&Clz-_pe`Hua&O#{yckHd+p)u z{n={`nSDEtdCY9^?}0yRwn`rJh}m`@2L3RQ-pOy`^Z&is4j%;mklE*%HoK<(&TP{A zfiE!oQ=b1V`}Ezwe?yyjFXVr1_T6_v{z0?-^O#@p^!{&wKfpE)hxy-ccHG;653>Gw z%zb7P-U|GeX77{F*5_WcTi*!$9Q%cyL)lq^UZF5E%0BM zHNG17&&^ti$>Q%Y+xz9fe`fYyuLOR(+2bz;ew*2YFNOS1&A#;4kRLGHIFGs2?2bi& z-(oiJFCl+3?e@en+sO0R zn%(lJz^^eo;hB)Xnl`X7uzW;B%?lJmzAvR~`%ehqSAqkiW=m&Z8lJ zq1m3qWb?nkto%se=bQaK&;P*e#@`3tXV&|0$e(An%tIl6F8eo+Imhgj1%aP!HtTmG zf0o&5zYX~_Irj7X8D<~+I`BDWKmASEFQ=Ow{$SwWr=909rsl;UM_E@uL z?+*NXw9k7&{ur~}?h5(YX4~X3N1KhhGw@kvPv-ff%&z%G;73wd^F#g!voHKSMc-XMy){Y~B&_hjO0G`5_$3@SS}9zsouQwh(i$+4pY``S0+S@uwmGZKHxh z{vfkWZw>jGoF4{C$!M#`6T&0J$_%a18)p`AL=ci zc5mJ`-Vk`V*;79W`Mo%|ToLmB#rd{B?5{m(OXRcb$nG4!^FsccX1nhZ@-xg{-!sJT z#<720;9uw1zc%D|rT%li3;AmT-Ui9|pb|$Nt5kem3QNbz$IN zFdIY6aXz0-%&s~=@M&hRT~JC+cK&(pEBXT8nDf97O357O8*z-}d_%J};paNv!0eaj zhWPb4m!22aXFXm?pA&e8+2+J#>-jmerOpm~9kct-2>G>WduN9Hnr2UsztHEu2Iq>? z1D|U4uQ{dUQs=94UH*RHQ#d~mlg)oMuFIzeKACgNX{Ds!<5xBN^rXNiQUAnT=X@f^ z)X9Ojo2_(8DY?n{1hesZ{3>Q=kjs`;pzaPsn~~%j_MpAK12gh3tFQyL-sKW7qBxvcoox!|gd%ukmm8>^B2_ z+wS;Q$i8L2-z{X{v^5F%tH-`!_kBIk*R4drVyCa!-**Xgu`NTu+fHA#c{>OCiXD^( zylflp6zEH~avt!aE!Z*8zuNU(l?rP7i|zEaKo{900(>_%{@F@91p0y{{y;X1eb(OiN}$i!_1g#fC+piT(1rHxJm6{DaeAOn*|G$9qilTA-rY9PKib1z z4)h7TWSc<$V22QpE$wmp`IiD6vhjJqWA>%31AWwfMD}A}-$!iAtpa`6_R1&wz1^16 zhpYrmF#R;ijs%doWH+Iu<3>g zCCwgtzkRYvpo6ygreWLev(C>4`b*oAfUF+wwUN^Ty~oZbyR^^YZhL8?K<~6YHw@Wd z*yHPm>>W0Fy^#Hxm7&?pZnqmg7wBzven+4`wRP4FbikG)Ad9`#X009Q&34Y3A$y}; zKQ&};us==-+3RhK)k5}KyM5J=z1o(W6tY*@FxhOrSK1xzf%e;Z69c`%4xSL`kL~jW zWU)W8DXRo}xxGU+qnFwI@qu1ym#-Y?C3e7yfzGul1Z1%n+cGN!`a?U5Y@1i#MK)rE zKrgiC$Y#xmF^IY=kC+ zvSmxjD!#O{tY?`(&$PAkfHUl=)o@!e# z*_uvIvF7GLPqN{rknOd@N0*Wg4>-||9u?>b_D8ZCJ3ZbW92w|wwpl4`(6Kh79OyB& zRvNNL+tzvPQTC69K##Or8^dHr*!Cj=J=`wI0}iuCbJ}BTK{xXSA8Jn|A@&fv-@+We zYv1_S$n0jM@nGA6fNZ~g$8P&apx?Hi{c~iceh;#5ej4aZTZ4eC)(^CIKMwQ&d;F6? z_qQ`Y3Upul?S~<|kKM5(1ng})|2@!d+n9iCW_#I$4+8x!dp6JRX>Yz4=pJ_S`yso# z-TZFIe$x(mCuDcCzyB>{ziyYm9kRRF#J56rXL~2l?qsjO5onj)_-0s#9ka0{vqrFk zy`LXAU$dV45c#TYnja$D+dhlK9KK>(zBaN_ecRdaD}he8KfW61m+jh@1Krko2*|2> z8(T9!$hNi*@`LP4w&9B*b}L)`rIE>2z6-asNB$CMr(N~eu)bT^ovco_zVz0bAJSj6 z{TGGU&Fpcq(|rz`TK5Zqe!*t^IjqAbcFc2uPP40@582P#&@&;su|4u^h~3CK{uJnj zwhjT=R%~E1pAK|=J7Hm<>)Fr$7-)yx@>HOovtynNbX|L&><+$W>)85F1iH4Z#bmoW zUCVy(c%WvRoUcPP-Q_D`}|+gaTvJQnB_`z_gQ%~s2dk6GaU~%iFWK$FntC&aV4SSlY5S<-tJ5*-?4GGMPm)i(NW1gC6X2 zSjv9;K!|O%>wXp1VXR$;Cozj{v5g7H>S0V~mCR_f&C2Uxbmo%G=%~z#c{uZJ7~r+~ z#^q$T=Wl7SWw3~y;`ytv1*}s}&h>mh*0;6G$t9jY9Lo!~n`=D3ZG(O8jWoH{^IJDq z>+5OqfakZuKC+nC0G{t`uqR(llb1ZdA+PgaOq2IKzdm+>zobcNJ@OscnEsq5%X)rY z*5`$kp+U&6*G?N#^n6>Ioap(N zM%e1Nq{+FS|0}PVZ%UIZJilm!{o=+nxyAGId8Kp?uTMPxGhPdwl_n2*{x)8XpULBF z&ku~S%jTrXUp;@z2%cG{$vd9EYJ{D6T*~+&iJGyUGSPD z-GKaNye{1`O_uij7e?47oouh?r|}4W^E8>}`He@|wVS2M_MYF6S7N*-`7h6}Kf?Cd zBux(TeA@_Ho7V$JdVU<+JDL6H`K5Us$m9MqJ>SZ!)``4!^?dUPTdh4!`aM62*J(V~ zztQt$_AihAfA0Cx2>aJcX>z~k8%Nk-yiR!7^RMvOh{x7Xd;TS}lt+!hx zEzdt^_92gzKlS`GW{>@=l#Jex{6ZcT{j-#;==nW(a?)Q)*7E$fcr-ST>%Ql|!Thi1 z(URx8_?dKdDe3b34)Ci=$zGoSDnBW&EG36{eqA1So?S|g_x#%YL_DjMobCBW9%=FO z=`zpL^fo-Wl>Ef=iP_2DE+u!8Z~Uj-J+qW7@a(6S@Js4x&wgwj`-M5r{ z;Mu?1V|$m9#*N6nZ&SKU$ugdO*S_&zrDT$4@3Q`lOUZhkoo~x>-`nZgpW8Vbl#*RM zdy9R0olsh*w3OQBM7o@cMK54lyn)U(&vp_BPA$+IWh zPg+XJeV+ZEy~&Nxqn@2@cXK23C(q8ZKJJuW^6Y-LGq)Rm^X#{5Z*B`d_UsJ%2R8s? z+_3!(yJeU!_C33+ZOOgB=g1}_8%Ovzrz6Xa=i}`zWgi@uvXA;p*++h*tS8EmjU(HM zDrH?Ym$GgtOUqz#Z7*db6_u{QgxXu$X=(qvF=xEq(nRcoy``1@#dmI{4c_*@%fIP= zpZ}Bpz5FTvd%+X__u1e1-`;yTkCo2`0XtnIL-fd^2)Hiv;{BfdP{4sPCh+?7g~vx?%*9) zZ+bOvu_%m8UEhOOFrB3gm#Js^-+Sgbx#~3kd&4RI zckao~r<~w_H$Be(?s$yzt&aA;YaQi(S3Sc2uEY}x{_f#1znkIto4?_I7wqbP-{!Y> zZ)tsgu=bX&-pc1BQ+_Li3LQ>VAo%`c4hQuYa5>0^E%w3jyJ*1x^9 zKezg<;RyfxI(KoMr5zUWF;ZzyZgqM~Z*rH@UfPXYnfB7xxj|sJa&ORH%0A;LRX%z! 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¬ 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

      PseibbO0RI%BH0N>qd5U71pBw= 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ཛ}&BkNh0$dAsKF7P-$I$!pM+vkA~hcCoO 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�?d{% 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]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 bEAn6e{vX7tx%>b4@L$PIzueu>{apNiJ6Fw; diff --git a/plugins/local/non_h_ints_mu/deb_j_mu_of_r.irp.f b/plugins/local/non_h_ints_mu/deb_j_mu_of_r.irp.f index 480855e9..fc29bf50 100644 --- a/plugins/local/non_h_ints_mu/deb_j_mu_of_r.irp.f +++ b/plugins/local/non_h_ints_mu/deb_j_mu_of_r.irp.f @@ -12,7 +12,7 @@ subroutine routine_test_mu_of_r_tot double precision :: jast,grad_jast_mu_r1(3) double precision :: jast_p,jast_m,num_grad_jast_mu_r1(3) - dr = 0.00001d0 + dr = 0.000001d0 r2 = 0.d0 r2(1) = 0.5d0 r2(2) = -0.1d0 @@ -22,7 +22,7 @@ subroutine routine_test_mu_of_r_tot r1(1:3) = final_grid_points(1:3,ipoint) weight = final_weight_at_r_vector(ipoint) call grad_j_sum_mu_of_r(r1,r2,jast,grad_jast_mu_r1) - double precision :: norm + double precision :: norm,error norm = 0.D0 do k = 1, 3 r1bis= r1 @@ -36,11 +36,19 @@ subroutine routine_test_mu_of_r_tot num_grad_jast_mu_r1(k) = (jast_p - jast_m)/(2.d0* dr) norm += num_grad_jast_mu_r1(k)*num_grad_jast_mu_r1(k) enddo + error = 0.d0 + do k = 1, 3 + error += dabs(grad_jast_mu_r1(k) - num_grad_jast_mu_r1(k)) + enddo + error *= 0.33333333d0 norm = dsqrt(norm) - if(norm.gt.1.d-10)then - print*,'/////' - print*,grad_jast_mu_r1 - print*,num_grad_jast_mu_r1 + if(norm.gt.1.d-05)then + if(dabs(error/norm).gt.10.d0*dr)then + print*,'/////' + print*,error,norm,dabs(error/norm) + print*,grad_jast_mu_r1 + print*,num_grad_jast_mu_r1 + endif endif do k = 1,3 accu_grad(k) += weight * dabs(grad_jast_mu_r1(k) - num_grad_jast_mu_r1(k)) @@ -54,41 +62,33 @@ end subroutine routine_test_mu_of_r implicit none integer :: ipoint,k - double precision :: r2(3), weight, dr, r1(3), r1bis(3) - double precision :: accu_grad(3) - double precision :: jast_mu_r1,grad_jast_mu_r1(3) - double precision :: jast_mu_r1_p,jast_mu_r1_m,num_grad_jast_mu_r1(3) - double precision :: j12_mu_input - double precision :: mu_val_p, mu_val_m, dm_r1, mu_der(3), grad_dm_r1(3) + double precision :: weight, dr, r1(3), r1bis(3),accu_grad(3),num_grad_mu_r1(3) + double precision :: mu_r1,dm_r1, mu_der_r1(3), grad_dm_r1(3) + double precision :: mu_der_rp(3), grad_dm_rp(3),mu_rp + double precision :: mu_der_rm(3), grad_dm_rm(3),mu_rm dr = 0.0001d0 - r2 = 0.d0 - r2(1) = 2.5d0 - r2(2) = 2.25d0 - r2(3) = -2.5d0 accu_grad = 0.d0 do ipoint = 1, n_points_final_grid r1(1:3) = final_grid_points(1:3,ipoint) weight = final_weight_at_r_vector(ipoint) - call grad_j_mu_of_r_1(r1,r2,jast_mu_r1,grad_jast_mu_r1, dm_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r1,mu_r1,dm_r1, mu_der_r1, grad_dm_r1) do k = 1, 3 r1bis= r1 r1bis(k) += dr - call grad_mu_of_r_mean_field(r1bis,mu_val_p, dm_r1, mu_der, grad_dm_r1) - jast_mu_r1_p = j12_mu_input(r1bis, r2, mu_val_p) + call grad_mu_of_r_mean_field(r1bis,mu_rp, dm_r1, mu_der_rp, grad_dm_r1) r1bis= r1 r1bis(k) -= dr - call grad_mu_of_r_mean_field(r1bis,mu_val_m, dm_r1, mu_der, grad_dm_r1) - jast_mu_r1_m = j12_mu_input(r1bis, r2, mu_val_m) - num_grad_jast_mu_r1(k) = -(jast_mu_r1_p - jast_mu_r1_m)/(2.d0* dr) + call grad_mu_of_r_mean_field(r1bis,mu_rm, dm_r1, mu_der_rm, grad_dm_r1) + num_grad_mu_r1(k) = (mu_rp - mu_rm)/(2.d0* dr) ! print*,jast_mu_r1_p,jast_mu_r1_m enddo print*,'/////' - print*,grad_jast_mu_r1 - print*,num_grad_jast_mu_r1 + print*,mu_der_r1 + print*,num_grad_mu_r1 do k = 1,3 - accu_grad(k) += weight * dabs(grad_jast_mu_r1(k) - num_grad_jast_mu_r1(k)) + accu_grad(k) += weight * dabs(mu_der_r1(k) - num_grad_mu_r1(k)) enddo enddo print*,'accu_grad = ' diff --git a/plugins/local/non_h_ints_mu/j_bump.irp.f b/plugins/local/non_h_ints_mu/j_bump.irp.f new file mode 100644 index 00000000..1731bb72 --- /dev/null +++ b/plugins/local/non_h_ints_mu/j_bump.irp.f @@ -0,0 +1,90 @@ +double precision function wigner_radius(rho) + implicit none + include 'constants.include.F' + double precision, intent(in) :: rho + wigner_radius = 4.d0 * pi * rho * 0.333333333333d0 + wigner_radius = wigner_radius**(-0.3333333d0) +end + +double precision function j_bump(r1,r2,a) + implicit none + include 'constants.include.F' + double precision, intent(in) :: r1(3),r2(3),a + double precision :: inv_a,factor,x_scaled,scalar + double precision :: r12 + r12 = (r1(1) - r2(1))*(r1(1) - r2(1)) + r12 += (r1(2) - r2(2))*(r1(2) - r2(2)) + r12 += (r1(3) - r2(3))*(r1(3) - r2(3)) + r12 = dsqrt(r12) + inv_a = 1.d0/a + x_scaled = r12*inv_a*inv_sq_pi + x_scaled*= x_scaled + j_bump = 0.5d0 * (r12-a) * dexp(-x_scaled) +end + +subroutine get_grad_j_bump(x,a,grad) + implicit none + BEGIN_DOC + ! gradient of the Jastrow with a bump + ! + ! j(x,a) = 1/2 * (x-a)* exp[-(x/(a*sqrt(pi)))^2] + ! + ! d/dx j(x,a) = 1/(2 pi a^2) * exp[-(x/(a*sqrt(pi)))^2] * (pi a^2 + 2 a x - 2x^2) + END_DOC + include 'constants.include.F' + double precision, intent(in) :: x,a + double precision, intent(out) :: grad + double precision :: inv_a,factor,x_scaled,scalar + inv_a = 1.d0/a + factor = 0.5d0*inv_pi*inv_a*inv_a + x_scaled = x*inv_a*inv_sq_pi + x_scaled*= x_scaled + grad = factor * dexp(-x_scaled) * (pi*a*a + 2.d0 * a*x - 2.d0*x*x) +end + +subroutine get_d_da_j_bump(x,a,d_da) + implicit none + BEGIN_DOC + ! Derivative with respect by to the parameter "a" of the Jastrow with a bump + ! + ! j(x,a) = 1/2 * (x-a)* exp[-(x/(a*sqrt(pi)))^2] + ! + ! d/da j(x,a) = - 1/(pi*a^3) * exp[-(x/(a*sqrt(pi)))^2] * (-2 x^3 + 2 a x^2 + pi a^x3) + END_DOC + include 'constants.include.F' + double precision, intent(in) :: x,a + double precision, intent(out) :: d_da + double precision :: factor, inv_a,x_scaled,scalar + inv_a = 1.d0/a + factor = inv_a*inv_a*inv_a*inv_pi + x_scaled = x*inv_a*inv_sq_pi + x_scaled*= x_scaled + d_da = factor * dexp(-x_scaled) * (-2.d0 * x*x*x + 2.d0*x*x*a+pi*a*a*a) +end + +subroutine get_grad_j_bump_mu_of_r(r1,r2,grad_j_bump) + implicit none + BEGIN_DOC + ! d/dx1 j(x,a(r1,r2)) where j(x,a) is the Jastrow with a bump + ! + ! j(x,a) = 1/2 * (x-a)* exp[-(x/(a*sqrt(pi)))^2] + ! + ! a(r1,r2) = [rho(r1) a(r1) + rho(r2) a(r2)]/[rho(r1) + rho(r2)] + ! + ! d/dx1 j(x,a) = d/dx1 j(x,a(r1,r2)) + END_DOC + double precision, intent(in) :: r1(3),r2(3) + double precision, intent(out):: grad_j_bump(3) + double precision :: r12,r12_vec(3),grad_scal,inv_r12 + r12_vec = r1 - r2 + r12 = (r1(1) - r2(1))*(r1(1) - r2(1)) + r12 += (r1(2) - r2(2))*(r1(2) - r2(2)) + r12 += (r1(3) - r2(3))*(r1(3) - r2(3)) + r12 = dsqrt(r12) + call get_grad_j_bump(r12,a_boys,grad_scal) + if(r12.lt.1.d-10)then + grad_j_bump = 0.d0 + else + grad_j_bump = grad_scal * r12_vec/r12 + endif +end diff --git a/plugins/local/non_h_ints_mu/jast_deriv.irp.f b/plugins/local/non_h_ints_mu/jast_deriv.irp.f index 9a430135..1f97c18a 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv.irp.f @@ -31,7 +31,7 @@ grad1_u12_squared_num = 0.d0 if( ((j2e_type .eq. "Mu") .and. (env_type .eq. "None")) .or. & - (j2e_type .eq. "Mur") ) then + (j2e_type .eq. "Mur").or.(j2e_type .eq. "Mugauss") .or. (j2e_type .eq. "Murgauss")) then !$OMP PARALLEL & !$OMP DEFAULT (NONE) & diff --git a/plugins/local/non_h_ints_mu/jast_deriv_mu_of_r.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_mu_of_r.irp.f index d45c899a..8f5aee0c 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv_mu_of_r.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv_mu_of_r.irp.f @@ -4,19 +4,48 @@ subroutine get_j_sum_mu_of_r(r1,r2,jast) double precision, intent(out):: jast double precision :: mu_r1, dm_r1, grad_mu_r1(3), grad_dm_r1(3), j_mu_r1 double precision :: mu_r2, dm_r2, grad_mu_r2(3), grad_dm_r2(3), j_mu_r2 - double precision :: j12_mu_input + double precision :: j12_mu_input,mu_tot,r12,j_simple jast = 0.d0 - call grad_mu_of_r_mean_field(r1,mu_r1, dm_r1, grad_mu_r1, grad_dm_r1) - call grad_mu_of_r_mean_field(r2,mu_r2, dm_r2, grad_mu_r2, grad_dm_r2) - j_mu_r1 = j12_mu_input(r1, r2, mu_r1) - j_mu_r2 = j12_mu_input(r1, r2, mu_r2) - if(dm_r1 + dm_r2.lt.1.d-7)return - jast = (dm_r1 * j_mu_r1 + dm_r2 * j_mu_r2) / (dm_r1 + dm_r2) + if(murho_type==0)then +! J(r1,r2) = [rho(r1) * j(mu(r1),r12) + rho(r2) * j(mu(r2),r12)] / [rho(r1) + rho(r2)] + call grad_mu_of_r_mean_field(r1,mu_r1, dm_r1, grad_mu_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_r2, dm_r2, grad_mu_r2, grad_dm_r2) + j_mu_r1 = j12_mu_input(r1, r2, mu_r1) + j_mu_r2 = j12_mu_input(r1, r2, mu_r2) + if(dm_r1 + dm_r2.lt.1.d-7)return + jast = (dm_r1 * j_mu_r1 + dm_r2 * j_mu_r2) / (dm_r1 + dm_r2) + else if(murho_type==1)then +! J(r1,r2) = j(0.5 * (mu(r1)+mu(r2)),r12), MU(r1,r2) = 0.5 *(mu(r1)+mu(r2)) + call grad_mu_of_r_mean_field(r1,mu_r1, dm_r1, grad_mu_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_r2, dm_r2, grad_mu_r2, grad_dm_r2) + mu_tot = 0.5d0 * (mu_r1 + mu_r2) + jast = j12_mu_input(r1, r2, mu_tot) + else if(murho_type==2)then +! MU(r1,r2) = (rho(1) * mu(r1)+ rho(2) * mu(r2))/(rho(1)+rho(2)) +! J(r1,r2) = j(MU(r1,r2),r12) + call grad_mu_of_r_mean_field(r1,mu_r1, dm_r1, grad_mu_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_r2, dm_r2, grad_mu_r2, grad_dm_r2) + double precision :: mu_tmp, dm_tot, dm_tot_inv + dm_tot = dm_r1**a_boys + dm_r2**a_boys ! rho(1)**alpha+rho(2)**alpha + if(dm_tot.lt.1.d-12)then + dm_tot_inv = 1.d+12 + else + dm_tot_inv = 1.d0/dm_tot + endif + mu_tmp = dm_r1**a_boys * mu_r1 + dm_r2**a_boys * mu_r2 !rho(1)**alpha * mu(r1)+ rho(2)**alpha * mu(r2) + mu_tot = nu_erf * mu_tmp*dm_tot_inv ! + r12 = (r1(1) - r2(1)) * (r1(1) - r2(1)) + r12 += (r1(2) - r2(2)) * (r1(2) - r2(2)) + r12 += (r1(3) - r2(3)) * (r1(3) - r2(3)) + r12 = dsqrt(r12) + jast = j_simple(r12,mu_tot) + endif end subroutine grad_j_sum_mu_of_r(r1,r2,jast,grad_jast) implicit none + include 'constants.include.F' BEGIN_DOC END_DOC double precision, intent(in) :: r1(3),r2(3) @@ -26,8 +55,25 @@ subroutine grad_j_sum_mu_of_r(r1,r2,jast,grad_jast) double precision :: num, denom, grad_num(3), grad_denom(3) double precision :: j_r1, grad_j_r1(3),j_r2, grad_j_r2(3) double precision :: dm_r1, grad_dm_r1(3), grad_jmu_r2(3) - double precision :: dm_r2, grad_dm_r2(3),mu_r2, grad_mu_r2(3) - double precision :: j12_mu_input + double precision :: dm_r2, grad_dm_r2(3),mu_r2, grad_mu_r2(3),mu_r1 + double precision :: j12_mu_input,r12,grad_mu_r1(3),grad_jmu_r1(3) + double precision :: mu_tot,dx,dy,dz,r12_vec(3),d_dmu_j,d_dr12_j + + dx = r1(1) - r2(1) + dy = r1(2) - r2(2) + dz = r1(3) - r2(3) + + r12 = dsqrt(dx * dx + dy * dy + dz * dz) + if(r12.gt.1.d-10)then + r12_vec(1) = dx + r12_vec(2) = dy + r12_vec(3) = dz + r12_vec *= 1.d0/r12 + ! r12_vec = grad_r1 (r12) + else + r12 = 1.d-10 + r12_vec = 0.d0 + endif if(murho_type==0)then ! J(r1,r2) = [rho(r1) * j(mu(r1),r12) + rho(r2) * j(mu(r2),r12)] / [rho(r1) + rho(r2)] @@ -48,11 +94,65 @@ subroutine grad_j_sum_mu_of_r(r1,r2,jast,grad_jast) jast = num / denom grad_denom = grad_dm_r1 - - call grad_j12_mu_input(r1, r2, mu_r2, grad_jmu_r2) + call grad_j12_mu_input(r1, r2, mu_r2, grad_jmu_r2,r12) grad_num = j_r1 * grad_dm_r1 + dm_r1 * grad_j_r1 + dm_r2 * grad_jmu_r2 - grad_jast = (grad_num * denom - num * grad_denom)/(denom*denom) + else if(murho_type==1)then +! J(r1,r2) = j(0.5 * (mu(r1)+mu(r2)),r12), MU(r1,r2) = 0.5 *(mu(r1)+mu(r2)) +! +! d/dx1 J(r1,r2) = d/dx1 j(MU(r1,r2),r12)|MU=cst +! + d/dMU [j(MU,r12)] +! x d/d(mu(r1)) MU(r1,r2) +! x d/dx1 mu(r1) +! = 0.5 * (1 - erf(MU(r1,r2) *r12))/r12 * (x1 - x2) == grad_jmu_r1 +! + e^{-(r12*MU(r1,r2))^2}/(2 sqrt(pi) * MU(r1,r2)^2) +! x 0.5 +! x d/dx1 mu(r1) + call grad_mu_of_r_mean_field(r1,mu_r1, dm_r1, grad_mu_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_r2, dm_r2, grad_mu_r2, grad_dm_r2) + mu_tot = 0.5d0 * (mu_r1 + mu_r2) + call grad_j12_mu_input(r1, r2, mu_tot, grad_jmu_r1,r12) + grad_jast = grad_jmu_r1 + grad_jast+= dexp(-r12*mu_tot*r12*mu_tot) * inv_sq_pi_2 /(mu_tot* mu_tot) * 0.5d0 * grad_mu_r1 + else if(murho_type==2)then +! MU(r1,r2) = beta * (rho(1)**alpha * mu(r1)+ rho(2)**alpha * mu(r2))/(rho(1)**alpha+rho(2)**alpha) +! J(r1,r2) = j(MU(r1,r2),r12) +! +! d/dx1 J(r1,r2) = d/dx1 j(MU(r1,r2),r12)|MU=cst +! + d/dMU [j(MU,r12)] +! x d/d(mu(r1)) MU(r1,r2) +! x d/dx1 mu(r1) +! = 0.5 * (1 - erf(MU(r1,r2) *r12))/r12 * (x1 - x2) == grad_jmu_r1 +! + 0.5 e^{-(r12*MU(r1,r2))^2}/(2 sqrt(pi) * MU(r1,r2)^2) +! x d/dx1 MU(r1,r2) +! with d/dx1 MU(r1,r2) = beta * {[mu(1) d/dx1 [rho(1)**alpha] + rho(1)**alpha * d/dx1 mu(1)](rho(1)**alpha+rho(2)**alpha) +! - MU(1,2) d/dx1 [rho(1)]**alpha}/(rho(1)**alpha+rho(2)**alpha)^2 +! d/dx1 [rho(1)]**alpha = alpha [rho(1)]**(alpha-1) d/dx1 rho(1) +! + call grad_mu_of_r_mean_field(r1,mu_r1, dm_r1, grad_mu_r1, grad_dm_r1) + call grad_mu_of_r_mean_field(r2,mu_r2, dm_r2, grad_mu_r2, grad_dm_r2) + double precision :: dm_tot,dm_tot_inv,grad_mu_tot(3),mu_tmp,grad_dm_r1_alpha(3),d_dx_j + dm_tot = dm_r1**a_boys + dm_r2**a_boys ! rho(1)**alpha+rho(2)**alpha + grad_dm_r1_alpha = a_boys * dm_r1**(a_boys-1) * grad_dm_r1 + if(dm_tot.lt.1.d-12)then + dm_tot_inv = 1.d+12 + else + dm_tot_inv = 1.d0/dm_tot + endif + mu_tmp = dm_r1**a_boys * mu_r1 + dm_r2**a_boys * mu_r2 !rho(1)**alpha * mu(r1)+ rho(2)**alpha * mu(r2) + mu_tot = nu_erf * mu_tmp*dm_tot_inv ! + grad_mu_tot = ( mu_r1 * grad_dm_r1_alpha + dm_r1**a_boys * grad_mu_r1 ) * dm_tot & + - mu_tmp * grad_dm_r1_alpha + grad_mu_tot *= dm_tot_inv * dm_tot_inv * nu_erf + call get_deriv_r12_j12(r12,mu_tot,d_dr12_j) ! d/dr12 j(MU(r1,r2,r12) + ! d/dx1 j(MU(r1,r2),r12) | MU(r1,r2) = cst + ! d/dr12 j(MU(r1,r2,r12) x d/dx1 r12 + grad_jmu_r1 = d_dr12_j * r12_vec +! call grad_j12_mu_input(r1, r2, mu_tot, grad_jmu_r1,r12) + grad_jast = grad_jmu_r1 + ! d/dMU j(MU(r1,r2),r12) + call get_deriv_mu_j12(r12,mu_tot,d_dmu_j) + grad_jast+= d_dmu_j * grad_mu_tot else if(murho_type==-1)then ! J(r1,r2) = 0.5 * [j(mu(r1),r12) + j(mu(r2),r12)] ! @@ -60,7 +160,7 @@ subroutine grad_j_sum_mu_of_r(r1,r2,jast,grad_jast) call grad_j_mu_of_r_1(r1,r2,j_r1, grad_j_r1,dm_r1, grad_dm_r1) call grad_mu_of_r_mean_field(r2,mu_r2, dm_r2, grad_mu_r2, grad_dm_r2) j_r2 = j12_mu_input(r1, r2, mu_r2) ! j(mu(r2),r1,r2) - call grad_j12_mu_input(r1, r2, mu_r2, grad_jmu_r2) + call grad_j12_mu_input(r1, r2, mu_r2, grad_jmu_r2,r12) jast = 0.5d0 * (j_r1 + j_r2) grad_jast = 0.5d0 * (grad_j_r1 + grad_jmu_r2) @@ -73,6 +173,7 @@ subroutine grad_j_mu_of_r_1(r1,r2,jast, grad_jast, dm_r1, grad_dm_r1) include 'constants.include.F' BEGIN_DOC ! grad_r1 of j(mu(r1),r12) + ! ! ! d/dx1 j(mu(r1),r12) = exp(-(mu(r1)*r12)**2) /(2 *sqrt(pi) * mu(r1)**2 ) d/dx1 mu(r1) ! + d/dx1 j(mu(r1),r12) @@ -83,6 +184,8 @@ subroutine grad_j_mu_of_r_1(r1,r2,jast, grad_jast, dm_r1, grad_dm_r1) ! ! and d/dx1 j(mu,r12) = 0.5 * (1 - erf(mu *r12))/r12 * (x1 - x2) ! + ! d/d mu j(mu,r12) = e^{-(r12*mu)^2}/(2 sqrt(pi) * mu^2) + ! ! here mu(r1) is obtained by MU MEAN FIELD END_DOC double precision, intent(in) :: r1(3),r2(3) @@ -140,14 +243,16 @@ double precision function j12_mu_input(r1, r2, mu) end -subroutine grad_j12_mu_input(r1, r2, mu, grad_jmu) +subroutine grad_j12_mu_input(r1, r2, mu, grad_jmu,r12) implicit none BEGIN_DOC - ! grad_jmu = + ! grad_jmu = d/dx1 j(mu,r12) assuming mu=cst(r1) + ! + ! = 0.5/r_12 * (x_1 - x_2) * [1 - erf(mu*r12)] END_DOC double precision, intent(in) :: r1(3), r2(3), mu - double precision, intent(out):: grad_jmu(3) - double precision :: mu_tmp, r12, dx, dy, dz, grad(3), tmp + double precision, intent(out):: grad_jmu(3),r12 + double precision :: mu_tmp, dx, dy, dz, grad(3), tmp grad_jmu = 0.d0 dx = r1(1) - r2(1) dy = r1(2) - r2(2) @@ -162,3 +267,40 @@ subroutine grad_j12_mu_input(r1, r2, mu, grad_jmu) grad_jmu = grad end + +subroutine j12_and_grad_j12_mu_input(r1, r2, mu, jmu, grad_jmu) + implicit none + include 'constants.include.F' + BEGIN_DOC + ! jmu = j(mu,r12) + ! grad_jmu = d/dx1 j(mu,r12) assuming mu=cst(r1) + ! + ! = 0.5/r_12 * (x_1 - x_2) * [1 - erf(mu*r12)] + END_DOC + double precision, intent(in) :: r1(3), r2(3), mu + double precision, intent(out):: grad_jmu(3), jmu + double precision :: mu_tmp, r12, dx, dy, dz, grad(3), tmp + double precision :: erfc_mur12,inv_mu + inv_mu = 1.d0/mu + + grad_jmu = 0.d0 ! initialization when r12 --> 0 + jmu = - inv_sq_pi_2 * inv_mu ! initialization when r12 --> 0 + + dx = r1(1) - r2(1) + dy = r1(2) - r2(2) + dz = r1(3) - r2(3) + r12 = dsqrt(dx * dx + dy * dy + dz * dz) + if(r12 .lt. 1d-10) return + erfc_mur12 = (1.d0 - derf(mu_tmp)) + mu_tmp = mu * r12 + tmp = 0.5d0 * erfc_mur12 / r12 ! d/dx1 j(mu(r1),r12) + grad(1) = tmp * dx + grad(2) = tmp * dy + grad(3) = tmp * dz + + grad_jmu = grad + + jmu= 0.5d0 * r12 * erfc_mur12 - inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) * inv_mu + + +end diff --git a/plugins/local/non_h_ints_mu/jast_deriv_utils.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_utils.irp.f index c3fc91a6..f13990de 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv_utils.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv_utils.irp.f @@ -1,3 +1,65 @@ +subroutine get_deriv_r12_j12(x,mu,d_dx_j) + implicit none + include 'constants.include.F' + BEGIN_DOC + ! d/dr12 j(mu,r12) + END_DOC + double precision, intent(in) :: x,mu + double precision, intent(out) :: d_dx_j + + d_dx_j = 0.d0 + if(x .lt. 1d-10) return + if(j2e_type .eq. "Mu" .or. j2e_type .eq. "Mur") then + d_dx_j = 0.5d0 * (1.d0 - derf(mu * x)) + else if(j2e_type .eq. "Mugauss" .or. j2e_type .eq. "Murgauss" ) then + double precision :: x_tmp + x_tmp = mu * x + ! gradient of j(mu,x) + d_dx_j = 0.5d0 * (1.d0 - derf(x_tmp)) + + ! gradient of gaussian additional term + x_tmp *= alpha_mu_gauss + x_tmp *= x_tmp + d_dx_j += -0.5d0 * mu * c_mu_gauss * x * dexp(-x_tmp) + else + print *, ' Error in get_deriv_r12_j12: Unknown j2e_type = ', j2e_type + stop + endif +end + + +subroutine get_deriv_mu_j12(x,mu,d_d_mu) + implicit none + BEGIN_DOC + ! d/dmu j(mu,r12) + END_DOC + include 'constants.include.F' + double precision, intent(in) :: x,mu + double precision, intent(out) :: d_d_mu + double precision :: x_tmp,inv_mu_2,inv_alpha_2 + + d_d_mu = 0.d0 + if(x .lt. 1d-10) return + x_tmp = x*mu + if(mu.lt.1.d-10) return + inv_mu_2 = mu*mu + inv_mu_2 = 1.d0/inv_mu_2 + if(j2e_type .eq. "Mu" .or. j2e_type .eq. "Mur") then + ! e^{-(r12*mu)^2}/(2 sqrt(pi) * mu^2) + d_d_mu = dexp(-x_tmp*x_tmp) * inv_sq_pi_2 * inv_mu_2 + else if(j2e_type .eq. "Mugauss" .or. j2e_type .eq. "Murgauss" ) then + d_d_mu = dexp(-x_tmp*x_tmp) * inv_sq_pi_2 * inv_mu_2 + inv_alpha_2 = 1.d0/alpha_mu_gauss + inv_alpha_2 *= inv_alpha_2 + x_tmp *= alpha_mu_gauss + x_tmp *= x_tmp + d_d_mu += -0.25d0 * c_mu_gauss*inv_alpha_2*dexp(-x_tmp) * (1.d0 + 2.d0 * x_tmp) * inv_mu_2 + else + print *, ' Error in get_deriv_r12_j12: Unknown j2e_type = ', j2e_type + stop + endif +end + ! --- @@ -21,6 +83,18 @@ double precision function j12_mu(r1, r2) j12_mu = 0.5d0 * r12 * (1.d0 - derf(mu_tmp)) - inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / mu_erf + else if(j2e_type .eq. "Mugauss") then + + r12 = dsqrt( (r1(1) - r2(1)) * (r1(1) - r2(1)) & + + (r1(2) - r2(2)) * (r1(2) - r2(2)) & + + (r1(3) - r2(3)) * (r1(3) - r2(3)) ) + double precision :: r12_tmp + r12_tmp = mu_erf * r12 + + j12_mu = 0.5d0 * r12 * (1.d0 - derf(r12_tmp)) - inv_sq_pi_2 * dexp(-r12_tmp*r12_tmp) / mu_erf + r12_tmp *= alpha_mu_gauss + j12_mu += 0.25d0 * c_mu_gauss / (alpha_mu_gauss*alpha_mu_gauss*mu_erf) * dexp(-r12_tmp*r12_tmp) + else print *, ' Error in j12_mu: Unknown j2e_type = ', j2e_type @@ -60,7 +134,7 @@ subroutine grad1_j12_mu(r1, r2, grad) grad = 0.d0 - if(j2e_type .eq. "Mu") then + if(j2e_type .eq. "Mu".or.j2e_type .eq. "Mugauss") then dx = r1(1) - r2(1) dy = r1(2) - r2(2) @@ -69,48 +143,42 @@ subroutine grad1_j12_mu(r1, r2, grad) r12 = dsqrt(dx * dx + dy * dy + dz * dz) if(r12 .lt. 1d-10) return - tmp = 0.5d0 * (1.d0 - derf(mu_erf * r12)) / r12 + call get_deriv_r12_j12(r12,mu_erf,tmp) +! tmp = 0.5d0 * (1.d0 - derf(mu_erf * r12)) / r12 grad(1) = tmp * dx grad(2) = tmp * dy grad(3) = tmp * dz + grad *= 1.d0/r12 - elseif(j2e_type .eq. "Mur") then + elseif(j2e_type .eq. "Mur" .or. j2e_type .eq. "Murgauss") then double precision :: jast call grad_j_sum_mu_of_r(r1,r2,jast,grad) + + elseif(j2e_type .eq. "Bump") then + double precision ::grad_jast(3) + call get_grad_j_bump_mu_of_r(r1,r2,grad_jast) + dx = r1(1) - r2(1) + dy = r1(2) - r2(2) + dz = r1(3) - r2(3) -! dx = r1(1) - r2(1) -! dy = r1(2) - r2(2) -! dz = r1(3) - r2(3) -! -! r12 = dsqrt(dx * dx + dy * dy + dz * dz) -! if(r12 .lt. 1d-10) return -! -! tmp = 0.5d0 * (1.d0 - derf(mu_erf * r12)) / r12 -! -! grad(1) = tmp * dx -! grad(2) = tmp * dy -! grad(3) = tmp * dz + r12 = dsqrt(dx * dx + dy * dy + dz * dz) + if(r12 .lt. 1d-10) then + grad(1) = 0.d0 + grad(2) = 0.d0 + grad(3) = 0.d0 + return + endif + + tmp = 0.5d0 * (1.d0 - derf(mu_erf * r12)) / r12 + + grad(1) = 0.5d0 * tmp * dx + grad(2) = 0.5d0 * tmp * dy + grad(3) = 0.5d0 * tmp * dz + grad(1) += 0.5d0 * grad_jast(1) + grad(2) += 0.5d0 * grad_jast(2) + grad(3) += 0.5d0 * grad_jast(3) -! elseif(j2e_type .eq. "Mur") then -! -! dx = r1(1) - r2(1) -! dy = r1(2) - r2(2) -! dz = r1(3) - r2(3) -! r12 = dsqrt(dx * dx + dy * dy + dz * dz) -! -! call mu_r_val_and_grad(r1, r2, mu_val, mu_der) -! mu_tmp = mu_val * r12 -! tmp = inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / (mu_val * mu_val) -! grad(1) = tmp * mu_der(1) -! grad(2) = tmp * mu_der(2) -! grad(3) = tmp * mu_der(3) -! -! if(r12 .lt. 1d-10) return -! tmp = 0.5d0 * (1.d0 - derf(mu_tmp)) / r12 -! grad(1) = grad(1) + tmp * dx -! grad(2) = grad(2) + tmp * dy -! grad(3) = grad(3) + tmp * dz else diff --git a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f index a1f5c504..2ce9fd07 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f @@ -33,8 +33,11 @@ subroutine get_grad1_u12_withsq_r1_seq(ipoint, n_grid2, resx, resy, resz, res) r1(2) = final_grid_points(2,ipoint) r1(3) = final_grid_points(3,ipoint) - if( (j2e_type .eq. "Mu") .or. & - (j2e_type .eq. "Mur") .or. & + if( (j2e_type .eq. "Mu") .or. & + (j2e_type .eq. "Mur") .or. & + (j2e_type .eq. "Mugauss") .or. & + (j2e_type .eq. "Murgauss") .or. & + (j2e_type .eq. "Bump") .or. & (j2e_type .eq. "Boys") ) then if(env_type .eq. "None") then @@ -206,7 +209,43 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) gradz(jpoint) = tmp * dz enddo - elseif(j2e_type .eq. "Mur") then + else if(j2e_type .eq. "Mugauss") then + + ! d/dx1 j(mu,r12) = 0.5 * [(1 - erf(mu * r12)) / r12 - mu*c*r12*exp(-(mu*alpha*r12)^2] * (x1 - x2) + + do jpoint = 1, n_points_extra_final_grid ! r2 + + r2(1) = final_grid_points_extra(1,jpoint) + r2(2) = final_grid_points_extra(2,jpoint) + r2(3) = final_grid_points_extra(3,jpoint) + + dx = r1(1) - r2(1) + dy = r1(2) - r2(2) + dz = r1(3) - r2(3) + + r12 = dsqrt(dx * dx + dy * dy + dz * dz) + if(r12 .lt. 1d-10) then + gradx(jpoint) = 0.d0 + grady(jpoint) = 0.d0 + gradz(jpoint) = 0.d0 + cycle + endif + + double precision :: r12_tmp + r12_tmp = mu_erf * r12 + ! gradient of j(mu,r12) + tmp = 0.5d0 * (1.d0 - derf(r12_tmp)) / r12 + ! gradient of gaussian additional term + r12_tmp *= alpha_mu_gauss + r12_tmp *= r12_tmp + tmp += -0.5d0 * mu_erf * c_mu_gauss * r12 * dexp(-r12_tmp)/r12 + + gradx(jpoint) = tmp * dx + grady(jpoint) = tmp * dy + gradz(jpoint) = tmp * dz + enddo + + elseif(j2e_type .eq. "Mur".or.j2e_type .eq. "Murgauss") then ! d/dx1 j(mu(r1,r2),r12) = exp(-(mu(r1,r2)*r12)**2) /(2 *sqrt(pi) * mu(r1,r2)**2 ) d/dx1 mu(r1,r2) ! + 0.5 * (1 - erf(mu(r1,r2) *r12))/r12 * (x1 - x2) @@ -221,30 +260,41 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) gradx(jpoint) = grad_jast(1) grady(jpoint) = grad_jast(2) gradz(jpoint) = grad_jast(3) -! dx = r1(1) - r2(1) -! dy = r1(2) - r2(2) -! dz = r1(3) - r2(3) -! r12 = dsqrt(dx * dx + dy * dy + dz * dz) -! -! call mu_r_val_and_grad(r1, r2, mu_val, mu_der) -! mu_tmp = mu_val * r12 -! tmp = inv_sq_pi_2 * dexp(-mu_tmp*mu_tmp) / (mu_val * mu_val) -! gradx(jpoint) = tmp * mu_der(1) -! grady(jpoint) = tmp * mu_der(2) -! gradz(jpoint) = tmp * mu_der(3) -! -! if(r12 .lt. 1d-10) then -! gradx(jpoint) = 0.d0 -! grady(jpoint) = 0.d0 -! gradz(jpoint) = 0.d0 -! cycle -! endif -! -! tmp = 0.5d0 * (1.d0 - derf(mu_tmp)) / r12 -! -! gradx(jpoint) = gradx(jpoint) + tmp * dx -! grady(jpoint) = grady(jpoint) + tmp * dy -! gradz(jpoint) = gradz(jpoint) + tmp * dz + enddo + elseif(j2e_type .eq. "Bump") then + + ! d/dx1 jbump(r1,r2) + + do jpoint = 1, n_points_extra_final_grid ! r2 + + r2(1) = final_grid_points_extra(1,jpoint) + r2(2) = final_grid_points_extra(2,jpoint) + r2(3) = final_grid_points_extra(3,jpoint) + call get_grad_j_bump_mu_of_r(r1,r2,grad_jast) + + dx = r1(1) - r2(1) + dy = r1(2) - r2(2) + dz = r1(3) - r2(3) + + r12 = dsqrt(dx * dx + dy * dy + dz * dz) + if(r12 .lt. 1d-10) then + gradx(jpoint) = 0.d0 + grady(jpoint) = 0.d0 + gradz(jpoint) = 0.d0 + cycle + endif + + tmp = 0.5d0 * (1.d0 - derf(mu_erf * r12)) / r12 + + gradx(jpoint) = 0.5d0 * tmp * dx + grady(jpoint) = 0.5d0 * tmp * dy + gradz(jpoint) = 0.5d0 * tmp * dz + gradx(jpoint) += 0.5d0 * grad_jast(1) + grady(jpoint) += 0.5d0 * grad_jast(2) + gradz(jpoint) += 0.5d0 * grad_jast(3) +! gradx(jpoint) = grad_jast(1) +! grady(jpoint) = grad_jast(2) +! gradz(jpoint) = grad_jast(3) enddo elseif(j2e_type .eq. "Boys") then @@ -673,8 +723,11 @@ subroutine get_grad1_u12_2e_r1_seq(ipoint, n_grid2, resx, resy, resz) r1(2) = final_grid_points(2,ipoint) r1(3) = final_grid_points(3,ipoint) - if( (j2e_type .eq. "Mu") .or. & - (j2e_type .eq. "Mur") .or. & + if( (j2e_type .eq. "Mu") .or. & + (j2e_type .eq. "Mugauss") .or. & + (j2e_type .eq. "Mur") .or. & + (j2e_type .eq. "Murgauss") .or. & + (j2e_type .eq. "Bump") .or. & (j2e_type .eq. "Boys") ) then if(env_type .eq. "None") then @@ -791,8 +844,11 @@ subroutine get_u12_2e_r1_seq(ipoint, n_grid2, res) r1(2) = final_grid_points(2,ipoint) r1(3) = final_grid_points(3,ipoint) - if( (j2e_type .eq. "Mu") .or. & - (j2e_type .eq. "Mur") .or. & + if( (j2e_type .eq. "Mu") .or. & + (j2e_type .eq. "Mur") .or. & + (j2e_type .eq. "Mugauss") .or. & + (j2e_type .eq. "Murgauss") .or. & + (j2e_type .eq. "Mugauss") .or. & (j2e_type .eq. "Boys") ) then if(env_type .eq. "None") then diff --git a/plugins/local/non_h_ints_mu/plot_j_gauss.irp.f b/plugins/local/non_h_ints_mu/plot_j_gauss.irp.f new file mode 100644 index 00000000..a4030d8c --- /dev/null +++ b/plugins/local/non_h_ints_mu/plot_j_gauss.irp.f @@ -0,0 +1,59 @@ +program plot_j_gauss + implicit none + double precision :: xmin, xmax, x, dx + double precision :: mu_min, mu_max, mu, d_mu + double precision :: pot_j_gauss,j_mu_simple,j_gauss_simple,pot_j_mu + double precision, allocatable :: mu_tab(:),j_mu(:),j_mu_gauss(:) + double precision, allocatable :: w_mu(:), w_mu_gauss(:) + + character*(128) :: output + integer :: getUnitAndOpen + integer :: i_unit_output_wee_gauss,i_unit_output_wee_mu + integer :: i_unit_output_j_gauss,i_unit_output_j_mu + output=trim(ezfio_filename)//'.w_ee_mu_gauss' + i_unit_output_wee_gauss = getUnitAndOpen(output,'w') + output=trim(ezfio_filename)//'.w_ee_mu' + i_unit_output_wee_mu = getUnitAndOpen(output,'w') + output=trim(ezfio_filename)//'.j_mu_gauss' + i_unit_output_j_gauss = getUnitAndOpen(output,'w') + output=trim(ezfio_filename)//'.j_mu' + i_unit_output_j_mu = getUnitAndOpen(output,'w') + + integer :: npt, i, j, n_mu + n_mu = 3 + allocate(mu_tab(n_mu),j_mu(n_mu),j_mu_gauss(n_mu),w_mu(n_mu), w_mu_gauss(n_mu)) + mu_min = 0.5d0 + mu_max = 2.d0 + d_mu = (mu_max - mu_min)/dble(n_mu) + mu = mu_min + do i = 1, n_mu + mu_tab(i) = mu + print*,'mu = ',mu + mu += d_mu + enddo + mu_tab(1) = 0.9d0 + mu_tab(2) = 0.95d0 + mu_tab(3) = 1.d0 + + xmin = 0.01d0 + xmax = 10.d0 + npt = 1000 + dx = (xmax - xmin)/dble(npt) + x = xmin + do i = 1, npt + do j = 1, n_mu + mu = mu_tab(j) + w_mu_gauss(j) = pot_j_gauss(x,mu) + w_mu(j) = pot_j_mu(x,mu) + j_mu(j) = j_mu_simple(x,mu) + j_mu_gauss(j) = j_gauss_simple(x,mu) + j_mu(j) + enddo + write(i_unit_output_wee_gauss,'(100(F16.10,X))')x,w_mu_gauss(:) + write(i_unit_output_wee_mu,'(100(F16.10,X))')x,w_mu(:) + write(i_unit_output_j_gauss,'(100(F16.10,X))')x,j_mu_gauss(:) + write(i_unit_output_j_mu,'(100(F16.10,X))')x,j_mu(:) + x += dx + enddo + + +end diff --git a/plugins/local/non_h_ints_mu/plot_mu_of_r.irp.f b/plugins/local/non_h_ints_mu/plot_mu_of_r.irp.f index 3a5984bd..4a3ec0d5 100644 --- a/plugins/local/non_h_ints_mu/plot_mu_of_r.irp.f +++ b/plugins/local/non_h_ints_mu/plot_mu_of_r.irp.f @@ -16,15 +16,16 @@ subroutine routine_print integer :: ipoint,nx,i double precision :: xmax,xmin,r(3),dx,sigma double precision :: mu_val, mu_der(3),dm_a,dm_b,grad,grad_dm_a(3), grad_dm_b(3) - xmax = 5.D0 - xmin = -5.D0 + xmax = 3.9D0 + xmin = -3.9D0 nx = 10000 dx = (xmax - xmin)/dble(nx) r = 0.d0 r(1) = xmin do ipoint = 1, nx - call mu_r_val_and_grad(r, r, mu_val, mu_der) - call density_and_grad_alpha_beta(r,dm_a,dm_b, grad_dm_a, grad_dm_b) +! call mu_r_val_and_grad(r, r, mu_val, mu_der) + call grad_mu_of_r_mean_field(r,mu_val, dm_a, mu_der, grad_dm_a) +! call density_and_grad_alpha_beta(r,dm_a,dm_b, grad_dm_a, grad_dm_b) sigma = 0.d0 do i = 1,3 sigma += grad_dm_a(i)**2 @@ -32,7 +33,8 @@ subroutine routine_print sigma=dsqrt(sigma) grad = mu_der(1)**2 + mu_der(2)**2 + mu_der(3)**2 grad = dsqrt(grad) - write(i_unit_output,'(100(F16.7,X))')r(1),mu_val,dm_a+dm_b,grad,sigma/dm_a + print*,r(1),mu_val + write(i_unit_output,'(100(F16.7,X))')r(1),mu_val,dm_a,grad,sigma/dm_a r(1) += dx enddo end diff --git a/plugins/local/non_h_ints_mu/pot_j_gauss.irp.f b/plugins/local/non_h_ints_mu/pot_j_gauss.irp.f new file mode 100644 index 00000000..f9a0a7bc --- /dev/null +++ b/plugins/local/non_h_ints_mu/pot_j_gauss.irp.f @@ -0,0 +1,146 @@ +double precision function j_simple(x,mu) + implicit none + double precision, intent(in) :: x,mu + double precision :: j_mu_simple,j_gauss_simple + if(j2e_type .eq. "Mu".or.j2e_type .eq. "Mur") then + j_simple = j_mu_simple(x,mu) + else if(j2e_type .eq. "Mugauss".or.j2e_type .eq. "Murgauss") then + j_simple = j_gauss_simple(x,mu) + j_mu_simple(x,mu) + endif +end + + +double precision function j_mu_simple(x,mu) + implicit none + double precision, intent(in):: x,mu + include 'constants.include.F' + BEGIN_DOC +! j_mu(mu,x) = 0.5 x (1 - erf(mu x)) - 1/[2 sqrt(pi)mu] exp(-(x*mu)^2) + END_DOC + j_mu_simple = 0.5d0 * x * (1.D0 - derf(mu*x)) - 0.5d0 * inv_sq_pi/mu * dexp(-x*mu*x*mu) + +end + +double precision function j_gauss_simple(x,mu) + implicit none + double precision, intent(in):: x,mu + include 'constants.include.F' + BEGIN_DOC +! j_mu(mu,x) = c/[4 alpha^2 mu] exp(-(alpha * mu * x)^2) +! with c = 27/(8 sqrt(pi)), alpha=3/2 + END_DOC + double precision :: x_tmp + x_tmp = alpha_mu_gauss * mu * x + j_gauss_simple = 0.25d0 * c_mu_gauss / (alpha_mu_gauss*alpha_mu_gauss*mu) * dexp(-x_tmp*x_tmp) + +end + +double precision function j_mu_deriv(x,mu) + implicit none + BEGIN_DOC +! d/dx j_mu(mu,x) = d/dx 0.5 x (1 - erf(mu x)) - 1/[2 sqrt(pi)mu] exp(-(x*mu)^2) +! = 0.5*(1 - erf(mu x)) + END_DOC + include 'constants.include.F' + double precision, intent(in) :: x,mu + j_mu_deriv = 0.5d0 * (1.d0 - derf(mu*x)) +end + +double precision function j_mu_deriv_2(x,mu) + implicit none + BEGIN_DOC +! d^2/dx^2 j_mu(mu,x) = d^2/dx^2 0.5 x (1 - erf(mu x)) - 1/[2 sqrt(pi)mu] exp(-(x*mu)^2) +! = -mu/sqrt(pi) * exp(-(mu x)^2) + END_DOC + include 'constants.include.F' + double precision, intent(in) :: x,mu + j_mu_deriv_2 = - mu * inv_sq_pi * dexp(-x*mu*x*mu) +end + +double precision function j_gauss_deriv(x,mu) + implicit none + include 'constants.include.F' + double precision, intent(in) :: x,mu + BEGIN_DOC +! d/dx j_gauss(mu,x) = d/dx c/[4 alpha^2 mu] exp(-(alpha * mu * x)^2) +! with c = 27/(8 sqrt(pi)), alpha=3/2 +! = -0.5 * mu * c * x * exp(-(alpha * mu * x)^2) + END_DOC + double precision :: x_tmp + x_tmp = alpha_mu_gauss * mu * x + j_gauss_deriv = -0.5d0 * mu * c_mu_gauss * x * exp(-x_tmp*x_tmp) +end + +double precision function j_gauss_deriv_2(x,mu) + implicit none + include 'constants.include.F' + double precision, intent(in) :: x,mu + BEGIN_DOC +! d/dx j_gauss(mu,x) = d/dx c/[4 alpha^2 mu] exp(-(alpha * mu * x)^2) +! with c = 27/(8 sqrt(pi)), alpha=3/2 +! = 0.5 * mu * c * exp(-(alpha * mu * x)^2) * (2 (alpha*mu*x)^2 - 1) + END_DOC + double precision :: x_tmp + x_tmp = alpha_mu_gauss * mu * x + x_tmp = x_tmp * x_tmp + j_gauss_deriv_2 = 0.5d0 * mu * c_mu_gauss * exp(-x_tmp) * (2.d0*x_tmp - 1.d0) +end + +double precision function j_erf_gauss_deriv(x,mu) + implicit none + double precision, intent(in) :: x,mu + BEGIN_DOC +! d/dx (j_gauss(mu,x)+j_mu(mu,x)) + END_DOC + double precision :: j_gauss_deriv,j_mu_deriv + j_erf_gauss_deriv = j_gauss_deriv(x,mu)+j_mu_deriv(x,mu) +end + +double precision function j_erf_gauss_deriv_2(x,mu) + implicit none + double precision, intent(in) :: x,mu + BEGIN_DOC +! d^2/dx^2 (j_gauss(mu,x)+j_mu(mu,x)) + END_DOC + double precision :: j_gauss_deriv_2,j_mu_deriv_2 + j_erf_gauss_deriv_2 = j_gauss_deriv_2(x,mu)+j_mu_deriv_2(x,mu) +end + + +double precision function pot_j_gauss(x,mu) + implicit none + double precision, intent(in) :: x,mu + BEGIN_DOC + ! effective scalar potential associated with the erf_gauss correlation factor + ! + ! 1/x( 1 - 2 * d/dx j_erf_gauss(x,mu)) - d^2/dx^2 j_erf_gauss(x,mu)) - d/dx d/dx (j_erf_gauss(x,mu))^2 + END_DOC + double precision :: j_erf_gauss_deriv_2,j_erf_gauss_deriv + double precision :: deriv_1, deriv_2 + pot_j_gauss = 0.d0 + if(x.ne.0.d0)then + deriv_1 = j_erf_gauss_deriv(x,mu) + deriv_2 = j_erf_gauss_deriv_2(x,mu) + pot_j_gauss = 1.d0/x * (1.d0 - 2.d0 * deriv_1) - deriv_1 * deriv_1 - deriv_2 + endif + +end + +double precision function pot_j_mu(x,mu) + implicit none + double precision, intent(in) :: x,mu + BEGIN_DOC + ! effective scalar potential associated with the correlation factor + ! + ! 1/x( 1 - 2 * d/dx j_erf(x,mu)) - d^2/dx^2 j_erf(x,mu)) - d/dx d/dx (j_erf(x,mu))^2 + END_DOC + double precision :: j_mu_deriv_2,j_mu_deriv + double precision :: deriv_1, deriv_2 + pot_j_mu = 0.d0 + if(x.ne.0.d0)then + deriv_1 = j_mu_deriv(x,mu) + deriv_2 = j_mu_deriv_2(x,mu) + pot_j_mu= 1.d0/x * (1.d0 - 2.d0 * deriv_1) - deriv_1 * deriv_1 - deriv_2 + endif + +end diff --git a/src/mu_of_r/mu_of_r_mean_field.irp.f b/src/mu_of_r/mu_of_r_mean_field.irp.f index b55e4f6f..295d58c2 100644 --- a/src/mu_of_r/mu_of_r_mean_field.irp.f +++ b/src/mu_of_r/mu_of_r_mean_field.irp.f @@ -57,6 +57,9 @@ end subroutine get_grad_f_mf_ab(r,grad_f_mf_ab, grad_two_bod_dens,f_mf_ab,two_bod_dens, dm_a, dm_b,grad_dm_a, grad_dm_b) implicit none + BEGIN_DOC + ! gradient of mu(r) mean field, together with the gradient of the one- and two-body HF density. + END_DOC double precision, intent(in) :: r(3) double precision, intent(out) :: f_mf_ab, two_bod_dens double precision, intent(out) :: grad_two_bod_dens(3), grad_f_mf_ab(3) diff --git a/src/mu_of_r/test_proj_op.irp.f b/src/mu_of_r/test_proj_op.irp.f index b03d958c..9ddc2f21 100644 --- a/src/mu_of_r/test_proj_op.irp.f +++ b/src/mu_of_r/test_proj_op.irp.f @@ -19,9 +19,9 @@ program projected_operators ! call test_f_ii_ia_aa_valence_ab ! call test ! call test_f_mean_field -! call test_grad_f_mean_field -! call test_grad_mu_mf - call plot_mu_of_r_mf + call test_grad_f_mean_field + call test_grad_mu_mf +! call plot_mu_of_r_mf end diff --git a/src/utils/constants.include.F b/src/utils/constants.include.F index 7b01f888..830b71a1 100644 --- a/src/utils/constants.include.F +++ b/src/utils/constants.include.F @@ -9,6 +9,9 @@ double precision, parameter :: pi_5_2 = 34.9868366552d0 double precision, parameter :: dfour_pi = 4.d0*dacos(-1.d0) double precision, parameter :: dtwo_pi = 2.d0*dacos(-1.d0) double precision, parameter :: inv_sq_pi = 1.d0/dsqrt(dacos(-1.d0)) +double precision, parameter :: c_mu_gauss = 27.d0/(8.d0*dsqrt(dacos(-1.d0))) +double precision, parameter :: c_mu_gauss_tot = 1.5d0*27.d0/(8.d0*dsqrt(dacos(-1.d0)))+3.d0/dsqrt(dacos(-1.d0)) +double precision, parameter :: alpha_mu_gauss = 1.5d0 double precision, parameter :: inv_sq_pi_2 = 0.5d0/dsqrt(dacos(-1.d0)) double precision, parameter :: thresh = 1.d-15 double precision, parameter :: cx_lda = -0.73855876638202234d0 From 974a4977ac1ed7694281f7aa00bc451b23cc9d05 Mon Sep 17 00:00:00 2001 From: eginer Date: Sun, 8 Sep 2024 18:45:15 +0200 Subject: [PATCH 154/159] starting jpsiking --- .../cipsi_tc_bi_ortho/stochastic_cipsi.irp.f | 1 + plugins/local/jastrow/EZFIO.cfg | 7 + plugins/local/non_h_ints_mu/deb_j_psi.irp.f | 131 ++++++++++++++++++ .../non_h_ints_mu/jast_deriv_utils_vect.irp.f | 13 ++ plugins/local/non_h_ints_mu/jastrow_psi.irp.f | 122 ++++++++++++++++ plugins/local/non_h_ints_mu/plot_mo.irp.f | 19 +++ .../non_h_ints_mu/print_jastrow_psi.irp.f | 15 ++ 7 files changed, 308 insertions(+) create mode 100644 plugins/local/non_h_ints_mu/deb_j_psi.irp.f create mode 100644 plugins/local/non_h_ints_mu/jastrow_psi.irp.f create mode 100644 plugins/local/non_h_ints_mu/plot_mo.irp.f create mode 100644 plugins/local/non_h_ints_mu/print_jastrow_psi.irp.f diff --git a/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f b/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f index 6b8f3b42..0c61e38f 100644 --- a/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f +++ b/plugins/local/cipsi_tc_bi_ortho/stochastic_cipsi.irp.f @@ -155,6 +155,7 @@ subroutine run_stochastic_cipsi call pt2_alloc(pt2_data_err, N_states) call ZMQ_pt2(E_tc, pt2_data, pt2_data_err, relative_error,0) ! Stochastic PT2 and selection call diagonalize_CI_tc_bi_ortho(ndet, E_tc,norm) + call print_summary_tc(psi_energy_with_nucl_rep, pt2_data, pt2_data_err, N_det, N_configuration, N_states, psi_s2) call pt2_dealloc(pt2_data) call pt2_dealloc(pt2_data_err) diff --git a/plugins/local/jastrow/EZFIO.cfg b/plugins/local/jastrow/EZFIO.cfg index 1b616f02..9d4cf431 100644 --- a/plugins/local/jastrow/EZFIO.cfg +++ b/plugins/local/jastrow/EZFIO.cfg @@ -1,3 +1,10 @@ +[log_jpsi] +type: logical +doc: If |true|, the Jpsi is taken as log(1+psi_cor) +interface: ezfio,provider,ocaml +default: False + + [mu_of_r_tc] type: character*(32) doc: type of the mu(r): [ Standard | Erfmu | Erfmugauss ] diff --git a/plugins/local/non_h_ints_mu/deb_j_psi.irp.f b/plugins/local/non_h_ints_mu/deb_j_psi.irp.f new file mode 100644 index 00000000..248d2f31 --- /dev/null +++ b/plugins/local/non_h_ints_mu/deb_j_psi.irp.f @@ -0,0 +1,131 @@ +program test_j_mu_of_r + implicit none +! call routine_deb_j_psi + call routine_deb_denom +end + +subroutine routine_deb_j_psi + implicit none + integer :: ipoint,k + double precision :: r2(3), weight, dr, r1(3), r1bis(3) + double precision :: accu_grad(3) + double precision :: jast,grad_jast(3),j_bump,jastrow_psi + double precision :: jast_p,jast_m,num_grad_jast(3) + + dr = 0.00001d0 + r2 = 0.d0 + r2(1) = 0.5d0 + r2(2) = -0.1d0 + r2(3) = 1.0d0 + accu_grad = 0.d0 + do ipoint = 1, n_points_final_grid + r1(1:3) = final_grid_points(1:3,ipoint) + weight = final_weight_at_r_vector(ipoint) + call get_grad_r1_jastrow_psi(r1,r2,grad_jast,jast) +! grad_jast = - grad_jast + double precision :: norm,error + norm = 0.D0 + do k = 1, 3 + r1bis= r1 + r1bis(k) += dr + jast_p = jastrow_psi(r1bis, r2) + + r1bis= r1 + r1bis(k) -= dr + jast_m = jastrow_psi(r1bis, r2) + + num_grad_jast(k) = (jast_p - jast_m)/(2.d0* dr) + norm += num_grad_jast(k)*num_grad_jast(k) + enddo + error = 0.d0 + do k = 1, 3 + error += dabs(grad_jast(k) - num_grad_jast(k)) + enddo + error *= 0.33333333d0 + norm = dsqrt(norm) + if(norm.gt.1.d-05)then + if(dabs(error/norm).gt.dr)then + print*,'/////' + print*,error,norm + print*,grad_jast + print*,num_grad_jast + endif + endif + do k = 1,3 + accu_grad(k) += weight * dabs(grad_jast(k) - num_grad_jast(k)) + enddo + enddo + print*,'accu_grad = ' + print*, accu_grad + +end + + +subroutine routine_deb_denom + implicit none + integer :: ipoint,k,i,j + double precision :: r2(3), weight, dr, r1(3), r1bis(3) + double precision :: accu_grad(3) + double precision :: jast,grad_jast(3),j_bump,jastrow_psi,grad_jast_bis(3) + double precision :: jast_p,jast_m,num_grad_jast(3) + + dr = 0.00001d0 + r2 = 0.d0 + r2(1) = 0.5d0 + r2(2) = -0.1d0 + r2(3) = 1.0d0 + double precision, allocatable :: mos_array_r1(:), mos_array_r2(:) + double precision, allocatable :: mos_grad_array_r1(:,:),mos_grad_array_r2(:,:) + allocate(mos_array_r1(mo_num), mos_array_r2(mo_num)) + allocate(mos_grad_array_r1(3,mo_num), mos_grad_array_r2(3,mo_num)) + do i = 1, 1 + do j = 1, 1 + accu_grad = 0.d0 + call give_all_mos_and_grad_at_r(r2,mos_array_r2,mos_grad_array_r2) + do ipoint = 1, n_points_final_grid + r1(1:3) = final_grid_points(1:3,ipoint) + weight = final_weight_at_r_vector(ipoint) + call give_all_mos_and_grad_at_r(r1,mos_array_r1,mos_grad_array_r1) + call denom_jpsi(i,j,mos_array_r1,mos_grad_array_r1,mos_array_r2,jast, grad_jast) + double precision :: norm,error + norm = 0.D0 + do k = 1, 3 + r1bis= r1 + r1bis(k) += dr + call give_all_mos_and_grad_at_r(r1bis,mos_array_r1,mos_grad_array_r1) + call denom_jpsi(i,j,mos_array_r1,mos_grad_array_r1,mos_array_r2,jast_p, grad_jast_bis) + + r1bis= r1 + r1bis(k) -= dr + call give_all_mos_and_grad_at_r(r1bis,mos_array_r1,mos_grad_array_r1) + call denom_jpsi(i,j,mos_array_r1,mos_grad_array_r1,mos_array_r2,jast_m, grad_jast_bis) + + num_grad_jast(k) = (jast_p - jast_m)/(2.d0* dr) + norm += num_grad_jast(k)*num_grad_jast(k) + enddo + error = 0.d0 + do k = 1, 3 + error += dabs(grad_jast(k) - num_grad_jast(k)) + enddo + error *= 0.33333333d0 + norm = dsqrt(norm) + if(norm.gt.1.d-05)then + if(dabs(error/norm).gt.dr)then + print*,'/////' + print*,error,norm + print*,grad_jast + print*,num_grad_jast + endif + endif + do k = 1,3 + accu_grad(k) += weight * dabs(grad_jast(k) - num_grad_jast(k)) + enddo + enddo + print*,'i,j = ',i,j + print*,'accu_grad = ' + print*, accu_grad + enddo + enddo + +end + diff --git a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f index 251cb82a..d951db93 100644 --- a/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f +++ b/plugins/local/non_h_ints_mu/jast_deriv_utils_vect.irp.f @@ -35,6 +35,7 @@ subroutine get_grad1_u12_withsq_r1_seq(ipoint, n_grid2, resx, resy, resz, res) if( (j2e_type .eq. "Mu") .or. & (j2e_type .eq. "Mur") .or. & + (j2e_type .eq. "Jpsi") .or. & (j2e_type .eq. "Mugauss") .or. & (j2e_type .eq. "Murgauss") .or. & (j2e_type .eq. "Bump") .or. & @@ -417,6 +418,17 @@ subroutine grad1_j12_r1_seq(r1, n_grid2, gradx, grady, gradz) enddo ! i_nucl enddo ! jpoint + elseif(j2e_type .eq. "Jpsi") then + double precision :: grad_j_psi_r1(3),jast_psi + do jpoint = 1, n_points_extra_final_grid ! r2 + r2(1) = final_grid_points_extra(1,jpoint) + r2(2) = final_grid_points_extra(2,jpoint) + r2(3) = final_grid_points_extra(3,jpoint) + call get_grad_r1_jastrow_psi(r1,r2,grad_j_psi_r1,jast_psi) + gradx(jpoint) = grad_j_psi_r1(1) + grady(jpoint) = grad_j_psi_r1(2) + gradz(jpoint) = grad_j_psi_r1(3) + enddo else print *, ' Error in grad1_j12_r1_seq: Unknown j2e_type = ', j2e_type @@ -723,6 +735,7 @@ subroutine get_grad1_u12_2e_r1_seq(ipoint, n_grid2, resx, resy, resz) if( (j2e_type .eq. "Mu") .or. & (j2e_type .eq. "Mugauss") .or. & (j2e_type .eq. "Mur") .or. & + (j2e_type .eq. "Jpsi") .or. & (j2e_type .eq. "Murgauss") .or. & (j2e_type .eq. "Bump") .or. & (j2e_type .eq. "Boys") ) then diff --git a/plugins/local/non_h_ints_mu/jastrow_psi.irp.f b/plugins/local/non_h_ints_mu/jastrow_psi.irp.f new file mode 100644 index 00000000..a3f0b524 --- /dev/null +++ b/plugins/local/non_h_ints_mu/jastrow_psi.irp.f @@ -0,0 +1,122 @@ +BEGIN_PROVIDER [ double precision, c_ij_ab_jastrow, (mo_num, mo_num, elec_alpha_num, elec_beta_num)] + implicit none + integer :: iunit, getUnitAndOpen + c_ij_ab_jastrow = 0.d0 + iunit = getUnitAndOpen(trim(ezfio_work_dir)//'c_ij_ab', 'R') + read(iunit) c_ij_ab_jastrow + close(iunit) + print*,'c_ij_ab_jastrow = ' + integer :: i,j,a,b + do i = 1, elec_beta_num ! r2 + do j = 1, elec_alpha_num ! r1 + do a = elec_beta_num+1, mo_num ! r2 + do b = elec_alpha_num+1, mo_num ! r1 +! print*,b,a,j,i + print*,c_ij_ab_jastrow(b,a,j,i),b,a,j,i + if(dabs(c_ij_ab_jastrow(b,a,j,i)).lt.1.d-12)then + c_ij_ab_jastrow(b,a,j,i) = 0.d0 + endif + enddo + enddo + enddo + enddo +END_PROVIDER + +double precision function jastrow_psi(r1,r2) + implicit none + double precision, intent(in) :: r1(3), r2(3) + integer :: i,j,a,b + double precision, allocatable :: mos_array_r1(:), mos_array_r2(:) + allocate(mos_array_r1(mo_num), mos_array_r2(mo_num)) + call give_all_mos_at_r(r1,mos_array_r1) + call give_all_mos_at_r(r2,mos_array_r2) + double precision :: eps,coef, numerator,denominator + double precision :: phi_i_phi_j + eps = a_boys + jastrow_psi= 0.d0 + do i = 1, elec_beta_num ! r1 + do j = 1, elec_alpha_num ! r2 + phi_i_phi_j = mos_array_r1(i) * mos_array_r2(j) + eps + denominator = 1.d0/phi_i_phi_j + do a = elec_beta_num+1, mo_num ! r1 + do b = elec_alpha_num+1, mo_num ! r2 + coef = c_ij_ab_jastrow(b,a,j,i) + numerator = mos_array_r2(b) * mos_array_r1(a) + jastrow_psi += coef * numerator*denominator + enddo + enddo + enddo + enddo +end + +subroutine get_grad_r1_jastrow_psi(r1,r2,grad_j_psi_r1,jast) + implicit none + double precision, intent(in) :: r1(3), r2(3) + double precision, intent(out):: grad_j_psi_r1(3),jast + integer :: i,j,a,b + double precision, allocatable :: mos_array_r1(:), mos_array_r2(:) + double precision, allocatable :: mos_grad_array_r1(:,:),mos_grad_array_r2(:,:) + allocate(mos_array_r1(mo_num), mos_array_r2(mo_num)) + allocate(mos_grad_array_r1(3,mo_num), mos_grad_array_r2(3,mo_num)) + call give_all_mos_and_grad_at_r(r1,mos_array_r1,mos_grad_array_r1) + call give_all_mos_and_grad_at_r(r2,mos_array_r2,mos_grad_array_r2) + double precision :: eps,coef, numerator(3),denominator + double precision :: phi_i_phi_j + eps = a_boys + grad_j_psi_r1 = 0.d0 + jast = 0.d0 + do i = 1, elec_beta_num ! r1 + do j = 1, elec_alpha_num ! r2 + phi_i_phi_j = mos_array_r1(i) * mos_array_r2(j) + eps + denominator = 1.d0/phi_i_phi_j + denominator *= denominator + do a = elec_beta_num+1, mo_num ! r1 + do b = elec_alpha_num+1, mo_num ! r2 + coef = c_ij_ab_jastrow(b,a,j,i) + jast += phi_i_phi_j * mos_array_r2(b) * mos_array_r1(a) * coef +! print*,b,a,j,i,c_ij_ab_jastrow(b,a,j,i) +! print*,'jast = ',jast + numerator(:) = mos_array_r2(b) * mos_grad_array_r1(:,a) & + * phi_i_phi_j - mos_array_r1(a) * mos_array_r2(b) * mos_array_r2(j) * mos_grad_array_r1(:,i) + grad_j_psi_r1 += coef * numerator*denominator + enddo + enddo + enddo + enddo + if(jast.lt.-1.d0.or.dabs(jast).gt.1.d0)then + print*,'pb ! ' + print*,jast + print*,dsqrt(r1(1)**2+r1(2)**2+r1(3)**2),dsqrt(r2(1)**2+r2(2)**2+r2(3)**2) + print*,r1 +! print*,mos_array_r1(1:2) + print*,r2 +! print*,mos_array_r2(1:2) + stop + endif + if(log_jpsi)then + grad_j_psi_r1 = grad_j_psi_r1/(1.d0 + jast) + endif + +end + + +subroutine denom_jpsi(i,j,mos_array_r1,mos_grad_array_r1,mos_array_r2,denom, grad_denom) + implicit none + integer, intent(in) :: i,j + double precision, intent(in) :: mos_array_r1(mo_num),mos_grad_array_r1(3,mo_num),mos_array_r2(mo_num) + double precision, intent(out) :: denom, grad_denom(3) + double precision :: coef,phi_i_phi_j,inv_phi_i_phi_j,inv_phi_i_phi_j_2 + denom = 0.d0 + grad_denom = 0.d0 + phi_i_phi_j = mos_array_r1(i) * mos_array_r2(j) + if(phi_i_phi_j /= 0.d0)then + inv_phi_i_phi_j = 1.d0/phi_i_phi_j + inv_phi_i_phi_j_2 = 1.d0/(phi_i_phi_j * phi_i_phi_j) + else + inv_phi_i_phi_j = huge(1.0) + inv_phi_i_phi_j_2 = huge(1.d0) + endif + denom += phi_i_phi_j + a_boys * inv_phi_i_phi_j + grad_denom(:) += (1.d0 - a_boys*inv_phi_i_phi_j_2) * mos_array_r2(j) * mos_grad_array_r1(:,i) + +end diff --git a/plugins/local/non_h_ints_mu/plot_mo.irp.f b/plugins/local/non_h_ints_mu/plot_mo.irp.f new file mode 100644 index 00000000..e1ecc783 --- /dev/null +++ b/plugins/local/non_h_ints_mu/plot_mo.irp.f @@ -0,0 +1,19 @@ +program plot_mo + implicit none + integer :: i,npt + double precision :: xmin,xmax,dx,r(3) + double precision,allocatable :: mos_array(:) + allocate(mos_array(mo_num)) + npt = 10000 + xmin =0.d0 + xmax =10.d0 + dx=(xmax-xmin)/dble(npt) + r=0.d0 + r(1) = xmin + do i = 1, npt + call give_all_mos_at_r(r,mos_array) + write(33,'(100(F16.10,X))')r(1),mos_array(1),mos_array(2),mos_array(3) + r(1) += dx + enddo + +end diff --git a/plugins/local/non_h_ints_mu/print_jastrow_psi.irp.f b/plugins/local/non_h_ints_mu/print_jastrow_psi.irp.f new file mode 100644 index 00000000..740743cb --- /dev/null +++ b/plugins/local/non_h_ints_mu/print_jastrow_psi.irp.f @@ -0,0 +1,15 @@ +program print_j_psi + implicit none + integer :: i,j,a,b + do i = 1, elec_beta_num ! r2 + do j = 1, elec_alpha_num ! r1 + do a = elec_beta_num+1, mo_num ! r2 + do b = elec_alpha_num+1, mo_num ! r1 + print*,b,a,j,i + print*,c_ij_ab_jastrow(b,a,j,i) + enddo + enddo + enddo + enddo + +end From 869efdd0772cb1bf7b94463023cd5e2974a04ed2 Mon Sep 17 00:00:00 2001 From: eginer Date: Sun, 8 Sep 2024 19:14:15 +0200 Subject: [PATCH 155/159] new jpsiking is working on He --- plugins/local/non_h_ints_mu/deb_j_psi.irp.f | 16 ++++---- plugins/local/non_h_ints_mu/jastrow_psi.irp.f | 40 ++++++++++--------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/plugins/local/non_h_ints_mu/deb_j_psi.irp.f b/plugins/local/non_h_ints_mu/deb_j_psi.irp.f index 248d2f31..1b034684 100644 --- a/plugins/local/non_h_ints_mu/deb_j_psi.irp.f +++ b/plugins/local/non_h_ints_mu/deb_j_psi.irp.f @@ -1,7 +1,7 @@ program test_j_mu_of_r implicit none -! call routine_deb_j_psi - call routine_deb_denom + call routine_deb_j_psi +! call routine_deb_denom end subroutine routine_deb_j_psi @@ -9,7 +9,7 @@ subroutine routine_deb_j_psi integer :: ipoint,k double precision :: r2(3), weight, dr, r1(3), r1bis(3) double precision :: accu_grad(3) - double precision :: jast,grad_jast(3),j_bump,jastrow_psi + double precision :: jast,grad_jast(3),j_bump,jastrow_psi,grad_jast_bis(3) double precision :: jast_p,jast_m,num_grad_jast(3) dr = 0.00001d0 @@ -28,11 +28,11 @@ subroutine routine_deb_j_psi do k = 1, 3 r1bis= r1 r1bis(k) += dr - jast_p = jastrow_psi(r1bis, r2) + call get_grad_r1_jastrow_psi(r1bis,r2,grad_jast_bis,jast_p) r1bis= r1 r1bis(k) -= dr - jast_m = jastrow_psi(r1bis, r2) + call get_grad_r1_jastrow_psi(r1bis,r2,grad_jast_bis,jast_m) num_grad_jast(k) = (jast_p - jast_m)/(2.d0* dr) norm += num_grad_jast(k)*num_grad_jast(k) @@ -86,19 +86,19 @@ subroutine routine_deb_denom r1(1:3) = final_grid_points(1:3,ipoint) weight = final_weight_at_r_vector(ipoint) call give_all_mos_and_grad_at_r(r1,mos_array_r1,mos_grad_array_r1) - call denom_jpsi(i,j,mos_array_r1,mos_grad_array_r1,mos_array_r2,jast, grad_jast) + call denom_jpsi(i,j,a_boys, mos_array_r1,mos_grad_array_r1,mos_array_r2,jast, grad_jast) double precision :: norm,error norm = 0.D0 do k = 1, 3 r1bis= r1 r1bis(k) += dr call give_all_mos_and_grad_at_r(r1bis,mos_array_r1,mos_grad_array_r1) - call denom_jpsi(i,j,mos_array_r1,mos_grad_array_r1,mos_array_r2,jast_p, grad_jast_bis) + call denom_jpsi(i,j,a_boys, mos_array_r1,mos_grad_array_r1,mos_array_r2,jast_p, grad_jast_bis) r1bis= r1 r1bis(k) -= dr call give_all_mos_and_grad_at_r(r1bis,mos_array_r1,mos_grad_array_r1) - call denom_jpsi(i,j,mos_array_r1,mos_grad_array_r1,mos_array_r2,jast_m, grad_jast_bis) + call denom_jpsi(i,j,a_boys, mos_array_r1,mos_grad_array_r1,mos_array_r2,jast_m, grad_jast_bis) num_grad_jast(k) = (jast_p - jast_m)/(2.d0* dr) norm += num_grad_jast(k)*num_grad_jast(k) diff --git a/plugins/local/non_h_ints_mu/jastrow_psi.irp.f b/plugins/local/non_h_ints_mu/jastrow_psi.irp.f index a3f0b524..4c88e793 100644 --- a/plugins/local/non_h_ints_mu/jastrow_psi.irp.f +++ b/plugins/local/non_h_ints_mu/jastrow_psi.irp.f @@ -56,29 +56,25 @@ subroutine get_grad_r1_jastrow_psi(r1,r2,grad_j_psi_r1,jast) integer :: i,j,a,b double precision, allocatable :: mos_array_r1(:), mos_array_r2(:) double precision, allocatable :: mos_grad_array_r1(:,:),mos_grad_array_r2(:,:) + double precision :: num_j, denom_j, num_j_grad(3), denom_j_grad(3),delta,coef + double precision :: inv_denom_j allocate(mos_array_r1(mo_num), mos_array_r2(mo_num)) allocate(mos_grad_array_r1(3,mo_num), mos_grad_array_r2(3,mo_num)) + delta = a_boys call give_all_mos_and_grad_at_r(r1,mos_array_r1,mos_grad_array_r1) call give_all_mos_and_grad_at_r(r2,mos_array_r2,mos_grad_array_r2) - double precision :: eps,coef, numerator(3),denominator - double precision :: phi_i_phi_j - eps = a_boys grad_j_psi_r1 = 0.d0 jast = 0.d0 do i = 1, elec_beta_num ! r1 do j = 1, elec_alpha_num ! r2 - phi_i_phi_j = mos_array_r1(i) * mos_array_r2(j) + eps - denominator = 1.d0/phi_i_phi_j - denominator *= denominator + call denom_jpsi(i,j,delta,mos_array_r1,mos_grad_array_r1,mos_array_r2,denom_j, denom_j_grad) + inv_denom_j = 1.d0/denom_j do a = elec_beta_num+1, mo_num ! r1 do b = elec_alpha_num+1, mo_num ! r2 + call numerator_psi(a,b,mos_array_r1,mos_grad_array_r1,mos_array_r2,num_j, num_j_grad) coef = c_ij_ab_jastrow(b,a,j,i) - jast += phi_i_phi_j * mos_array_r2(b) * mos_array_r1(a) * coef -! print*,b,a,j,i,c_ij_ab_jastrow(b,a,j,i) -! print*,'jast = ',jast - numerator(:) = mos_array_r2(b) * mos_grad_array_r1(:,a) & - * phi_i_phi_j - mos_array_r1(a) * mos_array_r2(b) * mos_array_r2(j) * mos_grad_array_r1(:,i) - grad_j_psi_r1 += coef * numerator*denominator + jast += coef * num_j * inv_denom_j + grad_j_psi_r1 += coef * (num_j_grad * denom_j - num_j * denom_j_grad) * inv_denom_j * inv_denom_j enddo enddo enddo @@ -100,14 +96,12 @@ subroutine get_grad_r1_jastrow_psi(r1,r2,grad_j_psi_r1,jast) end -subroutine denom_jpsi(i,j,mos_array_r1,mos_grad_array_r1,mos_array_r2,denom, grad_denom) +subroutine denom_jpsi(i,j,delta,mos_array_r1,mos_grad_array_r1,mos_array_r2,denom, grad_denom) implicit none integer, intent(in) :: i,j - double precision, intent(in) :: mos_array_r1(mo_num),mos_grad_array_r1(3,mo_num),mos_array_r2(mo_num) + double precision, intent(in) :: mos_array_r1(mo_num),mos_grad_array_r1(3,mo_num),mos_array_r2(mo_num),delta double precision, intent(out) :: denom, grad_denom(3) double precision :: coef,phi_i_phi_j,inv_phi_i_phi_j,inv_phi_i_phi_j_2 - denom = 0.d0 - grad_denom = 0.d0 phi_i_phi_j = mos_array_r1(i) * mos_array_r2(j) if(phi_i_phi_j /= 0.d0)then inv_phi_i_phi_j = 1.d0/phi_i_phi_j @@ -116,7 +110,15 @@ subroutine denom_jpsi(i,j,mos_array_r1,mos_grad_array_r1,mos_array_r2,denom, gra inv_phi_i_phi_j = huge(1.0) inv_phi_i_phi_j_2 = huge(1.d0) endif - denom += phi_i_phi_j + a_boys * inv_phi_i_phi_j - grad_denom(:) += (1.d0 - a_boys*inv_phi_i_phi_j_2) * mos_array_r2(j) * mos_grad_array_r1(:,i) - + denom = phi_i_phi_j + delta * inv_phi_i_phi_j + grad_denom(:) = (1.d0 - delta*inv_phi_i_phi_j_2) * mos_array_r2(j) * mos_grad_array_r1(:,i) +end + +subroutine numerator_psi(a,b,mos_array_r1,mos_grad_array_r1,mos_array_r2,num, grad_num) + implicit none + integer, intent(in) :: a,b + double precision, intent(in) :: mos_array_r1(mo_num),mos_grad_array_r1(3,mo_num),mos_array_r2(mo_num) + double precision, intent(out) :: num, grad_num(3) + num = mos_array_r1(a) * mos_array_r2(b) + grad_num(:) = mos_array_r2(b) * mos_grad_array_r1(:,a) end From 316d81e8cfcc74cb6e0c15cdd4665e854a4a53a4 Mon Sep 17 00:00:00 2001 From: eginer Date: Mon, 9 Sep 2024 11:49:19 +0200 Subject: [PATCH 156/159] fixed termination bug in cholesky for small basis --- src/ao_two_e_ints/cholesky.irp.f | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ao_two_e_ints/cholesky.irp.f b/src/ao_two_e_ints/cholesky.irp.f index ccaa7239..319e3c6e 100644 --- a/src/ao_two_e_ints/cholesky.irp.f +++ b/src/ao_two_e_ints/cholesky.irp.f @@ -73,7 +73,7 @@ END_PROVIDER integer, external :: getUnitAndOpen integer :: iunit, ierr - ndim8 = ao_num*ao_num*1_8 + ndim8 = ao_num*ao_num*1_8+1 double precision :: wall0,wall1 type(c_ptr) :: c_pointer(2) @@ -143,19 +143,21 @@ END_PROVIDER if (do_direct_integrals) then !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(dynamic,21) - do i8=ndim8,1,-1 + do i8=ndim8-1,1,-1 D(i8) = ao_two_e_integral(addr1(i8), addr2(i8), & addr1(i8), addr2(i8)) enddo !$OMP END PARALLEL DO else !$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i8) SCHEDULE(dynamic,21) - do i8=ndim8,1,-1 + do i8=ndim8-1,1,-1 D(i8) = get_ao_two_e_integral(addr1(i8), addr1(i8), & addr2(i8), addr2(i8), ao_integrals_map) enddo !$OMP END PARALLEL DO endif + ! Just to guarentee termination + D(ndim8) = 0.d0 D_sorted(:) = -D(:) call dsort_noidx_big(D_sorted,ndim8) @@ -203,6 +205,7 @@ END_PROVIDER do while ( (Dmax > tau).and.(np > 0) ) ! a. i = i+1 + block_size = max(N,24) @@ -314,9 +317,10 @@ END_PROVIDER ! g. iblock = 0 + do j=1,nq - if ( (Qmax <= Dmin).or.(N+j*1_8 > ndim8) ) exit + if ( (Qmax < Dmin).or.(N+j*1_8 > ndim8) ) exit ! i. rank = N+j From d07fb685cd38652f0d3011d62ce5814c081a3934 Mon Sep 17 00:00:00 2001 From: eginer Date: Mon, 9 Sep 2024 12:00:24 +0200 Subject: [PATCH 157/159] added mu_of_r.irp.f --- src/determinants/generate_cas_space.irp.f | 4 +-- src/mu_of_r/mu_of_r.irp.f | 43 +++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/mu_of_r/mu_of_r.irp.f diff --git a/src/determinants/generate_cas_space.irp.f b/src/determinants/generate_cas_space.irp.f index 47a2ca30..05201c74 100644 --- a/src/determinants/generate_cas_space.irp.f +++ b/src/determinants/generate_cas_space.irp.f @@ -33,7 +33,7 @@ subroutine generate_cas_space print *, 'CAS(', n_alpha_act+n_beta_act, ', ', n_act_orb, ')' print *, '' - n_det_alpha_unique = binom_int(n_act_orb, n_alpha_act) + n_det_alpha_unique = int(binom_int(n_act_orb, n_alpha_act),4) TOUCH n_det_alpha_unique n = n_alpha_act @@ -56,7 +56,7 @@ subroutine generate_cas_space u = ior(t1,t2) enddo - n_det_beta_unique = binom_int(n_act_orb, n_beta_act) + n_det_beta_unique = int(binom_int(n_act_orb, n_beta_act),4) TOUCH n_det_beta_unique n = n_beta_act diff --git a/src/mu_of_r/mu_of_r.irp.f b/src/mu_of_r/mu_of_r.irp.f new file mode 100644 index 00000000..e9cf6c4a --- /dev/null +++ b/src/mu_of_r/mu_of_r.irp.f @@ -0,0 +1,43 @@ + +subroutine grad_mu_of_r_mean_field(r,mu_mf, dm, grad_mu_mf, grad_dm) + implicit none + BEGIN_DOC + ! returns the value and gradients of the mu(r) mean field, together with the HF density and its gradients. + END_DOC + include 'constants.include.F' + double precision, intent(in) :: r(3) + double precision, intent(out):: grad_mu_mf(3), grad_dm(3) + double precision, intent(out):: mu_mf, dm + double precision :: grad_f_mf_ab(3), grad_two_bod_dens(3),grad_dm_a(3), grad_dm_b(3) + double precision :: f_mf_ab,two_bod_dens, dm_a, dm_b + + double precision :: dist + call get_grad_f_mf_ab(r,grad_f_mf_ab, grad_two_bod_dens,f_mf_ab,two_bod_dens, dm_a, dm_b,grad_dm_a, grad_dm_b) + + dm = dm_a + dm_b + grad_dm(1:3) = grad_dm_a(1:3) + grad_dm_b(1:3) + + if(dabs(two_bod_dens).lt.1.d-10)then + mu_mf = 1.d+10 + grad_mu_mf = 0.d0 + else + if(mu_of_r_tc=="Erfmu")then + mu_mf = 0.3333333333d0 * sqpi * (f_mf_ab/two_bod_dens + 0.25d0) + grad_mu_mf(1:3) = 0.3333333333d0 * sqpi * (grad_f_mf_ab(1:3) * two_bod_dens - f_mf_ab * grad_two_bod_dens(1:3))& + /(two_bod_dens*two_bod_dens) + else if(mu_of_r_tc=="Standard")then + mu_mf = 0.5d0 * sqpi * f_mf_ab/two_bod_dens + grad_mu_mf(1:3) = 0.5d0 * sqpi * (grad_f_mf_ab(1:3) * two_bod_dens - f_mf_ab * grad_two_bod_dens(1:3))& + /(two_bod_dens*two_bod_dens) + else if(mu_of_r_tc=="Erfmugauss")then + mu_mf = (f_mf_ab/two_bod_dens + 0.25d0)/c_mu_gauss_tot + grad_mu_mf(1:3) = 1.d0/c_mu_gauss_tot* (grad_f_mf_ab(1:3) * two_bod_dens - f_mf_ab * grad_two_bod_dens(1:3))& + /(two_bod_dens*two_bod_dens) + else + print*,'Wrong value for mu_of_r_tc !' + stop + endif + endif + +end + From 86cc1690e35be59a7416a083690b44f69e36fe5e Mon Sep 17 00:00:00 2001 From: eginer Date: Mon, 9 Sep 2024 12:00:24 +0200 Subject: [PATCH 158/159] fixed mu_of_r NEED --- src/determinants/generate_cas_space.irp.f | 4 +-- src/mu_of_r/NEED | 1 + src/mu_of_r/mu_of_r.irp.f | 43 +++++++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 src/mu_of_r/mu_of_r.irp.f diff --git a/src/determinants/generate_cas_space.irp.f b/src/determinants/generate_cas_space.irp.f index 47a2ca30..05201c74 100644 --- a/src/determinants/generate_cas_space.irp.f +++ b/src/determinants/generate_cas_space.irp.f @@ -33,7 +33,7 @@ subroutine generate_cas_space print *, 'CAS(', n_alpha_act+n_beta_act, ', ', n_act_orb, ')' print *, '' - n_det_alpha_unique = binom_int(n_act_orb, n_alpha_act) + n_det_alpha_unique = int(binom_int(n_act_orb, n_alpha_act),4) TOUCH n_det_alpha_unique n = n_alpha_act @@ -56,7 +56,7 @@ subroutine generate_cas_space u = ior(t1,t2) enddo - n_det_beta_unique = binom_int(n_act_orb, n_beta_act) + n_det_beta_unique = int(binom_int(n_act_orb, n_beta_act),4) TOUCH n_det_beta_unique n = n_beta_act diff --git a/src/mu_of_r/NEED b/src/mu_of_r/NEED index 22bb3ebe..50be9f2b 100644 --- a/src/mu_of_r/NEED +++ b/src/mu_of_r/NEED @@ -1 +1,2 @@ cas_based_on_top +jastrow diff --git a/src/mu_of_r/mu_of_r.irp.f b/src/mu_of_r/mu_of_r.irp.f new file mode 100644 index 00000000..e9cf6c4a --- /dev/null +++ b/src/mu_of_r/mu_of_r.irp.f @@ -0,0 +1,43 @@ + +subroutine grad_mu_of_r_mean_field(r,mu_mf, dm, grad_mu_mf, grad_dm) + implicit none + BEGIN_DOC + ! returns the value and gradients of the mu(r) mean field, together with the HF density and its gradients. + END_DOC + include 'constants.include.F' + double precision, intent(in) :: r(3) + double precision, intent(out):: grad_mu_mf(3), grad_dm(3) + double precision, intent(out):: mu_mf, dm + double precision :: grad_f_mf_ab(3), grad_two_bod_dens(3),grad_dm_a(3), grad_dm_b(3) + double precision :: f_mf_ab,two_bod_dens, dm_a, dm_b + + double precision :: dist + call get_grad_f_mf_ab(r,grad_f_mf_ab, grad_two_bod_dens,f_mf_ab,two_bod_dens, dm_a, dm_b,grad_dm_a, grad_dm_b) + + dm = dm_a + dm_b + grad_dm(1:3) = grad_dm_a(1:3) + grad_dm_b(1:3) + + if(dabs(two_bod_dens).lt.1.d-10)then + mu_mf = 1.d+10 + grad_mu_mf = 0.d0 + else + if(mu_of_r_tc=="Erfmu")then + mu_mf = 0.3333333333d0 * sqpi * (f_mf_ab/two_bod_dens + 0.25d0) + grad_mu_mf(1:3) = 0.3333333333d0 * sqpi * (grad_f_mf_ab(1:3) * two_bod_dens - f_mf_ab * grad_two_bod_dens(1:3))& + /(two_bod_dens*two_bod_dens) + else if(mu_of_r_tc=="Standard")then + mu_mf = 0.5d0 * sqpi * f_mf_ab/two_bod_dens + grad_mu_mf(1:3) = 0.5d0 * sqpi * (grad_f_mf_ab(1:3) * two_bod_dens - f_mf_ab * grad_two_bod_dens(1:3))& + /(two_bod_dens*two_bod_dens) + else if(mu_of_r_tc=="Erfmugauss")then + mu_mf = (f_mf_ab/two_bod_dens + 0.25d0)/c_mu_gauss_tot + grad_mu_mf(1:3) = 1.d0/c_mu_gauss_tot* (grad_f_mf_ab(1:3) * two_bod_dens - f_mf_ab * grad_two_bod_dens(1:3))& + /(two_bod_dens*two_bod_dens) + else + print*,'Wrong value for mu_of_r_tc !' + stop + endif + endif + +end + From 9a284e7fcf7df8753df2d97893a95ffe4979cafa Mon Sep 17 00:00:00 2001 From: eginer Date: Mon, 9 Sep 2024 12:23:18 +0200 Subject: [PATCH 159/159] fixed dependencies in jastrow and mu_of_r --- .../local/non_h_ints_mu}/mu_of_r.irp.f | 0 .../non_h_ints_mu}/mu_of_r_mean_field.irp.f | 0 .../local/non_h_ints_mu/test_mu_of_r_tc.irp.f | 157 +++++++++++++++ src/mu_of_r/NEED | 1 - src/mu_of_r/test_proj_op.irp.f | 181 +----------------- 5 files changed, 163 insertions(+), 176 deletions(-) rename {src/mu_of_r => plugins/local/non_h_ints_mu}/mu_of_r.irp.f (100%) rename {src/mu_of_r => plugins/local/non_h_ints_mu}/mu_of_r_mean_field.irp.f (100%) create mode 100644 plugins/local/non_h_ints_mu/test_mu_of_r_tc.irp.f diff --git a/src/mu_of_r/mu_of_r.irp.f b/plugins/local/non_h_ints_mu/mu_of_r.irp.f similarity index 100% rename from src/mu_of_r/mu_of_r.irp.f rename to plugins/local/non_h_ints_mu/mu_of_r.irp.f diff --git a/src/mu_of_r/mu_of_r_mean_field.irp.f b/plugins/local/non_h_ints_mu/mu_of_r_mean_field.irp.f similarity index 100% rename from src/mu_of_r/mu_of_r_mean_field.irp.f rename to plugins/local/non_h_ints_mu/mu_of_r_mean_field.irp.f diff --git a/plugins/local/non_h_ints_mu/test_mu_of_r_tc.irp.f b/plugins/local/non_h_ints_mu/test_mu_of_r_tc.irp.f new file mode 100644 index 00000000..79e21d1b --- /dev/null +++ b/plugins/local/non_h_ints_mu/test_mu_of_r_tc.irp.f @@ -0,0 +1,157 @@ +program test_mu_of_r_tc + implicit none + BEGIN_DOC +! TODO + END_DOC + ! You specify that you want to avoid any contribution from + ! orbitals coming from core + call test_grad_f_mean_field + call test_grad_mu_mf + call plot_mu_of_r_mf +end + + +subroutine test_grad_f_mean_field + implicit none + integer :: i_point,k + double precision :: weight,r(3) + double precision :: grad_f_mf_ab(3), grad_two_bod_dens(3) + double precision :: grad_dm_a(3), grad_dm_b(3) + double precision :: f_mf_ab,two_bod_dens, dm_a, dm_b + + double precision :: num_grad_f_mf_ab(3), num_grad_two_bod_dens(3) + double precision :: num_grad_dm_a(3), num_grad_dm_b(3) + double precision :: f_mf_ab_p,f_mf_ab_m + double precision :: two_bod_dens_p, two_bod_dens_m + double precision :: dm_a_p, dm_a_m + double precision :: dm_b_p, dm_b_m + double precision :: rbis(3), dr + double precision :: accu_grad_f_mf_ab(3),accu_grad_two_bod_dens(3) + double precision :: accu_grad_dm_a(3),accu_grad_dm_b(3) + double precision :: accu_f_mf_ab, accu_two_bod_dens, accu_dm_a, accu_dm_b + dr = 0.00001d0 + accu_f_mf_ab = 0.d0 + accu_two_bod_dens = 0.d0 + accu_dm_a = 0.d0 + accu_dm_b = 0.d0 + + accu_grad_f_mf_ab = 0.d0 + accu_grad_two_bod_dens = 0.d0 + accu_grad_dm_a = 0.d0 + accu_grad_dm_b = 0.d0 + do i_point = 1, n_points_final_grid + r(1:3) = final_grid_points(1:3,i_point) + weight = final_weight_at_r_vector(i_point) + call get_grad_f_mf_ab(r,grad_f_mf_ab, grad_two_bod_dens,f_mf_ab,two_bod_dens, dm_a, dm_b,grad_dm_a, grad_dm_b) + call get_f_mf_ab(r,f_mf_ab_p,two_bod_dens_p, dm_a_p, dm_b_p) + accu_f_mf_ab += weight * dabs(f_mf_ab - f_mf_ab_p) + accu_two_bod_dens += weight * dabs(two_bod_dens - two_bod_dens_p) + accu_dm_a += weight*dabs(dm_a - dm_a_p) + accu_dm_b += weight*dabs(dm_b - dm_b_p) + do k = 1, 3 + rbis = r + rbis(k) += dr + call get_f_mf_ab(rbis,f_mf_ab_p,two_bod_dens_p, dm_a_p, dm_b_p) + rbis = r + rbis(k) -= dr + call get_f_mf_ab(rbis,f_mf_ab_m,two_bod_dens_m, dm_a_m, dm_b_m) + num_grad_f_mf_ab(k) = (f_mf_ab_p - f_mf_ab_m)/(2.d0*dr) + num_grad_two_bod_dens(k) = (two_bod_dens_p - two_bod_dens_m)/(2.d0*dr) + num_grad_dm_a(k) = (dm_a_p - dm_a_m)/(2.d0*dr) + num_grad_dm_b(k) = (dm_b_p - dm_b_m)/(2.d0*dr) + enddo + do k = 1, 3 + accu_grad_f_mf_ab(k) += weight * dabs(grad_f_mf_ab(k) - num_grad_f_mf_ab(k)) + accu_grad_two_bod_dens(k) += weight * dabs(grad_two_bod_dens(k) - num_grad_two_bod_dens(k)) + accu_grad_dm_a(k) += weight * dabs(grad_dm_a(k) - num_grad_dm_a(k)) + accu_grad_dm_b(k) += weight * dabs(grad_dm_b(k) - num_grad_dm_b(k)) + enddo + enddo + print*,'accu_f_mf_ab = ',accu_f_mf_ab + print*,'accu_two_bod_dens = ',accu_two_bod_dens + print*,'accu_dm_a = ',accu_dm_a + print*,'accu_dm_b = ',accu_dm_b + print*,'accu_grad_f_mf_ab = ' + print*,accu_grad_f_mf_ab + print*,'accu_grad_two_bod_dens = ' + print*,accu_grad_two_bod_dens + print*,'accu_dm_a = ' + print*,accu_grad_dm_a + print*,'accu_dm_b = ' + print*,accu_grad_dm_b + +end + +subroutine test_grad_mu_mf + implicit none + integer :: i_point,k + double precision :: weight,r(3),rbis(3) + double precision :: mu_mf, dm,grad_mu_mf(3), grad_dm(3) + double precision :: mu_mf_p, mu_mf_m, dm_m, dm_p, num_grad_mu_mf(3),dr, num_grad_dm(3) + double precision :: accu_mu, accu_dm, accu_grad_dm(3), accu_grad_mu_mf(3) + dr = 0.00001d0 + accu_grad_mu_mf = 0.d0 + accu_mu = 0.d0 + accu_grad_dm = 0.d0 + accu_dm = 0.d0 + do i_point = 1, n_points_final_grid + r(1:3) = final_grid_points(1:3,i_point) + weight = final_weight_at_r_vector(i_point) + call grad_mu_of_r_mean_field(r,mu_mf, dm, grad_mu_mf, grad_dm) + call mu_of_r_mean_field(r,mu_mf_p, dm_p) + accu_mu += weight*dabs(mu_mf_p - mu_mf) + accu_dm += weight*dabs(dm_p - dm) + do k = 1, 3 + rbis = r + rbis(k) += dr + call mu_of_r_mean_field(rbis,mu_mf_p, dm_p) + rbis = r + rbis(k) -= dr + call mu_of_r_mean_field(rbis,mu_mf_m, dm_m) + + num_grad_mu_mf(k) = (mu_mf_p - mu_mf_m)/(2.d0*dr) + num_grad_dm(k) = (dm_p - dm_m)/(2.d0*dr) + enddo + do k = 1, 3 + accu_grad_dm(k)+= weight *dabs(num_grad_dm(k) - grad_dm(k)) + accu_grad_mu_mf(k)+= weight *dabs(num_grad_mu_mf(k) - grad_mu_mf(k)) + enddo + enddo + print*,'accu_mu = ',accu_mu + print*,'accu_dm = ',accu_dm + print*,'accu_grad_dm = ' + print*, accu_grad_dm + print*,'accu_grad_mu_mf = ' + print*, accu_grad_mu_mf + +end + +subroutine plot_mu_of_r_mf + implicit none + include 'constants.include.F' + integer :: ipoint,npoint + double precision :: dx,r(3),xmax,xmin + double precision :: accu_mu,accu_nelec,mu_mf, dm,mu_mf_tc + character*(128) :: output + integer :: i_unit_output,getUnitAndOpen + output=trim(ezfio_filename)//'.mu_mf' + i_unit_output = getUnitAndOpen(output,'w') + xmax = 5.D0 + xmin = 0.d0 + npoint = 10000 + dx = (xmax - xmin)/dble(npoint) + r = 0.d0 + r(1) = xmin + accu_mu = 0.d0 + accu_nelec = 0.d0 + do ipoint = 1, npoint + call mu_of_r_mean_field(r,mu_mf, dm) + call mu_of_r_mean_field_tc(r,mu_mf_tc, dm) + write(i_unit_output,'(100(F16.10,X))')r(1),mu_mf,mu_mf_tc,dm + accu_mu += mu_mf * dm * r(1)**2*dx*4.D0*pi + accu_nelec += dm * r(1)**2*dx*4.D0*pi + r(1) += dx + enddo + print*,'nelec = ',accu_nelec + print*,'mu average = ',accu_mu/accu_nelec +end diff --git a/src/mu_of_r/NEED b/src/mu_of_r/NEED index 50be9f2b..22bb3ebe 100644 --- a/src/mu_of_r/NEED +++ b/src/mu_of_r/NEED @@ -1,2 +1 @@ cas_based_on_top -jastrow diff --git a/src/mu_of_r/test_proj_op.irp.f b/src/mu_of_r/test_proj_op.irp.f index 9ddc2f21..94052b18 100644 --- a/src/mu_of_r/test_proj_op.irp.f +++ b/src/mu_of_r/test_proj_op.irp.f @@ -12,16 +12,12 @@ program projected_operators mu_of_r_potential = "cas_full" touch mu_of_r_potential print*,'Using Valence Only functions' -! call test_f_HF_valence_ab -! call routine_full_mos -! call test_f_ii_valence_ab -! call test_f_ia_valence_ab -! call test_f_ii_ia_aa_valence_ab -! call test -! call test_f_mean_field - call test_grad_f_mean_field - call test_grad_mu_mf -! call plot_mu_of_r_mf + call test_f_HF_valence_ab + call routine_full_mos + call test_f_ii_valence_ab + call test_f_ia_valence_ab + call test_f_ii_ia_aa_valence_ab + call test end @@ -40,168 +36,3 @@ subroutine test end -subroutine test_f_mean_field - implicit none - integer :: i_point - double precision :: weight,r(3) - double precision :: ref_f, new_f, accu_f - double precision :: ref_two_dens, new_two_dens, accu_two_dens, dm_a, dm_b - accu_f = 0.d0 - accu_two_dens = 0.d0 - do i_point = 1, n_points_final_grid - r(1:3) = final_grid_points(1:3,i_point) - weight = final_weight_at_r_vector(i_point) - call get_f_mf_ab(r,new_f,new_two_dens, dm_a, dm_b) - call f_HF_valence_ab(r,r,ref_f,ref_two_dens) - accu_f += weight * dabs(new_f- ref_f) - accu_two_dens += weight * dabs(new_two_dens - ref_two_dens) - enddo - print*,'accu_f = ',accu_f - print*,'accu_two_dens = ',accu_two_dens - -end - -subroutine test_grad_f_mean_field - implicit none - integer :: i_point,k - double precision :: weight,r(3) - double precision :: grad_f_mf_ab(3), grad_two_bod_dens(3) - double precision :: grad_dm_a(3), grad_dm_b(3) - double precision :: f_mf_ab,two_bod_dens, dm_a, dm_b - - double precision :: num_grad_f_mf_ab(3), num_grad_two_bod_dens(3) - double precision :: num_grad_dm_a(3), num_grad_dm_b(3) - double precision :: f_mf_ab_p,f_mf_ab_m - double precision :: two_bod_dens_p, two_bod_dens_m - double precision :: dm_a_p, dm_a_m - double precision :: dm_b_p, dm_b_m - double precision :: rbis(3), dr - double precision :: accu_grad_f_mf_ab(3),accu_grad_two_bod_dens(3) - double precision :: accu_grad_dm_a(3),accu_grad_dm_b(3) - double precision :: accu_f_mf_ab, accu_two_bod_dens, accu_dm_a, accu_dm_b - dr = 0.00001d0 - accu_f_mf_ab = 0.d0 - accu_two_bod_dens = 0.d0 - accu_dm_a = 0.d0 - accu_dm_b = 0.d0 - - accu_grad_f_mf_ab = 0.d0 - accu_grad_two_bod_dens = 0.d0 - accu_grad_dm_a = 0.d0 - accu_grad_dm_b = 0.d0 - do i_point = 1, n_points_final_grid - r(1:3) = final_grid_points(1:3,i_point) - weight = final_weight_at_r_vector(i_point) - call get_grad_f_mf_ab(r,grad_f_mf_ab, grad_two_bod_dens,f_mf_ab,two_bod_dens, dm_a, dm_b,grad_dm_a, grad_dm_b) - call get_f_mf_ab(r,f_mf_ab_p,two_bod_dens_p, dm_a_p, dm_b_p) - accu_f_mf_ab += weight * dabs(f_mf_ab - f_mf_ab_p) - accu_two_bod_dens += weight * dabs(two_bod_dens - two_bod_dens_p) - accu_dm_a += weight*dabs(dm_a - dm_a_p) - accu_dm_b += weight*dabs(dm_b - dm_b_p) - do k = 1, 3 - rbis = r - rbis(k) += dr - call get_f_mf_ab(rbis,f_mf_ab_p,two_bod_dens_p, dm_a_p, dm_b_p) - rbis = r - rbis(k) -= dr - call get_f_mf_ab(rbis,f_mf_ab_m,two_bod_dens_m, dm_a_m, dm_b_m) - num_grad_f_mf_ab(k) = (f_mf_ab_p - f_mf_ab_m)/(2.d0*dr) - num_grad_two_bod_dens(k) = (two_bod_dens_p - two_bod_dens_m)/(2.d0*dr) - num_grad_dm_a(k) = (dm_a_p - dm_a_m)/(2.d0*dr) - num_grad_dm_b(k) = (dm_b_p - dm_b_m)/(2.d0*dr) - enddo - do k = 1, 3 - accu_grad_f_mf_ab(k) += weight * dabs(grad_f_mf_ab(k) - num_grad_f_mf_ab(k)) - accu_grad_two_bod_dens(k) += weight * dabs(grad_two_bod_dens(k) - num_grad_two_bod_dens(k)) - accu_grad_dm_a(k) += weight * dabs(grad_dm_a(k) - num_grad_dm_a(k)) - accu_grad_dm_b(k) += weight * dabs(grad_dm_b(k) - num_grad_dm_b(k)) - enddo - enddo - print*,'accu_f_mf_ab = ',accu_f_mf_ab - print*,'accu_two_bod_dens = ',accu_two_bod_dens - print*,'accu_dm_a = ',accu_dm_a - print*,'accu_dm_b = ',accu_dm_b - print*,'accu_grad_f_mf_ab = ' - print*,accu_grad_f_mf_ab - print*,'accu_grad_two_bod_dens = ' - print*,accu_grad_two_bod_dens - print*,'accu_dm_a = ' - print*,accu_grad_dm_a - print*,'accu_dm_b = ' - print*,accu_grad_dm_b - -end - -subroutine test_grad_mu_mf - implicit none - integer :: i_point,k - double precision :: weight,r(3),rbis(3) - double precision :: mu_mf, dm,grad_mu_mf(3), grad_dm(3) - double precision :: mu_mf_p, mu_mf_m, dm_m, dm_p, num_grad_mu_mf(3),dr, num_grad_dm(3) - double precision :: accu_mu, accu_dm, accu_grad_dm(3), accu_grad_mu_mf(3) - dr = 0.00001d0 - accu_grad_mu_mf = 0.d0 - accu_mu = 0.d0 - accu_grad_dm = 0.d0 - accu_dm = 0.d0 - do i_point = 1, n_points_final_grid - r(1:3) = final_grid_points(1:3,i_point) - weight = final_weight_at_r_vector(i_point) - call grad_mu_of_r_mean_field(r,mu_mf, dm, grad_mu_mf, grad_dm) - call mu_of_r_mean_field(r,mu_mf_p, dm_p) - accu_mu += weight*dabs(mu_mf_p - mu_mf) - accu_dm += weight*dabs(dm_p - dm) - do k = 1, 3 - rbis = r - rbis(k) += dr - call mu_of_r_mean_field(rbis,mu_mf_p, dm_p) - rbis = r - rbis(k) -= dr - call mu_of_r_mean_field(rbis,mu_mf_m, dm_m) - - num_grad_mu_mf(k) = (mu_mf_p - mu_mf_m)/(2.d0*dr) - num_grad_dm(k) = (dm_p - dm_m)/(2.d0*dr) - enddo - do k = 1, 3 - accu_grad_dm(k)+= weight *dabs(num_grad_dm(k) - grad_dm(k)) - accu_grad_mu_mf(k)+= weight *dabs(num_grad_mu_mf(k) - grad_mu_mf(k)) - enddo - enddo - print*,'accu_mu = ',accu_mu - print*,'accu_dm = ',accu_dm - print*,'accu_grad_dm = ' - print*, accu_grad_dm - print*,'accu_grad_mu_mf = ' - print*, accu_grad_mu_mf - -end - -subroutine plot_mu_of_r_mf - implicit none - include 'constants.include.F' - integer :: ipoint,npoint - double precision :: dx,r(3),xmax,xmin - double precision :: accu_mu,accu_nelec,mu_mf, dm,mu_mf_tc - character*(128) :: output - integer :: i_unit_output,getUnitAndOpen - output=trim(ezfio_filename)//'.mu_mf' - i_unit_output = getUnitAndOpen(output,'w') - xmax = 5.D0 - xmin = 0.d0 - npoint = 10000 - dx = (xmax - xmin)/dble(npoint) - r = 0.d0 - r(1) = xmin - accu_mu = 0.d0 - accu_nelec = 0.d0 - do ipoint = 1, npoint - call mu_of_r_mean_field(r,mu_mf, dm) - call mu_of_r_mean_field_tc(r,mu_mf_tc, dm) - write(i_unit_output,'(100(F16.10,X))')r(1),mu_mf,mu_mf_tc,dm - accu_mu += mu_mf * dm * r(1)**2*dx*4.D0*pi - accu_nelec += dm * r(1)**2*dx*4.D0*pi - r(1) += dx - enddo - print*,'nelec = ',accu_nelec - print*,'mu average = ',accu_mu/accu_nelec -end

      yH2j@I?lQUa@$J)rRU(DbNq4BN}w#NR6WQ}b1DzBGQ++FT+NTgBG2jm=s zspVFRxdc%MpLh%+p1En=>2HpDRwVa^C;xm7a!zsDOF`>ug80l3TjNBCcqM$fw8|HB ztZv=i&$clXxPcp<@g!M=5@U5IJ~4CxIjRLByt$5r=vbXMHhxw0Q!pQ|UQj8`;3PDD zG{Dv<3laU>4zQ&wqnUioc!R8*56rY&IP1g8wV0_I<4|J^Ny3Fin zq(d84O4XoaRbgt~1>YbrANyS%J@RMv9+??H2A{YCB2Ik}p1alpeU3}37aRLd1kSt* z=6hy%{>?d=o3SV*NTJ_QC*2o^ni$SEuTr* ze?y;R-O;x)8|uJVl`}unvAL8W)^5Vq$PE#Xb9oesOQMdhKNkmjkEnvNI?!&F>D^2a zE%1p~ImuCVWLsflCy0)mjX!ctRM&&&m{up8?8)qmGe=IZKDI__GVvb|*@yI(f=7&j zhb;K)oS3hM;Q3|VKI*aIEztHqJ!E^pUqSC7%i#ErM#MwLE3V6iaX$__14HX4bD3gv zG5yt3HZsLk0U?BBkkweBt!n~ugVg? zdJOv2Md}50zB-pEoh9Fw#8=d;58kS0DR(X&MGE3&v)M;bL}pbG80`N*$s;Hi9Kr=$vp# z>*-_F$41uilv_mdPhc@6gMEjFXXdH-G&=NHFwQ`X65+%ipV^Nn8DHXzgUsK8x-Qi- z?_5W(LmFZv$eX9_Ew7?vJW%$x`dCHhwmZp!Q8dQJ#+YLg|Cwju&#ujws^6QIWlDXE#nz~~bBuP; zF-q6a$BF}D)b7wc>SIIgWSD2+9g|Ayu(V{si26;Al~>uTX{n6;F;uQWj?r0SJm=|j zjI5^Dp$ReS)t8)?j-YnJEq-skfGe1e5z2zmG(y%fJUVWCwjQ+;E^6X$&u6p@B^C@< zi18_M?~ex@)GoEq@25pAF4O6Fs!Ja$UWkz)xj9KJnVQjdPGV2dB|3%!3r5l~IaasS zu4m3#LG3J2ZT))iKoA{+n*~D;Vwjf2g@3wF&FGbR&O7ZY9V2EHeXKfvk#&e?q&zI6 zxdmz5E7|MH5p;|dEEp#t#$clS&2AfNm)Zqx+e>=Ubd1+J^g2W#hT5KHwdNpdMp(9jKi4>-G^o#irNO->YK!7zdty*y)F0*|QAW)$py z!PkAC?u^MSZTeV!9wO@~6L=6bZW8r7LuqP)`cq!IT>zU|FajWkYEze_XAJdvzU}mk zL)MSz-b?yc((9NDF|1yvN>rIpJHlVo#>=~B(!DdBVZkWLcjZT4@#xONcSu^satlI(2S8Jf-SYoeJIjC|W@utC2ynju|drPfyUM&WQ^%8XiXl z(lNHPV1z=9rKc^G`l9YK<^b%3t2O)_60a1-_$DHe{MgRvrLVtTG$$& zej{rf(NvfGH5EO(<&m3@_>`TXZnF2A``J!*;uNlB_{1F$@vYy@8$Z82L!#>6GP&(r zAE@zVIr3b)l0~>us+M7E?E6aAxa|ARgabS45Te_kl*sP0pvKoSa9ih+Kgb}=sBXh2 zdO*Z7cfFFn64WE|HOqg9<0`1RbEOXrwFrQG!X&=a#Ma0S5wqvNlxv=idPK}WF8KPV z1JvAuxr|bV{0O2OKJn@RIjXw9-U{_QpdOL4+egFI=7STe#QC)=7q=3`ari`Oh&bzW zPs@xuXq8{(+^XXCy`ax0qRv;Q#yp*n8P!V~*ip^+Le?0V@bR#91KJ@zfB4;XhpWIp z5&E=YWc3!1Pnkq9eBug-c&3zp|5=I-vD~CQS=UV9pNPtKF<9eF5R=uhHP(D4YkavS zYLk*1T92MA^y+Z>ec-(tJMXRa!A&1@#6B{u8?&^Chtql zW==TbMEJH{@QGLY$x)p=P096f>vM#-UFVr~{A}Rc7E~!qU7|!}ayERTBt#sI*T|V+ zRgVy-Xs5mjiv+&ywS}>p+l+`zeqkwgRMS3^HP%h8HGSKRcKQpxb=mz`2z=X}0$s^E zeFSk9K2ZxIa^-%@-@FEO-dH6kmvxka^JzXrS$Rk9A@b@S6>N>wePoTHZzozs#h}ic z@eR#I1M`7zyJJ{nGhZ1&RKq8lLBxlyFH`1GoHgi`y>f zuv+OkUYTBKM`-L&!q&(E5#8?UsR^D1A|y&o>UV6}R3$u^klpTKG*dr>X(3G;h{naTew!PY1a5#y(1K5#pQ?%Y^5*CaSvJJnq6Zz5);v#8$}1(&(;lqO#Wy1 z!_{-u1aT=o(G(({)4A#-vj}~A)u4)9^ci>JQdCZT+|#gZd)>#HG3w}5TED@5k2H%4S$WIZ;z`|_v^g~2Rm?r!o^hf zjS+eEtpc`2c8KWn^TwmlXf(^^ZLYg_ArNG8N5@yj;u=H-*pE-V*iDXV`4pa$eR*h> zyDmB1TDc5l@(BNvFOFLi#NUgsHO_{JgY`B`zLla`F2H}cHCsQ(vmtL;uCjXa+cCF?pCf z3wWA2h62_y~&@aYs^Q#AK%>Aotiuuc$$y?dG{ePmmn(R6HOrE zlLtXjZ8c~HFnZVYZR#(uS47t{>PMpnF*`~YU~BB`AZskzbF7|gJG#eUETrVrIUlfB zB#}MvpiV47+=5SZhKTdl&8pb)40Vb5JlRpLIsvGR*;4D5d@hv&3H^=vf^=&}C zKK1AGy(;@bmh(I*<(2UFJx2has0tBVKAk%2E{?vF+h(T>=UV}Xar`b`YiT87Z^A0^EHMi3v)!`9f|O4g`!&!Tv`13EjpQl94vb%PAR)!eUiLzx(>oA8MTAmWyO zwN=9*=cuxmL_ zmf|Tw<34<107UE&bk96fgwBo&F~8&2T7nGl(R$C-A!e79nR9;5!PY1Y5f6>r`q^%b zj-32}!!yEOg4t1No66BXK#Uwed}90?a#Z()mDhKuQ zbtXPh1tO|Sj{GioiH;n@$J@s|X955HQt5l~)q9EO7%ht()za5wjWhk`>uzI5pX1?Z zM`NK`z<(b$7S(Bdh9D~96Ad8ZRx9yHZz0sR89sde;Nu%$c5u(;&{-Wu5Ff~3YixT( z);NR1dvw+?8r9ji_ndw%1)SoxgYl1M*%QQ#_(Ug&C^MtSe@qdL>I9X(P-7+F6t_Gz zi@Py^Aik2u);Q8k*4TQYKb+eHjjFJ&L+u_zFmk+KyjXtu20^sLC;F3#|2R`G7f6k! zx&mkFmhSe07uJAi?)adb?Z@o-|4(OXhZI9My)#wtA0pyR-FxZ(<9tJZ#*fqbQTLa` zO$oRD#M+M<`jQ;uZ)0lzU@1P9}fmnx{DOg6+EvA z{{L{FfJSa3(A3$51ks-{8~ITq8om&}YH$fEaGN1IFBU(J!aZ^+8TG!`cHQ!lp<(#4U}Q9sV|Ar=u&vpG`m7?y z-xBAFrRdzLk}Med5JR6kOQ8C88KsV_559qAdUWR@F%0jFQAGXBKQxea#Wp_lUhg;$`X^I*+b6ZBz4$j$y-s5d<+_PU4Vv%A$6s z`l>etSE_+}0hJDR7L0`ut#=opc+=wtQx1vyqV(|$RWS5P~D z?B#USl6~nI>MR&G5aVT?ewR=-wL7)WBk-DR1RbM6lwJor#OP)dR9jX-?M^jvSspMg zfsWzKf)V+g94pDqa&HymsU1vTIsJ9^rP48`uwbY|j0p;yl_rc6+NoT&T0U$JTxoQS zL=pN}H9RBh@R85z==nm;&|7~#vNM^Ev6=cXvx|@%kX5uNPJ3;)w>r>n~SegGa4r?x)Ym17b{^FjMWh1 z)rpsD?bxYZoxSV>1uk2cAc0i0fF=6Hccd6H? z;>hV-&uMoUJ)cP*t6x=Q9hL7BJnt>0&h3($f8G0ho^F0Pv0z+<7|W8+Ufp+wIwz_M zW#8SCPsf5u(;Ehb#Qq2@K+s%tm>cP164*uEZzmLquf}LFJi}B?xh*tgG^i zCa}A8XZ5}%VzUTeZ|!t!jjt=o8r7C7OzVz7PhvamH?`8C3Diei1Q!=C+()>6#b&S%k@*~Zr(tUxsvv8OvsFD|RrnMkrb{`A z?AQ$|Ym#;9vx3_Q|Jf0IqAx^z`sZAixZDebnC3H~XrK_(odvr!_tnoOoEhWsi8CN# zR)XQcuLGzXtYCebl(ZzMJJ0&4F}GfcaApMaVMq1WBXU%udaKg8(or{<+)$-mK{4n& zd2{t|y}$#qB=b2+;S&`gqSx|`GF#rEeOV123-kO>pz~xKBo%3%M-bC_u{9Q!lQmk_ zg`N`SLpx8so^q{nGr=ik10DD5mq>u@#?-hRpSS@cY9(eAzL<}8o&-Xb&vY&V{q=1g z1IJGNb@e@&imkD^jI6Qlg6EqtCA2Twx3=4PKoi_oxFG1JG@A#Z(Hx&>3lR_fJTrDH z80}c7&K#~kruK$GoV0&t)tk!%@%_&z?td>)eZtUPFbF;O5!Gx9yGQ z#}LFr_{7r?vGHD{`2kzBwtn!X%I0|e|YChzEULT zte2g5U;G9*kGZNX`$hB_u#bvKyv&0g)uvy53#CFnl{@PZu?r=2GPcJ2VzR~(t4-I_ za-Sg@y>xyyt&s+|BR&3b@b(;AV(nOlPh1BPmoI7_U0a^3F=D zm^d4?Y7(}_riWyWhfm~%h!ct?ZN6xOdhDDf z4{h;32u_;|7b`GauS*awO~8(7Xx)q;j4H3^zSWuF?@;O4R*52gx)d=hf@ftm` zJWPbht6f~!8VB;p8td{7EUn zwVh4QNjwER7!@x?U(^{Qh<7-!HRj}zH9oa)99rm%z9Gwos@^FM1Zzil)(Za-W`Bn{ za@6pNt0CgFsT1$BJx24YPn^c@2`OOhFbRyi{Bkdm0UnLR)>xNI)>u4j^wGE$&8ru@ z+&QO|fVD%aLU5<<8G>kxPqc!FdK({Rq*b7Kwc!5AomU@&wc{YCioWu7g4n^1t?_dX zS!4Dg?i|ItXkHclD8YT~Ay_+_mzrG+iYJH%@rj-gaZA#}u_*%RSNXf}iLd`G2Rk&l zj(*pN!_5ySwdHh<;9E5Puvloe<|i?PXi2vOxdd9|GKh70*;TOziJT*XPn-)8<3Cz2yecy-GjL)DL0pPYTm=!I=d+FI z%AgsbCgbR{x%^$Ej?Ty2_X~I0ZUp-!9>`V+H(3(%@fQozBxX z=EnYDSJ=dgYG1*H#Ox5lC(1%Z^P7u}Klq|wIwgmt4T@%f{SqQ~&%GIGAc%1z*ip^O zAZuLRDA#M@iq1zlOM`Q3nnBL-tbBKA!~T9-wf@4^*q27u7%%$BTsQ-rkLhbXL>}~moU_4uz3t?` zbvZ|Tq6b9u*JwOFy$T(xt9gH2e_9Ua<5dZZu$Rw>u{!({TO&6_oUx+cpdtnxt7DHQ z%nR=a^HFbucQMaG;yIqhCtgh@M>Vynz0<579jg{~zt4IEg8BIK;{tZOziWp8K2aJX zKA$=;!|n$Q#1L)cNxNFi(Vsn`5@ej++@de`kz9Nh!v z;|(R9MfanLs4l@Lu7HS(z6_*WOhLWNHn#;FD`LQWxYHeDV^OCePn)Qnb-#K{0b~ulM3>Hw*TpRX9Ir)z3W}_A0py< z$2^ZY@|y&`|2?^wJ4C@o82q^pHwNx_w$a~0X2ROQ)ekE;*x4A0{dHyd-iIcVwC8?p zHd(^8auLJv@^Ad_GZ=r(KmK>J zow&M2ix~{*RE{iH<}Xq^tj|CUJ>fyq^XsVHQmH?umNnewr(y82U`Rs@83pg)KgXzD z_3E?6S4TR7M@Xe3X#hlqT1QblIaYh+woR|&$)SwZ!Rh7IqSGa57d~72Y3|olNC0zTSUx@mQNT=NF{1jzS^`?3rpFh#-;D8vd=hUr4 zlxWU;E-^TC^fMhJfCVEemK-bp->a3UtfhA0Elr(PYkY=om&05Z3{8k}w1wT-(3twH zOQFndp=a1YC5tLnrTz4=YKkH2Xem=xa5162Sz2jnxWwC?bPP)t3|EM;YNnRJ^mWv3 z!tFb{(%#;tV~l*H*TD-hxXL=#d|uE>IX}eq&UI>iNyi9f!AOcG$4YlyZ)?*ZYUh4o z#gwHpN9Y(zEEswaL$c3%ykRS~EAldbLPQELs9jJ!^QV3EvFf}<*1;bC#7;1i+PUAh zw`o$fFdf5z1>+>dkn2bV{o%zh(e6;-k0k$+Nc>Tl4qpu5~O3q z^wP&F=O#H;N*z{}4acaR`*r>%dunFVF;=i(7(t9Ln;%!sK{efP` z=P0s{+ig7eCB3K_L1XJLy%nOpkvHn!I%p%jy#ey z*}jz8@ouu)eOSKLwahWg%) zf})mMUpL@Mrpi~+EEq}dnmK+bVZa z?7C z+1iWEkJ9PheXg)z#6*x|bxOQ`c=_7CwCkWP3&vrH;rSwb_-;)mV-CR1 zeNBE%M*)4{-0wKFvw4Xn*lW$KWAQP58uNT?E{JFyJtIN&RUSed(AhAU;uX&zHf79Q zu~$&yzr-7z*u*R07xDwF}D?4V@fbt_^zt?}^{vPN~|8|N-uMtdNSZJY%HPk_Aw zJNsq2-f)9=Q|5ErjZZX%h)XLj+*)go_OgsVt3PfPeaj#^@$8DO<|l|>-e7C&zD(Bm z#=ZH1Zh0}1S5vN?dt~+{j6vl4((LlAS?a$UPv8?>A!6gS$dGIUbf1}J{?vwpDt8#f zeNpKy$&FpK4)oLC-aW+IWICM+MYzSSg#*(S#+1w|VBR0rt{eJjZLXlX;6Eb9U(B6V)MN%9DQE zI(yX7w%0)Y-Xb%wmyU0x-B}9@VzqkFjIFWaB3WaTbFsZ@22ph`3A9O7G-T)CaNsE*p1-891vpqfvQU;X#5p z37fAZ5%bj3F-gf!aJEv&`Q3s!>3K8Qy^CItrS0j0KNOp^CvRed$ z7<@T>@XQq=lRs;~)>s}u)+qeDY7MW-GlVF7FG?m!CPU?^#$x~n>6L5oV6raQC1Adt`ME zhYR`@@Hk0sPN@Lc*|y+LWq^7&K@6$Gj%olz6c)0-rbBUmgxn%&shLV(XIr1%YhHIR zB9qJD6NMq-?;-`6?d9lKfay=IBCm~L=Xb1e`4rJnf|&UNTVwoLa#ZaX+nk7QM85(| z%@?-YrGnK;vSs9nBeQG9dj$T*kZ-UtS3|nKHA6es@J86!)646Y4S}oC9*dDA_&a)L`KTRbv`4N1g6GTj1 zRr-2-7n>b2WEj z?TDPS9G|EJ5gXD%bR93CZ;xvxJlOU*17z~5`Ohx}_7TJ-_l}(44bZ)2B4N z9b|Ix$W`72f3qAXKJk|~S!4Q@_qwMQP%or*z)`*BRUnhUGngvU%JdX4HD0d9j_MhR zxKuLNc^l&{jQ`v3Fmw{ zea&2uRIwzR$N;HT*cxNJ$WiswQk(O<5zPRPDsDX}j|01Dg=8=1*qamcaTz{wF+{xL zSJl}diN1Ase;(-1dj_&xY-Nh;_I83;^%z@Y(Mht#A^Yf`RY_9BsC)0YD3a%Yn6M}+x}cz_ zs3>bhJ%JbEb57(ccPw%Cn^RM#ekp->fE^Mnb0%gnK&cfiDD!RW-zBy%!?RM zPsPZus%LlHz1ih+^L_q$c)ghEnd#|wS9Nz)b#?XZw;jWe^CZ)FYpyYkb?xm&tw|G0 zfS}}IlO8n1-L%nBsfX9!6lk0#9Wl%Vabkv5-SLOS5+G+#-treUaP=YY*t6qrzRg%| zq$9qMHm33I<$32lmO?(pTD&6wlF$& zpOj4F<~hb(o$>X}cli&+qhnm!o|1VA-1nKB_PV{&U+6hqr6Yc4f*4eMsCYn`cyuhC z`uynVmbm^n>Ba75^)?HLc{!44JU-i)#>Oujc6O~Q?yK1myJf5WPy$3(UU+uZT>){h zbVPp>#7ze#?>kUc+*fPg?>cfsAWDGEHD5RmuorCdhuM;8yfMp|#_g)-6;iCkyAy8x z+Vt=EK_~&%P3|(IM?C>CLOSBlCWuy>V`~3pEpEppi=R%YrobIhU6qYKd4B6TR?-pQ z&NQa6S&LBXZOz0|&e?7GCrx+U5jC*$`SqK&2<^BeOEOnACWt*3)){|5DegJ9N92vz zJrzesY(&PrrjG@|iHV{Y0#OgX_qNC7`J2NHIxGBn* zt4|7>#Xq6MJ;z3OZcp}T935fVubTTe6%ad1M{H$+_|NV78U2Qdx%$Ja+I1HU!Jc!e z*_cOJI)SSvGbGb^bcQjFXHE|ezZfCr>iP$EyPJ;2p7TJl?Rqm3Wl3~Lpmapq1o1$X z1=I6k56!==$B|0EjC*Ub=XhOK&l&0^aP@w=WE!tcH=T~0k{4K(7_i^9OoDT-E<&zs~G5jIF}otN7KV)VNMN({Habzq3Zyx9XYGs>)DFb5Ve; zNQvfmq_i@@IP~Eko9*4Un2iXl7*%`5)24C@7^hBHjtDz7&6qod@hO@|=l7V!&~<$q zx1_qIoi(B5V1$}rdvAxxO)y?LT<_dD&HVS2TRs@p zi@o2_0>*~pmU*>dsxhx#udX|NMypJ-bi9q-;&%9$hXsr-(|eh4;?vHR`Sh!-K2Fg72s%&X1gjCrN< z{G#Z!$UH`;`tzEu9d8MvdpQ{0O)$coUoUuK;kP}azIw{5Pqu_{<1fo}+z2zKW5ZTg z-L^l>+tjaGeTh$bY-vaQ%yKXyO)yTMX?QrV)nT*p>h?B|IWxw%S?E_T*6Y{i9-YBlEx2^ z`Q<@xaz%(v!&^@q{0P?p4=m`>tmOuU0rBb{$uu4cF{bgS~{Z21aXx0Z`b$N7RMjP?fv`7a1!m{8kRS-N<|_5@bzxVG+r8I zOyl^fx4e^Dh$C}$r=6KUXFEna3?IYZ-}*{GjFpb~lL?~ZKHsrBI*a2ESDpWTQvXDZ zcJTiF@AYF+glPF{(h*<&WK84y(#i6HN^vB4@0=Hp!_H!~L)iTM9qWRG=%e+!By%;| z1aatxvJSI-#gPE1eXZ{>IT-CwHL7FBxwi$x7Sa)`m>~9EI7TP$Dvktr`F!T90jU`6 z@ajd;xs82LFOa^Px>GWZYeyP$^|5`7rcM)aB*2hKf24YB!ML@^qg@s?ST7*(0@OH5j+{s!yjcH*O1vm;aDVW6B6)8owNIDXVu`yt?X@bN@zo z5Jp)qI^_N|$^o?$;p!;qh`me@*FTAA(#y;jpnpj@5p>w?Z$O-VicVu&35X?0l4&d$ zZcO9xlw;@WnfX=s>tlOt3oF2VPiA3BQ~oFlO#s9dqtYvuE_OGx<8M18 zb9J@}qE){aZQH)h79lQB$=Ani!QT*@67_iELl$jwLSr-Oh?Ptb_qM&0uJk!2LTtGt z=f|=>e*t2pL%U0wdJ6jS;C9J0CJZy?>fBc=rZm)^6Ctksv-{hbYjG!XYxU^6uHSxn z#!ot8V-v)mvY#HvDi-TUpWlKje{{w#>eYR)zo6r8VMoBlZIWsH>qlc6pC2C4`)pP5 zF5UN4yVLDo<639q9?{L0ZV~k3Na=`56U3Y2&iuBkg*bBc;U8-fzPpW)0Q8!)1~F3w z{rF<5WEwC0U`*rvr}&{lJ#BLupLmyUm;JUAmVb}2K$R=oU0tXU zbjO-4lDRt51o7u1fy(iI;#eTN>qkdFfq5={w7y5P+AZe^h)tv;Ry0AZ_RCrI3{SDP zniMzw`@zj|CvvY*S2yVL1jGZsOQvzv5M!=-wdvJ@o+pk4%30a`?8*w)0Wt1C+o8k1 z3W&ba5j{*0UyMqUJB=2{knC7rG1PSa<(`e|NFA zdQ;rs>i)H81N8f|v)%M=0^)G#h&@dZSEenE?BF1dcBm^$o7=-5ZGe_mRoM5$pH6hg zvqZ@>o*QgTW7Ew|8rnS*>y964ZeG6s{8~V~-(b+OKTCw!+$`ycKbjyu>!F&}2liC{ zdsaTT%l4nToWOm-SK7#$Hc$z3D|_jPMT3lKytZO``^aeVp4lVY-o4xMJMIfU5O(O` ztnq^GSiMOyS7(?Ywhx~$D(0YAcc{9!1+7!yzF_5^vaj)D1>K>Lj%a6sxT-%e{KDd>(rH%g{)MW8WPLq0s*IkB2}rt{FQ?e_!D;+HyZtLWQ{ z-U^65(h(b)AbvgC_SnJ};+c+v)30wP9>gzo%#5C{-Mm=P9p^Vlrg7guV;V2V7gciU zDxT^1R-d+`AQ8XR@%~f#$*J~&lp7`;vAYSP;|KQl-@L^$on58h#XrkL{kVMehUa(2 z3y4qGOQ!M6_r^3XntQ#|g_>eXev6x_Zjy}p@#n^GJQf}n5Tm3c4mCl{*mf*+P(`sM zpPKRKv`wo}KVJX4;{2j-(ef3fBR&~mOyfc472S8f5F^$(qm2DH8TDfe&yf!%)DtB6 z%5{>t8fk*)^dU95&RMbU=sB?6SzS-mkF&olv71O%Ux_4dBpuP#1d-d5+U~0FEBsQ&wi_OE`t%WKO#V$WjlcFc=4#H)N%i{XiRJ1oZO01r*5fYSHJkj$htYyu z?I9hpfeGTAaW5w9uP^o>jp@#2r1rsGx~09B^=tGFI$C z`dZO7VCzQQrJEV$J>ssLAmx6Lj_7TIICAmxx2?B}S1x3hx%RhRtd0^;7)l4)GZ7;`n>r@8O1W`6Uw-<9Lh;l-#sw)L_f6#eZt{klm< ztY?Clo}6>2t(o8Rk?&bk^>z;Gj=PhK0v2`>q}=IMl4;!KZ%pHQ-;7>=Hx$PMd(zh& zj;%o5@it`G{U+b!>JaIOT}%+i?YpMEw^J;0s#zcUvh?YCK=fT8xAm+dNPx#HCDWMO z*O;rR`bL+P?tT4OKwP#$GFPXV zAi9l6>h)l&Smumhf57JN5|pdsdjK-|4tGL2dj#68Py-~axGSmvy~Gb1wV2+GwF6}R4gSS%oRm5x}~1kwA( zri#7Ji7l(7O;hGqTY+-*=dQIq2h~R%IwdfC7kG=xp!)20b%;{}R+74dj{zLLGMrycIocW{Zd zu`U!4t)wH~QyJ5kQT;eqR8c%SB3=en{pC8!9QmAWFU|)DeRauF$y}Xeg4m%$wTH9n zh)2g?%F-Ekx1r4GAscY4CW+Y~vj8{gh+q7SX>1b_TwmTuJUaZ(U+j3iE3RCpIuB`I z<(mz#bBSacITOS~ln2+lzIfhISglfnr}c23KHYWwK>G$lU+pX%v9<}~%Yx|jN2`fP z$FCE*kN@}%WzKgSUq`R#DIlKIN~Uo~FJrETuU=HU;u|sIFArMnT$@g8xvF(ChxHc_ z1EnK&FhM-uETQq2M&iD@^O<%={4cnpJfd}KjE!38tM?a6rZLOcn8wsyi)wl+#eMbB z(ctBoSvVdKPMtPR{;jW0mX0{U1o3j>B$u#(;=WpWaOVkQyl_W(NwU1ojF$q9UpdJ% z-c=gYsCYon_ZuqitMb3Lukjv(hTN(h)!T7}HqfwPa>~k4GZ^>a-x-05PUTCbi9p_w6x@jANeYMIq@3uM;SxqGQ_tFvDnINv{ z-E!5vNO3!MJGykzl-Af+M-9l>wP>V3W8osnG-mWLrm@@HMw5R{5YyN}yu(%&_%OtIR;<$%B%H59`q^|{~$u6W)^Q-t?$hB$? zk-Ptw{fK1?Fai?yBU+o3di=nULyw*|`#+YtM<{hyH{)K>eMi>Yj~y48jWRC2`=IUH zRWfKLb5X4$NQvfmIrcHZNcic@k*+^(GKoT-`YI07|l8))v8`uVF6={#xk!s z6AWGb=$Ho+&zi+J_+aLOg;uzdX|7-OEC-{h3C5?;^*!z?%>PbDr-jq}&t0&DacjP1 zI5bXuF`D!b?`vCR31ewF7&A;T!nRt^+v;I{2T9qnkdQSN zF+9t`s9}OJWK-PgqZ#Hg)-Bs&fA+B@I&z~e^J-r^V_wbbck^HZkH|Ga@9P>?=3FfTWPV)%jQ_7<4Id%Ix?)=eOlpfez%RT!q&e7A6TMe zT{##U6O4KF8vS`U**u2bduw{T#rEh_4n_kLj24wf-Dd5~??4>dYWW7`GfQ+_nr)d^ zN81?ls=^1>cOzvU<7&>Pb#32R!kAPJMvw_c@x<5~J~Pc@{BSF^_va6mFshV;@y5%T zjxAkMem%C@JVxZusZ;*>Y6)YvyyIqyMM2KkXcE>FXqY%E9n7 z!LW*Q+|@ta{BQEktygLL>?M}IPV!);Wjb=dGv<}otVs^_9n9OJIo~f#4(aV~LD$BV zgArna(RcdPceBgP+lihw>!;tnX35^ITMkB9YhyYZ_0QS$vVnQ~YI0(mIs3CL*}I3L zEc0re3C8*tV>}L@HgEf=+?<}S>R`!E99RxUClid{FI`@@eVqBPFK8ZHg$|}I*;g-T zSf=ArD`Q@5e(*k2KEu2|cMcksUdhSQ_~6RHm}G*%_$9A&++zOs+z$30`DfG`OBhYd z!Kh+_@w4{X^nyRl>yOz!k#xl;mN2rWTjte{md3n#bZuShIvw}H7%<&Q+0>_`$G(8& z;ICQ#ae3?OLtG#S@qSH!q9yL6>|la;bmHz;)=LkH5ZCS6t()9qDEa!#P5FPY;d01pkI9h;v(sY156MLhW4)WFga6% zc=4wL{k~eEPjQa_W^P3x${xbin$i*PwlJo#LtJd9THHwy;=PGuRA*$k9+i4>Z{5~` zD2WK-)@hQt8g7Dk<#n|^VN*|w5MxJO*!1HTTmxT|aNS*}^)Mi|m5%tSxiO8Nzb)%O zB19ZtTz_cmuV;qh8u+20cj-@8qa-9WrcaejBWr@#!cG~P+(H}&Hz2rZ#PfQ%9#w5X zPpdi8agI(91EeF?GC}O}#bHj*M&kJ5%e5+v@+!i(RHwNwbW_?2k$1NvB-6O9nK4&~ z>2i}i;QK`XmH@2_muz`;6XQ~I3)&ZIF9?X^q$9R7LG<76wrikFyf@{<{TowfrD1H* z&aGb+nFCN05U!R^kxXMoQ)3!Cu_HSaKNUybU3|IVr$?JGw&?WJn9gI435W}%Bla^v z{5aOv)+0|GdG|y8$}5~^VQkTyaUC?ntD^)bG&)O1{JV)UjTcI@j`sac9C_y))@fOp zKgOl*8}fkbI#@vbeX?Y(jyFLJ?M*vmj}S*Rzf#@F&8vZNsdUgzPv#c^(MvkwhsMS< z9<+Pz7gI&NcDf{d@{u(caNma2#2FJ0Cku!tCP}7op$X!Ue|&Aa-W4Nyo~qY!M>Ou+ z7ZCDXV?Va(O7 zcN=F`HnYmtU{PB1i9p=D8Q%D}QLbc`NBZhm>4O>nzp_M#9rkZ>-PL#pAZi=`QtQw}K_kaWM^u|2 zde__W^W@B25u$@?Z*?!lpMdCk>9?eC9s1h|SF1}$yw%8<# z#Nd9NUwI~rKXA6 zt&SqAzx|HR6c9I#mCV(jO%QihE!;PMgIGV-D6G-I_Ybr>`uWvrdu6MD*it&;+j_<{ zzN*k}(zt12{kX?($Een$(CXNdI->jVECKPz&ys1>m>{0rTCD@?dtW5wX7*b3Wl&Z8 zmAsEZZD{J6fJjM4bTUD-N*Z{mZAEbu%Q`1n}7Z0@UGP# zfOvOZ@21nA3p3W&p^|AlTGyDy@WqckqvndgG;p!!_kO3Q;MWw!}sXLEaY=4qDJ z#IGq7Ev)1#qOyJd9g;AbrUi z)X1@oqL(b2ARw0fB$>v;wTx-pF(%)py}MXQw7-NkIH?>4fBLibDzUa2dN(d;)FRZ#`_>#^`RiQ)v6*zlS1!gh=HDG# zp=GvMl8+yK<-$sv-vF`w(H2$#4}_V{!4Z;aj4?s9¬om5C*JRKbWN!*}ik#CZ;- z>B}z&lH5-^VpS8ws=ua`UHeY#m)m#Z(7kbE@!JN@w+q52ZxAH;#o>}^T<2`e)kO!# z?07p!JPYvaU90h{q@#css4l6rH$af&Bc&rYH$hxI?)l5u$>Ldnc3k{1SsZ@bU_es9 znTSUM;)`I(G#;v9OykiTYX)lOie~{=Ud@l3+6}*Lu&H}X&4&;{uFjE;s4_u(RO8{T zcXP$FfO=I1K6ETaZFTWZ$ni;M1;onI5ieCYrt#CT67{*s;#okeJ+;2>+K<|5)Mt-r zPu+#_xMrASuKr|#IHTs`$XS1gCAp0Ge4-w?iNDuMI<9<*X7A5Bw;Z#%L47;Lx8{rBlSSfO{F~_p=I6TOI9x_{;sn z0-~>U#409;;}>N<{hkub)rlj*ziwE8+G=C->CS9{fSCV-WE$5x8gq59pPgH(^FxtF zZr`=R@=zMJ)#uwkE9Tu15Qj@gY-)n|U~}=*-Qi*>=Myxi$zdA5G!R-ewYc(PLCQTF zDw)O$|{8Y&|OK7awmn2ftGD@_PL_#{&hKvwDbR zu8uH4{PE=*^^59a>(P74{k7h2QIaotvSY@ybOBKz9r1ZpV;Y^dJEcvkES5R-PTGAs zyALIKtMpaBhPVoS_0J&5G|o0bZ0NB+E6YYKbE@>Oowa-{ex+t-X1q<4;R2$Mbi_&~ zh{Fat?67++M%1w3_jcF8)j$`!yZ%3{5D?D~mP})UgE3bF@7pZPxh9r!J&xO*JvtI4 zdA-rK`zL;ra>Jw}Ha0;#Q!Vt;^1sAVuG`LAGrU`(Bv;ryN&M}iK;zRvl4<;_iZPAK z%!sF-dSU_wf9kIBQF^ww~^Y;ztEtUW&GoE%l>Wtr0vE6o! z-CINGImrVh(>T)vagj?+7pjkVJpSbT*#4y-#yr%wYOSs|OhD`*9kHSbV&jK&n;(0K z$76?ww^}c#Tg)(#{CtIY4jOC<7UA_ zu>?5VT)uGh43u(5EC2fV9}+uD{HxQYBla{wtT1WovxPgwqvMZCUI!L?{UvktM-#-hsb`(C zBE_S_bM3A_?%Lrl{7(xqmRjuDb|#2#=Q=lk5Gd}e zhwTC`W zo};?{`a;?&939Oz`u(siLE!2%>4@D;5DVWv4x(3!d(O3WP2Vi=#nC}=j@3?oTeq^2 zj(En#n8x`{Wf_@^#672J`{2d)sW>{m#5oUZdrzQo86%miLroCn?W=q!nJDf#zMV$B zTDuHK$Dtji@w-X{#QM?^pI95yxT$-}=eoPaTx~vixV&W=_MFRuIxOpOQb648FPX+j z6T}YdYJ@41#9ZAd``|pP0DI2o(Y0Poc_biqm5yj@f_V8$>wQ1KF6w`4?q+sxTge;5!c)=y?ICLR0#{MZo-E6w*>f~|nPT5)O6}we18}~r zb-78qTgeYO`%+pIp;nY_W?3P{4RWP8m1E8)N4u4K-L2rJRs>HlAfS&Cqp$%D@10Z9ju^aOiW-TxdXr-iIWmf|7e0Gg5l0Fg{vVGNnj?!odm<3tqOMo97#Zt z3k-<_!=q!0W`;~8ftd`61jD1P3NHhkA+f-aNFWKQz%fNIIpLf?CzV z^Cze3_>vpZJcCI0?1?v~@k(cqJzjv)fny9g4g;kF7vbaxN(Ud1<1|n@_<$V8kYfxv z2J%WL*c~5_A;%bUoWLuc;AZ3jImVD zgAc}%2jm#YE1l5EcxyU2#*pI#Ug?BJkq6`$LylV&v3g0e!H`&ONTeAOTLq<)vPhqM zwIPvaNNnYm4ghahrq8t3kVrEmw(?2`GNr6BWHKbu42i9ZME$c>hQvlgBF&K4Dpooh zlk~5p84_E0r2}xQlJ(CH8WL%S#8zJEK&CyZhD?S;8YVQhu0=a>8q0V7s&%%x<2~r! z?m4%H+I`xJ-FoO{(*55IyP5M~z%8Ns-w5j9;RDa_1+}V+=TA;`un82T`-fU#x;`F^ z$3Un(-Wg7g{1_O`kAX->@_-yo#z3Sic|eZ*7#PiuflzmRFp(VjF))oE1EI~x19IfY zz-Z$!FwqMi^J8F|@feucnLHrJ(fk+)_Q6|Y$kAjB1XJVzImVFVXnqWY_a_g?(PRvS z4U|XWTq=SZpFa~xDV_=)1#~(B#gfXyQ7y~JW9xomPyM-~3V(9t@4GA&^ivF;{ z0Wip&I_%bNnQF((`)LMUP`ue4p0v&RE(o8!B=PAjcqb^i%YQ3ici}Vh2KGS${z`gcC!kK~uhMcp1f^44SBeD=nJ|xLd(y04#eeGu zym0$hKi~zMANB-Zto4QzFVz0k6L^8<#|t#<3)A60rkTdJ0;LVT{-bh)a=0>BIV?Eq z1bB8~N*x_b9kD8l)3{sP!&TL(UEQtPr88O;{8tUw1f4h+yxdk+bgq>%oETP}r@MBl zrd7Lll(zft_K^7^b=dH}s$IIO-Klozy2xA?t0LXkva&40huVzh`;_KkA;leP2E7jZ z*NsE~iGL?w+!ecF*-46%Q(PY(O7qoTzPKaaV_&x`%lYD1uP5fz+%L`fILT!oq~UD$ zBc9&|oub)NMjIq!JkuG^e05kJj(Bz0O@83doVc}8H!Mk$YoDDlbK>qwE8%gr67E;Q z`axsPw=e0}^iJ0o<+t(><*E>PYd<@1Be%F1#c4avxU z5M4XNI_JZXf}A3kn>ocpvZ%0+SXIjV>eP-@So#piNZICbadNCw4va*qER&j-i+TLC zve-Ua#tMev)D|#8hh)H85tl*P+Tm~C%G!TAgu zoy@S2sSF#Q&ak0*6dS$h-9mSyQ69evGikerF8mG}T@`Bu{#)JX6(wb?Y8l*~54WLZ zIku!MJ{{~it;<}JU%g2G4)mGW6Tmpkm9nU$thg&YV8~lsa?DtvRSQ2esy))?9Etq0xvsq=;s(AW=vl z5=(O`=&#Yqeq1MpOT_L*aZc*^hw{b0V;Vo^rw!IAkH7`ey?McRR(>pWYjp{be;sau zZ%cKZV%-#sR$a)jfeL#H4vt3}!Xq`?Fc)70gc`bz98_78?apwj>kJE>TdjjS7Sds* zq*22PNV~C-vBmX3TO`5rM9TIC#YL}yHa$Y zb;dhOzVtRiX*&PdgLnvN`|h{n z5yDrW#|9w!YFBo~Qgk=4?Olx?_SGKapG^7%3NOp1`F_lJKael+gXSfI!jIIlyBm}X zji6fzy~SL!p8|mr3n&Kv;XsOg0P-Y#&>)H%56v?H+vt%pP&r6BSQ!L8KOgea?AM%9 zN4vz|aCA6UP2$fk_!}y4T`v{R6la$KCx&ahoZNL%Ez2o&QYXS;P%<2X(}BzR%6ALU zUa^+Pox)<@XJZeDtPX;;P>`z>d;7;MhJDPi_bJU|8*1Ktt5WE~>^(o|7zHn=dH1kS zQyEXIXbP>Vj3Rs6^o++gn)}u?nif_i@L#1QMHm6affw)F$(>75D2E=MEvdq^zU@Im!~Ux<6^~TQil<_1P;g~kF%7(Cu&{>ls}Tv zMlPejRUayyabKp?Jhawi+Q2wTqCE1H84q26*9v8o%k%Cd*N~e9^D=oh&CS!TeBlE8 zid?3Oe?He=sre$4FHQ!%=f^&6m#(@0nF_fG%BJeqwa{Zg=~Tcz@-arXfYPMPaz1C$Kjd-%?*xH zrdU&2S#>C?C#5M&r#uTO=qYS`f1p^+ZCnH|0CVL_7|5^Y#!!^zgH0q&X+DB_yo9T> zYys$9N^`F?d)}-`GQaH2vtndEv?kr2@y>`Sro2zfHIDGEN`6SjjPYY-6jcTlJ{|F* z=mVBb3i=faVzdq{!)luWF2!D>*c5k2!Oe4!3pz`RD?ZRXDP`E>j*wJ==I2r{H=~u& zYW5D}c`E0_%XE1IKOCNM_!fxC_q67uz1s5=Bj5KyZTlJ2Z?@bjd-Kd}=Pp*+8B?;| z`dMes3(E$dRCdNs*)5maWN#jt-M)uS_Phbv-TK&OThrOHF1Fc91N${80OTW7zhFHYwqaam`0} z`Qm1z#CYUzfL3+|*$Dvsv~Dm$;yc4#e{K6q&`e$=+3kCZJx&?f>pL=ri-kt zH8~B2W|}pLp&ZFods}i^Ez8~lSvuK~t1%VGRmY0>HZ(cB?a-CH?GR)`uDX%e91_TD z4n4_h4nJ4Gk^?DseA}T%MZm9*CDbA%IP)bq^CdX*B{=gXIP)bq^Cb+Uyl71ZDaE-* zMYXnDO)RB>mD=_#g1hkrx$y@>T-w%O#I6@fqDkb0d3fg&UU500*Qhul#Ht-m>TLs$oHIBV!3|mUE*)-^?cfDOf zJX9glV0vfTd%C?m?hCXv%>{TV520)z1MuJSAs3n(hoPDq>_f$$k}tVH-l>3gb0h;o z0z}v;=(QAko`{FXpJC8B%F?s9M7uKSj@H?mqn#XbK}^UP?~@S^pmWMKi=haHla(;6 z>^)lI&|yo8XYpml;c#HjKu4lA4?e3|uq89`ZQAo9(0i4#%?D%NCg(#<=eCsAIRY*! z=e(-v);9Y=xa$LgrnmqNB2#;xi2%Aw)bf2zLOtyxf21^JK=~aU zVeCif^;|r138oDodZHa=c{v}PWarTU_dD-sO+kgQIUZ8p*W?;heER$}=K!P3;VPQl zAZtpBHp4S08f5M-e9<8Op#Ak_m(uJjl!D8$=K;oLwbqTrRN!TIlvcdCkJCor!^~Q; zN|pbv+G!5)g0K@%P4J;^$V>CjDBfb*VIcx5=e0%~E!95U}|2J@aY%%}zX zTiaa;4`Gs!d;;EqggOaw9-a;MZx48=AaBCFMK@+Xnfq*UAafrmbr8I)PKGy=bW=!a z-QUkb7|a|Nhw~rE!KsqK1kQt*Pd?0iu0xv^!mL6^vGcu17lcWkKps~?L=uomSywby z!YScBe2HeSAuC|b9l3$rp}C646hH1ehKuFrO_hK%rBG8VH5ikN_anY0yM)m;?g{l~ z*e8DMiz6QJ7{xEiRiR0V98QO~t#tS2mX!Ii;mN=ZkT;P@ zz>HKV(-9_dFfB`0vyas*h?(4C_{w^R8#AHZ;4TCkq%zuYc;P+6K2?JZg?6CX8_2n2 z-BQv<^0>-aJq{Wi*hz(5AagM9ulkvl)}>p^?jXso(ws~|vlk%1fM&n&b0;Ru=i8*H z`+5L{Vqs!ql?XM)xl=S$y11@UHkjM!AC~D#qH*pdQ~Yc0R2yoehT8-J=T38=Tw0Gr z+v*|s8PW#qJFZ3#g}GBZec^Ojjsc$G?A5jx^s}jcAuH|CE@!LBFlE5d z@Z-X9_MC(bMrrGH1axROfB){-bHQm+^$?6EioFX>*zRIk=3#p%1w25kLZJ(oN9MJT zno?^Ry_^bE)?M1V0^}r;S@#0jQCm}L6Y0zsz<{eJ9j3RXx`9B6`MzgjA7TeK%+>}{ znrCAv_LHvZ>#{QCF_Z=%Wc|2xNS7-9mVC)v(y+aJz{p}%Nq+40cBjbfo#AFv4EGnB z$_%H8C8sJ3H@-8N|H%b9dE8sP#lEKH`|_#xH=!lreGmZZMbPtNX|2o=uA#fAk|0M8 z_5M0-o8iZ9h=LkW?1ss3f`PJ(;er!s?HoIhAkpc4wcUJi0uE=WGxSO>at+O%f^L@# zJxV1{>*lZW{ya?qqc)ueDQ$a>wk=h2-G-^zZq{ImEBwJKRn&rv3V+NUV91?nHg|xK zI{*|jZTmNEn@4#^=0&UmCNI+lcC=MKu^by0d}PisZUF3Uv9;r|NcdBM$=jmoVtGqX*UQ_p@Q@dw??4cMuc=c- z%kp-Ukog02;{X51+b5C#M|m4DQ-Zvm2Ppqr-Zmg@^gre8*(U!@-ueOPzvOLIsI*0S z8yofC>j1TSw}Vc#(;Z?k|lq9Ojj%G*2Bh`e2=`VaE<4hT)uftKX$Tx5rN zdHW#pzspGV@8<1+<+M@VtQ!IxWgUlY>*$$9$ajf_#$b%VIf>YKi$F@SDlkC0?}XPt z=Io0gGN&`IDM2ASpbUaS)N9b@gO?KxcHeix3sYthIkXJqaUuxybP(oX`$7FVs6Tj<&DedD zDPs5ii&V%;>^@Nmg55V6`9ti!aIpK%sX2RO7H{^U1z4!J`~0}34A%x2Moc$i`lX=? z<}Hb75y)(?8y*wW4;OwIF#C8D5V;I|vO))Su1beVxRs2(OZQ|N^i_1yYX|B4*ihiJ zItf||c%x3n?oYF~8TJ#@4?;lI?0K{R8&?D{MjHt>b2#uXS_d{K!+vDgB4Fq;HTwz$ zf1*xHT2LP6L<|KmD$%_jb{=a&dzZ+U5{H-8rE4RUNLMJ%77ReBAxz)i0h?2mnrJI< zp&JY=ii5WAo-+l-QlhaLI2{PED3*$*VmsQx^y^=SAUfd~&Xxy3LvRa}Y$BKtgcnRJ zp;MU`OfC50X_%htee?_mPK{i>9T*U@xFU`c##&v%ct@7Xmo$ZuU37#Pf}x4fq1Nb| zFBs6lv~Hv%f(dN-s@n~Q;A0a*u)RX30%?dXgMz6JbkGuF2&%w83Uf>_`E(DFBSw-5 zZiD9(EWr{T4WyXs&*;iGjsK}lw6slXhVz&i%2A;2rJYLNz<#UH-Qn_dsR9BSK3Xcfa838(nZjwl6V#;DkC zHu#2f0KSkaegRBK(F;^r7H#{9vOQ0G-;P*{_NO+mt~EOSp$=dQhJz`{SC%7{C8l8J zRDW=fz5r7YI1S9mRC~V7-VDfIh}^?~+yr>^3H~nuF5`(p{}tGTHz22zb4RcSWj0_9 z%4}8aV$x1VtI7t)uYQ?EzdloFaeZboG>`H)9IU7iYnr_Xjucp~VNde*KQXR*R2<4$h`vqk!B1b1uKH*5M13YSmZk{E^|tm7+3> zYXv@iI;=ODOviNCTtcGS zwh5UQuqoJSeYv=%xbVXgkC-oapeZgc_lCPDFmMGW#F|ZUCj565cFU};0|OMf5n4A;~(RiOaP1djBm zF-o?*!O{P+=nb-%tZs}UrCp`8-B^k}PF&;KZu(`7&}FbpSL(<29dzokWED%z-T;R# z@$!OS4+eK4<@teM-iU>A4gMwAt^iI=!}f2b~z~H>a{Lsjq$!PHORaP>x z^wE+mW%xx}@k=1h3`-zT04{+*0fr@z9^^$_0@1+DZu}C+43Gn`1QNk7fpmr?5O6x+ zTd)QKMc^6;To~3s_#$u(1d4Fxi*V+P7#86L3s0mNXHrZ(QVcGF6p^J3z9hpU2wxH| zfzj24Bto|+FmHJA4OggsT22umPjWRCG= z+dIOp9e98}6?J7c6>=QAB5~)RMseVI9EBLXe>@e>TuLlCsgl49ko5pXIfRjw;v}I5 zU6!jn2CrB#-eAxgT$J*DpOt0jp~6r#Z6=-9TvbViLe}AK~&2rb&N+D2lCd>x<6cLQ4GQrV?7eCR+aEqf!34Z zY6A`$c(°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¬om5C*JRKbWN!*}ik#CZ;- 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°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