10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-06-13 08:45:26 +02:00

Suport pseudo in qp_create

This commit is contained in:
Thomas Applencourt 2015-05-02 14:50:23 +02:00
parent b1ab3c5ce4
commit cdc9f46428
5 changed files with 43 additions and 32 deletions

View File

@ -5,18 +5,20 @@ open Core.Std;;
let spec =
let open Command.Spec in
empty
+> flag "o" (optional string)
+> flag "o" (optional string)
~doc:"file Name of the created EZFIO file."
+> flag "b" (required string)
~doc:"string Name of basis set."
+> flag "c" (optional_with_default 0 int)
~doc:"int Total charge of the molecule. Default is 0."
+> flag "m" (optional_with_default 1 int)
+> flag "m" (optional_with_default 1 int)
~doc:"int Spin multiplicity (2S+1) of the molecule. Default is 1."
+> flag "p" (optional_with_default 1 int)
~doc:"Using pseudo potentiel or not"
+> anon ("xyz_file" %: string)
;;
let run ?o b c m xyz_file =
let run ?o b c m p xyz_file =
(* Read molecule *)
let molecule =
@ -60,8 +62,12 @@ let run ?o b c m xyz_file =
| None -> (* Principal basis *)
let basis = elem_and_basis_name in
let command =
if (p = 0) then
Qpackage.root ^ "/scripts/get_basis.sh \"" ^ temp_filename
^ "\" \"" ^ basis ^"\""
else
Qpackage.root ^ "/scripts/get_basis.sh \"" ^ temp_filename
^ "\" \"" ^ basis ^"\" pseudo"
in
begin
let filename =
@ -246,7 +252,10 @@ let run ?o b c m xyz_file =
Ezfio.set_ao_basis_ao_expo(Ezfio.ezfio_array_of_list
~rank:2 ~dim:[| ao_num ; ao_prim_num_max |] ~data:ao_expo) ;
(* Doesn't work... *)
(* if p = 1 then Qpackage.root ^ "scripts/pseudo/put_pseudo_in_ezfio.py" ezfio_file.to_string; *)
match Input.Ao_basis.read () with
| None -> failwith "Error in basis"
| Some x -> Input.Ao_basis.write x
@ -266,8 +275,8 @@ elements can be defined as follows:
")
spec
(fun o b c m xyz_file () ->
run ?o b c m xyz_file )
(fun o b c m p xyz_file () ->
run ?o b c m p xyz_file )
;;
let () =

View File

@ -50,6 +50,6 @@ if [[ -z $pseudo ]]
then
${EMSL_API_ROOT}/EMSL_api.py get_basis_data --treat_l --save --path="${tmpfile}" --basis="${basis}"
else
${EMSL_API_ROOT}/EMSL_api.py get_basis_data --treat_l --save --path="${tmpfile}" --basis="${basis}" --db_path="${EMSL_API_ROOT}/db/Pseudo.db"
${EMSL_API_ROOT}/EMSL_api.py get_basis_data --save --path="${tmpfile}" --basis="${basis}" --db_path="${EMSL_API_ROOT}/db/Pseudo.db"
fi

View File

@ -311,11 +311,11 @@ if __name__ == "__main__":
# ~#~#~#~#~ #
klocmax = max([len(i) for i in v_k])
ezfio.pseudo_klocmax = klocmax
ezfio.pseudo_intergrals_klocmax = klocmax
ezfio.pseudo_v_k = zip(*v_k)
ezfio.pseudo_n_k = zip(*n_k)
ezfio.pseudo_dz_k = zip(*dz_k)
ezfio.pseudo_intergrals_v_k = zip(*v_k)
ezfio.pseudo_intergrals_n_k = zip(*n_k)
ezfio.pseudo_intergrals_dz_k = zip(*dz_k)
# ~#~#~#~#~#~#~#~#~ #
# N o n _ L o c a l #
@ -324,13 +324,15 @@ if __name__ == "__main__":
lmax = max([len(i) for i in v_kl])
kmax = max([len(sublist) for list_ in v_kl for sublist in list_])
ezfio.pseudo_lmaxpo = lmax
ezfio.pseudo_kmax = kmax
ezfio.pseudo_intergrals_lmaxpo = lmax
ezfio.pseudo_intergrals_kmax = kmax
v_kl = make_it_square(v_kl, [lmax, kmax])
n_kl = make_it_square(n_kl, [lmax, kmax], int)
dz_kl = make_it_square(dz_kl, [lmax, kmax])
ezfio.pseudo_v_kl = zip(*v_kl)
ezfio.pseudo_n_kl = zip(*n_kl)
ezfio.pseudo_dz_kl = zip(*dz_kl)
ezfio.pseudo_intergrals_v_kl = zip(*v_kl)
ezfio.pseudo_intergrals_n_kl = zip(*n_kl)
ezfio.pseudo_intergrals_dz_kl = zip(*dz_kl)
ezfio.pseudo_intergrals_do_pseudo = True

View File

@ -25,13 +25,13 @@
integer, allocatable :: n_k(:,:)
double precision, allocatable :: v_k(:,:), dz_k(:,:)
call ezfio_get_pseudo_klocmax(klocmax)
call ezfio_get_pseudo_integrals_klocmax(klocmax)
allocate(n_k(nucl_num,klocmax),v_k(nucl_num,klocmax), dz_k(nucl_num,klocmax))
call ezfio_get_pseudo_v_k(v_k)
call ezfio_get_pseudo_n_k(n_k)
call ezfio_get_pseudo_dz_k(dz_k)
call ezfio_get_pseudo_integrals_v_k(v_k)
call ezfio_get_pseudo_integrals_n_k(n_k)
call ezfio_get_pseudo_integrals_dz_k(dz_k)
!! Dump array
integer, allocatable :: n_k_dump(:)
@ -50,16 +50,16 @@
integer, allocatable :: n_kl(:,:,:)
double precision, allocatable :: v_kl(:,:,:), dz_kl(:,:,:)
call ezfio_get_pseudo_lmaxpo(lmax)
call ezfio_get_pseudo_kmax(kmax)
call ezfio_get_pseudo_integrals_lmaxpo(lmax)
call ezfio_get_pseudo_integrals_kmax(kmax)
!lmax plus one -> lmax
lmax = lmax - 1
allocate(n_kl(nucl_num,kmax,0:lmax), v_kl(nucl_num,kmax,0:lmax), dz_kl(nucl_num,kmax,0:lmax))
call ezfio_get_pseudo_n_kl(n_kl)
call ezfio_get_pseudo_v_kl(v_kl)
call ezfio_get_pseudo_dz_kl(dz_kl)
call ezfio_get_pseudo_integrals_n_kl(n_kl)
call ezfio_get_pseudo_integrals_v_kl(v_kl)
call ezfio_get_pseudo_integrals_dz_kl(dz_kl)
!! Dump array

View File

@ -1,10 +1,10 @@
pseudo
pseudo_integrals
klocmax integer
v_k double precision (nuclei_nucl_num,pseudo_klocmax)
n_k integer (nuclei_nucl_num,pseudo_klocmax)
dz_k double precision (nuclei_nucl_num,pseudo_klocmax)
v_k double precision (nuclei_nucl_num,pseudo_integrals_klocmax)
n_k integer (nuclei_nucl_num,pseudo_integrals_klocmax)
dz_k double precision (nuclei_nucl_num,pseudo_integrals_klocmax)
lmaxpo integer
kmax integer
v_kl double precision (nuclei_nucl_num,pseudo_kmax,pseudo_lmaxpo)
n_kl integer (nuclei_nucl_num,pseudo_kmax,pseudo_lmaxpo)
dz_kl double precision (nuclei_nucl_num,pseudo_kmax,pseudo_lmaxpo)
v_kl double precision (nuclei_nucl_num,pseudo_integrals_kmax,pseudo_integrals_lmaxpo)
n_kl integer (nuclei_nucl_num,pseudo_integrals_kmax,pseudo_integrals_lmaxpo)
dz_kl double precision (nuclei_nucl_num,pseudo_integrals_kmax,pseudo_integrals_lmaxpo)