New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 869 for trunk/NEMO/OPA_SRC – NEMO

Changeset 869 for trunk/NEMO/OPA_SRC


Ignore:
Timestamp:
2008-03-26T10:21:54+01:00 (16 years ago)
Author:
rblod
Message:

Parallelisation of LIM3. This commit seems to ensure the reproducibility mono/mpp. See ticket #77.

Location:
trunk/NEMO/OPA_SRC
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/SBC/flx_bulk_daily.h90

    r841 r869  
    192192      tatm_ice(:,:) = tatm(:,:) 
    193193#endif 
     194      CALL lbc_lnk(tatm_ice, 'T', 1. )  !RB necessary ?? 
    194195       
    195196      CALL FLUSH(numout) 
  • trunk/NEMO/OPA_SRC/SBC/flx_bulk_monthly.h90

    r841 r869  
    231231      tatm_ice(:,:) = tatm(:,:) 
    232232#endif 
     233      CALL lbc_lnk(tatm_ice, 'T', 1. )  !RB necessary ?? 
    233234 
    234235      ! ------------------- ! 
  • trunk/NEMO/OPA_SRC/SBC/taumod.F90

    r841 r869  
    3333   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   & 
    3434      taux, tauy,      &  !: surface stress components in (i,j) referential 
    35       ! TAU BUG 
    3635#if defined key_lim3 
    3736      tauxw, tauyw,    &  !: surface wind stress components in (i,j) referential 
  • trunk/NEMO/OPA_SRC/lbclnk.F90

    r719 r869  
    410410         CASE ( 3 , 4 )                        ! *  North fold  T-point pivot 
    411411 
    412             pt3d( 1 ,jpj,jk) = 0.e0 
    413             pt3d(jpi,jpj,jk) = 0.e0 
     412!            pt3d( 1 ,jpj,jk) = 0.e0 
     413!            pt3d(jpi,jpj,jk) = 0.e0 
    414414 
    415415            SELECT CASE ( cd_type ) 
     
    584584      CASE ( 3 , 4 )                           ! * North fold  T-point pivot 
    585585 
    586          pt2d( 1 , 1 ) = 0.e0        !!!!!  bug gm ??? !Edmee 
    587          pt2d( 1 ,jpj) = 0.e0 
    588          pt2d(jpi,jpj) = 0.e0 
     586!         pt2d( 1 , 1 ) = 0.e0        !!!!!  bug gm ??? !Edmee 
     587!         pt2d( 1 ,jpj) = 0.e0 
     588!         pt2d(jpi,jpj) = 0.e0 
    589589 
    590590         SELECT CASE ( cd_type ) 
  • trunk/NEMO/OPA_SRC/lib_mpp.F90

    r719 r869  
    6060   PUBLIC  mynode, mpparent, mpp_isl, mpp_min, mpp_max, mpp_sum,  mpp_lbc_north 
    6161   PUBLIC  mpp_lbc_north_e, mpp_minloc, mpp_maxloc, mpp_lnk_3d, mpp_lnk_2d, mpp_lnk_3d_gather, mpp_lnk_2d_e, mpplnks 
    62    PUBLIC  mpprecv, mppsend, mppscatter, mppgather, mppobc, mpp_ini_north, mppstop, mppsync 
     62   PUBLIC  mpprecv, mppsend, mppscatter, mppgather, mppobc, mpp_ini_north, mppstop, mppsync, mpp_ini_ice, mpp_comm_free 
    6363#if defined key_oasis3 || defined key_oasis4 
    6464   PUBLIC  mppsize, mpprank 
     
    113113      mpi_comm_opa ! opa local communicator 
    114114 
     115   ! variables used in case of sea-ice 
     116   INTEGER, PUBLIC ::  &       ! 
     117      ngrp_ice,        &       ! group ID for the ice processors (to compute rheology) 
     118      ncomm_ice,       &       ! communicator made by the processors with sea-ice 
     119      ndim_rank_ice,   &       ! number of 'ice' processors 
     120      n_ice_root               ! number (in the comm_ice) of proc 0 in the ice comm 
     121   INTEGER, DIMENSION(:), ALLOCATABLE ::   & 
     122      nrank_ice            ! dimension ndim_rank_north, number of the procs belonging to ncomm_north 
    115123   ! variables used in case of north fold condition in mpp_mpi with jpni > 1 
    116124   INTEGER ::      &       ! 
     
    853861 
    854862      CASE ( 1 )  ! only one proc along I, no mpp exchange 
    855  
     863        
    856864         SELECT CASE ( npolj ) 
    857865   
     
    872880                  END DO 
    873881               END DO 
    874            
     882 
    875883            CASE ( 'U' ) 
    876884               DO jk = 1, jpk 
     
    30693077 
    30703078 
    3071    SUBROUTINE mppmax_a_int( ktab, kdim ) 
     3079   SUBROUTINE mppmax_a_int( ktab, kdim, kcom ) 
    30723080      !!---------------------------------------------------------------------- 
    30733081      !!                  ***  routine mppmax_a_int  *** 
     
    30793087      INTEGER , INTENT( in  )                  ::   kdim        ! size of array 
    30803088      INTEGER , INTENT(inout), DIMENSION(kdim) ::   ktab        ! input array 
     3089      INTEGER , INTENT(in), OPTIONAL         ::   kcom   
    30813090   
    30823091#if defined key_mpp_shmem 
     
    31103119      !! * Local variables   (MPI version) 
    31113120      INTEGER :: ierror 
     3121      INTEGER :: localcomm 
    31123122      INTEGER, DIMENSION(kdim) ::   iwork 
     3123 
     3124      localcomm = mpi_comm_opa 
     3125      IF( PRESENT(kcom) ) localcomm = kcom 
    31133126   
    31143127      CALL mpi_allreduce( ktab, iwork, kdim, mpi_integer,   & 
    3115            &                mpi_max, mpi_comm_opa, ierror ) 
     3128           &                mpi_max, localcomm, ierror ) 
    31163129   
    31173130      ktab(:) = iwork(:) 
     
    31213134 
    31223135 
    3123    SUBROUTINE mppmax_int( ktab ) 
     3136   SUBROUTINE mppmax_int( ktab, kcom ) 
    31243137      !!---------------------------------------------------------------------- 
    31253138      !!                  ***  routine mppmax_int  *** 
     
    31323145      !! * Arguments 
    31333146      INTEGER, INTENT(inout) ::   ktab      ! ??? 
     3147      INTEGER, INTENT(in), OPTIONAL ::   kcom      ! ??? 
    31343148   
    31353149      !! * Local declarations 
     
    31593173      !! * Local variables   (MPI version) 
    31603174      INTEGER ::  ierror, iwork 
    3161    
     3175      INTEGER :: localcomm 
     3176 
     3177      localcomm = mpi_comm_opa  
     3178      IF( PRESENT(kcom) ) localcomm = kcom 
     3179 
    31623180      CALL mpi_allreduce(ktab,iwork, 1,mpi_integer   & 
    3163            &              ,mpi_max,mpi_comm_opa,ierror) 
     3181           &              ,mpi_max,localcomm,ierror) 
    31643182   
    31653183      ktab = iwork 
     
    31693187 
    31703188 
    3171    SUBROUTINE mppmin_a_int( ktab, kdim ) 
     3189   SUBROUTINE mppmin_a_int( ktab, kdim, kcom ) 
    31723190      !!---------------------------------------------------------------------- 
    31733191      !!                  ***  routine mppmin_a_int  *** 
     
    31793197      INTEGER , INTENT( in  )                  ::   kdim        ! size of array 
    31803198      INTEGER , INTENT(inout), DIMENSION(kdim) ::   ktab        ! input array 
     3199      INTEGER , INTENT(in), OPTIONAL        ::   kcom        ! input array 
    31813200   
    31823201#if defined key_mpp_shmem 
     
    32103229      !! * Local variables   (MPI version) 
    32113230      INTEGER :: ierror 
     3231      INTEGER :: localcomm 
    32123232      INTEGER, DIMENSION(kdim) ::   iwork 
    32133233   
     3234      localcomm = mpi_comm_opa 
     3235      IF( PRESENT(kcom) ) localcomm = kcom 
     3236 
    32143237      CALL mpi_allreduce( ktab, iwork, kdim, mpi_integer,   & 
    3215            &                mpi_min, mpi_comm_opa, ierror ) 
     3238           &                mpi_min, localcomm, ierror ) 
    32163239   
    32173240      ktab(:) = iwork(:) 
     
    35053528 
    35063529 
    3507   SUBROUTINE mppmax_a_real( ptab, kdim ) 
     3530  SUBROUTINE mppmax_a_real( ptab, kdim, kcom ) 
    35083531    !!---------------------------------------------------------------------- 
    35093532    !!                 ***  routine mppmax_a_real  *** 
     
    35153538    INTEGER , INTENT( in  )                  ::   kdim 
    35163539    REAL(wp), INTENT(inout), DIMENSION(kdim) ::   ptab 
     3540    INTEGER , INTENT( in  ), OPTIONAL     ::   kcom 
    35173541 
    35183542#if defined key_mpp_shmem 
     
    35473571    !! * Local variables   (MPI version) 
    35483572    INTEGER :: ierror 
     3573    INTEGER :: localcomm 
    35493574    REAL(wp), DIMENSION(kdim) ::  zwork 
    35503575 
     3576    localcomm = mpi_comm_opa 
     3577    IF( PRESENT(kcom) ) localcomm = kcom 
     3578 
    35513579    CALL mpi_allreduce(ptab, zwork,kdim,mpi_double_precision   & 
    3552          ,mpi_max,mpi_comm_opa,ierror) 
     3580         ,mpi_max,localcomm,ierror) 
    35533581    ptab(:) = zwork(:) 
    35543582 
     
    35583586 
    35593587 
    3560   SUBROUTINE mppmax_real( ptab ) 
     3588  SUBROUTINE mppmax_real( ptab, kcom ) 
    35613589    !!---------------------------------------------------------------------- 
    35623590    !!                  ***  routine mppmax_real  *** 
     
    35673595    !! * Arguments 
    35683596    REAL(wp), INTENT(inout) ::   ptab      ! ??? 
     3597    INTEGER, INTENT(in), OPTIONAL ::   kcom      ! ??? 
    35693598 
    35703599#if defined key_mpp_shmem 
     
    35913620    !! * Local variables   (MPI version) 
    35923621    INTEGER  ::   ierror 
     3622    INTEGER  ::   localcomm 
    35933623    REAL(wp) ::   zwork 
    35943624 
     3625    localcomm = mpi_comm_opa  
     3626    IF( PRESENT(kcom) ) localcomm = kcom 
     3627 
    35953628    CALL mpi_allreduce( ptab, zwork  , 1             , mpi_double_precision,   & 
    3596        &                      mpi_max, mpi_comm_opa, ierror     ) 
     3629       &                      mpi_max, localcomm, ierror     ) 
    35973630    ptab = zwork 
    35983631 
     
    36023635 
    36033636 
    3604   SUBROUTINE mppmin_a_real( ptab, kdim ) 
     3637  SUBROUTINE mppmin_a_real( ptab, kdim, kcom ) 
    36053638    !!---------------------------------------------------------------------- 
    36063639    !!                 ***  routine mppmin_a_real  *** 
     
    36123645    INTEGER , INTENT( in  )                  ::   kdim 
    36133646    REAL(wp), INTENT(inout), DIMENSION(kdim) ::   ptab 
     3647    INTEGER , INTENT( in  ), OPTIONAL        ::   kcom 
    36143648 
    36153649#if defined key_mpp_shmem 
     
    36443678    !! * Local variables   (MPI version) 
    36453679    INTEGER :: ierror 
     3680    INTEGER :: localcomm  
    36463681    REAL(wp), DIMENSION(kdim) ::   zwork 
    36473682 
     3683    localcomm = mpi_comm_opa  
     3684    IF( PRESENT(kcom) ) localcomm = kcom 
     3685 
    36483686    CALL mpi_allreduce(ptab, zwork,kdim,mpi_double_precision   & 
    3649          ,mpi_min,mpi_comm_opa,ierror) 
     3687         ,mpi_min,localcomm,ierror) 
    36503688    ptab(:) = zwork(:) 
    36513689 
     
    36553693 
    36563694 
    3657   SUBROUTINE mppmin_real( ptab ) 
     3695  SUBROUTINE mppmin_real( ptab, kcom ) 
    36583696    !!---------------------------------------------------------------------- 
    36593697    !!                  ***  routine mppmin_real  *** 
     
    36653703    !! * Arguments 
    36663704    REAL(wp), INTENT( inout ) ::   ptab        !  
     3705    INTEGER,INTENT(in), OPTIONAL :: kcom 
    36673706 
    36683707#if defined key_mpp_shmem 
     
    36903729    INTEGER  ::   ierror 
    36913730    REAL(wp) ::   zwork 
     3731    INTEGER :: localcomm 
     3732 
     3733    localcomm = mpi_comm_opa  
     3734    IF( PRESENT(kcom) ) localcomm = kcom 
    36923735 
    36933736    CALL mpi_allreduce( ptab, zwork, 1,mpi_double_precision   & 
    3694          &               ,mpi_min,mpi_comm_opa,ierror) 
     3737         &               ,mpi_min,localcomm,ierror) 
    36953738    ptab = zwork 
    36963739 
     
    37003743 
    37013744 
    3702   SUBROUTINE mppsum_a_real( ptab, kdim ) 
     3745  SUBROUTINE mppsum_a_real( ptab, kdim, kcom ) 
    37033746    !!---------------------------------------------------------------------- 
    37043747    !!                  ***  routine mppsum_a_real  *** 
     
    37103753    INTEGER , INTENT( in )                     ::   kdim      ! size of ptab 
    37113754    REAL(wp), DIMENSION(kdim), INTENT( inout ) ::   ptab      ! input array 
     3755    INTEGER, INTENT(in), OPTIONAL :: kcom 
    37123756 
    37133757#if defined key_mpp_shmem 
     
    37423786    !! * Local variables   (MPI version) 
    37433787    INTEGER                   ::   ierror    ! temporary integer 
     3788    INTEGER                   ::   localcomm  
    37443789    REAL(wp), DIMENSION(kdim) ::   zwork     ! temporary workspace  
     3790     
     3791 
     3792    localcomm = mpi_comm_opa  
     3793    IF( PRESENT(kcom) ) localcomm = kcom 
    37453794 
    37463795    CALL mpi_allreduce(ptab, zwork,kdim,mpi_double_precision   & 
    3747          &              ,mpi_sum,mpi_comm_opa,ierror) 
     3796         &              ,mpi_sum,localcomm,ierror) 
    37483797    ptab(:) = zwork(:) 
    37493798 
     
    37533802 
    37543803 
    3755   SUBROUTINE mppsum_real( ptab ) 
     3804  SUBROUTINE mppsum_real( ptab, kcom ) 
    37563805    !!---------------------------------------------------------------------- 
    37573806    !!                  ***  routine mppsum_real  *** 
     
    37623811    !!----------------------------------------------------------------------- 
    37633812    REAL(wp), INTENT(inout) ::   ptab        ! input scalar 
     3813    INTEGER, INTENT(in), OPTIONAL :: kcom 
    37643814 
    37653815#if defined key_mpp_shmem 
     
    37863836    !! * Local variables   (MPI version) 
    37873837    INTEGER  ::   ierror 
     3838    INTEGER  ::   localcomm  
    37883839    REAL(wp) ::   zwork 
    37893840 
    3790     CALL mpi_allreduce(ptab, zwork, 1,mpi_double_precision   & 
    3791          &              ,mpi_sum,mpi_comm_opa,ierror) 
     3841   localcomm = mpi_comm_opa  
     3842   IF( PRESENT(kcom) ) localcomm = kcom 
     3843  
     3844   CALL mpi_allreduce(ptab, zwork, 1,mpi_double_precision   & 
     3845         &              ,mpi_sum,localcomm,ierror) 
    37923846    ptab = zwork 
    37933847 
     
    42894343  END SUBROUTINE mppobc 
    42904344 
     4345  SUBROUTINE mpp_comm_free( kcom) 
     4346 
     4347     INTEGER, INTENT(in) :: kcom 
     4348     INTEGER :: ierr 
     4349 
     4350     CALL MPI_COMM_FREE(kcom, ierr) 
     4351 
     4352  END SUBROUTINE mpp_comm_free 
     4353 
     4354 
     4355  SUBROUTINE mpp_ini_ice(pindic) 
     4356    !!---------------------------------------------------------------------- 
     4357    !!               ***  routine mpp_ini_ice  *** 
     4358    !! 
     4359    !! ** Purpose :   Initialize special communicator for ice areas 
     4360    !!      condition together with global variables needed in the ddmpp folding 
     4361    !! 
     4362    !! ** Method  : - Look for ice processors in ice routines 
     4363    !!              - Put their number in nrank_ice 
     4364    !!              - Create groups for the world processors and the ice processors 
     4365    !!              - Create a communicator for ice processors 
     4366    !! 
     4367    !! ** output 
     4368    !!      njmppmax = njmpp for northern procs 
     4369    !!      ndim_rank_ice = number of processors in the northern line 
     4370    !!      nrank_north (ndim_rank_north) = number  of the northern procs. 
     4371    !!      ngrp_world = group ID for the world processors 
     4372    !!      ngrp_ice = group ID for the ice processors 
     4373    !!      ncomm_ice = communicator for the ice procs. 
     4374    !!      n_ice_root = number (in the world) of proc 0 in the ice comm. 
     4375    !! 
     4376    !! History : 
     4377    !!        !  03-09 (J.M. Molines, MPI only ) 
     4378    !!---------------------------------------------------------------------- 
     4379#ifdef key_mpp_shmem 
     4380    CALL ctl_stop( ' mpp_ini_ice not available in SHMEM' ) 
     4381# elif key_mpp_mpi 
     4382    INTEGER, INTENT(in) :: pindic 
     4383    INTEGER :: ierr 
     4384    INTEGER :: jproc 
     4385    INTEGER :: ii,ji 
     4386    INTEGER, DIMENSION(jpnij) :: kice 
     4387    INTEGER, DIMENSION(jpnij) :: zwork 
     4388    INTEGER :: zrank 
     4389    !!---------------------------------------------------------------------- 
     4390 
     4391    ! Look for how many procs with sea-ice 
     4392    ! 
     4393    kice = 0 
     4394    DO jproc=1,jpnij 
     4395       IF(jproc == narea .AND. pindic .GT. 0) THEN 
     4396          kice(jproc) = 1     
     4397       ENDIF         
     4398    END DO 
     4399 
     4400    zwork = 0 
     4401    CALL MPI_ALLREDUCE( kice, zwork,jpnij, mpi_integer,   & 
     4402                       mpi_sum, mpi_comm_opa, ierr ) 
     4403    ndim_rank_ice = sum(zwork)           
     4404 
     4405    ! Allocate the right size to nrank_north 
     4406    IF(ALLOCATED(nrank_ice)) DEALLOCATE(nrank_ice) 
     4407    ALLOCATE(nrank_ice(ndim_rank_ice)) 
     4408 
     4409    ii = 0      
     4410    nrank_ice = 0 
     4411    DO jproc=1,jpnij 
     4412       IF(zwork(jproc) == 1) THEN 
     4413          ii = ii + 1 
     4414          nrank_ice(ii) = jproc -1  
     4415       ENDIF         
     4416    END DO 
     4417 
     4418    ! Create the world group 
     4419    CALL MPI_COMM_GROUP(mpi_comm_opa,ngrp_world,ierr) 
     4420 
     4421    ! Create the ice group from the world group 
     4422    CALL MPI_GROUP_INCL(ngrp_world,ndim_rank_ice,nrank_ice,ngrp_ice,ierr) 
     4423 
     4424    ! Create the ice communicator , ie the pool of procs with sea-ice 
     4425    CALL MPI_COMM_CREATE(mpi_comm_opa,ngrp_ice,ncomm_ice,ierr) 
     4426 
     4427    ! Find proc number in the world of proc 0 in the north 
     4428    CALL MPI_GROUP_TRANSLATE_RANKS(ngrp_ice,1,0,ngrp_world,n_ice_root,ierr) 
     4429#endif 
     4430 
     4431  END SUBROUTINE mpp_ini_ice 
     4432 
    42914433 
    42924434  SUBROUTINE mpp_ini_north 
     
    52375379 
    52385380   LOGICAL, PUBLIC, PARAMETER ::   lk_mpp = .FALSE.      !: mpp flag 
     5381   INTEGER :: ncomm_ice 
    52395382 
    52405383CONTAINS 
     
    52485391   END SUBROUTINE mppsync 
    52495392 
    5250    SUBROUTINE mpp_sum_as( parr, kdim )      ! Dummy routine 
     5393   SUBROUTINE mpp_sum_as( parr, kdim, kcom )      ! Dummy routine 
    52515394      REAL   , DIMENSION(:) :: parr 
    52525395      INTEGER               :: kdim 
    5253       WRITE(*,*) 'mpp_sum_as: You should not have seen this print! error?', kdim, parr(1) 
     5396      INTEGER, OPTIONAL     :: kcom  
     5397      WRITE(*,*) 'mpp_sum_as: You should not have seen this print! error?', kdim, parr(1), kcom 
    52545398   END SUBROUTINE mpp_sum_as 
    52555399 
    5256    SUBROUTINE mpp_sum_a2s( parr, kdim )      ! Dummy routine 
     5400   SUBROUTINE mpp_sum_a2s( parr, kdim, kcom )      ! Dummy routine 
    52575401      REAL   , DIMENSION(:,:) :: parr 
    52585402      INTEGER               :: kdim 
    5259       WRITE(*,*) 'mpp_sum_a2s: You should not have seen this print! error?', kdim, parr(1,1) 
     5403      INTEGER, OPTIONAL     :: kcom  
     5404      WRITE(*,*) 'mpp_sum_a2s: You should not have seen this print! error?', kdim, parr(1,1), kcom 
    52605405   END SUBROUTINE mpp_sum_a2s 
    52615406 
    5262    SUBROUTINE mpp_sum_ai( karr, kdim )      ! Dummy routine 
     5407   SUBROUTINE mpp_sum_ai( karr, kdim, kcom )      ! Dummy routine 
    52635408      INTEGER, DIMENSION(:) :: karr 
    52645409      INTEGER               :: kdim 
    5265       WRITE(*,*) 'mpp_sum_ai: You should not have seen this print! error?', kdim, karr(1) 
     5410      INTEGER, OPTIONAL     :: kcom  
     5411      WRITE(*,*) 'mpp_sum_ai: You should not have seen this print! error?', kdim, karr(1), kcom 
    52665412   END SUBROUTINE mpp_sum_ai 
    52675413 
    5268    SUBROUTINE mpp_sum_s( psca )            ! Dummy routine 
     5414   SUBROUTINE mpp_sum_s( psca, kcom )            ! Dummy routine 
    52695415      REAL                  :: psca 
    5270       WRITE(*,*) 'mpp_sum_s: You should not have seen this print! error?', psca 
     5416      INTEGER, OPTIONAL     :: kcom  
     5417      WRITE(*,*) 'mpp_sum_s: You should not have seen this print! error?', psca, kcom 
    52715418   END SUBROUTINE mpp_sum_s 
    52725419 
    5273    SUBROUTINE mpp_sum_i( kint )            ! Dummy routine 
     5420   SUBROUTINE mpp_sum_i( kint, kcom )            ! Dummy routine 
    52745421      integer               :: kint 
    5275       WRITE(*,*) 'mpp_sum_i: You should not have seen this print! error?', kint 
     5422      INTEGER, OPTIONAL     :: kcom  
     5423      WRITE(*,*) 'mpp_sum_i: You should not have seen this print! error?', kint, kcom 
    52765424   END SUBROUTINE mpp_sum_i 
    52775425 
    5278    SUBROUTINE mppmax_a_real( parr, kdim ) 
     5426   SUBROUTINE mppmax_a_real( parr, kdim, kcom ) 
    52795427      REAL   , DIMENSION(:) :: parr 
    52805428      INTEGER               :: kdim 
    5281       WRITE(*,*) 'mppmax_a_real: You should not have seen this print! error?', kdim, parr(1) 
     5429      INTEGER, OPTIONAL     :: kcom  
     5430      WRITE(*,*) 'mppmax_a_real: You should not have seen this print! error?', kdim, parr(1), kcom 
    52825431   END SUBROUTINE mppmax_a_real 
    52835432 
    5284    SUBROUTINE mppmax_real( psca ) 
     5433   SUBROUTINE mppmax_real( psca, kcom ) 
    52855434      REAL                  :: psca 
    5286       WRITE(*,*) 'mppmax_real: You should not have seen this print! error?', psca 
     5435      INTEGER, OPTIONAL     :: kcom  
     5436      WRITE(*,*) 'mppmax_real: You should not have seen this print! error?', psca, kcom 
    52875437   END SUBROUTINE mppmax_real 
    52885438 
    5289    SUBROUTINE mppmin_a_real( parr, kdim ) 
     5439   SUBROUTINE mppmin_a_real( parr, kdim, kcom ) 
    52905440      REAL   , DIMENSION(:) :: parr 
    52915441      INTEGER               :: kdim 
    5292       WRITE(*,*) 'mppmin_a_real: You should not have seen this print! error?', kdim, parr(1) 
     5442      INTEGER, OPTIONAL     :: kcom  
     5443      WRITE(*,*) 'mppmin_a_real: You should not have seen this print! error?', kdim, parr(1), kcom 
    52935444   END SUBROUTINE mppmin_a_real 
    52945445 
    5295    SUBROUTINE mppmin_real( psca ) 
     5446   SUBROUTINE mppmin_real( psca, kcom ) 
    52965447      REAL                  :: psca 
    5297       WRITE(*,*) 'mppmin_real: You should not have seen this print! error?', psca 
     5448      INTEGER, OPTIONAL     :: kcom  
     5449      WRITE(*,*) 'mppmin_real: You should not have seen this print! error?', psca, kcom 
    52985450   END SUBROUTINE mppmin_real 
    52995451 
    5300    SUBROUTINE mppmax_a_int( karr, kdim ) 
     5452   SUBROUTINE mppmax_a_int( karr, kdim ,kcom) 
    53015453      INTEGER, DIMENSION(:) :: karr 
    53025454      INTEGER               :: kdim 
     5455      INTEGER, OPTIONAL     :: kcom  
    53035456      WRITE(*,*) 'mppmax_a_int: You should not have seen this print! error?', kdim, karr(1) 
    53045457   END SUBROUTINE mppmax_a_int 
    53055458 
    5306    SUBROUTINE mppmax_int( kint ) 
     5459   SUBROUTINE mppmax_int( kint, kcom) 
    53075460      INTEGER               :: kint 
    5308       WRITE(*,*) 'mppmax_int: You should not have seen this print! error?', kint 
     5461      INTEGER, OPTIONAL     :: kcom  
     5462      WRITE(*,*) 'mppmax_int: You should not have seen this print! error?', kint, kcom 
    53095463   END SUBROUTINE mppmax_int 
    53105464 
    5311    SUBROUTINE mppmin_a_int( karr, kdim ) 
     5465   SUBROUTINE mppmin_a_int( karr, kdim, kcom ) 
    53125466      INTEGER, DIMENSION(:) :: karr 
    53135467      INTEGER               :: kdim 
    5314       WRITE(*,*) 'mppmin_a_int: You should not have seen this print! error?', kdim, karr(1) 
     5468      INTEGER, OPTIONAL     :: kcom  
     5469      WRITE(*,*) 'mppmin_a_int: You should not have seen this print! error?', kdim, karr(1), kcom 
    53155470   END SUBROUTINE mppmin_a_int 
    53165471 
    5317    SUBROUTINE mppmin_int( kint ) 
     5472   SUBROUTINE mppmin_int( kint, kcom ) 
    53185473      INTEGER               :: kint 
    5319       WRITE(*,*) 'mppmin_int: You should not have seen this print! error?', kint 
     5474      INTEGER, OPTIONAL     :: kcom  
     5475      WRITE(*,*) 'mppmin_int: You should not have seen this print! error?', kint, kcom 
    53205476   END SUBROUTINE mppmin_int 
    53215477 
     
    54125568   END SUBROUTINE mppstop 
    54135569 
     5570   SUBROUTINE mpp_ini_lim 
     5571      WRITE(*,*) 'mpp_ini_north: You should not have seen this print! error?' 
     5572   END SUBROUTINE mpp_ini_lim 
     5573 
     5574   SUBROUTINE mpp_comm_free(kcom) 
     5575      INTEGER :: kcom 
     5576      WRITE(*,*) 'mpp_comm_free: You should not have seen this print! error?' 
     5577   END SUBROUTINE mpp_comm_free 
     5578 
    54145579#endif 
    54155580   !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.