54 |
COMMON /LOCAL_DIAGNOSTICS_OUT/ qtmp1 |
COMMON /LOCAL_DIAGNOSTICS_OUT/ qtmp1 |
55 |
_RL qtmp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,NrMax,nSx,nSy) |
_RL qtmp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,NrMax,nSx,nSy) |
56 |
|
|
57 |
INTEGER i, j, k, lm |
INTEGER i, j, k, lm, klev |
58 |
INTEGER bi, bj |
INTEGER bi, bj |
59 |
INTEGER md, ndId, ip, im |
INTEGER md, ndId, ip, im |
60 |
INTEGER mate, mVec |
INTEGER mate, mVec |
88 |
CHARACTER*(5) ctmp |
CHARACTER*(5) ctmp |
89 |
_RS ztmp(NrMax) |
_RS ztmp(NrMax) |
90 |
#endif |
#endif |
91 |
|
REAL*8 misvalLoc |
92 |
|
REAL*8 misval_r8(2) |
93 |
|
REAL*4 misval_r4(2) |
94 |
|
INTEGER misvalIntLoc, misval_int(2) |
95 |
#endif /* ALLOW_MNC */ |
#endif /* ALLOW_MNC */ |
96 |
|
|
97 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
437 |
CALL MNC_CW_ADD_VATTR_TEXT(cdiag(ndId),'units', |
CALL MNC_CW_ADD_VATTR_TEXT(cdiag(ndId),'units', |
438 |
& udiag(ndId),myThid) |
& udiag(ndId),myThid) |
439 |
|
|
440 |
C Per the observations of Baylor, this has been commented out |
C Handle missing value attribute (land points) |
441 |
C until we have code that can write missing_value attributes |
IF ( misvalFlt(listId) .NE. UNSET_RL ) THEN |
442 |
C in a way thats compatible with most of the more popular |
misvalLoc = misvalFlt(listId) |
443 |
C netCDF tools including ferret. Using all-zeros completely |
ELSE |
444 |
C breaks ferret. |
misvalLoc = undef |
445 |
|
ENDIF |
446 |
C CALL MNC_CW_ADD_VATTR_DBL(cdiag(ndId),'missing_value', |
C Defaults to UNSET_I |
447 |
C & 0.0 _d 0,myThid) |
misvalIntLoc = misvalInt(listId) |
448 |
|
DO ii=1,2 |
449 |
|
C misval_r4(ii) = UNSET_FLOAT4 |
450 |
|
C misval_r8(ii) = UNSET_FLOAT8 |
451 |
|
misval_r4(ii) = misvalLoc |
452 |
|
misval_r8(ii) = misvalLoc |
453 |
|
misval_int(ii) = UNSET_I |
454 |
|
ENDDO |
455 |
|
C Missing values only for scalar diagnostics at mass points (so far) |
456 |
|
IF ( gdiag(ndId)(1:2) .EQ. 'SM' ) THEN |
457 |
|
C assign missing values and set flag for adding the netCDF atttibute |
458 |
|
CALL MNC_CW_VATTR_MISSING(cdiag(ndId), 2, |
459 |
|
I misval_r8, misval_r4, misval_int, |
460 |
|
I myThid ) |
461 |
|
C and now use the missing values for masking out the land points |
462 |
|
DO bj = myByLo(myThid), myByHi(myThid) |
463 |
|
DO bi = myBxLo(myThid), myBxHi(myThid) |
464 |
|
DO k = 1,nlevels(listId) |
465 |
|
klev = NINT(levs(k,listId)) |
466 |
|
DO j = 1-OLy,sNy+OLy |
467 |
|
DO i = 1-OLx,sNx+OLx |
468 |
|
IF ( _hFacC(I,J,klev,bi,bj) .EQ. 0. ) |
469 |
|
& qtmp1(i,j,k,bi,bj) = misvalLoc |
470 |
|
ENDDO |
471 |
|
ENDDO |
472 |
|
ENDDO |
473 |
|
ENDDO |
474 |
|
ENDDO |
475 |
|
ELSE |
476 |
|
C suppress the missing value attribute (iflag = 0) |
477 |
|
C Note: I have no idea, why we have to do this here, but if we do not |
478 |
|
C do it, variables get the missing_value attribute (the one of the |
479 |
|
C previous varable) that are not supposed to get one. These is something |
480 |
|
C fishy with the flag array mnc_cw_vfmv. |
481 |
|
CALL MNC_CW_VATTR_MISSING(cdiag(ndId), 0, |
482 |
|
I misval_r8, misval_r4, misval_int, |
483 |
|
I myThid ) |
484 |
|
ENDIF |
485 |
|
|
486 |
IF ( ( (writeBinaryPrec .EQ. precFloat32) |
IF ( ( (writeBinaryPrec .EQ. precFloat32) |
487 |
& .AND. (fflags(listId)(1:1) .NE. 'D') |
& .AND. (fflags(listId)(1:1) .NE. 'D') |