66 CHARACTER(LEN=*),
INTENT(INOUT) :: var1
77 INTEGER,
INTENT(INOUT) ::
var
81 IF (is_mpi_root) var_tmp(1)=
var
89 INTEGER,
INTENT(INOUT) ::
var(:)
97 INTEGER,
INTENT(INOUT) ::
var(:,:)
105 INTEGER,
INTENT(INOUT) ::
var(:,:,:)
113 INTEGER,
INTENT(INOUT) ::
var(:,:,:,:)
125 REAL,
INTENT(INOUT) ::
var
128 IF (is_mpi_root) var_tmp(1)=
var
136 REAL,
INTENT(INOUT) ::
var(:)
144 REAL,
INTENT(INOUT) ::
var(:,:)
152 REAL,
INTENT(INOUT) ::
var(:,:,:)
160 REAL,
INTENT(INOUT) ::
var(:,:,:,:)
171 LOGICAL,
INTENT(INOUT) ::
var
172 LOGICAL :: var_tmp(1)
174 IF (is_mpi_root) var_tmp(1)=
var
182 LOGICAL,
INTENT(INOUT) ::
var(:)
190 LOGICAL,
INTENT(INOUT) ::
var(:,:)
198 LOGICAL,
INTENT(INOUT) ::
var(:,:,:)
206 LOGICAL,
INTENT(INOUT) ::
var(:,:,:,:)
220 INTEGER,
INTENT(IN),
DIMENSION(:) :: varin
221 INTEGER,
INTENT(OUT),
DIMENSION(:) :: varout
231 INTEGER,
INTENT(IN),
DIMENSION(:,:) :: varin
232 INTEGER,
INTENT(OUT),
DIMENSION(:,:) :: varout
242 INTEGER,
INTENT(IN),
DIMENSION(:,:,:) :: varin
243 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
253 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
254 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
256 CALL
scatter_mpi_igen(varin,varout,
Size(varout,2)*
Size(varout,3)*
Size(varout,4))
265 REAL,
INTENT(IN),
DIMENSION(:) :: varin
266 REAL,
INTENT(OUT),
DIMENSION(:) :: varout
276 REAL,
INTENT(IN),
DIMENSION(:,:) :: varin
277 REAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
287 REAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
288 REAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
298 REAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
299 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
301 CALL
scatter_mpi_rgen(varin,varout,
Size(varout,2)*
Size(varout,3)*
Size(varout,4))
310 LOGICAL,
INTENT(IN),
DIMENSION(:) :: varin
311 LOGICAL,
INTENT(OUT),
DIMENSION(:) :: varout
321 LOGICAL,
INTENT(IN),
DIMENSION(:,:) :: varin
322 LOGICAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
332 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
333 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
343 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
344 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
346 CALL
scatter_mpi_lgen(varin,varout,
Size(varout,2)*
Size(varout,3)*
Size(varout,4))
360 INTEGER,
INTENT(IN),
DIMENSION(:) :: varin
361 INTEGER,
INTENT(OUT),
DIMENSION(:) :: varout
374 INTEGER,
INTENT(IN),
DIMENSION(:,:) :: varin
375 INTEGER,
INTENT(OUT),
DIMENSION(:,:) :: varout
387 INTEGER,
INTENT(IN),
DIMENSION(:,:,:) :: varin
388 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
400 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
401 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
403 CALL
gather_mpi_igen(varin,varout,
Size(varin,2)*
Size(varin,3)*
Size(varin,4))
413 REAL,
INTENT(IN),
DIMENSION(:) :: varin
414 REAL,
INTENT(OUT),
DIMENSION(:) :: varout
426 REAL,
INTENT(IN),
DIMENSION(:,:) :: varin
427 REAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
439 REAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
440 REAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
452 REAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
453 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
455 CALL
gather_mpi_rgen(varin,varout,
Size(varin,2)*
Size(varin,3)*
Size(varin,4))
465 LOGICAL,
INTENT(IN),
DIMENSION(:) :: varin
466 LOGICAL,
INTENT(OUT),
DIMENSION(:) :: varout
478 LOGICAL,
INTENT(IN),
DIMENSION(:,:) :: varin
479 LOGICAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
491 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
492 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
504 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
505 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
507 CALL
gather_mpi_lgen(varin,varout,
Size(varin,2)*
Size(varin,3)*
Size(varin,4))
519 INTEGER,
INTENT(IN),
DIMENSION(:,:) :: varin
520 INTEGER,
INTENT(OUT),
DIMENSION(:) :: varout
522 INTEGER,
DIMENSION(klon_glo) :: var_tmp
533 INTEGER,
INTENT(IN),
DIMENSION(:,:,:) :: varin
534 INTEGER,
INTENT(OUT),
DIMENSION(:,:) :: varout
535 INTEGER,
DIMENSION(klon_glo,size(VarOut,2)) :: var_tmp
546 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
547 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
549 INTEGER,
DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3)) :: var_tmp
560 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:,:) :: varin
561 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
562 INTEGER,
DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3),size(VarOut,4)) :: var_tmp
575 REAL,
INTENT(IN),
DIMENSION(:,:) :: varin
576 REAL,
INTENT(OUT),
DIMENSION(:) :: varout
578 REAL,
DIMENSION(klon_glo) :: var_tmp
589 REAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
590 REAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
592 REAL,
DIMENSION(klon_glo,size(VarOut,2)) :: var_tmp
604 REAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
605 REAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
607 REAL,
DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3)) :: var_tmp
618 REAL,
INTENT(IN),
DIMENSION(:,:,:,:,:) :: varin
619 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
621 REAL,
DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3),size(VarOut,4)) :: var_tmp
633 LOGICAL,
INTENT(IN),
DIMENSION(:,:) :: varin
634 LOGICAL,
INTENT(OUT),
DIMENSION(:) :: varout
636 LOGICAL,
DIMENSION(klon_glo) :: var_tmp
648 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
649 LOGICAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
651 LOGICAL,
DIMENSION(klon_glo,size(VarOut,2)) :: var_tmp
663 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
664 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
666 LOGICAL,
DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3)) :: var_tmp
677 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:,:,:) :: varin
678 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
680 LOGICAL,
DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3),size(VarOut,4)) :: var_tmp
696 INTEGER,
INTENT(IN),
DIMENSION(:) :: varin
697 INTEGER,
INTENT(OUT),
DIMENSION(:,:) :: varout
699 INTEGER,
DIMENSION(klon_glo) :: var_tmp
710 INTEGER,
INTENT(IN),
DIMENSION(:,:) :: varin
711 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
713 INTEGER,
DIMENSION(klon_glo,size(VarOut,3)) :: var_tmp
724 INTEGER,
INTENT(IN),
DIMENSION(:,:,:) :: varin
725 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
727 INTEGER,
DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4)) :: var_tmp
738 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
739 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:,:) :: varout
741 INTEGER,
DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) :: var_tmp
754 REAL,
INTENT(IN),
DIMENSION(:) :: varin
755 REAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
757 REAL,
DIMENSION(klon_glo) :: var_tmp
768 REAL,
INTENT(IN),
DIMENSION(:,:) :: varin
769 REAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
771 REAL,
DIMENSION(klon_glo,size(VarOut,3)) :: var_tmp
782 REAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
783 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
785 REAL,
DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4)) :: var_tmp
796 REAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
797 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:,:) :: varout
799 REAL,
DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) :: var_tmp
812 LOGICAL,
INTENT(IN),
DIMENSION(:) :: varin
813 LOGICAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
815 LOGICAL,
DIMENSION(klon_glo) :: var_tmp
826 LOGICAL,
INTENT(IN),
DIMENSION(:,:) :: varin
827 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
829 LOGICAL,
DIMENSION(klon_glo,size(VarOut,3)) :: var_tmp
840 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
841 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
843 LOGICAL,
DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4)) :: var_tmp
854 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
855 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:,:,:) :: varout
857 LOGICAL,
DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) :: var_tmp
873 INTEGER,
INTENT(IN) :: varin
874 INTEGER,
INTENT(OUT) :: varout
875 INTEGER :: varin_tmp(1)
876 INTEGER :: varout_tmp(1)
888 INTEGER,
INTENT(IN),
DIMENSION(:) :: varin
889 INTEGER,
INTENT(OUT),
DIMENSION(:) :: varout
899 INTEGER,
INTENT(IN),
DIMENSION(:,:) :: varin
900 INTEGER,
INTENT(OUT),
DIMENSION(:,:) :: varout
910 INTEGER,
INTENT(IN),
DIMENSION(:,:,:) :: varin
911 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
921 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
922 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
933 REAL,
INTENT(IN) :: varin
934 REAL,
INTENT(OUT) :: varout
936 REAL :: varout_tmp(1)
948 REAL,
INTENT(IN),
DIMENSION(:) :: varin
949 REAL,
INTENT(OUT),
DIMENSION(:) :: varout
959 REAL,
INTENT(IN),
DIMENSION(:,:) :: varin
960 REAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
970 REAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
971 REAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
981 REAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
982 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
997 INTEGER,
INTENT(IN),
DIMENSION(:) :: varin
998 INTEGER,
INTENT(OUT),
DIMENSION(:,:) :: varout
1007 INTEGER,
INTENT(IN),
DIMENSION(:,:) :: varin
1008 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
1016 INTEGER,
INTENT(IN),
DIMENSION(:,:,:) :: varin
1017 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
1025 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
1026 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:,:) :: varout
1035 REAL,
INTENT(IN),
DIMENSION(:) :: varin
1036 REAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
1045 REAL,
INTENT(IN),
DIMENSION(:,:) :: varin
1046 REAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
1054 REAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
1055 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
1063 REAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
1064 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:,:) :: varout
1074 LOGICAL,
INTENT(IN),
DIMENSION(:) :: varin
1075 LOGICAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
1084 LOGICAL,
INTENT(IN),
DIMENSION(:,:) :: varin
1085 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
1093 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
1094 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
1102 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
1103 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:,:,:) :: varout
1112 INTEGER,
INTENT(IN),
DIMENSION(:,:) :: varin
1113 INTEGER,
INTENT(OUT),
DIMENSION(:) :: varout
1122 INTEGER,
INTENT(IN),
DIMENSION(:,:,:) :: varin
1123 INTEGER,
INTENT(OUT),
DIMENSION(:,:) :: varout
1131 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
1132 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
1140 INTEGER,
INTENT(IN),
DIMENSION(:,:,:,:,:) :: varin
1141 INTEGER,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
1152 REAL,
INTENT(IN),
DIMENSION(:,:) :: varin
1153 REAL,
INTENT(OUT),
DIMENSION(:) :: varout
1162 REAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
1163 REAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
1171 REAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
1172 REAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
1180 REAL,
INTENT(IN),
DIMENSION(:,:,:,:,:) :: varin
1181 REAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
1191 LOGICAL,
INTENT(IN),
DIMENSION(:,:) :: varin
1192 LOGICAL,
INTENT(OUT),
DIMENSION(:) :: varout
1201 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:) :: varin
1202 LOGICAL,
INTENT(OUT),
DIMENSION(:,:) :: varout
1212 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:,:) :: varin
1213 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:) :: varout
1222 LOGICAL,
INTENT(IN),
DIMENSION(:,:,:,:,:) :: varin
1223 LOGICAL,
INTENT(OUT),
DIMENSION(:,:,:,:) :: varout
1241 CHARACTER(LEN=*),
INTENT(INOUT) ::
var
1242 INTEGER,
INTENT(IN) :: nb
1249 IF (.not.is_using_mpi)
RETURN
1252 CALL mpi_bcast(
var,nb,mpi_character,mpi_root_x,comm_lmdz_phy,ierr)
1263 INTEGER,
DIMENSION(nb),
INTENT(INOUT) ::
var
1264 INTEGER,
INTENT(IN) :: nb
1271 IF (.not.is_using_mpi)
RETURN
1274 CALL mpi_bcast(
var,nb,mpi_integer,mpi_root_x,comm_lmdz_phy,ierr)
1286 REAL,
DIMENSION(nb),
INTENT(INOUT) ::
var
1287 INTEGER,
INTENT(IN) :: nb
1294 IF (.not.is_using_mpi)
RETURN
1297 CALL mpi_bcast(
var,nb,mpi_real_lmdz,mpi_root_x,comm_lmdz_phy,ierr)
1309 LOGICAL,
DIMENSION(nb),
INTENT(INOUT) ::
var
1310 INTEGER,
INTENT(IN) :: nb
1317 IF (.not.is_using_mpi)
RETURN
1320 CALL mpi_bcast(
var,nb,mpi_logical,mpi_root_x,comm_lmdz_phy,ierr)
1332 INTEGER,
INTENT(IN) :: dimsize
1333 INTEGER,
INTENT(IN),
DIMENSION(klon_glo,dimsize) :: varin
1334 INTEGER,
INTENT(OUT),
DIMENSION(klon_mpi,dimsize) :: varout
1339 INTEGER,
DIMENSION(0:mpi_size-1) :: displs
1340 INTEGER,
DIMENSION(0:mpi_size-1) :: counts
1341 INTEGER,
DIMENSION(dimsize*klon_glo) :: vartmp
1342 INTEGER :: nb,
i,index,rank
1346 IF (.not.is_using_mpi)
THEN
1347 varout(:,:)=varin(:,:)
1352 IF (is_mpi_root)
THEN
1354 DO rank=0,mpi_size-1
1355 nb=klon_mpi_para_nb(rank)
1356 displs(rank)=index-1
1357 counts(rank)=nb*dimsize
1359 vartmp(index:index+nb-1)=varin(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),
i)
1366 CALL mpi_scatterv(vartmp,counts,displs,mpi_integer,varout,klon_mpi*dimsize, &
1367 mpi_integer,mpi_root_x, comm_lmdz_phy,ierr)
1377 INTEGER,
INTENT(IN) :: dimsize
1378 REAL,
INTENT(IN),
DIMENSION(klon_glo,dimsize) :: varin
1379 REAL,
INTENT(OUT),
DIMENSION(klon_mpi,dimsize) :: varout
1385 INTEGER,
DIMENSION(0:mpi_size-1) :: displs
1386 INTEGER,
DIMENSION(0:mpi_size-1) :: counts
1387 REAL,
DIMENSION(dimsize*klon_glo) :: vartmp
1388 INTEGER :: nb,
i,index,rank
1391 IF (.not.is_using_mpi)
THEN
1392 varout(:,:)=varin(:,:)
1396 IF (is_mpi_root)
THEN
1398 DO rank=0,mpi_size-1
1399 nb=klon_mpi_para_nb(rank)
1400 displs(rank)=index-1
1401 counts(rank)=nb*dimsize
1403 vartmp(index:index+nb-1)=varin(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),
i)
1410 CALL mpi_scatterv(vartmp,counts,displs,mpi_real_lmdz,varout,klon_mpi*dimsize, &
1411 mpi_real_lmdz,mpi_root_x, comm_lmdz_phy,ierr)
1423 INTEGER,
INTENT(IN) :: dimsize
1424 LOGICAL,
INTENT(IN),
DIMENSION(klon_glo,dimsize) :: varin
1425 LOGICAL,
INTENT(OUT),
DIMENSION(klon_mpi,dimsize) :: varout
1431 INTEGER,
DIMENSION(0:mpi_size-1) :: displs
1432 INTEGER,
DIMENSION(0:mpi_size-1) :: counts
1433 LOGICAL,
DIMENSION(dimsize*klon_glo) :: vartmp
1434 INTEGER :: nb,
i,index,rank
1437 IF (.not.is_using_mpi)
THEN
1438 varout(:,:)=varin(:,:)
1442 IF (is_mpi_root)
THEN
1444 DO rank=0,mpi_size-1
1445 nb=klon_mpi_para_nb(rank)
1446 displs(rank)=index-1
1447 counts(rank)=nb*dimsize
1449 vartmp(index:index+nb-1)=varin(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),
i)
1456 CALL mpi_scatterv(vartmp,counts,displs,mpi_logical,varout,klon_mpi*dimsize, &
1457 mpi_logical,mpi_root_x, comm_lmdz_phy,ierr)
1474 INTEGER,
INTENT(IN) :: dimsize
1475 INTEGER,
INTENT(IN),
DIMENSION(klon_mpi,dimsize) :: varin
1476 INTEGER,
INTENT(OUT),
DIMENSION(klon_glo,dimsize) :: varout
1478 INTEGER,
DIMENSION(0:mpi_size-1) :: displs
1479 INTEGER,
DIMENSION(0:mpi_size-1) :: counts
1480 INTEGER,
DIMENSION(dimsize*klon_glo) :: vartmp
1481 INTEGER :: nb,
i,index,rank
1484 IF (.not.is_using_mpi)
THEN
1485 varout(:,:)=varin(:,:)
1489 IF (is_mpi_root)
THEN
1491 DO rank=0,mpi_size-1
1492 nb=klon_mpi_para_nb(rank)
1493 displs(rank)=index-1
1494 counts(rank)=nb*dimsize
1495 index=index+nb*dimsize
1501 CALL mpi_gatherv(varin,klon_mpi*dimsize,mpi_integer,vartmp,counts,displs, &
1502 mpi_integer,mpi_root_x, comm_lmdz_phy,ierr)
1506 IF (is_mpi_root)
THEN
1508 DO rank=0,mpi_size-1
1509 nb=klon_mpi_para_nb(rank)
1511 varout(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),
i)=vartmp(index:index+nb-1)
1528 INTEGER,
INTENT(IN) :: dimsize
1529 REAL,
INTENT(IN),
DIMENSION(klon_mpi,dimsize) :: varin
1530 REAL,
INTENT(OUT),
DIMENSION(klon_glo,dimsize) :: varout
1532 INTEGER,
DIMENSION(0:mpi_size-1) :: displs
1533 INTEGER,
DIMENSION(0:mpi_size-1) :: counts
1534 REAL,
DIMENSION(dimsize*klon_glo) :: vartmp
1535 INTEGER :: nb,
i,index,rank
1538 IF (is_mpi_root)
THEN
1540 DO rank=0,mpi_size-1
1541 nb=klon_mpi_para_nb(rank)
1542 displs(rank)=index-1
1543 counts(rank)=nb*dimsize
1544 index=index+nb*dimsize
1548 IF (.not.is_using_mpi)
THEN
1549 varout(:,:)=varin(:,:)
1554 CALL mpi_gatherv(varin,klon_mpi*dimsize,mpi_real_lmdz,vartmp,counts,displs, &
1555 mpi_real_lmdz,mpi_root_x, comm_lmdz_phy,ierr)
1558 IF (is_mpi_root)
THEN
1560 DO rank=0,mpi_size-1
1561 nb=klon_mpi_para_nb(rank)
1563 varout(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),
i)=vartmp(index:index+nb-1)
1576 INTEGER,
INTENT(IN) :: dimsize
1577 LOGICAL,
INTENT(IN),
DIMENSION(klon_mpi,dimsize) :: varin
1578 LOGICAL,
INTENT(OUT),
DIMENSION(klon_glo,dimsize) :: varout
1584 INTEGER,
DIMENSION(0:mpi_size-1) :: displs
1585 INTEGER,
DIMENSION(0:mpi_size-1) :: counts
1586 LOGICAL,
DIMENSION(dimsize*klon_glo) :: vartmp
1587 INTEGER :: nb,
i,index,rank
1590 IF (.not.is_using_mpi)
THEN
1591 varout(:,:)=varin(:,:)
1595 IF (is_mpi_root)
THEN
1597 DO rank=0,mpi_size-1
1598 nb=klon_mpi_para_nb(rank)
1599 displs(rank)=index-1
1600 counts(rank)=nb*dimsize
1601 index=index+nb*dimsize
1607 CALL mpi_gatherv(varin,klon_mpi*dimsize,mpi_logical,vartmp,counts,displs, &
1608 mpi_logical,mpi_root_x, comm_lmdz_phy,ierr)
1611 IF (is_mpi_root)
THEN
1613 DO rank=0,mpi_size-1
1614 nb=klon_mpi_para_nb(rank)
1616 varout(klon_mpi_para_begin(rank):klon_mpi_para_end(rank),
i)=vartmp(index:index+nb-1)
1635 INTEGER,
DIMENSION(nb),
INTENT(IN) :: varin
1636 INTEGER,
DIMENSION(nb),
INTENT(OUT) :: varout
1637 INTEGER,
INTENT(IN) :: nb
1640 IF (.not.is_using_mpi)
THEN
1647 CALL mpi_reduce(varin,varout,nb,mpi_integer,mpi_sum,mpi_root_x,comm_lmdz_phy,ierr)
1662 REAL,
DIMENSION(nb),
INTENT(IN) :: varin
1663 REAL,
DIMENSION(nb),
INTENT(OUT) :: varout
1664 INTEGER,
INTENT(IN) :: nb
1667 IF (.not.is_using_mpi)
THEN
1673 CALL mpi_reduce(varin,varout,nb,mpi_real_lmdz,mpi_sum,mpi_root_x,comm_lmdz_phy,ierr)
1685 INTEGER,
INTENT(IN) :: dimsize
1686 INTEGER,
INTENT(IN) ,
DIMENSION(klon_mpi,dimsize) :: varin
1687 INTEGER,
INTENT(OUT),
DIMENSION(nbp_lon*jj_nb,dimsize) :: varout
1688 INTEGER ::
i,
ij,offset
1691 varout(1:nbp_lon,:)=0
1692 varout(nbp_lon*(
jj_nb-1)+1:nbp_lon*
jj_nb,:)=0
1695 IF (is_north_pole) offset=nbp_lon
1700 varout(
ij+offset-1,
i)=varin(
ij,
i)
1705 IF (is_north_pole)
THEN
1708 varout(
ij,
i)=varin(1,
i)
1713 IF (is_south_pole)
THEN
1716 varout(
ij,
i)=varin(klon_mpi,
i)
1729 INTEGER,
INTENT(IN) :: dimsize
1730 REAL,
INTENT(IN) ,
DIMENSION(klon_mpi,dimsize) :: varin
1731 REAL,
INTENT(OUT),
DIMENSION(nbp_lon*jj_nb,dimsize) :: varout
1732 INTEGER ::
i,
ij,offset
1735 varout(1:nbp_lon,:)=0
1736 varout(nbp_lon*(
jj_nb-1)+1:nbp_lon*
jj_nb,:)=0
1739 IF (is_north_pole) offset=nbp_lon
1744 varout(
ij+offset-1,
i)=varin(
ij,
i)
1749 IF (is_north_pole)
THEN
1752 varout(
ij,
i)=varin(1,
i)
1757 IF (is_south_pole)
THEN
1760 varout(
ij,
i)=varin(klon_mpi,
i)
1774 INTEGER,
INTENT(IN) :: dimsize
1775 LOGICAL,
INTENT(IN) ,
DIMENSION(klon_mpi,dimsize) :: varin
1776 LOGICAL,
INTENT(OUT),
DIMENSION(nbp_lon*jj_nb,dimsize) :: varout
1777 INTEGER ::
i,
ij,offset
1780 varout(1:nbp_lon,:)=.
false.
1784 IF (is_north_pole) offset=nbp_lon
1789 varout(
ij+offset-1,
i)=varin(
ij,
i)
1794 IF (is_north_pole)
THEN
1797 varout(
ij,
i)=varin(1,
i)
1802 IF (is_south_pole)
THEN
1805 varout(
ij,
i)=varin(klon_mpi,
i)
1820 INTEGER,
INTENT(IN) :: dimsize
1821 INTEGER,
INTENT(IN) ,
DIMENSION(nbp_lon*jj_nb,dimsize) :: varin
1822 INTEGER,
INTENT(OUT),
DIMENSION(klon_mpi,dimsize) :: varout
1823 INTEGER ::
i,
ij,offset
1826 IF (is_north_pole) offset=nbp_lon
1830 varout(
ij,
i)=varin(
ij+offset-1,
i)
1834 IF (is_north_pole)
THEN
1836 varout(1,
i)=varin(1,
i)
1850 INTEGER,
INTENT(IN) :: dimsize
1851 REAL,
INTENT(IN) ,
DIMENSION(nbp_lon*jj_nb,dimsize) :: varin
1852 REAL,
INTENT(OUT),
DIMENSION(klon_mpi,dimsize) :: varout
1853 INTEGER ::
i,
ij,offset
1856 IF (is_north_pole) offset=nbp_lon
1860 varout(
ij,
i)=varin(
ij+offset-1,
i)
1864 IF (is_north_pole)
THEN
1866 varout(1,
i)=varin(1,
i)
1879 INTEGER,
INTENT(IN) :: dimsize
1880 LOGICAL,
INTENT(IN) ,
DIMENSION(nbp_lon*jj_nb,dimsize) :: varin
1881 LOGICAL,
INTENT(OUT),
DIMENSION(klon_mpi,dimsize) :: varout
1882 INTEGER ::
i,
ij,offset
1885 IF (is_north_pole) offset=nbp_lon
1889 varout(
ij,
i)=varin(
ij+offset-1,
i)
1893 IF (is_north_pole)
THEN
1895 varout(1,
i)=varin(1,
i)