8 INTEGER,
PARAMETER :: grow_factor=1.5
9 INTEGER,
PARAMETER :: size_min=1024
11 CHARACTER(LEN=size_min),
SAVE :: buffer_c
13 INTEGER,
SAVE,
ALLOCATABLE,
DIMENSION(:) :: buffer_i
14 INTEGER,
SAVE :: size_i=0
15 REAL,
SAVE,
ALLOCATABLE,
DIMENSION(:) :: buffer_r
16 INTEGER,
SAVE :: size_r=0
17 LOGICAL,
SAVE,
ALLOCATABLE,
DIMENSION(:) :: buffer_l
18 INTEGER,
SAVE :: size_l=0
60 IF (buff_size>size_i)
THEN
61 IF (
ALLOCATED(buffer_i))
DEALLOCATE(buffer_i)
62 size_i=max(size_min,int(grow_factor*buff_size))
63 ALLOCATE(buffer_i(size_i))
76 IF (buff_size>size_r)
THEN
77 IF (
ALLOCATED(buffer_r))
DEALLOCATE(buffer_r)
78 size_r=max(size_min,int(grow_factor*buff_size))
79 ALLOCATE(buffer_r(size_r))
92 IF (buff_size>size_l)
THEN
93 IF (
ALLOCATED(buffer_l))
DEALLOCATE(buffer_l)
94 size_l=max(size_min,int(grow_factor*buff_size))
95 ALLOCATE(buffer_l(size_l))
110 CHARACTER(LEN=*),
INTENT(INOUT) ::
var
120 INTEGER,
INTENT(INOUT) ::
var
121 INTEGER :: var_tmp(1)
133 INTEGER,
INTENT(INOUT) ::
var(:)
143 INTEGER,
INTENT(INOUT) ::
var(:,:)
153 INTEGER,
INTENT(INOUT) ::
var(:,:,:)
163 INTEGER,
INTENT(INOUT) ::
var(:,:,:,:)
175 REAL,
INTENT(INOUT) ::
var
188 REAL,
INTENT(INOUT) ::
var(:)
198 REAL,
INTENT(INOUT) ::
var(:,:)
208 REAL,
INTENT(INOUT) ::
var(:,:,:)
218 REAL,
INTENT(INOUT) ::
var(:,:,:,:)
230 LOGICAL,
INTENT(INOUT) ::
var
231 LOGICAL :: var_tmp(1)
243 LOGICAL,
INTENT(INOUT) ::
var(:)
253 LOGICAL,
INTENT(INOUT) ::
var(:,:)
263 LOGICAL,
INTENT(INOUT) ::
var(:,:,:)
273 LOGICAL,
INTENT(INOUT) ::
var(:,:,:,:)
289 INTEGER,
INTENT(IN),
DIMENSION(:) :: varin
290 INTEGER,
INTENT(OUT),
DIMENSION(:) :: varout
301 INTEGER,
INTENT(IN),
DIMENSION(:,:) :: varin
302 INTEGER,
INTENT(OUT),
DIMENSION(:,:) :: varout
313 INTEGER,
INTENT(IN),
DIMENSION(:,:,:) :: varin
314 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
325 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
326 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
329 CALL
scatter_omp_igen(varin,varout,
Size(varout,2)*
Size(varout,3)*
Size(varout,4),buffer_i)
339 REAL,
INTENT(IN),
DIMENSION(:) :: varin
340 REAL,
INTENT(OUT),
DIMENSION(:) :: varout
351 REAL,
INTENT(IN),
DIMENSION(:,:) :: varin
352 REAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
363 REAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
364 REAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
375 REAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
376 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
379 CALL
scatter_omp_rgen(varin,varout,
Size(varout,2)*
Size(varout,3)*
Size(varout,4),buffer_r)
388 LOGICAL,
INTENT(IN),
DIMENSION(:) :: varin
389 LOGICAL,
INTENT(OUT),
DIMENSION(:) :: varout
400 LOGICAL,
INTENT(IN),
DIMENSION(:,:) :: varin
401 LOGICAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
412 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
413 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
424 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
425 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
428 CALL
scatter_omp_lgen(varin,varout,
Size(varout,2)*
Size(varout,3)*
Size(varout,4),buffer_l)
436 INTEGER,
INTENT(IN),
DIMENSION(:) :: varin
437 INTEGER,
INTENT(OUT),
DIMENSION(:) :: varout
448 INTEGER,
INTENT(IN),
DIMENSION(:,:) :: varin
449 INTEGER,
INTENT(OUT),
DIMENSION(:,:) :: varout
460 INTEGER,
INTENT(IN),
DIMENSION(:,:,:) :: varin
461 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
464 CALL
gather_omp_igen(varin,varout,
Size(varin,2)*
Size(varin,3),buffer_i)
472 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
473 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
476 CALL
gather_omp_igen(varin,varout,
Size(varin,2)*
Size(varin,3)*
Size(varin,4),buffer_i)
485 REAL,
INTENT(IN),
DIMENSION(:) :: varin
486 REAL,
INTENT(OUT),
DIMENSION(:) :: varout
497 REAL,
INTENT(IN),
DIMENSION(:,:) :: varin
498 REAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
509 REAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
510 REAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
513 CALL
gather_omp_rgen(varin,varout,
Size(varin,2)*
Size(varin,3),buffer_r)
521 REAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
522 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
525 CALL
gather_omp_rgen(varin,varout,
Size(varin,2)*
Size(varin,3)*
Size(varin,4),buffer_r)
533 LOGICAL,
INTENT(IN),
DIMENSION(:) :: varin
534 LOGICAL,
INTENT(OUT),
DIMENSION(:) :: varout
545 LOGICAL,
INTENT(IN),
DIMENSION(:,:) :: varin
546 LOGICAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
557 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
558 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
561 CALL
gather_omp_lgen(varin,varout,
Size(varin,2)*
Size(varin,3),buffer_l)
569 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
570 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
573 CALL
gather_omp_lgen(varin,varout,
Size(varin,2)*
Size(varin,3)*
Size(varin,4),buffer_l)
583 INTEGER,
INTENT(IN) :: varin
584 INTEGER,
INTENT(OUT) :: varout
585 INTEGER :: varin_tmp(1)
586 INTEGER :: varout_tmp(1)
598 INTEGER,
INTENT(IN),
DIMENSION(:) :: varin
599 INTEGER,
INTENT(OUT),
DIMENSION(:) :: varout
610 INTEGER,
INTENT(IN),
DIMENSION(:,:) :: varin
611 INTEGER,
INTENT(OUT),
DIMENSION(:,:) :: varout
622 INTEGER,
INTENT(IN),
DIMENSION(:,:,:) :: varin
623 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
634 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
635 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
646 REAL,
INTENT(IN) :: varin
647 REAL,
INTENT(OUT) :: varout
649 REAL :: varout_tmp(1)
661 REAL,
INTENT(IN),
DIMENSION(:) :: varin
662 REAL,
INTENT(OUT),
DIMENSION(:) :: varout
673 REAL,
INTENT(IN),
DIMENSION(:,:) :: varin
674 REAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
685 REAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
686 REAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
697 REAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
698 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
712 CHARACTER(LEN=*),
INTENT(INOUT) ::
var
713 CHARACTER(LEN=*),
INTENT(INOUT) :: buff
714 INTEGER,
INTENT(IN) :: nb
735 INTEGER,
DIMENSION(Nb),
INTENT(INOUT) ::
var
736 INTEGER,
DIMENSION(Nb),
INTENT(INOUT) :: buff
737 INTEGER,
INTENT(IN) :: nb
759 REAL,
DIMENSION(Nb),
INTENT(INOUT) ::
var
760 REAL,
DIMENSION(Nb),
INTENT(INOUT) :: buff
761 INTEGER,
INTENT(IN) :: nb
782 LOGICAL,
DIMENSION(Nb),
INTENT(INOUT) ::
var
783 LOGICAL,
DIMENSION(Nb),
INTENT(INOUT) :: buff
784 INTEGER,
INTENT(IN) :: nb
808 INTEGER,
INTENT(IN) :: dimsize
809 INTEGER,
INTENT(IN),
DIMENSION(klon_mpi,dimsize) :: varin
810 INTEGER,
INTENT(OUT),
DIMENSION(klon_omp,dimsize) :: varout
811 INTEGER,
INTENT(INOUT),
DIMENSION(klon_mpi,dimsize) :: buff
826 varout(
ij,
i)=buff(klon_omp_begin-1+
ij,
i)
839 INTEGER,
INTENT(IN) :: dimsize
840 REAL,
INTENT(IN),
DIMENSION(klon_mpi,dimsize) :: varin
841 REAL,
INTENT(OUT),
DIMENSION(klon_omp,dimsize) :: varout
842 REAL,
INTENT(INOUT),
DIMENSION(klon_mpi,dimsize) :: buff
857 varout(
ij,
i)=buff(klon_omp_begin-1+
ij,
i)
870 INTEGER,
INTENT(IN) :: dimsize
871 LOGICAL,
INTENT(IN),
DIMENSION(klon_mpi,dimsize) :: varin
872 LOGICAL,
INTENT(OUT),
DIMENSION(klon_omp,dimsize) :: varout
873 LOGICAL,
INTENT(INOUT),
DIMENSION(klon_mpi,dimsize) :: buff
888 varout(
ij,
i)=buff(klon_omp_begin-1+
ij,
i)
904 INTEGER,
INTENT(IN) :: dimsize
905 INTEGER,
INTENT(IN),
DIMENSION(klon_omp,dimsize) :: varin
906 INTEGER,
INTENT(OUT),
DIMENSION(klon_mpi,dimsize) :: varout
907 INTEGER,
INTENT(INOUT),
DIMENSION(klon_mpi,dimsize) :: buff
913 buff(klon_omp_begin-1+
ij,
i)=varin(
ij,
i)
936 INTEGER,
INTENT(IN) :: dimsize
937 REAL,
INTENT(IN),
DIMENSION(klon_omp,dimsize) :: varin
938 REAL,
INTENT(OUT),
DIMENSION(klon_mpi,dimsize) :: varout
939 REAL,
INTENT(INOUT),
DIMENSION(klon_mpi,dimsize) :: buff
945 buff(klon_omp_begin-1+
ij,
i)=varin(
ij,
i)
968 INTEGER,
INTENT(IN) :: dimsize
969 LOGICAL,
INTENT(IN),
DIMENSION(klon_omp,dimsize) :: varin
970 LOGICAL,
INTENT(OUT),
DIMENSION(klon_mpi,dimsize) :: varout
971 LOGICAL,
INTENT(INOUT),
DIMENSION(klon_mpi,dimsize) :: buff
977 buff(klon_omp_begin-1+
ij,
i)=varin(
ij,
i)
998 INTEGER,
INTENT(IN) :: dimsize
999 INTEGER,
INTENT(IN),
DIMENSION(dimsize) :: varin
1000 INTEGER,
INTENT(OUT),
DIMENSION(dimsize) :: varout
1001 INTEGER,
INTENT(INOUT),
DIMENSION(dimsize) :: buff
1012 buff(
i)=buff(
i)+varin(
i)
1029 INTEGER,
INTENT(IN) :: dimsize
1030 REAL,
INTENT(IN),
DIMENSION(dimsize) :: varin
1031 REAL,
INTENT(OUT),
DIMENSION(dimsize) :: varout
1032 REAL,
INTENT(INOUT),
DIMENSION(dimsize) :: buff
1043 buff(
i)=buff(
i)+varin(
i)