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

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

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

revision 1.38 by mlosch, Thu May 22 09:53:21 2008 UTC revision 1.39 by mlosch, Tue May 27 08:37:19 2008 UTC
# Line 88  C              diagnostic storage qdiag Line 88  C              diagnostic storage qdiag
88        CHARACTER*(5) ctmp        CHARACTER*(5) ctmp
89        _RS ztmp(NrMax)        _RS ztmp(NrMax)
90  #endif  #endif
91          LOGICAL useMissingValue, useMisValForThisDiag
92        REAL*8 misvalLoc        REAL*8 misvalLoc
93        REAL*8 misval_r8(2)        REAL*8 misval_r8(2)
94        REAL*4 misval_r4(2)        REAL*4 misval_r4(2)
# Line 104  C---+----1----+----2----+----3----+----4 Line 105  C---+----1----+----2----+----3----+----4
105    
106  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
107        IF (useMNC .AND. diag_mnc) THEN        IF (useMNC .AND. diag_mnc) THEN
 #ifdef DIAGNOSTICS_MISSING_VALUE  
108  C     Handle missing value attribute (land points)  C     Handle missing value attribute (land points)
109           useMissingValue = .FALSE.
110    #ifdef DIAGNOSTICS_MISSING_VALUE
111           useMissingValue = .TRUE.
112    #endif /* DIAGNOSTICS_MISSING_VALUE */
113           IF ( misvalFlt(listId) .NE. UNSET_RL ) THEN
114            misvalLoc = misvalFlt(listId)
115           ELSE
116          misvalLoc = undef          misvalLoc = undef
117           ENDIF
118  C     Defaults to UNSET_I  C     Defaults to UNSET_I
119          misvalIntLoc = UNSET_I         misvalIntLoc = misvalInt(listId)
120          DO ii=1,2         DO ii=1,2
121  C        misval_r4(ii)  = UNSET_FLOAT4  C       misval_r4(ii)  = UNSET_FLOAT4
122  C        misval_r8(ii)  = UNSET_FLOAT8  C       misval_r8(ii)  = UNSET_FLOAT8
123           misval_r4(ii)  = misvalLoc          misval_r4(ii)  = misvalLoc
124           misval_r8(ii)  = misvalLoc          misval_r8(ii)  = misvalLoc
125           misval_int(ii) = UNSET_I          misval_int(ii) = UNSET_I
126          ENDDO         ENDDO
 #endif /* DIAGNOSTICS_MISSING_VALUE */  
127          DO i = 1,MAX_LEN_FNAM          DO i = 1,MAX_LEN_FNAM
128            diag_mnc_bn(i:i) = ' '            diag_mnc_bn(i:i) = ' '
129          ENDDO          ENDDO
# Line 148  C       beginning and ending times for e Line 155  C       beginning and ending times for e
155          CALL MNC_CW_ADD_VATTR_TEXT('diag_levels','description',          CALL MNC_CW_ADD_VATTR_TEXT('diag_levels','description',
156       &       'Idicies of vertical levels within the source arrays',       &       'Idicies of vertical levels within the source arrays',
157       &       myThid)       &       myThid)
158  #ifdef DIAGNOSTICS_MISSING_VALUE  C     suppress the missing value attribute (iflag = 0)
159          CALL MNC_CW_VATTR_MISSING('diag_levels', 0,          IF (useMissingValue)
160         &       CALL MNC_CW_VATTR_MISSING('diag_levels', 0,
161       I       misval_r8, misval_r4, misval_int,       I       misval_r8, misval_r4, misval_int,
162       I       myThid )       I       myThid )
 #endif /* DIAGNOSTICS_MISSING_VALUE */  
163    
164          CALL MNC_CW_RL_W('D',diag_mnc_bn,0,0,          CALL MNC_CW_RL_W('D',diag_mnc_bn,0,0,
165       &       'diag_levels', levs(1,listId), myThid)       &       'diag_levels', levs(1,listId), myThid)
# Line 211  C         for averaged levels. Line 218  C         for averaged levels.
218       &           'Dimensional coordinate value at the lower point',       &           'Dimensional coordinate value at the lower point',
219       &           myThid)       &           myThid)
220            ENDIF            ENDIF
221  #ifdef DIAGNOSTICS_MISSING_VALUE  C     suppress the missing value attribute (iflag = 0)
222            CALL MNC_CW_VATTR_MISSING(dn(1), 0,            IF (useMissingValue)
223         &         CALL MNC_CW_VATTR_MISSING(dn(1), 0,
224       I         misval_r8, misval_r4, misval_int,       I         misval_r8, misval_r4, misval_int,
225       I         myThid )       I         myThid )
 #endif /* DIAGNOSTICS_MISSING_VALUE */  
226            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)
227            CALL MNC_CW_DEL_VNAME(dn(1), myThid)            CALL MNC_CW_DEL_VNAME(dn(1), myThid)
228            CALL MNC_CW_DEL_GNAME(dn(1), myThid)            CALL MNC_CW_DEL_GNAME(dn(1), myThid)
# Line 460  C           Time dimension Line 467  C           Time dimension
467              CALL MNC_CW_ADD_VATTR_TEXT(cdiag(ndId),'units',              CALL MNC_CW_ADD_VATTR_TEXT(cdiag(ndId),'units',
468       &             udiag(ndId),myThid)       &             udiag(ndId),myThid)
469    
 #ifdef DIAGNOSTICS_MISSING_VALUE  
 C     Handle missing value attribute (land points)  
             IF ( misvalFlt(listId) .NE. UNSET_RL ) THEN  
              misvalLoc = misvalFlt(listId)  
             ELSE  
              misvalLoc = undef  
             ENDIF  
 C     Defaults to UNSET_I  
             misvalIntLoc = misvalInt(listId)  
             DO ii=1,2  
 C            misval_r4(ii)  = UNSET_FLOAT4  
 C            misval_r8(ii)  = UNSET_FLOAT8  
              misval_r4(ii)  = misvalLoc  
              misval_r8(ii)  = misvalLoc  
              misval_int(ii) = UNSET_I  
             ENDDO  
470  C     Missing values only for scalar diagnostics at mass points (so far)  C     Missing values only for scalar diagnostics at mass points (so far)
471              IF ( gdiag(ndId)(1:2) .EQ. 'SM' ) THEN              useMisValForThisDiag = useMissingValue
472         &           .AND.gdiag(ndId)(1:2).EQ.'SM'
473                IF ( useMisValForThisDiag ) THEN
474  C     assign missing values and set flag for adding the netCDF atttibute  C     assign missing values and set flag for adding the netCDF atttibute
475               CALL MNC_CW_VATTR_MISSING(cdiag(ndId), 2,               CALL MNC_CW_VATTR_MISSING(cdiag(ndId), 2,
476       I            misval_r8, misval_r4, misval_int,       I            misval_r8, misval_r4, misval_int,
# Line 507  C     each of these variables Line 500  C     each of these variables
500       I            misval_r8, misval_r4, misval_int,       I            misval_r8, misval_r4, misval_int,
501       I            myThid )       I            myThid )
502              ENDIF              ENDIF
 #endif /* DIAGNOSTICS_MISSING_VALUE */  
503    
504              IF ( ( (writeBinaryPrec .EQ. precFloat32)              IF ( ( (writeBinaryPrec .EQ. precFloat32)
505       &           .AND. (fflags(listId)(1:1) .NE. 'D')       &           .AND. (fflags(listId)(1:1) .NE. 'D')

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.39

  ViewVC Help
Powered by ViewVC 1.1.22