From 4dda44e324ce4937b569af11245e9fa2f0103c0a Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 4 Apr 2016 12:43:50 +0200 Subject: [PATCH 1/5] Added swap_mos program --- src/MO_Basis/swap_mos.irp.f | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/MO_Basis/swap_mos.irp.f diff --git a/src/MO_Basis/swap_mos.irp.f b/src/MO_Basis/swap_mos.irp.f new file mode 100644 index 00000000..df0dc64d --- /dev/null +++ b/src/MO_Basis/swap_mos.irp.f @@ -0,0 +1,14 @@ +program swap_mos + implicit none + integer :: i,j, i1, i2 + double precision :: x + print *, 'MOs to swap?' + read(*,*) i1, i2 + do i=1,ao_num_align + x = mo_coef(i,i1) + mo_coef(i,i1) = mo_coef(i,i2) + mo_coef(i,i2) = x + enddo + call save_mos + +end From 3298edad85bd73419cf801a8af8e17f9aa32341c Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 7 Apr 2016 10:55:21 +0200 Subject: [PATCH 2/5] Removed normalization of psi_ref in lambda_MRCC --- plugins/MRCC_Utils/mrcc_utils.irp.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/MRCC_Utils/mrcc_utils.irp.f b/plugins/MRCC_Utils/mrcc_utils.irp.f index e6c84a06..4ac48602 100644 --- a/plugins/MRCC_Utils/mrcc_utils.irp.f +++ b/plugins/MRCC_Utils/mrcc_utils.irp.f @@ -16,7 +16,7 @@ lambda_mrcc_pt2(0) = 0 do i=1,N_det_non_ref - call i_h_psi(psi_non_ref(1,1,i), psi_ref, psi_ref_coef_normalized, N_int, N_det_ref,& + call i_h_psi(psi_non_ref(1,1,i), psi_ref, psi_ref_coef, N_int, N_det_ref,& size(psi_ref_coef,1), N_states,ihpsi_current) call i_H_j(psi_non_ref(1,1,i),psi_non_ref(1,1,i),N_int,hii) do k=1,N_states From 0821e76995de7764e076c0013976d9b7023e010b Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 11 Apr 2016 10:39:27 +0200 Subject: [PATCH 3/5] Extract CAS --- plugins/FOBOCI/H_apply_dressed_autonom.irp.f | 8 +++++--- plugins/Psiref_CAS/psi_ref.irp.f | 14 -------------- plugins/Psiref_Utils/NEEDED_CHILDREN_MODULES | 1 + plugins/Psiref_Utils/psi_ref_utils.irp.f | 16 ++++++++++++++++ 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/plugins/FOBOCI/H_apply_dressed_autonom.irp.f b/plugins/FOBOCI/H_apply_dressed_autonom.irp.f index 657ea22e..69929afd 100644 --- a/plugins/FOBOCI/H_apply_dressed_autonom.irp.f +++ b/plugins/FOBOCI/H_apply_dressed_autonom.irp.f @@ -273,7 +273,8 @@ subroutine H_apply_dressed_pert_monoexc(key_in, hole_1,particl_1,i_generator,ipr integer,parameter :: size_max = 3072 integer, intent(in) :: Ndet_generators - double precision, intent(in) :: delta_ij_generators_(Ndet_generators,Ndet_generators),E_ref + double precision, intent(in) :: E_ref + double precision, intent(inout) :: delta_ij_generators_(Ndet_generators,Ndet_generators) integer(bit_kind), intent(in) :: psi_det_generators_input(N_int,2,Ndet_generators) integer ,intent(in) :: i_generator @@ -437,8 +438,9 @@ subroutine H_apply_dressed_pert(delta_ij_generators_, Ndet_generators,psi_det_g integer, intent(in) :: Ndet_generators - integer(bit_kind), intent(in) :: psi_det_generators_input(N_int,2,Ndet_generators),E_ref - double precision, intent(in) :: delta_ij_generators_(Ndet_generators,Ndet_generators) + double precision, intent(in) :: E_ref + double precision, intent(inout) :: delta_ij_generators_(Ndet_generators,Ndet_generators) + integer(bit_kind), intent(in) :: psi_det_generators_input(N_int,2,Ndet_generators) integer :: i_generator, nmax diff --git a/plugins/Psiref_CAS/psi_ref.irp.f b/plugins/Psiref_CAS/psi_ref.irp.f index c7b9867f..6beca8f2 100644 --- a/plugins/Psiref_CAS/psi_ref.irp.f +++ b/plugins/Psiref_CAS/psi_ref.irp.f @@ -26,20 +26,6 @@ use bitmasks END_PROVIDER -BEGIN_PROVIDER [ double precision, psi_ref_coef_normalized, (psi_det_size,n_states) ] - implicit none - BEGIN_DOC -! Normalized coefficients of the reference - END_DOC - integer :: i,j,k - do k=1,N_states - do j=1,N_det_ref - psi_ref_coef_normalized(j,k) = psi_ref_coef(j,k) - enddo - call normalize(psi_ref_coef_normalized(1,k), N_det_ref) - enddo - -END_PROVIDER BEGIN_PROVIDER [ integer(bit_kind), psi_ref_restart, (N_int,2,psi_det_size) ] &BEGIN_PROVIDER [ double precision, psi_ref_coef_restart, (psi_det_size,n_states) ] diff --git a/plugins/Psiref_Utils/NEEDED_CHILDREN_MODULES b/plugins/Psiref_Utils/NEEDED_CHILDREN_MODULES index e69de29b..065099eb 100644 --- a/plugins/Psiref_Utils/NEEDED_CHILDREN_MODULES +++ b/plugins/Psiref_Utils/NEEDED_CHILDREN_MODULES @@ -0,0 +1 @@ +Bitmask Determinants diff --git a/plugins/Psiref_Utils/psi_ref_utils.irp.f b/plugins/Psiref_Utils/psi_ref_utils.irp.f index 5115ba23..41db2f10 100644 --- a/plugins/Psiref_Utils/psi_ref_utils.irp.f +++ b/plugins/Psiref_Utils/psi_ref_utils.irp.f @@ -27,6 +27,22 @@ BEGIN_PROVIDER [ double precision, psi_ref_coef_transp, (n_states,psi_det_size) enddo END_PROVIDER +BEGIN_PROVIDER [ double precision, psi_ref_coef_normalized, (psi_det_size,n_states) ] + implicit none + BEGIN_DOC +! Normalized coefficients of the reference + END_DOC + integer :: i,j,k + do k=1,N_states + do j=1,N_det_ref + psi_ref_coef_normalized(j,k) = psi_ref_coef(j,k) + enddo + call normalize(psi_ref_coef_normalized(1,k), N_det_ref) + enddo + +END_PROVIDER + + BEGIN_PROVIDER [ double precision, psi_non_ref_coef_transp, (n_states,psi_det_size) ] implicit none BEGIN_DOC From ac58cfd0cea5683a1d906ac83f35f10aaa1f9dcd Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 11 Apr 2016 10:48:36 +0200 Subject: [PATCH 4/5] Forgot files --- plugins/Psiref_CAS/overwrite_with_cas.irp.f | 3 +++ plugins/Psiref_Utils/extract_ref.irp.f | 24 +++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 plugins/Psiref_CAS/overwrite_with_cas.irp.f create mode 100644 plugins/Psiref_Utils/extract_ref.irp.f diff --git a/plugins/Psiref_CAS/overwrite_with_cas.irp.f b/plugins/Psiref_CAS/overwrite_with_cas.irp.f new file mode 100644 index 00000000..4d3d217d --- /dev/null +++ b/plugins/Psiref_CAS/overwrite_with_cas.irp.f @@ -0,0 +1,3 @@ +program overwrite_w_cas + call extract_ref +end diff --git a/plugins/Psiref_Utils/extract_ref.irp.f b/plugins/Psiref_Utils/extract_ref.irp.f new file mode 100644 index 00000000..0e9b5741 --- /dev/null +++ b/plugins/Psiref_Utils/extract_ref.irp.f @@ -0,0 +1,24 @@ +subroutine extract_ref + implicit none + BEGIN_DOC + ! Replaces the total wave function by the normalized projection on the reference + END_DOC + + integer :: i,j,k + do k=1,N_states + do j=1,N_det_ref + psi_coef(j,k) = psi_ref_coef_normalized(j,k) + enddo + enddo + + do j=1,N_det_ref + do k=1,N_int + psi_det(k,1,j) = psi_ref(k,1,j) + psi_det(k,2,j) = psi_ref(k,2,j) + enddo + enddo + N_det = N_det_ref + + call save_wavefunction + +end From eec834be961c8e5696ea160554755f647a2a3206 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Sat, 16 Apr 2016 21:18:38 +0200 Subject: [PATCH 5/5] Print mask --- configure | 7 ++- ocaml/qp_set_mo_class.ml | 60 ++++++++++++++++++++++---- scripts/compilation/qp_create_ninja.py | 2 +- 3 files changed, 59 insertions(+), 10 deletions(-) diff --git a/configure b/configure index b217cbea..c3a22683 100755 --- a/configure +++ b/configure @@ -46,7 +46,12 @@ if len(sys.argv) != 3: # \_| |_ (_) |_) (_| | | | | | (_) # -QP_ROOT = os.getcwd() +try: + QP_ROOT = os.environ["QP_ROOT"] +except KeyError: + QP_ROOT = os.getcwd() + os.environ["QP_ROOT"] = QP_ROOT + QP_ROOT_BIN = join(QP_ROOT, "bin") QP_ROOT_LIB = join(QP_ROOT, "lib") QP_ROOT_INSTALL = join(QP_ROOT, "install") diff --git a/ocaml/qp_set_mo_class.ml b/ocaml/qp_set_mo_class.ml index f5555c9c..aaf11422 100644 --- a/ocaml/qp_set_mo_class.ml +++ b/ocaml/qp_set_mo_class.ml @@ -49,20 +49,20 @@ let t_to_string = function | None -> assert false ;; -let run ?(core="[]") ?(inact="[]") ?(act="[]") ?(virt="[]") ?(del="[]") ezfio_filename = +let set ~core ~inact ~act ~virt ~del = - Ezfio.set_file ezfio_filename ; - if not (Ezfio.has_mo_basis_mo_tot_num ()) then - failwith "mo_basis/mo_tot_num not found" ; - - let mo_tot_num = Ezfio.get_mo_basis_mo_tot_num () in + let mo_tot_num = + Ezfio.get_mo_basis_mo_tot_num () + in let n_int = try N_int_number.of_int (Ezfio.get_determinants_n_int ()) with _ -> Bitlist.n_int_of_mo_tot_num mo_tot_num in - let mo_class = Array.init mo_tot_num ~f:(fun i -> None) in + let mo_class = + Array.init mo_tot_num ~f:(fun i -> None) + in (* Check input data *) let apply_class l = @@ -196,6 +196,49 @@ let run ?(core="[]") ?(inact="[]") ?(act="[]") ?(virt="[]") ?(del="[]") ezfio_fi |> Ezfio.set_bitmasks_cas; ;; +let get () = + + let mo_tot_num = + Ezfio.get_mo_basis_mo_tot_num () + in + let n_int = + try N_int_number.of_int (Ezfio.get_determinants_n_int ()) + with _ -> Bitlist.n_int_of_mo_tot_num mo_tot_num + in + + let bitmasks = + match Input.Bitmasks.read () with + | Some x -> x + | None -> failwith "No data to print" + in + assert (bitmasks.Input.Bitmasks.n_mask_gen |> Bitmask_number.to_int = 1); + assert (bitmasks.Input.Bitmasks.n_mask_cas |> Bitmask_number.to_int = 1); + + let (generators,cas) = + Bitlist.of_int64_array bitmasks.Input.Bitmasks.generators, + Bitlist.of_int64_array bitmasks.Input.Bitmasks.cas + in + + Printf.printf "MO : %d\n" mo_tot_num; + Printf.printf "n_int: %d\n" (N_int_number.to_int n_int); + Printf.printf "Gen : %s\nCAS : %s\n" + (Bitlist.to_string generators) + (Bitlist.to_string cas) + +;; + +let run ~print ?(core="[]") ?(inact="[]") ?(act="[]") ?(virt="[]") ?(del="[]") ezfio_filename = + + Ezfio.set_file ezfio_filename ; + if not (Ezfio.has_mo_basis_mo_tot_num ()) then + failwith "mo_basis/mo_tot_num not found" ; + + if print then + get () + else + set ~core ~inact ~act ~virt ~del +;; + let ezfio_file = let failure filename = eprintf "'%s' is not an EZFIO file.\n%!" filename; @@ -240,6 +283,7 @@ let spec = +> flag "act" (optional string) ~doc:"range Range of active orbitals" +> flag "virt" (optional string) ~doc:"range Range of virtual orbitals" +> flag "del" (optional string) ~doc:"range Range of deleted orbitals" + +> flag "print" no_arg ~doc:" Print the current masks" +> anon ("ezfio_filename" %: ezfio_file) ;; @@ -251,7 +295,7 @@ let command = The range of MOs has the form : \"[36-53,72-107,126-131]\" ") spec - (fun core inact act virt del ezfio_filename () -> run ?core ?inact ?act ?virt ?del ezfio_filename ) + (fun core inact act virt del print ezfio_filename () -> run ~print ?core ?inact ?act ?virt ?del ezfio_filename ) ;; let () = diff --git a/scripts/compilation/qp_create_ninja.py b/scripts/compilation/qp_create_ninja.py index d089e76b..adcfb6f7 100755 --- a/scripts/compilation/qp_create_ninja.py +++ b/scripts/compilation/qp_create_ninja.py @@ -184,7 +184,7 @@ def ninja_ezfio_config_rule(): def get_children_of_ezfio_cfg(l_module_with_ezfio_cfg): """ - From a module list of ezfio_cfg return all the stuff create by him + From a module list of ezfio_cfg return all the stuff created by it """ config_folder = join(QP_EZFIO, "config")