Some modif for the interface with qmcpack

This commit is contained in:
TApplencourt 2016-01-14 15:18:31 +01:00
parent d8fa797cf8
commit 1969a463fe
7 changed files with 68 additions and 33 deletions

2
ocaml/.gitignore vendored
View File

@ -16,6 +16,8 @@ qp_edit
qp_edit.ml
qp_edit.native
qp_print
qp_print_basis
qp_print_basis.native
qp_print.native
qp_run
qp_run.native

View File

@ -133,10 +133,6 @@ let run ?o b c d m p xyz_file =
let fetch_channel basis =
let command =
if (p) then
Qpackage.root ^ "/scripts/get_basis.sh \"" ^ temp_filename
^ "." ^ basis ^ "\" \"" ^ basis ^"\" pseudo"
else
Qpackage.root ^ "/scripts/get_basis.sh \"" ^ temp_filename
^ "." ^ basis ^ "\" \"" ^ basis ^"\""
in
@ -344,7 +340,7 @@ let run ?o b c d m p xyz_file =
(* Doesn't work... *)
if (p) then
begin
Qpackage.root ^ "/scripts/pseudo/put_pseudo_in_ezfio.py " ^ ezfio_file
Qpackage.root ^ "/scripts/pseudo/put_pseudo_in_ezfio.py " ^ ezfio_file ^ " " ^ " BFD-Pseudo"
|> Sys.command_exn
end;

View File

@ -1,7 +1,7 @@
open Core.Std
open Qptypes
let () =
let basis ()=
let ezfio_filename =
Sys.argv.(1)
in
@ -16,4 +16,24 @@ let () =
Input.Ao_basis.to_rst basis
|> Rst_string.to_string
|> print_endline
;;
let mo ()=
let ezfio_filename =
Sys.argv.(1)
in
if (not (Sys.file_exists_exn ezfio_filename)) then
failwith "Error reading EZFIO file";
Ezfio.set_file ezfio_filename;
let mo_coef =
match Input.Mo_basis.read () with
| Some mo_coef -> mo_coef
| _ -> failwith "Error reading the mo set"
in
Input.Mo_basis.to_rst mo_coef
|> Rst_string.to_string
|> print_endline
;;
basis ();;
mo ();;

View File

@ -46,15 +46,4 @@ then
exit 1
fi
pseudo="$1"
shift
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 --save --path="${tmpfile}" --basis="${basis}" --db_path="${EMSL_API_ROOT}/db/Pseudo.db"
# echo ${EMSL_API_ROOT}/EMSL_api.py get_basis_data --save --path="${tmpfile}" --basis="${basis}" --db_path="${EMSL_API_ROOT}/db/Pseudo.db" 1>&2
# echo $PWD/BASIS
fi
${EMSL_API_ROOT}/EMSL_api.py get_basis_data --treat_l --save --path="${tmpfile}" --basis="${basis}"

View File

@ -4,7 +4,7 @@
Create the pseudo potential for a given atom
Usage:
put_pseudo_in_ezfio.py <ezfio_path>
put_pseudo_in_ezfio.py <ezfio_path> <pseudo_name> [<db_path>]
Help:
atom is the Abreviation of the atom
@ -28,7 +28,7 @@ import re
p = re.compile(ur'\|(\d+)><\d+\|')
def get_pseudo_str(l_atom):
def get_pseudo_str(db_path,pseudo_name,l_atom):
"""
Run EMSL_local for getting the str of the pseudo potential
@ -53,7 +53,6 @@ def get_pseudo_str(l_atom):
EMSL_root = "{0}/install/emsl/".format(qpackage_root)
EMSL_path = "{0}/EMSL_api.py".format(EMSL_root)
db_path = "{0}/db/Pseudo.db".format(EMSL_root)
str_ = ""
@ -64,7 +63,7 @@ def get_pseudo_str(l_atom):
l_cmd_head = [EMSL_path, "get_basis_data",
"--db_path", db_path,
"--basis", "BFD-Pseudo"]
"--basis", pseudo_name]
process = Popen(l_cmd_head + l_cmd_atom, stdout=PIPE, stderr=PIPE)
@ -180,19 +179,22 @@ def get_zeff_alpha_beta(str_ele):
#
from elts_num_ele import name_to_elec
from math import ceil, floor
z = name_to_elec[name]
z_eff = z - z_remove
alpha = (z_remove / 2)
beta = (z_remove / 2)
alpha = int(ceil(z_remove / 2.))
beta = int(floor(z_remove / 2.))
# Remove more alpha, than beta
# _
# |_) _ _|_ ._ ._
# | \ (/_ |_ |_| | | |
#
return [z_eff, alpha, beta]
return [z_remove, z_eff, alpha, beta]
def add_zero(array, size, type):
@ -224,6 +226,12 @@ def make_it_square(matrix, dim, type=float):
return matrix
def full_path(path):
path = os.path.expanduser(path)
path = os.path.expandvars(path)
path = os.path.abspath(path)
return path
if __name__ == "__main__":
arguments = docopt(__doc__)
# ___
@ -235,19 +243,22 @@ if __name__ == "__main__":
# E Z F I O #
# ~#~#~#~#~ #
ezfio_path = arguments["<ezfio_path>"]
ezfio_path = os.path.expanduser(ezfio_path)
ezfio_path = os.path.expandvars(ezfio_path)
ezfio_path = os.path.abspath(ezfio_path)
ezfio_path = full_path(arguments["<ezfio_path>"])
ezfio.set_file("{0}".format(ezfio_path))
# ~#~#~#~#~#~#~#~#~#~#~ #
# P s e u d o _ d a t a #
# ~#~#~#~#~#~#~#~#~#~#~ #
if arguments["<db_path>"]:
db_path = full_path(arguments["<db_path>"])
else:
db_path= full_path("{0}/data/BFD-Pseudo.db".format(qpackage_root))
pseudo_name = arguments["<pseudo_name>"]
l_ele = ezfio.get_nuclei_nucl_label()
str_ = get_pseudo_str(l_ele)
str_ = get_pseudo_str(db_path,pseudo_name,l_ele)
# _
# |_) _. ._ _ _
@ -257,7 +268,7 @@ if __name__ == "__main__":
l_str_ele = [str_ele for str_ele in str_.split("Element Symbol: ")
if str_ele]
for i in "l_zeff v_k n_k dz_k v_kl n_kl dz_kl".split():
for i in "l_zeff l_remove v_k n_k dz_k v_kl n_kl dz_kl".split():
exec("{0} = []".format(i))
alpha_tot = 0
@ -296,11 +307,13 @@ if __name__ == "__main__":
# Z _ e f f , a l p h a / b e t a _ e l e c #
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~ #
zeff, alpha, beta = get_zeff_alpha_beta(str_ele)
zremove, zeff, alpha, beta = get_zeff_alpha_beta(str_ele)
alpha_tot += alpha
beta_tot += beta
l_zeff.append(zeff)
l_remove.append(zremove)
# _
# /\ _| _| _|_ _ _ _ _|_ o _
# /--\ (_| (_| |_ (_) (/_ /_ | | (_)
@ -311,6 +324,7 @@ if __name__ == "__main__":
# ~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~ #
ezfio.nuclei_nucl_charge = l_zeff
ezfio.pseudo_nucl_charge_remove = l_remove
alpha_tot = ezfio.get_electrons_elec_alpha_num() - alpha_tot
beta_tot = ezfio.get_electrons_elec_beta_num() - beta_tot

View File

@ -1,3 +1,10 @@
[nucl_charge_remove]
doc: Nuclear charges removed
type:double precision
size: (nuclei.nucl_num)
interface: ezfio, provider
[pseudo_klocmax]
doc: test
type:integer

View File

@ -7,6 +7,9 @@
# So we strip the "-", is the abs value of the poor
function eq() {
awk -v n1=${1#-} -v n2=${2#-} -v p=$3 'BEGIN{ if ((n1-n2)^2 < p^2) exit 0; exit 1}'
if [ $? -ne 0 ]; then
echo $1 $2
fi
}
#: "${QP_ROOT?Pls set your quantum_package.rc}"
@ -44,8 +47,10 @@ cd ${TEST_DIR}
qp_run full_ci HBO.ezfio
energy="$(ezfio get full_ci energy)"
eq $energy -98.9649618899175 1E-2
# -98.964541775171284
energy_pt2="$(ezfio get full_ci energy_pt2)"
eq $energy_pt2 -98.966228232164 1E-5
#  -98.966209348290292
}
@test "cas_sd_selected HBO STO-3G" {
@ -58,6 +63,7 @@ cd ${TEST_DIR}
# Check energy
energy="$(ezfio get cas_sd energy)"
eq $energy -98.9646946027433 1E-5
#  -98.964352450115271
}
@test "mrcc_cassd HBO STO-3G" {
@ -69,6 +75,7 @@ cd ${TEST_DIR}
# Check energy
energy="$(ezfio get mrcc_cassd energy)"
eq $energy -98.9653606184686 1E-5
# -98.96509060765523
}
@test "script conversion HBO.out" {