1 | include(dom.inc)
2 |
3 | SUBROUTINE slave_receive_vectors
4 |
5 | ! ================================================================!
6 | ! !
7 | ! slave_receive.F : Receives I/O vectors from master proces. !
8 | ! !
9 | ! out : Global vectors. !
10 | ! !
11 | ! author : J. AMAYA (october 2007) !
12 | ! !
13 | ! ================================================================!
14 |
15 | USE mod_pmm
16 | USE mod_inout
17 | USE mod_slave
18 | #ifdef USEPALM
19 | USE palmlib
20 | #endif
21 |
22 | IMPLICIT NONE
23 |
24 | INCLUDE 'pmm_constants.h'
25 | INCLUDE 'dom_constants.h'
26 |
27 | ! LOCAL
28 | DOM_INT :: iproc, ibeg, iend, ierr
29 | DOM_INT :: i, j, k, n
30 | DOM_INT :: d_buffersize
31 | DOM_INT :: status(MPI_STATUS_SIZE)
32 | DOM_REAL, ALLOCATABLE, DIMENSION(:) :: d_buffer
33 |
34 | ! -------------------!
35 | ! Allocating buffers !
36 | ! -------------------!
37 |
38 | d_buffersize = 4*is_ndir
39 | ALLOCATE(d_buffer(d_buffersize))
40 |
41 | ! ------------------------------!
42 | ! Receiving buffers from master !
43 | ! ------------------------------!
44 |
45 | ! print*, pmm_rank," >> SLAVE: receiving vectors"
46 | #ifdef USEPALM
47 | CALL MPI_RECV(d_buffer, d_buffersize, MPI_DOUBLE_PRECISION, &
48 | & PMM_HOST, PMM_INVECTORS, PL_COMM_EXEC , status, ierr)
49 | #else
50 | CALL MPI_RECV(d_buffer, d_buffersize, MPI_DOUBLE_PRECISION, &
51 | & PMM_HOST, PMM_INVECTORS, MPI_COMM_WORLD, status, ierr)
52 | #endif
53 |
54 | ! ----------------------!
55 | ! Writing slave vectors !
56 | ! ----------------------!
57 |
58 | ! print*, pmm_rank," >> SLAVE: filling vectors with buffer data"
59 | CALL slave_vectors(d_buffer,d_buffersize)
60 |
61 | END SUBROUTINE slave_receive_vectors
slave_receive_vectors.F could be called by: