Changeset 1793
- Timestamp:
- 2010-01-06T20:20:12+01:00 (15 years ago)
- Location:
- trunk
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AGRIF/AGRIF_FILES/modbc.F
r1200 r1793 814 814 815 815 CALL MPI_ALLREDUCE(iminmaxg,lubglob,2*nbdim,MPI_INTEGER,MPI_MIN, 816 & MPI_COMM_ WORLD,code)816 & MPI_COMM_AGRIF,code) 817 817 818 818 lubglob(1:nbdim,2) = - lubglob(1:nbdim,2) -
trunk/AGRIF/AGRIF_FILES/modinterp.F
r1200 r1793 894 894 C 895 895 Call MPI_ALLGATHER(tab3,4*nbdim,MPI_INTEGER,tab4,4*nbdim, 896 & MPI_INTEGER,MPI_COMM_ WORLD,code)896 & MPI_INTEGER,MPI_COMM_AGRIF,code) 897 897 898 898 IF (.not.associated(tempPextend%var)) Allocate(tempPextend%var) … … 908 908 memberin1(1) = memberin 909 909 CALL MPI_ALLGATHER(memberin1,1,MPI_LOGICAL,memberinall, 910 & 1,MPI_LOGICAL,MPI_COMM_ WORLD,code)910 & 1,MPI_LOGICAL,MPI_COMM_AGRIF,code) 911 911 912 912 Call Get_External_Data_first(tab4t(:,:,1), -
trunk/AGRIF/AGRIF_FILES/modlinktomodel.F
r662 r1793 32 32 external Agrif_probdim_modtype_def 33 33 external Agrif_clustering_def 34 external Agrif_comm_def 34 35 C Interface 35 36 Interface -
trunk/AGRIF/AGRIF_FILES/modmpp.F
r898 r1793 67 67 68 68 CALL MPI_ALLGATHER(memberout1,1,MPI_LOGICAL,memberoutall, 69 & 1,MPI_LOGICAL,MPI_COMM_ WORLD,code)69 & 1,MPI_LOGICAL,MPI_COMM_AGRIF,code) 70 70 ENDIF 71 71 pttruetab2(:,Agrif_Procrank) = pttruetab(:,Agrif_Procrank) … … 207 207 208 208 CALL MPI_ALLGATHER(memberout1,1,MPI_LOGICAL,memberoutall, 209 & 1,MPI_LOGICAL,MPI_COMM_ WORLD,code)209 & 1,MPI_LOGICAL,MPI_COMM_AGRIF,code) 210 210 ENDIF 211 211 pttruetab2(:,Agrif_Procrank) = pttruetab(:,Agrif_Procrank) … … 356 356 C 357 357 Call MPI_SEND(sendtoproc(k),1,MPI_LOGICAL,k,etiquette, 358 & MPI_COMM_ WORLD,code)358 & MPI_COMM_AGRIF,code) 359 359 C 360 360 if (sendtoproc(k)) then … … 365 365 Call MPI_SEND(iminmax_temp(:,:,k), 366 366 & 2*nbdim,MPI_INTEGER,k,etiquette, 367 & MPI_COMM_ WORLD,code)367 & MPI_COMM_AGRIF,code) 368 368 C 369 369 datasize = 1 … … 381 381 & imin(1,k):imax(1,k)), 382 382 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 383 & MPI_COMM_ WORLD,code)383 & MPI_COMM_AGRIF,code) 384 384 CASE(2) 385 385 Call MPI_SEND(tempC%var%array2( … … 387 387 & imin(2,k):imax(2,k)), 388 388 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 389 & MPI_COMM_ WORLD,code)389 & MPI_COMM_AGRIF,code) 390 390 CASE(3) 391 391 … … 399 399 & imin(4,k):imax(4,k)), 400 400 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 401 & MPI_COMM_ WORLD,code)401 & MPI_COMM_AGRIF,code) 402 402 CASE(5) 403 403 Call MPI_SEND(tempC%var%array5( … … 408 408 & imin(5,k):imax(5,k)), 409 409 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 410 & MPI_COMM_ WORLD,code)410 & MPI_COMM_AGRIF,code) 411 411 CASE(6) 412 412 Call MPI_SEND(tempC%var%array6( … … 418 418 & imin(6,k):imax(6,k)), 419 419 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 420 & MPI_COMM_ WORLD,code)420 & MPI_COMM_AGRIF,code) 421 421 END SELECT 422 422 C … … 432 432 C 433 433 Call MPI_RECV(res,1,MPI_LOGICAL,k,etiquette, 434 & MPI_COMM_ WORLD,statut,code)434 & MPI_COMM_AGRIF,statut,code) 435 435 C 436 436 recvfromproc(k) = res … … 441 441 Call MPI_RECV(iminmax_temp(:,:,k), 442 442 & 2*nbdim,MPI_INTEGER,k,etiquette, 443 & MPI_COMM_ WORLD,statut,code)443 & MPI_COMM_AGRIF,statut,code) 444 444 445 445 imin_recv(:,k) = iminmax_temp(:,1,k) … … 462 462 Call MPI_RECV(temprecv%var%array1, 463 463 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 464 & MPI_COMM_ WORLD,statut,code)464 & MPI_COMM_AGRIF,statut,code) 465 465 CASE(2) 466 466 Call MPI_RECV(temprecv%var%array2, 467 467 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 468 & MPI_COMM_ WORLD,statut,code)468 & MPI_COMM_AGRIF,statut,code) 469 469 CASE(3) 470 470 Call MPI_RECV(temprecv%var%array3, 471 471 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 472 & MPI_COMM_ WORLD,statut,code)472 & MPI_COMM_AGRIF,statut,code) 473 473 474 474 CASE(4) 475 475 Call MPI_RECV(temprecv%var%array4, 476 476 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 477 & MPI_COMM_ WORLD,statut,code)477 & MPI_COMM_AGRIF,statut,code) 478 478 CASE(5) 479 479 Call MPI_RECV(temprecv%var%array5, 480 480 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 481 & MPI_COMM_ WORLD,statut,code)481 & MPI_COMM_AGRIF,statut,code) 482 482 CASE(6) 483 483 Call MPI_RECV(temprecv%var%array6, 484 484 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 485 & MPI_COMM_ WORLD,statut,code)485 & MPI_COMM_AGRIF,statut,code) 486 486 END SELECT 487 487 … … 503 503 504 504 Call MPI_SEND(sendtoproc(k),1,MPI_LOGICAL,k,etiquette, 505 & MPI_COMM_ WORLD,code)505 & MPI_COMM_AGRIF,code) 506 506 C 507 507 if (sendtoproc(k)) then … … 512 512 Call MPI_SEND(iminmax_temp(:,:,k), 513 513 & 2*nbdim,MPI_INTEGER,k,etiquette, 514 & MPI_COMM_ WORLD,code)514 & MPI_COMM_AGRIF,code) 515 515 C 516 516 SELECT CASE(nbdim) … … 521 521 & imin(1,k):imax(1,k)), 522 522 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 523 & MPI_COMM_ WORLD,code)523 & MPI_COMM_AGRIF,code) 524 524 CASE(2) 525 525 datasize=SIZE(tempC%var%array2( … … 530 530 & imin(2,k):imax(2,k)), 531 531 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 532 & MPI_COMM_ WORLD,code)532 & MPI_COMM_AGRIF,code) 533 533 CASE(3) 534 534 datasize=SIZE(tempC%var%array3( … … 541 541 & imin(3,k):imax(3,k)), 542 542 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 543 & MPI_COMM_ WORLD,code)543 & MPI_COMM_AGRIF,code) 544 544 CASE(4) 545 545 datasize=SIZE(tempC%var%array4( … … 554 554 & imin(4,k):imax(4,k)), 555 555 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 556 & MPI_COMM_ WORLD,code)556 & MPI_COMM_AGRIF,code) 557 557 CASE(5) 558 558 datasize=SIZE(tempC%var%array5( … … 569 569 & imin(5,k):imax(5,k)), 570 570 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 571 & MPI_COMM_ WORLD,code)571 & MPI_COMM_AGRIF,code) 572 572 CASE(6) 573 573 datasize=SIZE(tempC%var%array6( … … 586 586 & imin(6,k):imax(6,k)), 587 587 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 588 & MPI_COMM_ WORLD,code)588 & MPI_COMM_AGRIF,code) 589 589 END SELECT 590 590 C … … 600 600 C 601 601 Call MPI_RECV(res,1,MPI_LOGICAL,k,etiquette, 602 & MPI_COMM_ WORLD,statut,code)602 & MPI_COMM_AGRIF,statut,code) 603 603 C 604 604 recvfromproc(k) = res … … 609 609 Call MPI_RECV(iminmax_temp(:,:,k), 610 610 & 2*nbdim,MPI_INTEGER,k,etiquette, 611 & MPI_COMM_ WORLD,statut,code)611 & MPI_COMM_AGRIF,statut,code) 612 612 613 613 C imin_recv(:,k) = iminmax_temp(:,1,k) … … 629 629 Call MPI_RECV(temprecv%var%array1, 630 630 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 631 & MPI_COMM_ WORLD,statut,code)631 & MPI_COMM_AGRIF,statut,code) 632 632 CASE(2) 633 633 datasize=SIZE(temprecv%var%array2) 634 634 Call MPI_RECV(temprecv%var%array2, 635 635 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 636 & MPI_COMM_ WORLD,statut,code)636 & MPI_COMM_AGRIF,statut,code) 637 637 CASE(3) 638 638 datasize=SIZE(temprecv%var%array3) 639 639 Call MPI_RECV(temprecv%var%array3, 640 640 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 641 & MPI_COMM_ WORLD,statut,code)641 & MPI_COMM_AGRIF,statut,code) 642 642 643 643 CASE(4) … … 645 645 Call MPI_RECV(temprecv%var%array4, 646 646 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 647 & MPI_COMM_ WORLD,statut,code)647 & MPI_COMM_AGRIF,statut,code) 648 648 CASE(5) 649 649 datasize=SIZE(temprecv%var%array5) 650 650 Call MPI_RECV(temprecv%var%array5, 651 651 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 652 & MPI_COMM_ WORLD,statut,code)652 & MPI_COMM_AGRIF,statut,code) 653 653 CASE(6) 654 654 datasize=SIZE(temprecv%var%array6) 655 655 Call MPI_RECV(temprecv%var%array6, 656 656 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 657 & MPI_COMM_ WORLD,statut,code)657 & MPI_COMM_AGRIF,statut,code) 658 658 END SELECT 659 659 … … 693 693 C 694 694 Call MPI_SEND(sendtoproc(k),1,MPI_LOGICAL,k,etiquette, 695 & MPI_COMM_ WORLD,code)695 & MPI_COMM_AGRIF,code) 696 696 C 697 697 if (sendtoproc(k)) then … … 702 702 Call MPI_SEND(iminmax_temp(:,:,k), 703 703 & 2*nbdim,MPI_INTEGER,k,etiquette, 704 & MPI_COMM_ WORLD,code)704 & MPI_COMM_AGRIF,code) 705 705 C 706 706 endif … … 715 715 C 716 716 Call MPI_RECV(res,1,MPI_LOGICAL,k,etiquette, 717 & MPI_COMM_ WORLD,statut,code)717 & MPI_COMM_AGRIF,statut,code) 718 718 C 719 719 recvfromproc(k) = res … … 724 724 Call MPI_RECV(iminmax_temp(:,:,k), 725 725 & 2*nbdim,MPI_INTEGER,k,etiquette, 726 & MPI_COMM_ WORLD,statut,code)726 & MPI_COMM_AGRIF,statut,code) 727 727 728 728 imin_recv(:,k) = iminmax_temp(:,1,k) … … 739 739 740 740 Call MPI_SEND(sendtoproc(k),1,MPI_LOGICAL,k,etiquette, 741 & MPI_COMM_ WORLD,code)741 & MPI_COMM_AGRIF,code) 742 742 C 743 743 if (sendtoproc(k)) then … … 748 748 Call MPI_SEND(iminmax_temp(:,:,k), 749 749 & 2*nbdim,MPI_INTEGER,k,etiquette, 750 & MPI_COMM_ WORLD,code)750 & MPI_COMM_AGRIF,code) 751 751 C 752 752 endif … … 761 761 C 762 762 Call MPI_RECV(res,1,MPI_LOGICAL,k,etiquette, 763 & MPI_COMM_ WORLD,statut,code)763 & MPI_COMM_AGRIF,statut,code) 764 764 C 765 765 recvfromproc(k) = res … … 770 770 Call MPI_RECV(iminmax_temp(:,:,k), 771 771 & 2*nbdim,MPI_INTEGER,k,etiquette, 772 & MPI_COMM_ WORLD,statut,code)772 & MPI_COMM_AGRIF,statut,code) 773 773 774 774 imin_recv(:,k) = iminmax_temp(:,1,k) … … 842 842 & imin(1,k):imax(1,k)), 843 843 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 844 & MPI_COMM_ WORLD,code)844 & MPI_COMM_AGRIF,code) 845 845 CASE(2) 846 846 Call MPI_SEND(tempC%var%array2( … … 848 848 & imin(2,k):imax(2,k)), 849 849 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 850 & MPI_COMM_ WORLD,code)850 & MPI_COMM_AGRIF,code) 851 851 CASE(3) 852 852 … … 860 860 & imin(4,k):imax(4,k)), 861 861 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 862 & MPI_COMM_ WORLD,code)862 & MPI_COMM_AGRIF,code) 863 863 CASE(5) 864 864 Call MPI_SEND(tempC%var%array5( … … 869 869 & imin(5,k):imax(5,k)), 870 870 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 871 & MPI_COMM_ WORLD,code)871 & MPI_COMM_AGRIF,code) 872 872 CASE(6) 873 873 Call MPI_SEND(tempC%var%array6( … … 879 879 & imin(6,k):imax(6,k)), 880 880 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 881 & MPI_COMM_ WORLD,code)881 & MPI_COMM_AGRIF,code) 882 882 END SELECT 883 883 C … … 910 910 Call MPI_RECV(temprecv%var%array1, 911 911 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 912 & MPI_COMM_ WORLD,statut,code)912 & MPI_COMM_AGRIF,statut,code) 913 913 CASE(2) 914 914 Call MPI_RECV(temprecv%var%array2, 915 915 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 916 & MPI_COMM_ WORLD,statut,code)916 & MPI_COMM_AGRIF,statut,code) 917 917 CASE(3) 918 918 Call MPI_RECV(temprecv%var%array3, 919 919 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 920 & MPI_COMM_ WORLD,statut,code)920 & MPI_COMM_AGRIF,statut,code) 921 921 922 922 CASE(4) 923 923 Call MPI_RECV(temprecv%var%array4, 924 924 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 925 & MPI_COMM_ WORLD,statut,code)925 & MPI_COMM_AGRIF,statut,code) 926 926 CASE(5) 927 927 Call MPI_RECV(temprecv%var%array5, 928 928 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 929 & MPI_COMM_ WORLD,statut,code)929 & MPI_COMM_AGRIF,statut,code) 930 930 CASE(6) 931 931 Call MPI_RECV(temprecv%var%array6, 932 932 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 933 & MPI_COMM_ WORLD,statut,code)933 & MPI_COMM_AGRIF,statut,code) 934 934 END SELECT 935 935 … … 958 958 & imin(1,k):imax(1,k)), 959 959 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 960 & MPI_COMM_ WORLD,code)960 & MPI_COMM_AGRIF,code) 961 961 CASE(2) 962 962 datasize=SIZE(tempC%var%array2( … … 967 967 & imin(2,k):imax(2,k)), 968 968 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 969 & MPI_COMM_ WORLD,code)969 & MPI_COMM_AGRIF,code) 970 970 CASE(3) 971 971 datasize=SIZE(tempC%var%array3( … … 978 978 & imin(3,k):imax(3,k)), 979 979 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 980 & MPI_COMM_ WORLD,code)980 & MPI_COMM_AGRIF,code) 981 981 CASE(4) 982 982 datasize=SIZE(tempC%var%array4( … … 991 991 & imin(4,k):imax(4,k)), 992 992 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 993 & MPI_COMM_ WORLD,code)993 & MPI_COMM_AGRIF,code) 994 994 CASE(5) 995 995 datasize=SIZE(tempC%var%array5( … … 1006 1006 & imin(5,k):imax(5,k)), 1007 1007 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 1008 & MPI_COMM_ WORLD,code)1008 & MPI_COMM_AGRIF,code) 1009 1009 CASE(6) 1010 1010 datasize=SIZE(tempC%var%array6( … … 1023 1023 & imin(6,k):imax(6,k)), 1024 1024 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 1025 & MPI_COMM_ WORLD,code)1025 & MPI_COMM_AGRIF,code) 1026 1026 END SELECT 1027 1027 C … … 1047 1047 Call MPI_RECV(temprecv%var%array1, 1048 1048 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 1049 & MPI_COMM_ WORLD,statut,code)1049 & MPI_COMM_AGRIF,statut,code) 1050 1050 CASE(2) 1051 1051 datasize=SIZE(temprecv%var%array2) 1052 1052 Call MPI_RECV(temprecv%var%array2, 1053 1053 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 1054 & MPI_COMM_ WORLD,statut,code)1054 & MPI_COMM_AGRIF,statut,code) 1055 1055 CASE(3) 1056 1056 datasize=SIZE(temprecv%var%array3) 1057 1057 Call MPI_RECV(temprecv%var%array3, 1058 1058 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 1059 & MPI_COMM_ WORLD,statut,code)1059 & MPI_COMM_AGRIF,statut,code) 1060 1060 1061 1061 CASE(4) … … 1063 1063 Call MPI_RECV(temprecv%var%array4, 1064 1064 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 1065 & MPI_COMM_ WORLD,statut,code)1065 & MPI_COMM_AGRIF,statut,code) 1066 1066 CASE(5) 1067 1067 datasize=SIZE(temprecv%var%array5) 1068 1068 Call MPI_RECV(temprecv%var%array5, 1069 1069 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 1070 & MPI_COMM_ WORLD,statut,code)1070 & MPI_COMM_AGRIF,statut,code) 1071 1071 CASE(6) 1072 1072 datasize=SIZE(temprecv%var%array6) 1073 1073 Call MPI_RECV(temprecv%var%array6, 1074 1074 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 1075 & MPI_COMM_ WORLD,statut,code)1075 & MPI_COMM_AGRIF,statut,code) 1076 1076 END SELECT 1077 1077 … … 1108 1108 & imin(3):imax(3)), 1109 1109 & datasize,MPI_DOUBLE_PRECISION,k,etiquette, 1110 & MPI_COMM_ WORLD,code)1110 & MPI_COMM_AGRIF,code) 1111 1111 1112 1112 End Subroutine Agrif_Send_3Darray -
trunk/AGRIF/AGRIF_FILES/modtypes.F
r1200 r1793 37 37 INTEGER, PARAMETER :: Agrif_NbMaxGrids = 10 38 38 39 C MPI Communicator 40 INTEGER :: mpi_comm_agrif 39 41 C 40 42 C ************************************************************************** … … 409 411 INTEGER :: Agrif_Nbprocs ! Number of processors 410 412 INTEGER :: Agrif_ProcRank ! Rank of the current processor 411 INTEGER :: Agrif_Group ! Group associated to MPI_COMM_ WORLD413 INTEGER :: Agrif_Group ! Group associated to MPI_COMM_AGRIF 412 414 INTEGER :: Agrif_MPIPREC 413 415 #endif -
trunk/AGRIF/AGRIF_FILES/modupdate.F
r1200 r1793 757 757 758 758 CALL MPI_ALLREDUCE(iminmaxg,lubglob,2*nbdim,MPI_INTEGER,MPI_MIN, 759 & MPI_COMM_ WORLD,code)759 & MPI_COMM_AGRIF,code) 760 760 761 761 lubglob(1:nbdim,2) = - lubglob(1:nbdim,2) … … 925 925 926 926 CALL MPI_ALLREDUCE(iminmaxg,lubglob,2*nbdim,MPI_INTEGER,MPI_MIN, 927 & MPI_COMM_ WORLD,code)927 & MPI_COMM_AGRIF,code) 928 928 929 929 lubglob(1:nbdim,2) = - lubglob(1:nbdim,2) … … 1287 1287 C 1288 1288 Call MPI_ALLGATHER(tab3,4*nbdim,MPI_INTEGER,tab4,4*nbdim, 1289 & MPI_INTEGER,MPI_COMM_ WORLD,code)1289 & MPI_INTEGER,MPI_COMM_AGRIF,code) 1290 1290 1291 1291 IF (.not.associated(tempCextend%var)) Allocate(tempCextend%var) … … 1300 1300 memberin1(1) = memberin 1301 1301 CALL MPI_ALLGATHER(memberin1,1,MPI_LOGICAL,memberinall, 1302 & 1,MPI_LOGICAL,MPI_COMM_ WORLD,code)1302 & 1,MPI_LOGICAL,MPI_COMM_AGRIF,code) 1303 1303 1304 1304 Call Get_External_Data_first(tab4t(:,:,1), … … 1419 1419 C 1420 1420 Call MPI_ALLGATHER(tab3,4*nbdim,MPI_INTEGER,tab4,4*nbdim, 1421 & MPI_INTEGER,MPI_COMM_ WORLD,code)1421 & MPI_INTEGER,MPI_COMM_AGRIF,code) 1422 1422 1423 1423 IF (.not.associated(tempPextend%var)) Allocate(tempPextend%var) … … 1432 1432 memberin1(1) = member 1433 1433 CALL MPI_ALLGATHER(memberin1,1,MPI_LOGICAL,memberinall2, 1434 & 1,MPI_LOGICAL,MPI_COMM_ WORLD,code)1434 & 1,MPI_LOGICAL,MPI_COMM_AGRIF,code) 1435 1435 1436 1436 Call Get_External_Data_first(tab5t(:,:,1), -
trunk/AGRIF/AGRIF_FILES/modutil.F
r662 r1793 63 63 C 64 64 #ifdef AGRIF_MPI 65 Integer :: code 65 Logical :: mpi_was_called 66 Integer :: code, ierr 66 67 #include "mpif.h" 67 68 C 68 69 C 70 Call Agrif_comm_def(mpi_comm_agrif) 71 72 CALL mpi_initialized ( mpi_was_called, code ) 73 IF( code /= MPI_SUCCESS ) THEN 74 WRITE(*, *) ': Error in routine mpi_initialized' 75 CALL mpi_abort( mpi_comm_world, code, ierr ) 76 ENDIF 77 78 IF( .NOT. mpi_was_called ) THEN 79 CALL mpi_comm_dup( mpi_comm_world, mpi_comm_agrif, code) 80 IF( code /= MPI_SUCCESS ) THEN 81 WRITE(*, *) ' Agrif_Step: Error in routine mpi_comm_dup' 82 CALL mpi_abort( mpi_comm_world, code, ierr ) 83 ENDIF 84 ENDIF 85 69 86 If (Agrif_Mygrid % ngridstep == 0) Then 70 Call MPI_COMM_SIZE(MPI_COMM_ WORLD,Agrif_Nbprocs,code)71 Call MPI_COMM_RANK(MPI_COMM_ WORLD,Agrif_ProcRank,code)72 Call MPI_COMM_GROUP(MPI_COMM_ WORLD,Agrif_Group,code)87 Call MPI_COMM_SIZE(MPI_COMM_AGRIF,Agrif_Nbprocs,code) 88 Call MPI_COMM_RANK(MPI_COMM_AGRIF,Agrif_ProcRank,code) 89 Call MPI_COMM_GROUP(MPI_COMM_AGRIF,Agrif_Group,code) 73 90 endif 74 91 #endif -
trunk/CONFIG/ORCA2_LIM/EXP00/iodef.xml
r1772 r1793 560 560 </context> 561 561 562 <context id="1_nemo"> 563 564 <!-- 565 ============================================================================================================ 566 = definition of all existing variables = 567 = DO NOT CHANGE = 568 ============================================================================================================ 569 --> 570 571 <field_definition level="1" prec="4" operation="ave(X)" enabled=".TRUE."> <!-- time step automaticaly defined --> 572 573 <!-- T grid --> 574 575 <group id="grid_T" axis_ref="none" grid_ref="grid_T"> 576 <field id="toce" description="temperature" unit="degC" axis_ref="deptht" /> 577 <field id="soce" description="salinity" unit="psu" axis_ref="deptht" /> 578 <field id="sst" description="sea surface temperature" unit="degC" /> 579 <field id="sst2" description="square of sea surface temperature" unit="degC2" /> 580 <field id="|sstgrad|" description="module of sst gradient" unit="degC/m" /> 581 <field id="|sstgrad|2" description="square of module of sst gradient" unit="degC2/m2" /> 582 <field id="sss" description="sea surface salinity" unit="psu" /> 583 <field id="sss2" description="square of sea surface salinity" unit="psu2" /> 584 <field id="ssh" description="sea surface height" unit="m" /> 585 <field id="ssh2" description="square of sea surface height" unit="m2" /> 586 <field id="mldkz5" description="mixing layer depth (Turbocline)" unit="m" /> 587 <field id="mldr10_1" description="Mixed Layer Depth 0.01 ref.10m" unit="m" /> 588 <field id="rhop" description="potential density (sigma0)" unit="kg/m3" axis_ref="deptht" /> 589 <!-- next variables available with key_diahth --> 590 <field id="mlddzt" description="Thermocline Depth (max dT/dz)" unit="m" /> 591 <field id="mldr10_3" description="Mixed Layer Depth dr=0.03 (ref.10m)" unit="m" /> 592 <field id="mldr0_1" description="Mixed Layer Depth dr=0.01 (ref.surf)" unit="m" /> 593 <field id="mldr0_3" description="Mixed Layer Depth dr=0.03 (ref.surf)" unit="m" /> 594 <field id="mld|dt|" description="Mixed Layer Depth |dt|=0.2 (ref.10m)" unit="m" /> 595 <field id="topthdep" description="Top of the thermocline dt=-0.2 (ref.10m)" unit="m" /> 596 <field id="pycndep" description="Pycnocline depth dr~dt=-0.2 (ref.10m)" unit="m" /> 597 <field id="BLT" description="Barrier Layer Thickness" unit="m" /> 598 <field id="tinv" description="Max of vertical invertion of temperature" unit="degC" /> 599 <field id="depti" description="Depth of max. vert. inv. of temperature" unit="m" /> 600 <field id="20d" description="Depth of 20C isotherm" unit="m" /> 601 <field id="28d" description="Depth of 28C isotherm" unit="m" /> 602 <field id="hc300" description="Heat content 300 m" unit="W" /> 603 <!-- variables available with key_diaar5 --> 604 <field id="botpres" description="Pressure at sea floor" unit="dbar" /> 605 <field id="cellthc" description="Cell thickness" unit="m" axis_ref="deptht" /> 606 </group> 607 608 <!-- SBC --> 609 610 <group id="SBC" axis_ref="none" grid_ref="grid_T" > <!-- time step automaticaly defined based on nn_fsbc --> 611 612 <field id="emp" description="Net Upward Water Flux" unit="kg/m2/s" /> 613 <field id="emps" description="concentration/dilution water flux" unit="kg/m2/s" /> 614 <field id="snowpre" description="Snow precipitation" unit="kg/m2/s" /> 615 <field id="runoffs" description="River Runoffs" unit="Kg/m2/s" /> 616 617 <field id="qns+qsr" description="Net Downward Heat Flux" unit="W/m2" /> 618 <field id="qns" description="non solar Downward Heat Flux" unit="W/m2" /> 619 <field id="qsr" description="Shortwave Radiation" unit="W/m2" /> 620 <field id="qsr3d" description="Shortwave Radiation 3D distribution" axis_ref="deptht" unit="W/m2" /> 621 <field id="qrp" description="Surface Heat Flux: Damping" unit="W/m2" /> 622 <field id="erp" description="Surface Water Flux: Damping" unit="Kg/m2/s" /> 623 <field id="taum" description="wind stress module" unit="N/m2" /> 624 <field id="wspd" description="Wind speed module at 10 m" unit="m/s" /> 625 626 <!-- *_oce variables available with ln_blk_clio or ln_blk_core --> 627 <field id="qns_oce" description="Non solar Downward Heat Flux over open ocean" unit="W/m2" /> 628 <field id="qlw_oce" description="Longwave Downward Heat Flux over open ocean" unit="W/m2" /> 629 <field id="qsb_oce" description="Sensible Downward Heat Flux over open ocean" unit="W/m2" /> 630 <field id="qla_oce" description="Latent Downward Heat Flux over open ocean" unit="W/m2" /> 631 <field id="taum_oce" description="wind stress module over open ocean" unit="N/m2" /> 632 633 <field id="ice_cover" description="Ice fraction" unit="1" /> 634 635 <field id="ioceflxb" description="Oceanic flux at the ice base" unit="W/m2" /> 636 <field id="qsr_ai_cea" description="Air-Ice downward solar heat flux (cell average)" unit="W/m2" /> 637 <field id="qns_ai_cea" description="Air-Ice downward non-solar heat flux (cell average)" unit="W/m2" /> 638 <field id="qla_ai_cea" description="Air-Ice downward Latent heat flux (cell average)" unit="W/m2" /> 639 640 <field id="qsr_io_cea" description="Ice-Oce downward solar heat flux (cell average)" unit="W/m2" /> 641 <field id="qns_io_cea" description="Ice-Oce downward non-solar heat flux (cell average)" unit="W/m2" /> 642 643 <field id="snowthic_cea" description="Snow thickness (cell average)" unit="m" /> 644 <field id="icethic_cea" description="Ice thickness (cell average)" unit="m" /> 645 <field id="iceprod_cea" description="Ice production (cell average)" unit="m/s" /> 646 647 <field id="ice_pres" description="Ice presence" unit="-" /> 648 <field id="ist_cea" description="Ice surface temperature (cell average)" unit="degC" /> 649 <field id="ist_ipa" description="Ice surface temperature (ice presence average)" unit="degC" /> 650 <field id="uice_ipa" description="Ice velocity along i-axis at I-point (ice presence average)" unit="m/s" /> 651 <field id="vice_ipa" description="Ice velocity along j-axis at I-point (ice presence average)" unit="m/s" /> 652 653 <field id="utau_ice" description="Wind stress along i-axis over the ice at i-point" unit="N/m2" /> 654 <field id="vtau_ice" description="Wind stress along j-axis over the ice at i-point" unit="N/m2" /> 655 656 <field id="u_imasstr" description="Sea-ice mass transport along i-axis" unit="kg/s" /> 657 <field id="v_imasstr" description="Sea-ice mass transport along j-axis" unit="kg/s" /> 658 659 <!-- available key_coupled --> 660 <field id="snow_ao_cea" description="Snow over ice-free ocean (cell average)" unit="kg/m2/s" /> 661 <field id="snow_ai_cea" description="Snow over sea-ice (cell average)" unit="kg/m2/s" /> 662 <field id="subl_ai_cea" description="Sublimation over sea-ice (cell average)" unit="kg/m2/s" /> 663 <field id="icealb_cea" description="Ice albedo (cell average)" unit="1" /> 664 <field id="calving" description="Calving" unit="kg/m2/s" /> 665 <!-- available if key_coupled + conservative method --> 666 <field id="rain" description="Liquid precipitation" unit="Kg/m2/s" /> 667 <field id="evap_ao_cea" description="Evaporation over ice-free ocean (cell average)" unit="kg/m2/s" /> 668 <!-- variables available with key_diaar5 --> 669 <field id="isnwmlt_cea" description="Snow over Ice melting (cell average)" unit="kg/m2/s" /> 670 <field id="fsal_virt_cea" description="Virtual salt flux due to ice formation (cell average)" unit="kg/m2/s" /> 671 <field id="fsal_real_cea" description="Real salt flux due to ice formation (cell average)" unit="kg/m2/s" /> 672 <field id="hflx_rain_cea" description="heat flux due to rainfall" unit="W/m2" /> 673 <field id="hflx_evap_cea" description="heat flux due to evaporation" unit="W/m2" /> 674 <field id="hflx_snow_cea" description="heat flux due to snow falling over ice-free ocean" unit="W/m2" /> 675 <field id="hflx_ice_cea" description="heat flux due to ice thermodynamics" unit="W/m2" /> 676 <field id="hflx_rnf_cea" description="heat flux due to runoffs" unit="W/m2" /> 677 <field id="hflx_cal_cea" description="heat flux due to calving" unit="W/m2" /> 678 <field id="bicemel_cea" description="Rate of Melt at Sea Ice Base (cell average)" unit="kg/m2/s" /> 679 <field id="licepro_cea" description="Lateral Sea Ice Growth Rate (cell average)" unit="kg/m2/s" /> 680 <field id="snowmel_cea" description="Snow Melt Rate (cell average)" unit="kg/m2/s" /> 681 <field id="sntoice_cea" description="Snow-Ice Formation Rate (cell average)" unit="kg/m2/s" /> 682 <field id="ticemel_cea" description="Rate of Melt at Upper Surface of Sea Ice (cell average)" unit="kg/m2/s" /> 683 684 </group> 685 686 <!-- U grid --> 687 688 <group id="grid_U" axis_ref="depthu" grid_ref="grid_U"> 689 <field id="utau" description="Wind Stress along i-axis" unit="N/m2" axis_ref="none" /> 690 <field id="uoce" description="ocean current along i-axis" unit="m/s" /> 691 <field id="uoce_eff" description="Effective ocean current along i-axis" unit="m/s" /> 692 <!-- uoce_eiv: available with key_traldf_eiv and key_diaeiv --> 693 <field id="uoce_eiv" description="EIV ocean current along i-axis" unit="m/s" /> 694 <!-- uoce_eiv: available with key_trabbl_adv --> 695 <field id="uoce_bbl" description="BBL ocean current along i-axis" unit="m/s" /> 696 <!-- variables available with key_diaar5 --> 697 <field id="u_masstr" description="ocean eulerian mass transport along i-axis" unit="kg/s" /> 698 <field id="u_heattr" description="ocean eulerian heat transport along i-axis" unit="W" axis_ref="none" /> 699 <field id="ueiv_heattr" description="ocean bolus heat transport along i-axis" unit="W" axis_ref="none" /> 700 <field id="udiff_heattr" description="ocean diffusion heat transport along i-axis" unit="W" axis_ref="none" /> 701 </group> 702 703 <!-- V grid --> 704 705 <group id="grid_V" axis_ref="depthv" grid_ref="grid_V"> 706 <field id="vtau" description="Wind Stress along j-axis" unit="N/m2" axis_ref="none" /> 707 <field id="voce" description="ocean current along j-axis" unit="m/s" /> 708 <field id="voce_eff" description="Effective ocean current along j-axis" unit="m/s" /> 709 <!-- voce_eiv: available with key_traldf_eiv and key_diaeiv --> 710 <field id="voce_eiv" description="EIV ocean current along j-axis" unit="m/s" /> 711 <!-- voce_eiv: available with key_trabbl_adv --> 712 <field id="voce_bbl" description="BBL ocean current along j-axis" unit="m/s" /> 713 <!-- variables available with key_diaar5 --> 714 <field id="v_masstr" description="ocean eulerian mass transport along j-axis" unit="kg/s" /> 715 <field id="v_heattr" description="ocean eulerian heat transport along j-axis" unit="W" axis_ref="none" /> 716 <field id="veiv_heattr" description="ocean bolus heat transport along j-axis" unit="W" axis_ref="none" /> 717 <field id="vdiff_heattr" description="ocean diffusion heat transport along j-axis" unit="W" axis_ref="none" /> 718 </group> 719 720 <!-- W grid --> 721 722 <group id="grid_W" axis_ref="depthw" grid_ref="grid_W"> 723 <field id="woce" description="ocean vertical velocity" unit="m/s" /> 724 <field id="woce_eff" description="effective ocean vertical velocity" unit="m/s" /> 725 <!-- woce_eiv: available with key_traldf_eiv and key_diaeiv --> 726 <field id="woce_eiv" description="EIV ocean vertical velocity" unit="m/s" /> 727 <!-- woce_eiv: available with key_trabbl_adv --> 728 <field id="woce_bbl" description="BBL ocean vertical velocity" unit="m/s" /> 729 <field id="avt" description="vertical eddy diffusivity" unit="m2/s" /> 730 <field id="avm" description="vertical eddy viscosity" unit="m2/s" /> 731 <!-- avs: available with key_zdfddm --> 732 <field id="avs" description="salt vertical eddy diffusivity" unit="m2/s" /> 733 <!-- avt_evd and avm_evd: available with ln_zdfevd --> 734 <field id="avt_evd" description="enhanced vertical diffusivity" unit="m2/s" /> 735 <field id="avm_evd" description="enhanced vertical viscosity" unit="m2/s" /> 736 <!-- aht2d and aht2d_eiv: available with key_traldf_eiv and key_traldf_c2d --> 737 <field id="aht2d" description="lateral eddy diffusivity" unit="m2/s" axis_ref="none" /> 738 <field id="aht2d_eiv" description="EIV lateral eddy diffusivity" unit="m2/s" axis_ref="none" /> 739 <!-- avt_tide: available with key_zdftmx --> 740 <field id="av_tide" description="tidal vertical diffusivity" unit="m2/s" /> 741 <!-- variables available with key_diaar5 --> 742 <field id="w_masstr" description="vertical mass trasport" unit="kg/s" /> 743 <field id="w_masstr2" description="square of vertical mass trasport" unit="kg2/s2" /> 744 </group> 745 746 <!-- scalar --> 747 748 <!-- variables available with key_diaar5 --> 749 <group id="scalar" axis_ref="none" grid_ref="scalarpoint" zoom_ref="1point" > 750 <field id="voltot" description="global mean volume" unit="m3" /> 751 <field id="sshtot" description="global mean ssh" unit="m" /> 752 <field id="sshsteric" description="global mean ssh steric" unit="m" /> 753 <field id="sshthster" description="global mean ssh thermosteric" unit="m" /> 754 <field id="masstot" description="global mean mass" unit="kg" /> 755 <field id="temptot" description="global mean temperature" unit="degC" /> 756 <field id="saltot" description="global mean salinity" unit="psu" /> 757 <field id="fram_trans" description="Sea Ice Mass Transport Through Fram Strait" unit="kg/s" /> 758 </group> 759 760 </field_definition> 761 762 <!-- 763 ============================================================================================================ 764 = output files definition = 765 = Define your own files = 766 = put the variables you want... = 767 ============================================================================================================ 768 --> 769 770 <file_definition > 771 772 <group id="1h" output_freq="3600" output_level="10" enabled=".TRUE."> <!-- 1h files --> 773 </group> 774 775 <group id="2h" output_freq="7200" output_level="10" enabled=".TRUE."> <!-- 2h files --> 776 </group> 777 778 <group id="3h" output_freq="10800" output_level="10" enabled=".TRUE."> <!-- 3h files --> 779 </group> 780 781 <group id="4h" output_freq="14400" output_level="10" enabled=".TRUE."> <!-- 4h files --> 782 </group> 783 784 <group id="6h" output_freq="21600" output_level="10" enabled=".TRUE."> <!-- 6h files --> 785 </group> 786 787 <group id="1d" output_freq="86400" output_level="10" enabled=".TRUE."> <!-- 1d files --> 788 <!-- global file with different operations on data --> 789 <file id="1d_grid_T" name="auto" description="ocean T grid variables" > 790 <field ref="sst" name="sst_1d_ave" /> <!-- mean --> 791 <field ref="sst" name="sst_1d_max" operation="t_max(X)" /> <!-- max --> 792 </file> 793 </group> 794 795 <group id="3d" output_freq="259200" output_level="10" enabled=".TRUE."> <!-- 3d files --> 796 </group> 797 798 <group id="5d" output_freq="432000" output_level="10" enabled=".TRUE."> <!-- 5d files --> 799 800 <file id="5d_grid_T" name="auto" description="ocean T grid variables" > 801 <field ref="toce" name="votemper" /> 802 <field ref="soce" name="vosaline" /> 803 <field ref="sst" name="sosstsst" /> 804 <field ref="sss" name="sosaline" /> 805 <field ref="ssh" name="sossheig" /> 806 <field ref="emp" name="sowaflup" /> 807 <field ref="qsr" name="soshfldo" /> 808 <field ref="emps" name="sowaflcd" /> 809 <field ref="qns+qsr" name="sohefldo" /> 810 <field ref="mldr10_1" name="somxl010" /> 811 <field ref="mldkz5" name="somixhgt" /> 812 <field ref="ice_cover" name="soicecov" /> 813 <field ref="wspd" name="sowindsp" /> 814 <field ref="qrp" name="sohefldp" /> 815 <field ref="erp" name="sowafldp" /> 816 <field ref="mlddzt" name="sothedep" /> 817 <field ref="20d" name="so20chgt" /> 818 <field ref="28d" name="so28chgt" /> 819 <field ref="hc300" name="sohtc300" /> 820 <field ref="ist_ipa" name="soicetem" /> 821 <field ref="icealb_cea" name="soicealb" /> 822 </file> 823 824 <file id="5d_grid_U" name="auto" description="ocean U grid variables" > 825 <field ref="uoce" name="vozocrtx" /> 826 <field ref="utau" name="sozotaux" /> 827 </file> 828 829 <file id="5d_grid_V" name="auto" description="ocean V grid variables" > 830 <field ref="voce" name="vomecrty" /> 831 <field ref="vtau" name="sometauy" /> 832 </file> 833 834 <file id="5d_grid_W" name="auto" description="ocean W grid variables" > 835 <field ref="woce" name="vovecrtz" /> 836 <field ref="avt" name="votkeavt" /> 837 <field ref="avt_evd" name="votkeevd" /> 838 <field ref="avm" name="votkeavm" /> 839 <field ref="avm_evd" name="votkeevm" /> 840 <field ref="avs" name="voddmavs" /> 841 <field ref="aht2d" name="soleahtw" /> 842 </file> 843 844 <!-- 845 <file id="5d_icemod" name="auto" description="ice variables" > 846 <field ref="ice_pres" /> 847 <field ref="snowthic_cea" name="isnowthi" /> 848 <field ref="icethic_cea" name="iicethic" /> 849 <field ref="iceprod_cea" name="iiceprod" /> 850 <field ref="ist_ipa" name="iicetemp" /> 851 <field ref="ioceflxb" name="ioceflxb" /> 852 <field ref="uice_ipa" name="iicevelu" /> 853 <field ref="vice_ipa" name="iicevelv" /> 854 <field ref="utau_ice" name="iicestru" /> 855 <field ref="vtau_ice" name="iicestrv" /> 856 <field ref="qsr_io_cea" name="iicesflx" /> 857 <field ref="qns_io_cea" name="iicenflx" /> 858 <field ref="snowpre" name="isnowpre" /> 859 </file> 860 --> 861 862 </group> 863 864 <group id="1m" output_freq="-1" output_level="10" enabled=".TRUE."> <!-- real monthly files --> 865 866 <file id="1m_grid_T" name="auto" description="ocean T grid variables" > 867 <field ref="sst" name="sosstsst" /> 868 </file> 869 870 </group> 871 872 <group id="2m" output_freq="-2" output_level="10" enabled=".TRUE."> <!-- real 2m files --> 873 </group> 874 875 <group id="3m" output_freq="-3" output_level="10" enabled=".TRUE."> <!-- real 3m files --> 876 </group> 877 878 <group id="4m" output_freq="-4" output_level="10" enabled=".TRUE."> <!-- real 4m files --> 879 </group> 880 881 <group id="6m" output_freq="-6" output_level="10" enabled=".TRUE."> <!-- real 6m files --> 882 </group> 883 884 <group id="1y" output_freq="-12" output_level="10" enabled=".TRUE."> <!-- real yearly files --> 885 886 <file id="1y_grid_T" name="auto" description="ocean T grid variables" > 887 <field ref="mldr10_1" name="sobowlin" operation="t_max(X)" /> 888 </file> 889 890 </group> 891 892 <group id="2y" output_freq="-24" output_level="10" enabled=".TRUE."> <!-- real 2y files --> 893 </group> 894 895 <group id="5y" output_freq="-60" output_level="10" enabled=".TRUE."> <!-- real 5y files --> 896 </group> 897 898 <group id="10y" output_freq="-120" output_level="10" enabled=".TRUE."> <!-- real 10y files --> 899 </group> 900 901 </file_definition> 902 903 <!-- 904 ============================================================================================================ 905 = grid definition = 906 = DO NOT CHANGE = 907 ============================================================================================================ 908 --> 909 910 <axis_definition> 911 <axis id="deptht" description="Vertical T levels" unit="m" positive=".false." /> 912 <axis id="depthu" description="Vertical U levels" unit="m" positive=".false." /> 913 <axis id="depthv" description="Vertical V levels" unit="m" positive=".false." /> 914 <axis id="depthw" description="Vertical W levels" unit="m" positive=".false." /> 915 <axis id="none" description="axe non defini" unit="none" size="1" /> 916 </axis_definition> 917 918 <grid_definition> 919 <grid id="grid_T" description="grid T" > 920 </grid> 921 922 <grid id="grid_U" description="grid U" > 923 </grid> 924 925 <grid id="grid_V" description="grid V" > 926 </grid> 927 928 <grid id="grid_W" description="grid W" > 929 </grid> 930 931 <grid id="scalarpoint" description="scalar" > 932 <zoom id="1point" ibegin="1" jbegin="1" ni="1" nj="1" /> 933 </grid> 934 935 </grid_definition> 936 937 </context> 938 562 939 </simulation> -
trunk/NEMO/NST_SRC/agrif2model.F90
r1156 r1793 73 73 74 74 END SUBROUTINE Agrif_clustering_def 75 76 SUBROUTINE Agrif_comm_def(modelcomm) 77 78 !!--------------------------------------------- 79 !! *** ROUTINE Agrif_clustering_def *** 80 !!--------------------------------------------- 81 Use Agrif_Types 82 Use lib_mpp 83 84 IMPLICIT NONE 85 86 INTEGER :: modelcomm 87 88 #if defined key_mpp_mpi 89 modelcomm = mpi_comm_opa 90 #endif 91 Return 92 93 END SUBROUTINE Agrif_comm_def 75 94 #else 76 95 SUBROUTINE Agrif2Model -
trunk/NEMO/OPA_SRC/IOM/iom.F90
r1792 r1793 43 43 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .FALSE. !: iom_put flag 44 44 #endif 45 PUBLIC iom_init, iom_ open, iom_close, iom_setkt, iom_varid, iom_get, iom_gettime, iom_rstput, iom_put45 PUBLIC iom_init, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_gettime, iom_rstput, iom_put 46 46 47 47 PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d … … 86 86 !!---------------------------------------------------------------------- 87 87 ! read the xml file 88 CALL event__parse_xml_file( 'iodef.xml' ) ! <- to get from the nameliste (namrun)... 88 IF( Agrif_Root() ) CALL event__parse_xml_file( 'iodef.xml' ) ! <- to get from the nameliste (namrun)... 89 CALL iom_swap 89 90 90 91 ! calendar parameters … … 119 120 120 121 END SUBROUTINE iom_init 122 123 124 SUBROUTINE iom_swap 125 !!--------------------------------------------------------------------- 126 !! *** SUBROUTINE iom_swap *** 127 !! 128 !! ** Purpose : swap context between different agrif grid for xmlio_server 129 !!--------------------------------------------------------------------- 130 #if defined key_iomput 131 132 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 133 CALL event__swap_context("nemo") 134 ELSE 135 CALL event__swap_context(TRIM(Agrif_CFixed())//"_nemo") 136 ENDIF 137 138 #endif 139 END SUBROUTINE iom_swap 121 140 122 141 -
trunk/NEMO/OPA_SRC/lib_mpp.F90
r1718 r1793 112 112 INTEGER :: mppsize ! number of process 113 113 INTEGER :: mpprank ! process number [ 0 - size-1 ] 114 INTEGER :: mpi_comm_opa ! opa local communicator 114 !$AGRIF_DO_NOT_TREAT 115 INTEGER, PUBLIC :: mpi_comm_opa ! opa local communicator 116 !$AGRIF_END_DO_NOT_TREAT 115 117 116 118 ! variables used in case of sea-ice … … 191 193 WRITE(ldtxt(6),*) ' size in bytes of exported buffer nn_buffer = ', nn_buffer 192 194 193 #if defined key_agrif 194 IF( Agrif_Root() ) THEN 195 #endif 196 !!bug RB : should be clean to use Agrif in coupled mode 197 #if ! defined key_agrif 198 CALL mpi_initialized ( mpi_was_called, code ) 199 IF( code /= MPI_SUCCESS ) THEN 200 WRITE(*, cform_err) 201 WRITE(*, *) 'lib_mpp: Error in routine mpi_initialized' 202 CALL mpi_abort( mpi_comm_world, code, ierr ) 203 ENDIF 204 205 IF( PRESENT(localComm) .and. mpi_was_called ) THEN 206 mpi_comm_opa = localComm 207 SELECT CASE ( cn_mpi_send ) 208 CASE ( 'S' ) ! Standard mpi send (blocking) 209 WRITE(ldtxt(7),*) ' Standard blocking mpi send (send)' 210 CASE ( 'B' ) ! Buffer mpi send (blocking) 211 WRITE(ldtxt(7),*) ' Buffer blocking mpi send (bsend)' 212 CALL mpi_init_opa( ierr ) 213 CASE ( 'I' ) ! Immediate mpi send (non-blocking send) 214 WRITE(ldtxt(7),*) ' Immediate non-blocking send (isend)' 215 l_isend = .TRUE. 216 CASE DEFAULT 217 WRITE(ldtxt(7),cform_err) 218 WRITE(ldtxt(8),*) ' bad value for cn_mpi_send = ', cn_mpi_send 219 nstop = nstop + 1 220 END SELECT 221 ELSE IF ( PRESENT(localComm) .and. .not. mpi_was_called ) THEN 222 WRITE(ldtxt(7),*) ' lib_mpp: You cannot provide a local communicator ' 223 WRITE(ldtxt(8),*) ' without calling MPI_Init before ! ' 224 nstop = nstop + 1 225 ELSE 226 #endif 227 SELECT CASE ( cn_mpi_send ) 228 CASE ( 'S' ) ! Standard mpi send (blocking) 229 WRITE(ldtxt(7),*) ' Standard blocking mpi send (send)' 230 CALL mpi_init( ierr ) 231 CASE ( 'B' ) ! Buffer mpi send (blocking) 232 WRITE(ldtxt(7),*) ' Buffer blocking mpi send (bsend)' 233 CALL mpi_init_opa( ierr ) 234 CASE ( 'I' ) ! Immediate mpi send (non-blocking send) 235 WRITE(ldtxt(7),*) ' Immediate non-blocking send (isend)' 236 l_isend = .TRUE. 237 CALL mpi_init( ierr ) 238 CASE DEFAULT 239 WRITE(ldtxt(7),cform_err) 240 WRITE(ldtxt(8),*) ' bad value for cn_mpi_send = ', cn_mpi_send 241 nstop = nstop + 1 242 END SELECT 243 244 #if ! defined key_agrif 245 CALL mpi_comm_dup( mpi_comm_world, mpi_comm_opa, code) 246 IF( code /= MPI_SUCCESS ) THEN 247 WRITE(*, cform_err) 248 WRITE(*, *) ' lib_mpp: Error in routine mpi_comm_dup' 249 CALL mpi_abort( mpi_comm_world, code, ierr ) 250 ENDIF 251 ! 252 ENDIF 253 #endif 254 #if defined key_agrif 255 ELSE 195 CALL mpi_initialized ( mpi_was_called, code ) 196 IF( code /= MPI_SUCCESS ) THEN 197 WRITE(*, cform_err) 198 WRITE(*, *) 'lib_mpp: Error in routine mpi_initialized' 199 CALL mpi_abort( mpi_comm_world, code, ierr ) 200 ENDIF 201 202 IF( mpi_was_called ) THEN 203 ! 256 204 SELECT CASE ( cn_mpi_send ) 257 205 CASE ( 'S' ) ! Standard mpi send (blocking) … … 259 207 CASE ( 'B' ) ! Buffer mpi send (blocking) 260 208 WRITE(ldtxt(7),*) ' Buffer blocking mpi send (bsend)' 209 CALL mpi_init_opa( ierr ) 261 210 CASE ( 'I' ) ! Immediate mpi send (non-blocking send) 262 211 WRITE(ldtxt(7),*) ' Immediate non-blocking send (isend)' … … 267 216 nstop = nstop + 1 268 217 END SELECT 218 ELSE IF ( PRESENT(localComm) .and. .not. mpi_was_called ) THEN 219 WRITE(ldtxt(7),*) ' lib_mpp: You cannot provide a local communicator ' 220 WRITE(ldtxt(8),*) ' without calling MPI_Init before ! ' 221 nstop = nstop + 1 222 ELSE 223 SELECT CASE ( cn_mpi_send ) 224 CASE ( 'S' ) ! Standard mpi send (blocking) 225 WRITE(ldtxt(7),*) ' Standard blocking mpi send (send)' 226 CALL mpi_init( ierr ) 227 CASE ( 'B' ) ! Buffer mpi send (blocking) 228 WRITE(ldtxt(7),*) ' Buffer blocking mpi send (bsend)' 229 CALL mpi_init_opa( ierr ) 230 CASE ( 'I' ) ! Immediate mpi send (non-blocking send) 231 WRITE(ldtxt(7),*) ' Immediate non-blocking send (isend)' 232 l_isend = .TRUE. 233 CALL mpi_init( ierr ) 234 CASE DEFAULT 235 WRITE(ldtxt(7),cform_err) 236 WRITE(ldtxt(8),*) ' bad value for cn_mpi_send = ', cn_mpi_send 237 nstop = nstop + 1 238 END SELECT 239 ! 269 240 ENDIF 270 241 271 mpi_comm_opa = mpi_comm_world 272 #endif 242 IF( PRESENT(localComm) ) THEN 243 IF( Agrif_Root() ) THEN 244 mpi_comm_opa = localComm 245 ENDIF 246 ELSE 247 CALL mpi_comm_dup( mpi_comm_world, mpi_comm_opa, code) 248 IF( code /= MPI_SUCCESS ) THEN 249 WRITE(*, cform_err) 250 WRITE(*, *) ' lib_mpp: Error in routine mpi_comm_dup' 251 CALL mpi_abort( mpi_comm_world, code, ierr ) 252 ENDIF 253 ENDIF 254 273 255 CALL mpi_comm_rank( mpi_comm_opa, mpprank, ierr ) 274 256 CALL mpi_comm_size( mpi_comm_opa, mppsize, ierr ) -
trunk/NEMO/OPA_SRC/opa.F90
r1725 r1793 156 156 CALL opa_closefile 157 157 #if defined key_oasis3 || defined key_oasis4 158 CALL cpl_prism_finalize ! end coupling and mpp communications with OASIS 158 IF( Agrif_Root() ) THEN 159 CALL cpl_prism_finalize ! end coupling and mpp communications with OASIS 160 ENDIF 159 161 #else 160 162 IF( lk_mpp ) CALL mppstop ! end mpp communications … … 191 193 #if defined key_iomput 192 194 # if defined key_oasis3 || defined key_oasis4 193 CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis 194 CALL init_ioclient() ! io_server will get its communicators (if needed) from oasis (we don't see it) 195 IF( Agrif_Root() ) THEN 196 CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis 197 CALL init_ioclient() ! io_server will get its communicators (if needed) from oasis (we don't see it) 198 ENDIF 195 199 # else 196 CALL init_ioclient( ilocal_comm ) ! nemo local communicator (used or not) given by the io_server 200 IF( Agrif_Root() ) THEN 201 CALL init_ioclient( ilocal_comm ) ! nemo local communicator (used or not) given by the io_server 202 ENDIF 197 203 # endif 198 204 narea = mynode( cltxt, ilocal_comm ) ! Nodes selection … … 200 206 #else 201 207 # if defined key_oasis3 || defined key_oasis4 202 CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis 208 IF( Agrif_Root() ) THEN 209 CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis 210 ENDIF 203 211 narea = mynode( cltxt, ilocal_comm ) ! Nodes selection (control print return in cltxt) 204 212 # else -
trunk/NEMO/OPA_SRC/step.F90
r1756 r1793 166 166 #if defined key_agrif 167 167 kstp = nit000 + Agrif_Nb_Step() 168 ! IF ( Agrif_Root() .and. lwp) Write(*,*) '---' 169 ! IF (lwp) Write(*,*) 'Grid Number',Agrif_Fixed(),' time step ',kstp 168 ! IF( Agrif_Root() .and. lwp) Write(*,*) '---' 169 ! IF(lwp) Write(*,*) 'Grid Number',Agrif_Fixed(),' time step ',kstp 170 # if defined key_iomput 171 IF( Agrif_Nbstepint() == 0) CALL iom_swap 172 # endif 170 173 #endif 171 174 indic = 1 ! reset to no error condition -
trunk/UTIL/fait_AA_make
r1791 r1793 86 86 87 87 # Agrif library and conv 88 libagrif : \$(call keycompat,key_iomput,key_agrif)88 libagrif : 89 89 ifeq (\$(AGRIF),use) 90 90 @( if [ ! -d OPAFILES ]; then mkdir OPAFILES; fi ) … … 327 327 328 328 echo '#check key compatibility' 329 echo 'keycompat=$(if $( and $(findstring $1,$(P_P)),$(findstring $2,$(P_P))),$(error $1 and $2 NOT compatible))'329 echo 'keycompat=$(if $(word 2, $(findstring $1,$(P_P)) $(findstring $2,$(P_P))),$(error $1 and $2 NOT compatible))' 330 330 331 331 echo ''
Note: See TracChangeset
for help on using the changeset viewer.