17 REAL,
DIMENSION(:),
INTENT(IN) :: PWORK
18 REAL,
DIMENSION(:),
INTENT(OUT) :: PWORK2
20 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
26 REAL,
DIMENSION(:,:),
INTENT(IN) :: PWORK
27 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PWORK2
29 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
35 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PWORK
36 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: PWORK2
38 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
67 REAL,
DIMENSION(:),
INTENT(IN) :: PWORK
68 REAL,
DIMENSION(:),
INTENT(OUT) :: PWORK2
70 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
72 REAL,
DIMENSION(NSIZE) :: ZINTER
73 REAL,
DIMENSION(NSIZE) :: ZWORK
77 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
80 INTEGER :: I,J, IP1, IS1
83 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
86 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X1D0',0,zhook_handle)
94 IF (
SIZE(pwork)>0)
THEN 95 IF (
PRESENT(kmask))
THEN 98 zwork(1:
SIZE(pwork)) = pwork(:)
114 CALL mpi_send(zwork,
SIZE(zwork)*kind(zwork)/4,mpi_real,
npio,
idx_w,
ncomm,infompi)
132 CALL mpi_recv(zinter,
SIZE(zinter)*kind(zinter)/4,mpi_real,i,
idx_w,
ncomm,istatus,infompi)
150 pwork2(j) = zinter(icpt)
164 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X1D0',1,zhook_handle)
189 REAL,
DIMENSION(:,:),
INTENT(IN) :: PWORK
190 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PWORK2
192 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
194 REAL,
DIMENSION(NSIZE,SIZE(PWORK2,2)) :: ZINTER
195 REAL,
DIMENSION(NSIZE,SIZE(PWORK,2)) :: ZWORK
199 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
201 INTEGER :: ICPT, IX2, IS1, IS2, IP1, IP2
205 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
208 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X2D0',0,zhook_handle)
216 IF (
SIZE(pwork,1)>0)
THEN 217 IF (
PRESENT(kmask))
THEN 220 zwork(1:
SIZE(pwork,1),:) = pwork(:,:)
236 CALL mpi_send(zwork(:,:),
SIZE(zwork)*kind(zwork)/4,mpi_real,
npio,
idx_w,
ncomm,infompi)
240 ELSEIF (
nproc>1)
THEN 255 CALL mpi_recv(zinter,
SIZE(zinter)*kind(zinter)/4,mpi_real,i,
idx_w,
ncomm,istatus,infompi)
258 zinter(:,:) = zwork(:,:)
273 pwork2(j,:) = zinter(icpt,:)
287 pwork2(:,:) = zwork(:,:)
291 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X2D0',1,zhook_handle)
317 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PWORK
318 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: PWORK2
320 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
322 REAL,
DIMENSION(NSIZE,SIZE(PWORK2,2),SIZE(PWORK2,3)) :: ZINTER
323 REAL,
DIMENSION(NSIZE,SIZE(PWORK,2),SIZE(PWORK,3)) :: ZWORK
324 DOUBLE PRECISION :: XTIME0
327 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
329 INTEGER :: ICPT, IX2, IS1, IS2, IP1, IP2
333 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
336 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_1',0,zhook_handle)
344 IF (
SIZE(pwork,1)>0)
THEN 345 IF (
PRESENT(kmask))
THEN 348 zwork(1:
SIZE(pwork,1),:,:) = pwork(:,:,:)
358 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_1',1,zhook_handle)
359 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_2',0,zhook_handle)
368 CALL mpi_send(zwork(:,:,:),
SIZE(zwork)*kind(zwork)/4,mpi_real,
npio,
idx_w,
ncomm,infompi)
372 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_2',1,zhook_handle)
373 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_5',0,zhook_handle)
375 ELSEIF (
nproc>1)
THEN 381 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_2',1,zhook_handle)
385 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_3',0,zhook_handle_omp)
393 CALL mpi_recv(zinter,
SIZE(zinter)*kind(zinter)/4,mpi_real,i,
idx_w,
ncomm,istatus,infompi)
396 zinter(:,:,:) = zwork(:,:,:)
405 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_3',1,zhook_handle_omp)
406 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_4',0,zhook_handle_omp)
414 pwork2(j,:,:) = zinter(icpt,:,:)
423 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_4',1,zhook_handle_omp)
427 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_5',0,zhook_handle)
430 pwork2(:,:,:) = zwork(:,:,:)
431 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_2',1,zhook_handle)
432 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_5',0,zhook_handle)
436 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D0_5',1,zhook_handle)
subroutine gather_and_write_mpi_x3d0(PWORK, PWORK2, KMASK)
subroutine gather_and_write_mpi_x2d0(PWORK, PWORK2, KMASK)
subroutine gather_and_write_mpi_x1d0(PWORK, PWORK2, KMASK)
integer, dimension(:), allocatable nindex
subroutine wlog_mpi(HLOG, PLOG, KLOG, KLOG2, OLOG)