/[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.9 by jmc, Mon Dec 21 00:10:07 2009 UTC revision 1.11 by jmc, Fri Aug 8 19:29:48 2014 UTC
# Line 12  C     !INTERFACE: Line 12  C     !INTERFACE:
12       I                  scaleFact, power, useFract, sizF,       I                  scaleFact, power, useFract, sizF,
13       I                  sizI1,sizI2,sizJ1,sizJ2,sizK,sizTx,sizTy,       I                  sizI1,sizI2,sizJ1,sizJ2,sizK,sizTx,sizTy,
14       I                  iRun,jRun,kIn,biIn,bjIn,       I                  iRun,jRun,kIn,biIn,bjIn,
15       I                  k,bi,bj, region2fill, ndId, parsFld,       I                  k,bi,bj, bibjFlg, region2fill,
16       I                  myThid )       I                  ndId, parsFld, myThid )
17    
18  C     !DESCRIPTION:  C     !DESCRIPTION:
19  C     Update array statFld  C     Update array statFld
# Line 54  C     iRun,jRun   :: range of 1rst & 2nd Line 54  C     iRun,jRun   :: range of 1rst & 2nd
54  C     kIn         :: level index of inpFld array to process  C     kIn         :: level index of inpFld array to process
55  C     biIn,bjIn   :: tile indices of inpFld array to process  C     biIn,bjIn   :: tile indices of inpFld array to process
56  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 ...)
57    C     bibjFlg     :: passed from calling S/R (see diagstats_fill.F)
58  C     region2fill :: indicates whether to compute statistics over this region  C     region2fill :: indicates whether to compute statistics over this region
59  C     ndId        :: Diagnostics Id Number (in available diag. list)  C     ndId        :: Diagnostics Id Number (in available diag. list)
60  C     parsFld     :: parser field with characteristics of the diagnostics  C     parsFld     :: parser field with characteristics of the diagnostics
# Line 67  C     myThid      :: my Thread Id number Line 68  C     myThid      :: my Thread Id number
68        INTEGER power        INTEGER power
69        LOGICAL useFract        LOGICAL useFract
70        INTEGER iRun, jRun, kIn, biIn, bjIn        INTEGER iRun, jRun, kIn, biIn, bjIn
71        INTEGER k, bi, bj, ndId        INTEGER k, bi, bj, bibjFlg
72        INTEGER region2fill(0:nRegions)        INTEGER region2fill(0:nRegions)
73          INTEGER ndId
74        CHARACTER*16 parsFld        CHARACTER*16 parsFld
75        INTEGER myThid        INTEGER myThid
76  CEOP  CEOP
# Line 117  C---   Compute statistics for this tile, Line 119  C---   Compute statistics for this tile,
119            IF ( parsFld(9:9).EQ.'M') useWeight = .TRUE.            IF ( parsFld(9:9).EQ.'M') useWeight = .TRUE.
120    
121            IF     ( parsFld(2:2).EQ.'U' ) THEN            IF     ( parsFld(2:2).EQ.'U' ) THEN
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),       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
126       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),
127       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
128       I            diagSt_regMask(1-Olx,1-Oly,kRegMsk,bi,bj),       I            diagSt_regMask(1-OLx,1-OLy,kRegMsk,bi,bj),
129       I            maskW(1-Olx,1-Oly,k,bi,bj),       I            maskW(1-OLx,1-OLy,k,bi,bj),
130       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),
131       I            drLoc, specialVal, exclSpVal, useWeight, myThid )       I            drLoc, specialVal, exclSpVal, useWeight, myThid )
132  c    I            drLoc, k,bi,bj, parsFld, myThid )  c    I            drLoc, k,bi,bj, parsFld, myThid )
133            ELSEIF ( parsFld(2:2).EQ.'V' ) THEN            ELSEIF ( parsFld(2:2).EQ.'V' ) THEN
134             CALL  DIAGSTATS_CALC(             CALL DIAGSTATS_CALC(
135       O            statLoc,       O            statLoc,
136       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
137       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
138       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),
139       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
140       I            diagSt_regMask(1-Olx,1-Oly,kRegMsk,bi,bj),       I            diagSt_regMask(1-OLx,1-OLy,kRegMsk,bi,bj),
141       I            maskS(1-Olx,1-Oly,k,bi,bj),       I            maskS(1-OLx,1-OLy,k,bi,bj),
142       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),
143       I            drLoc, specialVal, exclSpVal, useWeight, myThid )       I            drLoc, specialVal, exclSpVal, useWeight, myThid )
144            ELSE            ELSE
145             CALL  DIAGSTATS_CALC(             CALL DIAGSTATS_CALC(
146       O            statLoc,       O            statLoc,
147       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
148       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
149       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),
150       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
151       I            diagSt_regMask(1-Olx,1-Oly,kRegMsk,bi,bj),       I            diagSt_regMask(1-OLx,1-OLy,kRegMsk,bi,bj),
152       I            maskC(1-Olx,1-Oly,k,bi,bj),       I            maskC(1-OLx,1-OLy,k,bi,bj),
153       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),
154       I            drLoc, specialVal, exclSpVal, useWeight, myThid )       I            drLoc, specialVal, exclSpVal, useWeight, myThid )
155            ENDIF            ENDIF
156    
157           ELSEIF ( useFIZHI .AND.           ELSEIF ( useFIZHI .AND.
158       &           (parsFld(10:10).EQ.'L' .OR. parsFld(10:10).EQ.'M')       &           (parsFld(10:10).EQ.'L' .OR. parsFld(10:10).EQ.'M')
159       &          ) THEN       &          ) THEN
160             CALL  DIAGSTATS_LM_CALC(             CALL DIAGSTATS_LM_CALC(
161       O            statLoc,       O            statLoc,
162       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
163       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
164       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),
165       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
166       I            diagSt_regMask(1-Olx,1-Oly,kRegMsk,bi,bj),       I            diagSt_regMask(1-OLx,1-OLy,kRegMsk,bi,bj),
167       I            maskInC(1-Olx,1-Oly,bi,bj), rA(1-Olx,1-Oly,bi,bj),       I            maskInC(1-OLx,1-OLy,bi,bj), rA(1-OLx,1-OLy,bi,bj),
168       I            specialVal, exclSpVal,       I            specialVal, exclSpVal,
169       I            k,bi,bj, parsFld, myThid )       I            k,bi,bj, parsFld, myThid )
170           ELSEIF ( useLand .AND.           ELSEIF ( useLand .AND.
171       &           (parsFld(10:10).EQ.'G' .OR. parsFld(10:10).EQ.'g')       &           (parsFld(10:10).EQ.'G' .OR. parsFld(10:10).EQ.'g')
172       &          ) THEN       &          ) THEN
173             CALL  DIAGSTATS_G_CALC(             CALL DIAGSTATS_G_CALC(
174       O            statLoc,       O            statLoc,
175       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
176       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
177       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),
178       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
179       I            diagSt_regMask(1-Olx,1-Oly,kRegMsk,bi,bj),       I            diagSt_regMask(1-OLx,1-OLy,kRegMsk,bi,bj),
180       I            rA(1-Olx,1-Oly,bi,bj),       I            rA(1-OLx,1-OLy,bi,bj),
181       I            specialVal, exclSpVal,       I            specialVal, exclSpVal,
182       I            k,bi,bj, parsFld, myThid )       I            k,bi,bj, parsFld, myThid )
183  c        ELSEIF ( parsFld(10:10) .EQ. 'I' ) THEN  c        ELSEIF ( parsFld(10:10) .EQ. 'I' ) THEN
# Line 184  c        ELSEIF ( parsFld(10:10) .EQ. '1 Line 186  c        ELSEIF ( parsFld(10:10) .EQ. '1
186    
187            drLoc = 1. _d 0            drLoc = 1. _d 0
188            IF     ( parsFld(2:2).EQ.'U' ) THEN            IF     ( parsFld(2:2).EQ.'U' ) THEN
189             CALL  DIAGSTATS_CALC(             CALL DIAGSTATS_CALC(
190       O            statLoc,       O            statLoc,
191       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
192       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
193       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),
194       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
195       I            diagSt_regMask(1-Olx,1-Oly,kRegMsk,bi,bj),       I            diagSt_regMask(1-OLx,1-OLy,kRegMsk,bi,bj),
196       I            maskInW(1-Olx,1-Oly,bi,bj),       I            maskInW(1-OLx,1-OLy,bi,bj),
197       I            maskInW(1-Olx,1-Oly,bi,bj),rAw(1-Olx,1-Oly,bi,bj),       I            maskInW(1-OLx,1-OLy,bi,bj),rAw(1-OLx,1-OLy,bi,bj),
198       I            drLoc, specialVal, exclSpVal, useWeight, myThid )       I            drLoc, specialVal, exclSpVal, useWeight, myThid )
199            ELSEIF ( parsFld(2:2).EQ.'V' ) THEN            ELSEIF ( parsFld(2:2).EQ.'V' ) THEN
200             CALL  DIAGSTATS_CALC(             CALL DIAGSTATS_CALC(
201       O            statLoc,       O            statLoc,
202       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
203       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
204       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),
205       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
206       I            diagSt_regMask(1-Olx,1-Oly,kRegMsk,bi,bj),       I            diagSt_regMask(1-OLx,1-OLy,kRegMsk,bi,bj),
207       I            maskInS(1-Olx,1-Oly,bi,bj),       I            maskInS(1-OLx,1-OLy,bi,bj),
208       I            maskInS(1-Olx,1-Oly,bi,bj),rAs(1-Olx,1-Oly,bi,bj),       I            maskInS(1-OLx,1-OLy,bi,bj),rAs(1-OLx,1-OLy,bi,bj),
209       I            drLoc, specialVal, exclSpVal, useWeight, myThid )       I            drLoc, specialVal, exclSpVal, useWeight, myThid )
210            ELSE            ELSE
211             CALL  DIAGSTATS_CALC(             CALL DIAGSTATS_CALC(
212       O            statLoc,       O            statLoc,
213       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),       I            inpFld(sizI1,sizJ1,kIn,biIn,bjIn),
214       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),       I            frcFld(sizI1,sizJ1,kFr,biIn,bjIn),
215       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),       I            scaleFact, power, useFract, n, diagSt_vRegMsk(n),
216       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,       I            nStats,sizI1,sizI2,sizJ1,sizJ2,iRun,jRun,
217       I            diagSt_regMask(1-Olx,1-Oly,kRegMsk,bi,bj),       I            diagSt_regMask(1-OLx,1-OLy,kRegMsk,bi,bj),
218       I            maskInC(1-Olx,1-Oly,bi,bj),       I            maskInC(1-OLx,1-OLy,bi,bj),
219       I            maskInC(1-Olx,1-Oly,bi,bj), rA(1-Olx,1-Oly,bi,bj),       I            maskInC(1-OLx,1-OLy,bi,bj), rA(1-OLx,1-OLy,bi,bj),
220       I            drLoc, specialVal, exclSpVal, useWeight, myThid )       I            drLoc, specialVal, exclSpVal, useWeight, myThid )
221            ENDIF            ENDIF
222    
# Line 222  c        ELSEIF ( parsFld(10:10) .EQ. '1 Line 224  c        ELSEIF ( parsFld(10:10) .EQ. '1
224    
225  C     Update cumulative statistics array  C     Update cumulative statistics array
226           IF ( statLoc(0).GT.0. ) THEN           IF ( statLoc(0).GT.0. ) THEN
227              IF ( statFld(0,n).LE.0. ) THEN             IF ( statFld(0,n).LE.0. ) THEN
228                statFld(im,n) = statLoc(im)               statFld(im,n) = statLoc(im)
229                statFld(ix,n) = statLoc(ix)               statFld(ix,n) = statLoc(ix)
230              ELSE             ELSE
231                statFld(im,n) = MIN( statFld(im,n), statLoc(im) )               statFld(im,n) = MIN( statFld(im,n), statLoc(im) )
232                statFld(ix,n) = MAX( statFld(ix,n), statLoc(ix) )               statFld(ix,n) = MAX( statFld(ix,n), statLoc(ix) )
233              ENDIF             ENDIF
234               IF ( bibjFlg.GE.0 ) THEN
235              DO i=0,iv              DO i=0,iv
236                statFld(i,n) = statFld(i,n) + statLoc(i)               statFld(i,n) = statFld(i,n) + statLoc(i)
237              ENDDO              ENDDO
238               ELSE
239                DO i=1,iv
240                 statFld(i,n) = statFld(i,n) + statLoc(i)
241                ENDDO
242               ENDIF
243           ENDIF           ENDIF
244    
245  C---   processing region "n" ends here.  C---   processing region "n" ends here.

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22