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

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

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

revision 1.2 by jmc, Sun Jun 12 13:58:33 2011 UTC revision 1.3 by jmc, Thu Jun 23 15:29:01 2011 UTC
# Line 16  C     !ROUTINE: DIAGNOSTICS_MNC_SET Line 16  C     !ROUTINE: DIAGNOSTICS_MNC_SET
16  C     !INTERFACE:  C     !INTERFACE:
17        SUBROUTINE DIAGNOSTICS_MNC_SET(        SUBROUTINE DIAGNOSTICS_MNC_SET(
18       I     nLevOutp, listId, lm,       I     nLevOutp, listId, lm,
19       O     diag_mnc_bn, useMissingValue,       O     diag_mnc_bn, missingValFillsMask,
20       I     misValLoc, myTime, myIter, myThid )       I     misValLoc, myTime, myIter, myThid )
21    
22  C     !DESCRIPTION:  C     !DESCRIPTION:
# Line 32  C     !USES: Line 32  C     !USES:
32  #include "DIAGNOSTICS.h"  #include "DIAGNOSTICS.h"
33    
34    
35  C     !INPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
36  C     nLevOutp :: number of levels to write in output file  C     nLevOutp        :: number of levels to write in output file
37  C     listId  :: Diagnostics list number being written  C     listId          :: Diagnostics list number being written
38  C     lm      :: loop index (averageCycle)  C     lm              :: loop index (averageCycle)
39  C     myIter  :: current iteration number  C     diag_mnc_bn     :: NetCDF output file name
40  C     myTime  :: current time of simulation (s)  C     missingValFillsMask :: fill output-field with Missing-Value where mask=0
41  C     myThid  :: my Thread Id number  C     misValLoc       :: local Missing Value
42    C     myTime          :: current time of simulation (s)
43    C     myIter          :: current iteration number
44    C     myThid          :: my Thread Id number
45        INTEGER nLevOutp        INTEGER nLevOutp
46        INTEGER listId, lm        INTEGER listId, lm
47        CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn        CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn
48        LOGICAL useMissingValue        LOGICAL missingValFillsMask
49        REAL*8 misValLoc        _RL     misValLoc
50        _RL     myTime        _RL     myTime
51        INTEGER myIter, myThid        INTEGER myIter, myThid
52  CEOP  CEOP
# Line 54  C     !FUNCTIONS: Line 57  C     !FUNCTIONS:
57        EXTERNAL ILNBLNK        EXTERNAL ILNBLNK
58    
59  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
       INTEGER NrMax  
       PARAMETER( NrMax = numLevels )  
   
