mirror of
https://github.com/LCPQ/quantum_package
synced 2024-10-05 15:56:09 +02:00
Merging...
This commit is contained in:
commit
0199837d2c
@ -1,19 +1,19 @@
|
|||||||
bielec_integrals
|
bielec_integrals
|
||||||
read_ao_integrals False
|
read_ao_integrals false
|
||||||
read_mo_integrals False
|
read_mo_integrals false
|
||||||
write_ao_integrals False
|
write_ao_integrals false
|
||||||
write_mo_integrals False
|
write_mo_integrals false
|
||||||
threshold_ao 1.e-15
|
threshold_ao 1.e-15
|
||||||
threshold_mo 1.e-15
|
threshold_mo 1.e-15
|
||||||
direct False
|
direct false
|
||||||
|
|
||||||
cis_dressed
|
cis_dressed
|
||||||
n_state_cis 10
|
n_state_cis 10
|
||||||
n_core_cis 0
|
n_core_cis 0
|
||||||
n_act_cis mo_basis_mo_tot_num
|
n_act_cis mo_basis_mo_tot_num
|
||||||
mp2_dressing False
|
mp2_dressing false
|
||||||
standard_doubles True
|
standard_doubles true
|
||||||
en_2_2 False
|
en_2_2 false
|
||||||
|
|
||||||
determinants
|
determinants
|
||||||
n_states 1
|
n_states 1
|
||||||
@ -21,27 +21,27 @@ determinants
|
|||||||
n_det_max_jacobi 1000
|
n_det_max_jacobi 1000
|
||||||
threshold_generators 0.99
|
threshold_generators 0.99
|
||||||
threshold_selectors 0.999
|
threshold_selectors 0.999
|
||||||
read_wf False
|
read_wf false
|
||||||
s2_eig False
|
s2_eig false
|
||||||
only_single_double_dm False
|
only_single_double_dm false
|
||||||
|
|
||||||
full_ci
|
full_ci
|
||||||
n_det_max_fci 10000
|
n_det_max_fci 10000
|
||||||
n_det_max_fci_property 50000
|
n_det_max_fci_property 50000
|
||||||
pt2_max 1.e-4
|
pt2_max 1.e-4
|
||||||
do_pt2_end True
|
do_pt2_end true
|
||||||
var_pt2_ratio 0.75
|
var_pt2_ratio 0.75
|
||||||
|
|
||||||
cas_sd
|
cas_sd
|
||||||
n_det_max_cas_sd 100000
|
n_det_max_cas_sd 100000
|
||||||
pt2_max 1.e-4
|
pt2_max 1.e-4
|
||||||
do_pt2_end True
|
do_pt2_end true
|
||||||
var_pt2_ratio 0.75
|
var_pt2_ratio 0.75
|
||||||
|
|
||||||
all_singles
|
all_singles
|
||||||
n_det_max_fci 50000
|
n_det_max_fci 50000
|
||||||
pt2_max 1.e-8
|
pt2_max 1.e-8
|
||||||
do_pt2_end False
|
do_pt2_end false
|
||||||
|
|
||||||
hartree_fock
|
hartree_fock
|
||||||
n_it_scf_max 200
|
n_it_scf_max 200
|
||||||
@ -55,7 +55,7 @@ cisd_selected
|
|||||||
cisd_sc2_selected
|
cisd_sc2_selected
|
||||||
n_det_max_cisd_sc2 10000
|
n_det_max_cisd_sc2 10000
|
||||||
pt2_max 1.e-4
|
pt2_max 1.e-4
|
||||||
do_pt2_end True
|
do_pt2_end true
|
||||||
|
|
||||||
properties
|
properties
|
||||||
z_one_point 3.9
|
z_one_point 3.9
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
determinants
|
|
||||||
n_states 1
|
|
||||||
n_states_diag determinants_n_states
|
|
||||||
n_det_max_jacobi 1000
|
|
||||||
threshold_generators 0.99
|
|
||||||
threshold_selectors 0.999
|
|
||||||
read_wf false
|
|
||||||
s2_eig false
|
|
||||||
only_single_double_dm false
|
|
@ -1,2 +0,0 @@
|
|||||||
properties
|
|
||||||
z_one_point 3.9
|
|
@ -4,7 +4,7 @@ open Core.Std;;
|
|||||||
|
|
||||||
include Input_ao_basis;;
|
include Input_ao_basis;;
|
||||||
include Input_bitmasks;;
|
include Input_bitmasks;;
|
||||||
include Input_determinants;;
|
include Input_determinants_by_hand;;
|
||||||
include Input_electrons;;
|
include Input_electrons;;
|
||||||
include Input_mo_basis;;
|
include Input_mo_basis;;
|
||||||
include Input_nuclei;;
|
include Input_nuclei;;
|
||||||
|
@ -2,20 +2,14 @@ open Qptypes;;
|
|||||||
open Qputils;;
|
open Qputils;;
|
||||||
open Core.Std;;
|
open Core.Std;;
|
||||||
|
|
||||||
module Determinants : sig
|
module Determinants_by_hand : sig
|
||||||
type t =
|
type t =
|
||||||
{ n_int : N_int_number.t;
|
{ n_int : N_int_number.t;
|
||||||
bit_kind : Bit_kind.t;
|
bit_kind : Bit_kind.t;
|
||||||
mo_label : MO_label.t;
|
|
||||||
n_det : Det_number.t;
|
n_det : Det_number.t;
|
||||||
n_states : States_number.t;
|
n_states : States_number.t;
|
||||||
n_states_diag : States_number.t;
|
n_states_diag : States_number.t;
|
||||||
n_det_max_jacobi : Strictly_positive_int.t;
|
|
||||||
threshold_generators : Threshold.t;
|
|
||||||
threshold_selectors : Threshold.t;
|
|
||||||
read_wf : bool;
|
|
||||||
expected_s2 : Positive_float.t;
|
expected_s2 : Positive_float.t;
|
||||||
s2_eig : bool;
|
|
||||||
psi_coef : Det_coef.t array;
|
psi_coef : Det_coef.t array;
|
||||||
psi_det : Determinant.t array;
|
psi_det : Determinant.t array;
|
||||||
} with sexp
|
} with sexp
|
||||||
@ -28,16 +22,10 @@ end = struct
|
|||||||
type t =
|
type t =
|
||||||
{ n_int : N_int_number.t;
|
{ n_int : N_int_number.t;
|
||||||
bit_kind : Bit_kind.t;
|
bit_kind : Bit_kind.t;
|
||||||
mo_label : MO_label.t;
|
|
||||||
n_det : Det_number.t;
|
n_det : Det_number.t;
|
||||||
n_states : States_number.t;
|
n_states : States_number.t;
|
||||||
n_states_diag : States_number.t;
|
n_states_diag : States_number.t;
|
||||||
n_det_max_jacobi : Strictly_positive_int.t;
|
|
||||||
threshold_generators : Threshold.t;
|
|
||||||
threshold_selectors : Threshold.t;
|
|
||||||
read_wf : bool;
|
|
||||||
expected_s2 : Positive_float.t;
|
expected_s2 : Positive_float.t;
|
||||||
s2_eig : bool;
|
|
||||||
psi_coef : Det_coef.t array;
|
psi_coef : Det_coef.t array;
|
||||||
psi_det : Determinant.t array;
|
psi_det : Determinant.t array;
|
||||||
} with sexp
|
} with sexp
|
||||||
@ -77,22 +65,6 @@ end = struct
|
|||||||
|> Ezfio.set_determinants_bit_kind
|
|> Ezfio.set_determinants_bit_kind
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
||||||
let read_mo_label () =
|
|
||||||
if (not (Ezfio.has_determinants_mo_label ())) then
|
|
||||||
Ezfio.get_mo_basis_mo_label ()
|
|
||||||
|> Ezfio.set_determinants_mo_label
|
|
||||||
;
|
|
||||||
Ezfio.get_determinants_mo_label ()
|
|
||||||
|> MO_label.of_string
|
|
||||||
;;
|
|
||||||
|
|
||||||
let write_mo_label l =
|
|
||||||
MO_label.to_string l
|
|
||||||
|> Ezfio.set_determinants_mo_label
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
let read_n_det () =
|
let read_n_det () =
|
||||||
if not (Ezfio.has_determinants_n_det ()) then
|
if not (Ezfio.has_determinants_n_det ()) then
|
||||||
Ezfio.set_determinants_n_det 1
|
Ezfio.set_determinants_n_det 1
|
||||||
@ -138,67 +110,6 @@ end = struct
|
|||||||
Ezfio.set_determinants_n_states_diag (max n_states n)
|
Ezfio.set_determinants_n_states_diag (max n_states n)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
||||||
let read_n_det_max_jacobi () =
|
|
||||||
if not (Ezfio.has_determinants_n_det_max_jacobi ()) then
|
|
||||||
get_default "n_det_max_jacobi"
|
|
||||||
|> Int.of_string
|
|
||||||
|> Ezfio.set_determinants_n_det_max_jacobi
|
|
||||||
;
|
|
||||||
Ezfio.get_determinants_n_det_max_jacobi ()
|
|
||||||
|> Strictly_positive_int.of_int
|
|
||||||
;;
|
|
||||||
|
|
||||||
let write_n_det_max_jacobi n =
|
|
||||||
Strictly_positive_int.to_int n
|
|
||||||
|> Ezfio.set_determinants_n_det_max_jacobi
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
let read_threshold_generators () =
|
|
||||||
if not (Ezfio.has_determinants_threshold_generators ()) then
|
|
||||||
get_default "threshold_generators"
|
|
||||||
|> Float.of_string
|
|
||||||
|> Ezfio.set_determinants_threshold_generators
|
|
||||||
;
|
|
||||||
Ezfio.get_determinants_threshold_generators ()
|
|
||||||
|> Threshold.of_float
|
|
||||||
;;
|
|
||||||
|
|
||||||
let write_threshold_generators t =
|
|
||||||
Threshold.to_float t
|
|
||||||
|> Ezfio.set_determinants_threshold_generators
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
let read_threshold_selectors () =
|
|
||||||
if not (Ezfio.has_determinants_threshold_selectors ()) then
|
|
||||||
get_default "threshold_selectors"
|
|
||||||
|> Float.of_string
|
|
||||||
|> Ezfio.set_determinants_threshold_selectors
|
|
||||||
;
|
|
||||||
Ezfio.get_determinants_threshold_selectors ()
|
|
||||||
|> Threshold.of_float
|
|
||||||
;;
|
|
||||||
|
|
||||||
let write_threshold_selectors t =
|
|
||||||
Threshold.to_float t
|
|
||||||
|> Ezfio.set_determinants_threshold_selectors
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
let read_read_wf () =
|
|
||||||
if not (Ezfio.has_determinants_read_wf ()) then
|
|
||||||
get_default "read_wf"
|
|
||||||
|> Bool.of_string
|
|
||||||
|> Ezfio.set_determinants_read_wf
|
|
||||||
;
|
|
||||||
Ezfio.get_determinants_read_wf ()
|
|
||||||
;;
|
|
||||||
|
|
||||||
let write_read_wf = Ezfio.set_determinants_read_wf ;;
|
|
||||||
|
|
||||||
|
|
||||||
let read_expected_s2 () =
|
let read_expected_s2 () =
|
||||||
if not (Ezfio.has_determinants_expected_s2 ()) then
|
if not (Ezfio.has_determinants_expected_s2 ()) then
|
||||||
begin
|
begin
|
||||||
@ -219,19 +130,6 @@ end = struct
|
|||||||
|> Ezfio.set_determinants_expected_s2
|
|> Ezfio.set_determinants_expected_s2
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
||||||
let read_s2_eig () =
|
|
||||||
if not (Ezfio.has_determinants_s2_eig ()) then
|
|
||||||
get_default "s2_eig"
|
|
||||||
|> Bool.of_string
|
|
||||||
|> Ezfio.set_determinants_s2_eig
|
|
||||||
;
|
|
||||||
Ezfio.get_determinants_s2_eig ()
|
|
||||||
;;
|
|
||||||
|
|
||||||
let write_s2_eig = Ezfio.set_determinants_s2_eig ;;
|
|
||||||
|
|
||||||
|
|
||||||
let read_psi_coef () =
|
let read_psi_coef () =
|
||||||
if not (Ezfio.has_determinants_psi_coef ()) then
|
if not (Ezfio.has_determinants_psi_coef ()) then
|
||||||
begin
|
begin
|
||||||
@ -315,16 +213,10 @@ end = struct
|
|||||||
Some
|
Some
|
||||||
{ n_int = read_n_int () ;
|
{ n_int = read_n_int () ;
|
||||||
bit_kind = read_bit_kind () ;
|
bit_kind = read_bit_kind () ;
|
||||||
mo_label = read_mo_label () ;
|
|
||||||
n_det = read_n_det () ;
|
n_det = read_n_det () ;
|
||||||
n_states = read_n_states () ;
|
n_states = read_n_states () ;
|
||||||
n_states_diag = read_n_states_diag () ;
|
n_states_diag = read_n_states_diag () ;
|
||||||
n_det_max_jacobi = read_n_det_max_jacobi () ;
|
|
||||||
threshold_generators = read_threshold_generators () ;
|
|
||||||
threshold_selectors = read_threshold_selectors () ;
|
|
||||||
read_wf = read_read_wf () ;
|
|
||||||
expected_s2 = read_expected_s2 () ;
|
expected_s2 = read_expected_s2 () ;
|
||||||
s2_eig = read_s2_eig () ;
|
|
||||||
psi_coef = read_psi_coef () ;
|
psi_coef = read_psi_coef () ;
|
||||||
psi_det = read_psi_det () ;
|
psi_det = read_psi_det () ;
|
||||||
}
|
}
|
||||||
@ -334,31 +226,19 @@ end = struct
|
|||||||
|
|
||||||
let write { n_int ;
|
let write { n_int ;
|
||||||
bit_kind ;
|
bit_kind ;
|
||||||
mo_label ;
|
|
||||||
n_det ;
|
n_det ;
|
||||||
n_states ;
|
n_states ;
|
||||||
n_states_diag ;
|
n_states_diag ;
|
||||||
n_det_max_jacobi ;
|
|
||||||
threshold_generators ;
|
|
||||||
threshold_selectors ;
|
|
||||||
read_wf ;
|
|
||||||
expected_s2 ;
|
expected_s2 ;
|
||||||
s2_eig ;
|
|
||||||
psi_coef ;
|
psi_coef ;
|
||||||
psi_det ;
|
psi_det ;
|
||||||
} =
|
} =
|
||||||
write_n_int n_int ;
|
write_n_int n_int ;
|
||||||
write_bit_kind bit_kind;
|
write_bit_kind bit_kind;
|
||||||
write_mo_label mo_label;
|
|
||||||
write_n_det n_det;
|
write_n_det n_det;
|
||||||
write_n_states n_states;
|
write_n_states n_states;
|
||||||
write_n_states_diag ~n_states:n_states n_states_diag;
|
write_n_states_diag ~n_states:n_states n_states_diag;
|
||||||
write_n_det_max_jacobi n_det_max_jacobi;
|
|
||||||
write_threshold_generators threshold_generators;
|
|
||||||
write_threshold_selectors threshold_selectors;
|
|
||||||
write_read_wf read_wf;
|
|
||||||
write_expected_s2 expected_s2;
|
write_expected_s2 expected_s2;
|
||||||
write_s2_eig s2_eig;
|
|
||||||
write_psi_coef ~n_det:n_det psi_coef ~n_states:n_states;
|
write_psi_coef ~n_det:n_det psi_coef ~n_states:n_states;
|
||||||
write_psi_det ~n_int:n_int ~n_det:n_det psi_det;
|
write_psi_det ~n_int:n_int ~n_det:n_det psi_det;
|
||||||
;;
|
;;
|
||||||
@ -399,35 +279,17 @@ end = struct
|
|||||||
|> String.concat_array ~sep:"\n"
|
|> String.concat_array ~sep:"\n"
|
||||||
in
|
in
|
||||||
Printf.sprintf "
|
Printf.sprintf "
|
||||||
Read the current wave function ::
|
|
||||||
|
|
||||||
read_wf = %s
|
|
||||||
|
|
||||||
Label of the MOs on which the determinants were computed ::
|
|
||||||
|
|
||||||
mo_label = %s
|
|
||||||
|
|
||||||
Force the selected wave function to be an eigenfunction of S^2.
|
Force the selected wave function to be an eigenfunction of S^2.
|
||||||
If true, input the expected value of S^2 ::
|
If true, input the expected value of S^2 ::
|
||||||
|
|
||||||
s2_eig = %s
|
|
||||||
expected_s2 = %s
|
expected_s2 = %s
|
||||||
|
|
||||||
Thresholds on generators and selectors (fraction of the norm) ::
|
|
||||||
|
|
||||||
threshold_generators = %s
|
|
||||||
threshold_selectors = %s
|
|
||||||
|
|
||||||
Number of requested states, and number of states used for the
|
Number of requested states, and number of states used for the
|
||||||
Davidson diagonalization ::
|
Davidson diagonalization ::
|
||||||
|
|
||||||
n_states = %s
|
n_states = %s
|
||||||
n_states_diag = %s
|
n_states_diag = %s
|
||||||
|
|
||||||
Maximum size of the Hamiltonian matrix that will be fully diagonalized ::
|
|
||||||
|
|
||||||
n_det_max_jacobi = %s
|
|
||||||
|
|
||||||
Number of determinants ::
|
Number of determinants ::
|
||||||
|
|
||||||
n_det = %s
|
n_det = %s
|
||||||
@ -436,15 +298,9 @@ Determinants ::
|
|||||||
|
|
||||||
%s
|
%s
|
||||||
"
|
"
|
||||||
(b.read_wf |> Bool.to_string)
|
|
||||||
(b.mo_label |> MO_label.to_string)
|
|
||||||
(b.s2_eig |> Bool.to_string)
|
|
||||||
(b.expected_s2 |> Positive_float.to_string)
|
(b.expected_s2 |> Positive_float.to_string)
|
||||||
(b.threshold_generators |> Threshold.to_string)
|
|
||||||
(b.threshold_selectors |> Threshold.to_string)
|
|
||||||
(b.n_states |> States_number.to_string)
|
(b.n_states |> States_number.to_string)
|
||||||
(b.n_states_diag |> States_number.to_string)
|
(b.n_states_diag |> States_number.to_string)
|
||||||
(b.n_det_max_jacobi |> Strictly_positive_int.to_string)
|
|
||||||
(b.n_det |> Det_number.to_string)
|
(b.n_det |> Det_number.to_string)
|
||||||
det_text
|
det_text
|
||||||
|> Rst_string.of_string
|
|> Rst_string.of_string
|
||||||
@ -456,31 +312,19 @@ Determinants ::
|
|||||||
Printf.sprintf "
|
Printf.sprintf "
|
||||||
n_int = %s
|
n_int = %s
|
||||||
bit_kind = %s
|
bit_kind = %s
|
||||||
mo_label = \"%s\"
|
|
||||||
n_det = %s
|
n_det = %s
|
||||||
n_states = %s
|
n_states = %s
|
||||||
n_states_diag = %s
|
n_states_diag = %s
|
||||||
n_det_max_jacobi = %s
|
|
||||||
threshold_generators = %s
|
|
||||||
threshold_selectors = %s
|
|
||||||
read_wf = %s
|
|
||||||
expected_s2 = %s
|
expected_s2 = %s
|
||||||
s2_eig = %s
|
|
||||||
psi_coef = %s
|
psi_coef = %s
|
||||||
psi_det = %s
|
psi_det = %s
|
||||||
"
|
"
|
||||||
(b.n_int |> N_int_number.to_string)
|
(b.n_int |> N_int_number.to_string)
|
||||||
(b.bit_kind |> Bit_kind.to_string)
|
(b.bit_kind |> Bit_kind.to_string)
|
||||||
(b.mo_label |> MO_label.to_string)
|
|
||||||
(b.n_det |> Det_number.to_string)
|
(b.n_det |> Det_number.to_string)
|
||||||
(b.n_states |> States_number.to_string)
|
(b.n_states |> States_number.to_string)
|
||||||
(b.n_states_diag |> States_number.to_string)
|
(b.n_states_diag |> States_number.to_string)
|
||||||
(b.n_det_max_jacobi |> Strictly_positive_int.to_string)
|
|
||||||
(b.threshold_generators |> Threshold.to_string)
|
|
||||||
(b.threshold_selectors |> Threshold.to_string)
|
|
||||||
(b.read_wf |> Bool.to_string)
|
|
||||||
(b.expected_s2 |> Positive_float.to_string)
|
(b.expected_s2 |> Positive_float.to_string)
|
||||||
(b.s2_eig |> Bool.to_string)
|
|
||||||
(b.psi_coef |> Array.to_list |> List.map ~f:Det_coef.to_string
|
(b.psi_coef |> Array.to_list |> List.map ~f:Det_coef.to_string
|
||||||
|> String.concat ~sep:", ")
|
|> String.concat ~sep:", ")
|
||||||
(b.psi_det |> Array.to_list |> List.map ~f:(Determinant.to_string
|
(b.psi_det |> Array.to_list |> List.map ~f:(Determinant.to_string
|
@ -14,7 +14,7 @@ function do_clean()
|
|||||||
{
|
{
|
||||||
rm -rf -- \
|
rm -rf -- \
|
||||||
IRPF90_temp IRPF90_man Makefile.depend $(cat NEEDED_MODULES) include \
|
IRPF90_temp IRPF90_man Makefile.depend $(cat NEEDED_MODULES) include \
|
||||||
ezfio_interface.irp.f irpf90.make irpf90_entities tags $(ls_exe)
|
ezfio_interface.irp.f irpf90.make irpf90_entities tags $(ls_exe) *.mod
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ -z $1 ]]
|
if [[ -z $1 ]]
|
||||||
|
@ -70,9 +70,9 @@ def is_bool(str_):
|
|||||||
Take a string, if is a bool return the conversion into
|
Take a string, if is a bool return the conversion into
|
||||||
fortran and ocaml.
|
fortran and ocaml.
|
||||||
"""
|
"""
|
||||||
if "true" in str_.lower():
|
if "true" in str_.strip().lower():
|
||||||
return Type(None, "true", ".True.")
|
return Type(None, "true", ".True.")
|
||||||
elif "false" in str_.lower():
|
elif "false" in str_.strip().lower():
|
||||||
return Type(None, "false", ".False")
|
return Type(None, "false", ".False")
|
||||||
else:
|
else:
|
||||||
raise TypeError
|
raise TypeError
|
||||||
@ -112,6 +112,8 @@ def get_type_dict():
|
|||||||
# ~#~#~#~#~#~#~#~ #
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
fancy_type['integer'] = Type(None, "int", "integer")
|
fancy_type['integer'] = Type(None, "int", "integer")
|
||||||
|
fancy_type['integer*8'] = Type(None, "int", "integer*8")
|
||||||
|
|
||||||
fancy_type['int'] = Type(None, "int", "integer")
|
fancy_type['int'] = Type(None, "int", "integer")
|
||||||
|
|
||||||
fancy_type['float'] = Type(None, "float", "double precision")
|
fancy_type['float'] = Type(None, "float", "double precision")
|
||||||
@ -121,7 +123,7 @@ def get_type_dict():
|
|||||||
fancy_type['bool'] = Type(None, "bool", "logical")
|
fancy_type['bool'] = Type(None, "bool", "logical")
|
||||||
|
|
||||||
fancy_type['character*(32)'] = Type(None, "string", "character*(32)")
|
fancy_type['character*(32)'] = Type(None, "string", "character*(32)")
|
||||||
fancy_type['character*(60)'] = Type(None, "string", "character*(60)")
|
fancy_type['character*(64)'] = Type(None, "string", "character*(68)")
|
||||||
fancy_type['character*(256)'] = Type(None, "string", "character*(256)")
|
fancy_type['character*(256)'] = Type(None, "string", "character*(256)")
|
||||||
|
|
||||||
# ~#~#~#~#~#~#~#~ #
|
# ~#~#~#~#~#~#~#~ #
|
||||||
@ -203,7 +205,7 @@ def get_dict_config_file(config_file_path, module_lower):
|
|||||||
- ezfio_name : Will be the name of the file
|
- ezfio_name : Will be the name of the file
|
||||||
- ezfio_dir : Will be the folder who containt the ezfio_name
|
- ezfio_dir : Will be the folder who containt the ezfio_name
|
||||||
* /ezfio_dir/ezfio_name
|
* /ezfio_dir/ezfio_name
|
||||||
* equal to MODULE_lower name for the moment.
|
* equal to MODULE_lower name by default.
|
||||||
- interface : The provider is a imput or a output
|
- interface : The provider is a imput or a output
|
||||||
- default : The default value /!\ stored in a Type named type!
|
- default : The default value /!\ stored in a Type named type!
|
||||||
if interface == output
|
if interface == output
|
||||||
@ -216,7 +218,7 @@ def get_dict_config_file(config_file_path, module_lower):
|
|||||||
|
|
||||||
d = defaultdict(dict)
|
d = defaultdict(dict)
|
||||||
l_info_required = ["doc", "interface"]
|
l_info_required = ["doc", "interface"]
|
||||||
l_info_optional = ["ezfio_name", "size"]
|
l_info_optional = ["ezfio_dir", "ezfio_name", "size"]
|
||||||
|
|
||||||
# ~#~#~#~#~#~#~#~#~#~#~ #
|
# ~#~#~#~#~#~#~#~#~#~#~ #
|
||||||
# L o a d _ C o n f i g #
|
# L o a d _ C o n f i g #
|
||||||
@ -238,10 +240,8 @@ def get_dict_config_file(config_file_path, module_lower):
|
|||||||
pvd = section.lower()
|
pvd = section.lower()
|
||||||
|
|
||||||
# Create the dictionary who containt the value per default
|
# Create the dictionary who containt the value per default
|
||||||
d_default = {"ezfio_name": pvd}
|
d_default = {"ezfio_name": pvd,
|
||||||
|
"ezfio_dir": module_lower}
|
||||||
# Set the ezfio_dir
|
|
||||||
d[pvd]["ezfio_dir"] = module_lower
|
|
||||||
|
|
||||||
# Check if type if avalaible
|
# Check if type if avalaible
|
||||||
type_ = config_file.get(section, "type")
|
type_ = config_file.get(section, "type")
|
||||||
@ -269,7 +269,7 @@ def get_dict_config_file(config_file_path, module_lower):
|
|||||||
d[pvd][option] = d_default[option]
|
d[pvd][option] = d_default[option]
|
||||||
|
|
||||||
# If interface is input we need a default value information
|
# If interface is input we need a default value information
|
||||||
if d[pvd]["interface"] == "input":
|
if d[pvd]["interface"].lower() == "input":
|
||||||
try:
|
try:
|
||||||
default_raw = config_file.get(section, "default")
|
default_raw = config_file.get(section, "default")
|
||||||
except ConfigParser.NoOptionError:
|
except ConfigParser.NoOptionError:
|
||||||
@ -294,6 +294,7 @@ def create_ezfio_provider(dict_ezfio_cfg):
|
|||||||
default
|
default
|
||||||
size}
|
size}
|
||||||
create the a list who containt all the code for the provider
|
create the a list who containt all the code for the provider
|
||||||
|
output = output_dict_info['ezfio_dir'
|
||||||
return [code, ...]
|
return [code, ...]
|
||||||
"""
|
"""
|
||||||
from ezfio_generate_provider import EZFIO_Provider
|
from ezfio_generate_provider import EZFIO_Provider
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
"""
|
||||||
|
This programme generate all the
|
||||||
|
ocaml template needed by qp_edit
|
||||||
|
|
||||||
|
You can see `ezfio_generate_provider.py`
|
||||||
|
for an example of utilisation
|
||||||
|
"""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
|
||||||
|
|
||||||
# If type in **kwargs
|
# If type in **kwargs
|
||||||
from ei_handler import Type
|
from ei_handler import Type
|
||||||
|
@ -45,7 +45,7 @@ END_PROVIDER
|
|||||||
self.set_write()
|
self.set_write()
|
||||||
for v in self.values:
|
for v in self.values:
|
||||||
if not v:
|
if not v:
|
||||||
msg = "Error : %s is not set in ezfio_with_default.py" % (v)
|
msg = "Error : %s is not set in EZFIO.cfg" % (v)
|
||||||
print >>sys.stderr, msg
|
print >>sys.stderr, msg
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
return self.data % self.__dict__
|
return self.data % self.__dict__
|
||||||
|
36
scripts/ezfio_interface/qp_convert_ezfio_v1_to_v2.sh
Executable file
36
scripts/ezfio_interface/qp_convert_ezfio_v1_to_v2.sh
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Convert a old ezfio file (with option.irp.f ezfio_default)
|
||||||
|
# into a new EZFIO.cfg type
|
||||||
|
|
||||||
|
# Hartree Fock
|
||||||
|
# Changin the case, don't know if is needed or not
|
||||||
|
|
||||||
|
echo "Will tranform qp_v1.*_ezfio to qp_v2.*_ezfio"
|
||||||
|
echo "All action are irrevocable! And is by choice"
|
||||||
|
echo "You need to stop to use a old version! Plz..."
|
||||||
|
|
||||||
|
echo "Change thresh_SCF > thresh_scf0"
|
||||||
|
mv $1/hartree_Fock/thresh_SCF $1/hartree_fock/thresh_scf 2> /dev/null
|
||||||
|
|
||||||
|
# Set disk_acess
|
||||||
|
echo "Change {read,write}_ao_integrals > disk_access_ao_integrals"
|
||||||
|
|
||||||
|
biint=$1/bielec_integrals
|
||||||
|
|
||||||
|
if [[ -f $biint/read_ao_integrals ]]; then
|
||||||
|
if [[ `cat $1/bielec_integrals/read_ao_integrals` -eq "T" ]]
|
||||||
|
then
|
||||||
|
echo "Read" > $biint/disk_access_ao_integrals
|
||||||
|
|
||||||
|
elif [[ `cat $biint/write_ao_integrals` -eq "T" ]]
|
||||||
|
then
|
||||||
|
echo "Write" > $biint/disk_access_ao_integrals
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "None" > $biint/disk_access_ao_integrals
|
||||||
|
|
||||||
|
fi
|
||||||
|
rm $biint/read_ao_integrals $biint/write_ao_integrals $biint/write_ao_intergals 2> /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Done"
|
292
scripts/ezfio_interface/qp_convert_output_to_ezfio.py
Executable file
292
scripts/ezfio_interface/qp_convert_output_to_ezfio.py
Executable file
@ -0,0 +1,292 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
"""
|
||||||
|
This function acceep
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
qp_convert_output_to_ezfio.py <file.out> [--ezfio=<folder.ezfio>]
|
||||||
|
|
||||||
|
Option:
|
||||||
|
file.out is the file to check (like gamess.out)
|
||||||
|
folder.ezfio is the name you whant for the ezfio
|
||||||
|
(by default is file.out.ezfio)
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
from functools import reduce
|
||||||
|
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
# Add to the path #
|
||||||
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
QPACKAGE_ROOT = os.environ["QPACKAGE_ROOT"]
|
||||||
|
except:
|
||||||
|
print "Error: QPACKAGE_ROOT environment variable not found."
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
sys.path = [QPACKAGE_ROOT + "/EZFIO/Python",
|
||||||
|
QPACKAGE_ROOT + "/resultsFile",
|
||||||
|
QPACKAGE_ROOT + "/scripts"] + sys.path
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~ #
|
||||||
|
# I m p o r t #
|
||||||
|
# ~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
from ezfio import ezfio
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
from resultsFile import *
|
||||||
|
except:
|
||||||
|
print "Error: resultsFile Python library not installed"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
from docopt import docopt
|
||||||
|
|
||||||
|
# _
|
||||||
|
# |_ ._ _ _|_ o _ ._
|
||||||
|
# | |_| | | (_ |_ | (_) | |
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
def write_ezfio(res, filename):
|
||||||
|
|
||||||
|
res.clean_uncontractions()
|
||||||
|
ezfio.set_file(filename)
|
||||||
|
|
||||||
|
# _
|
||||||
|
# |_ | _ _ _|_ ._ _ ._ _
|
||||||
|
# |_ | (/_ (_ |_ | (_) | | _>
|
||||||
|
#
|
||||||
|
ezfio.set_electrons_elec_alpha_num(res.num_alpha)
|
||||||
|
ezfio.set_electrons_elec_beta_num(res.num_beta)
|
||||||
|
|
||||||
|
#
|
||||||
|
# |\ | _ | _ o
|
||||||
|
# | \| |_| (_ | (/_ |
|
||||||
|
#
|
||||||
|
|
||||||
|
# ~#~#~#~ #
|
||||||
|
# I n i t #
|
||||||
|
# ~#~#~#~ #
|
||||||
|
|
||||||
|
charge = []
|
||||||
|
coord_x = []
|
||||||
|
coord_y = []
|
||||||
|
coord_z = []
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~ #
|
||||||
|
# P a r s i n g #
|
||||||
|
# ~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
for a in res.geometry:
|
||||||
|
charge.append(a.charge)
|
||||||
|
if res.units == 'BOHR':
|
||||||
|
coord_x.append(a.coord[0])
|
||||||
|
coord_y.append(a.coord[1])
|
||||||
|
coord_z.append(a.coord[2])
|
||||||
|
else:
|
||||||
|
coord_x.append(a.coord[0] / a0)
|
||||||
|
coord_y.append(a.coord[1] / a0)
|
||||||
|
coord_z.append(a.coord[2] / a0)
|
||||||
|
|
||||||
|
# ~#~#~#~#~ #
|
||||||
|
# W r i t e #
|
||||||
|
# ~#~#~#~#~ #
|
||||||
|
|
||||||
|
ezfio.set_nuclei_nucl_num(len(res.geometry))
|
||||||
|
ezfio.set_nuclei_nucl_charge(charge)
|
||||||
|
|
||||||
|
# Transformt H1 into H
|
||||||
|
import re
|
||||||
|
p = re.compile(ur'(\d*)$')
|
||||||
|
label = [p.sub("", x.name) for x in res.geometry]
|
||||||
|
ezfio.set_nuclei_nucl_label(label)
|
||||||
|
|
||||||
|
ezfio.set_nuclei_nucl_coord(coord_x + coord_y + coord_z)
|
||||||
|
|
||||||
|
# _
|
||||||
|
# /\ _ _ |_) _. _ o _
|
||||||
|
# /--\ (_) _> |_) (_| _> | _>
|
||||||
|
#
|
||||||
|
|
||||||
|
# ~#~#~#~ #
|
||||||
|
# I n i t #
|
||||||
|
# ~#~#~#~ #
|
||||||
|
|
||||||
|
import string
|
||||||
|
at = []
|
||||||
|
num_prim = []
|
||||||
|
power_x = []
|
||||||
|
power_y = []
|
||||||
|
power_z = []
|
||||||
|
coefficient = []
|
||||||
|
exponent = []
|
||||||
|
|
||||||
|
res.clean_contractions()
|
||||||
|
res.convert_to_cartesian()
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~ #
|
||||||
|
# P a r s i n g #
|
||||||
|
# ~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
for b in res.basis:
|
||||||
|
c = b.center
|
||||||
|
for i, atom in enumerate(res.geometry):
|
||||||
|
if atom.coord == c:
|
||||||
|
at.append(i + 1)
|
||||||
|
num_prim.append(len(b.prim))
|
||||||
|
s = b.sym
|
||||||
|
power_x.append(string.count(s, "x"))
|
||||||
|
power_y.append(string.count(s, "y"))
|
||||||
|
power_z.append(string.count(s, "z"))
|
||||||
|
coefficient.append(b.coef)
|
||||||
|
exponent.append([p.expo for p in b.prim])
|
||||||
|
|
||||||
|
# ~#~#~#~#~ #
|
||||||
|
# W r i t e #
|
||||||
|
# ~#~#~#~#~ #
|
||||||
|
|
||||||
|
ezfio.set_ao_basis_ao_num(len(res.basis))
|
||||||
|
ezfio.set_ao_basis_ao_nucl(at)
|
||||||
|
ezfio.set_ao_basis_ao_prim_num(num_prim)
|
||||||
|
ezfio.set_ao_basis_ao_power(power_x + power_y + power_z)
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~ #
|
||||||
|
# P a r s i n g #
|
||||||
|
# ~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
prim_num_max = ezfio.get_ao_basis_ao_prim_num_max()
|
||||||
|
|
||||||
|
for i in range(len(res.basis)):
|
||||||
|
coefficient[
|
||||||
|
i] += [0. for j in range(len(coefficient[i]), prim_num_max)]
|
||||||
|
exponent[i] += [0. for j in range(len(exponent[i]), prim_num_max)]
|
||||||
|
|
||||||
|
coefficient = reduce(lambda x, y: x + y, coefficient, [])
|
||||||
|
exponent = reduce(lambda x, y: x + y, exponent, [])
|
||||||
|
|
||||||
|
coef = []
|
||||||
|
expo = []
|
||||||
|
for i in range(prim_num_max):
|
||||||
|
for j in range(i, len(coefficient), prim_num_max):
|
||||||
|
coef.append(coefficient[j])
|
||||||
|
expo.append(exponent[j])
|
||||||
|
|
||||||
|
# ~#~#~#~#~ #
|
||||||
|
# W r i t e #
|
||||||
|
# ~#~#~#~#~ #
|
||||||
|
|
||||||
|
ezfio.set_ao_basis_ao_coef(coef)
|
||||||
|
ezfio.set_ao_basis_ao_expo(expo)
|
||||||
|
ezfio.set_ao_basis_ao_basis("Read by resultsFile")
|
||||||
|
|
||||||
|
# _
|
||||||
|
# |\/| _ _ |_) _. _ o _
|
||||||
|
# | | (_) _> |_) (_| _> | _>
|
||||||
|
#
|
||||||
|
|
||||||
|
# ~#~#~#~ #
|
||||||
|
# I n i t #
|
||||||
|
# ~#~#~#~ #
|
||||||
|
|
||||||
|
MoTag = res.determinants_mo_type
|
||||||
|
ezfio.set_mo_basis_mo_label('Orthonormalized')
|
||||||
|
MO_type = MoTag
|
||||||
|
allMOs = res.mo_sets[MO_type]
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~ #
|
||||||
|
# P a r s i n g #
|
||||||
|
# ~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
try:
|
||||||
|
closed = [(allMOs[i].eigenvalue, i) for i in res.closed_mos]
|
||||||
|
active = [(allMOs[i].eigenvalue, i) for i in res.active_mos]
|
||||||
|
virtual = [(allMOs[i].eigenvalue, i) for i in res.virtual_mos]
|
||||||
|
except:
|
||||||
|
closed = []
|
||||||
|
virtual = []
|
||||||
|
active = [(allMOs[i].eigenvalue, i) for i in range(len(allMOs))]
|
||||||
|
|
||||||
|
closed = map(lambda x: x[1], closed)
|
||||||
|
active = map(lambda x: x[1], active)
|
||||||
|
virtual = map(lambda x: x[1], virtual)
|
||||||
|
MOindices = closed + active + virtual
|
||||||
|
|
||||||
|
MOs = []
|
||||||
|
for i in MOindices:
|
||||||
|
MOs.append(allMOs[i])
|
||||||
|
|
||||||
|
mo_tot_num = len(MOs)
|
||||||
|
while len(MOindices) < mo_tot_num:
|
||||||
|
MOindices.append(len(MOindices))
|
||||||
|
|
||||||
|
MOmap = list(MOindices)
|
||||||
|
for i in range(len(MOindices)):
|
||||||
|
MOmap[i] = MOindices.index(i)
|
||||||
|
|
||||||
|
energies = []
|
||||||
|
for i in xrange(mo_tot_num):
|
||||||
|
energies.append(MOs[i].eigenvalue)
|
||||||
|
|
||||||
|
if res.occ_num is not None:
|
||||||
|
OccNum = []
|
||||||
|
for i in MOindices:
|
||||||
|
OccNum.append(res.occ_num[MO_type][i])
|
||||||
|
|
||||||
|
while len(OccNum) < mo_tot_num:
|
||||||
|
OccNum.append(0.)
|
||||||
|
|
||||||
|
MoMatrix = []
|
||||||
|
sym0 = [i.sym for i in res.mo_sets[MO_type]]
|
||||||
|
sym = [i.sym for i in res.mo_sets[MO_type]]
|
||||||
|
for i in xrange(len(sym)):
|
||||||
|
sym[MOmap[i]] = sym0[i]
|
||||||
|
|
||||||
|
MoMatrix = []
|
||||||
|
for i in xrange(len(MOs)):
|
||||||
|
m = MOs[i]
|
||||||
|
for coef in m.vector:
|
||||||
|
MoMatrix.append(coef)
|
||||||
|
|
||||||
|
while len(MoMatrix) < len(MOs[0].vector) ** 2:
|
||||||
|
MoMatrix.append(0.)
|
||||||
|
|
||||||
|
# ~#~#~#~#~ #
|
||||||
|
# W r i t e #
|
||||||
|
# ~#~#~#~#~ #
|
||||||
|
|
||||||
|
ezfio.set_mo_basis_mo_tot_num(mo_tot_num)
|
||||||
|
ezfio.set_mo_basis_mo_occ(OccNum)
|
||||||
|
ezfio.set_mo_basis_mo_coef(MoMatrix)
|
||||||
|
|
||||||
|
|
||||||
|
def get_full_path(file_path):
|
||||||
|
file_path = os.path.expanduser(file_path)
|
||||||
|
file_path = os.path.expandvars(file_path)
|
||||||
|
file_path = os.path.abspath(file_path)
|
||||||
|
return file_path
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
arguments = docopt(__doc__)
|
||||||
|
|
||||||
|
file_ = get_full_path(arguments['<file.out>'])
|
||||||
|
|
||||||
|
if arguments["--ezfio"]:
|
||||||
|
ezfio_file = get_full_path(arguments["--ezfio"])
|
||||||
|
else:
|
||||||
|
ezfio_file = "{0}.ezfio".format(file_)
|
||||||
|
|
||||||
|
try:
|
||||||
|
res_file = getFile(file_)
|
||||||
|
except:
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
print file_, 'recognized as', str(res_file).split('.')[-1].split()[0]
|
||||||
|
|
||||||
|
write_ezfio(res_file, ezfio_file)
|
@ -4,14 +4,16 @@ open Core.Std;;
|
|||||||
|
|
||||||
(** Interactive editing of the input.
|
(** Interactive editing of the input.
|
||||||
|
|
||||||
@author A. Scemama
|
WARNING
|
||||||
|
This file is autogenerad by
|
||||||
|
`${{QP_ROOT}}/script/ezfio_interface/ei_handler.py`
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|
||||||
(** Keywords used to define input sections *)
|
(** Keywords used to define input sections *)
|
||||||
type keyword =
|
type keyword =
|
||||||
| Ao_basis
|
| Ao_basis
|
||||||
| Determinants
|
| Determinants_by_hand
|
||||||
| Electrons
|
| Electrons
|
||||||
| Mo_basis
|
| Mo_basis
|
||||||
| Nuclei
|
| Nuclei
|
||||||
@ -20,11 +22,11 @@ type keyword =
|
|||||||
|
|
||||||
|
|
||||||
let keyword_to_string = function
|
let keyword_to_string = function
|
||||||
| Ao_basis -> "AO basis"
|
| Ao_basis -> "AO basis"
|
||||||
| Determinants -> "Determinants"
|
| Determinants_by_hand -> "Determinants_by_hand"
|
||||||
| Electrons -> "Electrons"
|
| Electrons -> "Electrons"
|
||||||
| Mo_basis -> "MO basis"
|
| Mo_basis -> "MO basis"
|
||||||
| Nuclei -> "Molecule"
|
| Nuclei -> "Molecule"
|
||||||
{keywords_to_string}
|
{keywords_to_string}
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -72,8 +74,8 @@ let get s =
|
|||||||
f Nuclei.(read, to_rst)
|
f Nuclei.(read, to_rst)
|
||||||
| Ao_basis ->
|
| Ao_basis ->
|
||||||
f Ao_basis.(read, to_rst)
|
f Ao_basis.(read, to_rst)
|
||||||
| Determinants ->
|
| Determinants_by_hand ->
|
||||||
f Determinants.(read, to_rst)
|
f Determinants_by_hand.(read, to_rst)
|
||||||
{section_to_rst}
|
{section_to_rst}
|
||||||
end
|
end
|
||||||
with
|
with
|
||||||
@ -114,7 +116,7 @@ let set str s =
|
|||||||
match s with
|
match s with
|
||||||
{write}
|
{write}
|
||||||
| Electrons -> write Electrons.(of_rst, write) s
|
| Electrons -> write Electrons.(of_rst, write) s
|
||||||
| Determinants -> write Determinants.(of_rst, write) s
|
| Determinants_by_hand -> write Determinants_by_hand.(of_rst, write) s
|
||||||
| Nuclei -> write Nuclei.(of_rst, write) s
|
| Nuclei -> write Nuclei.(of_rst, write) s
|
||||||
| Ao_basis -> () (* TODO *)
|
| Ao_basis -> () (* TODO *)
|
||||||
| Mo_basis -> () (* TODO *)
|
| Mo_basis -> () (* TODO *)
|
||||||
@ -162,7 +164,7 @@ let run check_only ezfio_filename =
|
|||||||
Electrons ;
|
Electrons ;
|
||||||
{tasks}
|
{tasks}
|
||||||
Mo_basis;
|
Mo_basis;
|
||||||
Determinants ;
|
Determinants_by_hand ;
|
||||||
]
|
]
|
||||||
in
|
in
|
||||||
|
|
||||||
|
@ -90,13 +90,19 @@ END_PROVIDER
|
|||||||
self.default = t
|
self.default = t
|
||||||
|
|
||||||
def get_default(self):
|
def get_default(self):
|
||||||
filename = '/'.join( [os.environ['QPACKAGE_ROOT'], 'data',
|
mypath = '/'.join( [os.environ['QPACKAGE_ROOT'], 'data',
|
||||||
'ezfio_defaults',
|
'ezfio_defaults'] )
|
||||||
'WILL_BE_DELETED.ezfio_default'] )
|
|
||||||
|
from os import listdir
|
||||||
|
from os.path import isfile, join
|
||||||
|
onlyfiles = [ join(mypath,f) for f in listdir(mypath) if isfile(join(mypath,f)) ]
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
for filename in onlyfiles:
|
||||||
|
file = open(filename,'r')
|
||||||
|
lines.extend(file.readlines())
|
||||||
|
file.close()
|
||||||
|
|
||||||
file = open(filename,'r')
|
|
||||||
lines = file.readlines()
|
|
||||||
file.close()
|
|
||||||
k=-1
|
k=-1
|
||||||
# Search directory
|
# Search directory
|
||||||
for k,line in enumerate(lines):
|
for k,line in enumerate(lines):
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
import os
|
import os
|
||||||
file = open(os.environ["QPACKAGE_ROOT"]+'/src/Dets/H_apply_template.f','r')
|
file = open(os.environ["QPACKAGE_ROOT"]+'/src/Determinants/H_apply_template.f','r')
|
||||||
template = file.read()
|
template = file.read()
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ class H_apply(object):
|
|||||||
endif
|
endif
|
||||||
SOFT_TOUCH psi_det psi_coef N_det
|
SOFT_TOUCH psi_det psi_coef N_det
|
||||||
"""
|
"""
|
||||||
s["printout_now"] = """write(output_Dets,*) &
|
s["printout_now"] = """write(output_determinants,*) &
|
||||||
100.*float(i_generator)/float(N_det_generators), '% in ', wall_1-wall_0, 's'"""
|
100.*float(i_generator)/float(N_det_generators), '% in ', wall_1-wall_0, 's'"""
|
||||||
self.data = s
|
self.data = s
|
||||||
|
|
||||||
@ -211,9 +211,9 @@ class H_apply(object):
|
|||||||
delta_pt2(k) = 0.d0
|
delta_pt2(k) = 0.d0
|
||||||
pt2_old(k) = 0.d0
|
pt2_old(k) = 0.d0
|
||||||
enddo
|
enddo
|
||||||
write(output_Dets,'(A12, X, A8, 3(2X, A9), 2X, A8, 2X, A8, 2X, A8)') &
|
write(output_determinants,'(A12, X, A8, 3(2X, A9), 2X, A8, 2X, A8, 2X, A8)') &
|
||||||
'N_generators', 'Norm', 'Delta PT2', 'PT2', 'Est. PT2', 'secs'
|
'N_generators', 'Norm', 'Delta PT2', 'PT2', 'Est. PT2', 'secs'
|
||||||
write(output_Dets,'(A12, X, A8, 3(2X, A9), 2X, A8, 2X, A8, 2X, A8)') &
|
write(output_determinants,'(A12, X, A8, 3(2X, A9), 2X, A8, 2X, A8, 2X, A8)') &
|
||||||
'============', '========', '=========', '=========', '=========', &
|
'============', '========', '=========', '=========', '=========', &
|
||||||
'========='
|
'========='
|
||||||
"""
|
"""
|
||||||
@ -226,7 +226,7 @@ class H_apply(object):
|
|||||||
"""
|
"""
|
||||||
self.data["printout_now"] = """
|
self.data["printout_now"] = """
|
||||||
do k=1,N_st
|
do k=1,N_st
|
||||||
write(output_Dets,'(I10, 4(2X, F9.6), 2X, F8.1)') &
|
write(output_determinants,'(I10, 4(2X, F9.6), 2X, F8.1)') &
|
||||||
i_generator, norm_psi(k), delta_pt2(k), pt2(k), &
|
i_generator, norm_psi(k), delta_pt2(k), pt2(k), &
|
||||||
pt2(k)/(norm_psi(k)*norm_psi(k)), &
|
pt2(k)/(norm_psi(k)*norm_psi(k)), &
|
||||||
wall_1-wall_0
|
wall_1-wall_0
|
||||||
@ -258,7 +258,7 @@ class H_apply(object):
|
|||||||
! SOFT_TOUCH psi_det psi_coef N_det
|
! SOFT_TOUCH psi_det psi_coef N_det
|
||||||
selection_criterion_min = min(selection_criterion_min, maxval(select_max))*0.1d0
|
selection_criterion_min = min(selection_criterion_min, maxval(select_max))*0.1d0
|
||||||
selection_criterion = selection_criterion_min
|
selection_criterion = selection_criterion_min
|
||||||
call write_double(output_Dets,selection_criterion,'Selection criterion')
|
call write_double(output_determinants,selection_criterion,'Selection criterion')
|
||||||
"""
|
"""
|
||||||
self.data["keys_work"] = """
|
self.data["keys_work"] = """
|
||||||
e_2_pert_buffer = 0.d0
|
e_2_pert_buffer = 0.d0
|
||||||
|
@ -1,210 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import sys,os
|
|
||||||
try:
|
|
||||||
QPACKAGE_ROOT = os.environ["QPACKAGE_ROOT"]
|
|
||||||
except:
|
|
||||||
print "Error: QPACKAGE_ROOT environment variable not found."
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
sys.path = [ QPACKAGE_ROOT+"/EZFIO/Python", QPACKAGE_ROOT+"/resultsFile" ]+sys.path
|
|
||||||
from ezfio import ezfio
|
|
||||||
import ezfio as ez
|
|
||||||
print "EZFIO: ", os.path.dirname(ez.__file__)
|
|
||||||
|
|
||||||
try:
|
|
||||||
from resultsFile import *
|
|
||||||
except:
|
|
||||||
print "Error: resultsFile Python library not installed"
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def write_ezfioFile(res,filename):
|
|
||||||
res.clean_uncontractions()
|
|
||||||
ezfio.set_file(filename)
|
|
||||||
|
|
||||||
# Electrons
|
|
||||||
ezfio.set_electrons_elec_alpha_num(res.num_alpha)
|
|
||||||
ezfio.set_electrons_elec_beta_num(res.num_beta)
|
|
||||||
|
|
||||||
# Nuclei
|
|
||||||
ezfio.set_nuclei_nucl_num(len(res.geometry))
|
|
||||||
charge = []
|
|
||||||
coord = []
|
|
||||||
coord_x = []
|
|
||||||
coord_y = []
|
|
||||||
coord_z = []
|
|
||||||
for a in res.geometry:
|
|
||||||
charge.append(a.charge)
|
|
||||||
if res.units == 'BOHR':
|
|
||||||
coord_x.append(a.coord[0])
|
|
||||||
coord_y.append(a.coord[1])
|
|
||||||
coord_z.append(a.coord[2])
|
|
||||||
else:
|
|
||||||
coord_x.append(a.coord[0]/a0)
|
|
||||||
coord_y.append(a.coord[1]/a0)
|
|
||||||
coord_z.append(a.coord[2]/a0)
|
|
||||||
ezfio.set_nuclei_nucl_charge(charge)
|
|
||||||
label = map(lambda x: x.name, res.geometry)
|
|
||||||
ezfio.set_nuclei_nucl_label(label)
|
|
||||||
ezfio.set_nuclei_nucl_coord(coord_x+coord_y+coord_z)
|
|
||||||
|
|
||||||
# Basis
|
|
||||||
basis = res.uncontracted_basis
|
|
||||||
geom = res.geometry
|
|
||||||
|
|
||||||
res.clean_contractions()
|
|
||||||
# AO Basis
|
|
||||||
import string
|
|
||||||
at = []
|
|
||||||
num_prim = []
|
|
||||||
magnetic_number = []
|
|
||||||
angular_number = []
|
|
||||||
power_x = []
|
|
||||||
power_y = []
|
|
||||||
power_z = []
|
|
||||||
coefficient = []
|
|
||||||
exponent = []
|
|
||||||
res.convert_to_cartesian()
|
|
||||||
for b in res.basis:
|
|
||||||
c = b.center
|
|
||||||
for i,atom in enumerate(res.geometry):
|
|
||||||
if atom.coord == c:
|
|
||||||
at.append(i+1)
|
|
||||||
num_prim.append(len(b.prim))
|
|
||||||
s = b.sym
|
|
||||||
power_x.append( string.count(s,"x") )
|
|
||||||
power_y.append( string.count(s,"y") )
|
|
||||||
power_z.append( string.count(s,"z") )
|
|
||||||
coefficient.append( b.coef )
|
|
||||||
exponent.append( [ p.expo for p in b.prim ] )
|
|
||||||
ezfio.set_ao_basis_ao_num(len(res.basis))
|
|
||||||
ezfio.set_ao_basis_ao_nucl(at)
|
|
||||||
ezfio.set_ao_basis_ao_prim_num(num_prim)
|
|
||||||
ezfio.set_ao_basis_ao_power(power_x+power_y+power_z)
|
|
||||||
prim_num_max = ezfio.get_ao_basis_ao_prim_num_max()
|
|
||||||
len_res_basis = len(res.basis)
|
|
||||||
for i in range(len(res.basis)):
|
|
||||||
coefficient[i] += [ 0. for j in range(len(coefficient[i]),prim_num_max) ]
|
|
||||||
exponent[i] += [ 0. for j in range(len(exponent[i]),prim_num_max) ]
|
|
||||||
coefficient = reduce(lambda x, y: x+y, coefficient, [])
|
|
||||||
exponent = reduce(lambda x, y: x+y, exponent, [])
|
|
||||||
coef = []
|
|
||||||
expo = []
|
|
||||||
for i in range(prim_num_max):
|
|
||||||
for j in range(i,len(coefficient),prim_num_max):
|
|
||||||
coef.append ( coefficient[j] )
|
|
||||||
expo.append ( exponent[j] )
|
|
||||||
ezfio.set_ao_basis_ao_coef(coef)
|
|
||||||
ezfio.set_ao_basis_ao_expo(expo)
|
|
||||||
ezfio.set_ao_basis_ao_basis("Read by resultsFile")
|
|
||||||
|
|
||||||
|
|
||||||
# MO
|
|
||||||
MoTag = res.determinants_mo_type
|
|
||||||
ezfio.set_mo_basis_mo_label('Orthonormalized')
|
|
||||||
MO_type = MoTag
|
|
||||||
allMOs = res.mo_sets[MO_type]
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
|
||||||
closed = [ (allMOs[i].eigenvalue,i) for i in res.closed_mos ]
|
|
||||||
active = [ (allMOs[i].eigenvalue,i) for i in res.active_mos ]
|
|
||||||
virtual =[ (allMOs[i].eigenvalue,i) for i in res.virtual_mos ]
|
|
||||||
except:
|
|
||||||
closed = []
|
|
||||||
virtual = []
|
|
||||||
active = [ (allMOs[i].eigenvalue,i) for i in range(len(allMOs)) ]
|
|
||||||
|
|
||||||
# closed.sort()
|
|
||||||
# active.sort()
|
|
||||||
# virtual.sort()
|
|
||||||
closed = map( lambda x: x[1], closed)
|
|
||||||
active = map( lambda x: x[1], active)
|
|
||||||
virtual = map( lambda x: x[1], virtual)
|
|
||||||
MOindices = closed + active + virtual
|
|
||||||
|
|
||||||
MOs = []
|
|
||||||
for i in MOindices:
|
|
||||||
MOs.append(allMOs[i])
|
|
||||||
|
|
||||||
mo_tot_num = len(MOs)
|
|
||||||
while len(MOindices) < mo_tot_num:
|
|
||||||
MOindices.append(len(MOindices))
|
|
||||||
|
|
||||||
MOmap = list(MOindices)
|
|
||||||
for i in range(len(MOindices)):
|
|
||||||
MOmap[i] = MOindices.index(i)
|
|
||||||
|
|
||||||
energies = []
|
|
||||||
for i in xrange(mo_tot_num):
|
|
||||||
energies.append(MOs[i].eigenvalue)
|
|
||||||
|
|
||||||
if res.occ_num is not None:
|
|
||||||
OccNum = []
|
|
||||||
for i in MOindices:
|
|
||||||
OccNum.append(res.occ_num[MO_type][i])
|
|
||||||
|
|
||||||
while len(OccNum) < mo_tot_num:
|
|
||||||
OccNum.append(0.)
|
|
||||||
|
|
||||||
MoMatrix = []
|
|
||||||
sym0 = [ i.sym for i in res.mo_sets[MO_type] ]
|
|
||||||
sym = [ i.sym for i in res.mo_sets[MO_type] ]
|
|
||||||
for i in xrange(len(sym)):
|
|
||||||
sym[MOmap[i]] = sym0[i]
|
|
||||||
|
|
||||||
MoMatrix = []
|
|
||||||
for i in xrange(len(MOs)):
|
|
||||||
m = MOs[i]
|
|
||||||
for coef in m.vector:
|
|
||||||
MoMatrix.append(coef)
|
|
||||||
|
|
||||||
while len(MoMatrix) < len(MOs[0].vector)**2:
|
|
||||||
MoMatrix.append(0.)
|
|
||||||
|
|
||||||
mo = []
|
|
||||||
for i in MOindices:
|
|
||||||
mo.append(res.mo_sets[MoTag][i])
|
|
||||||
|
|
||||||
if len(mo) < mo_tot_num:
|
|
||||||
newmo = orbital()
|
|
||||||
newmo.eigenvalue = 0.
|
|
||||||
newmo.vector = [0. for i in range(mo_tot_num)]
|
|
||||||
newmo.vector[len(mo)] = 1.
|
|
||||||
while len(mo) < mo_tot_num:
|
|
||||||
mo.append(newmo)
|
|
||||||
Energies = [ m.eigenvalue for m in mo ]
|
|
||||||
|
|
||||||
ezfio.set_mo_basis_mo_tot_num(mo_tot_num)
|
|
||||||
ezfio.set_mo_basis_mo_occ(OccNum)
|
|
||||||
ezfio.set_mo_basis_mo_coef(MoMatrix)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
# Check command line
|
|
||||||
|
|
||||||
det_threshold = 0.
|
|
||||||
|
|
||||||
if len(sys.argv) == 2:
|
|
||||||
State=0
|
|
||||||
elif len(sys.argv) == 3:
|
|
||||||
State=int(sys.argv[2])
|
|
||||||
else:
|
|
||||||
print "usage: "+sys.argv[0]+" file.out [state]"
|
|
||||||
sys.exit(2)
|
|
||||||
|
|
||||||
firstArg = sys.argv[1]
|
|
||||||
|
|
||||||
file = getFile(firstArg)
|
|
||||||
print firstArg, 'recognized as', str(file).split('.')[-1].split()[0]
|
|
||||||
|
|
||||||
filename = firstArg+".ezfio"
|
|
||||||
write_ezfioFile(file,filename)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Generators_CAS Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files Generators_CAS Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Generators_CAS <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_CAS>`_
|
* `Generators_CAS <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_CAS>`_
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask CISD CISD_selected Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask CISD CISD_selected Determinants Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ Needed Modules
|
|||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `CISD <http://github.com/LCPQ/quantum_package/tree/master/src/CISD>`_
|
* `CISD <http://github.com/LCPQ/quantum_package/tree/master/src/CISD>`_
|
||||||
* `CISD_selected <http://github.com/LCPQ/quantum_package/tree/master/src/CISD_selected>`_
|
* `CISD_selected <http://github.com/LCPQ/quantum_package/tree/master/src/CISD_selected>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask CISD Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask CISD Determinants Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ Needed Modules
|
|||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `CISD <http://github.com/LCPQ/quantum_package/tree/master/src/CISD>`_
|
* `CISD <http://github.com/LCPQ/quantum_package/tree/master/src/CISD>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask CISD CISD_selected Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask CISD CISD_selected Determinants Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ Needed Modules
|
|||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `CISD <http://github.com/LCPQ/quantum_package/tree/master/src/CISD>`_
|
* `CISD <http://github.com/LCPQ/quantum_package/tree/master/src/CISD>`_
|
||||||
* `CISD_selected <http://github.com/LCPQ/quantum_package/tree/master/src/CISD_selected>`_
|
* `CISD_selected <http://github.com/LCPQ/quantum_package/tree/master/src/CISD_selected>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask CISD Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask CISD Determinants Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ Needed Modules
|
|||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `CISD <http://github.com/LCPQ/quantum_package/tree/master/src/CISD>`_
|
* `CISD <http://github.com/LCPQ/quantum_package/tree/master/src/CISD>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Generators_CAS Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files Generators_CAS Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Generators_CAS <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_CAS>`_
|
* `Generators_CAS <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_CAS>`_
|
||||||
|
103
src/Determinants/EZFIO.cfg
Normal file
103
src/Determinants/EZFIO.cfg
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
[N_states]
|
||||||
|
type: States_number
|
||||||
|
doc: Number of states to consider
|
||||||
|
interface: input
|
||||||
|
default: 1
|
||||||
|
|
||||||
|
[N_det_max_jacobi]
|
||||||
|
type: Strictly_positive_int
|
||||||
|
doc: Maximum number of determinants diagonalized by Jacobi
|
||||||
|
interface: input
|
||||||
|
default: 1000
|
||||||
|
|
||||||
|
[read_wf]
|
||||||
|
type: logical
|
||||||
|
doc: If true, read the wave function from the EZFIO file
|
||||||
|
interface: input
|
||||||
|
default: False
|
||||||
|
|
||||||
|
[only_single_double_dm]
|
||||||
|
type: logical
|
||||||
|
doc: If true, The One body DM is calculated with ignoring the Double<->Doubles extra diag elements
|
||||||
|
interface: input
|
||||||
|
default: False
|
||||||
|
|
||||||
|
[s2_eig]
|
||||||
|
type: logical
|
||||||
|
doc: Force the wave function to be an eigenfunction of S^2
|
||||||
|
interface: input
|
||||||
|
default: False
|
||||||
|
|
||||||
|
[threshold_generators]
|
||||||
|
type: Threshold
|
||||||
|
doc: Thresholds on generators (fraction of the norm)
|
||||||
|
interface: input
|
||||||
|
default: 0.99
|
||||||
|
|
||||||
|
[threshold_selectors]
|
||||||
|
type: Threshold
|
||||||
|
doc: Thresholds on selectors (fraction of the norm)
|
||||||
|
interface: input
|
||||||
|
default: 0.999
|
||||||
|
|
||||||
|
|
||||||
|
# Only create the ezfio_config, (no Input_* and no PROVIDER)
|
||||||
|
|
||||||
|
[n_states_diag]
|
||||||
|
type: integer
|
||||||
|
doc: n_states_diag
|
||||||
|
interface: Ocaml
|
||||||
|
|
||||||
|
[n_int]
|
||||||
|
interface: OCaml
|
||||||
|
doc: n_int
|
||||||
|
type: N_int_number
|
||||||
|
|
||||||
|
[bit_kind]
|
||||||
|
interface: OCaml
|
||||||
|
doc: bit_kind
|
||||||
|
type: Bit_kind
|
||||||
|
|
||||||
|
[mo_label]
|
||||||
|
interface: OCaml
|
||||||
|
doc: o_label
|
||||||
|
type: character*(64)
|
||||||
|
|
||||||
|
[n_det]
|
||||||
|
interface: OCaml
|
||||||
|
doc: n_det
|
||||||
|
type: integer
|
||||||
|
|
||||||
|
[psi_coef]
|
||||||
|
interface: OCaml
|
||||||
|
doc: psi_coef
|
||||||
|
type: double precision
|
||||||
|
size: (determinants_n_det,determinants_n_states)
|
||||||
|
|
||||||
|
[psi_det]
|
||||||
|
interface: OCaml
|
||||||
|
doc: psi_det
|
||||||
|
type: integer*8
|
||||||
|
size: (determinants_n_int*determinants_bit_kind/8,2,determinants_n_det)
|
||||||
|
|
||||||
|
[det_num]
|
||||||
|
interface: OCaml
|
||||||
|
doc: det_num
|
||||||
|
type: integer
|
||||||
|
|
||||||
|
[det_occ]
|
||||||
|
interface: OCaml
|
||||||
|
doc: det_occ
|
||||||
|
type: integer
|
||||||
|
size: (electrons_elec_alpha_num,determinants_det_num,2)
|
||||||
|
|
||||||
|
[det_coef]
|
||||||
|
interface: OCaml
|
||||||
|
doc: det_coef
|
||||||
|
type: double precision
|
||||||
|
size: (determinants_det_num)
|
||||||
|
|
||||||
|
[expected_s2]
|
||||||
|
interface: OCaml
|
||||||
|
doc: expcted_s2
|
||||||
|
type: double precision
|
@ -49,26 +49,26 @@ Documentation
|
|||||||
.. Do not edit this section. It was auto-generated from the
|
.. Do not edit this section. It was auto-generated from the
|
||||||
.. NEEDED_MODULES file.
|
.. NEEDED_MODULES file.
|
||||||
|
|
||||||
`copy_h_apply_buffer_to_wf <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L100>`_
|
`copy_h_apply_buffer_to_wf <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/H_apply.irp.f#L100>`_
|
||||||
Copies the H_apply buffer to psi_coef. You need to touch psi_det, psi_coef and N_det
|
Copies the H_apply buffer to psi_coef. You need to touch psi_det, psi_coef and N_det
|
||||||
after calling this function.
|
after calling this function.
|
||||||
After calling this subroutine, N_det, psi_det and psi_coef need to be touched
|
After calling this subroutine, N_det, psi_det and psi_coef need to be touched
|
||||||
|
|
||||||
`fill_h_apply_buffer_no_selection <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L187>`_
|
`fill_h_apply_buffer_no_selection <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/H_apply.irp.f#L187>`_
|
||||||
Fill the H_apply buffer with determiants for CISD
|
Fill the H_apply buffer with determiants for CISD
|
||||||
|
|
||||||
`h_apply_buffer_allocated <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L15>`_
|
`h_apply_buffer_allocated <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/H_apply.irp.f#L15>`_
|
||||||
Buffer of determinants/coefficients/perturbative energy for H_apply.
|
Buffer of determinants/coefficients/perturbative energy for H_apply.
|
||||||
Uninitialized. Filled by H_apply subroutines.
|
Uninitialized. Filled by H_apply subroutines.
|
||||||
|
|
||||||
`h_apply_buffer_lock <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L16>`_
|
`h_apply_buffer_lock <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/H_apply.irp.f#L16>`_
|
||||||
Buffer of determinants/coefficients/perturbative energy for H_apply.
|
Buffer of determinants/coefficients/perturbative energy for H_apply.
|
||||||
Uninitialized. Filled by H_apply subroutines.
|
Uninitialized. Filled by H_apply subroutines.
|
||||||
|
|
||||||
`resize_h_apply_buffer <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/H_apply.irp.f#L48>`_
|
`resize_h_apply_buffer <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/H_apply.irp.f#L48>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`cisd_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/SC2.irp.f#L1>`_
|
`cisd_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/SC2.irp.f#L1>`_
|
||||||
CISD+SC2 method :: take off all the disconnected terms of a CISD (selected or not)
|
CISD+SC2 method :: take off all the disconnected terms of a CISD (selected or not)
|
||||||
.br
|
.br
|
||||||
dets_in : bitmasks corresponding to determinants
|
dets_in : bitmasks corresponding to determinants
|
||||||
@ -84,32 +84,25 @@ Documentation
|
|||||||
.br
|
.br
|
||||||
Initial guess vectors are not necessarily orthonormal
|
Initial guess vectors are not necessarily orthonormal
|
||||||
|
|
||||||
`connected_to_ref <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/connected_to_ref.irp.f#L155>`_
|
`connected_to_ref <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/connected_to_ref.irp.f#L155>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`connected_to_ref_by_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/connected_to_ref.irp.f#L253>`_
|
`connected_to_ref_by_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/connected_to_ref.irp.f#L253>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`det_is_not_or_may_be_in_ref <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/connected_to_ref.irp.f#L359>`_
|
`det_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/connected_to_ref.irp.f#L1>`_
|
||||||
If true, det is not in ref
|
|
||||||
If false, det may be in ref
|
|
||||||
|
|
||||||
`det_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/connected_to_ref.irp.f#L1>`_
|
|
||||||
Return an integer*8 corresponding to a determinant index for searching
|
Return an integer*8 corresponding to a determinant index for searching
|
||||||
|
|
||||||
`get_index_in_psi_det_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/connected_to_ref.irp.f#L48>`_
|
`get_index_in_psi_det_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/connected_to_ref.irp.f#L48>`_
|
||||||
Returns the index of the determinant in the ``psi_det_sorted_bit`` array
|
Returns the index of the determinant in the ``psi_det_sorted_bit`` array
|
||||||
|
|
||||||
`is_in_wavefunction <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/connected_to_ref.irp.f#L34>`_
|
`is_in_wavefunction <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/connected_to_ref.irp.f#L34>`_
|
||||||
True if the determinant ``det`` is in the wave function
|
True if the determinant ``det`` is in the wave function
|
||||||
|
|
||||||
`key_pattern_not_in_ref <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/connected_to_ref.irp.f#L393>`_
|
`occ_pattern_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/connected_to_ref.irp.f#L17>`_
|
||||||
Min and max values of the integers of the keys of the reference
|
|
||||||
|
|
||||||
`occ_pattern_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/connected_to_ref.irp.f#L17>`_
|
|
||||||
Return an integer*8 corresponding to a determinant index for searching
|
Return an integer*8 corresponding to a determinant index for searching
|
||||||
|
|
||||||
`do_mono_excitation <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/create_excitations.irp.f#L1>`_
|
`do_mono_excitation <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/create_excitations.irp.f#L1>`_
|
||||||
Apply the mono excitation operator : a^{dager}_(i_particle) a_(i_hole) of spin = ispin
|
Apply the mono excitation operator : a^{dager}_(i_particle) a_(i_hole) of spin = ispin
|
||||||
on key_in
|
on key_in
|
||||||
ispin = 1 == alpha
|
ispin = 1 == alpha
|
||||||
@ -117,13 +110,13 @@ Documentation
|
|||||||
i_ok = 1 == the excitation is possible
|
i_ok = 1 == the excitation is possible
|
||||||
i_ok = -1 == the excitation is not possible
|
i_ok = -1 == the excitation is not possible
|
||||||
|
|
||||||
`davidson_converged <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/davidson.irp.f#L382>`_
|
`davidson_converged <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/davidson.irp.f#L382>`_
|
||||||
True if the Davidson algorithm is converged
|
True if the Davidson algorithm is converged
|
||||||
|
|
||||||
`davidson_criterion <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/davidson.irp.f#L372>`_
|
`davidson_criterion <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/davidson.irp.f#L372>`_
|
||||||
Can be : [ energy | residual | both | wall_time | cpu_time | iterations ]
|
Can be : [ energy | residual | both | wall_time | cpu_time | iterations ]
|
||||||
|
|
||||||
`davidson_diag <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/davidson.irp.f#L18>`_
|
`davidson_diag <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/davidson.irp.f#L18>`_
|
||||||
Davidson diagonalization.
|
Davidson diagonalization.
|
||||||
.br
|
.br
|
||||||
dets_in : bitmasks corresponding to determinants
|
dets_in : bitmasks corresponding to determinants
|
||||||
@ -141,7 +134,7 @@ Documentation
|
|||||||
.br
|
.br
|
||||||
Initial guess vectors are not necessarily orthonormal
|
Initial guess vectors are not necessarily orthonormal
|
||||||
|
|
||||||
`davidson_diag_hjj <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/davidson.irp.f#L68>`_
|
`davidson_diag_hjj <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/davidson.irp.f#L68>`_
|
||||||
Davidson diagonalization with specific diagonal elements of the H matrix
|
Davidson diagonalization with specific diagonal elements of the H matrix
|
||||||
.br
|
.br
|
||||||
H_jj : specific diagonal H matrix elements to diagonalize de Davidson
|
H_jj : specific diagonal H matrix elements to diagonalize de Davidson
|
||||||
@ -161,55 +154,49 @@ Documentation
|
|||||||
.br
|
.br
|
||||||
Initial guess vectors are not necessarily orthonormal
|
Initial guess vectors are not necessarily orthonormal
|
||||||
|
|
||||||
`davidson_iter_max <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/davidson.irp.f#L1>`_
|
`davidson_iter_max <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/davidson.irp.f#L1>`_
|
||||||
Max number of Davidson iterations
|
Max number of Davidson iterations
|
||||||
|
|
||||||
`davidson_sze_max <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/davidson.irp.f#L9>`_
|
`davidson_sze_max <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/davidson.irp.f#L9>`_
|
||||||
Max number of Davidson sizes
|
Max number of Davidson sizes
|
||||||
|
|
||||||
`davidson_threshold <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/davidson.irp.f#L373>`_
|
`davidson_threshold <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/davidson.irp.f#L373>`_
|
||||||
Can be : [ energy | residual | both | wall_time | cpu_time | iterations ]
|
Can be : [ energy | residual | both | wall_time | cpu_time | iterations ]
|
||||||
|
|
||||||
`one_body_dm_mo <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/density_matrix.irp.f#L164>`_
|
`one_body_dm_mo <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/density_matrix.irp.f#L164>`_
|
||||||
One-body density matrix
|
One-body density matrix
|
||||||
|
|
||||||
`one_body_dm_mo_alpha <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/density_matrix.irp.f#L1>`_
|
`one_body_dm_mo_alpha <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/density_matrix.irp.f#L1>`_
|
||||||
Alpha and beta one-body density matrix for each state
|
Alpha and beta one-body density matrix for each state
|
||||||
|
|
||||||
`one_body_dm_mo_beta <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/density_matrix.irp.f#L2>`_
|
`one_body_dm_mo_beta <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/density_matrix.irp.f#L2>`_
|
||||||
Alpha and beta one-body density matrix for each state
|
Alpha and beta one-body density matrix for each state
|
||||||
|
|
||||||
`one_body_single_double_dm_mo_alpha <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/density_matrix.irp.f#L80>`_
|
`one_body_single_double_dm_mo_alpha <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/density_matrix.irp.f#L80>`_
|
||||||
Alpha and beta one-body density matrix for each state
|
Alpha and beta one-body density matrix for each state
|
||||||
|
|
||||||
`one_body_single_double_dm_mo_beta <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/density_matrix.irp.f#L81>`_
|
`one_body_single_double_dm_mo_beta <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/density_matrix.irp.f#L81>`_
|
||||||
Alpha and beta one-body density matrix for each state
|
Alpha and beta one-body density matrix for each state
|
||||||
|
|
||||||
`one_body_spin_density_mo <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/density_matrix.irp.f#L172>`_
|
`one_body_spin_density_mo <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/density_matrix.irp.f#L172>`_
|
||||||
rho(alpha) - rho(beta)
|
rho(alpha) - rho(beta)
|
||||||
|
|
||||||
`save_natural_mos <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/density_matrix.irp.f#L196>`_
|
`save_natural_mos <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/density_matrix.irp.f#L196>`_
|
||||||
Save natural orbitals, obtained by diagonalization of the one-body density matrix in the MO basis
|
Save natural orbitals, obtained by diagonalization of the one-body density matrix in the MO basis
|
||||||
|
|
||||||
`set_natural_mos <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/density_matrix.irp.f#L180>`_
|
`set_natural_mos <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/density_matrix.irp.f#L180>`_
|
||||||
Set natural orbitals, obtained by diagonalization of the one-body density matrix in the MO basis
|
Set natural orbitals, obtained by diagonalization of the one-body density matrix in the MO basis
|
||||||
|
|
||||||
`state_average_weight <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/density_matrix.irp.f#L207>`_
|
`state_average_weight <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/density_matrix.irp.f#L207>`_
|
||||||
Weights in the state-average calculation of the density matrix
|
Weights in the state-average calculation of the density matrix
|
||||||
|
|
||||||
`det_svd <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/det_svd.irp.f#L1>`_
|
`det_svd <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/det_svd.irp.f#L1>`_
|
||||||
Computes the SVD of the Alpha x Beta determinant coefficient matrix
|
Computes the SVD of the Alpha x Beta determinant coefficient matrix
|
||||||
|
|
||||||
`create_wf_of_psi_svd_matrix <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L741>`_
|
`filter_3_highest_electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L426>`_
|
||||||
Matrix of wf coefficients. Outer product of alpha and beta determinants
|
|
||||||
|
|
||||||
`filter_3_highest_electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L552>`_
|
|
||||||
Returns a determinant with only the 3 highest electrons
|
Returns a determinant with only the 3 highest electrons
|
||||||
|
|
||||||
`generate_all_alpha_beta_det_products <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L796>`_
|
`int_of_3_highest_electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L391>`_
|
||||||
Create a wave function from all possible alpha x beta determinants
|
|
||||||
|
|
||||||
`int_of_3_highest_electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L517>`_
|
|
||||||
Returns an integer*8 as :
|
Returns an integer*8 as :
|
||||||
.br
|
.br
|
||||||
|_<--- 21 bits ---><--- 21 bits ---><--- 21 bits --->|
|
|_<--- 21 bits ---><--- 21 bits ---><--- 21 bits --->|
|
||||||
@ -220,191 +207,158 @@ Documentation
|
|||||||
in descending order
|
in descending order
|
||||||
.br
|
.br
|
||||||
|
|
||||||
`max_degree_exc <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L32>`_
|
`max_degree_exc <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L32>`_
|
||||||
Maximum degree of excitation in the wf
|
Maximum degree of excitation in the wf
|
||||||
|
|
||||||
`n_det <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L3>`_
|
`n_det <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L3>`_
|
||||||
Number of determinants in the wave function
|
Number of determinants in the wave function
|
||||||
|
|
||||||
`n_det_alpha_unique <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L348>`_
|
`psi_average_norm_contrib <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L276>`_
|
||||||
Unique alpha determinants
|
|
||||||
|
|
||||||
`n_det_beta_unique <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L385>`_
|
|
||||||
Unique beta determinants
|
|
||||||
|
|
||||||
`psi_average_norm_contrib <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L276>`_
|
|
||||||
Contribution of determinants to the state-averaged density
|
Contribution of determinants to the state-averaged density
|
||||||
|
|
||||||
`psi_average_norm_contrib_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L432>`_
|
`psi_average_norm_contrib_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L306>`_
|
||||||
Wave function sorted by determinants contribution to the norm (state-averaged)
|
Wave function sorted by determinants contribution to the norm (state-averaged)
|
||||||
|
|
||||||
`psi_coef <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L230>`_
|
`psi_coef <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L230>`_
|
||||||
The wave function coefficients. Initialized with Hartree-Fock if the EZFIO file
|
The wave function coefficients. Initialized with Hartree-Fock if the EZFIO file
|
||||||
is empty
|
is empty
|
||||||
|
|
||||||
`psi_coef_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L431>`_
|
`psi_coef_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L305>`_
|
||||||
Wave function sorted by determinants contribution to the norm (state-averaged)
|
Wave function sorted by determinants contribution to the norm (state-averaged)
|
||||||
|
|
||||||
`psi_coef_sorted_ab <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L579>`_
|
`psi_coef_sorted_ab <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L453>`_
|
||||||
Determinants on which we apply <i|H|j>.
|
Determinants on which we apply <i|H|j>.
|
||||||
They are sorted by the 3 highest electrons in the alpha part,
|
They are sorted by the 3 highest electrons in the alpha part,
|
||||||
then by the 3 highest electrons in the beta part to accelerate
|
then by the 3 highest electrons in the beta part to accelerate
|
||||||
the research of connected determinants.
|
the research of connected determinants.
|
||||||
|
|
||||||
`psi_coef_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L462>`_
|
`psi_coef_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L336>`_
|
||||||
Determinants on which we apply <i|H|psi> for perturbation.
|
Determinants on which we apply <i|H|psi> for perturbation.
|
||||||
They are sorted by determinants interpreted as integers. Useful
|
They are sorted by determinants interpreted as integers. Useful
|
||||||
to accelerate the search of a random determinant in the wave
|
to accelerate the search of a random determinant in the wave
|
||||||
function.
|
function.
|
||||||
|
|
||||||
`psi_det <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L65>`_
|
`psi_det <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L65>`_
|
||||||
The wave function determinants. Initialized with Hartree-Fock if the EZFIO file
|
The wave function determinants. Initialized with Hartree-Fock if the EZFIO file
|
||||||
is empty
|
is empty
|
||||||
|
|
||||||
`psi_det_alpha <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L319>`_
|
`psi_det_size <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L47>`_
|
||||||
List of alpha determinants of psi_det
|
|
||||||
|
|
||||||
`psi_det_alpha_unique <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L347>`_
|
|
||||||
Unique alpha determinants
|
|
||||||
|
|
||||||
`psi_det_beta <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L333>`_
|
|
||||||
List of beta determinants of psi_det
|
|
||||||
|
|
||||||
`psi_det_beta_unique <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L384>`_
|
|
||||||
Unique beta determinants
|
|
||||||
|
|
||||||
`psi_det_size <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L47>`_
|
|
||||||
Size of the psi_det/psi_coef arrays
|
Size of the psi_det/psi_coef arrays
|
||||||
|
|
||||||
`psi_det_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L430>`_
|
`psi_det_sorted <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L304>`_
|
||||||
Wave function sorted by determinants contribution to the norm (state-averaged)
|
Wave function sorted by determinants contribution to the norm (state-averaged)
|
||||||
|
|
||||||
`psi_det_sorted_ab <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L578>`_
|
`psi_det_sorted_ab <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L452>`_
|
||||||
Determinants on which we apply <i|H|j>.
|
Determinants on which we apply <i|H|j>.
|
||||||
They are sorted by the 3 highest electrons in the alpha part,
|
They are sorted by the 3 highest electrons in the alpha part,
|
||||||
then by the 3 highest electrons in the beta part to accelerate
|
then by the 3 highest electrons in the beta part to accelerate
|
||||||
the research of connected determinants.
|
the research of connected determinants.
|
||||||
|
|
||||||
`psi_det_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L461>`_
|
`psi_det_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L335>`_
|
||||||
Determinants on which we apply <i|H|psi> for perturbation.
|
Determinants on which we apply <i|H|psi> for perturbation.
|
||||||
They are sorted by determinants interpreted as integers. Useful
|
They are sorted by determinants interpreted as integers. Useful
|
||||||
to accelerate the search of a random determinant in the wave
|
to accelerate the search of a random determinant in the wave
|
||||||
function.
|
function.
|
||||||
|
|
||||||
`psi_det_sorted_next_ab <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L580>`_
|
`psi_det_sorted_next_ab <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L454>`_
|
||||||
Determinants on which we apply <i|H|j>.
|
Determinants on which we apply <i|H|j>.
|
||||||
They are sorted by the 3 highest electrons in the alpha part,
|
They are sorted by the 3 highest electrons in the alpha part,
|
||||||
then by the 3 highest electrons in the beta part to accelerate
|
then by the 3 highest electrons in the beta part to accelerate
|
||||||
the research of connected determinants.
|
the research of connected determinants.
|
||||||
|
|
||||||
`psi_svd_alpha <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L826>`_
|
`read_dets <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L583>`_
|
||||||
SVD wave function
|
|
||||||
|
|
||||||
`psi_svd_beta <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L827>`_
|
|
||||||
SVD wave function
|
|
||||||
|
|
||||||
`psi_svd_coefs <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L828>`_
|
|
||||||
SVD wave function
|
|
||||||
|
|
||||||
`psi_svd_matrix <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L709>`_
|
|
||||||
Matrix of wf coefficients. Outer product of alpha and beta determinants
|
|
||||||
|
|
||||||
`read_dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L880>`_
|
|
||||||
Reads the determinants from the EZFIO file
|
Reads the determinants from the EZFIO file
|
||||||
|
|
||||||
`save_wavefunction <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L927>`_
|
`save_wavefunction <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L630>`_
|
||||||
Save the wave function into the EZFIO file
|
Save the wave function into the EZFIO file
|
||||||
|
|
||||||
`save_wavefunction_general <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L946>`_
|
`save_wavefunction_general <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L649>`_
|
||||||
Save the wave function into the EZFIO file
|
Save the wave function into the EZFIO file
|
||||||
|
|
||||||
`save_wavefunction_unsorted <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L937>`_
|
`save_wavefunction_unsorted <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L640>`_
|
||||||
Save the wave function into the EZFIO file
|
Save the wave function into the EZFIO file
|
||||||
|
|
||||||
`sort_dets_by_3_highest_electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L600>`_
|
`sort_dets_by_3_highest_electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L474>`_
|
||||||
Determinants on which we apply <i|H|j>.
|
Determinants on which we apply <i|H|j>.
|
||||||
They are sorted by the 3 highest electrons in the alpha part,
|
They are sorted by the 3 highest electrons in the alpha part,
|
||||||
then by the 3 highest electrons in the beta part to accelerate
|
then by the 3 highest electrons in the beta part to accelerate
|
||||||
the research of connected determinants.
|
the research of connected determinants.
|
||||||
|
|
||||||
`sort_dets_by_det_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L475>`_
|
`sort_dets_by_det_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants.irp.f#L349>`_
|
||||||
Determinants are sorted are sorted according to their det_search_key.
|
Determinants are sorted are sorted according to their det_search_key.
|
||||||
Useful to accelerate the search of a random determinant in the wave
|
Useful to accelerate the search of a random determinant in the wave
|
||||||
function.
|
function.
|
||||||
|
|
||||||
`spin_det_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants.irp.f#L303>`_
|
`double_exc_bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants_bitmasks.irp.f#L40>`_
|
||||||
Return an integer*8 corresponding to a determinant index for searching
|
|
||||||
|
|
||||||
`double_exc_bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants_bitmasks.irp.f#L40>`_
|
|
||||||
double_exc_bitmask(:,1,i) is the bitmask for holes of excitation 1
|
double_exc_bitmask(:,1,i) is the bitmask for holes of excitation 1
|
||||||
double_exc_bitmask(:,2,i) is the bitmask for particles of excitation 1
|
double_exc_bitmask(:,2,i) is the bitmask for particles of excitation 1
|
||||||
double_exc_bitmask(:,3,i) is the bitmask for holes of excitation 2
|
double_exc_bitmask(:,3,i) is the bitmask for holes of excitation 2
|
||||||
double_exc_bitmask(:,4,i) is the bitmask for particles of excitation 2
|
double_exc_bitmask(:,4,i) is the bitmask for particles of excitation 2
|
||||||
for a given couple of hole/particle excitations i.
|
for a given couple of hole/particle excitations i.
|
||||||
|
|
||||||
`n_double_exc_bitmasks <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants_bitmasks.irp.f#L31>`_
|
`n_double_exc_bitmasks <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants_bitmasks.irp.f#L31>`_
|
||||||
Number of double excitation bitmasks
|
Number of double excitation bitmasks
|
||||||
|
|
||||||
`n_single_exc_bitmasks <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants_bitmasks.irp.f#L8>`_
|
`n_single_exc_bitmasks <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants_bitmasks.irp.f#L8>`_
|
||||||
Number of single excitation bitmasks
|
Number of single excitation bitmasks
|
||||||
|
|
||||||
`single_exc_bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/determinants_bitmasks.irp.f#L17>`_
|
`single_exc_bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/determinants_bitmasks.irp.f#L17>`_
|
||||||
single_exc_bitmask(:,1,i) is the bitmask for holes
|
single_exc_bitmask(:,1,i) is the bitmask for holes
|
||||||
single_exc_bitmask(:,2,i) is the bitmask for particles
|
single_exc_bitmask(:,2,i) is the bitmask for particles
|
||||||
for a given couple of hole/particle excitations i.
|
for a given couple of hole/particle excitations i.
|
||||||
|
|
||||||
`ci_eigenvectors <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI.irp.f#L37>`_
|
`ci_eigenvectors <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI.irp.f#L37>`_
|
||||||
Eigenvectors/values of the CI matrix
|
Eigenvectors/values of the CI matrix
|
||||||
|
|
||||||
`ci_eigenvectors_s2 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI.irp.f#L38>`_
|
`ci_eigenvectors_s2 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI.irp.f#L38>`_
|
||||||
Eigenvectors/values of the CI matrix
|
Eigenvectors/values of the CI matrix
|
||||||
|
|
||||||
`ci_electronic_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI.irp.f#L36>`_
|
`ci_electronic_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI.irp.f#L36>`_
|
||||||
Eigenvectors/values of the CI matrix
|
Eigenvectors/values of the CI matrix
|
||||||
|
|
||||||
`ci_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI.irp.f#L18>`_
|
`ci_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI.irp.f#L18>`_
|
||||||
N_states lowest eigenvalues of the CI matrix
|
N_states lowest eigenvalues of the CI matrix
|
||||||
|
|
||||||
`diag_algorithm <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI.irp.f#L1>`_
|
`diag_algorithm <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI.irp.f#L1>`_
|
||||||
Diagonalization algorithm (Davidson or Lapack)
|
Diagonalization algorithm (Davidson or Lapack)
|
||||||
|
|
||||||
`diagonalize_ci <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI.irp.f#L96>`_
|
`diagonalize_ci <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI.irp.f#L96>`_
|
||||||
Replace the coefficients of the CI states by the coefficients of the
|
Replace the coefficients of the CI states by the coefficients of the
|
||||||
eigenstates of the CI matrix
|
eigenstates of the CI matrix
|
||||||
|
|
||||||
`ci_sc2_eigenvectors <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI_SC2.irp.f#L27>`_
|
`ci_sc2_eigenvectors <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI_SC2.irp.f#L27>`_
|
||||||
Eigenvectors/values of the CI matrix
|
Eigenvectors/values of the CI matrix
|
||||||
|
|
||||||
`ci_sc2_electronic_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI_SC2.irp.f#L26>`_
|
`ci_sc2_electronic_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI_SC2.irp.f#L26>`_
|
||||||
Eigenvectors/values of the CI matrix
|
Eigenvectors/values of the CI matrix
|
||||||
|
|
||||||
`ci_sc2_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI_SC2.irp.f#L1>`_
|
`ci_sc2_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI_SC2.irp.f#L1>`_
|
||||||
N_states_diag lowest eigenvalues of the CI matrix
|
N_states_diag lowest eigenvalues of the CI matrix
|
||||||
|
|
||||||
`diagonalize_ci_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI_SC2.irp.f#L46>`_
|
`diagonalize_ci_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI_SC2.irp.f#L46>`_
|
||||||
Replace the coefficients of the CI states_diag by the coefficients of the
|
Replace the coefficients of the CI states_diag by the coefficients of the
|
||||||
eigenstates of the CI matrix
|
eigenstates of the CI matrix
|
||||||
|
|
||||||
`threshold_convergence_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI_SC2.irp.f#L18>`_
|
`threshold_convergence_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI_SC2.irp.f#L18>`_
|
||||||
convergence of the correlation energy of SC2 iterations
|
convergence of the correlation energy of SC2 iterations
|
||||||
|
|
||||||
`ci_eigenvectors_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI_mono.irp.f#L2>`_
|
`ci_eigenvectors_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI_mono.irp.f#L2>`_
|
||||||
Eigenvectors/values of the CI matrix
|
Eigenvectors/values of the CI matrix
|
||||||
|
|
||||||
`ci_eigenvectors_s2_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI_mono.irp.f#L3>`_
|
`ci_eigenvectors_s2_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI_mono.irp.f#L3>`_
|
||||||
Eigenvectors/values of the CI matrix
|
Eigenvectors/values of the CI matrix
|
||||||
|
|
||||||
`ci_electronic_energy_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI_mono.irp.f#L1>`_
|
`ci_electronic_energy_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI_mono.irp.f#L1>`_
|
||||||
Eigenvectors/values of the CI matrix
|
Eigenvectors/values of the CI matrix
|
||||||
|
|
||||||
`diagonalize_ci_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/diagonalize_CI_mono.irp.f#L59>`_
|
`diagonalize_ci_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/diagonalize_CI_mono.irp.f#L59>`_
|
||||||
Replace the coefficients of the CI states by the coefficients of the
|
Replace the coefficients of the CI states by the coefficients of the
|
||||||
eigenstates of the CI matrix
|
eigenstates of the CI matrix
|
||||||
|
|
||||||
`apply_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/excitations_utils.irp.f#L1>`_
|
`apply_mono <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/excitations_utils.irp.f#L1>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`filter_connected <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/filter_connected.irp.f#L2>`_
|
`filter_connected <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/filter_connected.irp.f#L2>`_
|
||||||
Filters out the determinants that are not connected by H
|
Filters out the determinants that are not connected by H
|
||||||
.br
|
.br
|
||||||
returns the array idx which contains the index of the
|
returns the array idx which contains the index of the
|
||||||
@ -415,7 +369,7 @@ Documentation
|
|||||||
.br
|
.br
|
||||||
idx(0) is the number of determinants that interact with key1
|
idx(0) is the number of determinants that interact with key1
|
||||||
|
|
||||||
`filter_connected_davidson <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/filter_connected.irp.f#L163>`_
|
`filter_connected_davidson <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/filter_connected.irp.f#L163>`_
|
||||||
Filters out the determinants that are not connected by H
|
Filters out the determinants that are not connected by H
|
||||||
returns the array idx which contains the index of the
|
returns the array idx which contains the index of the
|
||||||
determinants in the array key1 that interact
|
determinants in the array key1 that interact
|
||||||
@ -424,7 +378,7 @@ Documentation
|
|||||||
idx(0) is the number of determinants that interact with key1
|
idx(0) is the number of determinants that interact with key1
|
||||||
key1 should come from psi_det_sorted_ab.
|
key1 should come from psi_det_sorted_ab.
|
||||||
|
|
||||||
`filter_connected_i_h_psi0 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/filter_connected.irp.f#L293>`_
|
`filter_connected_i_h_psi0 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/filter_connected.irp.f#L293>`_
|
||||||
returns the array idx which contains the index of the
|
returns the array idx which contains the index of the
|
||||||
.br
|
.br
|
||||||
determinants in the array key1 that interact
|
determinants in the array key1 that interact
|
||||||
@ -433,7 +387,7 @@ Documentation
|
|||||||
.br
|
.br
|
||||||
idx(0) is the number of determinants that interact with key1
|
idx(0) is the number of determinants that interact with key1
|
||||||
|
|
||||||
`filter_connected_i_h_psi0_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/filter_connected.irp.f#L392>`_
|
`filter_connected_i_h_psi0_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/filter_connected.irp.f#L392>`_
|
||||||
standard filter_connected_i_H_psi but returns in addition
|
standard filter_connected_i_H_psi but returns in addition
|
||||||
.br
|
.br
|
||||||
the array of the index of the non connected determinants to key1
|
the array of the index of the non connected determinants to key1
|
||||||
@ -444,7 +398,7 @@ Documentation
|
|||||||
.br
|
.br
|
||||||
to repeat the excitations
|
to repeat the excitations
|
||||||
|
|
||||||
`filter_connected_sorted_ab <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/filter_connected.irp.f#L101>`_
|
`filter_connected_sorted_ab <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/filter_connected.irp.f#L101>`_
|
||||||
Filters out the determinants that are not connected by H
|
Filters out the determinants that are not connected by H
|
||||||
returns the array idx which contains the index of the
|
returns the array idx which contains the index of the
|
||||||
determinants in the array key1 that interact
|
determinants in the array key1 that interact
|
||||||
@ -453,197 +407,197 @@ Documentation
|
|||||||
.br
|
.br
|
||||||
Determinants are taken from the psi_det_sorted_ab array
|
Determinants are taken from the psi_det_sorted_ab array
|
||||||
|
|
||||||
`put_gess <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/guess_triplet.irp.f#L1>`_
|
`put_gess <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/guess_triplet.irp.f#L1>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`det_to_occ_pattern <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/occ_pattern.irp.f#L2>`_
|
`det_to_occ_pattern <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/occ_pattern.irp.f#L2>`_
|
||||||
Transform a determinant to an occupation pattern
|
Transform a determinant to an occupation pattern
|
||||||
|
|
||||||
`make_s2_eigenfunction <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/occ_pattern.irp.f#L251>`_
|
`make_s2_eigenfunction <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/occ_pattern.irp.f#L251>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`n_occ_pattern <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/occ_pattern.irp.f#L143>`_
|
`n_occ_pattern <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/occ_pattern.irp.f#L143>`_
|
||||||
array of the occ_pattern present in the wf
|
array of the occ_pattern present in the wf
|
||||||
psi_occ_pattern(:,1,j) = jth occ_pattern of the wave function : represent all the single occupation
|
psi_occ_pattern(:,1,j) = jth occ_pattern of the wave function : represent all the single occupation
|
||||||
psi_occ_pattern(:,2,j) = jth occ_pattern of the wave function : represent all the double occupation
|
psi_occ_pattern(:,2,j) = jth occ_pattern of the wave function : represent all the double occupation
|
||||||
|
|
||||||
`occ_pattern_to_dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/occ_pattern.irp.f#L42>`_
|
`occ_pattern_to_dets <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/occ_pattern.irp.f#L42>`_
|
||||||
Generate all possible determinants for a give occ_pattern
|
Generate all possible determinants for a give occ_pattern
|
||||||
|
|
||||||
`occ_pattern_to_dets_size <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/occ_pattern.irp.f#L20>`_
|
`occ_pattern_to_dets_size <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/occ_pattern.irp.f#L20>`_
|
||||||
Number of possible determinants for a given occ_pattern
|
Number of possible determinants for a given occ_pattern
|
||||||
|
|
||||||
`psi_occ_pattern <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/occ_pattern.irp.f#L142>`_
|
`psi_occ_pattern <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/occ_pattern.irp.f#L142>`_
|
||||||
array of the occ_pattern present in the wf
|
array of the occ_pattern present in the wf
|
||||||
psi_occ_pattern(:,1,j) = jth occ_pattern of the wave function : represent all the single occupation
|
psi_occ_pattern(:,1,j) = jth occ_pattern of the wave function : represent all the single occupation
|
||||||
psi_occ_pattern(:,2,j) = jth occ_pattern of the wave function : represent all the double occupation
|
psi_occ_pattern(:,2,j) = jth occ_pattern of the wave function : represent all the double occupation
|
||||||
|
|
||||||
`rec_occ_pattern_to_dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/occ_pattern.irp.f#L102>`_
|
`rec_occ_pattern_to_dets <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/occ_pattern.irp.f#L102>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`n_states_diag <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/options.irp.f#L40>`_
|
`n_states_diag <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/options.irp.f#L1>`_
|
||||||
Number of states to consider for the diagonalization
|
Number of states to consider for the diagonalization
|
||||||
|
|
||||||
`pouet <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/program_beginer_determinants.irp.f#L1>`_
|
`pouet <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/program_beginer_determinants.irp.f#L1>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`routine <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/program_beginer_determinants.irp.f#L7>`_
|
`routine <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/program_beginer_determinants.irp.f#L7>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`idx_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L5>`_
|
`idx_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L5>`_
|
||||||
CAS wave function, defined from the application of the CAS bitmask on the
|
CAS wave function, defined from the application of the CAS bitmask on the
|
||||||
determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
||||||
|
|
||||||
`idx_non_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L62>`_
|
`idx_non_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L62>`_
|
||||||
Set of determinants which are not part of the CAS, defined from the application
|
Set of determinants which are not part of the CAS, defined from the application
|
||||||
of the CAS bitmask on the determinants.
|
of the CAS bitmask on the determinants.
|
||||||
idx_non_cas gives the indice of the determinant in psi_det.
|
idx_non_cas gives the indice of the determinant in psi_det.
|
||||||
|
|
||||||
`n_det_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L6>`_
|
`n_det_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L6>`_
|
||||||
CAS wave function, defined from the application of the CAS bitmask on the
|
CAS wave function, defined from the application of the CAS bitmask on the
|
||||||
determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
||||||
|
|
||||||
`n_det_non_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L63>`_
|
`n_det_non_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L63>`_
|
||||||
Set of determinants which are not part of the CAS, defined from the application
|
Set of determinants which are not part of the CAS, defined from the application
|
||||||
of the CAS bitmask on the determinants.
|
of the CAS bitmask on the determinants.
|
||||||
idx_non_cas gives the indice of the determinant in psi_det.
|
idx_non_cas gives the indice of the determinant in psi_det.
|
||||||
|
|
||||||
`psi_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L3>`_
|
`psi_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L3>`_
|
||||||
CAS wave function, defined from the application of the CAS bitmask on the
|
CAS wave function, defined from the application of the CAS bitmask on the
|
||||||
determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
||||||
|
|
||||||
`psi_cas_coef <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L4>`_
|
`psi_cas_coef <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L4>`_
|
||||||
CAS wave function, defined from the application of the CAS bitmask on the
|
CAS wave function, defined from the application of the CAS bitmask on the
|
||||||
determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
determinants. idx_cas gives the indice of the CAS determinant in psi_det.
|
||||||
|
|
||||||
`psi_cas_coef_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L47>`_
|
`psi_cas_coef_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L47>`_
|
||||||
CAS determinants sorted to accelerate the search of a random determinant in the wave
|
CAS determinants sorted to accelerate the search of a random determinant in the wave
|
||||||
function.
|
function.
|
||||||
|
|
||||||
`psi_cas_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L46>`_
|
`psi_cas_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L46>`_
|
||||||
CAS determinants sorted to accelerate the search of a random determinant in the wave
|
CAS determinants sorted to accelerate the search of a random determinant in the wave
|
||||||
function.
|
function.
|
||||||
|
|
||||||
`psi_non_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L60>`_
|
`psi_non_cas <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L60>`_
|
||||||
Set of determinants which are not part of the CAS, defined from the application
|
Set of determinants which are not part of the CAS, defined from the application
|
||||||
of the CAS bitmask on the determinants.
|
of the CAS bitmask on the determinants.
|
||||||
idx_non_cas gives the indice of the determinant in psi_det.
|
idx_non_cas gives the indice of the determinant in psi_det.
|
||||||
|
|
||||||
`psi_non_cas_coef <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L61>`_
|
`psi_non_cas_coef <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L61>`_
|
||||||
Set of determinants which are not part of the CAS, defined from the application
|
Set of determinants which are not part of the CAS, defined from the application
|
||||||
of the CAS bitmask on the determinants.
|
of the CAS bitmask on the determinants.
|
||||||
idx_non_cas gives the indice of the determinant in psi_det.
|
idx_non_cas gives the indice of the determinant in psi_det.
|
||||||
|
|
||||||
`psi_non_cas_coef_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L100>`_
|
`psi_non_cas_coef_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L100>`_
|
||||||
CAS determinants sorted to accelerate the search of a random determinant in the wave
|
CAS determinants sorted to accelerate the search of a random determinant in the wave
|
||||||
function.
|
function.
|
||||||
|
|
||||||
`psi_non_cas_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/psi_cas.irp.f#L99>`_
|
`psi_non_cas_sorted_bit <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/psi_cas.irp.f#L99>`_
|
||||||
CAS determinants sorted to accelerate the search of a random determinant in the wave
|
CAS determinants sorted to accelerate the search of a random determinant in the wave
|
||||||
function.
|
function.
|
||||||
|
|
||||||
`bi_elec_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/ref_bitmask.irp.f#L5>`_
|
`bi_elec_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/ref_bitmask.irp.f#L5>`_
|
||||||
Energy of the reference bitmask used in Slater rules
|
Energy of the reference bitmask used in Slater rules
|
||||||
|
|
||||||
`kinetic_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/ref_bitmask.irp.f#L3>`_
|
`kinetic_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/ref_bitmask.irp.f#L3>`_
|
||||||
Energy of the reference bitmask used in Slater rules
|
Energy of the reference bitmask used in Slater rules
|
||||||
|
|
||||||
`mono_elec_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/ref_bitmask.irp.f#L2>`_
|
`mono_elec_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/ref_bitmask.irp.f#L2>`_
|
||||||
Energy of the reference bitmask used in Slater rules
|
Energy of the reference bitmask used in Slater rules
|
||||||
|
|
||||||
`nucl_elec_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/ref_bitmask.irp.f#L4>`_
|
`nucl_elec_ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/ref_bitmask.irp.f#L4>`_
|
||||||
Energy of the reference bitmask used in Slater rules
|
Energy of the reference bitmask used in Slater rules
|
||||||
|
|
||||||
`ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/ref_bitmask.irp.f#L1>`_
|
`ref_bitmask_energy <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/ref_bitmask.irp.f#L1>`_
|
||||||
Energy of the reference bitmask used in Slater rules
|
Energy of the reference bitmask used in Slater rules
|
||||||
|
|
||||||
`expected_s2 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/s2.irp.f#L48>`_
|
`expected_s2 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/s2.irp.f#L48>`_
|
||||||
Expected value of S2 : S*(S+1)
|
Expected value of S2 : S*(S+1)
|
||||||
|
|
||||||
`get_s2 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/s2.irp.f#L1>`_
|
`get_s2 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/s2.irp.f#L1>`_
|
||||||
Returns <S^2>
|
Returns <S^2>
|
||||||
|
|
||||||
`get_s2_u0 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/s2.irp.f#L82>`_
|
`get_s2_u0 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/s2.irp.f#L82>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`s2_values <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/s2.irp.f#L67>`_
|
`s2_values <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/s2.irp.f#L67>`_
|
||||||
array of the averaged values of the S^2 operator on the various states
|
array of the averaged values of the S^2 operator on the various states
|
||||||
|
|
||||||
`s_z <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/s2.irp.f#L36>`_
|
`s_z <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/s2.irp.f#L36>`_
|
||||||
z component of the Spin
|
z component of the Spin
|
||||||
|
|
||||||
`s_z2_sz <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/s2.irp.f#L37>`_
|
`s_z2_sz <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/s2.irp.f#L37>`_
|
||||||
z component of the Spin
|
z component of the Spin
|
||||||
|
|
||||||
`prog_save_casino <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/save_for_casino.irp.f#L266>`_
|
`prog_save_casino <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/save_for_casino.irp.f#L266>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`save_casino <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/save_for_casino.irp.f#L1>`_
|
`save_casino <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/save_for_casino.irp.f#L1>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`save_dets_qmcchem <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/save_for_qmcchem.irp.f#L1>`_
|
`save_dets_qmcchem <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/save_for_qmcchem.irp.f#L1>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`save_for_qmc <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/save_for_qmcchem.irp.f#L48>`_
|
`save_for_qmc <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/save_for_qmcchem.irp.f#L48>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`save_natorb <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/save_natorb.irp.f#L1>`_
|
`save_natorb <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/save_natorb.irp.f#L1>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`a_operator <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L962>`_
|
`a_operator <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L962>`_
|
||||||
Needed for diag_H_mat_elem
|
Needed for diag_H_mat_elem
|
||||||
|
|
||||||
`ac_operator <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L1007>`_
|
`ac_operator <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L1007>`_
|
||||||
Needed for diag_H_mat_elem
|
Needed for diag_H_mat_elem
|
||||||
|
|
||||||
`decode_exc <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L76>`_
|
`decode_exc <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L76>`_
|
||||||
Decodes the exc arrays returned by get_excitation.
|
Decodes the exc arrays returned by get_excitation.
|
||||||
h1,h2 : Holes
|
h1,h2 : Holes
|
||||||
p1,p2 : Particles
|
p1,p2 : Particles
|
||||||
s1,s2 : Spins (1:alpha, 2:beta)
|
s1,s2 : Spins (1:alpha, 2:beta)
|
||||||
degree : Degree of excitation
|
degree : Degree of excitation
|
||||||
|
|
||||||
`det_connections <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L1139>`_
|
`det_connections <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L1139>`_
|
||||||
Build connection proxy between determinants
|
Build connection proxy between determinants
|
||||||
|
|
||||||
`diag_h_mat_elem <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L900>`_
|
`diag_h_mat_elem <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L900>`_
|
||||||
Computes <i|H|i>
|
Computes <i|H|i>
|
||||||
|
|
||||||
`get_double_excitation <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L141>`_
|
`get_double_excitation <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L141>`_
|
||||||
Returns the two excitation operators between two doubly excited determinants and the phase
|
Returns the two excitation operators between two doubly excited determinants and the phase
|
||||||
|
|
||||||
`get_excitation <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L30>`_
|
`get_excitation <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L30>`_
|
||||||
Returns the excitation operators between two determinants and the phase
|
Returns the excitation operators between two determinants and the phase
|
||||||
|
|
||||||
`get_excitation_degree <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L1>`_
|
`get_excitation_degree <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L1>`_
|
||||||
Returns the excitation degree between two determinants
|
Returns the excitation degree between two determinants
|
||||||
|
|
||||||
`get_excitation_degree_vector <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L816>`_
|
`get_excitation_degree_vector <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L816>`_
|
||||||
Applies get_excitation_degree to an array of determinants
|
Applies get_excitation_degree to an array of determinants
|
||||||
|
|
||||||
`get_mono_excitation <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L274>`_
|
`get_mono_excitation <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L274>`_
|
||||||
Returns the excitation operator between two singly excited determinants and the phase
|
Returns the excitation operator between two singly excited determinants and the phase
|
||||||
|
|
||||||
`get_occ_from_key <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L1055>`_
|
`get_occ_from_key <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L1055>`_
|
||||||
Returns a list of occupation numbers from a bitstring
|
Returns a list of occupation numbers from a bitstring
|
||||||
|
|
||||||
`h_u_0 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L1071>`_
|
`h_u_0 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L1071>`_
|
||||||
Computes v_0 = H|u_0>
|
Computes v_0 = H|u_0>
|
||||||
.br
|
.br
|
||||||
n : number of determinants
|
n : number of determinants
|
||||||
.br
|
.br
|
||||||
H_jj : array of <j|H|j>
|
H_jj : array of <j|H|j>
|
||||||
|
|
||||||
`i_h_j <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L355>`_
|
`i_h_j <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L355>`_
|
||||||
Returns <i|H|j> where i and j are determinants
|
Returns <i|H|j> where i and j are determinants
|
||||||
|
|
||||||
`i_h_j_verbose <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L492>`_
|
`i_h_j_verbose <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L492>`_
|
||||||
Returns <i|H|j> where i and j are determinants
|
Returns <i|H|j> where i and j are determinants
|
||||||
|
|
||||||
`i_h_psi <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L631>`_
|
`i_h_psi <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L631>`_
|
||||||
<key|H|psi> for the various Nstates
|
<key|H|psi> for the various Nstates
|
||||||
|
|
||||||
`i_h_psi_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L713>`_
|
`i_h_psi_sc2 <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L713>`_
|
||||||
<key|H|psi> for the various Nstate
|
<key|H|psi> for the various Nstate
|
||||||
.br
|
.br
|
||||||
returns in addition
|
returns in addition
|
||||||
@ -656,7 +610,7 @@ Documentation
|
|||||||
.br
|
.br
|
||||||
to repeat the excitations
|
to repeat the excitations
|
||||||
|
|
||||||
`i_h_psi_sc2_verbose <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L760>`_
|
`i_h_psi_sc2_verbose <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L760>`_
|
||||||
<key|H|psi> for the various Nstate
|
<key|H|psi> for the various Nstate
|
||||||
.br
|
.br
|
||||||
returns in addition
|
returns in addition
|
||||||
@ -669,19 +623,73 @@ Documentation
|
|||||||
.br
|
.br
|
||||||
to repeat the excitations
|
to repeat the excitations
|
||||||
|
|
||||||
`i_h_psi_sec_ord <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L666>`_
|
`i_h_psi_sec_ord <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L666>`_
|
||||||
<key|H|psi> for the various Nstates
|
<key|H|psi> for the various Nstates
|
||||||
|
|
||||||
`n_con_int <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/slater_rules.irp.f#L1131>`_
|
`n_con_int <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/slater_rules.irp.f#L1131>`_
|
||||||
Number of integers to represent the connections between determinants
|
Number of integers to represent the connections between determinants
|
||||||
|
|
||||||
`write_spindeterminants <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/spindeterminants.irp.f#L1>`_
|
`create_wf_of_psi_svd_matrix <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L473>`_
|
||||||
|
Matrix of wf coefficients. Outer product of alpha and beta determinants
|
||||||
|
|
||||||
|
`generate_all_alpha_beta_det_products <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L528>`_
|
||||||
|
Create a wave function from all possible alpha x beta determinants
|
||||||
|
|
||||||
|
`get_index_in_psi_det_alpha_unique <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L131>`_
|
||||||
|
Returns the index of the determinant in the ``psi_det_alpha_unique`` array
|
||||||
|
|
||||||
|
`get_index_in_psi_det_beta_unique <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L212>`_
|
||||||
|
Returns the index of the determinant in the ``psi_det_beta_unique`` array
|
||||||
|
|
||||||
|
`n_det_alpha_unique <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L54>`_
|
||||||
|
Unique alpha determinants
|
||||||
|
|
||||||
|
`n_det_beta_unique <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L91>`_
|
||||||
|
Unique beta determinants
|
||||||
|
|
||||||
|
`psi_det_alpha <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L25>`_
|
||||||
|
List of alpha determinants of psi_det
|
||||||
|
|
||||||
|
`psi_det_alpha_unique <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L53>`_
|
||||||
|
Unique alpha determinants
|
||||||
|
|
||||||
|
`psi_det_beta <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L39>`_
|
||||||
|
List of beta determinants of psi_det
|
||||||
|
|
||||||
|
`psi_det_beta_unique <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L90>`_
|
||||||
|
Unique beta determinants
|
||||||
|
|
||||||
|
`psi_svd_alpha <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L568>`_
|
||||||
|
SVD wave function
|
||||||
|
|
||||||
|
`psi_svd_beta <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L569>`_
|
||||||
|
SVD wave function
|
||||||
|
|
||||||
|
`psi_svd_coefs <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L570>`_
|
||||||
|
SVD wave function
|
||||||
|
|
||||||
|
`psi_svd_matrix <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L457>`_
|
||||||
|
Matrix of wf coefficients. Outer product of alpha and beta determinants
|
||||||
|
|
||||||
|
`psi_svd_matrix_columns <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L398>`_
|
||||||
|
Matrix of wf coefficients. Outer product of alpha and beta determinants
|
||||||
|
|
||||||
|
`psi_svd_matrix_rows <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L397>`_
|
||||||
|
Matrix of wf coefficients. Outer product of alpha and beta determinants
|
||||||
|
|
||||||
|
`psi_svd_matrix_values <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L396>`_
|
||||||
|
Matrix of wf coefficients. Outer product of alpha and beta determinants
|
||||||
|
|
||||||
|
`spin_det_search_key <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L9>`_
|
||||||
|
Return an integer*8 corresponding to a determinant index for searching
|
||||||
|
|
||||||
|
`write_spindeterminants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/spindeterminants.irp.f#L294>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`cisd <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/truncate_wf.irp.f#L1>`_
|
`cisd <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/truncate_wf.irp.f#L1>`_
|
||||||
Undocumented
|
Undocumented
|
||||||
|
|
||||||
`h_matrix_all_dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets/utils.irp.f#L1>`_
|
`h_matrix_all_dets <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants/utils.irp.f#L1>`_
|
||||||
H matrix on the basis of the slater determinants defined by psi_det
|
H matrix on the basis of the slater determinants defined by psi_det
|
||||||
|
|
||||||
|
|
@ -43,10 +43,10 @@ subroutine CISD_SC2(dets_in,u_in,energies,dim_in,sze,N_st,Nint,convergence)
|
|||||||
|
|
||||||
allocate (doubles(Nint,2,sze),e_corr_array(sze),H_jj_ref(sze),H_jj_dressed(sze),&
|
allocate (doubles(Nint,2,sze),e_corr_array(sze),H_jj_ref(sze),H_jj_dressed(sze),&
|
||||||
index_double(sze), degree_exc(sze), hij_double(sze))
|
index_double(sze), degree_exc(sze), hij_double(sze))
|
||||||
call write_time(output_Dets)
|
call write_time(output_determinants)
|
||||||
write(output_Dets,'(A)') ''
|
write(output_determinants,'(A)') ''
|
||||||
write(output_Dets,'(A)') 'CISD SC2'
|
write(output_determinants,'(A)') 'CISD SC2'
|
||||||
write(output_Dets,'(A)') '========'
|
write(output_determinants,'(A)') '========'
|
||||||
!$OMP PARALLEL DEFAULT(NONE) &
|
!$OMP PARALLEL DEFAULT(NONE) &
|
||||||
!$OMP SHARED(sze,N_st, &
|
!$OMP SHARED(sze,N_st, &
|
||||||
!$OMP H_jj_ref,Nint,dets_in,u_in) &
|
!$OMP H_jj_ref,Nint,dets_in,u_in) &
|
||||||
@ -175,7 +175,7 @@ subroutine CISD_SC2(dets_in,u_in,energies,dim_in,sze,N_st,Nint,convergence)
|
|||||||
enddo
|
enddo
|
||||||
deallocate (H_matrix_tmp, eigenvalues, eigenvectors)
|
deallocate (H_matrix_tmp, eigenvalues, eigenvectors)
|
||||||
else
|
else
|
||||||
call davidson_diag_hjj(dets_in,u_in,H_jj_dressed,energies,dim_in,sze,N_st,Nint,output_Dets)
|
call davidson_diag_hjj(dets_in,u_in,H_jj_dressed,energies,dim_in,sze,N_st,Nint,output_determinants)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
e_corr_double = 0.d0
|
e_corr_double = 0.d0
|
||||||
@ -184,18 +184,18 @@ subroutine CISD_SC2(dets_in,u_in,energies,dim_in,sze,N_st,Nint,convergence)
|
|||||||
e_corr_array(i) = u_in(index_double(i),1)*inv_c0 * hij_double(i)
|
e_corr_array(i) = u_in(index_double(i),1)*inv_c0 * hij_double(i)
|
||||||
e_corr_double += e_corr_array(i)
|
e_corr_double += e_corr_array(i)
|
||||||
enddo
|
enddo
|
||||||
write(output_Dets,'(A,I3)') 'SC2 Iteration ', iter
|
write(output_determinants,'(A,I3)') 'SC2 Iteration ', iter
|
||||||
write(output_Dets,'(A)') '------------------'
|
write(output_determinants,'(A)') '------------------'
|
||||||
write(output_Dets,'(A)') ''
|
write(output_determinants,'(A)') ''
|
||||||
write(output_Dets,'(A)') '===== ================'
|
write(output_determinants,'(A)') '===== ================'
|
||||||
write(output_Dets,'(A)') 'State Energy '
|
write(output_determinants,'(A)') 'State Energy '
|
||||||
write(output_Dets,'(A)') '===== ================'
|
write(output_determinants,'(A)') '===== ================'
|
||||||
do i=1,N_st
|
do i=1,N_st
|
||||||
write(output_Dets,'(I5,X,F16.10)') i, energies(i)+nuclear_repulsion
|
write(output_determinants,'(I5,X,F16.10)') i, energies(i)+nuclear_repulsion
|
||||||
enddo
|
enddo
|
||||||
write(output_Dets,'(A)') '===== ================'
|
write(output_determinants,'(A)') '===== ================'
|
||||||
write(output_Dets,'(A)') ''
|
write(output_determinants,'(A)') ''
|
||||||
call write_double(output_Dets,(e_corr_double - e_corr_double_before),&
|
call write_double(output_determinants,(e_corr_double - e_corr_double_before),&
|
||||||
'Delta(E_corr)')
|
'Delta(E_corr)')
|
||||||
converged = dabs(e_corr_double - e_corr_double_before) < convergence
|
converged = dabs(e_corr_double - e_corr_double_before) < convergence
|
||||||
converged = converged .or. abort_here
|
converged = converged .or. abort_here
|
||||||
@ -206,7 +206,7 @@ subroutine CISD_SC2(dets_in,u_in,energies,dim_in,sze,N_st,Nint,convergence)
|
|||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
call write_time(output_Dets)
|
call write_time(output_determinants)
|
||||||
deallocate (doubles,e_corr_array,H_jj_ref,H_jj_dressed, &
|
deallocate (doubles,e_corr_array,H_jj_ref,H_jj_dressed, &
|
||||||
index_double, degree_exc, hij_double)
|
index_double, degree_exc, hij_double)
|
||||||
|
|
@ -162,7 +162,7 @@ integer function connected_to_ref(key,keys,Nint,N_past_in,Ndet)
|
|||||||
integer :: N_past
|
integer :: N_past
|
||||||
integer :: i, l
|
integer :: i, l
|
||||||
integer :: degree_x2
|
integer :: degree_x2
|
||||||
logical :: det_is_not_or_may_be_in_ref, t
|
logical :: t
|
||||||
double precision :: hij_elec
|
double precision :: hij_elec
|
||||||
|
|
||||||
! output : 0 : not connected
|
! output : 0 : not connected
|
||||||
@ -260,7 +260,7 @@ integer function connected_to_ref_by_mono(key,keys,Nint,N_past_in,Ndet)
|
|||||||
integer :: N_past
|
integer :: N_past
|
||||||
integer :: i, l
|
integer :: i, l
|
||||||
integer :: degree_x2
|
integer :: degree_x2
|
||||||
logical :: det_is_not_or_may_be_in_ref, t
|
logical :: t
|
||||||
double precision :: hij_elec
|
double precision :: hij_elec
|
||||||
|
|
||||||
! output : 0 : not connected
|
! output : 0 : not connected
|
||||||
@ -355,66 +355,3 @@ integer function connected_to_ref_by_mono(key,keys,Nint,N_past_in,Ndet)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
logical function det_is_not_or_may_be_in_ref(key,Nint)
|
|
||||||
use bitmasks
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! If true, det is not in ref
|
|
||||||
! If false, det may be in ref
|
|
||||||
END_DOC
|
|
||||||
integer, intent(in) :: Nint
|
|
||||||
integer(bit_kind), intent(in) :: key(Nint,2)
|
|
||||||
integer(bit_kind) :: key_int
|
|
||||||
integer*1 :: key_short(bit_kind)
|
|
||||||
!DIR$ ATTRIBUTES ALIGN : 32 :: key_short
|
|
||||||
equivalence (key_int,key_short)
|
|
||||||
|
|
||||||
integer :: i, ispin, k
|
|
||||||
|
|
||||||
det_is_not_or_may_be_in_ref = .False.
|
|
||||||
do ispin=1,2
|
|
||||||
do i=1,Nint
|
|
||||||
key_int = key(i,ispin)
|
|
||||||
do k=1,bit_kind
|
|
||||||
det_is_not_or_may_be_in_ref = &
|
|
||||||
det_is_not_or_may_be_in_ref .or. &
|
|
||||||
key_pattern_not_in_ref(key_short(k), i, ispin)
|
|
||||||
enddo
|
|
||||||
if(det_is_not_or_may_be_in_ref) then
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ logical, key_pattern_not_in_ref, (-128:127,N_int,2) ]
|
|
||||||
use bitmasks
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Min and max values of the integers of the keys of the reference
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
integer :: i, j, ispin
|
|
||||||
integer(bit_kind) :: key
|
|
||||||
integer*1 :: key_short(bit_kind)
|
|
||||||
equivalence (key,key_short)
|
|
||||||
integer :: idx, k
|
|
||||||
|
|
||||||
key_pattern_not_in_ref = .True.
|
|
||||||
|
|
||||||
do j=1,N_det
|
|
||||||
do ispin=1,2
|
|
||||||
do i=1,N_int
|
|
||||||
key = psi_det(i,ispin,j)
|
|
||||||
do k=1,bit_kind
|
|
||||||
key_pattern_not_in_ref( key_short(k), i, ispin ) = .False.
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
@ -25,7 +25,7 @@ BEGIN_PROVIDER [ integer, N_det ]
|
|||||||
else
|
else
|
||||||
N_det = 1
|
N_det = 1
|
||||||
endif
|
endif
|
||||||
call write_int(output_dets,N_det,'Number of determinants')
|
call write_int(output_determinants,N_det,'Number of determinants')
|
||||||
ASSERT (N_det > 0)
|
ASSERT (N_det > 0)
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ BEGIN_PROVIDER [ integer, psi_det_size ]
|
|||||||
psi_det_size = 1
|
psi_det_size = 1
|
||||||
endif
|
endif
|
||||||
psi_det_size = max(psi_det_size,10000)
|
psi_det_size = max(psi_det_size,10000)
|
||||||
call write_int(output_dets,psi_det_size,'Dimension of the psi arrays')
|
call write_int(output_determinants,psi_det_size,'Dimension of the psi arrays')
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
@ -294,132 +294,6 @@ END_PROVIDER
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
!==============================================================================!
|
|
||||||
! !
|
|
||||||
! Independent alpha/beta parts !
|
|
||||||
! !
|
|
||||||
!==============================================================================!
|
|
||||||
|
|
||||||
integer*8 function spin_det_search_key(det,Nint)
|
|
||||||
use bitmasks
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Return an integer*8 corresponding to a determinant index for searching
|
|
||||||
END_DOC
|
|
||||||
integer, intent(in) :: Nint
|
|
||||||
integer(bit_kind), intent(in) :: det(Nint)
|
|
||||||
integer :: i
|
|
||||||
spin_det_search_key = det(1)
|
|
||||||
do i=2,Nint
|
|
||||||
spin_det_search_key = ieor(spin_det_search_key,det(i))
|
|
||||||
enddo
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer(bit_kind), psi_det_alpha, (N_int,psi_det_size) ]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! List of alpha determinants of psi_det
|
|
||||||
END_DOC
|
|
||||||
integer :: i,k
|
|
||||||
|
|
||||||
do i=1,N_det
|
|
||||||
do k=1,N_int
|
|
||||||
psi_det_alpha(k,i) = psi_det(k,1,i)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer(bit_kind), psi_det_beta, (N_int,psi_det_size) ]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! List of beta determinants of psi_det
|
|
||||||
END_DOC
|
|
||||||
integer :: i,k
|
|
||||||
|
|
||||||
do i=1,N_det
|
|
||||||
do k=1,N_int
|
|
||||||
psi_det_beta(k,i) = psi_det(k,2,i)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer(bit_kind), psi_det_alpha_unique, (N_int,psi_det_size) ]
|
|
||||||
&BEGIN_PROVIDER [ integer, N_det_alpha_unique ]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Unique alpha determinants
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
integer :: i,k
|
|
||||||
integer, allocatable :: iorder(:)
|
|
||||||
integer*8, allocatable :: bit_tmp(:)
|
|
||||||
integer*8 :: last_key
|
|
||||||
integer*8, external :: spin_det_search_key
|
|
||||||
|
|
||||||
allocate ( iorder(N_det), bit_tmp(N_det))
|
|
||||||
|
|
||||||
do i=1,N_det
|
|
||||||
iorder(i) = i
|
|
||||||
bit_tmp(i) = spin_det_search_key(psi_det_alpha(1,i),N_int)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
call i8sort(bit_tmp,iorder,N_det)
|
|
||||||
|
|
||||||
N_det_alpha_unique = 0
|
|
||||||
last_key = 0_8
|
|
||||||
do i=1,N_det
|
|
||||||
if (bit_tmp(i) /= last_key) then
|
|
||||||
last_key = bit_tmp(i)
|
|
||||||
N_det_alpha_unique += 1
|
|
||||||
do k=1,N_int
|
|
||||||
psi_det_alpha_unique(k,N_det_alpha_unique) = psi_det_alpha(k,iorder(i))
|
|
||||||
enddo
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
|
|
||||||
deallocate (iorder, bit_tmp)
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer(bit_kind), psi_det_beta_unique, (N_int,psi_det_size) ]
|
|
||||||
&BEGIN_PROVIDER [ integer, N_det_beta_unique ]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Unique beta determinants
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
integer :: i,k
|
|
||||||
integer, allocatable :: iorder(:)
|
|
||||||
integer*8, allocatable :: bit_tmp(:)
|
|
||||||
integer*8 :: last_key
|
|
||||||
integer*8, external :: spin_det_search_key
|
|
||||||
|
|
||||||
allocate ( iorder(N_det), bit_tmp(N_det))
|
|
||||||
|
|
||||||
do i=1,N_det
|
|
||||||
iorder(i) = i
|
|
||||||
bit_tmp(i) = spin_det_search_key(psi_det_beta(1,i),N_int)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
call i8sort(bit_tmp,iorder,N_det)
|
|
||||||
|
|
||||||
N_det_beta_unique = 0
|
|
||||||
last_key = 0_8
|
|
||||||
do i=1,N_det
|
|
||||||
if (bit_tmp(i) /= last_key) then
|
|
||||||
last_key = bit_tmp(i)
|
|
||||||
N_det_beta_unique += 1
|
|
||||||
do k=1,N_int
|
|
||||||
psi_det_beta_unique(k,N_det_beta_unique) = psi_det_beta(k,iorder(i))
|
|
||||||
enddo
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
|
|
||||||
deallocate (iorder, bit_tmp)
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
!==============================================================================!
|
!==============================================================================!
|
||||||
! !
|
! !
|
||||||
! Sorting providers !
|
! Sorting providers !
|
||||||
@ -700,177 +574,6 @@ subroutine sort_dets_by_3_highest_electrons(det_in,coef_in,det_out,coef_out, &
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
!==============================================================================!
|
|
||||||
! !
|
|
||||||
! Alpha x Beta Matrix !
|
|
||||||
! !
|
|
||||||
!==============================================================================!
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, psi_svd_matrix, (N_det_alpha_unique,N_det_beta_unique,N_states) ]
|
|
||||||
use bitmasks
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Matrix of wf coefficients. Outer product of alpha and beta determinants
|
|
||||||
END_DOC
|
|
||||||
integer :: i,j,k
|
|
||||||
integer(bit_kind) :: tmp_det(N_int,2)
|
|
||||||
integer :: idx
|
|
||||||
integer, external :: get_index_in_psi_det_sorted_bit
|
|
||||||
logical, external :: is_in_wavefunction
|
|
||||||
|
|
||||||
psi_svd_matrix = 0.d0
|
|
||||||
do j=1,N_det_beta_unique
|
|
||||||
do k=1,N_int
|
|
||||||
tmp_det(k,2) = psi_det_beta_unique(k,j)
|
|
||||||
enddo
|
|
||||||
do i=1,N_det_alpha_unique
|
|
||||||
do k=1,N_int
|
|
||||||
tmp_det(k,1) = psi_det_alpha_unique(k,i)
|
|
||||||
enddo
|
|
||||||
idx = get_index_in_psi_det_sorted_bit(tmp_det,N_int)
|
|
||||||
if (idx > 0) then
|
|
||||||
do k=1,N_states
|
|
||||||
psi_svd_matrix(i,j,k) = psi_coef_sorted_bit(idx,k)
|
|
||||||
enddo
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
subroutine create_wf_of_psi_svd_matrix
|
|
||||||
use bitmasks
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Matrix of wf coefficients. Outer product of alpha and beta determinants
|
|
||||||
END_DOC
|
|
||||||
integer :: i,j,k
|
|
||||||
integer(bit_kind) :: tmp_det(N_int,2)
|
|
||||||
integer :: idx
|
|
||||||
integer, external :: get_index_in_psi_det_sorted_bit
|
|
||||||
logical, external :: is_in_wavefunction
|
|
||||||
double precision :: norm(N_states)
|
|
||||||
|
|
||||||
call generate_all_alpha_beta_det_products
|
|
||||||
norm = 0.d0
|
|
||||||
do j=1,N_det_beta_unique
|
|
||||||
do k=1,N_int
|
|
||||||
tmp_det(k,2) = psi_det_beta_unique(k,j)
|
|
||||||
enddo
|
|
||||||
do i=1,N_det_alpha_unique
|
|
||||||
do k=1,N_int
|
|
||||||
tmp_det(k,1) = psi_det_alpha_unique(k,i)
|
|
||||||
enddo
|
|
||||||
idx = get_index_in_psi_det_sorted_bit(tmp_det,N_int)
|
|
||||||
if (idx > 0) then
|
|
||||||
do k=1,N_states
|
|
||||||
psi_coef_sorted_bit(idx,k) = psi_svd_matrix(i,j,k)
|
|
||||||
norm(k) += psi_svd_matrix(i,j,k)
|
|
||||||
enddo
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
do k=1,N_states
|
|
||||||
norm(k) = 1.d0/dsqrt(norm(k))
|
|
||||||
do i=1,N_det
|
|
||||||
psi_coef_sorted_bit(i,k) = psi_coef_sorted_bit(i,k)*norm(k)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
psi_det = psi_det_sorted_bit
|
|
||||||
psi_coef = psi_coef_sorted_bit
|
|
||||||
TOUCH psi_det psi_coef
|
|
||||||
psi_det = psi_det_sorted
|
|
||||||
psi_coef = psi_coef_sorted
|
|
||||||
norm(1) = 0.d0
|
|
||||||
do i=1,N_det
|
|
||||||
norm(1) += psi_average_norm_contrib_sorted(i)
|
|
||||||
if (norm(1) >= 0.999999d0) then
|
|
||||||
exit
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
N_det = min(i,N_det)
|
|
||||||
SOFT_TOUCH psi_det psi_coef N_det
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
subroutine generate_all_alpha_beta_det_products
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Create a wave function from all possible alpha x beta determinants
|
|
||||||
END_DOC
|
|
||||||
integer :: i,j,k,l
|
|
||||||
integer :: idx
|
|
||||||
integer, external :: get_index_in_psi_det_sorted_bit
|
|
||||||
integer(bit_kind), allocatable :: tmp_det(:,:,:)
|
|
||||||
logical, external :: is_in_wavefunction
|
|
||||||
|
|
||||||
allocate (tmp_det(N_int,2,N_det_alpha_unique))
|
|
||||||
do j=1,N_det_beta_unique
|
|
||||||
l = 1
|
|
||||||
do i=1,N_det_alpha_unique
|
|
||||||
do k=1,N_int
|
|
||||||
tmp_det(k,1,l) = psi_det_alpha_unique(k,i)
|
|
||||||
tmp_det(k,2,l) = psi_det_beta_unique (k,j)
|
|
||||||
enddo
|
|
||||||
if (.not.is_in_wavefunction(tmp_det(1,1,l),N_int,N_det)) then
|
|
||||||
l = l+1
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
call fill_H_apply_buffer_no_selection(l-1, tmp_det, N_int, 1)
|
|
||||||
enddo
|
|
||||||
deallocate (tmp_det)
|
|
||||||
call copy_H_apply_buffer_to_wf
|
|
||||||
SOFT_TOUCH psi_det psi_coef N_det
|
|
||||||
end
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, psi_svd_alpha, (N_det_alpha_unique,N_det_alpha_unique,N_states) ]
|
|
||||||
&BEGIN_PROVIDER [ double precision, psi_svd_beta , (N_det_beta_unique,N_det_beta_unique,N_states) ]
|
|
||||||
&BEGIN_PROVIDER [ double precision, psi_svd_coefs, (N_det_beta_unique,N_states) ]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! SVD wave function
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
integer :: lwork, info, istate
|
|
||||||
double precision, allocatable :: work(:), tmp(:,:), copy(:,:)
|
|
||||||
allocate (work(1),tmp(N_det_beta_unique,N_det_beta_unique), &
|
|
||||||
copy(size(psi_svd_matrix,1),size(psi_svd_matrix,2)))
|
|
||||||
|
|
||||||
do istate = 1,N_states
|
|
||||||
copy(:,:) = psi_svd_matrix(:,:,istate)
|
|
||||||
lwork=-1
|
|
||||||
call dgesvd('A','A', N_det_alpha_unique, N_det_beta_unique, &
|
|
||||||
copy, size(copy,1), &
|
|
||||||
psi_svd_coefs(1,istate), psi_svd_alpha(1,1,istate), &
|
|
||||||
size(psi_svd_alpha,1), &
|
|
||||||
tmp, size(psi_svd_beta,2), &
|
|
||||||
work, lwork, info)
|
|
||||||
lwork = work(1)
|
|
||||||
deallocate(work)
|
|
||||||
allocate(work(lwork))
|
|
||||||
call dgesvd('A','A', N_det_alpha_unique, N_det_beta_unique, &
|
|
||||||
copy, size(copy,1), &
|
|
||||||
psi_svd_coefs(1,istate), psi_svd_alpha(1,1,istate), &
|
|
||||||
size(psi_svd_alpha,1), &
|
|
||||||
tmp, size(psi_svd_beta,2), &
|
|
||||||
work, lwork, info)
|
|
||||||
deallocate(work)
|
|
||||||
if (info /= 0) then
|
|
||||||
print *, irp_here//': error in det SVD'
|
|
||||||
stop 1
|
|
||||||
endif
|
|
||||||
integer :: i,j
|
|
||||||
do j=1,N_det_beta_unique
|
|
||||||
do i=1,N_det_beta_unique
|
|
||||||
psi_svd_beta(i,j,istate) = tmp(j,i)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
deallocate(tmp,copy)
|
|
||||||
enddo
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
|
|
||||||
!==============================================================================!
|
!==============================================================================!
|
||||||
! !
|
! !
|
||||||
! Read/write routines !
|
! Read/write routines !
|
||||||
@ -1024,7 +727,7 @@ subroutine save_wavefunction_general(ndet,nstates,psidet,dim_psicoef,psicoef)
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
call ezfio_set_determinants_psi_coef(psi_coef_save)
|
call ezfio_set_determinants_psi_coef(psi_coef_save)
|
||||||
call write_int(output_dets,ndet,'Saved determinants')
|
call write_int(output_determinants,ndet,'Saved determinants')
|
||||||
call stop_progress
|
call stop_progress
|
||||||
deallocate (psi_coef_save)
|
deallocate (psi_coef_save)
|
||||||
end
|
end
|
@ -23,12 +23,12 @@ BEGIN_PROVIDER [ double precision, CI_energy, (N_states_diag) ]
|
|||||||
|
|
||||||
integer :: j
|
integer :: j
|
||||||
character*(8) :: st
|
character*(8) :: st
|
||||||
call write_time(output_Dets)
|
call write_time(output_determinants)
|
||||||
do j=1,N_states_diag
|
do j=1,N_states_diag
|
||||||
CI_energy(j) = CI_electronic_energy(j) + nuclear_repulsion
|
CI_energy(j) = CI_electronic_energy(j) + nuclear_repulsion
|
||||||
write(st,'(I4)') j
|
write(st,'(I4)') j
|
||||||
call write_double(output_Dets,CI_energy(j),'Energy of state '//trim(st))
|
call write_double(output_determinants,CI_energy(j),'Energy of state '//trim(st))
|
||||||
call write_double(output_Dets,CI_eigenvectors_s2(j),'S^2 of state '//trim(st))
|
call write_double(output_determinants,CI_eigenvectors_s2(j),'S^2 of state '//trim(st))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
@ -51,7 +51,7 @@ END_PROVIDER
|
|||||||
if (diag_algorithm == "Davidson") then
|
if (diag_algorithm == "Davidson") then
|
||||||
|
|
||||||
call davidson_diag(psi_det,CI_eigenvectors,CI_electronic_energy, &
|
call davidson_diag(psi_det,CI_eigenvectors,CI_electronic_energy, &
|
||||||
size(CI_eigenvectors,1),N_det,N_states_diag,N_int,output_Dets)
|
size(CI_eigenvectors,1),N_det,N_states_diag,N_int,output_determinants)
|
||||||
|
|
||||||
else if (diag_algorithm == "Lapack") then
|
else if (diag_algorithm == "Lapack") then
|
||||||
|
|
@ -6,11 +6,11 @@ BEGIN_PROVIDER [ double precision, CI_SC2_energy, (N_states_diag) ]
|
|||||||
|
|
||||||
integer :: j
|
integer :: j
|
||||||
character*(8) :: st
|
character*(8) :: st
|
||||||
call write_time(output_Dets)
|
call write_time(output_determinants)
|
||||||
do j=1,N_states_diag
|
do j=1,N_states_diag
|
||||||
CI_SC2_energy(j) = CI_SC2_electronic_energy(j) + nuclear_repulsion
|
CI_SC2_energy(j) = CI_SC2_electronic_energy(j) + nuclear_repulsion
|
||||||
write(st,'(I4)') j
|
write(st,'(I4)') j
|
||||||
call write_double(output_Dets,CI_SC2_energy(j),'Energy of state '//trim(st))
|
call write_double(output_determinants,CI_SC2_energy(j),'Energy of state '//trim(st))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
@ -16,7 +16,7 @@
|
|||||||
if (diag_algorithm == "Davidson") then
|
if (diag_algorithm == "Davidson") then
|
||||||
|
|
||||||
call davidson_diag(psi_det,CI_eigenvectors_mono,CI_electronic_energy, &
|
call davidson_diag(psi_det,CI_eigenvectors_mono,CI_electronic_energy, &
|
||||||
size(CI_eigenvectors_mono,1),N_det,N_states_diag,N_int,output_Dets)
|
size(CI_eigenvectors_mono,1),N_det,N_states_diag,N_int,output_determinants)
|
||||||
|
|
||||||
else if (diag_algorithm == "Lapack") then
|
else if (diag_algorithm == "Lapack") then
|
||||||
|
|
@ -333,7 +333,7 @@ subroutine make_s2_eigenfunction
|
|||||||
! enddo
|
! enddo
|
||||||
! enddo
|
! enddo
|
||||||
! !TODO DEBUG
|
! !TODO DEBUG
|
||||||
call write_int(output_dets,N_det_new, 'Added deteminants for S^2')
|
call write_int(output_determinants,N_det_new, 'Added deteminants for S^2')
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
22
src/Determinants/options.irp.f
Normal file
22
src/Determinants/options.irp.f
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
BEGIN_PROVIDER [ integer, N_states_diag ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Number of states to consider for the diagonalization
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
logical :: has
|
||||||
|
PROVIDE ezfio_filename
|
||||||
|
call ezfio_has_determinants_n_states_diag(has)
|
||||||
|
if (has) then
|
||||||
|
call ezfio_get_determinants_n_states_diag(N_states_diag)
|
||||||
|
else
|
||||||
|
N_states_diag = N_states
|
||||||
|
endif
|
||||||
|
|
||||||
|
call write_time(output_determinants)
|
||||||
|
call write_int(output_determinants, N_states_diag, &
|
||||||
|
'N_states_diag')
|
||||||
|
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
@ -38,7 +38,7 @@ use bitmasks
|
|||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
call write_int(output_dets,N_det_cas, 'Number of determinants in the CAS')
|
call write_int(output_determinants,N_det_cas, 'Number of determinants in the CAS')
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
@ -32,7 +32,7 @@ subroutine save_dets_qmcchem
|
|||||||
deallocate(occ_tmp)
|
deallocate(occ_tmp)
|
||||||
! OMP END PARALLEL
|
! OMP END PARALLEL
|
||||||
call ezfio_set_determinants_det_occ(occ)
|
call ezfio_set_determinants_det_occ(occ)
|
||||||
call write_int(output_dets,N_det,'Determinants saved for QMC')
|
call write_int(output_determinants,N_det,'Determinants saved for QMC')
|
||||||
deallocate(occ)
|
deallocate(occ)
|
||||||
open(unit=31,file=trim(ezfio_filename)//'/mo_basis/mo_classif')
|
open(unit=31,file=trim(ezfio_filename)//'/mo_basis/mo_classif')
|
||||||
write(31,'(I1)') 1
|
write(31,'(I1)') 1
|
@ -1,12 +1,15 @@
|
|||||||
spindeterminants
|
spindeterminants
|
||||||
n_det_alpha integer
|
n_det_alpha integer
|
||||||
n_det_beta integer
|
n_det_beta integer
|
||||||
|
n_det integer
|
||||||
n_int integer
|
n_int integer
|
||||||
bit_kind integer
|
bit_kind integer
|
||||||
n_states integer
|
n_states integer
|
||||||
psi_det_alpha integer*8 (spindeterminants_n_int*spindeterminants_bit_kind/8,spindeterminants_n_det_alpha)
|
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_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)
|
psi_coef_matrix_rows integer (spindeterminants_n_det)
|
||||||
|
psi_coef_matrix_columns integer (spindeterminants_n_det)
|
||||||
|
psi_coef_matrix_values double precision (spindeterminants_n_det,spindeterminants_n_states)
|
||||||
n_svd_coefs integer
|
n_svd_coefs integer
|
||||||
psi_svd_alpha double precision (spindeterminants_n_det_alpha,spindeterminants_n_svd_coefs,spindeterminants_n_states)
|
psi_svd_alpha double precision (spindeterminants_n_det_alpha,spindeterminants_n_svd_coefs,spindeterminants_n_states)
|
||||||
psi_svd_beta double precision (spindeterminants_n_det_beta,spindeterminants_n_svd_coefs,spindeterminants_n_states)
|
psi_svd_beta double precision (spindeterminants_n_det_beta,spindeterminants_n_svd_coefs,spindeterminants_n_states)
|
615
src/Determinants/spindeterminants.irp.f
Normal file
615
src/Determinants/spindeterminants.irp.f
Normal file
@ -0,0 +1,615 @@
|
|||||||
|
!==============================================================================!
|
||||||
|
! !
|
||||||
|
! Independent alpha/beta parts !
|
||||||
|
! !
|
||||||
|
!==============================================================================!
|
||||||
|
|
||||||
|
use bitmasks
|
||||||
|
|
||||||
|
integer*8 function spin_det_search_key(det,Nint)
|
||||||
|
use bitmasks
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Return an integer*8 corresponding to a determinant index for searching
|
||||||
|
END_DOC
|
||||||
|
integer, intent(in) :: Nint
|
||||||
|
integer(bit_kind), intent(in) :: det(Nint)
|
||||||
|
integer :: i
|
||||||
|
spin_det_search_key = det(1)
|
||||||
|
do i=2,Nint
|
||||||
|
spin_det_search_key = ieor(spin_det_search_key,det(i))
|
||||||
|
enddo
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer(bit_kind), psi_det_alpha, (N_int,psi_det_size) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! List of alpha determinants of psi_det
|
||||||
|
END_DOC
|
||||||
|
integer :: i,k
|
||||||
|
|
||||||
|
do i=1,N_det
|
||||||
|
do k=1,N_int
|
||||||
|
psi_det_alpha(k,i) = psi_det(k,1,i)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer(bit_kind), psi_det_beta, (N_int,psi_det_size) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! List of beta determinants of psi_det
|
||||||
|
END_DOC
|
||||||
|
integer :: i,k
|
||||||
|
|
||||||
|
do i=1,N_det
|
||||||
|
do k=1,N_int
|
||||||
|
psi_det_beta(k,i) = psi_det(k,2,i)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer(bit_kind), psi_det_alpha_unique, (N_int,psi_det_size) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, N_det_alpha_unique ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Unique alpha determinants
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
integer :: i,k
|
||||||
|
integer, allocatable :: iorder(:)
|
||||||
|
integer*8, allocatable :: bit_tmp(:)
|
||||||
|
integer*8 :: last_key
|
||||||
|
integer*8, external :: spin_det_search_key
|
||||||
|
|
||||||
|
allocate ( iorder(N_det), bit_tmp(N_det))
|
||||||
|
|
||||||
|
do i=1,N_det
|
||||||
|
iorder(i) = i
|
||||||
|
bit_tmp(i) = spin_det_search_key(psi_det_alpha(1,i),N_int)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
call i8sort(bit_tmp,iorder,N_det)
|
||||||
|
|
||||||
|
N_det_alpha_unique = 0
|
||||||
|
last_key = 0_8
|
||||||
|
do i=1,N_det
|
||||||
|
if (bit_tmp(i) /= last_key) then
|
||||||
|
last_key = bit_tmp(i)
|
||||||
|
N_det_alpha_unique += 1
|
||||||
|
do k=1,N_int
|
||||||
|
psi_det_alpha_unique(k,N_det_alpha_unique) = psi_det_alpha(k,iorder(i))
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
|
||||||
|
deallocate (iorder, bit_tmp)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ integer(bit_kind), psi_det_beta_unique, (N_int,psi_det_size) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, N_det_beta_unique ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Unique beta determinants
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
integer :: i,k
|
||||||
|
integer, allocatable :: iorder(:)
|
||||||
|
integer*8, allocatable :: bit_tmp(:)
|
||||||
|
integer*8 :: last_key
|
||||||
|
integer*8, external :: spin_det_search_key
|
||||||
|
|
||||||
|
allocate ( iorder(N_det), bit_tmp(N_det))
|
||||||
|
|
||||||
|
do i=1,N_det
|
||||||
|
iorder(i) = i
|
||||||
|
bit_tmp(i) = spin_det_search_key(psi_det_beta(1,i),N_int)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
call i8sort(bit_tmp,iorder,N_det)
|
||||||
|
|
||||||
|
N_det_beta_unique = 0
|
||||||
|
last_key = 0_8
|
||||||
|
do i=1,N_det
|
||||||
|
if (bit_tmp(i) /= last_key) then
|
||||||
|
last_key = bit_tmp(i)
|
||||||
|
N_det_beta_unique += 1
|
||||||
|
do k=1,N_int
|
||||||
|
psi_det_beta_unique(k,N_det_beta_unique) = psi_det_beta(k,iorder(i))
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
|
||||||
|
deallocate (iorder, bit_tmp)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
integer function get_index_in_psi_det_alpha_unique(key,Nint)
|
||||||
|
use bitmasks
|
||||||
|
BEGIN_DOC
|
||||||
|
! Returns the index of the determinant in the ``psi_det_alpha_unique`` array
|
||||||
|
END_DOC
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer, intent(in) :: Nint
|
||||||
|
integer(bit_kind), intent(in) :: key(Nint)
|
||||||
|
|
||||||
|
integer :: i, ibegin, iend, istep, l
|
||||||
|
integer*8 :: det_ref, det_search
|
||||||
|
integer*8, external :: spin_det_search_key
|
||||||
|
logical :: is_in_wavefunction
|
||||||
|
|
||||||
|
is_in_wavefunction = .False.
|
||||||
|
get_index_in_psi_det_alpha_unique = 0
|
||||||
|
ibegin = 1
|
||||||
|
iend = N_det_alpha_unique + 1
|
||||||
|
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
det_ref = spin_det_search_key(key,Nint)
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
det_search = spin_det_search_key(psi_det_alpha_unique(1,1),Nint)
|
||||||
|
|
||||||
|
istep = ishft(iend-ibegin,-1)
|
||||||
|
i=ibegin+istep
|
||||||
|
do while (istep > 0)
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
det_search = spin_det_search_key(psi_det_alpha_unique(1,i),Nint)
|
||||||
|
if ( det_search > det_ref ) then
|
||||||
|
iend = i
|
||||||
|
else if ( det_search == det_ref ) then
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
ibegin = i
|
||||||
|
endif
|
||||||
|
istep = ishft(iend-ibegin,-1)
|
||||||
|
i = ibegin + istep
|
||||||
|
end do
|
||||||
|
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
do while (spin_det_search_key(psi_det_alpha_unique(1,i),Nint) == det_ref)
|
||||||
|
i = i-1
|
||||||
|
if (i == 0) then
|
||||||
|
exit
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
if (i > N_det_alpha_unique) then
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
do while (spin_det_search_key(psi_det_alpha_unique(1,i),Nint) == det_ref)
|
||||||
|
if (key(1) /= psi_det_alpha_unique(1,i)) then
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
is_in_wavefunction = .True.
|
||||||
|
!DIR$ IVDEP
|
||||||
|
!DIR$ LOOP COUNT MIN(3)
|
||||||
|
do l=2,Nint
|
||||||
|
if (key(l) /= psi_det_alpha_unique(l,i)) then
|
||||||
|
is_in_wavefunction = .False.
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
if (is_in_wavefunction) then
|
||||||
|
get_index_in_psi_det_alpha_unique = i
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
i += 1
|
||||||
|
if (i > N_det_alpha_unique) then
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
enddo
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
integer function get_index_in_psi_det_beta_unique(key,Nint)
|
||||||
|
use bitmasks
|
||||||
|
BEGIN_DOC
|
||||||
|
! Returns the index of the determinant in the ``psi_det_beta_unique`` array
|
||||||
|
END_DOC
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer, intent(in) :: Nint
|
||||||
|
integer(bit_kind), intent(in) :: key(Nint)
|
||||||
|
|
||||||
|
integer :: i, ibegin, iend, istep, l
|
||||||
|
integer*8 :: det_ref, det_search
|
||||||
|
integer*8, external :: spin_det_search_key
|
||||||
|
logical :: is_in_wavefunction
|
||||||
|
|
||||||
|
is_in_wavefunction = .False.
|
||||||
|
get_index_in_psi_det_beta_unique = 0
|
||||||
|
ibegin = 1
|
||||||
|
iend = N_det_beta_unique + 1
|
||||||
|
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
det_ref = spin_det_search_key(key,Nint)
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
det_search = spin_det_search_key(psi_det_beta_unique(1,1),Nint)
|
||||||
|
|
||||||
|
istep = ishft(iend-ibegin,-1)
|
||||||
|
i=ibegin+istep
|
||||||
|
do while (istep > 0)
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
det_search = spin_det_search_key(psi_det_beta_unique(1,i),Nint)
|
||||||
|
if ( det_search > det_ref ) then
|
||||||
|
iend = i
|
||||||
|
else if ( det_search == det_ref ) then
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
ibegin = i
|
||||||
|
endif
|
||||||
|
istep = ishft(iend-ibegin,-1)
|
||||||
|
i = ibegin + istep
|
||||||
|
end do
|
||||||
|
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
do while (spin_det_search_key(psi_det_beta_unique(1,i),Nint) == det_ref)
|
||||||
|
i = i-1
|
||||||
|
if (i == 0) then
|
||||||
|
exit
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
if (i > N_det_beta_unique) then
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
!DIR$ FORCEINLINE
|
||||||
|
do while (spin_det_search_key(psi_det_beta_unique(1,i),Nint) == det_ref)
|
||||||
|
if (key(1) /= psi_det_beta_unique(1,i)) then
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
is_in_wavefunction = .True.
|
||||||
|
!DIR$ IVDEP
|
||||||
|
!DIR$ LOOP COUNT MIN(3)
|
||||||
|
do l=2,Nint
|
||||||
|
if (key(l) /= psi_det_beta_unique(l,i)) then
|
||||||
|
is_in_wavefunction = .False.
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
if (is_in_wavefunction) then
|
||||||
|
get_index_in_psi_det_beta_unique = i
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
i += 1
|
||||||
|
if (i > N_det_beta_unique) then
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
enddo
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
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_det(N_det)
|
||||||
|
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_values(psi_svd_matrix_values)
|
||||||
|
call ezfio_set_spindeterminants_psi_coef_matrix_rows(psi_svd_matrix_rows)
|
||||||
|
call ezfio_set_spindeterminants_psi_coef_matrix_columns(psi_svd_matrix_columns)
|
||||||
|
|
||||||
|
integer :: n_svd_coefs
|
||||||
|
double precision :: norm, f
|
||||||
|
f = 1.d0/dble(N_states)
|
||||||
|
norm = 1.d0
|
||||||
|
do n_svd_coefs=1,N_det_alpha_unique
|
||||||
|
do k=1,N_states
|
||||||
|
norm -= psi_svd_coefs(n_svd_coefs,k)*psi_svd_coefs(n_svd_coefs,k)
|
||||||
|
enddo
|
||||||
|
if (norm < 1.d-4) then
|
||||||
|
exit
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
n_svd_coefs -= 1
|
||||||
|
call ezfio_set_spindeterminants_n_svd_coefs(n_svd_coefs)
|
||||||
|
|
||||||
|
double precision, allocatable :: dtmp(:,:,:)
|
||||||
|
allocate(dtmp(N_det_alpha_unique,n_svd_coefs,N_states))
|
||||||
|
do k=1,N_states
|
||||||
|
do j=1,n_svd_coefs
|
||||||
|
do i=1,N_det_alpha_unique
|
||||||
|
dtmp(i,j,k) = psi_svd_alpha(i,j,k)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
call ezfio_set_spindeterminants_psi_svd_alpha(dtmp)
|
||||||
|
deallocate(dtmp)
|
||||||
|
|
||||||
|
allocate(dtmp(N_det_beta_unique,n_svd_coefs,N_states))
|
||||||
|
do k=1,N_states
|
||||||
|
do j=1,n_svd_coefs
|
||||||
|
do i=1,N_det_beta_unique
|
||||||
|
dtmp(i,j,k) = psi_svd_beta(i,j,k)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
call ezfio_set_spindeterminants_psi_svd_beta(dtmp)
|
||||||
|
deallocate(dtmp)
|
||||||
|
|
||||||
|
allocate(dtmp(n_svd_coefs,N_states,1))
|
||||||
|
do k=1,N_states
|
||||||
|
do j=1,n_svd_coefs
|
||||||
|
dtmp(j,k,1) = psi_svd_coefs(j,k)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
call ezfio_set_spindeterminants_psi_svd_coefs(dtmp)
|
||||||
|
deallocate(dtmp)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
!==============================================================================!
|
||||||
|
! !
|
||||||
|
! Alpha x Beta Matrix !
|
||||||
|
! !
|
||||||
|
!==============================================================================!
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, psi_svd_matrix_values, (N_det,N_states) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, psi_svd_matrix_rows, (N_det) ]
|
||||||
|
&BEGIN_PROVIDER [ integer, psi_svd_matrix_columns, (N_det) ]
|
||||||
|
use bitmasks
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Matrix of wf coefficients. Outer product of alpha and beta determinants
|
||||||
|
END_DOC
|
||||||
|
integer :: i,j,k, l
|
||||||
|
integer(bit_kind) :: tmp_det(N_int,2)
|
||||||
|
integer :: idx
|
||||||
|
integer, external :: get_index_in_psi_det_sorted_bit
|
||||||
|
logical, external :: is_in_wavefunction
|
||||||
|
|
||||||
|
|
||||||
|
PROVIDE psi_coef_sorted_bit
|
||||||
|
|
||||||
|
! l=0
|
||||||
|
! do j=1,N_det_beta_unique
|
||||||
|
! do k=1,N_int
|
||||||
|
! tmp_det(k,2) = psi_det_beta_unique(k,j)
|
||||||
|
! enddo
|
||||||
|
! do i=1,N_det_alpha_unique
|
||||||
|
! do k=1,N_int
|
||||||
|
! tmp_det(k,1) = psi_det_alpha_unique(k,i)
|
||||||
|
! enddo
|
||||||
|
! idx = get_index_in_psi_det_sorted_bit(tmp_det,N_int)
|
||||||
|
! if (idx > 0) then
|
||||||
|
! l += 1
|
||||||
|
! psi_svd_matrix_rows(l) = i
|
||||||
|
! psi_svd_matrix_columns(l) = j
|
||||||
|
! do k=1,N_states
|
||||||
|
! psi_svd_matrix_values(l,k) = psi_coef_sorted_bit(idx,k)
|
||||||
|
! enddo
|
||||||
|
! endif
|
||||||
|
! enddo
|
||||||
|
! enddo
|
||||||
|
! ASSERT (l == N_det)
|
||||||
|
|
||||||
|
integer, allocatable :: iorder(:), to_sort(:)
|
||||||
|
integer, external :: get_index_in_psi_det_alpha_unique
|
||||||
|
integer, external :: get_index_in_psi_det_beta_unique
|
||||||
|
allocate(iorder(N_det), to_sort(N_det))
|
||||||
|
do k=1,N_det
|
||||||
|
i = get_index_in_psi_det_alpha_unique(psi_det(1,1,k),N_int)
|
||||||
|
j = get_index_in_psi_det_beta_unique (psi_det(1,2,k),N_int)
|
||||||
|
do l=1,N_states
|
||||||
|
psi_svd_matrix_values(k,l) = psi_coef(k,l)
|
||||||
|
enddo
|
||||||
|
psi_svd_matrix_rows(k) = i
|
||||||
|
psi_svd_matrix_columns(k) = j
|
||||||
|
to_sort(k) = N_det_alpha_unique * (j-1) + i
|
||||||
|
iorder(k) = k
|
||||||
|
enddo
|
||||||
|
call isort(to_sort, iorder, N_det)
|
||||||
|
call iset_order(psi_svd_matrix_rows,iorder,N_det)
|
||||||
|
call iset_order(psi_svd_matrix_columns,iorder,N_det)
|
||||||
|
call dset_order(psi_svd_matrix_values,iorder,N_det)
|
||||||
|
deallocate(iorder,to_sort)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, psi_svd_matrix, (N_det_alpha_unique,N_det_beta_unique,N_states) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Matrix of wf coefficients. Outer product of alpha and beta determinants
|
||||||
|
END_DOC
|
||||||
|
integer :: i,j,k,istate
|
||||||
|
psi_svd_matrix = 0.d0
|
||||||
|
do k=1,N_det
|
||||||
|
i = psi_svd_matrix_rows(k)
|
||||||
|
j = psi_svd_matrix_columns(k)
|
||||||
|
do istate=1,N_states
|
||||||
|
psi_svd_matrix(i,j,istate) = psi_svd_matrix_values(k,istate)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
subroutine create_wf_of_psi_svd_matrix
|
||||||
|
use bitmasks
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Matrix of wf coefficients. Outer product of alpha and beta determinants
|
||||||
|
END_DOC
|
||||||
|
integer :: i,j,k
|
||||||
|
integer(bit_kind) :: tmp_det(N_int,2)
|
||||||
|
integer :: idx
|
||||||
|
integer, external :: get_index_in_psi_det_sorted_bit
|
||||||
|
logical, external :: is_in_wavefunction
|
||||||
|
double precision :: norm(N_states)
|
||||||
|
|
||||||
|
call generate_all_alpha_beta_det_products
|
||||||
|
norm = 0.d0
|
||||||
|
do j=1,N_det_beta_unique
|
||||||
|
do k=1,N_int
|
||||||
|
tmp_det(k,2) = psi_det_beta_unique(k,j)
|
||||||
|
enddo
|
||||||
|
do i=1,N_det_alpha_unique
|
||||||
|
do k=1,N_int
|
||||||
|
tmp_det(k,1) = psi_det_alpha_unique(k,i)
|
||||||
|
enddo
|
||||||
|
idx = get_index_in_psi_det_sorted_bit(tmp_det,N_int)
|
||||||
|
if (idx > 0) then
|
||||||
|
do k=1,N_states
|
||||||
|
psi_coef_sorted_bit(idx,k) = psi_svd_matrix(i,j,k)
|
||||||
|
norm(k) += psi_svd_matrix(i,j,k)
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
do k=1,N_states
|
||||||
|
norm(k) = 1.d0/dsqrt(norm(k))
|
||||||
|
do i=1,N_det
|
||||||
|
psi_coef_sorted_bit(i,k) = psi_coef_sorted_bit(i,k)*norm(k)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
psi_det = psi_det_sorted_bit
|
||||||
|
psi_coef = psi_coef_sorted_bit
|
||||||
|
TOUCH psi_det psi_coef
|
||||||
|
psi_det = psi_det_sorted
|
||||||
|
psi_coef = psi_coef_sorted
|
||||||
|
norm(1) = 0.d0
|
||||||
|
do i=1,N_det
|
||||||
|
norm(1) += psi_average_norm_contrib_sorted(i)
|
||||||
|
if (norm(1) >= 0.999999d0) then
|
||||||
|
exit
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
N_det = min(i,N_det)
|
||||||
|
SOFT_TOUCH psi_det psi_coef N_det
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
subroutine generate_all_alpha_beta_det_products
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Create a wave function from all possible alpha x beta determinants
|
||||||
|
END_DOC
|
||||||
|
integer :: i,j,k,l
|
||||||
|
integer :: idx, iproc
|
||||||
|
integer, external :: get_index_in_psi_det_sorted_bit
|
||||||
|
integer(bit_kind), allocatable :: tmp_det(:,:,:)
|
||||||
|
logical, external :: is_in_wavefunction
|
||||||
|
integer, external :: omp_get_thread_num
|
||||||
|
|
||||||
|
!$OMP PARALLEL DEFAULT(NONE) SHARED(psi_coef_sorted_bit,N_det_beta_unique,&
|
||||||
|
!$OMP N_det_alpha_unique, N_int, psi_det_alpha_unique, psi_det_beta_unique,&
|
||||||
|
!$OMP N_det) &
|
||||||
|
!$OMP PRIVATE(i,j,k,l,tmp_det,idx,iproc)
|
||||||
|
!$ iproc = omp_get_thread_num()
|
||||||
|
allocate (tmp_det(N_int,2,N_det_alpha_unique))
|
||||||
|
!$OMP DO
|
||||||
|
do j=1,N_det_beta_unique
|
||||||
|
l = 1
|
||||||
|
do i=1,N_det_alpha_unique
|
||||||
|
do k=1,N_int
|
||||||
|
tmp_det(k,1,l) = psi_det_alpha_unique(k,i)
|
||||||
|
tmp_det(k,2,l) = psi_det_beta_unique (k,j)
|
||||||
|
enddo
|
||||||
|
if (.not.is_in_wavefunction(tmp_det(1,1,l),N_int,N_det)) then
|
||||||
|
l = l+1
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
|
call fill_H_apply_buffer_no_selection(l-1, tmp_det, N_int, iproc)
|
||||||
|
enddo
|
||||||
|
!$OMP END DO NOWAIT
|
||||||
|
deallocate(tmp_det)
|
||||||
|
!$OMP END PARALLEL
|
||||||
|
deallocate (tmp_det)
|
||||||
|
call copy_H_apply_buffer_to_wf
|
||||||
|
SOFT_TOUCH psi_det psi_coef N_det
|
||||||
|
end
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, psi_svd_alpha, (N_det_alpha_unique,N_det_alpha_unique,N_states) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, psi_svd_beta , (N_det_beta_unique,N_det_beta_unique,N_states) ]
|
||||||
|
&BEGIN_PROVIDER [ double precision, psi_svd_coefs, (N_det_beta_unique,N_states) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! SVD wave function
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
integer :: lwork, info, istate
|
||||||
|
double precision, allocatable :: work(:), tmp(:,:), copy(:,:)
|
||||||
|
allocate (work(1),tmp(N_det_beta_unique,N_det_beta_unique), &
|
||||||
|
copy(size(psi_svd_matrix,1),size(psi_svd_matrix,2)))
|
||||||
|
|
||||||
|
do istate = 1,N_states
|
||||||
|
copy(:,:) = psi_svd_matrix(:,:,istate)
|
||||||
|
lwork=-1
|
||||||
|
call dgesvd('A','A', N_det_alpha_unique, N_det_beta_unique, &
|
||||||
|
copy, size(copy,1), &
|
||||||
|
psi_svd_coefs(1,istate), psi_svd_alpha(1,1,istate), &
|
||||||
|
size(psi_svd_alpha,1), &
|
||||||
|
tmp, size(psi_svd_beta,2), &
|
||||||
|
work, lwork, info)
|
||||||
|
lwork = work(1)
|
||||||
|
deallocate(work)
|
||||||
|
allocate(work(lwork))
|
||||||
|
call dgesvd('A','A', N_det_alpha_unique, N_det_beta_unique, &
|
||||||
|
copy, size(copy,1), &
|
||||||
|
psi_svd_coefs(1,istate), psi_svd_alpha(1,1,istate), &
|
||||||
|
size(psi_svd_alpha,1), &
|
||||||
|
tmp, size(psi_svd_beta,2), &
|
||||||
|
work, lwork, info)
|
||||||
|
deallocate(work)
|
||||||
|
if (info /= 0) then
|
||||||
|
print *, irp_here//': error in det SVD'
|
||||||
|
stop 1
|
||||||
|
endif
|
||||||
|
integer :: i,j
|
||||||
|
do j=1,N_det_beta_unique
|
||||||
|
do i=1,N_det_beta_unique
|
||||||
|
psi_svd_beta(i,j,istate) = tmp(j,i)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
deallocate(tmp,copy)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
|||||||
determinants
|
|
||||||
n_int integer
|
|
||||||
bit_kind integer
|
|
||||||
mo_label character*(64)
|
|
||||||
n_det integer
|
|
||||||
n_states integer
|
|
||||||
n_states_diag integer
|
|
||||||
psi_coef double precision (determinants_n_det,determinants_n_states)
|
|
||||||
psi_det integer*8 (determinants_n_int*determinants_bit_kind/8,2,determinants_n_det)
|
|
||||||
n_det_max_jacobi integer
|
|
||||||
threshold_generators double precision
|
|
||||||
threshold_selectors double precision
|
|
||||||
det_num integer
|
|
||||||
det_occ integer (electrons_elec_alpha_num,determinants_det_num,2)
|
|
||||||
det_coef double precision (determinants_det_num)
|
|
||||||
read_wf logical
|
|
||||||
expected_s2 double precision
|
|
||||||
s2_eig logical
|
|
||||||
only_single_double_dm logical
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
|||||||
BEGIN_SHELL [ /usr/bin/python ]
|
|
||||||
from ezfio_with_default import EZFIO_Provider
|
|
||||||
T = EZFIO_Provider()
|
|
||||||
T.set_type ( "integer" )
|
|
||||||
T.set_name ( "N_states" )
|
|
||||||
T.set_doc ( "Number of states to consider" )
|
|
||||||
T.set_ezfio_dir ( "determinants" )
|
|
||||||
T.set_ezfio_name( "N_states" )
|
|
||||||
T.set_output ( "output_dets" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
|
|
||||||
T.set_name ( "N_det_max_jacobi" )
|
|
||||||
T.set_doc ( "Maximum number of determinants diagonalized by Jacobi" )
|
|
||||||
T.set_ezfio_name( "N_det_max_jacobi" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
T.set_type ( "logical" )
|
|
||||||
T.set_name ( "read_wf" )
|
|
||||||
T.set_doc ( "If true, read the wave function from the EZFIO file" )
|
|
||||||
T.set_ezfio_name( "read_wf" )
|
|
||||||
T.set_output ( "output_dets" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
T.set_type ( "logical" )
|
|
||||||
T.set_name ( "only_single_double_dm" )
|
|
||||||
T.set_doc ( "If true, The One body DM is calculated with ignoring the Double<->Doubles extra diag elements" )
|
|
||||||
T.set_ezfio_name( "only_single_double_dm" )
|
|
||||||
T.set_output ( "output_dets" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
|
|
||||||
T.set_name ( "s2_eig" )
|
|
||||||
T.set_doc ( "Force the wave function to be an eigenfunction of S^2" )
|
|
||||||
T.set_ezfio_name( "s2_eig" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
END_SHELL
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer, N_states_diag ]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Number of states to consider for the diagonalization
|
|
||||||
END_DOC
|
|
||||||
|
|
||||||
logical :: has
|
|
||||||
PROVIDE ezfio_filename
|
|
||||||
call ezfio_has_determinants_n_states_diag(has)
|
|
||||||
if (has) then
|
|
||||||
call ezfio_get_determinants_n_states_diag(N_states_diag)
|
|
||||||
else
|
|
||||||
N_states_diag = N_states
|
|
||||||
endif
|
|
||||||
|
|
||||||
call write_time(output_dets)
|
|
||||||
call write_int(output_dets, N_states_diag, &
|
|
||||||
'N_states_diag')
|
|
||||||
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
@ -1,91 +0,0 @@
|
|||||||
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)
|
|
||||||
|
|
||||||
integer :: n_svd_coefs
|
|
||||||
double precision :: norm, f
|
|
||||||
f = 1.d0/dble(N_states)
|
|
||||||
norm = 1.d0
|
|
||||||
do n_svd_coefs=1,N_det_alpha_unique
|
|
||||||
do k=1,N_states
|
|
||||||
norm -= psi_svd_coefs(n_svd_coefs,k)*psi_svd_coefs(n_svd_coefs,k)
|
|
||||||
enddo
|
|
||||||
if (norm < 1.d-6) then
|
|
||||||
exit
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
n_svd_coefs -= 1
|
|
||||||
call ezfio_set_spindeterminants_n_svd_coefs(n_svd_coefs)
|
|
||||||
|
|
||||||
double precision, allocatable :: dtmp(:,:,:)
|
|
||||||
allocate(dtmp(N_det_alpha_unique,n_svd_coefs,N_states))
|
|
||||||
do k=1,N_states
|
|
||||||
do j=1,n_svd_coefs
|
|
||||||
do i=1,N_det_alpha_unique
|
|
||||||
dtmp(i,j,k) = psi_svd_alpha(i,j,k)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
call ezfio_set_spindeterminants_psi_svd_alpha(dtmp)
|
|
||||||
deallocate(dtmp)
|
|
||||||
|
|
||||||
allocate(dtmp(N_det_beta_unique,n_svd_coefs,N_states))
|
|
||||||
do k=1,N_states
|
|
||||||
do j=1,n_svd_coefs
|
|
||||||
do i=1,N_det_beta_unique
|
|
||||||
dtmp(i,j,k) = psi_svd_beta(i,j,k)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
call ezfio_set_spindeterminants_psi_svd_beta(dtmp)
|
|
||||||
deallocate(dtmp)
|
|
||||||
|
|
||||||
allocate(dtmp(n_svd_coefs,N_states,1))
|
|
||||||
do k=1,N_states
|
|
||||||
do j=1,n_svd_coefs
|
|
||||||
dtmp(j,k,1) = psi_svd_coefs(j,k)
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
call ezfio_set_spindeterminants_psi_svd_coefs(dtmp)
|
|
||||||
deallocate(dtmp)
|
|
||||||
|
|
||||||
end
|
|
@ -1 +1 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
||||||
|
@ -24,7 +24,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `MonoInts <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts>`_
|
* `MonoInts <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts>`_
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Generators_full Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files Generators_full Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Generators_full <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full>`_
|
* `Generators_full <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full>`_
|
||||||
|
@ -1 +1 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
||||||
|
@ -46,7 +46,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `MonoInts <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts>`_
|
* `MonoInts <http://github.com/LCPQ/quantum_package/tree/master/src/MonoInts>`_
|
||||||
|
@ -7,7 +7,7 @@ BEGIN_PROVIDER [ integer, N_det_generators ]
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: i,k,l
|
integer :: i,k,l
|
||||||
logical :: good
|
logical :: good
|
||||||
call write_time(output_dets)
|
call write_time(output_determinants)
|
||||||
N_det_generators = 0
|
N_det_generators = 0
|
||||||
do i=1,N_det
|
do i=1,N_det
|
||||||
do l=1,n_cas_bitmask
|
do l=1,n_cas_bitmask
|
||||||
@ -28,7 +28,7 @@ BEGIN_PROVIDER [ integer, N_det_generators ]
|
|||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
N_det_generators = max(N_det_generators,1)
|
N_det_generators = max(N_det_generators,1)
|
||||||
call write_int(output_dets,N_det_generators,'Number of generators')
|
call write_int(output_determinants,N_det_generators,'Number of generators')
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer(bit_kind), psi_det_generators, (N_int,2,psi_det_size) ]
|
BEGIN_PROVIDER [ integer(bit_kind), psi_det_generators, (N_int,2,psi_det_size) ]
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Utils
|
||||||
|
|
||||||
|
@ -11,25 +11,25 @@ Documentation
|
|||||||
.. Do not edit this section. It was auto-generated from the
|
.. Do not edit this section. It was auto-generated from the
|
||||||
.. NEEDED_MODULES file.
|
.. NEEDED_MODULES file.
|
||||||
|
|
||||||
`degree_max_generators <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L55>`_
|
`degree_max_generators <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L43>`_
|
||||||
Max degree of excitation (respect to HF) of the generators
|
Max degree of excitation (respect to HF) of the generators
|
||||||
|
|
||||||
`n_det_generators <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L15>`_
|
`n_det_generators <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L3>`_
|
||||||
For Single reference wave functions, the number of generators is 1 : the
|
For Single reference wave functions, the number of generators is 1 : the
|
||||||
Hartree-Fock determinant
|
Hartree-Fock determinant
|
||||||
|
|
||||||
`psi_coef_generators <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L38>`_
|
`psi_coef_generators <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L26>`_
|
||||||
For Single reference wave functions, the generator is the
|
For Single reference wave functions, the generator is the
|
||||||
Hartree-Fock determinant
|
Hartree-Fock determinant
|
||||||
|
|
||||||
`psi_det_generators <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L37>`_
|
`psi_det_generators <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L25>`_
|
||||||
For Single reference wave functions, the generator is the
|
For Single reference wave functions, the generator is the
|
||||||
Hartree-Fock determinant
|
Hartree-Fock determinant
|
||||||
|
|
||||||
`select_max <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L78>`_
|
`select_max <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L66>`_
|
||||||
Memo to skip useless selectors
|
Memo to skip useless selectors
|
||||||
|
|
||||||
`size_select_max <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L70>`_
|
`size_select_max <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full/generators.irp.f#L58>`_
|
||||||
Size of the select_max array
|
Size of the select_max array
|
||||||
|
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
||||||
|
@ -1,17 +1,5 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
|
|
||||||
BEGIN_SHELL [ /usr/bin/python ]
|
|
||||||
from ezfio_with_default import EZFIO_Provider
|
|
||||||
T = EZFIO_Provider()
|
|
||||||
T.set_type ( "double precision" )
|
|
||||||
T.set_name ( "threshold_generators" )
|
|
||||||
T.set_doc ( "Percentage of the norm of the state-averaged wave function to consider for the generators" )
|
|
||||||
T.set_ezfio_dir ( "determinants" )
|
|
||||||
T.set_ezfio_name( "threshold_generators" )
|
|
||||||
T.set_output ( "output_dets" )
|
|
||||||
print T
|
|
||||||
END_SHELL
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer, N_det_generators ]
|
BEGIN_PROVIDER [ integer, N_det_generators ]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -20,7 +8,7 @@ BEGIN_PROVIDER [ integer, N_det_generators ]
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: i
|
integer :: i
|
||||||
double precision :: norm
|
double precision :: norm
|
||||||
call write_time(output_dets)
|
call write_time(output_determinants)
|
||||||
norm = 0.d0
|
norm = 0.d0
|
||||||
N_det_generators = N_det
|
N_det_generators = N_det
|
||||||
do i=1,N_det
|
do i=1,N_det
|
||||||
@ -31,7 +19,7 @@ BEGIN_PROVIDER [ integer, N_det_generators ]
|
|||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
N_det_generators = max(N_det_generators,1)
|
N_det_generators = max(N_det_generators,1)
|
||||||
call write_int(output_dets,N_det_generators,'Number of generators')
|
call write_int(output_determinants,N_det_generators,'Number of generators')
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer(bit_kind), psi_det_generators, (N_int,2,psi_det_size) ]
|
BEGIN_PROVIDER [ integer(bit_kind), psi_det_generators, (N_int,2,psi_det_size) ]
|
||||||
|
@ -1 +1 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
||||||
|
@ -13,7 +13,7 @@ BEGIN_PROVIDER [ integer, N_det_generators ]
|
|||||||
N_det_generators = N_det
|
N_det_generators = N_det
|
||||||
ifirst = 1
|
ifirst = 1
|
||||||
endif
|
endif
|
||||||
call write_int(output_dets,N_det_generators,'Number of generators')
|
call write_int(output_determinants,N_det_generators,'Number of generators')
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Generators_full Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files Generators_full Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Needed Modules
|
|||||||
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
* `AOs <http://github.com/LCPQ/quantum_package/tree/master/src/AOs>`_
|
||||||
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
* `Bielec_integrals <http://github.com/LCPQ/quantum_package/tree/master/src/Bielec_integrals>`_
|
||||||
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
* `Bitmask <http://github.com/LCPQ/quantum_package/tree/master/src/Bitmask>`_
|
||||||
* `Dets <http://github.com/LCPQ/quantum_package/tree/master/src/Dets>`_
|
* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
|
||||||
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
* `Electrons <http://github.com/LCPQ/quantum_package/tree/master/src/Electrons>`_
|
||||||
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
* `Generators_full <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full>`_
|
* `Generators_full <http://github.com/LCPQ/quantum_package/tree/master/src/Generators_full>`_
|
||||||
|
@ -94,7 +94,7 @@ END_PROVIDER
|
|||||||
|
|
||||||
stop 'use Lapack'
|
stop 'use Lapack'
|
||||||
! call davidson_diag(psi_det,CI_eigenvectors_dressed,CI_electronic_energy_dressed, &
|
! call davidson_diag(psi_det,CI_eigenvectors_dressed,CI_electronic_energy_dressed, &
|
||||||
! size(CI_eigenvectors_dressed,1),N_det,N_states_diag,N_int,output_Dets)
|
! size(CI_eigenvectors_dressed,1),N_det,N_states_diag,N_int,output_determinants)
|
||||||
|
|
||||||
else if (diag_algorithm == "Lapack") then
|
else if (diag_algorithm == "Lapack") then
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ BEGIN_PROVIDER [ double precision, CI_energy_dressed, (N_states_diag) ]
|
|||||||
|
|
||||||
integer :: j
|
integer :: j
|
||||||
character*(8) :: st
|
character*(8) :: st
|
||||||
call write_time(output_Dets)
|
call write_time(output_determinants)
|
||||||
do j=1,N_states_diag
|
do j=1,N_states_diag
|
||||||
CI_energy_dressed(j) = CI_electronic_energy_dressed(j) + nuclear_repulsion
|
CI_energy_dressed(j) = CI_electronic_energy_dressed(j) + nuclear_repulsion
|
||||||
enddo
|
enddo
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
OPENMP =1
|
|
||||||
PROFILE =0
|
|
||||||
DEBUG = 0
|
|
||||||
|
|
||||||
IRPF90_FLAGS+= --align=32
|
|
||||||
FC = ifort -g
|
|
||||||
FCFLAGS=
|
|
||||||
FCFLAGS+= -axAVX,SSE4.2
|
|
||||||
FCFLAGS+= -O2
|
|
||||||
FCFLAGS+= -ip
|
|
||||||
FCFLAGS+= -opt-prefetch
|
|
||||||
FCFLAGS+= -ftz
|
|
||||||
MKL=-mkl=parallel
|
|
||||||
|
|
||||||
ifeq ($(PROFILE),1)
|
|
||||||
FC += -p -g
|
|
||||||
CXX += -pg
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(OPENMP),1)
|
|
||||||
FC += -openmp
|
|
||||||
IRPF90_FLAGS += --openmp
|
|
||||||
CXX += -fopenmp
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(DEBUG),1)
|
|
||||||
FC += -C -traceback -fpe0
|
|
||||||
IRPF90_FLAGS += -a
|
|
||||||
#FCFLAGS =-O0
|
|
||||||
endif
|
|
@ -1 +1 @@
|
|||||||
AOs Bielec_integrals Bitmask CID CID_SC2_selected CID_selected CIS CISD CISD_selected CISD_SC2_selected Dets Electrons Ezfio_files Full_CI Generators_full Hartree_Fock MOGuess MonoInts MOs MP2 Nuclei Output Selectors_full Utils Molden FCIdump Generators_CAS CAS_SD DDCI_selected MRCC
|
AOs Bielec_integrals Bitmask CID CID_SC2_selected CID_selected CIS CISD CISD_selected CISD_SC2_selected Determinants Electrons Ezfio_files Full_CI Generators_full Hartree_Fock MOGuess MonoInts MOs MP2 Nuclei Output Selectors_full Utils Molden FCIdump Generators_CAS CAS_SD DDCI_selected MRCC
|
||||||
|
@ -1 +1 @@
|
|||||||
Utils
|
Utils Ezfio_files
|
||||||
|
@ -32,6 +32,7 @@ Needed Modules
|
|||||||
.. NEEDED_MODULES file.
|
.. NEEDED_MODULES file.
|
||||||
|
|
||||||
* `Utils <http://github.com/LCPQ/quantum_package/tree/master/src/Utils>`_
|
* `Utils <http://github.com/LCPQ/quantum_package/tree/master/src/Utils>`_
|
||||||
|
* `Ezfio_files <http://github.com/LCPQ/quantum_package/tree/master/src/Ezfio_files>`_
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
=============
|
=============
|
||||||
|
@ -19,7 +19,7 @@ BEGIN_SHELL [ /bin/bash ]
|
|||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Output file for $NAME
|
! Output file for $NAME
|
||||||
END_DOC
|
END_DOC
|
||||||
PROVIDE output_wall_time_0 output_cpu_time_0
|
PROVIDE output_wall_time_0 output_cpu_time_0 ezfio_filename
|
||||||
integer :: getUnitAndOpen
|
integer :: getUnitAndOpen
|
||||||
call ezfio_set_output_empty(.False.)
|
call ezfio_set_output_empty(.False.)
|
||||||
IRP_IF COARRAY
|
IRP_IF COARRAY
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Properties Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Properties Utils
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ subroutine remove_small_contributions
|
|||||||
if (N_removed > 0) then
|
if (N_removed > 0) then
|
||||||
N_det = N_det - N_removed
|
N_det = N_det - N_removed
|
||||||
SOFT_TOUCH N_det psi_det psi_coef
|
SOFT_TOUCH N_det psi_det psi_coef
|
||||||
call write_int(output_dets,N_removed, 'Removed determinants')
|
call write_int(output_determinants,N_removed, 'Removed determinants')
|
||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
|
||||||
|
5
src/Properties/EZFIO.cfg
Normal file
5
src/Properties/EZFIO.cfg
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[z_one_point]
|
||||||
|
type: double precision
|
||||||
|
doc: z point on which the integrated delta rho is calculated
|
||||||
|
interface: input
|
||||||
|
default: 3.9
|
@ -1 +1 @@
|
|||||||
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Determinants Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
BEGIN_SHELL [ /usr/bin/python ]
|
|
||||||
from ezfio_with_default import EZFIO_Provider
|
|
||||||
T = EZFIO_Provider()
|
|
||||||
T.set_type ( "double precision" )
|
|
||||||
T.set_name ( "z_one_point" )
|
|
||||||
T.set_doc ( "z point on which the integrated delta rho is calculated" )
|
|
||||||
T.set_ezfio_dir ( "properties" )
|
|
||||||
T.set_ezfio_name( "z_one_point" )
|
|
||||||
T.set_output ( "output_full_ci" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
END_SHELL
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user