Changeset 1001 for LMDZ4/trunk/libf/phylmd/mod_phys_lmdz_mpi_transfert.F90
- Timestamp:
- Oct 6, 2008, 11:11:53 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/mod_phys_lmdz_mpi_transfert.F90
r775 r1001 66 66 CHARACTER(LEN=*),INTENT(INOUT) :: Var1 67 67 68 #ifndef CPP_PARA69 RETURN70 #endif71 72 68 CALL bcast_mpi_cgen(Var1,len(Var1)) 69 73 70 END SUBROUTINE bcast_mpi_c 74 71 75 72 !! -- Les entiers -- !! 76 73 77 SUBROUTINE bcast_mpi_i(var1) 74 SUBROUTINE bcast_mpi_i(var) 75 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root 78 76 IMPLICIT NONE 79 INTEGER,INTENT(INOUT) :: Var1 80 81 #ifndef CPP_PARA 82 RETURN 83 #endif 84 CALL bcast_mpi_igen(Var1,1) 77 INTEGER,INTENT(INOUT) :: Var 78 79 INTEGER :: var_tmp(1) 80 81 IF (is_mpi_root) var_tmp(1)=var 82 CALL bcast_mpi_igen(Var_tmp,1) 83 var=var_tmp(1) 84 85 85 END SUBROUTINE bcast_mpi_i 86 86 … … 88 88 IMPLICIT NONE 89 89 INTEGER,INTENT(INOUT) :: Var(:) 90 91 #ifndef CPP_PARA 92 RETURN 93 #endif 90 94 91 CALL bcast_mpi_igen(Var,size(Var)) 92 95 93 END SUBROUTINE bcast_mpi_i1 96 94 … … 99 97 INTEGER,INTENT(INOUT) :: Var(:,:) 100 98 101 #ifndef CPP_PARA102 RETURN103 #endif104 99 CALL bcast_mpi_igen(Var,size(Var)) 100 105 101 END SUBROUTINE bcast_mpi_i2 106 102 … … 109 105 INTEGER,INTENT(INOUT) :: Var(:,:,:) 110 106 111 #ifndef CPP_PARA112 RETURN113 #endif114 107 CALL bcast_mpi_igen(Var,size(Var)) 108 115 109 END SUBROUTINE bcast_mpi_i3 116 110 … … 119 113 INTEGER,INTENT(INOUT) :: Var(:,:,:,:) 120 114 121 #ifndef CPP_PARA122 RETURN123 #endif124 115 CALL bcast_mpi_igen(Var,size(Var)) 116 125 117 END SUBROUTINE bcast_mpi_i4 126 118 … … 129 121 130 122 SUBROUTINE bcast_mpi_r(var) 123 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root 131 124 IMPLICIT NONE 132 125 REAL,INTENT(INOUT) :: Var 133 134 #ifndef CPP_PARA 135 RETURN 136 #endif 137 CALL bcast_mpi_rgen(Var,1) 126 REAL :: var_tmp(1) 127 128 IF (is_mpi_root) var_tmp(1)=var 129 CALL bcast_mpi_rgen(Var_tmp,1) 130 var=var_tmp(1) 131 138 132 END SUBROUTINE bcast_mpi_r 139 133 … … 142 136 REAL,INTENT(INOUT) :: Var(:) 143 137 144 #ifndef CPP_PARA145 RETURN146 #endif147 138 CALL bcast_mpi_rgen(Var,size(Var)) 139 148 140 END SUBROUTINE bcast_mpi_r1 149 141 … … 152 144 REAL,INTENT(INOUT) :: Var(:,:) 153 145 154 #ifndef CPP_PARA155 RETURN156 #endif157 146 CALL bcast_mpi_rgen(Var,size(Var)) 147 158 148 END SUBROUTINE bcast_mpi_r2 159 149 … … 162 152 REAL,INTENT(INOUT) :: Var(:,:,:) 163 153 164 #ifndef CPP_PARA165 RETURN166 #endif167 154 CALL bcast_mpi_rgen(Var,size(Var)) 155 168 156 END SUBROUTINE bcast_mpi_r3 169 157 … … 172 160 REAL,INTENT(INOUT) :: Var(:,:,:,:) 173 161 174 #ifndef CPP_PARA175 RETURN176 #endif177 162 CALL bcast_mpi_rgen(Var,size(Var)) 163 178 164 END SUBROUTINE bcast_mpi_r4 179 165 … … 181 167 182 168 SUBROUTINE bcast_mpi_l(var) 169 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root 183 170 IMPLICIT NONE 184 171 LOGICAL,INTENT(INOUT) :: Var 185 186 #ifndef CPP_PARA 187 RETURN 188 #endif 189 CALL bcast_mpi_lgen(Var,1) 172 LOGICAL :: var_tmp(1) 173 174 IF (is_mpi_root) var_tmp(1)=var 175 CALL bcast_mpi_lgen(Var_tmp,1) 176 var=var_tmp(1) 177 190 178 END SUBROUTINE bcast_mpi_l 191 179 … … 194 182 LOGICAL,INTENT(INOUT) :: Var(:) 195 183 196 #ifndef CPP_PARA197 RETURN198 #endif199 184 CALL bcast_mpi_lgen(Var,size(Var)) 185 200 186 END SUBROUTINE bcast_mpi_l1 201 187 … … 204 190 LOGICAL,INTENT(INOUT) :: Var(:,:) 205 191 206 #ifndef CPP_PARA207 RETURN208 #endif209 192 CALL bcast_mpi_lgen(Var,size(Var)) 193 210 194 END SUBROUTINE bcast_mpi_l2 211 195 … … 214 198 LOGICAL,INTENT(INOUT) :: Var(:,:,:) 215 199 216 #ifndef CPP_PARA217 RETURN218 #endif219 200 CALL bcast_mpi_lgen(Var,size(Var)) 201 220 202 END SUBROUTINE bcast_mpi_l3 221 203 … … 224 206 LOGICAL,INTENT(INOUT) :: Var(:,:,:,:) 225 207 226 #ifndef CPP_PARA227 RETURN228 #endif229 208 CALL bcast_mpi_lgen(Var,size(Var)) 209 230 210 END SUBROUTINE bcast_mpi_l4 231 211 … … 241 221 INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut 242 222 243 INTEGER :: dummy 244 245 #ifndef CPP_PARA 246 VarOut(:)=VarIn(:) 247 RETURN 248 #endif 249 250 IF (is_mpi_root) THEN 251 CALL scatter_mpi_igen(VarIn,Varout,1) 252 ELSE 253 CALL scatter_mpi_igen(dummy,Varout,1) 254 ENDIF 223 CALL scatter_mpi_igen(VarIn,Varout,1) 255 224 256 225 END SUBROUTINE scatter_mpi_i … … 263 232 INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut 264 233 265 INTEGER :: dummy 266 267 #ifndef CPP_PARA 268 VarOut(:,:)=VarIn(:,:) 269 RETURN 270 #endif 271 IF (is_mpi_root) THEN 272 CALL scatter_mpi_igen(VarIn,Varout,Size(VarOut,2)) 273 ELSE 274 CALL scatter_mpi_igen(dummy,Varout,Size(VarOut,2)) 275 ENDIF 234 CALL scatter_mpi_igen(VarIn,Varout,Size(VarOut,2)) 276 235 277 236 END SUBROUTINE scatter_mpi_i1 … … 284 243 INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 285 244 286 INTEGER :: dummy 287 288 #ifndef CPP_PARA 289 VarOut(:,:,:)=VarIn(:,:,:) 290 RETURN 291 #endif 292 IF (is_mpi_root) THEN 293 CALL scatter_mpi_igen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)) 294 ELSE 295 CALL scatter_mpi_igen(dummy,Varout,Size(VarOut,2)*Size(VarOut,3)) 296 ENDIF 245 CALL scatter_mpi_igen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)) 246 297 247 END SUBROUTINE scatter_mpi_i2 298 248 … … 304 254 INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 305 255 306 INTEGER :: dummy 307 308 #ifndef CPP_PARA 309 VarOut(:,:,:,:)=VarIn(:,:,:,:) 310 RETURN 311 #endif 312 IF (is_mpi_root) THEN 313 CALL scatter_mpi_igen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4)) 314 ELSE 315 CALL scatter_mpi_igen(dummy,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4)) 316 ENDIF 256 CALL scatter_mpi_igen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4)) 317 257 318 258 END SUBROUTINE scatter_mpi_i3 … … 326 266 REAL,INTENT(OUT),DIMENSION(:) :: VarOut 327 267 328 REAL :: dummy329 330 #ifndef CPP_PARA331 VarOut(:)=VarIn(:)332 RETURN333 #endif334 IF (is_mpi_root) THEN335 268 CALL scatter_mpi_rgen(VarIn,Varout,1) 336 ELSE337 CALL scatter_mpi_rgen(dummy,Varout,1)338 ENDIF339 269 340 270 END SUBROUTINE scatter_mpi_r … … 347 277 REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut 348 278 349 REAL :: dummy350 351 #ifndef CPP_PARA352 VarOut(:,:)=VarIn(:,:)353 RETURN354 #endif355 IF (is_mpi_root) THEN356 279 CALL scatter_mpi_rgen(VarIn,Varout,Size(VarOut,2)) 357 ELSE358 CALL scatter_mpi_rgen(dummy,Varout,Size(VarOut,2))359 ENDIF360 280 361 281 END SUBROUTINE scatter_mpi_r1 … … 368 288 REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 369 289 370 REAL :: dummy371 372 #ifndef CPP_PARA373 VarOut(:,:,:)=VarIn(:,:,:)374 RETURN375 #endif376 IF (is_mpi_root) THEN377 290 CALL scatter_mpi_rgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)) 378 ELSE379 CALL scatter_mpi_rgen(dummy,Varout,Size(VarOut,2)*Size(VarOut,3))380 ENDIF381 291 382 292 END SUBROUTINE scatter_mpi_r2 … … 389 299 REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 390 300 391 REAL :: dummy392 393 #ifndef CPP_PARA394 VarOut(:,:,:,:)=VarIn(:,:,:,:)395 RETURN396 #endif397 IF (is_mpi_root) THEN398 301 CALL scatter_mpi_rgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4)) 399 ELSE400 CALL scatter_mpi_rgen(dummy,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4))401 ENDIF402 302 403 303 END SUBROUTINE scatter_mpi_r3 … … 411 311 LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut 412 312 413 LOGICAL :: dummy414 415 #ifndef CPP_PARA416 VarOut(:)=VarIn(:)417 RETURN418 #endif419 IF (is_mpi_root) THEN420 313 CALL scatter_mpi_lgen(VarIn,Varout,1) 421 ELSE422 CALL scatter_mpi_lgen(dummy,Varout,1)423 ENDIF424 314 425 315 END SUBROUTINE scatter_mpi_l … … 432 322 LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut 433 323 434 LOGICAL :: dummy435 436 #ifndef CPP_PARA437 VarOut(:,:)=VarIn(:,:)438 RETURN439 #endif440 IF (is_mpi_root) THEN441 324 CALL scatter_mpi_lgen(VarIn,Varout,Size(VarOut,2)) 442 ELSE443 CALL scatter_mpi_lgen(dummy,Varout,Size(VarOut,2))444 ENDIF445 325 446 326 END SUBROUTINE scatter_mpi_l1 … … 453 333 LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 454 334 455 LOGICAL :: dummy456 457 #ifndef CPP_PARA458 VarOut(:,:,:)=VarIn(:,:,:)459 RETURN460 #endif461 IF (is_mpi_root) THEN462 335 CALL scatter_mpi_lgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)) 463 ELSE464 CALL scatter_mpi_lgen(dummy,Varout,Size(VarOut,2)*Size(VarOut,3))465 ENDIF466 336 467 337 END SUBROUTINE scatter_mpi_l2 … … 474 344 LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 475 345 476 LOGICAL :: dummy477 478 #ifndef CPP_PARA479 VarOut(:,:,:,:)=VarIn(:,:,:,:)480 RETURN481 #endif482 IF (is_mpi_root) THEN483 346 CALL scatter_mpi_lgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4)) 484 ELSE485 CALL scatter_mpi_lgen(dummy,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4))486 ENDIF487 347 488 348 END SUBROUTINE scatter_mpi_l3 … … 501 361 INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut 502 362 503 INTEGER :: dummy504 505 #ifndef CPP_PARA506 VarOut(:)=VarIn(:)507 RETURN508 #endif509 510 IF (is_mpi_root) THEN511 363 CALL gather_mpi_igen(VarIn,VarOut,1) 512 ELSE513 CALL gather_mpi_igen(VarIn,dummy,1)514 ENDIF515 364 516 365 END SUBROUTINE gather_mpi_i 517 518 519 520 366 521 367 … … 529 375 INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut 530 376 531 INTEGER :: dummy532 533 #ifndef CPP_PARA534 VarOut(:,:)=VarIn(:,:)535 RETURN536 #endif537 538 IF (is_mpi_root) THEN539 377 CALL gather_mpi_igen(VarIn,VarOut,Size(VarIn,2)) 540 ELSE541 CALL gather_mpi_igen(VarIn,dummy,Size(VarIn,2))542 ENDIF543 378 544 379 END SUBROUTINE gather_mpi_i1 … … 553 388 INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 554 389 555 INTEGER :: dummy556 557 #ifndef CPP_PARA558 VarOut(:,:,:)=VarIn(:,:,:)559 RETURN560 #endif561 562 IF (is_mpi_root) THEN563 390 CALL gather_mpi_igen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)) 564 ELSE565 CALL gather_mpi_igen(VarIn,dummy,Size(VarIn,2)*Size(VarIn,3))566 ENDIF567 391 568 392 END SUBROUTINE gather_mpi_i2 … … 577 401 INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 578 402 579 INTEGER :: dummy580 581 #ifndef CPP_PARA582 VarOut(:,:,:,:)=VarIn(:,:,:,:)583 RETURN584 #endif585 586 IF (is_mpi_root) THEN587 403 CALL gather_mpi_igen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4)) 588 ELSE589 CALL gather_mpi_igen(VarIn,dummy,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4))590 ENDIF591 404 592 405 END SUBROUTINE gather_mpi_i3 … … 601 414 REAL,INTENT(OUT),DIMENSION(:) :: VarOut 602 415 603 REAL :: dummy604 605 #ifndef CPP_PARA606 VarOut(:)=VarIn(:)607 RETURN608 #endif609 610 IF (is_mpi_root) THEN611 416 CALL gather_mpi_rgen(VarIn,VarOut,1) 612 ELSE613 CALL gather_mpi_rgen(VarIn,dummy,1)614 ENDIF615 417 616 418 END SUBROUTINE gather_mpi_r … … 625 427 REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut 626 428 627 REAL :: dummy628 629 #ifndef CPP_PARA630 VarOut(:,:)=VarIn(:,:)631 RETURN632 #endif633 634 IF (is_mpi_root) THEN635 429 CALL gather_mpi_rgen(VarIn,VarOut,Size(VarIn,2)) 636 ELSE637 CALL gather_mpi_rgen(VarIn,dummy,Size(VarIn,2))638 ENDIF639 430 640 431 END SUBROUTINE gather_mpi_r1 … … 649 440 REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 650 441 651 REAL :: dummy652 653 #ifndef CPP_PARA654 VarOut(:,:,:)=VarIn(:,:,:)655 RETURN656 #endif657 658 IF (is_mpi_root) THEN659 442 CALL gather_mpi_rgen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)) 660 ELSE661 CALL gather_mpi_rgen(VarIn,dummy,Size(VarIn,2)*Size(VarIn,3))662 ENDIF663 443 664 444 END SUBROUTINE gather_mpi_r2 … … 673 453 REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 674 454 675 REAL :: dummy676 677 #ifndef CPP_PARA678 VarOut(:,:,:,:)=VarIn(:,:,:,:)679 RETURN680 #endif681 682 IF (is_mpi_root) THEN683 455 CALL gather_mpi_rgen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4)) 684 ELSE685 CALL gather_mpi_rgen(VarIn,dummy,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4))686 ENDIF687 456 688 457 END SUBROUTINE gather_mpi_r3 … … 697 466 LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut 698 467 699 LOGICAL :: dummy700 701 #ifndef CPP_PARA702 VarOut(:)=VarIn(:)703 RETURN704 #endif705 706 IF (is_mpi_root) THEN707 468 CALL gather_mpi_lgen(VarIn,VarOut,1) 708 ELSE709 CALL gather_mpi_lgen(VarIn,dummy,1)710 ENDIF711 469 712 470 END SUBROUTINE gather_mpi_l … … 721 479 LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut 722 480 723 LOGICAL :: dummy724 725 #ifndef CPP_PARA726 VarOut(:,:)=VarIn(:,:)727 RETURN728 #endif729 730 IF (is_mpi_root) THEN731 481 CALL gather_mpi_lgen(VarIn,VarOut,Size(VarIn,2)) 732 ELSE733 CALL gather_mpi_lgen(VarIn,dummy,Size(VarIn,2))734 ENDIF735 482 736 483 END SUBROUTINE gather_mpi_l1 … … 745 492 LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 746 493 747 LOGICAL :: dummy748 749 #ifndef CPP_PARA750 VarOut(:,:,:)=VarIn(:,:,:)751 RETURN752 #endif753 754 IF (is_mpi_root) THEN755 494 CALL gather_mpi_lgen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)) 756 ELSE757 CALL gather_mpi_lgen(VarIn,dummy,Size(VarIn,2)*Size(VarIn,3))758 ENDIF759 495 760 496 END SUBROUTINE gather_mpi_l2 … … 769 505 LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 770 506 771 LOGICAL :: dummy 772 773 #ifndef CPP_PARA 774 VarOut(:,:,:,:)=VarIn(:,:,:,:) 775 RETURN 776 #endif 777 778 IF (is_mpi_root) THEN 779 CALL gather_mpi_lgen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4)) 780 ELSE 781 CALL gather_mpi_lgen(VarIn,dummy,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4)) 782 ENDIF 507 CALL gather_mpi_lgen(VarIn,VarOut,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4)) 783 508 784 509 END SUBROUTINE gather_mpi_l3 … … 808 533 INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn 809 534 INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut 810 811 CALL body(VarIn,VarOut,size(VarOut,2)) 812 813 CONTAINS 814 SUBROUTINE body(VarIn,VarOut,s1) 815 INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn 816 INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut 817 INTEGER,INTENT(IN) :: s1 818 819 INTEGER,DIMENSION(klon_glo,s1) :: Var_tmp 820 821 CALL grid2dTo1d_glo(VarIn,Var_tmp) 822 CALL scatter_mpi(Var_tmp,VarOut) 823 END SUBROUTINE body 535 INTEGER,DIMENSION(klon_glo,size(VarOut,2)) :: Var_tmp 536 537 CALL grid2dTo1d_glo(VarIn,Var_tmp) 538 CALL scatter_mpi(Var_tmp,VarOut) 824 539 825 540 END SUBROUTINE scatter2D_mpi_i1 … … 831 546 INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn 832 547 INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 833 834 CALL body(VarIn,VarOut,size(VarOut,2),size(VarOut,3)) 835 836 CONTAINS 837 SUBROUTINE body(VarIn,VarOut,s1,s2) 838 INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn 839 INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 840 INTEGER,INTENT(IN) :: s1,s2 841 842 INTEGER,DIMENSION(klon_glo,s1,s2) :: Var_tmp 843 844 CALL grid2dTo1d_glo(VarIn,Var_tmp) 845 CALL scatter_mpi(Var_tmp,VarOut) 846 END SUBROUTINE body 548 549 INTEGER,DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3)) :: Var_tmp 550 551 CALL grid2dTo1d_glo(VarIn,Var_tmp) 552 CALL scatter_mpi(Var_tmp,VarOut) 847 553 848 554 END SUBROUTINE scatter2D_mpi_i2 … … 854 560 INTEGER,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn 855 561 INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 856 857 CALL body(VarIn,VarOut,size(VarOut,2),size(VarOut,3),size(VarOut,4)) 858 859 CONTAINS 860 SUBROUTINE body(VarIn,VarOut,s1,s2,s3) 861 INTEGER,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn 862 INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 863 INTEGER,INTENT(IN) :: s1,s2,s3 864 865 INTEGER,DIMENSION(klon_glo,s1,s2,s3) :: Var_tmp 866 867 CALL grid2dTo1d_glo(VarIn,Var_tmp) 868 CALL scatter_mpi(Var_tmp,VarOut) 869 END SUBROUTINE body 870 871 562 INTEGER,DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3),size(VarOut,4)) :: Var_tmp 563 564 CALL grid2dTo1d_glo(VarIn,Var_tmp) 565 CALL scatter_mpi(Var_tmp,VarOut) 566 872 567 END SUBROUTINE scatter2D_mpi_i3 873 568 … … 894 589 REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn 895 590 REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut 896 897 CALL body(VarIn,VarOut,size(VarOut,2)) 898 899 CONTAINS 900 SUBROUTINE body(VarIn,VarOut,s1) 901 REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn 902 REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut 903 INTEGER,INTENT(IN) :: s1 904 905 REAL,DIMENSION(klon_glo,s1) :: Var_tmp 906 907 CALL grid2dTo1d_glo(VarIn,Var_tmp) 908 CALL scatter_mpi(Var_tmp,VarOut) 909 END SUBROUTINE body 591 592 REAL,DIMENSION(klon_glo,size(VarOut,2)) :: Var_tmp 593 594 CALL grid2dTo1d_glo(VarIn,Var_tmp) 595 CALL scatter_mpi(Var_tmp,VarOut) 910 596 911 597 END SUBROUTINE scatter2D_mpi_r1 … … 918 604 REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn 919 605 REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 920 921 CALL body(VarIn,VarOut,size(VarOut,2),size(VarOut,3)) 922 923 CONTAINS 924 SUBROUTINE body(VarIn,VarOut,s1,s2) 925 REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn 926 REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 927 INTEGER,INTENT(IN) :: s1,s2 928 929 REAL,DIMENSION(klon_glo,s1,s2) :: Var_tmp 930 931 CALL grid2dTo1d_glo(VarIn,Var_tmp) 932 CALL scatter_mpi(Var_tmp,VarOut) 933 END SUBROUTINE body 606 607 REAL,DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3)) :: Var_tmp 608 609 CALL grid2dTo1d_glo(VarIn,Var_tmp) 610 CALL scatter_mpi(Var_tmp,VarOut) 934 611 935 612 END SUBROUTINE scatter2D_mpi_r2 … … 942 619 REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 943 620 944 CALL body(VarIn,VarOut,size(VarOut,2),size(VarOut,3),size(VarOut,4)) 945 946 CONTAINS 947 SUBROUTINE body(VarIn,VarOut,s1,s2,s3) 948 REAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn 949 REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 950 INTEGER,INTENT(IN) :: s1,s2,s3 951 952 REAL,DIMENSION(klon_glo,s1,s2,s3) :: Var_tmp 953 954 CALL grid2dTo1d_glo(VarIn,Var_tmp) 955 CALL scatter_mpi(Var_tmp,VarOut) 956 END SUBROUTINE body 621 REAL,DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3),size(VarOut,4)) :: Var_tmp 622 623 CALL grid2dTo1d_glo(VarIn,Var_tmp) 624 CALL scatter_mpi(Var_tmp,VarOut) 957 625 958 626 END SUBROUTINE scatter2D_mpi_r3 … … 981 649 LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut 982 650 983 CALL body(VarIn,VarOut,size(VarOut,2)) 984 985 CONTAINS 986 SUBROUTINE body(VarIn,VarOut,s1) 987 LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn 988 LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut 989 INTEGER,INTENT(IN) :: s1 990 991 LOGICAL,DIMENSION(klon_glo,s1) :: Var_tmp 992 993 CALL grid2dTo1d_glo(VarIn,Var_tmp) 994 CALL scatter_mpi(Var_tmp,VarOut) 995 END SUBROUTINE body 651 LOGICAL,DIMENSION(klon_glo,size(VarOut,2)) :: Var_tmp 652 653 CALL grid2dTo1d_glo(VarIn,Var_tmp) 654 CALL scatter_mpi(Var_tmp,VarOut) 996 655 997 656 END SUBROUTINE scatter2D_mpi_l1 … … 1005 664 LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 1006 665 1007 CALL body(VarIn,VarOut,size(VarOut,2),size(VarOut,3)) 1008 1009 CONTAINS 1010 SUBROUTINE body(VarIn,VarOut,s1,s2) 1011 LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn 1012 LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 1013 INTEGER,INTENT(IN) :: s1,s2 1014 1015 LOGICAL,DIMENSION(klon_glo,s1,s2) :: Var_tmp 1016 1017 CALL grid2dTo1d_glo(VarIn,Var_tmp) 1018 CALL scatter_mpi(Var_tmp,VarOut) 1019 END SUBROUTINE body 666 LOGICAL, DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3)) :: Var_tmp 667 668 CALL grid2dTo1d_glo(VarIn,Var_tmp) 669 CALL scatter_mpi(Var_tmp,VarOut) 1020 670 1021 671 END SUBROUTINE scatter2D_mpi_l2 … … 1028 678 LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 1029 679 1030 CALL body(VarIn,VarOut,size(VarOut,2),size(VarOut,3),size(VarOut,4)) 1031 1032 CONTAINS 1033 SUBROUTINE body(VarIn,VarOut,s1,s2,s3) 1034 LOGICAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn 1035 LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 1036 INTEGER,INTENT(IN) :: s1,s2,s3 1037 1038 LOGICAL,DIMENSION(klon_glo,s1,s2,s3) :: Var_tmp 1039 1040 CALL grid2dTo1d_glo(VarIn,Var_tmp) 1041 CALL scatter_mpi(Var_tmp,VarOut) 1042 END SUBROUTINE body 680 LOGICAL,DIMENSION(klon_glo,size(VarOut,2),size(VarOut,3),size(VarOut,4)) :: Var_tmp 681 682 CALL grid2dTo1d_glo(VarIn,Var_tmp) 683 CALL scatter_mpi(Var_tmp,VarOut) 1043 684 1044 685 END SUBROUTINE scatter2D_mpi_l3 … … 1069 710 INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn 1070 711 INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 1071 1072 CALL body(VarIn,VarOut,size(VarOut,3)) 1073 1074 CONTAINS 1075 SUBROUTINE body(VarIn,VarOut,s1) 1076 INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn 1077 INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 1078 INTEGER,INTENT(IN) :: s1 1079 1080 INTEGER,DIMENSION(klon_glo,s1) :: Var_tmp 1081 1082 CALL gather_mpi(VarIn,Var_tmp) 1083 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1084 END SUBROUTINE body 712 713 INTEGER,DIMENSION(klon_glo,size(VarOut,3)) :: Var_tmp 714 715 CALL gather_mpi(VarIn,Var_tmp) 716 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1085 717 1086 718 END SUBROUTINE gather2D_mpi_i1 … … 1092 724 INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn 1093 725 INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 1094 1095 CALL body(VarIn,VarOut,size(VarOut,3),SIZE(VarOut,4)) 1096 1097 CONTAINS 1098 SUBROUTINE body(VarIn,VarOut,s1,s2) 1099 INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn 1100 INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 1101 INTEGER,INTENT(IN) :: s1,s2 1102 1103 INTEGER,DIMENSION(klon_glo,s1,s2) :: Var_tmp 1104 1105 CALL gather_mpi(VarIn,Var_tmp) 1106 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1107 END SUBROUTINE body 726 727 INTEGER,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4)) :: Var_tmp 728 729 CALL gather_mpi(VarIn,Var_tmp) 730 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1108 731 1109 732 END SUBROUTINE gather2D_mpi_i2 … … 1115 738 INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn 1116 739 INTEGER,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut 1117 1118 CALL body(VarIn,VarOut,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) 1119 1120 CONTAINS 1121 SUBROUTINE body(VarIn,VarOut,s1,s2,s3) 1122 INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn 1123 INTEGER,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut 1124 INTEGER,INTENT(IN) :: s1,s2,s3 1125 1126 INTEGER,DIMENSION(klon_glo,s1,s2,s3) :: Var_tmp 1127 1128 CALL gather_mpi(VarIn,Var_tmp) 1129 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1130 END SUBROUTINE body 740 741 INTEGER,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) :: Var_tmp 742 743 CALL gather_mpi(VarIn,Var_tmp) 744 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1131 745 1132 746 END SUBROUTINE gather2D_mpi_i3 … … 1155 769 REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 1156 770 1157 CALL body(VarIn,VarOut,size(VarOut,3)) 1158 1159 CONTAINS 1160 SUBROUTINE body(VarIn,VarOut,s1) 1161 REAL,INTENT(IN),DIMENSION(:,:) :: VarIn 1162 REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 1163 INTEGER,INTENT(IN) :: s1 1164 1165 REAL,DIMENSION(klon_glo,s1) :: Var_tmp 1166 1167 CALL gather_mpi(VarIn,Var_tmp) 1168 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1169 END SUBROUTINE body 771 REAL,DIMENSION(klon_glo,size(VarOut,3)) :: Var_tmp 772 773 CALL gather_mpi(VarIn,Var_tmp) 774 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1170 775 1171 776 END SUBROUTINE gather2D_mpi_r1 … … 1178 783 REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 1179 784 1180 CALL body(VarIn,VarOut,size(VarOut,3),SIZE(VarOut,4)) 1181 1182 CONTAINS 1183 SUBROUTINE body(VarIn,VarOut,s1,s2) 1184 REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn 1185 REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 1186 INTEGER,INTENT(IN) :: s1,s2 1187 1188 REAL,DIMENSION(klon_glo,s1,s2) :: Var_tmp 1189 1190 CALL gather_mpi(VarIn,Var_tmp) 1191 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1192 END SUBROUTINE body 785 REAL,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4)) :: Var_tmp 786 787 CALL gather_mpi(VarIn,Var_tmp) 788 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1193 789 1194 790 END SUBROUTINE gather2D_mpi_r2 … … 1201 797 REAL,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut 1202 798 1203 CALL body(VarIn,VarOut,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) 1204 1205 CONTAINS 1206 SUBROUTINE body(VarIn,VarOut,s1,s2,s3) 1207 REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn 1208 REAL,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut 1209 INTEGER,INTENT(IN) :: s1,s2,s3 1210 1211 REAL,DIMENSION(klon_glo,s1,s2,s3) :: Var_tmp 1212 1213 CALL gather_mpi(VarIn,Var_tmp) 1214 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1215 END SUBROUTINE body 799 REAL,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) :: Var_tmp 800 801 CALL gather_mpi(VarIn,Var_tmp) 802 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1216 803 1217 804 END SUBROUTINE gather2D_mpi_r3 … … 1240 827 LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 1241 828 1242 CALL body(VarIn,VarOut,size(VarOut,3)) 1243 1244 CONTAINS 1245 SUBROUTINE body(VarIn,VarOut,s1) 1246 LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn 1247 LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 1248 INTEGER,INTENT(IN) :: s1 1249 1250 LOGICAL,DIMENSION(klon_glo,s1) :: Var_tmp 1251 1252 CALL gather_mpi(VarIn,Var_tmp) 1253 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1254 END SUBROUTINE body 829 LOGICAL,DIMENSION(klon_glo,size(VarOut,3)) :: Var_tmp 830 831 CALL gather_mpi(VarIn,Var_tmp) 832 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1255 833 1256 834 END SUBROUTINE gather2D_mpi_l1 … … 1263 841 LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 1264 842 1265 CALL body(VarIn,VarOut,size(VarOut,3),SIZE(VarOut,4)) 1266 1267 CONTAINS 1268 SUBROUTINE body(VarIn,VarOut,s1,s2) 1269 LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn 1270 LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 1271 INTEGER,INTENT(IN) :: s1,s2 1272 1273 LOGICAL,DIMENSION(klon_glo,s1,s2) :: Var_tmp 1274 1275 CALL gather_mpi(VarIn,Var_tmp) 1276 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1277 END SUBROUTINE body 843 LOGICAL,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4)) :: Var_tmp 844 845 CALL gather_mpi(VarIn,Var_tmp) 846 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1278 847 1279 848 END SUBROUTINE gather2D_mpi_l2 … … 1286 855 LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut 1287 856 1288 CALL body(VarIn,VarOut,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) 1289 1290 CONTAINS 1291 SUBROUTINE body(VarIn,VarOut,s1,s2,s3) 1292 LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn 1293 LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:,:) :: VarOut 1294 INTEGER,INTENT(IN) :: s1,s2,s3 1295 1296 LOGICAL,DIMENSION(klon_glo,s1,s2,s3) :: Var_tmp 1297 1298 CALL gather_mpi(VarIn,Var_tmp) 1299 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1300 END SUBROUTINE body 857 LOGICAL,DIMENSION(klon_glo,size(VarOut,3),SIZE(VarOut,4),SIZE(VarOut,5)) :: Var_tmp 858 859 CALL gather_mpi(VarIn,Var_tmp) 860 CALL grid1dTo2d_glo(Var_tmp,VarOut) 1301 861 1302 862 END SUBROUTINE gather2D_mpi_l3 … … 1313 873 INTEGER,INTENT(IN) :: VarIn 1314 874 INTEGER,INTENT(OUT) :: VarOut 1315 1316 INTEGER :: dummy 1317 1318 #ifndef CPP_PARA 1319 VarOut=VarIn 1320 RETURN 1321 #endif 1322 1323 IF (is_mpi_root) THEN 1324 CALL reduce_sum_mpi_igen(VarIn,Varout,1) 1325 ELSE 1326 CALL reduce_sum_mpi_igen(VarIn,dummy,1) 1327 ENDIF 1328 875 INTEGER :: VarIn_tmp(1) 876 INTEGER :: VarOut_tmp(1) 877 878 VarIn_tmp(1)=VarIn 879 CALL reduce_sum_mpi_igen(VarIn_tmp,Varout_tmp,1) 880 VarOut=VarOut_tmp(1) 881 1329 882 END SUBROUTINE reduce_sum_mpi_i 1330 883 … … 1336 889 INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut 1337 890 1338 INTEGER :: dummy 1339 1340 #ifndef CPP_PARA 1341 VarOut(:)=VarIn(:) 1342 RETURN 1343 #endif 1344 1345 IF (is_mpi_root) THEN 1346 CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) 1347 ELSE 1348 CALL reduce_sum_mpi_igen(VarIn,dummy,SIZE(VarIn)) 1349 ENDIF 891 CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) 1350 892 1351 893 END SUBROUTINE reduce_sum_mpi_i1 … … 1358 900 INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut 1359 901 1360 INTEGER :: dummy 1361 1362 #ifndef CPP_PARA 1363 VarOut(:,:)=VarIn(:,:) 1364 RETURN 1365 #endif 1366 1367 IF (is_mpi_root) THEN 1368 CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) 1369 ELSE 1370 CALL reduce_sum_mpi_igen(VarIn,dummy,SIZE(VarIn)) 1371 ENDIF 902 CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) 1372 903 1373 904 END SUBROUTINE reduce_sum_mpi_i2 … … 1380 911 INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 1381 912 1382 INTEGER :: dummy 1383 1384 #ifndef CPP_PARA 1385 VarOut(:,:,:)=VarIn(:,:,:) 1386 RETURN 1387 #endif 1388 1389 IF (is_mpi_root) THEN 1390 CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) 1391 ELSE 1392 CALL reduce_sum_mpi_igen(VarIn,dummy,SIZE(VarIn)) 1393 ENDIF 913 CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) 1394 914 1395 915 END SUBROUTINE reduce_sum_mpi_i3 … … 1402 922 INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 1403 923 1404 INTEGER :: dummy 1405 1406 #ifndef CPP_PARA 1407 VarOut(:,:,:,:)=VarIn(:,:,:,:) 1408 RETURN 1409 #endif 1410 1411 IF (is_mpi_root) THEN 1412 CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) 1413 ELSE 1414 CALL reduce_sum_mpi_igen(VarIn,dummy,SIZE(VarIn)) 1415 ENDIF 924 CALL reduce_sum_mpi_igen(VarIn,Varout,SIZE(VarIn)) 1416 925 1417 926 END SUBROUTINE reduce_sum_mpi_i4 … … 1424 933 REAL,INTENT(IN) :: VarIn 1425 934 REAL,INTENT(OUT) :: VarOut 1426 1427 REAL :: dummy 1428 1429 #ifndef CPP_PARA 1430 VarOut=VarIn 1431 RETURN 1432 #endif 1433 1434 IF (is_mpi_root) THEN 1435 CALL reduce_sum_mpi_rgen(VarIn,Varout,1) 1436 ELSE 1437 CALL reduce_sum_mpi_rgen(VarIn,dummy,1) 1438 ENDIF 935 REAL :: VarIn_tmp(1) 936 REAL :: VarOut_tmp(1) 937 938 VarIn_tmp(1)=VarIn 939 CALL reduce_sum_mpi_rgen(VarIn_tmp,Varout_tmp,1) 940 VarOut=VarOut_tmp(1) 1439 941 1440 942 END SUBROUTINE reduce_sum_mpi_r … … 1447 949 REAL,INTENT(OUT),DIMENSION(:) :: VarOut 1448 950 1449 REAL :: dummy 1450 1451 #ifndef CPP_PARA 1452 VarOut(:)=VarIn(:) 1453 RETURN 1454 #endif 1455 1456 IF (is_mpi_root) THEN 1457 CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) 1458 ELSE 1459 CALL reduce_sum_mpi_rgen(VarIn,dummy,SIZE(VarIn)) 1460 ENDIF 1461 951 CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) 952 1462 953 END SUBROUTINE reduce_sum_mpi_r1 1463 954 … … 1469 960 REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut 1470 961 1471 REAL :: dummy 1472 1473 #ifndef CPP_PARA 1474 VarOut(:,:)=VarIn(:,:) 1475 RETURN 1476 #endif 1477 1478 IF (is_mpi_root) THEN 1479 CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) 1480 ELSE 1481 CALL reduce_sum_mpi_rgen(VarIn,dummy,SIZE(VarIn)) 1482 ENDIF 962 CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) 1483 963 1484 964 END SUBROUTINE reduce_sum_mpi_r2 … … 1491 971 REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut 1492 972 1493 REAL :: dummy 1494 1495 #ifndef CPP_PARA 1496 VarOut(:,:,:)=VarIn(:,:,:) 1497 RETURN 1498 #endif 1499 1500 IF (is_mpi_root) THEN 1501 CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) 1502 ELSE 1503 CALL reduce_sum_mpi_rgen(VarIn,dummy,SIZE(VarIn)) 1504 ENDIF 973 CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) 1505 974 1506 975 END SUBROUTINE reduce_sum_mpi_r3 … … 1513 982 REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut 1514 983 1515 REAL :: dummy 1516 1517 #ifndef CPP_PARA 1518 VarOut(:,:,:,:)=VarIn(:,:,:,:) 1519 RETURN 1520 #endif 1521 1522 IF (is_mpi_root) THEN 1523 CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) 1524 ELSE 1525 CALL reduce_sum_mpi_rgen(VarIn,dummy,SIZE(VarIn)) 1526 ENDIF 984 CALL reduce_sum_mpi_rgen(VarIn,Varout,SIZE(VarIn)) 1527 985 1528 986 END SUBROUTINE reduce_sum_mpi_r4 … … 1769 1227 END SUBROUTINE grid2dTo1d_mpi_l3 1770 1228 1771 1772 1773 END MODULE mod_phys_lmdz_mpi_transfert 1229 1230 1774 1231 1775 1232 … … 1785 1242 INTEGER,INTENT(IN) :: nb 1786 1243 1787 #ifdef CPP_ PARA1244 #ifdef CPP_MPI 1788 1245 INCLUDE 'mpif.h' 1789 1246 #endif 1790 1247 INTEGER :: ierr 1791 1248 1792 IF (.not.is_ ok_mpi) RETURN1793 1794 #ifdef CPP_ PARA1249 IF (.not.is_using_mpi) RETURN 1250 1251 #ifdef CPP_MPI 1795 1252 CALL MPI_BCAST(Var,nb,MPI_CHARACTER,mpi_root_x,COMM_LMDZ_PHY,ierr) 1796 1253 #endif … … 1807 1264 INTEGER,INTENT(IN) :: nb 1808 1265 1809 #ifdef CPP_ PARA1266 #ifdef CPP_MPI 1810 1267 INCLUDE 'mpif.h' 1811 1268 #endif 1812 1269 INTEGER :: ierr 1813 1270 1814 IF (.not.is_ ok_mpi) RETURN1815 1816 #ifdef CPP_ PARA1271 IF (.not.is_using_mpi) RETURN 1272 1273 #ifdef CPP_MPI 1817 1274 CALL MPI_BCAST(Var,nb,MPI_INTEGER,mpi_root_x,COMM_LMDZ_PHY,ierr) 1818 1275 #endif … … 1830 1287 INTEGER,INTENT(IN) :: nb 1831 1288 1832 #ifdef CPP_ PARA1289 #ifdef CPP_MPI 1833 1290 INCLUDE 'mpif.h' 1834 1291 #endif 1835 1292 INTEGER :: ierr 1836 1293 1837 IF (.not.is_ ok_mpi) RETURN1838 1839 #ifdef CPP_ PARA1294 IF (.not.is_using_mpi) RETURN 1295 1296 #ifdef CPP_MPI 1840 1297 CALL MPI_BCAST(Var,nb,MPI_REAL_LMDZ,mpi_root_x,COMM_LMDZ_PHY,ierr) 1841 1298 #endif … … 1853 1310 INTEGER,INTENT(IN) :: nb 1854 1311 1855 #ifdef CPP_ PARA1312 #ifdef CPP_MPI 1856 1313 INCLUDE 'mpif.h' 1857 1314 #endif 1858 1315 INTEGER :: ierr 1859 1316 1860 IF (.not.is_ ok_mpi) RETURN1861 1862 #ifdef CPP_ PARA1317 IF (.not.is_using_mpi) RETURN 1318 1319 #ifdef CPP_MPI 1863 1320 CALL MPI_BCAST(Var,nb,MPI_LOGICAL,mpi_root_x,COMM_LMDZ_PHY,ierr) 1864 1321 #endif … … 1877 1334 INTEGER,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut 1878 1335 1879 #ifdef CPP_ PARA1336 #ifdef CPP_MPI 1880 1337 INCLUDE 'mpif.h' 1881 1338 #endif … … 1887 1344 1888 1345 1889 IF (.not.is_ ok_mpi) THEN1346 IF (.not.is_using_mpi) THEN 1890 1347 VarOut(:,:)=VarIn(:,:) 1891 1348 RETURN … … 1906 1363 ENDIF 1907 1364 1908 #ifdef CPP_ PARA1365 #ifdef CPP_MPI 1909 1366 CALL MPI_SCATTERV(VarTmp,counts,displs,MPI_INTEGER,VarOut,klon_mpi*dimsize, & 1910 1367 MPI_INTEGER,mpi_root_x, COMM_LMDZ_PHY,ierr) … … 1922 1379 REAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut 1923 1380 1924 #ifdef CPP_ PARA1381 #ifdef CPP_MPI 1925 1382 INCLUDE 'mpif.h' 1926 1383 #endif … … 1932 1389 INTEGER :: ierr 1933 1390 1934 IF (.not.is_ ok_mpi) THEN1391 IF (.not.is_using_mpi) THEN 1935 1392 VarOut(:,:)=VarIn(:,:) 1936 1393 RETURN … … 1950 1407 ENDIF 1951 1408 1952 #ifdef CPP_ PARA1409 #ifdef CPP_MPI 1953 1410 CALL MPI_SCATTERV(VarTmp,counts,displs,MPI_REAL_LMDZ,VarOut,klon_mpi*dimsize, & 1954 1411 MPI_REAL_LMDZ,mpi_root_x, COMM_LMDZ_PHY,ierr) … … 1968 1425 LOGICAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut 1969 1426 1970 #ifdef CPP_ PARA1427 #ifdef CPP_MPI 1971 1428 INCLUDE 'mpif.h' 1972 1429 #endif … … 1978 1435 INTEGER :: ierr 1979 1436 1980 IF (.not.is_ ok_mpi) THEN1437 IF (.not.is_using_mpi) THEN 1981 1438 VarOut(:,:)=VarIn(:,:) 1982 1439 RETURN … … 1996 1453 ENDIF 1997 1454 1998 #ifdef CPP_ PARA1455 #ifdef CPP_MPI 1999 1456 CALL MPI_SCATTERV(VarTmp,counts,displs,MPI_LOGICAL,VarOut,klon_mpi*dimsize, & 2000 1457 MPI_LOGICAL,mpi_root_x, COMM_LMDZ_PHY,ierr) … … 2011 1468 IMPLICIT NONE 2012 1469 2013 #ifdef CPP_ PARA1470 #ifdef CPP_MPI 2014 1471 INCLUDE 'mpif.h' 2015 1472 #endif … … 2025 1482 INTEGER :: ierr 2026 1483 2027 IF (.not.is_ ok_mpi) THEN1484 IF (.not.is_using_mpi) THEN 2028 1485 VarOut(:,:)=VarIn(:,:) 2029 1486 RETURN … … 2041 1498 ENDIF 2042 1499 2043 #ifdef CPP_ PARA1500 #ifdef CPP_MPI 2044 1501 CALL MPI_GATHERV(VarIn,klon_mpi*dimsize,MPI_INTEGER,VarTmp,counts,displs, & 2045 1502 MPI_INTEGER,mpi_root_x, COMM_LMDZ_PHY,ierr) … … 2065 1522 IMPLICIT NONE 2066 1523 2067 #ifdef CPP_ PARA1524 #ifdef CPP_MPI 2068 1525 INCLUDE 'mpif.h' 2069 1526 #endif … … 2089 1546 ENDIF 2090 1547 2091 IF (.not.is_ ok_mpi) THEN1548 IF (.not.is_using_mpi) THEN 2092 1549 VarOut(:,:)=VarIn(:,:) 2093 1550 RETURN 2094 1551 ENDIF 2095 1552 2096 #ifdef CPP_ PARA1553 #ifdef CPP_MPI 2097 1554 CALL MPI_GATHERV(VarIn,klon_mpi*dimsize,MPI_REAL_LMDZ,VarTmp,counts,displs, & 2098 1555 MPI_REAL_LMDZ,mpi_root_x, COMM_LMDZ_PHY,ierr) … … 2121 1578 LOGICAL,INTENT(OUT),DIMENSION(klon_glo,dimsize) :: VarOut 2122 1579 2123 #ifdef CPP_ PARA1580 #ifdef CPP_MPI 2124 1581 INCLUDE 'mpif.h' 2125 1582 #endif … … 2131 1588 INTEGER :: ierr 2132 1589 2133 IF (.not.is_ ok_mpi) THEN1590 IF (.not.is_using_mpi) THEN 2134 1591 VarOut(:,:)=VarIn(:,:) 2135 1592 RETURN … … 2147 1604 2148 1605 2149 #ifdef CPP_ PARA1606 #ifdef CPP_MPI 2150 1607 CALL MPI_GATHERV(VarIn,klon_mpi*dimsize,MPI_LOGICAL,VarTmp,counts,displs, & 2151 1608 MPI_LOGICAL,mpi_root_x, COMM_LMDZ_PHY,ierr) … … 2172 1629 IMPLICIT NONE 2173 1630 2174 #ifdef CPP_ PARA1631 #ifdef CPP_MPI 2175 1632 INCLUDE 'mpif.h' 2176 1633 #endif … … 2181 1638 INTEGER :: ierr 2182 1639 2183 IF (.not.is_ ok_mpi) THEN1640 IF (.not.is_using_mpi) THEN 2184 1641 VarOut(:)=VarIn(:) 2185 1642 RETURN … … 2187 1644 2188 1645 2189 #ifdef CPP_ PARA1646 #ifdef CPP_MPI 2190 1647 CALL MPI_REDUCE(VarIn,VarOut,nb,MPI_INTEGER,MPI_SUM,mpi_root_x,COMM_LMDZ_PHY,ierr) 2191 1648 #endif … … 2199 1656 IMPLICIT NONE 2200 1657 2201 #ifdef CPP_ PARA1658 #ifdef CPP_MPI 2202 1659 INCLUDE 'mpif.h' 2203 1660 #endif … … 2208 1665 INTEGER :: ierr 2209 1666 2210 IF (.not.is_ ok_mpi) THEN1667 IF (.not.is_using_mpi) THEN 2211 1668 VarOut(:)=VarIn(:) 2212 1669 RETURN 2213 1670 ENDIF 2214 1671 2215 #ifdef CPP_ PARA1672 #ifdef CPP_MPI 2216 1673 CALL MPI_REDUCE(VarIn,VarOut,nb,MPI_REAL_LMDZ,MPI_SUM,mpi_root_x,COMM_LMDZ_PHY,ierr) 2217 1674 #endif … … 2443 1900 END SUBROUTINE grid2dTo1d_mpi_lgen 2444 1901 1902 END MODULE mod_phys_lmdz_mpi_transfert
Note: See TracChangeset
for help on using the changeset viewer.