60        _RL tmpLev        _RL tmpLev
61        INTEGER iLen        INTEGER iLen
62    
# Line 70  c     CHARACTER*(MAX_LEN_MBUF) msgBuf Line 70  c     CHARACTER*(MAX_LEN_MBUF) msgBuf
70  c     CHARACTER*(NLEN) d_cw_name  c     CHARACTER*(NLEN) d_cw_name
71  c     CHARACTER*(NLEN) dn_blnk  c     CHARACTER*(NLEN) dn_blnk
72  #ifdef DIAG_MNC_COORD_NEEDSWORK  #ifdef DIAG_MNC_COORD_NEEDSWORK
73          INTEGER NrMax
74          PARAMETER( NrMax = numLevels )
75        INTEGER i, j        INTEGER i, j
76        CHARACTER*(5) ctmp        CHARACTER*(5) ctmp
77        _RS ztmp(NrMax)        _RS ztmp(NrMax)
# Line 83  C---+----1----+----2----+----3----+----4 Line 85  C---+----1----+----2----+----3----+----4
85  c     IF (useMNC .AND. diag_mnc) THEN  c     IF (useMNC .AND. diag_mnc) THEN
86    
87  C     Handle missing value attribute (land points)  C     Handle missing value attribute (land points)
88          useMissingValue = .FALSE.          missingValFillsMask = .FALSE.
89  #ifdef DIAGNOSTICS_MISSING_VALUE  #ifdef DIAGNOSTICS_MISSING_VALUE
90          useMissingValue = .TRUE.          missingValFillsMask = .TRUE.
91  #endif /* DIAGNOSTICS_MISSING_VALUE */  #endif /* DIAGNOSTICS_MISSING_VALUE */
92  C     Defaults to UNSET_I  C     Defaults to UNSET_I
93          misvalIntLoc = misvalInt(listId)          misvalIntLoc = misvalInt(listId)
# Line 129  c       dn(1)(1:NLEN) = dn_blnk(1:NLEN) Line 131  c       dn(1)(1:NLEN) = dn_blnk(1:NLEN)
131       &       'Idicies of vertical levels within the source arrays',       &       'Idicies of vertical levels within the source arrays',
132       &       myThid)       &       myThid)
133  C     suppress the missing value attribute (iflag = 0)  C     suppress the missing value attribute (iflag = 0)
134          IF (useMissingValue)          CALL MNC_CW_VATTR_MISSING('diag_levels', 0,
      &       CALL MNC_CW_VATTR_MISSING('diag_levels', 0,  
135       I       misval_r8, misval_r4, misval_int, myThid )       I       misval_r8, misval_r4, misval_int, myThid )
136    
137          CALL MNC_CW_RL_W('D',diag_mnc_bn,0,0,          CALL MNC_CW_RL_W('D',diag_mnc_bn,0,0,
# Line 191  C         for averaged levels. Line 192  C         for averaged levels.
192       &           myThid)       &           myThid)
193            ENDIF            ENDIF
194  C     suppress the missing value attribute (iflag = 0)  C     suppress the missing value attribute (iflag = 0)
195            IF (useMissingValue)            IF (missingValFillsMask)
196       &          CALL MNC_CW_VATTR_MISSING(dn(1), 0,       &          CALL MNC_CW_VATTR_MISSING(dn(1), 0,
197       I          misval_r8, misval_r4, misval_int, myThid )       I          misval_r8, misval_r4, misval_int, myThid )
198            CALL MNC_CW_RS_W('D',diag_mnc_bn,0,0, dn(1), ztmp, myThid)            CALL MNC_CW_RS_W('D',diag_mnc_bn,0,0, dn(1), ztmp, myThid)
# Line 212  C     !ROUTINE: DIAGNOSTICS_MNC_OUT Line 213  C     !ROUTINE: DIAGNOSTICS_MNC_OUT
213    
214  C     !INTERFACE:  C     !INTERFACE:
215        SUBROUTINE DIAGNOSTICS_MNC_OUT(        SUBROUTINE DIAGNOSTICS_MNC_OUT(
216       I     NrMax, nLevOutp, listId, ndId,       I     NrMax, nLevOutp, listId, ndId, mate,
217       I     diag_mnc_bn,       I     diag_mnc_bn,
218       I     useMissingValue, misValLoc,       I     missingValFillsMask, misValLoc,
219       I     qtmp,       I     qtmp,
220       I     myTime, myIter, myThid )       I     myTime, myIter, myThid )
221    
# Line 231  C     !USES: Line 232  C     !USES:
232  #include "DIAGNOSTICS.h"  #include "DIAGNOSTICS.h"
233    
234  C     !INPUT PARAMETERS:  C     !INPUT PARAMETERS:
235  C     nLevOutp :: number of levels to write in output file  C     NrMax           :: 3rd dimension of output-field array to write
236  C     listId  :: Diagnostics list number being written  C     nLevOutp        :: number of levels to write in output file
237  C     ndId    :: diagnostics  Id number (in available diagnostics list)  C     listId          :: Diagnostics list number being written
238  C     myTime  :: current time of simulation (s)  C     ndId            :: diagnostics Id number (in available diagnostics list)
239  C     myIter  :: current iteration number  C     mate            :: counter diagnostic number if any ; 0 otherwise
240  C     myThid  :: my Thread Id number  C     diag_mnc_bn     :: NetCDF output file name
241    C     missingValFillsMask :: fill output-field with Missing-Value where mask=0
242    C     misValLoc       :: local Missing Value
243    C     qtmp            :: output-field array to write
244    C     myTime          :: current time of simulation (s)
245    C     myIter          :: current iteration number
246    C     myThid          :: my Thread Id number
247        INTEGER NrMax        INTEGER NrMax
248        INTEGER nLevOutp        INTEGER nLevOutp
249        INTEGER listId        INTEGER listId, ndId, mate
       INTEGER ndId  
