From 3284b9d645b0df4b4721403b12fae4369b37646e Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 27 Mar 2015 13:32:43 +0100 Subject: [PATCH] Added spindeterminants EZFIO routines --- src/Dets/spindeterminants.ezfio_config | 10 ++++++ src/Dets/spindeterminants.irp.f | 44 ++++++++++++++++++++++++++ src/Makefile | 2 +- 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/Dets/spindeterminants.ezfio_config create mode 100644 src/Dets/spindeterminants.irp.f diff --git a/src/Dets/spindeterminants.ezfio_config b/src/Dets/spindeterminants.ezfio_config new file mode 100644 index 00000000..e6a0ed9a --- /dev/null +++ b/src/Dets/spindeterminants.ezfio_config @@ -0,0 +1,10 @@ +spindeterminants + n_det_alpha integer + n_det_beta integer + n_int integer + bit_kind integer + n_states integer + psi_det_alpha integer*8 (spindeterminants_n_int*spindeterminants_bit_kind/8,spindeterminants_n_det_alpha) + psi_det_beta integer*8 (spindeterminants_n_int*spindeterminants_bit_kind/8,spindeterminants_n_det_beta) + psi_coef_matrix double precision (spindeterminants_n_det_alpha,spindeterminants_n_det_beta,spindeterminants_n_states) + diff --git a/src/Dets/spindeterminants.irp.f b/src/Dets/spindeterminants.irp.f new file mode 100644 index 00000000..236dc1fc --- /dev/null +++ b/src/Dets/spindeterminants.irp.f @@ -0,0 +1,44 @@ +subroutine write_spindeterminants + use bitmasks + implicit none + integer*8, allocatable :: tmpdet(:,:) + integer :: N_int2 + integer :: i,j,k + integer*8 :: det_8(100) + integer(bit_kind) :: det_bk((100*8)/bit_kind) + equivalence (det_8, det_bk) + + N_int2 = (N_int*bit_kind)/8 + call ezfio_set_spindeterminants_n_det_alpha(N_det_alpha_unique) + call ezfio_set_spindeterminants_n_det_beta(N_det_beta_unique) + call ezfio_set_spindeterminants_n_int(N_int) + call ezfio_set_spindeterminants_bit_kind(bit_kind) + call ezfio_set_spindeterminants_n_states(N_states) + + allocate(tmpdet(N_int2,N_det_alpha_unique)) + do i=1,N_det_alpha_unique + do k=1,N_int + det_bk(k) = psi_det_alpha_unique(k,i) + enddo + do k=1,N_int2 + tmpdet(k,i) = det_8(k) + enddo + enddo + call ezfio_set_spindeterminants_psi_det_alpha(psi_det_alpha_unique) + deallocate(tmpdet) + + allocate(tmpdet(N_int2,N_det_beta_unique)) + do i=1,N_det_beta_unique + do k=1,N_int + det_bk(k) = psi_det_beta_unique(k,i) + enddo + do k=1,N_int2 + tmpdet(k,i) = det_8(k) + enddo + enddo + call ezfio_set_spindeterminants_psi_det_beta(psi_det_beta_unique) + deallocate(tmpdet) + + call ezfio_set_spindeterminants_psi_coef_matrix(psi_svd_matrix) + +end diff --git a/src/Makefile b/src/Makefile index 298cc134..245868a8 100644 --- a/src/Makefile +++ b/src/Makefile @@ -21,7 +21,7 @@ $(ALL_MODULES): ezfio $(QPACKAGE_ROOT)/scripts/build_modules.sh $@ # Define the EZFIO rules -$(EZFIO): $(wildcard $(QPACKAGE_ROOT)/src/*.ezfio_config) $(wildcard $(QPACKAGE_ROOT)/src/*/EZFIO.cfg) +$(EZFIO): $(wildcard $(QPACKAGE_ROOT)/src/*/*.ezfio_config) $(wildcard $(QPACKAGE_ROOT)/src/*/EZFIO.cfg) $(QPACKAGE_ROOT)/scripts/prepare_ezfio.sh cd $(EZFIO_DIR);\ export FC="$(FC)" ; export FCFLAGS="$(FCFLAGS)" ; export IRPF90="$(IRPF90)" ;\