From 3fd6e3c83b761b66f46a9e7f25d90fdf8f5d0c7b Mon Sep 17 00:00:00 2001 From: Yann Garniron Date: Fri, 18 Dec 2015 12:07:49 +0100 Subject: [PATCH] optimized --- plugins/CASSCF/ezfio_interface.irp.f | 4 - plugins/Perturbation/perturbation.template.f | 10 +- scripts/generate_h_apply.py | 6 +- src/Determinants/ezfio_interface.irp.f | 334 ------------------- 4 files changed, 10 insertions(+), 344 deletions(-) delete mode 100644 plugins/CASSCF/ezfio_interface.irp.f delete mode 100644 src/Determinants/ezfio_interface.irp.f diff --git a/plugins/CASSCF/ezfio_interface.irp.f b/plugins/CASSCF/ezfio_interface.irp.f deleted file mode 100644 index b086268f..00000000 --- a/plugins/CASSCF/ezfio_interface.irp.f +++ /dev/null @@ -1,4 +0,0 @@ -! DO NOT MODIFY BY HAND -! Created by $QP_ROOT/scripts/ezfio_interface.py -! from file /home/garniron/quantum_package/src/CASSCF/EZFIO.cfg - diff --git a/plugins/Perturbation/perturbation.template.f b/plugins/Perturbation/perturbation.template.f index 37f7840e..1c7f4dc4 100644 --- a/plugins/Perturbation/perturbation.template.f +++ b/plugins/Perturbation/perturbation.template.f @@ -98,9 +98,13 @@ subroutine perturb_buffer_$PERT(i_generator,buffer,buffer_size,e_2_pert_buffer,c else smallerlist = mobiles(2) end if - microlist(:,:,N_microlist(0)+1:N_microlist(0)+N_microlist(smallerlist),0) = microlist(:,:,1:N_microlist(smallerlist),smallerlist) - idx_microlist(N_microlist(0)+1:N_microlist(0)+N_microlist(smallerlist),0) = idx_microlist(1:N_microlist(smallerlist),smallerlist) -! call pt2_$PERT(psi_det_generators(1,1,i_generator),buffer(1,1,i), fock_diag_tmp, & + + if(N_microlist(smallerlist) > 0) then + microlist(:,:,N_microlist(0)+1:N_microlist(0)+N_microlist(smallerlist),0) = microlist(:,:,1:N_microlist(smallerlist),smallerlist) + idx_microlist(N_microlist(0)+1:N_microlist(0)+N_microlist(smallerlist),0) = idx_microlist(1:N_microlist(smallerlist),smallerlist) + end if + !if (N_minilist > 23 .and. N_minilist < 500) print *, "***************", N_det_selectors, N_minilist, N_microlist(0), N_microlist(smallerlist), buffer_size + ! call pt2_$PERT(psi_det_generators(1,1,i_generator),buffer(1,1,i), fock_diag_tmp, & ! c_pert,e_2_pert,H_pert_diag,Nint,N_microlist(smallerlist),n_st,microlist(:,:,:,smallerList),idx_microlist(:,smallerlist),N_microlist(smallerlist)) call pt2_$PERT(psi_det_generators(1,1,i_generator),buffer(1,1,i), fock_diag_tmp, & c_pert,e_2_pert,H_pert_diag,Nint,N_microlist(smallerlist)+N_microlist(0),n_st,microlist(:,:,:,0),idx_microlist(:,0),N_microlist(smallerlist)+N_microlist(0)) diff --git a/scripts/generate_h_apply.py b/scripts/generate_h_apply.py index e1c915bc..6194f5bc 100755 --- a/scripts/generate_h_apply.py +++ b/scripts/generate_h_apply.py @@ -99,7 +99,7 @@ class H_apply(object): deallocate(H_jj,iorder) """ - s["size_max"] = "256" + s["size_max"] = "2048" s["copy_buffer"] = """call copy_H_apply_buffer_to_wf if (s2_eig) then call make_s2_eigenfunction @@ -198,7 +198,7 @@ class H_apply(object): !$ call omp_unset_lock(lck) deallocate (e_2_pert_buffer, coef_pert_buffer) """ - self.data["size_max"] = "256" + self.data["size_max"] = "2048" self.data["initialization"] = """ PROVIDE psi_selectors_coef psi_selectors E_corr_per_selectors psi_det_sorted_bit """ @@ -265,7 +265,7 @@ class H_apply(object): double precision, intent(inout) :: select_max_out""" self.data["params_post"] += ", select_max(min(i_generator,size(select_max,1)))" - self.data["size_max"] = "256" + self.data["size_max"] = "2048" self.data["copy_buffer"] = """ call copy_H_apply_buffer_to_wf if (s2_eig) then diff --git a/src/Determinants/ezfio_interface.irp.f b/src/Determinants/ezfio_interface.irp.f deleted file mode 100644 index b68043b0..00000000 --- a/src/Determinants/ezfio_interface.irp.f +++ /dev/null @@ -1,334 +0,0 @@ -! DO NOT MODIFY BY HAND -! Created by $QP_ROOT/scripts/ezfio_interface.py -! from file /home/garniron/quantum_package/src/Determinants/EZFIO.cfg - - -BEGIN_PROVIDER [ double precision, threshold_selectors ] - implicit none - BEGIN_DOC -! Thresholds on selectors (fraction of the norm) - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_threshold_selectors(has) - if (has) then - call ezfio_get_determinants_threshold_selectors(threshold_selectors) - else - print *, 'determinants/threshold_selectors not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_double(output_determinants, threshold_selectors, & - 'threshold_selectors') - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, expected_s2 ] - implicit none - BEGIN_DOC -! Expected value of S^2 - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_expected_s2(has) - if (has) then - call ezfio_get_determinants_expected_s2(expected_s2) - else - print *, 'determinants/expected_s2 not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_double(output_determinants, expected_s2, & - 'expected_s2') - -END_PROVIDER - -BEGIN_PROVIDER [ integer, n_det_max ] - implicit none - BEGIN_DOC -! Max number of determinants in the wave function - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_n_det_max(has) - if (has) then - call ezfio_get_determinants_n_det_max(n_det_max) - else - print *, 'determinants/n_det_max not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_int(output_determinants, n_det_max, & - 'n_det_max') - -END_PROVIDER - -BEGIN_PROVIDER [ integer, n_states ] - implicit none - BEGIN_DOC -! Number of states to consider - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_n_states(has) - if (has) then - call ezfio_get_determinants_n_states(n_states) - else - print *, 'determinants/n_states not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_int(output_determinants, n_states, & - 'n_states') - -END_PROVIDER - -BEGIN_PROVIDER [ integer, n_det_max_jacobi ] - implicit none - BEGIN_DOC -! Maximum number of determinants diagonalized by Jacobi - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_n_det_max_jacobi(has) - if (has) then - call ezfio_get_determinants_n_det_max_jacobi(n_det_max_jacobi) - else - print *, 'determinants/n_det_max_jacobi not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_int(output_determinants, n_det_max_jacobi, & - 'n_det_max_jacobi') - -END_PROVIDER - -BEGIN_PROVIDER [ logical, read_wf ] - implicit none - BEGIN_DOC -! If true, read the wave function from the EZFIO file - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_read_wf(has) - if (has) then - call ezfio_get_determinants_read_wf(read_wf) - else - print *, 'determinants/read_wf not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_bool(output_determinants, read_wf, & - 'read_wf') - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, det_coef , (n_det) ] - implicit none - BEGIN_DOC -! det_coef - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_det_coef(has) - if (has) then - call ezfio_get_determinants_det_coef(det_coef) - else - print *, 'determinants/det_coef not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_double(output_determinants, det_coef, & - 'det_coef') - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, target_energy ] - implicit none - BEGIN_DOC -! Energy that should be obtained when truncating the wave function (optional) - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_target_energy(has) - if (has) then - call ezfio_get_determinants_target_energy(target_energy) - else - print *, 'determinants/target_energy not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_double(output_determinants, target_energy, & - 'target_energy') - -END_PROVIDER - -BEGIN_PROVIDER [ logical, only_single_double_dm ] - implicit none - BEGIN_DOC -! If true, The One body DM is calculated with ignoring the Double<->Doubles extra diag elements - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_only_single_double_dm(has) - if (has) then - call ezfio_get_determinants_only_single_double_dm(only_single_double_dm) - else - print *, 'determinants/only_single_double_dm not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_bool(output_determinants, only_single_double_dm, & - 'only_single_double_dm') - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, threshold_davidson ] - implicit none - BEGIN_DOC -! Thresholds of Davidson's algorithm - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_threshold_davidson(has) - if (has) then - call ezfio_get_determinants_threshold_davidson(threshold_davidson) - else - print *, 'determinants/threshold_davidson not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_double(output_determinants, threshold_davidson, & - 'threshold_davidson') - -END_PROVIDER - -BEGIN_PROVIDER [ integer, n_states_diag ] - implicit none - BEGIN_DOC -! n_states_diag - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_n_states_diag(has) - if (has) then - call ezfio_get_determinants_n_states_diag(n_states_diag) - else - print *, 'determinants/n_states_diag not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_int(output_determinants, n_states_diag, & - 'n_states_diag') - -END_PROVIDER - -BEGIN_PROVIDER [ integer, det_occ , (elec_alpha_num,n_det,2) ] - implicit none - BEGIN_DOC -! det_occ - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_det_occ(has) - if (has) then - call ezfio_get_determinants_det_occ(det_occ) - else - print *, 'determinants/det_occ not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_int(output_determinants, det_occ, & - 'det_occ') - -END_PROVIDER - -BEGIN_PROVIDER [ logical, s2_eig ] - implicit none - BEGIN_DOC -! Force the wave function to be an eigenfunction of S^2 - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_s2_eig(has) - if (has) then - call ezfio_get_determinants_s2_eig(s2_eig) - else - print *, 'determinants/s2_eig not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_bool(output_determinants, s2_eig, & - 's2_eig') - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, threshold_generators ] - implicit none - BEGIN_DOC -! Thresholds on generators (fraction of the norm) - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_threshold_generators(has) - if (has) then - call ezfio_get_determinants_threshold_generators(threshold_generators) - else - print *, 'determinants/threshold_generators not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_double(output_determinants, threshold_generators, & - 'threshold_generators') - -END_PROVIDER - -BEGIN_PROVIDER [ integer, n_det_max_property ] - implicit none - BEGIN_DOC -! Max number of determinants in the wave function when you select for a given property - END_DOC - - logical :: has - PROVIDE ezfio_filename - call ezfio_has_determinants_n_det_max_property(has) - if (has) then - call ezfio_get_determinants_n_det_max_property(n_det_max_property) - else - print *, 'determinants/n_det_max_property not found in EZFIO file' - stop 1 - endif - - call write_time(output_determinants) - call write_int(output_determinants, n_det_max_property, & - 'n_det_max_property') - -END_PROVIDER