Changeset 3892
- Timestamp:
- Jan 25, 2016, 10:32:40 AM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
dynamico_lmdz/aquaplanet/LMDZ5/libf/dyn3dmem/mod_hallo.F90
r3809 r3892 46 46 47 47 INTERFACE Register_SwapField_u 48 MODULE PROCEDURE Register_SwapField1d_u,Register_SwapField2d_u1d,Register_SwapField3d_u 48 MODULE PROCEDURE Register_SwapField1d_u,Register_SwapField2d_u1d,Register_SwapField3d_u, & 49 Register_SwapField1d_u_bis,Register_SwapField2d_u1d_bis,Register_SwapField3d_u_bis 49 50 END INTERFACE Register_SwapField_u 50 51 51 52 INTERFACE Register_SwapField_v 52 MODULE PROCEDURE Register_SwapField1d_v,Register_SwapField2d_v1d,Register_SwapField3d_v 53 MODULE PROCEDURE Register_SwapField1d_v,Register_SwapField2d_v1d,Register_SwapField3d_v,& 54 Register_SwapField1d_v_bis,Register_SwapField2d_v1d_bis,Register_SwapField3d_v_bis 53 55 END INTERFACE Register_SwapField_v 54 56 55 57 INTERFACE Register_SwapField2d_u 56 MODULE PROCEDURE Register_SwapField1d_u2d,Register_SwapField2d_u2d,Register_SwapField3d_u2d 58 MODULE PROCEDURE Register_SwapField1d_u2d,Register_SwapField2d_u2d,Register_SwapField3d_u2d, & 59 Register_SwapField1d_u2d_bis,Register_SwapField2d_u2d_bis,Register_SwapField3d_u2d_bis 57 60 END INTERFACE Register_SwapField2d_u 58 61 59 62 INTERFACE Register_SwapField2d_v 60 MODULE PROCEDURE Register_SwapField1d_v2d,Register_SwapField2d_v2d,Register_SwapField3d_v2d 63 MODULE PROCEDURE Register_SwapField1d_v2d,Register_SwapField2d_v2d,Register_SwapField3d_v2d, & 64 Register_SwapField1d_v2d_bis,Register_SwapField2d_v2d_bis,Register_SwapField3d_v2d_bis 61 65 END INTERFACE Register_SwapField2d_v 62 66 … … 352 356 353 357 354 SUBROUTINE Register_SwapField1d_u(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 355 USE parallel_lmdz 356 USE dimensions_mod 357 IMPLICIT NONE 358 359 REAL, DIMENSION(:),INTENT(IN) :: FieldS 360 REAL, DIMENSION(:),INTENT(OUT) :: FieldR 361 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 358 SUBROUTINE Register_SwapField1d_u(FieldS,FieldR,new_dist,a_request,up,down) 359 USE parallel_lmdz 360 USE dimensions_mod 361 IMPLICIT NONE 362 362 363 TYPE(distrib),INTENT(IN) :: new_dist 363 INTEGER,OPTIONAL,INTENT(IN) :: up 364 INTEGER,OPTIONAL,INTENT(IN) :: down 365 TYPE(request),INTENT(INOUT) :: a_request 366 367 INTEGER :: halo_up 368 INTEGER :: halo_down 369 370 371 halo_up=0 372 halo_down=0 373 IF (PRESENT(up)) halo_up=up 374 IF (PRESENT(down)) halo_down=down 375 376 IF (PRESENT(old_dist)) THEN 377 CALL Register_SwapField_gen_u(FieldS,FieldR,1,old_dist,new_dist,halo_up,halo_down,a_request) 378 ELSE 379 CALL Register_SwapField_gen_u(FieldS,FieldR,1,current_dist,new_dist,halo_up,halo_down,a_request) 380 ENDIF 364 REAL, DIMENSION(current_dist%ijb_u:),INTENT(IN) :: FieldS 365 REAL, DIMENSION(new_dist%ijb_u:),INTENT(OUT) :: FieldR 366 INTEGER,OPTIONAL,INTENT(IN) :: up 367 INTEGER,OPTIONAL,INTENT(IN) :: down 368 TYPE(request),INTENT(INOUT) :: a_request 369 370 INTEGER :: halo_up 371 INTEGER :: halo_down 372 373 374 halo_up=0 375 halo_down=0 376 IF (PRESENT(up)) halo_up=up 377 IF (PRESENT(down)) halo_down=down 378 379 CALL Register_SwapField_gen_u(FieldS,FieldR,1,current_dist,new_dist,halo_up,halo_down,a_request) 381 380 382 381 END SUBROUTINE Register_SwapField1d_u 383 382 384 385 SUBROUTINE Register_SwapField2d_u1d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 383 SUBROUTINE Register_SwapField1d_u_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 384 USE parallel_lmdz 385 USE dimensions_mod 386 IMPLICIT NONE 387 388 TYPE(distrib),INTENT(IN) :: new_dist 389 TYPE(distrib),INTENT(IN) :: old_dist 390 REAL, DIMENSION(old_dist%ijb_u:),INTENT(IN) :: FieldS 391 REAL, DIMENSION(new_dist%ijb_u:),INTENT(OUT) :: FieldR 392 INTEGER,OPTIONAL,INTENT(IN) :: up 393 INTEGER,OPTIONAL,INTENT(IN) :: down 394 TYPE(request),INTENT(INOUT) :: a_request 395 396 INTEGER :: halo_up 397 INTEGER :: halo_down 398 399 400 halo_up=0 401 halo_down=0 402 IF (PRESENT(up)) halo_up=up 403 IF (PRESENT(down)) halo_down=down 404 405 CALL Register_SwapField_gen_u(FieldS,FieldR,1,old_dist,new_dist,halo_up,halo_down,a_request) 406 407 END SUBROUTINE Register_SwapField1d_u_bis 408 409 410 SUBROUTINE Register_SwapField2d_u1d(FieldS,FieldR,new_dist,a_request,up,down) 386 411 USE parallel_lmdz 387 412 USE dimensions_mod 388 413 IMPLICIT NONE 389 414 390 REAL, DIMENSION(:,:),INTENT(IN) :: FieldS391 REAL, DIMENSION(:,:),INTENT(OUT) :: FieldR392 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist393 415 TYPE(distrib),INTENT(IN) :: new_dist 416 REAL, DIMENSION(current_dist%ijb_u:,:),INTENT(IN) :: FieldS 417 REAL, DIMENSION(new_dist%ijb_u:,:),INTENT(OUT) :: FieldR 394 418 INTEGER,OPTIONAL,INTENT(IN) :: up 395 419 INTEGER,OPTIONAL,INTENT(IN) :: down … … 408 432 ll=size(FieldS,2) 409 433 410 IF (PRESENT(old_dist)) THEN 411 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 412 ELSE 413 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 414 ENDIF 434 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 415 435 416 436 END SUBROUTINE Register_SwapField2d_u1d 417 418 419 SUBROUTINE Register_SwapField3d_u(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 420 USE parallel_lmdz 421 USE dimensions_mod 422 IMPLICIT NONE 423 424 REAL, DIMENSION(:,:,:),INTENT(IN) :: FieldS 425 REAL, DIMENSION(:,:,:),INTENT(OUT) :: FieldR 426 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 437 438 SUBROUTINE Register_SwapField2d_u1d_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 439 USE parallel_lmdz 440 USE dimensions_mod 441 IMPLICIT NONE 442 427 443 TYPE(distrib),INTENT(IN) :: new_dist 444 TYPE(distrib),INTENT(IN) :: old_dist 445 REAL, DIMENSION(old_dist%ijb_u:,:),INTENT(IN) :: FieldS 446 REAL, DIMENSION(new_dist%ijb_u:,:),INTENT(OUT) :: FieldR 428 447 INTEGER,OPTIONAL,INTENT(IN) :: up 429 448 INTEGER,OPTIONAL,INTENT(IN) :: down … … 440 459 IF (PRESENT(down)) halo_down=down 441 460 461 ll=size(FieldS,2) 462 463 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 464 465 END SUBROUTINE Register_SwapField2d_u1d_bis 466 467 468 SUBROUTINE Register_SwapField3d_u(FieldS,FieldR,new_dist,a_request,up,down) 469 USE parallel_lmdz 470 USE dimensions_mod 471 IMPLICIT NONE 472 473 TYPE(distrib),INTENT(IN) :: new_dist 474 REAL, DIMENSION(current_dist%ijb_u:,:,:),INTENT(IN) :: FieldS 475 REAL, DIMENSION(new_dist%ijb_u:,:,:),INTENT(OUT) :: FieldR 476 INTEGER,OPTIONAL,INTENT(IN) :: up 477 INTEGER,OPTIONAL,INTENT(IN) :: down 478 TYPE(request),INTENT(INOUT) :: a_request 479 480 INTEGER :: halo_up 481 INTEGER :: halo_down 482 INTEGER :: ll 483 484 485 halo_up=0 486 halo_down=0 487 IF (PRESENT(up)) halo_up=up 488 IF (PRESENT(down)) halo_down=down 489 442 490 ll=size(FieldS,2)*size(FieldS,3) 443 491 444 IF (PRESENT(old_dist)) THEN 445 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 446 ELSE 447 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 448 ENDIF 492 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 449 493 450 494 END SUBROUTINE Register_SwapField3d_u 451 452 453 454 SUBROUTINE Register_SwapField1d_u2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 455 USE parallel_lmdz 456 USE dimensions_mod 457 458 IMPLICIT NONE 459 460 REAL, DIMENSION(:,:),INTENT(IN) :: FieldS 461 REAL, DIMENSION(:,:),INTENT(OUT) :: FieldR 462 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 463 TYPE(distrib),OPTIONAL,INTENT(IN) :: new_dist !LF 464 INTEGER,OPTIONAL,INTENT(IN) :: up 465 INTEGER,OPTIONAL,INTENT(IN) :: down 466 TYPE(request),INTENT(INOUT) :: a_request 467 468 INTEGER :: halo_up 469 INTEGER :: halo_down 470 471 472 halo_up=0 473 halo_down=0 474 IF (PRESENT(up)) halo_up=up 475 IF (PRESENT(down)) halo_down=down 476 477 IF (PRESENT(old_dist)) THEN 478 CALL Register_SwapField_gen_u(FieldS,FieldR,1,old_dist,new_dist,halo_up,halo_down,a_request) 479 ELSE 480 CALL Register_SwapField_gen_u(FieldS,FieldR,1,current_dist,new_dist,halo_up,halo_down,a_request) 481 ENDIF 495 496 SUBROUTINE Register_SwapField3d_u_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 497 USE parallel_lmdz 498 USE dimensions_mod 499 IMPLICIT NONE 500 501 TYPE(distrib),INTENT(IN) :: new_dist 502 TYPE(distrib),INTENT(IN) :: old_dist 503 REAL, DIMENSION(old_dist%ijb_u:,:,:),INTENT(IN) :: FieldS 504 REAL, DIMENSION(new_dist%ijb_u:,:,:),INTENT(OUT) :: FieldR 505 INTEGER,OPTIONAL,INTENT(IN) :: up 506 INTEGER,OPTIONAL,INTENT(IN) :: down 507 TYPE(request),INTENT(INOUT) :: a_request 508 509 INTEGER :: halo_up 510 INTEGER :: halo_down 511 INTEGER :: ll 512 513 514 halo_up=0 515 halo_down=0 516 IF (PRESENT(up)) halo_up=up 517 IF (PRESENT(down)) halo_down=down 518 519 ll=size(FieldS,2)*size(FieldS,3) 520 521 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 522 523 END SUBROUTINE Register_SwapField3d_u_bis 524 525 526 527 SUBROUTINE Register_SwapField1d_u2d(FieldS,FieldR,new_dist,a_request,up,down) 528 USE parallel_lmdz 529 USE dimensions_mod 530 531 IMPLICIT NONE 532 533 TYPE(distrib),INTENT(IN) :: new_dist !LF 534 REAL, DIMENSION(current_dist%jjb_u:,:),INTENT(IN) :: FieldS 535 REAL, DIMENSION(new_dist%jjb_u:,:),INTENT(OUT) :: FieldR 536 INTEGER,OPTIONAL,INTENT(IN) :: up 537 INTEGER,OPTIONAL,INTENT(IN) :: down 538 TYPE(request),INTENT(INOUT) :: a_request 539 540 INTEGER :: halo_up 541 INTEGER :: halo_down 542 543 544 halo_up=0 545 halo_down=0 546 IF (PRESENT(up)) halo_up=up 547 IF (PRESENT(down)) halo_down=down 548 549 CALL Register_SwapField_gen_u(FieldS,FieldR,1,current_dist,new_dist,halo_up,halo_down,a_request) 482 550 483 551 END SUBROUTINE Register_SwapField1d_u2d 484 552 485 486 SUBROUTINE Register_SwapField2d_u2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 487 USE parallel_lmdz 488 USE dimensions_mod 489 490 IMPLICIT NONE 491 492 REAL, DIMENSION(:,:,:),INTENT(IN) :: FieldS 493 REAL, DIMENSION(:,:,:),INTENT(OUT) :: FieldR 494 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 553 SUBROUTINE Register_SwapField1d_u2d_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 554 USE parallel_lmdz 555 USE dimensions_mod 556 557 IMPLICIT NONE 558 559 TYPE(distrib),INTENT(IN) :: new_dist !LF 560 TYPE(distrib),INTENT(IN) :: old_dist 561 REAL, DIMENSION(old_dist%jjb_u:,:),INTENT(IN) :: FieldS 562 REAL, DIMENSION(new_dist%jjb_u:,:),INTENT(OUT) :: FieldR 563 INTEGER,OPTIONAL,INTENT(IN) :: up 564 INTEGER,OPTIONAL,INTENT(IN) :: down 565 TYPE(request),INTENT(INOUT) :: a_request 566 567 INTEGER :: halo_up 568 INTEGER :: halo_down 569 570 571 halo_up=0 572 halo_down=0 573 IF (PRESENT(up)) halo_up=up 574 IF (PRESENT(down)) halo_down=down 575 576 CALL Register_SwapField_gen_u(FieldS,FieldR,1,old_dist,new_dist,halo_up,halo_down,a_request) 577 578 END SUBROUTINE Register_SwapField1d_u2d_bis 579 580 581 SUBROUTINE Register_SwapField2d_u2d(FieldS,FieldR,new_dist,a_request,up,down) 582 USE parallel_lmdz 583 USE dimensions_mod 584 585 IMPLICIT NONE 586 495 587 TYPE(distrib),INTENT(IN) :: new_dist 588 REAL, DIMENSION(current_dist%jjb_u:,:,:),INTENT(IN) :: FieldS 589 REAL, DIMENSION(new_dist%jjb_u:,:,:),INTENT(OUT) :: FieldR 496 590 INTEGER,OPTIONAL,INTENT(IN) :: up 497 591 INTEGER,OPTIONAL,INTENT(IN) :: down … … 510 604 ll=size(FieldS,3) 511 605 512 IF (PRESENT(old_dist)) THEN 513 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 514 ELSE 515 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 516 ENDIF 606 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 517 607 518 608 END SUBROUTINE Register_SwapField2d_u2d 519 520 521 SUBROUTINE Register_SwapField3d_u2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 522 USE parallel_lmdz 523 USE dimensions_mod 524 IMPLICIT NONE 525 526 REAL, DIMENSION(:,:,:,:),INTENT(IN) :: FieldS 527 REAL, DIMENSION(:,:,:,:),INTENT(OUT) :: FieldR 528 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 609 610 SUBROUTINE Register_SwapField2d_u2d_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 611 USE parallel_lmdz 612 USE dimensions_mod 613 614 IMPLICIT NONE 615 529 616 TYPE(distrib),INTENT(IN) :: new_dist 617 TYPE(distrib),INTENT(IN) :: old_dist 618 REAL, DIMENSION(old_dist%jjb_u:,:,:),INTENT(IN) :: FieldS 619 REAL, DIMENSION(new_dist%jjb_u:,:,:),INTENT(OUT) :: FieldR 530 620 INTEGER,OPTIONAL,INTENT(IN) :: up 531 621 INTEGER,OPTIONAL,INTENT(IN) :: down … … 542 632 IF (PRESENT(down)) halo_down=down 543 633 634 ll=size(FieldS,3) 635 636 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 637 638 END SUBROUTINE Register_SwapField2d_u2d_bis 639 640 641 SUBROUTINE Register_SwapField3d_u2d(FieldS,FieldR,new_dist,a_request,up,down) 642 USE parallel_lmdz 643 USE dimensions_mod 644 IMPLICIT NONE 645 646 TYPE(distrib),INTENT(IN) :: new_dist 647 REAL, DIMENSION(current_dist%jjb_u:,:,:,:),INTENT(IN) :: FieldS 648 REAL, DIMENSION(new_dist%jjb_u:,:,:,:),INTENT(OUT) :: FieldR 649 INTEGER,OPTIONAL,INTENT(IN) :: up 650 INTEGER,OPTIONAL,INTENT(IN) :: down 651 TYPE(request),INTENT(INOUT) :: a_request 652 653 INTEGER :: halo_up 654 INTEGER :: halo_down 655 INTEGER :: ll 656 657 658 halo_up=0 659 halo_down=0 660 IF (PRESENT(up)) halo_up=up 661 IF (PRESENT(down)) halo_down=down 662 544 663 ll=size(FieldS,3)*size(FieldS,4) 545 664 546 IF (PRESENT(old_dist)) THEN 547 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 548 ELSE 549 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 550 ENDIF 665 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 551 666 552 667 END SUBROUTINE Register_SwapField3d_u2d 553 668 554 555 556 557 558 559 560 SUBROUTINE Register_SwapField1d_v(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 561 USE parallel_lmdz 562 USE dimensions_mod 563 IMPLICIT NONE 564 565 REAL, DIMENSION(:),INTENT(IN) :: FieldS 566 REAL, DIMENSION(:),INTENT(OUT) :: FieldR 567 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 669 SUBROUTINE Register_SwapField3d_u2d_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 670 USE parallel_lmdz 671 USE dimensions_mod 672 IMPLICIT NONE 673 568 674 TYPE(distrib),INTENT(IN) :: new_dist 569 INTEGER,OPTIONAL,INTENT(IN) :: up 570 INTEGER,OPTIONAL,INTENT(IN) :: down 571 TYPE(request),INTENT(INOUT) :: a_request 572 573 INTEGER :: halo_up 574 INTEGER :: halo_down 575 576 577 halo_up=0 578 halo_down=0 579 IF (PRESENT(up)) halo_up=up 580 IF (PRESENT(down)) halo_down=down 581 582 IF (PRESENT(old_dist)) THEN 583 CALL Register_SwapField_gen_v(FieldS,FieldR,1,old_dist,new_dist,halo_up,halo_down,a_request) 584 ELSE 585 CALL Register_SwapField_gen_v(FieldS,FieldR,1,current_dist,new_dist,halo_up,halo_down,a_request) 586 ENDIF 675 TYPE(distrib),INTENT(IN) :: old_dist 676 REAL, DIMENSION(old_dist%jjb_u:,:,:,:),INTENT(IN) :: FieldS 677 REAL, DIMENSION(new_dist%jjb_u:,:,:,:),INTENT(OUT) :: FieldR 678 INTEGER,OPTIONAL,INTENT(IN) :: up 679 INTEGER,OPTIONAL,INTENT(IN) :: down 680 TYPE(request),INTENT(INOUT) :: a_request 681 682 INTEGER :: halo_up 683 INTEGER :: halo_down 684 INTEGER :: ll 685 686 687 halo_up=0 688 halo_down=0 689 IF (PRESENT(up)) halo_up=up 690 IF (PRESENT(down)) halo_down=down 691 692 ll=size(FieldS,3)*size(FieldS,4) 693 694 CALL Register_SwapField_gen_u(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 695 696 END SUBROUTINE Register_SwapField3d_u2d_bis 697 698 699 700 701 702 703 704 SUBROUTINE Register_SwapField1d_v(FieldS,FieldR,new_dist,a_request,up,down) 705 USE parallel_lmdz 706 USE dimensions_mod 707 IMPLICIT NONE 708 709 TYPE(distrib),INTENT(IN) :: new_dist 710 REAL, DIMENSION(current_dist%ijb_v:),INTENT(IN) :: FieldS 711 REAL, DIMENSION(new_dist%ijb_v:),INTENT(OUT) :: FieldR 712 INTEGER,OPTIONAL,INTENT(IN) :: up 713 INTEGER,OPTIONAL,INTENT(IN) :: down 714 TYPE(request),INTENT(INOUT) :: a_request 715 716 INTEGER :: halo_up 717 INTEGER :: halo_down 718 719 720 halo_up=0 721 halo_down=0 722 IF (PRESENT(up)) halo_up=up 723 IF (PRESENT(down)) halo_down=down 724 725 CALL Register_SwapField_gen_v(FieldS,FieldR,1,current_dist,new_dist,halo_up,halo_down,a_request) 587 726 588 727 END SUBROUTINE Register_SwapField1d_v 589 728 590 591 SUBROUTINE Register_SwapField2d_v1d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 592 USE parallel_lmdz 593 USE dimensions_mod 594 IMPLICIT NONE 595 596 REAL, DIMENSION(:,:),INTENT(IN) :: FieldS 597 REAL, DIMENSION(:,:),INTENT(OUT) :: FieldR 598 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 729 SUBROUTINE Register_SwapField1d_v_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 730 USE parallel_lmdz 731 USE dimensions_mod 732 IMPLICIT NONE 733 599 734 TYPE(distrib),INTENT(IN) :: new_dist 735 TYPE(distrib),INTENT(IN) :: old_dist 736 REAL, DIMENSION(old_dist%ijb_v:),INTENT(IN) :: FieldS 737 REAL, DIMENSION(new_dist%ijb_v:),INTENT(OUT) :: FieldR 738 INTEGER,OPTIONAL,INTENT(IN) :: up 739 INTEGER,OPTIONAL,INTENT(IN) :: down 740 TYPE(request),INTENT(INOUT) :: a_request 741 742 INTEGER :: halo_up 743 INTEGER :: halo_down 744 745 746 halo_up=0 747 halo_down=0 748 IF (PRESENT(up)) halo_up=up 749 IF (PRESENT(down)) halo_down=down 750 751 CALL Register_SwapField_gen_v(FieldS,FieldR,1,old_dist,new_dist,halo_up,halo_down,a_request) 752 753 END SUBROUTINE Register_SwapField1d_v_bis 754 755 756 SUBROUTINE Register_SwapField2d_v1d(FieldS,FieldR,new_dist,a_request,up,down) 757 USE parallel_lmdz 758 USE dimensions_mod 759 IMPLICIT NONE 760 761 TYPE(distrib),INTENT(IN) :: new_dist 762 REAL, DIMENSION(current_dist%ijb_v:,:),INTENT(IN) :: FieldS 763 REAL, DIMENSION(new_dist%ijb_v:,:),INTENT(OUT) :: FieldR 600 764 INTEGER,OPTIONAL,INTENT(IN) :: up 601 765 INTEGER,OPTIONAL,INTENT(IN) :: down … … 614 778 ll=size(FieldS,2) 615 779 616 IF (PRESENT(old_dist)) THEN 617 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 618 ELSE 619 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 620 ENDIF 780 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 621 781 622 782 END SUBROUTINE Register_SwapField2d_v1d 623 624 625 SUBROUTINE Register_SwapField3d_v(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 626 USE parallel_lmdz 627 USE dimensions_mod 628 IMPLICIT NONE 629 630 REAL, DIMENSION(:,:,:),INTENT(IN) :: FieldS 631 REAL, DIMENSION(:,:,:),INTENT(OUT) :: FieldR 632 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 783 784 SUBROUTINE Register_SwapField2d_v1d_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 785 USE parallel_lmdz 786 USE dimensions_mod 787 IMPLICIT NONE 788 633 789 TYPE(distrib),INTENT(IN) :: new_dist 790 TYPE(distrib),INTENT(IN) :: old_dist 791 REAL, DIMENSION(old_dist%ijb_v:,:),INTENT(IN) :: FieldS 792 REAL, DIMENSION(new_dist%ijb_v:,:),INTENT(OUT) :: FieldR 634 793 INTEGER,OPTIONAL,INTENT(IN) :: up 635 794 INTEGER,OPTIONAL,INTENT(IN) :: down … … 646 805 IF (PRESENT(down)) halo_down=down 647 806 807 ll=size(FieldS,2) 808 809 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 810 811 END SUBROUTINE Register_SwapField2d_v1d_bis 812 813 814 815 SUBROUTINE Register_SwapField3d_v(FieldS,FieldR,new_dist,a_request,up,down) 816 USE parallel_lmdz 817 USE dimensions_mod 818 IMPLICIT NONE 819 820 TYPE(distrib),INTENT(IN) :: new_dist 821 REAL, DIMENSION(current_dist%ijb_v:,:,:),INTENT(IN) :: FieldS 822 REAL, DIMENSION(new_dist%ijb_v:,:,:),INTENT(OUT) :: FieldR 823 INTEGER,OPTIONAL,INTENT(IN) :: up 824 INTEGER,OPTIONAL,INTENT(IN) :: down 825 TYPE(request),INTENT(INOUT) :: a_request 826 827 INTEGER :: halo_up 828 INTEGER :: halo_down 829 INTEGER :: ll 830 831 832 halo_up=0 833 halo_down=0 834 IF (PRESENT(up)) halo_up=up 835 IF (PRESENT(down)) halo_down=down 836 648 837 ll=size(FieldS,2)*size(FieldS,3) 649 838 650 IF (PRESENT(old_dist)) THEN 651 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 652 ELSE 653 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 654 ENDIF 839 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 655 840 656 841 END SUBROUTINE Register_SwapField3d_v 657 842 658 659 660 661 SUBROUTINE Register_SwapField1d_v2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 662 USE parallel_lmdz 663 USE dimensions_mod 664 IMPLICIT NONE 665 666 REAL, DIMENSION(:,:),INTENT(IN) :: FieldS 667 REAL, DIMENSION(:,:),INTENT(OUT) :: FieldR 668 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 669 TYPE(distrib),OPTIONAL,INTENT(IN) :: new_dist !LF 670 INTEGER,OPTIONAL,INTENT(IN) :: up 671 INTEGER,OPTIONAL,INTENT(IN) :: down 672 TYPE(request),INTENT(INOUT) :: a_request 673 674 INTEGER :: halo_up 675 INTEGER :: halo_down 676 677 678 halo_up=0 679 halo_down=0 680 IF (PRESENT(up)) halo_up=up 681 IF (PRESENT(down)) halo_down=down 682 683 IF (PRESENT(old_dist)) THEN 684 CALL Register_SwapField_gen_v(FieldS,FieldR,1,old_dist,new_dist,halo_up,halo_down,a_request) 685 ELSE 686 CALL Register_SwapField_gen_v(FieldS,FieldR,1,current_dist,new_dist,halo_up,halo_down,a_request) 687 ENDIF 843 SUBROUTINE Register_SwapField3d_v_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 844 USE parallel_lmdz 845 USE dimensions_mod 846 IMPLICIT NONE 847 848 TYPE(distrib),INTENT(IN) :: new_dist 849 TYPE(distrib),INTENT(IN) :: old_dist 850 REAL, DIMENSION(old_dist%ijb_v:,:,:),INTENT(IN) :: FieldS 851 REAL, DIMENSION(new_dist%ijb_v:,:,:),INTENT(OUT) :: FieldR 852 INTEGER,OPTIONAL,INTENT(IN) :: up 853 INTEGER,OPTIONAL,INTENT(IN) :: down 854 TYPE(request),INTENT(INOUT) :: a_request 855 856 INTEGER :: halo_up 857 INTEGER :: halo_down 858 INTEGER :: ll 859 860 861 halo_up=0 862 halo_down=0 863 IF (PRESENT(up)) halo_up=up 864 IF (PRESENT(down)) halo_down=down 865 866 ll=size(FieldS,2)*size(FieldS,3) 867 868 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 869 870 END SUBROUTINE Register_SwapField3d_v_bis 871 872 873 874 875 SUBROUTINE Register_SwapField1d_v2d(FieldS,FieldR,new_dist,a_request,up,down) 876 USE parallel_lmdz 877 USE dimensions_mod 878 IMPLICIT NONE 879 880 TYPE(distrib),INTENT(IN) :: new_dist !LF 881 REAL, DIMENSION(current_dist%jjb_v:,:),INTENT(IN) :: FieldS 882 REAL, DIMENSION(new_dist%jjb_v:,:),INTENT(OUT) :: FieldR 883 INTEGER,OPTIONAL,INTENT(IN) :: up 884 INTEGER,OPTIONAL,INTENT(IN) :: down 885 TYPE(request),INTENT(INOUT) :: a_request 886 887 INTEGER :: halo_up 888 INTEGER :: halo_down 889 890 891 halo_up=0 892 halo_down=0 893 IF (PRESENT(up)) halo_up=up 894 IF (PRESENT(down)) halo_down=down 895 896 CALL Register_SwapField_gen_v(FieldS,FieldR,1,current_dist,new_dist,halo_up,halo_down,a_request) 688 897 689 898 END SUBROUTINE Register_SwapField1d_v2d 690 899 691 692 SUBROUTINE Register_SwapField2d_v2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 693 USE parallel_lmdz 694 USE dimensions_mod 695 IMPLICIT NONE 696 697 REAL, DIMENSION(:,:,:),INTENT(IN) :: FieldS 698 REAL, DIMENSION(:,:,:),INTENT(OUT) :: FieldR 699 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 900 SUBROUTINE Register_SwapField1d_v2d_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 901 USE parallel_lmdz 902 USE dimensions_mod 903 IMPLICIT NONE 904 905 TYPE(distrib),INTENT(IN) :: new_dist !LF 906 TYPE(distrib),INTENT(IN) :: old_dist 907 REAL, DIMENSION(old_dist%jjb_v:,:),INTENT(IN) :: FieldS 908 REAL, DIMENSION(new_dist%jjb_v:,:),INTENT(OUT) :: FieldR 909 INTEGER,OPTIONAL,INTENT(IN) :: up 910 INTEGER,OPTIONAL,INTENT(IN) :: down 911 TYPE(request),INTENT(INOUT) :: a_request 912 913 INTEGER :: halo_up 914 INTEGER :: halo_down 915 916 917 halo_up=0 918 halo_down=0 919 IF (PRESENT(up)) halo_up=up 920 IF (PRESENT(down)) halo_down=down 921 922 CALL Register_SwapField_gen_v(FieldS,FieldR,1,old_dist,new_dist,halo_up,halo_down,a_request) 923 924 END SUBROUTINE Register_SwapField1d_v2d_bis 925 926 927 SUBROUTINE Register_SwapField2d_v2d(FieldS,FieldR,new_dist,a_request,up,down) 928 USE parallel_lmdz 929 USE dimensions_mod 930 IMPLICIT NONE 931 700 932 TYPE(distrib),INTENT(IN) :: new_dist 933 REAL, DIMENSION(current_dist%jjb_v:,:,:),INTENT(IN) :: FieldS 934 REAL, DIMENSION(new_dist%jjb_v:,:,:),INTENT(OUT) :: FieldR 701 935 INTEGER,OPTIONAL,INTENT(IN) :: up 702 936 INTEGER,OPTIONAL,INTENT(IN) :: down … … 715 949 ll=size(FieldS,3) 716 950 717 IF (PRESENT(old_dist)) THEN 718 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 719 ELSE 720 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 721 ENDIF 951 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 722 952 723 953 END SUBROUTINE Register_SwapField2d_v2d 724 954 725 726 SUBROUTINE Register_SwapField3d_v2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 727 USE parallel_lmdz 728 USE dimensions_mod 729 IMPLICIT NONE 730 731 REAL, DIMENSION(:,:,:,:),INTENT(IN) :: FieldS 732 REAL, DIMENSION(:,:,:,:),INTENT(OUT) :: FieldR 733 TYPE(distrib),OPTIONAL,INTENT(IN) :: old_dist 955 SUBROUTINE Register_SwapField2d_v2d_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 956 USE parallel_lmdz 957 USE dimensions_mod 958 IMPLICIT NONE 959 734 960 TYPE(distrib),INTENT(IN) :: new_dist 961 TYPE(distrib),INTENT(IN) :: old_dist 962 REAL, DIMENSION(old_dist%jjb_v:,:,:),INTENT(IN) :: FieldS 963 REAL, DIMENSION(new_dist%jjb_v:,:,:),INTENT(OUT) :: FieldR 735 964 INTEGER,OPTIONAL,INTENT(IN) :: up 736 965 INTEGER,OPTIONAL,INTENT(IN) :: down … … 747 976 IF (PRESENT(down)) halo_down=down 748 977 978 ll=size(FieldS,3) 979 980 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 981 982 END SUBROUTINE Register_SwapField2d_v2d_bis 983 984 985 SUBROUTINE Register_SwapField3d_v2d(FieldS,FieldR,new_dist,a_request,up,down) 986 USE parallel_lmdz 987 USE dimensions_mod 988 IMPLICIT NONE 989 990 TYPE(distrib),INTENT(IN) :: new_dist 991 REAL, DIMENSION(current_dist%jjb_v:,:,:,:),INTENT(IN) :: FieldS 992 REAL, DIMENSION(new_dist%jjb_v:,:,:,:),INTENT(OUT) :: FieldR 993 INTEGER,OPTIONAL,INTENT(IN) :: up 994 INTEGER,OPTIONAL,INTENT(IN) :: down 995 TYPE(request),INTENT(INOUT) :: a_request 996 997 INTEGER :: halo_up 998 INTEGER :: halo_down 999 INTEGER :: ll 1000 1001 1002 halo_up=0 1003 halo_down=0 1004 IF (PRESENT(up)) halo_up=up 1005 IF (PRESENT(down)) halo_down=down 1006 749 1007 ll=size(FieldS,3)*size(FieldS,4) 750 1008 751 IF (PRESENT(old_dist)) THEN 752 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 753 ELSE 754 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 755 ENDIF 1009 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,current_dist,new_dist,halo_up,halo_down,a_request) 756 1010 757 1011 END SUBROUTINE Register_SwapField3d_v2d 1012 1013 SUBROUTINE Register_SwapField3d_v2d_bis(FieldS,FieldR,new_dist,a_request,old_dist,up,down) 1014 USE parallel_lmdz 1015 USE dimensions_mod 1016 IMPLICIT NONE 1017 1018 TYPE(distrib),INTENT(IN) :: new_dist 1019 TYPE(distrib),INTENT(IN) :: old_dist 1020 REAL, DIMENSION(old_dist%jjb_v:,:,:,:),INTENT(IN) :: FieldS 1021 REAL, DIMENSION(new_dist%jjb_v:,:,:,:),INTENT(OUT) :: FieldR 1022 INTEGER,OPTIONAL,INTENT(IN) :: up 1023 INTEGER,OPTIONAL,INTENT(IN) :: down 1024 TYPE(request),INTENT(INOUT) :: a_request 1025 1026 INTEGER :: halo_up 1027 INTEGER :: halo_down 1028 INTEGER :: ll 1029 1030 1031 halo_up=0 1032 halo_down=0 1033 IF (PRESENT(up)) halo_up=up 1034 IF (PRESENT(down)) halo_down=down 1035 1036 ll=size(FieldS,3)*size(FieldS,4) 1037 1038 CALL Register_SwapField_gen_v(FieldS,FieldR,ll,old_dist,new_dist,halo_up,halo_down,a_request) 1039 1040 END SUBROUTINE Register_SwapField3d_v2d_bis 758 1041 759 1042
Note: See TracChangeset
for help on using the changeset viewer.