/[MITgcm]/MITgcm/pkg/diagnostics/diagstats_local.F
ViewVC logotype

Diff of /MITgcm/pkg/diagnostics/diagstats_local.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.2 by jmc, Mon May 23 02:18:40 2005 UTC revision 1.3 by jmc, Sun Jul 10 00:57:18 2005 UTC
# Line 8  C     !ROUTINE: DIAGSTATS_LOCAL Line 8  C     !ROUTINE: DIAGSTATS_LOCAL
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE DIAGSTATS_LOCAL(        SUBROUTINE DIAGSTATS_LOCAL(
10       U                  statFld,       U                  statFld,
11       I                  inpFld,       I                  inpFld, frcFld, scaleFact, useFract,sizF,
12       I                  sizI1,sizI2,sizJ1,sizJ2,sizK,sizTx,sizTy,       I                  sizI1,sizI2,sizJ1,sizJ2,sizK,sizTx,sizTy,
13       I                  iRun,jRun,kIn,biIn,bjIn,       I                  iRun,jRun,kIn,biIn,bjIn,
14       I                  k,bi,bj, region2fill, ndId, parsFld,       I                  k,bi,bj, region2fill, ndId, parsFld,
# Line 39  C     !INPUT/OUTPUT PARAMETERS: Line 39  C     !INPUT/OUTPUT PARAMETERS:
39  C     == Routine Arguments ==  C     == Routine Arguments ==
40  C     statFld     :: cumulative statistics array (updated)  C     statFld     :: cumulative statistics array (updated)
41  C     inpFld      :: input field array to process (compute stats & add to statFld)  C     inpFld      :: input field array to process (compute stats & add to statFld)
42    C     frcFld      :: fraction used for weighted-average diagnostics
43    C     scaleFact   :: scaling factor
44    C     useFract    :: if True, use fraction-weight
45    C     sizF        :: size of frcFld array: 3rd  dimension
46  C     sizI1,sizI2 :: size of inpFld array: 1rst index range (min,max)  C     sizI1,sizI2 :: size of inpFld array: 1rst index range (min,max)
47  C     sizJ1,sizJ2 :: size of inpFld array: 2nd  index range (min,max)  C     sizJ1,sizJ2 :: size of inpFld array: 2nd  index range (min,max)
48  C     sizK        :: size of inpFld array: 3rd  dimension  C     sizK        :: size of inpFld array: 3rd  dimension
49  C     sizTx,sizTy :: size of inpFld array: tile dimensions  C     sizTx,sizTy :: size of inpFld array: tile dimensions
50  C     iRun,jRun   :: range of 1rst & 2nd index  C     iRun,jRun   :: range of 1rst & 2nd index
51  C     kIn         :: level index of inFld array to porcess  C     kIn         :: level index of inpFld array to porcess
52  C     biIn,bjIn   :: tile indices of inFld array to process  C     biIn,bjIn   :: tile indices of inpFld array to process
53  C     k,bi,bj     :: level and tile indices used for weighting (mask,area ...)  C     k,bi,bj     :: level and tile indices used for weighting (mask,area ...)
54  C     region2fill :: indicates whether to compute statistics over this region  C     region2fill :: indicates whether to compute statistics over this region
55  C     ndId        :: Diagnostics Id Number (in available diag. list)  C     ndId        :: Diagnostics Id Number (in available diag. list)
# Line 53  C     parsFld     :: parser field with c Line 57  C     parsFld     :: parser field with c
57  C     myThid      :: my Thread Id number  C     myThid      :: my Thread Id number
58        _RL     statFld(0:nStats,0:nRegions)        _RL     statFld(0:nStats,0:nRegions)
59        INTEGER sizI1,sizI2,sizJ1,sizJ2        INTEGER sizI1,sizI2,sizJ1,sizJ2
60        INTEGER sizK,sizTx,sizTy        INTEGER sizF,sizK,sizTx,sizTy
61        _RL     inpFld(sizI1:sizI2,sizJ1:sizJ2,sizK,sizTx,sizTy)        _RL     inpFld(sizI1:sizI2,sizJ1:sizJ2,sizK,sizTx,sizTy)
62          _RL     frcFld(sizI1:sizI2,sizJ1:sizJ2,sizF,sizTx,sizTy)
63          _RL     scaleFact
64          LOGICAL useFract
65        INTEGER iRun, jRun, kIn, biIn, bjIn        INTEGER iRun, jRun, kIn, biIn, bjIn
66        INTEGER k, bi, bj, ndId        INTEGER k, bi, bj, ndId
67        INTEGER region2fill(0:nRegions)        INTEGER region2fill(0:nRegions)
# Line 64  CEOP Line 71  CEOP
71    
72  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
73  C     i,j    :: loop indices  C     i,j    :: loop indices
74        INTEGER i, n, km        INTEGER i, n, km, kFr
75        INTEGER im, ix, iv        INTEGER im, ix, iv
76        PARAMETER ( iv = nStats - 2 , im = nStats - 1 , ix = nStats )        PARAMETER ( iv = nStats - 2 , im = nStats - 1 , ix = nStats )
77        LOGICAL exclSpVal        LOGICAL exclSpVal
# Line 84  C---+----1----+----2----+----3----+----4 Line 91  C---+----1----+----2----+----3----+----4
91          exclSpVal = .TRUE.          exclSpVal = .TRUE.
92          specialVal = getcon('UNDEF')          specialVal = getcon('UNDEF')
93        ENDIF        ENDIF
94          kFr = MIN(kIn,sizF)
95    
96        DO n=0,nRegions        DO n=0,nRegions
97         IF (region2fill(n).NE.0) THEN         IF (region2fill(n).NE.0) THEN
# Line 103  C-     case of a special region (no spec Line 111  C-     case of a special region (no spec
111             CALL  DIAGSTATS_CALC(             CALL  DIAGSTATS_CALC(
112       O            statLoc,       O            statLoc,
113       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
114         I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
115         I            scaleFact, useFract,
116       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
117       I            maskH(1-Olx,1-Oly,bi,bj), maskW(1-Olx,1-Oly,k,bi,bj),       I            maskH(1-Olx,1-Oly,bi,bj), maskW(1-Olx,1-Oly,k,bi,bj),
118       I            hFacW(1-Olx,1-Oly,k,bi,bj), rAw(1-Olx,1-Oly,bi,bj),       I            hFacW(1-Olx,1-Oly,k,bi,bj), rAw(1-Olx,1-Oly,bi,bj),
# Line 112  c    I            drLoc, k,bi,bj, parsFl Line 122  c    I            drLoc, k,bi,bj, parsFl
122             CALL  DIAGSTATS_CALC(             CALL  DIAGSTATS_CALC(
123       O            statLoc,       O            statLoc,
124       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
125         I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
126         I            scaleFact, useFract,
127       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
128       I            maskH(1-Olx,1-Oly,bi,bj), maskS(1-Olx,1-Oly,k,bi,bj),       I            maskH(1-Olx,1-Oly,bi,bj), maskS(1-Olx,1-Oly,k,bi,bj),
129       I            hFacS(1-Olx,1-Oly,k,bi,bj), rAs(1-Olx,1-Oly,bi,bj),       I            hFacS(1-Olx,1-Oly,k,bi,bj), rAs(1-Olx,1-Oly,bi,bj),
# Line 120  c    I            drLoc, k,bi,bj, parsFl Line 132  c    I            drLoc, k,bi,bj, parsFl
132             CALL  DIAGSTATS_CALC(             CALL  DIAGSTATS_CALC(
133       O            statLoc,       O            statLoc,
134       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
135         I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
136         I            scaleFact, useFract,
137       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
138       I            maskH(1-Olx,1-Oly,bi,bj), maskC(1-Olx,1-Oly,k,bi,bj),       I            maskH(1-Olx,1-Oly,bi,bj), maskC(1-Olx,1-Oly,k,bi,bj),
139       I            hFacC(1-Olx,1-Oly,k,bi,bj), rA(1-Olx,1-Oly,bi,bj),       I            hFacC(1-Olx,1-Oly,k,bi,bj), rA(1-Olx,1-Oly,bi,bj),
# Line 132  c    I            drLoc, k,bi,bj, parsFl Line 146  c    I            drLoc, k,bi,bj, parsFl
146             CALL  DIAGSTATS_LM_CALC(             CALL  DIAGSTATS_LM_CALC(
147       O            statLoc,       O            statLoc,
148       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
149         I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
150         I            scaleFact, useFract,
151       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
152       I            maskH(1-Olx,1-Oly,bi,bj), maskH(1-Olx,1-Oly,bi,bj),       I            maskH(1-Olx,1-Oly,bi,bj), maskH(1-Olx,1-Oly,bi,bj),
153       I            rA(1-Olx,1-Oly,bi,bj),       I            rA(1-Olx,1-Oly,bi,bj),
# Line 143  c    I            drLoc, k,bi,bj, parsFl Line 159  c    I            drLoc, k,bi,bj, parsFl
159             CALL  DIAGSTATS_G_CALC(             CALL  DIAGSTATS_G_CALC(
160       O            statLoc,       O            statLoc,
161       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
162         I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
163         I            scaleFact, useFract,
164       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
165       I            maskH(1-Olx,1-Oly,bi,bj),       I            maskH(1-Olx,1-Oly,bi,bj),
166       I            rA(1-Olx,1-Oly,bi,bj),       I            rA(1-Olx,1-Oly,bi,bj),
# Line 159  c        ELSEIF ( parsFld(10:10) .EQ. '1 Line 177  c        ELSEIF ( parsFld(10:10) .EQ. '1
177             CALL  DIAGSTATS_CALC(             CALL  DIAGSTATS_CALC(
178       O            statLoc,       O            statLoc,
179       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
180         I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
181         I            scaleFact, useFract,
182       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
183       I            maskH(1-Olx,1-Oly,bi,bj), maskW(1-Olx,1-Oly,km,bi,bj),       I            maskH(1-Olx,1-Oly,bi,bj), maskW(1-Olx,1-Oly,km,bi,bj),
184       I            maskW(1-Olx,1-Oly,km,bi,bj),rAw(1-Olx,1-Oly,bi,bj),       I            maskW(1-Olx,1-Oly,km,bi,bj),rAw(1-Olx,1-Oly,bi,bj),
# Line 167  c        ELSEIF ( parsFld(10:10) .EQ. '1 Line 187  c        ELSEIF ( parsFld(10:10) .EQ. '1
187             CALL  DIAGSTATS_CALC(             CALL  DIAGSTATS_CALC(
188       O            statLoc,       O            statLoc,
189       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
190         I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
191         I            scaleFact, useFract,
192       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
193       I            maskH(1-Olx,1-Oly,bi,bj), maskS(1-Olx,1-Oly,km,bi,bj),       I            maskH(1-Olx,1-Oly,bi,bj), maskS(1-Olx,1-Oly,km,bi,bj),
194       I            maskS(1-Olx,1-Oly,km,bi,bj),rAs(1-Olx,1-Oly,bi,bj),       I            maskS(1-Olx,1-Oly,km,bi,bj),rAs(1-Olx,1-Oly,bi,bj),
# Line 175  c        ELSEIF ( parsFld(10:10) .EQ. '1 Line 197  c        ELSEIF ( parsFld(10:10) .EQ. '1
197             CALL  DIAGSTATS_CALC(             CALL  DIAGSTATS_CALC(
198       O            statLoc,       O            statLoc,
199       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
200         I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
201         I            scaleFact, useFract,
202       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
203       I            maskH(1-Olx,1-Oly,bi,bj), maskH(1-Olx,1-Oly,bi,bj),       I            maskH(1-Olx,1-Oly,bi,bj), maskH(1-Olx,1-Oly,bi,bj),
204       I            maskH(1-Olx,1-Oly,bi,bj), rA(1-Olx,1-Oly,bi,bj),       I            maskH(1-Olx,1-Oly,bi,bj), rA(1-Olx,1-Oly,bi,bj),
# Line 213  C     !ROUTINE: DIAGSTATS_LM_CALC Line 237  C     !ROUTINE: DIAGSTATS_LM_CALC
237  C     !INTERFACE:  C     !INTERFACE:
238        SUBROUTINE DIAGSTATS_LM_CALC(        SUBROUTINE DIAGSTATS_LM_CALC(
239       O                  statArr,       O                  statArr,
240       I                  inpArr,       I                  inpArr, frcArr, scaleFact, useFract,
241       I                  nStats,sizI1,sizI2,sizJ1,sizJ2, iRun,jRun,       I                  nStats,sizI1,sizI2,sizJ1,sizJ2, iRun,jRun,
242       I                  regMask, arrMask, arrArea,       I                  regMask, arrMask, arrArea,
243       I                  specialVal, exclSpVal,       I                  specialVal, exclSpVal,
# Line 237  C     !INPUT/OUTPUT PARAMETERS: Line 261  C     !INPUT/OUTPUT PARAMETERS:
261  C     == Routine Arguments ==  C     == Routine Arguments ==
262  C     statArr     :: output statistics array  C     statArr     :: output statistics array
263  C     inpArr      :: input field array to process (compute stats & add to statFld)  C     inpArr      :: input field array to process (compute stats & add to statFld)
264    C     frcArr      :: fraction used for weighted-average diagnostics
265    C     useFract    :: if True, use fraction-weight
266    C     scaleFact   :: scaling factor
267  C     nStats      :: size of output statArr  C     nStats      :: size of output statArr
268  C     sizI1,sizI2 :: size of inpArr array: 1rst index range (min,max)  C     sizI1,sizI2 :: size of inpArr array: 1rst index range (min,max)
269  C     sizJ1,sizJ2 :: size of inpArr array: 2nd  index range (min,max)  C     sizJ1,sizJ2 :: size of inpArr array: 2nd  index range (min,max)
# Line 253  C     myThid      :: my Thread Id number Line 280  C     myThid      :: my Thread Id number
280        INTEGER iRun, jRun        INTEGER iRun, jRun
281        _RL statArr(0:nStats)        _RL statArr(0:nStats)
282        _RL inpArr (sizI1:sizI2,sizJ1:sizJ2)        _RL inpArr (sizI1:sizI2,sizJ1:sizJ2)
283          _RL frcArr (sizI1:sizI2,sizJ1:sizJ2)
284          _RL scaleFact
285          LOGICAL useFract
286        _RS regMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS regMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
287        _RS arrMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS arrMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
288        _RS arrArea(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS arrArea(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 286  C    and will change it once the Regions Line 316  C    and will change it once the Regions
316    
317          CALL  DIAGSTATS_CALC(          CALL  DIAGSTATS_CALC(
318       O            statArr,       O            statArr,
319       I            inpArr,       I            inpArr, frcArr, scaleFact, useFract,
320       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
321       I            regMask, arrMask,       I            regMask, arrMask,
322       I            dpphys(1-Olx,1-Oly,kl,bi,bj), arrArea,       I            dpphys(1-Olx,1-Oly,kl,bi,bj), arrArea,
# Line 305  C     !ROUTINE: DIAGSTATS_G_CALC Line 335  C     !ROUTINE: DIAGSTATS_G_CALC
335  C     !INTERFACE:  C     !INTERFACE:
336        SUBROUTINE DIAGSTATS_G_CALC(        SUBROUTINE DIAGSTATS_G_CALC(
337       O                  statArr,       O                  statArr,
338       I                  inpArr,       I                  inpArr, frcArr, scaleFact, useFract,
339       I                  nStats,sizI1,sizI2,sizJ1,sizJ2, iRun,jRun,       I                  nStats,sizI1,sizI2,sizJ1,sizJ2, iRun,jRun,
340       I                  regMask, arrArea,       I                  regMask, arrArea,
341       I                  specialVal, exclSpVal,       I                  specialVal, exclSpVal,
# Line 333  C     !INPUT/OUTPUT PARAMETERS: Line 363  C     !INPUT/OUTPUT PARAMETERS:
363  C     == Routine Arguments ==  C     == Routine Arguments ==
364  C     statArr     :: output statistics array  C     statArr     :: output statistics array
365  C     inpArr      :: input field array to process (compute stats & add to statFld)  C     inpArr      :: input field array to process (compute stats & add to statFld)
366    C     frcArr      :: fraction used for weighted-average diagnostics
367    C     useFract    :: if True, use fraction-weight
368    C     scaleFact   :: scaling factor
369  C     nStats      :: size of output statArr  C     nStats      :: size of output statArr
370  C     sizI1,sizI2 :: size of inpArr array: 1rst index range (min,max)  C     sizI1,sizI2 :: size of inpArr array: 1rst index range (min,max)
371  C     sizJ1,sizJ2 :: size of inpArr array: 2nd  index range (min,max)  C     sizJ1,sizJ2 :: size of inpArr array: 2nd  index range (min,max)
# Line 348  C     myThid      :: my Thread Id number Line 381  C     myThid      :: my Thread Id number
381        INTEGER iRun, jRun        INTEGER iRun, jRun
382        _RL statArr(0:nStats)        _RL statArr(0:nStats)
383        _RL inpArr (sizI1:sizI2,sizJ1:sizJ2)        _RL inpArr (sizI1:sizI2,sizJ1:sizJ2)
384          _RL frcArr (sizI1:sizI2,sizJ1:sizJ2)
385          _RL scaleFact
386          LOGICAL useFract
387        _RS regMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS regMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
388        _RS arrMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS arrMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
389        _RS arrArea(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS arrArea(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 376  c     IF ( useLand ) THEN Line 412  c     IF ( useLand ) THEN
412    
413          CALL  DIAGSTATS_CALC(          CALL  DIAGSTATS_CALC(
414       O            statArr,       O            statArr,
415       I            inpArr,       I            inpArr, frcArr, scaleFact, useFract,
416       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
417       I            regMask, aim_landFr(1-Olx,1-Oly,bi,bj),       I            regMask, aim_landFr(1-Olx,1-Oly,bi,bj),
418       I            aim_landFr(1-Olx,1-Oly,bi,bj), arrArea,       I            aim_landFr(1-Olx,1-Oly,bi,bj), arrArea,
# Line 395  C     !ROUTINE: DIAGSTATS_CALC Line 431  C     !ROUTINE: DIAGSTATS_CALC
431  C     !INTERFACE:  C     !INTERFACE:
432        SUBROUTINE DIAGSTATS_CALC(        SUBROUTINE DIAGSTATS_CALC(
433       O                  statArr,       O                  statArr,
434       I                  inpArr,       I                  inpArr, frcArr, scaleFact, useFract,
435       I                  nStats,sizI1,sizI2,sizJ1,sizJ2, iRun,jRun,       I                  nStats,sizI1,sizI2,sizJ1,sizJ2, iRun,jRun,
436       I                  regMask, arrMask, arrhFac, arrArea,       I                  regMask, arrMask, arrhFac, arrArea,
437       I                  arrDr, specialVal, exclSpVal, useWeight,       I                  arrDr, specialVal, exclSpVal, useWeight,
438       I                  myThid )       I                  myThid )
 c    I                  arrDr, k,bi,bj, parsFld, myThid )  
439    
440  C     !DESCRIPTION:  C     !DESCRIPTION:
441  C     Compute statistics for this tile, level, region  C     Compute statistics for this tile, level, region
# Line 415  C     !INPUT/OUTPUT PARAMETERS: Line 450  C     !INPUT/OUTPUT PARAMETERS:
450  C     == Routine Arguments ==  C     == Routine Arguments ==
451  C     statArr     :: output statistics array  C     statArr     :: output statistics array
452  C     inpArr      :: input field array to process (compute stats & add to statFld)  C     inpArr      :: input field array to process (compute stats & add to statFld)
453    C     frcArr      :: fraction used for weighted-average diagnostics
454    C     useFract    :: if True, use fraction-weight
455    C     scaleFact   :: scaling factor
456  C     nStats      :: size of output array: statArr  C     nStats      :: size of output array: statArr
457  C     sizI1,sizI2 :: size of inpArr array: 1rst index range (min,max)  C     sizI1,sizI2 :: size of inpArr array: 1rst index range (min,max)
458  C     sizJ1,sizJ2 :: size of inpArr array: 2nd  index range (min,max)  C     sizJ1,sizJ2 :: size of inpArr array: 2nd  index range (min,max)
# Line 434  C     myThid      :: my Thread Id number Line 472  C     myThid      :: my Thread Id number
472        INTEGER iRun, jRun        INTEGER iRun, jRun
473        _RL statArr(0:nStats)        _RL statArr(0:nStats)
474        _RL inpArr (sizI1:sizI2,sizJ1:sizJ2)        _RL inpArr (sizI1:sizI2,sizJ1:sizJ2)
475          _RL frcArr (sizI1:sizI2,sizJ1:sizJ2)
476          _RL scaleFact
477          LOGICAL useFract
478        _RS regMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS regMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
479        _RS arrMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS arrMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
480        _RS arrhFac(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS arrhFac(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 452  C     i,j    :: loop indices Line 493  C     i,j    :: loop indices
493        INTEGER i, j, n        INTEGER i, j, n
494        INTEGER im, ix        INTEGER im, ix
495        _RL tmpVol        _RL tmpVol
496          _RL tmpFld
497    
498        im = nStats - 1        im = nStats - 1
499        ix = nStats        ix = nStats
# Line 459  C     i,j    :: loop indices Line 501  C     i,j    :: loop indices
501          statArr(n) = 0.          statArr(n) = 0.
502        ENDDO        ENDDO
503    
504        IF ( exclSpVal ) THEN        IF ( useFract .AND. exclSpVal ) THEN
505    
506         DO j = 1,jRun         DO j = 1,jRun
507          DO i = 1,iRun          DO i = 1,iRun
508            IF (arrMask(i,j).NE.0. .AND. inpArr(i,j).NE.specialVal) THEN            IF ( arrMask(i,j).NE.0. .AND. frcArr(i,j).NE.0.
509         &                     .AND. inpArr(i,j).NE.specialVal ) THEN
510                tmpFld = scaleFact*inpArr(i,j)
511              IF ( statArr(0).EQ.0. ) THEN              IF ( statArr(0).EQ.0. ) THEN
512                statArr(im) = inpArr(i,j)                statArr(im) = tmpFld
513                statArr(ix) = inpArr(i,j)                statArr(ix) = tmpFld
514              ELSE              ELSE
515                statArr(im) = MIN(inpArr(i,j),statArr(im))                statArr(im) = MIN(tmpFld,statArr(im))
516                statArr(ix) = MAX(inpArr(i,j),statArr(ix))                statArr(ix) = MAX(tmpFld,statArr(ix))
517                ENDIF
518                IF ( useWeight ) THEN
519                  tmpVol = arrDr*arrhFac(i,j)*arrArea(i,j)*frcArr(i,j)
520                ELSE
521                  tmpVol = arrDr*arrArea(i,j)*frcArr(i,j)
522                ENDIF
523                statArr(0) = statArr(0) + tmpVol
524                statArr(1) = statArr(1) + tmpVol*tmpFld
525                statArr(2) = statArr(2) + tmpVol*tmpFld*tmpFld
526              ENDIF
527            ENDDO
528           ENDDO
529    
530          ELSEIF ( useFract ) THEN
531    
532           DO j = 1,jRun
533            DO i = 1,iRun
534              IF ( arrMask(i,j).NE.0. .AND. frcArr(i,j).NE.0. ) THEN
535                tmpFld = scaleFact*inpArr(i,j)
536                IF ( statArr(0).EQ.0. ) THEN
537                  statArr(im) = tmpFld
538                  statArr(ix) = tmpFld
539                ELSE
540                  statArr(im) = MIN(tmpFld,statArr(im))
541                  statArr(ix) = MAX(tmpFld,statArr(ix))
542                ENDIF
543                IF ( useWeight ) THEN
544                  tmpVol = arrDr*arrhFac(i,j)*arrArea(i,j)*frcArr(i,j)
545                ELSE
546                  tmpVol = arrDr*arrArea(i,j)*frcArr(i,j)
547                ENDIF
548                statArr(0) = statArr(0) + tmpVol
549                statArr(1) = statArr(1) + tmpVol*tmpFld
550                statArr(2) = statArr(2) + tmpVol*tmpFld*tmpFld
551              ENDIF
552            ENDDO
553           ENDDO
554    
555          ELSEIF ( exclSpVal ) THEN
556    
557           DO j = 1,jRun
558            DO i = 1,iRun
559              IF ( arrMask(i,j).NE.0.
560         &                     .AND. inpArr(i,j).NE.specialVal ) THEN
561                tmpFld = scaleFact*inpArr(i,j)
562                IF ( statArr(0).EQ.0. ) THEN
563                  statArr(im) = tmpFld
564                  statArr(ix) = tmpFld
565                ELSE
566                  statArr(im) = MIN(tmpFld,statArr(im))
567                  statArr(ix) = MAX(tmpFld,statArr(ix))
568              ENDIF              ENDIF
569              IF ( useWeight ) THEN              IF ( useWeight ) THEN
570                tmpVol = arrDr*arrhFac(i,j)*arrArea(i,j)                tmpVol = arrDr*arrhFac(i,j)*arrArea(i,j)
# Line 477  C     i,j    :: loop indices Line 572  C     i,j    :: loop indices
572                tmpVol = arrDr*arrArea(i,j)                tmpVol = arrDr*arrArea(i,j)
573              ENDIF              ENDIF
574              statArr(0) = statArr(0) + tmpVol              statArr(0) = statArr(0) + tmpVol
575              statArr(1) = statArr(1) + tmpVol*inpArr(i,j)              statArr(1) = statArr(1) + tmpVol*tmpFld
576              statArr(2) = statArr(2) + tmpVol*inpArr(i,j)*inpArr(i,j)              statArr(2) = statArr(2) + tmpVol*tmpFld*tmpFld
577            ENDIF            ENDIF
578          ENDDO          ENDDO
579         ENDDO         ENDDO
# Line 489  C     i,j    :: loop indices Line 584  C     i,j    :: loop indices
584          DO i = 1,iRun          DO i = 1,iRun
585  c         IF ( regMask(i,j).NE.0. .AND. arrMask(i,j).NE.0. ) THEN  c         IF ( regMask(i,j).NE.0. .AND. arrMask(i,j).NE.0. ) THEN
586            IF ( arrMask(i,j).NE.0. ) THEN            IF ( arrMask(i,j).NE.0. ) THEN
587                tmpFld = scaleFact*inpArr(i,j)
588              IF ( statArr(0).EQ.0. ) THEN              IF ( statArr(0).EQ.0. ) THEN
589                statArr(im) = inpArr(i,j)                statArr(im) = tmpFld
590                statArr(ix) = inpArr(i,j)                statArr(ix) = tmpFld
591              ELSE              ELSE
592                statArr(im) = MIN(inpArr(i,j),statArr(im))                statArr(im) = MIN(tmpFld,statArr(im))
593                statArr(ix) = MAX(inpArr(i,j),statArr(ix))                statArr(ix) = MAX(tmpFld,statArr(ix))
594              ENDIF              ENDIF
595              IF ( useWeight ) THEN              IF ( useWeight ) THEN
596                tmpVol = arrDr*arrhFac(i,j)*arrArea(i,j)                tmpVol = arrDr*arrhFac(i,j)*arrArea(i,j)
# Line 502  c         IF ( regMask(i,j).NE.0. .AND. Line 598  c         IF ( regMask(i,j).NE.0. .AND.
598                tmpVol = arrDr*arrArea(i,j)                tmpVol = arrDr*arrArea(i,j)
599              ENDIF              ENDIF
600              statArr(0) = statArr(0) + tmpVol              statArr(0) = statArr(0) + tmpVol
601              statArr(1) = statArr(1) + tmpVol*inpArr(i,j)              statArr(1) = statArr(1) + tmpVol*tmpFld
602              statArr(2) = statArr(2) + tmpVol*inpArr(i,j)*inpArr(i,j)              statArr(2) = statArr(2) + tmpVol*tmpFld*tmpFld
603            ENDIF            ENDIF
604          ENDDO          ENDDO
605         ENDDO         ENDDO

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.22