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, missingValFillsMask, |
O diag_mnc_bn, |
20 |
I misValLoc, myTime, myIter, myThid ) |
I misValLoc, myTime, myIter, myThid ) |
21 |
|
|
22 |
C !DESCRIPTION: |
C !DESCRIPTION: |
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 diag_mnc_bn :: NetCDF output file name |
C diag_mnc_bn :: NetCDF output file name |
|
C missingValFillsMask :: fill output-field with Missing-Value where mask=0 |
|
40 |
C misValLoc :: local Missing Value |
C misValLoc :: local Missing Value |
41 |
C myTime :: current time of simulation (s) |
C myTime :: current time of simulation (s) |
42 |
C myIter :: current iteration number |
C myIter :: current iteration number |
44 |
INTEGER nLevOutp |
INTEGER nLevOutp |
45 |
INTEGER listId, lm |
INTEGER listId, lm |
46 |
CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn |
CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn |
|
LOGICAL missingValFillsMask |
|
47 |
_RL misValLoc |
_RL misValLoc |
48 |
_RL myTime |
_RL myTime |
49 |
INTEGER myIter, myThid |
INTEGER myIter, myThid |
83 |
c IF (useMNC .AND. diag_mnc) THEN |
c IF (useMNC .AND. diag_mnc) THEN |
84 |
|
|
85 |
C Handle missing value attribute (land points) |
C Handle missing value attribute (land points) |
|
missingValFillsMask = .FALSE. |
|
|
#ifdef DIAGNOSTICS_MISSING_VALUE |
|
|
missingValFillsMask = .TRUE. |
|
|
#endif /* DIAGNOSTICS_MISSING_VALUE */ |
|
86 |
C Defaults to UNSET_I |
C Defaults to UNSET_I |
87 |
misvalIntLoc = misvalInt(listId) |
misvalIntLoc = misvalInt(listId) |
88 |
DO ii=1,2 |
DO ii=1,2 |
186 |
& myThid) |
& myThid) |
187 |
ENDIF |
ENDIF |
188 |
C suppress the missing value attribute (iflag = 0) |
C suppress the missing value attribute (iflag = 0) |
189 |
IF (missingValFillsMask) |
IF (useMissingValue) |
190 |
& CALL MNC_CW_VATTR_MISSING(dn(1), 0, |
& CALL MNC_CW_VATTR_MISSING(dn(1), 0, |
191 |
I misval_r8, misval_r4, misval_int, myThid ) |
I misval_r8, misval_r4, misval_int, myThid ) |
192 |
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) |
208 |
C !INTERFACE: |
C !INTERFACE: |
209 |
SUBROUTINE DIAGNOSTICS_MNC_OUT( |
SUBROUTINE DIAGNOSTICS_MNC_OUT( |
210 |
I NrMax, nLevOutp, listId, ndId, mate, |
I NrMax, nLevOutp, listId, ndId, mate, |
211 |
I diag_mnc_bn, |
I diag_mnc_bn, qtmp, |
212 |
I missingValFillsMask, misValLoc, |
I misValLoc, myTime, myIter, myThid ) |
|
I qtmp, |
|
|
I myTime, myIter, myThid ) |
|
213 |
|
|
214 |
C !DESCRIPTION: |
C !DESCRIPTION: |
215 |
C write diagnostics fields to MNC file. |
C write diagnostics fields to MNC file. |
230 |
C ndId :: diagnostics Id number (in available diagnostics list) |
C ndId :: diagnostics Id number (in available diagnostics list) |
231 |
C mate :: counter diagnostic number if any ; 0 otherwise |
C mate :: counter diagnostic number if any ; 0 otherwise |
232 |
C diag_mnc_bn :: NetCDF output file name |
C diag_mnc_bn :: NetCDF output file name |
|
C missingValFillsMask :: fill output-field with Missing-Value where mask=0 |
|
|
C misValLoc :: local Missing Value |
|
233 |
C qtmp :: output-field array to write |
C qtmp :: output-field array to write |
234 |
|
C misValLoc :: local Missing Value |
235 |
C myTime :: current time of simulation (s) |
C myTime :: current time of simulation (s) |
236 |
C myIter :: current iteration number |
C myIter :: current iteration number |
237 |
C myThid :: my Thread Id number |
C myThid :: my Thread Id number |
239 |
INTEGER nLevOutp |
INTEGER nLevOutp |
240 |
INTEGER listId, ndId, mate |
INTEGER listId, ndId, mate |
241 |
CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn |
CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn |
|
LOGICAL missingValFillsMask |
|
|
_RL misValLoc |
|
242 |
_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) |
243 |
|
_RL misValLoc |
244 |
_RL myTime |
_RL myTime |
245 |
INTEGER myIter, myThid |
INTEGER myIter, myThid |
246 |
CEOP |
CEOP |
359 |
useMisValForThisDiag = mate.GT.0 |
useMisValForThisDiag = mate.GT.0 |
360 |
C Use the missing values for masking out the land points: |
C Use the missing values for masking out the land points: |
361 |
C only for scalar diagnostics at mass points (so far) |
C only for scalar diagnostics at mass points (so far) |
362 |
IF ( missingValFillsMask.AND.gdiag(ndId)(1:2).EQ.'SM' ) THEN |
IF ( useMissingValue.AND.gdiag(ndId)(1:2).EQ.'SM' ) THEN |
363 |
useMisValForThisDiag = .TRUE. |
useMisValForThisDiag = .TRUE. |
364 |
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 |
365 |
DO bj = myByLo(myThid), myByHi(myThid) |
DO bj = myByLo(myThid), myByHi(myThid) |