250        CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn        CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn
251        LOGICAL useMissingValue        LOGICAL missingValFillsMask
252        REAL*8 misValLoc        _RL     misValLoc
253        _RL qtmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy,NrMax,nSx,nSy)        _RL     qtmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy,NrMax,nSx,nSy)
254        _RL     myTime        _RL     myTime
255        INTEGER myIter, myThid        INTEGER myIter, myThid
256  CEOP  CEOP
257    
258    #ifdef ALLOW_MNC
259  C     !FUNCTIONS:  C     !FUNCTIONS:
260  c     INTEGER ILNBLNK  c     INTEGER ILNBLNK
261  c     EXTERNAL ILNBLNK  c     EXTERNAL ILNBLNK
# Line 260  C     bi,bj :: tile indices Line 267  C     bi,bj :: tile indices
267        INTEGER bi, bj        INTEGER bi, bj
268    
269  c     CHARACTER*(MAX_LEN_MBUF) msgBuf  c     CHARACTER*(MAX_LEN_MBUF) msgBuf
 #ifdef ALLOW_MNC  
270  c     INTEGER ll, llMx, jj, jjMx  c     INTEGER ll, llMx, jj, jjMx
271        INTEGER ii, klev        INTEGER ii, klev
272        INTEGER CW_DIMS, NLEN        INTEGER CW_DIMS, NLEN
# Line 360  C        Time dimension Line 366  C        Time dimension
366           CALL MNC_CW_ADD_VATTR_TEXT( cdiag(ndId),'units',           CALL MNC_CW_ADD_VATTR_TEXT( cdiag(ndId),'units',
367       &                               udiag(ndId), myThid )       &                               udiag(ndId), myThid )
368    
369  C     Missing values only for scalar diagnostics at mass points (so far)           useMisValForThisDiag = mate.GT.0
370           useMisValForThisDiag = useMissingValue  C     Use the missing values for masking out the land points:
371       &                     .AND.gdiag(ndId)(1:2).EQ.'SM'  C     only for scalar diagnostics at mass points (so far)
372           IF ( useMisValForThisDiag ) THEN           IF ( missingValFillsMask.AND.gdiag(ndId)(1:2).EQ.'SM' ) THEN
373  C     assign missing values and set flag for adding the netCDF atttibute             useMisValForThisDiag = .TRUE.
            CALL MNC_CW_VATTR_MISSING(cdiag(ndId), 2,  
      I                misval_r8, misval_r4, misval_int, myThid )  
 C     and now use the missing values for masking out the land points  
374  C     note: better to use 2-D mask if kdiag <> Nr or vert.integral  C     note: better to use 2-D mask if kdiag <> Nr or vert.integral
375             DO bj = myByLo(myThid), myByHi(myThid)             DO bj = myByLo(myThid), myByHi(myThid)
376              DO bi = myBxLo(myThid), myBxHi(myThid)              DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 383  C     note: better to use 2-D mask if kd Line 386  C     note: better to use 2-D mask if kd
386               ENDDO               ENDDO
387              ENDDO              ENDDO
388             ENDDO             ENDDO
389             ENDIF
390             IF ( useMisValForThisDiag ) THEN
391    C     assign missing values and set flag for adding the netCDF atttibute
392               CALL MNC_CW_VATTR_MISSING(cdiag(ndId), 2,
393         I                misval_r8, misval_r4, misval_int, myThid )
394           ELSE           ELSE
395  C     suppress the missing value attribute (iflag = 0)  C     suppress the missing value attribute (iflag = 0)
396  C     Note: We have to call the following subroutine for each mnc that has  C     Note: We have to call the following subroutine for each mnc that has

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

  ViewVC Help
Powered by ViewVC 1.1.22