1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2025-01-05 11:00:36 +01:00

Ported bench_mos code to Python

This commit is contained in:
q-posev 2022-05-02 17:52:11 +02:00
parent b8c12c4bc7
commit 111af81a1d
2 changed files with 45 additions and 2 deletions

View File

@ -3,6 +3,8 @@
set -e set -e
set -x set -x
cp ../include/qmckl.h .
# check if qmckl header exists # check if qmckl header exists
if [[ ! -f 'qmckl.h' ]]; then if [[ ! -f 'qmckl.h' ]]; then
echo "qmckl.h NOT FOUND" echo "qmckl.h NOT FOUND"

View File

@ -1,11 +1,52 @@
import pyqmckl as pq """
This is the test of the Python API of the QMCkl library.
It is the `bench_mos.c` C code adapted from the `qmckl_bench`
repo and translated into Python with some modifications.
"""
from data.data import coord
from os.path import join from os.path import join
import time
import pyqmckl as pq
from data.data import coord
walk_num = 100
elec_num = 158
ITERMAX = 10
ctx = pq.qmckl_context_create() ctx = pq.qmckl_context_create()
fname = join('data', 'Alz_small.h5') fname = join('data', 'Alz_small.h5')
rc = pq.qmckl_trexio_read(ctx, fname) rc = pq.qmckl_trexio_read(ctx, fname)
assert rc==0
print(pq.qmckl_string_of_error(rc)) print(pq.qmckl_string_of_error(rc))
rc = pq.qmckl_set_electron_walk_num(ctx, walk_num)
assert rc==0
rc, mo_num = pq.qmckl_get_mo_basis_mo_num(ctx)
assert rc==0
rc = pq.qmckl_set_electron_coord(ctx, 'T', coord)
assert rc==0
size_max = 5*walk_num*elec_num*mo_num
rc, mo_vgl = pq.qmckl_get_mo_basis_mo_vgl(ctx, size_max)
assert rc==0
start = time.clock_gettime_ns(time.CLOCK_REALTIME)
for _ in range(ITERMAX):
rc, mo_vgl_in = pq.qmckl_get_mo_basis_mo_vgl_inplace(ctx, size_max)
assert rc==0
end = time.clock_gettime_ns(time.CLOCK_REALTIME)
print(f'Time for the calculation of 1 step : {(end-start)*.000001/ITERMAX} ms')