diff --git a/.travis.yml b/.travis.yml index 0ca4d142..9aadf7ef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,10 +6,10 @@ python: before_script: - sudo apt-get update - - sudo apt-get install gfortran liblapack-dev zip + - sudo apt-get install gfortran liblapack-dev script: - - ./setup_environment.sh --robot + - ./setup_environment.sh --robot - source ./quantum_package.rc - cp ./src/Makefile.config.gfortran ./src/Makefile.config - make build diff --git a/Makefile b/Makefile index bced5d0f..ec555670 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ BLUE= BLACK=(B -.PHONY: doc src curl m4 ocaml irpf90 emsl build binary +.PHONY: doc src ocaml build binary default: @echo ----------------------------------------------- @@ -26,72 +26,23 @@ build: @echo source quantum_package.rc @echo ----------------------------------------------- else -build: EZFIO curl m4 irpf90 emsl +build: $(MAKE) -C src $(MAKE) -C ocaml endif -curl: bin/curl -m4: bin/m4 -irpf90: bin/irpf90 -emsl: EMSL_Basis - binary: $(QPACKAGE_ROOT)/scripts/make_binary.sh -resultsFile: - $(info $(BLUE)===== Installing resultsFile ===== $(BLACK)) - @sleep 1 - $(QPACKAGE_ROOT)/scripts/install_resultsFile.sh - -EZFIO: bin/irpf90 - $(info $(BLUE)===== Installing EZFIO ===== $(BLACK)) - @sleep 1 - QPACKAGE_ROOT=$$PWD ./scripts/install_ezfio.sh | tee install_ezfio.log - -EMSL_Basis: - $(info $(BLUE)===== Installing EMSL_Basis_Set_Exchange_Local ===== $(BLACK)) - @sleep 1 - QPACKAGE_ROOT=$$PWD ./scripts/install_emsl.sh | tee install_emsl.log - -zlib: - $(info $(BLUE)===== Installing Zlib ===== $(BLACK)) - @sleep 1 - QPACKAGE_ROOT=$$PWD ./scripts/install_zlib.sh | tee install_zlib.log - - -bin/irpf90: - $(info $(BLUE)===== Installing IRPF90 ===== $(BLACK)) - @sleep 1 - QPACKAGE_ROOT=$$PWD ./scripts/install_irpf90.sh | tee install_irpf90.log - doc: $(MAKE) -C doc -src: irpf90 EZFIO ocaml - @export QPACKAGE_ROOT=$$PWD ; \ +src: $(MAKE) -C src -bin/curl: - $(info $(BLUE)===== Installing curl =====$(BLACK)) - @sleep 1 - QPACKAGE_ROOT=$$PWD ./scripts/install_curl.sh | tee install_curl.log - -bin/m4: - $(info $(BLUE)===== Installing m4 =====$(BLACK)) - @sleep 1 - QPACKAGE_ROOT=$$PWD ./scripts/install_m4.sh | tee install_m4.log - - -ocaml: curl m4 emsl zlib - - rm -f -- ocaml/Qptypes.ml +ocaml: $(MAKE) ocaml/Qptypes.ml -ocaml/Qptypes.ml: - $(info $(BLUE)===== Installing ocaml =====$(BLACK)) - @sleep 1 - QPACKAGE_ROOT=$$PWD ./scripts/install_ocaml.sh | tee install_ocaml.log - veryclean: rm -rf EZFIO $(MAKE) EZFIO diff --git a/ocaml/Makefile b/ocaml/Makefile index 2c3fae01..25598e1f 100644 --- a/ocaml/Makefile +++ b/ocaml/Makefile @@ -52,7 +52,9 @@ doc: qpackage.odocl $(OCAMLBUILD) $*.byte -use-ocamlfind $(PKGS) ln -s $*.byte $* -%.native: $(MLFILES) $(MLIFILES) executables +qp_run.native: $(MLFILES) $(MLIFILES) executables + +%.native: $(MLFILES) $(MLIFILES) rm -f -- $* $(OCAMLBUILD) $*.native -use-ocamlfind $(PKGS) ln -s $*.native $* @@ -65,7 +67,6 @@ qptypes_generator.byte: qptypes_generator.ml Qptypes.ml: qptypes_generator.byte ./qptypes_generator.byte > Qptypes.ml - rm qptypes_generator.byte ${QPACKAGE_ROOT}/EZFIO/Ocaml/ezfio.ml: $(MAKE) -C ${QPACKAGE_ROOT}/src ezfio diff --git a/scripts/build_modules.sh b/scripts/build_modules.sh index 5aedc105..5607c72b 100755 --- a/scripts/build_modules.sh +++ b/scripts/build_modules.sh @@ -32,3 +32,4 @@ Build failed for module $MODULE fi cd ${OLDPWD} done +${QPACKAGE_ROOT}/scripts/create_executables_list.sh diff --git a/scripts/run_Makefile_global.sh b/scripts/run_Makefile_global.sh index 82dee8ab..fc9e168a 100755 --- a/scripts/run_Makefile_global.sh +++ b/scripts/run_Makefile_global.sh @@ -18,6 +18,8 @@ source ${QPACKAGE_ROOT}/scripts/qp_include.sh check_current_dir_is_src +IRPF90="${QPACKAGE_ROOT}/bin/irpf90 ${IRPF90_FLAGS}" + # Check if the user's config exists if [[ ! -f ${QPACKAGE_ROOT}/src/Makefile.config ]] diff --git a/setup_environment.sh b/setup_environment.sh index 8db6a11c..c3dc4194 100755 --- a/setup_environment.sh +++ b/setup_environment.sh @@ -11,23 +11,6 @@ BLACK="(B" QPACKAGE_ROOT="$( cd "$(dirname "$BASH_SOURCE")" ; pwd -P )" -if [[ -z "${IRPF90}" ]] ; -then - make irpf90 - IRPF90="${QPACKAGE_ROOT}"/bin/irpf90 - if [[ ! -x "${IRPF90}" ]] - then - echo $RED "Error in IRPF90 installation" $BLACK - exit 1 - fi -fi - - -if [[ -z ${OCAMLBREW_BASE} ]] -then - export OCAMLBREW_BASE="$HOME/ocamlbrew" -fi - cat << EOF > quantum_package.rc export IRPF90="${IRPF90}" export QPACKAGE_ROOT=\$( cd \$(dirname "\${BASH_SOURCE}") ; pwd -P ) @@ -58,7 +41,6 @@ then exit 1 fi - if [[ ! -x ${QPACKAGE_ROOT}/bin/irpman ]] then echo $RED "Error in IRPF90 installation" $BLACK 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/Hartree_Fock/damping_SCF.irp.f b/src/Hartree_Fock/damping_SCF.irp.f index f0f59080..d55bc8b8 100644 --- a/src/Hartree_Fock/damping_SCF.irp.f +++ b/src/Hartree_Fock/damping_SCF.irp.f @@ -71,7 +71,7 @@ subroutine damping_SCF delta_alpha = D_new_alpha - D_alpha delta_beta = D_new_beta - D_beta - lambda = 1.d0 + lambda = .5d0 E_half = 0.d0 do while (E_half > E) HF_density_matrix_ao_alpha = D_alpha + lambda * delta_alpha 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)" ;\ diff --git a/src/Utils/abort.irp.f b/src/Utils/abort.irp.f index 4abf1a01..ec33fdb2 100644 --- a/src/Utils/abort.irp.f +++ b/src/Utils/abort.irp.f @@ -22,8 +22,9 @@ subroutine trap_signals ! What to do when a signal is caught. Here, trap Ctrl-C and call the control_C subroutine. END_DOC integer, external :: catch_signal - integer, parameter :: sigusr2 = 12 - call signal (sigusr2, catch_signal) + integer :: sigusr2, status + sigusr2 = 12 + call signal (sigusr2, catch_signal,status) end subroutine trap_signals integer function catch_signal(signum)