| 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) |