From 6a1c10f4fb1e75954a4e0053acf8ec171e89a108 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 16 Nov 2023 19:21:18 +0100 Subject: [PATCH 1/4] Fix missing mo_label in qp_convert --- bin/qp_convert_output_to_ezfio | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/qp_convert_output_to_ezfio b/bin/qp_convert_output_to_ezfio index 091423e4..0523b6a7 100755 --- a/bin/qp_convert_output_to_ezfio +++ b/bin/qp_convert_output_to_ezfio @@ -256,6 +256,7 @@ def write_ezfio(res, filename): MoTag = res.determinants_mo_type ezfio.set_mo_basis_mo_label('Orthonormalized') + ezfio.set_determinants_mo_label('Orthonormalized') MO_type = MoTag allMOs = res.mo_sets[MO_type] From 6e8b1e5d0c6a4a61efe0c164c76b13abda647722 Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 17 Nov 2023 14:56:25 +0100 Subject: [PATCH 2/4] added density matrix nstates on AO basis --- src/determinants/density_matrix.irp.f | 32 ++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/determinants/density_matrix.irp.f b/src/determinants/density_matrix.irp.f index ce4d96c2..af035a2a 100644 --- a/src/determinants/density_matrix.irp.f +++ b/src/determinants/density_matrix.irp.f @@ -445,7 +445,7 @@ END_PROVIDER mo_beta = one_e_dm_mo_beta_average(j,i) ! if(dabs(dm_mo).le.1.d-10)cycle one_e_dm_ao_alpha(l,k) += mo_coef(k,i) * mo_coef(l,j) * mo_alpha - one_e_dm_ao_beta(l,k) += mo_coef(k,i) * mo_coef(l,j) * mo_beta + one_e_dm_ao_beta(l,k) += mo_coef(k,i) * mo_coef(l,j) * mo_beta enddo enddo enddo @@ -453,6 +453,36 @@ END_PROVIDER END_PROVIDER + BEGIN_PROVIDER [ double precision, one_e_dm_ao_alpha_nstates, (ao_num,ao_num,N_states) ] +&BEGIN_PROVIDER [ double precision, one_e_dm_ao_beta_nstates, (ao_num,ao_num,N_states) ] + BEGIN_DOC + ! One body density matrix on the |AO| basis : $\rho_{AO}(\alpha), \rho_{AO}(\beta)$. + END_DOC + implicit none + integer :: i,j,k,l,istate + double precision :: mo_alpha,mo_beta + + one_e_dm_ao_alpha_nstates = 0.d0 + one_e_dm_ao_beta_nstates = 0.d0 + do istate = 1, N_states + do k = 1, ao_num + do l = 1, ao_num + do i = 1, mo_num + do j = 1, mo_num + mo_alpha = one_e_dm_mo_alpha(j,i,istate) + mo_beta = one_e_dm_mo_beta(j,i,istate) + ! if(dabs(dm_mo).le.1.d-10)cycle + one_e_dm_ao_alpha_nstates(l,k,istate) += mo_coef(k,i) * mo_coef(l,j) * mo_alpha + one_e_dm_ao_beta_nstates(l,k,istate) += mo_coef(k,i) * mo_coef(l,j) * mo_beta + enddo + enddo + enddo + enddo + enddo + +END_PROVIDER + + BEGIN_PROVIDER [ double precision, one_e_dm_ao, (ao_num, ao_num)] implicit none BEGIN_DOC From b25489e14c5b1bd73c26eecfc9396b118d4f600a Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 27 Nov 2023 14:25:05 +0100 Subject: [PATCH 3/4] Fix modifying determinants before mo_label exists --- ocaml/Input_determinants_by_hand.ml | 33 +++++++++++++++++++++++------ src/trexio/EZFIO.cfg | 2 +- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/ocaml/Input_determinants_by_hand.ml b/ocaml/Input_determinants_by_hand.ml index fb0aef7f..0cc47f63 100644 --- a/ocaml/Input_determinants_by_hand.ml +++ b/ocaml/Input_determinants_by_hand.ml @@ -13,6 +13,7 @@ module Determinants_by_hand : sig psi_coef : Det_coef.t array; psi_det : Determinant.t array; state_average_weight : Positive_float.t array; + mo_label : MO_label.t; } [@@deriving sexp] val read : ?full:bool -> unit -> t option val write : ?force:bool -> t -> unit @@ -34,11 +35,21 @@ end = struct psi_coef : Det_coef.t array; psi_det : Determinant.t array; state_average_weight : Positive_float.t array; + mo_label : MO_label.t; } [@@deriving sexp] ;; let get_default = Qpackage.get_ezfio_default "determinants";; + let read_mo_label () = + if not (Ezfio.has_determinants_mo_label ()) then + if Ezfio.has_mo_basis_mo_label () then ( + let label = Ezfio.get_mo_basis_mo_label () in + Ezfio.set_determinants_mo_label label) ; + Ezfio.get_determinants_mo_label () + |> MO_label.of_string + ;; + let read_n_int () = if not (Ezfio.has_determinants_n_int()) then Ezfio.get_mo_basis_mo_num () @@ -222,7 +233,7 @@ end = struct and n_states = States_number.to_int n_states in - let r = + let r = Ezfio.ezfio_array_of_list ~rank:2 ~dim:[| n_det ; n_states |] ~data:c in Ezfio.set_determinants_psi_coef r; @@ -283,19 +294,23 @@ end = struct |> Array.concat |> Array.to_list in - let r = + let r = Ezfio.ezfio_array_of_list ~rank:3 ~dim:[| N_int_number.to_int n_int ; 2 ; Det_number.to_int n_det |] ~data:data in Ezfio.set_determinants_psi_det r; Ezfio.set_determinants_psi_det_qp_edit r ;; + let write_mo_label a = + MO_label.to_string a + |> Ezfio.set_determinants_mo_label + let read ?(full=true) () = let n_det_qp_edit = read_n_det_qp_edit () in let n_det = read_n_det () in - let read_only = + let read_only = if full then false else n_det_qp_edit <> n_det in @@ -311,6 +326,7 @@ end = struct psi_det = read_psi_det ~read_only () ; n_states = read_n_states () ; state_average_weight = read_state_average_weight () ; + mo_label = read_mo_label () ; } with _ -> None else @@ -328,6 +344,7 @@ end = struct psi_det ; n_states ; state_average_weight ; + mo_label ; } = write_n_int n_int ; write_bit_kind bit_kind; @@ -340,7 +357,9 @@ end = struct write_psi_coef ~n_det:n_det ~n_states:n_states psi_coef ; write_psi_det ~n_int:n_int ~n_det:n_det psi_det end; - write_state_average_weight state_average_weight + write_state_average_weight state_average_weight ; + write_mo_label mo_label ; + () ;; @@ -439,7 +458,7 @@ psi_det = %s in (* Split into header and determinants data *) - let idx = + let idx = match String_ext.substr_index r ~pos:0 ~pattern:"\nDeterminants" with | Some x -> x | None -> assert false @@ -545,6 +564,8 @@ psi_det = %s let bitkind = Printf.sprintf "(bit_kind %d)" (Lazy.force Qpackage.bit_kind |> Bit_kind.to_int) + and mo_label = + Printf.sprintf "(mo_label %s)" (MO_label.to_string @@ read_mo_label ()) and n_int = Printf.sprintf "(n_int %d)" (N_int_number.get_max ()) and n_states = @@ -553,7 +574,7 @@ psi_det = %s Printf.sprintf "(n_det_qp_edit %d)" (Det_number.to_int @@ read_n_det_qp_edit ()) in let s = - String.concat "" [ header ; bitkind ; n_int ; n_states ; psi_coef ; psi_det ; n_det_qp_edit ] + String.concat "" [ header ; mo_label ; bitkind ; n_int ; n_states ; psi_coef ; psi_det ; n_det_qp_edit ] in diff --git a/src/trexio/EZFIO.cfg b/src/trexio/EZFIO.cfg index 8c11478e..88828520 100644 --- a/src/trexio/EZFIO.cfg +++ b/src/trexio/EZFIO.cfg @@ -18,7 +18,7 @@ default: True [export_mos] type: logical -doc: If True, export basis set and AOs +doc: If True, export MO coefficients interface: ezfio, ocaml, provider default: True From 4f296efb662715a1b33bfd1cecb80da27669537f Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 5 Dec 2023 17:19:47 +0100 Subject: [PATCH 4/4] Fixed qp_export_as_tgz --- {src/ccsd/org => scripts}/TANGLE_org_mode.sh | 0 src/mo_optimization/org/TANGLE_org_mode.sh | 7 ------- src/utils_cc/org/TANGLE_org_mode.sh | 7 ------- src/utils_trust_region/org/TANGLE_org_mode.sh | 7 ------- 4 files changed, 21 deletions(-) rename {src/ccsd/org => scripts}/TANGLE_org_mode.sh (100%) delete mode 100755 src/mo_optimization/org/TANGLE_org_mode.sh delete mode 100755 src/utils_cc/org/TANGLE_org_mode.sh delete mode 100755 src/utils_trust_region/org/TANGLE_org_mode.sh diff --git a/src/ccsd/org/TANGLE_org_mode.sh b/scripts/TANGLE_org_mode.sh similarity index 100% rename from src/ccsd/org/TANGLE_org_mode.sh rename to scripts/TANGLE_org_mode.sh diff --git a/src/mo_optimization/org/TANGLE_org_mode.sh b/src/mo_optimization/org/TANGLE_org_mode.sh deleted file mode 100755 index 059cbe7d..00000000 --- a/src/mo_optimization/org/TANGLE_org_mode.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -list='ls *.org' -for element in $list -do - emacs --batch $element -f org-babel-tangle -done diff --git a/src/utils_cc/org/TANGLE_org_mode.sh b/src/utils_cc/org/TANGLE_org_mode.sh deleted file mode 100755 index 059cbe7d..00000000 --- a/src/utils_cc/org/TANGLE_org_mode.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -list='ls *.org' -for element in $list -do - emacs --batch $element -f org-babel-tangle -done diff --git a/src/utils_trust_region/org/TANGLE_org_mode.sh b/src/utils_trust_region/org/TANGLE_org_mode.sh deleted file mode 100755 index 059cbe7d..00000000 --- a/src/utils_trust_region/org/TANGLE_org_mode.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -list='ls *.org' -for element in $list -do - emacs --batch $element -f org-babel-tangle -done