59 #if ! defined in_surfex
75 #if ! defined in_surfex
84 #if ! defined in_surfex
109 #if ! defined in_surfex
123 #if ! defined in_surfex
129 #if ! defined in_surfex
133 INTEGER :: ngrp_world
134 INTEGER :: ngrp_north
135 INTEGER :: ncomm_north
136 INTEGER :: ndim_rank_north
139 INTEGER,
DIMENSION(:),
ALLOCATABLE :: nrank_north
146 #if ! defined in_surfex
161 CHARACTER(len=1),
INTENT( in ) :: &
164 REAL,
DIMENSION(jpi,jpj,jpk),
INTENT( inout ) :: &
166 REAL,
INTENT( in ) :: &
193 CHARACTER(len=1),
INTENT( in ) :: &
196 REAL,
DIMENSION(jpi,jpj,jpk),
INTENT( inout ) :: &
198 REAL,
INTENT( in ) :: &
204 CHARACTER(len=3),
INTENT( in ),
OPTIONAL :: &
206 REAL ,
INTENT(in ),
OPTIONAL :: pval
211 IF( present( pval ) )
THEN
218 IF( present( cd_mpp ) )
THEN
225 SELECT CASE ( nperio )
228 pt3d( 1 ,:,:) = pt3d(jpim1,:,:)
229 pt3d(jpi,:,:) = pt3d( 2 ,:,:)
232 SELECT CASE ( cd_type )
233 CASE (
'T' ,
'U' ,
'V' ,
'W' )
234 pt3d( 1 ,:,:) = zland
235 pt3d(jpi,:,:) = zland
237 pt3d(jpi,:,:) = zland
244 SELECT CASE ( nperio )
247 SELECT CASE ( cd_type )
248 CASE (
'T' ,
'U' ,
'W' )
249 pt3d(:, 1 ,:) = pt3d(:,3,:)
250 pt3d(:,jpj,:) = zland
252 pt3d(:, 1 ,:) = psgn * pt3d(:,2,:)
253 pt3d(:,jpj,:) = zland
256 CASE ( 3 , 4 , 5 , 6 )
257 SELECT CASE ( cd_type )
258 CASE (
'T' ,
'U' ,
'V' ,
'W' ,
'I' )
259 pt3d(:, 1 ,:) = zland
262 pt3d( 1 ,jpj,:) = zland
263 pt3d(jpi,jpj,:) = zland
264 CALL
lbc_nfd( pt3d(:,:,:), cd_type, psgn )
267 SELECT CASE ( cd_type )
268 CASE (
'T' ,
'U' ,
'V' ,
'W' )
269 pt3d(:, 1 ,:) = zland
270 pt3d(:,jpj,:) = zland
272 pt3d(:,jpj,:) = zland
297 CHARACTER(len=1),
INTENT( in ) :: &
301 REAL,
INTENT( in ) :: &
305 REAL,
DIMENSION(jpi,jpj),
INTENT( inout ) :: &
307 CHARACTER(len=3),
INTENT( in ),
OPTIONAL :: &
309 REAL ,
INTENT(in ),
OPTIONAL :: pval
314 IF( present( pval ) )
THEN
320 IF (present(cd_mpp))
THEN
327 SELECT CASE ( nperio )
330 pt2d( 1 ,:) = pt2d(jpim1,:)
331 pt2d(jpi,:) = pt2d( 2 ,:)
334 SELECT CASE ( cd_type )
335 CASE (
'T' ,
'U' ,
'V' ,
'W' )
346 SELECT CASE ( nperio )
349 SELECT CASE ( cd_type )
350 CASE (
'T' ,
'U' ,
'W' )
351 pt2d(:, 1 ) = pt2d(:,3)
354 pt2d(:, 1 ) = psgn * pt2d(:,2)
358 CASE ( 3 , 4 , 5 , 6 )
359 SELECT CASE ( cd_type )
360 CASE (
'T' ,
'U' ,
'V' ,
'W' ,
'I' )
365 pt2d( 1 ,jpj) = zland
366 pt2d(jpi,jpj) = zland
367 CALL
lbc_nfd( pt2d(:,:), cd_type, psgn )
370 SELECT CASE ( cd_type )
371 CASE (
'T' ,
'U' ,
'V' ,
'W' )
406 REAL,
DIMENSION(jpi,jpj,jpk),
INTENT(inout) :: ptab1
407 REAL,
DIMENSION(jpi,jpj,jpk),
INTENT(inout) :: ptab2
408 CHARACTER(len=1) ,
INTENT(in ) :: cd_type1
409 CHARACTER(len=1) ,
INTENT(in ) :: cd_type2
410 REAL ,
INTENT(in ) :: psgn
413 INTEGER :: imigr, iihom, ijhom
414 INTEGER :: ml_req1, ml_req2, ml_err
415 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ml_stat
422 IF( nbondi == 2 .AND. (nperio == 1 .OR. nperio == 4 .OR. nperio == 6) )
THEN
423 ptab1( 1 ,:,:) = ptab1(jpim1,:,:)
424 ptab1(jpi,:,:) = ptab1( 2 ,:,:)
425 ptab2( 1 ,:,:) = ptab2(jpim1,:,:)
426 ptab2(jpi,:,:) = ptab2( 2 ,:,:)
428 IF( .NOT. cd_type1 ==
'F' ) ptab1( 1 :jpreci,:,:) = 0.e0
429 IF( .NOT. cd_type2 ==
'F' ) ptab2( 1 :jpreci,:,:) = 0.e0
430 ptab1(nlci-jpreci+1:jpi ,:,:) = 0.e0
431 ptab2(nlci-jpreci+1:jpi ,:,:) = 0.e0
436 IF( .NOT. cd_type1 ==
'F' ) ptab1(:, 1 :jprecj,:) = 0.e0
437 IF( .NOT. cd_type2 ==
'F' ) ptab2(:, 1 :jprecj,:) = 0.e0
438 ptab1(:,nlcj-jprecj+1:jpj ,:) = 0.e0
439 ptab2(:,nlcj-jprecj+1:jpj ,:) = 0.e0
446 SELECT CASE ( nbondi )
450 t4ew(:,jl,:,1,1) = ptab1(jpreci+jl,:,:)
451 t4we(:,jl,:,1,1) = ptab1(iihom +jl,:,:)
452 t4ew(:,jl,:,2,1) = ptab2(jpreci+jl,:,:)
453 t4we(:,jl,:,2,1) = ptab2(iihom +jl,:,:)
458 imigr = jpreci * jpj * jpk *2
460 SELECT CASE ( nbondi )
462 CALL
mppsend( 2, t4we(1,1,1,1,1), imigr, noea, ml_req1 )
463 CALL
mpprecv( 1, t4ew(1,1,1,1,2), imigr )
464 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
466 CALL
mppsend( 1, t4ew(1,1,1,1,1), imigr, nowe, ml_req1 )
467 CALL
mppsend( 2, t4we(1,1,1,1,1), imigr, noea, ml_req2 )
468 CALL
mpprecv( 1, t4ew(1,1,1,1,2), imigr )
469 CALL
mpprecv( 2, t4we(1,1,1,1,2), imigr )
470 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
471 IF(l_isend) CALL mpi_wait(ml_req2, ml_stat, ml_err)
473 CALL
mppsend( 1, t4ew(1,1,1,1,1), imigr, nowe, ml_req1 )
474 CALL
mpprecv( 2, t4we(1,1,1,1,2), imigr )
475 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
479 iihom = nlci - jpreci
481 SELECT CASE ( nbondi )
484 ptab1(iihom+jl,:,:) = t4ew(:,jl,:,1,2)
485 ptab2(iihom+jl,:,:) = t4ew(:,jl,:,2,2)
489 ptab1(jl ,:,:) = t4we(:,jl,:,1,2)
490 ptab1(iihom+jl,:,:) = t4ew(:,jl,:,1,2)
491 ptab2(jl ,:,:) = t4we(:,jl,:,2,2)
492 ptab2(iihom+jl,:,:) = t4ew(:,jl,:,2,2)
496 ptab1(jl ,:,:) = t4we(:,jl,:,1,2)
497 ptab2(jl ,:,:) = t4we(:,jl,:,2,2)
506 IF( nbondj /= 2 )
THEN
509 t4sn(:,jl,:,1,1) = ptab1(:,ijhom +jl,:)
510 t4ns(:,jl,:,1,1) = ptab1(:,jprecj+jl,:)
511 t4sn(:,jl,:,2,1) = ptab2(:,ijhom +jl,:)
512 t4ns(:,jl,:,2,1) = ptab2(:,jprecj+jl,:)
517 imigr = jprecj * jpi * jpk * 2
519 SELECT CASE ( nbondj )
521 CALL
mppsend( 4, t4sn(1,1,1,1,1), imigr, nono, ml_req1 )
522 CALL
mpprecv( 3, t4ns(1,1,1,1,2), imigr )
523 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
525 CALL
mppsend( 3, t4ns(1,1,1,1,1), imigr, noso, ml_req1 )
526 CALL
mppsend( 4, t4sn(1,1,1,1,1), imigr, nono, ml_req2 )
527 CALL
mpprecv( 3, t4ns(1,1,1,1,2), imigr )
528 CALL
mpprecv( 4, t4sn(1,1,1,1,2), imigr )
529 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
530 IF(l_isend) CALL mpi_wait(ml_req2, ml_stat, ml_err)
532 CALL
mppsend( 3, t4ns(1,1,1,1,1), imigr, noso, ml_req1 )
533 CALL
mpprecv( 4, t4sn(1,1,1,1,2), imigr )
534 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
538 ijhom = nlcj - jprecj
540 SELECT CASE ( nbondj )
543 ptab1(:,ijhom+jl,:) = t4ns(:,jl,:,1,2)
544 ptab2(:,ijhom+jl,:) = t4ns(:,jl,:,2,2)
548 ptab1(:,jl ,:) = t4sn(:,jl,:,1,2)
549 ptab1(:,ijhom+jl,:) = t4ns(:,jl,:,1,2)
550 ptab2(:,jl ,:) = t4sn(:,jl,:,2,2)
551 ptab2(:,ijhom+jl,:) = t4ns(:,jl,:,2,2)
555 ptab1(:,jl,:) = t4sn(:,jl,:,1,2)
556 ptab2(:,jl,:) = t4sn(:,jl,:,2,2)
563 IF( npolj /= 0 )
THEN
567 CALL
lbc_nfd( ptab1, cd_type1, psgn )
568 CALL
lbc_nfd( ptab2, cd_type2, psgn )
600 REAL,
DIMENSION(jpi,jpj,jpk),
INTENT(inout) :: ptab
601 CHARACTER(len=1) ,
INTENT(in ) :: cd_type
603 REAL ,
INTENT(in ) :: psgn
605 CHARACTER(len=3),
OPTIONAL ,
INTENT(in ) :: cd_mpp
606 REAL ,
OPTIONAL ,
INTENT(in ) :: pval
608 INTEGER :: ji, jj, jk, jl
609 INTEGER :: imigr, iihom, ijhom
610 INTEGER :: ml_req1, ml_req2, ml_err
612 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ml_stat
615 IF( present( pval ) )
THEN ; zland = pval
621 IF( present( cd_mpp ) )
THEN
626 ptab(nldi :nlei , jj ,jk) = ptab(nldi:nlei, nlej,jk)
627 ptab(1 :nldi-1, jj ,jk) = ptab(nldi , nlej,jk)
628 ptab(nlei+1:nlci , jj ,jk) = ptab( nlei, nlej,jk)
631 ptab(ji ,nldj :nlej ,jk) = ptab( nlei,nldj:nlej,jk)
632 ptab(ji ,1 :nldj-1,jk) = ptab( nlei,nldj ,jk)
633 ptab(ji ,nlej+1:jpj ,jk) = ptab( nlei, nlej,jk)
641 IF( nbondi == 2 .AND. (nperio == 1 .OR. nperio == 4 .OR. nperio == 6) )
THEN
642 ptab( 1 ,:,:) = ptab(jpim1,:,:)
643 ptab(jpi,:,:) = ptab( 2 ,:,:)
645 IF( .NOT. cd_type ==
'F' ) ptab( 1 :jpreci,:,:) = zland
646 ptab(nlci-jpreci+1:jpi ,:,:) = zland
649 IF( .NOT. cd_type ==
'F' ) ptab(:, 1 :jprecj,:) = zland
650 ptab(:,nlcj-jprecj+1:jpj ,:) = zland
658 SELECT CASE ( nbondi )
662 t3ew(:,jl,:,1) = ptab(jpreci+jl,:,:)
663 t3we(:,jl,:,1) = ptab(iihom +jl,:,:)
668 imigr = jpreci * jpj * jpk
670 SELECT CASE ( nbondi )
672 CALL
mppsend( 2, t3we(1,1,1,1), imigr, noea, ml_req1 )
673 CALL
mpprecv( 1, t3ew(1,1,1,2), imigr )
674 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
676 CALL
mppsend( 1, t3ew(1,1,1,1), imigr, nowe, ml_req1 )
677 CALL
mppsend( 2, t3we(1,1,1,1), imigr, noea, ml_req2 )
678 CALL
mpprecv( 1, t3ew(1,1,1,2), imigr )
679 CALL
mpprecv( 2, t3we(1,1,1,2), imigr )
680 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
681 IF(l_isend) CALL mpi_wait(ml_req2, ml_stat, ml_err)
683 CALL
mppsend( 1, t3ew(1,1,1,1), imigr, nowe, ml_req1 )
684 CALL
mpprecv( 2, t3we(1,1,1,2), imigr )
685 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
691 SELECT CASE ( nbondi )
694 ptab(iihom+jl,:,:) = t3ew(:,jl,:,2)
698 ptab(jl ,:,:) = t3we(:,jl,:,2)
699 ptab(iihom+jl,:,:) = t3ew(:,jl,:,2)
703 ptab(jl ,:,:) = t3we(:,jl,:,2)
712 IF( nbondj /= 2 )
THEN
715 t3sn(:,jl,:,1) = ptab(:,ijhom +jl,:)
716 t3ns(:,jl,:,1) = ptab(:,jprecj+jl,:)
721 imigr = jprecj * jpi * jpk
723 SELECT CASE ( nbondj )
725 CALL
mppsend( 4, t3sn(1,1,1,1), imigr, nono, ml_req1 )
726 CALL
mpprecv( 3, t3ns(1,1,1,2), imigr )
727 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
729 CALL
mppsend( 3, t3ns(1,1,1,1), imigr, noso, ml_req1 )
730 CALL
mppsend( 4, t3sn(1,1,1,1), imigr, nono, ml_req2 )
731 CALL
mpprecv( 3, t3ns(1,1,1,2), imigr )
732 CALL
mpprecv( 4, t3sn(1,1,1,2), imigr )
733 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
734 IF(l_isend) CALL mpi_wait(ml_req2, ml_stat, ml_err)
736 CALL
mppsend( 3, t3ns(1,1,1,1), imigr, noso, ml_req1 )
737 CALL
mpprecv( 4, t3sn(1,1,1,2), imigr )
738 IF(l_isend) CALL mpi_wait(ml_req1, ml_stat, ml_err)
744 SELECT CASE ( nbondj )
747 ptab(:,ijhom+jl,:) = t3ns(:,jl,:,2)
751 ptab(:,jl ,:) = t3sn(:,jl,:,2)
752 ptab(:,ijhom+jl,:) = t3ns(:,jl,:,2)
756 ptab(:,jl,:) = t3sn(:,jl,:,2)
764 IF( npolj /= 0 .AND. .NOT. present(cd_mpp) )
THEN
767 CASE ( 1 ) ; CALL
lbc_nfd( ptab, cd_type, psgn )
795 REAL,
DIMENSION(jpi,jpj),
INTENT(inout) :: pt2d
796 CHARACTER(len=1) ,
INTENT(in ) :: cd_type
798 REAL ,
INTENT(in ) :: psgn
800 CHARACTER(len=3),
OPTIONAL ,
INTENT(in ) :: cd_mpp
801 REAL ,
OPTIONAL ,
INTENT(in ) :: pval
803 INTEGER :: ji, jj, jl
804 INTEGER :: imigr, iihom, ijhom
805 INTEGER :: ml_req1, ml_req2, ml_err
807 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ml_stat
810 IF( present( pval ) )
THEN ; zland = pval
817 IF( present( cd_mpp ) )
THEN
821 pt2d(nldi :nlei , jj ) = pt2d(nldi:nlei, nlej)
822 pt2d(1 :nldi-1, jj ) = pt2d(nldi , nlej)
823 pt2d(nlei+1:nlci , jj ) = pt2d( nlei, nlej)
826 pt2d(ji ,nldj :nlej ) = pt2d( nlei,nldj:nlej)
827 pt2d(ji ,1 :nldj-1) = pt2d( nlei,nldj )
828 pt2d(ji ,nlej+1:jpj ) = pt2d( nlei, nlej)
834 IF( nbondi == 2 .AND. &
835 & (nperio == 1 .OR. nperio == 4 .OR. nperio == 6) )
THEN
836 pt2d( 1 ,:) = pt2d(jpim1,:)
837 pt2d(jpi,:) = pt2d( 2 ,:)
839 IF( .NOT. cd_type ==
'F' ) pt2d( 1 :jpreci,:) = zland
840 pt2d(nlci-jpreci+1:jpi ,:) = zland
843 IF( .NOT. cd_type ==
'F' ) pt2d(:, 1 :jprecj) = zland
844 pt2d(:,nlcj-jprecj+1:jpj ) = zland
852 SELECT CASE ( nbondi )
856 t2ew(:,jl,1) = pt2d(jpreci+jl,:)
857 t2we(:,jl,1) = pt2d(iihom +jl,:)
864 SELECT CASE ( nbondi )
866 CALL
mppsend( 2, t2we(1,1,1), imigr, noea, ml_req1 )
867 CALL
mpprecv( 1, t2ew(1,1,2), imigr )
868 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
870 CALL
mppsend( 1, t2ew(1,1,1), imigr, nowe, ml_req1 )
871 CALL
mppsend( 2, t2we(1,1,1), imigr, noea, ml_req2 )
872 CALL
mpprecv( 1, t2ew(1,1,2), imigr )
873 CALL
mpprecv( 2, t2we(1,1,2), imigr )
874 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
875 IF(l_isend) CALL mpi_wait(ml_req2,ml_stat,ml_err)
877 CALL
mppsend( 1, t2ew(1,1,1), imigr, nowe, ml_req1 )
878 CALL
mpprecv( 2, t2we(1,1,2), imigr )
879 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
883 iihom = nlci - jpreci
885 SELECT CASE ( nbondi )
888 pt2d(iihom+jl,:) = t2ew(:,jl,2)
892 pt2d(jl ,:) = t2we(:,jl,2)
893 pt2d(iihom+jl,:) = t2ew(:,jl,2)
897 pt2d(jl ,:) = t2we(:,jl,2)
906 IF( nbondj /= 2 )
THEN
909 t2sn(:,jl,1) = pt2d(:,ijhom +jl)
910 t2ns(:,jl,1) = pt2d(:,jprecj+jl)
917 SELECT CASE ( nbondj )
919 CALL
mppsend( 4, t2sn(1,1,1), imigr, nono, ml_req1 )
920 CALL
mpprecv( 3, t2ns(1,1,2), imigr )
921 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
923 CALL
mppsend( 3, t2ns(1,1,1), imigr, noso, ml_req1 )
924 CALL
mppsend( 4, t2sn(1,1,1), imigr, nono, ml_req2 )
925 CALL
mpprecv( 3, t2ns(1,1,2), imigr )
926 CALL
mpprecv( 4, t2sn(1,1,2), imigr )
927 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
928 IF(l_isend) CALL mpi_wait(ml_req2,ml_stat,ml_err)
930 CALL
mppsend( 3, t2ns(1,1,1), imigr, noso, ml_req1 )
931 CALL
mpprecv( 4, t2sn(1,1,2), imigr )
932 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
936 ijhom = nlcj - jprecj
938 SELECT CASE ( nbondj )
941 pt2d(:,ijhom+jl) = t2ns(:,jl,2)
945 pt2d(:,jl ) = t2sn(:,jl,2)
946 pt2d(:,ijhom+jl) = t2ns(:,jl,2)
950 pt2d(:,jl ) = t2sn(:,jl,2)
958 IF( npolj /= 0 .AND. .NOT. present(cd_mpp) )
THEN
961 CASE ( 1 ) ; CALL
lbc_nfd( pt2d, cd_type, psgn )
991 REAL,
DIMENSION(1-jpr2di:jpi+jpr2di,1-jpr2dj:jpj+jpr2dj),
INTENT(inout) :: pt2d
992 CHARACTER(len=1) ,
INTENT(in ) :: cd_type
994 REAL ,
INTENT(in ) :: psgn
997 INTEGER :: imigr, iihom, ijhom
998 INTEGER :: ipreci, iprecj
999 INTEGER :: ml_req1, ml_req2, ml_err
1000 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ml_stat
1003 ipreci = jpreci + jpr2di
1004 iprecj = jprecj + jpr2dj
1012 IF( .NOT. cd_type ==
'F' ) pt2d(:, 1-jpr2dj : jprecj ) = 0.e0
1013 pt2d(:,nlcj-jprecj+1:jpj+jpr2dj) = 0.e0
1017 IF( nbondi == 2 .AND. (nperio == 1 .OR. nperio == 4 .OR. nperio == 6) )
THEN
1018 pt2d(1-jpr2di: 1 ,:) = pt2d(jpim1-jpr2di: jpim1 ,:)
1019 pt2d( jpi :jpi+jpr2di,:) = pt2d( 2 :2+jpr2di,:)
1022 IF( .NOT. cd_type ==
'F' ) pt2d( 1-jpr2di :jpreci ,:) = 0.e0
1023 pt2d(nlci-jpreci+1:jpi+jpr2di,:) = 0.e0
1029 IF( npolj /= 0 )
THEN
1031 SELECT CASE ( jpni )
1032 CASE ( 1 ) ; CALL
lbc_nfd( pt2d(1:jpi,1:jpj+jpr2dj), cd_type, psgn, pr2dj=jpr2dj )
1042 SELECT CASE ( nbondi )
1044 iihom = nlci-nreci-jpr2di
1046 tr2ew(:,jl,1) = pt2d(jpreci+jl,:)
1047 tr2we(:,jl,1) = pt2d(iihom +jl,:)
1052 imigr = ipreci * ( jpj + 2*jpr2dj)
1054 SELECT CASE ( nbondi )
1056 CALL
mppsend( 2, tr2we(1-jpr2dj,1,1), imigr, noea, ml_req1 )
1057 CALL
mpprecv( 1, tr2ew(1-jpr2dj,1,2), imigr )
1058 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
1060 CALL
mppsend( 1, tr2ew(1-jpr2dj,1,1), imigr, nowe, ml_req1 )
1061 CALL
mppsend( 2, tr2we(1-jpr2dj,1,1), imigr, noea, ml_req2 )
1062 CALL
mpprecv( 1, tr2ew(1-jpr2dj,1,2), imigr )
1063 CALL
mpprecv( 2, tr2we(1-jpr2dj,1,2), imigr )
1064 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
1065 IF(l_isend) CALL mpi_wait(ml_req2,ml_stat,ml_err)
1067 CALL
mppsend( 1, tr2ew(1-jpr2dj,1,1), imigr, nowe, ml_req1 )
1068 CALL
mpprecv( 2, tr2we(1-jpr2dj,1,2), imigr )
1069 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
1073 iihom = nlci - jpreci
1075 SELECT CASE ( nbondi )
1078 pt2d(iihom+jl,:) = tr2ew(:,jl,2)
1082 pt2d(jl-jpr2di,:) = tr2we(:,jl,2)
1083 pt2d( iihom+jl,:) = tr2ew(:,jl,2)
1087 pt2d(jl-jpr2di,:) = tr2we(:,jl,2)
1096 IF( nbondj /= 2 )
THEN
1097 ijhom = nlcj-nrecj-jpr2dj
1099 tr2sn(:,jl,1) = pt2d(:,ijhom +jl)
1100 tr2ns(:,jl,1) = pt2d(:,jprecj+jl)
1105 imigr = iprecj * ( jpi + 2*jpr2di )
1107 SELECT CASE ( nbondj )
1109 CALL
mppsend( 4, tr2sn(1-jpr2di,1,1), imigr, nono, ml_req1 )
1110 CALL
mpprecv( 3, tr2ns(1-jpr2di,1,2), imigr )
1111 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
1113 CALL
mppsend( 3, tr2ns(1-jpr2di,1,1), imigr, noso, ml_req1 )
1114 CALL
mppsend( 4, tr2sn(1-jpr2di,1,1), imigr, nono, ml_req2 )
1115 CALL
mpprecv( 3, tr2ns(1-jpr2di,1,2), imigr )
1116 CALL
mpprecv( 4, tr2sn(1-jpr2di,1,2), imigr )
1117 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
1118 IF(l_isend) CALL mpi_wait(ml_req2,ml_stat,ml_err)
1120 CALL
mppsend( 3, tr2ns(1-jpr2di,1,1), imigr, noso, ml_req1 )
1121 CALL
mpprecv( 4, tr2sn(1-jpr2di,1,2), imigr )
1122 IF(l_isend) CALL mpi_wait(ml_req1,ml_stat,ml_err)
1126 ijhom = nlcj - jprecj
1128 SELECT CASE ( nbondj )
1131 pt2d(:,ijhom+jl) = tr2ns(:,jl,2)
1135 pt2d(:,jl-jpr2dj) = tr2sn(:,jl,2)
1136 pt2d(:,ijhom+jl ) = tr2ns(:,jl,2)
1140 pt2d(:,jl-jpr2dj) = tr2sn(:,jl,2)
1147 SUBROUTINE mppsend( ktyp, pmess, kbytes, kdest, md_req )
1154 REAL,
INTENT(inout) :: pmess(*)
1155 INTEGER ,
INTENT(in ) :: kbytes
1156 INTEGER ,
INTENT(in ) :: kdest
1157 INTEGER ,
INTENT(in ) :: ktyp
1159 INTEGER ,
INTENT(inout) :: md_req
1164 SELECT CASE ( cn_mpi_send )
1166 CALL mpi_send( pmess, kbytes, mpi_double_precision, kdest , ktyp, mpi_comm_opa , iflag )
1168 CALL mpi_bsend( pmess, kbytes, mpi_double_precision, kdest , ktyp, mpi_comm_opa , iflag )
1171 CALL mpi_isend( pmess, kbytes, mpi_double_precision, kdest , ktyp, mpi_comm_opa, md_req, iflag )
1184 REAL,
INTENT(inout) :: pmess(*)
1185 INTEGER ,
INTENT(in ) :: kbytes
1186 INTEGER ,
INTENT(in ) :: ktyp
1188 INTEGER :: istatus(mpi_status_size)
1192 CALL mpi_recv( pmess, kbytes, mpi_double_precision, mpi_any_source, ktyp, mpi_comm_opa, istatus, iflag )
1206 INTEGER ,
INTENT(in ) :: kdim
1207 INTEGER ,
INTENT(inout),
DIMENSION(kdim) :: ktab
1208 INTEGER ,
INTENT(in ),
OPTIONAL :: kcom
1210 INTEGER :: ierror, localcomm
1211 INTEGER,
DIMENSION(kdim) :: iwork
1214 #if !defined in_surfex || defined SFX_MPI
1215 localcomm = mpi_comm_opa
1216 IF( present(kcom) ) localcomm = kcom
1219 CALL mpi_allreduce( ktab, iwork, kdim, mpi_integer, mpi_max, localcomm, ierror )
1235 INTEGER,
INTENT(inout) :: ktab
1236 INTEGER,
INTENT(in ),
OPTIONAL :: kcom
1238 INTEGER :: ierror, iwork, localcomm
1241 #if !defined in_surfex || defined SFX_MPI
1242 localcomm = mpi_comm_opa
1243 IF( present(kcom) ) localcomm = kcom
1246 CALL mpi_allreduce( ktab, iwork, 1, mpi_integer, mpi_max, localcomm, ierror)
1262 INTEGER ,
INTENT( in ) :: kdim
1263 INTEGER ,
INTENT(inout),
DIMENSION(kdim) :: ktab
1264 INTEGER ,
INTENT( in ),
OPTIONAL :: kcom
1266 INTEGER :: ierror, localcomm
1267 INTEGER,
DIMENSION(kdim) :: iwork
1270 #if !defined in_surfex || defined SFX_MPI
1271 localcomm = mpi_comm_opa
1272 IF( present(kcom) ) localcomm = kcom
1275 CALL mpi_allreduce( ktab, iwork, kdim, mpi_integer, mpi_min, localcomm, ierror )
1291 INTEGER,
INTENT(inout) :: ktab
1292 INTEGER ,
INTENT( in ),
OPTIONAL :: kcom
1294 INTEGER :: ierror, iwork, localcomm
1297 #if !defined in_surfex || defined SFX_MPI
1298 localcomm = mpi_comm_opa
1299 IF( present(kcom) ) localcomm = kcom
1302 CALL mpi_allreduce( ktab, iwork, 1, mpi_integer, mpi_min, localcomm, ierror )
1318 INTEGER,
INTENT(in ) :: kdim
1319 INTEGER,
INTENT(inout),
DIMENSION (kdim) :: ktab
1322 INTEGER,
DIMENSION (kdim) :: iwork
1325 #if !defined in_surfex || defined SFX_MPI
1327 CALL mpi_allreduce( ktab, iwork, kdim, mpi_integer, mpi_sum, mpi_comm_opa, ierror )
1343 INTEGER,
INTENT(inout) :: ktab
1345 INTEGER :: ierror, iwork
1348 #if !defined in_surfex || defined SFX_MPI
1350 CALL mpi_allreduce( ktab, iwork, 1, mpi_integer, mpi_sum, mpi_comm_opa, ierror )
1366 INTEGER ,
INTENT(in ) :: kdim
1367 REAL,
INTENT(inout),
DIMENSION(kdim) :: ptab
1368 INTEGER ,
INTENT(in ),
OPTIONAL :: kcom
1370 INTEGER :: ierror, localcomm
1371 REAL,
DIMENSION(kdim) :: zwork
1374 #if !defined in_surfex || defined SFX_MPI
1375 localcomm = mpi_comm_opa
1376 IF( present(kcom) ) localcomm = kcom
1379 CALL mpi_allreduce( ptab, zwork, kdim, mpi_double_precision, mpi_max, localcomm, ierror )
1394 REAL,
INTENT(inout) :: ptab
1395 INTEGER ,
INTENT(in ),
OPTIONAL :: kcom
1397 INTEGER :: ierror, localcomm
1401 #if !defined in_surfex || defined SFX_MPI
1402 localcomm = mpi_comm_opa
1403 IF( present(kcom) ) localcomm = kcom
1406 CALL mpi_allreduce( ptab, zwork, 1, mpi_double_precision, mpi_max, localcomm, ierror )
1421 INTEGER ,
INTENT(in ) :: kdim
1422 REAL,
INTENT(inout),
DIMENSION(kdim) :: ptab
1423 INTEGER ,
INTENT(in ),
OPTIONAL :: kcom
1425 INTEGER :: ierror, localcomm
1426 REAL,
DIMENSION(kdim) :: zwork
1429 #if !defined in_surfex || defined SFX_MPI
1430 localcomm = mpi_comm_opa
1431 IF( present(kcom) ) localcomm = kcom
1434 CALL mpi_allreduce( ptab, zwork, kdim, mpi_double_precision, mpi_min, localcomm, ierror )
1449 REAL,
INTENT(inout) :: ptab
1450 INTEGER ,
INTENT(in ),
OPTIONAL :: kcom
1454 INTEGER :: localcomm
1457 #if !defined in_surfex || defined SFX_MPI
1458 localcomm = mpi_comm_opa
1459 IF( present(kcom) ) localcomm = kcom
1462 CALL mpi_allreduce( ptab, zwork, 1, mpi_double_precision, mpi_min, localcomm, ierror )
1477 INTEGER ,
INTENT( in ) :: kdim
1478 REAL,
DIMENSION(kdim),
INTENT( inout ) :: ptab
1479 INTEGER ,
INTENT( in ),
OPTIONAL :: kcom
1482 INTEGER :: localcomm
1483 REAL,
DIMENSION(kdim) :: zwork
1486 #if !defined in_surfex || defined SFX_MPI
1487 localcomm = mpi_comm_opa
1488 IF( present(kcom) ) localcomm = kcom
1491 CALL mpi_allreduce( ptab, zwork, kdim, mpi_double_precision, mpi_sum, localcomm, ierror )
1506 REAL,
INTENT(inout) :: ptab
1507 INTEGER ,
INTENT(in ),
OPTIONAL :: kcom
1509 INTEGER :: ierror, localcomm
1513 #if !defined in_surfex || defined SFX_MPI
1514 localcomm = mpi_comm_opa
1515 IF( present(kcom) ) localcomm = kcom
1518 CALL mpi_allreduce( ptab, zwork, 1, mpi_double_precision, mpi_sum, localcomm, ierror )
1526 #if ! defined in_surfex
1537 REAL,
DIMENSION (jpi,jpj),
INTENT(in ) :: ptab
1538 REAL,
DIMENSION (jpi,jpj),
INTENT(in ) :: pmask
1539 REAL ,
INTENT( out) :: pmin
1540 INTEGER ,
INTENT( out) :: ki, kj
1542 INTEGER ,
DIMENSION(2) :: ilocs
1545 REAL,
DIMENSION(2,1) :: zain, zaout
1548 zmin = minval( ptab(:,:) , mask= pmask == 1.e0 )
1549 ilocs = minloc( ptab(:,:) , mask= pmask == 1.e0 )
1551 ki = ilocs(1) + nimpp - 1
1552 kj = ilocs(2) + njmpp - 1
1555 zain(2,:)=ki+10000.*kj
1557 CALL mpi_allreduce( zain,zaout, 1, mpi_2double_precision,mpi_minloc,mpi_comm_opa,ierror)
1560 kj = int(zaout(2,1)/10000.)
1561 ki = int(zaout(2,1) - 10000.*kj )
1576 REAL,
DIMENSION (jpi,jpj,jpk),
INTENT(in ) :: ptab
1577 REAL,
DIMENSION (jpi,jpj,jpk),
INTENT(in ) :: pmask
1578 REAL ,
INTENT( out) :: pmin
1579 INTEGER ,
INTENT( out) :: ki, kj, kk
1583 INTEGER ,
DIMENSION(3) :: ilocs
1584 REAL,
DIMENSION(2,1) :: zain, zaout
1587 zmin = minval( ptab(:,:,:) , mask= pmask == 1.e0 )
1588 ilocs = minloc( ptab(:,:,:) , mask= pmask == 1.e0 )
1590 ki = ilocs(1) + nimpp - 1
1591 kj = ilocs(2) + njmpp - 1
1595 zain(2,:)=ki+10000.*kj+100000000.*kk
1597 CALL mpi_allreduce( zain,zaout, 1, mpi_2double_precision,mpi_minloc,mpi_comm_opa,ierror)
1600 kk = int( zaout(2,1) / 100000000. )
1601 kj = int( zaout(2,1) - kk * 100000000. ) / 10000
1602 ki = int( zaout(2,1) - kk * 100000000. -kj * 10000. )
1617 REAL,
DIMENSION (jpi,jpj),
INTENT(in ) :: ptab
1618 REAL,
DIMENSION (jpi,jpj),
INTENT(in ) :: pmask
1619 REAL ,
INTENT( out) :: pmax
1620 INTEGER ,
INTENT( out) :: ki, kj
1623 INTEGER,
DIMENSION (2) :: ilocs
1625 REAL,
DIMENSION(2,1) :: zain, zaout
1628 zmax = maxval( ptab(:,:) , mask= pmask == 1.e0 )
1629 ilocs = maxloc( ptab(:,:) , mask= pmask == 1.e0 )
1631 ki = ilocs(1) + nimpp - 1
1632 kj = ilocs(2) + njmpp - 1
1635 zain(2,:) = ki + 10000. * kj
1637 CALL mpi_allreduce( zain,zaout, 1, mpi_2double_precision,mpi_maxloc,mpi_comm_opa,ierror)
1640 kj = int( zaout(2,1) / 10000. )
1641 ki = int( zaout(2,1) - 10000.* kj )
1656 REAL,
DIMENSION (jpi,jpj,jpk),
INTENT(in ) :: ptab
1657 REAL,
DIMENSION (jpi,jpj,jpk),
INTENT(in ) :: pmask
1658 REAL ,
INTENT( out) :: pmax
1659 INTEGER ,
INTENT( out) :: ki, kj, kk
1662 REAL,
DIMENSION(2,1) :: zain, zaout
1663 INTEGER ,
DIMENSION(3) :: ilocs
1667 zmax = maxval( ptab(:,:,:) , mask= pmask == 1.e0 )
1668 ilocs = maxloc( ptab(:,:,:) , mask= pmask == 1.e0 )
1670 ki = ilocs(1) + nimpp - 1
1671 kj = ilocs(2) + njmpp - 1
1675 zain(2,:)=ki+10000.*kj+100000000.*kk
1677 CALL mpi_allreduce( zain,zaout, 1, mpi_2double_precision,mpi_maxloc,mpi_comm_opa,ierror)
1680 kk = int( zaout(2,1) / 100000000. )
1681 kj = int( zaout(2,1) - kk * 100000000. ) / 10000
1682 ki = int( zaout(2,1) - kk * 100000000. -kj * 10000. )
1713 njmppmax = maxval( njmppt )
1717 DO jjproc = 1, jpnij
1718 IF( njmppt(jjproc) == njmppmax ) ndim_rank_north = ndim_rank_north + 1
1722 IF (
ALLOCATED (nrank_north))
DEALLOCATE(nrank_north)
1723 ALLOCATE( nrank_north(ndim_rank_north) )
1729 IF ( njmppt(ji) == njmppmax )
THEN
1731 nrank_north(ii)=ji-1
1736 CALL mpi_comm_group( mpi_comm_opa, ngrp_world, ierr )
1739 CALL mpi_group_incl( ngrp_world, ndim_rank_north, nrank_north, ngrp_north, ierr )
1742 CALL mpi_comm_create( mpi_comm_opa, ngrp_north, ncomm_north, ierr )
1761 REAL,
DIMENSION(jpi,jpj,jpk),
INTENT(inout) :: pt3d
1762 CHARACTER(len=1) ,
INTENT(in ) :: cd_type
1764 REAL ,
INTENT(in ) :: psgn
1766 INTEGER :: ji, jj, jr
1767 INTEGER :: ierr, itaille, ildi, ilei, iilb
1768 INTEGER :: ijpj, ijpjm1, ij, iproc
1769 REAL,
DIMENSION(jpiglo,4,jpk) :: ztab
1770 REAL,
DIMENSION(jpi ,4,jpk) :: znorthloc
1771 REAL,
DIMENSION(jpi ,4,jpk,jpni) :: znorthgloio
1777 DO jj = nlcj - ijpj +1, nlcj
1778 ij = jj - nlcj + ijpj
1779 znorthloc(:,ij,:) = pt3d(:,jj,:)
1783 itaille = jpi * jpk * ijpj
1784 CALL mpi_allgather( znorthloc , itaille, mpi_double_precision, &
1785 & znorthgloio, itaille, mpi_double_precision, ncomm_north, ierr )
1788 DO jr = 1, ndim_rank_north
1789 iproc = nrank_north(jr) + 1
1792 iilb = nimppt(iproc)
1795 ztab(ji+iilb-1,jj,:) = znorthgloio(ji,jj,:,jr)
1800 CALL
lbc_nfd( ztab, cd_type, psgn )
1802 DO jj = nlcj-ijpj+1, nlcj
1803 ij = jj - nlcj + ijpj
1805 pt3d(ji,jj,:) = ztab(ji+nimpp-1,ij,:)
1826 REAL,
DIMENSION(jpi,jpj),
INTENT(inout) :: pt2d
1827 CHARACTER(len=1) ,
INTENT(in ) :: cd_type
1829 REAL ,
INTENT(in ) :: psgn
1831 INTEGER :: ji, jj, jr
1832 INTEGER :: ierr, itaille, ildi, ilei, iilb
1833 INTEGER :: ijpj, ijpjm1, ij, iproc
1834 REAL,
DIMENSION(jpiglo,4) :: ztab
1835 REAL,
DIMENSION(jpi ,4) :: znorthloc
1836 REAL,
DIMENSION(jpi ,4,jpni) :: znorthgloio
1842 DO jj = nlcj-ijpj+1, nlcj
1843 ij = jj - nlcj + ijpj
1844 znorthloc(:,ij) = pt2d(:,jj)
1848 itaille = jpi * ijpj
1849 CALL mpi_allgather( znorthloc , itaille, mpi_double_precision, &
1850 & znorthgloio, itaille, mpi_double_precision, ncomm_north, ierr )
1852 DO jr = 1, ndim_rank_north
1853 iproc = nrank_north(jr) + 1
1859 ztab(ji+iilb-1,jj) = znorthgloio(ji,jj,jr)
1864 CALL
lbc_nfd( ztab, cd_type, psgn )
1867 DO jj = nlcj-ijpj+1, nlcj
1868 ij = jj - nlcj + ijpj
1870 pt2d(ji,jj) = ztab(ji+nimpp-1,ij)
1892 REAL,
DIMENSION(1-jpr2di:jpi+jpr2di,1-jpr2dj:jpj+jpr2dj),
INTENT(inout) :: pt2d
1893 CHARACTER(len=1) ,
INTENT(in ) :: cd_type
1895 REAL ,
INTENT(in ) :: psgn
1897 INTEGER :: ji, jj, jr
1898 INTEGER :: ierr, itaille, ildi, ilei, iilb
1899 INTEGER :: ijpj, ij, iproc
1900 REAL,
DIMENSION(jpiglo,4+2*jpr2dj) :: ztab
1901 REAL,
DIMENSION(jpi ,4+2*jpr2dj) :: znorthloc
1902 REAL,
DIMENSION(jpi ,4+2*jpr2dj,jpni) :: znorthgloio
1909 DO jj = nlcj - ijpj + 1 - jpr2dj, nlcj +jpr2dj
1912 znorthloc(ji,ij)=pt2d(ji,jj)
1916 itaille = jpi * ( ijpj + 2 * jpr2dj )
1917 CALL mpi_allgather( znorthloc(1,1) , itaille, mpi_double_precision, &
1918 & znorthgloio(1,1,1), itaille, mpi_double_precision, ncomm_north, ierr )
1920 DO jr = 1, ndim_rank_north
1921 iproc = nrank_north(jr) + 1
1924 iilb = nimppt(iproc)
1925 DO jj = 1, ijpj+2*jpr2dj
1927 ztab(ji+iilb-1,jj) = znorthgloio(ji,jj,jr)
1935 CALL
lbc_nfd( ztab(:,:), cd_type, psgn, pr2dj = jpr2dj )
1939 DO jj = nlcj - ijpj + 1 , nlcj +jpr2dj
1942 pt2d(ji,jj) = ztab(ji+nimpp-1,ij)
1962 CHARACTER(len=1) ,
INTENT( in ) :: &
1967 REAL,
INTENT( in ) :: &
1971 REAL,
DIMENSION(:,:,:),
INTENT( inout ) :: &
1976 INTEGER :: ijt, iju, ijpj, ijpjm1
1979 SELECT CASE ( jpni )
1989 SELECT CASE ( npolj )
1993 SELECT CASE ( cd_type )
1997 pt3d(ji,ijpj,jk) = psgn * pt3d(ijt,ijpj-2,jk)
1999 DO ji = jpiglo/2+1, jpiglo
2001 pt3d(ji,ijpjm1,jk) = psgn * pt3d(ijt,ijpjm1,jk)
2006 pt3d(ji,ijpj,jk) = psgn * pt3d(iju,ijpj-2,jk)
2008 DO ji = jpiglo/2, jpiglo-1
2010 pt3d(ji,ijpjm1,jk) = psgn * pt3d(iju,ijpjm1,jk)
2015 pt3d(ji,ijpj-1,jk) = psgn * pt3d(ijt,ijpj-2,jk)
2016 pt3d(ji,ijpj ,jk) = psgn * pt3d(ijt,ijpj-3,jk)
2021 pt3d(ji,ijpj-1,jk) = psgn * pt3d(iju,ijpj-2,jk)
2022 pt3d(ji,ijpj ,jk) = psgn * pt3d(iju,ijpj-3,jk)
2028 SELECT CASE ( cd_type )
2032 pt3d(ji,ijpj,jk) = psgn * pt3d(ijt,ijpj-1,jk)
2037 pt3d(ji,ijpj,jk) = psgn * pt3d(iju,ijpj-1,jk)
2042 pt3d(ji,ijpj,jk) = psgn * pt3d(ijt,ijpj-2,jk)
2044 DO ji = jpiglo/2+1, jpiglo
2046 pt3d(ji,ijpjm1,jk) = psgn * pt3d(ijt,ijpjm1,jk)
2051 pt3d(ji,ijpj ,jk) = psgn * pt3d(iju,ijpj-2,jk)
2053 DO ji = jpiglo/2+1, jpiglo-1
2055 pt3d(ji,ijpjm1,jk) = psgn * pt3d(iju,ijpjm1,jk)
2061 SELECT CASE ( cd_type)
2062 CASE (
'T' ,
'U' ,
'V' ,
'W' )
2063 pt3d(:, 1 ,jk) = 0.e0
2064 pt3d(:,ijpj,jk) = 0.e0
2066 pt3d(:,ijpj,jk) = 0.e0
2089 CHARACTER(len=1) ,
INTENT( in ) :: &
2094 REAL,
INTENT( in ) :: &
2098 REAL,
DIMENSION(:,:),
INTENT( inout ) :: &
2100 INTEGER,
OPTIONAL,
INTENT(in) :: pr2dj
2103 INTEGER :: ji, jl, ipr2dj
2104 INTEGER :: ijt, iju, ijpj, ijpjm1
2106 SELECT CASE ( jpni )
2114 IF( present(pr2dj) )
THEN
2116 IF (jpni .GT. 1) ijpj = ijpj + ipr2dj
2124 SELECT CASE ( npolj )
2128 SELECT CASE ( cd_type )
2130 CASE (
'T',
'S',
'W' )
2134 pt2d(ji,ijpj+jl) = psgn * pt2d(ijt,ijpj-2-jl)
2137 DO ji = jpiglo/2+1, jpiglo
2139 pt2d(ji,ijpj-1) = psgn * pt2d(ijt,ijpj-1)
2145 pt2d(ji,ijpj+jl) = psgn * pt2d(iju,ijpj-2-jl)
2148 DO ji = jpiglo/2, jpiglo-1
2150 pt2d(ji,ijpjm1) = psgn * pt2d(iju,ijpjm1)
2156 pt2d(ji,ijpj+jl) = psgn * pt2d(ijt,ijpj-3-jl)
2163 pt2d(ji,ijpj+jl) = psgn * pt2d(iju,ijpj-3-jl)
2176 pt2d(1,ijpj+jl) = psgn * pt2d(2,ijpj-1+jl)
2178 iju = jpiglo - ji + 2
2179 pt2d(ji,ijpj+jl) = psgn * pt2d(iju,ijpj-1-jl)
2186 SELECT CASE ( cd_type )
2187 CASE (
'T' ,
'W' ,
'S' )
2191 pt2d(ji,ijpj+jl) = psgn * pt2d(ijt,ijpj-1-jl)
2198 pt2d(ji,ijpj+jl) = psgn * pt2d(iju,ijpj-1-jl)
2205 pt2d(ji,ijpj+jl) = psgn * pt2d(ijt,ijpj-2-jl)
2208 DO ji = jpiglo/2+1, jpiglo
2210 pt2d(ji,ijpjm1) = psgn * pt2d(ijt,ijpjm1)
2216 pt2d(ji,ijpj+jl) = psgn * pt2d(iju,ijpj-2-jl)
2219 DO ji = jpiglo/2+1, jpiglo-1
2221 pt2d(ji,ijpjm1) = psgn * pt2d(iju,ijpjm1)
2224 pt2d( 2 ,ijpj:ijpj+ipr2dj) = 0.e0
2226 DO ji = 2 , jpiglo-1
2227 ijt = jpiglo - ji + 2
2228 pt2d(ji,ijpj+jl)= 0.5 * ( pt2d(ji,ijpj-1-jl) + psgn * pt2d(ijt,ijpj-1-jl) )
2235 SELECT CASE ( cd_type)
2236 CASE (
'T' ,
'U' ,
'V' ,
'W' )
2237 pt2d(:, 1:1-ipr2dj ) = 0.e0
2238 pt2d(:,ijpj:ijpj+ipr2dj) = 0.e0
2240 pt2d(:,ijpj:ijpj+ipr2dj) = 0.e0
2242 pt2d(:, 1:1-ipr2dj ) = 0.e0
2243 pt2d(:,ijpj:ijpj+ipr2dj) = 0.e0
subroutine mpp_lbc_north_3d(pt3d, cd_type, psgn)
subroutine lbc_nfd_2d(pt2d, cd_type, psgn, pr2dj)
subroutine mppmax_int(kint, kcom)
subroutine mppsum_a_real(ptab, kdim, kcom)
subroutine, public mpp_lnk_2d(pt2d, cd_type, psgn, cd_mpp, pval)
subroutine mpp_maxloc2d(ptab, pmask, pmax, ki, kj)
subroutine mpp_minloc3d(ptab, pmask, pmin, ki, kj, kk)
subroutine, public mpp_ini_north
subroutine lbc_lnk_3d(pt3d, cd_type, psgn, cd_mpp, pval)
subroutine mppmin_real(psca, kcom)
subroutine mppsum_a_int(ktab, kdim)
subroutine, public mpp_lbc_north_e(pt2d, cd_type, psgn)
subroutine, public mppsend(ktyp, pmess, kbytes, kdest, md_req)
subroutine mppmin_int(kint, kcom)
subroutine mppmax_a_int(karr, kdim, kcom)
subroutine mpp_minloc2d(ptab, pmask, pmin, ki, kj)
subroutine, public mpp_lnk_3d_gather(ptab1, cd_type1, ptab2, cd_type2, psgn)
subroutine mppmin_a_int(karr, kdim, kcom)
subroutine mpp_maxloc3d(ptab, pmask, pmax, ki, kj, kk)
subroutine lbc_lnk_3d_gather(pt3d1, cd_type1, pt3d2, cd_type2, psgn)
subroutine lbc_nfd_3d(pt3d, cd_type, psgn)
subroutine mppmin_a_real(parr, kdim, kcom)
subroutine lbc_lnk_2d(pt2d, cd_type, psgn, cd_mpp, pval)
subroutine, public mpp_lnk_2d_e(pt2d, cd_type, psgn)
subroutine, public mpprecv(ktyp, pmess, kbytes, ksource)
subroutine mppsum_int(ktab)
subroutine mppmax_real(psca, kcom)
subroutine, public mpp_lnk_3d(ptab, cd_type, psgn, cd_mpp, pval)
subroutine mppmax_a_real(parr, kdim, kcom)
subroutine mpp_lbc_north_2d(pt2d, cd_type, psgn)
subroutine mppsum_real(ptab, kcom)