mirror of
https://github.com/LCPQ/quantum_package
synced 2024-12-23 04:43:50 +01:00
Forgot file
This commit is contained in:
parent
94cf7c2b32
commit
cf12806fc7
99
src/Integrals_Bielec/ao_bielec_integrals_in_map_slave.irp.f
Normal file
99
src/Integrals_Bielec/ao_bielec_integrals_in_map_slave.irp.f
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
subroutine ao_bielec_integrals_in_map_slave
|
||||||
|
use map_module
|
||||||
|
use f77_zmq
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Computes a buffer of integrals
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
integer :: j,l,n_integrals
|
||||||
|
integer :: rc
|
||||||
|
character*(8), external :: zmq_port
|
||||||
|
integer(ZMQ_PTR) :: zmq_socket_req_inproc, zmq_socket_push_inproc
|
||||||
|
real(integral_kind), allocatable :: buffer_value(:)
|
||||||
|
integer(key_kind), allocatable :: buffer_i(:)
|
||||||
|
|
||||||
|
allocate ( buffer_i(ao_num*ao_num), buffer_value(ao_num*ao_num) )
|
||||||
|
|
||||||
|
! Sockets
|
||||||
|
zmq_socket_req_inproc = f77_zmq_socket(zmq_context, ZMQ_REQ)
|
||||||
|
rc = f77_zmq_connect(zmq_socket_req_inproc, 'inproc://req_rep')
|
||||||
|
if (rc /= 0) then
|
||||||
|
stop 'Unable to connect zmq_socket_req_inproc'
|
||||||
|
endif
|
||||||
|
|
||||||
|
zmq_socket_push_inproc = f77_zmq_socket(zmq_context, ZMQ_PUSH)
|
||||||
|
rc = f77_zmq_connect(zmq_socket_push_inproc, 'inproc://push_pull')
|
||||||
|
if (rc /= 0) then
|
||||||
|
stop 'Unable to connect zmq_socket_push_inproc'
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
rc = f77_zmq_send( zmq_socket_req_inproc, 'get_ao_integrals', 16, 0)
|
||||||
|
rc = f77_zmq_recv( zmq_socket_req_inproc, l, 4, 0)
|
||||||
|
|
||||||
|
do while (l > 0)
|
||||||
|
rc = f77_zmq_send( zmq_socket_req_inproc, 'get_ao_integrals', 16, 0)
|
||||||
|
|
||||||
|
do j = 1, l
|
||||||
|
if (ao_overlap_abs(j,l) < ao_integrals_threshold) then
|
||||||
|
cycle
|
||||||
|
endif
|
||||||
|
call compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value)
|
||||||
|
rc = f77_zmq_send( zmq_socket_push_inproc, n_integrals, 4, ZMQ_SNDMORE)
|
||||||
|
rc = f77_zmq_send( zmq_socket_push_inproc, buffer_i, key_kind*n_integrals, ZMQ_SNDMORE)
|
||||||
|
rc = f77_zmq_send( zmq_socket_push_inproc, buffer_value, integral_kind*n_integrals, 0)
|
||||||
|
enddo
|
||||||
|
rc = f77_zmq_recv( zmq_socket_req_inproc, l, 4, 0)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
deallocate( buffer_i, buffer_value )
|
||||||
|
|
||||||
|
rc = f77_zmq_disconnect(zmq_socket_req_inproc, 'inproc://req_rep')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
subroutine ao_bielec_integrals_in_map_collector
|
||||||
|
use map_module
|
||||||
|
use f77_zmq
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Collects results from the AO integral calculation
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
integer :: j,l,n_integrals
|
||||||
|
integer :: rc
|
||||||
|
character*(8), external :: zmq_port
|
||||||
|
integer(ZMQ_PTR) :: zmq_socket_pull_inproc
|
||||||
|
real(integral_kind), allocatable :: buffer_value(:)
|
||||||
|
integer(key_kind), allocatable :: buffer_i(:)
|
||||||
|
|
||||||
|
allocate ( buffer_i(ao_num*ao_num), buffer_value(ao_num*ao_num) )
|
||||||
|
|
||||||
|
zmq_socket_pull_inproc = f77_zmq_socket(zmq_context, ZMQ_PULL)
|
||||||
|
rc = f77_zmq_bind(zmq_socket_pull_inproc, 'inproc://push_pull')
|
||||||
|
if (rc /= 0) then
|
||||||
|
stop 'Unable to connect zmq_socket_pull_inproc'
|
||||||
|
endif
|
||||||
|
|
||||||
|
n_integrals = 0
|
||||||
|
do while (n_integrals >= 0)
|
||||||
|
|
||||||
|
rc = f77_zmq_recv( zmq_socket_pull_inproc, n_integrals, 4, 0)
|
||||||
|
if (n_integrals > -1) then
|
||||||
|
rc = f77_zmq_recv( zmq_socket_pull_inproc, buffer_i, key_kind*n_integrals, 0)
|
||||||
|
rc = f77_zmq_recv( zmq_socket_pull_inproc, buffer_value, integral_kind*n_integrals, 0)
|
||||||
|
call insert_into_ao_integrals_map(n_integrals,buffer_i,buffer_value)
|
||||||
|
else
|
||||||
|
rc = f77_zmq_recv( zmq_socket_pull_inproc, buffer_i, key_kind, 0)
|
||||||
|
rc = f77_zmq_recv( zmq_socket_pull_inproc, buffer_value, integral_kind, 0)
|
||||||
|
endif
|
||||||
|
|
||||||
|
enddo
|
||||||
|
|
||||||
|
rc = f77_zmq_unbind(zmq_socket_pull_inproc, 'inproc://push_pull')
|
||||||
|
|
||||||
|
deallocate( buffer_i, buffer_value )
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user