mirror of
https://github.com/QuantumPackage/qp2.git
synced 2025-01-02 08:35:38 +01:00
We always give max 10k dets in qp_edit. Read-only if more
This commit is contained in:
parent
00f7397a47
commit
d1c0d179dc
@ -7,14 +7,14 @@ module Determinants_by_hand : sig
|
|||||||
{ n_int : N_int_number.t;
|
{ n_int : N_int_number.t;
|
||||||
bit_kind : Bit_kind.t;
|
bit_kind : Bit_kind.t;
|
||||||
n_det : Det_number.t;
|
n_det : Det_number.t;
|
||||||
|
n_det_qp_edit : Det_number.t;
|
||||||
n_states : States_number.t;
|
n_states : States_number.t;
|
||||||
expected_s2 : Positive_float.t;
|
expected_s2 : Positive_float.t;
|
||||||
psi_coef : Det_coef.t array;
|
psi_coef : Det_coef.t array;
|
||||||
psi_det : Determinant.t array;
|
psi_det : Determinant.t array;
|
||||||
state_average_weight : Positive_float.t array;
|
state_average_weight : Positive_float.t array;
|
||||||
} [@@deriving sexp]
|
} [@@deriving sexp]
|
||||||
val read : unit -> t
|
val read : unit -> t option
|
||||||
val read_maybe : unit -> t option
|
|
||||||
val write : t -> unit
|
val write : t -> unit
|
||||||
val to_string : t -> string
|
val to_string : t -> string
|
||||||
val to_rst : t -> Rst_string.t
|
val to_rst : t -> Rst_string.t
|
||||||
@ -28,6 +28,7 @@ end = struct
|
|||||||
{ n_int : N_int_number.t;
|
{ n_int : N_int_number.t;
|
||||||
bit_kind : Bit_kind.t;
|
bit_kind : Bit_kind.t;
|
||||||
n_det : Det_number.t;
|
n_det : Det_number.t;
|
||||||
|
n_det_qp_edit : Det_number.t;
|
||||||
n_states : States_number.t;
|
n_states : States_number.t;
|
||||||
expected_s2 : Positive_float.t;
|
expected_s2 : Positive_float.t;
|
||||||
psi_coef : Det_coef.t array;
|
psi_coef : Det_coef.t array;
|
||||||
@ -38,8 +39,6 @@ end = struct
|
|||||||
|
|
||||||
let get_default = Qpackage.get_ezfio_default "determinants";;
|
let get_default = Qpackage.get_ezfio_default "determinants";;
|
||||||
|
|
||||||
let n_det_read_max = 10_000 ;;
|
|
||||||
|
|
||||||
let read_n_int () =
|
let read_n_int () =
|
||||||
if not (Ezfio.has_determinants_n_int()) then
|
if not (Ezfio.has_determinants_n_int()) then
|
||||||
Ezfio.get_mo_basis_mo_num ()
|
Ezfio.get_mo_basis_mo_num ()
|
||||||
@ -80,11 +79,26 @@ end = struct
|
|||||||
|> Det_number.of_int
|
|> Det_number.of_int
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
let read_n_det_qp_edit () =
|
||||||
|
let n_det = read_n_det () |> Det_number.to_int in
|
||||||
|
if not (Ezfio.has_determinants_n_det_qp_edit ()) then
|
||||||
|
Ezfio.set_determinants_n_det_qp_edit n_det
|
||||||
|
;
|
||||||
|
Ezfio.get_determinants_n_det_qp_edit ()
|
||||||
|
|> Det_number.of_int
|
||||||
|
;;
|
||||||
|
|
||||||
let write_n_det n =
|
let write_n_det n =
|
||||||
Det_number.to_int n
|
Det_number.to_int n
|
||||||
|> Ezfio.set_determinants_n_det
|
|> Ezfio.set_determinants_n_det
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
let write_n_det_qp_edit n =
|
||||||
|
let n_det = read_n_det () |> Det_number.to_int in
|
||||||
|
min n_det (Det_number.to_int n)
|
||||||
|
|> Ezfio.set_determinants_n_det_qp_edit
|
||||||
|
;;
|
||||||
|
|
||||||
let read_n_states () =
|
let read_n_states () =
|
||||||
if not (Ezfio.has_determinants_n_states ()) then
|
if not (Ezfio.has_determinants_n_states ()) then
|
||||||
Ezfio.set_determinants_n_states 1
|
Ezfio.set_determinants_n_states 1
|
||||||
@ -178,7 +192,7 @@ end = struct
|
|||||||
|> Ezfio.set_determinants_expected_s2
|
|> Ezfio.set_determinants_expected_s2
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read_psi_coef () =
|
let read_psi_coef ~read_only () =
|
||||||
if not (Ezfio.has_determinants_psi_coef ()) then
|
if not (Ezfio.has_determinants_psi_coef ()) then
|
||||||
begin
|
begin
|
||||||
let n_states =
|
let n_states =
|
||||||
@ -189,7 +203,12 @@ end = struct
|
|||||||
~data:(List.init n_states (fun i -> if (i=0) then 1. else 0. ))
|
~data:(List.init n_states (fun i -> if (i=0) then 1. else 0. ))
|
||||||
|> Ezfio.set_determinants_psi_coef
|
|> Ezfio.set_determinants_psi_coef
|
||||||
end;
|
end;
|
||||||
Ezfio.get_determinants_psi_coef ()
|
begin
|
||||||
|
if read_only then
|
||||||
|
Ezfio.get_determinants_psi_coef_qp_edit ()
|
||||||
|
else
|
||||||
|
Ezfio.get_determinants_psi_coef ()
|
||||||
|
end
|
||||||
|> Ezfio.flattened_ezfio
|
|> Ezfio.flattened_ezfio
|
||||||
|> Array.map Det_coef.of_float
|
|> Array.map Det_coef.of_float
|
||||||
;;
|
;;
|
||||||
@ -202,12 +221,15 @@ end = struct
|
|||||||
and n_states =
|
and n_states =
|
||||||
States_number.to_int n_states
|
States_number.to_int n_states
|
||||||
in
|
in
|
||||||
Ezfio.ezfio_array_of_list ~rank:2 ~dim:[| n_det ; n_states |] ~data:c
|
let r =
|
||||||
|> Ezfio.set_determinants_psi_coef
|
Ezfio.ezfio_array_of_list ~rank:2 ~dim:[| n_det ; n_states |] ~data:c
|
||||||
|
in
|
||||||
|
Ezfio.set_determinants_psi_coef r;
|
||||||
|
Ezfio.set_determinants_psi_coef_qp_edit r
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
||||||
let read_psi_det () =
|
let read_psi_det ~read_only () =
|
||||||
let n_int = read_n_int ()
|
let n_int = read_n_int ()
|
||||||
and n_alpha = Ezfio.get_electrons_elec_alpha_num ()
|
and n_alpha = Ezfio.get_electrons_elec_alpha_num ()
|
||||||
|> Elec_alpha_number.of_int
|
|> Elec_alpha_number.of_int
|
||||||
@ -233,13 +255,18 @@ end = struct
|
|||||||
|> Ezfio.set_determinants_psi_det ;
|
|> Ezfio.set_determinants_psi_det ;
|
||||||
end ;
|
end ;
|
||||||
let n_int = N_int_number.to_int n_int in
|
let n_int = N_int_number.to_int n_int in
|
||||||
let psi_det_array = Ezfio.get_determinants_psi_det () in
|
let psi_det_array =
|
||||||
|
if read_only then
|
||||||
|
Ezfio.get_determinants_psi_det_qp_edit ()
|
||||||
|
else
|
||||||
|
Ezfio.get_determinants_psi_det ()
|
||||||
|
in
|
||||||
let dim = psi_det_array.Ezfio.dim
|
let dim = psi_det_array.Ezfio.dim
|
||||||
and data = Ezfio.flattened_ezfio psi_det_array
|
and data = Ezfio.flattened_ezfio psi_det_array
|
||||||
in
|
in
|
||||||
assert (n_int = dim.(0));
|
assert (n_int = dim.(0));
|
||||||
assert (dim.(1) = 2);
|
assert (dim.(1) = 2);
|
||||||
assert (dim.(2) = (Det_number.to_int (read_n_det ())));
|
assert (dim.(2) = (Det_number.to_int (read_n_det_qp_edit ())));
|
||||||
Array.init dim.(2) (fun i ->
|
Array.init dim.(2) (fun i ->
|
||||||
Array.sub data (2*n_int*i) (2*n_int) )
|
Array.sub data (2*n_int*i) (2*n_int) )
|
||||||
|> Array.map (Determinant.of_int64_array
|
|> Array.map (Determinant.of_int64_array
|
||||||
@ -252,40 +279,43 @@ end = struct
|
|||||||
|> Array.concat
|
|> Array.concat
|
||||||
|> Array.to_list
|
|> Array.to_list
|
||||||
in
|
in
|
||||||
Ezfio.ezfio_array_of_list ~rank:3 ~dim:[| N_int_number.to_int n_int ; 2 ; Det_number.to_int n_det |] ~data:data
|
let r =
|
||||||
|> Ezfio.set_determinants_psi_det
|
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 read () =
|
let read () =
|
||||||
|
|
||||||
|
let n_det_qp_edit = read_n_det_qp_edit () in
|
||||||
|
let n_det = read_n_det () in
|
||||||
|
let read_only = n_det_qp_edit <> n_det in
|
||||||
|
|
||||||
if (Ezfio.has_mo_basis_mo_num ()) then
|
if (Ezfio.has_mo_basis_mo_num ()) then
|
||||||
|
try
|
||||||
|
Some
|
||||||
{ n_int = read_n_int () ;
|
{ n_int = read_n_int () ;
|
||||||
bit_kind = read_bit_kind () ;
|
bit_kind = read_bit_kind () ;
|
||||||
n_det = read_n_det () ;
|
n_det = read_n_det () ;
|
||||||
|
n_det_qp_edit = read_n_det_qp_edit () ;
|
||||||
expected_s2 = read_expected_s2 () ;
|
expected_s2 = read_expected_s2 () ;
|
||||||
psi_coef = read_psi_coef () ;
|
psi_coef = read_psi_coef ~read_only () ;
|
||||||
psi_det = read_psi_det () ;
|
psi_det = read_psi_det ~read_only () ;
|
||||||
n_states = read_n_states () ;
|
n_states = read_n_states () ;
|
||||||
state_average_weight = read_state_average_weight () ;
|
state_average_weight = read_state_average_weight () ;
|
||||||
}
|
}
|
||||||
|
with _ -> None
|
||||||
else
|
else
|
||||||
failwith "No molecular orbitals, so no determinants"
|
(* No molecular orbitals, so no determinants *)
|
||||||
;;
|
|
||||||
|
|
||||||
let read_maybe () =
|
|
||||||
let n_det =
|
|
||||||
read_n_det ()
|
|
||||||
in
|
|
||||||
if ( (Det_number.to_int n_det) < n_det_read_max ) then
|
|
||||||
try Some (read ()) with
|
|
||||||
| Failure _ -> None
|
|
||||||
else
|
|
||||||
None
|
None
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let write { n_int ;
|
let write { n_int ;
|
||||||
bit_kind ;
|
bit_kind ;
|
||||||
n_det ;
|
n_det ;
|
||||||
|
n_det_qp_edit ;
|
||||||
expected_s2 ;
|
expected_s2 ;
|
||||||
psi_coef ;
|
psi_coef ;
|
||||||
psi_det ;
|
psi_det ;
|
||||||
@ -297,9 +327,13 @@ end = struct
|
|||||||
write_n_det n_det;
|
write_n_det n_det;
|
||||||
write_n_states n_states;
|
write_n_states n_states;
|
||||||
write_expected_s2 expected_s2;
|
write_expected_s2 expected_s2;
|
||||||
write_psi_coef ~n_det:n_det ~n_states:n_states psi_coef ;
|
if n_det <= n_det_qp_edit then
|
||||||
write_psi_det ~n_int:n_int ~n_det:n_det psi_det;
|
begin
|
||||||
write_state_average_weight state_average_weight;
|
write_n_det_qp_edit n_det;
|
||||||
|
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
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
||||||
@ -316,11 +350,13 @@ end = struct
|
|||||||
|> States_number.to_int
|
|> States_number.to_int
|
||||||
and ndet =
|
and ndet =
|
||||||
Det_number.to_int b.n_det
|
Det_number.to_int b.n_det
|
||||||
|
and ndet_qp_edit =
|
||||||
|
Det_number.to_int b.n_det_qp_edit
|
||||||
in
|
in
|
||||||
let coefs_string i =
|
let coefs_string i =
|
||||||
Array.init nstates (fun j ->
|
Array.init nstates (fun j ->
|
||||||
let ishift =
|
let ishift =
|
||||||
j*ndet
|
j*ndet_qp_edit
|
||||||
in
|
in
|
||||||
if (ishift < Array.length b.psi_coef) then
|
if (ishift < Array.length b.psi_coef) then
|
||||||
b.psi_coef.(i+ishift)
|
b.psi_coef.(i+ishift)
|
||||||
@ -331,7 +367,7 @@ end = struct
|
|||||||
)
|
)
|
||||||
|> Array.to_list |> String.concat "\t"
|
|> Array.to_list |> String.concat "\t"
|
||||||
in
|
in
|
||||||
Array.init ndet (fun i ->
|
Array.init ndet_qp_edit (fun i ->
|
||||||
Printf.sprintf " %s\n%s\n"
|
Printf.sprintf " %s\n%s\n"
|
||||||
(coefs_string i)
|
(coefs_string i)
|
||||||
(Determinant.to_string ~mo_num:mo_num b.psi_det.(i)
|
(Determinant.to_string ~mo_num:mo_num b.psi_det.(i)
|
||||||
@ -493,11 +529,6 @@ psi_det = %s
|
|||||||
end
|
end
|
||||||
| _::tail -> read_dets accu tail
|
| _::tail -> read_dets accu tail
|
||||||
in
|
in
|
||||||
(*
|
|
||||||
let dets =
|
|
||||||
List.map String_ext.rev dets
|
|
||||||
in
|
|
||||||
*)
|
|
||||||
let a =
|
let a =
|
||||||
read_dets [] dets
|
read_dets [] dets
|
||||||
|> String.concat ""
|
|> String.concat ""
|
||||||
@ -513,9 +544,11 @@ psi_det = %s
|
|||||||
Printf.sprintf "(n_int %d)" (N_int_number.get_max ())
|
Printf.sprintf "(n_int %d)" (N_int_number.get_max ())
|
||||||
and n_states =
|
and n_states =
|
||||||
Printf.sprintf "(n_states %d)" (States_number.to_int @@ read_n_states ())
|
Printf.sprintf "(n_states %d)" (States_number.to_int @@ read_n_states ())
|
||||||
|
and n_det_qp_edit =
|
||||||
|
Printf.sprintf "(n_det_qp_edit %d)" (Det_number.to_int @@ read_n_det_qp_edit ())
|
||||||
in
|
in
|
||||||
let s =
|
let s =
|
||||||
String.concat "" [ header ; bitkind ; n_int ; n_states ; psi_coef ; psi_det]
|
String.concat "" [ header ; bitkind ; n_int ; n_states ; psi_coef ; psi_det ; n_det_qp_edit ]
|
||||||
in
|
in
|
||||||
|
|
||||||
|
|
||||||
@ -530,7 +563,9 @@ psi_det = %s
|
|||||||
Det_number.to_int n_det_new
|
Det_number.to_int n_det_new
|
||||||
in
|
in
|
||||||
let det =
|
let det =
|
||||||
read ()
|
match read () with
|
||||||
|
| Some x -> x
|
||||||
|
| None -> failwith "No determinants in file"
|
||||||
in
|
in
|
||||||
let n_det_old, n_states =
|
let n_det_old, n_states =
|
||||||
Det_number.to_int det.n_det,
|
Det_number.to_int det.n_det,
|
||||||
@ -561,7 +596,9 @@ psi_det = %s
|
|||||||
let extract_state istate =
|
let extract_state istate =
|
||||||
Printf.printf "Extracting state %d\n" (States_number.to_int istate);
|
Printf.printf "Extracting state %d\n" (States_number.to_int istate);
|
||||||
let det =
|
let det =
|
||||||
read ()
|
match read () with
|
||||||
|
| Some x -> x
|
||||||
|
| None -> failwith "No determinants in file"
|
||||||
in
|
in
|
||||||
let n_det, n_states =
|
let n_det, n_states =
|
||||||
Det_number.to_int det.n_det,
|
Det_number.to_int det.n_det,
|
||||||
@ -591,7 +628,9 @@ psi_det = %s
|
|||||||
let extract_states range =
|
let extract_states range =
|
||||||
Printf.printf "Extracting states %s\n" (Range.to_string range);
|
Printf.printf "Extracting states %s\n" (Range.to_string range);
|
||||||
let det =
|
let det =
|
||||||
read ()
|
match read () with
|
||||||
|
| Some x -> x
|
||||||
|
| None -> failwith "No determinants in file"
|
||||||
in
|
in
|
||||||
let n_det, n_states =
|
let n_det, n_states =
|
||||||
Det_number.to_int det.n_det,
|
Det_number.to_int det.n_det,
|
||||||
|
@ -44,9 +44,12 @@ let psi_det () =
|
|||||||
let psi_det =
|
let psi_det =
|
||||||
Input.Determinants_by_hand.read ()
|
Input.Determinants_by_hand.read ()
|
||||||
in
|
in
|
||||||
Input.Determinants_by_hand.to_rst psi_det
|
match psi_det with
|
||||||
|> Rst_string.to_string
|
| Some psi_det ->
|
||||||
|> print_endline
|
Input.Determinants_by_hand.to_rst psi_det
|
||||||
|
|> Rst_string.to_string
|
||||||
|
|> print_endline
|
||||||
|
| None -> ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ let get s =
|
|||||||
| Ao_basis ->
|
| Ao_basis ->
|
||||||
f Ao_basis.(read, to_rst)
|
f Ao_basis.(read, to_rst)
|
||||||
| Determinants_by_hand ->
|
| Determinants_by_hand ->
|
||||||
f Determinants_by_hand.(read_maybe, to_rst)
|
f Determinants_by_hand.(read, to_rst)
|
||||||
{section_to_rst}
|
{section_to_rst}
|
||||||
end
|
end
|
||||||
with
|
with
|
||||||
|
@ -66,6 +66,12 @@ interface: ezfio
|
|||||||
doc: Number of determinants in the current wave function
|
doc: Number of determinants in the current wave function
|
||||||
type: integer
|
type: integer
|
||||||
|
|
||||||
|
[n_det_qp_edit]
|
||||||
|
interface: ezfio
|
||||||
|
doc: Number of determinants to print in qp_edit
|
||||||
|
type: integer
|
||||||
|
interface: ezfio
|
||||||
|
|
||||||
[psi_coef]
|
[psi_coef]
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
doc: Coefficients of the wave function
|
doc: Coefficients of the wave function
|
||||||
@ -78,6 +84,18 @@ doc: Determinants of the variational space
|
|||||||
type: integer*8
|
type: integer*8
|
||||||
size: (determinants.n_int*determinants.bit_kind/8,2,determinants.n_det)
|
size: (determinants.n_int*determinants.bit_kind/8,2,determinants.n_det)
|
||||||
|
|
||||||
|
[psi_coef_qp_edit]
|
||||||
|
interface: ezfio
|
||||||
|
doc: Coefficients of the wave function
|
||||||
|
type: double precision
|
||||||
|
size: (determinants.n_det_qp_edit,determinants.n_states)
|
||||||
|
|
||||||
|
[psi_det_qp_edit]
|
||||||
|
interface: ezfio
|
||||||
|
doc: Determinants of the variational space
|
||||||
|
type: integer*8
|
||||||
|
size: (determinants.n_int*determinants.bit_kind/8,2,determinants.n_det_qp_edit)
|
||||||
|
|
||||||
[expected_s2]
|
[expected_s2]
|
||||||
interface: ezfio
|
interface: ezfio
|
||||||
doc: Expected value of |S^2|
|
doc: Expected value of |S^2|
|
||||||
|
@ -44,6 +44,16 @@ BEGIN_PROVIDER [ integer, N_det ]
|
|||||||
ASSERT (N_det > 0)
|
ASSERT (N_det > 0)
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer, N_det_qp_edit ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Number of determinants to print in qp_edit
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
N_det_qp_edit = min(N_det,10000)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [integer, max_degree_exc]
|
BEGIN_PROVIDER [integer, max_degree_exc]
|
||||||
implicit none
|
implicit none
|
||||||
integer :: i,degree
|
integer :: i,degree
|
||||||
@ -476,7 +486,7 @@ subroutine save_wavefunction
|
|||||||
endif
|
endif
|
||||||
if (mpi_master) then
|
if (mpi_master) then
|
||||||
call save_wavefunction_general(N_det,N_states,psi_det_sorted,size(psi_coef_sorted,1),psi_coef_sorted)
|
call save_wavefunction_general(N_det,N_states,psi_det_sorted,size(psi_coef_sorted,1),psi_coef_sorted)
|
||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -504,12 +514,14 @@ subroutine save_wavefunction_general(ndet,nstates,psidet,dim_psicoef,psicoef)
|
|||||||
integer*8, allocatable :: psi_det_save(:,:,:)
|
integer*8, allocatable :: psi_det_save(:,:,:)
|
||||||
double precision, allocatable :: psi_coef_save(:,:)
|
double precision, allocatable :: psi_coef_save(:,:)
|
||||||
|
|
||||||
|
double precision :: accu_norm
|
||||||
integer :: i,j,k
|
integer :: i,j,k
|
||||||
|
|
||||||
if (mpi_master) then
|
if (mpi_master) then
|
||||||
call ezfio_set_determinants_N_int(N_int)
|
call ezfio_set_determinants_N_int(N_int)
|
||||||
call ezfio_set_determinants_bit_kind(bit_kind)
|
call ezfio_set_determinants_bit_kind(bit_kind)
|
||||||
call ezfio_set_determinants_N_det(ndet)
|
call ezfio_set_determinants_N_det(ndet)
|
||||||
|
call ezfio_set_determinants_N_det_qp_edit(N_det_qp_edit)
|
||||||
call ezfio_set_determinants_n_states(nstates)
|
call ezfio_set_determinants_n_states(nstates)
|
||||||
call ezfio_set_determinants_mo_label(mo_label)
|
call ezfio_set_determinants_mo_label(mo_label)
|
||||||
|
|
||||||
@ -522,10 +534,10 @@ subroutine save_wavefunction_general(ndet,nstates,psidet,dim_psicoef,psicoef)
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
call ezfio_set_determinants_psi_det(psi_det_save)
|
call ezfio_set_determinants_psi_det(psi_det_save)
|
||||||
|
call ezfio_set_determinants_psi_det_qp_edit(psi_det_save)
|
||||||
deallocate (psi_det_save)
|
deallocate (psi_det_save)
|
||||||
|
|
||||||
allocate (psi_coef_save(ndet,nstates))
|
allocate (psi_coef_save(ndet,nstates))
|
||||||
double precision :: accu_norm
|
|
||||||
do k=1,nstates
|
do k=1,nstates
|
||||||
do i=1,ndet
|
do i=1,ndet
|
||||||
psi_coef_save(i,k) = psicoef(i,k)
|
psi_coef_save(i,k) = psicoef(i,k)
|
||||||
@ -535,6 +547,18 @@ subroutine save_wavefunction_general(ndet,nstates,psidet,dim_psicoef,psicoef)
|
|||||||
|
|
||||||
call ezfio_set_determinants_psi_coef(psi_coef_save)
|
call ezfio_set_determinants_psi_coef(psi_coef_save)
|
||||||
deallocate (psi_coef_save)
|
deallocate (psi_coef_save)
|
||||||
|
|
||||||
|
allocate (psi_coef_save(N_det_qp_edit,nstates))
|
||||||
|
do k=1,nstates
|
||||||
|
do i=1,N_det_qp_edit
|
||||||
|
psi_coef_save(i,k) = psicoef(i,k)
|
||||||
|
enddo
|
||||||
|
call normalize(psi_coef_save(1,k),N_det_qp_edit)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
call ezfio_set_determinants_psi_coef_qp_edit(psi_coef_save)
|
||||||
|
deallocate (psi_coef_save)
|
||||||
|
|
||||||
call write_int(6,ndet,'Saved determinants')
|
call write_int(6,ndet,'Saved determinants')
|
||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user