1 | include(dom.inc)
2 |
3 | SUBROUTINE VOLAVERAGE(vect, average, ndata, ivol)
4 |
5 | USE mod_pmm
6 | USE mod_slave
7 | #ifdef USEPALM
8 | USE palmlib
9 | #endif
10 |
11 | IMPLICIT NONE
12 |
13 | ! IN
14 | DOM_INT :: ndata, ivol
15 | DOM_REAL,DIMENSION(ndata,is_ncells) :: vect
16 |
17 | ! LOCAL
18 | DOM_INT :: j, ierr
19 | DOM_REAL, DIMENSION(ndata) :: local_average
20 |
21 | ! OUT
22 | DOM_REAL, DIMENSION(ndata) :: average
23 |
24 | average = 0.
25 |
26 | ! -----------------------------!
27 | ! Initializing local cell data !
28 | ! -----------------------------!
29 |
30 | local_average = 0.
31 |
32 | DO j= 1, is_ncells !is_cellb, is_cellf
33 | local_average(:) = local_average(:) + vect(:,j)*s_V(j)
34 | ENDDO
35 |
36 | ! CALL MPI_ALLREDUCE(local_average, average, ndata, &
37 | ! & MPI_DOUBLE_PRECISION,MPI_SUM, COMM_PARA , &
38 | ! & ierr)
39 |
40 | average = local_average
41 | IF(ivol.eq.1) average(:) = average(:) / SUM(s_V)
42 |
43 | END SUBROUTINE VOLAVERAGE
volaverage.F could be called by: