17 INTEGER,
DIMENSION(:),
INTENT(IN) :: KWORK
18 INTEGER,
DIMENSION(:),
INTENT(OUT) :: KWORK2
20 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
26 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KWORK
27 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KWORK2
29 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
35 INTEGER,
DIMENSION(:,:,:),
INTENT(IN) :: KWORK
36 INTEGER,
DIMENSION(:,:,:),
INTENT(OUT) :: KWORK2
38 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
44 REAL,
DIMENSION(:),
INTENT(IN) :: PWORK
45 REAL(KIND=8),
DIMENSION(:),
INTENT(OUT) :: PWORK2
47 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
53 REAL,
DIMENSION(:,:),
INTENT(IN) :: PWORK
54 REAL(KIND=8),
DIMENSION(:,:),
INTENT(OUT) :: PWORK2
56 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
62 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PWORK
63 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT) :: PWORK2
65 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
71 REAL,
DIMENSION(:),
INTENT(IN) :: PWORK
72 REAL(KIND=4),
DIMENSION(:),
INTENT(OUT) :: PWORK2
74 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
80 REAL,
DIMENSION(:,:),
INTENT(IN) :: PWORK
81 REAL(KIND=4),
DIMENSION(:,:),
INTENT(OUT) :: PWORK2
83 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
87 SUBROUTINE gather_and_write_mpi_x3dk4(PWORK,PWORK2,KMASK)
89 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PWORK
90 REAL(KIND=4),
DIMENSION(:,:,:),
INTENT(OUT) :: PWORK2
92 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
94 END SUBROUTINE gather_and_write_mpi_x3dk4
117 INTEGER,
DIMENSION(:),
INTENT(IN) :: KWORK
118 INTEGER,
DIMENSION(:),
INTENT(OUT) :: KWORK2
120 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
122 INTEGER,
DIMENSION(NSIZE) :: IINTER
123 INTEGER,
DIMENSION(NSIZE) :: IWORK
127 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
130 INTEGER :: I,J, IP1, IS1
133 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
135 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_N1D',0,zhook_handle)
143 IF (
PRESENT(kmask))
THEN 146 iwork(1:
SIZE(kwork)) = kwork(:)
161 CALL mpi_send(iwork,
SIZE(iwork)*kind(iwork)/4,mpi_integer,
npio,
idx_w,
ncomm,infompi)
179 CALL mpi_recv(iinter,
SIZE(iinter)*kind(iinter)/4,mpi_integer,i,
idx_w,
ncomm,istatus,infompi)
197 kwork2(j) = iinter(icpt)
210 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_N1D',1,zhook_handle)
234 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KWORK
235 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KWORK2
237 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
239 INTEGER,
DIMENSION(NSIZE,SIZE(KWORK2,2)) :: IINTER
240 INTEGER,
DIMENSION(NSIZE,SIZE(KWORK2,2)) :: IWORK
244 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
250 REAL(KIND=JPRB) :: ZHOOK_HANDLE
252 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_N2D',0,zhook_handle)
260 IF (
SIZE(kwork,1)>0)
THEN 261 IF (
PRESENT(kmask))
THEN 264 iwork(1:
SIZE(kwork,1),:) = kwork(:,:)
280 CALL mpi_send(iwork(:,:),
SIZE(iwork)*kind(iwork)/4,mpi_integer,
npio,
idx_w,
ncomm,infompi)
296 CALL mpi_recv(iinter,
SIZE(iinter)*kind(iinter)/4,mpi_integer,i,
idx_w,
ncomm,istatus,infompi)
299 iinter(:,:) = iwork(:,:)
314 kwork2(j,:) = iinter(icpt,:)
327 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_N2D',1,zhook_handle)
351 INTEGER,
DIMENSION(:,:,:),
INTENT(IN) :: KWORK
352 INTEGER,
DIMENSION(:,:,:),
INTENT(OUT) :: KWORK2
354 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
356 INTEGER,
DIMENSION(NSIZE,SIZE(KWORK2,2),SIZE(KWORK2,3)) :: IINTER
357 INTEGER,
DIMENSION(NSIZE,SIZE(KWORK,2),SIZE(KWORK,3)) :: IWORK
359 DOUBLE PRECISION :: XTIME0
362 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
368 REAL(KIND=JPRB) :: ZHOOK_HANDLE
370 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_N3D',0,zhook_handle)
378 IF (
SIZE(kwork,1)>0)
THEN 379 IF (
PRESENT(kmask))
THEN 382 iwork(1:
SIZE(kwork,1),:,:) = kwork(:,:,:)
398 CALL mpi_send(iwork(:,:,:),
SIZE(iwork)*kind(iwork)/4,mpi_integer,
npio,
idx_w,
ncomm,infompi)
416 CALL mpi_recv(iinter,
SIZE(iinter)*kind(iinter)/4,mpi_integer,i,
idx_w,
ncomm,istatus,infompi)
419 iinter(:,:,:) = iwork(:,:,:)
434 kwork2(j,:,:) = iinter(icpt,:,:)
447 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_N3D',1,zhook_handle)
465 REAL,
DIMENSION(:),
INTENT(IN) :: PWORK
466 REAL(KIND=KIND(PWORK)),
DIMENSION(:),
INTENT(OUT) :: PWORK2
467 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
469 REAL(KIND=JPRB) :: ZHOOK_HANDLE
471 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X1D',0,zhook_handle)
473 IF (
PRESENT(kmask))
THEN 479 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X1D',1,zhook_handle)
496 REAL,
DIMENSION(:,:),
INTENT(IN) :: PWORK
497 REAL(KIND=KIND(PWORK)),
DIMENSION(:,:),
INTENT(OUT) :: PWORK2
498 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
500 REAL(KIND=JPRB) :: ZHOOK_HANDLE
502 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X2D',0,zhook_handle)
504 IF (
PRESENT(kmask))
THEN 510 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X2D',1,zhook_handle)
527 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PWORK
528 REAL(KIND=KIND(PWORK)),
DIMENSION(:,:,:),
INTENT(OUT) :: PWORK2
529 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
531 REAL(KIND=JPRB) :: ZHOOK_HANDLE
533 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D',0,zhook_handle)
535 IF (
PRESENT(kmask))
THEN 541 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X3D',1,zhook_handle)
558 REAL,
DIMENSION(:),
INTENT(IN) :: PWORK
559 REAL(KIND=KIND(PWORK)/2),
DIMENSION(:),
INTENT(OUT) :: PWORK2
560 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
562 REAL,
DIMENSION(:),
ALLOCATABLE :: ZINTER
563 REAL(KIND=JPRB) :: ZHOOK_HANDLE
565 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X1DK4',0,zhook_handle)
567 ALLOCATE(zinter(
SIZE(pwork2)))
568 IF (
PRESENT(kmask))
THEN 575 pwork2(:) = zinter(:)
579 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X1DK4',1,zhook_handle)
596 REAL,
DIMENSION(:,:),
INTENT(IN) :: PWORK
597 REAL(KIND=KIND(PWORK)/2),
DIMENSION(:,:),
INTENT(OUT) :: PWORK2
598 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
600 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZINTER
601 REAL(KIND=JPRB) :: ZHOOK_HANDLE
603 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X2DK4',0,zhook_handle)
605 ALLOCATE(zinter(
SIZE(pwork2,1),
SIZE(pwork2,2)))
606 IF (
PRESENT(kmask))
THEN 613 pwork2(:,:) = zinter(:,:)
617 IF (
lhook)
CALL dr_hook(
'GATHER_AND_WRITE_MPI_X2DK4',1,zhook_handle)
subroutine gather_and_write_mpi_x2d(PWORK, PWORK2, KMASK)
subroutine gather_and_write_mpi_n1d(KWORK, KWORK2, KMASK)
subroutine gather_and_write_mpi_n2d(KWORK, KWORK2, KMASK)
subroutine gather_and_write_mpi_n3d(KWORK, KWORK2, KMASK)
subroutine gather_and_write_mpi_x3d(PWORK, PWORK2, KMASK)
subroutine gather_and_write_mpi_x1dk4(PWORK, PWORK2, KMASK)
subroutine gather_and_write_mpi_x2dk4(PWORK, PWORK2, KMASK)
integer, dimension(:), allocatable nindex
subroutine gather_and_write_mpi_x1d(PWORK, PWORK2, KMASK)
subroutine wlog_mpi(HLOG, PLOG, KLOG, KLOG2, OLOG)