mirror of
https://github.com/LCPQ/quantum_package
synced 2025-04-21 07:50:30 +02:00
Merge pull request #3 from TApplencourt/master
BiInt => Bi_elec_integrales and many minor bug
This commit is contained in:
commit
98f2454592
1
data/ezfio_defaults/.gitignore
vendored
Normal file
1
data/ezfio_defaults/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*ezfio_interface_default
|
@ -1,9 +0,0 @@
|
|||||||
bielec_integrals
|
|
||||||
read_ao_integrals False
|
|
||||||
read_mo_integrals False
|
|
||||||
write_ao_integrals False
|
|
||||||
write_mo_integrals False
|
|
||||||
threshold_ao 1.e-15
|
|
||||||
threshold_mo 1.e-15
|
|
||||||
direct False
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
|||||||
cisd_sc2_selected
|
|
||||||
n_det_max_cisd_sc2 10000
|
|
||||||
pt2_max 1.e-4
|
|
||||||
do_pt2_end True
|
|
||||||
|
|
@ -4,9 +4,8 @@ open Core.Std;;
|
|||||||
|
|
||||||
|
|
||||||
include Input_ao_basis;;
|
include Input_ao_basis;;
|
||||||
include Input_bi_integrals;;
|
include Input_bielec_integrals;;
|
||||||
include Input_bitmasks;;
|
include Input_bitmasks;;
|
||||||
include Input_cisd_sc2;;
|
|
||||||
include Input_cisd_sc2_selected;;
|
include Input_cisd_sc2_selected;;
|
||||||
include Input_determinants;;
|
include Input_determinants;;
|
||||||
include Input_electrons;;
|
include Input_electrons;;
|
||||||
|
@ -1,127 +0,0 @@
|
|||||||
open Qptypes;;
|
|
||||||
open Qputils;;
|
|
||||||
open Core.Std;;
|
|
||||||
|
|
||||||
module Cisd_sc2 : sig
|
|
||||||
type t =
|
|
||||||
{ n_det_max_cisd_sc2 : Det_number_max.t;
|
|
||||||
pt2_max : PT2_energy.t;
|
|
||||||
do_pt2_end : bool;
|
|
||||||
} with sexp
|
|
||||||
;;
|
|
||||||
val read : unit -> t option
|
|
||||||
val write : t -> unit
|
|
||||||
val to_string : t -> string
|
|
||||||
val to_rst : t -> Rst_string.t
|
|
||||||
val of_rst : Rst_string.t -> t option
|
|
||||||
end = struct
|
|
||||||
type t =
|
|
||||||
{ n_det_max_cisd_sc2 : Det_number_max.t;
|
|
||||||
pt2_max : PT2_energy.t;
|
|
||||||
do_pt2_end : bool;
|
|
||||||
} with sexp
|
|
||||||
;;
|
|
||||||
|
|
||||||
let get_default = Qpackage.get_ezfio_default "cisd_sc2_selected";;
|
|
||||||
|
|
||||||
let read_n_det_max_cisd_sc2 () =
|
|
||||||
if not (Ezfio.has_cisd_sc2_selected_n_det_max_cisd_sc2 ()) then
|
|
||||||
get_default "n_det_max_cisd_sc2"
|
|
||||||
|> Int.of_string
|
|
||||||
|> Ezfio.set_cisd_sc2_selected_n_det_max_cisd_sc2
|
|
||||||
;
|
|
||||||
Ezfio.get_cisd_sc2_selected_n_det_max_cisd_sc2 ()
|
|
||||||
|> Det_number_max.of_int
|
|
||||||
;;
|
|
||||||
|
|
||||||
let write_n_det_max_cisd_sc2 n =
|
|
||||||
Det_number_max.to_int n
|
|
||||||
|> Ezfio.set_cisd_sc2_selected_n_det_max_cisd_sc2
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
let read_pt2_max () =
|
|
||||||
if not (Ezfio.has_cisd_sc2_selected_pt2_max ()) then
|
|
||||||
get_default "pt2_max"
|
|
||||||
|> Float.of_string
|
|
||||||
|> Ezfio.set_cisd_sc2_selected_pt2_max
|
|
||||||
;
|
|
||||||
Ezfio.get_cisd_sc2_selected_pt2_max ()
|
|
||||||
|> PT2_energy.of_float
|
|
||||||
;;
|
|
||||||
|
|
||||||
let write_pt2_max p =
|
|
||||||
PT2_energy.to_float p
|
|
||||||
|> Ezfio.set_cisd_sc2_selected_pt2_max
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
let read_do_pt2_end () =
|
|
||||||
if not (Ezfio.has_cisd_sc2_selected_do_pt2_end ()) then
|
|
||||||
get_default "do_pt2_end"
|
|
||||||
|> Bool.of_string
|
|
||||||
|> Ezfio.set_cisd_sc2_selected_do_pt2_end
|
|
||||||
;
|
|
||||||
Ezfio.get_cisd_sc2_selected_do_pt2_end ()
|
|
||||||
;;
|
|
||||||
|
|
||||||
let write_do_pt2_end =
|
|
||||||
Ezfio.set_cisd_sc2_selected_do_pt2_end
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
let read () =
|
|
||||||
Some
|
|
||||||
{ n_det_max_cisd_sc2 = read_n_det_max_cisd_sc2 ();
|
|
||||||
pt2_max = read_pt2_max ();
|
|
||||||
do_pt2_end = read_do_pt2_end ();
|
|
||||||
}
|
|
||||||
;;
|
|
||||||
|
|
||||||
let write { n_det_max_cisd_sc2 ;
|
|
||||||
pt2_max ;
|
|
||||||
do_pt2_end ;
|
|
||||||
} =
|
|
||||||
write_n_det_max_cisd_sc2 n_det_max_cisd_sc2;
|
|
||||||
write_pt2_max pt2_max;
|
|
||||||
write_do_pt2_end do_pt2_end;
|
|
||||||
;;
|
|
||||||
|
|
||||||
let to_string b =
|
|
||||||
Printf.sprintf "
|
|
||||||
n_det_max_cisd_sc2 = %s
|
|
||||||
pt2_max = %s
|
|
||||||
do_pt2_end = %s
|
|
||||||
"
|
|
||||||
(Det_number_max.to_string b.n_det_max_cisd_sc2)
|
|
||||||
(PT2_energy.to_string b.pt2_max)
|
|
||||||
(Bool.to_string b.do_pt2_end)
|
|
||||||
;;
|
|
||||||
|
|
||||||
let to_rst b =
|
|
||||||
Printf.sprintf "
|
|
||||||
Stop when the `n_det` > `n_det_max_cisd_sc2` ::
|
|
||||||
|
|
||||||
n_det_max_cisd_sc2 = %s
|
|
||||||
|
|
||||||
Stop when -E(PT2) < `pt2_max` ::
|
|
||||||
|
|
||||||
pt2_max = %s
|
|
||||||
|
|
||||||
Compute E(PT2) at the end ::
|
|
||||||
|
|
||||||
do_pt2_end = %s
|
|
||||||
|
|
||||||
"
|
|
||||||
(Det_number_max.to_string b.n_det_max_cisd_sc2)
|
|
||||||
(PT2_energy.to_string b.pt2_max)
|
|
||||||
(Bool.to_string b.do_pt2_end)
|
|
||||||
|> Rst_string.of_string
|
|
||||||
;;
|
|
||||||
|
|
||||||
include Generic_input_of_rst;;
|
|
||||||
let of_rst = of_rst t_of_sexp;;
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
@ -12,7 +12,6 @@ open Core.Std;;
|
|||||||
type keyword =
|
type keyword =
|
||||||
| Ao_basis
|
| Ao_basis
|
||||||
| Bielec_integrals
|
| Bielec_integrals
|
||||||
| Cisd_sc2
|
|
||||||
| Cisd_sc2_selected
|
| Cisd_sc2_selected
|
||||||
| Determinants
|
| Determinants
|
||||||
| Electrons
|
| Electrons
|
||||||
@ -26,8 +25,7 @@ type keyword =
|
|||||||
let keyword_to_string = function
|
let keyword_to_string = function
|
||||||
| Ao_basis -> "AO basis"
|
| Ao_basis -> "AO basis"
|
||||||
| Bielec_integrals -> "Two electron integrals"
|
| Bielec_integrals -> "Two electron integrals"
|
||||||
| Cisd_sc2 -> "CISD (SC)^2"
|
| Cisd_sc2_selected -> "CISD (SC)^2"
|
||||||
| Cisd_sc2_selected -> "CISD (SC)^2 selected"
|
|
||||||
| Determinants -> "Determinants"
|
| Determinants -> "Determinants"
|
||||||
| Electrons -> "Electrons"
|
| Electrons -> "Electrons"
|
||||||
| Full_ci -> "Selected Full-CI"
|
| Full_ci -> "Selected Full-CI"
|
||||||
@ -80,8 +78,6 @@ let get s =
|
|||||||
f Mo_basis.(read, to_rst)
|
f Mo_basis.(read, to_rst)
|
||||||
| Electrons ->
|
| Electrons ->
|
||||||
f Electrons.(read, to_rst)
|
f Electrons.(read, to_rst)
|
||||||
| Cisd_sc2 ->
|
|
||||||
f Cisd_sc2.(read, to_rst)
|
|
||||||
| Cisd_sc2_selected ->
|
| Cisd_sc2_selected ->
|
||||||
f Cisd_sc2_selected.(read, to_rst)
|
f Cisd_sc2_selected.(read, to_rst)
|
||||||
| Nuclei ->
|
| Nuclei ->
|
||||||
@ -132,7 +128,6 @@ let set str s =
|
|||||||
| Hartree_fock -> write Hartree_fock.(of_rst, write) s
|
| Hartree_fock -> write Hartree_fock.(of_rst, write) s
|
||||||
| Full_ci -> write Full_ci.(of_rst, write) s
|
| Full_ci -> write Full_ci.(of_rst, write) s
|
||||||
| Electrons -> write Electrons.(of_rst, write) s
|
| Electrons -> write Electrons.(of_rst, write) s
|
||||||
| Cisd_sc2 -> write Cisd_sc2.(of_rst, write) s
|
|
||||||
| Cisd_sc2_selected -> write Cisd_sc2_selected.(of_rst, write) s
|
| Cisd_sc2_selected -> write Cisd_sc2_selected.(of_rst, write) s
|
||||||
| Bielec_integrals -> write Bielec_integrals.(of_rst, write) s
|
| Bielec_integrals -> write Bielec_integrals.(of_rst, write) s
|
||||||
| Determinants -> write Determinants.(of_rst, write) s
|
| Determinants -> write Determinants.(of_rst, write) s
|
||||||
@ -183,7 +178,6 @@ let run check_only ezfio_filename =
|
|||||||
Electrons ;
|
Electrons ;
|
||||||
Bielec_integrals ;
|
Bielec_integrals ;
|
||||||
Hartree_fock ;
|
Hartree_fock ;
|
||||||
Cisd_sc2 ;
|
|
||||||
Cisd_sc2_selected ;
|
Cisd_sc2_selected ;
|
||||||
Full_ci ;
|
Full_ci ;
|
||||||
Mo_basis;
|
Mo_basis;
|
||||||
|
@ -161,8 +161,36 @@ end = struct
|
|||||||
| \"hcore\" -> HCore
|
| \"hcore\" -> HCore
|
||||||
| _ -> failwith (\"Wrong Guess type : \"^s)
|
| _ -> failwith (\"Wrong Guess type : \"^s)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
module Disk_access : sig
|
||||||
|
type t with sexp
|
||||||
|
val to_string : t -> string
|
||||||
|
val of_string : string -> t
|
||||||
|
end = struct
|
||||||
|
type t =
|
||||||
|
| Read
|
||||||
|
| Write
|
||||||
|
| None
|
||||||
|
with sexp
|
||||||
|
|
||||||
|
let to_string = function
|
||||||
|
| Read -> \"Read\"
|
||||||
|
| Write -> \"Write\"
|
||||||
|
| None -> \"None\"
|
||||||
|
let of_string s =
|
||||||
|
let s =
|
||||||
|
String.lowercase s
|
||||||
|
in
|
||||||
|
match s with
|
||||||
|
| \"read\" -> Read
|
||||||
|
| \"write\" -> Write
|
||||||
|
| \"none\" -> None
|
||||||
|
| _ -> failwith (\"Wrong IO type : \"^s)
|
||||||
|
|
||||||
end
|
end
|
||||||
"
|
"
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let template = format_of_string "
|
let template = format_of_string "
|
||||||
|
@ -61,13 +61,13 @@ let test_dets () =
|
|||||||
|
|
||||||
let test_cisd_sc2 () =
|
let test_cisd_sc2 () =
|
||||||
Ezfio.set_file "F2.ezfio" ;
|
Ezfio.set_file "F2.ezfio" ;
|
||||||
let b = match Input.Cisd_sc2.read () with
|
let b = match Input.Cisd_sc2_selected.read () with
|
||||||
| Some x -> x
|
| Some x -> x
|
||||||
| None -> assert false
|
| None -> assert false
|
||||||
in
|
in
|
||||||
print_endline (Input.Cisd_sc2.to_string b);
|
print_endline (Input.Cisd_sc2_selected.to_string b);
|
||||||
let rst = Input.Cisd_sc2.to_rst b in
|
let rst = Input.Cisd_sc2_selected.to_rst b in
|
||||||
let b2 = match Input.Cisd_sc2.of_rst rst with
|
let b2 = match Input.Cisd_sc2_selected.of_rst rst with
|
||||||
| Some x -> x
|
| Some x -> x
|
||||||
| None -> assert false
|
| None -> assert false
|
||||||
in
|
in
|
||||||
|
26
scripts/ezfio_interface/convert_ezfio.sh
Normal file → Executable file
26
scripts/ezfio_interface/convert_ezfio.sh
Normal file → Executable file
@ -1,5 +1,27 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Convert a old ezfio file (with option.irp.f ezfio_default)
|
# Convert a old ezfio file (with option.irp.f ezfio_default)
|
||||||
# into a new EZFIO.cfg type
|
# into a new EZFIO.cfg type
|
||||||
mv $1/Hartree_Fock $1/hartree_fock
|
|
||||||
mv $1/hartree_Fock/thresh_SCF $1/hartree_fock/thresh_scf
|
# Hartree Fock
|
||||||
|
# Changin the case, don't know if is needed or not
|
||||||
|
mv $1/Hartree_Fock $1/hartree_fock 2> /dev/null
|
||||||
|
|
||||||
|
mv $1/hartree_Fock/thresh_SCF $1/hartree_fock/thresh_scf 2> /dev/null
|
||||||
|
|
||||||
|
# BiInts
|
||||||
|
mv $1/bi_integrals $1/bielect_integrals 2> /dev/null
|
||||||
|
|
||||||
|
if [ -f $1/bielect_integrals/read_ao_integrals ]; then
|
||||||
|
if [ `cat $1/bielect_integrals/read_ao_integrals` -eq "True" ]
|
||||||
|
then
|
||||||
|
echo "Read" > $1/bielect_integrals/disk_access_ao_integrals
|
||||||
|
|
||||||
|
elif [ `cat bielect_integrals/write_ao_integrals` -eq "True" ]
|
||||||
|
then
|
||||||
|
echo "Write" > $1/bielect_integrals/disk_access_ao_integrals
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "None" > $1/bielect_integrals/disk_access_ao_integrals
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
@ -105,8 +105,6 @@ def get_type_dict():
|
|||||||
fancy_type['logical'] = Type(None, "bool", "logical")
|
fancy_type['logical'] = Type(None, "bool", "logical")
|
||||||
fancy_type['bool'] = Type(None, "bool", "logical")
|
fancy_type['bool'] = Type(None, "bool", "logical")
|
||||||
|
|
||||||
fancy_type['MO_guess'] = Type("MO_guess", "string", "character*(32)")
|
|
||||||
|
|
||||||
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*(60)'] = Type(None, "string", "character*(60)")
|
||||||
fancy_type['character*(256)'] = Type(None, "string", "character*(256)")
|
fancy_type['character*(256)'] = Type(None, "string", "character*(256)")
|
||||||
@ -121,16 +119,34 @@ def get_type_dict():
|
|||||||
"logical": "logical",
|
"logical": "logical",
|
||||||
"string": "character*32"}
|
"string": "character*32"}
|
||||||
|
|
||||||
# Read and parse qptype
|
# Read and parse qptype generate
|
||||||
src = qpackage_root + "/ocaml/qptypes_generator.ml"
|
src = qpackage_root + "/ocaml/qptypes_generator.ml"
|
||||||
with open(src, "r") as f:
|
with open(src, "r") as f:
|
||||||
l = [i for i in f.read().splitlines() if i.strip().startswith("*")]
|
r = f.read()
|
||||||
|
|
||||||
|
# Generate
|
||||||
|
l_gen = [i for i in r.splitlines() if i.strip().startswith("*")]
|
||||||
|
|
||||||
|
# Untouch
|
||||||
|
b = r.find('let untouched = "')
|
||||||
|
e = r.find(';;', b)
|
||||||
|
|
||||||
|
l_un = [i for i in r[b:e].splitlines() if i.strip().startswith("module")]
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
||||||
|
# q p _ t y p e s _ g e n e r a t e #
|
||||||
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
# Read the fancy_type, the ocaml. and convert the ocam to the fortran
|
# Read the fancy_type, the ocaml. and convert the ocam to the fortran
|
||||||
for i in l:
|
for i in l_gen + l_un:
|
||||||
str_fancy_type = i.split()[1].strip()
|
str_fancy_type = i.split()[1].strip()
|
||||||
str_ocaml_type = i.split()[3]
|
str_ocaml_type = i.split()[3]
|
||||||
|
|
||||||
|
if str_ocaml_type != 'sig':
|
||||||
str_fortran_type = ocaml_to_fortran[str_ocaml_type]
|
str_fortran_type = ocaml_to_fortran[str_ocaml_type]
|
||||||
|
else:
|
||||||
|
str_fortran_type = 'character*(32)'
|
||||||
|
str_ocaml_type = 'string'
|
||||||
|
|
||||||
fancy_type[str_fancy_type] = Type(str_fancy_type,
|
fancy_type[str_fancy_type] = Type(str_fancy_type,
|
||||||
str_ocaml_type,
|
str_ocaml_type,
|
||||||
@ -277,7 +293,7 @@ def create_ezfio_provider(dict_ezfio_cfg):
|
|||||||
ez_p.set_ezfio_name(dict_info['ezfio_name'])
|
ez_p.set_ezfio_name(dict_info['ezfio_name'])
|
||||||
ez_p.set_output("output_%s" % dict_info['ezfio_dir'])
|
ez_p.set_output("output_%s" % dict_info['ezfio_dir'])
|
||||||
|
|
||||||
dict_code_provider[provider_name] = str(ez_p)
|
dict_code_provider[provider_name] = str(ez_p) + "\n"
|
||||||
|
|
||||||
return dict_code_provider
|
return dict_code_provider
|
||||||
|
|
||||||
@ -307,7 +323,7 @@ def save_ezfio_provider(path_head, dict_code_provider):
|
|||||||
output = "\n".join(l_output)
|
output = "\n".join(l_output)
|
||||||
|
|
||||||
if output != old_output:
|
if output != old_output:
|
||||||
with open(path, "w") as f:
|
with open(path, "w+") as f:
|
||||||
f.write(output)
|
f.write(output)
|
||||||
|
|
||||||
|
|
||||||
@ -366,7 +382,8 @@ def create_ezfio_stuff(dict_ezfio_cfg, config_or_default="config"):
|
|||||||
for provider_name, provider_info in sorted(dict_ezfio_cfg.iteritems()):
|
for provider_name, provider_info in sorted(dict_ezfio_cfg.iteritems()):
|
||||||
|
|
||||||
# Get the value from dict
|
# Get the value from dict
|
||||||
name_raw = provider_name.lower()
|
name_raw = provider_info["ezfio_name"].lower()
|
||||||
|
|
||||||
fortran_type_raw = provider_info["type"].fortran
|
fortran_type_raw = provider_info["type"].fortran
|
||||||
|
|
||||||
if "size" in provider_info and not provider_info["size"] == "1":
|
if "size" in provider_info and not provider_info["size"] == "1":
|
||||||
@ -423,7 +440,7 @@ def save_ezfio_config(module_lower, str_ezfio_config):
|
|||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
if str_ezfio_config != old_output:
|
if str_ezfio_config != old_output:
|
||||||
with open(path, "w") as f:
|
with open(path, "w+") as f:
|
||||||
f.write(str_ezfio_config)
|
f.write(str_ezfio_config)
|
||||||
|
|
||||||
|
|
||||||
@ -452,7 +469,7 @@ def save_ezfio_default(module_lower, str_ezfio_default):
|
|||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
if str_ezfio_default != old_output:
|
if str_ezfio_default != old_output:
|
||||||
with open(path, "w") as f:
|
with open(path, "w+") as f:
|
||||||
f.write(str_ezfio_default)
|
f.write(str_ezfio_default)
|
||||||
|
|
||||||
|
|
||||||
@ -464,17 +481,17 @@ def create_ocaml_input(dict_ezfio_cfg,module_lower):
|
|||||||
|
|
||||||
from ezfio_generate_ocaml import EZFIO_ocaml
|
from ezfio_generate_ocaml import EZFIO_ocaml
|
||||||
|
|
||||||
l_provider = []
|
l_ezfio_name = []
|
||||||
l_type = []
|
l_type = []
|
||||||
l_doc = []
|
l_doc = []
|
||||||
|
|
||||||
for k, v in dict_ezfio_cfg.iteritems():
|
for k, v in dict_ezfio_cfg.iteritems():
|
||||||
if v['interface'] == "input":
|
if v['interface'] == "input":
|
||||||
l_provider.append(k)
|
l_ezfio_name.append(v['ezfio_name'])
|
||||||
l_type.append(v["type"])
|
l_type.append(v["type"])
|
||||||
l_doc.append(v["doc"])
|
l_doc.append(v["doc"])
|
||||||
|
|
||||||
e_glob = EZFIO_ocaml(l_provider=l_provider,
|
e_glob = EZFIO_ocaml(l_ezfio_name=l_ezfio_name,
|
||||||
l_type=l_type,
|
l_type=l_type,
|
||||||
l_doc=l_doc)
|
l_doc=l_doc)
|
||||||
|
|
||||||
@ -505,7 +522,7 @@ def create_ocaml_input(dict_ezfio_cfg,module_lower):
|
|||||||
template += [e_glob.create_type()]
|
template += [e_glob.create_type()]
|
||||||
|
|
||||||
template += ['',
|
template += ['',
|
||||||
' let get_default = Qpackage.get_ezfio_default "full_ci";;',
|
' let get_default = Qpackage.get_ezfio_default "{0}";;'.format(module_lower),
|
||||||
'']
|
'']
|
||||||
|
|
||||||
template += ['(* =~=~=~=~=~=~==~=~=~=~=~=~ *)',
|
template += ['(* =~=~=~=~=~=~==~=~=~=~=~=~ *)',
|
||||||
@ -565,7 +582,7 @@ def save_ocaml_input(module_lower, str_ocaml_input):
|
|||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
if str_ocaml_input != old_output:
|
if str_ocaml_input != old_output:
|
||||||
with open(path, "w") as f:
|
with open(path, "w+") as f:
|
||||||
f.write(str_ocaml_input)
|
f.write(str_ocaml_input)
|
||||||
|
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ class EZFIO_ocaml(object):
|
|||||||
def create_type(self):
|
def create_type(self):
|
||||||
'''
|
'''
|
||||||
You need to instantiate the EZFIO_ocaml with this keyword argument
|
You need to instantiate the EZFIO_ocaml with this keyword argument
|
||||||
l_provider = [provider_name, ...]
|
l_ezfio_name = [provider_name, ...]
|
||||||
l_type = [Named_tuple(fancy_type, ocaml_type, fortrant_type), ...]
|
l_type = [Named_tuple(fancy_type, ocaml_type, fortrant_type), ...]
|
||||||
|
|
||||||
Return the type template
|
Return the type template
|
||||||
@ -145,7 +145,7 @@ class EZFIO_ocaml(object):
|
|||||||
# C h e c k i n g #
|
# C h e c k i n g #
|
||||||
# ~#~#~#~#~#~#~#~ #
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
self.check_if_init(["l_provider", "l_type"],
|
self.check_if_init(["l_ezfio_name", "l_type"],
|
||||||
sys._getframe().f_code.co_name)
|
sys._getframe().f_code.co_name)
|
||||||
|
|
||||||
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~# #
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~# #
|
||||||
@ -156,7 +156,7 @@ class EZFIO_ocaml(object):
|
|||||||
"type t = ",
|
"type t = ",
|
||||||
" {"]
|
" {"]
|
||||||
|
|
||||||
for p, t in zip(self.l_provider, self.l_type):
|
for p, t in zip(self.l_ezfio_name, self.l_type):
|
||||||
|
|
||||||
if t.fancy:
|
if t.fancy:
|
||||||
l_template += [" {0:<30} : {1}.t;".format(p, t.fancy)]
|
l_template += [" {0:<30} : {1}.t;".format(p, t.fancy)]
|
||||||
@ -174,7 +174,7 @@ class EZFIO_ocaml(object):
|
|||||||
def create_read_global(self):
|
def create_read_global(self):
|
||||||
'''
|
'''
|
||||||
You need to instantiate the EZFIO_ocaml with this keyword argument
|
You need to instantiate the EZFIO_ocaml with this keyword argument
|
||||||
l_provider = [provider_name, ...]
|
l_ezfio_name = [ezfio_name, ...]
|
||||||
|
|
||||||
Return the read_global template
|
Return the read_global template
|
||||||
'''
|
'''
|
||||||
@ -182,7 +182,7 @@ class EZFIO_ocaml(object):
|
|||||||
# C h e c k i n g #
|
# C h e c k i n g #
|
||||||
# ~#~#~#~#~#~#~#~ #
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
self.check_if_init(["l_provider"],
|
self.check_if_init(["l_ezfio_name"],
|
||||||
sys._getframe().f_code.co_name)
|
sys._getframe().f_code.co_name)
|
||||||
|
|
||||||
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~# #
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~# #
|
||||||
@ -195,7 +195,7 @@ class EZFIO_ocaml(object):
|
|||||||
" {"]
|
" {"]
|
||||||
|
|
||||||
l_template += [" {0:<30} = read_{0} ();".format(p)
|
l_template += [" {0:<30} = read_{0} ();".format(p)
|
||||||
for p in self.l_provider]
|
for p in self.l_ezfio_name]
|
||||||
|
|
||||||
l_template += [" }",
|
l_template += [" }",
|
||||||
";;"]
|
";;"]
|
||||||
@ -208,7 +208,7 @@ class EZFIO_ocaml(object):
|
|||||||
def create_write_global(self):
|
def create_write_global(self):
|
||||||
'''
|
'''
|
||||||
You need to instantiate the EZFIO_ocaml with this keyword argument
|
You need to instantiate the EZFIO_ocaml with this keyword argument
|
||||||
l_provider = [provider_name, ...]
|
l_ezfio_name = [provider_name, ...]
|
||||||
|
|
||||||
Return the type template
|
Return the type template
|
||||||
'''
|
'''
|
||||||
@ -216,7 +216,7 @@ class EZFIO_ocaml(object):
|
|||||||
# C h e c k i n g #
|
# C h e c k i n g #
|
||||||
# ~#~#~#~#~#~#~#~ #
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
self.check_if_init(["l_provider"],
|
self.check_if_init(["l_ezfio_name"],
|
||||||
sys._getframe().f_code.co_name)
|
sys._getframe().f_code.co_name)
|
||||||
|
|
||||||
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~# #
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~# #
|
||||||
@ -225,9 +225,9 @@ class EZFIO_ocaml(object):
|
|||||||
|
|
||||||
l_template = ["(* Write all *)",
|
l_template = ["(* Write all *)",
|
||||||
"let write{ "]
|
"let write{ "]
|
||||||
l_template += [" {0};".format(p) for p in self.l_provider]
|
l_template += [" {0};".format(p) for p in self.l_ezfio_name]
|
||||||
l_template += [" } ="]
|
l_template += [" } ="]
|
||||||
l_template += [" write_{0:<30} {0};".format(p) for p in self.l_provider]
|
l_template += [" write_{0:<30} {0};".format(p) for p in self.l_ezfio_name]
|
||||||
l_template += [";;"]
|
l_template += [";;"]
|
||||||
|
|
||||||
# ~#~#~#~#~#~ #
|
# ~#~#~#~#~#~ #
|
||||||
@ -238,7 +238,7 @@ class EZFIO_ocaml(object):
|
|||||||
def create_to_string(self):
|
def create_to_string(self):
|
||||||
'''
|
'''
|
||||||
You need to instantiate the EZFIO_ocaml with this keyword argument
|
You need to instantiate the EZFIO_ocaml with this keyword argument
|
||||||
l_provider = [provider_name, ...]
|
l_ezfio_name = [provider_name, ...]
|
||||||
l_type = [Named_tuple(fancy_type, ocaml_type, fortrant_type), ...]
|
l_type = [Named_tuple(fancy_type, ocaml_type, fortrant_type), ...]
|
||||||
|
|
||||||
Return the type template
|
Return the type template
|
||||||
@ -247,7 +247,7 @@ class EZFIO_ocaml(object):
|
|||||||
# C h e c k i n g #
|
# C h e c k i n g #
|
||||||
# ~#~#~#~#~#~#~#~ #
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
self.check_if_init(["l_provider", "l_type"],
|
self.check_if_init(["l_ezfio_name", "l_type"],
|
||||||
sys._getframe().f_code.co_name)
|
sys._getframe().f_code.co_name)
|
||||||
|
|
||||||
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~# #
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~# #
|
||||||
@ -258,10 +258,10 @@ class EZFIO_ocaml(object):
|
|||||||
'let to_string b =',
|
'let to_string b =',
|
||||||
' Printf.sprintf "']
|
' Printf.sprintf "']
|
||||||
|
|
||||||
l_template += ["{0} = %s".format(p) for p in self.l_provider]
|
l_template += ["{0} = %s".format(p) for p in self.l_ezfio_name]
|
||||||
l_template += ['"']
|
l_template += ['"']
|
||||||
|
|
||||||
for p, t in zip(self.l_provider, self.l_type):
|
for p, t in zip(self.l_ezfio_name, self.l_type):
|
||||||
|
|
||||||
if t.fancy:
|
if t.fancy:
|
||||||
str_ = t.fancy
|
str_ = t.fancy
|
||||||
@ -280,7 +280,7 @@ class EZFIO_ocaml(object):
|
|||||||
def create_to_rst(self):
|
def create_to_rst(self):
|
||||||
'''
|
'''
|
||||||
You need to instantiate the EZFIO_ocaml with this keyword argument
|
You need to instantiate the EZFIO_ocaml with this keyword argument
|
||||||
l_provider = [provider_name, ...]
|
l_ezfio_name = [provider_name, ...]
|
||||||
l_type = [Named_tuple(fancy_type, ocaml_type, fortrant_type), ...]
|
l_type = [Named_tuple(fancy_type, ocaml_type, fortrant_type), ...]
|
||||||
|
|
||||||
Return the type template
|
Return the type template
|
||||||
@ -289,7 +289,7 @@ class EZFIO_ocaml(object):
|
|||||||
# C h e c k i n g #
|
# C h e c k i n g #
|
||||||
# ~#~#~#~#~#~#~#~ #
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
self.check_if_init(["l_provider", "l_type", "l_doc"],
|
self.check_if_init(["l_ezfio_name", "l_type", "l_doc"],
|
||||||
sys._getframe().f_code.co_name)
|
sys._getframe().f_code.co_name)
|
||||||
|
|
||||||
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~# #
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~# #
|
||||||
@ -300,7 +300,7 @@ class EZFIO_ocaml(object):
|
|||||||
'let to_rst b =',
|
'let to_rst b =',
|
||||||
' Printf.sprintf "']
|
' Printf.sprintf "']
|
||||||
|
|
||||||
for p, d in zip(self.l_provider, self.l_doc):
|
for p, d in zip(self.l_ezfio_name, self.l_doc):
|
||||||
|
|
||||||
l_template += ["{0} ::".format(d),
|
l_template += ["{0} ::".format(d),
|
||||||
"",
|
"",
|
||||||
@ -308,7 +308,7 @@ class EZFIO_ocaml(object):
|
|||||||
""]
|
""]
|
||||||
l_template += ['"']
|
l_template += ['"']
|
||||||
|
|
||||||
for p, t in zip(self.l_provider, self.l_type):
|
for p, t in zip(self.l_ezfio_name, self.l_type):
|
||||||
|
|
||||||
if t.fancy:
|
if t.fancy:
|
||||||
str_ = t.fancy
|
str_ = t.fancy
|
||||||
|
@ -8,6 +8,7 @@ Creates the provider of a variable that has to be
|
|||||||
fetched from the EZFIO file.
|
fetched from the EZFIO file.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
class EZFIO_Provider(object):
|
class EZFIO_Provider(object):
|
||||||
|
|
||||||
@ -27,9 +28,7 @@ BEGIN_PROVIDER [ %(type)s, %(name)s ]
|
|||||||
print *, '%(ezfio_dir)s/%(ezfio_name)s not found in EZFIO file'
|
print *, '%(ezfio_dir)s/%(ezfio_name)s not found in EZFIO file'
|
||||||
stop 1
|
stop 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
%(write)s
|
%(write)s
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
""".strip()
|
""".strip()
|
||||||
|
|
||||||
@ -58,9 +57,12 @@ END_PROVIDER
|
|||||||
output = self.output
|
output = self.output
|
||||||
name = self.name
|
name = self.name
|
||||||
|
|
||||||
l_write = [" call write_time(%(output)s)",
|
l_write = ["",
|
||||||
|
" call write_time(%(output)s)",
|
||||||
" call %(write)s(%(output)s, %(name)s, &",
|
" call %(write)s(%(output)s, %(name)s, &",
|
||||||
" '%(name)s')"]
|
" '%(name)s')",
|
||||||
|
""]
|
||||||
|
|
||||||
self.write = "\n".join(l_write) % locals()
|
self.write = "\n".join(l_write) % locals()
|
||||||
|
|
||||||
def set_type(self, t):
|
def set_type(self, t):
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
bielec_integrals
|
|
||||||
read_ao_integrals logical
|
|
||||||
read_mo_integrals logical
|
|
||||||
write_ao_integrals logical
|
|
||||||
write_mo_integrals logical
|
|
||||||
threshold_ao double precision
|
|
||||||
threshold_mo double precision
|
|
||||||
direct logical
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
BEGIN_SHELL [ /usr/bin/python ]
|
|
||||||
from ezfio_with_default import EZFIO_Provider
|
|
||||||
T = EZFIO_Provider()
|
|
||||||
T.set_type ( "logical" )
|
|
||||||
T.set_name ( "do_direct_integrals" )
|
|
||||||
T.set_doc ( "If true, compute integrals on the fly" )
|
|
||||||
T.set_ezfio_dir ( "bielec_integrals" )
|
|
||||||
T.set_ezfio_name( "direct" )
|
|
||||||
T.set_output ( "output_biints" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
T.set_type ( "logical" )
|
|
||||||
T.set_name ( "write_mo_integrals" )
|
|
||||||
T.set_doc ( "If true, write MO integrals in EZFIO" )
|
|
||||||
T.set_ezfio_name( "write_mo_integrals" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
T.set_name ( "write_ao_integrals" )
|
|
||||||
T.set_doc ( "If true, write AO integrals in EZFIO" )
|
|
||||||
T.set_ezfio_name( "write_ao_integrals" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
T.set_name ( "read_mo_integrals" )
|
|
||||||
T.set_doc ( "If true, read MO integrals in EZFIO" )
|
|
||||||
T.set_ezfio_name( "read_mo_integrals" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
T.set_name ( "read_ao_integrals" )
|
|
||||||
T.set_doc ( "If true, read AO integrals in EZFIO" )
|
|
||||||
T.set_ezfio_name( "read_ao_integrals" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
T.set_type ( "double precision" )
|
|
||||||
T.set_name ( "ao_integrals_threshold" )
|
|
||||||
T.set_doc ( "If <pq|rs> < ao_integrals_threshold, <pq|rs> = 0" )
|
|
||||||
T.set_ezfio_name( "threshold_ao" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
T.set_name ( "mo_integrals_threshold" )
|
|
||||||
T.set_doc ( "If <ij|kl> < mo_integrals_threshold, <ij|kl> = 0" )
|
|
||||||
T.set_ezfio_name( "threshold_mo" )
|
|
||||||
print T
|
|
||||||
|
|
||||||
END_SHELL
|
|
||||||
|
|
||||||
|
|
32
src/Bielec_integrals/EZFIO.cfg
Normal file
32
src/Bielec_integrals/EZFIO.cfg
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
[do_direct_integrals]
|
||||||
|
type: logical
|
||||||
|
doc: Compute integrals on the fly
|
||||||
|
interface: input
|
||||||
|
default: False
|
||||||
|
ezfio_name: direct
|
||||||
|
|
||||||
|
[disk_access_mo_integrals]
|
||||||
|
type: Disk_access
|
||||||
|
doc: Write, Read, None for MO integrals from disk (EZFIO folder)
|
||||||
|
interface: input
|
||||||
|
default: None
|
||||||
|
|
||||||
|
[disk_access_ao_integrals]
|
||||||
|
type: Disk_access
|
||||||
|
doc: Write or Read or None for AO integrals from disk (EZFIO folder)
|
||||||
|
interface: input
|
||||||
|
default: None
|
||||||
|
|
||||||
|
[ao_integrals_threshold]
|
||||||
|
type: Threshold
|
||||||
|
doc: If <pq|rs> < ao_integrals_threshold then <pq|rs> is null
|
||||||
|
interface: input
|
||||||
|
default: 1.e-15
|
||||||
|
ezfio_name: threshold_ao
|
||||||
|
|
||||||
|
[mo_integrals_threshold]
|
||||||
|
type: Threshold
|
||||||
|
doc: If <ij|kl> < ao_integrals_threshold then <pq|rs> is null
|
||||||
|
interface: input
|
||||||
|
default: 1.e-15
|
||||||
|
ezfio_name: threshold_mo
|
@ -319,13 +319,6 @@ subroutine compute_ao_bielec_integrals(j,k,l,sze,buffer_value)
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
|
BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
|
||||||
implicit none
|
implicit none
|
||||||
use map_module
|
use map_module
|
||||||
@ -356,7 +349,7 @@ BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
|
|||||||
integer :: load_ao_integrals
|
integer :: load_ao_integrals
|
||||||
print*,'Reading the AO integrals'
|
print*,'Reading the AO integrals'
|
||||||
if (load_ao_integrals(trim(ezfio_filename)//'/work/ao_integrals.bin') == 0) then
|
if (load_ao_integrals(trim(ezfio_filename)//'/work/ao_integrals.bin') == 0) then
|
||||||
write(output_BiInts,*) 'AO integrals provided'
|
write(output_bielec_integrals,*) 'AO integrals provided'
|
||||||
ao_bielec_integrals_in_map = .True.
|
ao_bielec_integrals_in_map = .True.
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@ -374,7 +367,7 @@ BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
|
|||||||
PROVIDE progress_bar
|
PROVIDE progress_bar
|
||||||
call omp_init_lock(lock)
|
call omp_init_lock(lock)
|
||||||
lmax = ao_num*(ao_num+1)/2
|
lmax = ao_num*(ao_num+1)/2
|
||||||
write(output_BiInts,*) 'Providing the AO integrals'
|
write(output_bielec_integrals,*) 'Providing the AO integrals'
|
||||||
call wall_time(wall_0)
|
call wall_time(wall_0)
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
call cpu_time(cpu_1)
|
call cpu_time(cpu_1)
|
||||||
@ -385,7 +378,7 @@ BEGIN_PROVIDER [ logical, ao_bielec_integrals_in_map ]
|
|||||||
!$OMP DEFAULT(NONE) &
|
!$OMP DEFAULT(NONE) &
|
||||||
!$OMP SHARED (ao_num, jl_pairs, ao_integrals_map,thresh, &
|
!$OMP SHARED (ao_num, jl_pairs, ao_integrals_map,thresh, &
|
||||||
!$OMP cpu_1,wall_1,lock, lmax,n_centers,ao_nucl, &
|
!$OMP cpu_1,wall_1,lock, lmax,n_centers,ao_nucl, &
|
||||||
!$OMP ao_overlap_abs,ao_overlap,output_BiInts,abort_here, &
|
!$OMP ao_overlap_abs,ao_overlap,output_bielec_integrals,abort_here, &
|
||||||
!$OMP wall_0,progress_bar,progress_value)
|
!$OMP wall_0,progress_bar,progress_value)
|
||||||
|
|
||||||
allocate(buffer_i(size_buffer))
|
allocate(buffer_i(size_buffer))
|
||||||
@ -452,7 +445,7 @@ IRP_ENDIF
|
|||||||
if (thread_num == 0) then
|
if (thread_num == 0) then
|
||||||
if (wall_2 - wall_0 > 1.d0) then
|
if (wall_2 - wall_0 > 1.d0) then
|
||||||
wall_0 = wall_2
|
wall_0 = wall_2
|
||||||
write(output_BiInts,*) 100.*float(kk)/float(lmax), '% in ', &
|
write(output_bielec_integrals,*) 100.*float(kk)/float(lmax), '% in ', &
|
||||||
wall_2-wall_1, 's', map_mb(ao_integrals_map) ,'MB'
|
wall_2-wall_1, 's', map_mb(ao_integrals_map) ,'MB'
|
||||||
progress_value = dble(map_mb(ao_integrals_map))
|
progress_value = dble(map_mb(ao_integrals_map))
|
||||||
endif
|
endif
|
||||||
@ -469,21 +462,21 @@ IRP_ENDIF
|
|||||||
stop 'Aborting in AO integrals calculation'
|
stop 'Aborting in AO integrals calculation'
|
||||||
endif
|
endif
|
||||||
IRP_IF COARRAY
|
IRP_IF COARRAY
|
||||||
write(output_BiInts,*) 'Communicating the map'
|
write(output_bielec_integrals,*) 'Communicating the map'
|
||||||
call communicate_ao_integrals()
|
call communicate_ao_integrals()
|
||||||
IRP_ENDIF COARRAY
|
IRP_ENDIF COARRAY
|
||||||
write(output_BiInts,*) 'Sorting the map'
|
write(output_bielec_integrals,*) 'Sorting the map'
|
||||||
call map_sort(ao_integrals_map)
|
call map_sort(ao_integrals_map)
|
||||||
call cpu_time(cpu_2)
|
call cpu_time(cpu_2)
|
||||||
call wall_time(wall_2)
|
call wall_time(wall_2)
|
||||||
integer(map_size_kind) :: get_ao_map_size, ao_map_size
|
integer(map_size_kind) :: get_ao_map_size, ao_map_size
|
||||||
ao_map_size = get_ao_map_size()
|
ao_map_size = get_ao_map_size()
|
||||||
|
|
||||||
write(output_BiInts,*) 'AO integrals provided:'
|
write(output_bielec_integrals,*) 'AO integrals provided:'
|
||||||
write(output_BiInts,*) ' Size of AO map : ', map_mb(ao_integrals_map) ,'MB'
|
write(output_bielec_integrals,*) ' Size of AO map : ', map_mb(ao_integrals_map) ,'MB'
|
||||||
write(output_BiInts,*) ' Number of AO integrals :', ao_map_size
|
write(output_bielec_integrals,*) ' Number of AO integrals :', ao_map_size
|
||||||
write(output_BiInts,*) ' cpu time :',cpu_2 - cpu_1, 's'
|
write(output_bielec_integrals,*) ' cpu time :',cpu_2 - cpu_1, 's'
|
||||||
write(output_BiInts,*) ' wall time :',wall_2 - wall_1, 's ( x ', (cpu_2-cpu_1)/(wall_2-wall_1+tiny(1.d0)), ' )'
|
write(output_bielec_integrals,*) ' wall time :',wall_2 - wall_1, 's ( x ', (cpu_2-cpu_1)/(wall_2-wall_1+tiny(1.d0)), ' )'
|
||||||
|
|
||||||
ao_bielec_integrals_in_map = .True.
|
ao_bielec_integrals_in_map = .True.
|
||||||
if (write_ao_integrals) then
|
if (write_ao_integrals) then
|
@ -13,7 +13,7 @@ BEGIN_PROVIDER [ type(map_type), ao_integrals_map ]
|
|||||||
call bielec_integrals_index(ao_num,ao_num,ao_num,ao_num,key_max)
|
call bielec_integrals_index(ao_num,ao_num,ao_num,ao_num,key_max)
|
||||||
sze = key_max
|
sze = key_max
|
||||||
call map_init(ao_integrals_map,sze)
|
call map_init(ao_integrals_map,sze)
|
||||||
write(output_BiInts,*) 'AO map initialized'
|
write(output_bielec_integrals,*) 'AO map initialized'
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
subroutine bielec_integrals_index(i,j,k,l,i1)
|
subroutine bielec_integrals_index(i,j,k,l,i1)
|
||||||
@ -244,7 +244,7 @@ BEGIN_PROVIDER [ type(map_type), mo_integrals_map ]
|
|||||||
call bielec_integrals_index(mo_tot_num,mo_tot_num,mo_tot_num,mo_tot_num,key_max)
|
call bielec_integrals_index(mo_tot_num,mo_tot_num,mo_tot_num,mo_tot_num,key_max)
|
||||||
sze = key_max
|
sze = key_max
|
||||||
call map_init(mo_integrals_map,sze)
|
call map_init(mo_integrals_map,sze)
|
||||||
write(output_BiInts,*) 'MO map initialized'
|
write(output_bielec_integrals,*) 'MO map initialized'
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
subroutine insert_into_ao_integrals_map(n_integrals, &
|
subroutine insert_into_ao_integrals_map(n_integrals, &
|
@ -31,7 +31,7 @@ BEGIN_PROVIDER [ logical, mo_bielec_integrals_in_map ]
|
|||||||
integer :: load_mo_integrals
|
integer :: load_mo_integrals
|
||||||
print*,'Reading the MO integrals'
|
print*,'Reading the MO integrals'
|
||||||
if (load_mo_integrals(trim(ezfio_filename)//'/work/mo_integrals.bin') == 0) then
|
if (load_mo_integrals(trim(ezfio_filename)//'/work/mo_integrals.bin') == 0) then
|
||||||
write(output_BiInts,*) 'MO integrals provided'
|
write(output_bielec_integrals,*) 'MO integrals provided'
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -84,8 +84,8 @@ subroutine add_integrals_to_map(mask_ijkl)
|
|||||||
call bitstring_to_list( mask_ijkl(1,4), list_ijkl(1,4), n_l, N_int )
|
call bitstring_to_list( mask_ijkl(1,4), list_ijkl(1,4), n_l, N_int )
|
||||||
|
|
||||||
size_buffer = min(ao_num*ao_num*ao_num,16000000)
|
size_buffer = min(ao_num*ao_num*ao_num,16000000)
|
||||||
write(output_BiInts,*) 'Providing the molecular integrals '
|
write(output_bielec_integrals,*) 'Providing the molecular integrals '
|
||||||
write(output_BiInts,*) 'Buffers : ', 8.*(mo_tot_num_align*(n_j)*(n_k+1) + mo_tot_num_align +&
|
write(output_bielec_integrals,*) 'Buffers : ', 8.*(mo_tot_num_align*(n_j)*(n_k+1) + mo_tot_num_align +&
|
||||||
ao_num+ao_num*ao_num+ size_buffer*3)/(1024*1024), 'MB / core'
|
ao_num+ao_num*ao_num+ size_buffer*3)/(1024*1024), 'MB / core'
|
||||||
|
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
@ -99,7 +99,7 @@ subroutine add_integrals_to_map(mask_ijkl)
|
|||||||
!$OMP wall_0,thread_num) &
|
!$OMP wall_0,thread_num) &
|
||||||
!$OMP DEFAULT(NONE) &
|
!$OMP DEFAULT(NONE) &
|
||||||
!$OMP SHARED(size_buffer,ao_num,mo_tot_num,n_i,n_j,n_k,n_l,mo_tot_num_align,&
|
!$OMP SHARED(size_buffer,ao_num,mo_tot_num,n_i,n_j,n_k,n_l,mo_tot_num_align,&
|
||||||
!$OMP mo_coef_transp,output_BiInts, &
|
!$OMP mo_coef_transp,output_bielec_integrals, &
|
||||||
!$OMP mo_coef_transp_is_built, list_ijkl, &
|
!$OMP mo_coef_transp_is_built, list_ijkl, &
|
||||||
!$OMP mo_coef_is_built, wall_1, abort_here, &
|
!$OMP mo_coef_is_built, wall_1, abort_here, &
|
||||||
!$OMP mo_coef,mo_integrals_threshold,ao_integrals_map,mo_integrals_map,progress_bar,progress_value)
|
!$OMP mo_coef,mo_integrals_threshold,ao_integrals_map,mo_integrals_map,progress_bar,progress_value)
|
||||||
@ -272,7 +272,7 @@ IRP_ENDIF
|
|||||||
if (thread_num == 0) then
|
if (thread_num == 0) then
|
||||||
if (wall_2 - wall_0 > 1.d0) then
|
if (wall_2 - wall_0 > 1.d0) then
|
||||||
wall_0 = wall_2
|
wall_0 = wall_2
|
||||||
write(output_BiInts,*) 100.*float(l1)/float(ao_num), '% in ', &
|
write(output_bielec_integrals,*) 100.*float(l1)/float(ao_num), '% in ', &
|
||||||
wall_2-wall_1, 's', map_mb(mo_integrals_map) ,'MB'
|
wall_2-wall_1, 's', map_mb(mo_integrals_map) ,'MB'
|
||||||
progress_value = dble(map_mb(mo_integrals_map))
|
progress_value = dble(map_mb(mo_integrals_map))
|
||||||
|
|
||||||
@ -291,7 +291,7 @@ IRP_ENDIF
|
|||||||
stop 'Aborting in MO integrals calculation'
|
stop 'Aborting in MO integrals calculation'
|
||||||
endif
|
endif
|
||||||
IRP_IF COARRAY
|
IRP_IF COARRAY
|
||||||
write(output_BiInts,*) 'Communicating the map'
|
write(output_bielec_integrals,*) 'Communicating the map'
|
||||||
call communicate_mo_integrals()
|
call communicate_mo_integrals()
|
||||||
IRP_ENDIF
|
IRP_ENDIF
|
||||||
call map_unique(mo_integrals_map)
|
call map_unique(mo_integrals_map)
|
||||||
@ -304,11 +304,11 @@ IRP_ENDIF
|
|||||||
deallocate(list_ijkl)
|
deallocate(list_ijkl)
|
||||||
|
|
||||||
|
|
||||||
write(output_BiInts,*)'Molecular integrals provided:'
|
write(output_bielec_integrals,*)'Molecular integrals provided:'
|
||||||
write(output_BiInts,*)' Size of MO map ', map_mb(mo_integrals_map) ,'MB'
|
write(output_bielec_integrals,*)' Size of MO map ', map_mb(mo_integrals_map) ,'MB'
|
||||||
write(output_BiInts,*)' Number of MO integrals: ', mo_map_size
|
write(output_bielec_integrals,*)' Number of MO integrals: ', mo_map_size
|
||||||
write(output_BiInts,*)' cpu time :',cpu_2 - cpu_1, 's'
|
write(output_bielec_integrals,*)' cpu time :',cpu_2 - cpu_1, 's'
|
||||||
write(output_BiInts,*)' wall time :',wall_2 - wall_1, 's ( x ', (cpu_2-cpu_1)/(wall_2-wall_1), ')'
|
write(output_bielec_integrals,*)' wall time :',wall_2 - wall_1, 's ( x ', (cpu_2-cpu_1)/(wall_2-wall_1), ')'
|
||||||
|
|
||||||
if (write_mo_integrals) then
|
if (write_mo_integrals) then
|
||||||
call dump_mo_integrals(trim(ezfio_filename)//'/work/mo_integrals.bin')
|
call dump_mo_integrals(trim(ezfio_filename)//'/work/mo_integrals.bin')
|
41
src/Bielec_integrals/read_write.irp.f
Normal file
41
src/Bielec_integrals/read_write.irp.f
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
BEGIN_PROVIDER [ logical, read_ao_integrals ]
|
||||||
|
&BEGIN_PROVIDER [ logical, read_mo_integrals ]
|
||||||
|
&BEGIN_PROVIDER [ logical, write_ao_integrals ]
|
||||||
|
&BEGIN_PROVIDER [ logical, write_mo_integrals ]
|
||||||
|
|
||||||
|
BEGIN_DOC
|
||||||
|
! One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals
|
||||||
|
END_DOC
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
if (disk_access_ao_integrals.EQ.'Read') then
|
||||||
|
read_ao_integrals = .True.
|
||||||
|
write_ao_integrals = .False.
|
||||||
|
|
||||||
|
else if (disk_access_ao_integrals.EQ.'Write') then
|
||||||
|
read_ao_integrals = .False.
|
||||||
|
write_ao_integrals = .True.
|
||||||
|
|
||||||
|
else if (disk_access_ao_integrals.EQ.'None') then
|
||||||
|
read_ao_integrals = .False.
|
||||||
|
write_ao_integrals = .False.
|
||||||
|
|
||||||
|
else if (disk_access_mo_integrals.EQ.'Read') then
|
||||||
|
read_mo_integrals = .True.
|
||||||
|
write_mo_integrals = .False.
|
||||||
|
|
||||||
|
else if (disk_access_mo_integrals.EQ.'Write') then
|
||||||
|
read_mo_integrals = .False.
|
||||||
|
write_mo_integrals = .True.
|
||||||
|
|
||||||
|
else if (disk_access_mo_integrals.EQ.'None') then
|
||||||
|
read_mo_integrals = .False.
|
||||||
|
write_mo_integrals = .False.
|
||||||
|
|
||||||
|
else
|
||||||
|
print *, 'bielec_integrals/disk_acces not of a the good type'
|
||||||
|
stop "1"
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
END_PROVIDER
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files Generators_CAS Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Generators_CAS Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts 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 Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask CISD Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask CISD Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts 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 Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -68,6 +68,7 @@ program cisd_sc2_selected
|
|||||||
touch N_det psi_det psi_coef davidson_threshold davidson_criterion
|
touch N_det psi_det psi_coef davidson_threshold davidson_criterion
|
||||||
call diagonalize_CI_SC2
|
call diagonalize_CI_SC2
|
||||||
pt2 = 0.d0
|
pt2 = 0.d0
|
||||||
|
|
||||||
if(do_pt2_end)then
|
if(do_pt2_end)then
|
||||||
threshold_selectors = 1.d0
|
threshold_selectors = 1.d0
|
||||||
call H_apply_PT2(pt2, norm_pert, H_pert_diag, N_st)
|
call H_apply_PT2(pt2, norm_pert, H_pert_diag, N_st)
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask CISD Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask CISD Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files Generators_CAS Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Generators_CAS Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
AOs BiInts Bitmask Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
||||||
|
@ -1 +1 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files Generators_full Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Generators_full Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full Utils
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Utils
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
||||||
|
@ -1 +1 @@
|
|||||||
AOs BiInts Bitmask Electrons Ezfio_files MonoInts MOGuess MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Electrons Ezfio_files MonoInts MOGuess MOs Nuclei Output Utils
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Perturbation Properties Selectors_full SingleRefMethod Utils
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
AOs BiInts 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_selected DDCI_selected
|
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_selected DDCI_selected
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Properties Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Properties Utils
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files Hartree_Fock MOGuess MonoInts MOs Nuclei Output Utils
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
AOs BiInts Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
AOs Bielec_integrals Bitmask Dets Electrons Ezfio_files MonoInts MOs Nuclei Output Utils
|
||||||
|
@ -17,7 +17,7 @@ from collections import defaultdict
|
|||||||
# O p t #
|
# O p t #
|
||||||
# ~#~#~ #
|
# ~#~#~ #
|
||||||
|
|
||||||
precision = 1.e-8
|
precision = 5.e-8
|
||||||
|
|
||||||
# A test get a geo file and a basis file.
|
# A test get a geo file and a basis file.
|
||||||
# A global dict containt the result for this test
|
# A global dict containt the result for this test
|
||||||
@ -31,7 +31,10 @@ precision = 1.e-8
|
|||||||
global has_hf_alredy
|
global has_hf_alredy
|
||||||
has_hf_alredy = False
|
has_hf_alredy = False
|
||||||
|
|
||||||
def init_folder(geo, basis, mult=1):
|
global filename_check
|
||||||
|
|
||||||
|
|
||||||
|
def init_folder(geo, basis, mult=1, ezfio_name=None):
|
||||||
'''
|
'''
|
||||||
Take a geo in arg (aka a existing geo.xyz in test/)
|
Take a geo in arg (aka a existing geo.xyz in test/)
|
||||||
And create the geo.ezfio with the adeguate basis and multipliciti
|
And create the geo.ezfio with the adeguate basis and multipliciti
|
||||||
@ -41,18 +44,112 @@ def init_folder(geo, basis, mult=1):
|
|||||||
cmd = "cp {0}/tests/{1}.xyz .".format(qpackage_root, geo)
|
cmd = "cp {0}/tests/{1}.xyz .".format(qpackage_root, geo)
|
||||||
subprocess.check_call([cmd], shell=True)
|
subprocess.check_call([cmd], shell=True)
|
||||||
|
|
||||||
cmd = "qp_create_ezfio_from_xyz -b {0} -m {1} {2}.xyz".format(basis,
|
if not ezfio_name:
|
||||||
mult,
|
ezfio_name = geo
|
||||||
geo)
|
|
||||||
subprocess.check_call([cmd], shell=True)
|
cmd = "qp_create_ezfio_from_xyz -b {0} -m {1} {2}.xyz -o {3}.ezfio"
|
||||||
|
subprocess.check_call([cmd.format(basis, mult, geo, ezfio_name)],
|
||||||
|
shell=True)
|
||||||
|
|
||||||
|
|
||||||
def get_error_message(l_exepected, l_cur):
|
def get_error_message(l_exepected, l_cur):
|
||||||
l_msg = ["Need {0} get {1}".format(i,j) for i,j in zip(l_exepected,l_cur)]
|
l_msg = ["Need {0} get {1} error is {2}".format(i, j, abs(i - j))
|
||||||
|
for i, j in zip(l_exepected, l_cur)]
|
||||||
return "\n".join(l_msg)
|
return "\n".join(l_msg)
|
||||||
|
|
||||||
|
|
||||||
def run_hf(geo, basis):
|
# _
|
||||||
|
# / |_ _ _ | o ._ ._ _|_
|
||||||
|
# \_ | | (/_ (_ |< | | | |_) |_| |_
|
||||||
|
# |
|
||||||
|
|
||||||
|
def check_disk_acess(geo, basis, mult=1):
|
||||||
|
|
||||||
|
import uuid
|
||||||
|
filename = str(uuid.uuid4())
|
||||||
|
|
||||||
|
# ~#~#~#~ #
|
||||||
|
# I n i t #
|
||||||
|
# ~#~#~#~ #
|
||||||
|
|
||||||
|
init_folder(geo, basis, mult, ezfio_name=filename)
|
||||||
|
ezfio.set_file("{0}.ezfio".format(filename))
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
||||||
|
# S e t _ p a r a m e t e r #
|
||||||
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
# Test 1
|
||||||
|
ezfio.bielec_integrals_disk_access_ao_integrals = "Write"
|
||||||
|
cmd = "qp_edit -c {0}.ezfio".format(filename)
|
||||||
|
subprocess.check_call([cmd], shell=True)
|
||||||
|
|
||||||
|
# Test 2
|
||||||
|
ezfio.bielec_integrals_disk_access_ao_integrals = "IculeAcess"
|
||||||
|
cmd = "qp_edit -c {0}.ezfio".format(filename)
|
||||||
|
|
||||||
|
try:
|
||||||
|
subprocess.check_call([cmd], shell=True)
|
||||||
|
return_code = False
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
return_code = True
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
# F i n a l i z e #
|
||||||
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
if return_code:
|
||||||
|
subprocess.call(["rm -R {0}.ezfio".format(filename)], shell=True)
|
||||||
|
return return_code
|
||||||
|
|
||||||
|
|
||||||
|
def check_mo_guess(geo, basis, mult=1):
|
||||||
|
|
||||||
|
import uuid
|
||||||
|
filename = str(uuid.uuid4())
|
||||||
|
|
||||||
|
# ~#~#~#~ #
|
||||||
|
# I n i t #
|
||||||
|
# ~#~#~#~ #
|
||||||
|
|
||||||
|
init_folder(geo, basis, mult, ezfio_name=filename)
|
||||||
|
ezfio.set_file("{0}.ezfio".format(filename))
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
||||||
|
# S e t _ p a r a m e t e r #
|
||||||
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
# Test 1
|
||||||
|
ezfio.hartree_fock_mo_guess_type = "Huckel"
|
||||||
|
cmd = "qp_edit -c {0}.ezfio".format(filename)
|
||||||
|
subprocess.check_call([cmd], shell=True)
|
||||||
|
|
||||||
|
# Test 2
|
||||||
|
ezfio.hartree_fock_mo_guess_type = "IculeGuess"
|
||||||
|
cmd = "qp_edit -c {0}.ezfio".format(filename)
|
||||||
|
|
||||||
|
try:
|
||||||
|
subprocess.check_call([cmd], shell=True)
|
||||||
|
return_code = False
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
return_code = True
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
# F i n a l i z e #
|
||||||
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
if return_code:
|
||||||
|
subprocess.call(["rm -R {0}.ezfio".format(filename)], shell=True)
|
||||||
|
return return_code
|
||||||
|
|
||||||
|
|
||||||
|
# _
|
||||||
|
# / |_ _ _ | _. | _ _
|
||||||
|
# \_ | | (/_ (_ |< \/ (_| | |_| (/_ _>
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
def run_hf(geo, basis, mult=1):
|
||||||
"""
|
"""
|
||||||
Run a simle by default hf
|
Run a simle by default hf
|
||||||
EZFIO path = geo.ezfio
|
EZFIO path = geo.ezfio
|
||||||
@ -76,12 +173,18 @@ def run_hf(geo, basis):
|
|||||||
# I n i t #
|
# I n i t #
|
||||||
# ~#~#~#~ #
|
# ~#~#~#~ #
|
||||||
|
|
||||||
init_folder(geo, basis)
|
init_folder(geo, basis, mult)
|
||||||
ezfio.set_file("{0}.ezfio".format(geo))
|
ezfio.set_file("{0}.ezfio".format(geo))
|
||||||
|
|
||||||
# ~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
||||||
# S e t _ p a r a m e t e r #
|
# S e t _ p a r a m e t e r #
|
||||||
# ~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
# ~#~#~#~#~#~#~#~#~#~#~#~#~ #
|
||||||
|
ezfio.bielec_integrals_direct = False
|
||||||
|
ezfio.bielec_integrals_threshold_ao = 1.e-15
|
||||||
|
ezfio.bielec_integrals_disk_access_ao_integrals = "None"
|
||||||
|
|
||||||
|
ezfio.bielec_integrals_threshold_mo = 1.e-15
|
||||||
|
ezfio.bielec_integrals_disk_access_mo_integrals = "None"
|
||||||
|
|
||||||
ezfio.hartree_fock_mo_guess_type = "Huckel"
|
ezfio.hartree_fock_mo_guess_type = "Huckel"
|
||||||
ezfio.hartree_fock_thresh_scf = 1.e-10
|
ezfio.hartree_fock_thresh_scf = 1.e-10
|
||||||
@ -164,18 +267,43 @@ def run_full_ci_10k_pt2_end(geo, basis):
|
|||||||
[cur_var, cur_pt2]))
|
[cur_var, cur_pt2]))
|
||||||
|
|
||||||
|
|
||||||
def run_big_test(geo, basis):
|
def hf_then_10k_test(geo, basis):
|
||||||
if not has_hf_alredy:
|
if not has_hf_alredy:
|
||||||
run_hf(geo, basis)
|
run_hf(geo, basis)
|
||||||
|
|
||||||
|
try:
|
||||||
run_full_ci_10k_pt2_end(geo, basis)
|
run_full_ci_10k_pt2_end(geo, basis)
|
||||||
return True
|
return_code = True
|
||||||
|
except:
|
||||||
|
return_code = False
|
||||||
|
|
||||||
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
# F i n a l i z e #
|
||||||
|
# ~#~#~#~#~#~#~#~ #
|
||||||
|
|
||||||
|
if return_code:
|
||||||
|
subprocess.call(["rm -R {0}.ezfio".format(geo)], shell=True)
|
||||||
|
return return_code
|
||||||
|
|
||||||
|
|
||||||
class SimplisticTest(unittest.TestCase):
|
# ___
|
||||||
|
# | _ _ _|_
|
||||||
|
# | (/_ _> |_
|
||||||
|
#
|
||||||
|
class ValueTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_full_ci_10k_pt2_end(self):
|
def test_full_ci_10k_pt2_end(self):
|
||||||
self.assertTrue(run_big_test("methane", "sto-3g"))
|
self.assertTrue(hf_then_10k_test("methane", "sto-3g"))
|
||||||
|
|
||||||
|
|
||||||
|
class InputTest(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_check_disk_acess(self):
|
||||||
|
self.assertTrue(check_disk_acess("methane", "un-ccemd-ref"))
|
||||||
|
|
||||||
|
def test_check_mo_guess(self):
|
||||||
|
self.assertTrue(check_mo_guess("methane", "maug-cc-pVDZ"))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user