*IF DEF,CONTROL ACUMPS1.2
C ******************************COPYRIGHT****************************** GTS2F400.127
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.128
C GTS2F400.129
C Use, duplication or disclosure of this code is subject to the GTS2F400.130
C restrictions as set forth in the contract. GTS2F400.131
C GTS2F400.132
C Meteorological Office GTS2F400.133
C London Road GTS2F400.134
C BRACKNELL GTS2F400.135
C Berkshire UK GTS2F400.136
C RG12 2SZ GTS2F400.137
C GTS2F400.138
C If no contract has been raised with this copy of the code, the use, GTS2F400.139
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.140
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.141
C Modelling at the above address. GTS2F400.142
C ******************************COPYRIGHT****************************** GTS2F400.143
C GTS2F400.144
CLL ACUMPS1.3
CLL Subroutine: ACUMPS1.4
CLL ACUMPS ACUMPS1.5
CLL ACUMPS1.6
CLL Purpose: ACUMPS1.7
CLL To accumulate partial sums and create dumps ACUMPS1.8
CLL ACUMPS1.9
CLL Tested under compiler: ACUMPS1.10
CLL cft77 ACUMPS1.11
CLL ACUMPS1.12
CLL Tested under OS version: ACUMPS1.13
CLL UNICOS 5.1 ACUMPS1.14
CLL ACUMPS1.15
CLL AD, DR <- programmer of some or all of previous code or changes ACUMPS1.16
CLL ACUMPS1.17
CLL Model Modification history from model version 3.0: ACUMPS1.18
CLL version Date ACUMPS1.19
CLL 3.1 19/02/93 Use FIXHD(12) not FIXHD(1) as Version no in P21BITS TJ190293.1
CLL 3.1 25/01/93 : Correct LBPACK for 32 bit dumps after changes. RS250193.1
CLL 3.4 16/6/94 : Change CHARACTER*(*) to CHARACTER*(80) N.Farnon ANF0F304.1
! 4.1 18/06/96 Changes to cope with changes in STASH addressing GDG0F401.32
! Author D.M. Goddard. GDG0F401.33
!LL 4.2 27/11/96 MPP changes for T3E. Using READDUMP and GKR1F402.120
!LL WRITDUMP with partial mean files. K Rogers GKR1F402.121
CLL 4.3 22/01/97 Use MPP_LOOKUP to address D1 on MPP GSM1F403.91
CLL S.D.Mullerworth GSM1F403.92
!LL 4.3 10/04/97 Call READDUMP without reading header to avoid GKR3F403.13
!LL overwriting REALHD with previous values. K Rogers GKR3F403.14
!LL 4.4 22/09/97 Remove superfluous arrays. Add extra error trap GSM2F404.176
!LL S.D. Mullerworth GSM2F404.177
!LL 4.4 26/06/97 Changes to allow climate means with Gregorian GMG1F404.1
!LL calendar. Author: M. Gallani GMG1F404.2
!LL 4.4 16/06/97 Add Broadcast after the WRITDUMP, so GBC3F404.1
!LL that all the processors know the answer GBC3F404.2
!LL Author: Bob Carruthers, Cray Rsearch. GBC3F404.3
!LL 4.5 23/10/98 Remove unused arrays. S.D.Mullerworth GSM2F405.35
CLL ACUMPS1.20
CLL Programming standard: ACUMPS1.21
CLL UM Doc Paper 3 ACUMPS1.22
CLL ACUMPS1.23
CLL Logical system components covered: ACUMPS1.24
CLL C5 ACUMPS1.25
CLL ACUMPS1.26
CLL Project tasks: ACUMPS1.27
CLL C5,C51,C52 ACUMPS1.28
CLL ACUMPS1.29
CLL External documentation: ACUMPS1.30
CLL On-line UM document C5 - Control of means calculations ACUMPS1.31
CLL ACUMPS1.32
C*L Interface and arguments: ACUMPS1.33
SUBROUTINE ACUMPS( FIXHD,LEN_FIXHD 4,3GKR1F402.122
& ,INTHD,LEN_INTHD GKR1F402.123
& ,REALHD,LEN_REALHD GKR1F402.124
& ,LEVDEPC,LEN1_LEVDEPC,LEN2_LEVDEPC GKR1F402.125
& ,ROWDEPC,LEN1_ROWDEPC,LEN2_ROWDEPC GKR1F402.126
& ,COLDEPC,LEN1_COLDEPC,LEN2_COLDEPC GKR1F402.127
& ,FLDDEPC,LEN1_FLDDEPC,LEN2_FLDDEPC GKR1F402.128
& ,EXTCNST,LEN_EXTCNST GKR1F402.129
& ,DUMPHIST,LEN_DUMPHIST GKR1F402.130
& ,CFI1,LEN_CFI1 GKR1F402.131
& ,CFI2,LEN_CFI2 GKR1F402.132
& ,CFI3,LEN_CFI3 GKR1F402.133
& ,LOOKUP,LEN1_LOOKUP,LEN2_LOOKUP GKR1F402.135
& ,SUBM,N_OBJS_D1,D1_ADDR GSM1F403.93
*IF DEF,MPP GSM1F403.94
& ,MPP_LOOKUP,MPP_LEN1_LOOKUP GSM1F403.95
*ENDIF GKR1F402.138
& ,LEN_DATA,D1,LD1,ID1,IBUFLEN GKR1F402.139
& ,FLAG,NFTIN,NFTOUT,LCLIMREALYR,MEANLEV GMG1F404.3
& ,I_MONTH,I_YEAR, GMG1F404.4
*CALL ARGPPX
GDG0F401.38
& ICODE,CMESSAGE) GDG0F401.39
C ACUMPS1.39
IMPLICIT NONE ACUMPS1.40
C ACUMPS1.41
*CALL D1_ADDR
GSM1F403.103
INTEGER ACUMPS1.42
* LEN_FIXHD !IN Length of fixed length header GKR1F402.141
*,LEN_INTHD !IN Length of integer header GKR1F402.142
*,LEN_REALHD !IN Length of real header GKR1F402.143
*,LEN1_LEVDEPC !IN 1st dim of level dep consts GKR1F402.144
*,LEN2_LEVDEPC !IN 2nd dim of level dep consts GKR1F402.145
*,LEN1_ROWDEPC !IN 1st dim of row dep consts GKR1F402.146
*,LEN2_ROWDEPC !IN 2nd dim of row dep consts GKR1F402.147
&,LEN1_COLDEPC !IN 1st dim of column dep consts GKR1F402.148
&,LEN2_COLDEPC !IN 2nd dim of column dep consts GKR1F402.149
&,LEN1_FLDDEPC !IN 1st dim of field dep consts GKR1F402.150
&,LEN2_FLDDEPC !IN 2nd dim of field dep consts GKR1F402.151
&,LEN_EXTCNST !IN Length of extra constants GKR1F402.152
&,LEN_DUMPHIST !IN Length of history block GKR1F402.153
&,LEN_CFI1 !IN Length of comp field index 1 GKR1F402.154
&,LEN_CFI2 !IN Length of comp field index 2 GKR1F402.155
&,LEN_CFI3 !IN Length of comp field index 3 GKR1F402.156
&,LEN1_LOOKUP !IN 1st dim of lookup GKR1F402.157
&,LEN2_LOOKUP !IN 2nd dim of lookup GKR1F402.158
&,N_OBJS_D1 !IN No objects in D1 array GSM1F403.96
&,SUBM !IN Submodel id GSM1F403.97
*IF DEF,MPP GSM1F403.98
&,MPP_LEN1_LOOKUP !IN 1st dim of MPP lookup GSM1F403.99
*ENDIF GSM1F403.100
GKR1F402.159
INTEGER GKR1F402.160
* FIXHD(LEN_FIXHD) !IN Fixed length header GKR1F402.161
*,INTHD(LEN_INTHD) !IN Integer header GKR1F402.162
*,LOOKUP(LEN1_LOOKUP,LEN2_LOOKUP) !IN PP lookup tables GKR1F402.163
&,D1_ADDR(D1_LIST_LEN,N_OBJS_D1) !IN Addressing of D1 array GSM1F403.104
*IF DEF,MPP GKR1F402.164
C Local addressing of D1 GSM1F403.101
*,MPP_LOOKUP(MPP_LEN1_LOOKUP,LEN2_LOOKUP) ! OUT GSM1F403.102
*ENDIF GKR1F402.169
*,CFI1(LEN_CFI1+1) !IN Compressed field index no 1 GKR1F402.170
*,CFI2(LEN_CFI2+1) !IN Compressed field index no 2 GKR1F402.171
*,CFI3(LEN_CFI3+1) !IN Compressed field index no 3 GKR1F402.172
GKR1F402.173
REAL GKR1F402.174
& REALHD(LEN_REALHD) !IN Real header GKR1F402.175
&,LEVDEPC(1+LEN1_LEVDEPC*LEN2_LEVDEPC) !IN Lev dep consts GKR1F402.176
&,ROWDEPC(1+LEN1_ROWDEPC*LEN2_ROWDEPC) !IN Row dep consts GKR1F402.177
&,COLDEPC(1+LEN1_COLDEPC*LEN2_COLDEPC) !IN Col dep consts GKR1F402.178
&,FLDDEPC(1+LEN1_FLDDEPC*LEN2_FLDDEPC) !IN Field dep consts GKR1F402.179
&,EXTCNST(LEN_EXTCNST+1) !IN Extra constants GKR1F402.180
&,DUMPHIST(LEN_DUMPHIST+1) !IN History block GKR1F402.181
INTEGER GKR1F402.182
& IBUFLEN, ! IN dimension of largest data field ACUMPS1.46
& LEN_DATA, ! IN Length of model data ACUMPS1.47
& FLAG, ! IN Flag for reading partial sum dump ACUMPS1.48
& NFTIN, ! IN Unit no for reading partial sums ACUMPS1.49
& NFTOUT, ! IN Unit no for writing partial sums ACUMPS1.50
& ICODE, ! OUT Return code; successful=0 GMG1F404.5
& ! error>0 GMG1F404.6
& MEANLEV, ! IN level of climate meaning GMG1F404.7
& I_MONTH, ! IN Current model time (months) GMG1F404.8
& I_YEAR ! IN Current model time (years) GMG1F404.9
C ACUMPS1.53
CHARACTER *(80) ANF0F304.2
& CMESSAGE ! OUT Error message if ICODE>0 ACUMPS1.55
C ACUMPS1.56
INTEGER ACUMPS1.57
& ID1(LEN_DATA) ! IN Integer equivalence of data block ACUMPS1.60
C ACUMPS1.61
REAL ACUMPS1.62
& D1(LEN_DATA) ! IN Real equivalence of data block ACUMPS1.63
C ACUMPS1.64
LOGICAL ACUMPS1.65
& LD1(LEN_DATA), ! IN Logical equivalence of data block GMG1F404.10
& LCLIMREALYR ! IN Real-period climate meaning GMG1F404.11
C ACUMPS1.67
C Common blocks ACUMPS1.68
C ACUMPS1.69
*CALL CLOOKADD
ACUMPS1.70
*CALL C_MDI
ACUMPS1.71
*CALL CSUBMODL
GDG0F401.40
*CALL CPPXREF
GDG0F401.41
*CALL PPXLOOK
GDG0F401.42
*IF DEF,MPP GKR1F402.183
*CALL PARVARS
GKR1F402.184
*ENDIF GKR1F402.185
C ACUMPS1.72
C*L ACUMPS1.73
C*L External subroutines called: ACUMPS1.74
EXTERNAL IOERROR,PR_LOOK,EXPAND21,PACK21,BUFFIN,BUFFOUT ACUMPS1.75
&, P21BITS,READDUMP,WRITDUMP,SETPERLEN GMG1F404.12
INTEGER P21BITS ACUMPS1.77
C ACUMPS1.78
C Cray specific functions UNIT,LENGTH ACUMPS1.79
C ACUMPS1.80
C Local variables ACUMPS1.81
C ACUMPS1.82
INTEGER ACUMPS1.83
& LEN_IO_IN, ACUMPS1.84
& LEN_IO_OUT, ACUMPS1.85
& IP1,IP2, ! I/O buffer indices (=1 or 2) ACUMPS1.86
& IPTS_IN,IPTS_OUT, ! No of 64-bit words requested to ACUMPS1.87
* ! be buffered in/out ACUMPS1.88
& ADDR,LREC, ! address and record length of field GSM1F403.105
& I,K, ! Loop indices GMG1F404.13
& PERIODLEN ! length of current meaning period GMG1F404.14
! in days GMG1F404.15
C ACUMPS1.90
REAL ACUMPS1.91
& A_IO_IN, ACUMPS1.92
& A_IO_OUT, GMG1F404.16
& REALPERIODLEN ! explicitly real equivalent GMG1F404.17
! of PERIODLEN GMG1F404.18
C ACUMPS1.94
C Local arrays ACUMPS1.95
C ACUMPS1.96
INTEGER ACUMPS1.97
& extraw ! no of extra words ACUMPS1.99
&, info ! Arg in call (not used) GKR1F402.188
REAL ACUMPS1.101
& D1_DATA(IBUFLEN) ! Work area for fields GSM2F405.36
* ! of real data ACUMPS1.105
&, D1_PSUM(LEN_DATA) ! Partial sum copy of D1 GKR1F402.189
&, D1_PSUM_DATA(IBUFLEN) ! GKR1F402.190
LOGICAL ACUMPS1.106
& TYPREAL ! True if data type is GSM2F405.37
! ! real ie. to be meaned GKR1F402.193
C ACUMPS1.109
IF(ICODE.NE.0)GOTO 999 ACUMPS1.110
C ACUMPS1.111
C Initialise pointers used for I/O buffers ACUMPS1.112
C ACUMPS1.113
IP1=1 ACUMPS1.114
IP2=2 ACUMPS1.115
! GMG1F404.19
! Set up variables needed for weighting accumulations if real-period GMG1F404.20
! climate meaning is selected. Partial sums are normalised elsewhere. GMG1F404.21
! GMG1F404.22
if (lclimrealyr) then GMG1F404.23
call setperlen
(meanlev,i_month,i_year,periodlen) GMG1F404.24
realperiodlen=real(periodlen) GMG1F404.25
endif GMG1F404.26
CL ACUMPS1.116
CL********************************************************************** ACUMPS1.117
CL Start of loop over number of fields in data blocks ACUMPS1.118
CL********************************************************************** ACUMPS1.119
!L---------------------------------------------------------------------- GMG1F404.27
!L If partial sum data exist on disk (because this period has GMG1F404.28
!L already been started) then read in data from disk, otherwise get GMG1F404.29
!L data directly from D1 array. GMG1F404.30
!L---------------------------------------------------------------------- GMG1F404.31
GKR1F402.194
IF (FLAG.NE.1) THEN ! PS data exist on disk GMG1F404.32
GKR1F402.196
C Initialise D1 array to zero GSM1F403.106
GSM1F403.107
DO I = 1,LEN_DATA GSM1F403.108
D1_PSUM(I)=0.0 GSM1F403.109
ENDDO GSM1F403.110
! Call READDUMP without reading header to avoid overwriting GKR3F403.15
! header values associated with the current D1. GKR3F403.16
GKR3F403.17
CALL UM_READDUMP
(NFTIN, FIXHD, LEN_FIXHD, GSM1F403.111
& INTHD, LEN_INTHD, GKR1F402.198
& REALHD, LEN_REALHD, GKR1F402.199
& LEVDEPC, LEN1_LEVDEPC, LEN2_LEVDEPC, GKR1F402.200
& ROWDEPC, LEN1_ROWDEPC, LEN2_ROWDEPC, GKR1F402.201
& COLDEPC, LEN1_COLDEPC, LEN2_COLDEPC, GKR1F402.202
& FLDDEPC, LEN1_FLDDEPC, LEN2_FLDDEPC, GKR1F402.203
& EXTCNST, LEN_EXTCNST, GKR1F402.204
& DUMPHIST, LEN_DUMPHIST, GKR1F402.205
& CFI1, LEN_CFI1, GKR1F402.206
& CFI2, LEN_CFI2, GKR1F402.207
& CFI3, LEN_CFI3, GKR1F402.208
& LOOKUP,LEN1_LOOKUP,LEN2_LOOKUP, GSM1F403.112
*IF DEF,MPP GSM1F403.113
& MPP_LOOKUP,MPP_LEN1_LOOKUP, GSM1F403.114
*ENDIF GKR1F402.214
& SUBM,N_OBJS_D1,D1_ADDR, GSM1F403.115
& LEN_DATA,D1_PSUM, GKR1F402.215
*CALL ARGPPX
GDG0F401.44
& .FALSE.,ICODE,CMESSAGE) GKR3F403.18
GKR1F402.217
*IF DEF,MPP GKR1F402.218
! Broadcast return code to all processors. GKR1F402.219
CALL GC_IBCAST(
678,1,0,nproc,info,icode) GKR1F402.220
IF (ICODE.GT.0) GOTO 999 GSM2F404.178
*ENDIF GKR1F402.221
GKR1F402.222
CL---------------------------------------------------------------------- ACUMPS1.165
CL Process data (real only) ACUMPS1.166
CL---------------------------------------------------------------------- ACUMPS1.167
CL ACUMPS1.168
GKR1F402.223
! Start of loop over number of fields in data blocks GKR1F402.224
GKR1F402.225
DO 100 K=1,FIXHD(152)+1 GKR1F402.226
IF(K.NE.1)THEN ACUMPS1.169
extraw=lookup(lbext,k-1) ACUMPS1.170
IF (extraw .eq. imdi) THEN ACUMPS1.171
extraw=0 ACUMPS1.172
ENDIF ACUMPS1.173
IF(LOOKUP(DATA_TYPE,K-1).EQ.1.OR.LOOKUP(DATA_TYPE,K-1).EQ.4 GKR1F402.227
* .OR.LOOKUP(DATA_TYPE,K-1).EQ.-1) THEN GKR1F402.228
TYPREAL=.TRUE. GKR1F402.229
ELSE GKR1F402.230
TYPREAL=.FALSE. GKR1F402.231
END IF GKR1F402.232
CL ACUMPS1.192
CL Accumulate required partial sum data (except missing data) ACUMPS1.193
CL (N.B. For period 1; D1 will contain instantaneous data ACUMPS1.194
CL For period>1; D1 will contain time-mean data) ACUMPS1.195
CL ACUMPS1.196
*IF DEF,MPP GSM1F403.116
LREC = MPP_LOOKUP(P_LBLREC,K-1) GSM1F403.117
ADDR = MPP_LOOKUP(P_NADDR,K-1) GSM1F403.118
*ELSE GSM1F403.119
LREC = LOOKUP(LBLREC,K-1) GSM1F403.120
ADDR = LOOKUP(NADDR,K-1) GSM1F403.121
*ENDIF GSM1F403.122
IF(TYPREAL) THEN GSM1F403.123
DO I=1,LREC-extraw GSM1F403.124
C Don't process extra data. ACUMPS1.198
D1_DATA(I)=D1(ADDR+I-1) GSM1F403.125
D1_PSUM_DATA(I)=D1_PSUM(ADDR+I-1) GSM1F403.126
IF ( D1_PSUM_DATA(I) .EQ .RMDI .OR. GSM1F403.127
& D1_DATA(I) .EQ .RMDI ) THEN GSM1F403.128
D1_PSUM(ADDR+I-1)=RMDI GSM1F403.129
ELSE ! add D1 data to partial sum data from disk GMG1F404.33
if (lclimrealyr) then ! weight partial sum by period GMG1F404.34
D1_PSUM(ADDR+I-1) = GMG1F404.35
& D1_PSUM_DATA(I) + (realperiodlen*D1_DATA(I)) GMG1F404.36
else GMG1F404.37
D1_PSUM(ADDR+I-1) = GMG1F404.38
& D1_PSUM_DATA(I) + D1_DATA(I) GMG1F404.39
endif GMG1F404.40
ENDIF GSM1F403.133
ENDDO GSM1F403.134
ELSE GSM1F403.135
C Just copy non-REAL data to D1_PSUM. So land sea mask is GSM1F403.136
C accessible when partial sum dump later reread in over D1 GSM1F403.137
DO I=1,LREC-extraw GSM1F403.138
D1_PSUM(ADDR+I-1) = D1(ADDR+I-1) GSM1F403.139
ENDDO GSM1F403.140
ENDIF GSM1F403.141
120 CONTINUE GKR1F402.248
C --------------------------------------------------------------------- GMG1F404.41
CL Copy the extra data from dump array to field data ACUMPS1.207
!L "Extra" data are integers & logicals; don't accumulate or normalise GMG1F404.42
C --------------------------------------------------------------------- GMG1F404.43
DO i=LREC-extraw+1,LREC GSM1F403.142
D1_PSUM(ADDR+I-1) = D1(ADDR+i-1) GSM1F403.143
ENDDO GKR1F402.252
ENDIF ! end of test on K.NE.1 GMG1F404.44
C ACUMPS1.215
100 CONTINUE GKR1F402.253
C GKR1F402.254
ELSE ! FLAG=1, e.g. run is only one period(N-1) into period(N) GMG1F404.45
CL ACUMPS1.217
CL---------------------------------------------------------------------- ACUMPS1.218
CL If partial sum data does not exist on disk: ACUMPS1.219
CL---------------------------------------------------------------------- ACUMPS1.220
CL ACUMPS1.221
CL Copy data across from D1 (real only) ACUMPS1.222
CL (N.B. For period 1; D1 will contain instantaneous data ACUMPS1.223
CL For period>1; D1 will contain time-mean data) ACUMPS1.224
CL ACUMPS1.225
DO 200 K=1,FIXHD(152)+1 GKR1F402.256
IF(K.NE.1)THEN ACUMPS1.226
*IF DEF,MPP GSM1F403.144
LREC = MPP_LOOKUP(P_LBLREC,K-1) GSM1F403.145
ADDR = MPP_LOOKUP(P_NADDR,K-1) GSM1F403.146
*ELSE GSM1F403.147
LREC = LOOKUP(LBLREC,K-1) GSM1F403.148
ADDR = LOOKUP(NADDR,K-1) GSM1F403.149
*ENDIF GSM1F403.150
IF (LCLIMREALYR) THEN ! only process real data GMG1F404.46
GMG1F404.47
IF(LOOKUP(DATA_TYPE,K-1).EQ.1.OR.LOOKUP(DATA_TYPE,K-1).EQ.4 GMG1F404.48
& .OR.LOOKUP(DATA_TYPE,K-1).EQ.-1) THEN ! data type=real GMG1F404.49
extraw=lookup(lbext,k-1) GMG1F404.50
IF (extraw .eq. imdi) THEN GMG1F404.51
extraw=0 GMG1F404.52
ENDIF GMG1F404.53
DO I=1,LREC-extraw GMG1F404.54
! do not multiply missing data GMG1F404.55
IF ( D1(ADDR+I-1) .EQ .RMDI ) THEN GMG1F404.56
D1_PSUM(ADDR+I-1)=RMDI GMG1F404.57
ELSE GMG1F404.58
D1_PSUM(ADDR+I-1) = realperiodlen*D1(ADDR+I-1) GMG1F404.59
ENDIF GMG1F404.60
ENDDO GMG1F404.61
GMG1F404.62
! Do not multiply extraw data eg gridpoints for timeseries GMG1F404.63
GMG1F404.64
IF (EXTRAW.GT.0) THEN GMG1F404.65
DO I=LREC-EXTRAW+1,LREC GMG1F404.66
D1_PSUM(ADDR+I-1)=D1(ADDR+I-1) GMG1F404.67
ENDDO GMG1F404.68
ENDIF GMG1F404.69
GMG1F404.70
ELSE ! non-real data GMG1F404.71
GMG1F404.72
! Copy data unchanged because it is non-real. No need to weight it. GMG1F404.73
DO I=1,LREC GMG1F404.74
D1_PSUM(ADDR+I-1) = D1(ADDR+I-1) GMG1F404.75
ENDDO GMG1F404.76
ENDIF ! end of test of whether data is real or not GMG1F404.77
GMG1F404.78
ELSE ! original code GMG1F404.79
CL Copy all fields because land sea mask is required by readdump and GSM1F403.151
CL reads it from this dump. If READDUMP changed so as to get LS mask GSM1F403.152
CL from elsewhere, the IF condition should be uncommented to only copy GSM1F403.153
CL real fields. GSM1F403.154
C IF(LOOKUP(DATA_TYPE,K-1).EQ.1.OR.LOOKUP(DATA_TYPE,K-1).EQ.4 GSM1F403.155
C * .OR.LOOKUP(DATA_TYPE,K-1).EQ.-1) THEN GSM1F403.156
DO 130 I=1,LREC GSM1F403.157
C In this case we do want to process extra data. ACUMPS1.230
D1_PSUM(ADDR+I-1) = D1(ADDR+I-1) GSM1F403.158
130 CONTINUE ACUMPS1.232
C ENDIF GSM1F403.159
GMG1F404.80
ENDIF ! end of test of lclimrealyr GMG1F404.81
ENDIF ACUMPS1.234
200 CONTINUE GKR1F402.259
GKR1F402.260
GKR1F402.261
C ACUMPS1.235
ENDIF ! end of test of FLAG GMG1F404.82
CL ACUMPS1.237
CL---------------------------------------------------------------------- ACUMPS1.238
CL Prepare partial sum data and write out to disk ACUMPS1.239
CL---------------------------------------------------------------------- ACUMPS1.240
CL ACUMPS1.241
C Maximum length of field, required for IO buffer GKR1F402.262
GKR1F402.263
IBUFLEN=LOOKUP(LBLREC,1) GKR1F402.264
IF (LEN2_LOOKUP.GT.1) THEN GKR1F402.265
DO I=2,LEN2_LOOKUP GKR1F402.266
IBUFLEN=MAX(IBUFLEN,LOOKUP(LBLREC,I)) GKR1F402.267
ENDDO GKR1F402.268
ENDIF ACUMPS1.260
GKR1F402.269
C IF (MEANLEV.GT.0) A_FIXHD(5)=2 ! Set FIXHD(5) for mean dump GKR1F402.270
GKR1F402.271
CALL UM_WRITDUMP
(NFTOUT,FIXHD,LEN_FIXHD, GSM1F403.160
& INTHD,LEN_INTHD, GKR1F402.273
& REALHD,LEN_REALHD, GKR1F402.274
& LEVDEPC,LEN1_LEVDEPC,LEN2_LEVDEPC, GKR1F402.275
& ROWDEPC,LEN1_ROWDEPC,LEN2_ROWDEPC, GKR1F402.276
& COLDEPC,LEN1_COLDEPC,LEN2_COLDEPC, GKR1F402.277
& FLDDEPC,LEN1_FLDDEPC,LEN2_FLDDEPC, GKR1F402.278
& EXTCNST,LEN_EXTCNST, GKR1F402.279
& DUMPHIST,LEN_DUMPHIST, GKR1F402.280
& CFI1,LEN_CFI1, GKR1F402.281
& CFI2,LEN_CFI2, GKR1F402.282
& CFI3,LEN_CFI3, GKR1F402.283
& LOOKUP,LEN1_LOOKUP,LEN2_LOOKUP, GKR1F402.284
*IF DEF,MPP GSM1F403.161
& MPP_LOOKUP,MPP_LEN1_LOOKUP, GSM1F403.162
*ENDIF GSM1F403.163
& IBUFLEN,SUBM,N_OBJS_D1,D1_ADDR,LEN_DATA,D1_PSUM, GSM1F403.164
*CALL ARGPPX
GDG0F401.47
& ICODE,CMESSAGE) GKR1F402.286
GKR1F402.287
*IF DEF,MPP GBC3F404.4
! Broadcast return code to all processors. GBC3F404.5
CALL GC_IBCAST(
679,1,0,nproc,info,icode) GBC3F404.6
*ENDIF GBC3F404.7
IF (ICODE.GT.0) GOTO 999 GKR1F402.288
CL ACUMPS1.333
CL********************************************************************** ACUMPS1.334
CL End of loop over number of fields ACUMPS1.335
CL********************************************************************** ACUMPS1.336
CL ACUMPS1.337
999 CONTINUE ACUMPS1.338
RETURN ACUMPS1.339
END ACUMPS1.340
*ENDIF ACUMPS1.341