11 INTEGER,
DIMENSION(:),
INTENT(IN) :: KWORK
12 INTEGER,
DIMENSION(:),
INTENT(OUT) :: KWORK2
14 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
15 INTEGER,
INTENT(IN),
OPTIONAL :: KPIO
16 INTEGER,
INTENT(IN),
OPTIONAL :: KDX
22 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KWORK
23 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KWORK2
25 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
31 INTEGER,
DIMENSION(:,:,:),
INTENT(IN) :: KWORK
32 INTEGER,
DIMENSION(:,:,:),
INTENT(OUT) :: KWORK2
34 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
35 INTEGER,
INTENT(IN),
OPTIONAL :: KPIO
36 INTEGER,
INTENT(IN),
OPTIONAL :: KDX
42 REAL,
DIMENSION(:),
INTENT(IN) :: PWORK
43 REAL,
DIMENSION(:),
INTENT(OUT) :: PWORK2
45 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
46 INTEGER,
INTENT(IN),
OPTIONAL :: KPIO
47 INTEGER,
INTENT(IN),
OPTIONAL :: KDX
53 REAL,
DIMENSION(:,:),
INTENT(IN) :: PWORK
54 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PWORK2
56 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
57 INTEGER,
INTENT(IN),
OPTIONAL :: KPIO
58 INTEGER,
INTENT(IN),
OPTIONAL :: KDX
64 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PWORK
65 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: PWORK2
67 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
68 INTEGER,
INTENT(IN),
OPTIONAL :: KPIO
69 INTEGER,
INTENT(IN),
OPTIONAL :: KDX
93 INTEGER,
DIMENSION(:),
INTENT(IN) :: KWORK
94 INTEGER,
DIMENSION(:),
INTENT(OUT) :: KWORK2
96 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
97 INTEGER,
INTENT(IN),
OPTIONAL :: KPIO
98 INTEGER,
INTENT(IN),
OPTIONAL :: KDX
100 INTEGER,
DIMENSION(NSIZE,NPROC) :: IWORKS
101 INTEGER,
DIMENSION(NSIZE) :: IWORKR
103 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
104 INTEGER,
DIMENSION(MPI_STATUS_SIZE,NPROC-1) :: ISTATUS2
106 INTEGER :: ICPT, IPIO, IDX, IREQ
109 DOUBLE PRECISION :: XTIME0
111 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
113 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_1',0,zhook_handle)
115 IF (
PRESENT(kpio))
THEN 121 IF (
PRESENT(kdx))
THEN 127 IF (
nrank==ipio)
THEN 131 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_1',1,zhook_handle)
135 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_20',0,zhook_handle_omp)
149 iworks(icpt,i+1) = kwork(j)
154 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_20',1,zhook_handle_omp)
155 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_30',0,zhook_handle_omp)
166 IF (
PRESENT(kpio) .AND.
PRESENT(kdx))
THEN 173 CALL mpi_isend(iworks(:,i+1),
SIZE(iworks,1)*kind(iworks)/4,&
174 mpi_integer,i,idx,
ncomm,
nreq(ireq),infompi)
176 CALL mpi_send(iworks(:,i+1),
SIZE(iworks,1)*kind(iworks)/4,mpi_integer,i,idx,
ncomm,infompi)
182 iworkr(:) = iworks(:,i+1)
184 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_30',1,zhook_handle_omp)
193 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_1',1,zhook_handle)
194 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_2',0,zhook_handle)
198 CALL mpi_recv(iworkr,
SIZE(iworkr)*kind(iworkr)/4,mpi_integer,ipio,idx,
ncomm,istatus,infompi)
202 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_2',1,zhook_handle)
206 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_3',0,zhook_handle)
207 IF (
PRESENT(kmask))
THEN 210 kwork2(:) = iworkr(1:
SIZE(kwork2))
215 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N1D_3',1,zhook_handle)
237 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KWORK
238 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KWORK2
240 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
242 INTEGER,
DIMENSION(NSIZE,SIZE(KWORK2,2)) :: IWORKS
243 INTEGER,
DIMENSION(NSIZE,SIZE(KWORK2,2)) :: IWORKR
246 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
252 DOUBLE PRECISION :: XTIME0
254 REAL(KIND=JPRB) :: ZHOOK_HANDLE
256 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N2D',0,zhook_handle)
276 iworks(icpt,:) = kwork(j,:)
286 CALL mpi_send(iworks(:,:),
SIZE(iworks)*kind(iworks)/4,mpi_integer,i,
idx_r,
ncomm,infompi)
289 iworkr(:,:) = iworks(:,:)
303 CALL mpi_recv(iworkr(:,:),
SIZE(iworkr)*kind(iworkr)/4,mpi_integer,
npio,
idx_r,
ncomm,istatus,infompi)
309 IF (
PRESENT(kmask))
THEN 312 kwork2(:,:) = iworkr(1:
SIZE(kwork2,1),:)
315 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N2D',1,zhook_handle)
339 INTEGER,
DIMENSION(:,:,:),
INTENT(IN) :: KWORK
340 INTEGER,
DIMENSION(:,:,:),
INTENT(OUT) :: KWORK2
342 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
343 INTEGER,
INTENT(IN),
OPTIONAL :: KPIO
344 INTEGER,
INTENT(IN),
OPTIONAL :: KDX
346 INTEGER,
DIMENSION(NSIZE,SIZE(KWORK2,2),SIZE(KWORK2,3),NPROC) :: IWORK3S
347 INTEGER,
DIMENSION(NSIZE,SIZE(KWORK2,2),SIZE(KWORK2,3)) :: IWORK3
349 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
351 INTEGER :: IP2, IS2, IP3, IS3
352 INTEGER :: ICPT, IPIO, IDX
354 INTEGER :: INFOMPI, IREQ
355 DOUBLE PRECISION :: XTIME0
357 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
359 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_1',0,zhook_handle)
361 IF (
PRESENT(kpio))
THEN 367 IF (
PRESENT(kdx))
THEN 373 IF (
nrank==ipio)
THEN 377 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_1',1,zhook_handle)
380 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_2',0,zhook_handle_omp)
388 iwork3s(:,:,:,i+1) = 0.
394 iwork3s(icpt,:,:,i+1) = kwork(j,:,:)
398 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_2',1,zhook_handle_omp)
399 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_3',0,zhook_handle_omp)
407 IF (
PRESENT(kpio).AND.
PRESENT(kdx))
THEN 414 CALL mpi_isend(iwork3s(:,:,:,i+1),
SIZE(iwork3)*kind(iwork3)/4,&
415 mpi_integer,i,idx,
ncomm,
nreq(ireq),infompi)
417 CALL mpi_send(iwork3s(:,:,:,i+1),
SIZE(iwork3)*kind(iwork3)/4,&
418 mpi_integer,i,idx,
ncomm,infompi)
423 iwork3(:,:,:) = iwork3s(:,:,:,i+1)
426 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_3',1,zhook_handle_omp)
434 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_1',1,zhook_handle)
435 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_2',0,zhook_handle)
439 CALL mpi_recv(iwork3,
SIZE(iwork3)*kind(iwork3)/4,mpi_integer,ipio,idx,
ncomm,istatus,infompi)
443 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_2',1,zhook_handle)
447 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_4',0,zhook_handle)
448 IF (
PRESENT(kmask))
THEN 451 kwork2(:,:,:) = iwork3(1:
SIZE(kwork2,1),:,:)
456 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_N3D_4',1,zhook_handle)
478 REAL,
DIMENSION(:),
INTENT(IN) :: PWORK
479 REAL,
DIMENSION(:),
INTENT(OUT) :: PWORK2
481 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
482 INTEGER,
INTENT(IN),
OPTIONAL :: KPIO
483 INTEGER,
INTENT(IN),
OPTIONAL :: KDX
485 REAL,
DIMENSION(NSIZE,NPROC) :: ZWORKS
486 REAL,
DIMENSION(NSIZE) :: ZWORKR
488 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
490 INTEGER :: ICPT, IPIO, IDX
493 DOUBLE PRECISION :: XTIME0
495 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
497 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_1',0,zhook_handle)
500 IF (
PRESENT(kpio))
THEN 508 IF (
PRESENT(kdx))
THEN 514 IF (
nrank==ipio)
THEN 518 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_1',1,zhook_handle)
521 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_2',0,zhook_handle_omp)
535 xworks(icpt,i+1) = pwork(j)
540 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_2',1,zhook_handle_omp)
541 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_30',0,zhook_handle_omp)
550 IF (
PRESENT(kpio).AND.
PRESENT(kdx))
THEN 565 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_30',1,zhook_handle_omp)
574 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_1',1,zhook_handle)
575 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_2',0,zhook_handle)
579 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_2',1,zhook_handle)
580 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_3',0,zhook_handle)
582 CALL mpi_recv(zworkr(:),
SIZE(zworkr(:))*kind(zworkr)/4,mpi_real,ipio,idx,
ncomm,istatus,infompi)
586 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_3',1,zhook_handle)
590 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_4',0,zhook_handle)
592 IF (
PRESENT(kmask))
THEN 595 pwork2(:) = zworkr(1:
SIZE(pwork2))
600 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X1D_4',1,zhook_handle)
623 REAL,
DIMENSION(:,:),
INTENT(IN) :: PWORK
624 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PWORK2
626 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
627 INTEGER,
INTENT(IN),
OPTIONAL :: KPIO
628 INTEGER,
INTENT(IN),
OPTIONAL :: KDX
630 REAL,
DIMENSION(NSIZE,SIZE(PWORK2,2),NPROC) :: ZWORK2S
631 REAL,
DIMENSION(NSIZE,SIZE(PWORK2,2)) :: ZWORK2
633 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
636 INTEGER :: ICPT, IPIO, IDX
637 INTEGER :: I,J, K, IREQ
639 DOUBLE PRECISION :: XTIME0
641 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
643 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_1',0,zhook_handle)
645 IF (
PRESENT(kpio))
THEN 651 IF (
nrank==ipio)
THEN 658 IF (
PRESENT(kdx))
THEN 664 IF (
nrank==ipio)
THEN 668 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_1',1,zhook_handle)
671 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_2',0,zhook_handle_omp)
685 xwork2s(icpt,:,i+1) = pwork(j,:)
689 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_2',1,zhook_handle_omp)
690 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_3',0,zhook_handle_omp)
698 IF (
PRESENT(kpio).AND.
PRESENT(kdx))
THEN 708 mpi_real,i,idx,
ncomm,infompi)
716 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_3',1,zhook_handle_omp)
724 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_1',1,zhook_handle)
726 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_3',0,zhook_handle)
729 CALL mpi_recv(zwork2(:,:),
SIZE(zwork2)*kind(zwork2)/4,mpi_real,ipio,idx,
ncomm,istatus,infompi)
733 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_3',1,zhook_handle)
737 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_4',0,zhook_handle)
739 IF (
PRESENT(kmask))
THEN 742 pwork2(:,:) = zwork2(1:
SIZE(pwork2,1),:)
747 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X2D_4',1,zhook_handle)
769 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PWORK
770 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: PWORK2
772 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: KMASK
773 INTEGER,
INTENT(IN),
OPTIONAL :: KPIO
774 INTEGER,
INTENT(IN),
OPTIONAL :: KDX
776 REAL,
DIMENSION(NSIZE,SIZE(PWORK2,2),SIZE(PWORK2,3),NPROC) :: ZWORK3S
777 REAL,
DIMENSION(NSIZE,SIZE(PWORK2,2),SIZE(PWORK2,3)) :: ZWORK3
779 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
781 INTEGER :: IP2, IS2, IP3, IS3
782 INTEGER :: ICPT, IPIO, IDX
784 INTEGER :: INFOMPI, IREQ
785 DOUBLE PRECISION :: XTIME0
787 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
789 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_1',0,zhook_handle)
791 IF (
PRESENT(kpio))
THEN 797 IF (
PRESENT(kdx))
THEN 803 IF (
nrank==ipio)
THEN 807 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_1',1,zhook_handle)
810 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_2',0,zhook_handle_omp)
818 zwork3s(:,:,:,i+1) = 0.
824 zwork3s(icpt,:,:,i+1) = pwork(j,:,:)
828 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_2',1,zhook_handle_omp)
829 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_3',0,zhook_handle_omp)
837 IF (
PRESENT(kpio).AND.
PRESENT(kdx))
THEN 844 CALL mpi_isend(zwork3s(:,:,:,i+1),
SIZE(zwork3)*kind(zwork3)/4,&
847 CALL mpi_send(zwork3s(:,:,:,i+1),
SIZE(zwork3)*kind(zwork3)/4,&
848 mpi_real,i,idx,
ncomm,infompi)
853 zwork3(:,:,:) = zwork3s(:,:,:,i+1)
856 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_3',1,zhook_handle_omp)
864 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_1',1,zhook_handle)
865 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_2',0,zhook_handle)
869 CALL mpi_recv(zwork3,
SIZE(zwork3)*kind(zwork3)/4,mpi_real,ipio,idx,
ncomm,istatus,infompi)
873 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_2',1,zhook_handle)
877 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_4',0,zhook_handle)
879 IF (
PRESENT(kmask))
THEN 882 pwork2(:,:,:) = zwork3(1:
SIZE(pwork2,1),:,:)
887 IF (
lhook)
CALL dr_hook(
'READ_AND_SEND_MPI_X3D_4',1,zhook_handle)
real, dimension(:,:,:), allocatable xwork2s
subroutine read_and_send_mpi_n3d(KWORK, KWORK2, KMASK, KPIO, KDX)
subroutine read_and_send_mpi_x2d(PWORK, PWORK2, KMASK, KPIO, KDX)
integer, dimension(:), allocatable nreq
subroutine read_and_send_mpi_x3d(PWORK, PWORK2, KMASK, KPIO, KDX)
subroutine read_and_send_mpi_n1d(KWORK, KWORK2, KMASK, KPIO, KDX)
subroutine read_and_send_mpi_n2d(KWORK, KWORK2, KMASK)
integer, dimension(:), allocatable nindex
subroutine read_and_send_mpi_x1d(PWORK, PWORK2, KMASK, KPIO, KDX)
subroutine wlog_mpi(HLOG, PLOG, KLOG, KLOG2, OLOG)
real, dimension(:,:), allocatable xworks