9 INTEGER,
SAVE :: klon_loc
10 LOGICAL,
SAVE :: is_sequential
11 LOGICAL,
SAVE :: is_parallel
12 LOGICAL,
SAVE :: is_master
20 INTEGER,
INTENT(in) ::
iim
21 INTEGER,
INTENT(in) ::
jjp1
22 INTEGER,
INTENT(in) :: nb_proc
23 INTEGER,
INTENT(in) ::
distrib(0:nb_proc-1)
29 IF (is_mpi_root .AND. is_omp_root)
THEN
36 IF (is_using_mpi .OR. is_using_omp)
THEN
51 REAL :: test_field1d_glo(klon_glo,nbp_lev)
52 REAL :: tmp1d_glo(klon_glo,nbp_lev)
53 REAL :: test_field2d_glo(nbp_lon,nbp_lat,nbp_lev)
54 REAL :: tmp2d_glo(nbp_lon,nbp_lat,nbp_lev)
55 REAL :: test_field1d_loc(klon_loc,nbp_lev)
56 REAL :: test_field2d_loc(nbp_lon,
jj_nb,nbp_lev)
71 test_field1d_glo(
i,
l)=1
77 CALL
scatter(test_field1d_glo,test_field1d_loc)
78 CALL
gather(test_field1d_loc,tmp1d_glo)
82 checksum=sum(test_field1d_glo-tmp1d_glo)
83 WRITE(
lunout,*)
"------> Checksum =",checksum,
" MUST BE 0"
88 CALL
scatter2d(test_field2d_glo,test_field1d_loc)
89 CALL
gather2d(test_field1d_loc,test_field2d_glo)
94 checksum=sum(test_field1d_glo-tmp1d_glo)
95 WRITE(
lunout,*)
"------> Checksum =",checksum,
" MUST BE 0"
99 CALL
bcast(test_field1d_glo)
102 IF (is_mpi_root)
THEN
104 checksum=sum(test_field1d_glo*omp_size*mpi_size-tmp1d_glo)
105 WRITE(
lunout,*)
"------> Checksum =",checksum,
" MUST BE 0"