*IF DEF,OCEAN                                                              CGSUMMAT.2      
C ******************************COPYRIGHT******************************    CGSUMMAT.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    CGSUMMAT.4      
C                                                                          CGSUMMAT.5      
C Use, duplication or disclosure of this code is subject to the            CGSUMMAT.6      
C restrictions as set forth in the contract.                               CGSUMMAT.7      
C                                                                          CGSUMMAT.8      
C                Meteorological Office                                     CGSUMMAT.9      
C                London Road                                               CGSUMMAT.10     
C                BRACKNELL                                                 CGSUMMAT.11     
C                Berkshire UK                                              CGSUMMAT.12     
C                RG12 2SZ                                                  CGSUMMAT.13     
C                                                                          CGSUMMAT.14     
C If no contract has been raised with this copy of the code, the use,      CGSUMMAT.15     
C duplication or disclosure of it is strictly prohibited.  Permission      CGSUMMAT.16     
C to do so must first be obtained in writing from the Head of Numerical    CGSUMMAT.17     
C Modelling at the above address.                                          CGSUMMAT.18     
C ******************************COPYRIGHT******************************    CGSUMMAT.19     
!----------------------------------------------------------------------    CGSUMMAT.20     
!   MODIFICATION HISTORY                                                   CGSUMMAT.21     
!   ====================                                                   CGSUMMAT.22     
!   Model                                                                  CGSUMMAT.23     
!  Version    Date    Author    Description                                CGSUMMAT.24     
!    4.2     Nov 96   R. Hill   Original code - Allows fields to be        CGSUMMAT.25     
!                               summed in a consistent way to allow        CGSUMMAT.26     
!                               bit reproducibility on mpp systems         CGSUMMAT.27     
!                               of any number of PEs. Note: temporary      CGSUMMAT.28     
!                               code until we replace with calls           CGSUMMAT.29     
!                               to RVECSUMR.                               CGSUMMAT.30     
!----------------------------------------------------------------------    CGSUMMAT.31     
                                                                           CGSUMMAT.32     

      SUBROUTINE CGSUMMATION                                                5,1CGSUMMAT.33     
     &            (FIELD,JMT_GLOBAL,J_1,J_JMT,JMT,                         CGSUMMAT.34     
     &             JST,JFIN,O_MYPE,O_NPROC,SUM)                            CGSUMMAT.35     
                                                                           CGSUMMAT.36     
                                                                           CGSUMMAT.37     
      IMPLICIT NONE                                                        CGSUMMAT.38     
                                                                           CGSUMMAT.39     
*CALL PARVARS                                                              ORH3F403.213    
*CALL GCCOM                                                                CGSUMMAT.40     
                                                                           CGSUMMAT.41     
      INTEGER JMT_GLOBAL ! In - dimension of full field                    CGSUMMAT.42     
     &       ,J_1        ! In - start point in input array                 CGSUMMAT.43     
     &       ,J_JMT      ! In - end    "    "    "     "                   CGSUMMAT.44     
     &       ,JMT        ! In - dimension of local field                   CGSUMMAT.45     
     &       ,JST        ! In                                              CGSUMMAT.46     
     &       ,JFIN       ! In                                              CGSUMMAT.47     
     &       ,O_MYPE     ! In                                              CGSUMMAT.48     
     &       ,O_NPROC    ! In                                              CGSUMMAT.49     
     &       ,J          ! Local index                                     CGSUMMAT.50     
     &       ,INFO                                                         CGSUMMAT.51     
                                                                           CGSUMMAT.52     
      REAL FIELD(JMT)               ! In - Field to be summed              CGSUMMAT.53     
     &    ,FIELD_GLOBAL(JMT_GLOBAL) ! Local - field to be summed           CGSUMMAT.54     
     &    ,SUM                      ! Out - result                         CGSUMMAT.55     
                                                                           CGSUMMAT.56     
      SUM = 0.0                                                            CGSUMMAT.57     
                                                                           CGSUMMAT.58     
      IF (O_NPROC.EQ.1) THEN                                               CGSUMMAT.59     
                                                                           CGSUMMAT.60     
         DO J = J_1,J_JMT                                                  CGSUMMAT.61     
            SUM = SUM + FIELD(J)                                           CGSUMMAT.62     
         ENDDO                                                             CGSUMMAT.63     
      ELSE                                                                 CGSUMMAT.64     
*IF DEF,MPP                                                                CGSUMMAT.65     
         ! Now compile a full global copy of FIELD                         CGSUMMAT.66     
         CALL O_SMARTPASS(1,1,FIELD(J_1),FIELD_GLOBAL                      CGSUMMAT.67     
     &                ,JFIN-JST+1,JMT_GLOBAL,JST,2)                        CGSUMMAT.68     
                                                                           CGSUMMAT.69     
         ! Work out total and send sum to all PEs                          CGSUMMAT.70     
         IF (O_MYPE.EQ.0) THEN                                             CGSUMMAT.71     
                                                                           CGSUMMAT.72     
            DO J = 1,JMT_GLOBAL                                            CGSUMMAT.73     
               SUM = SUM + FIELD_GLOBAL(J)                                 CGSUMMAT.74     
            ENDDO                                                          CGSUMMAT.75     
         ENDIF                                                             CGSUMMAT.79     
         CALL GC_RBCAST (1009,1,0,nproc,info,SUM)                          ORH3F403.214    
*ENDIF                                                                     CGSUMMAT.80     
      ENDIF                                                                CGSUMMAT.81     
                                                                           CGSUMMAT.82     
      RETURN                                                               CGSUMMAT.83     
      END                                                                  CGSUMMAT.84     
*ENDIF                                                                     CGSUMMAT.85