From c1d8e6d29ad4b6bb13ca69766c4813c0de2cfe11 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 9 Oct 2014 12:26:17 +0200 Subject: [PATCH] Corrected bug when reading basis set --- ocaml/Element.ml | 5 +++- src/Dets/determinants.irp.f | 19 ++++++++++++++ src/Dets/slater_rules.irp.f | 50 ++++++++++++++++++++++++++++++------- 3 files changed, 64 insertions(+), 10 deletions(-) diff --git a/ocaml/Element.ml b/ocaml/Element.ml index 07578e03..c6ab549e 100644 --- a/ocaml/Element.ml +++ b/ocaml/Element.ml @@ -1,3 +1,5 @@ +open Core.Std;; + exception ElementError of string type t = @@ -8,7 +10,8 @@ type t = |K |Ca|Sc|Ti|V |Cr|Mn|Fe|Co|Ni|Cu|Zn|Ga|Ge|As|Se|Br|Kr ;; -let of_string = function +let of_string x = + match (String.capitalize (String.lowercase x)) with | "X" | "Dummy" -> X | "H" | "Hydrogen" -> H | "He" | "Helium" -> He diff --git a/src/Dets/determinants.irp.f b/src/Dets/determinants.irp.f index 1b52fafd..4ac8eda4 100644 --- a/src/Dets/determinants.irp.f +++ b/src/Dets/determinants.irp.f @@ -310,12 +310,28 @@ subroutine save_wavefunction_general(ndet,nstates,psidet,psicoef) integer :: i,k + PROVIDE progress_bar + call start_progress(7,'Saving wfunction',0.d0) + + progress_bar(1) = 1 + progress_value = dble(progress_bar(1)) call ezfio_set_determinants_N_int(N_int) + progress_bar(1) = 2 + progress_value = dble(progress_bar(1)) call ezfio_set_determinants_bit_kind(bit_kind) + progress_bar(1) = 3 + progress_value = dble(progress_bar(1)) call ezfio_set_determinants_N_det(ndet) + progress_bar(1) = 4 + progress_value = dble(progress_bar(1)) call ezfio_set_determinants_n_states(nstates) + progress_bar(1) = 5 + progress_value = dble(progress_bar(1)) call ezfio_set_determinants_mo_label(mo_label) + progress_bar(1) = 6 + progress_value = dble(progress_bar(1)) + N_int2 = (N_int*bit_kind)/8 allocate (psi_det_save(N_int2,2,ndet)) do i=1,ndet @@ -336,6 +352,8 @@ subroutine save_wavefunction_general(ndet,nstates,psidet,psicoef) call ezfio_set_determinants_psi_det(psi_det_save) deallocate (psi_det_save) + progress_bar(7) = 7 + progress_value = dble(progress_bar(1)) allocate (psi_coef_save(ndet,nstates)) do k=1,nstates do i=1,ndet @@ -344,5 +362,6 @@ subroutine save_wavefunction_general(ndet,nstates,psidet,psicoef) enddo call ezfio_set_determinants_psi_coef(psi_coef_save) call write_int(output_dets,ndet,'Saved determinants') + call stop_progress deallocate (psi_coef_save) end diff --git a/src/Dets/slater_rules.irp.f b/src/Dets/slater_rules.irp.f index d14c30d9..7076df2f 100644 --- a/src/Dets/slater_rules.irp.f +++ b/src/Dets/slater_rules.irp.f @@ -953,23 +953,36 @@ END_PROVIDER BEGIN_PROVIDER [ integer*8, det_connections, (N_con_int,N_det) ] implicit none BEGIN_DOC - ! + ! Build connection proxy between determinants END_DOC integer :: i,j integer :: degree integer :: j_int, j_k, j_l integer, allocatable :: idx(:) + integer :: thread_num + !$ integer :: omp_get_thread_num + PROVIDE progress_bar + call start_progress(N_det,'Det connections',0.d0) + select case(N_int) case(1) + !$OMP PARALLEL DEFAULT (NONE) & - !$OMP SHARED(N_det, N_con_int, psi_det,N_int, det_connections)& - !$OMP PRIVATE(i,j_int,j_k,j_l,j,degree,idx) + !$OMP SHARED(N_det, N_con_int, psi_det,N_int, det_connections, & + !$OMP progress_bar,progress_value)& + !$OMP PRIVATE(i,j_int,j_k,j_l,j,degree,idx,thread_num) + + !$ thread_num = omp_get_thread_num() allocate (idx(0:N_det)) !$OMP DO SCHEDULE(guided) do i=1,N_det + if (thread_num == 0) then + progress_bar(1) = i + progress_value = dble(i) + endif do j_int=1,N_con_int det_connections(j_int,i) = 0_8 j_k = ishft(j_int-1,11) @@ -992,11 +1005,17 @@ BEGIN_PROVIDER [ integer*8, det_connections, (N_con_int,N_det) ] case(2) !$OMP PARALLEL DEFAULT (NONE) & - !$OMP SHARED(N_det, N_con_int, psi_det,N_int, det_connections)& - !$OMP PRIVATE(i,j_int,j_k,j_l,j,degree,idx) + !$OMP SHARED(N_det, N_con_int, psi_det,N_int, det_connections,& + !$OMP progress_bar,progress_value)& + !$OMP PRIVATE(i,j_int,j_k,j_l,j,degree,idx,thread_num) + !$ thread_num = omp_get_thread_num() allocate (idx(0:N_det)) !$OMP DO SCHEDULE(guided) do i=1,N_det + if (thread_num == 0) then + progress_bar(1) = i + progress_value = dble(i) + endif do j_int=1,N_con_int det_connections(j_int,i) = 0_8 j_k = ishft(j_int-1,11) @@ -1021,11 +1040,17 @@ BEGIN_PROVIDER [ integer*8, det_connections, (N_con_int,N_det) ] case(3) !$OMP PARALLEL DEFAULT (NONE) & - !$OMP SHARED(N_det, N_con_int, psi_det,N_int, det_connections)& - !$OMP PRIVATE(i,j_int,j_k,j_l,j,degree,idx) + !$OMP SHARED(N_det, N_con_int, psi_det,N_int, det_connections,& + !$OMP progress_bar,progress_value)& + !$OMP PRIVATE(i,j_int,j_k,j_l,j,degree,idx,thread_num) + !$ thread_num = omp_get_thread_num() allocate (idx(0:N_det)) !$OMP DO SCHEDULE(guided) do i=1,N_det + if (thread_num == 0) then + progress_bar(1) = i + progress_value = dble(i) + endif do j_int=1,N_con_int det_connections(j_int,i) = 0_8 j_k = ishft(j_int-1,11) @@ -1053,11 +1078,17 @@ BEGIN_PROVIDER [ integer*8, det_connections, (N_con_int,N_det) ] !$OMP PARALLEL DEFAULT (NONE) & - !$OMP SHARED(N_det, N_con_int, psi_det,N_int, det_connections)& - !$OMP PRIVATE(i,j_int,j_k,j_l,j,degree,idx) + !$OMP SHARED(N_det, N_con_int, psi_det,N_int, det_connections,& + !$OMP progress_bar,progress_value)& + !$OMP PRIVATE(i,j_int,j_k,j_l,j,degree,idx,thread_num) + !$ thread_num = omp_get_thread_num() allocate (idx(0:N_det)) !$OMP DO SCHEDULE(guided) do i=1,N_det + if (thread_num == 0) then + progress_bar(1) = i + progress_value = dble(i) + endif do j_int=1,N_con_int det_connections(j_int,i) = 0_8 j_k = ishft(j_int-1,11) @@ -1078,6 +1109,7 @@ BEGIN_PROVIDER [ integer*8, det_connections, (N_con_int,N_det) ] !$OMP END PARALLEL end select + call stop_progress END_PROVIDER