1 !C
2 !C***
3 !C*** hecmw_update_3_R
4 !C***
5 !C
6 !C 3-DOF, REAL
7 !C
8 subroutine hecmw_update_3_R (hecMESH, VAL, n)
9 use hecmw_util
10 use hecmw_solver_SR_33
11
12 implicit none
13 integer(kind=kint):: n
14 real(kind=kreal), dimension(3*n) :: VAL
15 type (hecmwST_local_mesh) :: hecMESH
16 #ifndef HECMW_SERIAL
17 integer(kind=kint):: ns, nr
18 real(kind=kreal), dimension(:), allocatable :: WS, WR
19
20 if( hecMESH%n_neighbor_pe == 0 ) return
21
22 ns = hecMESH%export_index(hecMESH%n_neighbor_pe)
23 nr = hecMESH%import_index(hecMESH%n_neighbor_pe)
24
25 allocate (WS(3*ns), WR(3*nr))
26 call hecmw_solve_SEND_RECV_33 &
27 & ( n, hecMESH%n_neighbor_pe, hecMESH%neighbor_pe, &
28 & hecMESH%import_index, hecMESH%import_item, &
29 & hecMESH%export_index, hecMESH%export_item, &
30 & WS, WR, VAL , hecMESH%MPI_COMM, hecMESH%my_rank)
31 deallocate (WS, WR)
32 #endif
33 end subroutine hecmw_update_3_R